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

//-------Aliases-------//
private alias 3 : TYPE_PLAYER2OBJECT

private alias object.value0 : player.rings
private alias object.value3 : player.drownCounter // Countdown before player moves to next drown "level"
private alias object.value4 : player.drownLevel
private alias object.value5 : player.CustomRollAnimSpeed
private alias object.value6 : player.speedShoes
private alias object.value7 : player.invincible
private alias object.value8 : player.invulnerable
private alias object.value9 : player.minRollSpeed
private alias object.value10 : player.animationReserve // Used by springs to store what animation will play after the bounce animation
private alias object.value11 : camera.lockTimer // A timer of how long the camera will stay locked for
private alias object.value12 : player.tailsFrame
private alias object.value13 : player.tailsAnim
private alias object.value14 : player.skidding
private alias object.value15 : player.dropDashCharge
private alias object.value16 : player.isPlayer2 // 0/false is player 1, 1/true if player 2
private alias object.value17 : debugMode.currentSelection
private alias object.value18 : player.sortedDrawOrder
private alias object.value19 : player.enemyChainCounter // How many enemies the player has bounced on in a row
private alias object.value20 : player.speedCap // Not to be confused with options.speedCap
private alias object.value21 : player.acceleration
private alias object.value22 : player.deceleration
private alias object.value23 : player.airAcceleration
private alias object.value24 : player.groundRotation
private alias object.value25 : player.gravityValue // Also used in underwater checks , 0x1000 if underwater, otherwise 0x3800. Not to be confused with player.gravity
private alias object.value26 : player.flightVelocity // Used by Tails only
private alias object.value27 : player.jumpVelocity
private alias object.value28 : player.jumpStrength
private alias object.value29 : player.rollingDecelerationA // Active rolling deceleration - With the player holding the opposite direction
private alias object.value30 : player.jumpOffset // Added to the player's position when jumping/rolling. Normally -5 for S&K, and -1 for Tails
private alias object.value31 : player.rollingDecelerationP // Passive rolling deceleration - Without the player holding the opposite direction
private alias object.value32 : player.jumpAbility // Used to store whatever function this player has for its jump ability
private alias object.value33 : player.spindashFunction // Used to store whatever function this player has for its spindash ability
private alias object.value34 : player.collisionEnabled
private alias object.value35 : player.doubleJumpState
private alias object.value36 : player.tailsGrabTimeout // Tails assist lockout timer
private alias object.value37 : player.shield // Current shield the player has, see above constants for what is what
private alias object.value38 : player.hitboxTop
private alias object.value39 : player.hitboxBottom
private alias object.value40 : player.hitboxLeft
private alias object.value41 : player.hitboxRight
private alias object.value42 : player.prevGravity
private alias object.value43 : player.jumpInTimer
private alias object.value44 : player.p2InputFunction
private alias object.value45 : player.autoJumpTimer
private alias object.value46 : player.targetLeaderPos.x
private alias object.value47 : player.targetLeaderPos.y

// Function declarations
reserve function Player2Object_Function62
reserve function Player2Object_Function63
reserve function Player2Object_Function64
reserve function Player2Object_Function65
reserve function Player2Object_Function66
reserve function Player2Object_Function67
reserve function Player2Object_Function68
reserve function Player2Object_Function69
reserve function Player2Object_Function70

// Static Values
public value PlayerObject_StateUp = 0;
public value PlayerObject_StateDown = 0;
public value PlayerObject_StateLeft = 0;
public value PlayerObject_StateRight = 0;
public value PlayerObject_StateJumpPress = 0;
public value PlayerObject_StateJumpHold = 0;
public value Player2Object_value13 = 0;
public value Player2Object_value14 = 0;

// Tables
public table Player2Object_table6
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	
end table

public table Player2Object_table7
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
	
end table


function Player2Object_Function69
	temp0 = 0
end function

