Path: blob/main/Scripts/R6/Climber.txt
1319 views
//-----------------Sonic CD Climber Script--------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.YOriginPos // Unused6#alias Object.Value2 : Object.BottomStep7#alias Object.Value3 : Object.FlameFrame8#alias Object.Value4 : Object.FlameAnimation9#alias Object.Value5 : Object.Timer1011// Step Sides12#alias 0 : LEFT_STEP13#alias 1 : RIGHT_STEP1415// States16#alias 0 : CLIMBER_ACTIVE17#alias 1 : CLIMBER_DESCENDING1819// Collision Sides20#alias 0 : CSIDE_FLOOR212223sub ObjectMain24if Object.State == CLIMBER_ACTIVE25if Object.BottomStep == RIGHT_STEP26if Object.Frame > 027Object.YPos -= 0xC000028Object.Frame--29else30if Object.Timer < 12031Object.Timer++32if Object.Timer == 6033Object.FlameAnimation = 134end if35else36Object.Timer = 037Object.State = CLIMBER_DESCENDING38Object.FlameAnimation = 239end if40end if41else42if Object.Frame < 443Object.Frame++44Object.YPos -= 0xC000045else46if Object.Timer < 12047Object.Timer++48if Object.Timer == 6049Object.FlameAnimation = 150end if51else52Object.Timer = 053Object.State = CLIMBER_DESCENDING54Object.FlameAnimation = 255end if56end if57end if58else59Object.YPos += 0x1000060if Object.BottomStep == LEFT_STEP61ObjectTileCollision(CSIDE_FLOOR, -25, 32, 0)62else63ObjectTileCollision(CSIDE_FLOOR, 25, 32, 0)64end if65end if66end sub676869sub ObjectPlayerInteraction70switch Object.Frame71case 072PlayerObjectCollision(C_PLATFORM, -56, -33, -24, -16)73if CheckResult == true74Player.YPos += 0x1000075if Object.BottomStep == RIGHT_STEP76Object.BottomStep = LEFT_STEP77Object.State = CLIMBER_ACTIVE78Object.FlameAnimation = 079Object.Timer = 080end if81end if8283PlayerObjectCollision(C_PLATFORM, 24, 15, 56, 32)84if CheckResult == true85Player.YPos += 0x1000086if Object.BottomStep == LEFT_STEP87Object.BottomStep = RIGHT_STEP88Object.State = CLIMBER_ACTIVE89Object.FlameAnimation = 090Object.Timer = 091end if92end if93break9495case 196PlayerObjectCollision(C_PLATFORM, -56, -21, -24, -4)97if CheckResult == true98Player.YPos += 0x1000099if Object.BottomStep == RIGHT_STEP100Object.BottomStep = LEFT_STEP101Object.State = CLIMBER_ACTIVE102Object.FlameAnimation = 0103Object.Timer = 0104end if105end if106107PlayerObjectCollision(C_PLATFORM, 24, 3, 56, 20)108if CheckResult == true109Player.YPos += 0x10000110if Object.BottomStep == LEFT_STEP111Object.BottomStep = RIGHT_STEP112Object.State = CLIMBER_ACTIVE113Object.FlameAnimation = 0114Object.Timer = 0115end if116end if117break118119case 2120PlayerObjectCollision(C_PLATFORM, -56, -9, -24, 8)121if CheckResult == true122Player.YPos += 0x10000123if Object.BottomStep == RIGHT_STEP124Object.BottomStep = LEFT_STEP125Object.State = CLIMBER_ACTIVE126Object.FlameAnimation = 0127Object.Timer = 0128end if129end if130131PlayerObjectCollision(C_PLATFORM, 24, -9, 56, 8)132if CheckResult == true133Player.YPos += 0x10000134if Object.BottomStep == LEFT_STEP135Object.BottomStep = RIGHT_STEP136Object.State = CLIMBER_ACTIVE137Object.FlameAnimation = 0138Object.Timer = 0139end if140end if141break142143case 3144PlayerObjectCollision(C_PLATFORM, -56, 3, -24, 20)145if CheckResult == true146Player.YPos += 0x10000147if Object.BottomStep == RIGHT_STEP148Object.BottomStep = LEFT_STEP149Object.State = CLIMBER_ACTIVE150Object.FlameAnimation = 0151Object.Timer = 0152end if153end if154155PlayerObjectCollision(C_PLATFORM, 24, -21, 56, -4)156if CheckResult == true157Player.YPos += 0x10000158if Object.BottomStep == LEFT_STEP159Object.BottomStep = RIGHT_STEP160Object.State = CLIMBER_ACTIVE161Object.FlameAnimation = 0162Object.Timer = 0163end if164end if165break166167case 4168PlayerObjectCollision(C_PLATFORM, -56, 15, -24, 32)169if CheckResult == true170Player.YPos += 0x10000171if Object.BottomStep == RIGHT_STEP172Object.BottomStep = LEFT_STEP173Object.State = CLIMBER_ACTIVE174Object.FlameAnimation = 0175Object.Timer = 0176end if177end if178179PlayerObjectCollision(C_PLATFORM, 24, -33, 56, -16)180if CheckResult == true181Player.YPos += 0x10000182if Object.BottomStep == LEFT_STEP183Object.BottomStep = RIGHT_STEP184Object.State = CLIMBER_ACTIVE185Object.FlameAnimation = 0186Object.Timer = 0187end if188end if189break190191end switch192end sub193194195sub ObjectDraw196switch Object.Frame197case 0198DrawSprite(0)199DrawSprite(3)200DrawSpriteFX(7, FX_FLIP, Object.XPos, Object.YPos)201break202203case 1204DrawSprite(1)205DrawSprite(4)206DrawSpriteFX(6, FX_FLIP, Object.XPos, Object.YPos)207break208209case 2210DrawSprite(2)211DrawSprite(5)212DrawSpriteFX(5, FX_FLIP, Object.XPos, Object.YPos)213break214215case 3216DrawSpriteFX(1, FX_FLIP, Object.XPos, Object.YPos)217DrawSprite(6)218DrawSpriteFX(4, FX_FLIP, Object.XPos, Object.YPos)219break220221case 4222DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)223DrawSprite(7)224DrawSpriteFX(3, FX_FLIP, Object.XPos, Object.YPos)225break226227end switch228229switch Object.FlameAnimation230case 0231TempValue0 = Object.FlameFrame232TempValue0 /= 3233TempValue0 += 8234235Object.FlameFrame++236Object.FlameFrame %= 6237break238239case 1 // leaving this animation sometimes creates a bug where the frame gets out of index, resulting in garbage sprites240TempValue0 = Object.FlameFrame241TempValue0 /= 3242TempValue0 += 8243244Object.FlameFrame++245Object.FlameFrame %= 12246break247248case 2249TempValue0 = Object.FlameFrame250TempValue0 /= 3251TempValue0 += 10252253Object.FlameFrame++254Object.FlameFrame %= 6255break256257end switch258DrawSprite(TempValue0)259end sub260261262sub ObjectStartup263LoadSpriteSheet("R6/Objects3.gif")264265SpriteFrame(-24, -24, 48, 48, 1, 52) // #0 - Climber Body266SpriteFrame(-24, -16, 48, 32, 174, 220) // #1 - Climber Body half-step267SpriteFrame(-24, -8, 48, 23, 122, 181) // #2 - Climber Body balanced268269SpriteFrame(-56, -32, 32, 16, 223, 233) // #3 - Climber Step Bottom270SpriteFrame(-56, -20, 32, 16, 223, 233) // #4 - Climber Half-Step Bottom271SpriteFrame(-56, -8, 32, 16, 223, 233) // #5 - Climber Middle-Step272SpriteFrame(-56, 4, 32, 16, 223, 233) // #6 - Climber Half-Step Top273SpriteFrame(-56, 16, 32, 16, 223, 233) // #7 - Climber Step Top274275SpriteFrame(-6, 15, 12, 9, 197, 200) // #8 - Powered Flame frame 0276SpriteFrame(-6, 15, 12, 9, 210, 200) // #9 - Powered Flame frame 1277SpriteFrame(-6, 15, 12, 9, 197, 210) // #10 - Flame frame 0278SpriteFrame(-6, 15, 12, 9, 210, 210) // #11 - Flame frame 1279280ArrayPos0 = 32281while ArrayPos0 < 1056282if Object[ArrayPos0].Type == TypeName[Climber]283Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos284Object[ArrayPos0].Direction = FACING_LEFT285end if286ArrayPos0++287loop288end sub289290291// ========================292// Editor Subs293// ========================294295sub RSDKDraw296DrawSprite(0)297DrawSprite(3)298Object.Direction = FACING_LEFT299DrawSpriteFX(7, FX_FLIP, Object.XPos, Object.YPos)300end sub301302303sub RSDKLoad304LoadSpriteSheet("R6/Objects3.gif")305306SpriteFrame(-24, -24, 48, 48, 1, 52) // #0 - Climber Body307SpriteFrame(-24, -16, 48, 32, 174, 220) // #1 - Climber Body half-step308SpriteFrame(-24, -8, 48, 23, 122, 181) // #2 - Climber Body balanced309310SpriteFrame(-56, -32, 32, 16, 223, 233) // #3 - Climber Step Bottom311SpriteFrame(-56, -20, 32, 16, 223, 233) // #4 - Climber Half-Step Bottom312SpriteFrame(-56, -8, 32, 16, 223, 233) // #5 - Climber Middle-Step313SpriteFrame(-56, 4, 32, 16, 223, 233) // #6 - Climber Half-Step Top314SpriteFrame(-56, 16, 32, 16, 223, 233) // #7 - Climber Step Top315316SpriteFrame(-6, 15, 12, 9, 197, 200) // #8 - Powered Flame frame 0317SpriteFrame(-6, 15, 12, 9, 210, 200) // #9 - Powered Flame frame 1318SpriteFrame(-6, 15, 12, 9, 197, 210) // #10 - Flame frame 0319SpriteFrame(-6, 15, 12, 9, 210, 210) // #11 - Flame frame 1320SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")321end sub322323324