Path: blob/master/Sonic 2/Scripts/MPZ/Spear.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Spear 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.startPos.y13private alias object.value31 : object.wrapOffset.y1415// States16private alias 0 : SPEAR_DOWN_IDLE17private alias 1 : SPEAR_MOVEUP18private alias 2 : SPEAR_UP_IDLE19private alias 3 : SPEAR_MOVEDOWN2021// Player Aliases22private alias object.value17 : debugMode.currentSelection232425// ========================26// Function Declarations27// ========================2829reserve function Spear_Setup30reserve function Spear_DebugDraw31reserve function Spear_DebugSpawn323334// ========================35// Static Values36// ========================3738private value Spear_startDebugID = 0394041// ========================42// Function Definitions43// ========================4445private function Spear_Setup46object[arrayPos0].ypos = object[arrayPos0].startPos.y47object[arrayPos0].ypos += object[arrayPos0].wrapOffset.y4849object[arrayPos0].drawOrder = 250object[arrayPos0].timer = 051object[arrayPos0].state = 052object[arrayPos0].priority = PRIORITY_BOUNDS53end function545556private function Spear_DebugDraw57DrawSprite(0)58end function596061private function Spear_DebugSpawn62temp0 = debugMode[0].currentSelection63temp0 -= Spear_startDebugID64temp0 <<= 26566CreateTempObject(TypeName[Spear], temp0, object.xpos, object.ypos)6768arrayPos0 = object[tempObjectPos].entityPos69object[arrayPos0].startPos.y = object.ypos70CallFunction(Spear_Setup)71end function7273// ========================74// Events75// ========================7677event ObjectUpdate78switch object.state79case SPEAR_DOWN_IDLE80temp0 = oscillation81temp0 -= object.propertyValue82temp0 &= 0x7F83if temp0 == 084object.priority = PRIORITY_ACTIVE85object.timer = 886object.state = SPEAR_MOVEUP87end if88break8990case SPEAR_MOVEUP91object.ypos -= 0x400009293object.timer--94if object.timer == 095object.timer = 396object.state = SPEAR_UP_IDLE97end if98break99100case SPEAR_UP_IDLE101object.timer--102if object.timer == 0103object.timer = 8104object.state = SPEAR_MOVEDOWN105end if106break107108case SPEAR_MOVEDOWN109object.ypos += 0x40000110111object.timer--112if object.timer == 0113object.state = SPEAR_DOWN_IDLE114end if115break116117end switch118119foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)120BoxCollisionTest(C_TOUCH, object.entityPos, -4, -16, 4, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)121if checkResult == true122CallFunction(Player_Hit)123end if124next125126if object.outOfBounds == true127arrayPos0 = object.entityPos128CallFunction(Spear_Setup)129end if130end event131132133event ObjectDraw134DrawSprite(0)135end event136137138event ObjectStartup139LoadSpriteSheet("MPZ/Objects.gif")140SpriteFrame(-4, -16, 8, 32, 34, 102)141142foreach (TypeName[Spear], arrayPos0, ALL_ENTITIES)143object[arrayPos0].startPos.y = object[arrayPos0].ypos144CallFunction(Spear_Setup)145next146147temp0 = 0148Spear_startDebugID = DebugMode_ObjCount149while temp0 < 16150SetTableValue(TypeName[Spear], DebugMode_ObjCount, DebugMode_TypesTable)151SetTableValue(Spear_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)152SetTableValue(Spear_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)153DebugMode_ObjCount++154temp0++155loop156end event157158159// ========================160// Editor Events161// ========================162163event RSDKDraw164DrawSprite(0)165end event166167168event RSDKLoad169LoadSpriteSheet("MPZ/Objects.gif")170SpriteFrame(-4, -16, 8, 32, 34, 102)171172SetVariableAlias(ALIAS_VAR_PROPVAL, "intervalOffset")173end event174175176