--// Local auxiliary functions - - - - - - - - - - - - - - - - - - - - - - - -

--// 1.	rename:					" -> '
--// 2. comment root composition routine 'createCompositionbackground = function()'
--// 5. add auxiliaru routines for managing animations: 
--		auxPlayOutOfCaveAnimation(), 
--		auxGetOutOfCaveAnimation(), 
--		auxCreateOutOfCaveAnimations()

------------------------------------------------------------------------------
--
function auxPlayElevatorInCaveAnimation(compositionName)
    local composition = auxGetElevatorInCaveAnimation(compositionName);
    composition:SetVisible(true);
    composition:Play();
end

------------------------------------------------------------------------------
--
function auxStopElevatorInCaveAnimation(compositionName)
    local composition = auxGetElevatorInCaveAnimation(compositionName);
    composition:SetVisible(true);
    composition:Stop();
end

------------------------------------------------------------------------------
--
function auxHideElevatorInCaveAnimation(compositionName)
    local composition = auxGetElevatorInCaveAnimation(compositionName);
    composition:Stop();
    composition:SetVisible(false);
end

------------------------------------------------------------------------------
--
function auxGetElevatorInCaveAnimation(compositionName)
    assert(elevatorInCaveCompositions ~= nil and compositionName ~= nil);
	assert(elevatorInCaveCompositions[compositionName] ~= nil and 'Composition with specified name not exists !');

    return elevatorInCaveCompositions[compositionName];
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--

function CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
    assert(parent ~= nil and compositionRoutine ~= nil and name ~= nil and z ~= nil and duration ~= nil);

    local element = compositionRoutine();
    element:SetName(name);
    element:SetHotSpot(hotSpotX,hotSpotY);
    element:SetXY(x, y);
    assert(z - parent:GetZ());
    element:SetZ(z - parent:GetZ());
    element:AttachTo(parent);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);
    
    if (isCyclic == true) then
        element:SetDuration(duration);
        element:SetCyclic(true);
	else
		element:SetDestroysOnEnd(false);
    end
	element:Stop();
    element:SetVisible(false);
    element:AssignClippingRect(parent);
	element:SetConsiderParentOpacity(true);

	return element;
end

