Path: blob/master/Sonic 2/Scripts/Enemies/Nebula.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Nebula Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value2 : object.firedShot1213// States14private alias 0 : NEBULA_AWAITPLAYER15private alias 1 : NEBULA_RISING1617// Player aliases18private alias object.xpos : player.xpos1920private alias object.value40 : player.hitboxLeft21private alias object.value38 : player.hitboxTop22private alias object.value41 : player.hitboxRight23private alias object.value39 : player.hitboxBottom242526// ========================27// Function Declarations28// ========================2930reserve function Nebula_DebugDraw31reserve function Nebula_DebugSpawn323334// ========================35// Function Definitions36// ========================3738private function Nebula_DebugDraw39DrawSprite(2)40end function414243private function Nebula_DebugSpawn44CreateTempObject(TypeName[Nebula], 0, object.xpos, object.ypos)45end function464748// ========================49// Events50// ========================5152event ObjectUpdate53object.xpos += object.xvel54object.xpos += SCZSetup_scrollVelocity.x55object.ypos += SCZSetup_scrollVelocity.y5657switch object.state58case NEBULA_AWAITPLAYER59temp0 = object.xpos60temp0 -= player[0].xpos61Abs(temp0)62if temp0 < 0x80000063object.yvel = -0xA00064object.state++65end if66break6768case NEBULA_RISING69object.yvel += 0x10070object.ypos += object.yvel71if object.firedShot == false72temp0 = object.xpos73temp0 -= player[0].xpos74Abs(temp0)75if temp0 < 0x10000076object.firedShot = true77CreateTempObject(TypeName[Nebula Bomb], 0, object.xpos, object.ypos)78object[tempObjectPos].drawOrder = 279object[tempObjectPos].ypos += 0x18000080end if81end if82break8384end switch8586foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)87BoxCollisionTest(C_TOUCH, object.entityPos, -16, -16, 16, 16, currentPlayer, player[currentPlayer].hitboxLeft, player[currentPlayer].hitboxTop, player[currentPlayer].hitboxRight, player[currentPlayer].hitboxBottom)88if checkResult == true89CallFunction(Player_BadnikBreak)90end if91next9293object.frame = object.animationTimer94object.frame >>= 195object.animationTimer++96object.animationTimer &= 79798temp0 = object.xpos99temp0 -= SCZSetup_scrollPos.x100if temp0 < -0x200000101object.type = TypeName[Blank Object]102end if103end event104105106event ObjectDraw107DrawSprite(object.frame)108end event109110111event ObjectStartup112CheckCurrentStageFolder("Zone10")113if checkResult == true114LoadSpriteSheet("SCZ/Objects.gif")115SpriteFrame(-24, -20, 48, 40, 72, 1)116SpriteFrame(-16, -20, 32, 40, 121, 1)117SpriteFrame(-16, -20, 32, 40, 154, 1)118SpriteFrame(-16, -20, 32, 40, 187, 1)119else120LoadSpriteSheet("MBZ/Objects.gif")121SpriteFrame(-24, -20, 48, 40, 72, 1)122SpriteFrame(-16, -20, 32, 40, 121, 1)123SpriteFrame(-16, -20, 32, 40, 154, 1)124SpriteFrame(-16, -20, 32, 40, 187, 1)125end if126127foreach (TypeName[Nebula], arrayPos0, ALL_ENTITIES)128object[arrayPos0].xvel = -0xC000129if object[arrayPos0].propertyValue > 0130object[arrayPos0].priority = PRIORITY_INACTIVE131end if132next133134SetTableValue(TypeName[Nebula], DebugMode_ObjCount, DebugMode_TypesTable)135SetTableValue(Nebula_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)136SetTableValue(Nebula_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)137DebugMode_ObjCount++138end event139140141// ========================142// Editor Events143// ========================144145event RSDKEdit146if editor.returnVariable == true147switch editor.variableID148case EDIT_VAR_PROPVAL // property value149checkResult = object.propertyValue150break151152case 0 // initialState153checkResult = object.propertyValue154break155156end switch157else158switch editor.variableID159case EDIT_VAR_PROPVAL // property value160object.propertyValue = editor.variableValue161break162163case 0 // initialState164object.propertyValue = editor.variableValue165break166167end switch168end if169end event170171172event RSDKDraw173DrawSprite(2)174end event175176177event RSDKLoad178CheckCurrentStageFolder("Zone10")179if checkResult == true180LoadSpriteSheet("SCZ/Objects.gif")181SpriteFrame(-24, -20, 48, 40, 72, 1)182SpriteFrame(-16, -20, 32, 40, 121, 1)183SpriteFrame(-16, -20, 32, 40, 154, 1)184SpriteFrame(-16, -20, 32, 40, 187, 1)185else186LoadSpriteSheet("MBZ/Objects.gif")187SpriteFrame(-24, -20, 48, 40, 72, 1)188SpriteFrame(-16, -20, 32, 40, 121, 1)189SpriteFrame(-16, -20, 32, 40, 154, 1)190SpriteFrame(-16, -20, 32, 40, 187, 1)191end if192193AddEditorVariable("initialState")194SetActiveVariable("initialState")195AddEnumVariable("Active", 0)196AddEnumVariable("Inactive", 1)197end event198199200