Path: blob/main/Scripts/Mission/Minomusi2.txt
1319 views
//----------------Sonic CD Minomusi 2 Script------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//3//-----------Used on Mission "M086 - Gotta Go Fast"-----------//45// Aliases6#alias Object.Value0 : Object.Timer7#alias Object.Value1 : Object.YOriginPos8#alias Object.Value2 : Object.SpikeTimer // You read it right910#alias Object.PropertyValue : Object.Quality1112// States13#alias 0 : MINOMUSI2_DETECT_PLAYER14#alias 1 : MINOMUSI2_DROP1516// Good Quality States17#alias 2 : MINOMUSI2_GOOD_SPIKE_ANIM_118#alias 3 : MINOMUSI2_GOOD_SPIKE_ANIM_219#alias 4 : MINOMUSI2_GOOD_SPIKE_ANIM_320#alias 5 : MINOMUSI2_GOOD_SPIKE_ANIM_421#alias 6 : MINOMUSI2_GOOD_SPIKE_ANIM_522#alias 7 : MINOMUSI2_GOOD_SPIKE_ANIM_623#alias 8 : MINOMUSI2_GOOD_SPIKE_ANIM_724#alias 9 : MINOMUSI2_GOOD_SPIKE_ANIM_825#alias 10 : MINOMUSI2_GOOD_SPIKE_ANIM_926#alias 11 : MINOMUSI2_GOOD_RETIRE2728// Bad Quality States29#alias 2 : MINOMUSI2_BAD_FLIP30#alias 3 : MINOMUSI2_BAD_FLIP_231#alias 4 : MINOMUSI2_BAD_RETIRE3233// Badnik Quality / Property Values34#alias 0 : GOOD_QUALITY35#alias 1 : BAD_QUALITY3637// Priority38#alias 0 : PRIORITY_BOUNDS39#alias 1 : PRIORITY_ACTIVE4041// Stage SFX42#alias 8 : SFX_S_SPIKES434445sub ObjectMain4647if Object.OutOfBounds == true48Object.State = MINOMUSI2_DETECT_PLAYER49Object.Timer = 050Object.SpikeTimer = 051Object.YPos = Object.YOriginPos52Object.Priority = PRIORITY_BOUNDS53end if5455if Object.Quality == GOOD_QUALITY56switch Object.State57case MINOMUSI2_DETECT_PLAYER58Object.Frame = 059if Object.Timer > 060Object.Timer--61end if62break6364case MINOMUSI2_DROP65if Object.Timer < 666Object.YPos += 0x10000067Object.Timer++68else69Object.Timer = 070Object.State++71end if72break7374case MINOMUSI2_GOOD_SPIKE_ANIM_175if Object.SpikeTimer < 1576Object.SpikeTimer++77else78Object.SpikeTimer = 079Object.State++80Object.Frame = 381end if82break8384case MINOMUSI2_GOOD_SPIKE_ANIM_285Object.State++86Object.Frame = 487PlayStageSfx(SFX_S_SPIKES, false)88break8990case MINOMUSI2_GOOD_SPIKE_ANIM_391if Object.SpikeTimer < 292Object.SpikeTimer++93else94Object.SpikeTimer = 095Object.State++96Object.Frame = 397end if98break99100case MINOMUSI2_GOOD_SPIKE_ANIM_4101Object.State++102Object.Frame = 0103break104105case MINOMUSI2_GOOD_SPIKE_ANIM_5106Object.State++107Object.Frame = 3108break109110case MINOMUSI2_GOOD_SPIKE_ANIM_6111Object.State++112Object.Frame = 4113break114115case MINOMUSI2_GOOD_SPIKE_ANIM_7116if Object.SpikeTimer < 15117Object.SpikeTimer++118else119Object.SpikeTimer = 0120Object.State++121Object.Frame = 3122end if123break124125case MINOMUSI2_GOOD_SPIKE_ANIM_8126Object.Frame = 0127if Object.Timer < 1128Object.State=MINOMUSI2_GOOD_SPIKE_ANIM_1129Object.Timer++130else131Object.State++132Object.Timer = 0133end if134break135136case MINOMUSI2_GOOD_SPIKE_ANIM_9137if Object.Timer < 10138Object.Timer++139else140Object.Timer = 0141Object.State++142end if143break144145case MINOMUSI2_GOOD_RETIRE146if Object.Timer < 6147Object.YPos -= 0x100000148Object.Timer++149else150Object.Timer = 60151Object.State = MINOMUSI2_DETECT_PLAYER152end if153break154end switch155else156switch Object.State157case MINOMUSI2_DETECT_PLAYER158Object.Frame = 1159if Object.Timer > 0160Object.Timer--161end if162break163164case MINOMUSI2_DROP165Object.Frame = 1166if Object.Timer < 6167Object.YPos += 0x100000168Object.Timer++169else170Object.Timer = 0171Object.State++172end if173break174175case MINOMUSI2_BAD_FLIP176if Object.SpikeTimer < 5177Object.SpikeTimer++178else179Object.SpikeTimer = 0180Object.State++181Object.Frame = 2182end if183break184185case MINOMUSI2_BAD_FLIP_2186if Object.SpikeTimer < 5187Object.SpikeTimer++188else189Object.SpikeTimer = 0190Object.Frame = 1191Object.Timer++192if Object.Timer == 2193Object.Timer = 0194Object.State++195else196Object.State = MINOMUSI2_BAD_FLIP197end if198end if199break200201case MINOMUSI2_BAD_RETIRE202if Object.Timer < 24203Object.YPos -= 0x40000204Object.Timer++205else206Object.Timer = 60207Object.State = MINOMUSI2_DETECT_PLAYER208end if209break210end switch211end if212213CallFunction(StageSetup_CheckGoodFuture)214end sub215216217sub ObjectPlayerInteraction218PlayerObjectCollision(C_ENEMY, -8, -6, 8, 22)219if CheckResult == true220CallFunction(Player_BadnikBreak)221end if222223if Object.Quality == GOOD_QUALITY224if Object.Type == TypeName[Minomusi] // uh, you mean MinoMusi2?225if Object.Frame > 2226PlayerObjectCollision(C_TOUCH, -17, -4, 17, 20)227if CheckResult == true228CallFunction(Player_Hit)229end if230end if231end if232end if233if Object.State == MINOMUSI2_DETECT_PLAYER234if Object.Timer == 0235PlayerObjectCollision(C_TOUCH, -64, 0, 64, 128)236if CheckResult == true237Object.State = MINOMUSI2_DROP238Object.Priority = PRIORITY_ACTIVE239end if240end if241end if242end sub243244245sub ObjectDraw246TempValue0 = Object.YPos247TempValue0 -= Object.YOriginPos248TempValue0 >>= 19249TempValue0 += 5250DrawSpriteXY(TempValue0, Object.XPos, Object.YOriginPos)251252DrawSprite(Object.Frame)253end sub254255256sub ObjectStartup257LoadSpriteSheet("R6/Objects.gif")258// Good259SpriteFrame(-8, -8, 16, 32, 82, 134) // #0 - Minomusi260// Bad261SpriteFrame(-8, -8, 16, 32, 17, 184) // #1 - Minomusi frame 0262SpriteFrame(-8, -8, 16, 32, 1, 184) // #2 - Minomusi frame 1263// Spike Attack264SpriteFrame(-12, -8, 24, 32, 133, 166) // #3 - Minomusi Spiked frame 0265SpriteFrame(-16, -8, 32, 32, 1, 151) // #4 - Minomusi Spiked frame 1266// String267SpriteFrame(-4, 16, 8, 0, 246, 91) // #5 - Minomusi String frame 0268SpriteFrame(-4, 16, 8, 8, 246, 91) // #6 - Minomusi String frame 1269SpriteFrame(-4, 16, 8, 16, 246, 91) // #7 - Minomusi String frame 2270SpriteFrame(-4, 16, 8, 24, 246, 91) // #8 - Minomusi String frame 3271SpriteFrame(-4, 16, 8, 32, 246, 91) // #9 - Minomusi String frame 4272SpriteFrame(-4, 16, 8, 40, 246, 91) // #10 - Minomusi String frame 5273SpriteFrame(-4, 16, 8, 48, 246, 91) // #11 - Minomusi String frame 6274SpriteFrame(-4, 16, 8, 56, 246, 91) // #12 - Minomusi String frame 7275SpriteFrame(-4, 16, 8, 64, 246, 91) // #13 - Minomusi String frame 8276SpriteFrame(-4, 16, 8, 72, 246, 91) // #14 - Minomusi String frame 9277SpriteFrame(-4, 16, 8, 72, 246, 91) // #15 - Minomusi String frame 10278SpriteFrame(-4, 16, 8, 72, 246, 91) // #16 - Minomusi String frame 11279SpriteFrame(-4, 16, 8, 72, 246, 91) // #17 - Minomusi String frame 12280281ArrayPos0 = 32282while ArrayPos0 < 1056283if Object[ArrayPos0].Type == TypeName[Minomusi]284Object[ArrayPos0].Type = TypeName[Minomusi2]285end if286if Object[ArrayPos0].Type == TypeName[Minomusi2]287Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos288end if289ArrayPos0++290loop291end sub292293294// ========================295// Editor Subs296// ========================297298sub RSDKEdit299if Editor.ReturnVariable == true300switch Editor.VariableID301case EDIT_VAR_PROPVAL // Property Value302CheckResult = Object.PropertyValue303break304case 0 // Condition305CheckResult = Object.PropertyValue306break307end switch308else309switch Editor.VariableID310case EDIT_VAR_PROPVAL // Property Value311Object.PropertyValue = Editor.VariableValue312break313case 0 // Condition314Object.PropertyValue = Editor.VariableValue315break316end switch317end if318end sub319320321sub RSDKDraw322DrawSprite(Object.PropertyValue)323end sub324325326sub RSDKLoad327LoadSpriteSheet("R6/Objects.gif")328// Good329SpriteFrame(-8, -8, 16, 32, 82, 134) // #0 - Minomusi330// Bad331SpriteFrame(-8, -8, 16, 32, 17, 184) // #1 - Minomusi332333AddEditorVariable("Condition")334SetActiveVariable("Condition")335AddEnumVariable("Good", GOOD_QUALITY)336AddEnumVariable("Bad", BAD_QUALITY)337end sub338339340341342