------------------------------------------------------------------------------
--
function auxCreateElevatorInCaveAnimations(parent)
    assert(parent ~= nil);
    elevatorInCaveCompositions = {};
    local CreateAndRegisterComposition = function (parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
        local element = CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic);
        elevatorInCaveCompositions[element:GetName()] = element;
    end
    
    CreateAndRegisterComposition(parent, createCompositionCyclicCompGroup,  'CyclicCompGroup',0,0,110.0, 512,384, 10, 	true);
    CreateAndRegisterComposition(parent, createCompositionBat_FLY, 			'Bat_FLY',  	  0,0,110.0, 512,384, 8.04, false);
    CreateAndRegisterComposition(parent, createCompositionBats2, 			'Bats2',  		  0,0,110.0, 512,384, 10, 	false);
    CreateAndRegisterComposition(parent, createCompositionBats1, 			'Bats1',  		  0,0,110.0, 512,384, 10, 	false);
    CreateAndRegisterComposition(parent, createCompositionBats3, 			'Bats3',  		  0,0,110.0, 512,384, 10,	false);
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function auxCreateCompositionElement(resourceName)
	local element = CreateCompositionElement(resourceName);
    local texName = string.sub(resourceName, string.len('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/') + 1);

    --// set up spider animation
	if (texName == '[01-10].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 89,123);
		anim:SetFrames(10);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end
	--// set up flying bats animation
	if (texName == '[00000-00005].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 160,100);
		anim:SetFrames(6);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end
	--// set up bats animation
	if (texName == '[00000-00021].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 30,60);
		anim:SetFrames(22);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end
    --// set additive alpha blending mode for light & dust objects without alpha chanel (*.jpg)
    if (texName == 'EF_Dust_02.jpg' or texName == 'Layer_light01.jpg') then
--		element:GetTexture():SetColor('0xBBFFFFFF');
        element:GetTexture():SetBlendMode(0);
    end
	return element;
end

------------------------------------------------------------------------------
--
--createCompositionbackground = function()
--
--    local compositionbackground = CreateCompositionSequence();
--    local compositionDuration = 10;
--    compositionbackground:SetDuration(compositionDuration);
--
--
--    -- Layer Layer_1
--    local element = createCompositionCyclicCompGroup();
--    element:SetName('Layer_1');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_14
--    local element = createCompositionBat_FLY();
--    element:SetName('Layer_14');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(3.24, 8.04000007152557);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_15
--    local element = createCompositionBats2();
--    element:SetName('Layer_15');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_16
--    local element = createCompositionBats1();
--    element:SetName('Layer_16');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_17
--    local element = createCompositionBats3();
--    element:SetName('Layer_17');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_18
--    local element = CreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/background.jpg');
--    element:SetName('Layer_18');
--    compositionbackground:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(compositionbackground);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--    compositionbackground:Play();
--
--    return compositionbackground;
--end

createCompositionBat_FLY = function()

    local compositionBat_FLY = CreateCompositionSequence();
    local compositionDuration = 6;
    compositionBat_FLY:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_1');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 5.92);

    effector:SetKey(_TRACK_X, 0, 515.287567138672);
    effector:SetKey(_TRACK_Y, 0, 50.733154296875);
    effector:SetKey(_TRACK_X, 2.24, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.24, 50.733154296875);
    effector:SetKey(_TRACK_X, 2.32, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.32, 57.983154296875);
    effector:SetKey(_TRACK_X, 2.4, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.4, 65.983154296875);
    effector:SetKey(_TRACK_X, 2.56, 517.287567138672);
    effector:SetKey(_TRACK_Y, 2.56, 78.983154296875);
    effector:SetKey(_TRACK_X, 2.68, 519.037567138672);
    effector:SetKey(_TRACK_Y, 2.68, 89.983154296875);
    effector:SetKey(_TRACK_X, 2.8, 521.537567138672);
    effector:SetKey(_TRACK_Y, 2.8, 99.983154296875);
    effector:SetKey(_TRACK_X, 2.96, 520.037567138672);
    effector:SetKey(_TRACK_Y, 2.96, 106.733154296875);
    effector:SetKey(_TRACK_X, 3.12, 517.537567138672);
    effector:SetKey(_TRACK_Y, 3.12, 125.733154296875);
    effector:SetKey(_TRACK_X, 3.32, 513.037567138672);
    effector:SetKey(_TRACK_Y, 3.32, 147.733154296875);
    effector:SetKey(_TRACK_X, 3.48, 497.537567138672);
    effector:SetKey(_TRACK_Y, 3.48, 184.733154296875);
    effector:SetKey(_TRACK_X, 3.64, 483.913208007813);
    effector:SetKey(_TRACK_Y, 3.64, 224.559585571289);
    effector:SetKey(_TRACK_X, 3.8, 449.615295410156);
    effector:SetKey(_TRACK_Y, 3.8, 253.170974731445);
    effector:SetKey(_TRACK_X, 3.96, 398.247406005859);
    effector:SetKey(_TRACK_Y, 3.96, 252.782379150391);
    effector:SetKey(_TRACK_X, 4.12, 354.115280151367);
    effector:SetKey(_TRACK_Y, 4.12, 224.191696166992);
    effector:SetKey(_TRACK_X, 4.28, 324.330307006836);
    effector:SetKey(_TRACK_Y, 4.28, 192.233154296875);
    effector:SetKey(_TRACK_X, 4.44, 313.636001586914);
    effector:SetKey(_TRACK_Y, 4.44, 160.906723022461);
    effector:SetKey(_TRACK_X, 4.6, 301.117874145508);
    effector:SetKey(_TRACK_Y, 4.6, 117.033676147461);
    effector:SetKey(_TRACK_X, 4.76, 288.68522644043);
    effector:SetKey(_TRACK_Y, 4.76, 54.5803070068359);
    effector:SetKey(_TRACK_X, 4.92, 279.081604003906);
    effector:SetKey(_TRACK_Y, 4.92, -50.7046661376953);
    effector:SetKey(_TRACK_X, 5.08, 276.330307006836);
    effector:SetKey(_TRACK_Y, 5.08, -276.766845703125);
    effector:SetKey(_TRACK_SX, 0, 1.2);
    effector:SetKey(_TRACK_SY, 0, 1.2);
    effector:SetKey(_TRACK_SX, 2.24, 1.2);
    effector:SetKey(_TRACK_SY, 2.24, 1.2);
    effector:SetKey(_TRACK_SX, 5.08, 3.5);
    effector:SetKey(_TRACK_SY, 5.08, 3.5);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 2.24, 3.14159265);
    effector:SetKey(_TRACK_A, 2.4, 2.41830455296295);
    effector:SetKey(_TRACK_A, 2.48, 0.63716297290424);
    effector:SetKey(_TRACK_A, 2.72, 0.48052435171754);
    effector:SetKey(_TRACK_A, 2.96, 0.19769440059398);
    effector:SetKey(_TRACK_A, 3.16, 0.03628044743908);
    effector:SetKey(_TRACK_A, 3.36, -0.07351213636);
    effector:SetKey(_TRACK_A, 4.64, -0.24784036858684);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 2.24, 0);
    effector:SetKey(_TRACK_O, 2.32, 1);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_2');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 5.92);

    effector:SetKey(_TRACK_X, 0, 515.287567138672);
    effector:SetKey(_TRACK_Y, 0, 50.733154296875);
    effector:SetKey(_TRACK_X, 2.44, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.44, 50.733154296875);
    effector:SetKey(_TRACK_X, 2.52, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.52, 57.983154296875);
    effector:SetKey(_TRACK_X, 2.6, 515.287567138672);
    effector:SetKey(_TRACK_Y, 2.6, 65.983154296875);
    effector:SetKey(_TRACK_X, 2.76, 517.287567138672);
    effector:SetKey(_TRACK_Y, 2.76, 78.983154296875);
    effector:SetKey(_TRACK_X, 2.88, 521.037567138672);
    effector:SetKey(_TRACK_Y, 2.88, 89.983154296875);
    effector:SetKey(_TRACK_X, 3, 525.037567138672);
    effector:SetKey(_TRACK_Y, 3, 96.983154296875);
    effector:SetKey(_TRACK_X, 3.16, 529.537567138672);
    effector:SetKey(_TRACK_Y, 3.16, 101.733154296875);
    effector:SetKey(_TRACK_X, 3.32, 535.537567138672);
    effector:SetKey(_TRACK_Y, 3.32, 104.233154296875);
    effector:SetKey(_TRACK_X, 3.52, 542.537567138672);
    effector:SetKey(_TRACK_Y, 3.52, 103.733154296875);
    effector:SetKey(_TRACK_X, 3.68, 547.537567138672);
    effector:SetKey(_TRACK_Y, 3.68, 101.733154296875);
    effector:SetKey(_TRACK_X, 3.84, 552.537567138672);
    effector:SetKey(_TRACK_Y, 3.84, 99.233154296875);
    effector:SetKey(_TRACK_X, 4, 561.537567138672);
    effector:SetKey(_TRACK_Y, 4, 99.233154296875);
    effector:SetKey(_TRACK_X, 4.16, 574.537567138672);
    effector:SetKey(_TRACK_Y, 4.16, 102.233154296875);
    effector:SetKey(_TRACK_X, 4.32, 591.037567138672);
    effector:SetKey(_TRACK_Y, 4.32, 109.233154296875);
    effector:SetKey(_TRACK_X, 4.48, 611.537567138672);
    effector:SetKey(_TRACK_Y, 4.48, 114.233154296875);
    effector:SetKey(_TRACK_X, 4.64, 638.537567138672);
    effector:SetKey(_TRACK_Y, 4.64, 112.233154296875);
    effector:SetKey(_TRACK_X, 4.8, 705.713729858398);
    effector:SetKey(_TRACK_Y, 4.8, 127.665802001953);
    effector:SetKey(_TRACK_X, 4.96, 783.037567138672);
    effector:SetKey(_TRACK_Y, 4.96, 109.233154296875);
    effector:SetKey(_TRACK_X, 5.12, 869.537567138672);
    effector:SetKey(_TRACK_Y, 5.12, 26.233154296875);
    effector:SetKey(_TRACK_X, 5.28, 989.537567138672);
    effector:SetKey(_TRACK_Y, 5.28, -181.766845703125);
    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 2.44, 1);
    effector:SetKey(_TRACK_SY, 2.44, 1);
    effector:SetKey(_TRACK_SX, 5.28, 2);
    effector:SetKey(_TRACK_SY, 5.28, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 2.44, 3.14159265);
    effector:SetKey(_TRACK_A, 2.52, 3.55733751166796);
    effector:SetKey(_TRACK_A, 2.76, 6.2975116432593);
    effector:SetKey(_TRACK_A, 3.04, 5.93053744730489);
    effector:SetKey(_TRACK_A, 3.72, 5.95925616274963);
    effector:SetKey(_TRACK_A, 4, 6.33589949642755);
    effector:SetKey(_TRACK_A, 4.68, 6.39068119872045);
    effector:SetKey(_TRACK_A, 4.92, 6.69935602426141);
    effector:SetKey(_TRACK_A, 5.16, 6.57878345959407);
    effector:SetKey(_TRACK_A, 5.28, 6.29557414387825);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 2.44, 0);
    effector:SetKey(_TRACK_O, 2.52, 1);

    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_3');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.04);

    effector:SetKey(_TRACK_X, 0, 608.287567138672);
    effector:SetKey(_TRACK_Y, 0, 94.733154296875);
    effector:SetKey(_TRACK_X, 0.08, 608.287567138672);
    effector:SetKey(_TRACK_Y, 0.08, 101.983154296875);
    effector:SetKey(_TRACK_X, 0.16, 608.287567138672);
    effector:SetKey(_TRACK_Y, 0.16, 109.983154296875);
    effector:SetKey(_TRACK_X, 0.32, 608.287567138672);
    effector:SetKey(_TRACK_Y, 0.32, 121.983154296875);
    effector:SetKey(_TRACK_X, 0.44, 603.037567138672);
    effector:SetKey(_TRACK_Y, 0.44, 125.983154296875);
    effector:SetKey(_TRACK_X, 0.56, 597.537567138672);
    effector:SetKey(_TRACK_Y, 0.56, 124.983154296875);
    effector:SetKey(_TRACK_X, 0.72, 589.537567138672);
    effector:SetKey(_TRACK_Y, 0.72, 120.733154296875);
    effector:SetKey(_TRACK_X, 0.88, 575.537567138672);
    effector:SetKey(_TRACK_Y, 0.88, 112.233154296875);
    effector:SetKey(_TRACK_X, 1.08, 553.037567138672);
    effector:SetKey(_TRACK_Y, 1.08, 99.233154296875);
    effector:SetKey(_TRACK_X, 1.24, 536.037567138672);
    effector:SetKey(_TRACK_Y, 1.24, 92.733154296875);
    effector:SetKey(_TRACK_X, 1.4, 518.037567138672);
    effector:SetKey(_TRACK_Y, 1.4, 89.733154296875);
    effector:SetKey(_TRACK_X, 1.56, 492.537567138672);
    effector:SetKey(_TRACK_Y, 1.56, 87.733154296875);
    effector:SetKey(_TRACK_X, 1.72, 473.537567138672);
    effector:SetKey(_TRACK_Y, 1.72, 95.233154296875);
    effector:SetKey(_TRACK_X, 1.88, 463.037567138672);
    effector:SetKey(_TRACK_Y, 1.88, 101.733154296875);
    effector:SetKey(_TRACK_X, 2.04, 447.537567138672);
    effector:SetKey(_TRACK_Y, 2.04, 110.233154296875);
    effector:SetKey(_TRACK_X, 2.2, 430.037567138672);
    effector:SetKey(_TRACK_Y, 2.2, 112.233154296875);
    effector:SetKey(_TRACK_X, 2.36, 414.537567138672);
    effector:SetKey(_TRACK_Y, 2.36, 94.733154296875);
    effector:SetKey(_TRACK_X, 2.52, 428.037567138672);
    effector:SetKey(_TRACK_Y, 2.52, 65.233154296875);
    effector:SetKey(_TRACK_X, 2.68, 462.537567138672);
    effector:SetKey(_TRACK_Y, 2.68, 31.233154296875);
    effector:SetKey(_TRACK_X, 2.84, 516.537567138672);
    effector:SetKey(_TRACK_Y, 2.84, -147.766845703125);
    effector:SetKey(_TRACK_SX, 0, 0.9);
    effector:SetKey(_TRACK_SY, 0, 0.9);
    effector:SetKey(_TRACK_SX, 2.84, 2);
    effector:SetKey(_TRACK_SY, 2.84, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.08, 3.55733751166796);
    effector:SetKey(_TRACK_A, 0.32, 6.2975116432593);
    effector:SetKey(_TRACK_A, 0.6, 5.93053744730489);
    effector:SetKey(_TRACK_A, 1.28, 5.95925616274963);
    effector:SetKey(_TRACK_A, 1.56, 6.33589949642755);
    effector:SetKey(_TRACK_A, 2.24, 6.39068119872045);
    effector:SetKey(_TRACK_A, 2.48, 6.69935602426141);
    effector:SetKey(_TRACK_A, 2.72, 6.57878345959407);
    effector:SetKey(_TRACK_A, 2.84, 6.29557414387825);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.08, 1);

    effector:Play();


    -- Layer Layer_4
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_4');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.2);

    effector:SetKey(_TRACK_X, 0, 640.287567138672);
    effector:SetKey(_TRACK_Y, 0, 108.233154296875);
    effector:SetKey(_TRACK_X, 0.2, 640.287567138672);
    effector:SetKey(_TRACK_Y, 0.2, 108.233154296875);
    effector:SetKey(_TRACK_X, 0.2616015625, 640.287567138672);
    effector:SetKey(_TRACK_Y, 0.2616015625, 115.483154296875);
    effector:SetKey(_TRACK_X, 0.323203125, 640.287567138672);
    effector:SetKey(_TRACK_Y, 0.323203125, 123.483154296875);
    effector:SetKey(_TRACK_X, 0.4463671875, 640.287567138672);
    effector:SetKey(_TRACK_Y, 0.4463671875, 135.483154296875);
    effector:SetKey(_TRACK_X, 0.5387890625, 643.537567138672);
    effector:SetKey(_TRACK_Y, 0.5387890625, 140.483154296875);
    effector:SetKey(_TRACK_X, 0.631171875, 649.037567138672);
    effector:SetKey(_TRACK_Y, 0.631171875, 137.483154296875);
    effector:SetKey(_TRACK_X, 0.754375, 655.037567138672);
    effector:SetKey(_TRACK_Y, 0.754375, 130.733154296875);
    effector:SetKey(_TRACK_X, 0.8775390625, 661.037567138672);
    effector:SetKey(_TRACK_Y, 0.8775390625, 121.233154296875);
    effector:SetKey(_TRACK_X, 1.0315625, 659.037567138672);
    effector:SetKey(_TRACK_Y, 1.0315625, 111.733154296875);
    effector:SetKey(_TRACK_X, 1.1547265625, 652.037567138672);
    effector:SetKey(_TRACK_Y, 1.1547265625, 110.483154296875);
    effector:SetKey(_TRACK_X, 1.2779296875, 647.287567138672);
    effector:SetKey(_TRACK_Y, 1.2779296875, 116.233154296875);
    effector:SetKey(_TRACK_X, 1.4011328125, 651.537567138672);
    effector:SetKey(_TRACK_Y, 1.4011328125, 124.483154296875);
    effector:SetKey(_TRACK_X, 1.524296875, 661.537567138672);
    effector:SetKey(_TRACK_Y, 1.524296875, 130.983154296875);
    effector:SetKey(_TRACK_X, 1.6475, 671.537567138672);
    effector:SetKey(_TRACK_Y, 1.6475, 139.983154296875);
    effector:SetKey(_TRACK_X, 1.770703125, 676.037567138672);
    effector:SetKey(_TRACK_Y, 1.770703125, 157.233154296875);
    effector:SetKey(_TRACK_X, 1.8938671875, 677.037567138672);
    effector:SetKey(_TRACK_Y, 1.8938671875, 173.233154296875);
    effector:SetKey(_TRACK_X, 2.0170703125, 676.537567138672);
    effector:SetKey(_TRACK_Y, 2.0170703125, 191.233154296875);
    effector:SetKey(_TRACK_X, 2.1402734375, 674.037567138672);
    effector:SetKey(_TRACK_Y, 2.1402734375, 208.733154296875);
    effector:SetKey(_TRACK_X, 2.2634765625, 664.537567138672);
    effector:SetKey(_TRACK_Y, 2.2634765625, 232.733154296875);
    effector:SetKey(_TRACK_X, 2.386640625, 640.537567138672);
    effector:SetKey(_TRACK_Y, 2.386640625, 263.733154296875);
    effector:SetKey(_TRACK_SX, 0, 0.8);
    effector:SetKey(_TRACK_SY, 0, 0.8);
    effector:SetKey(_TRACK_SX, 0.2, 0.8);
    effector:SetKey(_TRACK_SY, 0.2, 0.8);
    effector:SetKey(_TRACK_SX, 2.386640625, 4);
    effector:SetKey(_TRACK_SY, 2.386640625, 4);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.2, 3.14159265);
    effector:SetKey(_TRACK_A, 0.2616015625, 2.64152682657555);
    effector:SetKey(_TRACK_A, 0.4463671875, 0.64976312733637);
    effector:SetKey(_TRACK_A, 0.754375, 0.34204868513641);
    effector:SetKey(_TRACK_A, 1.0007421875, 0.14793363335663);
    effector:SetKey(_TRACK_A, 1.2779296875, -0.12369696222592);
    effector:SetKey(_TRACK_A, 1.5551171875, 0.15243510643546);
    effector:SetKey(_TRACK_A, 1.9246875, 0.09345154800506);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.2, 0);
    effector:SetKey(_TRACK_O, 0.2616015625, 1);
    effector:SetKey(_TRACK_O, 2.2942578125, 1);
    effector:SetKey(_TRACK_O, 2.386640625, 0);

    effector:Play();


    -- Layer Layer_5
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_5');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.28);

    effector:SetKey(_TRACK_X, 0, 685.287567138672);
    effector:SetKey(_TRACK_Y, 0, 102.733154296875);
    effector:SetKey(_TRACK_X, 0.24, 685.287567138672);
    effector:SetKey(_TRACK_Y, 0.24, 102.733154296875);
    effector:SetKey(_TRACK_X, 0.32, 685.287567138672);
    effector:SetKey(_TRACK_Y, 0.32, 109.983154296875);
    effector:SetKey(_TRACK_X, 0.4, 685.287567138672);
    effector:SetKey(_TRACK_Y, 0.4, 117.983154296875);
    effector:SetKey(_TRACK_X, 0.56, 685.287567138672);
    effector:SetKey(_TRACK_Y, 0.56, 129.983154296875);
    effector:SetKey(_TRACK_X, 0.68, 692.037567138672);
    effector:SetKey(_TRACK_Y, 0.68, 140.983154296875);
    effector:SetKey(_TRACK_X, 0.8, 700.037567138672);
    effector:SetKey(_TRACK_Y, 0.8, 152.483154296875);
    effector:SetKey(_TRACK_X, 0.96, 721.537567138672);
    effector:SetKey(_TRACK_Y, 0.96, 162.733154296875);
    effector:SetKey(_TRACK_X, 1.12, 740.537567138672);
    effector:SetKey(_TRACK_Y, 1.12, 159.733154296875);
    effector:SetKey(_TRACK_X, 1.32, 761.537567138672);
    effector:SetKey(_TRACK_Y, 1.32, 160.733154296875);
    effector:SetKey(_TRACK_X, 1.48, 781.037567138672);
    effector:SetKey(_TRACK_Y, 1.48, 167.233154296875);
    effector:SetKey(_TRACK_X, 1.64, 799.537567138672);
    effector:SetKey(_TRACK_Y, 1.64, 178.233154296875);
    effector:SetKey(_TRACK_X, 1.8, 815.537567138672);
    effector:SetKey(_TRACK_Y, 1.8, 191.233154296875);
    effector:SetKey(_TRACK_X, 1.96, 851.037567138672);
    effector:SetKey(_TRACK_Y, 1.96, 203.733154296875);
    effector:SetKey(_TRACK_X, 2.12, 893.037567138672);
    effector:SetKey(_TRACK_Y, 2.12, 213.733154296875);
    effector:SetKey(_TRACK_X, 2.28, 939.537567138672);
    effector:SetKey(_TRACK_Y, 2.28, 199.233154296875);
    effector:SetKey(_TRACK_X, 2.44, 993.037567138672);
    effector:SetKey(_TRACK_Y, 2.44, 154.233154296875);
    effector:SetKey(_TRACK_X, 2.6, 1055.53756713867);
    effector:SetKey(_TRACK_Y, 2.6, 103.733154296875);
    effector:SetKey(_TRACK_X, 2.76, 1145.03756713867);
    effector:SetKey(_TRACK_Y, 2.76, 43.233154296875);
    effector:SetKey(_TRACK_X, 2.92, 1212.53756713867);
    effector:SetKey(_TRACK_Y, 2.92, -2.766845703125);
    effector:SetKey(_TRACK_X, 3.08, 1251.53756713867);
    effector:SetKey(_TRACK_Y, 3.08, -25.766845703125);
    effector:SetKey(_TRACK_SX, 0, 0.8);
    effector:SetKey(_TRACK_SY, 0, 0.8);
    effector:SetKey(_TRACK_SX, 0.24, 0.8);
    effector:SetKey(_TRACK_SY, 0.24, 0.8);
    effector:SetKey(_TRACK_SX, 3.08, 2);
    effector:SetKey(_TRACK_SY, 3.08, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.24, 3.14159265);
    effector:SetKey(_TRACK_A, 0.32, 3.55733751166796);
    effector:SetKey(_TRACK_A, 0.4, 6.20783925191252);
    effector:SetKey(_TRACK_A, 0.52, 6.5367846572487);
    effector:SetKey(_TRACK_A, 0.68, 6.58498120178262);
    effector:SetKey(_TRACK_A, 1.12, 6.42866750401647);
    effector:SetKey(_TRACK_A, 1.36, 6.53982180802619);
    effector:SetKey(_TRACK_A, 1.6, 6.69143947696039);
    effector:SetKey(_TRACK_A, 1.92, 6.52941830078875);
    effector:SetKey(_TRACK_A, 2.16, 6.7687011625691);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.24, 0);
    effector:SetKey(_TRACK_O, 0.32, 1);

    effector:Play();


    -- Layer Layer_6
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_6');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.04);

    effector:SetKey(_TRACK_X, 0, 700.287567138672);
    effector:SetKey(_TRACK_Y, 0, 124.233154296875);
    effector:SetKey(_TRACK_X, 0.08, 700.287567138672);
    effector:SetKey(_TRACK_Y, 0.08, 124.233154296875);
    effector:SetKey(_TRACK_X, 0.16, 700.287567138672);
    effector:SetKey(_TRACK_Y, 0.16, 131.483154296875);
    effector:SetKey(_TRACK_X, 0.24, 700.287567138672);
    effector:SetKey(_TRACK_Y, 0.24, 139.483154296875);
    effector:SetKey(_TRACK_X, 0.4, 700.287567138672);
    effector:SetKey(_TRACK_Y, 0.4, 151.483154296875);
    effector:SetKey(_TRACK_X, 0.52, 701.037567138672);
    effector:SetKey(_TRACK_Y, 0.52, 159.483154296875);
    effector:SetKey(_TRACK_X, 0.64, 694.037567138672);
    effector:SetKey(_TRACK_Y, 0.64, 172.483154296875);
    effector:SetKey(_TRACK_X, 0.8, 679.537567138672);
    effector:SetKey(_TRACK_Y, 0.8, 186.233154296875);
    effector:SetKey(_TRACK_X, 0.96, 665.537567138672);
    effector:SetKey(_TRACK_Y, 0.96, 195.733154296875);
    effector:SetKey(_TRACK_X, 1.16, 648.037567138672);
    effector:SetKey(_TRACK_Y, 1.16, 210.733154296875);
    effector:SetKey(_TRACK_X, 1.32, 632.037567138672);
    effector:SetKey(_TRACK_Y, 1.32, 221.233154296875);
    effector:SetKey(_TRACK_X, 1.48, 623.037567138672);
    effector:SetKey(_TRACK_Y, 1.48, 245.233154296875);
    effector:SetKey(_TRACK_X, 1.64, 632.537567138672);
    effector:SetKey(_TRACK_Y, 1.64, 268.233154296875);
    effector:SetKey(_TRACK_X, 1.8, 647.537567138672);
    effector:SetKey(_TRACK_Y, 1.8, 286.733154296875);
    effector:SetKey(_TRACK_X, 1.96, 667.037567138672);
    effector:SetKey(_TRACK_Y, 1.96, 302.233154296875);
    effector:SetKey(_TRACK_X, 2.12, 679.537567138672);
    effector:SetKey(_TRACK_Y, 2.12, 313.733154296875);
    effector:SetKey(_TRACK_X, 2.28, 689.037567138672);
    effector:SetKey(_TRACK_Y, 2.28, 321.733154296875);
    effector:SetKey(_TRACK_X, 2.44, 703.537567138672);
    effector:SetKey(_TRACK_Y, 2.44, 329.233154296875);
    effector:SetKey(_TRACK_X, 2.6, 727.037567138672);
    effector:SetKey(_TRACK_Y, 2.6, 338.733154296875);
    effector:SetKey(_TRACK_X, 2.76, 778.537567138672);
    effector:SetKey(_TRACK_Y, 2.76, 351.733154296875);
    effector:SetKey(_TRACK_X, 2.92, 888.537567138672);
    effector:SetKey(_TRACK_Y, 2.92, 378.733154296875);
    effector:SetKey(_TRACK_SX, 0, 0.6);
    effector:SetKey(_TRACK_SY, 0, 0.6);
    effector:SetKey(_TRACK_SX, 0.08, 0.6);
    effector:SetKey(_TRACK_SY, 0.08, 0.6);
    effector:SetKey(_TRACK_SX, 2.92, 2);
    effector:SetKey(_TRACK_SY, 2.92, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.08, 3.14159265);
    effector:SetKey(_TRACK_A, 0.16, 3.55733751166796);
    effector:SetKey(_TRACK_A, 0.4, 6.2975116432593);
    effector:SetKey(_TRACK_A, 0.68, 6.49322497149173);
    effector:SetKey(_TRACK_A, 1.36, 6.67176604444583);
    effector:SetKey(_TRACK_A, 1.64, 6.65403451192496);
    effector:SetKey(_TRACK_A, 2.32, 6.54342720638909);
    effector:SetKey(_TRACK_A, 2.56, 6.69935602426141);
    effector:SetKey(_TRACK_A, 2.92, 6.73614070206742);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.08, 0);
    effector:SetKey(_TRACK_O, 0.16, 1);
    effector:SetKey(_TRACK_O, 2.84, 1);
    effector:SetKey(_TRACK_O, 2.92, 0);

    effector:Play();


    -- Layer Layer_7
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_7');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.48);

    effector:SetKey(_TRACK_X, 0, 618.287567138672);
    effector:SetKey(_TRACK_Y, 0, 119.983154296875);
    effector:SetKey(_TRACK_X, 1.12, 618.287567138672);
    effector:SetKey(_TRACK_Y, 1.12, 119.983154296875);
    effector:SetKey(_TRACK_X, 1.17578125, 618.287567138672);
    effector:SetKey(_TRACK_Y, 1.17578125, 127.233154296875);
    effector:SetKey(_TRACK_X, 1.2316015625, 618.287567138672);
    effector:SetKey(_TRACK_Y, 1.2316015625, 135.233154296875);
    effector:SetKey(_TRACK_X, 1.343203125, 618.287567138672);
    effector:SetKey(_TRACK_Y, 1.343203125, 147.233154296875);
    effector:SetKey(_TRACK_X, 1.426875, 616.537567138672);
    effector:SetKey(_TRACK_Y, 1.426875, 157.983154296875);
    effector:SetKey(_TRACK_X, 1.5105859375, 612.037567138672);
    effector:SetKey(_TRACK_Y, 1.5105859375, 180.733154296875);
    effector:SetKey(_TRACK_X, 1.6221484375, 608.037567138672);
    effector:SetKey(_TRACK_Y, 1.6221484375, 191.983154296875);
    effector:SetKey(_TRACK_X, 1.73375, 603.037567138672);
    effector:SetKey(_TRACK_Y, 1.73375, 206.983154296875);
    effector:SetKey(_TRACK_X, 1.8732421875, 592.537567138672);
    effector:SetKey(_TRACK_Y, 1.8732421875, 223.983154296875);
    effector:SetKey(_TRACK_X, 1.98484375, 587.037567138672);
    effector:SetKey(_TRACK_Y, 1.98484375, 230.483154296875);
    effector:SetKey(_TRACK_X, 2.0964453125, 582.037567138672);
    effector:SetKey(_TRACK_Y, 2.0964453125, 236.483154296875);
    effector:SetKey(_TRACK_X, 2.2080078125, 576.037567138672);
    effector:SetKey(_TRACK_Y, 2.2080078125, 243.983154296875);
    effector:SetKey(_TRACK_X, 2.319609375, 566.537567138672);
    effector:SetKey(_TRACK_Y, 2.319609375, 252.983154296875);
    effector:SetKey(_TRACK_X, 2.4312109375, 559.037567138672);
    effector:SetKey(_TRACK_Y, 2.4312109375, 263.483154296875);
    effector:SetKey(_TRACK_X, 2.5428125, 557.037567138672);
    effector:SetKey(_TRACK_Y, 2.5428125, 275.483154296875);
    effector:SetKey(_TRACK_X, 2.654375, 566.537567138672);
    effector:SetKey(_TRACK_Y, 2.654375, 286.983154296875);
    effector:SetKey(_TRACK_X, 2.7659765625, 573.037567138672);
    effector:SetKey(_TRACK_Y, 2.7659765625, 292.983154296875);
    effector:SetKey(_TRACK_X, 2.877578125, 566.537567138672);
    effector:SetKey(_TRACK_Y, 2.877578125, 293.483154296875);
    effector:SetKey(_TRACK_X, 2.9891796875, 554.037567138672);
    effector:SetKey(_TRACK_Y, 2.9891796875, 290.983154296875);
    effector:SetKey(_TRACK_X, 3.1007421875, 538.537567138672);
    effector:SetKey(_TRACK_Y, 3.1007421875, 282.983154296875);
    effector:SetKey(_TRACK_SX, 0, 0.75);
    effector:SetKey(_TRACK_SY, 0, 0.75);
    effector:SetKey(_TRACK_SX, 1.12, 0.75);
    effector:SetKey(_TRACK_SY, 1.12, 0.75);
    effector:SetKey(_TRACK_SX, 3.1007421875, 4);
    effector:SetKey(_TRACK_SY, 3.1007421875, 4);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 1.12, 3.14159265);
    effector:SetKey(_TRACK_A, 1.17578125, 2.81014758522582);
    effector:SetKey(_TRACK_A, 1.2594921875, 0.12729450750322);
    effector:SetKey(_TRACK_A, 1.4, 0.29486681988636);
    effector:SetKey(_TRACK_A, 1.68, 0.15255823597034);
    effector:SetKey(_TRACK_A, 1.92, 0.41900905703338);
    effector:SetKey(_TRACK_A, 2.28, -0.18108184144195);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.12, 0);
    effector:SetKey(_TRACK_O, 1.17578125, 1);
    effector:SetKey(_TRACK_O, 3.0449609375, 1);
    effector:SetKey(_TRACK_O, 3.1007421875, 0);

    effector:Play();


    -- Layer Layer_8
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_8');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 2.48);

    effector:SetKey(_TRACK_X, 0, 525.87565612793);
    effector:SetKey(_TRACK_Y, 0, 162.727966308594);
    effector:SetKey(_TRACK_X, 0.08, 525.87565612793);
    effector:SetKey(_TRACK_Y, 0.08, 169.977966308594);
    effector:SetKey(_TRACK_X, 0.16, 525.87565612793);
    effector:SetKey(_TRACK_Y, 0.16, 177.977966308594);
    effector:SetKey(_TRACK_X, 0.32, 525.87565612793);
    effector:SetKey(_TRACK_Y, 0.32, 189.977966308594);
    effector:SetKey(_TRACK_X, 0.44, 520.62565612793);
    effector:SetKey(_TRACK_Y, 0.44, 193.977966308594);
    effector:SetKey(_TRACK_X, 0.56, 508.62565612793);
    effector:SetKey(_TRACK_Y, 0.56, 202.477966308594);
    effector:SetKey(_TRACK_X, 0.72, 490.12565612793);
    effector:SetKey(_TRACK_Y, 0.72, 212.727966308594);
    effector:SetKey(_TRACK_X, 0.88, 463.62565612793);
    effector:SetKey(_TRACK_Y, 0.88, 218.227966308594);
    effector:SetKey(_TRACK_X, 1.08, 431.62565612793);
    effector:SetKey(_TRACK_Y, 1.08, 216.727966308594);
    effector:SetKey(_TRACK_X, 1.24, 385.12565612793);
    effector:SetKey(_TRACK_Y, 1.24, 203.727966308594);
    effector:SetKey(_TRACK_X, 1.4, 323.62565612793);
    effector:SetKey(_TRACK_Y, 1.4, 192.727966308594);
    effector:SetKey(_TRACK_X, 1.56, 256.12565612793);
    effector:SetKey(_TRACK_Y, 1.56, 194.727966308594);
    effector:SetKey(_TRACK_X, 1.72, 184.12565612793);
    effector:SetKey(_TRACK_Y, 1.72, 225.227966308594);
    effector:SetKey(_TRACK_X, 1.88, 122.62565612793);
    effector:SetKey(_TRACK_Y, 1.88, 252.727966308594);
    effector:SetKey(_TRACK_X, 2.04, 48.1256561279297);
    effector:SetKey(_TRACK_Y, 2.04, 262.227966308594);
    effector:SetKey(_TRACK_X, 2.2, -71.3743438720703);
    effector:SetKey(_TRACK_Y, 2.2, 244.227966308594);
    effector:SetKey(_TRACK_X, 2.36, -227.87434387207);
    effector:SetKey(_TRACK_Y, 2.36, 180.727966308594);
    effector:SetKey(_TRACK_SX, 0, 0.7);
    effector:SetKey(_TRACK_SY, 0, 0.7);
    effector:SetKey(_TRACK_SX, 2.36, 1.2);
    effector:SetKey(_TRACK_SY, 2.36, 1.2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.08, 2.59497502003775);
    effector:SetKey(_TRACK_A, 0.28, 0.31704436263609);
    effector:SetKey(_TRACK_A, 0.48, -0.28918995726778);
    effector:SetKey(_TRACK_A, 0.64, -0.06556477545447);
    effector:SetKey(_TRACK_A, 0.96, -0.27178893706595);
    effector:SetKey(_TRACK_A, 1.24, -0.62984460781432);
    effector:SetKey(_TRACK_A, 1.72, -0.20202558533833);
    effector:SetKey(_TRACK_A, 2.16, -0.3210069588941);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.08, 1);

    effector:Play();


    -- Layer Layer_9
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_9');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 4.16);

    effector:SetKey(_TRACK_X, 0, 539.287567138672);
    effector:SetKey(_TRACK_Y, 0, 155.733154296875);
    effector:SetKey(_TRACK_X, 1.24, 539.287567138672);
    effector:SetKey(_TRACK_Y, 1.24, 155.733154296875);
    effector:SetKey(_TRACK_X, 1.32, 539.287567138672);
    effector:SetKey(_TRACK_Y, 1.32, 162.983154296875);
    effector:SetKey(_TRACK_X, 1.4, 539.287567138672);
    effector:SetKey(_TRACK_Y, 1.4, 170.983154296875);
    effector:SetKey(_TRACK_X, 1.56, 539.287567138672);
    effector:SetKey(_TRACK_Y, 1.56, 182.983154296875);
    effector:SetKey(_TRACK_X, 1.68, 534.037567138672);
    effector:SetKey(_TRACK_Y, 1.68, 190.983154296875);
    effector:SetKey(_TRACK_X, 1.8, 528.537567138672);
    effector:SetKey(_TRACK_Y, 1.8, 196.983154296875);
    effector:SetKey(_TRACK_X, 1.96, 520.537567138672);
    effector:SetKey(_TRACK_Y, 1.96, 200.733154296875);
    effector:SetKey(_TRACK_X, 2.12, 508.037567138672);
    effector:SetKey(_TRACK_Y, 2.12, 203.233154296875);
    effector:SetKey(_TRACK_X, 2.32, 494.037567138672);
    effector:SetKey(_TRACK_Y, 2.32, 209.733154296875);
    effector:SetKey(_TRACK_X, 2.48, 478.537567138672);
    effector:SetKey(_TRACK_Y, 2.48, 221.733154296875);
    effector:SetKey(_TRACK_X, 2.64, 460.037567138672);
    effector:SetKey(_TRACK_Y, 2.64, 241.733154296875);
    effector:SetKey(_TRACK_X, 2.8, 434.537567138672);
    effector:SetKey(_TRACK_Y, 2.8, 263.733154296875);
    effector:SetKey(_TRACK_X, 2.96, 398.537567138672);
    effector:SetKey(_TRACK_Y, 2.96, 279.233154296875);
    effector:SetKey(_TRACK_X, 3.12, 358.037567138672);
    effector:SetKey(_TRACK_Y, 3.12, 282.733154296875);
    effector:SetKey(_TRACK_X, 3.28, 309.537567138672);
    effector:SetKey(_TRACK_Y, 3.28, 271.233154296875);
    effector:SetKey(_TRACK_X, 3.44, 237.037567138672);
    effector:SetKey(_TRACK_Y, 3.44, 252.233154296875);
    effector:SetKey(_TRACK_X, 3.6, 132.537567138672);
    effector:SetKey(_TRACK_Y, 3.6, 259.733154296875);
    effector:SetKey(_TRACK_X, 3.76, 32.0375671386719);
    effector:SetKey(_TRACK_Y, 3.76, 276.233154296875);
    effector:SetKey(_TRACK_X, 3.92, -197.462432861328);
    effector:SetKey(_TRACK_Y, 3.92, 329.233154296875);
    effector:SetKey(_TRACK_SX, 0, 0.5);
    effector:SetKey(_TRACK_SY, 0, 0.5);
    effector:SetKey(_TRACK_SX, 1.24, 0.5);
    effector:SetKey(_TRACK_SY, 1.24, 0.5);
    effector:SetKey(_TRACK_SX, 3.92, 2);
    effector:SetKey(_TRACK_SY, 3.92, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 1.24, 3.14159265);
    effector:SetKey(_TRACK_A, 1.32, 3.55733751166796);
    effector:SetKey(_TRACK_A, 1.56, 6.2975116432593);
    effector:SetKey(_TRACK_A, 1.84, 5.93053744730489);
    effector:SetKey(_TRACK_A, 2.52, 5.95925616274963);
    effector:SetKey(_TRACK_A, 2.8, 6.00494945026421);
    effector:SetKey(_TRACK_A, 3.48, 5.90378265274412);
    effector:SetKey(_TRACK_A, 3.72, 5.9632090815389);
    effector:SetKey(_TRACK_A, 3.92, 5.95390054031023);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.24, 0);
    effector:SetKey(_TRACK_O, 1.32, 1);

    effector:Play();


    -- Layer Layer_10
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00005].png');
    element:SetName('Layer_10');
    compositionBat_FLY:AddElement(element);
    element:SetHotSpot(80, 50);
    element:SetParentElement(compositionBat_FLY);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 3.32);

    effector:SetKey(_TRACK_X, 0, 580.787567138672);
    effector:SetKey(_TRACK_Y, 0, 131.733154296875);
    effector:SetKey(_TRACK_X, 0.36, 580.787567138672);
    effector:SetKey(_TRACK_Y, 0.36, 131.733154296875);
    effector:SetKey(_TRACK_X, 0.44, 580.787567138672);
    effector:SetKey(_TRACK_Y, 0.44, 138.983154296875);
    effector:SetKey(_TRACK_X, 0.52, 580.787567138672);
    effector:SetKey(_TRACK_Y, 0.52, 146.983154296875);
    effector:SetKey(_TRACK_X, 0.68, 580.787567138672);
    effector:SetKey(_TRACK_Y, 0.68, 158.983154296875);
    effector:SetKey(_TRACK_X, 0.8, 578.537567138672);
    effector:SetKey(_TRACK_Y, 0.8, 164.483154296875);
    effector:SetKey(_TRACK_X, 0.92, 574.037567138672);
    effector:SetKey(_TRACK_Y, 0.92, 172.483154296875);
    effector:SetKey(_TRACK_X, 1.08, 565.037567138672);
    effector:SetKey(_TRACK_Y, 1.08, 182.233154296875);
    effector:SetKey(_TRACK_X, 1.24, 555.037567138672);
    effector:SetKey(_TRACK_Y, 1.24, 190.233154296875);
    effector:SetKey(_TRACK_X, 1.44, 539.037567138672);
    effector:SetKey(_TRACK_Y, 1.44, 198.233154296875);
    effector:SetKey(_TRACK_X, 1.6, 518.537567138672);
    effector:SetKey(_TRACK_Y, 1.6, 211.733154296875);
    effector:SetKey(_TRACK_X, 1.92, 486.037567138672);
    effector:SetKey(_TRACK_Y, 1.92, 223.733154296875);
    effector:SetKey(_TRACK_X, 2.08, 456.037567138672);
    effector:SetKey(_TRACK_Y, 2.08, 230.233154296875);
    effector:SetKey(_TRACK_X, 2.24, 422.537567138672);
    effector:SetKey(_TRACK_Y, 2.24, 231.733154296875);
    effector:SetKey(_TRACK_X, 2.4, 369.037567138672);
    effector:SetKey(_TRACK_Y, 2.4, 226.233154296875);
    effector:SetKey(_TRACK_X, 2.56, 293.537567138672);
    effector:SetKey(_TRACK_Y, 2.56, 205.233154296875);
    effector:SetKey(_TRACK_X, 2.72, 214.037567138672);
    effector:SetKey(_TRACK_Y, 2.72, 157.733154296875);
    effector:SetKey(_TRACK_X, 2.88, 105.537567138672);
    effector:SetKey(_TRACK_Y, 2.88, 127.233154296875);
    effector:SetKey(_TRACK_X, 3.04, -1.96243286132813);
    effector:SetKey(_TRACK_Y, 3.04, 108.233154296875);
    effector:SetKey(_TRACK_X, 3.2, -256.962432861328);
    effector:SetKey(_TRACK_Y, 3.2, 75.233154296875);
    effector:SetKey(_TRACK_SX, 0, 0.6);
    effector:SetKey(_TRACK_SY, 0, 0.6);
    effector:SetKey(_TRACK_SX, 0.36, 0.6);
    effector:SetKey(_TRACK_SY, 0.36, 0.6);
    effector:SetKey(_TRACK_SX, 3.2, 2);
    effector:SetKey(_TRACK_SY, 3.2, 2);
    effector:SetKey(_TRACK_A, 0, 3.14159265);
    effector:SetKey(_TRACK_A, 0.36, 3.14159265);
    effector:SetKey(_TRACK_A, 0.44, 3.55733751166796);
    effector:SetKey(_TRACK_A, 0.68, 6.28906210841532);
    effector:SetKey(_TRACK_A, 0.96, 5.93053744730489);
    effector:SetKey(_TRACK_A, 1.64, 5.95925616274963);
    effector:SetKey(_TRACK_A, 1.92, 6.1718764564136);
    effector:SetKey(_TRACK_A, 2.6, 5.97309336618238);
    effector:SetKey(_TRACK_A, 2.84, 5.87259111747864);
    effector:SetKey(_TRACK_A, 3.08, 5.89406476433778);
    effector:SetKey(_TRACK_A, 3.2, 6.11379097699752);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.36, 0);
    effector:SetKey(_TRACK_O, 0.44, 1);

    effector:Play();

    compositionBat_FLY:Play();

    return compositionBat_FLY;