function Player2Object_TailManiaRotate
	temp0 = object.rotation
	//if object.gravity == GRAVITY_GROUND
		if object.angle < 0x04
			player.groundrotation = 0
		else
			if object.angle > 0xFC
				player.groundrotation = 0
			else
				temp1 = 0
				if object.angle > 0x10
					if object.angle < 0xE8
						temp1 = object.angle
						temp1 <<= 1
					end if
				end if
				
				temp2 = temp1
				temp2 -= player.groundrotation
				temp3 = 1
				temp4 = object.speed
				abs(temp4)
				if temp4 <= 0x60000
					temp3++
				end if
				temp4 = temp2
				abs(temp4)
				temp5 = temp2
				temp5 -= 0x200
				abs(temp5)
				if temp4 >= temp5
					temp4 = temp2
					temp4 += 0x200
					abs(temp4)
					if temp5 < temp4
						temp4 = temp2
						temp4 -= 0x200
						temp4 >>= temp3
						player.groundrotation += temp4
					else
						temp4 = temp2
						temp4 += 0x200
						temp4 >>= temp3
						player.groundrotation += temp4
					end if
				else
					temp5 = temp2
					temp5 += 0x200
					if temp4 < temp5
						temp4 = temp2
						temp4 >>= temp3
						player.groundrotation += temp4
					else
						temp4 = temp2
						temp4 += 0x200
						temp4 >>= temp3
						player.groundrotation += temp4
					end if
				end if
			end if
		end if
	//end if
	object.rotation = player.groundrotation
end function

function Player2Object_Function70
	CheckNotEqual(player.p2InputFunction, Player2Object_Function69)
	temp0 = checkResult
	CheckNotEqual(object[0].up, 1)
	temp0 &= checkResult
	if temp0 == 0
		CallFunction(PlayerObject_StartTailsFlight)
	end if
end function


function Player2Object_Function62
	if object.controlMode > -1
		PlayerObject_StateUp <<= 1
		PlayerObject_StateUp |= object[0].up
		PlayerObject_StateUp &= 0xFFFF
		PlayerObject_StateDown <<= 1
		PlayerObject_StateDown |= object[0].down
		PlayerObject_StateDown &= 0xFFFF
		PlayerObject_StateLeft <<= 1
		PlayerObject_StateLeft |= object[0].left
		PlayerObject_StateLeft &= 0xFFFF
		PlayerObject_StateRight <<= 1
		PlayerObject_StateRight |= object[0].right
		PlayerObject_StateRight &= 0xFFFF
		PlayerObject_StateJumpPress <<= 1
		PlayerObject_StateJumpPress |= object[0].jumpPress
		PlayerObject_StateJumpPress &= 0xFFFF
		PlayerObject_StateJumpHold <<= 1
		PlayerObject_StateJumpHold |= object[0].jumpHold
		PlayerObject_StateJumpHold &= 0xFFFF
		if object[0].state == PlayerObject_FlyCarry
			PlayerObject_StateDown <<= 15
			PlayerObject_StateLeft <<= 15
			PlayerObject_StateRight <<= 15
			PlayerObject_StateJumpPress <<= 15
			PlayerObject_StateJumpHold <<= 15
		end if
		temp0 = PlayerObject_StateUp
		temp0 >>= 15
		object.up = temp0
		temp0 = PlayerObject_StateDown
		temp0 >>= 15
		object.down = temp0
		temp0 = PlayerObject_StateLeft
		temp0 >>= 15
		object.left = temp0
		temp0 = PlayerObject_StateRight
		temp0 >>= 15
		object.right = temp0
		temp0 = PlayerObject_StateJumpPress
		temp0 >>= 15
		object.jumpPress = temp0
		temp0 = PlayerObject_StateJumpHold
		temp0 >>= 15
		object.jumpHold = temp0
	else
		PlayerObject_StateUp = 0
		PlayerObject_StateDown = 0
		PlayerObject_StateLeft = 0
		PlayerObject_StateRight = 0
		PlayerObject_StateJumpPress = 0
		PlayerObject_StateJumpHold = 0
	end if
	if object[0].state != PlayerObject_Death
		if object[0].type != TypeName[Death Event]
			SetTableValue(object[0].xpos, Player2Object_value14, Player2Object_table6)
			SetTableValue(object[0].ypos, Player2Object_value14, Player2Object_table7)
			Player2Object_value14++
			Player2Object_value14 &= 15
			Player2Object_value13++
			Player2Object_value13 &= 15
			CheckEqual(object[0].gravity, GRAVITY_AIR)
			temp0 = checkResult
			CheckEqual(object[0].value42, 0)
			temp0 &= checkResult
			if temp0 == 0
				GetTableValue(player.targetLeaderPos.x, Player2Object_value13, Player2Object_table6)
				GetTableValue(player.targetLeaderPos.y, Player2Object_value13, Player2Object_table7)
			else
				player.targetLeaderPos.x = object[0].xpos
				player.targetLeaderPos.y = object[0].ypos
			end if
		else
			temp0 = Player2Object_value14
			temp0--
			if temp0 < 0
				temp0 += 16
			end if
			GetTableValue(player.targetLeaderPos.x, temp0, Player2Object_table6)
			GetTableValue(player.targetLeaderPos.y, temp0, Player2Object_table7)
		end if
	else
		temp0 = Player2Object_value14
		temp0--
		if temp0 < 0
			temp0 += 16
		end if
		GetTableValue(player.targetLeaderPos.x, temp0, Player2Object_table6)
		GetTableValue(player.targetLeaderPos.y, temp0, Player2Object_table7)
	end if
