Path: blob/master/Sonic 2/Scripts/CNZ/DPlunger.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: D 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.direction : player.direction22private alias object.gravity : player.gravity23private alias object.animation : player.animation24private alias object.scrollTracking : player.scrollTracking25private alias object.jumpHold : player.jumpHold2627private alias object.value1 : player.timer282930// ========================31// Function Declarations32// ========================3334reserve function DPlunger_DebugDraw35reserve function DPlunger_DebugSpawn363738// ========================39// Function Definitions40// ========================4142private function DPlunger_DebugDraw43DrawSprite(5)44end function454647private function DPlunger_DebugSpawn48CreateTempObject(TypeName[D Plunger], 1, object.xpos, object.ypos)49object[tempObjectPos].ypos &= 0xFFFF000050object[tempObjectPos].inkEffect = INK_ALPHA51end function525354// ========================55// Events56// ========================5758event ObjectUpdate59if object.active == true60if object.compression < 0x10000061object.compression += 0x400062end if63else64if object.compression > 065object.compression -= 0x2000066if object.compression < 067object.compression = 068end if69else70object.priority = PRIORITY_BOUNDS71end if72end if7374temp2 = object.active75object.active = false76temp0 = object.xpos77temp1 = object.ypos78object.xpos -= object.compression79object.ypos += object.compression80foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)81CheckEqual(player[currentPlayer].state, Player_State_Death)82temp7 = checkResult83CheckEqual(player[currentPlayer].state, Player_State_GotHit)84temp7 |= checkResult85if temp7 == false86BoxCollisionTest(C_TOUCH, object.entityPos, 0, -19, 19, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)87if checkResult == true88player[currentPlayer].state = Player_State_Static89player[currentPlayer].gravity = 090player[currentPlayer].scrollTracking = false91player[currentPlayer].animation = ANI_JUMPING92player[currentPlayer].xpos = object.xpos93player[currentPlayer].xpos += 0x1B000094player[currentPlayer].ypos = object.ypos95player[currentPlayer].ypos -= 0x1B000096player[currentPlayer].xvel = -197player[currentPlayer].yvel = 198object.active |= player[currentPlayer].jumpHold99end if100end if101next102103if object.compression > 0x60000104if temp2 == true105if object.active == false106object.priority = PRIORITY_ACTIVE107foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)108CheckEqual(player[currentPlayer].state, Player_State_Death)109temp7 = checkResult110CheckEqual(player[currentPlayer].state, Player_State_GotHit)111temp7 |= checkResult112if temp7 == false113if player[currentPlayer].state == Player_State_Static114BoxCollisionTest(C_TOUCH, object.entityPos, 0, -19, 19, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)115if checkResult == true116if object.propertyValue == 0117player[currentPlayer].state = CNZSetup_Player_TubeRoll118player[currentPlayer].gravity = GRAVITY_GROUND119else120#platform: USE_STANDALONE121player[currentPlayer].state = Player_State_Air122#endplatform123#platform: USE_ORIGINS124player[currentPlayer].state = Player_State_Air_NoDropDash125#endplatform126player[currentPlayer].gravity = GRAVITY_AIR127end if128129player[currentPlayer].timer = 0130player[currentPlayer].direction = FACING_RIGHT131player[currentPlayer].xvel = object.compression132player[currentPlayer].speed = object.compression133player[currentPlayer].yvel = object.compression134FlipSign(player[currentPlayer].yvel)135PlaySfx(SfxName[Plunger], false)136end if137end if138end if139next140end if141end if142end if143object.xpos = temp0144object.ypos = temp1145146// Fading for yellow plunger147temp0 = object.compression148temp0 >>= 14149object.angle += temp0150Sin(temp1, object.angle)151152temp1 >>= 4153temp0 = object.compression154temp0 >>= 12155temp0 -= 64156temp0 += temp1157object.alpha = temp0158end event159160161event ObjectDraw162// Spring & Base163temp0 = object.compression164temp0 >>= 20165DrawSprite(temp0)166167// Plunger (Red)168temp0 = object.xpos169temp0 -= object.compression170temp1 = object.ypos171temp1 += object.compression172DrawSpriteXY(3, temp0, temp1)173174// Plunger (Yellow)175DrawSpriteFX(4, FX_INK, temp0, temp1)176end event177178179event ObjectStartup180LoadSpriteSheet("CNZ/Objects.gif")181SpriteFrame(-24, -8, 32, 32, 219, 51) // Spring & Base - #0182SpriteFrame(-24, -1, 25, 25, 219, 58) // Spring & Base (Shorter) - #1183SpriteFrame(-24, -1, 25, 25, 219, 58) // Base - #2184SpriteFrame(-3, -24, 27, 27, 199, 6) // Plunger (Red) - #3185SpriteFrame(-3, -24, 27, 27, 227, 6) // Plunger (Yellow) - #4186SpriteFrame(-24, -24, 48, 48, 170, 51) // Plunger (Full Sprite) - #5187188foreach (TypeName[D Plunger], arrayPos0, ALL_ENTITIES)189object[arrayPos0].inkEffect = INK_ALPHA190next191192SetTableValue(TypeName[D Plunger], DebugMode_ObjCount, DebugMode_TypesTable)193SetTableValue(DPlunger_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)194SetTableValue(DPlunger_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)195DebugMode_ObjCount++196end event197198199// ========================200// Editor Events201// ========================202203event RSDKEdit204if editor.returnVariable == true205switch editor.variableID206case EDIT_VAR_PROPVAL // property value207checkResult = object.propertyValue208break209210case 0 // releaseType211checkResult = object.propertyValue212break213214end switch215else216switch editor.variableID217case EDIT_VAR_PROPVAL // property value218object.propertyValue = editor.variableValue219break220221case 0 // releaseType222object.propertyValue = editor.variableValue223break224225end switch226end if227end event228229230event RSDKDraw231DrawSprite(0)232end event233234235event RSDKLoad236LoadSpriteSheet("CNZ/Objects.gif")237SpriteFrame(-24, -24, 48, 48, 170, 51) // Plunger (Full Sprite)238239AddEditorVariable("releaseType")240SetActiveVariable("releaseType")241AddEnumVariable("Lock Controls", 0)242AddEnumVariable("Release Controls", 1)243end event244245246