Path: blob/master/Sonic 2/Scripts/CPZ/ChemicalDrop.txt
1479 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Chemical Drop Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011// Player Aliases12private alias object.entityPos : player.entityPos13private alias object.state : player.state14private alias object.xpos : player.xpos15private alias object.speed : player.speed1617private alias object.value7 : player.invincibleTimer18private alias object.value8 : player.blinkTimer19private alias object.value37 : player.shield2021// Shields22private alias 2 : SHIELD_BUBBLE2324// Path ID Aliases25private alias 0 : PATH_A262728// ========================29// Function Declarations30// ========================3132reserve function ChemicalDrop_BubbleHit33reserve function ChemicalDrop_CreateSplash343536// ========================37// Function Definitions38// ========================3940private function ChemicalDrop_BubbleHit41if player[currentPlayer].shield != SHIELD_BUBBLE42if player[currentPlayer].state != Player_State_Death43arrayPos0 = player[currentPlayer].entityPos // So this arrayPos0 stuff moves the slot to P1's shield object but...44arrayPos0 += playerCount // nothing exactly happens with it..?45if player[currentPlayer].invincibleTimer == 046if player[currentPlayer].blinkTimer == 047player[currentPlayer].state = Player_State_GotHit48if player[currentPlayer].xpos > object.xpos49player[currentPlayer].speed = 0x2000050else51player[currentPlayer].speed = -0x2000052end if53end if54end if55end if56end if57end function585960private function ChemicalDrop_CreateSplash61temp1 = object.yvel62temp1 >>= 163FlipSign(temp1)64PlaySfx(SfxName[Chemical Splash], false)65object.type = TypeName[Blank Object]66temp0 = 067while temp0 < 568CreateTempObject(TypeName[Chemical Splash], 0, object.xpos, object.ypos)69object[tempObjectPos].drawOrder = 27071Rand(object[tempObjectPos].xvel, 0x200)72object[tempObjectPos].xvel -= 0x10073object[tempObjectPos].xvel <<= 1074if object[tempObjectPos].xvel < 075object[tempObjectPos].xvel += 0x2000076end if77object[tempObjectPos].xvel -= 0x100007879if temp0 > 080Rand(object[tempObjectPos].yvel, 0x7FE)81object[tempObjectPos].yvel -= 0x40082object[tempObjectPos].yvel <<= 883end if84object[tempObjectPos].yvel += temp18586temp0++87loop88end function899091// ========================92// Events93// ========================9495event ObjectUpdate96object.ypos += object.yvel97object.yvel += 0x38009899temp1 = object.ypos100temp1 >>= 16101temp1 -= camera[0].ypos102Abs(temp1)103temp1 -= 15104if temp1 >= screen.ycenter105object.type = TypeName[Blank Object]106end if107108ObjectTileCollision(CSIDE_FLOOR, 0, 11, PATH_A)109if checkResult == true110CallFunction(ChemicalDrop_CreateSplash)111end if112113foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)114BoxCollisionTest(C_TOUCH, object.entityPos, -6, -6, 6, 6, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)115if checkResult == true116CallFunction(ChemicalDrop_BubbleHit)117CallFunction(ChemicalDrop_CreateSplash)118end if119next120end event121122123event ObjectDraw124DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)125end event126127128event ObjectStartup129CheckCurrentStageFolder("Zone02")130if checkResult == true131LoadSpriteSheet("CPZ/Objects.gif")132SpriteFrame(-9, -18, 18, 29, 97, 189)133SpriteFrame(-9, -18, 18, 29, 117, 189)134else135LoadSpriteSheet("MBZ/Objects.gif")136SpriteFrame(-9, -18, 18, 29, 1, 64)137SpriteFrame(-9, -18, 18, 29, 21, 64)138end if139end event140141142// ========================143// Editor Events144// ========================145146event RSDKDraw147DrawSprite(0)148end event149150151event RSDKLoad152CheckCurrentStageFolder("Zone02")153if checkResult == true154LoadSpriteSheet("CPZ/Objects.gif")155SpriteFrame(-9, -18, 18, 29, 97, 189)156else157LoadSpriteSheet("MBZ/Objects.gif")158SpriteFrame(-9, -18, 18, 29, 1, 64)159end if160161SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")162end event163164165