end function


function Player2Object_Function63
	CallFunction(Player2Object_Function62)
	if object[0].type == TypeName[Player Object]
		temp0 = object.angle
		temp0 += 16
		temp0 &= 224
		if temp0 == 0
			if object.left == 1
				temp0 = object[0].xpos
				temp0 -= 0x80000
				if object.xpos < temp0
					if object.xvel <= 0
						object.left = 0
					end if
				end if
			end if
			if object.right == 1
				temp0 = object[0].xpos
				temp0 += 0x80000
				if object.xpos > temp0
					if object.yvel <= 0
						object.right = 0
					end if
				end if
			end if
		end if
		if object[0].state != PlayerObject_FlyCarry
			temp0 = player.targetLeaderPos.x
			temp1 = object[0].gravity
			temp1 |= object[0].value42
			if temp1 == 0
				if object[0].speed < 0x20000
					if object[0].speed > -0x20000
						if object[0].direction == FLIP_NONE
							temp0 -= 0x200000
						else
							temp0 += 0x200000
						end if
					end if
				end if
			end if
			temp0 -= object.xpos
			if temp0 != 0
				if temp0 < 0
					if temp0 <= -0x300000
						object.right = 0
						object.left = 1
					end if
					if object.speed != 0
						if object.direction == FLIP_X
							Cos256(temp1, object.angle)
							temp1 *= 192
							object.xpos -= temp1
						end if
					end if
				else
					if temp0 >= 0x300000
						object.left = 0
						object.right = 1
					end if
					if object.speed != 0
						if object.direction == FLIP_NONE
							Cos256(temp1, object.angle)
							temp1 *= 192
							object.xpos += temp1
						end if
					end if
				end if
			end if
			if object.animation == ANI_PUSHING
				player.autoJumpTimer++
				if object[0].direction == object.direction
					if object[0].animation == ANI_PUSHING
						player.autoJumpTimer = 0
					end if
				end if
				if player.autoJumpTimer >= 30
					if object.gravity == GRAVITY_GROUND
						CallFunction(PlayerObject_StartJump)
					end if
					object.value1 = 0
					player.autoJumpTimer = 0
				end if
			else
				temp0 = object.ypos
				temp0 -= player.targetLeaderPos.y
				if temp0 > 0x200000
					player.autoJumpTimer++
					if player.autoJumpTimer >= 64
						if object.gravity == GRAVITY_GROUND
							CallFunction(PlayerObject_StartJump)
						end if
						object.value1 = 0
						player.autoJumpTimer = 0
					end if
				else
					player.autoJumpTimer = 0
				end if
			end if
			if object.controlLock > 0
				if object.speed < 0x8000
					if object.speed > -0x8000
						player.p2InputFunction = Player2Object_Function64
					end if
				end if
			end if
		end if
	end if
end function


function Player2Object_Function64
	object.up = 0
	object.down = 0
	object.left = 0
	object.right = 0
	object.jumpPress = 0
	object.jumpHold = 0
	if object.controlLock == 0
		if object.gravity == GRAVITY_GROUND
			if object.speed < 0x4000
				if object.speed > -0x4000
					player.p2InputFunction = Player2Object_Function65
					player.autoJumpTimer = 1
					if object.animation != ANI_SPINDASH
						if object.xpos < player.targetLeaderPos.x
							object.direction = FLIP_NONE
						else
							object.direction = FLIP_X
						end if
						object.down = 1
					end if
				end if
			end if
		end if
	end if
end function


function Player2Object_Function65
	if player.autoJumpTimer < 64
		object.down = 1
		temp0 = player.autoJumpTimer
		temp0 &= 15
		if temp0 == 0
			object.jumpPress = 1
		else
			object.jumpPress = 0
		end if
		player.autoJumpTimer++
	else
		player.autoJumpTimer = 0
		object.down = 0
		object.jumpPress = 0
		player.p2InputFunction = Player2Object_Function63
	end if
