Path: blob/master/Sonic 2/Scripts/OOZ/HFan.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: H Fan Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.fanOffset.x1314// States15private alias 0 : HFAN_DEACTIVATE16private alias 1 : HFAN_IDLE17private alias 2 : HFAN_ACTIVE1819// Player Aliases20private alias object.xpos : player.xpos212223// ========================24// Function Declarations25// ========================2627reserve function HFan_DebugDraw28reserve function HFan_DebugSpawn293031// ========================32// Function Definitions33// ========================3435private function HFan_DebugDraw36DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)37end function383940private function HFan_DebugSpawn41CreateTempObject(TypeName[H Fan], 0, object.xpos, object.ypos)42object[tempObjectPos].direction = object.direction43object[tempObjectPos].speed = 4844end function454647// ========================48// Events49// ========================5051event ObjectUpdate52switch object.state53case HFAN_DEACTIVATE54if object.speed > 055object.speed--56else57object.state++58end if59object.frame = object.animationTimer60object.frame /= 4861object.animationTimer += object.speed62object.animationTimer %= 28863break6465case HFAN_IDLE66object.timer++67if object.timer == 3068object.timer = 069object.speed = 4870object.state++71end if72break7374case HFAN_ACTIVE75object.frame = object.animationTimer76object.frame /= 4877object.animationTimer += object.speed78object.animationTimer %= 2887980object.timer++81if object.timer == 18082object.timer = 083object.state = HFAN_DEACTIVATE84end if8586object.fanOffset.x = object.xpos87if object.direction == FLIP_NONE88object.fanOffset.x -= 0xA0000089foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)90BoxCollisionTest(C_TOUCH, object.entityPos, -160, -112, 32, 112, currentPlayer, 0, 0, 0, 0)91if checkResult == true92temp0 = object.fanOffset.x93temp0 -= player[currentPlayer].xpos94temp0 >>= 495player[currentPlayer].xpos += temp096end if97next98else99object.fanOffset.x += 0xA00000100foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)101BoxCollisionTest(C_TOUCH, object.entityPos, -32, -112, 160, 112, currentPlayer, 0, 0, 0, 0)102if checkResult == true103temp0 = object.fanOffset.x104temp0 -= player[currentPlayer].xpos105temp0 >>= 4106player[currentPlayer].xpos += temp0107end if108next109end if110break111112end switch113end event114115116event ObjectDraw117DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)118end event119120121event ObjectStartup122LoadSpriteSheet("OOZ/Objects.gif")123SpriteFrame(-12, -16, 24, 32, 462, 157)124SpriteFrame(-12, -16, 24, 32, 462, 190)125SpriteFrame(-12, -16, 24, 32, 462, 223)126SpriteFrame(-12, -16, 24, 32, 487, 157)127SpriteFrame(-12, -16, 24, 32, 487, 190)128SpriteFrame(-12, -16, 24, 32, 487, 223)129130foreach (TypeName[H Fan], arrayPos0, ALL_ENTITIES)131object[arrayPos0].speed = 36132next133134SetTableValue(TypeName[H Fan], DebugMode_ObjCount, DebugMode_TypesTable)135SetTableValue(HFan_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)136SetTableValue(HFan_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)137DebugMode_ObjCount++138end event139140141// ========================142// Editor Events143// ========================144145event RSDKDraw146DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)147148if editor.showGizmos == true149editor.drawingOverlay = true150151if object.direction == FLIP_NONE152temp0 = 160; temp1 = 112; temp2 = 32; temp3 = 112;153else154temp0 = 32; temp1 = 112; temp2 = 160; temp3 = 112;155end if156CallFunction(EditorHelpers_DrawHitbox)157158editor.drawingOverlay = false159end if160end event161162163event RSDKLoad164LoadSpriteSheet("OOZ/Objects.gif")165SpriteFrame(-12, -16, 24, 32, 462, 157)166167// dir is set from scene instead168SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")169end event170171172