Path: blob/master/Sonic 2/Scripts/ARZ/ArrowLauncher.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Arrow Launcher Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer1213// States14private alias 0 : ARROWLAUNCHER_AWAITPLAYER15private alias 1 : ARROWLAUNCHER_ACTIVATE16private alias 2 : ARROWLAUNCHER_FIREARROW1718// Arrow Aliases19private alias object.value0 : arrow.timer20private alias object.value2 : arrow.drawPos.x212223// ========================24// Function Declarations25// ========================2627reserve function ArrowLauncher_DebugDraw28reserve function ArrowLauncher_DebugSpawn293031// ========================32// Function Definitions33// ========================3435private function ArrowLauncher_DebugDraw36DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)37end function383940private function ArrowLauncher_DebugSpawn41CreateTempObject(TypeName[Arrow Launcher], 0, object.xpos, object.ypos)42object[tempObjectPos].direction = object.direction43end function444546// ========================47// Events48// ========================4950event ObjectUpdate51switch object.state52case ARROWLAUNCHER_AWAITPLAYER53foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)54BoxCollisionTest(C_TOUCH, object.entityPos, -64, -256, 64, 256, currentPlayer, -1, -1, 1, 1)55if checkResult == true56object.state = ARROWLAUNCHER_ACTIVATE57end if58next59break6061case ARROWLAUNCHER_ACTIVATE62object.timer++63object.timer &= 764object.frame = object.timer65object.frame >>= 26667temp0 = false68foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)69BoxCollisionTest(C_TOUCH, object.entityPos, -64, -256, 64, 256, currentPlayer, -1, -1, 1, 1)70temp0 += checkResult71next7273if temp0 == false74object.state = ARROWLAUNCHER_FIREARROW75object.timer = 076object.frame = 277PlaySfx(SfxName[Swish], false)78end if79break8081case ARROWLAUNCHER_FIREARROW82object.timer++83switch object.timer84case 885object.frame = 386CreateTempObject(TypeName[Arrow], 0, object.xpos, object.ypos)87if object.direction == FLIP_X88object[tempObjectPos].xvel = -0x4000089else90object[tempObjectPos].xvel = 0x4000091end if92object[tempObjectPos].drawOrder = 193arrow[tempObjectPos].timer = 2494arrow[tempObjectPos].drawPos.x = object.xpos95object[tempObjectPos].direction = object.direction96break9798case 2499object.frame = 2100break101102case 32103object.timer = 0104object.frame = 0105object.state = ARROWLAUNCHER_AWAITPLAYER106break107108end switch109break110111end switch112end event113114115event ObjectDraw116DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)117end event118119120event ObjectStartup121LoadSpriteSheet("ARZ/Objects.gif")122SpriteFrame(-16, -8, 32, 16, 1, 1)123SpriteFrame(-16, -8, 32, 16, 1, 18)124SpriteFrame(-16, -8, 32, 16, 1, 35)125SpriteFrame(-16, -8, 32, 16, 1, 52)126127SetTableValue(TypeName[Arrow Launcher], DebugMode_ObjCount, DebugMode_TypesTable)128SetTableValue(ArrowLauncher_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)129SetTableValue(ArrowLauncher_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)130DebugMode_ObjCount++131132#platform: USE_ORIGINS133if game.playMode == BOOT_PLAYMODE_MISSION134CheckCurrentStageFolder("DLC_ZONE09") // Yeah, not really sure why it's all caps...135if checkResult != false136foreach (TypeName[Arrow Launcher], arrayPos0, ALL_ENTITIES)137object[arrayPos0].drawOrder = 5138next139end if140end if141#endplatform142end event143144145// ========================146// Editor Events147// ========================148149event RSDKDraw150DrawSprite(0)151end event152153154event RSDKLoad155LoadSpriteSheet("ARZ/Objects.gif")156SpriteFrame(-16, -8, 32, 16, 1, 1)157158SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")159end event160161162