Path: blob/master/Sonic 2/Scripts/HPZ/Pendulum.txt
1479 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Pendulum Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value1 : object.spikeBallPosFG12private alias object.value2 : object.spikeBallFrameFG13private alias object.value3 : object.spikeBallPosBG14private alias object.value4 : object.spikeBallFrameBG151617// ========================18// Function Declarations19// ========================2021reserve function Pendulum_DebugDraw22reserve function Pendulum_DebugSpawn232425// ========================26// Function Definitions27// ========================2829private function Pendulum_DebugDraw30DrawSprite(0)31DrawSprite(1)32DrawSprite(2)33end function343536private function Pendulum_DebugSpawn37CreateTempObject(TypeName[Pendulum], 0, object.xpos, object.ypos)38end function394041// ========================42// Events43// ========================4445event ObjectUpdate46if object.yvel >= 047object.yvel += 0x120048else49object.yvel += 0xF0050end if51object.spikeBallPosFG += object.yvel5253if object.spikeBallPosFG < -0x34000054object.spikeBallPosFG = -0x34000055end if5657if object.spikeBallPosFG >= 0x34000058object.spikeBallPosFG = 0x34000059temp0 = object.yvel60temp0 >>= 461object.yvel -= temp062FlipSign(object.yvel)63PlaySfx(SfxName[Ground Impact], false)64end if6566object.spikeBallPosBG = object.spikeBallPosFG67FlipSign(object.spikeBallPosBG)68object.spikeBallFrameFG = 369object.spikeBallFrameBG = 67071temp0 = object.spikeBallPosFG72temp0 >>= 1673if temp0 > -4874object.spikeBallFrameBG = 775end if7677if temp0 > -2478object.spikeBallFrameBG = 879end if8081if temp0 > -3282object.spikeBallFrameFG = 483end if8485if temp0 > 2486object.spikeBallFrameFG = 587end if8889if object.spikeBallFrameFG > 390temp6 = object.ypos91object.ypos += object.spikeBallPosFG9293foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)94BoxCollisionTest(C_TOUCH, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)95if checkResult == true96CallFunction(Player_Hit)97end if98next99100object.ypos = temp6101end if102end event103104105event ObjectDraw106if object.spikeBallPosBG > 0107temp0 = object.spikeBallPosBG108temp0 *= 28109temp0 /= 52110temp0 += object.ypos111DrawSpriteXY(15, object.xpos, temp0)112113temp0 = object.spikeBallPosBG114temp0 *= 36115temp0 /= 52116temp0 += object.ypos117DrawSpriteXY(16, object.xpos, temp0)118119temp0 = object.spikeBallPosBG120temp0 *= 12121temp0 /= 52122temp0 += object.ypos123DrawSpriteXY(13, object.xpos, temp0)124125temp0 = object.spikeBallPosBG126temp0 *= 20127temp0 /= 52128temp0 += object.ypos129DrawSpriteXY(14, object.xpos, temp0)130else131temp0 = object.spikeBallPosBG132temp0 *= 32133temp0 /= 52134temp0 += object.ypos135DrawSpriteXY(16, object.xpos, temp0)136137temp0 = object.spikeBallPosBG138temp0 *= 40139temp0 /= 52140temp0 += object.ypos141DrawSpriteXY(15, object.xpos, temp0)142143temp0 = object.spikeBallPosBG144temp0 *= 16145temp0 /= 52146temp0 += object.ypos147DrawSpriteXY(14, object.xpos, temp0)148149temp0 = object.spikeBallPosBG150temp0 *= 24151temp0 /= 52152temp0 += object.ypos153DrawSpriteXY(13, object.xpos, temp0)154end if155156temp0 = object.spikeBallPosBG157temp0 += object.ypos158DrawSpriteXY(object.spikeBallFrameBG, object.xpos, temp0)159DrawSprite(0)160DrawSprite(1)161DrawSprite(2)162163if object.spikeBallPosFG > 0164temp0 = object.spikeBallPosFG165temp0 *= 12166temp0 /= 52167temp0 += object.ypos168DrawSpriteXY(9, object.xpos, temp0)169170temp0 = object.spikeBallPosFG171temp0 *= 20172temp0 /= 52173temp0 += object.ypos174DrawSpriteXY(10, object.xpos, temp0)175176temp0 = object.spikeBallPosFG177temp0 *= 28178temp0 /= 52179temp0 += object.ypos180DrawSpriteXY(11, object.xpos, temp0)181182temp0 = object.spikeBallPosFG183temp0 *= 36184temp0 /= 52185temp0 += object.ypos186DrawSpriteXY(12, object.xpos, temp0)187else188temp0 = object.spikeBallPosFG189temp0 *= 12190temp0 /= 52191temp0 += object.ypos192DrawSpriteXY(10, object.xpos, temp0)193194temp0 = object.spikeBallPosFG195temp0 *= 20196temp0 /= 52197temp0 += object.ypos198DrawSpriteXY(9, object.xpos, temp0)199200temp0 = object.spikeBallPosFG201temp0 *= 28202temp0 /= 52203temp0 += object.ypos204DrawSpriteXY(12, object.xpos, temp0)205206temp0 = object.spikeBallPosFG207temp0 *= 36208temp0 /= 52209temp0 += object.ypos210DrawSpriteXY(11, object.xpos, temp0)211end if212213temp0 = object.spikeBallPosFG214temp0 += object.ypos215DrawSpriteXY(object.spikeBallFrameFG, object.xpos, temp0)216end event217218219event ObjectStartup220LoadSpriteSheet("HPZ/Objects.gif")221SpriteFrame(-40, -12, 80, 24, 256, 114) // joint - #0222SpriteFrame(-40, 12, 8, 56, 256, 139) // pole L - #1223SpriteFrame(32, 12, 8, 56, 256, 196) // pole R - #2224SpriteFrame(-16, -16, 32, 32, 451, 132) // spikeball (BG) - #3225SpriteFrame(-20, -20, 40, 40, 402, 66) // spikeball (FG) - #4226SpriteFrame(-24, -24, 48, 48, 353, 66) // spikeball (Active) - #5227SpriteFrame(-12, -12, 24, 24, 418, 107) // green orb (big) - #6228SpriteFrame(-10, -10, 20, 20, 378, 115) // green orb (med) - #7229SpriteFrame(-8, -8, 16, 16, 361, 115) // green orb (small) - #8230SpriteFrame(-3, -4, 6, 8, 349, 115) // spikeBall bar 1 (top) - #9231SpriteFrame(-3, -4, 6, 8, 349, 119) // spikeBall bar 1 (bottom) - #10232SpriteFrame(-2, -4, 4, 8, 356, 115) // spikeBall bar 2 (top) - #11233SpriteFrame(-2, -4, 4, 8, 356, 119) // spikeBall bar 2 (bottom) - #12234SpriteFrame(-3, -4, 6, 8, 337, 115) // spikeBall bar 3 (top) - #13235SpriteFrame(-3, -4, 6, 8, 337, 119) // spikeBall bar 3 (bottom) - #14236SpriteFrame(-2, -4, 4, 8, 344, 115) // spikeBall bar 4 (top) - #15237SpriteFrame(-2, -4, 4, 8, 344, 119) // spikeBall bar 4 (bottom) - #16238239SetTableValue(TypeName[Pendulum], DebugMode_ObjCount, DebugMode_TypesTable)240SetTableValue(Pendulum_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)241SetTableValue(Pendulum_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)242DebugMode_ObjCount++243244foreach (TypeName[Pendulum], arrayPos0, ALL_ENTITIES)245object[arrayPos0].spikeBallPosFG = -0x340000246next247end event248249250// ========================251// Editor Events252// ========================253254event RSDKDraw255object.spikeBallPosFG = -0x340000256object.spikeBallPosBG = object.spikeBallPosFG257FlipSign(object.spikeBallPosBG)258object.spikeBallFrameFG = 3259object.spikeBallFrameBG = 6260261temp0 = object.spikeBallPosFG262temp0 >>= 16263if temp0 > -48264object.spikeBallFrameBG = 7265end if266267if temp0 > -24268object.spikeBallFrameBG = 8269end if270271if temp0 > -32272object.spikeBallFrameFG = 4273end if274275if temp0 > 24276object.spikeBallFrameFG = 5277end if278279if object.spikeBallPosBG > 0280temp0 = object.spikeBallPosBG281temp0 *= 28282temp0 /= 52283temp0 += object.ypos284DrawSpriteXY(15, object.xpos, temp0)285286temp0 = object.spikeBallPosBG287temp0 *= 36288temp0 /= 52289temp0 += object.ypos290DrawSpriteXY(16, object.xpos, temp0)291292temp0 = object.spikeBallPosBG293temp0 *= 12294temp0 /= 52295temp0 += object.ypos296DrawSpriteXY(13, object.xpos, temp0)297298temp0 = object.spikeBallPosBG299temp0 *= 20300temp0 /= 52301temp0 += object.ypos302DrawSpriteXY(14, object.xpos, temp0)303else304temp0 = object.spikeBallPosBG305temp0 *= 32306temp0 /= 52307temp0 += object.ypos308DrawSpriteXY(16, object.xpos, temp0)309310temp0 = object.spikeBallPosBG311temp0 *= 40312temp0 /= 52313temp0 += object.ypos314DrawSpriteXY(15, object.xpos, temp0)315316temp0 = object.spikeBallPosBG317temp0 *= 16318temp0 /= 52319temp0 += object.ypos320DrawSpriteXY(14, object.xpos, temp0)321322temp0 = object.spikeBallPosBG323temp0 *= 24324temp0 /= 52325temp0 += object.ypos326DrawSpriteXY(13, object.xpos, temp0)327end if328329temp0 = object.spikeBallPosBG330temp0 += object.ypos331DrawSpriteXY(object.spikeBallFrameBG, object.xpos, temp0)332DrawSprite(0)333DrawSprite(1)334DrawSprite(2)335336if object.spikeBallPosFG > 0337temp0 = object.spikeBallPosFG338temp0 *= 12339temp0 /= 52340temp0 += object.ypos341DrawSpriteXY(9, object.xpos, temp0)342343temp0 = object.spikeBallPosFG344temp0 *= 20345temp0 /= 52346temp0 += object.ypos347DrawSpriteXY(10, object.xpos, temp0)348349temp0 = object.spikeBallPosFG350temp0 *= 28351temp0 /= 52352temp0 += object.ypos353DrawSpriteXY(11, object.xpos, temp0)354355temp0 = object.spikeBallPosFG356temp0 *= 36357temp0 /= 52358temp0 += object.ypos359DrawSpriteXY(12, object.xpos, temp0)360else361temp0 = object.spikeBallPosFG362temp0 *= 12363temp0 /= 52364temp0 += object.ypos365DrawSpriteXY(10, object.xpos, temp0)366367temp0 = object.spikeBallPosFG368temp0 *= 20369temp0 /= 52370temp0 += object.ypos371DrawSpriteXY(9, object.xpos, temp0)372373temp0 = object.spikeBallPosFG374temp0 *= 28375temp0 /= 52376temp0 += object.ypos377DrawSpriteXY(12, object.xpos, temp0)378379temp0 = object.spikeBallPosFG380temp0 *= 36381temp0 /= 52382temp0 += object.ypos383DrawSpriteXY(11, object.xpos, temp0)384end if385386temp0 = object.spikeBallPosFG387temp0 += object.ypos388DrawSpriteXY(object.spikeBallFrameFG, object.xpos, temp0)389end event390391392event RSDKLoad393LoadSpriteSheet("HPZ/Objects.gif")394SpriteFrame(-40, -12, 80, 24, 256, 114)395SpriteFrame(-40, 12, 8, 56, 256, 139)396SpriteFrame(32, 12, 8, 56, 256, 196)397SpriteFrame(-16, -16, 32, 32, 451, 132)398SpriteFrame(-20, -20, 40, 40, 402, 66)399SpriteFrame(-24, -24, 48, 48, 353, 66)400SpriteFrame(-12, -12, 24, 24, 418, 107)401SpriteFrame(-10, -10, 20, 20, 378, 115)402SpriteFrame(-8, -8, 16, 16, 361, 115)403SpriteFrame(-3, -4, 6, 8, 349, 115)404SpriteFrame(-3, -4, 6, 8, 349, 119)405SpriteFrame(-2, -4, 4, 8, 356, 115)406SpriteFrame(-2, -4, 4, 8, 356, 119)407SpriteFrame(-3, -4, 6, 8, 337, 115)408SpriteFrame(-3, -4, 6, 8, 337, 119)409SpriteFrame(-2, -4, 4, 8, 344, 115)410SpriteFrame(-2, -4, 4, 8, 344, 119)411412SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")413end event414415416