Path: blob/master/Sonic 2/Scripts/MCZ/HPZTrigger.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: HPZ Trigger Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer1213private alias 0 : HPZTRIGGER_BLANK14private alias 1 : HPZTRIGGER_PAUSE15private alias 2 : HPZTRIGGER_FADEOUT1617// Player Aliases18private alias object.state : player.state19private alias object.yvel : player.yvel20private alias object.animation : player.animation21private alias object.value0 : player.rings22private alias object.value25 : player.gravityStrength2324// Game Modes25private alias 2 : MODE_TIMEATTACK262728// ========================29// Events30// ========================3132event ObjectUpdate33// Check if the camera bounds should change now34BoxCollisionTest(C_TOUCH, object.entityPos, -68, 0, 68, 5120, 0, 0, 0, 0, 0)35if checkResult == true36stage.curYBoundary2 = 0x100037stage.deathBoundary = 0x140038stage.deathBoundary <<= 1639else40stage.curYBoundary2 = 0x80041stage.deathBoundary = stage.curYBoundary242stage.deathBoundary <<= 1643end if4445foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)46// Check player collision47BoxCollisionTest(C_TOUCH, object.entityPos, -68, 512, 68, 5120, currentPlayer, 0, 0, 0, 0)4849if checkResult == true50// Player has touched this object, start the transition5152// Make the player start flailing53player[currentPlayer].animation = ANI_WATERSLIDE5455// The player might be flying or gliding or climbing or a variety of not-free-falling states, so let's make sure they're falling normally56#platform: USE_STANDALONE57player[currentPlayer].state = Player_State_Air58#endplatform59#platform: USE_ORIGINS60player[currentPlayer].state = Player_State_Air_NoDropDash61#endplatform6263// Enforce maximum Y velocity64if player[currentPlayer].yvel >= 0x10000065player[currentPlayer].yvel = 0x10000066player[currentPlayer].yvel -= player[currentPlayer].gravityStrength67end if6869// If P1, switch to main state70if currentPlayer == 071if object.state == HPZTRIGGER_BLANK72object.state = HPZTRIGGER_PAUSE73end if74end if75end if76next7778switch object.state79case HPZTRIGGER_PAUSE80// Letting the player fall for a second81object.timer++82if object.timer == 6083object.timer = 084object.state++85end if86break8788case HPZTRIGGER_FADEOUT89// Fading out to go to HPZ90music.volume -= 291object.timer += 892SetScreenFade(0, 0, 0, object.timer)93if object.timer == 38494#platform: USE_ORIGINS95CallNativeFunction4(NotifyCallback, NOTIFY_STATS_ENEMY, StageStatsUsabilityParam1, StageStatsUsabilityParam2, StageStatsUsabilityParam3)96CallNativeFunction2(NotifyCallback, NOTIFY_STATS_RING, player[0].rings)97game.stageskipped = true // Set this temporarily98CallNativeFunction2(NotifyCallback, NOTIFY_ACT_FINISH, 1)99game.stageskipped = false // See? Temporary!100#endplatform101starPostID = 0102stage.listPos = 20103StopMusic()104LoadStage()105end if106break107108end switch109end event110111112event ObjectStartup113// Cycle through all HPZ Trigger objects and...114foreach (TypeName[HPZ Trigger], arrayPos0, ALL_ENTITIES)115if options.gameMode == MODE_TIMEATTACK116// Erase it if in time attack, turning this pit into just a normal bottomless pit117ResetObjectEntity(arrayPos0, TypeName[Blank Object], 0, 0, 0)118else119if options.vsMode == false120// Give it the XBOUNDS priority if in single player121object[arrayPos0].priority = PRIORITY_XBOUNDS122else123// Erase it if in 2P mode124ResetObjectEntity(arrayPos0, TypeName[Blank Object], 0, 0, 0)125end if126end if127next128end event129130131// ========================132// Editor Events133// ========================134135event RSDKDraw136DrawSprite(0)137138if editor.showGizmos == true139editor.drawingOverlay = true140141// Draw this object's giant hitbox, a lone "T" icon doesn't do this object justice142143temp0 = 68; temp1 = 512; temp2 = 68; temp3 = 5120;144CallFunction(EditorHelpers_DrawHitbox)145146editor.drawingOverlay = false147end if148end event149150151event RSDKLoad152LoadSpriteSheet("Global/Display.gif")153SpriteFrame(-8, -8, 16, 16, 168, 18) // "trigger" - #0154155SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")156end event157158159