public CFibreReg SpawnUnit(CFibre Fibre, int ArgCount)
    {
        if (ArgCount == 6)
        {
            int   ownerId = (int)Fibre.mLocal.mStore[Fibre.mFramePtr + 0].mNumber;
            float posX    = (float)Fibre.mLocal.mStore[Fibre.mFramePtr + 1].mNumber;
            float posY    = (float)Fibre.mLocal.mStore[Fibre.mFramePtr + 2].mNumber;
            int   rot     = (int)Fibre.mLocal.mStore[Fibre.mFramePtr + 3].mNumber;
            int   tier    = (int)Fibre.mLocal.mStore[Fibre.mFramePtr + 4].mNumber;
            int   level   = (int)Fibre.mLocal.mStore[Fibre.mFramePtr + 5].mNumber;

            CResume resume = new CResume();
            resume.Generate(_world, tier, level);
            CUnit entity = _world.SpawnUnit(ownerId, resume, new Vector2(posX, posY), rot);

            return(new CFibreReg(entity.mID));
        }

        throw new CFibreRuntimeException("unit_spawn does not take " + ArgCount + " parameters.", Fibre);
    }