Path: blob/master/Sonic 1/Scripts/Mission/ReviveCaterkiller.txt
1483 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 object.value15 : object.xBoundary132private alias object.value16 : object.xBoundary23334private alias object.value17 : object.bodyPositionRevive.x35private alias object.value18 : object.bodyPositionRevive.y3637private alias 0 : CATERKILLER_SETUP38private alias 1 : CATERKILLER_CONTRACT39private alias 2 : CATERKILLER_LIFTHEAD40private alias 3 : CATERKILLER_UNCONTRACT41private alias 4 : CATERKILLER_LOWERHEAD42private alias 5 : CATERKILLER_SPLITBODYPART43private alias 6 : CATERKILLER_REVIVE4445// Player aliases46private alias object.value40 : player.hitboxLeft47private alias object.value38 : player.hitboxTop48private alias object.value41 : player.hitboxRight49private alias object.value39 : player.hitboxBottom5051// Revive Enemy Aliases52private alias object.value47 : object.backupType53private alias object.value46 : object.backupState54private alias object.value44 : object.backupvalueA55private alias object.value43 : object.backupvalueB56private alias object.value0 : object.target5758// Mission Number Aliases59private alias 8 : MISSIONNO_MERCY6061// Tile Info ID Aliases62private alias 1 : TILEINFO_DIRECTION63private alias 6 : TILEINFO_ANGLEA6465// Path ID Aliases66private alias 0 : PATH_A676869// ========================70// Function Declarations71// ========================7273reserve function Caterkiller_SetupBody74reserve function Caterkiller_DebugDraw75reserve function Caterkiller_DebugSpawn76reserve function Caterkiller_CheckPlayerCollisions77reserve function Caterkiller_CheckTileAngle78reserve function Caterkiller_CheckTileCollisions798081// ========================82// Function Definitions83// ========================8485private function Caterkiller_SetupBody86object[arrayPos0].bodyPositionRevive.x = object[arrayPos0].bodyPosition1.x87object[arrayPos0].bodyPositionRevive.y = object[arrayPos0].bodyPosition1.y8889object[arrayPos0].startPos.x = object[arrayPos0].xpos90object[arrayPos0].startPos.y = object[arrayPos0].ypos9192temp0 = object[arrayPos0].xpos93temp1 = 0xC000094if temp7 == FLIP_X95FlipSign(temp1)96end if97object[arrayPos0].direction = temp798object[arrayPos0].frame = 099temp0 += temp1100101object[arrayPos0].bodyPosition1.x = temp0102object[arrayPos0].bodyPosition1.y = object[arrayPos0].ypos103object[arrayPos0].bodyDirection1 = object[arrayPos0].direction104object[arrayPos0].bodyFrame1 = 0105temp0 += temp1106107object[arrayPos0].bodyPosition2.x = temp0108object[arrayPos0].bodyPosition2.y = object[arrayPos0].ypos109object[arrayPos0].bodyDirection2 = object[arrayPos0].direction110object[arrayPos0].bodyFrame2 = 0111temp0 += temp1112113object[arrayPos0].bodyPosition3.x = temp0114object[arrayPos0].bodyPosition3.y = object[arrayPos0].ypos115object[arrayPos0].bodyDirection3 = object[arrayPos0].direction116object[arrayPos0].bodyFrame3 = 0117118object[arrayPos0].state = CATERKILLER_SETUP119object[arrayPos0].timer = 0120121object[arrayPos0].xBoundary1 = object[arrayPos0].xpos122object[arrayPos0].xBoundary1 &= -0x200000123object[arrayPos0].xBoundary2 = object[arrayPos0].xBoundary1124if object[arrayPos0].bodyPositionRevive.y > 2125temp0 = object[arrayPos0].bodyPositionRevive.y126temp0 *= 0x200000127object[arrayPos0].xBoundary2 += temp0128else129object[arrayPos0].xBoundary2 += 0x400000130end if131temp0 = object[arrayPos0].bodyPositionRevive.x132temp0 *= 0x200000133object[arrayPos0].xBoundary1 -= temp0134end function135136137private function Caterkiller_DebugDraw138temp0 = object.xpos139GetBit(temp1, object.direction, 0)140if temp1 == FLIP_NONE141temp0 += 0x240000142temp1 = -0xC0000143else144temp0 -= 0x240000145temp1 = 0xC0000146end if147148temp2 = 0149while temp2 < 3150DrawSpriteFX(16, FX_FLIP, temp0, object.ypos)151temp0 += temp1152temp2++153loop154155DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)156end function157158159private function Caterkiller_DebugSpawn160temp0 = object.ixpos161temp0 <<= 16162temp1 = object.iypos163temp1 <<= 16164165CreateTempObject(TypeName[Caterkiller], 0, temp0, temp1)166arrayPos0 = object[tempObjectPos].entityPos167temp7 = object.direction168169CallFunction(Caterkiller_SetupBody)170end function171172173private function Caterkiller_CheckPlayerCollisions174temp7 = false175temp5 = object.xpos176temp6 = object.ypos177foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)178BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, player[currentPlayer].hitboxLeft, player[currentPlayer].hitboxTop, player[currentPlayer].hitboxRight, player[currentPlayer].hitboxBottom)179if checkResult == true180CreateTempObject(TypeName[Revive Enemy], object.propertyValue, object.startPos.x, object.startPos.y)181object[tempObjectPos].priority = PRIORITY_ACTIVE182object[tempObjectPos].target = object.entityPos183object[tempObjectPos].backupType = object.type184object[tempObjectPos].backupState = CATERKILLER_REVIVE185object[tempObjectPos].backupvalueA = object.bodyPositionRevive.x186object[tempObjectPos].backupvalueB = object.bodyPositionRevive.y187CallFunction(Player_BadnikBreak)188else189object.xpos = object.bodyPosition1.x190object.ypos = object.bodyPosition1.y191BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)192if checkResult == true193CallFunction(Player_Hit)194temp7 = true195else196object.xpos = object.bodyPosition2.x197object.ypos = object.bodyPosition2.y198BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)199if checkResult == true200CallFunction(Player_Hit)201temp7 = true202else203object.xpos = object.bodyPosition3.x204object.ypos = object.bodyPosition3.y205BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)206if checkResult == true207CallFunction(Player_Hit)208temp7 = true209end if210end if211end if212end if213214object.xpos = temp5215object.ypos = temp6216next217218// Uh oh! we hit the body! time to explode!219if temp7 == true220temp0 = object.frame221temp0 <<= 15222object.ypos -= temp0223224CreateTempObject(TypeName[Caterkiller], 0, object.xpos, object.ypos)225if object.direction == FLIP_NONE226object[tempObjectPos].xvel = -0x20000227else228object[tempObjectPos].xvel = 0x20000229end if230object[tempObjectPos].yvel = -0x40000231object[tempObjectPos].direction = object.direction232object[tempObjectPos].frame = object.frame233object[tempObjectPos].frame &= 8234object[tempObjectPos].state = CATERKILLER_SPLITBODYPART235object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL236237CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition1.x, object.bodyPosition1.y)238if object.bodyDirection1 == FLIP_NONE239object[tempObjectPos].xvel = -0x18000240else241object[tempObjectPos].xvel = 0x18000242end if243object[tempObjectPos].yvel = -0x40000244object[tempObjectPos].direction = object.bodyDirection1245object[tempObjectPos].frame = 16246object[tempObjectPos].state = CATERKILLER_SPLITBODYPART247object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL248temp0 = object.bodyFrame2249temp0 <<= 15250object.bodyPosition2.y -= temp0251object.frame -= temp0252253CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition2.x, object.bodyPosition2.y)254if object.bodyDirection2 == FLIP_NONE255object[tempObjectPos].xvel = 0x18000256else257object[tempObjectPos].xvel = -0x18000258end if259object[tempObjectPos].yvel = -0x40000260object[tempObjectPos].direction = object.bodyDirection2261object[tempObjectPos].frame = 16262object[tempObjectPos].state = CATERKILLER_SPLITBODYPART263object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL264265CreateTempObject(TypeName[Caterkiller], 0, object.bodyPosition3.x, object.bodyPosition3.y)266if object.bodyDirection3 == FLIP_NONE267object[tempObjectPos].xvel = 0x20000268else269object[tempObjectPos].xvel = -0x20000270end if271object[tempObjectPos].yvel = -0x40000272object[tempObjectPos].direction = object.bodyDirection3273object[tempObjectPos].frame = 16274object[tempObjectPos].state = CATERKILLER_SPLITBODYPART275object[tempObjectPos].priority = PRIORITY_ACTIVE_SMALL276277CreateTempObject(TypeName[Revive Enemy], object.propertyValue, object.startPos.x, object.startPos.y)278object[tempObjectPos].priority = PRIORITY_ACTIVE279object[tempObjectPos].target = object.entityPos280object[tempObjectPos].backupType = object.type281object[tempObjectPos].backupState = CATERKILLER_REVIVE282object[tempObjectPos].backupvalueA = object.bodyPositionRevive.x283object[tempObjectPos].backupvalueB = object.bodyPositionRevive.y284285ResetObjectEntity(object.entityPos, TypeName[Blank Object], 0, object.xpos, object.ypos)286287if game.playMode == BOOT_PLAYMODE_MISSION288CallNativeFunction2(NotifyCallback, NOTIFY_KILL_ENEMY, temp0)289end if290end if291end function292293294private function Caterkiller_CheckTileAngle295temp2 >>= 16296temp3 >>= 16297temp3 += 8298Get16x16TileInfo(temp5, temp2, temp3, TILEINFO_ANGLEA)299Get16x16TileInfo(temp6, temp2, temp3, TILEINFO_DIRECTION)300switch temp6301case FLIP_NONE302temp5 &= 255303break304305case FLIP_X306temp5 &= 255307temp6 = temp5308temp5 = 256309temp5 -= temp6310temp5 &= 255311break312313case FLIP_Y314temp5 >>= 24315temp5 += 128316temp6 = temp5317temp5 = 256318temp5 -= temp6319temp5 &= 255320break321322case FLIP_XY323temp5 >>= 24324temp5 += 128325temp5 &= 255326break327328end switch329330checkResult = false331if temp4 == FLIP_NONE332if temp5 < 128333if temp5 > 24334checkResult = true335end if336end if337else338if temp5 > 128339if temp5 < 232340checkResult = true341end if342end if343end if344end function345346347private function Caterkiller_CheckTileCollisions348if object.state != CATERKILLER_LIFTHEAD349CheckLower(object.xpos, object.xBoundary1)350temp2 = checkResult351CheckGreater(object.xpos, object.xBoundary2)352checkResult |= temp2353if checkResult == true354object.direction ^= 1355end if356end if357358CheckLower(object.bodyPosition1.x, object.xBoundary1)359temp2 = checkResult360CheckGreater(object.bodyPosition1.x, object.xBoundary2)361checkResult |= temp2362if checkResult == true363object.bodyDirection1 = object.direction364end if365366CheckLower(object.bodyPosition2.x, object.xBoundary1)367temp2 = checkResult368CheckGreater(object.bodyPosition2.x, object.xBoundary2)369checkResult |= temp2370if checkResult == true371object.bodyDirection2 = object.direction372end if373374if object.state != CATERKILLER_LOWERHEAD375CheckLower(object.bodyPosition3.x, object.xBoundary1)376temp2 = checkResult377CheckGreater(object.bodyPosition3.x, object.xBoundary2)378checkResult |= temp2379if checkResult == true380object.bodyDirection3 = object.direction381end if382end if383end function384385386// ========================387// Events388// ========================389390event ObjectUpdate391switch object.state392case CATERKILLER_SETUP393object.priority = PRIORITY_ACTIVE394// [Fallthrough]395396case CATERKILLER_CONTRACT397if object.timer == 0398object.timer = 15399object.state++400object.frame = -1401object.bodyFrame2 = -1402// fallthrough....right.?403else404object.timer--405CallFunction(Caterkiller_CheckPlayerCollisions)406break //whats this doin here407end if408// [Fallthrough, I think]409case CATERKILLER_LIFTHEAD410if object.timer == 0411object.timer = 7412object.state++413else414object.timer--415416if object.bodyDirection1 == FLIP_NONE417object.bodyPosition1.x -= 0x4000418else419object.bodyPosition1.x += 0x4000420end if421422if object.bodyDirection2 == FLIP_NONE423object.bodyPosition2.x -= 0x8000424else425object.bodyPosition2.x += 0x8000426end if427428if object.bodyDirection3 == FLIP_NONE429object.bodyPosition3.x -= 0xC000430else431object.bodyPosition3.x += 0xC000432end if433434object.frame++435object.bodyFrame2++436CallFunction(Caterkiller_CheckTileCollisions)437CallFunction(Caterkiller_CheckPlayerCollisions)438end if439break440441case CATERKILLER_UNCONTRACT442if object.timer == 0443object.timer = 15444object.state++445object.frame = 16446object.bodyFrame2 = 16447else448object.timer--449CallFunction(Caterkiller_CheckPlayerCollisions)450break451end if452// [Fallthrough]453case CATERKILLER_LOWERHEAD454if object.timer == 0455object.timer = 7456object.state = CATERKILLER_CONTRACT457else458object.timer--459if object.direction == FLIP_NONE460object.xpos -= 0xC000461else462object.xpos += 0xC000463end if464465if object.bodyDirection1 == FLIP_NONE466object.bodyPosition1.x -= 0x8000467else468object.bodyPosition1.x += 0x8000469end if470471if object.bodyDirection2 == FLIP_NONE472object.bodyPosition2.x -= 0x4000473else474object.bodyPosition2.x += 0x4000475end if476477object.frame--478object.bodyFrame2--479CallFunction(Caterkiller_CheckTileCollisions)480CallFunction(Caterkiller_CheckPlayerCollisions)481end if482break483484case CATERKILLER_SPLITBODYPART485object.xpos += object.xvel486object.ypos += object.yvel487object.yvel += 0x3800488489if object.yvel > 0490ObjectTileCollision(CSIDE_FLOOR, 0, 8, PATH_A)491if checkResult == true492object.yvel = -0x40000493end if494end if495496foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)497BoxCollisionTest(C_TOUCH, object.entityPos, -8, -8, 8, 8, currentPlayer, player[currentPlayer].hitboxLeft, player[currentPlayer].hitboxTop, player[currentPlayer].hitboxRight, player[currentPlayer].hitboxBottom)498if checkResult == true499if object.frame < 16500CallFunction(Player_BadnikBreak)501else502CallFunction(Player_Hit)503end if504end if505next506507if object.outOfBounds == true508object.type = TypeName[Blank Object]509end if510break511512case CATERKILLER_REVIVE513object.startPos.x = object.xpos514object.startPos.y = object.ypos515object.bodyPosition1.x = object.backupvalueA516object.bodyPosition1.y = object.backupvalueB517arrayPos0 = object.entityPos518temp7 = object.propertyValue519CallFunction(Caterkiller_SetupBody)520object.state = CATERKILLER_SETUP521break522523end 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].propertyValue534object.bodyPosition1.x = object.bodyPositionRevive.x535object.bodyPosition1.y = object.bodyPositionRevive.y536CallFunction(Caterkiller_SetupBody)537else538object.xpos = temp0539object.ypos = temp1540end if541end if542end if543end event544545546event ObjectDraw547if object.state < CATERKILLER_SPLITBODYPART548temp0 = object.direction549object.direction = object.bodyDirection3550temp1 = object.bodyFrame3551temp1 >>= 1552temp1 += 16553DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition3.x, object.bodyPosition3.y)554555object.direction = object.bodyDirection2556temp1 = object.bodyFrame2557temp1 >>= 1558temp1 += 16559DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition2.x, object.bodyPosition2.y)560561object.direction = object.bodyDirection1562temp1 = object.bodyFrame1563temp1 >>= 1564temp1 += 16565DrawSpriteFX(temp1, FX_FLIP, object.bodyPosition1.x, object.bodyPosition1.y)566567object.direction = temp0568temp0 = 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 RSDKLoad776CheckCurrentStageFolder("Zone02")777if checkResult == true778LoadSpriteSheet("MZ/Objects.gif")779SpriteFrame(-8, -14, 16, 22, 18, 81)780SpriteFrame(-8, -15, 16, 22, 18, 81)781SpriteFrame(-8, -16, 16, 22, 18, 81)782SpriteFrame(-8, -17, 16, 22, 18, 81)783SpriteFrame(-8, -18, 16, 22, 18, 81)784SpriteFrame(-8, -19, 16, 22, 18, 81)785SpriteFrame(-8, -20, 16, 22, 18, 81)786SpriteFrame(-8, -21, 16, 22, 18, 81)787SpriteFrame(-8, -14, 16, 24, 1, 81)788SpriteFrame(-8, -15, 16, 24, 1, 81)789SpriteFrame(-8, -16, 16, 24, 1, 81)790SpriteFrame(-8, -17, 16, 24, 1, 81)791SpriteFrame(-8, -18, 16, 24, 1, 81)792SpriteFrame(-8, -19, 16, 24, 1, 81)793SpriteFrame(-8, -20, 16, 24, 1, 81)794SpriteFrame(-8, -21, 16, 24, 1, 81)795SpriteFrame(-8, -8, 16, 16, 35, 81)796SpriteFrame(-8, -9, 16, 16, 35, 81)797SpriteFrame(-8, -10, 16, 16, 35, 81)798SpriteFrame(-8, -11, 16, 16, 35, 81)799SpriteFrame(-8, -12, 16, 16, 35, 81)800SpriteFrame(-8, -13, 16, 16, 35, 81)801SpriteFrame(-8, -14, 16, 16, 35, 81)802SpriteFrame(-8, -15, 16, 16, 35, 81)803end if804CheckCurrentStageFolder("Zone03")805if checkResult == true806LoadSpriteSheet("SYZ/Objects.gif")807SpriteFrame(-8, -14, 16, 22, 98, 98)808SpriteFrame(-8, -15, 16, 22, 98, 98)809SpriteFrame(-8, -16, 16, 22, 98, 98)810SpriteFrame(-8, -17, 16, 22, 98, 98)811SpriteFrame(-8, -18, 16, 22, 98, 98)812SpriteFrame(-8, -19, 16, 22, 98, 98)813SpriteFrame(-8, -20, 16, 22, 98, 98)814SpriteFrame(-8, -21, 16, 22, 98, 98)815SpriteFrame(-8, -14, 16, 24, 81, 98)816SpriteFrame(-8, -15, 16, 24, 81, 98)817SpriteFrame(-8, -16, 16, 24, 81, 98)818SpriteFrame(-8, -17, 16, 24, 81, 98)819SpriteFrame(-8, -18, 16, 24, 81, 98)820SpriteFrame(-8, -19, 16, 24, 81, 98)821SpriteFrame(-8, -20, 16, 24, 81, 98)822SpriteFrame(-8, -21, 16, 24, 81, 98)823SpriteFrame(-8, -8, 16, 16, 98, 121)824SpriteFrame(-8, -9, 16, 16, 98, 121)825SpriteFrame(-8, -10, 16, 16, 98, 121)826SpriteFrame(-8, -11, 16, 16, 98, 121)827SpriteFrame(-8, -12, 16, 16, 98, 121)828SpriteFrame(-8, -13, 16, 16, 98, 121)829SpriteFrame(-8, -14, 16, 16, 98, 121)830SpriteFrame(-8, -15, 16, 16, 98, 121)831end if832CheckCurrentStageFolder("Zone06")833if checkResult == true834LoadSpriteSheet("SBZ/Objects.gif")835SpriteFrame(-8, -14, 16, 22, 75, 26)836SpriteFrame(-8, -15, 16, 22, 75, 26)837SpriteFrame(-8, -16, 16, 22, 75, 26)838SpriteFrame(-8, -17, 16, 22, 75, 26)839SpriteFrame(-8, -18, 16, 22, 75, 26)840SpriteFrame(-8, -19, 16, 22, 75, 26)841SpriteFrame(-8, -20, 16, 22, 75, 26)842SpriteFrame(-8, -21, 16, 22, 75, 26)843SpriteFrame(-8, -14, 16, 24, 75, 1)844SpriteFrame(-8, -15, 16, 24, 75, 1)845SpriteFrame(-8, -16, 16, 24, 75, 1)846SpriteFrame(-8, -17, 16, 24, 75, 1)847SpriteFrame(-8, -18, 16, 24, 75, 1)848SpriteFrame(-8, -19, 16, 24, 75, 1)849SpriteFrame(-8, -20, 16, 24, 75, 1)850SpriteFrame(-8, -21, 16, 24, 75, 1)851SpriteFrame(-8, -8, 16, 16, 75, 49)852SpriteFrame(-8, -9, 16, 16, 75, 49)853SpriteFrame(-8, -10, 16, 16, 75, 49)854SpriteFrame(-8, -11, 16, 16, 75, 49)855SpriteFrame(-8, -12, 16, 16, 75, 49)856SpriteFrame(-8, -13, 16, 16, 75, 49)857SpriteFrame(-8, -14, 16, 16, 75, 49)858SpriteFrame(-8, -15, 16, 16, 75, 49)859end if860CheckCurrentStageFolder("Zone07")861if checkResult == true862LoadSpriteSheet("MBZ/Objects.gif")863SpriteFrame(-8, -14, 16, 22, 1, 68)864SpriteFrame(-8, -15, 16, 22, 1, 68)865SpriteFrame(-8, -16, 16, 22, 1, 68)866SpriteFrame(-8, -17, 16, 22, 1, 68)867SpriteFrame(-8, -18, 16, 22, 1, 68)868SpriteFrame(-8, -19, 16, 22, 1, 68)869SpriteFrame(-8, -20, 16, 22, 1, 68)870SpriteFrame(-8, -21, 16, 22, 1, 68)871SpriteFrame(-8, -14, 16, 24, 18, 68)872SpriteFrame(-8, -15, 16, 24, 18, 68)873SpriteFrame(-8, -16, 16, 24, 18, 68)874SpriteFrame(-8, -17, 16, 24, 18, 68)875SpriteFrame(-8, -18, 16, 24, 18, 68)876SpriteFrame(-8, -19, 16, 24, 18, 68)877SpriteFrame(-8, -20, 16, 24, 18, 68)878SpriteFrame(-8, -21, 16, 24, 18, 68)879SpriteFrame(-8, -8, 16, 16, 35, 68)880SpriteFrame(-8, -9, 16, 16, 35, 68)881SpriteFrame(-8, -10, 16, 16, 35, 68)882SpriteFrame(-8, -11, 16, 16, 35, 68)883SpriteFrame(-8, -12, 16, 16, 35, 68)884SpriteFrame(-8, -13, 16, 16, 35, 68)885SpriteFrame(-8, -14, 16, 16, 35, 68)886SpriteFrame(-8, -15, 16, 16, 35, 68)887end if888889AddEditorVariable("direction")890SetActiveVariable("direction")891AddEnumVariable("Left", 0)892AddEnumVariable("Right", 1)893894// TODO: val1 is set from editor?? bodyPosition1.y??? huh? (M102)895end event896897898