Path: blob/master/Sonic 1/Scripts/SBZ/SwingingSpike.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Swinging Spike Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.propertyValue : object.length1213private alias object.value0 : object.swingAngle14private alias object.value1 : object.drawPos.x15private alias object.value2 : object.drawPos.y1617// Player Aliases18private alias object.value17 : debugMode.currentSelection192021// ========================22// Function Declarations23// ========================2425reserve function SwingingSpike_DebugDraw26reserve function SwingingSpike_DebugSpawn272829// ========================30// Static Values31// ========================3233private value SwingingSpike_startDebugID = 0343536// ========================37// Function Definitions38// ========================3940private function SwingingSpike_DebugDraw41temp7 = debugMode[0].currentSelection42temp7 -= SwingingSpike_startDebugID43DrawSprite(0) // in the object's normal draw routine the post is drawn last, but here it's the first thing to be drawn? sure ig..4445temp0 = 046temp1 = 1647while temp0 < temp748Cos(temp2, 128)49temp2 *= temp150temp2 <<= 751temp2 += object.xpos52Sin(temp3, 128)53temp3 *= temp154temp3 <<= 755temp3 += object.ypos56DrawSpriteXY(1, temp2, temp3)5758temp0++59temp1 += 1660loop6162temp1 -= 863Cos(temp2, 128)64temp2 *= temp165temp2 <<= 766temp2 += object.xpos67Sin(temp3, 128)68temp3 *= temp169temp3 <<= 770temp3 += object.ypos71DrawSpriteXY(2, temp2, temp3)72end function737475private function SwingingSpike_DebugSpawn76temp0 = debugMode[0].currentSelection77temp0 -= SwingingSpike_startDebugID78CreateTempObject(TypeName[Swinging Spike], temp0, object.xpos, object.ypos)79object[tempObjectPos].direction = object.direction80end function818283// ========================84// Events85// ========================8687event ObjectUpdate88GetTableValue(object.swingAngle, 12, StageSetup_oscillationTable)89object.swingAngle >>= 890if object.direction == FLIP_X91object.swingAngle ^= 25592object.swingAngle += 12993end if94object.swingAngle <<= 195temp1 = object.length96temp1++97temp1 <<= 498temp1 -= 899100Cos(object.drawPos.x, object.swingAngle)101object.drawPos.x *= temp1102object.drawPos.x <<= 7103object.drawPos.x += object.xpos104105Sin(object.drawPos.y, object.swingAngle)106object.drawPos.y *= temp1107object.drawPos.y <<= 7108object.drawPos.y += object.ypos109110foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)111temp0 = object.xpos112temp1 = object.ypos113object.xpos = object.drawPos.x114object.ypos = object.drawPos.y115BoxCollisionTest(C_TOUCH, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)116if checkResult == true117CallFunction(Player_Hit)118end if119object.xpos = temp0120object.ypos = temp1121next122end event123124125event ObjectDraw126temp0 = 0127temp1 = 16128while temp0 < object.length129Cos(temp2, object.swingAngle)130temp2 *= temp1131temp2 <<= 7132temp2 += object.xpos133Sin(temp3, object.swingAngle)134temp3 *= temp1135temp3 <<= 7136temp3 += object.ypos137DrawSpriteXY(1, temp2, temp3)138temp0++139temp1 += 16140loop141142DrawSpriteXY(2, object.drawPos.x, object.drawPos.y)143DrawSprite(0)144end event145146147event ObjectStartup148LoadSpriteSheet("SBZ/Objects.gif")149SpriteFrame(-15, -23, 30, 30, 92, 31)150SpriteFrame(-8, -8, 16, 16, 65, 106)151SpriteFrame(-24, -24, 48, 48, 397, 182)152153temp0 = 0154SwingingSpike_startDebugID = DebugMode_ObjCount155SwingingSpike_startDebugID--156while temp0 < 8157SetTableValue(TypeName[Swinging Spike], DebugMode_ObjCount, DebugMode_TypesTable)158SetTableValue(SwingingSpike_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)159SetTableValue(SwingingSpike_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)160DebugMode_ObjCount++161temp0++162loop163end event164165166// ========================167// Editor Events168// ========================169170event RSDKDraw171DrawSprite(0)172173temp0 = 0174temp1 = 16175while temp0 < object.length176Cos(temp2, 128)177temp2 *= temp1178temp2 <<= 7179temp2 += object.xpos180Sin(temp3, 128)181temp3 *= temp1182temp3 <<= 7183temp3 += object.ypos184DrawSpriteXY(1, temp2, temp3)185temp0++186temp1 += 16187loop188temp1 -= 8189Cos(temp2, 128)190temp2 *= temp1191temp2 <<= 7192temp2 += object.xpos193Sin(temp3, 128)194temp3 *= temp1195temp3 <<= 7196temp3 += object.ypos197DrawSpriteXY(2, temp2, temp3)198end event199200201event RSDKLoad202LoadSpriteSheet("SBZ/Objects.gif")203SpriteFrame(-15, -23, 30, 30, 92, 31)204SpriteFrame(-8, -8, 16, 16, 65, 106)205SpriteFrame(-24, -24, 48, 48, 397, 182)206207SetVariableAlias(ALIAS_VAR_PROPVAL, "length")208end event209210211