Path: blob/master/Sonic 1/Scripts/SYZ/RSpikeChain.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: R Spike Chain Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.rotationSpeed12private alias object.value1 : object.length1314// Player Aliases15private alias object.value17 : debugMode.currentSelection161718// ========================19// Function Declarations20// ========================2122reserve function RSpikeChain_DebugDraw23reserve function RSpikeChain_DebugSpawn242526// ========================27// Static Values28// ========================2930private value RSpikeChain_startDebugID = 0313233// ========================34// Function Definitions35// ========================3637private function RSpikeChain_DebugDraw38DrawSprite(0)3940temp0 = debugMode[0].currentSelection41temp0 -= RSpikeChain_startDebugID4243switch temp044case 045case 146temp0 = 447break4849case 250case 351temp0 = 252break5354end switch5556temp1 = object.ypos57while temp0 > 058temp1 -= 0x10000059DrawSpriteXY(1, object.xpos, temp1)60temp0--61loop62end function636465private function RSpikeChain_DebugSpawn66CreateTempObject(TypeName[R Spike Chain], object.direction, object.xpos, object.ypos)67temp0 = debugMode[0].currentSelection68temp0 -= RSpikeChain_startDebugID6970switch temp071case 072object[tempObjectPos].rotationSpeed = 573object[tempObjectPos].length = 474break7576case 177object[tempObjectPos].rotationSpeed = 278object[tempObjectPos].length = 479break8081case 282object[tempObjectPos].rotationSpeed = 283object[tempObjectPos].length = 284break8586case 387object[tempObjectPos].rotationSpeed = -288object[tempObjectPos].length = 289break9091end switch92end function939495// ========================96// Events97// ========================9899event ObjectUpdate100object.angle += object.rotationSpeed101if object.angle < 0102object.angle += 0x200103end if104object.angle &= 0x1FF105106foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)107temp0 = 0108temp1 = 16109temp2 = object.xpos110temp3 = object.ypos111112while temp0 < object.length113Cos(object.xpos, object.angle)114object.xpos *= temp1115object.xpos <<= 7116object.xpos += temp2117118Sin(object.ypos, object.angle)119object.ypos *= temp1120object.ypos <<= 7121object.ypos += temp3122123BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)124if checkResult == true125CallFunction(Player_Hit)126end if127temp0++128temp1 += 16129loop130131object.xpos = temp2132object.ypos = temp3133next134end event135136137event ObjectDraw138DrawSprite(0)139140temp0 = 0141temp1 = 16142while temp0 < object.length143Cos(temp2, object.angle)144temp2 *= temp1145temp2 <<= 7146temp2 += object.xpos147148Sin(temp3, object.angle)149temp3 *= temp1150temp3 <<= 7151temp3 += object.ypos152153DrawSpriteXY(1, temp2, temp3)154155temp0++156temp1 += 16157loop158end event159160161event ObjectStartup162LoadSpriteSheet("SYZ/Objects.gif")163164foreach (TypeName[R Spike Chain], arrayPos0, ALL_ENTITIES)165switch object[arrayPos0].propertyValue166case 0167object[arrayPos0].rotationSpeed = 5168object[arrayPos0].length = 4169break170171case 1172object[arrayPos0].rotationSpeed = 2173object[arrayPos0].length = 4174break175176case 2177object[arrayPos0].rotationSpeed = 2178object[arrayPos0].length = 2179break180181case 3182object[arrayPos0].rotationSpeed = -2183object[arrayPos0].length = 2184break185186end switch187next188189SpriteFrame(-8, -8, 16, 16, 88, 138)190SpriteFrame(-8, -8, 16, 16, 88, 138)191192temp0 = 0193RSpikeChain_startDebugID = DebugMode_ObjCount194while temp0 < 4195SetTableValue(TypeName[R Spike Chain], DebugMode_ObjCount, DebugMode_TypesTable)196SetTableValue(RSpikeChain_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)197SetTableValue(RSpikeChain_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)198DebugMode_ObjCount++199temp0++200loop201end event202203204// ========================205// Editor Events206// ========================207208event RSDKEdit209if editor.returnVariable == true210switch editor.variableID211case EDIT_VAR_PROPVAL // property value212checkResult = object.propertyValue213break214215case 0 // type216checkResult = object.propertyValue217break218219end switch220else221switch editor.variableID222case EDIT_VAR_PROPVAL // property value223object.propertyValue = editor.variableValue224break225226case 0 // type227object.propertyValue = editor.variableValue228break229230end switch231end if232end event233234235event RSDKDraw236switch object.propertyValue237default238case 0239object.rotationSpeed = 5240object.length = 4241break242243case 1244object.rotationSpeed = 2245object.length = 4246break247248case 2249object.rotationSpeed = 2250object.length = 2251break252253case 3254object.rotationSpeed = -2255object.length = 2256break257258end switch259260DrawSprite(0)261262temp0 = 0263temp1 = 16264while temp0 < object.length265Cos(temp2, object.angle)266temp2 *= temp1267temp2 <<= 7268temp2 += object.xpos269270Sin(temp3, object.angle)271temp3 *= temp1272temp3 <<= 7273temp3 += object.ypos274275DrawSpriteXY(1, temp2, temp3)276277temp0++278temp1 += 16279loop280end event281282283event RSDKLoad284LoadSpriteSheet("SYZ/Objects.gif")285SpriteFrame(-8, -8, 16, 16, 88, 138)286SpriteFrame(-8, -8, 16, 16, 88, 138)287288AddEditorVariable("type")289SetActiveVariable("type")290AddEnumVariable("Speed: Fast, Length: Long", 0)291AddEnumVariable("Speed: Slow, Length: Long", 1)292AddEnumVariable("Speed: Slow, Length: Short", 2)293AddEnumVariable("Speed: Slow (Reverse), Length: Short", 3)294end event295296297