Path: blob/master/Sonic 1/Scripts/Mission/BallHogBomb2.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Ball Hog Bomb Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// This script is a copy of the normal Ball Hog Bomb script but with tile collisions removed so that Ball Hogs can be placed on Mission Blocks89// ========================10// Aliases11// ========================1213private alias object.value0 : object.time // Set by Ball Hog object when creating this projectile14private alias object.value1 : object.bouncePos // new Ball Hog Bomb 2 value1516// Path ID Aliases17private alias 0 : PATH_A181920// ========================21// Events22// ========================2324event ObjectUpdate25object.xpos += object.xvel26object.ypos += object.yvel27object.yvel += 0x38002829if object.yvel > 030// This bit is a new Ball Hog Bomb 2 bit - instead of checking for tile collisions here, let's just see if the object is below its bounce threshold31// temp0 doesn't really need to be used here but it was used in the base bomb script so i guess they just wanted to stick with that?32temp0 = object.ypos33if temp0 >= object.bouncePos34object.yvel = -0x3000035end if3637// ..if we're going right, then check left wall collision?38// (this bit is new to the Ball Hog Bomb 2 script too, it's not in the normal version)39if object.xvel > 040ObjectTileGrip(CSIDE_LWALL, 8, 0, PATH_A)41if checkResult != false42FlipSign(object.xvel)43end if44end if45end if4647foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)48BoxCollisionTest(C_TOUCH, object.entityPos, -6, -6, 6, 6, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)49if checkResult == true50CallFunction(Player_Hit)51end if52next5354object.animationTimer++55if object.animationTimer >= 656object.frame ^= 157object.animationTimer = 058end if5960// Update the bomb's countdown timer61if object.time > 062object.time--63else64// Explode the bomb65ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, object.xpos, object.ypos)66CreateTempObject(TypeName[Explosion], 0, object.xpos, object.ypos)67object[tempObjectPos].drawOrder = 468PlaySfx(SfxName[Explosion], false)69end if70end event717273event ObjectDraw74DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)75end event767778event ObjectStartup79CheckCurrentStageFolder("Zone06")80if checkResult == true81LoadSpriteSheet("SBZ/Objects.gif")82SpriteFrame(-7, -7, 14, 14, 82, 126)83SpriteFrame(-7, -7, 14, 14, 82, 143)84end if8586CheckCurrentStageFolder("Zone07")87if checkResult == true88LoadSpriteSheet("MBZ/Objects.gif")89SpriteFrame(-7, -7, 14, 14, 165, 248)90SpriteFrame(-7, -7, 14, 14, 182, 248)91end if92end event939495// ========================96// Editor Events97// ========================9899event RSDKDraw100DrawSprite(0)101end event102103104event RSDKLoad105CheckCurrentStageFolder("Zone07")106if checkResult == true107LoadSpriteSheet("MBZ/Objects.gif")108SpriteFrame(-7, -7, 14, 14, 165, 248)109else110LoadSpriteSheet("SBZ/Objects.gif")111SpriteFrame(-7, -7, 14, 14, 82, 126)112end if113114SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")115end event116117118