end

createCompositionBats1 = function()

    local compositionBats1 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBats1:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_1');
    compositionBats1:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats1);
    element:SetXY(514.308288574219, 49.8497467041016);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_2');
    compositionBats1:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats1);
    element:SetXY(639.308288574219, 103.849746704102);

    element:SetScaleX(0.8);
    element:SetScaleY(0.8);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_3');
    compositionBats1:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats1);
    element:SetXY(699.943008422852, 123.365295410156);

    element:SetScaleX(-0.6);
    element:SetScaleY(0.6);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_4
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_4');
    compositionBats1:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats1);
    element:SetXY(537.943008422852, 153.365295410156);

    element:SetScaleX(0.5);
    element:SetScaleY(0.5);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();

    compositionBats1:Play();

    return compositionBats1;
end

createCompositionBats2 = function()

    local compositionBats2 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBats2:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_1');
    compositionBats2:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats2);
    element:SetXY(549.308288574219, 31.8497467041016);

    element:SetScaleX(-1.2);
    element:SetScaleY(1.2);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_2');
    compositionBats2:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats2);
    element:SetXY(607.308288574219, 91.3497467041016);

    element:SetScaleX(0.9);
    element:SetScaleY(0.9);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_3');
    compositionBats2:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats2);
    element:SetXY(684.808288574219, 105.849746704102);

    element:SetScaleX(0.9);
    element:SetScaleY(0.9);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();

    compositionBats2:Play();

    return compositionBats2;
