Path: blob/master/Sonic 2/Scripts/CNZ/VPlunger.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: V Plunger Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value1 : object.compression12private alias object.value2 : object.active1314// Player Aliases15private alias object.state : player.state16private alias object.xpos : player.xpos17private alias object.ypos : player.ypos18private alias object.xvel : player.xvel19private alias object.yvel : player.yvel20private alias object.speed : player.speed21private alias object.gravity : player.gravity22private alias object.animation : player.animation23private alias object.frame : player.frame24private alias object.scrollTracking : player.scrollTracking25private alias object.collisionBottom : player.collisionBottom26private alias object.jumpHold : player.jumpHold2728private alias object.value1 : player.timer293031// ========================32// Function Declarations33// ========================3435reserve function VPlunger_DebugDraw36reserve function VPlunger_DebugSpawn373839// ========================40// Function Definitions41// ========================4243private function VPlunger_DebugDraw44DrawSprite(5)45end function464748private function VPlunger_DebugSpawn49CreateTempObject(TypeName[V Plunger], 0, object.xpos, object.ypos)50object[tempObjectPos].ypos &= 0xFFFF000051object[tempObjectPos].inkEffect = INK_ALPHA52end function535455// ========================56// Events57// ========================5859event ObjectUpdate60if object.active == true61if object.compression < 0x21000062object.compression += 0x400063end if64else65if object.compression > 066object.compression -= 0x2000067if object.compression < 068object.compression = 069end if70else71object.priority = PRIORITY_BOUNDS72end if73end if7475temp2 = object.active76object.active = false77foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)78CheckEqual(player[currentPlayer].state, Player_State_Death)79temp7 = checkResult80CheckEqual(player[currentPlayer].state, Player_State_GotHit)81temp7 |= checkResult82if temp7 == false83temp0 = object.compression84temp0 >>= 1685temp0 -= 2886BoxCollisionTest(C_SOLID, object.entityPos, -11, temp0, 11, 28, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)8788temp1 = temp089temp0 -= 290BoxCollisionTest(C_TOUCH, object.entityPos, -11, temp0, 11, temp1, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)91if checkResult == true92player[currentPlayer].state = Player_State_Static93player[currentPlayer].gravity = 094player[currentPlayer].scrollTracking = false95#platform: USE_STANDALONE96player[currentPlayer].animation = ANI_JUMPING97#endplatform98#platform: USE_ORIGINS99if player[currentPlayer].animation != ANI_JUMPING100player[currentPlayer].animation = ANI_JUMPING101player[currentPlayer].frame = 0102end if103player[currentPlayer].speed = 0104#endplatform105player[currentPlayer].xpos = object.xpos106player[currentPlayer].ypos = player[currentPlayer].collisionBottom107FlipSign(player[currentPlayer].ypos)108player[currentPlayer].ypos <<= 16109player[currentPlayer].ypos -= 0x1C0000110player[currentPlayer].ypos += object.compression111player[currentPlayer].ypos &= 0xFFFF0000112player[currentPlayer].ypos += object.ypos113player[currentPlayer].xvel = 0114player[currentPlayer].yvel = 1115object.active |= player[currentPlayer].jumpHold116end if117end if118next119120if object.compression > 0x60000121if temp2 == true122if object.active == false123object.priority = PRIORITY_ACTIVE124foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)125CheckEqual(player[currentPlayer].state, Player_State_Death)126temp7 = checkResult127CheckEqual(player[currentPlayer].state, Player_State_GotHit)128temp7 |= checkResult129if temp7 == false130if player[currentPlayer].state == Player_State_Static131BoxCollisionTest(C_TOUCH, object.entityPos, -11, -28, 11, 28, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)132if checkResult == true133#platform: USE_STANDALONE134player[currentPlayer].state = Player_State_Air135#endplatform136#platform: USE_ORIGINS137player[currentPlayer].state = Player_State_Air_NoDropDash138#endplatform139player[currentPlayer].gravity = 1140player[currentPlayer].timer = 0141player[currentPlayer].xvel = 0142player[currentPlayer].speed = 0143player[currentPlayer].yvel = object.compression144player[currentPlayer].yvel *= 3145player[currentPlayer].yvel >>= 2146FlipSign(player[currentPlayer].yvel)147PlaySfx(SfxName[Plunger], false)148end if149end if150end if151next152end if153end if154end if155156// Fading for yellow plunger157temp0 = object.compression158temp0 >>= 15159object.angle += temp0160Sin(temp1, object.angle)161temp1 >>= 4162163temp0 = object.compression164temp0 >>= 13165temp0 -= 64166temp0 += temp1167object.alpha = temp0168end event169170171event ObjectDraw172// Spring & Base173temp0 = object.compression174temp0 >>= 20175DrawSprite(temp0)176177// Plunger (Red)178temp0 = -0x1C0000179temp0 += object.compression180temp0 += object.ypos181DrawSpriteXY(3, object.xpos, temp0)182183// Plunger (Yellow)184DrawSpriteFX(4, FX_INK, object.xpos, temp0)185end event186187188event ObjectStartup189CheckCurrentStageFolder("Zone04")190if checkResult == true191LoadSpriteSheet("CNZ/Objects.gif")192SpriteFrame(-11, -12, 22, 40, 147, 50) // Spring & Base - #0193SpriteFrame(-11, 4, 22, 24, 147, 66) // Spring & Base (Shorter) - #1194SpriteFrame(-11, 20, 22, 8, 147, 82) // Base - #2195SpriteFrame(-11, 0, 22, 16, 147, 34) // Plunger (Red) - #3196SpriteFrame(-11, 0, 22, 16, 170, 34) // Plunger (Yellow) - #4197SpriteFrame(-11, -28, 22, 56, 147, 34) // Plunger (Full Sprite) - #5198else199LoadSpriteSheet("MBZ/Objects.gif")200SpriteFrame(-11, -12, 22, 40, 189, 354) // Spring & Base - #0201SpriteFrame(-11, 4, 22, 24, 189, 370) // Spring & Base (Shorter) - #1202SpriteFrame(-11, 20, 22, 8, 189, 386) // Base - #2203SpriteFrame(-11, 0, 22, 16, 189, 338) // Plunger (Red) - #3204SpriteFrame(-11, 0, 22, 16, 166, 338) // Plunger (Yellow) - #4205SpriteFrame(-11, -28, 22, 56, 189, 338) // Plunger (Full Sprite) - #5206end if207208foreach (TypeName[V Plunger], arrayPos0, ALL_ENTITIES)209object[arrayPos0].inkEffect = INK_ALPHA210next211212SetTableValue(TypeName[V Plunger], DebugMode_ObjCount, DebugMode_TypesTable)213SetTableValue(VPlunger_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)214SetTableValue(VPlunger_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)215DebugMode_ObjCount++216end event217218219// ========================220// Editor Events221// ========================222223event RSDKDraw224DrawSprite(0)225end event226227228event RSDKLoad229CheckCurrentStageFolder("Zone04")230if checkResult == true231LoadSpriteSheet("CNZ/Objects.gif")232SpriteFrame(-11, -28, 22, 56, 147, 34) // Plunger (Full Sprite)233else234LoadSpriteSheet("MBZ/Objects.gif")235SpriteFrame(-11, -28, 22, 56, 189, 338) // Plunger (Full Sprite)236end if237238SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")239end event240241242