// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Sonic Team Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------


reserve function SkipScreen

//-------Aliases-------//
private alias 2 : TYPE_SONICTEAM


event ObjectMain	
	switch object.state
	case 0
		temp0 = 0
		object.value0 = 320
		object.value15 = 0
		object.state++
		if saveRAM[278] == 1
			LoadSpriteSheet("Title/SonicTeam.gif")
		else
			rand(object.value1, 18)	
		end if
		SetScreenFade(0, 0, 0, 255)
		CallFunction(SkipScreen)
		break
	case 1
		if object.value0 > 0
			object.value0 -= 8	
		else
			object.state++
		end if
		SetScreenFade(0, 0, 0, object.value0)
		CallFunction(SkipScreen)
		break
	case 2
		object.value0++
		switch object.value1 
		case 17
			temp0 = 260
			break		
		case 14
			temp0 = 140
			break
		default	
			temp0 = 120
			break
		end switch
		if object.value0 >= temp0
			object.value0 = 0
			object.state++
		end if
		CallFunction(SkipScreen)
		break
	case 3
		if object.value0 < 320
			object.value0 += 8
		else
			ResetObjectEntity(object.entityPos, TypeName[Logo], 0, 0, 0)
			StopSfx(SfxName[Prey])
			StopSfx(SfxName[Push Block])
		end if
		SetScreenFade(0, 0, 0, object.value0)
		break
	end switch
end event

function SkipScreen	
	CheckTouchRect(0, 0, screen.xsize, screen.ysize)
	if checkResult > -1
		inputPress.start = 1
	end if
	if inputPress.start == 1
		object.state = 3
	end if
end function