end

createCompositionBats3 = function()

    local compositionBats3 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBats3:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_1');
    compositionBats3:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats3);
    element:SetXY(618.443008422852, 119.365295410156);

    element:SetScaleX(-0.75);
    element:SetScaleY(0.75);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_2');
    compositionBats3:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats3);
    element:SetXY(525.443008422852, 161.365295410156);

    element:SetScaleX(0.7);
    element:SetScaleY(0.7);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[00000-00021].png');
    element:SetName('Layer_3');
    compositionBats3:AddElement(element);
    element:SetHotSpot(15, 30);
    element:SetParentElement(compositionBats3);
    element:SetXY(580.943008422852, 130.865295410156);

    element:SetScaleX(-0.6);
    element:SetScaleY(0.6);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10.04);


    effector:Play();

    compositionBats3:Play();

    return compositionBats3;
end

createCompositionCyclicCompGroup = function()

    local compositionCyclicCompGroup = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionCyclicCompGroup:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = createCompositionDust_fall();
    element:SetName('Layer_1');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(512, 384);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(512, 384);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(2.52, 6.84);


    effector:Play();


    -- Layer Layer_2
    local element = createCompositionSpider1();
    element:SetName('Layer_2');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(512, 384);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(512, 384);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 5.16);


    effector:Play();


    -- Layer Layer_3
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_3');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(814.586578369141, 477.625457763672);

    element:SetScaleX(1);
    element:SetScaleY(1.08593639575972);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(7.6, 9.2);


    effector:Play();


    -- Layer Layer_4
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_4');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(472.650177001953, 374.50178527832);

    element:SetScaleX(0.5547703180212);
    element:SetScaleY(0.89597173144876);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(6.6, 8.2);


    effector:Play();


    -- Layer Layer_5
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_5');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(472.650177001953, 374.50178527832);

    element:SetScaleX(0.5547703180212);
    element:SetScaleY(0.89597173144876);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(2.72, 4.32);


    effector:Play();


    -- Layer Layer_6
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_6');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(563.56184387207, 381.286239624023);

    element:SetScaleX(0.5547703180212);
    element:SetScaleY(0.89597173144876);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(5.24, 6.84);


    effector:Play();


    -- Layer Layer_7
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_7');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(407.519439697266, 424.706726074219);

    element:SetScaleX(0.70318021201413);
    element:SetScaleY(0.85526501766785);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0.56, 2.16);


    effector:Play();


    -- Layer Layer_8
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_8');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(307.10954284668, 396.403411865234);

    element:SetScaleX(1.02169981916817);
    element:SetScaleY(1.0601808318264);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(4.6, 6.2);


    effector:Play();


    -- Layer Layer_9
    local element = createCompositionWaterDrop1();
    element:SetName('Layer_9');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(64, 300);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(307.10954284668, 396.403411865234);

    element:SetScaleX(1.02169981916817);
    element:SetScaleY(1.0601808318264);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.6);


    effector:Play();


    -- Layer Layer_10
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/EF_Dust_02.jpg');
    element:SetName('Layer_10');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionCyclicCompGroup);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 732.80184100843);
    effector:SetKey(_TRACK_Y, 0, 446.195621262144);
    effector:SetKey(_TRACK_X, 0.8, 731.037109375);
    effector:SetKey(_TRACK_Y, 0.8, 432.273849487305);
    effector:SetKey(_TRACK_X, 2.96, 738.537109375);
    effector:SetKey(_TRACK_Y, 2.96, 384.273849487305);
    effector:SetKey(_TRACK_X, 4.84, 746.537109375);
    effector:SetKey(_TRACK_Y, 4.84, 321.273849487305);
    effector:SetKey(_TRACK_X, 5.04, 737.607788085938);
    effector:SetKey(_TRACK_Y, 5.04, 530.625442504883);
    effector:SetKey(_TRACK_X, 6.88, 729.537109375);
    effector:SetKey(_TRACK_Y, 6.88, 499.273849487305);
    effector:SetKey(_TRACK_X, 8.68, 735.537109375);
    effector:SetKey(_TRACK_Y, 8.68, 467.773849487305);
    effector:SetKey(_TRACK_X, 9.96, 732.80184100843);
    effector:SetKey(_TRACK_Y, 9.96, 446.195621262144);
    effector:SetKey(_TRACK_SX, 0, 1.35524475524476);
    effector:SetKey(_TRACK_SY, 0, 1.35524475524476);
    effector:SetKey(_TRACK_SX, 5.04, 1);
    effector:SetKey(_TRACK_SY, 5.04, 1);
    effector:SetKey(_TRACK_SX, 9.28, 1.4);
    effector:SetKey(_TRACK_SY, 9.28, 1.4);
    effector:SetKey(_TRACK_SX, 9.96, 1.35524475524476);
    effector:SetKey(_TRACK_SY, 9.96, 1.35524475524476);
    effector:SetKey(_TRACK_A, 0, 0.38481355753012);
    effector:SetKey(_TRACK_A, 5.04, 0);
    effector:SetKey(_TRACK_A, 9.96, 0.38481355753012);
    effector:SetKey(_TRACK_O, 0, 0.175);
    effector:SetKey(_TRACK_O, 0.28, 0);
    effector:SetKey(_TRACK_O, 1.68, 0.4);
    effector:SetKey(_TRACK_O, 2.2, 0.6);
    effector:SetKey(_TRACK_O, 2.96, 0.2);
    effector:SetKey(_TRACK_O, 3.92, 0.1);
    effector:SetKey(_TRACK_O, 4.48, 0.4);
    effector:SetKey(_TRACK_O, 4.76, 0.14285714285714);
    effector:SetKey(_TRACK_O, 4.84, 0);
    effector:SetKey(_TRACK_O, 5.04, 0);
    effector:SetKey(_TRACK_O, 5.8, 0.4);
    effector:SetKey(_TRACK_O, 6.28, 0);
    effector:SetKey(_TRACK_O, 7.12, 0.1);
    effector:SetKey(_TRACK_O, 8.12, 0.3);
    effector:SetKey(_TRACK_O, 8.88, 0.05);
    effector:SetKey(_TRACK_O, 9.56, 0.4);
    effector:SetKey(_TRACK_O, 9.96, 0.175);

    effector:Play();


    -- Layer Layer_11
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/EF_Dust_02.jpg');
    element:SetName('Layer_11');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionCyclicCompGroup);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 175.414291381836);
    effector:SetKey(_TRACK_Y, 0, 233.198684692383);
    effector:SetKey(_TRACK_X, 1.84, 167.343612670898);
    effector:SetKey(_TRACK_Y, 1.84, 201.847091674805);
    effector:SetKey(_TRACK_X, 3.64, 173.343612670898);
    effector:SetKey(_TRACK_Y, 3.64, 170.347091674805);
    effector:SetKey(_TRACK_X, 5.68, 168.843612670898);
    effector:SetKey(_TRACK_Y, 5.68, 134.847091674805);
    effector:SetKey(_TRACK_X, 7.84, 152.343612670898);
    effector:SetKey(_TRACK_Y, 7.84, 93.8470916748047);
    effector:SetKey(_TRACK_X, 9.96, 144.843612670898);
    effector:SetKey(_TRACK_Y, 9.96, 43.3470916748047);
    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 4.24, 1.4);
    effector:SetKey(_TRACK_SY, 4.24, 1.4);
    effector:SetKey(_TRACK_SX, 9.96, 1);
    effector:SetKey(_TRACK_SY, 9.96, 1);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 9.96, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.76, 0.68482459783554);
    effector:SetKey(_TRACK_O, 1.24, 0);
    effector:SetKey(_TRACK_O, 2.08, 0.1);
    effector:SetKey(_TRACK_O, 3.08, 0.48988306522369);
    effector:SetKey(_TRACK_O, 3.84, 0.05);
    effector:SetKey(_TRACK_O, 4.52, 0.68482459783554);
    effector:SetKey(_TRACK_O, 5.16, 0);
    effector:SetKey(_TRACK_O, 6.56, 0.68482459783554);
    effector:SetKey(_TRACK_O, 7.08, 0.63117950595954);
    effector:SetKey(_TRACK_O, 7.84, 0.29494153261185);
    effector:SetKey(_TRACK_O, 8.8, 0.1);
    effector:SetKey(_TRACK_O, 9.36, 0.68482459783554);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();


    -- Layer Layer_12
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/EF_Dust_02.jpg');
    element:SetName('Layer_12');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionCyclicCompGroup);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 572.607788085938);
    effector:SetKey(_TRACK_Y, 0, 477.625442504883);
    effector:SetKey(_TRACK_X, 1.84, 564.537109375);
    effector:SetKey(_TRACK_Y, 1.84, 446.273849487305);
    effector:SetKey(_TRACK_X, 3.64, 570.537109375);
    effector:SetKey(_TRACK_Y, 3.64, 414.773849487305);
    effector:SetKey(_TRACK_X, 5.68, 566.037109375);
    effector:SetKey(_TRACK_Y, 5.68, 379.273849487305);
    effector:SetKey(_TRACK_X, 7.84, 549.537109375);
    effector:SetKey(_TRACK_Y, 7.84, 338.273849487305);
    effector:SetKey(_TRACK_X, 9.96, 542.037109375);
    effector:SetKey(_TRACK_Y, 9.96, 287.773849487305);
    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 4.24, 1.4);
    effector:SetKey(_TRACK_SY, 4.24, 1.4);
    effector:SetKey(_TRACK_SX, 9.96, 1);
    effector:SetKey(_TRACK_SY, 9.96, 1);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 9.96, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.76, 0.4);
    effector:SetKey(_TRACK_O, 1.24, 0);
    effector:SetKey(_TRACK_O, 2.08, 0.1);
    effector:SetKey(_TRACK_O, 3.08, 0.3);
    effector:SetKey(_TRACK_O, 3.84, 0.05);
    effector:SetKey(_TRACK_O, 4.52, 0.4);
    effector:SetKey(_TRACK_O, 5.16, 0);
    effector:SetKey(_TRACK_O, 6.56, 0.4);
    effector:SetKey(_TRACK_O, 7.08, 0.6);
    effector:SetKey(_TRACK_O, 7.84, 0.2);
    effector:SetKey(_TRACK_O, 8.8, 0.1);
    effector:SetKey(_TRACK_O, 9.36, 0.4);
    effector:SetKey(_TRACK_O, 9.96, 0);

    effector:Play();


    -- Layer Layer_13
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/Layer_light01.jpg');
    element:SetName('Layer_13');
    compositionCyclicCompGroup:AddElement(element);
    element:SetHotSpot(45, 54.5);
    element:SetParentElement(compositionCyclicCompGroup);
    element:SetXY(664.876342773438, 423.349838256836);

    element:SetScaleX(4);
    element:SetScaleY(4);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.84, 0.4);
    effector:SetKey(_TRACK_O, 1.4, 0.05000001776396);
    effector:SetKey(_TRACK_O, 2.48, 0.33247761968356);
    effector:SetKey(_TRACK_O, 3.56, 0.20000001913042);
    effector:SetKey(_TRACK_O, 5.08, 0.5);
    effector:SetKey(_TRACK_O, 6.04, 0.05);
    effector:SetKey(_TRACK_O, 6.76, 0.46623880801984);
    effector:SetKey(_TRACK_O, 7.68, 0.27271643704087);
    effector:SetKey(_TRACK_O, 8.56, 0.43761194530886);
    effector:SetKey(_TRACK_O, 9.4, 0.05000001776396);
    effector:SetKey(_TRACK_O, 9.96, 0.2);

    effector:Play();

    compositionCyclicCompGroup:Play();

    return compositionCyclicCompGroup;
