Path: blob/master/Sonic 1/Scripts/Enemies/Caterkiller.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Caterkiller Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.bodyPosition1.x12private alias object.value1 : object.bodyPosition1.y13private alias object.value2 : object.bodyDirection114private alias object.value3 : object.bodyFrame11516private alias object.value4 : object.bodyPosition2.x17private alias object.value5 : object.bodyPosition2.y18private alias object.value6 : object.bodyDirection219private alias object.value7 : object.bodyFrame22021private alias object.value8 : object.bodyPosition3.x22private alias object.value9 : object.bodyPosition3.y23private alias object.value10 : object.bodyDirection324private alias object.value11 : object.bodyFrame32526private alias object.value12 : object.startPos.x27private alias object.value13 : object.startPos.y2829private alias object.value14 : object.timer3031private alias 0 : CATERKILLER_SETUP32private alias 1 : CATERKILLER_CONTRACT33private alias 2 : CATERKILLER_LIFTHEAD34private alias 3 : CATERKILLER_UNCONTRACT35private alias 4 : CATERKILLER_LOWERHEAD36private alias 5 : CATERKILLER_SPLITBODYPART3738// Player Aliases39private alias object.value40 : player.hitboxLeft40private alias object.value38 : player.hitboxTop41private alias object.value41 : player.hitboxRight42private alias object.value39 : player.hitboxBottom4344// Mission Number Aliases45private alias 8 : MISSIONNO_MERCY4647// Tile Info ID Aliases48private alias 1 : TILEINFO_DIRECTION49private alias 6 : TILEINFO_ANGLEA5051// Path ID Aliases52private alias 0 : PATH_A535455// ========================56// Function Declarations57// ========================5859reserve function Caterkiller_SetupBody60reserve function Caterkiller_DebugDraw61reserve function Caterkiller_DebugSpawn62reserve function Caterkiller_CheckPlayerCollisions63reserve function Caterkiller_CheckTileAngle64reserve function Caterkiller_CheckTileCollisions656667// ========================68// Function Definitions69// ========================7071private function Caterkiller_SetupBody72object[arrayPos0].startPos.x = object[arrayPos0].xpos73object[arrayPos0].startPos.y = object[arrayPos0].ypos7475temp0 = object[arrayPos0].xpos76temp1 = 0xC000077if temp7 == FLIP_X78FlipSign(temp1)79end if80object[arrayPos0].direction = temp781object[arrayPos0].frame = 082temp0 += temp18384object[arrayPos0].bodyPosition1.x = temp085object[arrayPos0].bodyPosition1.y = object[arrayPos0].ypos86object[arrayPos0].bodyDirection1 = object[arrayPos0].direction87object[arrayPos0].bodyFrame1 = 088temp0 += temp18990object[arrayPos0].bodyPosition2.x = temp091object[arrayPos0].bodyPosition2.y = object[arrayPos0].ypos92object[arrayPos0].bodyDirection2 = object[arrayPos0].direction93object[arrayPos0].bodyFrame2 = 094temp0 += temp19596object[arrayPos0].bodyPosition3.x = temp097object[arrayPos0].bodyPosition3.y = object[arrayPos0].ypos98object[arrayPos0].bodyDirection3 = object[arrayPos0].direction99object[arrayPos0].bodyFrame3 = 0100101object[arrayPos0].state = CATERKILLER_SETUP102object[arrayPos0].timer = 0103end function104105106private function Caterkiller_DebugDraw107temp0 = object.xpos108GetBit(temp1, object.direction, 0)109if temp1 == FLIP_NONE110temp0 += 0x240000111temp1 = -0xC0000112else113temp0 -= 0x240000114temp1 = 0xC0000115end if116117temp2 = 0118while temp2 < 3119DrawSpriteFX(16, FX_FLIP, temp0, object.ypos)120temp0 += temp1121temp2++122loop123124DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)125end function126127128private function Caterkiller_DebugSpawn129temp0 = object.ixpos130temp0 <<= 16131temp1 = object.iypos132temp1 <<= 16133134CreateTempObject(TypeName[Caterkiller], 0, temp0, temp1)135arrayPos0 = object[tempObjectPos].entityPos136temp7 = object.direction137138CallFunction(Caterkiller_SetupBody)139end function140141142private function Caterkiller_CheckPlayerCollisions143temp7 = false144temp5 = object.xpos145temp6 = object.ypos146foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)147BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, player[currentPlayer].hitboxLeft, player[currentPlayer].hitboxTop, player[currentPlayer].hitboxRight, player[currentPlayer].hitboxBottom)148if checkResult == true149CallFunction(Player_BadnikBreak)150else151object.xpos = object.bodyPosition1.x152object.ypos = object.bodyPosition1.y153BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)154if checkResult == true155CallFunction(Player_Hit)156temp7 = true157else158object.xpos = object.bodyPosition2.x159object.ypos = object.bodyPosition2.y160BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)161if checkResult == true162CallFunction(Player_Hit)163temp7 = true164else165object.xpos = object.bodyPosition3.x166object.ypos = object.bodyPosition3.y167BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)168if checkResult == true169CallFunction(Player_Hit)170temp7 = true171end if172end if173end if174end if175176object.xpos = temp5177object.ypos = temp6178next179180// Uh oh! we hit the body! time to explode!181if temp7 == true182temp0 = object.frame183temp0 <<= 15184object.ypos -= temp0185186CreateTempObject(TypeName[Caterkiller], 0, object.xpos, object.ypos)187if object.direction == FLIP_NONE188object[tempObjectPos].xvel = -0x20000189else190object[tempObjectPos].xvel = 0x20000191end if192object[tempObjectPos].yvel = -0x40000193object[tempObjectPos].direction = object.direction194object[tempObjectPos].frame = object.frame195object[tempObjectPos].frame &= 8196object[tempObjectPos].state = CATERKILLER_SPLITBODYPART197object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL198199CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition1.x, object.bodyPosition1.y)200if object.bodyDirection1 == FLIP_NONE201object[tempObjectPos].xvel = -0x18000202else203object[tempObjectPos].xvel = 0x18000204end if205object[tempObjectPos].yvel = -0x40000206object[tempObjectPos].direction = object.bodyDirection1207object[tempObjectPos].frame = 16208object[tempObjectPos].state = CATERKILLER_SPLITBODYPART209object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL210temp0 = object.bodyFrame2211temp0 <<= 15212object.bodyPosition2.y -= temp0213object.frame -= temp0214215CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition2.x, object.bodyPosition2.y)216if object.bodyDirection2 == FLIP_NONE217object[tempObjectPos].xvel = 0x18000218else219object[tempObjectPos].xvel = -0x18000220end if221object[tempObjectPos].yvel = -0x40000222object[tempObjectPos].direction = object.bodyDirection2223object[tempObjectPos].frame = 16224object[tempObjectPos].state = CATERKILLER_SPLITBODYPART225object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL226227CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition3.x, object.bodyPosition3.y)228if object.bodyDirection3 == FLIP_NONE229object[tempObjectPos].xvel = 0x20000230else231object[tempObjectPos].xvel = -0x20000232end if233object[tempObjectPos].yvel = -0x40000234object[tempObjectPos].direction = object.bodyDirection3235object[tempObjectPos].frame = 16236object[tempObjectPos].state = CATERKILLER_SPLITBODYPART237object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL238239ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, object.xpos, object.ypos)240241#platform: USE_ORIGINS242if game.playMode == BOOT_PLAYMODE_MISSION243CallNativeFunction2(NotifyCallback, NOTIFY_KILL_ENEMY, temp0)244if game.missionFunctionNo == MISSIONNO_MERCY245game.missionValue = 1246end if247end if248#endplatform249end if250end function251252253private function Caterkiller_CheckTileAngle254temp2 >>= 16255temp3 >>= 16256temp3 += 8257Get16x16TileInfo(temp5, temp2, temp3, TILEINFO_ANGLEA)258Get16x16TileInfo(temp6, temp2, temp3, TILEINFO_DIRECTION)259switch temp6260case FLIP_NONE261temp5 &= 255262break263264case FLIP_X265temp5 &= 255266temp6 = temp5267temp5 = 256268temp5 -= temp6269temp5 &= 255270break271272case FLIP_Y273temp5 >>= 24274temp5 += 128275temp6 = temp5276temp5 = 256277temp5 -= temp6278temp5 &= 255279break280281case FLIP_XY282temp5 >>= 24283temp5 += 128284temp5 &= 255285break286287end switch288289checkResult = false290if temp4 == FLIP_NONE291if temp5 < 128292if temp5 > 24293checkResult = true294end if295end if296else297if temp5 > 128298if temp5 < 232299checkResult = true300end if301end if302end if303end function304305306private function Caterkiller_CheckTileCollisions307if object.state != CATERKILLER_LIFTHEAD308ObjectTileGrip(CSIDE_FLOOR, 0, 8, PATH_A)309if checkResult == false310object.direction ^= FLIP_X311end if312temp0 = object.xpos313temp1 = object.ypos314temp2 = temp0315temp3 = temp1316temp4 = object.direction317CallFunction(Caterkiller_CheckTileAngle)318if checkResult == true319object.direction ^= FLIP_X320end if321else322temp0 = object.xpos323temp1 = object.ypos324end if325326object.xpos = object.bodyPosition1.x327object.ypos = object.bodyPosition1.y328ObjectTileGrip(CSIDE_FLOOR, 0, 8, PATH_A)329if checkResult == false330object.bodyDirection1 = object.direction331end if332object.bodyPosition1.y = object.ypos333temp2 = object.bodyPosition1.x334temp3 = object.bodyPosition1.y335temp4 = object.bodyDirection1336CallFunction(Caterkiller_CheckTileAngle)337if checkResult == true338object.bodyDirection1 = object.direction339end if340341object.xpos = object.bodyPosition2.x342object.ypos = object.bodyPosition2.y343ObjectTileGrip(CSIDE_FLOOR, 0, 8, PATH_A)344if checkResult == false345object.bodyDirection2 = object.direction346end if347object.bodyPosition2.y = object.ypos348temp2 = object.bodyPosition2.x349temp3 = object.bodyPosition2.y350temp4 = object.bodyDirection2351CallFunction(Caterkiller_CheckTileAngle)352if checkResult == true353object.bodyDirection2 = object.direction354end if355356if object.state != CATERKILLER_LOWERHEAD357object.xpos = object.bodyPosition3.x358object.ypos = object.bodyPosition3.y359ObjectTileGrip(CSIDE_FLOOR, 0, 8, PATH_A)360if checkResult == false361object.bodyDirection3 = object.direction362end if363object.bodyPosition3.y = object.ypos364temp2 = object.bodyPosition3.x365temp3 = object.bodyPosition3.y366temp4 = object.bodyDirection3367CallFunction(Caterkiller_CheckTileAngle)368if checkResult == true369object.bodyDirection3 = object.direction370end if371end if372373object.xpos = temp0374object.ypos = temp1375end function376377378// ========================379// Events380// ========================381382event ObjectUpdate383switch object.state384case CATERKILLER_SETUP385object.priority = PRIORITY_ACTIVE386// [Fallthrough]387case CATERKILLER_CONTRACT388if object.timer == 0389object.timer = 15390object.state++391object.frame = -1392object.bodyFrame2 = -1393// fallthrough....right.?394else395object.timer--396CallFunction(Caterkiller_CheckPlayerCollisions)397break //whats this doin here398end if399// [Fallthrough, I think]400case CATERKILLER_LIFTHEAD401if object.timer == 0402object.timer = 7403object.state++404else405object.timer--406407if object.bodyDirection1 == FLIP_NONE408object.bodyPosition1.x -= 0x4000409else410object.bodyPosition1.x += 0x4000411end if412413if object.bodyDirection2 == FLIP_NONE414object.bodyPosition2.x -= 0x8000415else416object.bodyPosition2.x += 0x8000417end if418419if object.bodyDirection3 == FLIP_NONE420object.bodyPosition3.x -= 0xC000421else422object.bodyPosition3.x += 0xC000423end if424425object.frame++426object.bodyFrame2++427CallFunction(Caterkiller_CheckTileCollisions)428CallFunction(Caterkiller_CheckPlayerCollisions)429end if430break431432case CATERKILLER_UNCONTRACT433if object.timer == 0434object.timer = 15435object.state++436object.frame = 16437object.bodyFrame2 = 16438else439object.timer--440CallFunction(Caterkiller_CheckPlayerCollisions)441break442end if443// [Fallthrough]444case CATERKILLER_LOWERHEAD445if object.timer == 0446object.timer = 7447object.state = CATERKILLER_CONTRACT448449#platform: USE_ORIGINS450if object.direction == object.bodyDirection1451object.bodyPosition1.x = object.xpos452if object.bodyDirection1 == FLIP_NONE453object.bodyPosition1.x += 0xC0000454else455object.bodyPosition1.x -= 0xC0000456end if457end if458459if object.direction == object.bodyDirection2460object.bodyPosition2.x = object.bodyPosition1.x461if object.bodyDirection2 == FLIP_NONE462object.bodyPosition2.x += 0xC0000463else464object.bodyPosition2.x -= 0xC0000465end if466end if467#endplatform468else469object.timer--470if object.direction == FLIP_NONE471object.xpos -= 0xC000472else473object.xpos += 0xC000474end if475476if object.bodyDirection1 == FLIP_NONE477object.bodyPosition1.x -= 0x8000478else479object.bodyPosition1.x += 0x8000480end if481482if object.bodyDirection2 == FLIP_NONE483object.bodyPosition2.x -= 0x4000484else485object.bodyPosition2.x += 0x4000486end if487488object.frame--489object.bodyFrame2--490CallFunction(Caterkiller_CheckTileCollisions)491CallFunction(Caterkiller_CheckPlayerCollisions)492end if493break494495case CATERKILLER_SPLITBODYPART496object.xpos += object.xvel497object.ypos += object.yvel498object.yvel += 0x3800499500if object.yvel > 0501ObjectTileCollision(CSIDE_FLOOR, 0, 8, PATH_A)502if checkResult == true503object.yvel = -0x40000504end if505end if506507foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)508BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, player[currentPlayer].hitboxLeft, player[currentPlayer].hitboxTop, player[currentPlayer].hitboxRight, player[currentPlayer].hitboxBottom)509if checkResult == true510if object.frame < 16511CallFunction(Player_BadnikBreak)512else513CallFunction(Player_Hit)514end if515end if516next517518if object.outOfBounds == true519object.type = TypeName[Blank Object]520end if521break522523end switch524525if object.state != CATERKILLER_SPLITBODYPART526if object.outOfBounds == true527temp0 = object.xpos528temp1 = object.ypos529object.xpos = object.startPos.x530object.ypos = object.startPos.y531if object.outOfBounds == true532arrayPos0 = object.entityPos533temp7 = object[arrayPos0].propertyValue534CallFunction(Caterkiller_SetupBody)535else536object.xpos = temp0537object.ypos = temp1538end if539end if540end if541end event542543544event ObjectDraw545if object.state < CATERKILLER_SPLITBODYPART546temp0 = object.direction547548object.direction = object.bodyDirection3549temp1 = object.bodyFrame3550temp1 >>= 1551temp1 += 16552DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition3.x, object.bodyPosition3.y)553554object.direction = object.bodyDirection2555temp1 = object.bodyFrame2556temp1 >>= 1557temp1 += 16558DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition2.x, object.bodyPosition2.y)559560object.direction = object.bodyDirection1561temp1 = object.bodyFrame1562temp1 >>= 1563temp1 += 16564DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition1.x, object.bodyPosition1.y)565566object.direction = temp0567568temp0 = object.frame569temp0 >>= 1570CheckEqual(object.state, CATERKILLER_LIFTHEAD)571temp1 = checkResult572CheckEqual(object.state, CATERKILLER_UNCONTRACT)573temp1 |= checkResult574if temp1 == true575temp0 += 8576end if577DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)578else579DrawSpriteFX(object.frame, FX_FLIP, object.xpos, object.ypos)580end if581end event582583584event ObjectStartup585CheckCurrentStageFolder("Zone02")586if checkResult == true587LoadSpriteSheet("MZ/Objects.gif")588SpriteFrame(-8, -14, 16, 22, 18, 81)589SpriteFrame(-8, -15, 16, 22, 18, 81)590SpriteFrame(-8, -16, 16, 22, 18, 81)591SpriteFrame(-8, -17, 16, 22, 18, 81)592SpriteFrame(-8, -18, 16, 22, 18, 81)593SpriteFrame(-8, -19, 16, 22, 18, 81)594SpriteFrame(-8, -20, 16, 22, 18, 81)595SpriteFrame(-8, -21, 16, 22, 18, 81)596SpriteFrame(-8, -14, 16, 24, 1, 81)597SpriteFrame(-8, -15, 16, 24, 1, 81)598SpriteFrame(-8, -16, 16, 24, 1, 81)599SpriteFrame(-8, -17, 16, 24, 1, 81)600SpriteFrame(-8, -18, 16, 24, 1, 81)601SpriteFrame(-8, -19, 16, 24, 1, 81)602SpriteFrame(-8, -20, 16, 24, 1, 81)603SpriteFrame(-8, -21, 16, 24, 1, 81)604SpriteFrame(-8, -8, 16, 16, 35, 81)605SpriteFrame(-8, -9, 16, 16, 35, 81)606SpriteFrame(-8, -10, 16, 16, 35, 81)607SpriteFrame(-8, -11, 16, 16, 35, 81)608SpriteFrame(-8, -12, 16, 16, 35, 81)609SpriteFrame(-8, -13, 16, 16, 35, 81)610SpriteFrame(-8, -14, 16, 16, 35, 81)611SpriteFrame(-8, -15, 16, 16, 35, 81)612end if613614CheckCurrentStageFolder("Zone03")615if checkResult == true616LoadSpriteSheet("SYZ/Objects.gif")617SpriteFrame(-8, -14, 16, 22, 98, 98)618SpriteFrame(-8, -15, 16, 22, 98, 98)619SpriteFrame(-8, -16, 16, 22, 98, 98)620SpriteFrame(-8, -17, 16, 22, 98, 98)621SpriteFrame(-8, -18, 16, 22, 98, 98)622SpriteFrame(-8, -19, 16, 22, 98, 98)623SpriteFrame(-8, -20, 16, 22, 98, 98)624SpriteFrame(-8, -21, 16, 22, 98, 98)625SpriteFrame(-8, -14, 16, 24, 81, 98)626SpriteFrame(-8, -15, 16, 24, 81, 98)627SpriteFrame(-8, -16, 16, 24, 81, 98)628SpriteFrame(-8, -17, 16, 24, 81, 98)629SpriteFrame(-8, -18, 16, 24, 81, 98)630SpriteFrame(-8, -19, 16, 24, 81, 98)631SpriteFrame(-8, -20, 16, 24, 81, 98)632SpriteFrame(-8, -21, 16, 24, 81, 98)633SpriteFrame(-8, -8, 16, 16, 98, 121)634SpriteFrame(-8, -9, 16, 16, 98, 121)635SpriteFrame(-8, -10, 16, 16, 98, 121)636SpriteFrame(-8, -11, 16, 16, 98, 121)637SpriteFrame(-8, -12, 16, 16, 98, 121)638SpriteFrame(-8, -13, 16, 16, 98, 121)639SpriteFrame(-8, -14, 16, 16, 98, 121)640SpriteFrame(-8, -15, 16, 16, 98, 121)641end if642643CheckCurrentStageFolder("Zone06")644if checkResult == true645LoadSpriteSheet("SBZ/Objects.gif")646SpriteFrame(-8, -14, 16, 22, 75, 26)647SpriteFrame(-8, -15, 16, 22, 75, 26)648SpriteFrame(-8, -16, 16, 22, 75, 26)649SpriteFrame(-8, -17, 16, 22, 75, 26)650SpriteFrame(-8, -18, 16, 22, 75, 26)651SpriteFrame(-8, -19, 16, 22, 75, 26)652SpriteFrame(-8, -20, 16, 22, 75, 26)653SpriteFrame(-8, -21, 16, 22, 75, 26)654SpriteFrame(-8, -14, 16, 24, 75, 1)655SpriteFrame(-8, -15, 16, 24, 75, 1)656SpriteFrame(-8, -16, 16, 24, 75, 1)657SpriteFrame(-8, -17, 16, 24, 75, 1)658SpriteFrame(-8, -18, 16, 24, 75, 1)659SpriteFrame(-8, -19, 16, 24, 75, 1)660SpriteFrame(-8, -20, 16, 24, 75, 1)661SpriteFrame(-8, -21, 16, 24, 75, 1)662SpriteFrame(-8, -8, 16, 16, 75, 49)663SpriteFrame(-8, -9, 16, 16, 75, 49)664SpriteFrame(-8, -10, 16, 16, 75, 49)665SpriteFrame(-8, -11, 16, 16, 75, 49)666SpriteFrame(-8, -12, 16, 16, 75, 49)667SpriteFrame(-8, -13, 16, 16, 75, 49)668SpriteFrame(-8, -14, 16, 16, 75, 49)669SpriteFrame(-8, -15, 16, 16, 75, 49)670end if671672CheckCurrentStageFolder("Zone07")673if checkResult == true674LoadSpriteSheet("MBZ/Objects.gif")675SpriteFrame(-8, -14, 16, 22, 1, 68)676SpriteFrame(-8, -15, 16, 22, 1, 68)677SpriteFrame(-8, -16, 16, 22, 1, 68)678SpriteFrame(-8, -17, 16, 22, 1, 68)679SpriteFrame(-8, -18, 16, 22, 1, 68)680SpriteFrame(-8, -19, 16, 22, 1, 68)681SpriteFrame(-8, -20, 16, 22, 1, 68)682SpriteFrame(-8, -21, 16, 22, 1, 68)683SpriteFrame(-8, -14, 16, 24, 18, 68)684SpriteFrame(-8, -15, 16, 24, 18, 68)685SpriteFrame(-8, -16, 16, 24, 18, 68)686SpriteFrame(-8, -17, 16, 24, 18, 68)687SpriteFrame(-8, -18, 16, 24, 18, 68)688SpriteFrame(-8, -19, 16, 24, 18, 68)689SpriteFrame(-8, -20, 16, 24, 18, 68)690SpriteFrame(-8, -21, 16, 24, 18, 68)691SpriteFrame(-8, -8, 16, 16, 35, 68)692SpriteFrame(-8, -9, 16, 16, 35, 68)693SpriteFrame(-8, -10, 16, 16, 35, 68)694SpriteFrame(-8, -11, 16, 16, 35, 68)695SpriteFrame(-8, -12, 16, 16, 35, 68)696SpriteFrame(-8, -13, 16, 16, 35, 68)697SpriteFrame(-8, -14, 16, 16, 35, 68)698SpriteFrame(-8, -15, 16, 16, 35, 68)699end if700701foreach (TypeName[Caterkiller], arrayPos0, ALL_ENTITIES)702temp7 = object[arrayPos0].propertyValue703CallFunction(Caterkiller_SetupBody)704next705706SetTableValue(TypeName[Caterkiller], DebugMode_ObjCount, DebugMode_TypesTable)707SetTableValue(Caterkiller_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)708SetTableValue(Caterkiller_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)709DebugMode_ObjCount++710end event711712713// ========================714// Editor Events715// ========================716717event RSDKEdit718if editor.returnVariable == true719switch editor.variableID720case EDIT_VAR_PROPVAL // property value721checkResult = object.propertyValue722break723724case 0 // direction725checkResult = object.propertyValue726break727728end switch729else730switch editor.variableID731case EDIT_VAR_PROPVAL // property value732object.propertyValue = editor.variableValue733break734735case 0 // direction736object.propertyValue = editor.variableValue737break738739end switch740end if741end event742743744event RSDKDraw745arrayPos0 = object.entityPos746temp7 = object.propertyValue747CallFunction(Caterkiller_SetupBody)748749temp0 = object.direction750object.direction = object.bodyDirection3751temp1 = object.bodyFrame3752temp1 >>= 1753temp1 += 16754DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition3.x, object.bodyPosition3.y)755756object.direction = object.bodyDirection2757temp1 = object.bodyFrame2758temp1 >>= 1759temp1 += 16760DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition2.x, object.bodyPosition2.y)761762object.direction = object.bodyDirection1763temp1 = object.bodyFrame1764temp1 >>= 1765temp1 += 16766DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition1.x, object.bodyPosition1.y)767768object.direction = temp0769temp0 = object.frame770temp0 >>= 1771DrawSpriteFX(temp0, FX_FLIP, object.xpos, object.ypos)772end event773774775event RSDKLoad776// Make sure we have a fall-back, in case the current folder isn't actually a valid one777temp0 = false778779CheckCurrentStageFolder("Zone03")780temp0 |= checkResult781if checkResult == true782LoadSpriteSheet("SYZ/Objects.gif")783SpriteFrame(-8, -14, 16, 22, 98, 98) // Head (Mouth Closed) - #0784SpriteFrame(-8, -15, 16, 22, 98, 98) // Head (Mouth Closed) - #1785SpriteFrame(-8, -16, 16, 22, 98, 98) // Head (Mouth Closed) - #2786SpriteFrame(-8, -17, 16, 22, 98, 98) // Head (Mouth Closed) - #3787SpriteFrame(-8, -18, 16, 22, 98, 98) // Head (Mouth Closed) - #4788SpriteFrame(-8, -19, 16, 22, 98, 98) // Head (Mouth Closed) - #5789SpriteFrame(-8, -20, 16, 22, 98, 98) // Head (Mouth Closed) - #6790SpriteFrame(-8, -21, 16, 22, 98, 98) // Head (Mouth Closed) - #7791SpriteFrame(-8, -14, 16, 24, 81, 98) // Head (Mouth Open) - #8792SpriteFrame(-8, -15, 16, 24, 81, 98) // Head (Mouth Open) - #9793SpriteFrame(-8, -16, 16, 24, 81, 98) // Head (Mouth Open) - #10794SpriteFrame(-8, -17, 16, 24, 81, 98) // Head (Mouth Open) - #11795SpriteFrame(-8, -18, 16, 24, 81, 98) // Head (Mouth Open) - #12796SpriteFrame(-8, -19, 16, 24, 81, 98) // Head (Mouth Open) - #13797SpriteFrame(-8, -20, 16, 24, 81, 98) // Head (Mouth Open) - #14798SpriteFrame(-8, -21, 16, 24, 81, 98) // Head (Mouth Open) - #15799SpriteFrame(-8, -8, 16, 16, 98, 121) // Body - #16800SpriteFrame(-8, -9, 16, 16, 98, 121) // Body - #17801SpriteFrame(-8, -10, 16, 16, 98, 121) // Body - #18802SpriteFrame(-8, -11, 16, 16, 98, 121) // Body - #19803SpriteFrame(-8, -12, 16, 16, 98, 121) // Body - #20804SpriteFrame(-8, -13, 16, 16, 98, 121) // Body - #21805SpriteFrame(-8, -14, 16, 16, 98, 121) // Body - #22806SpriteFrame(-8, -15, 16, 16, 98, 121) // Body - #23807end if808809CheckCurrentStageFolder("Zone06")810temp0 |= checkResult811if checkResult == true812LoadSpriteSheet("SBZ/Objects.gif")813SpriteFrame(-8, -14, 16, 22, 75, 26) // Head (Mouth Closed) - #0814SpriteFrame(-8, -15, 16, 22, 75, 26) // Head (Mouth Closed) - #1815SpriteFrame(-8, -16, 16, 22, 75, 26) // Head (Mouth Closed) - #2816SpriteFrame(-8, -17, 16, 22, 75, 26) // Head (Mouth Closed) - #3817SpriteFrame(-8, -18, 16, 22, 75, 26) // Head (Mouth Closed) - #4818SpriteFrame(-8, -19, 16, 22, 75, 26) // Head (Mouth Closed) - #5819SpriteFrame(-8, -20, 16, 22, 75, 26) // Head (Mouth Closed) - #6820SpriteFrame(-8, -21, 16, 22, 75, 26) // Head (Mouth Closed) - #7821SpriteFrame(-8, -14, 16, 24, 75, 1) // Head (Mouth Open) - #8822SpriteFrame(-8, -15, 16, 24, 75, 1) // Head (Mouth Open) - #9823SpriteFrame(-8, -16, 16, 24, 75, 1) // Head (Mouth Open) - #10824SpriteFrame(-8, -17, 16, 24, 75, 1) // Head (Mouth Open) - #11825SpriteFrame(-8, -18, 16, 24, 75, 1) // Head (Mouth Open) - #12826SpriteFrame(-8, -19, 16, 24, 75, 1) // Head (Mouth Open) - #13827SpriteFrame(-8, -20, 16, 24, 75, 1) // Head (Mouth Open) - #14828SpriteFrame(-8, -21, 16, 24, 75, 1) // Head (Mouth Open) - #15829SpriteFrame(-8, -8, 16, 16, 75, 49) // Body - #16830SpriteFrame(-8, -9, 16, 16, 75, 49) // Body - #17831SpriteFrame(-8, -10, 16, 16, 75, 49) // Body - #18832SpriteFrame(-8, -11, 16, 16, 75, 49) // Body - #19833SpriteFrame(-8, -12, 16, 16, 75, 49) // Body - #20834SpriteFrame(-8, -13, 16, 16, 75, 49) // Body - #21835SpriteFrame(-8, -14, 16, 16, 75, 49) // Body - #22836SpriteFrame(-8, -15, 16, 16, 75, 49) // Body - #23837end if838839CheckCurrentStageFolder("Zone07")840temp0 |= checkResult841if checkResult == true842LoadSpriteSheet("MBZ/Objects.gif")843SpriteFrame(-8, -14, 16, 22, 1, 68) // Head (Mouth Closed) - #0844SpriteFrame(-8, -15, 16, 22, 1, 68) // Head (Mouth Closed) - #1845SpriteFrame(-8, -16, 16, 22, 1, 68) // Head (Mouth Closed) - #2846SpriteFrame(-8, -17, 16, 22, 1, 68) // Head (Mouth Closed) - #3847SpriteFrame(-8, -18, 16, 22, 1, 68) // Head (Mouth Closed) - #4848SpriteFrame(-8, -19, 16, 22, 1, 68) // Head (Mouth Closed) - #5849SpriteFrame(-8, -20, 16, 22, 1, 68) // Head (Mouth Closed) - #6850SpriteFrame(-8, -21, 16, 22, 1, 68) // Head (Mouth Closed) - #7851SpriteFrame(-8, -14, 16, 24, 18, 68) // Head (Mouth Open) - #8852SpriteFrame(-8, -15, 16, 24, 18, 68) // Head (Mouth Open) - #9853SpriteFrame(-8, -16, 16, 24, 18, 68) // Head (Mouth Open) - #10854SpriteFrame(-8, -17, 16, 24, 18, 68) // Head (Mouth Open) - #11855SpriteFrame(-8, -18, 16, 24, 18, 68) // Head (Mouth Open) - #12856SpriteFrame(-8, -19, 16, 24, 18, 68) // Head (Mouth Open) - #13857SpriteFrame(-8, -20, 16, 24, 18, 68) // Head (Mouth Open) - #14858SpriteFrame(-8, -21, 16, 24, 18, 68) // Head (Mouth Open) - #15859SpriteFrame(-8, -8, 16, 16, 35, 68) // Body - #16860SpriteFrame(-8, -9, 16, 16, 35, 68) // Body - #17861SpriteFrame(-8, -10, 16, 16, 35, 68) // Body - #18862SpriteFrame(-8, -11, 16, 16, 35, 68) // Body - #19863SpriteFrame(-8, -12, 16, 16, 35, 68) // Body - #20864SpriteFrame(-8, -13, 16, 16, 35, 68) // Body - #21865SpriteFrame(-8, -14, 16, 16, 35, 68) // Body - #22866SpriteFrame(-8, -15, 16, 16, 35, 68) // Body - #23867end if868869if temp0 == false870// We use MZ's sprites as the fallback, "Zone02" (MZ's folder) will come here too871LoadSpriteSheet("MZ/Objects.gif")872SpriteFrame(-8, -14, 16, 22, 18, 81) // Head (Mouth Closed) - #0873SpriteFrame(-8, -15, 16, 22, 18, 81) // Head (Mouth Closed) - #1874SpriteFrame(-8, -16, 16, 22, 18, 81) // Head (Mouth Closed) - #2875SpriteFrame(-8, -17, 16, 22, 18, 81) // Head (Mouth Closed) - #3876SpriteFrame(-8, -18, 16, 22, 18, 81) // Head (Mouth Closed) - #4877SpriteFrame(-8, -19, 16, 22, 18, 81) // Head (Mouth Closed) - #5878SpriteFrame(-8, -20, 16, 22, 18, 81) // Head (Mouth Closed) - #6879SpriteFrame(-8, -21, 16, 22, 18, 81) // Head (Mouth Closed) - #7880SpriteFrame(-8, -14, 16, 24, 1, 81) // Head (Mouth Open) - #8881SpriteFrame(-8, -15, 16, 24, 1, 81) // Head (Mouth Open) - #9882SpriteFrame(-8, -16, 16, 24, 1, 81) // Head (Mouth Open) - #10883SpriteFrame(-8, -17, 16, 24, 1, 81) // Head (Mouth Open) - #11884SpriteFrame(-8, -18, 16, 24, 1, 81) // Head (Mouth Open) - #12885SpriteFrame(-8, -19, 16, 24, 1, 81) // Head (Mouth Open) - #13886SpriteFrame(-8, -20, 16, 24, 1, 81) // Head (Mouth Open) - #14887SpriteFrame(-8, -21, 16, 24, 1, 81) // Head (Mouth Open) - #15888SpriteFrame(-8, -8, 16, 16, 35, 81) // Body - #16889SpriteFrame(-8, -9, 16, 16, 35, 81) // Body - #17890SpriteFrame(-8, -10, 16, 16, 35, 81) // Body - #18891SpriteFrame(-8, -11, 16, 16, 35, 81) // Body - #19892SpriteFrame(-8, -12, 16, 16, 35, 81) // Body - #20893SpriteFrame(-8, -13, 16, 16, 35, 81) // Body - #21894SpriteFrame(-8, -14, 16, 16, 35, 81) // Body - #22895SpriteFrame(-8, -15, 16, 16, 35, 81) // Body - #23896end if897898AddEditorVariable("direction")899SetActiveVariable("direction")900AddEnumVariable("Left", 0)901AddEnumVariable("Right", 1)902end event903904905