end function


function Player2Object_Function66
	CallFunction(Player2Object_Function62)
	if player.gravityValue == 0x3800
		object.animation = ANI_FLYING
	else
		object.animation = ANI_SWIMMING
	end if
	temp0 = player.targetLeaderPos.x
	temp0 -= object.xpos
	temp1 = temp0
	temp0 >>= 4
	if object.xpos < player.targetLeaderPos.x
		object.direction = FLIP_NONE
		if temp0 > 0xC0000
			temp0 = 0xC0000
		end if
		if object[0].xvel > 0
			temp0 += object[0].xvel
		end if
		temp0 += 0x10000
		if temp0 > temp1
			temp0 = temp1
			temp1 = 0
		end if
	else
		object.direction = FLIP_X
		if temp0 < -0xC0000
			temp0 = -0xC0000
		end if
		if object[0].xvel < 0
			temp0 += object[0].xvel
		end if
		temp0 -= 0x10000
		if temp0 < temp1
			temp0 = temp1
			temp1 = 0
		end if
	end if
	object.xpos += temp0
	if object.ypos < player.targetLeaderPos.y
		object.ypos += 0x10000
	end if
	if object.ypos > player.targetLeaderPos.y
		object.ypos -= 0x10000
	end if
	if object[0].type != TypeName[Death Event]
		if object[0].state != PlayerObject_Death
			if object[0].state != PlayerObject_Drown
				if object[0].state != PlayerObject_Unknown2
					if temp1 == 0
						temp0 = player.targetLeaderPos.y
						temp0 -= object.ypos
						if temp0 < 0
							FlipSign(temp0)
						end if
						if temp0 < 0x20000
							object.state = PlayerObject_HandleAir
							object.animation = ANI_JUMPING
							object.gravity = GRAVITY_AIR
							object.tileCollisions = 1
							object.interaction = 1
							object.controlMode = 1
							object.controlLock = 0
							object.angle = 0
							player.p2InputFunction = Player2Object_Function63
							object.collisionPlane = object[0].collisionPlane
							PlayerObject_StateUp = 0
							PlayerObject_StateDown = 0
							PlayerObject_StateLeft = 0
							PlayerObject_StateRight = 0
							PlayerObject_StateJumpPress = 0
							PlayerObject_StateJumpHold = 0
						end if
					end if
				end if
			end if
		end if
	end if
end function


function Player2Object_Function67
	if object[0].type == TypeName[Player Object]
		if object.outOfBounds == 1
			player.jumpInTimer++
		else
			player.jumpInTimer = 0
		end if
		if player.jumpInTimer > 239
			player.jumpInTimer = 0
			object.state = Player2Object_Function66
			object.xpos = object[0].xpos
			object.ypos = screen.yoffset
			object.ypos -= 128
			object.ypos <<= 16
			object.xvel = 0
			object.yvel = 0
			object.speed = 0
			object.tileCollisions = 0
			object.interaction = 0
			object.controlMode = 1
			player.sortedDrawOrder = 4
			player.drownCounter = 0
			player.drownLevel = 0
		end if
		CheckEqual(object[0].state, PlayerObject_Death)
		temp0 = checkResult
		CheckEqual(object[0].type, TypeName[Death Event])
		temp0 |= checkResult
		CheckNotEqual(object.state, PlayerObject_Knockback)
		temp0 &= checkResult
		CheckNotEqual(object.state, PlayerObject_Death)
		temp0 &= checkResult
		if temp0 == 1
			player.jumpInTimer = 0
			object.state = Player2Object_Function66
			object.xvel = 0
			object.yvel = 0
			object.speed = 0
			object.tileCollisions = 0
			object.interaction = 0
		end if
	end if
end function