end

createCompositionDust_fall = function()

    local compositionDust_fall = CreateCompositionSequence();
    local compositionDuration = 4.32;
    compositionDust_fall:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/dust_fall01.png');
    element:SetName('Layer_1');
    compositionDust_fall:AddElement(element);
    element:SetHotSpot(32, 32);
    element:SetParentElement(compositionDust_fall);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 4.32);

    effector:SetKey(_TRACK_X, 0.48, 465.244125366211);
    effector:SetKey(_TRACK_Y, 0.48, -154.155532836914);
    effector:SetKey(_TRACK_X, 1.16, 463.855331420898);
    effector:SetKey(_TRACK_Y, 1.16, 30.5533294677734);
    effector:SetKey(_TRACK_X, 1.52, 451.356231689453);
    effector:SetKey(_TRACK_Y, 1.52, 137.490036010742);
    effector:SetKey(_TRACK_X, 1.96, 465.244125366211);
    effector:SetKey(_TRACK_Y, 1.96, 234.705230712891);
    effector:SetKey(_TRACK_X, 2.4, 547.182647705078);
    effector:SetKey(_TRACK_Y, 2.4, -174.987365722656);
    effector:SetKey(_TRACK_X, 3.08, 545.793853759766);
    effector:SetKey(_TRACK_Y, 3.08, 9.72149658203125);
    effector:SetKey(_TRACK_X, 3.44, 531.905975341797);
    effector:SetKey(_TRACK_Y, 3.44, 108.325485229492);
    effector:SetKey(_TRACK_X, 3.88, 504.13020324707);
    effector:SetKey(_TRACK_Y, 3.88, 226.372497558594);
    effector:SetKey(_TRACK_SX, 0.48, 3.77757685352622);
    effector:SetKey(_TRACK_SY, 0.48, 4.60216998191682);
    effector:SetKey(_TRACK_SX, 1.28, 4.58600093416625);
    effector:SetKey(_TRACK_SY, 1.28, 5);
    effector:SetKey(_TRACK_SX, 1.96, 5.45041553917314);
    effector:SetKey(_TRACK_SY, 1.96, 6);
    effector:SetKey(_TRACK_SX, 2.4, 2.69258589511755);
    effector:SetKey(_TRACK_SY, 2.4, 2.77938517179024);
    effector:SetKey(_TRACK_SX, 3.24, 3);
    effector:SetKey(_TRACK_SY, 3.24, 3.32266996444226);
    effector:SetKey(_TRACK_SX, 3.88, 4);
    effector:SetKey(_TRACK_SY, 3.88, 3.91909342074309);
    effector:SetKey(_TRACK_A, 0.48, 0);
    effector:SetKey(_TRACK_A, 1.96, 1.570796325);
    effector:SetKey(_TRACK_A, 2.4, 0);
    effector:SetKey(_TRACK_A, 3.88, -1.570796325);
    effector:SetKey(_TRACK_O, 0.48, 0);
    effector:SetKey(_TRACK_O, 1.16, 1);
    effector:SetKey(_TRACK_O, 1.96, 0);
    effector:SetKey(_TRACK_O, 2.4, 0);
    effector:SetKey(_TRACK_O, 3.08, 1);
    effector:SetKey(_TRACK_O, 3.88, 0);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/dust_fall01.png');
    element:SetName('Layer_2');
    compositionDust_fall:AddElement(element);
    element:SetHotSpot(32, 32);
    element:SetParentElement(compositionDust_fall);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 4.32);

    effector:SetKey(_TRACK_X, 0, 465.244125366211);
    effector:SetKey(_TRACK_Y, 0, -154.155532836914);
    effector:SetKey(_TRACK_X, 0.68, 463.855331420898);
    effector:SetKey(_TRACK_Y, 0.68, 30.5533294677734);
    effector:SetKey(_TRACK_X, 1.04, 463.855331420898);
    effector:SetKey(_TRACK_Y, 1.04, 123.602157592773);
    effector:SetKey(_TRACK_X, 1.48, 469.410491943359);
    effector:SetKey(_TRACK_Y, 1.48, 265.258575439453);
    effector:SetKey(_TRACK_X, 2.12, 561.070526123047);
    effector:SetKey(_TRACK_Y, 2.12, -156.93310546875);
    effector:SetKey(_TRACK_X, 2.8, 559.681732177734);
    effector:SetKey(_TRACK_Y, 2.8, 27.7757568359375);
    effector:SetKey(_TRACK_X, 3.16, 533.29475402832);
    effector:SetKey(_TRACK_Y, 3.16, 138.878829956055);
    effector:SetKey(_TRACK_X, 3.6, 520.795669555664);
    effector:SetKey(_TRACK_Y, 3.6, 269.424942016602);
    effector:SetKey(_TRACK_SX, 0, 3.77757685352622);
    effector:SetKey(_TRACK_SY, 0, 4.60216998191682);
    effector:SetKey(_TRACK_SX, 0.8, 6.46835443037975);
    effector:SetKey(_TRACK_SY, 0.8, 4.8625678119349);
    effector:SetKey(_TRACK_SX, 1.48, 8);
    effector:SetKey(_TRACK_SY, 1.48, 8.2472939540835);
    effector:SetKey(_TRACK_SX, 2.12, 2.12479016495886);
    effector:SetKey(_TRACK_SY, 2.12, 2.07783023556575);
    effector:SetKey(_TRACK_SX, 2.88, 3.85953208726729);
    effector:SetKey(_TRACK_SY, 2.88, 3.75473289957336);
    effector:SetKey(_TRACK_SX, 3.6, 6);
    effector:SetKey(_TRACK_SY, 3.6, 6.58223899510684);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 1.48, -1.3962634);
    effector:SetKey(_TRACK_A, 2.12, 0);
    effector:SetKey(_TRACK_A, 3.6, 1.570796325);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.68, 1);
    effector:SetKey(_TRACK_O, 1.48, 0);
    effector:SetKey(_TRACK_O, 2.12, 0);
    effector:SetKey(_TRACK_O, 2.8, 1);
    effector:SetKey(_TRACK_O, 3.6, 0);

    effector:Play();

    compositionDust_fall:Play();

    return compositionDust_fall;
