Path: blob/master/Sonic 2/Scripts/OOZ/EggmanHarpoon.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Eggman Harpoon Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value1 : object.originPos.x12private alias object.value2 : object.originPos.y1314// States15private alias 0 : OOZEGGMANHARPOON_SETUP16private alias 1 : OOZEGGMANHARPOON_MOVERIGHT17private alias 2 : OOZEGGMANHARPOON_MOVELEFT181920// ========================21// Events22// ========================2324event ObjectUpdate25switch object.state26case OOZEGGMANHARPOON_SETUP27if object.propertyValue == 028object.originPos.x = object.xpos29object.originPos.x += 0x80000030object.originPos.y = object.ypos31object.state = OOZEGGMANHARPOON_MOVELEFT32else33object.originPos.x = object.xpos34object.originPos.x -= 0x80000035object.originPos.y = object.ypos36object.state = OOZEGGMANHARPOON_MOVERIGHT37end if38temp1 = object.angle39break4041case OOZEGGMANHARPOON_MOVERIGHT42object.angle += 243object.angle &= 0x1FF44if object.angle == 045object.type = TypeName[Blank Object]46end if47temp1 = object.angle48temp1 += 1249break5051case OOZEGGMANHARPOON_MOVELEFT52object.angle -= 253object.angle &= 0x1FF54if object.angle == 055object.type = TypeName[Blank Object]56end if57temp1 = object.angle58temp1 -= 1259break6061end switch6263Sin(object.xpos, object.angle)64object.xpos *= 0x340065object.xpos += object.originPos.x6667Cos(object.ypos, object.angle)68object.ypos *= 0x340069object.ypos += object.originPos.y7071foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)72BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)73if checkResult == true74CallFunction(Player_Hit)75end if76next7778Sin(object.xpos, temp1)79object.xpos *= 0x340080object.xpos += object.originPos.x8182Cos(object.ypos, temp1)83object.ypos *= 0x340084object.ypos += object.originPos.y8586foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)87BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)88if checkResult == true89CallFunction(Player_Hit)90end if91next92end event939495event ObjectDraw96temp1 = object.angle97if object.state == OOZEGGMANHARPOON_MOVELEFT98temp1 += 10899temp1 &= 0x1FF100temp0 = 0101while temp0 < 9102Sin(object.xpos, temp1)103object.xpos *= 0x3400104object.xpos += object.originPos.x105106Cos(object.ypos, temp1)107object.ypos *= 0x3400108object.ypos += object.originPos.y109110DrawSprite(0)111112temp0++113temp1 -= 12114temp1 &= 0x1FF115loop116object.direction = FLIP_X117object.rotation = 0x180118object.rotation -= object.angle119object.rotation &= 0x1FF120else121temp1 -= 108122temp1 &= 0x1FF123temp0 = 0124while temp0 < 9125Sin(object.xpos, temp1)126object.xpos *= 0x3400127object.xpos += object.originPos.x128129Cos(object.ypos, temp1)130object.ypos *= 0x3400131object.ypos += object.originPos.y132133DrawSprite(0)134135temp0++136temp1 += 12137temp1 &= 0x1FF138loop139object.direction = FLIP_NONE140object.rotation = 0x080141object.rotation -= object.angle142object.rotation &= 0x1FF143end if144145DrawSpriteFX(1, FX_ROTATE, object.xpos, object.ypos)146end event147148149event ObjectStartup150CheckCurrentStageFolder("Zone07")151if checkResult == true152LoadSpriteSheet("OOZ/Objects.gif")153SpriteFrame(-8, -8, 16, 16, 379, 196)154SpriteFrame(-8, -34, 16, 31, 379, 213)155else156LoadSpriteSheet("MBZ/Objects.gif")157SpriteFrame(-8, -8, 16, 16, 355, 214)158SpriteFrame(-8, -34, 16, 31, 360, 50)159end if160end event161162163// ========================164// Editor Events165// ========================166167event RSDKDraw168DrawSprite(0)169end event170171172event RSDKLoad173CheckCurrentStageFolder("Zone07")174if checkResult == true175LoadSpriteSheet("OOZ/Objects.gif")176SpriteFrame(-8, -34, 16, 31, 379, 213)177else178LoadSpriteSheet("MBZ/Objects.gif")179SpriteFrame(-8, -34, 16, 31, 360, 50)180end if181182// Although used by the object, it's not to be set from the editor (or placed into a scene at all)183SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")184end event185186187