{

	TenStay = MergeColorAlpha( [>>img\tentacle\stand_c.bmp], ColorToAlpha([>>img\tentacle\stand_a.bmp]) );	
	TenJump[0] = MergeColorAlpha( [>>img\tentacle\jump0_c.bmp], ColorToAlpha([>>img\tentacle\jump0_a.bmp]) );	
	TenJump[1] = MergeColorAlpha( [>>img\tentacle\jump1_c.bmp], ColorToAlpha([>>img\tentacle\jump1_a.bmp]) );	
	TenJump[2] = MergeColorAlpha( [>>img\tentacle\jump2_c.bmp], ColorToAlpha([>>img\tentacle\jump2_a.bmp]) );	
	TenJump[3] = MergeColorAlpha( [>>img\tentacle\jump3_c.bmp], ColorToAlpha([>>img\tentacle\jump3_a.bmp]) );	

	FUNC["ten_stay"]=
	{		
		DrawFinal( TenStay, _posx, _posy-linesiz2, 50, 50, 1 );
	}

	FUNC["ten_jump_tg"]=
	{
		
		TGX = _posx;
		TGY = _posy-linesiz2;
		TGA = 1;
	}

	FUNC["ten_jump_tg_last"]=
	{
		
		TGX = _posx+50;
		TGY = _posy-linesiz2*0.5;
		TGA = 0;
	}

	FUNC["ten_jump"]=
	{
		_a = (CurTime()-_start) / (_end - _start);
		tmp_cx = _posx*(1- _a) + TGX*_a;
		tmp_cy = (_posy-linesiz2)*(1- _a) + TGY*_a;

		DrawFinal( TenJump[ range(_a*4,0,3) ], tmp_cx, tmp_cy, 50, 50, 1*(1- _a) + TGA*_a );
	}

	FUNC["ten_jump_first"]=
	{
		_a = (CurTime()-_start) / (_end - _start);
		tmp_cx = (_posx-30)*(1- _a) + TGX*_a;
		tmp_cy = (_posy)*(1- _a) + TGY*_a;

		DrawFinal( TenJump[ range(_a*4,0,3) ], tmp_cx, tmp_cy, 50, 50, 1*(1- _a) + TGA*_a );
	}

	FUNC["perKara_fill"]=
	{
		linesiz = CurKaraSizeY*0.2;
		linesiz2 = CurKaraSizeY*0.8;

		tmp_cs = CurKaraStart;
		tmp_ce = CurKaraEnd;
		tmp_ck = CurKara;
		CurKara( CurLine, tmp_ck+1 );

		if( CompEqual( CurKara, -1 ) )
		{//this is last kara in line

			Emit( "ten_stay", tmp_cs, tmp_ce, CurLine, tmp_ck, -1 );
			Emit( "ten_jump_tg_last", tmp_ce, tmp_ce+0.2, CurLine, tmp_ck, -1 );
			Emit( "ten_jump", tmp_ce, tmp_ce+0.2, CurLine, tmp_ck, -1 );
		}
		else
		{

			tmp_ns = range(CurKaraStart,CurLineStart,CurLineEnd);
			tmp_js = range(tmp_ns - 0.1,tmp_cs+(tmp_ce-tmp_cs)*0.3,tmp_ce);

			Emit( "ten_stay", tmp_cs, tmp_js, CurLine, tmp_ck, -1 );
			Emit( "ten_jump_tg", tmp_js, tmp_ns, CurLine, tmp_ck+1, -1 );
			Emit( "ten_jump", tmp_js, tmp_ns, CurLine, tmp_ck, -1 );
		}
	}

	FUNC["perLine"]=
	{
		Emit( "ten_jump_tg", CurLineStart-0.2, CurLineStart, CurLine, 0, -1 );
		Emit( "ten_jump_first", CurLineStart-0.2, CurLineStart, CurLine, 0, -1 );

		EnumKaras( "perKara_fill", CurLine );
	}

	EnumLines( "perLine" );










	FUNC["scaler1"]=
	{
		_sc = (CurTime()-(_end-0.1))/0.1;
		_sc = range( _sc, 0, 1 );
		ScalPosY[_line*1000+_kara] = _sc*linesiz*0.5;
		ScalSizY[_line*1000+_kara] = 0.5 + (1-_sc)*0.5;
	}

	FUNC["scaler2"]=
	{
		ScalPosY[_line*1000+_kara] = linesiz;
		ScalSizY[_line*1000+_kara] = 0.5;
	}

	FUNC["scaler3"]=
	{
		_sc = (CurTime()-_start)/0.1;
		_sc = 1- _sc;
		_sc = range( _sc, 0, 1 );
		ScalPosY[_line*1000+_kara] = _sc*linesiz*0.5;
		ScalSizY[_line*1000+_kara] = 0.5 + (1-_sc)*0.5;
	}

	FUNC["scaler4"]=
	{
		_sc = (CurTime()-_start)/0.1;
		_sc = range( _sc, 0, 1 );
		ScalPosY[_line*1000+_kara] = 0;
		ScalSizY[_line*1000+_kara] = (1-_sc);
	}

	FUNC["fill_stay"]=
	{
		_col0_r = GetParam( _line, "Color0", CurTime(), 0 );
		_col0_g = GetParam( _line, "Color0", CurTime(), 1 );
		_col0_b = GetParam( _line, "Color0", CurTime(), 2 );
		_draw1 = FillColor( _img_text, _col0_r, _col0_g, _col0_b );
		CurKara( _line, _kara );
		_ce = range(CurLineStart+TimePerKara*_kara+TimePerKara,CurLineStart,CurKaraStart);
		_cs = _ce - TimePerKara*3;
		_a = (CurTime() - _cs)/(_ce-_cs);
		_a = range( _a, 0, 1 );
		DrawFinal( _draw1, _posx, _posy+ScalPosY[_line*1000+_kara], 100, 100*_a*ScalSizY[_line*1000+_kara], range(_a*3,0,1) );
	}
	FUNC["border_stay"]=
	{
		_col2_r = GetParam( _line, "Color2", CurTime(), 0 );
		_col2_g = GetParam( _line, "Color2", CurTime(), 1 );
		_col2_b = GetParam( _line, "Color2", CurTime(), 2 );
		_draw2 = FillColor( _img_border, _col2_r, _col2_g, _col2_b );
		CurKara( _line, _kara );
		_ce = range(CurLineStart+TimePerKara*_kara,CurLineStart,CurKaraStart);
		_cs = _ce - TimePerKara*3;
		_a = (CurTime() - _cs)/(_ce-_cs);
		_a = range( _a, 0, 1 );
		DrawFinal( _draw2, _posx, _posy+ScalPosY[_line*1000+_kara], 100, 100*ScalSizY[_line*1000+_kara], _a );
	}
	FUNC["perKara_scaler2"]=
	{
		Emit( "scaler1", CurLineStart, CurKaraStart, CurLine, CurKara, -1 );
		Emit( "scaler2", CurKaraStart, CurKaraEnd, CurLine, CurKara, -1 );
		Emit( "scaler3", CurKaraEnd, CurLineEnd, CurLine, CurKara, -1 );
		Emit( "scaler4", CurLineEnd, CurLineEnd+0.1, CurLine, CurKara, -1 );
	}
	FUNC["perKara_fill2"]=
	{
		Emit( "fill_stay", CurLineStart, CurLineEnd+0.1, CurLine, CurKara, -1 );
	}
	FUNC["perKara_border2"]=
	{
		Emit( "border_stay", CurLineStart, CurLineEnd+0.1, CurLine, CurKara, -1 );
	}

	FUNC["perLine2"]=
	{
		EnumKaras( "perKara_scaler2", CurLine );
		EnumKaras( "perKara_border2", CurLine );
		EnumKaras( "perKara_fill2", CurLine );
	}


	TimePerKara = 0.05;
	EnumLines( "perLine2" );
}