end

createCompositionSpider1 = function()

    local compositionSpider1 = CreateCompositionSequence();
    local compositionDuration = 5.16;
    compositionSpider1:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/[01-10].png');
    element:SetName('Layer_1');
    compositionSpider1:AddElement(element);
    element:SetHotSpot(44.5, 61.5);
    element:SetParentElement(compositionSpider1);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 5.2);

    effector:SetKey(_TRACK_X, 0, 898.533447265625);
    effector:SetKey(_TRACK_Y, 0, 837.783004760742);
    effector:SetKey(_TRACK_X, 0.28, 914.533447265625);
    effector:SetKey(_TRACK_Y, 0.28, 775.783004760742);
    effector:SetKey(_TRACK_X, 0.44, 941.533447265625);
    effector:SetKey(_TRACK_Y, 0.44, 748.783004760742);
    effector:SetKey(_TRACK_X, 0.64, 949.533447265625);
    effector:SetKey(_TRACK_Y, 0.64, 733.783004760742);
    effector:SetKey(_TRACK_X, 1.16, 955.533447265625);
    effector:SetKey(_TRACK_Y, 1.16, 605.783004760742);
    effector:SetKey(_TRACK_X, 1.32, 954.533447265625);
    effector:SetKey(_TRACK_Y, 1.32, 575.783004760742);
    effector:SetKey(_TRACK_X, 1.44, 954.533447265625);
    effector:SetKey(_TRACK_Y, 1.44, 581.283004760742);
    effector:SetKey(_TRACK_X, 1.6, 958.533447265625);
    effector:SetKey(_TRACK_Y, 1.6, 513.783004760742);
    effector:SetKey(_TRACK_X, 1.72, 940.783447265625);
    effector:SetKey(_TRACK_Y, 1.72, 494.283004760742);
    effector:SetKey(_TRACK_X, 1.84, 919.283447265625);
    effector:SetKey(_TRACK_Y, 1.84, 504.783004760742);
    effector:SetKey(_TRACK_X, 1.88, 916.783447265625);
    effector:SetKey(_TRACK_Y, 1.88, 508.033004760742);
    effector:SetKey(_TRACK_X, 1.92, 919.283447265625);
    effector:SetKey(_TRACK_Y, 1.92, 504.783004760742);
    effector:SetKey(_TRACK_X, 2.08, 945.033447265625);
    effector:SetKey(_TRACK_Y, 2.08, 478.283004760742);
    effector:SetKey(_TRACK_X, 2.24, 954.033447265625);
    effector:SetKey(_TRACK_Y, 2.24, 452.283004760742);
    effector:SetKey(_TRACK_X, 2.44, 959.533447265625);
    effector:SetKey(_TRACK_Y, 2.44, 413.283004760742);
    effector:SetKey(_TRACK_X, 2.68, 948.033447265625);
    effector:SetKey(_TRACK_Y, 2.68, 370.283004760742);
    effector:SetKey(_TRACK_X, 2.92, 961.533447265625);
    effector:SetKey(_TRACK_Y, 2.92, 336.283004760742);
    effector:SetKey(_TRACK_X, 3.12, 965.533447265625);
    effector:SetKey(_TRACK_Y, 3.12, 294.283004760742);
    effector:SetKey(_TRACK_X, 3.36, 962.033447265625);
    effector:SetKey(_TRACK_Y, 3.36, 243.783004760742);
    effector:SetKey(_TRACK_X, 3.6, 951.033447265625);
    effector:SetKey(_TRACK_Y, 3.6, 200.783004760742);
    effector:SetKey(_TRACK_X, 3.92, 929.033447265625);
    effector:SetKey(_TRACK_Y, 3.92, 140.283004760742);
    effector:SetKey(_TRACK_X, 4.24, 900.033447265625);
    effector:SetKey(_TRACK_Y, 4.24, 95.7830047607422);
    effector:SetKey(_TRACK_X, 4.68, 884.754959106445);
    effector:SetKey(_TRACK_Y, 4.68, 3.78392028808594);
    effector:SetKey(_TRACK_X, 5.04, 884.419525146484);
    effector:SetKey(_TRACK_Y, 5.04, -95.048828125);
    effector:SetKey(_TRACK_SX, 0, 1.44943820224719);
    effector:SetKey(_TRACK_SY, 0, 0.82113821138211);
    effector:SetKey(_TRACK_SX, 0.52, 0.91011235955056);
    effector:SetKey(_TRACK_SY, 0.52, 0.67479674796748);
    effector:SetKey(_TRACK_SX, 0.64, 0.91011235955056);
    effector:SetKey(_TRACK_SY, 0.64, 0.98373983739837);
    effector:SetKey(_TRACK_SX, 1.16, 0.8876404494382);
    effector:SetKey(_TRACK_SY, 1.16, 0.75609756097561);
    effector:SetKey(_TRACK_SX, 1.32, 0.73033707865169);
    effector:SetKey(_TRACK_SY, 1.32, 0.60975609756097);
    effector:SetKey(_TRACK_SX, 1.84, 0.43820224719101);
    effector:SetKey(_TRACK_SY, 1.84, 0.52032520325203);
    effector:SetKey(_TRACK_SX, 1.88, 0.5);
    effector:SetKey(_TRACK_SY, 1.88, 0.59370439858244);
    effector:SetKey(_TRACK_SX, 1.92, 0.43);
    effector:SetKey(_TRACK_SY, 1.92, 0.5105857827809);
    effector:SetKey(_TRACK_SX, 2.24, 0.4);
    effector:SetKey(_TRACK_SY, 2.24, 0.47496351886596);
    effector:SetKey(_TRACK_SX, 2.44, 0.5);
    effector:SetKey(_TRACK_SY, 2.44, 0.59370439858244);
    effector:SetKey(_TRACK_SX, 2.68, 0.4);
    effector:SetKey(_TRACK_SY, 2.68, 0.47496351886596);
    effector:SetKey(_TRACK_SX, 3.12, 0.45);
    effector:SetKey(_TRACK_SY, 3.12, 0.5343339587242);
    effector:SetKey(_TRACK_SX, 3.92, 0.55);
    effector:SetKey(_TRACK_SY, 3.92, 0.65307483844069);
    effector:SetKey(_TRACK_SX, 4.4, 0.65);
    effector:SetKey(_TRACK_SY, 4.4, 0.77181571815718);
    effector:SetKey(_TRACK_SX, 5.04, 0.75);
    effector:SetKey(_TRACK_SY, 5.04, 0.89055659787367);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 0.4, 0.17582347035126);
    effector:SetKey(_TRACK_A, 0.52, -0.15133561286654);
    effector:SetKey(_TRACK_A, 0.68, 0.01531916463871);
    effector:SetKey(_TRACK_A, 0.84, -0.42902039030101);
    effector:SetKey(_TRACK_A, 1.08, -0.37124615964388);
    effector:SetKey(_TRACK_A, 1.28, 0.01929209033633);
    effector:SetKey(_TRACK_A, 1.4, -0.49453254859953);
    effector:SetKey(_TRACK_A, 1.56, -0.14805726360802);
    effector:SetKey(_TRACK_A, 1.92, -0.15424185335585);
    effector:SetKey(_TRACK_A, 2.12, 0.22451359460936);
    effector:SetKey(_TRACK_A, 2.24, -0.13354406842537);
    effector:SetKey(_TRACK_A, 2.36, -0.37693282573531);
    effector:SetKey(_TRACK_A, 2.64, -0.85859678281769);
    effector:SetKey(_TRACK_A, 2.84, -0.08251125234395);
    effector:SetKey(_TRACK_A, 2.92, -0.23967367487539);
    effector:SetKey(_TRACK_A, 3.2, -0.51527333318814);
    effector:SetKey(_TRACK_A, 3.48, -0.85099420388381);
    effector:SetKey(_TRACK_A, 3.92, -0.95794364726273);
    effector:SetKey(_TRACK_A, 4.24, -0.81256763363955);
    effector:SetKey(_TRACK_A, 4.4, -0.71788105374294);
    effector:SetKey(_TRACK_A, 4.64, -0.5164077485792);

    effector:Play();

    compositionSpider1:Play();

    return compositionSpider1;