event ObjectDraw
	if saveRAM[278] == 0
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)
		if object.value1 != 14
			DrawSpriteScreenXY(21, temp4, temp5)
		end if
		switch object.value1
		case 0
		case 1
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			if object.value1 == 1
				temp0 = 12
			else
				temp0 = 16
			end if
			temp1 = 10
			break
		case 2
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter	
			temp3 -= 15
			//animate
			object.value10++
			if object.value10 == 20
				object.value10 = 0
				object.value11++
				object.value11 %= 2
			end if
			temp0 = 14
			temp0 += object.value11

			//y movin
			object.value12++
			if object.value12 == 10
				object.value12 = 0
				object.value13++
			end if
			temp3 -= object.value13

			//x movin
			object.value14++
			if object.value14 == 60
				object.value14 = 0
				if object.value16 == 0
					object.value15 += 1
					object.value16 = 1
				else
					object.value15 -= 1
					object.value16 = 0
				end if
			end if
			temp2 += object.value15
			break
		case 3
		case 4			
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			if object.value1 == 3
				temp0 = 17
				temp1 = 10
			else
				temp0 = 18
				object.value10++
				if object.value10 == 10
					object.value10 = 0
					object.value11++
					object.value11 %= 2
				end if
				temp1 = 19
				temp1 += object.value11

				object.value12++
				if object.value12 == 10
					object.value12 = 0
					object.value13++
				end if
				temp2 += object.value13
				temp4 += object.value13
			end if
			break
		case 5
		case 6
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			if object.value1 == 5
				temp0 = 24
				object.value10++
				if object.value10 == 10
					object.value10 = 0
					object.value11++
					object.value11 %= 2
				end if
				temp0 += object.value11
				DrawSpriteScreenXY(26, 185, 106)
				DrawSpriteScreenXY(27, 255, 113)
				DrawSpriteScreenXY(28, 155, 109)
				temp2 -= 8
				temp3 -= 40
				temp4 -= 8
				temp5 -= 40
			else
				temp0 = 22
				temp0 += object.value11
				object.value10++
				if object.value10 == 10
					object.value10 = 0
					object.value11++
					object.value11 %= 2
				end if
			end if
			break
		case 7
		case 8 
			temp2 = -200
			temp3 = screen.ycenter
			temp4 = -200
			temp5 = screen.ycenter
			temp0 = 18
			object.value10++
			if object.value10 == 5
				object.value10 = 0
				object.value11++
				object.value11 %= 2
			end if
			temp1 = 19
			temp1 += object.value11

			object.value13 += 5
			temp2 += object.value13
			temp4 += object.value13

			object.value14++
			if object.value14 == 3
				object.value14 = 0
				object.value15++
				object.value15 %= 4
			end if
			temp6 = object.value15
			if object.value1 == 7
				temp6 += 29
				DrawSpriteScreenXY(temp6, temp2, temp3)
			else
				temp6 += 33
				DrawSpriteScreenXY(temp6, temp2, 113)			
			end if
			break
		case 9
		case 10
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			if object.value1 == 9
				object.value10++
				if object.value10 == 30
					object.value10 = 0
					object.value11++
					object.value11 %= 4
				end if
				temp0 = 39
				temp0 += object.value11
				if screen.xsize == 320
					temp2 += 20
				end if

				object.value12++
				if object.value12 == 10
					object.value12 = 0
					object.value13++
				end if
				temp2 += object.value13
				temp2 -= 200
				if screen.xsize == 320
					temp2 += 20
				end if
				DrawSpriteScreenXY(43, temp2, temp3)

				
				//Push SignPost
				object.value17++
				object.value17 &= 511
				temp6 = object.value17
				temp6 &= 31
				if temp6 < 3
					PlaySfx(SfxName[Push Block], 0)
				end if
			else
				object.value10++
				if object.value10 == 30
					object.value10 = 0
					object.value11++
					object.value11 %= 2
				end if
				temp0 = 37
				temp0 += object.value11
			end if
			break
		case 11
		case 12
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			if object.value1 == 11
				temp2 = -450
				temp3 = -450
				
				if screen.xsize == 320
					temp2 -= 50
					temp3 -= 40
				end if
				
				//y movin
				object.value12++
				if object.value12 == 1
					object.value12 = 0
					object.value13 += 3
				end if
				temp3 += object.value13

				//x movin
				object.value14++
				if object.value14 == 1
					object.value14 = 0
					object.value15 += 3
				end if
				temp2 += object.value15
				temp0 = 45
			else
				temp0 = 44
			end if
			break
		case 13
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			temp0 = 46
			temp1 = 47
			break
		case 14
			temp2 = screen.xcenter
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			temp5 -= 30			
			
			temp0 = 49
			temp6 = 20			
			
			if object.value11 > 100
				object.value12 += 4
				if object.value12 > 30
					object.value12 = 30
				end if
				temp5 += object.value12
				DrawSpriteScreenXY(21, temp4, temp5)
				if object.value11 > 110
					object.value13 += 1
					if object.value13 == 5
						object.value14++
						object.value13 = 0
					end if
					if object.value14 > 2
						temp7 = 10
					else
						temp7 = object.value14
						temp7 += 52
					end if
				else
					temp7 = 50
				end if
				object.value15 += 1
				if object.value15 == 5
					object.value15 = 0
					object.value16++
					object.value16 %= 2
				end if
				temp0 = object.value16
				temp0 += 51
				object.value17 += 4
				temp2 -= object.value17
			else
				if object.value15 == 0
					object.value12++
					if object.value12 == 20
						object.value12 = 0
						object.value13 += 1
						object.value14++
					end if
				else	
					object.value12++
					if object.value12 == 20
						object.value12 = 0
						object.value13 -= 1
						object.value14++
					end if			
				end if
				
				if object.value14 == 2
					object.value14 = 0
					object.value15++
					if object.value15 > 1
						object.value15 = 0
					end if
				end if
				
				temp5 += object.value13
				temp6 += object.value13
				DrawSpriteScreenXY(21, temp4, temp5)
				DrawSpriteScreenXY(48, temp4, temp5)
				temp7 = 50
			end if
			object.value11++
			
			DrawSpriteScreenXY(temp7, screen.xcenter, temp6)
			
			temp6 = screen.xsize
			temp6 += 20
			temp6 -= object.value18
			
			temp7 = object.value20
			temp7 += 56
			object.direction = FLIP_X

			if object.value18 < 170
				object.value18 += 2	
				object.value19 += 1
				if object.value19 == 5
					object.value19 = 0 
					object.value20++
					object.value20 %= 6
				end if
			else
				temp7 = 62
			end if

			if object.value11 > 150
				temp7 = 12
				EditFrame(12, -16, -19, 29, 39, 310, 127) //12 sonic thumbs
			end if		
			
			if screen.xsize == 320
				temp6 += 50
			end if
			
			DrawSpriteScreenFX(temp7, FX_FLIP, temp6, 131)
			break
		case 15
			temp2 = screen.xcenter
			temp3 = 131
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			temp0 = 63
			temp2 -= 40
			temp1 = 9
			break
		case 16
			temp2 = screen.xsize
			temp2 += 200
			temp2 -= object.value13
			object.value13 += 5
			
			temp3 = screen.ycenter
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			
			object.value12++
			if object.value12 == 6
				object.value12 = 0
				object.value11++
			end if	
			object.value11 %= 4
			temp0 = object.value11
			temp0 += 64
			
			temp7 = object.value11
			temp7 += 68
			DrawSpriteScreenXY(temp7, temp2, temp3)
			if object.value14 >= 15
				DrawSpriteScreenXY(76, temp2, temp3)
			end if
			object.value14++
			object.value14 %= 30
			break				
		case 17
			temp4 = screen.xcenter
			temp5 = screen.ycenter
			temp1 = 9		
			if object.value15 > 122
				temp2 = screen.xsize
				temp2 += 100
				temp2 -= object.value13
				object.value13 += 4
				
				temp3 = screen.ycenter
				
				object.value12++
				if object.value12 == 3
					object.value12 = 0
					object.value11++
				end if	
				object.value11 %= 4
				temp0 = object.value11
				temp0 += 64
				
				
				temp7 = object.value11
				temp7 += 72			
				temp6 = 0
				temp6 -= 500
				temp6 += object.value14
				object.value14 += 9
				
				if screen.xsize == 320
					temp6 -= 90
				end if				
				
				DrawSpriteScreenXY(temp7, temp6, temp3)	
			else
				temp0 = 9
			end if	
			object.value15++
			if object.value15 > 191
				object.value21 = 1
			end if
			if object.value15 == 1
				PlaySfx(SfxName[Prey],0)
			end if
			break
		end switch	

		switch object.value1
		case 0
		case 1
		case 2
		case 7
		case 13
			EditFrame(21, -34, -30, 67, 59, 242, 107) //21
			break
		case 3
		case 4
			EditFrame(21, -34, -30, 67, 59, 242, 167) //21
			break
		case 5
		case 6
		case 8
			EditFrame(21, -34, -30, 67, 59, 242, 227) //21
			break
		case 9
		case 10
			EditFrame(21, -34, -30, 67, 59, 246, 310) //21
			break
		case 11
		case 12
			EditFrame(21, -34, -30, 67, 59, 246, 370) //21
			break
		case 16
		case 15
			EditFrame(21, -34, -30, 67, 59, 273, 430) //21
			break		
		end switch		

		DrawSpriteScreenXY(temp0, temp2, temp3)
		DrawSpriteScreenXY(temp1, temp4, temp5)
		DrawSpriteScreenXY(0, screen.xcenter, 200)	

		if object.value21 == 1
			DrawRect(0, 0, screen.xsize, screen.ysize, color7, 0, 0, 255)		
		end if
	else
		DrawRect(0, 0, screen.xsize, screen.ysize, color7, color7, color7, 255)
		DrawSpriteScreenXY(1, screen.xcenter, screen.ycenter)
	end if
	
