local oldHero = keys.caster
local playerID = oldHero:GetPlayerID()
local newHero = nil
local newHeroName = "npc_dota_hero_treant"
local ability = nil
local abilityCount = oldHero:GetAbilityCount()
local gold = oldHero:GetGold() or 0
local experience = PlayerResource:GetTotalEarnedXP(playerID)
if playerID ~= nil and playerID ~= -1 then
items_table = {}
for i = 0, 11 do
local item = oldHero:GetItemInSlot( i )
if item ~= nil then
table.insert(items_table , item)
end
end
for i = 0, abilityCount-1 do
ability = oldHero:GetAbilityByIndex(i)
if ability then
oldHero:RemoveAbility(ability:GetAbilityName())
end
end
newHero = PlayerResource:ReplaceHeroWith(playerID, newHeroName, gold, experience)
newHero:RespawnHero(false, false)
local items = items_table or {}
for _,item in pairs(items) do
newHero:AddItem(item)
end
UTIL_Remove(oldHero)
end