end

createCompositionWaterDrop1 = function()

    local compositionWaterDrop1 = CreateCompositionSequence();
    local compositionDuration = 1.6;
    compositionWaterDrop1:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/Drop_L3.png');
    element:SetName('Layer_1');
    compositionWaterDrop1:AddElement(element);
    element:SetHotSpot(27.75, 23.25);
    element:SetParentElement(compositionWaterDrop1);
    element:SetXY(60.5, 552.75);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.6);

    effector:SetKey(_TRACK_SX, 0, 0.15044247787611);
    effector:SetKey(_TRACK_SY, 0, 0.2258064516129);
    effector:SetKey(_TRACK_SX, 0.8, 0.15044247787611);
    effector:SetKey(_TRACK_SY, 0.8, 0.2258064516129);
    effector:SetKey(_TRACK_SX, 0.92, 0.2212389380531);
    effector:SetKey(_TRACK_SY, 0.92, 0.9247311827957);
    effector:SetKey(_TRACK_SX, 0.96, 0.32743362831858);
    effector:SetKey(_TRACK_SY, 0.96, 1.13978494623657);
    effector:SetKey(_TRACK_SX, 1, 0.45132743362831);
    effector:SetKey(_TRACK_SY, 1, 1.12903225806453);
    effector:SetKey(_TRACK_SX, 1.04, 0.58407079646017);
    effector:SetKey(_TRACK_SY, 1.04, 1.06451612903227);
    effector:SetKey(_TRACK_SX, 1.12, 0.78761061946902);
    effector:SetKey(_TRACK_SY, 1.12, 1.00000000000001);
    effector:SetKey(_TRACK_SX, 1.2, 0.85840707964601);
    effector:SetKey(_TRACK_SY, 1.2, 0.7741935483871);
    effector:SetKey(_TRACK_SX, 1.28, 0.88495575221238);
    effector:SetKey(_TRACK_SY, 1.28, 0.17204301075269);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.8, 0);
    effector:SetKey(_TRACK_O, 0.92, 1);
    effector:SetKey(_TRACK_O, 1.12, 1);
    effector:SetKey(_TRACK_O, 1.28, 0);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/Drop_L4.png');
    element:SetName('Layer_2');
    compositionWaterDrop1:AddElement(element);
    element:SetHotSpot(49.390243902439, 10.5);
    element:SetParentElement(compositionWaterDrop1);
    element:SetXY(58, 552.5);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.6);

    effector:SetKey(_TRACK_SX, 0, 0.27710843373494);
    effector:SetKey(_TRACK_SY, 0, 0.28571428571429);
    effector:SetKey(_TRACK_SX, 0.92, 0.42738955823293);
    effector:SetKey(_TRACK_SY, 0.92, 0.42857142857143);
    effector:SetKey(_TRACK_SX, 1.12, 0.5459437751004);
    effector:SetKey(_TRACK_SY, 1.12, 0.61904761904762);
    effector:SetKey(_TRACK_SX, 1.56, 0.81927710843374);
    effector:SetKey(_TRACK_SY, 1.56, 0.71428571428571);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.92, 0);
    effector:SetKey(_TRACK_O, 1.12, 1);
    effector:SetKey(_TRACK_O, 1.56, 0);

    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/Drop_L2.png');
    element:SetName('Layer_3');
    compositionWaterDrop1:AddElement(element);
    element:SetHotSpot(6.25, 16.5);
    element:SetParentElement(compositionWaterDrop1);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.6);

    effector:SetKey(_TRACK_X, 0, 61.5);
    effector:SetKey(_TRACK_Y, 0, 87.25);
    effector:SetKey(_TRACK_X, 0.2, 61.5);
    effector:SetKey(_TRACK_Y, 0.2, 98);
    effector:SetKey(_TRACK_X, 0.36, 61.5);
    effector:SetKey(_TRACK_Y, 0.36, 111.25);
    effector:SetKey(_TRACK_X, 0.8, 61);
    effector:SetKey(_TRACK_Y, 0.8, 551.25);
    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 0.48, 0.93043478260869);
    effector:SetKey(_TRACK_SY, 0.48, 1.31558441558442);
    effector:SetKey(_TRACK_SX, 0.8, 1.39130434782609);
    effector:SetKey(_TRACK_SY, 0.8, 1.07142857142857);
    effector:SetKey(_TRACK_SX, 0.92, 2.04347826086957);
    effector:SetKey(_TRACK_SY, 0.92, 0.40476190476191);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.16, 0.4);
    effector:SetKey(_TRACK_O, 0.2, 0.8);
    effector:SetKey(_TRACK_O, 0.36, 1);
    effector:SetKey(_TRACK_O, 0.8, 1);
    effector:SetKey(_TRACK_O, 0.92, 0);

    effector:Play();


    -- Layer Layer_4
    local element = auxCreateCompositionElement('data/Texture/Scenes/04_ElevatorInCave/Animations/Cave/Drop_L1.png');
    element:SetName('Layer_4');
    compositionWaterDrop1:AddElement(element);
    element:SetHotSpot(14.75, 4.75);
    element:SetParentElement(compositionWaterDrop1);
    element:SetXY(61, 68.75);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 1.6);

    effector:SetKey(_TRACK_SX, 0, 0.78688524590164);
    effector:SetKey(_TRACK_SY, 0, 0.47368421052632);
    effector:SetKey(_TRACK_SX, 0.28, 0.57821617115865);
    effector:SetKey(_TRACK_SY, 0.28, 1.3381052631579);
    effector:SetKey(_TRACK_SX, 0.36, 0.36100305640456);
    effector:SetKey(_TRACK_SY, 0.36, 1.4781052631579);
    effector:SetKey(_TRACK_SX, 0.44, 0.26878994165046);
    effector:SetKey(_TRACK_SY, 0.44, 1.31743859649123);
    effector:SetKey(_TRACK_SX, 0.6, 0.28313420394554);
    effector:SetKey(_TRACK_SY, 0.6, 0.2821052631579);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.2, 1);
    effector:SetKey(_TRACK_O, 0.4, 0.9);
    effector:SetKey(_TRACK_O, 0.6, 0);

    effector:Play();

    compositionWaterDrop1:Play();

    return compositionWaterDrop1;
end