function Player2Object_Function68
	if object.state == PlayerObject_Death
		player.p2InputFunction = Player2Object_Function69
	end if
	if object.state == PlayerObject_Drown
		player.p2InputFunction = Player2Object_Function69
	end if
	CallFunction(player.p2InputFunction)
	if object.state != PlayerObject_Knockback
		if player.invulnerable > 0
			player.invulnerable--
			GetBit(temp0, player.invulnerable, 2)
			if temp0 == 1
				object.visible = 0
			else
				object.visible = 1
			end if
		end if
	end if
	if player.invincible > 0
		if object.state != PlayerObject_Knockback
			if player.invincible > 0x7D0
				player.invincible = 120
				player.invulnerable = 3
			end if
		end if
		player.invincible--
		if player.invincible == 0
			player.invulnerable = 0
			object.visible = 1
		end if
	end if
	if object.state != PlayerObject_LookingUp
		if object.state != PlayerObject_Crouching
			if object.lookPosY > 0
				object.lookPosY -= 2
			end if
			if object.lookPosY < 0
				object.lookPosY += 2
			end if
		end if
	end if
	if object.state != PlayerObject_HandleTailsFlight
		if player.flightVelocity != 0
			StopSfx(SfxName[Flying])
			StopSfx(SfxName[Tired])
			player.flightVelocity = 0
		end if
	end if
end function


event ObjectMain
	CallFunction(Player2Object_Function68)
	CallFunction(object.state)
	ProcessAnimation()
	CallFunction(TailsObject_Function61)
	if player.collisionEnabled == 0
		temp0 = player.prevGravity
		player.prevGravity = object.gravity
		ProcessObjectMovement()
		player.prevGravity ^= 1
		CheckEqual(object.gravity, GRAVITY_GROUND)
		player.prevGravity |= checkResult
		player.prevGravity ^= 1
		if temp0 == 1
			if player.prevGravity == 0
				player.enemyChainCounter = 0
				if object.animation == ANI_JUMPING
					if object.down == 0
						if object.state != PlayerObject_HandleRoll
							if object.state != PlayerObject_Unknown2
								object.animation = ANI_WALKING
								object.iypos += player.jumpOffset
							end if
						end if
					end if
				end if
			end if
		end if
	else
		player.collisionEnabled = 0
	end if
	CallFunction(Player2Object_Function67)
end event


event ObjectDraw
		if object.animation != object.prevAnimation
			object.prevAnimation = object.animation
			object.frame = 0
			object.animationTimer = 0
			object.animationSpeed = 0
		end if
		if player.tailsAnim != object.animation
			if object.animation > 4
				if object.animation != 37		
					if object.animation != 33
						raytail.frame = 0
					end if
				end if
			end if
			if player.tailsAnim > 4
				if player.tailsAnim != 37		
					if player.tailsAnim != 33
						raytail.frame = 0
					end if
				end if					
			end if
			player.tailsAnim = object.animation
		end if
		switch player.tailsAnim
		case 0	
			if object.frame == 0
				temp0 = player.tailsFrame
				temp0 >>= 3
				if object.visible == 1
					DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)
				end if
			end if
			break
		case 1
		case 3
		case 4
		case 21
		case 33		
		case 37	
			temp0 = player.tailsFrame
			temp0 >>= 3
			if object.visible == 1
				DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)
			end if
			break
		case 5
			temp7 = object[1].frame
			temp7 += 14
			if saved.rotate == 0
				temp0 = object.rotation
				if object.rotation >= 0x100
					temp1 = 532
					temp1 -= object.rotation
					temp1 >>= 6
					object.rotation = 8
					object.rotation -= temp1
				else
					object.rotation += 20
					object.rotation >>= 6
				end if
				if object.rotation == 8
					object.rotation = 0
				end if
				object.rotation <<= 6
			else
				CallFunction(Player2Object_TailManiaRotate)
			end if
			if object.visible == 1
				DrawSpriteFX(temp7, FX_ROTATE, object.xpos, object.ypos)
			end if
			break
		case 7
		case 9
			temp0 = player.tailsFrame
			temp0 >>= 2
			temp0 += 10
			if object.visible == 1
				DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)
			end if
			break
		case 10
		//case 43
			temp0 = player.tailsFrame
			temp0 >>= 2
			CheckEqual(object.xvel, 0)
			temp1 = checkResult
			CheckEqual(object.yvel, 0)
			temp1 &= checkResult
			temp2 = object.rotation
			if temp1 == 0
				temp0 += 5
				ATan2(object.rotation, object.xvel, object.yvel)
				if object.direction == FLIP_X
					object.rotation += 128
				end if
			else
				temp0 += 5
				object.rotation = 0
			end if
			object.rotation <<= 1
			if object.visible == 1
				DrawSpriteFX(temp0, FX_ROTATE, object.xpos, object.ypos)
			end if
			object.rotation = temp2
			break
		case 17
			temp0 = player.tailsFrame
			temp0 /= 10
			temp0 += 10
			if object.visible == 1
				DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)
			end if
			break
		case 24
		case 25
		case 39
		case 40
		case 41
			temp0 = object.frame
			temp0 += 20
			if object.visible == 1
				LoadSpriteSheet("Players/Tails2.gif")
				DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)
				LoadSpriteSheet("Players/Tails1.gif")
			end if
			break
		end switch
			
		if saved.rotate == 0
			CallFunction(PlayerObject_Force45)
		else
			CallFunction(PlayerObject_ManiaRotate)
			//DrawObjectAnimation()
		end if
