function convertUnitOwner(pUnit, pNewOwner)
print(string.format("convertUnit(%s, %s)", pUnit:GetName(), pNewOwner:GetName()))
local pNewUnit = pNewOwner:InitUnit(pUnit:GetUnitType(), pUnit:GetX(), pUnit:GetY())
pNewUnit:SetOriginalOwner(pUnit:GetOwner());
pNewUnit:SetDamage(pUnit:GetDamage())
pNewUnit:SetExperience(pUnit:GetExperience())
pNewUnit:SetLevel(pUnit:GetLevel())
for unitPromotion in GameInfo.UnitPromotions() do
local iPromotionID = unitPromotion.ID;
if (pUnit:IsHasPromotion(iPromotionID)) then
if (pNewUnit:IsPromotionValid(iPromotionID)) then
pNewUnit:SetHasPromotion(iPromotionID, true)
end
end
end
return pNewUnit
end