Path: blob/master/Sonic 2/Scripts/HPZ/AirBubbler.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Air Bubbler Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.propertyValue : object.numDuds1213private alias object.value0 : object.timer14private alias object.value1 : object.bubbleType215private alias object.value2 : object.bubbleType116private alias object.value3 : object.bubbleFlags17private alias object.value4 : object.dudsRemaining1819// AirBubble object aliases20private alias object.value1 : airBubble.originPos.y21private alias object.value2 : airBubble.targetPlayer222324// ========================25// Function Declarations26// ========================2728reserve function AirBubbler_DebugDraw29reserve function AirBubbler_DebugSpawn303132// ========================33// Tables34// ========================3536private table AirBubbler_bubbleSizes372, 4, 2, 2, 2, 2, 4, 2, 4, 2, 2, 4, 2, 4, 2, 2, 4, 238end table394041// ========================42// Function Definitions43// ========================4445private function AirBubbler_DebugDraw46DrawSprite(0)47end function484950private function AirBubbler_DebugSpawn51CreateTempObject(TypeName[Air Bubbler], 0, object.xpos, object.ypos)52object[tempObjectPos].drawOrder = 453object[tempObjectPos].dudsRemaining = 054end function555657// ========================58// Events59// ========================6061event ObjectUpdate62object.frame++63object.frame %= 486465if object.iypos > stage.waterLevel66temp0 = object.ixpos67temp0 -= camera[0].xpos68Abs(temp0)69if temp0 < screen.xcenter70temp0 = object.iypos71temp0 -= camera[0].ypos72Abs(temp0)73if temp0 < screen.ycenter74temp1 = 075if object.bubbleFlags == 076object.timer--77if object.timer < 078SetBit(object.bubbleFlags, 0, true)7980Rand(object.bubbleType1, 0xFFFF)81object.bubbleType2 = object.bubbleType182object.bubbleType1 %= 683object.bubbleType2 &= 1284object.dudsRemaining--85if object.dudsRemaining < 086object.dudsRemaining = object.numDuds87SetBit(object.bubbleFlags, 1, true)88end if8990temp1 = true91end if92else93object.timer--94if object.timer < 095temp1 = true96end if97end if9899if temp1 == true100Rand(object.timer, 32)101102Rand(temp0, 17)103temp0 -= 8104temp0 <<= 16105temp0 += object.xpos106CreateTempObject(TypeName[Air Bubble], 2, temp0, object.ypos)107airBubble[tempObjectPos].originPos.y = object[tempObjectPos].xpos108Rand(object[tempObjectPos].angle, 256)109object[tempObjectPos].angle <<= 1110object[tempObjectPos].drawOrder = 4111object[tempObjectPos].yvel = -0x8800112airBubble[tempObjectPos].targetPlayer = 0xFFFF113temp0 = object.bubbleType2114temp0 += object.bubbleType1115GetTableValue(object[tempObjectPos].propertyValue, temp0, AirBubbler_bubbleSizes)116117GetBit(temp0, object.bubbleFlags, 1)118if temp0 == true119Rand(temp0, 4)120121temp1 = false122if temp0 == false123GetBit(temp0, object.bubbleFlags, 2)124if temp0 == false125temp1 = true126end if127end if128129if object.bubbleType1 == 0130GetBit(temp0, object.bubbleFlags, 2)131if temp0 == false132temp1 = true133end if134end if135136if temp1 == true137object[tempObjectPos].propertyValue = 6138SetBit(object.bubbleFlags, 2, true)139end if140end if141142object.bubbleType1--143if object.bubbleType1 < 0144Rand(temp0, 128)145temp0 += 128146object.timer += temp0147object.bubbleFlags = 0148end if149end if150end if151end if152end if153end event154155156event ObjectDraw157if object.iypos >= stage.waterLevel158temp0 = object.frame159temp0 >>= 4160DrawSprite(temp0)161end if162end event163164165event ObjectStartup166LoadSpriteSheet("HPZ/Objects3.gif")167168// Bubbler frames169SpriteFrame(-8, -8, 16, 16, 103, 1)170SpriteFrame(-8, -8, 16, 16, 120, 1)171SpriteFrame(-8, -8, 16, 16, 137, 1)172173foreach (TypeName[Air Bubbler], arrayPos0, ALL_ENTITIES)174object[arrayPos0].drawOrder = 4175object[arrayPos0].dudsRemaining = object[arrayPos0].numDuds176next177178SetTableValue(TypeName[Air Bubbler], DebugMode_ObjCount, DebugMode_TypesTable)179SetTableValue(AirBubbler_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)180SetTableValue(AirBubbler_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)181DebugMode_ObjCount++182end event183184185// ========================186// Editor Events187// ========================188189event RSDKDraw190DrawSprite(0)191end event192193194event RSDKLoad195LoadSpriteSheet("HPZ/Objects3.gif")196SpriteFrame(-8, -8, 16, 16, 103, 1)197198SetVariableAlias(ALIAS_VAR_PROPVAL, "numDuds")199end event200201202