function CloneUnit takes unit target, player owner returns unit
local real x = GetUnitX(target)
local real y = GetUnitY(target)
local unit u = CreateUnit(owner, GetUnitTypeId(target), x, y, GetUnitFacing(target))
local integer item1 = GetItemTypeId(UnitItemInSlot(target, 0))
local integer item2 = GetItemTypeId(UnitItemInSlot(target, 1))
local integer item3 = GetItemTypeId(UnitItemInSlot(target, 2))
local integer item4 = GetItemTypeId(UnitItemInSlot(target, 3))
local integer item5 = GetItemTypeId(UnitItemInSlot(target, 4))
local integer item6 = GetItemTypeId(UnitItemInSlot(target, 5))
local integer level
if IsUnitType(target, UNIT_TYPE_HERO) then
set level = GetHeroLevel(target)
if level > 1 then
call SetHeroLevel(u, level, false)
endif
endif
call SetWidgetLife(u, GetWidgetLife(target))
call SetUnitState(u, UNIT_STATE_MANA, GetUnitState(target, UNIT_STATE_MANA))
call UnitAddItemById(u, item1)
call UnitAddItemById(u, item2)
call UnitAddItemById(u, item3)
call UnitAddItemById(u, item4)
call UnitAddItemById(u, item5)
call UnitAddItemById(u, item6)
return u
endfunction