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

//-------Aliases-------//
private alias 73 : TYPE_EGGMANMINE


// Static Values

// Tables

event ObjectMain
	switch object.state
	case 0
		if object.propertyValue == 0
			object.value1 = -12
			object.value2 = 12
			object.value3 = -12
			object.value4 = 12
		else
			object.value1 = -16
			object.value2 = 16
			object.value3 = -24
			object.value4 = 16
		end if
		object.state++
		break
	case 1
		object.ypos += object.yvel
		object.yvel += 0x1800
		temp0 = stage.waterLevel
		temp0 <<= 16
		if object.ypos > temp0
			CreateTempObject(TypeName[Water Splash], 0, object.xpos, temp0)
			PlaySfx(SfxName[Water Splash], 0)
			object[tempObjectPos].drawOrder = 4
			object.yvel >>= 2
			if object.propertyValue == 0
				Sin(temp1, oscillation)
				temp1 >>= 5
				temp1 <<= 16
				object.value5 = temp1
				object.value5 += object.xpos
				object.state++
			else
				object.state = 5
			end if
		end if
		break
	case 2
		object.ypos += object.yvel
		object.yvel -= 0x1800
		temp0 = stage.waterLevel
		temp0 <<= 16
		if object.ypos <= temp0
			object.ypos = temp0
			object.yvel = 0
			object.state++
		end if
		Sin(object.xpos, oscillation)
		object.xpos >>= 5
		object.xpos <<= 16
		FlipSign(object.xpos)
		object.xpos += object.value5
		break
	case 3
		object.ypos = stage.waterLevel
		object.ypos <<= 16
		Sin(object.xpos, oscillation)
		object.xpos >>= 5
		object.xpos <<= 16
		FlipSign(object.xpos)
		object.xpos += object.value5
		break
	case 4
		object.value0++
		object.frame = object.animationTimer
		object.frame >>= 5
		object.animationTimer += object.value0
		object.animationTimer &= 63
		if object.value0 == 60
			object.value3 -= 16
			object.type = TypeName[Blank Object]
			CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)
			object[tempObjectPos].drawOrder = 4
			CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)
			object[tempObjectPos].ypos -= 0x180000
			object[tempObjectPos].drawOrder = 4
			CreateTempObject(TypeName[Water Splash], 0, object.xpos, object.ypos)
			object[tempObjectPos].drawOrder = 4
			PlaySfx(SfxName[Explosion], 0)
		end if
		break
	case 5
		object.ypos += object.yvel
		object.yvel -= 0x1000
		temp0 = stage.waterLevel
		temp0 <<= 16
		if object.ypos <= temp0
			object.ypos = temp0
			object.yvel = 0
			object.state++
		end if
		break
	case 6
		object.ypos = stage.waterLevel
		object.ypos <<= 16
		temp0 = object[0].xpos
		temp0 -= 0x20000
		temp1 = object[0].xpos
		temp1 += 0x20000
		if object.xpos < temp0
			object.xpos += 0x8000
			object.direction = FLIP_X
		end if
		if object.xpos > temp1
			object.xpos -= 0x8000
			object.direction = FLIP_NONE
		end if
		object.value0++
		if object.value0 == 180
			object.value0 = 0
			object.state++
		end if
		break
	case 7
		temp0 = object[0].xpos
		temp0 -= 0x20000
		temp1 = object[0].xpos
		temp1 += 0x20000
		if object.xpos < temp0
			object.xpos += 0x8000
			object.direction = FLIP_X
		end if
		if object.xpos > temp1
			object.xpos -= 0x8000
			object.direction = FLIP_NONE
		end if
		object.value0++
		object.frame = object.animationTimer
		object.frame >>= 5
		object.animationTimer += object.value0
		object.animationTimer &= 63
		if object.value0 == 60
			object.value0 = 0
			object.state++
			object.value1 = -32
			object.value2 = 32
			arrayPos0 = object.entityPos
			arrayPos0--
			ResetObjectEntity(arrayPos0, TypeName[Water Geyser], 1, object.xpos, object.ypos)
			object[arrayPos0].drawOrder = 4
			CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)
			object[tempObjectPos].drawOrder = 4
			CreateTempObject(TypeName[Water Splash], 0, object.xpos, object.ypos)
			object[tempObjectPos].drawOrder = 4
			PlaySfx(SfxName[Big Explosion], 0)
		end if
		break
	case 8
		temp0 = object.value0
		temp0 %= 6
		if temp0 == 5
			temp1 = object.xpos
			temp1 -= 0x180000
			temp2 = object.xpos
			temp2 += 0x180000
			CreateTempObject(TypeName[Smoke Puff], 0, temp1, object.ypos)
			object[tempObjectPos].drawOrder = 4
			CreateTempObject(TypeName[Smoke Puff], 0, temp2, object.ypos)
			object[tempObjectPos].drawOrder = 4
			object.ypos -= 0x180000
			object.value3 -= 24
			CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)
			object[tempObjectPos].drawOrder = 4
		end if
		object.value0++
		if object.value0 == 24
			object.type = TypeName[Blank Object]
		end if
		break
	end switch
	foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
		BoxCollisionTest(C_TOUCH, object.entityPos, object.value1, object.value3, object.value2, object.value4, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
		if checkResult == 1
			CallFunction(PlayerObject_Hit)
		end if
	next
	if object.outOfBounds == 1
		object.type = TypeName[Blank Object]
	end if
end event


event ObjectDraw
	if object.state < 8
		temp0 = object.propertyValue
		temp0 += object.frame
		DrawSprite(temp0)
	end if
end event


event ObjectStartup
	LoadSpriteSheet("HPZ/Objects.gif")
	SpriteFrame(-16, -16, 32, 32, 443, 99)
	SpriteFrame(-16, -16, 32, 32, 367, 222)
	SpriteFrame(-24, -24, 48, 48, 353, 66)
	SpriteFrame(-24, -24, 48, 48, 400, 206)
end event

event RSDKDraw
	DrawSprite(0)
end event

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