0% found this document useful (0 votes)
11 views3 pages

Air Bubble R

The document describes the Air Bubbler object for the RSDK Project: Sonic 1/Sonic 2, detailing its functions and events such as drawing, spawning, and main object behavior. It includes function declarations, static values, and a table for bubble properties. The script is authored by Christian Whitehead and Simon Thomley and was unpacked by Rubberduckycooly.

Uploaded by

Jogatina animal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views3 pages

Air Bubble R

The document describes the Air Bubbler object for the RSDK Project: Sonic 1/Sonic 2, detailing its functions and events such as drawing, spawning, and main object behavior. It includes function declarations, static values, and a table for bubble properties. The script is authored by Christian Whitehead and Simon Thomley and was unpacked by Rubberduckycooly.

Uploaded by

Jogatina animal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

// ----------------------------------

// RSDK Project: Sonic 1/Sonic 2


// Script Description: Air Bubbler Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 44 : TYPE_AIRBUBBLER

// Function declarations
reserve function AirBubbler_DebugDraw
reserve function AirBubbler_DebugSpawn

// Static Values

// Tables

private table AirBubbler_table27


2, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 2
end table

function AirBubbler_DebugDraw
DrawSprite(0)
end function

function AirBubbler_DebugSpawn
CreateTempObject(TypeName[Air Bubbler], 0, object.xpos, object.ypos)
object[tempObjectPos].drawOrder = 4
object[tempObjectPos].value4 = 0
end function

event ObjectMain
object.frame++
object.frame %= 48
if object.iypos > stage.waterLevel
temp0 = object.ixpos
temp0 -= screen.cameraX
Abs(temp0)
if temp0 < screen.xcenter
temp0 = object.iypos
temp0 -= screen.cameraY
Abs(temp0)
if temp0 < screen.ycenter
temp1 = 0
if object.value3 == 0
object.value0--
if object.value0 < 0
SetBit(object.value3, 0, 1)
Rand(object.value2, 0xFFFF)
object.value1 = object.value2
object.value2 %= 6
object.value1 &= 12
object.value4--
if object.value4 < 0
object.value4 = object.propertyValue
SetBit(object.value3, 1, 1)
end if
temp1 = 1
end if
else
object.value0--
if object.value0 < 0
temp1 = 1
end if
end if
if temp1 == 1
Rand(object.value0, 32)
Rand(temp0, 17)
temp0 -= 8
temp0 <<= 16
temp0 += object.xpos
CreateTempObject(TypeName[Air Bubble], 2, temp0,
object.ypos)
object[tempObjectPos].value1 =
object[tempObjectPos].xpos
Rand(object[tempObjectPos].angle, 256)
object[tempObjectPos].angle <<= 1
object[tempObjectPos].drawOrder = 4
object[tempObjectPos].yvel = -0x8800
object[tempObjectPos].value2 = 0xFFFF
temp0 = object.value1
temp0 += object.value2
GetTableValue(object[tempObjectPos].propertyValue,
temp0, AirBubbler_table27)
GetBit(temp0, object.value3, 1)
if temp0 == 1
Rand(temp0, 4)
temp1 = 0
if temp0 == 0
GetBit(temp0, object.value3, 2)
if temp0 == 0
temp1 = 1
end if
end if
if object.value2 == 0
GetBit(temp0, object.value3, 2)
if temp0 == 0
temp1 = 1
end if
end if
if temp1 == 1
object[tempObjectPos].propertyValue = 6
SetBit(object.value3, 2, 1)
end if
end if
object.value2--
if object.value2 < 0
Rand(temp0, 128)
temp0 += 128
object.value0 += temp0
object.value3 = 0
end if
end if
end if
end if
end if
end event

event ObjectDraw
if object.iypos >= stage.waterLevel
temp0 = object.frame
temp0 >>= 4
DrawSprite(temp0)
end if
end event

event ObjectStartup
LoadSpriteSheet("LZ/Objects.gif")
SpriteFrame(-8, -8, 16, 16, 61, 51)
SpriteFrame(-8, -8, 16, 16, 78, 51)
SpriteFrame(-8, -8, 16, 16, 95, 51)
foreach (TypeName[Air Bubbler], arrayPos0, ALL_ENTITIES)
object[arrayPos0].drawOrder = 4
object[arrayPos0].value4 = object[arrayPos0].propertyValue
next
SetTableValue(TypeName[Air Bubbler], DebugMode_ObjCount,
DebugMode_TypesTable)
SetTableValue(AirBubbler_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
SetTableValue(AirBubbler_DebugSpawn, DebugMode_ObjCount,
DebugMode_SpawnTable)
DebugMode_ObjCount++
end event

event RSDKDraw
DrawSprite(0)
end event

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

You might also like