Path: blob/master/Sonic 2/Scripts/ARZ/EggmanArrow.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Eggman Arrow Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.targetPos.x12private alias object.value1 : object.parent13private alias object.value2 : object.timer1415// States16private alias 0 : EGGMANARROW_MOVING17private alias 1 : EGGMANARROW_STUCK18private alias 2 : EGGMANARROW_FALLING192021// ========================22// Tables23// ========================2425private table EggmanArrow_frameTable260, 0, 1, 1, 0, 0, 2, 227end table282930// ========================31// Events32// ========================3334event ObjectUpdate35switch object.state36case EGGMANARROW_MOVING37if object.direction == FLIP_NONE38object.xpos += object.xvel39if object.xpos >= object.targetPos.x40object.xpos = object.targetPos.x4142arrayPos0 = object.parent43object[arrayPos0].state = 244PlaySfx(SfxName[Arrow Hit], false)4546object.animation = 147object.state++48end if49else50object.xpos -= object.xvel51if object.xpos <= object.targetPos.x52object.xpos = object.targetPos.x5354arrayPos0 = object.parent55object[arrayPos0].state = 256PlaySfx(SfxName[Arrow Hit], false)5758object.animation = 159object.state++60end if61end if6263foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)64BoxCollisionTest(C_TOUCH, object.entityPos, -16, -1, 16, 1, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)65if checkResult == true66CallFunction(Player_Hit)67end if68next69break7071case EGGMANARROW_STUCK72foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)73BoxCollisionTest(C_PLATFORM, object.entityPos, -16, -1, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)74if currentPlayer == 075if checkResult == true76if object.timer == 077object.timer = 3078end if79end if80end if81next8283if object.timer != 084object.timer--85if object.timer == 086object.state = EGGMANARROW_FALLING87end if88end if89break9091case EGGMANARROW_FALLING92object.ypos += object.yvel93object.yvel += 0x380094break9596end switch9798if object.animation == 199if object.animationTimer == 32100object.frame = 0101object.animation = 0102else103temp0 = object.animationTimer104temp0 &= 7105GetTableValue(object.frame, temp0, EggmanArrow_frameTable)106object.animationTimer++107end if108end if109end event110111112event ObjectDraw113DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)114end event115116117event ObjectStartup118CheckCurrentStageFolder("Zone03")119if checkResult == true120LoadSpriteSheet("ARZ/Objects.gif")121122// Normal Arrow Frame123SpriteFrame(-16, -3, 29, 6, 194, 1)124125// Arrow Wobble Up Frame126SpriteFrame(-15, -4, 28, 7, 195, 8)127128// Arrow Wobble Down Frame129SpriteFrame(-15, -3, 28, 7, 195, 16)130else131LoadSpriteSheet("MBZ/Objects.gif")132133// Normal Arrow Frame134SpriteFrame(-16, -3, 29, 6, 298, 31)135136// Arrow Wobble Up Frame137SpriteFrame(-15, -4, 28, 7, 299, 38)138139// Arrow Wobble Down Frame140SpriteFrame(-15, -3, 28, 7, 299, 46)141end if142end event143144145// ========================146// Editor Events147// ========================148149event RSDKDraw150DrawSprite(0)151end event152153154event RSDKLoad155CheckCurrentStageFolder("Zone03")156if checkResult == true157LoadSpriteSheet("ARZ/Objects.gif")158SpriteFrame(-16, -3, 29, 6, 194, 1)159else160LoadSpriteSheet("MBZ/Objects.gif")161SpriteFrame(-16, -3, 29, 6, 298, 31)162end if163164SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")165end event166167168