Path: blob/master/Sonic 2/Scripts/EHZ/EggmanCar.txt
1488 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Eggman Car Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.drawPos.y13private alias object.value2 : object.boundsL14private alias object.value3 : object.boundsR15private alias object.value4 : object.carPos.y1617// States18private alias 0 : EHZEGGMANCAR_SELFDRIVING19private alias 1 : EHZEGGMANCAR_EGGMANENTER20private alias 2 : EHZEGGMANCAR_DRIVING21private alias 3 : EHZEGGMANCAR_EXPLODE22private alias 4 : EHZEGGMANCAR_DESTROYED2324// Eggman Aliases25private alias object.value8 : eggman.health2627// Car Drill States28private alias 0 : EHZEGGMANDRILL_ATTATCHED29private alias 2 : EHZEGGMANDRILL_FIRED3031// Car Wheel States32private alias 2 : EHZEGGMANWHEEL_BOUNCE3334// Path ID Aliases35private alias 0 : PATH_A363738// ========================39// Events40// ========================4142event ObjectUpdate43if object.state < EHZEGGMANCAR_EXPLODE44object.drawPos.y = object.carPos.y45object.drawPos.y >>= 146object.drawPos.y -= 0xC000047object.carPos.y = 048end if4950switch object.state51case EHZEGGMANCAR_SELFDRIVING52object.xpos -= 0x100005354object.timer++55if object.timer == 32156object.timer = 057object.state++58end if5960temp0 = oscillation61temp0 &= 1562if temp0 == 063temp0 = object.xpos64if object.direction == FLIP_NONE65temp0 += 0x2E000066else67temp0 -= 0x2E000068end if6970temp1 = object.drawPos.y71temp1 -= 0x4000072CreateTempObject(TypeName[Exhaust Puff], 0, temp0, temp1)73object[tempObjectPos].yvel = -0x1000074end if75break7677case EHZEGGMANCAR_EGGMANENTER78break7980case EHZEGGMANCAR_DRIVING81object.xpos += object.xvel8283if object.xpos <= object.boundsL84FlipSign(object.xvel)85object.direction ^= FLIP_X86object[-2].direction ^= FLIP_X87object[-1].direction ^= FLIP_X88object[+1].direction ^= FLIP_X89object[+2].direction ^= FLIP_X90object[+3].direction ^= FLIP_X91object[+4].direction ^= FLIP_X9293// if we can fire drill, do fire drill94if eggman[-1].health == 195if object[+1].state == EHZEGGMANDRILL_ATTATCHED96object[+1].state += EHZEGGMANDRILL_FIRED97object[+1].xpos = object.xpos98if object.direction == FLIP_NONE99object[+1].xpos -= 0x360000100object[+1].xvel = -0x30000101else102object[+1].xpos += 0x360000103object[+1].xvel = 0x30000104end if105end if106end if107end if108109if object.xpos >= object.boundsR110FlipSign(object.xvel)111object.direction ^= FLIP_X112object[-2].direction ^= FLIP_X113object[-1].direction ^= FLIP_X114object[+1].direction ^= FLIP_X115object[+2].direction ^= FLIP_X116object[+3].direction ^= FLIP_X117object[+4].direction ^= FLIP_X118119// if we can fire drill, do fire drill120if eggman[-1].health == 1121if object[+1].state == EHZEGGMANDRILL_ATTATCHED122object[+1].state += EHZEGGMANDRILL_FIRED123object[+1].xpos = object.xpos124if object.direction == FLIP_NONE125object[+1].xpos -= 0x360000126object[+1].xvel = -0x30000127else128object[+1].xpos += 0x360000129object[+1].xvel = 0x30000130end if131end if132end if133end if134135// Handle eggman pos136object[-1].xpos = object.xpos137object[-1].ypos = object.drawPos.y138object[-1].ypos -= 0x80000139140temp0 = oscillation141temp0 &= 15142if temp0 == 0143temp0 = object.xpos144if object.direction == FLIP_NONE145temp0 += 0x2E0000146else147temp0 -= 0x2E0000148end if149150temp1 = object.drawPos.y151temp1 -= 0x40000152CreateTempObject(TypeName[Exhaust Puff], 0, temp0, temp1)153object[tempObjectPos].yvel = -0x10000154end if155break156157case EHZEGGMANCAR_EXPLODE158object.ypos += object.yvel159object.yvel += 0x3800160161object.drawPos.y = object.ypos162ObjectTileCollision(CSIDE_FLOOR, 0, 17, PATH_A)163if checkResult == true164if object.direction == FLIP_NONE165temp0 = -0x20000166else167temp0 = 0x20000168end if169170// Back Wheel171object[-2].state += EHZEGGMANWHEEL_BOUNCE172object[-2].xvel = temp0173object[-2].yvel = 0x30000174FlipSign(object[-2].xvel)175176// Front Wheel 1177object[+2].state += EHZEGGMANWHEEL_BOUNCE178object[+2].xvel = temp0179object[+2].yvel = 0x30000180181// Front Wheel 2182object[+3].state += EHZEGGMANWHEEL_BOUNCE183object[+3].xvel = temp0184object[+3].yvel = 0x30000185186object.state++187end if188189// Eggman190object[-1].xpos = object.xpos191object[-1].ypos = object.drawPos.y192object[-1].ypos -= 0x80000193break194195case EHZEGGMANCAR_DESTROYED196break197198end switch199end event200201202event ObjectDraw203DrawSpriteFX(0, FX_FLIP, object.xpos, object.drawPos.y)204end event205206207event ObjectStartup208CheckCurrentStageFolder("Zone01")209if checkResult == true210LoadSpriteSheet("EHZ/Objects.gif")211212// Car Body Frame213SpriteFrame(-48, -16, 93, 32, 0, 109)214else215LoadSpriteSheet("MBZ/Objects.gif")216217// Car Body Frame218SpriteFrame(-48, -16, 93, 32, 123, 1)219end if220end event221222223// ========================224// Editor Events225// ========================226227event RSDKDraw228DrawSprite(0)229end event230231232event RSDKLoad233CheckCurrentStageFolder("Zone01")234if checkResult == true235LoadSpriteSheet("EHZ/Objects.gif")236SpriteFrame(-48, -16, 93, 32, 0, 109)237else238LoadSpriteSheet("MBZ/Objects.gif")239SpriteFrame(-48, -16, 93, 32, 123, 1)240end if241242SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")243end event244245246