Path: blob/master/Sonic 2/Scripts/HPZ/EggmanMine.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Eggman Mine Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.hitboxLeft13private alias object.value3 : object.hitboxTop14private alias object.value2 : object.hitboxRight15private alias object.value4 : object.hitboxBottom16private alias object.value5 : object.originPos.x1718// States19private alias 0 : HPZEGGMANMINE_SETUP20private alias 1 : HPZEGGMANMINE_SMALL_FALL21private alias 2 : HPZEGGMANMINE_SMALL_RISE22private alias 3 : HPZEGGMANMINE_SMALL_FLOAT23private alias 4 : HPZEGGMANMINE_SMALL_EXPLODE24private alias 5 : HPZEGGMANMINE_BIG_FALL25private alias 6 : HPZEGGMANMINE_BIG_FOLLOW26private alias 7 : HPZEGGMANMINE_BIG_EXPLODE27private alias 8 : HPZEGGMANMINE_BIG_EXPLODED2829private alias 0 : HPZEGGMANMINE_SMALL30private alias 2 : HPZEGGMANMINE_LARGE3132// Player Aliases33private alias object.xpos : player.xpos34private alias object.ypos : player.ypos353637// ========================38// Events39// ========================4041event ObjectUpdate42switch object.state43case HPZEGGMANMINE_SETUP44if object.propertyValue == HPZEGGMANMINE_SMALL45object.hitboxLeft = -1246object.hitboxRight = 1247object.hitboxTop = -1248object.hitboxBottom = 1249else50object.hitboxLeft = -1651object.hitboxRight = 1652object.hitboxTop = -2453object.hitboxBottom = 1654end if55object.state++56break5758case HPZEGGMANMINE_SMALL_FALL59object.ypos += object.yvel60object.yvel += 0x18006162temp0 = stage.waterLevel63temp0 <<= 1664if object.ypos > temp065CreateTempObject(TypeName[Water Splash], 0, object.xpos, temp0)66PlaySfx(SfxName[Water Splash], false)67object[tempObjectPos].drawOrder = 468object.yvel >>= 269if object.propertyValue == HPZEGGMANMINE_SMALL70Sin(temp1, oscillation)71temp1 >>= 572temp1 <<= 1673object.originPos.x = temp174object.originPos.x += object.xpos75object.state++76else77object.state = HPZEGGMANMINE_BIG_FALL78end if79end if80break8182case HPZEGGMANMINE_SMALL_RISE83object.ypos += object.yvel84object.yvel -= 0x18008586temp0 = stage.waterLevel87temp0 <<= 1688if object.ypos <= temp089object.ypos = temp090object.yvel = 091object.state++92end if9394Sin(object.xpos, oscillation)95object.xpos >>= 596object.xpos <<= 1697FlipSign(object.xpos)98object.xpos += object.originPos.x99break100101case HPZEGGMANMINE_SMALL_FLOAT102object.ypos = stage.waterLevel103object.ypos <<= 16104Sin(object.xpos, oscillation)105object.xpos >>= 5106object.xpos <<= 16107FlipSign(object.xpos)108object.xpos += object.originPos.x109break110111case HPZEGGMANMINE_SMALL_EXPLODE112object.timer++113object.frame = object.animationTimer114object.frame >>= 5115object.animationTimer += object.timer116object.animationTimer &= 63117if object.timer == 60118object.hitboxTop -= 16119object.type = TypeName[Blank Object]120121CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)122object[tempObjectPos].drawOrder = 4123124CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)125object[tempObjectPos].ypos -= 0x180000126object[tempObjectPos].drawOrder = 4127128CreateTempObject(TypeName[Water Splash], 0, object.xpos, object.ypos)129object[tempObjectPos].drawOrder = 4130131PlaySfx(SfxName[Explosion], false)132end if133break134135case HPZEGGMANMINE_BIG_FALL136object.ypos += object.yvel137object.yvel -= 0x1000138139temp0 = stage.waterLevel140temp0 <<= 16141if object.ypos <= temp0142object.ypos = temp0143object.yvel = 0144object.state++145end if146break147148case HPZEGGMANMINE_BIG_FOLLOW149object.ypos = stage.waterLevel150object.ypos <<= 16151152temp0 = player[0].xpos153temp0 -= 0x20000154temp1 = player[0].xpos155temp1 += 0x20000156157if object.xpos < temp0158object.xpos += 0x8000159object.direction = FLIP_X160end if161162if object.xpos > temp1163object.xpos -= 0x8000164object.direction = FLIP_NONE165end if166167object.timer++168if object.timer == 180169object.timer = 0170object.state++171end if172break173174case HPZEGGMANMINE_BIG_EXPLODE175temp0 = player[0].xpos176temp0 -= 0x20000177temp1 = player[0].xpos178temp1 += 0x20000179if object.xpos < temp0180object.xpos += 0x8000181object.direction = FLIP_X182end if183184if object.xpos > temp1185object.xpos -= 0x8000186object.direction = FLIP_NONE187end if188189object.timer++190object.frame = object.animationTimer191object.frame >>= 5192object.animationTimer += object.timer193object.animationTimer &= 63194if object.timer == 60195object.timer = 0196object.state++197object.hitboxLeft = -32198object.hitboxRight = 32199200arrayPos0 = object.entityPos201arrayPos0--202ResetObjectEntity(arrayPos0, TypeName[Water Geyser], true, object.xpos, object.ypos)203object[arrayPos0].drawOrder = 4204205CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)206object[tempObjectPos].drawOrder = 4207208CreateTempObject(TypeName[Water Splash], 0, object.xpos, object.ypos)209object[tempObjectPos].drawOrder = 4210211PlaySfx(SfxName[Big Explosion], false)212end if213break214215case HPZEGGMANMINE_BIG_EXPLODED216temp0 = object.timer217temp0 %= 6218if temp0 == 5219temp1 = object.xpos220temp1 -= 0x180000221temp2 = object.xpos222temp2 += 0x180000223224CreateTempObject(TypeName[Smoke Puff], 0, temp1, object.ypos)225object[tempObjectPos].drawOrder = 4226227CreateTempObject(TypeName[Smoke Puff], 0, temp2, object.ypos)228object[tempObjectPos].drawOrder = 4229230object.ypos -= 0x180000231object.hitboxTop -= 24232CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)233object[tempObjectPos].drawOrder = 4234end if235236object.timer++237if object.timer == 24238object.type = TypeName[Blank Object]239end if240break241242end switch243244foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)245BoxCollisionTest(C_TOUCH, object.entityPos, object.hitboxLeft, object.hitboxTop, object.hitboxRight, object.hitboxBottom, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)246if checkResult == true247CallFunction(Player_Hit)248end if249next250251if object.outOfBounds == true252object.type = TypeName[Blank Object]253end if254end event255256257event ObjectDraw258if object.state < HPZEGGMANMINE_BIG_EXPLODED259temp0 = object.propertyValue260temp0 += object.frame261DrawSprite(temp0)262end if263end event264265266event ObjectStartup267LoadSpriteSheet("HPZ/Objects.gif")268SpriteFrame(-16, -16, 32, 32, 443, 99)269SpriteFrame(-16, -16, 32, 32, 367, 222)270SpriteFrame(-24, -24, 48, 48, 353, 66)271SpriteFrame(-24, -24, 48, 48, 400, 206)272end event273274275// ========================276// Editor Events277// ========================278279event RSDKDraw280DrawSprite(0)281end event282283284event RSDKLoad285LoadSpriteSheet("HPZ/Objects.gif")286SpriteFrame(-16, -16, 32, 32, 443, 99)287288SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")289end event290291292