Path: blob/main/Scripts/R6/PohBee.txt
1319 views
//------------------Sonic CD Poh Bee 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.XOriginPos7#alias Object.Value2 : Object.CurrentFrame8#alias Object.Value3 : Object.ShootingCooldown9#alias Object.Value4 : Object.FrameIncrease1011#alias Object.PropertyValue : Object.Quality1213// PohBee Bullet Aliases14#alias Object.Direction : PohBeeBullet.Direction15#alias Object.XPos : PohBeeBullet.XPos16#alias Object.YPos : PohBeeBullet.YPos17#alias Object.Value1 : PohBeeBullet.XVelocity18#alias Object.Value2 : PohBeeBullet.YVelocity1920// States21#alias 0 : POHBEE_MOVING_LEFT22#alias 1 : POHBEE_TURN_RIGHT23#alias 2 : POHBEE_MOVING_RIGHT24#alias 3 : POHBEE_TURN_LEFT25#alias 4 : POHBEE_SHOOTING_LEFT26#alias 5 : POHBEE_SHOOTING_RIGHT27#alias 6 : POHBEE_RESET2829// Stage SFX30#alias 7 : SFX_S_SHOT3132// Priority33#alias 0 : PRIORITY_BOUNDS34#alias 1 : PRIORITY_ACTIVE3536// Badnik Quality / Property Values37#alias 0 : GOOD_QUALITY38#alias 1 : BAD_QUALITY39// Origins added a new one, say hi to the stationary PohBee40#alias 2 : STATIONARY // This PohBee is also good quality414243sub ObjectMain44if Object.OutOfBounds == true45Object.State = POHBEE_RESET46Object.Timer = 047Object.Direction = FACING_RIGHT4849Object.XPos = Object.XOriginPos5051Object.CurrentFrame = 052Object.ShootingCooldown = 053Object.FrameIncrease = 054end if5556if Object.Quality == GOOD_QUALITY57switch Object.State58case POHBEE_MOVING_LEFT59Object.Priority = PRIORITY_ACTIVE60if Object.ShootingCooldown > 061Object.ShootingCooldown--62end if63if Object.Timer < 51264Object.Timer++65Object.XPos -= 0x1000066else67Object.State = POHBEE_TURN_RIGHT68Object.Timer = 069end if70break7172case POHBEE_TURN_RIGHT73Object.Priority = PRIORITY_ACTIVE74if Object.ShootingCooldown > 075Object.ShootingCooldown--76end if77if Object.Timer < 6078if Object.Timer == 3079Object.Direction = FACING_LEFT80end if81Object.Timer++82else83Object.State = POHBEE_MOVING_RIGHT84end if85break8687case POHBEE_MOVING_RIGHT88Object.Priority = PRIORITY_ACTIVE89if Object.ShootingCooldown > 090Object.ShootingCooldown--91end if92if Object.Timer < 51293Object.Timer++94Object.XPos += 0x1000095else96Object.State = POHBEE_TURN_LEFT97Object.Timer = 098end if99break100101case POHBEE_TURN_LEFT102Object.Priority = PRIORITY_ACTIVE103if Object.ShootingCooldown > 0104Object.ShootingCooldown--105end if106if Object.Timer < 60107if Object.Timer == 30108Object.Direction = FACING_RIGHT109end if110Object.Timer++111else112Object.State = POHBEE_MOVING_LEFT113end if114break115116case POHBEE_SHOOTING_LEFT117Object.Priority = PRIORITY_ACTIVE118if Object.ShootingCooldown < 92119Object.ShootingCooldown++120if Object.ShootingCooldown == 30121Object.FrameIncrease = 4122end if123if Object.ShootingCooldown == 64124CreateTempObject(TypeName[Poh Bee Bullet], 0, Object.XPos, Object.YPos)125PohBeeBullet[TempObjectPos].XPos -= 0xF0000126PohBeeBullet[TempObjectPos].YPos += 0x1B0000127PohBeeBullet[TempObjectPos].XVelocity = -0x20000128PohBeeBullet[TempObjectPos].YVelocity = 0x20000129PlayStageSfx(SFX_S_SHOT, false)130end if131else132Object.State = POHBEE_MOVING_LEFT133Object.FrameIncrease = 0134Object.ShootingCooldown = 60135end if136break137138case POHBEE_SHOOTING_RIGHT139Object.Priority = PRIORITY_ACTIVE140if Object.ShootingCooldown < 92141Object.ShootingCooldown++142if Object.ShootingCooldown == 30143Object.FrameIncrease = 4144end if145if Object.ShootingCooldown == 64146CreateTempObject(TypeName[Poh Bee Bullet], 0, Object.XPos, Object.YPos)147PohBeeBullet[TempObjectPos].Direction = FACING_LEFT148PohBeeBullet[TempObjectPos].XPos += 0xF0000149PohBeeBullet[TempObjectPos].YPos += 0x1B0000150PohBeeBullet[TempObjectPos].XVelocity = 0x20000151PohBeeBullet[TempObjectPos].YVelocity = 0x20000152PlayStageSfx(SFX_S_SHOT, false)153end if154else155Object.State = POHBEE_MOVING_RIGHT156Object.FrameIncrease = 0157Object.ShootingCooldown = 60158end if159break160161case POHBEE_RESET162if Object.OutOfBounds == true163Object.State = POHBEE_MOVING_LEFT164Object.Priority = PRIORITY_BOUNDS165end if166break167168end switch169else170switch Object.State171case POHBEE_MOVING_LEFT172Object.Priority = PRIORITY_ACTIVE173if Object.Timer < 1024174Object.Timer++175Object.XPos -= 0x8000176else177Object.State = POHBEE_TURN_RIGHT178Object.Timer = 0179end if180break181182case POHBEE_TURN_RIGHT183Object.Priority = PRIORITY_ACTIVE184if Object.Timer < 60185if Object.Timer == 30186Object.Direction = FACING_LEFT187end if188Object.Timer++189else190Object.State = POHBEE_MOVING_RIGHT191end if192break193194case POHBEE_MOVING_RIGHT195Object.Priority = PRIORITY_ACTIVE196if Object.Timer < 1024197Object.Timer++198Object.XPos += 0x8000199else200Object.State = POHBEE_TURN_LEFT201Object.Timer = 0202end if203break204205case POHBEE_TURN_LEFT206Object.Priority = PRIORITY_ACTIVE207if Object.Timer < 60208if Object.Timer == 30209Object.Direction = FACING_RIGHT210end if211Object.Timer++212else213Object.State = POHBEE_MOVING_LEFT214end if215break216217case POHBEE_RESET218if Object.OutOfBounds == true219Object.State = POHBEE_MOVING_LEFT220Object.Priority = PRIORITY_BOUNDS221end if222break223end switch224end if225226#platform: Use_Origins227CheckEqual(game.playMode, BOOT_PLAYMODE_MISSION)228TempValue0 = CheckResult229CheckEqual(Object.Quality, STATIONARY)230TempValue0 &= CheckResult231232if TempValue0 == true233switch Object.State234case POHBEE_MOVING_LEFT235Object.Priority = PRIORITY_ACTIVE236if Object.ShootingCooldown > 0237Object.ShootingCooldown--238end if239240if Object.Timer < 512241Object.Timer++242else243Object.State = POHBEE_TURN_RIGHT244Object.Timer = 0245end if246break247248case POHBEE_TURN_RIGHT249Object.Priority = PRIORITY_ACTIVE250if Object.ShootingCooldown > 0251Object.ShootingCooldown--252end if253254if Object.Timer < 60255if Object.Timer == 30256Object.Direction = FACING_LEFT257end if258Object.Timer++259else260Object.State = POHBEE_MOVING_RIGHT261end if262break263264case POHBEE_MOVING_RIGHT265Object.Priority = PRIORITY_ACTIVE266if Object.ShootingCooldown > 0267Object.ShootingCooldown--268end if269270if Object.Timer < 512271Object.Timer++272else273Object.State = POHBEE_TURN_LEFT274Object.Timer = 0275end if276break277278case POHBEE_TURN_LEFT279Object.Priority = PRIORITY_ACTIVE280if Object.ShootingCooldown > 0281Object.ShootingCooldown--282end if283284if Object.Timer < 60285if Object.Timer == 30286Object.Direction = FACING_RIGHT287end if288Object.Timer++289else290Object.State = POHBEE_MOVING_LEFT291end if292break293294case POHBEE_SHOOTING_LEFT295Object.Priority = PRIORITY_ACTIVE296if Object.ShootingCooldown < 92297Object.ShootingCooldown++298if Object.ShootingCooldown == 30299Object.FrameIncrease = 4300end if301302if Object.ShootingCooldown == 64303CreateTempObject(TypeName[Poh Bee Bullet], 0, Object.XPos, Object.YPos)304PohBeeBullet[TempObjectPos].XPos -= 0xF0000305PohBeeBullet[TempObjectPos].YPos += 0x1B0000306PohBeeBullet[TempObjectPos].XVelocity = -0x20000307PohBeeBullet[TempObjectPos].YVelocity = 0x20000308PlayStageSfx(SFX_S_SHOT, false)309end if310else311Object.State = POHBEE_MOVING_LEFT312Object.FrameIncrease = 0313Object.ShootingCooldown = 60314end if315break316317case POHBEE_SHOOTING_RIGHT318Object.Priority = PRIORITY_ACTIVE319320if Object.ShootingCooldown < 92321Object.ShootingCooldown++322if Object.ShootingCooldown == 30323Object.FrameIncrease = 4324end if325326if Object.ShootingCooldown == 64327CreateTempObject(TypeName[Poh Bee Bullet], 0, Object.XPos, Object.YPos)328PohBeeBullet[TempObjectPos].Direction = FACING_LEFT329PohBeeBullet[TempObjectPos].XPos += 0xF0000330PohBeeBullet[TempObjectPos].YPos += 0x1B0000331PohBeeBullet[TempObjectPos].XVelocity = 0x20000332PohBeeBullet[TempObjectPos].YVelocity = 0x20000333PlayStageSfx(SFX_S_SHOT, false)334end if335else336Object.State = POHBEE_MOVING_RIGHT337Object.FrameIncrease = 0338Object.ShootingCooldown = 60339end if340break341342case POHBEE_RESET343if Object.OutOfBounds == true344Object.State = POHBEE_MOVING_LEFT345Object.Priority = PRIORITY_BOUNDS346end if347break348end switch349end if350#endplatform351352// Check if this badnik should be a flower353CallFunction(StageSetup_CheckGoodFuture)354end sub355356357sub ObjectPlayerInteraction358if Object.Quality != BAD_QUALITY359if Object.State < POHBEE_SHOOTING_LEFT360if Object.ShootingCooldown == 0361PlayerObjectCollision(C_TOUCH, -96, -64, 96, 64)362if CheckResult == true363if Object.XPos > Player.XPos364Object.Direction = FACING_RIGHT365Object.State = POHBEE_SHOOTING_LEFT366else367Object.Direction = FACING_LEFT368Object.State = POHBEE_SHOOTING_RIGHT369end if370end if371end if372end if373end if374375if Object.State < POHBEE_RESET376#platform: Use_Standalone377PlayerObjectCollision(C_TOUCH, -20, -16, 20, 14)378#endplatform379#platform: Use_Origins380PlayerObjectCollision(C_ENEMY, -20, -16, 20, 14)381#endplatform382if CheckResult == true383CallFunction(Player_BadnikBreak)384end if385end if386end sub387388389sub ObjectDraw390if Object.State < POHBEE_RESET391if Object.Quality != BAD_QUALITY392Object.CurrentFrame++393Object.CurrentFrame &= 3394395Object.Frame = Object.CurrentFrame396Object.Frame >>= 1397Object.Frame += Object.FrameIncrease398else399Object.CurrentFrame++400Object.CurrentFrame &= 3401402Object.Frame = Object.CurrentFrame403Object.Frame >>= 1404Object.Frame += 2405end if406DrawSpriteFX(Object.Frame, FX_FLIP, Object.XPos, Object.YPos)407end if408end sub409410411sub ObjectStartup412LoadSpriteSheet("R6/Objects.gif")413// Good414SpriteFrame(-24, -20, 48, 32, 148, 75) // #0 - PohBee Fly frame 0415SpriteFrame(-24, -16, 48, 28, 148, 108) // #1 - PohBee Fly frame 1416// Bad417SpriteFrame(-24, -20, 48, 32, 99, 133) // #2 - PohBee Fly frame 0418SpriteFrame(-24, -16, 48, 28, 148, 137) // #3 - PohBee Fly frame 1419// Shooting420SpriteFrame(-24, -20, 48, 40, 197, 91) // #4 - PohBee Shoot frame 0421SpriteFrame(-24, -16, 48, 36, 197, 132) // #5 - PohBee Shoot frame 1422423ArrayPos0 = 32424while ArrayPos0 < 1056425if Object[ArrayPos0].Type == TypeName[Poh Bee]426Object[ArrayPos0].XOriginPos = Object[ArrayPos0].XPos427end if428ArrayPos0++429loop430end sub431432433// ========================434// Editor Subs435// ========================436437sub RSDKEdit438if Editor.ReturnVariable == true439switch Editor.VariableID440case EDIT_VAR_PROPVAL // Property Value441CheckResult = Object.PropertyValue442break443case 0 // Condition444CheckResult = Object.PropertyValue445CheckResult &= 1446break447end switch448else449switch Editor.VariableID450case EDIT_VAR_PROPVAL // Property Value451Object.PropertyValue = Editor.VariableValue452break453case 0 // Condition454Object.PropertyValue = Editor.VariableValue455Object.PropertyValue &= 1456break457end switch458end if459end sub460461462sub RSDKDraw463DrawSprite(Object.PropertyValue)464end sub465466467sub RSDKLoad468LoadSpriteSheet("R6/Objects.gif")469// Good470SpriteFrame(-24, -20, 48, 32, 148, 75) // #0 - PohBee Fly471// Bad472SpriteFrame(-24, -20, 48, 32, 99, 133) // #2 - PohBee Fly473474AddEditorVariable("Condition")475SetActiveVariable("Condition")476AddEnumVariable("Good", GOOD_QUALITY)477AddEnumVariable("Bad", BAD_QUALITY)478end sub479480481