Path: blob/main/Scripts/Mission/PohBee3.txt
1319 views
//------------------Sonic CD PohBee 3 Script------------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//3//-------Used on Mission "M110 - Extreme! Gotta Go Fast"------//45// Aliases6#alias Object.Value0 : Object.Timer7#alias Object.Value1 : Object.XOriginPos8#alias Object.Value2 : Object.YOriginPos9#alias Object.Value3 : Object.PohBeeOscillation10#alias Object.Value4 : SpikeBallN1.Oscillation11#alias Object.Value5 : SpikeBallN2.Oscillation12#alias Object.Value6 : SpikeBallN2.Rotation13#alias Object.Value7 : Object.SBallDistance1415#alias Object.PropertyValue : Object.Quality1617// States18#alias 0 : POHBEE3_MOVING_RIGHT19#alias 1 : POHBEE3_MOVING_LEFT2021// Badnik Quality / Property Values22#alias 0 : GOOD_QUALITY23#alias 1 : BAD_QUALITY242526sub ObjectMain27if Object.OutOfBounds == true28Object.XPos = Object.XOriginPos29Object.Timer = 030Object.State = POHBEE3_MOVING_RIGHT31end if3233Object.Rotation += 1634Object.Rotation &= 20473536if Object.Quality == GOOD_QUALITY37SpikeBallN2.Rotation += 2038SpikeBallN2.Rotation &= 204739switch Object.State40case POHBEE3_MOVING_RIGHT41Object.Direction = FACING_LEFT42if Object.Timer < 6443Object.Timer++44Object.XPos += 0x2000045else46Object.State = POHBEE3_MOVING_LEFT47Object.Timer = 048end if49break50case POHBEE3_MOVING_LEFT51Object.Direction = FACING_RIGHT52if Object.Timer < 6453Object.Timer++54Object.XPos -= 0x2000055else56Object.State = POHBEE3_MOVING_RIGHT57Object.Timer = 058end if59break60end switch6162Object.PohBeeOscillation += 1663Object.PohBeeOscillation &= 51164Sin(Object.YPos, Object.PohBeeOscillation)65Object.YPos <<= 1266Object.YPos += Object.YOriginPos6768TempValue0 = Object.Rotation69TempValue0 >>= 270Sin(SpikeBallN1.Oscillation, TempValue0)71SpikeBallN1.Oscillation >>= 272SpikeBallN1.Oscillation += 27273SpikeBallN1.Oscillation *= 12074SpikeBallN1.Oscillation >>= 77576TempValue0 = SpikeBallN2.Rotation77TempValue0 >>= 278Sin(SpikeBallN2.Oscillation, TempValue0)79SpikeBallN2.Oscillation >>= 280SpikeBallN2.Oscillation += 28881SpikeBallN2.Oscillation *= 11282SpikeBallN2.Oscillation >>= 783else84switch Object.State85case POHBEE3_MOVING_RIGHT86Object.Direction = FACING_LEFT87if Object.Timer < 12888Object.Timer++89Object.XPos += 0x1000090else91Object.State = POHBEE3_MOVING_LEFT92Object.Timer = 093end if94break9596case POHBEE3_MOVING_LEFT97Object.Direction = FACING_RIGHT98if Object.Timer < 12899Object.Timer++100Object.XPos -= 0x10000101else102Object.State = POHBEE3_MOVING_RIGHT103Object.Timer = 0104end if105break106end switch107108Object.PohBeeOscillation += 12109Object.PohBeeOscillation &= 511110Sin(Object.YPos, Object.PohBeeOscillation)111Object.YPos <<= 11112Object.YPos += Object.YOriginPos113114TempValue0 = Object.Rotation115TempValue0 >>= 2116Sin(SpikeBallN1.Oscillation, TempValue0)117118SpikeBallN1.Oscillation >>= 2119SpikeBallN1.Oscillation += 272120SpikeBallN1.Oscillation *= 120121SpikeBallN1.Oscillation >>= 7122end if123124Object.SBallDistance = Object.YPos125Object.SBallDistance += 0xD0000126127CallFunction(StageSetup_CheckGoodFuture)128end sub129130131sub ObjectPlayerInteraction132PlayerObjectCollision(C_ENEMY, -20, -16, 20, 14)133if CheckResult == true134CallFunction(Player_BadnikBreak)135end if136137TempValue0 = Object.XPos138TempValue1 = Object.YPos139140Cos(Object.XPos, SpikeBallN1.Oscillation)141Object.XPos *= 0x2A00142Object.XPos += TempValue0143144Sin(Object.YPos, SpikeBallN1.Oscillation)145Object.YPos *= 0x2A00146Object.YPos += Object.SBallDistance147148PlayerObjectCollision(C_TOUCH, -9, -9, 9, 9)149if CheckResult == true150CallFunction(Player_Hit)151end if152153if Object.Quality == GOOD_QUALITY154Cos(Object.XPos, SpikeBallN2.Oscillation)155Object.XPos *= 0x1200156Object.XPos += TempValue0157158Sin(Object.YPos, SpikeBallN2.Oscillation)159Object.YPos *= 0x1200160Object.YPos += Object.SBallDistance161162PlayerObjectCollision(C_TOUCH, -9, -9, 9, 9)163if CheckResult == true164CallFunction(Player_Hit)165end if166end if167168Object.XPos = TempValue0169Object.YPos = TempValue1170end sub171172173sub ObjectDraw174if Object.Quality == GOOD_QUALITY175// First Spike Ball chain176TempValue0 = 0177TempValue1 = 4178while TempValue0 < 10179Cos(TempValue2, SpikeBallN1.Oscillation)180TempValue2 *= TempValue1181TempValue2 <<= 7182TempValue2 += Object.XPos183Sin(TempValue3, SpikeBallN1.Oscillation)184TempValue3 *= TempValue1185TempValue3 <<= 7186TempValue3 += Object.SBallDistance187DrawSpriteXY(2, TempValue2, TempValue3)188TempValue0++189TempValue1 += 8190loop191192// First Spike Ball193Cos(TempValue2, SpikeBallN1.Oscillation)194TempValue2 *= TempValue1195TempValue2 <<= 7196TempValue2 += Object.XPos197Sin(TempValue3, SpikeBallN1.Oscillation)198TempValue3 *= TempValue1199TempValue3 <<= 7200TempValue3 += Object.SBallDistance201DrawSpriteXY(3, TempValue2, TempValue3)202203// Second Spike Ball chain204TempValue0 = 0205TempValue1 = 4206while TempValue0 < 4207Cos(TempValue2, SpikeBallN2.Oscillation)208TempValue2 *= TempValue1209TempValue2 <<= 7210TempValue2 += Object.XPos211Sin(TempValue3, SpikeBallN2.Oscillation)212TempValue3 *= TempValue1213TempValue3 <<= 7214TempValue3 += Object.SBallDistance215DrawSpriteXY(2, TempValue2, TempValue3)216TempValue0++217TempValue1 += 8218loop219220// Second Spike Ball221Cos(TempValue2, SpikeBallN2.Oscillation)222TempValue2 *= TempValue1223TempValue2 <<= 7224TempValue2 += Object.XPos225Sin(TempValue3, SpikeBallN2.Oscillation)226TempValue3 *= TempValue1227TempValue3 <<= 7228TempValue3 += Object.SBallDistance229DrawSpriteXY(3, TempValue2, TempValue3)230else231TempValue0 = 0232TempValue1 = 4233while TempValue0 < 10234Cos(TempValue2, SpikeBallN1.Oscillation)235TempValue2 *= TempValue1236TempValue2 <<= 7237TempValue2 += Object.XPos238Sin(TempValue3, SpikeBallN1.Oscillation)239TempValue3 *= TempValue1240TempValue3 <<= 7241TempValue3 += Object.SBallDistance242DrawSpriteXY(2, TempValue2, TempValue3)243TempValue0++244TempValue1 += 8245loop246Cos(TempValue2, SpikeBallN1.Oscillation)247TempValue2 *= TempValue1248TempValue2 <<= 7249TempValue2 += Object.XPos250Sin(TempValue3, SpikeBallN1.Oscillation)251TempValue3 *= TempValue1252TempValue3 <<= 7253TempValue3 += Object.SBallDistance254DrawSpriteXY(4, TempValue2, TempValue3)255end if256257Object.AnimationTimer++258Object.AnimationTimer &= 3259260Object.Frame = Object.AnimationTimer261Object.Frame >>= 1262DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)263end sub264265266sub ObjectStartup267LoadSpriteSheet("R8/Objects.gif")268// PohBee269SpriteFrame(-19, -20, 48, 36, 75, 140) // #0 - PohBee frame 0270SpriteFrame(-19, -20, 48, 36, 124, 140) // #1 - PohBee frame 1271272// Spike Ball273SpriteFrame(-8, -8, 16, 16, 58, 114) // #2 - Spike ball joint274// Good275SpriteFrame(-12, -12, 24, 24, 230, 67) // #3 - Spike Ball276// Bad277SpriteFrame(-12, -12, 24, 24, 75, 114) // #4 - Broken Spike Ball278279ArrayPos0 = 32280while ArrayPos0 < 1056281if Object[ArrayPos0].Type == TypeName[PohBee3]282Object[ArrayPos0].XOriginPos = Object[ArrayPos0].XPos283Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos284end if285ArrayPos0++286loop287end sub288289290// ========================291// Editor Subs292// ========================293294sub RSDKEdit295if Editor.ReturnVariable == true296switch Editor.VariableID297case EDIT_VAR_PROPVAL // Property Value298CheckResult = Object.PropertyValue299break300case 0 // Condition301CheckResult = Object.PropertyValue302break303end switch304else305switch Editor.VariableID306case EDIT_VAR_PROPVAL // Property Value307Object.PropertyValue = Editor.VariableValue308break309case 0 // Condition310Object.PropertyValue = Editor.VariableValue311break312end switch313end if314end sub315316317sub RSDKDraw318DrawSprite(0)319end sub320321322sub RSDKLoad323LoadSpriteSheet("R8/Objects.gif")324// PohBee325SpriteFrame(-19, -20, 48, 36, 75, 140) // #0 - PohBee frame 0326327// Spike Ball328SpriteFrame(-8, -8, 16, 16, 58, 114) // #2 - Spike ball joint329// Good330SpriteFrame(-12, -12, 24, 24, 230, 67) // #3 - Spike Ball331// Bad332SpriteFrame(-12, -12, 24, 24, 75, 114) // #4 - Broken Spike Ball333334AddEditorVariable("Condition")335SetActiveVariable("Condition")336AddEnumVariable("Good", GOOD_QUALITY)337AddEnumVariable("Bad", BAD_QUALITY)338end sub339340341342343