diff --git a/game/engines/default/engine/Entity.lua b/game/engines/default/engine/Entity.lua
index 10be81c284df248cdc8a6d80144dd8984998f286..303b5928e28b3e156b78aa1335a3ddf71d2bbb87 100644
--- a/game/engines/default/engine/Entity.lua
+++ b/game/engines/default/engine/Entity.lua
@@ -868,6 +868,26 @@ end
 function _M:onTemporaryValueChange(prop, v, base)
 end
 
+--- Gets the change in an attribute/function based on changing another.
+-- Measures the difference in result_attr from adding temporary values from and to to changed_attr.
+-- @param changed_attr the attribute being changed
+-- @param from the temp value added to changed_attr which we are starting from
+-- @param to the temp value added to changed_attr which we are ending on
+-- @param result_attr the result we are measuring the difference in
+-- @param ... arguments to pass to result_attr if it is a function
+-- @return the difference, the from result, the to result
+function _M:getAttrChange(changed_attr, from, to, result_attr, ...)
+	local temp = self:addTemporaryValue(changed_attr, from)
+	local from_result = util.getval(self[result_attr], self, ...)
+	self:removeTemporaryValue(changed_attr, temp)
+
+	temp = self:addTemporaryValue(changed_attr, to)
+	local to_result = util.getval(self[result_attr], self, ...)
+	self:removeTemporaryValue(changed_attr, temp)
+
+	return to_result - from_result, from_result, to_result
+end
+
 --- Increases/decreases an attribute
 -- The attributes are just actor properties, but this ensures they are numbers and not booleans
 -- thus making them compatible with temporary values system
@@ -1002,4 +1022,3 @@ end
 function _M:checkClassification(type_str)
 	return false
 end
-
diff --git a/game/engines/default/engine/Object.lua b/game/engines/default/engine/Object.lua
index 4dff64cf1ff13ed860e0f90a8919d18a3b83a6b9..512885746426fe109e83b31c947ed7da6ab1f2a3 100644
--- a/game/engines/default/engine/Object.lua
+++ b/game/engines/default/engine/Object.lua
@@ -129,35 +129,53 @@ function _M:canStack(o)
 	return false
 end
 
---- Adds object to the stack
--- @return true if stacking worked, false if not
-function _M:stack(o, force)
-	if not force and not self:canStack(o) then return false end
+--- Adds an object to the stack
+-- @param o = object to stack onto self
+-- @param force boolean to stack unstackable objects
+-- @param num = maximum number of stacked objects to move
+-- @return true if stacking worked or false if not, and boolean if all of the stack was moved
+function _M:stack(o, force, num)
+	local last = true
+	num = num or math.huge
+	if (not force and not self:canStack(o)) or num < 1 then return false end
 	self.stacked = self.stacked or {}
