Path: blob/master/Sonic 1/Scripts/Special/Ring.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Ring Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011// Player Aliases12private alias object.value0 : player.rings1314// Music Events15private alias 25 : SLOT_MUSICEVENT_CHANGE1617private alias 2 : MUSICEVENT_TRANSITION181920// ========================21// Function Declarations22// ========================2324reserve function Ring_DebugDraw25reserve function Ring_DebugSpawn262728// ========================29// Function Definitions30// ========================3132private function Ring_DebugDraw33DrawSprite(0)34end function353637private function Ring_DebugSpawn38temp5 = TypeName[Ring]39temp4 = 040CallFunction(DebugMode_PlaceBlock)41object[arrayPos0].drawOrder = 442end function434445// ========================46// Events47// ========================4849event ObjectUpdate50foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)51BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)52if checkResult == true53object.type = TypeName[Ring Sparkle]5455player[currentPlayer].rings++56if player[currentPlayer].rings > 99957player[currentPlayer].rings = 99958end if5960if player[currentPlayer].rings >= ringExtraLife61if options.gameMode != MODE_TIMEATTACK62#platform: USE_STANDALONE63player.lives++64#endplatform65#platform: USE_ORIGINS66if game.coinMode == false67player.lives++68else69CallNativeFunction2(NotifyCallback, NOTIFY_ADD_COIN, 1)70end if71#endplatform72PlaySfx(SfxName[Life], false)73PauseMusic()74ResetObjectEntity(SLOT_MUSICEVENT_CHANGE, TypeName[Music Event], MUSICEVENT_TRANSITION, 0, 0)75object[SLOT_MUSICEVENT_CHANGE].priority = PRIORITY_ACTIVE76end if7778ringExtraLife += 10079if ringExtraLife >= 30080ringExtraLife = 100081end if82end if8384if Player_isWinner == false85if ringPan == 086PlaySfx(SfxName[Ring L], false)87SetSfxAttributes(SfxName[Ring L], -1, -100)88ringPan = 189else90PlaySfx(SfxName[Ring R], false)91SetSfxAttributes(SfxName[Ring R], -1, 100)92ringPan = 093end if94end if9596if player[currentPlayer].rings == 5097player.continues++98PlaySfx(SfxName[Continue], false)99end if100end if101next102end event103104105event ObjectDraw106CallFunction(SpecialSetup_GetBlockPos)107DrawSpriteXY(ringFrame, temp0, temp1)108end event109110111event ObjectStartup112LoadSpriteSheet("Special/Objects.gif")113114// Loop through all objects, view this as a foreach115arrayPos0 = 32116while arrayPos0 < 0x420117if object[arrayPos0].type == TypeName[Ring]118object[arrayPos0].drawOrder = 4119end if120121arrayPos0++122loop123124// Ring frames125SpriteFrame(-8, -8, 16, 16, 172, 376)126SpriteFrame(-8, -8, 16, 16, 189, 376)127SpriteFrame(-8, -8, 16, 16, 206, 376)128SpriteFrame(-8, -8, 16, 16, 223, 376)129SpriteFrame(-8, -8, 16, 16, 240, 376)130SpriteFrame(-8, -8, 16, 16, 257, 376)131SpriteFrame(-8, -8, 16, 16, 274, 376)132SpriteFrame(-8, -8, 16, 16, 291, 376)133134// Add this object to the stage's debug mode list135SetTableValue(TypeName[Ring], DebugMode_ObjCount, DebugMode_TypeTable)136SetTableValue(Ring_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)137SetTableValue(Ring_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)138DebugMode_ObjCount++139end event140141142// ========================143// Editor Events144// ========================145146event RSDKDraw147DrawSprite(0)148end event149150151event RSDKLoad152LoadSpriteSheet("Special/Objects.gif")153SpriteFrame(-8, -8, 16, 16, 172, 376)154155SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")156end event157158159