Path: blob/master/Sonic 1/Scripts/Global/FireShield.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Fire Shield Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value18 : object.sortedDrawOrder1314private alias -1 : DRAWORDER_PLAYER1516private alias object.state : player.state17private alias object.xpos : player.xpos18private alias object.ypos : player.ypos1920// Flame shield states21private alias 0 : FIRESHIELD_IDLE_SETUP22private alias 1 : FIRESHIELD_IDLE23private alias 2 : FIRESHIELD_DASH_SETUP24private alias 3 : FIRESHIELD_DASH2526// Super States27private alias 1 : SUPERSTATE_SUPER282930// ========================31// Tables32// ========================3334// Passive/idle ver - just staying around the player normally35private table FireShield_idleFrameTable360, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 7, 4, 5, 2, 3, 0, 137end table3839// Active - During flame dash40private table FireShield_dashFrameTable4110, 11, 12, 10, 12, 13, 10, 11, 12, 10, 12, 13, 042end table434445// ========================46// Events47// ========================4849event ObjectUpdate50object.drawOrder = DRAWORDER_PLAYER5152// Unload if the player shouldn't have a shield53if player[-playerCount].state == Player_State_Death54object.type = TypeName[Blank Object]55end if56if player[-playerCount].state == Player_State_Drown57object.type = TypeName[Blank Object]58end if5960switch object.state61case FIRESHIELD_IDLE_SETUP62object.animationTimer = 063object.timer = 064object.sortedDrawOrder = 065object.direction = FACING_RIGHT66GetTableValue(object.frame, object.timer, FireShield_idleFrameTable)67object.state++68// [Fallthrough]69case FIRESHIELD_IDLE70object.animationTimer++7172if object.animationTimer >= 373object.animationTimer = 174object.timer++75object.sortedDrawOrder ^= 17677if object.timer >= 1078object.direction = FLIP_Y7980if object.timer >= 1881object.timer = 082object.direction = FACING_RIGHT83end if84end if8586GetTableValue(object.frame, object.timer, FireShield_idleFrameTable)87end if88break8990case FIRESHIELD_DASH_SETUP91object.animationTimer = 092object.timer = 093object.sortedDrawOrder = 094GetTableValue(object.frame, object.timer, FireShield_dashFrameTable)95object.state++96// [Fallthrough]97case FIRESHIELD_DASH98object.animationTimer++99100if object.animationTimer >= 3101object.animationTimer = 1102object.timer++103104if object.timer >= 12105object.state = FIRESHIELD_IDLE_SETUP106end if107108GetTableValue(object.frame, object.timer, FireShield_dashFrameTable)109end if110break111112end switch113end event114115116event ObjectDraw117if Player_superState != SUPERSTATE_SUPER118DrawSpriteFX(object.frame, FX_FLIP, player[-playerCount].xpos, player[-playerCount].ypos)119end if120end event121122123event ObjectStartup124LoadSpriteSheet("Global/Items3.gif")125126// Flame shield frames127SpriteFrame(-16, 9, 37, 15, 131, 52)128SpriteFrame(-20, -24, 39, 15, 131, 68)129SpriteFrame(-20, 3, 40, 21, 148, 101)130SpriteFrame(-23, -24, 47, 23, 189, 101)131SpriteFrame(-24, -9, 48, 29, 148, 125)132SpriteFrame(-24, -19, 48, 27, 197, 125)133SpriteFrame(-24, -15, 48, 28, 1, 132)134SpriteFrame(-24, -21, 48, 34, 50, 140)135SpriteFrame(-23, -17, 46, 32, 99, 140)136SpriteFrame(-24, -22, 48, 42, 1, 161)137SpriteFrame(-4, -21, 20, 43, 64, 175)138SpriteFrame(-24, -23, 48, 46, 85, 175)139SpriteFrame(-32, -19, 56, 38, 135, 175)140SpriteFrame(-40, -24, 63, 47, 192, 166)141SpriteFrame(0, 0, 1, 1, 1, 1) // (Empty)142end event143144145// ========================146// Editor Events147// ========================148149event RSDKDraw150DrawSprite(0)151end event152153154event RSDKLoad155LoadSpriteSheet("Global/Display.gif")156SpriteFrame(-16, -16, 32, 32, 1, 143)157158SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")159end event160161162