Path: blob/master/Sonic 2/Scripts/WFZ/Turret.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Turret 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 : TURRET_SEARCHING15private alias 1 : TURRET_ACTIVATED1617// Player Aliases18private alias object.xpos : player.xpos19private alias object.ypos : player.ypos202122// ========================23// Function Declarations24// ========================2526reserve function Turret_DebugDraw27reserve function Turret_DebugSpawn282930// ========================31// Function Definitions32// ========================3334private function Turret_DebugDraw35DrawSprite(0)36end function373839private function Turret_DebugSpawn40CreateTempObject(TypeName[Turret], 0, object.xpos, object.ypos)41end function424344// ========================45// Events46// ========================4748event ObjectUpdate49if object.state == TURRET_SEARCHING50foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)51if player[currentPlayer].ypos >= object.ypos52temp0 = player[currentPlayer].xpos53temp0 -= object.xpos54Abs(temp0)55if temp0 < 0x60000056temp0 = player[currentPlayer].ypos57temp0 -= object.ypos58if temp0 < 0x90000059object.timer = 260object.state++61end if62end if63end if64next65else66// Pick a direction based on closest player67temp1 = 0x7FFFFFFF68foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)69temp0 = player[currentPlayer].xpos70temp0 -= object.xpos71Abs(temp0)72if temp0 < temp173if temp0 >= 0x20000074if player[currentPlayer].xpos < object.xpos75object.frame = 176else77object.frame = 278end if79else80object.frame = 081end if82end if83next8485object.timer--86if object.timer == 087object.timer = 9688PlaySfx(SfxName[Octus Shot], false)89CreateTempObject(TypeName[Turret Bullet], 0, object.xpos, object.ypos)90switch object.frame91case 092object[tempObjectPos].ypos += 0x18000093object[tempObjectPos].yvel = 0x1000094break9596case 197object[tempObjectPos].xpos -= 0x11000098object[tempObjectPos].ypos += 0x10000099object[tempObjectPos].xvel = -0x10000100object[tempObjectPos].yvel = 0x10000101break102103case 2104object[tempObjectPos].xpos += 0x110000105object[tempObjectPos].ypos += 0x100000106object[tempObjectPos].xvel = 0x10000107object[tempObjectPos].yvel = 0x10000108break109end switch110end if111end if112end event113114115event ObjectDraw116DrawSprite(object.frame)117end event118119120event ObjectStartup121CheckCurrentStageFolder("Zone11")122if checkResult == true123LoadSpriteSheet("SCZ/Objects.gif")124SpriteFrame(-16, -16, 32, 38, 431, 88)125SpriteFrame(-17, -16, 33, 32, 430, 127)126SpriteFrame(-16, -16, 33, 32, 430, 160)127else128LoadSpriteSheet("MBZ/Objects.gif")129SpriteFrame(-16, -16, 32, 38, 934, 574)130SpriteFrame(-17, -16, 33, 32, 933, 613)131SpriteFrame(-16, -16, 33, 32, 933, 646)132end if133134SetTableValue(TypeName[Turret], DebugMode_ObjCount, DebugMode_TypesTable)135SetTableValue(Turret_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)136SetTableValue(Turret_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)137DebugMode_ObjCount++138end event139140141// ========================142// Editor Events143// ========================144145event RSDKDraw146DrawSprite(0)147end event148149150event RSDKLoad151CheckCurrentStageFolder("Zone11")152if checkResult == true153LoadSpriteSheet("SCZ/Objects.gif")154SpriteFrame(-16, -16, 32, 38, 431, 88)155else156LoadSpriteSheet("MBZ/Objects.gif")157SpriteFrame(-16, -16, 32, 38, 934, 574)158end if159160SetVariableAlias(ALIAS_VAR_PROPVAL, "delay")161end event162163164