-	self.stacked[#self.stacked+1] = o
-
-	-- Merge stacks
-	if o.stacked then
-		for i = 1, #o.stacked do
-			self.stacked[#self.stacked+1] = o.stacked[i]
-		end
-		o.stacked = nil
+	for i = 1, math.min(o:getNumber(), num) do
+		self.stacked[#self.stacked+1], last = o:unstack()
 	end
-	return true
+	return true, last
 end
 
---- Removes an object of the stack
--- @return object, true if the last, or object, false if more
-function _M:unstack()
+--- Removes one or more objects from a stack of objects
+-- @param num = maximum number to remove 
+-- @return self or new object, true if last item was removed (self is not deleted) or false if more on the stack
+function _M:unstack(num)
 	if not self:stackable() or not self.stacked or #self.stacked == 0 then return self, true end
-	local o = table.remove(self.stacked)
+	num = math.min(num or 1, #self.stacked + 1)
+	if num < 1 then return self.stacked[1], false end -- next item to remove
+	local o
+	local last, uo = false
+	repeat
+		num = num - 1
+		uo = table.remove(self.stacked)
+		if not o then
+			o = uo; o.stacked = {}
+		else
+			if uo then
+				o.stacked[#o.stacked+1] = uo
+			else
+				o.stacked[#o.stacked+1] = self; last = true; break
+			end
+		end
+	until num <= 0 or last
 	if #self.stacked == 0 then self.stacked = nil end
-	return o, false
+	if #o.stacked == 0 then o.stacked = nil end
+	return o, last
 end
 
 --- Applies a function to all items of the stack
+--  stops after fct(so, i) returns true
 function _M:forAllStack(fct)
-	fct(self)
+	if fct(self) then return end
 	if not self.stacked then return end
 	for i, so in ipairs(self.stacked) do
 		if fct(so, i) then break end
diff --git a/game/engines/default/engine/Store.lua b/game/engines/default/engine/Store.lua
index 2c1e196afc379109e1366d0167aafa0061dd26f6..c877c3119d964022eb6b9d02a83a996ddc9737a2 100644
--- a/game/engines/default/engine/Store.lua
+++ b/game/engines/default/engine/Store.lua
@@ -152,6 +152,7 @@ function _M:transfer(src, dest, item, nb)
 	dest:sortInven(dest_inven)
 end
 
+--- assumes buyer has room
 function _M:doBuy(who, o, item, nb, store_dialog)
 	nb = math.min(nb, o:getNumber())
 	nb = self:tryBuy(who, o, item, nb)
diff --git a/game/engines/default/engine/interface/ActorInventory.lua b/game/engines/default/engine/interface/ActorInventory.lua
index 93f9b13ecd054e661062ae1f2f121e767e9df9b4..2b4b25da41132142349a86ab5ccc2202c3bb7734 100644
--- a/game/engines/default/engine/interface/ActorInventory.lua
+++ b/game/engines/default/engine/interface/ActorInventory.lua
@@ -29,8 +29,14 @@ module(..., package.seeall, class.make)
 
 _M.inven_def = {}
 
---- Defines stats
+--- Defines an Inventory slot
 -- Static!
+-- @param short_name = name for reference (required)
+-- @param name = name used for messages (required)
+-- @param is_worn = boolean true if equipment can be worn in this inventory
+-- @param desc = description (required)
+-- @param show_equip = boolean to show inventory when displaying equipment dialogs
+-- @param infos = additional information (including default stack_limit)
 function _M:defineInventory(short_name, name, is_worn, desc, show_equip, infos)
 	assert(name, "no inventory slot name")
 	assert(short_name, "no inventory slot short_name")
@@ -42,6 +48,7 @@ function _M:defineInventory(short_name, name, is_worn, desc, show_equip, infos)
 		is_worn = is_worn,
 		is_shown_equip = show_equip,
 		infos = infos,
+		stack_limit = infos and infos.stack_limit,
 	})
 	self.inven_def[#self.inven_def].id = #self.inven_def
 	self.inven_def[short_name] = self.inven_def[#self.inven_def]
@@ -50,7 +57,7 @@ function _M:defineInventory(short_name, name, is_worn, desc, show_equip, infos)
 end
 
 -- Auto define the inventory
-_M:defineInventory("INVEN", "In inventory", false, "")
+_M:defineInventory("INVEN", "In inventory", false, "") --INVEN_INVEN assumed to have no stacking limit
 
 --- Initialises inventories with default values if needed
 function _M:init(t)
@@ -58,10 +65,21 @@ function _M:init(t)
 	self:initBody()
 end
 
+--- generate inventories according to the body definition table
+--	@param self.body = {SLOT_ID = max, ...}
+--	@param max = number of slots if number or table of properties (max = , stack_limit = , ..) merged into definition
 function _M:initBody()
 	if self.body then
+		local def
 		for inven, max in pairs(self.body) do
-			self.inven[self["INVEN_"..inven]] = {max=max, worn=self.inven_def[self["INVEN_"..inven]].is_worn, id=self["INVEN_"..inven], name=inven}
+			def = self.inven_def[self["INVEN_"..inven]]
+			assert(def, "inventory slot undefined")
+			self.inven[self["INVEN_"..inven]] = {worn=def.is_worn, id=self["INVEN_"..inven], name=inven, stack_limit = def.stack_limit}
+			if type(max) == "table" then
+				table.merge(self.inven[self["INVEN_"..inven]], max, true)
+			else
+				self.inven[self["INVEN_"..inven]].max = max
+			end
 		end
 		self.body = nil
 	end
@@ -89,18 +107,59 @@ function _M:canAddToInven(id)
 	end
 end
 
+--- Get stacking limit for an inventory
+--  @param id inventory id or table (stack_limit in inventory table takes precedence)
+function _M:invenStackLimit(id)
+	local inven = self:getInven(id)
+	return inven.stack_limit or self.inven_def[inven.id].stack_limit or math.huge
+end
+
 --- Adds an object to an inventory
--- @return false if the object could not be added otherwise true and the inventory index where it is now
-function _M:addObject(inven_id, o)
+-- @param inven_id = inventory id to add to
+-- @param o = object to add
+-- @param no_unstack = boolean to prevent unstacking the object to be added
+-- @return false if the object could not be added or true, inventory index it was moved to, remaining stack if any or false
+-- checks o:on_preaddobject(self, inven) (must return true to add to inventory)
+function _M:addObject(inven_id, o, no_unstack)
 	local inven = self:getInven(inven_id)
-
-	-- No room ?
-	if #inven >= inven.max then return false end
+	local slot
+	local stack, rs, ok
+	local stackable, stack_limit = o and o:stackable(), self:invenStackLimit(inven_id)
+
+	-- No room, stackable ?
+	if #inven >= inven.max then
+		if stackable and not no_unstack then -- try to find a stack to add to
+			for i, obj in ipairs(inven) do
+				if o:canStack(obj) and obj:getNumber() < stack_limit then
+					slot = i
+					stack = obj break -- only room left
+				end
+			end
+			if not stack then return false end
+		else
+			return false
+		end
+	end
 
 	if o:check("on_preaddobject", self, inven) then return false end
 
-	-- Ok add it
-	table.insert(inven, o)
+	-- Add the object
+	if stackable and not no_unstack then -- handle stackable objects
+		local last = true
+		rs = true
+		if stack then -- add to stack already found
+			ok, last = stack:stack(o, false, stack_limit - stack:getNumber())
+		elseif o:getNumber() > stack_limit then -- stack too big - unstack some before adding
+			stack, last = o:unstack(o:getNumber() - stack_limit)
+			table.insert(inven, o)
+			o = stack
+		else
+			table.insert(inven, o)
+		end
+		if last then rs = false	end
+	else 
+		table.insert(inven, o)
+	end
 
 	-- Do whatever is needed when wearing this object
 	if inven.worn then
@@ -111,57 +170,83 @@ function _M:addObject(inven_id, o)
 
 	-- Make sure the object is registered with the game, if need be
 	if not game:hasEntity(o) then game:addEntity(o) end
-
-	return true, #inven
+	return true, slot or #inven, rs and o
 end
 
 --- Returns the position of an item in the given inventory, or nil
-function _M:itemPosition(inven, o)
+-- @param inven = inventory or inventory id to search
+-- @param o = object to look for
+-- @param by_reference set true to match by exact (memory) reference, otherwise matches by o.name
+-- @return nil or the inventory slot, stack position if stacked
+function _M:itemPosition(inven, o, by_reference)
 	inven = self:getInven(inven)
+	local found, pos = nil, nil
 	for i, p in ipairs(inven) do
-		local found = nil
-		o:forAllStack(function(so)
-			if p.name == so.name then found = i return true end
+		p:forAllStack(function(so, j)
+			if (not by_reference and (so.name == o.name) or (so == o)) then
+				found = i pos = j return true
+			end
 		end)
-		if found then return found end
+		if found then return found, pos end
 	end
 	return nil
 end
 
---- Picks an object from the floor
+--- Pick up an object from the floor
+-- @param i = object position on map at self.x, self.y
+-- @param vocal = boolean to post messages to log
+-- @param no_sort = boolen to suppress automatic sorting of inventory
+--	puts picked up objects in self.INVEN_INVEN
+-- @return the object picked up (or stack added to), num picked up or true if o:on_prepickup(i) returns true (not "skip") or nil
+--  checks obj:on_prepickup(self, i) (must return true to pickup)
+--	checks obj:on_pickup(self, num) and self:on_pickup_object(obj, num) functions after pickup (includes stacks)
 function _M:pickupFloor(i, vocal, no_sort)
-	if not self:getInven(self.INVEN_INVEN) then return end
+	local inven = self:getInven(self.INVEN_INVEN)
+	if not inven then return end
 	local o = game.level.map:getObject(self.x, self.y, i)
 	if o then
 		local prepickup = o:check("on_prepickup", self, i)
-		if not prepickup and self:addObject(self.INVEN_INVEN, o) then
-			game.level.map:removeObject(self.x, self.y, i)
-			if not no_sort then self:sortInven(self.INVEN_INVEN) end
-
-			o:check("on_pickup", self)
-			self:check("on_pickup_object", o)
-
-			local letter = ShowPickupFloor:makeKeyChar(self:itemPosition(self.INVEN_INVEN, o) or 1)
-			if vocal then game.logSeen(self, "%s picks up (%s.): %s.", self.name:capitalize(), letter, o:getName{do_color=true}) end
-			return o
-		elseif not prepickup then
-			if vocal then game.logSeen(self, "%s has no room for: %s.", self.name:capitalize(), o:getName{do_color=true}) end
-			return
+		if not prepickup then
+			local num = o:getNumber()
+			local ok, slot, ro = self:addObject(self.INVEN_INVEN, o)
+			if ok then
+				local newo = inven[slot] -- get exact object added or stack (resolves duplicates)
+				game.level.map:removeObject(self.x, self.y, i)
+				if ro then -- return remaining stack to floor
+					game.level.map:addObject(self.x, self.y, ro)
+					num = num - ro:getNumber()
+				end
+				if not no_sort then self:sortInven(self.INVEN_INVEN) end
+				-- Apply checks to whole stack (including already carried) assuming homogeneous stack
+				-- num added passed to functions to allow checks on part of the stack
+				newo:check("on_pickup", self, num)
+				self:check("on_pickup_object", newo, num)
+
+				slot = self:itemPosition(self.INVEN_INVEN, newo, true) or 1
+				local letter = ShowPickupFloor:makeKeyChar(slot)
+
+				if vocal then game.logSeen(self, "%s picks up (%s.): %s%s.", self.name:capitalize(), letter, num>1 and ("%d "):format(num) or "", o:getName{do_color=true, no_count = true}) end
+				return inven[slot], num
+			else
+				if vocal then game.logSeen(self, "%s has no room for: %s.", self.name:capitalize(), o:getName{do_color=true}) end
+				return
+			end
 		elseif prepickup == "skip" then
 			return
 		else
 			return true
 		end
 	else
-		if vocal then game.logSeen(self, "There is nothing to pick up there.") end
+		if vocal then game.logSeen(self, "There is nothing to pick up here.") end
 	end
 end
 
 --- Removes an object from inventory
--- @param inven the inventory to drop from
--- @param item the item id to drop
--- @param no_unstack if the item was a stack takes off the whole stack if true
+-- @param inven the inventory to remove from
+-- @param item inven slot of the item to remove
+-- @param no_unstack = num items to remove into a new stack (set true to remove the original stack unchanged)
 -- @return the object removed or nil if no item existed and a boolean saying if there is no more objects
+--  checks obj:on_preremoveobject(self, inven) (return true to not remove)
 function _M:removeObject(inven_id, item, no_unstack)
 	local inven = self:getInven(inven_id)
 
@@ -170,8 +255,11 @@ function _M:removeObject(inven_id, item, no_unstack)
 	local o, finish = inven[item], true
 
 	if o:check("on_preremoveobject", self, inven) then return false, true end
-
-	if not no_unstack then
+	if no_unstack then
+		if type(no_unstack) == "number" then
+			o, finish = o:unstack(no_unstack)
+		end
+	else
 		o, finish = o:unstack()
 	end
 	if finish then
@@ -221,7 +309,9 @@ end
 --- Drop an object on the floor
 -- @param inven the inventory to drop from
 -- @param item the item id to drop
+-- @param all set to remove part (if number) or all (if true) a stack
 -- @return the object removed or nil if no item existed
+--  checks obj:on_drop(self) (return true to not drop)
 function _M:dropFloor(inven, item, vocal, all)
 	local o = self:getInven(inven)[item]
 	if not o then
@@ -240,7 +330,7 @@ function _M:dropFloor(inven, item, vocal, all)
 	if ok and game.level.map.attrs(self.x, self.y, "on_drop") then
 		game.level.map.attrs(self.x, self.y, "on_drop")(self, self.x, self.y, idx, o)
 	end
-	return true
+	return o
 end
 
 --- Show combined equipment/inventory dialog
@@ -283,6 +373,9 @@ function _M:showPickupFloor(title, filter, action)
 end
 
 --- Can we wear this item?
+-- @param o = object to wear
+-- @param try_slot = inventory slot to wear (override)
+--  checks self:canWearObjectCustom(o, try_slot)  (return true to make unwearable)
 function _M:canWearObject(o, try_slot)
 	local req = rawget(o, "require")
 
@@ -343,6 +436,11 @@ function _M:getObjectOffslot(o)
 end
 
 --- Wear/wield an item
+--	@param o = object to be worn
+--	@param replace = boolean allow first object in wearable inventory to be removed to make space if needed
+--	@vocal = boolean to post messages to game.logSeen(self, ....)
+--	returns true or replaced object if succeeded or false if not, remaining stack of o if any
+--  checks o:on_canwear(self, inven) (return true to prevent wearing)
 function _M:wearObject(o, replace, vocal)
 	local inven = o:wornInven()
 	if not inven then
@@ -360,27 +458,26 @@ function _M:wearObject(o, replace, vocal)
 		return false
 	end
 	if o:check("on_canwear", self, inven) then return false end
-	local offslot = self:getObjectOffslot(o)
+	local offslot, stackable = self:getObjectOffslot(o), o:stackable()
+	local added, slot, stack = self:addObject(inven, o)
 
-	if self:addObject(inven, o) then
+	if added then
 		if vocal then game.logSeen(self, "%s wears: %s.", self.name:capitalize(), o:getName{do_color=true}) end
-		return true
+		return true, stack
 	elseif offslot and self:getInven(offslot) and #(self:getInven(offslot)) < self:getInven(offslot).max and self:canWearObject(o, offslot) then
 		if vocal then game.logSeen(self, "%s wears(offslot): %s.", self.name:capitalize(), o:getName{do_color=true}) end
-		-- Warning: assume there is now space
-		self:addObject(self:getInven(offslot), o)
-		return true
-	elseif replace then
+		added, slot, stack = self:addObject(self:getInven(offslot), o)
+		return added, stack
+	elseif replace then -- no room but replacement is allowed
+		if stackable then 
+		end
 		local ro = self:removeObject(inven, 1, true)
-
-		if vocal then game.logSeen(self, "%s wears(replacing): %s.", self.name:capitalize(), o:getName{do_color=true}) end
-
-		-- Can we stack the old and new one ?
-		if o:stack(ro) then ro = true end
-
-		-- Warning: assume there is now space
-		self:addObject(inven, o)
-		return ro
+		added, slot, stack = self:addObject(inven, o)
+		if vocal then game.logSeen(self, "%s wears(replacing %s): %s.", self.name:capitalize(), ro:getName{do_color=true}, o:getName{do_color=true}) end
+		if stack and ro:stack(stack) then -- stack remaining stack with old if possible (ignores stack limits)
+			stack = nil
+		end
+		return ro, stack -- caller handles the replaced object and remaining stack if any
 	else
 		if vocal then game.logSeen(self, "%s can not wear: %s.", self.name:capitalize(), o:getName{do_color=true}) end
 		return false
@@ -388,8 +485,11 @@ function _M:wearObject(o, replace, vocal)
 end
 
 --- Takeoff item
-function _M:takeoffObject(inven, item)
-	inven = self:getInven(inven)
+-- @param inven_id = inventory id
+-- @param item = slot to remove from
+--  checks obj:on_cantakeoff(self, inven) (return true to prevent taking off)
+function _M:takeoffObject(inven_id, item)
+	inven = self:getInven(inven_id)
 	if not inven then return false end
 
 	local o = inven[item]
@@ -400,6 +500,9 @@ function _M:takeoffObject(inven, item)
 end
 
 --- Call when an object is worn
+--  @param o = object being worn
+--  @param inven_id = inventory id
+--  checks o:on_wear(self, inven_id)
 function _M:onWear(o, inven_id)
 	-- Apply wielder properties
 	o.wielded = {}
@@ -412,6 +515,9 @@ function _M:onWear(o, inven_id)
 end
 
 --- Call when an object is taken off
+--  @param o = object being taken off
+--  @param inven_id = inventory id
+--  checks o:on_takeoff(self, inven_id)
 function _M:onTakeoff(o, inven_id)
 	if o.wielded then
 		for k, id in pairs(o.wielded) do
@@ -427,19 +533,28 @@ function _M:onTakeoff(o, inven_id)
 end
 
 --- Re-order inventory, sorting and stacking it
+-- sort order is type > subtype > name > getNumber()
 function _M:sortInven(inven)
 	if not inven then inven = self.inven[self.INVEN_INVEN] end
 	inven = self:getInven(inven)
 	if not inven then return end
+--	local stacked, last, stacklimit = false, false, inven.stack_limit or math.huge
+	local stacked, last, stacklimit = false, false, self:invenStackLimit(inven)
 
-	-- Stack objects first, from bottom
-	for i = #inven, 1, -1 do
-		-- If it is stackable, look for objects before it that it could stack into
+	-- First, stack objects from top
+	for i = 1, #inven do
+		if not inven[i] then break end
+		-- If it is stackable, look for objects after it that can stack into it
 		if inven[i]:stackable() then
-			for j = i - 1, 1, -1 do
-				if inven[j]:stack(inven[i]) then
-					table.remove(inven, i)
-					break
+			for j = #inven, i + 1, -1 do
+			-- check stack limit
+				stacked, last = inven[i]:stack(inven[j], false, stacklimit - inven[i]:getNumber())
+				if stacked then
+					if last then
+						table.remove(inven, j)
+					else
+						break
+					end
 				end
 			end
 		end
@@ -451,7 +566,11 @@ function _M:sortInven(inven)
 		local sa, sb = a:getSubtypeOrder(), b:getSubtypeOrder()
 		if ta == tb then
 			if sa == sb then
-				return a.name < b.name
+				if a.name == b.name then
+					return a:getNumber() > b:getNumber()
+				else
+					return a.name < b.name
+				end
 			else
 				return sa < sb
 			end
@@ -466,6 +585,7 @@ end
 -- @param inven the inventory to look into
 -- @param name the name to look for
 -- @param getname the parameters to pass to getName(), if nil the default is {no_count=true, force_id=true}
+-- @return object, position or nil if not found
 function _M:findInInventory(inven, name, getname)
 	getname = getname or {no_count=true, force_id=true}
 	for item, o in ipairs(inven) do
@@ -476,6 +596,7 @@ end
 --- Finds an object by name in all the actor's inventories
 -- @param name the name to look for
 -- @param getname the parameters to pass to getName(), if nil the default is {no_count=true, force_id=true}
+-- @return object, position, inven_id or nil if not found
 function _M:findInAllInventories(name, getname)
 	for inven_id, inven in pairs(self.inven) do
 		local o, item = self:findInInventory(inven, name, getname)
@@ -487,6 +608,7 @@ end
 -- @param inven the inventory to look into
 -- @param prop the property to look for
 -- @param value the value to look for, can be a function
+-- @return object, position or nil if not found
 function _M:findInInventoryBy(inven, prop, value)
 	if type(value) == "function" then
 		for item, o in ipairs(inven) do
@@ -502,6 +624,7 @@ end
 --- Finds an object by property in all the actor's inventories
 -- @param prop the property to look for
 -- @param value the value to look for, can be a function
+-- @return object, position, inven_id or nil if not found
 function _M:findInAllInventoriesBy(prop, value)
 	for inven_id, inven in pairs(self.inven) do
 		local o, item = self:findInInventoryBy(inven, prop, value)
@@ -509,19 +632,20 @@ function _M:findInAllInventoriesBy(prop, value)
 	end
 end
 
---- Finds an object by property in an inventory
+--- Finds an object by reference in an inventory
 -- @param inven the inventory to look into
--- @param prop the property to look for
--- @param value the value to look for, can be a function
+-- @param so the object(reference) to look for
+-- @return object, position or nil if not found
 function _M:findInInventoryByObject(inven, so)
 	for item, o in ipairs(inven) do
 		if o == so then return o, item end
 	end
 end
 
---- Finds an object by property in all the actor's inventories
--- @param prop the property to look for
--- @param value the value to look for, can be a function
+--- Finds an object by reference in all the actor's inventories
+-- @param inven the inventory to look into
+-- @param so the object(reference) to look for
+-- @return object, position, inven_id or nil if not found
 function _M:findInAllInventoriesByObject(so)
 	for inven_id, inven in pairs(self.inven) do
 		local o, item = self:findInInventoryByObject(inven, so)
diff --git a/game/engines/default/modules/boot/dialogs/Credits.lua b/game/engines/default/modules/boot/dialogs/Credits.lua
index 20fca1b46b55cfddcab47c193f490e4013f40212..ddc1144db9f89c97bb7fea2d85e9cbfe3634daa9 100644
--- a/game/engines/default/modules/boot/dialogs/Credits.lua
+++ b/game/engines/default/modules/boot/dialogs/Credits.lua
@@ -75,8 +75,8 @@ local credits = {
 
 	{"Graphic Artists", title=2},
 	{"Assen 'Rexorcorum' Kanev"},
+	{"Matt 'Amagad' Hill"},
 	{"Raymond 'Shockbolt' Gaustadnes"},
-	{"Ross 'Daftigod' Raphael"},
 	false,
 	false,
 
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 16619f270f364c98eda090d9bfbcc4647a9ceff9..40f03a3ce4dbd4a1083e1f20ae52732c6bcbdf4e 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -3780,6 +3780,7 @@ function _M:onWear(o, inven_id, bypass_set)
 		for k, e in pairs(o.wielder) do
 			o.wielded[k] = self:addTemporaryValue(k, e)
 		end
+		o.wielder.wielded = true
 	end
 
 	if o.talent_on_spell then
@@ -3921,6 +3922,10 @@ function _M:onTakeoff(o, inven_id, bypass_set)
 		t.updatePsychometryCount(self, t)
 	end
 
+	if o.wielder then
+		o.wielder.wielded = nil
+	end
+
 	if o.wielder and o.wielder.learn_talent then
 		for tid, level in pairs(o.wielder.learn_talent) do
 			self:unlearnItemTalent(o, tid, level)
@@ -6010,7 +6015,9 @@ function _M:doDrop(inven, item, on_done, nb)
 	if nb == nil or nb >= self:getInven(inven)[item]:getNumber() then
 		self:dropFloor(inven, item, true, true)
 	else
-		for i = 1, nb do self:dropFloor(inven, item, true) end
+		local stack = self:removeObject(inven, item, nb)
+		game.logSeen(self, "%s drops on the floor: %s.", self.name:capitalize(), stack:getName{do_color=true, do_count=true})
+		game.level.map:addObject(self.x, self.y, stack)
 	end
 	self:sortInven(inven)
 	self:useEnergy()
@@ -6019,28 +6026,51 @@ function _M:doDrop(inven, item, on_done, nb)
 	if on_done then on_done() end
 end
 
+--- wear an object from an inventory
+--	@param inven = inventory id to take object from
+--	@param item = inventory slot to take from
+--	@param o = object to wear
+--	@param dst = actor holding object to be worn <self>
 function _M:doWear(inven, item, o, dst)
 	if self.no_inventory_access then return end
 	dst = dst or self
 	dst:removeObject(inven, item, true)
-	local ro = self:wearObject(o, true, true)
+	local ro, rs = self:wearObject(o, true, true) -- removed object and remaining stack if any
+	local added, slot
 	if ro then
 		if not self:attr("quick_wear_takeoff") or self:attr("quick_wear_takeoff_disable") then self:useEnergy() end
 		if self:attr("quick_wear_takeoff") then self:setEffect(self.EFF_SWIFT_HANDS_CD, 1, {}) self.tmp[self.EFF_SWIFT_HANDS_CD].dur = 0 end
-		if type(ro) == "table" then dst:addObject(inven, ro) end
-	elseif not ro then
-		dst:addObject(inven, o)
+		if type(ro) == "table" then dst:addObject(inven, ro, true) end -- always give full stack back
+	else -- failed, add object back
+		dst:addObject(inven, o, true)
+	end
+	if type(rs) == "table" then
+		local rrs
+		repeat -- handles a case of stacking limits causing part of a stack to be discarded
+			rrs = rs
+			added, slot, rs = dst:addObject(inven, rs)
+		until not added or not rs
+		if not added then
+			game.logPlayer(self, "You had to drop %s due to lack of space.", rrs:getName{do_color = true})
+			if rrs and not game.zone.wilderness then game.level.map:addObject(self.x, self.y, rrs) end -- extra stack discarded in wilderness
+		end
 	end
 	dst:sortInven()
 	self:actorCheckSustains()
 	self.changed = true
 end
 
+---	Take off an item
+--	@param inven = inven id
+--	@param item = slot to remove from
+--	@param o = object to remove
+--	@param simple set true to skip equipment takeoff checks and energy use
+--	@param dst = actor to receive object (in dst.INVEN_INVEN)
 function _M:doTakeoff(inven, item, o, simple, dst)
-	if self.no_inventory_access then return end
 	dst = dst or self
+	if self.no_inventory_access or not dst:canAddToInven(dst.INVEN_INVEN) then return end
 	if self:takeoffObject(inven, item) then
-		dst:addObject(self.INVEN_INVEN, o)
+		dst:addObject(dst.INVEN_INVEN, o, true) --note: moves a whole stack
 	end
 	if not simple then
 		dst:sortInven()
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index ee250d3b9578df563cccfe2257bd2de5b139e69b..85cf50cf8115e2f4cae92d548cfacefcb37bbaed 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -439,8 +439,13 @@ function _M:getTextualDesc(compare_with, use_actor)
 		local add = false
 		ret:add(text)
 		local outformatres
-		if type(outformat) == "function" then outformatres = outformat()
-		else outformatres = outformat:format(((item1[field] or 0) + (add_table[field] or 0)) * mod) end
+		local resvalue = ((item1[field] or 0) + (add_table[field] or 0)) * mod
+		if type(outformat) == "function" then
+			local unworn_base =
+				(item1.wielded and resvalue) or
+				table.get(items, 1, infield, field)
+			outformatres = outformat(resvalue, unworn_base)
+		else outformatres = outformat:format(resvalue) end
 		if isinversed then
 			ret:add(((item1[field] or 0) + (add_table[field] or 0)) > 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
 		else
@@ -460,8 +465,10 @@ function _M:getTextualDesc(compare_with, use_actor)
 				add = true
 				if items[i][infield][field] ~= (item1[field] or 0) then
 					local outformatres
-					if type(outformat) == "function" then outformatres = outformat()
-					else outformatres = outformat:format(((item1[field] or 0) - items[i][infield][field]) * mod) end
+					local resvalue = ((item1[field] or 0) - items[i][infield][field]) * mod
+					if type(outformat) == "function" then
+						outformatres = outformat(resvalue, resvalue)
+					else outformatres = outformat:format(resvalue) end
 					if isdiffinversed then
 						ret:add(items[i][infield][field] < (item1[field] or 0) and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
 					else
@@ -481,6 +488,21 @@ function _M:getTextualDesc(compare_with, use_actor)
 		end
 	end
 
+	-- included - if we should include the value in the present total.
+	-- total_call - function to call on the actor to get the current total
+	local compare_scaled = function(item1, items, infield, change_field, results, outformat, text, included, mod, isinversed, isdiffinversed, add_table)
+		local out = function(base_change, unworn_base)
+			local from, to = 0, base_change
+			if unworn_base then
+				from = from - unworn_base
+				to = to - unworn_base
+			end
+			local scale_change = use_actor:getAttrChange(change_field, from, to, unpack(results))
+			return outformat:format(base_change, scale_change)
+		end
+		return compare_fields(item1, items, infield, change_field, out, text, mod, isinversed, isdiffinversed, add_table)
+	end
+
 	local compare_table_fields = function(item1, items, infield, field, outformat, text, kfunct, mod, isinversed, filter)
 		mod = mod or 1
 		isinversed = isinversed or false
@@ -881,15 +903,15 @@ function _M:getTextualDesc(compare_with, use_actor)
 	local desc_wielder = function(w, compare_with, field)
 		w = w or {}
 		w = w[field] or {}
-		compare_fields(w, compare_with, field, "combat_atk", "%+d", "Accuracy: ")
+		compare_scaled(w, compare_with, field, "combat_atk", {"combatAttack"}, "%+d (%+d effective)", "Accuracy: ")
 		compare_fields(w, compare_with, field, "combat_apr", "%+d", "Armour penetration: ")
 		compare_fields(w, compare_with, field, "combat_physcrit", "%+.1f%%", "Physical crit. chance: ")
-		compare_fields(w, compare_with, field, "combat_dam", "%+d", "Physical power: ")
+		compare_scaled(w, compare_with, field, "combat_dam", {"combatPhysicalpower"}, "%+d (%+d effective)", "Physical power: ")
 
 		compare_fields(w, compare_with, field, "combat_armor", "%+d", "Armour: ")
 		compare_fields(w, compare_with, field, "combat_armor_hardiness", "%+d%%", "Armour Hardiness: ")
-		compare_fields(w, compare_with, field, "combat_def", "%+d", "Defense: ")
-		compare_fields(w, compare_with, field, "combat_def_ranged", "%+d", "Ranged Defense: ")
+		compare_scaled(w, compare_with, field, "combat_def", {"combatDefense", true}, "%+d (%+d effective)", "Defense: ")
+		compare_scaled(w, compare_with, field, "combat_def_ranged", {"combatDefenseRanged", true}, "%+d (%+d effective)", "Ranged Defense: ")
 
 		compare_fields(w, compare_with, field, "fatigue", "%+d%%", "Fatigue: ", 1, true, true)
 
@@ -1222,9 +1244,9 @@ function _M:getTextualDesc(compare_with, use_actor)
 		compare_fields(w, compare_with, field, "inc_stealth", "%+d", "Stealth bonus: ")
 		compare_fields(w, compare_with, field, "max_encumber", "%+d", "Maximum encumbrance: ")
 
-		compare_fields(w, compare_with, field, "combat_physresist", "%+d", "Physical save: ")
-		compare_fields(w, compare_with, field, "combat_spellresist", "%+d", "Spell save: ")
-		compare_fields(w, compare_with, field, "combat_mentalresist", "%+d", "Mental save: ")
+		compare_scaled(w, compare_with, field, "combat_physresist", {"combatPhysicalResist", true}, "%+d (%+d effective)", "Physical save: ")
+		compare_scaled(w, compare_with, field, "combat_spellresist", {"combatSpellResist", true}, "%+d (%+d effective)", "Spell save: ")
+		compare_scaled(w, compare_with, field, "combat_mentalresist", {"combatMentalResist", true}, "%+d (%+d effective)", "Mental save: ")
 
 		compare_fields(w, compare_with, field, "blind_immune", "%+d%%", "Blindness immunity: ", 100)
 		compare_fields(w, compare_with, field, "poison_immune", "%+d%%", "Poison immunity: ", 100)
@@ -1281,11 +1303,11 @@ function _M:getTextualDesc(compare_with, use_actor)
 		compare_fields(w, compare_with, field, "max_negative", "%+.2f", "Maximum neg.energy: ")
 		compare_fields(w, compare_with, field, "max_air", "%+.2f", "Maximum air capacity: ")
 
-		compare_fields(w, compare_with, field, "combat_spellpower", "%+d", "Spellpower: ")
+		compare_scaled(w, compare_with, field, "combat_spellpower", {"combatSpellpower"}, "%+d (%+d effective)", "Spellpower: ")
 		compare_fields(w, compare_with, field, "combat_spellcrit", "%+d%%", "Spell crit. chance: ")
 		compare_fields(w, compare_with, field, "spell_cooldown_reduction", "%d%%", "Lowers spell cool-downs by: ", 100)
 
-		compare_fields(w, compare_with, field, "combat_mindpower", "%+d", "Mindpower: ")
+		compare_scaled(w, compare_with, field, "combat_mindpower", {"combatMindpower"}, "%+d (%+d effective)", "Mindpower: ")
 		compare_fields(w, compare_with, field, "combat_mindcrit", "%+d%%", "Mental crit. chance: ")
 
 		compare_fields(w, compare_with, field, "lite", "%+d", "Light radius: ")
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index dbe0fdc9c091671996dbfdbf4d916031068a425d..9eb86b3b9a795d41d8a87bb22753556003e20fbb 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -1139,7 +1139,6 @@ function _M:playerPickup()
 		end)
 	else
 		local o = self:pickupFloor(1, true)
-		self:sortInven()
 		if o and type(o) == "table" then
 			self:useEnergy()
 			o.__new_pickup = true
diff --git a/game/modules/tome/class/Store.lua b/game/modules/tome/class/Store.lua
index 2884a5e86f218833f479f1670fed0e025023071d..41f3025f3ec9f320af13cc483094be01b8fc1305 100644
--- a/game/modules/tome/class/Store.lua
+++ b/game/modules/tome/class/Store.lua
@@ -131,7 +131,7 @@ function _M:onBuy(who, o, item, nb, before)
 	local price = self:getObjectPrice(o, "buy")
 	if who.money >= price * nb then
 		who:incMoney(- price * nb)
-		game.log("Bought: %s for %0.2f gold.", o:getName{do_color=true}, price * nb)
+		game.log("Bought: %s %s for %0.2f gold.", nb>1 and nb or "", o:getName{do_color=true, no_count = true}, price * nb)
 	end
 end
 
@@ -150,7 +150,7 @@ function _M:onSell(who, o, item, nb, before)
 	price = math.min(price * nb, self.store.purse * nb)
 	who:incMoney(price)
 	o:forAllStack(function(so) so.__force_store_forget = true end) -- Make sure the store does forget about it when it restocks
-	game.log("Sold: %s for %0.2f gold.", o:getName{do_color=true}, price)
+	game.log("Sold: %s %s for %0.2f gold.", nb>1 and nb or "", o:getName{do_color=true, no_count = true}, price)
 end
 
 --- Override the default
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 8929b3b35e8b697397449f8f36891354230f101d..cb1c8cf1e54e38c9d7dc3b6f43c4e27d8774dfa5 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -1034,6 +1034,29 @@ newDamageType{
 		return init_dam
 	end,
 }
+
+-- Fire damage + DOT + 25% chance of Fireflash
+newDamageType{
+	name = "stunning fire", type = "FIRE_STUN", text_color = "#LIGHT_RED#",
+	projector = function(src, x, y, type, dam)
+		local chance = 25
+		local dur = 3
+		local perc = 50
+		if _G.type(dam) == "table" then dam, dur, perc = dam.dam, dam.dur, (dam.initial or perc) end
+		local init_dam = dam * perc / 100
+		if init_dam > 0 then DamageType:get(DamageType.FIRE).projector(src, x, y, DamageType.FIRE, init_dam) end
+		local target = game.level.map(x, y, Map.ACTOR)
+		if target then
+			dam = dam - init_dam
+			target:setEffect(target.EFF_BURNING, dur, {src=src, power=dam / dur, no_ct_effect=true})
+				if rng.percent(chance) then
+					DamageType:get(DamageType.FLAMESHOCK).projector(src, x, y, DamageType.FLAMESHOCK, {dur=3, dam=15, apply_power=src:combatMindpower()})
+			end
+		end
+		return init_dam
+	end,
+}
+
 newDamageType{
 	name = "fire burn", type = "GOLEM_FIREBURN",
 	projector = function(src, x, y, type, dam)
@@ -1046,6 +1069,21 @@ newDamageType{
 	end,
 }
 
+-- Drain Life... with fire!
+newDamageType{
+	name = "devouring flames", type = "FIRE_DRAIN", text_color = "#LIGHT_RED#",
+	projector = function(src, x, y, type, dam)
+		if _G.type(dam) == "number" then dam = {dam=dam, healfactor=0.1} end
+		local target = game.level.map(x, y, Map.ACTOR) -- Get the target first to make sure we heal even on kill
+		local realdam = DamageType:get(DamageType.FIRE).projector(src, x, y, DamageType.FIRE, dam.dam)
+		if target and realdam > 0 then
+			src:heal(realdam * dam.healfactor, target)
+			src:logCombat(target, "#Source# drains life from #Target#!")
+		end
+		return realdam
+	end,
+}
+
 -- Darkness + Fire
 newDamageType{
 	name = "shadowflame", type = "SHADOWFLAME",
@@ -1141,6 +1179,24 @@ newDamageType{
 	end,
 }
 
+-- Cold damage + freeze chance + 20% slow
+newDamageType{
+	name = "slowing ice", type = "ICE_SLOW", text_color = "#1133F3#",
+	projector = function(src, x, y, type, dam)
+		local chance = 25
+		local target = game.level.map(x, y, Map.ACTOR)
+		if _G.type(dam) == "table" then chance, dam = dam.chance, dam.dam end
+		local realdam = DamageType:get(DamageType.COLD).projector(src, x, y, DamageType.COLD, dam)
+		if target then
+			target:setEffect(target.EFF_SLOW, 3, {power=0.2, no_ct_effect=true})
+			if rng.percent(chance) then
+				DamageType:get(DamageType.FREEZE).projector(src, x, y, DamageType.FREEZE, {dur=2, hp=70+dam*1.5})
+			end
+		end
+		return realdam
+	end,
+}
+
 -- Cold damage + freeze chance, increased if wet
 newDamageType{
 	name = "ice storm", type = "ICE_STORM", text_color = "#1133F3#",
diff --git a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
index 1deaf4d1146602dd4b9a67c8cf61250875a7fbb8..1bed6f58f255c40ae6deab8700028a546e12fade 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts-maj-eyal.lua
@@ -28,6 +28,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	power_source = {arcane=true},
 	define_as = "LONGSWORD_WINTERTIDE", unided_name = "glittering longsword", image="object/artifact/wintertide.png",
 	name = "Wintertide", unique=true,
+	moddable_tile = "special/%s_wintertide",
+	moddable_tile_big = true,
 	desc = [[The air seems to freeze around the blade of this sword, draining all heat from the area.
 It is said the Conclave created this weapon for their warmaster during the dark times of the first allure war.]],
 	require = { stat = { str=35 }, },
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 81c58ac7f0b0c55404917a9f9f152b758a5edc71..e78beee3c95ad39b64cf544d958a4b97d16605b9 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -113,6 +113,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "RIFT_SWORD",
 	unique = true,
 	name = "Blade of Distorted Time", image = "object/artifact/blade_of_distorted_time.png",
 	unided_name = "time-warped sword",
+	moddable_tile = "special/%s_blade_of_distorted_time",
+	moddable_tile_big = true,
 	desc = [[The remnants of a damaged timeline, this blade shifts and fades at random.]],
 	level_range = {30, 50},
 	rarity = 220,
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 680a245616b8da29e262be96f95b66598e062930..b894dd7ac9800b0acc47d8e1821de68d3bf569c7 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
@@ -230,6 +230,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "BLOODEDGE",
 	unique = true,
 	name = "Blood-Edge", image = "object/artifact/sword_blood_edge.png",
 	unided_name = "red crystalline sword",
+	moddable_tile = "special/%s_sword_blood_edge",
+	moddable_tile_big = true,
 	level_range = {36, 48},
 	color=colors.RED,
 	rarity = 260,
@@ -344,6 +346,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "SWORD_DAWN",
 	unique = true,
 	name = "Dawn's Blade",
 	unided_name = "shining longsword",
+	moddable_tile = "special/%s_dawn_blade",
+	moddable_tile_big = true,
 	level_range = {35, 42},
 	color=colors.YELLOW, image = "object/artifact/dawn_blade.png",
 	rarity = 260,
diff --git a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
index efddca6f26197f26dcdc191af6f363c5474cfb33..3f734bc1c2ea3ab225861017d3b25639932c7011 100644
--- a/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts-maj-eyal.lua
@@ -268,6 +268,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	unique = true,
 	name = "Spellblade", image = "object/artifact/weapon_spellblade.png",
 	unided_name = "glowing long sword",
+	moddable_tile = "special/%s_weapon_spellblade",
+	moddable_tile_big = true,
 	level_range = {40, 45},
 	color=colors.AQUAMARINE,
 	rarity = 250,
@@ -858,6 +860,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	unique = true,
 	name = "Witch-Bane", color = colors.LIGHT_STEEL_BLUE, image = "object/artifact/sword_witch_bane.png",
 	unided_name = "an ivory handled voratun longsword",
+	moddable_tile = "special/%s_sword_witch_bane",
+	moddable_tile_big = true,
 	desc = [[A thin voratun blade with an ivory handle wrapped in purple cloth.  The weapon is nearly as legendary as its former owner, Marcus Dunn, and was thought to have been destroyed after Marcus was slain near the end of the Spellhunt.
 It seems somebody well versed in antimagic could use it to its fullest potential.]],
 	level_range = {38, 50},
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index f48d24b80fbc86ae0c3e5793c516cab0b07b73b2..63ef9fad0d1510761f99f6433b428f336c37afba 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -1415,6 +1415,8 @@ newEntity{ base = "BASE_LIGHT_ARMOR",
 	unique = true,
 	name = "Skin of Many", image = "object/artifact/robe_skin_of_many.png",
 	unided_name = "stitched skin armour",
+	moddable_tile = "special/skin_of_many",
+	moddable_tile_big = true,
 	desc = [[The stitched-together skins of many creatures. Some eyes and mouths still decorate the robe, and some still live, screaming in tortured agony.]],
 	color = colors.BROWN,
 	level_range = {12, 22},
@@ -1683,6 +1685,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as = "ART_PAIR_TWSWORD",
 	unique = true,
 	name = "Sword of Potential Futures", image = "object/artifact/sword_of_potential_futures.png",
 	unided_name = "under-wrought blade",
+	moddable_tile = "special/%s_sword_of_potential_futures",
+	moddable_tile_big = true,
 	desc = [[Legend has it this blade is one of a pair: twin blades forged in the earliest of days of the Wardens. To an untrained wielder it is less than perfect; to a Warden, it represents the untapped potential of time.]],
 	level_range = {20, 30},
 	rarity = 250,
@@ -2935,6 +2939,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as="CORPUS",
 	unique = true,
 	name = "Corpathus", image = "object/artifact/corpus.png",
 	unided_name = "bound sword",
+	moddable_tile = "special/%s_corpus",
+	moddable_tile_big = true,
 	desc = [[Thick straps encircle this blade. Jagged edges like teeth travel down the blade, bisecting it. It fights to overcome the straps, but lacks the strength.]],
 	level_range = {20, 30},
 	rarity = 250,
@@ -3029,6 +3035,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	unique = true,
 	name = "Anmalice", image = "object/artifact/anima.png", define_as = "ANIMA",
 	unided_name = "twisted blade",
+	moddable_tile = "special/%s_anmalice",
+	moddable_tile_big = true,
 	desc = [[The eye on the hilt of this blade seems to glare at you, piercing your soul and mind. Tentacles surround the hilt, latching onto your hand.]],
 	level_range = {30, 40},
 	rarity = 250,
@@ -3114,6 +3122,8 @@ newEntity{ base = "BASE_LONGSWORD", define_as="MORRIGOR",
 	power_source = {arcane=true, unknown=true},
 	unique = true, sentient = true,
 	name = "Morrigor", image = "object/artifact/morrigor.png",
+	moddable_tile = "special/%s_morrigor",
+	moddable_tile_big = true,
 	unided_name = "jagged, segmented, sword",
 	desc = [[This heavy, ridged blade emanates magical power, yet as you grasp the handle an icy chill runs its course through your spine. You feel the disembodied presence of all those slain by it. In unison, they demand company.]],
 	level_range = {20, 30},
@@ -5438,6 +5448,8 @@ newEntity{ base = "BASE_LONGSWORD", --Thanks BadBadger?
 	unique = true,
 	name = "Twilight's Edge", image = "object/artifact/twilights_edge.png",
 	unided_name = "shining long sword",
+	moddable_tile = "special/%s_twilights_edge",
+	moddable_tile_big = true,
 	level_range = {32, 42},
 	color=colors.GREY,
 	rarity = 250,
@@ -5500,6 +5512,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	unique = true,
 	name = "Acera",
 	unided_name = "corroded sword", image = "object/artifact/acera.png",
+	moddable_tile = "special/%s_acera",
+	moddable_tile_big = true,
 	level_range = {25, 35},
 	color=colors.GREEN,
 	rarity = 300,
@@ -5567,6 +5581,8 @@ newEntity{ base = "BASE_LONGSWORD",
 	power_source = {technique=true, psionic=true}, define_as = "BUTCHER",
 	name = "Butcher", unique=true, image="object/artifact/butcher.png",
 	unided_name = "blood drenched shortsword", color=colors.CRIMSON,
+	moddable_tile = "special/%s_butcher",
+	moddable_tile_big = true,
 	desc = [[Be it corruption, madness or eccentric boredom, the halfling butcher by the name of Caleb once took to eating his kin instead of cattle. His spree was never ended and nobody knows where he disappeared to. Only the blade remained, stuck fast in bloodied block. Beneath, a carving said "This was fun, let's do it again some time."]],
 	require = { stat = { str=40 }, },
 	level_range = {36, 48},
@@ -5929,6 +5945,8 @@ newEntity{ base = "BASE_LONGSWORD", --For whatever artists draws this: it's a ra
 	unique = true,
 	name = "Punae's Blade",
 	unided_name = "thin blade", image = "object/artifact/punaes_blade.png",
+	moddable_tile = "special/%s_punaes_blade",
+	moddable_tile_big = true,
 	level_range = {28, 38},
 	color=colors.GREY,
 	rarity = 300,
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf760466a1e5f7733314555d98077a6705e95cde
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..81c38a37d37315430b52b9a8a0ada0a8e2e88131
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1b8553fcbeaa0b64d7ea47c76bd142a49a42e9b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..003a029b967c4bf05f00da3f05a03a302f66457c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..89934be00d42b9f5858e13de1c324f77966a4f34
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe22037531a01ddc879e871daeee0de46e5d732d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ad3e1e9814d7cbb95241cf9ba02ea1ca5770638
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3af14372ffa286c14974f7db3000b1e346292b21
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..79c8726fb7ce2a1b48b2b3485a84e228e032d20e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..585cd9c6334da8fffc2265e19f3a6d28500b3452
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a734ea8890accec52eb9ce03587740bcf3a3616b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..58b7fe9b979a8694c6d47300e6ed4f4724df5f6b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3756ea164a252a50802f36a9d7ee73ca6ff30b2b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..590f7776d3777f94bb8dcd895614d11c7884ea91
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf529b2a717a62eeb8f1dbc376dc5445e87d018d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ccfad5b07176ac2ea3be61c17eef798f9800781
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d71d83aad4cd596293791bbee299f73925919a9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f39d4d18f3b6a67339d2a3dc66d373f54812a62
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4388e232812647aa6ab5b8ed1320636ba3f4128
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bbf9515083ab0e106d5187dc4c818cacb9782f7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..c341cac68a9949774de371700b4d1dbd0dcc308b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..78b0f309b52d4da7d208f034cf2641738948bdec
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a6872c82c020ae95250272f2ae42968641e22
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..92a5a3e9537689d0d5cc6be77ab4793b021832b0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_steel.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_steel.png
new file mode 100644
index 0000000000000000000000000000000000000000..578e8ad4a4f9842c09d930103d28afa9a9405e4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_steel.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c9a88ec02d8b2ce5029ba1a334688e0f5ed7957
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..7968a6d91c68d6ff45b3a7fd2a907422dadc0511
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..506777115d2ebc65b25b5bb67b179996b2c86771
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..d90e84c02c3bcc2e5b77f6740680b4371618825d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab33f3a050e54126c4f7a0a875aeaa3a2339d007
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_female/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf760466a1e5f7733314555d98077a6705e95cde
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..81c38a37d37315430b52b9a8a0ada0a8e2e88131
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1b8553fcbeaa0b64d7ea47c76bd142a49a42e9b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..003a029b967c4bf05f00da3f05a03a302f66457c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..89934be00d42b9f5858e13de1c324f77966a4f34
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe22037531a01ddc879e871daeee0de46e5d732d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ad3e1e9814d7cbb95241cf9ba02ea1ca5770638
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3af14372ffa286c14974f7db3000b1e346292b21
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..79c8726fb7ce2a1b48b2b3485a84e228e032d20e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..585cd9c6334da8fffc2265e19f3a6d28500b3452
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a734ea8890accec52eb9ce03587740bcf3a3616b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..58b7fe9b979a8694c6d47300e6ed4f4724df5f6b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3756ea164a252a50802f36a9d7ee73ca6ff30b2b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..590f7776d3777f94bb8dcd895614d11c7884ea91
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf529b2a717a62eeb8f1dbc376dc5445e87d018d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ccfad5b07176ac2ea3be61c17eef798f9800781
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d71d83aad4cd596293791bbee299f73925919a9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f39d4d18f3b6a67339d2a3dc66d373f54812a62
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4388e232812647aa6ab5b8ed1320636ba3f4128
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bbf9515083ab0e106d5187dc4c818cacb9782f7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..c341cac68a9949774de371700b4d1dbd0dcc308b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..78b0f309b52d4da7d208f034cf2641738948bdec
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a6872c82c020ae95250272f2ae42968641e22
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..92a5a3e9537689d0d5cc6be77ab4793b021832b0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_steel.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_steel.png
new file mode 100644
index 0000000000000000000000000000000000000000..578e8ad4a4f9842c09d930103d28afa9a9405e4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_steel.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c9a88ec02d8b2ce5029ba1a334688e0f5ed7957
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..7968a6d91c68d6ff45b3a7fd2a907422dadc0511
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..506777115d2ebc65b25b5bb67b179996b2c86771
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..d90e84c02c3bcc2e5b77f6740680b4371618825d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab33f3a050e54126c4f7a0a875aeaa3a2339d007
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/dwarf_male/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e90c3a438b923a6490751dd1e1abb103aa75d2c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..dba2859c56eda197e74554ebfbe7e46a3761078c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f8ea0ea816be1839525fc3976792efeb295ec4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..223ede83cc02373b6b2a56a70885f9ad3c67b904
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a5b20c3ea9641951544980c9c8e39a6f106f46
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..15625bad593b4e37607fe7be3ead02191efd67df
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..220fd2d5602c9b2bde17d09c9e766cecac0c7748
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..199c59bb727997bd4c4fc2002e75aa6040369c5f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..87ccc31bffefaa8e60ed53164c7cda07d6228c23
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..a79bd4d862f49ec51723623e14ce2b456e172877
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..e56f7ebc0f352fc436847c557a271d631d33d2eb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d6ab0df8e55af26e3710feaa057c0a938bf61aa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e931c7b37a310eeecd427d83ac02df8a81e99a7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..75810909b0fb0c41456c7d105083249c29a58fd8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..a91e682cbe6726885b18818704d74795356e5649
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..089d926682ae6b9a3ef854d2fdb44c2a74d1b95a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..e81dd12d10f69f784f53e069df2e73b92fd23bc4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..840e300f30126292ae4380c875bb013bd6652903
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..454770d22ae2b3ea931776f51463764bf7f405e3
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..39b87524a2831fc010ddc2b9381540e41f74a581
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f3dca212b8d232427250fd0b8ac6ec62c3fcdb5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..44508ba0c72b779f1a6b56c6b418d681dd9a568e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ff25da773112450ab2b7972dbbe56d4bef2f426
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ee41f4c4735cab7a23d1b86aab75b6bd1e4fd43
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b8e05121959a0dd8ebdfbe9d3f89f2829b755f9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d745fc62e30d631a6ea64edcf4ab79f4a0a8bcba
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb9608fe3ac3a359a0fc4545849cfa30f5af81f8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..1303b3fe8c067b63b3bdd441ecd88bb6ba02332c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4afcb07cfc16a66f0eeec9b8199e7ada65844fe
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_female/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..c22087cdc0bbb934e9484ba46015260624542753
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b141f5223c6efede9ff7c6b1813c29251c1e715
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..8154bf9214a52687582af0c313b5ca2aad5db38e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe3faf450b9de53a9598cc1449f6c705f94426e1
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..67a5b437acd7c01ac581a5aa56067867cfa9d3cc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbdaed36360e39b4ba39e1e2e0bcce57b33ec7f6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6e43237708cd56456ce7ba62e42de9fa245964d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba35fed17a0021dfdd7720eb931e8bb18ccdbc17
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..0cd35c519e6e25c7ce4df19e20fc65488fbc8826
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c6f23d835bd593f4f04f772e6eb90f785b3c9a1
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..c97c062d79896994e43a623b1ca419ef07cf2faf
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e505444f57ea9faf766a41953b53d08b5267668
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a925adf9203b48f8811649b742ee7659933166aa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b1f490bebb9a5f315423b0153f086be55337173
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..481feb5a05c00b7cae1ad75935e0ce95e52a2d0a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..b92c048c385e41ed7da31019c003f2b9bcfecfce
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..67c72d6988c58574bcaa5562d89795111c675b12
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..b352122e32ed569696c62a9c3b72fa953807f9a4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b7d21783d1c8de5d9e55a52661d2cf3c477d386
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca0f829e3ea2128de93a5c212887457513430756
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7e8879e9e7958cb34c08559e0a74c01cde91f69
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..497876837f875f01211fddfa70373d2d75f84bd7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..f19603520919a3dff3df7532819625b22074b3d5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..63b93bd974d018109d9c05a0cb2cb9797e986303
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f2db3343b6affc11e03e8025b73f7c13bc37ee4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d84d2f5c5c43780df4ff1c0cc0f6e816d13781d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d3a32d7c74ff4a96e18c001b6de89508ca84b57
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0b9105fc6741d5a490504080df02158fd77f335
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cc9861de7aef38b5fd3c6b661763c604eee9f15
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/elf_male/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..71dd540399da4360488c5d050e3620fb8f88adf2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e621f636b7c2c67ef2dcc81b798cdba11bae508
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b9d068803980046e1480a6c2cde65635921c779
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd45c567256d2afe0ef0dee8e2fd80b61301d036
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..437a71fe15fca118294f4932d45764fc0a9e2a00
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..f066c8eeae1287b519e17576455764df8058ebf1
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..83e0a32ca27b8246da39e0c27615651c38367a4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..f56bf50f816c609ec10106892723bc233d742dbb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..0fa1b8e81b59b8e3357964b0865b3eaed6731fd2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d30e357d9ab52c5d217143756a8752d79bd0151
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a19d1b496da53350e5941c88151919cc01e20e58
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..034511006c6201f4344f9956ec03cfca8e8ea67e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..b99bd2c9f8cfa32493042d4bba6daccf440dd3bd
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..a129628ed033060a0265c820a7103d765d8ed2fa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..02160d644f13e7071a5584da5808a8e303dccc89
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..7aed9c7a080ab4e5c3a0724bdae0a22128695bdd
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..1010eed734bb1f22513ecb35a732bd59c3c3b739
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ecdde64d0943238147cdd67fa8f3fc087e096b5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..097bca27afc85b1d7116389a0e244e10679370c2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc31438576b2be5034c13f3ef9c6b4f5ae8404ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..f59cd5cb5fbdead2593f19eb198c3aab8180fcaa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4f476017f6b6e52d8257b283f4edfe1255e19b2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..332dbaa6532b59663129bdf547e9b681d911bf7e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..f007f4ff9a27ab096f12cf0bbe336f87d43d50fc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..759befdd6e5cca28fab42e8cde6325c5608e09c0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..fca691334b0a661ff5325b4e12b2789d414ffb9b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..60395d27fcdad21a71ae5840a2bf031ce64de5ff
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b60e232167d8c25b7655a684a33941260d90b2d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..96b86e9c134b4dfb09457130910835924a77dfd9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/ghoul/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa47ded8ca2a213a5e4ba27851052f1775d2b171
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..dffb1a4a7bd3e43cbffbfb482f65161ac9a66b55
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..f200928926c7f6684252fb8be398ec2a67de0718
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..992046fd5d183c3371c3b00c1d1e3fd5d3a4df36
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..87cc659bb03ec9816a6cea6371ad2931e40d8614
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1c5a0b450d1624919744314439d6f5616cb1144
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..262fdbcc97eb17838a4124037358b841216e5be2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5903a4718e71cf856004ef43480af1af70d0ca2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..2245ec377974157593d8fb620ab46227ef87f509
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..55b36108a4835b172a184c410ca438c832d625b7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a05f726b8758a09ed862bcbe4b5546a24c622ab6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f0c1db242bbc7546cdc9cd8f6b416eb4e9c9238
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..16a06b36e3d9a56f641f41fc3f2b587220611472
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..00d774ea66a98d3659c3e5a4e7ce429b1e147516
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba9fa7e27b3a4f7d07eca0ccaa3444df0cdd4259
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..39f73e7a4d493324bef99514433644abed3a54a5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8c69555ca5e76a9c8e529f0159cfb9acff2c0ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..29bc0cf999d7dcd1f2d0051a73b5a59b1472ec58
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..e837355509a5f2d828d69df3d47c3ec119ad75bc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..72a78fce45aadcaa5009a8c50e63152d741644e5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d83a6c0c420aef5dcd9e7a49fadeeb24c0eb70b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0187a460879b16bea56d033d5762ab3e3f512ae
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..579a170ac9510f8e3d546044c0f53c3e4df24e2d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..206ed87a87615597150b8a3a6d4e3e33fc6acfa2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..7952888a5815e740c6172d9e1ce458fa64e2915b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b590dfec0689d028424c22ce0d86ef14796cd87
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..18f9569bb06f903390e7e52d3c97b5c9ef59c8c2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..3399d3695f0a872611496a2e3f81642131b14713
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f1b2c971e1666729d5b75a50376543530a991c0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_female/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa47ded8ca2a213a5e4ba27851052f1775d2b171
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..dffb1a4a7bd3e43cbffbfb482f65161ac9a66b55
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..f200928926c7f6684252fb8be398ec2a67de0718
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..992046fd5d183c3371c3b00c1d1e3fd5d3a4df36
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..87cc659bb03ec9816a6cea6371ad2931e40d8614
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1c5a0b450d1624919744314439d6f5616cb1144
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..262fdbcc97eb17838a4124037358b841216e5be2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5903a4718e71cf856004ef43480af1af70d0ca2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..2245ec377974157593d8fb620ab46227ef87f509
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..55b36108a4835b172a184c410ca438c832d625b7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a05f726b8758a09ed862bcbe4b5546a24c622ab6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f0c1db242bbc7546cdc9cd8f6b416eb4e9c9238
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..16a06b36e3d9a56f641f41fc3f2b587220611472
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..00d774ea66a98d3659c3e5a4e7ce429b1e147516
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba9fa7e27b3a4f7d07eca0ccaa3444df0cdd4259
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..39f73e7a4d493324bef99514433644abed3a54a5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8c69555ca5e76a9c8e529f0159cfb9acff2c0ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..29bc0cf999d7dcd1f2d0051a73b5a59b1472ec58
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..e837355509a5f2d828d69df3d47c3ec119ad75bc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..72a78fce45aadcaa5009a8c50e63152d741644e5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d83a6c0c420aef5dcd9e7a49fadeeb24c0eb70b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0187a460879b16bea56d033d5762ab3e3f512ae
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..579a170ac9510f8e3d546044c0f53c3e4df24e2d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..206ed87a87615597150b8a3a6d4e3e33fc6acfa2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..7952888a5815e740c6172d9e1ce458fa64e2915b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b590dfec0689d028424c22ce0d86ef14796cd87
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..18f9569bb06f903390e7e52d3c97b5c9ef59c8c2
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..3399d3695f0a872611496a2e3f81642131b14713
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f1b2c971e1666729d5b75a50376543530a991c0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/halfling_male/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e90c3a438b923a6490751dd1e1abb103aa75d2c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..dba2859c56eda197e74554ebfbe7e46a3761078c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f8ea0ea816be1839525fc3976792efeb295ec4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..223ede83cc02373b6b2a56a70885f9ad3c67b904
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a5b20c3ea9641951544980c9c8e39a6f106f46
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..15625bad593b4e37607fe7be3ead02191efd67df
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..220fd2d5602c9b2bde17d09c9e766cecac0c7748
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..199c59bb727997bd4c4fc2002e75aa6040369c5f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..87ccc31bffefaa8e60ed53164c7cda07d6228c23
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..a79bd4d862f49ec51723623e14ce2b456e172877
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..e56f7ebc0f352fc436847c557a271d631d33d2eb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d6ab0df8e55af26e3710feaa057c0a938bf61aa
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e931c7b37a310eeecd427d83ac02df8a81e99a7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..75810909b0fb0c41456c7d105083249c29a58fd8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..a91e682cbe6726885b18818704d74795356e5649
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..089d926682ae6b9a3ef854d2fdb44c2a74d1b95a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..e81dd12d10f69f784f53e069df2e73b92fd23bc4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..840e300f30126292ae4380c875bb013bd6652903
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..454770d22ae2b3ea931776f51463764bf7f405e3
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..39b87524a2831fc010ddc2b9381540e41f74a581
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f3dca212b8d232427250fd0b8ac6ec62c3fcdb5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..44508ba0c72b779f1a6b56c6b418d681dd9a568e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ff25da773112450ab2b7972dbbe56d4bef2f426
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ee41f4c4735cab7a23d1b86aab75b6bd1e4fd43
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b8e05121959a0dd8ebdfbe9d3f89f2829b755f9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d745fc62e30d631a6ea64edcf4ab79f4a0a8bcba
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb9608fe3ac3a359a0fc4545849cfa30f5af81f8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..1303b3fe8c067b63b3bdd441ecd88bb6ba02332c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_female/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4afcb07cfc16a66f0eeec9b8199e7ada65844fe
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_female/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..29b1e2a4ca7676e26db31eb9a58b91b2707cc25c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..033491185e4e785fb67ca59500a541c991ff36ad
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..23645b31fee746f1793638b9b2fd6bcacb78b57b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1f69201aac6eb01581fef2f060134b2c8e4b4f6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..30cd0312f4fadaa8d1f7ef4fd37f120f1bd58ade
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ff74abdfbfb8595cfd3c05d33cd253ec8ae96ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..94e8e7ce6b0832da11dc2df7563e8f82bfc8380c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3b49be83476cec5edc469ee6b91dc3cca66670d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..274ef225651807285989c4b5dd5818d6a44ef733
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbfc1f34444ba83025294a0dee8518817d84bcea
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..b48eed834fbe3ff5e1e7f5648b04f2079f390565
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..600cb1386201e9d95f7901637661db6004779d32
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..e84d5b61e3617681155a13e167b11519c9708b27
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..32b4ac4b21cbd77808467ec7b2ffa7b8041198ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ddc36f955cb77a415e7a3299af10f705254007f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..0637a3accf6aa093868add5c6fcf5214ae6e1099
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..443aacb6b9aa32c703e32d5429bebc70f98aa89b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..f47f287a9b663462ecedefdd45e7821a64ea152f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..a91e9689f4ed7e53c47793301751cdef92539175
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1c9be0c07af78a7b227cc9a5a672d8a325270b5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5ef7613f79cecc3369c144ddc9e2694badb1a68
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbfecaec41ec39c0a82fbf09fbf00f1cc640343b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a0aa818474d89bcaf9b1a18ba11cf4a279dd5f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..54588d347a615f49d03514003a2d2dbc614b5b34
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..43005b7ef094580e6389c9794ddc84c054a29405
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb2c41bd20eb6d2b33b621c36db953df49757668
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbb27e7a8547c5b4b61e76cc6149ec14bb6b5101
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3937dc383f3149f18063511e783ae2bec3eddd3
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/human_male/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..93873de243fc3401e9ebaa32fa6737bd6a4bcacb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/human_male/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..895bf864d94bcbf9d848b4295758416c8cb6038b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..050ad28176402a3019e6e526742e37089287d69b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..cff0e5f54c3fc59954ca1c4a63b7f08d8c3eb4d7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..29ab31c6e09c2498b72d5cab6932bf57dc227f0a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..82a66e86b57dab3274fbe415a2b6a21a139df418
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..99f5e288f2d0e23179066bc15a491dff771b408a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a45d81db7c38df72855099e8f0004057de9725c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..155a449e77be0546ddc26c5df166ab0c9f590765
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8c0a5b6bf5343f8145ebd44d186aaf6a7555427
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..936bac541a6af2cab0e139ab1785f925a94804cb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e0c5d561c5e7ba810f6fd52e15f614fffffc983
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2233ca4bddb00285097b1303f179e488c4ccf0d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b08665a3d04f1035a45d6838d61a27ca35b9b18
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dc8a4c88c78f9c9b464500d2dfb37b4a79aa65a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..06a10a81b02a39888b7ce6656e9ac1761ac7b50f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..444afce1bb5be751120859ee7a057ed74e1bb44e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..25446888e61ac392008350b268e0528ae8de0277
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce8d4e969aca80fd411d80117f2b7c3bfa84ce14
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..96e037adae55efa776ec64d271acf7a955bd556f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..18dd1065226e1062752067ad65b5cbaa91eff398
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..01dc8e4f59df437c40101c065e311ce32032fae6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a4dc7d31f11481b9b249c79b94d131823a474e0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..27071aff80c2b0655d4614da80d60160f1bea010
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..00ba13ae7323a3f1187086d6e74298332a0503ca
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd0dd97b0dca352241a2c8a2d4cdc79b0071141f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5c5aecb7f9447616d2d467d396d10c7ee503a1b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..658a001ffc6d4a2244ea55c45af7744cbdc57b3d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ed9802b373cdfabfae3d9f34c19c231f4e8277b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/orc/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/orc/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..84926050f8eb3f6304bafb84d6799f91902c2257
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/orc/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf760466a1e5f7733314555d98077a6705e95cde
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..81c38a37d37315430b52b9a8a0ada0a8e2e88131
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1b8553fcbeaa0b64d7ea47c76bd142a49a42e9b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..003a029b967c4bf05f00da3f05a03a302f66457c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..89934be00d42b9f5858e13de1c324f77966a4f34
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe22037531a01ddc879e871daeee0de46e5d732d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ad3e1e9814d7cbb95241cf9ba02ea1ca5770638
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3af14372ffa286c14974f7db3000b1e346292b21
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..79c8726fb7ce2a1b48b2b3485a84e228e032d20e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..585cd9c6334da8fffc2265e19f3a6d28500b3452
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..a734ea8890accec52eb9ce03587740bcf3a3616b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..58b7fe9b979a8694c6d47300e6ed4f4724df5f6b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3756ea164a252a50802f36a9d7ee73ca6ff30b2b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..590f7776d3777f94bb8dcd895614d11c7884ea91
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf529b2a717a62eeb8f1dbc376dc5445e87d018d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ccfad5b07176ac2ea3be61c17eef798f9800781
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d71d83aad4cd596293791bbee299f73925919a9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f39d4d18f3b6a67339d2a3dc66d373f54812a62
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4388e232812647aa6ab5b8ed1320636ba3f4128
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bbf9515083ab0e106d5187dc4c818cacb9782f7
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..c341cac68a9949774de371700b4d1dbd0dcc308b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..78b0f309b52d4da7d208f034cf2641738948bdec
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a6872c82c020ae95250272f2ae42968641e22
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..92a5a3e9537689d0d5cc6be77ab4793b021832b0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_steel.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_steel.png
new file mode 100644
index 0000000000000000000000000000000000000000..578e8ad4a4f9842c09d930103d28afa9a9405e4d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_steel.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c9a88ec02d8b2ce5029ba1a334688e0f5ed7957
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..7968a6d91c68d6ff45b3a7fd2a907422dadc0511
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..506777115d2ebc65b25b5bb67b179996b2c86771
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..d90e84c02c3bcc2e5b77f6740680b4371618825d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab33f3a050e54126c4f7a0a875aeaa3a2339d007
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/runic_golem/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..29b1e2a4ca7676e26db31eb9a58b91b2707cc25c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..033491185e4e785fb67ca59500a541c991ff36ad
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..23645b31fee746f1793638b9b2fd6bcacb78b57b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1f69201aac6eb01581fef2f060134b2c8e4b4f6
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..30cd0312f4fadaa8d1f7ef4fd37f120f1bd58ade
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ff74abdfbfb8595cfd3c05d33cd253ec8ae96ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..94e8e7ce6b0832da11dc2df7563e8f82bfc8380c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3b49be83476cec5edc469ee6b91dc3cca66670d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..274ef225651807285989c4b5dd5818d6a44ef733
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbfc1f34444ba83025294a0dee8518817d84bcea
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..b48eed834fbe3ff5e1e7f5648b04f2079f390565
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..600cb1386201e9d95f7901637661db6004779d32
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..e84d5b61e3617681155a13e167b11519c9708b27
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..32b4ac4b21cbd77808467ec7b2ffa7b8041198ed
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ddc36f955cb77a415e7a3299af10f705254007f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..0637a3accf6aa093868add5c6fcf5214ae6e1099
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..443aacb6b9aa32c703e32d5429bebc70f98aa89b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..f47f287a9b663462ecedefdd45e7821a64ea152f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..a91e9689f4ed7e53c47793301751cdef92539175
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1c9be0c07af78a7b227cc9a5a672d8a325270b5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5ef7613f79cecc3369c144ddc9e2694badb1a68
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbfecaec41ec39c0a82fbf09fbf00f1cc640343b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a0aa818474d89bcaf9b1a18ba11cf4a279dd5f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..54588d347a615f49d03514003a2d2dbc614b5b34
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..43005b7ef094580e6389c9794ddc84c054a29405
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb2c41bd20eb6d2b33b621c36db953df49757668
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbb27e7a8547c5b4b61e76cc6149ec14bb6b5101
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3937dc383f3149f18063511e783ae2bec3eddd3
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..93873de243fc3401e9ebaa32fa6737bd6a4bcacb
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/skeleton/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_acera.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..193c43073ddfb6aeed36ae7945ebe07825f98d3c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..a65a274d30cdf14a78ec39c5bd39a0ac6d980b1f
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..07d51ea9fe3c07031450d5d16d514e0824e7d32b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..8464b58be44441082f322ac84e374d3190632b17
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..3754000b11d421bba7bd92d4564123df217a0b7b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a87d4704b304896b2c0206766e9a36fbe49f0db
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..f08811ef7892bfb5584205a35ffd655a1d56731e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a16f0e8ca3ec11af8548fb4a165a4e08b10afb8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d13f1763c8929a3b04719a087410c6eaf9c8a726
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca531ab68fa05e35a957cffcb9d7af5e2f323726
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..9780a5a11898cf93fcc76d7b6c9a0f4495b8d19d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fd898a79476bad0a622ed11e1decd8f59ef7277
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b05cc0391913023585e7a42c0594ef67e832093
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd550cf13b7450d5092e2dfa4c94dbd2fc06370e
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/left_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_acera.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_acera.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4d56bbcaa41e72704f18aea9b43623105af8df8
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_acera.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_anmalice.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_anmalice.png
new file mode 100644
index 0000000000000000000000000000000000000000..61252ce32789c02ba6a22217b4d3a1bf4470f050
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_anmalice.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_blade_of_distorted_time.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_blade_of_distorted_time.png
new file mode 100644
index 0000000000000000000000000000000000000000..a880f8e0b82b1c946068f149495b9060618544e4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_blade_of_distorted_time.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_butcher.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_butcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..26d55d59dbb0c0f29c7d40decd724462ecbaad63
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_butcher.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_corpus.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_corpus.png
new file mode 100644
index 0000000000000000000000000000000000000000..16c850110bf4e32b279fdba43a3db1ed671e1a9d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_corpus.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_dawn_blade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_dawn_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..f305d190d3aa1f55d0c7a79e793b63de30fa8239
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_dawn_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_morrigor.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_morrigor.png
new file mode 100644
index 0000000000000000000000000000000000000000..384c9cf4ca6b3b558f9a174f466a58facdd5a841
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_morrigor.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_punaes_blade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_punaes_blade.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0d6cdc32892bb3274d8e4028c60332696d240b4
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_punaes_blade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_blood_edge.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_blood_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a1aafb3d08137df48474022d6ca3dd7a9e148ba
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_blood_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_of_potential_futures.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_of_potential_futures.png
new file mode 100644
index 0000000000000000000000000000000000000000..1db3a20e94ed2f160c768520419be244756cbdab
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_of_potential_futures.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_witch_bane.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_witch_bane.png
new file mode 100644
index 0000000000000000000000000000000000000000..71fc01a17adba642090c6cce81c3ce3e4501ebf9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_sword_witch_bane.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_twilights_edge.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_twilights_edge.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8e86fd3705051fb56db3c99849e372f24c79dbc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_twilights_edge.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_weapon_spellblade.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_weapon_spellblade.png
new file mode 100644
index 0000000000000000000000000000000000000000..0567f5fd9d586044cbe66de1731ec66d19ea5ce5
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_weapon_spellblade.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_wintertide.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_wintertide.png
new file mode 100644
index 0000000000000000000000000000000000000000..5223e9daf51d3994b86a6f1ab355f209a16167c1
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/right_wintertide.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/player/yeek/special/skin_of_many.png b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/skin_of_many.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d154d39f847f7a551aa4855ff011b09e4f32b17
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/player/yeek/special/skin_of_many.png differ
diff --git a/game/modules/tome/data/talents/gifts/cold-drake.lua b/game/modules/tome/data/talents/gifts/cold-drake.lua
index e8502c980551ede85854d9be2fea2bcd23cd3f80..fa66f8f980d9a6060c8c1918c29baab4d1a25ccf 100644
--- a/game/modules/tome/data/talents/gifts/cold-drake.lua
+++ b/game/modules/tome/data/talents/gifts/cold-drake.lua
@@ -27,24 +27,45 @@ newTalent{
 	random_ego = "attack",
 	equilibrium = 3,
 	cooldown = 7,
-	range = 1,
+	range = 0,
+	radius = function(self, t) return math.floor(self:combatTalentScale(t, 1, 3)) end,
+	direct_hit = true,
+	requires_target = true,
 	tactical = { ATTACK = { COLD = 2 } },
 	requires_target = true,
-	on_learn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 end,
-	on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end,
-	damagemult = function(self, t) return self:combatTalentScale(t, 1.525, 2.025) end,
+	on_learn = function(self, t) 
+		self.combat_physresist = self.combat_physresist + 4
+		self.combat_spellresist = self.combat_spellresist + 4
+		self.combat_mentalresist = self.combat_mentalresist + 4
+		self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 
+	end,
+	on_unlearn = function(self, t) 
+		self.combat_physresist = self.combat_physresist - 4
+		self.combat_spellresist = self.combat_spellresist - 4	
+		self.combat_mentalresist = self.combat_mentalresist - 4
+		self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 
+	end,
+	damagemult = function(self, t) return self:combatTalentScale(t, 1.6, 2.3) end,
+	target = function(self, t)
+		return {type="cone", range=self:getTalentRange(t), selffire=false, radius=self:getTalentRadius(t)}
+	end,
 	action = function(self, t)
-		local tg = {type="hit", range=self:getTalentRange(t)}
-		local x, y, target = self:getTarget(tg)
-		if not x or not y or not target then return nil end
-		if core.fov.distance(self.x, self.y, x, y) > 1 then return nil end
-		self:attackTarget(target, (self:getTalentLevel(t) >= 4) and DamageType.ICE or DamageType.COLD, t.damagemult(self, t), true)
+		local tg = self:getTalentTarget(t)
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:project(tg, x, y, function(px, py, tg, self)
+			local target = game.level.map(px, py, Map.ACTOR)
+			if target and target ~= self then
+				local hit = self:attackTarget(target, DamageType.ICE, self:combatTalentWeaponDamage(t, 1.6, 2.3), true)
+			end
+		end)
+		game:playSoundNear(self, "talents/breath")
 		return true
 	end,
 	info = function(self, t)
-		return ([[You call upon the mighty claw of a cold drake, doing %d%% weapon damage as cold damage.
-		At level 4, the attack becomes pure ice, giving a chance to freeze the target.
-		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(100 * t.damagemult(self, t))
+		return ([[You call upon the mighty claw of a cold drake and rake a wave of freezing cold in front of you, doing %d%% weapon damage as Ice damage in a cone of %d. Ice damage gives a chance of freezing the target.
+		Every level in Ice Claw additionally raises your Physical, Mental and Spell Saves by 4.
+		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(100 * t.damagemult(self, t), self:getTalentRadius(t))
 	end,
 }
 
@@ -55,28 +76,33 @@ newTalent{
 	mode = "sustained",
 	points = 5,
 	cooldown = 10,
-	sustain_equilibrium = 30,
+	sustain_equilibrium = 10,
 	range = 10,
 	tactical = { ATTACK = { COLD = 1 }, DEFEND = 2 },
 	on_learn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end,
-	getDamage = function(self, t) return self:combatTalentStatDamage(t, "wil", 10, 700) / 10 end,
-	getArmor = function(self, t) return self:combatTalentStatDamage(t, "wil", 6, 600) / 10 end,
+	getArmor = function(self, t) return self:combatTalentMindDamage(t, 5, 25) end,
+	getLifePct = function(self, t) return self:combatTalentLimit(t, 1, 0.02, 0.10) end, -- Limit < 100% bonus
+	getDamageOnMeleeHit = function(self, t) return 10 +  self:combatTalentMindDamage(t, 10, 30) end,
 	activate = function(self, t)
 		return {
-			onhit = self:addTemporaryValue("on_melee_hit", {[DamageType.COLD]=t.getDamage(self, t)}),
+			onhit = self:addTemporaryValue("on_melee_hit", {[DamageType.COLD]=t.getDamageOnMeleeHit(self, t)}),
+			life = self:addTemporaryValue("max_life", t.getLifePct(self, t)*self.max_life),
 			armor = self:addTemporaryValue("combat_armor", t.getArmor(self, t)),
 		}
 	end,
 	deactivate = function(self, t, p)
-		self:removeTemporaryValue("on_melee_hit", p.onhit)
+		self:removeTemporaryValue("max_life", p.life)
 		self:removeTemporaryValue("combat_armor", p.armor)
+		self:removeTemporaryValue("on_melee_hit", p.onhit)
 		return true
 	end,
 	info = function(self, t)
-		return ([[Your skin forms icy scales, damaging anyone that hits you for %0.2f cold damage and increasing your Armour by %d.
+		local life = t.getLifePct(self, t)
+		return ([[Your skin forms icy scales and your flesh toughens, increasing your Maximum Life by %d%% and your Armour by %d.
+		You also deal %0.2f cold damage to any enemies that physically strike you.
 		Each point in cold drake talents also increases your cold resistance by 1%%.
-		The damage and Armor will scale with your Willpower.]]):format(damDesc(self, DamageType.COLD, t.getDamage(self, t)), t.getArmor(self, t))
+		The life increase will scale with your Talent Level, and your Armour and retaliation cold damage will scale with Mindpower.]]):format(life * 100, t.getArmor(self, t), damDesc(self, DamageType.COLD, t.getDamageOnMeleeHit(self, t)))
 	end,
 }
 
@@ -87,7 +113,7 @@ newTalent{
 	points = 5,
 	random_ego = "defensive",
 	equilibrium = 10,
-	cooldown = 30,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 5, 30, 10)) end,
 	range = 10,
 	tactical = { DISABLE = 2 },
 	requires_target = true,
@@ -95,6 +121,8 @@ newTalent{
 	on_unlearn = function(self, t) self.resists[DamageType.COLD] = (self.resists[DamageType.COLD] or 0) - 1 end,
 	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
 	getLength = function(self, t) return 1 + math.floor(self:combatTalentScale(t, 3, 7)/2)*2 end,
+	getIceDamage = function(self, t) return self:combatTalentMindDamage(t, 3, 15) end,
+	getIceRadius = function(self, t) return math.floor(self:combatTalentScale(t, 1, 2)) end,
 	action = function(self, t)
 		local halflength = math.floor(t.getLength(self,t)/2)
 		local block = function(_, lx, ly)
@@ -103,6 +131,8 @@ newTalent{
 		local tg = {type="wall", range=self:getTalentRange(t), halflength=halflength, talent=t, halfmax_spots=halflength+1, block_radius=block}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
+		local ice_damage = self:mindCrit(t.getIceDamage(self, t))
+		local ice_radius = t.getIceRadius(self, t)
 		local _ _, _, _, x, y = self:canProject(tg, x, y)
 		if game.level.map:checkEntity(x, y, Map.TERRAIN, "block_move") then return nil end
 
@@ -123,9 +153,15 @@ newTalent{
 				block_move = true,
 				block_sight = false,
 				temporary = 4 + self:getTalentLevel(t),
-				x =px, y = py,
+				x = px, y = py,
 				canAct = false,
+				dam = ice_damage,
+				radius = ice_radius,
 				act = function(self)
+					local tg = {type="ball", range=0, radius=ice_radius, friendlyfire=false, talent=t, x=self.x, y=self.y}
+					self.summoner.__project_source = self
+					self.summoner:project(tg, self.x, self.y, engine.DamageType.ICE, self.dam)
+					self.summoner.__project_source = nil
 					self:useEnergy()
 					self.temporary = self.temporary - 1
 					if self.temporary <= 0 then
@@ -151,8 +187,11 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Summons an icy wall of %d length for %d turns. Ice walls are transparent.
-		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(3 + math.floor(self:getTalentLevel(t) / 2) * 2, t.getDuration(self, t))
+		local icerad = t.getIceRadius(self, t)
+		local icedam = t.getIceDamage(self, t)
+		return ([[Summons an icy wall of %d length for %d turns. Ice walls are transparent, but block projectiles and enemies.
+		Ice walls also emit freezing cold, dealing %0.2f damage for each ice wall within radius %d of an enemy, and with each wall giving a 25%% chance to freeze an enemy. This cold cannot hurt the talent user or their allies.
+		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(3 + math.floor(self:getTalentLevel(t) / 2) * 2, t.getDuration(self, t), damDesc(self, DamageType.COLD, icedam),  icerad)
 	end,
 }
 
@@ -179,7 +218,7 @@ newTalent{
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.ICE, self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 430)))
+		self:project(tg, x, y, DamageType.ICE_SLOW, self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 500)))
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_cold", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		game:playSoundNear(self, "talents/breath")
 		
@@ -190,9 +229,9 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[You breathe ice in a frontal cone of radius %d. Any target caught in the area will take %0.2f cold damage, and has a 25%% to be frozen for a few turns (higher rank enemies will be frozen for a shorter time).
+		return ([[You breathe ice in a frontal cone of radius %d. Any target caught in the area will take %0.2f cold damage, will be slowed 20%% for three turns, and has a 25%% to be frozen for a few turns (higher rank enemies will be frozen for a shorter time).
 		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
-		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.COLD, self:combatTalentStatDamage(t, "str", 30, 430)))
+		Each point in cold drake talents also increases your cold resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.COLD, self:combatTalentStatDamage(t, "str", 30, 500)))
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/gifts/fire-drake.lua b/game/modules/tome/data/talents/gifts/fire-drake.lua
index 5dee77ded242ecbe391dddb6a631cf8f490ee4b7..c0539d81a19db623df712a50da70b2d20f88bb2c 100644
--- a/game/modules/tome/data/talents/gifts/fire-drake.lua
+++ b/game/modules/tome/data/talents/gifts/fire-drake.lua
@@ -17,79 +17,95 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
+
 newTalent{
-	name = "Bellowing Roar",
+	name = "Wing Buffet",
 	type = {"wild-gift/fire-drake", 1},
 	require = gifts_req1,
 	points = 5,
 	random_ego = "attack",
-	message = "@Source@ roars!",
-	equilibrium = 3,
-	cooldown = 20,
+	equilibrium = 5,
+	cooldown = 8,
 	range = 0,
-	on_learn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) + 1 end,
-	on_unlearn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) - 1 end,
-	radius = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
+	on_learn = function(self, t) 
+		self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) + 1 
+		self.combat_atk = self.combat_atk + 4
+		self.combat_dam = self.combat_dam + 4
+	end,
+	on_unlearn = function(self, t) 
+		self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) - 1 
+		self.combat_atk = self.combat_atk - 4
+		self.combat_dam = self.combat_dam - 4
+	end,
+	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.1, 1.6) end,
+	radius = function(self, t) return math.floor(self:combatTalentScale(t, 3, 6)) end,
+	direct_hit = true,
+	tactical = { DEFEND = { knockback = 2 }, ESCAPE = { knockback = 2 } },
+	requires_target = true,
 	target = function(self, t)
-		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), friendlyfire=false, talent=t}
+		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
 	end,
-	tactical = { DEFEND = 1, DISABLE = { confusion = 3 } },
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
-		self:project(tg, self.x, self.y, DamageType.PHYSICAL, self:mindCrit(self:combatTalentStatDamage(t, "str", 40, 400)))
-		self:project(tg, self.x, self.y, DamageType.CONFUSION, {
-			dur=3,
-			dam=40 + 6 * self:getTalentLevel(t),
-			power_check=function() return self:combatPhysicalpower() end,
-			resist_check=self.combatPhysicalResist,
-		})
-		game.level.map:particleEmitter(self.x, self.y, self:getTalentRadius(t), "shout", {additive=true, life=10, size=3, distorion_factor=0.5, radius=self:getTalentRadius(t), nb_circles=8, rm=0.8, rM=1, gm=0, gM=0, bm=0.1, bM=0.2, am=0.4, aM=0.6})
+		local x, y = self:getTarget(tg)
+		if not x or not y then return nil end
+		self:project(tg, x, y, function(px, py, tg, self)
+			local target = game.level.map(px, py, Map.ACTOR)
+			if target and target ~= self then
+				local hit = self:attackTarget(target, DamageType.PHYSKNOCKBACK, self:combatTalentWeaponDamage(t, 1.1, 1.6), true)
+			end
+		end)
+		game:playSoundNear(self, "talents/breath")
+
+		if core.shader.active(4) then
+			local bx, by = self:attachementSpot("back", true)
+			self:addParticles(Particles.new("shader_wings", 1, {life=18, x=bx, y=by, fade=-0.006, deploy_speed=14}))
+		end
 		return true
 	end,
 	info = function(self, t)
-		local radius = self:getTalentRadius(t)
-		return ([[You let out a powerful roar that sends your foes into utter confusion for 3 turns in a radius of %d.
-		The sound wave is so strong, your foes also take %0.2f physical damage.
-		The damage improves with your Strength.
-		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(radius, self:combatTalentStatDamage(t, "str", 40, 400))
+		local damage = t.getDamage(self, t)
+		return ([[You summon a powerful gust of wind, knocking back your foes within a radius of %d up to 3 tiles away and damaging them for %d%% weapon damage.
+		Every level in Wing Buffet additionally raises your Physical Power and Accuracy by 4, passively.
+		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(self:getTalentRadius(t),damage*100)
 	end,
 }
 
 newTalent{
-	name = "Wing Buffet",
+	name = "Bellowing Roar",
 	type = {"wild-gift/fire-drake", 2},
 	require = gifts_req2,
 	points = 5,
 	random_ego = "attack",
-	equilibrium = 7,
-	cooldown = 10,
+	message = "@Source@ roars!",
+	equilibrium = 8,
+	cooldown = 20,
 	range = 0,
 	on_learn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) - 1 end,
-	radius = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
-	direct_hit = true,
-	tactical = { DEFEND = { knockback = 2 }, ESCAPE = { knockback = 2 } },
-	requires_target = true,
+	radius = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
 	target = function(self, t)
-		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
+		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), friendlyfire=false, talent=t}
 	end,
+	tactical = { DEFEND = 1, DISABLE = { confusion = 3 } },
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
-		local x, y = self:getTarget(tg)
-		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.PHYSKNOCKBACK, {dam=self:mindCrit(self:combatTalentStatDamage(t, "str", 15, 90)), dist=4})
-		game:playSoundNear(self, "talents/breath")
-
-		if core.shader.active(4) then
-			local bx, by = self:attachementSpot("back", true)
-			self:addParticles(Particles.new("shader_wings", 1, {life=18, x=bx, y=by, fade=-0.006, deploy_speed=14}))
-		end
+		self:project(tg, self.x, self.y, DamageType.PHYSICAL, self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 380)))
+		self:project(tg, self.x, self.y, DamageType.CONFUSION, {
+			dur=3,
+			dam=20 + 6 * self:getTalentLevel(t),
+			power_check=function() return self:combatPhysicalpower() end,
+			resist_check=self.combatPhysicalResist,
+		})
+		game.level.map:particleEmitter(self.x, self.y, self:getTalentRadius(t), "shout", {additive=true, life=10, size=3, distorion_factor=0.5, radius=self:getTalentRadius(t), nb_circles=8, rm=0.8, rM=1, gm=0, gM=0, bm=0.1, bM=0.2, am=0.4, aM=0.6})
 		return true
 	end,
 	info = function(self, t)
-		return ([[You summon a powerful gust of wind, knocking back your foes within a radius of %d up to 4 tiles away and damaging them for %d.
-		The damage will increase with your Strength.
-		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(self:getTalentRadius(t), self:combatTalentStatDamage(t, "str", 15, 90))
+		local radius = self:getTalentRadius(t)
+		return ([[You let out a powerful roar that sends your foes into utter confusion for 3 turns in a radius of %d.
+		The sound wave is so strong, your foes also take %0.2f physical damage.
+		The damage improves with your Strength.
+		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(radius, self:combatTalentStatDamage(t, "str", 30, 380))
 	end,
 }
 
@@ -99,26 +115,26 @@ newTalent{
 	require = gifts_req3,
 	points = 5,
 	random_ego = "attack",
-	equilibrium = 10,
-	cooldown = 35,
+	equilibrium = 6,
+	cooldown = 20,
 	tactical = { ATTACKAREA = { FIRE = 2 } },
 	range = 10,
-	radius = 2,
+	radius = function(self, t) return math.floor(self:combatTalentScale(t, 2, 5)) end,
 	direct_hit = true,
 	requires_target = true,
 	on_learn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.FIRE] = (self.resists[DamageType.FIRE] or 0) - 1 end,
 	target = function(self, t)
-		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t)}
+		return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), friendlyfire=false}
 	end,
 	getDamage = function(self, t)
-		return self:combatTalentStatDamage(t, "wil", 15, 120)
+		return self:combatTalentMindDamage(t, 15, 60)
 	end,
-	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
+	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
 	action = function(self, t)
 		local duration = t.getDuration(self, t)
 		local radius = self:getTalentRadius(t)
-		local dam = self:mindCrit(t.getDamage(self, t))
+		local damage = self:mindCrit(t.getDamage(self, t))
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
@@ -126,11 +142,11 @@ newTalent{
 		-- Add a lasting map effect
 		game.level.map:addEffect(self,
 			x, y, duration,
-			DamageType.FIRE, dam,
+			DamageType.FIRE_DRAIN, {dam=damage, healfactor=0.1},
 			radius,
 			5, nil,
 			{type="inferno"},
-			nil, true
+			nil, false
 		)
 		game:playSoundNear(self, "talents/devouringflame")
 		return true
@@ -140,7 +156,8 @@ newTalent{
 		local radius = self:getTalentRadius(t)
 		local duration = t.getDuration(self, t)
 		return ([[Spit a cloud of flames, doing %0.2f fire damage in a radius of %d each turn for %d turns.
-		The damage will increase with your Willpower, and can critical.
+		The flames will ignore the caster, and will drain 10%% of the damage dealt as the flames consume enemies life force and transfer it to the user.
+		The damage will increase with your Mindpower, and can critical.
 		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(damDesc(self, DamageType.FIRE, dam), radius, duration)
 	end,
 }
@@ -168,7 +185,7 @@ newTalent{
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.FIREBURN, {dam=self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 550)), dur=3, initial=70})
+		self:project(tg, x, y, DamageType.FIRE_STUN, {dam=self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 650)), dur=3, initial=70})
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_fire", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 
 		if core.shader.active(4) then
@@ -179,8 +196,8 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[You breathe fire in a frontal cone of radius %d. Any target caught in the area will take %0.2f fire damage over 3 turns.
+		return ([[You breathe fire in a frontal cone of radius %d. Any target caught in the area will take %0.2f fire damage over 3 turns, and has a 25%% chance of being Flameshocked for 3 turns, stunning them.
 		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
-		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.FIRE, self:combatTalentStatDamage(t, "str", 30, 550)))
+		Each point in fire drake talents also increases your fire resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.FIRE, self:combatTalentStatDamage(t, "str", 30, 650)))
 	end,
 }
diff --git a/game/modules/tome/data/talents/gifts/higher-draconic.lua b/game/modules/tome/data/talents/gifts/higher-draconic.lua
index d47e0ea5b4bbd7f2c3392cee8382a98b69b46f9f..0edb7c37c892307f2a781cf81bef784519eb17d0 100644
--- a/game/modules/tome/data/talents/gifts/higher-draconic.lua
+++ b/game/modules/tome/data/talents/gifts/higher-draconic.lua
@@ -23,23 +23,18 @@ newTalent{
 	require = gifts_req_high1,
 	points = 5,
 	random_ego = "attack",
-	equilibrium = 20,
-	cooldown = 16,
+	equilibrium = 10,
+	cooldown = 12,
 	range = 1,
 	tactical = { ATTACK = { PHYSICAL = 1, COLD = 1, FIRE = 1, LIGHTNING = 1, ACID = 1 } },
 	requires_target = true,
-	getWeaponDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.2, 2.0) end,
+	getWeaponDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.6, 2.3) end,
 	getBurstDamage = function(self, t) return self:combatTalentMindDamage(t, 20, 230) end,
+	getPassiveSpeed = function(self, t) return (self:combatTalentScale(t, 2, 10, 0.5)/100) end,
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 1.5, 3.5)) end,
-	on_learn = function(self, t) 
-		self.combat_physresist = self.combat_physresist + 1
-		self.combat_spellresist = self.combat_spellresist + 1
-		self.combat_mentalresist = self.combat_mentalresist + 1
-	end,
-	on_unlearn = function(self, t) 
-		self.combat_physresist = self.combat_physresist - 1
-		self.combat_spellresist = self.combat_spellresist - 1
-		self.combat_mentalresist = self.combat_mentalresist - 1
+	passives = function(self, t, p)
+		self:talentTemporaryValue(p, "combat_physspeed", t.getPassiveSpeed(self, t))
+		self:talentTemporaryValue(p, "combat_mindspeed", t.getPassiveSpeed(self, t))
 	end,
 	action = function(self, t)
 
@@ -59,13 +54,13 @@ newTalent{
 			elseif elem == "cold" then
 				self:attackTarget(target, DamageType.ICE, t.getWeaponDamage(self, t), true)
 				local tg = {type="ball", range=1, selffire=false, radius=self:getTalentRadius(t), talent=t}
-				local grids = self:project(tg, x, y, DamageType.ICE, self:mindCrit(t.getBurstDamage(self, t)))
+				local grids = self:project(tg, x, y, DamageType.ICE_SLOW, self:mindCrit(t.getBurstDamage(self, t)))
 				game.level.map:particleEmitter(x, y, tg.radius, "ball_ice", {radius=tg.radius, grids=grids, tx=x, ty=y, max_alpha=80})
 				game:playSoundNear(self, "talents/flame")
 			elseif elem == "fire" then
 				self:attackTarget(target, DamageType.FIREBURN, t.getWeaponDamage(self, t), true)
 				local tg = {type="ball", range=1, selffire=false, radius=self:getTalentRadius(t), talent=t}
-				local grids = self:project(tg, x, y, DamageType.FIREBURN, self:mindCrit(t.getBurstDamage(self, t)))
+				local grids = self:project(tg, x, y, DamageType.FIRE_STUN, self:mindCrit(t.getBurstDamage(self, t)))
 				game.level.map:particleEmitter(x, y, tg.radius, "ball_fire", {radius=tg.radius, grids=grids, tx=x, ty=y, max_alpha=80})
 				game:playSoundNear(self, "talents/flame")
 			elseif elem == "lightning" then
@@ -86,10 +81,11 @@ newTalent{
 	info = function(self, t)
 		local burstdamage = t.getBurstDamage(self, t)
 		local radius = self:getTalentRadius(t)
+		local speed = t.getPassiveSpeed(self, t)
 		return ([[Unleash raw, chaotic elemental damage upon your enemy.
-		You strike your enemy for %d%% weapon damage in one of blinding sand, disarming acid, freezing ice, stunning lightning or burning flames, with equal odds.
+		You strike your enemy for %d%% weapon damage in one of blinding sand, disarming acid, freezing and slowing ice, dazing lightning or stunning flames, with equal odds.
 		Additionally, you will cause a burst that deals %0.2f of that damage to enemies in radius %d, regardless of if you hit with the blow.
-		Each point in Prismatic Slash increase your Physical, Spell and Mind Saves by 1.]]):format(100 * self:combatTalentWeaponDamage(t, 1.2, 2.0), burstdamage, radius)
+		Levels in Prismatic Slash increase your Physical and Mental attack speeds by %d%%.]]):format(100 * self:combatTalentWeaponDamage(t, 1.2, 2.0), burstdamage, radius, 100*speed)
 	end,
 }
 
@@ -105,12 +101,17 @@ newTalent{
 	tactical = { ATTACKAREA = { poison = 2 } },
 	range = 0,
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
-	direct_hit = true,
 	requires_target = true,
-	getDamage = function(self, t) return self:combatTalentStatDamage(t, "str", 60, 650) end,
-	getEffect = function(self, t) return self:combatTalentLimit(t, 100, 18, 50) end, -- Limit < 100%
-	on_learn = function(self, t) self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) + 2 end,
-	on_unlearn = function(self, t) self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) - 2 end,
+	getDamage = function(self, t) return self:combatTalentStatDamage(t, "str", 60, 750) end,
+	getEffect = function(self, t) return math.ceil(self:combatTalentLimit(t, 50, 10, 20)) end,
+	on_learn = function(self, t) 
+		self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) + 3 
+		self.inc_damage[DamageType.NATURE] = (self.inc_damage[DamageType.NATURE] or 0) + 4
+		end,
+	on_unlearn = function(self, t) 
+		self.resists[DamageType.NATURE] = (self.resists[DamageType.NATURE] or 0) - 3 
+		self.inc_damage[DamageType.NATURE] = (self.inc_damage[DamageType.NATURE] or 0) - 4
+		end,
 	target = function(self, t)
 		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
 	end,
@@ -118,7 +119,14 @@ newTalent{
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.INSIDIOUS_POISON, {dam=self:mindCrit(t.getDamage(self,t)), dur=6, heal_factor=t.getEffect(self,t)})
+		local dam = self:mindCrit(t.getDamage(self, t))
+		self:project(tg, x, y, function(px, py)
+			local target = game.level.map(px, py, Map.ACTOR)
+			if target and target:canBe("poison") then
+				target:setEffect(self.EFF_CRIPPLING_POISON, 6, {src=self, power=dam/6, fail=math.ceil(self:combatTalentLimit(t, 100, 10, 20))})
+			end
+		end)
+
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_slime", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		game:playSoundNear(self, "talents/breath")
 		
@@ -130,10 +138,10 @@ newTalent{
 	end,
 	info = function(self, t)
 		local effect = t.getEffect(self, t)
-		return ([[You breathe insidious poison in a frontal cone of radius %d. Any target caught in the area will take %0.2f nature damage each turn for 6 turns.
-		The poison also reduces the healing of enemies poisoned by %d%% while it is in effect.
+		return ([[You breathe crippling poison in a frontal cone of radius %d. Any target caught in the area will take %0.2f nature damage each turn for 6 turns.
+		The poison also gives enemies a %d%% chance to fail actions more complicated than basic attacks and movement, while it is in effect.
 		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
-		Each point in Venomous Breath also increases your nature resistance by 2%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.NATURE, t.getDamage(self,t)/6), effect)
+		Each point in Venomous Breath also increases your nature resistance by 3%%, and your nature damage by 4%%.]] ):format(self:getTalentRadius(t), damDesc(self, DamageType.NATURE, t.getDamage(self,t)/6), effect)
 	end,
 }
 
@@ -145,6 +153,7 @@ newTalent{
 	mode = "passive",
 	resistKnockback = function(self, t) return self:combatTalentLimit(t, 1, .17, .5) end, -- Limit < 100%
 	resistBlindStun = function(self, t) return self:combatTalentLimit(t, 1, .07, .25) end, -- Limit < 100%
+	CDreduce = function(self, t) return math.floor(self:combatTalentLimit(t, 8, 1, 6)) end, -- Limit < 8
 	on_learn = function(self, t)
 		self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] + 2
 	end,
@@ -152,14 +161,17 @@ newTalent{
 		self.inc_stats[self.STAT_CUN] = self.inc_stats[self.STAT_CUN] - 2
 	end,
 	passives = function(self, t, p)
+		local cdr = t.CDreduce(self, t)
 		self:talentTemporaryValue(p, "knockback_immune", t.resistKnockback(self, t))
 		self:talentTemporaryValue(p, "stun_immune", t.resistBlindStun(self, t))
 		self:talentTemporaryValue(p, "blind_immune", t.resistBlindStun(self, t))
+		self:talentTemporaryValue(p, "talent_cd_reduction",
+{[Talents.T_VENOMOUS_BREATH]=cdr, [Talents.T_ICE_BREATH]=cdr, [Talents.T_FIRE_BREATH]=cdr, [Talents.T_LIGHTNING_BREATH]=cdr, [Talents.T_CORROSIVE_BREATH]=cdr, [Talents.T_SAND_BREATH]=cdr})
 	end,
 	info = function(self, t)
 		return ([[You have the mental prowess of a Wyrm.
-		Your Cunning is increased by %d.
-		You gain %d%% knockback resistance, and your blindness and stun resistances are increased by %d%%.]]):format(2*self:getTalentLevelRaw(t), 100*t.resistKnockback(self, t), 100*t.resistBlindStun(self, t))
+		Your Cunning is increased by %d, and your breath attack cooldowns are reduced by %d.
+		You gain %d%% knockback resistance, and your blindness and stun resistances are increased by %d%%.]]):format(2*self:getTalentLevelRaw(t), t.CDreduce(self, t), 100*t.resistKnockback(self, t), 100*t.resistBlindStun(self, t))
 	end,
 }
 
diff --git a/game/modules/tome/data/talents/gifts/sand-drake.lua b/game/modules/tome/data/talents/gifts/sand-drake.lua
index b1b3a6c61b732a233b4648de2a6dfb40e9059c79..43ccd4120e3a195b1b7ab5e940695a062ca32094 100644
--- a/game/modules/tome/data/talents/gifts/sand-drake.lua
+++ b/game/modules/tome/data/talents/gifts/sand-drake.lua
@@ -23,24 +23,29 @@ newTalent{
 	require = gifts_req1,
 	points = 5,
 	equilibrium = 4,
-	cooldown = 10,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 4, 10, 7)) end,
 	range = 1,
 	no_message = true,
-	tactical = { ATTACK = { NATURE = 0.5 }, EQUILIBRIUM = 0.5},
+	tactical = { ATTACK = { weapon = 1 }, EQUILIBRIUM = 0.5},
 	requires_target = true,
 	no_npc_use = true,
 	maxSwallow = function(self, t, target) return -- Limit < 50%
 		self:combatLimit(self:getTalentLevel(t)*(self.size_category or 3)/(target.size_category or 3), 50, 13, 1, 25, 5)
 	end,
+	getPassiveCrit = function(self, t) return self:combatTalentScale(t, 2, 10, 0.5) end,
 	on_learn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) + 0.5 end,
 	on_unlearn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) - 0.5 end,
+	passives = function(self, t, p)
+		self:talentTemporaryValue(p, "combat_physcrit", t.getPassiveCrit(self, t))
+		self:talentTemporaryValue(p, "combat_mindcrit", t.getPassiveCrit(self, t))
+	end,
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t)}
 		local x, y, target = self:getTarget(tg)
 		if not x or not y or not target then return nil end
 		if core.fov.distance(self.x, self.y, x, y) > 1 then return nil end
 		self:logCombat(target, "#Source# tries to swallow #Target#!")
-		local hit = self:attackTarget(target, DamageType.NATURE, self:combatTalentWeaponDamage(t, 1, 1.5), true)
+		local hit = self:attackTarget(target, DamageType.NATURE, self:combatTalentWeaponDamage(t, 1.6, 2.5), true)
 		if not hit then return true end
 
 		if (target.life * 100 / target.max_life > t.maxSwallow(self, t, target)) and not target.dead then
@@ -64,11 +69,12 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Attack the target for %d%% nature weapon damage.
+		return ([[Attack the target for %d%% Nature weapon damage.
 		If the attack brings your target below %d%% life or kills it, you can try to swallow it, killing it automatically and regaining life and equilibrium depending on its level.
 		The chance to swallow depends on your talent level and the relative size of the target.
+		Levels in Swallow additionally raises your Physical and Mental critical rate by %d%%, passively.
 		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):
-		format(100 * self:combatTalentWeaponDamage(t, 1, 1.5), t.maxSwallow(self, t, self))
+		format(100 * self:combatTalentWeaponDamage(t, 1.6, 2.5), t.maxSwallow(self, t, self), t.getPassiveCrit(self, t))
 	end,
 }
 
@@ -80,30 +86,32 @@ newTalent{
 	random_ego = "attack",
 	message = "@Source@ shakes the ground!",
 	equilibrium = 4,
-	cooldown = 30,
+	cooldown = 20,
 	tactical = { ATTACKAREA = { PHYSICAL = 2 }, DISABLE = { knockback = 2 } },
-	range = 10,
+	range = 1,
 	on_learn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) + 0.5 end,
 	on_unlearn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) - 0.5 end,
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 4.5)) end,
 	no_npc_use = true,
-	getDamage = function(self, t)
-		return self:combatDamage() * 0.8
-	end,
+	getDamage = function(self, t) return self:combatTalentWeaponDamage(t, 1.3, 2.1) end,
 	action = function(self, t)
 		local tg = {type="ball", range=0, selffire=false, radius=self:getTalentRadius(t), talent=t, no_restrict=true}
-		self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=self:mindCrit(t.getDamage(self, t)), dist=4})
+		self:project(tg, self.x, self.y, function(px, py, tg, self)
+			local target = game.level.map(px, py, Map.ACTOR)
+			if target and target ~= self then
+				local hit = self:attackTarget(target, DamageType.PHYSKNOCKBACK, self:combatTalentWeaponDamage(t, 1.3, 2.1), true)
+			end
+		end)
 		self:doQuake(tg, self.x, self.y)
 		return true
 	end,
 	info = function(self, t)
 		local radius = self:getTalentRadius(t)
 		local dam = t.getDamage(self, t)
