Path: blob/master/Sonic 1/Scripts/LZ/GrabBar.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Grab Bar Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.grabDuration1213// Player Aliases14private alias object.type : player.type15private alias object.xpos : player.xpos16private alias object.ypos : player.ypos17private alias object.state : player.state18private alias object.jumpPress : player.jumpPress19private alias object.direction : player.direction20private alias object.animation : player.animation21private alias object.gravity : player.gravity222324// ========================25// Function Declarations26// ========================2728reserve function GrabBar_DebugDraw29reserve function GrabBar_DebugSpawn303132// ========================33// Function Definitions34// ========================3536private function GrabBar_DebugDraw37DrawSprite(0)38end function394041private function GrabBar_DebugSpawn42CreateTempObject(TypeName[Grab Bar], 0, object.xpos, object.ypos)43object[tempObjectPos].grabDuration = 6044end function454647// ========================48// Events49// ========================5051event ObjectUpdate52foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)53temp2 = false5455if player[currentPlayer].type == TypeName[Tails Object]56// Tails can't reach as far as Sonic & Knuckles57temp3 = 0xF000058else59temp3 = 0x14000060end if6162temp0 = object.xpos63temp0 += temp364temp0 -= player[currentPlayer].xpos65Abs(temp0)66if temp0 <= 0x4000067temp0 = object.ypos68temp0 -= player[currentPlayer].ypos69temp1 = temp070Abs(temp0)71if temp0 <= 0x12000072player[currentPlayer].animation = ANI_CLINGING73player[currentPlayer].direction = FACING_RIGHT74player[currentPlayer].xpos = object.xpos75player[currentPlayer].xpos += temp376temp2 = true77else78if player[currentPlayer].animation == ANI_CLINGING79player[currentPlayer].ypos = object.ypos80if temp1 < 081player[currentPlayer].ypos += 0x12000082else83player[currentPlayer].ypos -= 0x12000084end if85temp2 = true86end if87end if8889if temp2 != false90if player[currentPlayer].jumpPress != false91player[currentPlayer].animation = ANI_FANROTATE92end if9394if object.frame == 195player[currentPlayer].animation = ANI_FANROTATE96else97if currentPlayer == 098object.grabDuration--99if object.grabDuration == 0100object.frame = 1101end if102end if103end if104end if105end if106next107end event108109110event ObjectDraw111DrawSprite(object.frame)112end event113114115event ObjectStartup116LoadSpriteSheet("LZ/Objects.gif")117SpriteFrame(-4, -32, 8, 64, 35, 1)118SpriteFrame(-4, -32, 14, 64, 44, 1)119120foreach (TypeName[Grab Bar], arrayPos0, ALL_ENTITIES)121object[arrayPos0].grabDuration = object[arrayPos0].propertyValue122object[arrayPos0].grabDuration *= 60123next124125SetTableValue(TypeName[Grab Bar], DebugMode_ObjCount, DebugMode_TypesTable)126SetTableValue(GrabBar_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)127SetTableValue(GrabBar_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)128DebugMode_ObjCount++129end event130131132// ========================133// Editor Events134// ========================135136event RSDKEdit137if editor.returnVariable == true138switch editor.variableID139case EDIT_VAR_PROPVAL // property value140checkResult = object.propertyValue141break142143case 0 // grabDuration144checkResult = object.propertyValue145break146147end switch148else149switch editor.variableID150case EDIT_VAR_PROPVAL // property value151object.propertyValue = editor.variableValue152break153154case 0 // grabDuration155object.propertyValue = editor.variableValue156break157158end switch159end if160end event161162163event RSDKDraw164DrawSprite(0)165end event166167168event RSDKLoad169LoadSpriteSheet("LZ/Objects.gif")170SpriteFrame(-4, -32, 8, 64, 35, 1)171172AddEditorVariable("grabDuration")173SetActiveVariable("grabDuration")174end event175176177