Path: blob/main/Scripts/R1/Kamemusi.txt
1319 views
//-----------------Sonic CD Kamemusi Script-------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.FireTimer78#alias Object.PropertyValue : Object.Quality910// Bullet Aliases11#alias Object.Value1 : Bullet.XVelocity12#alias Object.Value2 : Bullet.YVelocity1314// States15#alias 0 : KAMEMUSI_MOVE_LEFT16#alias 1 : KAMEMUSI_MOVE_RIGHT17#alias 2 : KAMEMUSI_SHOOT1819// Collision Sides20#alias 0 : CSIDE_FLOOR2122// Stage SFX23#alias 1 : SFX_S_SHOT2425// Badnik Quality / Property Values26#alias 0 : GOOD_QUALITY27#alias 1 : BAD_QUALITY282930sub ObjectMain31if Object.Quality == GOOD_QUALITY32switch Object.State33case KAMEMUSI_MOVE_LEFT34Object.Frame++35Object.Frame %= 603637Object.XPos -= 0xAAAA3839Object.Timer--40if Object.Timer == -19241Object.State = KAMEMUSI_MOVE_RIGHT42Object.Direction = FACING_LEFT43end if4445ObjectTileGrip(CSIDE_FLOOR, 0, 14, 0) // Check if there's no more floor46if CheckResult == false47Object.State = KAMEMUSI_MOVE_RIGHT48Object.Timer = -19249Object.Direction = FACING_LEFT50end if5152if Object.FireTimer > -153PlayerObjectCollision(C_TOUCH, -64, -64, 64, 64)54if CheckResult == true55Object.State = KAMEMUSI_SHOOT56Object.DrawOrder = 457end if58else59Object.FireTimer++60end if61break6263case KAMEMUSI_MOVE_RIGHT64Object.Frame++65Object.Frame %= 606667Object.XPos += 0xAAAA6869Object.Timer++70if Object.Timer == 19271Object.State = KAMEMUSI_MOVE_LEFT72Object.Direction = FACING_RIGHT73end if7475ObjectTileGrip(CSIDE_FLOOR, 0, 14, 0) // Check if there's no more floor76if CheckResult == false77Object.State = KAMEMUSI_MOVE_LEFT78Object.Timer = 19279Object.Direction = FACING_RIGHT80end if8182if Object.FireTimer > -183PlayerObjectCollision(C_TOUCH, -64, -64, 64, 64)84if CheckResult == true85Object.State = KAMEMUSI_SHOOT86Object.DrawOrder = 487end if88else89Object.FireTimer++90end if91break9293case KAMEMUSI_SHOOT94if Object.FireTimer == 6095CreateTempObject(TypeName[Bullet], 0, Object.XPos, Object.YPos)96Bullet[TempObjectPos].XVelocity = -0x2000097Bullet[TempObjectPos].YVelocity = -0x5000098end if99100if Object.FireTimer == 62101CreateTempObject(TypeName[Bullet], 0, Object.XPos, Object.YPos)102Bullet[TempObjectPos].XVelocity = 0x20000103Bullet[TempObjectPos].YVelocity = -0x50000104PlayStageSfx(SFX_S_SHOT, false)105end if106107if Object.FireTimer == 64108Object.State = Object.Direction109Object.FireTimer = -120110Object.DrawOrder = 3111else112Object.FireTimer++113end if114115break116end switch117else118switch Object.State119case KAMEMUSI_MOVE_LEFT120Object.Frame++121Object.Frame %= 12122123Object.XPos -= 0x3800124125Object.Timer--126if Object.Timer == -384127Object.State = KAMEMUSI_MOVE_RIGHT128Object.Direction = FACING_LEFT129end if130131ObjectTileGrip(CSIDE_FLOOR, 0, 14, 0)132if CheckResult == false133Object.State = KAMEMUSI_MOVE_RIGHT134Object.Timer = -384135Object.Direction = FACING_LEFT136end if137138if Object.FireTimer == 82139Object.State = KAMEMUSI_SHOOT140Object.FireTimer = 0141else142Object.FireTimer++143end if144145break146147case KAMEMUSI_MOVE_RIGHT148Object.Frame++149Object.Frame %= 12150151Object.XPos += 0x3800152Object.Timer++153if Object.Timer == 384154Object.State = KAMEMUSI_MOVE_LEFT155Object.Direction = FACING_RIGHT156end if157158ObjectTileGrip(CSIDE_FLOOR, 0, 14, 0)159if CheckResult == false160Object.State = KAMEMUSI_MOVE_LEFT161Object.Timer = 384162Object.Direction = FACING_RIGHT163end if164165if Object.FireTimer == 82166Object.State = KAMEMUSI_SHOOT167Object.FireTimer = 0168else169Object.FireTimer++170end if171break172173case KAMEMUSI_SHOOT // in his broken state, the shoot will fail174if Object.FireTimer == 14175Object.State = Object.Direction176Object.FireTimer = 0177else178Object.FireTimer++179end if180break181182end switch183end if184CallFunction(StageSetup_CheckGoodFuture) // Check if it should be a flower185end sub186187188sub ObjectPlayerInteraction189#platform: Use_Standalone190PlayerObjectCollision(C_TOUCH, -16, -14, 16, 14)191#endplatform192#platform: Use_Origins193PlayerObjectCollision(C_ENEMY, -16, -14, 16, 14)194#endplatform195if CheckResult == true196CallFunction(Player_BadnikBreak)197end if198end sub199200201sub ObjectDraw202if Object.Quality == GOOD_QUALITY203if Object.State < KAMEMUSI_SHOOT204TempValue0 = Object.Frame205TempValue0 /= 30206DrawSpriteFX(TempValue0, FX_FLIP, Object.XPos, Object.YPos)207else208DrawSpriteFX(4, FX_FLIP, Object.XPos, Object.YPos)209end if210else211if Object.State < KAMEMUSI_SHOOT212TempValue0 = Object.Frame213TempValue0 /= 6214TempValue0 += 2215DrawSpriteFX(TempValue0, FX_FLIP, Object.XPos, Object.YPos)216else217DrawSpriteFX(4, FX_FLIP, Object.XPos, Object.YPos)218end if219end if220end sub221222223sub ObjectStartup224LoadSpriteSheet("R1/Objects.gif")225226// Good Quality227SpriteFrame(-16, -15, 32, 29, 223, 34) // #0 - Kamemusi Movement Frame 0228SpriteFrame(-16, -14, 32, 28, 223, 93) // #1 - Kamemusi Movement Frame 1229// Bad Quality230SpriteFrame(-16, -15, 32, 29, 223, 34) // #2 - Old Kamemusi Movement Frame 0231SpriteFrame(-16, -14, 32, 28, 223, 64) // #3 - Old Kamemusi Movement Frame 1232233SpriteFrame(-16, -17, 32, 31, 223, 122) // #4 - Kamemusi Shoot Position234end sub235236237// ========================238// Editor Subs239// ========================240241sub RSDKEdit242if Editor.ReturnVariable == true243switch Editor.VariableID244case EDIT_VAR_PROPVAL // Property Value245CheckResult = Object.PropertyValue246CheckResult &= 1247break248case 0 // type249CheckResult = Object.PropertyValue250CheckResult &= 1251break252end switch253else254switch Editor.VariableID255case EDIT_VAR_PROPVAL // Property Value256Object.PropertyValue = Editor.VariableValue257Object.PropertyValue &= 1258break259case 0 // type260Object.PropertyValue = Editor.VariableValue261Object.PropertyValue &= 1262break263end switch264end if265end sub266267268sub RSDKDraw269DrawSprite(Object.PropertyValue)270end sub271272273sub RSDKLoad274LoadSpriteSheet("R1/Objects.gif")275276SpriteFrame(-16, -15, 32, 29, 223, 34) // #0 - Kamemusi277SpriteFrame(-16, -15, 32, 29, 223, 34) // #1 - Old Kamemusi278279AddEditorVariable("condition")280SetActiveVariable("condition")281AddEnumVariable("Good Quality", GOOD_QUALITY)282AddEnumVariable("Bad Quality", BAD_QUALITY)283end sub284285286