-		return ([[You slam your foot onto the ground, shaking the area around you in a radius of %d.
-		Creatures caught by the quake will be damaged for %d and knocked back up to 4 tiles away.
-		The terrain will also be moved around within the quake's radius.
-		The damage will increase with your Strength.
-		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):format(radius, dam)
+		return ([[You slam the ground, shaking the area around you in a radius of %d.
+		Creatures caught by the quake will be damaged for %d%% weapon damage, and knocked back up to 3 tiles away.
+		The terrain will also be moved around within the radius, and the user will be shifted to a random square within the radius.
+		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):format(radius, dam * 100)
 	end,
 }
 
@@ -112,20 +120,24 @@ newTalent{
 	type = {"wild-gift/sand-drake", 3},
 	require = gifts_req3,
 	points = 5,
-	equilibrium = 50,
-	cooldown = 30,
+	equilibrium = 15,
+	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 10, 40, 15)) end,
 	range = 10,
+	no_energy = function(self, t) if self:getTalentLevel(t) >= 5 then return true else return false end end,
 	tactical = { CLOSEIN = 0.5, ESCAPE = 0.5 },
-	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 8, 20, 0.5, 0, 2)) end,
+	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7, 0.5, 0, 2)) end,
+	getPenetration = function(self, t) return 10 + self:combatTalentMindDamage(t, 15, 30) end,
 	on_learn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) + 0.5 end,
 	on_unlearn = function(self, t) self.resists[DamageType.PHYSICAL] = (self.resists[DamageType.PHYSICAL] or 0) - 0.5 end,
 	action = function(self, t)