end event


event ObjectStartup
	LoadSpriteSheet("Title/SonicTeam.gif")
	LoadSpriteSheet("Title/SonicTeamUS.gif")
	LoadPalette("SpecialStage.act", 0, 0, 0, 100)
	switch saved.language
	case 0
		SpriteFrame(-74, -24, 148, 40, 1, 1)
		break
	case 1 //PTBR
		SpriteFrame(-74, -24, 148, 40, 1, 42)
		break	
	case 2 //SP
		SpriteFrame(-74, -24, 148, 40, 1, 83)
		break	
	case 3 //FR
		SpriteFrame(-74, -24, 148, 40, 1, 165)
		break	
	case 4 //GE
		SpriteFrame(-80, -24, 160, 40, 1, 124)
		break	
	end switch
	
		SpriteFrame(-256, -128, 512, 256, 0, 0)
	
	//blank shit
	SpriteFrame(-128, -40, 151, 64, 1, 83) //2
	SpriteFrame(-120, -40, 239, 64, 1, 148) //3
	SpriteFrame(-96, -48, 183, 96, 1, 213) //4
	SpriteFrame(-120, -40, 244, 64, 1, 310) //5
	SpriteFrame(-104, -48, 212, 96, 1, 375) //6
	SpriteFrame(-128, -40, 252, 88, 257, 0) //7
	SpriteFrame(-128, -7, 256, 16, 253, 89) //8
	
	SpriteFrame(0, 0, 0, 0, 0, 0) //9
	SpriteFrame(0, 0, 0, 0, 0, 0) //10
	SpriteFrame(0, 0, 0, 0, 0, 0) //11

	//actual shit
	SpriteFrame(-55, -10, 29, 39, 310, 127) //12 sonic thumbs
	SpriteFrame(15, 10, 35, 46, 340, 120) //13 sonic jump
	SpriteFrame(-75, 10, 45, 47, 376, 119) //14 sonic bubble
	SpriteFrame(-75, 10, 45, 47, 422, 119) //15 sonic bubble
	SpriteFrame(-43, -68, 40, 38, 468, 128) //16 soinc sing

	SpriteFrame(-41, -65, 36, 35, 310, 191) //17 Tails Victory
	SpriteFrame(-41, -57, 33, 27, 347, 199) //18 Tails Fly

	SpriteFrame(-47, -62, 32, 9, 347, 179) //19 Tails Flight Tails
	SpriteFrame(-47, -62, 32, 9, 347, 189) //20 Tails Flight Tails

	SpriteFrame(-34, -30, 67, 59, 242, 107) //21

	SpriteFrame(-35, -68, 28, 38, 310, 227) //22 chuck
	SpriteFrame(-35, -68, 28, 38, 339, 227) //23 chuck 2

	SpriteFrame(17, 29, 31, 40, 406, 228) //24 wtf is goin on
	SpriteFrame(17, 29, 31, 40, 438, 228) //25 wtf is goin on 2

	if screen.xsize == 320
		SpriteFrame(-60, 0, 40, 43, 470, 225) //26 s1f knux
		SpriteFrame(-50, 0, 32, 36, 437, 269) //27 s1 ca22 knux
		SpriteFrame(-60, 0, 30, 40, 470, 269) //28 s3 knux
	else
		SpriteFrame(0, 0, 40, 43, 470, 225) //26 s1f knux
		SpriteFrame(0, 0, 32, 36, 437, 269) //27 s1 ca22 knux
		SpriteFrame(0, 0, 30, 40, 470, 269) //28 s3 knux		
	end if	

	SpriteFrame(20, -48, 33, 35, 1, 472) //29 sonic rocket
	SpriteFrame(17, -48, 36, 35, 35, 472) //30 sonic rocket 2
	SpriteFrame(22, -48, 31, 35, 72, 472) //31 sonic rocket 3
	SpriteFrame(17, -48, 36, 35, 104, 472) //32 sonic rocket 4

	SpriteFrame(-76, 0, 32, 36, 141, 472) //33 knux run
	SpriteFrame(-76, 0, 32, 36, 174, 472) //34 knux run 2
	SpriteFrame(-75, 0, 32, 36, 207, 472) //35 knux run 3
	SpriteFrame(-76, 0, 32, 36, 240, 472) //36 knux run 4

	SpriteFrame(-30, -69, 25, 39, 314, 330) //37 mighty idk
	SpriteFrame(-30, -69, 25, 39, 340, 330) //38 might idk 2

	temp0 = -8
	SpriteFrame(20, temp0, 25, 38, 366, 331) //39 mighty push
	SpriteFrame(14, temp0, 31, 38, 392, 331) //40 mighty push 2
	SpriteFrame(20, temp0, 25, 38, 424, 331) //41 mighty push 3
	SpriteFrame(14, temp0, 31, 38, 450, 331) //42 mighty push 4

	SpriteFrame(45, -18, 48, 48, 314, 281) //43 mighty push 4

	SpriteFrame(-60, 4, 42, 26, 314, 403) //44 ray 
	SpriteFrame(22, -48, 31, 35, 357, 394) //45 ray flgiht

	SpriteFrame(-70, -2, 35, 31, 310, 88) //46 Sonic CD
	SpriteFrame(35, -11, 28, 40, 213, 66) //47 IS THAT METAL SONIC?????
	
	SpriteFrame(-34, -30, 67, 59, 120, 251)	//48 Silver Logo
	SpriteFrame(-75, -10, 38, 39, 59, 209) //49 Silver Levitating
	SpriteFrame(-30, 0, 30, 40, 98, 208) //50 Shadow Posing
	SpriteFrame(-75, -8, 39, 37, 129, 209) //51 Silver Run 1
	SpriteFrame(-75, -8, 39, 37, 169, 209) //52 Silver Run 2
	SpriteFrame(-30, 0, 36, 47, 1, 249)  //53 Shadow Fall 1
	SpriteFrame(-34, 0, 40, 47, 38, 249) //54 Shadow Fall	2
	SpriteFrame(-34, 0, 40, 47, 79, 249) //55 Shadow Fall 3	
	
	SpriteFrame(-14, -18, 32, 39, 1, 311) //56 Sonic Walk 1		
	SpriteFrame(-19, -20, 38, 38, 34, 312) //57 Sonic Walk 2		
	SpriteFrame(-14, -18, 26, 39, 73, 311) //58 Sonic Walk 3		
	SpriteFrame(-19, -19, 31, 39, 100, 311) //59 Sonic Walk 4		
	SpriteFrame(-19, -21, 36, 39, 132, 311) //60 Sonic Walk 5		
	SpriteFrame(-13, -19, 25, 39, 169, 311) //61 Sonic Walk 6		
	SpriteFrame(-16, -19, 29, 39, 195, 311) //62 Sonic Idle
	
	SpriteFrame(-11, -19, 22, 37, 341, 452) //63 Amy Pog

	SpriteFrame(-68, -6, 32, 36, 364, 453) //64 sonic run
	SpriteFrame(-68, -6, 32, 36, 397, 453) //65 sonic run 2
	SpriteFrame(-68, -6, 32, 36, 430, 453) //66 sonic run 3
	SpriteFrame(-68, -6, 32, 36, 463, 453) //67 sonic run 4

	SpriteFrame(17, -4, 34, 33, 241, 1) //68 amy run 
	SpriteFrame(18, -4, 34, 33, 276, 1) //69 amy run 2
	SpriteFrame(17, -4, 34, 33, 311, 1) //70 amy run 3
	SpriteFrame(18, -4, 34, 33, 346, 1) //71 amy run 4

	SpriteFrame(17, -30, 90, 63, 2, 353) //72 omg furnace
	SpriteFrame(16, -24, 91, 57, 93, 353) //73 omg furnace 2
	SpriteFrame(17, -26, 90, 59, 93, 411) //74 omg furnace 3
	SpriteFrame(16, -29, 91, 62, 389, 370) //75 omg furnace 4
	
	SpriteFrame(-45, -50, 142, 52, 346, 66) //76 SONIC HOLY SHIT MARRY ME


	foreach (TypeName[Sonic Team], arrayPos0, ALL_ENTITIES)
		object[arrayPos0].value2 = 0	
	next	
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
