Path: blob/main/Scripts/R6/Minomusi.txt
1319 views
//-----------------Sonic CD Minomusi 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.YOriginPos7#alias Object.Value2 : Object.SpikeTimer89#alias Object.PropertyValue : Object.Quality1011// States12#alias 0 : MINOMUSI_DETECT_PLAYER13#alias 1 : MINOMUSI_DROP1415// Good Quality States16#alias 2 : MINOMUSI_GOOD_SPIKE_ANIM_117#alias 3 : MINOMUSI_GOOD_SPIKE_ANIM_218#alias 4 : MINOMUSI_GOOD_SPIKE_ANIM_319#alias 5 : MINOMUSI_GOOD_SPIKE_ANIM_420#alias 6 : MINOMUSI_GOOD_SPIKE_ANIM_521#alias 7 : MINOMUSI_GOOD_SPIKE_ANIM_622#alias 8 : MINOMUSI_GOOD_SPIKE_ANIM_723#alias 9 : MINOMUSI_GOOD_SPIKE_ANIM_824#alias 10 : MINOMUSI_GOOD_SPIKE_ANIM_925#alias 11 : MINOMUSI_GOOD_RETIRE2627// Bad Quality States28#alias 2 : MINOMUSI_BAD_FLIP29#alias 3 : MINOMUSI_BAD_FLIP_230#alias 4 : MINOMUSI_BAD_RETIRE3132// Stage SFX33#alias 8 : SFX_S_SPIKES3435// Badnik Quality / Property Values36#alias 0 : GOOD_QUALITY37#alias 1 : BAD_QUALITY3839// Priority40#alias 0 : PRIORITY_BOUNDS41#alias 1 : PRIORITY_ACTIVE424344sub ObjectMain45if Object.OutOfBounds == true46Object.State = MINOMUSI_DETECT_PLAYER47Object.Timer = 048Object.SpikeTimer = 049Object.YPos = Object.YOriginPos50Object.Priority = PRIORITY_BOUNDS51end if5253if Object.Quality == GOOD_QUALITY54switch Object.State55case MINOMUSI_DETECT_PLAYER56Object.Frame = 057if Object.Timer > 058Object.Timer--59end if60break6162case MINOMUSI_DROP63if Object.Timer < 1264Object.YPos += 0x8000065Object.Timer++66else67Object.Timer = 068Object.State++69end if70break7172case MINOMUSI_GOOD_SPIKE_ANIM_173if Object.SpikeTimer < 3074Object.SpikeTimer++75else76Object.SpikeTimer = 077Object.State++78Object.Frame = 379end if80break8182case MINOMUSI_GOOD_SPIKE_ANIM_283Object.State++84Object.Frame = 485PlayStageSfx(SFX_S_SPIKES, false)86break8788case MINOMUSI_GOOD_SPIKE_ANIM_389if Object.SpikeTimer < 390Object.SpikeTimer++91else92Object.SpikeTimer = 093Object.State++94Object.Frame = 395end if96break9798case MINOMUSI_GOOD_SPIKE_ANIM_499Object.State++100Object.Frame = 0101break102103case MINOMUSI_GOOD_SPIKE_ANIM_5104Object.State++105Object.Frame = 3106break107108case MINOMUSI_GOOD_SPIKE_ANIM_6109Object.State++110Object.Frame = 4111break112113case MINOMUSI_GOOD_SPIKE_ANIM_7114if Object.SpikeTimer < 30115Object.SpikeTimer++116else117Object.SpikeTimer = 0118Object.State++119Object.Frame = 3120end if121break122123case MINOMUSI_GOOD_SPIKE_ANIM_8124Object.Frame = 0125if Object.Timer < 2126Object.State = MINOMUSI_GOOD_SPIKE_ANIM_1127Object.Timer++128else129Object.State++130Object.Timer = 0131end if132break133134case MINOMUSI_GOOD_SPIKE_ANIM_9135if Object.Timer < 20136Object.Timer++137else138Object.Timer = 0139Object.State++140end if141break142143case MINOMUSI_GOOD_RETIRE144if Object.Timer < 12145Object.YPos -= 0x80000146Object.Timer++147else148Object.Timer = 120149Object.State = MINOMUSI_DETECT_PLAYER150end if151break152153end switch154else155switch Object.State156case MINOMUSI_DETECT_PLAYER157Object.Frame = 1158if Object.Timer > 0159Object.Timer--160end if161break162163case MINOMUSI_DROP164Object.Frame = 1165if Object.Timer < 12166Object.YPos += 0x80000167Object.Timer++168else169Object.Timer = 0170Object.State++171end if172break173174case MINOMUSI_BAD_FLIP175if Object.SpikeTimer < 10176Object.SpikeTimer++177else178Object.SpikeTimer = 0179Object.State++180Object.Frame = 2181end if182break183184case MINOMUSI_BAD_FLIP_2185if Object.SpikeTimer < 10186Object.SpikeTimer++187else188Object.SpikeTimer = 0189Object.Frame = 1190Object.Timer++191if Object.Timer == 3192Object.Timer = 0193Object.State++194else195Object.State = MINOMUSI_BAD_FLIP196end if197end if198break199200case MINOMUSI_BAD_RETIRE201if Object.Timer < 48202Object.YPos -= 0x20000203Object.Timer++204else205Object.Timer = 120206Object.State = MINOMUSI_DETECT_PLAYER207end if208break209210end switch211end if212213// Check if this badnik should be a flower214CallFunction(StageSetup_CheckGoodFuture)215end sub216217218sub ObjectPlayerInteraction219#platform: Use_Standalone220PlayerObjectCollision(C_TOUCH, -8, -6, 8, 22)221#endplatform222223#platform: Use_Origins224PlayerObjectCollision(C_ENEMY, -8, -6, 8, 22)225#endplatform226227if CheckResult == true228CallFunction(Player_BadnikBreak)229end if230231if Object.Quality == GOOD_QUALITY232if Object.Type == TypeName[Minomusi]233if Object.Frame > 2234PlayerObjectCollision(C_TOUCH, -17, -4, 17, 20)235if CheckResult == true236CallFunction(Player_Hit)237end if238end if239end if240end if241242if Object.State == MINOMUSI_DETECT_PLAYER243if Object.Timer == 0244PlayerObjectCollision(C_TOUCH, -64, 0, 64, 128)245if CheckResult == true246Object.State = MINOMUSI_DROP247Object.Priority = PRIORITY_ACTIVE248end if249end if250end if251end sub252253254sub ObjectDraw255TempValue0 = Object.YPos256TempValue0 -= Object.YOriginPos257TempValue0 >>= 19258TempValue0 += 5259DrawSpriteXY(TempValue0, Object.XPos, Object.YOriginPos)260261DrawSprite(Object.Frame)262end sub263264265sub ObjectStartup266LoadSpriteSheet("R6/Objects.gif")267// Good268SpriteFrame(-8, -8, 16, 32, 82, 134) // #0 - Minomusi269// Bad270SpriteFrame(-8, -8, 16, 32, 17, 184) // #1 - Minomusi frame 0271SpriteFrame(-8, -8, 16, 32, 1, 184) // #2 - Minomusi frame 1272// Spike Attack273SpriteFrame(-12, -8, 24, 32, 133, 166) // #3 - Minomusi Spiked frame 0274SpriteFrame(-16, -8, 32, 32, 1, 151) // #4 - Minomusi Spiked frame 1275// String276SpriteFrame(-4, 16, 8, 0, 246, 91) // #5 - Minomusi String frame 0277SpriteFrame(-4, 16, 8, 8, 246, 91) // #6 - Minomusi String frame 1278SpriteFrame(-4, 16, 8, 16, 246, 91) // #7 - Minomusi String frame 2279SpriteFrame(-4, 16, 8, 24, 246, 91) // #8 - Minomusi String frame 3280SpriteFrame(-4, 16, 8, 32, 246, 91) // #9 - Minomusi String frame 4281SpriteFrame(-4, 16, 8, 40, 246, 91) // #10 - Minomusi String frame 5282SpriteFrame(-4, 16, 8, 48, 246, 91) // #11 - Minomusi String frame 6283SpriteFrame(-4, 16, 8, 56, 246, 91) // #12 - Minomusi String frame 7284SpriteFrame(-4, 16, 8, 64, 246, 91) // #13 - Minomusi String frame 8285SpriteFrame(-4, 16, 8, 72, 246, 91) // #14 - Minomusi String frame 9286SpriteFrame(-4, 16, 8, 72, 246, 91) // #15 - Minomusi String frame 10287SpriteFrame(-4, 16, 8, 72, 246, 91) // #16 - Minomusi String frame 11288SpriteFrame(-4, 16, 8, 72, 246, 91) // #17 - Minomusi String frame 12289290ArrayPos0 = 32291while ArrayPos0 < 1056292if Object[ArrayPos0].Type == TypeName[Minomusi]293Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos294end if295ArrayPos0++296loop297end sub298299300// ========================301// Editor Subs302// ========================303304sub RSDKEdit305if Editor.ReturnVariable == true306switch Editor.VariableID307case EDIT_VAR_PROPVAL // Property Value308CheckResult = Object.PropertyValue309CheckResult &= 1310break311case 0 // condition312CheckResult = Object.PropertyValue313CheckResult &= 1314break315end switch316else317switch Editor.VariableID318case EDIT_VAR_PROPVAL // Property Value319Object.PropertyValue = Editor.VariableValue320Object.PropertyValue &= 1321break322case 0 // condition323Object.PropertyValue = Editor.VariableValue324Object.PropertyValue &= 1325break326end switch327end if328end sub329330sub RSDKDraw331DrawSprite(Object.PropertyValue)332end sub333334335sub RSDKLoad336LoadSpriteSheet("R6/Objects.gif")337// Good338SpriteFrame(-8, -8, 16, 32, 82, 134) // #0 - Minomusi339// Bad340SpriteFrame(-8, -8, 16, 32, 17, 184) // #1 - Minomusi frame 0341342343AddEditorVariable("condition")344SetActiveVariable("condition")345AddEnumVariable("Good Quality", GOOD_QUALITY)346AddEnumVariable("Bad Quality", BAD_QUALITY)347end sub348349350