-		self:setEffect(self.EFF_BURROW, t.getDuration(self, t), {})
+		self:setEffect(self.EFF_BURROW, t.getDuration(self, t), {power=t.getPenetration(self, t)})
 		return true
 	end,
 	info = function(self, t)
-		return ([[Allows you to burrow into walls for %d turns.
-		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):format(t.getDuration(self, t))
+		return ([[Allows you to burrow into earthen walls for %d turns.
+		Your powerful digging abilities also allow you to exploit and smash through enemy defensive weaknesses; You ignore %d of target armor and %d%% of enemy physical damage resistance while this is in effect.
+		At Talent Level 5, this talent can be used instantly, and the cooldown will reduce with levels.
+		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):format(t.getDuration(self, t), t.getPenetration(self, t), t.getPenetration(self, t) / 2)
 	end,
 }
 
@@ -149,9 +161,9 @@ newTalent{
 		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
 	end,
 	getDamage = function(self, t)
-		return self:combatTalentStatDamage(t, "str", 30, 400)
+		return self:combatTalentStatDamage(t, "str", 30, 480)
 	end,
-	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end,
+	getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 3, 4)) end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
@@ -169,7 +181,7 @@ newTalent{
 	info = function(self, t)
 		local damage = t.getDamage(self, t)
 		local duration = t.getDuration(self, t)
-		return ([[You breathe sand in a frontal cone of radius %d. Any target caught in the area will take %0.2f physical damage, and be blinded for %d turns.
+		return ([[You breathe sand in a frontal cone of radius %d. Any target caught in the area will take %0.2f physical damage, and will be blinded for %d turns.
 		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
 		Each point in sand drake talents also increases your physical resistance by 0.5%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.PHYSICAL, damage), duration)
 	end,
diff --git a/game/modules/tome/data/talents/gifts/storm-drake.lua b/game/modules/tome/data/talents/gifts/storm-drake.lua
index e3b58b2613057597b8b69b6c3388908b6c6fb252..e00da623cbfd79f2a718051c1369d3efb82f959c 100644
--- a/game/modules/tome/data/talents/gifts/storm-drake.lua
+++ b/game/modules/tome/data/talents/gifts/storm-drake.lua
@@ -25,15 +25,19 @@ newTalent{
 	require = gifts_req1,
 	points = 5,
 	equilibrium = 10,
-	cooldown = 26,
+	cooldown = 25,
 	range = 10,
 	tactical = { CLOSEIN = 2, ESCAPE = 2 },
 	requires_target = true,
 	no_energy = true,
+	getPassiveSpeed = function(self, t) return self:combatTalentScale(t, 0.08, 0.4, 0.7) end,
 	getSpeed = function(self, t) return self:combatTalentScale(t, 470, 750, 0.75) end,
-	getDuration = function(self, t) return math.ceil(self:combatTalentScale(t, 1.1, 2.6)) end,
+	getDuration = function(self, t) return math.ceil(self:combatTalentScale(t, 1.1, 3.1)) end,
 	on_learn = function(self, t) self.resists[DamageType.LIGHTNING] = (self.resists[DamageType.LIGHTNING] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.LIGHTNING] = (self.resists[DamageType.LIGHTNING] or 0) - 1 end,
+	passives = function(self, t, p)
+		self:talentTemporaryValue(p, "movement_speed", t.getPassiveSpeed(self, t))
+	end,
 	on_pre_use = function(self, t) return not self:attr("never_move") end,
 	action = function(self, t)
 		self:setEffect(self.EFF_LIGHTNING_SPEED, self:mindCrit(t.getDuration(self, t)), {power=t.getSpeed(self, t)})
@@ -44,7 +48,8 @@ newTalent{
 		Also provides 30%% physical damage resistance and 100%% lightning resistance.
 		Any actions other than moving will stop this effect.
 		Note: since you will be moving very fast, game turns will pass very slowly.
-		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(t.getSpeed(self, t), t.getDuration(self, t))
+		Levels in Lightning Speed additionally raises your Movement Speed by %d%%, passively.
+		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(t.getSpeed(self, t), t.getDuration(self, t), t.getPassiveSpeed(self, t)*100)
 	end,
 }
 
@@ -56,7 +61,7 @@ newTalent{
 	equilibrium = 20,
 	cooldown = 20,
 	range = 0,
-	radius = 1,
+	radius = function(self, t) return math.floor(self:combatTalentScale(t, 1, 6)) end,
 	tactical = { ATTACKAREA = { instakill = 5 } },
 	requires_target = true,
 	on_learn = function(self, t) self.resists[DamageType.LIGHTNING] = (self.resists[DamageType.LIGHTNING] or 0) + 1 end,
@@ -67,8 +72,12 @@ newTalent{
 	getPercent = function(self, t)
 		return self:combatLimit(self:combatTalentMindDamage(t, 10, 45), 90, 0, 0, 31, 31) -- Limit to <90%
 	end,
+	getDamage = function(self, t)
+		return self:combatTalentMindDamage(t, 20, 160)
+	end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
+		local litdam = self:mindCrit(t.getDamage(self, t))
 		self:project(tg, self.x, self.y, function(px, py)
 			local target = game.level.map(px, py, Map.ACTOR)
 			if not target then return end
@@ -80,7 +89,7 @@ newTalent{
 			game.logSeen(target, "%s is caught in the static field!", target.name:capitalize())
 
 			local perc = t.getPercent(self, t)
-			if target.rank >= 5 then perc = perc / 3
+			if target.rank >= 5 then perc = perc / 2.5
 			elseif target.rank >= 3.5 then perc = perc / 2
 			elseif target.rank >= 3 then perc = perc / 1.5
 			end
@@ -88,6 +97,7 @@ newTalent{
 			local dam = target.life * perc / 100
 			if target.life - dam < 0 then dam = target.life end
 			target:takeHit(dam, self)
+			self:project({type="hit", talent=t},target.x,target.y,DamageType.LIGHTNING,litdam)
 
 			game:delayedLogDamage(self, target, dam, ("#PURPLE#%d STATIC#LAST#"):format(math.ceil(dam)))
 		end, nil, {type="lightning_explosion"})
@@ -96,9 +106,11 @@ newTalent{
 	end,
 	info = function(self, t)
 		local percent = t.getPercent(self, t)
-		return ([[Generate an electrical field around you in a radius of 1. Any creature caught inside will lose up to %0.1f%% of its current life (effect decreased for higher creature ranks).
-		This effect cannot kill creatures.  Life loss will increase with your Mindpower.
-		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(percent)
+		local litdam = t.getDamage(self, t)
+		return ([[Generate an electrical field around you in a radius of %d. Any creature caught inside will lose up to %0.1f%% of its current life (%0.1f%% if the target is Elite or Rare, %0.1f%% if the target is a Unique or Boss, and %0.1f%% if they are an Elite Boss.). This life drain is irresistable, but can be saved against with physical save.
+		Additionally, it will deal %0.2f lightning damage afterwards, regardless of target rank.
+		Current life loss and lightning damage will increase with your Mindpower, and the lightning damage element can critically hit with mental critical chances.
+		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(self:getTalentRadius(t), percent, percent/1.5, percent/2, percent/2.5, damDesc(self, DamageType.LIGHTNING, litdam))
 	end,
 }
 
@@ -109,14 +121,16 @@ newTalent{
 	points = 5,
 	equilibrium = 14,
 	cooldown = 15,
-	proj_speed = 2, -- This is purely indicative
+	proj_speed = 4, -- This is purely indicative
 	tactical = { ATTACK = { LIGHTNING = 2 }, DISABLE = { stun = 2 } },
-	range = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end,
+	range = function(self, t) return math.floor(self:combatTalentScale(t, 3, 6)) end,
 	requires_target = true,
 	on_learn = function(self, t) self.resists[DamageType.LIGHTNING] = (self.resists[DamageType.LIGHTNING] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.LIGHTNING] = (self.resists[DamageType.LIGHTNING] or 0) - 1 end,
+	getRadius = function(self, t) return math.floor(self:combatTalentScale(t, 2, 4, 0.5, 0, 0, true)) end,
+	getStunDuration = function(self, t) return self:combatTalentScale(t, 3, 6, 0.5, 0, 0, true) end,
 	action = function(self, t)
-		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
+		local tg = {type="hit", range=self:getTalentRange(t), selffire=false, talent=t}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
 		local _ _, x, y = self:canProject(tg, x, y)
@@ -125,11 +139,13 @@ newTalent{
 
 		local movedam = self:mindCrit(self:combatTalentMindDamage(t, 10, 110))
 		local dam = self:mindCrit(self:combatTalentMindDamage(t, 15, 190))
+		local rad = t.getRadius(self, t)
+		local dur = t.getStunDuration(self, t)
 
 		local proj = require("mod.class.Projectile"):makeHoming(
 			self,
 			{particle="bolt_lightning", trail="lightningtrail"},
-			{speed=2, name="Tornado", dam=dam, movedam=movedam},
+			{speed=4, name="Tornado", dam=dam, movedam=movedam},
 			target,
 			self:getTalentRange(t),
 			function(self, src)
@@ -138,10 +154,10 @@ newTalent{
 			end,
 			function(self, src, target)
 				local DT = require("engine.DamageType")
-				src:project({type="ball", radius=1, x=self.x, y=self.y}, self.x, self.y, DT.LIGHTNING, self.def.dam)
-				src:project({type="ball", radius=1, x=self.x, y=self.y}, self.x, self.y, DT.MINDKNOCKBACK, self.def.dam)
+				src:project({type="ball", radius=rad, selffire=false, x=self.x, y=self.y}, self.x, self.y, DT.LIGHTNING, self.def.dam)
+				src:project({type="ball", radius=rad, selffire=false, x=self.x, y=self.y}, self.x, self.y, DT.MINDKNOCKBACK, self.def.dam)
 				if target:canBe("stun") then
-					target:setEffect(target.EFF_STUNNED, 4, {apply_power=src:combatMindpower()})
+					target:setEffect(target.EFF_STUNNED, dur, {apply_power=src:combatMindpower()})
 				else
 					game.logSeen(target, "%s resists the tornado!", target.name:capitalize())
 				end
@@ -164,15 +180,19 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
+		local rad = t.getRadius(self, t)
+		local duration = t.getStunDuration(self, t)
 		return ([[Summons a tornado that moves slowly toward its target, following it if it changes position.
 		Any foe caught in its path takes %0.2f lightning damage.
-		When it reaches its target, it explodes in a radius of 1 for %0.2f lightning damage and %0.2f physical damage. All affected creatures will be knocked back, and the targeted creature will be stunned for 4 turns.
+		When it reaches its target, it explodes in a radius of %d for %0.2f lightning damage and %0.2f physical damage. All affected creatures will be knocked back, and the targeted creature will be stunned for %d turns. The blast will ignore the talent user.
 		The tornado will last for %d turns, or until it reaches its target.
-		Damage will increase with your Mindpower.
+		Damage will increase with your Mindpower, and the stun chance is based on your Mindpower vs target Physical Save.
 		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(
 			damDesc(self, DamageType.LIGHTNING, self:combatTalentMindDamage(t, 10, 110)),
+			rad,
 			damDesc(self, DamageType.LIGHTNING, self:combatTalentMindDamage(t, 15, 190)),
 			damDesc(self, DamageType.PHYSICAL, self:combatTalentMindDamage(t, 15, 190)),
+			duration,
 			self:getTalentRange(t)
 		)
 	end,
@@ -198,14 +218,17 @@ newTalent{
 		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
 	end,
 	getDamage = function(self, t)
-		return self:combatTalentStatDamage(t, "str", 30, 500)
+		return self:combatTalentStatDamage(t, "str", 30, 670)
+	end,
+	getDaze = function(self, t) 
+		return 20+self:combatTalentMindDamage(t, 10, 30) 
 	end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
 		local dam = self:mindCrit(t.getDamage(self, t))
-		self:project(tg, x, y, DamageType.LIGHTNING_DAZE, {power_check=self:combatMindpower(), dam=rng.avg(dam / 3, dam, 3)})
+		self:project(tg, x, y, DamageType.LIGHTNING_DAZE, {daze=t.getDaze(self, t), power_check=self:combatMindpower(), dam=rng.avg(dam / 3, dam, 3)})
 
 		if core.shader.active() then game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_lightning", {radius=tg.radius, tx=x-self.x, ty=y-self.y}, {type="lightning"})
 		else game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_lightning", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
@@ -221,12 +244,14 @@ newTalent{
 	end,
 	info = function(self, t)
 		local damage = t.getDamage(self, t)
-		return ([[You breathe lightning in a frontal cone of radius %d. Any target caught in the area will take %0.2f to %0.2f lightning damage, and can be dazed for 3 turns.
-		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
+		local daze = t.getDaze(self, t)
+		return ([[You breathe lightning in a frontal cone of radius %d. Any target caught in the area will take %0.2f to %0.2f lightning damage, and have a %d%% chance to be dazed for 3 turns.
+		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate. The Daze chance is based on your Mindpower.
 		Each point in storm drake talents also increases your lightning resistance by 1%%.]]):format(
 			self:getTalentRadius(t),
 			damDesc(self, DamageType.LIGHTNING, damage / 3),
-			damDesc(self, DamageType.LIGHTNING, damage)
+			damDesc(self, DamageType.LIGHTNING, damage),
+			daze
 		)
 	end,
 }
diff --git a/game/modules/tome/data/talents/gifts/venom-drake.lua b/game/modules/tome/data/talents/gifts/venom-drake.lua
index 9ab9c7da345c06aebfab5d3a0dfc98599708c7b3..cd5ad1212f80c92aa2417831db4aa4906b855a4d 100644
--- a/game/modules/tome/data/talents/gifts/venom-drake.lua
+++ b/game/modules/tome/data/talents/gifts/venom-drake.lua
@@ -28,8 +28,14 @@ newTalent{
 	cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 3, 6.9, 5.5)) end, -- Limit >=3
 	tactical = { ATTACK = { ACID = 2 } },
 	range = function(self, t) return math.floor(self:combatTalentScale(t, 5.5, 7.5)) end,
-	on_learn = function(self, t) self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) + 1 end,
-	on_unlearn = function(self, t) self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) - 1 end,
+	on_learn = function(self, t) 
+		self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) + 1 
+		self.combat_mindpower = self.combat_mindpower + 4
+	end,
+	on_unlearn = function(self, t) 
+		self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) - 1 
+		self.combat_mindpower = self.combat_mindpower - 4
+	end,
 	direct_hit = function(self, t) if self:getTalentLevel(t) >= 5 then return true else return false end end,
 	requires_target = true,
 	target = function(self, t)
@@ -58,6 +64,7 @@ newTalent{
 		The target will take %0.2f Mindpower-based acid damage.
 		Enemies struck have a 25%% chance to be Disarmed for three turns, as their weapon is rendered useless by an acid coating.
 		At Talent Level 5, this becomes a piercing line of acid.
+		Every level in Acidic Spray additionally raises your Mindpower by 4, passively.
 		Each point in acid drake talents also increases your acid resistance by 1%%.]]):format(damDesc(self, DamageType.ACID, damage))
 	end,
 }
@@ -68,15 +75,15 @@ newTalent{
 	require = gifts_req2,
 	points = 5,
 	random_ego = "attack",
-	equilibrium = 15,
-	cooldown = 25,
+	equilibrium = 10,
+	cooldown = 15,
 	tactical = { ATTACKAREA = { ACID = 2 } },
 	range = 0,
 	on_learn = function(self, t) self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) + 1 end,
 	on_unlearn = function(self, t) self.resists[DamageType.ACID] = (self.resists[DamageType.ACID] or 0) - 1 end,
 	radius = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 4.5)) end,
 	requires_target = true,
-	getDamage = function(self, t) return self:combatTalentMindDamage(t, 10, 70) end,
+	getDamage = function(self, t) return self:combatTalentMindDamage(t, 15, 70) end,
 	getDuration = function(self, t) return math.floor(self:combatScale(self:combatMindpower(0.04) + self:getTalentLevel(t)/2, 6, 0, 7.67, 5.67)) end,
 	getCorrodeDur = function(self, t) return math.floor(self:combatTalentScale(t, 2.3, 3.8)) end,
 	getAtk = function(self, t) return self:combatTalentMindDamage(t, 2, 20) end,
@@ -175,11 +182,14 @@ newTalent{
 	target = function(self, t)
 		return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t}
 	end,
+	getDisarm = function(self, t) 
+		return 20+self:combatTalentMindDamage(t, 10, 30) 
+	end,
 	action = function(self, t)
 		local tg = self:getTalentTarget(t)
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
-		self:project(tg, x, y, DamageType.ACID_DISARM, self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 420)))
+		self:project(tg, x, y, DamageType.ACID_DISARM, {dam=self:mindCrit(self:combatTalentStatDamage(t, "str", 30, 520)), chance=t.getDisarm(self, t),})
 		game.level.map:particleEmitter(self.x, self.y, tg.radius, "breath_acid", {radius=tg.radius, tx=x-self.x, ty=y-self.y})
 		game:playSoundNear(self, "talents/breath")
 		
@@ -190,9 +200,10 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
+		local disarm = t.getDisarm(self, t)
 		return ([[You breathe acid in a frontal cone of radius %d. Any target caught in the area will take %0.2f acid damage. 
-		Enemies caught in the acid have a 25%% chance of their weapons becoming useless for three turns.
-		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate.
-		Each point in acid drake talents also increases your acid resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.ACID, self:combatTalentStatDamage(t, "str", 30, 420)))
+		Enemies caught in the acid have a %d%% chance of their weapons becoming useless for three turns.
+		The damage will increase with your Strength, and the critical chance is based on your Mental crit rate. The Disarm chance is based on your Mindpower.
+		Each point in acid drake talents also increases your acid resistance by 1%%.]]):format(self:getTalentRadius(t), damDesc(self, DamageType.ACID, self:combatTalentStatDamage(t, "str", 30, 520)), disarm)
 	end,
 }
\ No newline at end of file
diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua
index 653465d8c997963817ee0ec22543044d898e534a..888d421eb7f82dd3282aa48ae68bbdcba1d506dc 100644
--- a/game/modules/tome/data/talents/spells/golemancy.lua
+++ b/game/modules/tome/data/talents/spells/golemancy.lua
@@ -42,7 +42,7 @@ local function makeGolem(self)
 
 		combat = { dam=10, atk=10, apr=0, dammod={str=1} },
 
-		body = { INVEN = 1000, QS_MAINHAND = 1, QS_OFFHAND = 1, MAINHAND = 1, OFFHAND = 1, BODY=1, GEM=2 },
+		body = { INVEN = 1000, QS_MAINHAND = 1, QS_OFFHAND = 1, MAINHAND = 1, OFFHAND = 1, BODY=1, GEM={max = 2, stack_limit = 1} },
 		canWearObjectCustom = function(self, o)
 			if o.type ~= "gem" then return end
 			if not self.summoner then return "Golem has no master" end
diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua
index 8b0ba395b50f46cd614738919c635d0206662a9e..62518ff3272f245b018aa62c8f4ec8afb5d8c4da 100644
--- a/game/modules/tome/data/timed_effects/physical.lua
+++ b/game/modules/tome/data/timed_effects/physical.lua
@@ -1025,7 +1025,7 @@ newEffect{
 newEffect{
 	name = "BURROW", image = "talents/burrow.png",
 	desc = "Burrow",
-	long_desc = function(self, eff) return "The target is able to burrow into walls." end,
+	long_desc = function(self, eff) return ("The target is able to burrow into walls, and additionally has %d more APR and %d%% more physical resistance penetration."):format(eff.power, eff.power / 2) end,
 	type = "physical",
 	subtype = { earth=true },
 	status = "beneficial",
@@ -1033,6 +1033,8 @@ newEffect{
 	activate = function(self, eff)
 		eff.pass = self:addTemporaryValue("can_pass", {pass_wall=1})
 		eff.dig = self:addTemporaryValue("move_project", {[DamageType.DIG]=1})
+		self:effectTemporaryValue(eff, "combat_apr", eff.power)
+		self:effectTemporaryValue(eff, "resists_pen", {[DamageType.PHYSICAL]=eff.power / 2 })
 	end,
 	deactivate = function(self, eff)
 		self:removeTemporaryValue("can_pass", eff.pass)
diff --git a/game/modules/tome/dialogs/MapMenu.lua b/game/modules/tome/dialogs/MapMenu.lua
index 8e3404e6a134d52be09bb317f832725b894646d3..b7cb125d40d99a38a6dcc36880af7d744ebdb5d5 100644
--- a/game/modules/tome/dialogs/MapMenu.lua
+++ b/game/modules/tome/dialogs/MapMenu.lua
@@ -99,14 +99,15 @@ function _M:use(item)
 		d.changed = true
 	elseif act == "debug-inventory" then
 		local d
+		local actor = item.actor
 		d = item.actor:showEquipInven(item.actor.name..": Inventory", nil, function(o, inven, item, button, event)
 			if not o then return end
-			local ud = require("mod.dialogs.UseItemDialog").new(event == "button", item.actor, o, item, inven, function(_, _, _, stop)
+			local ud = require("mod.dialogs.UseItemDialog").new(event == "button", actor, o, item, inven, function(_, _, _, stop)
 				d:generate()
 				d:generateList()
-				if stop then self:unregisterDialog(d) end
+				if stop then game:unregisterDialog(d) end
 			end)
-			self:registerDialog(ud)
+			game:registerDialog(ud)
 		end)
 	end
 end
diff --git a/game/modules/tome/dialogs/PartySendItem.lua b/game/modules/tome/dialogs/PartySendItem.lua
index 5bc08fe2bbafd159cb3a73d18475357c181867b3..74d89c5e7625f1b879b77c29a97703102364a1f4 100644
--- a/game/modules/tome/dialogs/PartySendItem.lua
+++ b/game/modules/tome/dialogs/PartySendItem.lua
@@ -50,15 +50,14 @@ function _M:on_register()
 end
 
 function _M:use(item)
-	if not item then return end
+	if not item or not item.actor:canAddToInven(item.actor.INVEN_INVEN) then return end
 	game:unregisterDialog(self)
-
 	self.source:removeObject(self.inven, self.item, true)
 	self.source:sortInven(self.inven)
 	self.o.__transmo = nil
-	item.actor:addObject(item.actor.INVEN_INVEN, self.o)
-	item.actor:sortInven(item.actor.INVEN_INVEN)
+	item.actor:addObject(item.actor.INVEN_INVEN, self.o, true) -- force full stack transfer
 	game.log("You give %s to %s.", self.o:getName{do_color=true}, item.actor.name)
+	item.actor:sortInven(item.actor.INVEN_INVEN)
 	self.on_end()
 end
 
@@ -67,7 +66,7 @@ function _M:generateList()
 
 	for i, act in ipairs(game.party.m_list) do
 		if not act.no_inventory_access and act ~= game.player then
-			list[#list+1] = {name=act.name, actor=act}
+			list[#list+1] = {name=act.name..(act:canAddToInven(act.INVEN_INVEN) and "" or " #YELLOW#[NO ROOM]#LAST#"), actor=act}
 		end
 	end
 
diff --git a/game/modules/tome/dialogs/ShowEquipInven.lua b/game/modules/tome/dialogs/ShowEquipInven.lua
index 89aeaa24ef0de6b324de5bd004b690276d979340..9e0e57d68760fa30a1ff7618359c705fffad3e31 100644
--- a/game/modules/tome/dialogs/ShowEquipInven.lua
+++ b/game/modules/tome/dialogs/ShowEquipInven.lua
@@ -239,7 +239,7 @@ function _M:use(item, button, event)
 end
 
 function _M:unload()
-	for inven_id = 1, #self.inven_actor.inven_def do if self.inven_actor.inven[inven_id] then for item, o in ipairs(self.inven_actor.inven[inven_id]) do o.__new_pickup = nil end end end
+	for inven_id = 1, #self.inven_actor.inven_def do if self.inven_actor.inven[inven_id] then for item, o in ipairs(self.inven_actor.inven[inven_id]) do o:forAllStack(function(so) so.__new_pickup = nil end) end end end
 end
 
 function _M:updateTitle(title)
diff --git a/game/modules/tome/dialogs/UseItemDialog.lua b/game/modules/tome/dialogs/UseItemDialog.lua
index 2cec8ff29de6a754fa4e532e90773e3a5571defe..6ca4d5a36022ef7a4b25777ccb63e8fa9a256c42 100644
--- a/game/modules/tome/dialogs/UseItemDialog.lua
+++ b/game/modules/tome/dialogs/UseItemDialog.lua
@@ -107,7 +107,7 @@ function _M:use(item)
 		end
 		if #list == 1 then doit(list[1])
 		elseif #list == 0 then
-			self:simplePopup("Attach to item", "You do not have any equiped items that it can be attached to.")
+			self:simplePopup("Attach to item", "You do not have any equipped items that it can be attached to.")
 		else
 			self:listPopup("Attach to item", "Select which item to attach it to:", list, 300, 400, doit)
 		end
diff --git a/game/modules/tome/load.lua b/game/modules/tome/load.lua
index 8dacb8096e62168dc46349c52eba5ab103499b00..ea34f30a8270aeb05fad8ac4a91cc11c31b5e6db 100644
--- a/game/modules/tome/load.lua
+++ b/game/modules/tome/load.lua
@@ -176,7 +176,7 @@ ActorInventory:defineInventory("HANDS", "On hands", true, "Various gloves can be
 ActorInventory:defineInventory("FEET", "On feet", true, "Sandals or boots can be worn on your feet.", nil, {equipdoll_back="ui/equipdoll/boots_inv.png"})
 ActorInventory:defineInventory("TOOL", "Tool", true, "This is your readied tool, always available immediately.", nil, {equipdoll_back="ui/equipdoll/tool_inv.png"})
 ActorInventory:defineInventory("QUIVER", "Quiver", true, "Your readied ammo.", nil, {equipdoll_back="ui/equipdoll/ammo_inv.png"})
-ActorInventory:defineInventory("GEM", "Socketed Gems", true, "Socketed gems.", nil, {equipdoll_back="ui/equipdoll/gem_inv.png"})
+ActorInventory:defineInventory("GEM", "Socketed Gems", true, "Gems worn in/on the body, providing their worn bonuses.", nil, {equipdoll_back="ui/equipdoll/gem_inv.png", stack_limit = 1})
 ActorInventory:defineInventory("QS_MAINHAND", "Second weapon set: In main hand", false, "Weapon Set 2: Most weapons are wielded in the main hand. Press 'x' to switch weapon sets.", true)
 ActorInventory:defineInventory("QS_OFFHAND", "Second weapon set: In off hand", false, "Weapon Set 2: You can use shields or a second weapon in your off-hand, if you have the talents for it. Press 'x' to switch weapon sets.", true)
 ActorInventory:defineInventory("QS_PSIONIC_FOCUS", "Second weapon set: psionic focus", false, "Weapon Set 2: Object held in your telekinetic grasp. It can be a weapon or some other item to provide a benefit to your psionic powers. Press 'x' to switch weapon sets.", true)