Path: blob/master/Sonic 2/Scripts/CNZ/VFlipper.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: V Flipper 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 : VFLIPPER_IDLE15private alias 1 : VFLIPPER_ACTIVATED_L16private alias 2 : VFLIPPER_ACTIVATED_R1718// Player Aliases19private alias object.state : player.state20private alias object.iypos : player.iypos21private alias object.xvel : player.xvel22private alias object.speed : player.speed23private alias object.gravity : player.gravity24private alias object.prevAnimation : player.prevAnimation25private alias object.animation : player.animation2627private alias object.value30 : player.jumpOffset282930// ========================31// Function Declarations32// ========================3334reserve function VFlipper_DebugDraw35reserve function VFlipper_DebugSpawn363738// ========================39// Function Definitions40// ========================4142private function VFlipper_DebugDraw43DrawSprite(0)44end function454647private function VFlipper_DebugSpawn48CreateTempObject(TypeName[V Flipper], 0, object.xpos, object.ypos)49end function505152// ========================53// Events54// ========================5556event ObjectUpdate57switch object.state58default59case VFLIPPER_IDLE60break6162case VFLIPPER_ACTIVATED_L63object.frame = object.timer64object.frame >>= 165object.frame++66if object.timer < 667object.timer++68else69object.timer = 070object.frame = 071object.state = VFLIPPER_IDLE72end if73break7475case VFLIPPER_ACTIVATED_R76object.frame = object.timer77object.frame >>= 178object.frame += 379if object.timer < 680object.timer++81else82object.timer = 083object.frame = 084object.state = VFLIPPER_IDLE85end if86break8788end switch8990foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)91BoxCollisionTest(C_SOLID, object.entityPos, -8, -24, 8, 24, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)92if player[currentPlayer].gravity == GRAVITY_GROUND93switch checkResult94default95case COL_NONE96case COL_TOP97case COL_BOTTOM98break99100case COL_LEFT101player[currentPlayer].speed = -0x100000102player[currentPlayer].xvel = -0x100000103104if player[currentPlayer].state != Player_State_TubeRoll105player[currentPlayer].state = Player_State_Roll106player[currentPlayer].animation = ANI_JUMPING107end if108109if player[currentPlayer].prevAnimation != ANI_JUMPING110player[currentPlayer].iypos -= player[currentPlayer].jumpOffset111end if112113object.state = VFLIPPER_ACTIVATED_L114PlaySfx(SfxName[Flipper], false)115break116117case COL_RIGHT118player[currentPlayer].speed = 0x100000119player[currentPlayer].xvel = 0x100000120121CheckEqual(player[currentPlayer].state, Player_State_TubeRoll)122temp0 = checkResult123CheckEqual(player[currentPlayer].state, Player_State_TubeAirRoll)124temp0 |= checkResult125if temp0 == false126player[currentPlayer].state = Player_State_Roll127player[currentPlayer].animation = ANI_JUMPING128end if129130if player[currentPlayer].prevAnimation != ANI_JUMPING131player[currentPlayer].iypos -= player[currentPlayer].jumpOffset132end if133134object.state = VFLIPPER_ACTIVATED_R135PlaySfx(SfxName[Flipper], false)136break137end switch138end if139next140end event141142143event ObjectDraw144DrawSprite(object.frame)145end event146147148event ObjectStartup149CheckCurrentStageFolder("Zone04")150if checkResult == true151LoadSpriteSheet("CNZ/Objects.gif")152SpriteFrame(-8, -24, 16, 48, 101, 157)153SpriteFrame(-17, -25, 26, 47, 118, 157)154SpriteFrame(-8, -24, 16, 48, 101, 157)155SpriteFrame(-9, -25, 26, 47, 74, 157)156SpriteFrame(-8, -24, 16, 48, 101, 157)157SpriteFrame(-17, -25, 26, 47, 118, 157)158else159LoadSpriteSheet("MBZ/Objects.gif")160SpriteFrame(-8, -24, 16, 48, 321, 338)161SpriteFrame(-17, -25, 26, 47, 338, 338)162SpriteFrame(-8, -24, 16, 48, 321, 338)163SpriteFrame(-9, -25, 26, 47, 394, 338)164SpriteFrame(-8, -24, 16, 48, 321, 338)165SpriteFrame(-17, -25, 26, 47, 338, 338)166end if167168SetTableValue(TypeName[V Flipper], DebugMode_ObjCount, DebugMode_TypesTable)169SetTableValue(VFlipper_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)170SetTableValue(VFlipper_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)171DebugMode_ObjCount++172end event173174175// ========================176// Editor Events177// ========================178179event RSDKDraw180DrawSprite(0)181end event182183184event RSDKLoad185CheckCurrentStageFolder("Zone04")186if checkResult == true187LoadSpriteSheet("CNZ/Objects.gif")188SpriteFrame(-8, -24, 16, 48, 101, 157)189else190LoadSpriteSheet("MBZ/Objects.gif")191SpriteFrame(-8, -24, 16, 48, 321, 338)192end if193194SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")195end event196197198