end event


event ObjectStartup
	Player2Object_value13 = 1
	Player2Object_value14 = 0
	PlayerObject_StateUp = 0
	PlayerObject_StateDown = 0
	PlayerObject_StateLeft = 0
	PlayerObject_StateRight = 0
	PlayerObject_StateJumpPress = 0
	PlayerObject_StateJumpHold = 0
	if stage.player2Enabled == 1
		ResetObjectEntity(1, TypeName[Player 2 Object], 1, object[0].xpos, object[0].ypos)
		object[1].xpos -= 0x100000
		LoadSpriteSheet("Players/Tails2.gif")
		LoadSpriteSheet("Players/Tails1.gif")
		LoadAnimation("Tails.ani")
		SpriteFrame(-22, -8, 16, 24, 82, 199)
		SpriteFrame(-26, -8, 20, 24, 99, 199)
		SpriteFrame(-26, -8, 20, 24, 120, 199)
		SpriteFrame(-26, -8, 20, 24, 141, 199)
		SpriteFrame(-26, -8, 20, 24, 162, 199)
		
		SpriteFrame(-33, -8, 22, 18, 233, 166)
		SpriteFrame(-33, -8, 23, 18, 232, 184)
		SpriteFrame(-33, -8, 21, 17, 201, 232)				
		SpriteFrame(-33, -8, 24, 18, 223, 100)
		
		SpriteFrame(-25, 9, 18, 16, 237, 234) //Unused??
		
		SpriteFrame(-27, -6, 22, 18, 233, 166)
		SpriteFrame(-27, -6, 23, 18, 232, 184)
		SpriteFrame(-27, -6, 21, 17, 201, 232)				
		SpriteFrame(-27, -6, 24, 18, 223, 100)

		SpriteFrame(-28, -3, 22, 18, 233, 166) // 14
		SpriteFrame(-28, -3, 23, 18, 232, 184)
		SpriteFrame(-28, -3, 21, 17, 201, 232)				
		SpriteFrame(-28, -3, 24, 18, 223, 100)
		SpriteFrame(-28, -3, 21, 17, 201, 232)
		SpriteFrame(-28, -3, 23, 18, 232, 184)

		SpriteFrame(-24, -16, 32, 9, 1, 114) // 20
		SpriteFrame(-24, -16, 32, 9, 1, 124)


		object[1].groupID = GROUP_PLAYERS
		object[1].propertyValue = 1
		object[1].state = PlayerObject_HandleAir
		object[1].priority = PRIORITY_ACTIVE
		object[1].controlMode = 0
		object[1].drawOrder = -1
		object[1].value18 = 4
		currentPlayer = 1
		CallFunction(PlayerObject_SwapPhysics)
		object[1].value31 = 0x2000
		object[1].value30 = -1
		object[1].value16 = 1
		object[1].value32 = Player2Object_Function70
		if saved.spindash == 1
			object[1].value33 = PlayerObject_StartSpindash
		else
			if options.attractMode == 0
				object[1].value33 = PlayerObject_StartJump
			else
				object[1].value33 = PlayerObject_StartSpindash			
			end if
		end if
		CheckCurrentStageFolder("Continue")
		if checkResult == 1
			object[1].value44 = Player2Object_Function69
		else
			object[1].value44 = Player2Object_Function63
		end if
		temp0 = 0
		while temp0 < 16
			SetTableValue(object[0].xpos, temp0, Player2Object_table6)
			SetTableValue(object[0].ypos, temp0, Player2Object_table7)
			temp0++
		loop
		object[1].value38 = HITBOX_AUTO
		object[1].value39 = HITBOX_AUTO
		object[1].value40 = HITBOX_AUTO
		object[1].value41 = HITBOX_AUTO
	end if
end event

event RSDKDraw
	DrawSprite(0)
end event

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