//------------------------------------------------- // File: ggsm_arcade_data.sch // Purpose: general functions required by system //------------------------------------------------- //------------------------------------------------- // INCLUDES //------------------------------------------------- USING "ggsm_structs.sch" USING "ggsm_maths.sch" //------------------------------------------------- // TEXTURE DATA //------------------------------------------------- FUNC STRING GGSM_GET_TEXTURE_DICT(GGSM_TEXDICT eTexDict) SWITCH (eTexDict) CASE GGSM_TEXDICT_BG RETURN "MpGoGoSpaceBG" CASE GGSM_TEXDICT_BOSS_ALIEN RETURN "MpGoGoSpaceBossAlien" CASE GGSM_TEXDICT_BOSS_BREAD RETURN "MpGoGoSpaceBossBananaBread" CASE GGSM_TEXDICT_BOSS_BANANA_SPLIT RETURN "MpGoGoSpaceBossBananaSplit" CASE GGSM_TEXDICT_BOSS_DR_DANK RETURN "MpGoGoSpaceBossDrDank" CASE GGSM_TEXDICT_BOSS_GRANANA RETURN "MpGoGoSpaceBossGranana" CASE GGSM_TEXDICT_BOSS_MARINE RETURN "MpGoGoSpaceBossMarine" CASE GGSM_TEXDICT_BOSS_SMOOTHIE RETURN "MpGoGoSpaceBossSmoothie" CASE GGSM_TEXDICT_CAVERN_STAGE RETURN "MpGoGoSpaceCavernStage" CASE GGSM_TEXDICT_DIALOG RETURN "MpGoGoSpaceDialog" CASE GGSM_TEXDICT_GAME RETURN "MpGoGoSpaceCommon" CASE GGSM_TEXDICT_RESIDENT RETURN "MpGoGoSpaceResident" CASE GGSM_TEXDICT_FRONTEND RETURN "MpGoGoSpaceFrontEnd" CASE GGSM_TEXDICT_PORTRAITS RETURN "MpGoGoSpacePortraits" CASE GGSM_TEXDICT_PSA RETURN "MpGoGoSpacePSA" ENDSWITCH CASSERTLN(DEBUG_MINIGAME, "GGSM_GET_TEXTURE_DICT - DOESN'T HAVE NAME:", GGSM_TEXDICT_TO_STRING(eTexDict)) RETURN "MpGoGoResident" ENDFUNC FUNC GGSM_TEXDICT GGSM_GET_TEXDICT_FOR_STAGE_TILES(INT iStage) IF (iStage = GGSM_SECTOR_YELLOW_CLAM) RETURN GGSM_TEXDICT_CAVERN_STAGE ENDIF RETURN GGSM_TEXDICT_NONE ENDFUNC FUNC BOOL GGSM_LOAD_TEXTURE_DICT(GGSM_TEXDICT eTexDict) STRING str = GGSM_GET_TEXTURE_DICT(eTexDict) REQUEST_STREAMED_TEXTURE_DICT(str) IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED(str) CDEBUG1LN(DEBUG_MINIGAME, "[GGSM] GGSM_LOAD_TEXTURE_DICT - Loading ", str) RETURN FALSE ENDIF SET_BITMASK_ENUM_AS_ENUM(sGGSMData.eLoadedTextureFlags, eTexDict) CDEBUG1LN(DEBUG_MINIGAME, "[GGSM] GGSM_LOAD_TEXTURE_DICT - Loading ", str, " Complete") RETURN TRUE ENDFUNC PROC GGSM_RELEASE_TEXTURE_DICT(GGSM_TEXDICT eTexDict) STRING str = GGSM_GET_TEXTURE_DICT(eTexDict) IF IS_BITMASK_ENUM_AS_ENUM_SET(sGGSMData.eLoadedTextureFlags, eTexDict) CDEBUG1LN(DEBUG_MINIGAME, "[GGSM] GGSM_RELEASE_TEXTURE_DICT - Releasing ", str) SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED(str) CLEAR_BITMASK_ENUM_AS_ENUM(sGGSMData.eLoadedTextureFlags, eTexDict) ENDIF ENDPROC FUNC BOOL GGSM_IS_TEXTURE_DICT_LOADED(GGSM_TEXDICT eTexDict) RETURN IS_BITMASK_ENUM_AS_ENUM_SET(sGGSMData.eLoadedTextureFlags, eTexDict) ENDFUNC FUNC BOOL GGSM_LOAD_ALL_TEXTURE_DICTS() INT i REPEAT GGSM_MAX_TEXDICT i IF NOT GGSM_LOAD_TEXTURE_DICT(INT_TO_ENUM(GGSM_TEXDICT, SHIFT_LEFT(1, i))) RETURN FALSE ENDIF ENDREPEAT RETURN TRUE ENDFUNC PROC GGSM_RELEASE_ALL_TEXTURE_DICTS() INT i REPEAT GGSM_MAX_TEXDICT i GGSM_RELEASE_TEXTURE_DICT(INT_TO_ENUM(GGSM_TEXDICT, SHIFT_LEFT(1, i))) ENDREPEAT ENDPROC //------------------------------------------------- // SPRITE DATA //------------------------------------------------- /// PURPOSE: /// Gets sprite name from enum /// PARAMS: /// eSprite - /// iAnimFrame - /// RETURNS: /// FUNC GGSM_TEXDICT GGSM_GET_SPRITE_DICT(GGSM_SPRITE_TYPE eSprite) // we assume that everything lives in the common directory unless stated SWITCH (eSprite) CASE GGSM_SPRITE_BOSS_BREAD CASE GGSM_SPRITE_BOSS_BREAD_FACE CASE GGSM_SPRITE_BOSS_BREAD_EYEBROWS CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT CASE GGSM_SPRITE_BOSS_BREAD_TOP_LEFT CASE GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT RETURN GGSM_TEXDICT_BOSS_BREAD CASE GGSM_SPRITE_BOSS_BANANA_SPLIT RETURN GGSM_TEXDICT_BOSS_BANANA_SPLIT CASE GGSM_SPRITE_SMALL_SMOOTHIE CASE GGSM_SPRITE_BOSS_SMOOTHIE RETURN GGSM_TEXDICT_BOSS_SMOOTHIE CASE GGSM_SPRITE_BOSS_GRANANA CASE GGSM_SPRITE_BOSS_GRANANA_GLASSES CASE GGSM_SPRITE_BOSS_GRANANA_HAIR RETURN GGSM_TEXDICT_BOSS_GRANANA CASE GGSM_SPRITE_BOSS_DR_DANK_TOP CASE GGSM_SPRITE_BOSS_DR_DANK_MIDDLE CASE GGSM_SPRITE_BOSS_DR_DANK_BOTTOM RETURN GGSM_TEXDICT_BOSS_DR_DANK CASE GGSM_SPRITE_BOSS_MARINE CASE GGSM_SPRITE_BOSS_MARINE_ALIEN RETURN GGSM_TEXDICT_BOSS_MARINE CASE GGSM_SPRITE_PIC_BREAD_MAIN CASE GGSM_SPRITE_PIC_DR_DANK_FAIL CASE GGSM_SPRITE_PIC_DR_DANK_MAIN CASE GGSM_SPRITE_PIC_GRANANA_MAIN CASE GGSM_SPRITE_PIC_MARINE_MAIN CASE GGSM_SPRITE_PIC_MONKEY_ASTEROID CASE GGSM_SPRITE_PIC_MONKEY_FAIL CASE GGSM_SPRITE_PIC_MONKEY_MAIN CASE GGSM_SPRITE_PIC_SMOOTHIE_MAIN CASE GGSM_SPRITE_PIC_BREAD_64 CASE GGSM_SPRITE_PIC_GRANANA_64 CASE GGSM_SPRITE_PIC_SMOOTHIE_64 CASE GGSM_SPRITE_PIC_MARINE_64 CASE GGSM_SPRITE_PIC_DR_DANK_64 RETURN GGSM_TEXDICT_PORTRAITS CASE GGSM_SPRITE_BOX_LVL1_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL1_BOSS_START CASE GGSM_SPRITE_BOX_LVL1_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL1_MONKEY_START CASE GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL1_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL2_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL2_BOSS_START CASE GGSM_SPRITE_BOX_LVL2_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL2_MONKEY_START CASE GGSM_SPRITE_BOX_LVL2_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL3_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL3_BOSS_START CASE GGSM_SPRITE_BOX_LVL3_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL3_MONKEY_START CASE GGSM_SPRITE_BOX_LVL3_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL4_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL4_BOSS_START CASE GGSM_SPRITE_BOX_LVL4_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL4_MONKEY_START CASE GGSM_SPRITE_BOX_LVL4_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL5_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL5_BOSS_START CASE GGSM_SPRITE_BOX_LVL5_BOSS_START2 CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN2 CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START2 CASE GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL5_MONKEY_WIN CASE GGSM_SPRITE_BOX_ASTEROID_LEAVING CASE GGSM_SPRITE_BOX_ASTEROID_NEARING CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS1 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS2 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS3 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS4 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS5 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS6 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6 RETURN GGSM_TEXDICT_DIALOG CASE GGSM_SPRITE_BG_LAYER_BREAD_PLANET CASE GGSM_SPRITE_BG_LAYER_BOSS_PLANET CASE GGSM_SPRITE_BG_LAYER_CRATERS CASE GGSM_SPRITE_BG_LAYER_EARTH CASE GGSM_SPRITE_BG_LAYER_PINK_PLANET CASE GGSM_SPRITE_BG_SPACE CASE GGSM_SPRITE_BG_STARS CASE GGSM_SPRITE_BG_MAP RETURN GGSM_TEXDICT_BG CASE GGSM_SPRITE_FBI_WARN CASE GGSM_SPRITE_PSA RETURN GGSM_TEXDICT_PSA CASE GGSM_SPRITE_GAME_OVER_SCREEN CASE GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR CASE GGSM_SPRITE_LEVEL_SCREEN_CAVERN CASE GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL CASE GGSM_SPRITE_LEVEL_SCREEN_EARTH CASE GGSM_SPRITE_LEVEL_SCREEN_METEORS CASE GGSM_SPRITE_LEVEL_SCREEN_PINK CASE GGSM_SPRITE_LEVEL_SCREEN_DASH CASE GGSM_SPRITE_OPENING_TEXT_1 CASE GGSM_SPRITE_OPENING_TEXT_2 CASE GGSM_SPRITE_OPENING_TEXT_3 CASE GGSM_SPRITE_OPENING_TEXT_4 CASE GGSM_SPRITE_OPENING_TEXT_5 CASE GGSM_SPRITE_OPENING_TEXT_6 CASE GGSM_SPRITE_OPENING_TEXT_7 CASE GGSM_SPRITE_OPENING_TEXT_8 CASE GGSM_SPRITE_OPENING_TEXT_9 CASE GGSM_SPRITE_PRESS_START CASE GGSM_SPRITE_MONKEY_CONGRATS RETURN GGSM_TEXDICT_FRONTEND CASE GGSM_SPRITE_FACADE RETURN GGSM_TEXDICT_RESIDENT ENDSWITCH RETURN GGSM_TEXDICT_GAME ENDFUNC FUNC STRING GGSM_GET_SPRITE_DICT_NAME(GGSM_SPRITE_TYPE eSprite) RETURN GGSM_GET_TEXTURE_DICT(GGSM_GET_SPRITE_DICT(eSprite)) ENDFUNC FUNC BOOL GGSM_LOAD_TEXTURE_DICT_FOR_SPRITE(GGSM_SPRITE_TYPE eSprite) GGSM_TEXDICT eTexDict = GGSM_GET_SPRITE_DICT(eSprite) STRING str = GGSM_GET_TEXTURE_DICT(eTexDict) REQUEST_STREAMED_TEXTURE_DICT(str) IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED(str) CDEBUG1LN(DEBUG_MINIGAME, "[GGSM] GGSM_LOAD_TEXTURE_DICT_FOR_SPRITE - Loading ", str) RETURN FALSE ENDIF SET_BITMASK_ENUM_AS_ENUM(sGGSMData.eLoadedTextureFlags, eTexDict) CDEBUG1LN(DEBUG_MINIGAME, "[GGSM] GGSM_LOAD_TEXTURE_DICT_FOR_SPRITE - Loading ", str, " Complete") RETURN TRUE ENDFUNC /// PURPOSE: /// Gets sprite name from enum /// PARAMS: /// eSprite - /// iAnimFrame - /// RETURNS: /// FUNC STRING GGSM_GET_SPRITE_NAME(GGSM_SPRITE_TYPE eSprite, INT iAnimFrame = 0, BOOL bPained = FALSE, BOOL bBroken = FALSE) SWITCH (eSprite) CASE GGSM_SPRITE_ACID RETURN "ACID" CASE GGSM_SPRITE_ACID_BLUE RETURN "ACID_BLUE" CASE GGSM_SPRITE_BANANA_GREEN RETURN "BANANA_GREEN" CASE GGSM_SPRITE_BANANA_RED RETURN "BANANA_RED" CASE GGSM_SPRITE_BANANA_YELLOW RETURN "BANANA_YELLOW" CASE GGSM_SPRITE_BANANA_JETPAC_GREEN RETURN "BANANA_JETPAC_GREEN" CASE GGSM_SPRITE_BANANA_JETPAC_RED RETURN "BANANA_JETPAC_RED" CASE GGSM_SPRITE_BANANA_JETPAC_YELLOW RETURN "BANANA_JETPAC_YELLOW" CASE GGSM_SPRITE_BANANA_RED_ATTACK IF (iAnimFrame = 1) RETURN "BANANA_RED_ATTACK" ENDIF RETURN "BANANA_RED" CASE GGSM_SPRITE_BANANA_SLICE RETURN "BANANA_SLICE" CASE GGSM_SPRITE_BANANA_SLICE_BACK RETURN "BANANA_SLICE_BACK" CASE GGSM_SPRITE_BANANA_SLICE_FRONT RETURN "BANANA_SLICE_FRONT" CASE GGSM_SPRITE_BANDANA_RED RETURN "RED_BANDANA" CASE GGSM_SPRITE_BANDANA_GREEN RETURN "GREEN_BANDANA" CASE GGSM_SPRITE_BIG_SMOKE RETURN "BIG_SMOKE" CASE GGSM_SPRITE_BOMB_EXPLOSION IF (iAnimFrame = 0) RETURN "BOMB_EXPLOSION_ANIM_1" ELIF (iAnimFrame = 1) RETURN "BOMB_EXPLOSION_ANIM_2" ELIF (iAnimFrame = 2) RETURN "BOMB_EXPLOSION_ANIM_3" ELIF (iAnimFrame = 3) RETURN "BOMB_EXPLOSION_ANIM_4" ELIF (iAnimFrame = 4) RETURN "BOMB_EXPLOSION_ANIM_5" ENDIF RETURN "" CASE GGSM_SPRITE_CHERRY_BOMB RETURN "CHERRYBOMB" CASE GGSM_SPRITE_CIRCLE_SHIP_GREEN RETURN "CIRCLE_SHIP_GREEN" CASE GGSM_SPRITE_CIRCLE_SHIP_YELLOW RETURN "CIRCLE_SHIP" CASE GGSM_SPRITE_CIRCLE_SHIP_RED RETURN "CIRCLE_SHIP_RED" CASE GGSM_SPRITE_CRUMB_MEDIUM RETURN "CRUMB_MEDIUM" CASE GGSM_SPRITE_CRUMB_SMALL RETURN "CRUMB_SMALL" CASE GGSM_SPRITE_ENEMY_BULLET_BLUE RETURN "ENEMY_BULLET_BLUE" CASE GGSM_SPRITE_ENEMY_BULLET_PURPLE RETURN "ENEMY_BULLET_PURPLE" CASE GGSM_SPRITE_ENEMY_BULLET_RED RETURN "ENEMY_BULLET_RED" CASE GGSM_SPRITE_ENEMY_BULLET_YELLOW RETURN "ENEMY_BULLET_YELLOW" CASE GGSM_SPRITE_EXP_SHELL RETURN "EXP_SHELL" CASE GGSM_SPRITE_EXPLOSION IF (iAnimFrame = 0) RETURN "EXPLOSION_FRAME_1" ELIF (iAnimFrame = 1) RETURN "EXPLOSION_FRAME_2" ELIF (iAnimFrame = 2) RETURN "EXPLOSION_FRAME_3" ELIF (iAnimFrame = 3) RETURN "EXPLOSION_FRAME_4" ELIF (iAnimFrame = 4) RETURN "EXPLOSION_FRAME_5" ELIF (iAnimFrame = 5) RETURN "EXPLOSION_FRAME_6" ELIF (iAnimFrame = 6) RETURN "EXPLOSION_FRAME_7" ELIF (iAnimFrame = 7) RETURN "EXPLOSION_FRAME_8" ENDIF RETURN "" CASE GGSM_SPRITE_FLAME iAnimFrame = iAnimFrame % 3 IF (iAnimFrame = 0) RETURN "FLAME_1" ELIF (iAnimFrame = 1) RETURN "FLAME_2" ELIF (iAnimFrame = 2) RETURN "FLAME_3" ENDIF RETURN "FLAME_1" CASE GGSM_SPRITE_FRUITBOWL RETURN "FRUITBOWL" CASE GGSM_SPRITE_LIVES_REMAINING RETURN "LIVES_REMAINING" CASE GGSM_SPRITE_METEOR_BIG RETURN "METEOR_BIG" CASE GGSM_SPRITE_METEOR_MEDIUM RETURN "METEOR_MEDIUM" CASE GGSM_SPRITE_METEOR_SMALL RETURN "METEOR_SMALL" CASE GGSM_SPRITE_METEOR_VERY_BIG RETURN "METEOR_VERYBIG" CASE GGSM_SPRITE_METEOR_HUGE RETURN "METEOR_HUGE" CASE GGSM_SPRITE_MONKEY IF (iAnimFrame = 1) RETURN "MONKEY_TILT_UP" ELIF (iAnimFrame = 2) RETURN "MONKEY_TILT_DOWN" ENDIF RETURN "MONKEY" CASE GGSM_SPRITE_PEANUT_METEOR RETURN "PEANUT_METEOR" CASE GGSM_SPRITE_POWER_UP_BEAM RETURN "POWER_UP_BEAM" CASE GGSM_SPRITE_POWER_UP_FORWARD_BACK RETURN "POWER_UP_FORWARD_BACK" CASE GGSM_SPRITE_POWER_UP_BOLT RETURN "POWER_UP_BOLT" CASE GGSM_SPRITE_POWER_UP_DECOY RETURN "POWER_UP_DECOY" CASE GGSM_SPRITE_POWER_UP_DUALARCH RETURN "POWER_UP_DUEL_ARCH_BEAM" CASE GGSM_SPRITE_POWER_UP_EXPLOSION RETURN "POWER_UP_EXPLOSION" CASE GGSM_SPRITE_POWER_UP_EXTRALIFE RETURN "POWER_UP_EXTRA_LIFE" CASE GGSM_SPRITE_POWER_UP_HEALTH RETURN "POWER_UP_HEALTH" CASE GGSM_SPRITE_POWER_UP_NUKE RETURN "POWER_UP_NUKE" CASE GGSM_SPRITE_POWER_UP_REPULSE RETURN "POWER_UP_REPULSE" CASE GGSM_SPRITE_POWER_UP_ROCKET RETURN "POWER_UP_ROCKET" CASE GGSM_SPRITE_POWER_UP_SCATTER RETURN "POWER_UP_SCATTER" CASE GGSM_SPRITE_POWER_UP_SHIELD RETURN "POWER_UP_SHIELD" CASE GGSM_SPRITE_POWER_UP_STUN RETURN "POWER_UP_STUN" CASE GGSM_SPRITE_POWER_UP_WAVE RETURN "POWER_UP_WAVE" CASE GGSM_SPRITE_PROJ_BEAM_PURPLE RETURN "RAIL_GUN_FIRE_RED" CASE GGSM_SPRITE_RAIL_GUN_FIRE_BLUE RETURN "RAIL_GUN_FIRE_BLUE" CASE GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE RETURN "RAIL_GUN_FIRE_PURPLE" CASE GGSM_SPRITE_RAIL_GUN_FIRE_RED RETURN "RAIL_GUN_FIRE_RED" CASE GGSM_SPRITE_RAIL_GUN_FIRE_YELLOW RETURN "RAIL_GUN_FIRE_YELLOW" CASE GGSM_SPRITE_ROCKET RETURN "ROCKET" CASE GGSM_SPRITE_ROCKET_BLUE RETURN "ROCKET_BLUE" CASE GGSM_SPRITE_SHIELD RETURN "SHIELD" CASE GGSM_SPRITE_SHOT_LONG_BLUE RETURN "SHOT_BLUE_LONG" CASE GGSM_SPRITE_SHOT_LONG_PURPLE RETURN "SHOT_PURPLE_LONG" CASE GGSM_SPRITE_SHOT_LONG_RED RETURN "SHOT_RED_LONG" CASE GGSM_SPRITE_SHOT_LONG_YELLOW RETURN "SHOT_YELLOW_LONG" CASE GGSM_SPRITE_SHOT_ROUND_BLUE RETURN "SHOT_BLUE_ROUND" CASE GGSM_SPRITE_SHOT_ROUND_PURPLE RETURN "SHOT_PURPLE_ROUND" CASE GGSM_SPRITE_SHOT_ROUND_RED RETURN "SHOT_RED_ROUND" CASE GGSM_SPRITE_SHOT_ROUND_YELLOW RETURN "SHOT_YELLOW_ROUND" CASE GGSM_SPRITE_SMALL_SMOKE RETURN "SMALL_SMOKE" CASE GGSM_SPRITE_BOSS_BREAD IF (bPained) IF (iAnimFrame = 0) RETURN "BOSS_BREAD_1_NORMAL" ELIF (iAnimFrame = 1) RETURN "BOSS_BREAD_2_NORMAL" ELIF (iAnimFrame = 2) RETURN "BOSS_BREAD_3_NORMAL" ELIF (iAnimFrame = 3) RETURN "BOSS_BREAD_4_NORMAL" ELIF (iAnimFrame = 4) RETURN "BOSS_BREAD_5_NORMAL" ENDIF ELSE IF (iAnimFrame = 0) RETURN "BOSS_BREAD_1_PAINED" ELIF (iAnimFrame = 1) RETURN "BOSS_BREAD_2_PAINED" ELIF (iAnimFrame = 2) RETURN "BOSS_BREAD_3_PAINED" ELIF (iAnimFrame = 3) RETURN "BOSS_BREAD_4_PAINED" ELIF (iAnimFrame = 4) RETURN "BOSS_BREAD_5_PAINED" ENDIF ENDIF RETURN "BOSS_BREAD_1_NORMAL" CASE GGSM_SPRITE_BOSS_BREAD_EYEBROWS IF (iAnimFrame = 0) RETURN "EYEBROW_ANIM_1" ELIF (iAnimFrame = 1) RETURN "EYEBROW_ANIM_2" ELIF (iAnimFrame = 2) RETURN "EYEBROW_ANIM_3" ELIF (iAnimFrame = 3) RETURN "EYEBROW_ANIM_4" ENDIF RETURN "EYEBROW_ANIM_1" CASE GGSM_SPRITE_BOSS_BREAD_FACE IF (bPained) RETURN "BOSS_BREAD_YELLOW_PAINED" ENDIF RETURN "BOSS_BREAD_YELLOW" CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT RETURN "BOSS_BREAD_BOTTOM_LEFT" CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT RETURN "BOSS_BREAD_BOTTOM_RIGHT" CASE GGSM_SPRITE_BOSS_BREAD_TOP_LEFT RETURN "BOSS_BREAD_TOP_LEFT" CASE GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT RETURN "BOSS_BREAD_TOP_RIGHT" CASE GGSM_SPRITE_BOSS_BANANA_SPLIT IF (iAnimFrame = 0) RETURN "BANANA_SPLIT_1" ELIF (iAnimFrame = 1) RETURN "BANANA_SPLIT_2" ELIF (iAnimFrame = 2) RETURN "BANANA_SPLIT_3" ELIF (iAnimFrame = 3) RETURN "BANANA_SPLIT_4" ENDIF RETURN "" CASE GGSM_SPRITE_BOSS_DR_DANK_TOP IF (bBroken) RETURN "DR_DANK_TOP_BROKEN" ENDIF RETURN "DR_DANK_TOP" CASE GGSM_SPRITE_BOSS_DR_DANK_MIDDLE IF (bBroken) RETURN "DR_DANK_MIDDLE_BROKEN" ENDIF RETURN "DR_DANK_MIDDLE" CASE GGSM_SPRITE_BOSS_DR_DANK_BOTTOM IF (bBroken) RETURN "DR_DANK_BOTTOM_BROKEN" ENDIF IF (iAnimFrame = 0) RETURN "DR_DANK_BOTTOM" ELIF (iAnimFrame = 1) RETURN "DR_DANK_BOTTOM_2" ENDIF RETURN "DR_DANK_BOTTOM" CASE GGSM_SPRITE_BOSS_GRANANA IF (iAnimFrame = 0) RETURN "BOSS_GRANANA_ANIM1" ELIF (iAnimFrame = 1) RETURN "BOSS_GRANANA_ANIM2" ELIF (iAnimFrame = 2) RETURN "BOSS_GRANANA_ANIM3" ELIF (iAnimFrame = 3) RETURN "BOSS_GRANANA_ANIM4" ENDIF RETURN "BOSS_GRANANA_ANIM1" CASE GGSM_SPRITE_BOSS_GRANANA_GLASSES IF (iAnimFrame = 0) RETURN "BOSS_GRANANA_GLASSES_BLUE" ELIF (iAnimFrame = 1) RETURN "BOSS_GRANANA_GLASSES_RED" ELIF (iAnimFrame = 2) RETURN "BOSS_GRANANA_GLASSES_BLUE_CRACK" ELIF (iAnimFrame = 3) RETURN "BOSS_GRANANA_GLASSES_RED_CRACK" ENDIF RETURN "" CASE GGSM_SPRITE_BOSS_GRANANA_HAIR RETURN "BOSS_GRANANA_HAIR" CASE GGSM_SPRITE_BOSS_MARINE CASE GGSM_SPRITE_BOSS_MARINE_ALIEN IF (iAnimFrame = 0) RETURN "BOSS_MARINE_ANIM1" ELIF (iAnimFrame = 1) RETURN "BOSS_MARINE_ANIM2" ELIF (iAnimFrame = 2) RETURN "BOSS_MARINE_ANIM3" ELIF (iAnimFrame = 3) RETURN "BOSS_MARINE_ANIM4" ELIF (iAnimFrame = 4) RETURN "BOSS_ALIEN_ANIM1" ELIF (iAnimFrame = 5) RETURN "BOSS_ALIEN_ANIM2" ELIF (iAnimFrame = 6) RETURN "BOSS_ALIEN_ANIM3" ELIF (iAnimFrame = 7) RETURN "BOSS_ALIEN_ANIM4" ENDIF RETURN "" CASE GGSM_SPRITE_SMALL_SMOOTHIE CASE GGSM_SPRITE_BOSS_SMOOTHIE IF (bPained) RETURN "BOSS_SMOOTHIE_PAINED" ENDIF IF (iAnimFrame = 0) RETURN "BOSS_SMOOTHIE_ANIM1" ELIF (iAnimFrame = 1) RETURN "BOSS_SMOOTHIE_ANIM2" ELIF (iAnimFrame = 2) RETURN "BOSS_SMOOTHIE_ANIM3" ELIF (iAnimFrame = 3) RETURN "BOSS_SMOOTHIE_ANIM4" ENDIF RETURN "BOSS_SMOOTHIE_ANIM1" CASE GGSM_SPRITE_BOSS_TEXT RETURN "BOSS_TEXT" CASE GGSM_SPRITE_PIC_BREAD_MAIN RETURN "BREAD_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_DR_DANK_FAIL RETURN "DRDANK_PORTRAIT_FAIL_SCREEN" CASE GGSM_SPRITE_PIC_DR_DANK_MAIN RETURN "DRDANK_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_GRANANA_MAIN RETURN "GRANANA_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_MARINE_MAIN RETURN "MARINE_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_MONKEY_ASTEROID RETURN "MONKEY_PORTRAIT_ASTEROIDS" CASE GGSM_SPRITE_PIC_MONKEY_FAIL RETURN "MONKEY_PORTRAIT_FAIL_SCREEN" CASE GGSM_SPRITE_PIC_MONKEY_MAIN RETURN "MONKEY_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_SMOOTHIE_MAIN RETURN "SMOOTHIE_PORTRAIT_MAIN" CASE GGSM_SPRITE_PIC_BREAD_64 RETURN "BREAD_64" CASE GGSM_SPRITE_PIC_GRANANA_64 RETURN "GRANANA_64" CASE GGSM_SPRITE_PIC_SMOOTHIE_64 RETURN "SMOOTHIE_64" CASE GGSM_SPRITE_PIC_MARINE_64 RETURN "MARINE_64" CASE GGSM_SPRITE_PIC_DR_DANK_64 RETURN "DANK_64" CASE GGSM_SPRITE_HEALTH_BAR_BOSS RETURN "HEALTH_BAR_BOSS" CASE GGSM_SPRITE_HEALTH_BAR_MONKEY RETURN "HEALTH_BAR_MONKEY" CASE GGSM_SPRITE_HEALTH_BOX_BOSS RETURN "HEALTH_BOX_BOSS" CASE GGSM_SPRITE_HEALTH_BOX_MONKEY RETURN "HEALTH_BOX_MONKEY" CASE GGSM_SPRITE_WEAPON_BOX RETURN "WEAPON_BOX" CASE GGSM_SPRITE_BOX_LVL1_BOSS_FAIL RETURN "BOX_LEVEL1_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL1_BOSS_START RETURN "BOX_LEVEL1_BOSS_START" CASE GGSM_SPRITE_BOX_LVL1_BOSS_WIN RETURN "BOX_LEVEL1_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_START RETURN "BOX_LEVEL2_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL RETURN "BOX_LEVEL1_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_WIN RETURN "BOX_LEVEL1_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL2_BOSS_FAIL RETURN "BOX_LEVEL2_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL2_BOSS_START RETURN "BOX_LEVEL2_BOSS_START" CASE GGSM_SPRITE_BOX_LVL2_BOSS_WIN RETURN "BOX_LEVEL2_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL RETURN "BOX_LEVEL2_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_START RETURN "BOX_LEVEL2_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_WIN RETURN "BOX_LEVEL2_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL3_BOSS_FAIL RETURN "BOX_LEVEL3_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL3_BOSS_START RETURN "BOX_LEVEL3_BOSS_START" CASE GGSM_SPRITE_BOX_LVL3_BOSS_WIN RETURN "BOX_LEVEL3_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL RETURN "BOX_LEVEL3_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_START RETURN "BOX_LEVEL3_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_WIN RETURN "BOX_LEVEL3_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL4_BOSS_FAIL RETURN "BOX_LEVEL4_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL4_BOSS_START RETURN "BOX_LEVEL4_BOSS_START" CASE GGSM_SPRITE_BOX_LVL4_BOSS_WIN RETURN "BOX_LEVEL4_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL RETURN "BOX_LEVEL4_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_START RETURN "BOX_LEVEL4_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_WIN RETURN "BOX_LEVEL4_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL5_BOSS_FAIL RETURN "BOX_LEVEL5_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL5_BOSS_START RETURN "BOX_LEVEL5_BOSS_START" CASE GGSM_SPRITE_BOX_LVL5_BOSS_START2 RETURN "BOX_LEVEL5_BOSS_START2" CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN RETURN "BOX_LEVEL5_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN2 RETURN "BOX_LEVEL5_BOSS_WIN2" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL RETURN "BOX_LEVEL5_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START RETURN "BOX_LEVEL5_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START2 RETURN "BOX_LEVEL5_MONKEY_START2" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_WIN RETURN "BOX_LEVEL5_MONKEY_WIN" CASE GGSM_SPRITE_BOX_ASTEROID_LEAVING RETURN "ASTEROID_TEXT_LEAVING" CASE GGSM_SPRITE_BOX_ASTEROID_NEARING RETURN "ASTEROID_TEXT_NEARING" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS1 RETURN "FAIL_SCREEN_BOSS_1" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS2 RETURN "FAIL_SCREEN_BOSS_2" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS3 RETURN "FAIL_SCREEN_BOSS_3" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS4 RETURN "FAIL_SCREEN_BOSS_4" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS5 RETURN "FAIL_SCREEN_BOSS_5" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS6 RETURN "FAIL_SCREEN_BOSS_6" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1 RETURN "FAIL_SCREEN_MONKEY_1" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2 RETURN "FAIL_SCREEN_MONKEY_2" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3 RETURN "FAIL_SCREEN_MONKEY_3" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4 RETURN "FAIL_SCREEN_MONKEY_4" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5 RETURN "FAIL_SCREEN_MONKEY_5" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6 RETURN "FAIL_SCREEN_MONKEY_6" CASE GGSM_SPRITE_BG_LAYER_BREAD_PLANET RETURN "BREAD_PLANET" CASE GGSM_SPRITE_BG_LAYER_BOSS_PLANET RETURN "BOSS_PLANET" CASE GGSM_SPRITE_BG_LAYER_CRATERS RETURN "CRATERS" CASE GGSM_SPRITE_BG_LAYER_EARTH RETURN "EARTH_BG" CASE GGSM_SPRITE_BG_LAYER_PINK_PLANET RETURN "PINK_PLANET" CASE GGSM_SPRITE_BG_SPACE RETURN "SPACE_BG" CASE GGSM_SPRITE_BG_STARS RETURN "STARS_BG" CASE GGSM_SPRITE_BG_MAP RETURN "MAP_BACKGROUND" CASE GGSM_SPRITE_FACADE RETURN "FACADE" CASE GGSM_SPRITE_FBI_WARN RETURN "FIB_WARN" CASE GGSM_SPRITE_PSA RETURN "PSA_SCREEN" CASE GGSM_SPRITE_GAME_OVER_SCREEN RETURN "GAME_OVER_SCREEN" CASE GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR RETURN "LEVEL_SCREEN_BANANASTAR" CASE GGSM_SPRITE_LEVEL_SCREEN_CAVERN RETURN "LEVEL_SCREEN_CAVERN" CASE GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL RETURN "LEVEL_SCREEN_DOUGHBALL" CASE GGSM_SPRITE_LEVEL_SCREEN_EARTH RETURN "LEVEL_SCREEN_EARTH" CASE GGSM_SPRITE_LEVEL_SCREEN_METEORS RETURN "LEVEL_SCREEN_METEORS" CASE GGSM_SPRITE_LEVEL_SCREEN_PINK RETURN "LEVEL_SCREEN_PINK" CASE GGSM_SPRITE_LEVEL_SCREEN_DASH RETURN "DASHES" CASE GGSM_SPRITE_OPENING_TEXT_1 RETURN "OPENING_TEXT_LINE_1" CASE GGSM_SPRITE_OPENING_TEXT_2 RETURN "OPENING_TEXT_LINE_2" CASE GGSM_SPRITE_OPENING_TEXT_3 RETURN "OPENING_TEXT_LINE_3" CASE GGSM_SPRITE_OPENING_TEXT_4 RETURN "OPENING_TEXT_LINE_4" CASE GGSM_SPRITE_OPENING_TEXT_5 RETURN "OPENING_TEXT_LINE_5" CASE GGSM_SPRITE_OPENING_TEXT_6 RETURN "OPENING_TEXT_LINE_6" CASE GGSM_SPRITE_OPENING_TEXT_7 RETURN "OPENING_TEXT_LINE_7" CASE GGSM_SPRITE_OPENING_TEXT_8 RETURN "OPENING_TEXT_LINE_8" CASE GGSM_SPRITE_OPENING_TEXT_9 RETURN "OPENING_TEXT_LINE_9" CASE GGSM_SPRITE_MONKEY_CONGRATS RETURN "SPACE_MONKEY_BIG" CASE GGSM_SPRITE_PRESS_START RETURN "PRESS_START" ENDSWITCH RETURN "debugbox" UNUSED_PARAMETER(bPained) ENDFUNC /// PURPOSE: /// Gets sprite name from enum /// PARAMS: /// eSprite - /// iAnimFrame - /// RETURNS: /// FUNC VECTOR_2D GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_TYPE eSprite, INT iAnimFrame = 0) SWITCH (eSprite) CASE GGSM_SPRITE_ACID CASE GGSM_SPRITE_ACID_BLUE RETURN INIT_VECTOR_2D(32, 64) CASE GGSM_SPRITE_BANANA_GREEN CASE GGSM_SPRITE_BANANA_RED CASE GGSM_SPRITE_BANANA_YELLOW RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_BANANA_JETPAC_GREEN CASE GGSM_SPRITE_BANANA_JETPAC_RED CASE GGSM_SPRITE_BANANA_JETPAC_YELLOW RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_BANANA_RED_ATTACK RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_BANANA_SLICE RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_BANANA_SLICE_BACK RETURN INIT_VECTOR_2D(192, 192) CASE GGSM_SPRITE_BANANA_SLICE_FRONT RETURN INIT_VECTOR_2D(192, 192) CASE GGSM_SPRITE_BANDANA_RED CASE GGSM_SPRITE_BANDANA_GREEN RETURN INIT_VECTOR_2D(64, 128) CASE GGSM_SPRITE_BIG_SMOKE RETURN INIT_VECTOR_2D(80, 72) CASE GGSM_SPRITE_BOMB_EXPLOSION RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_BOSS_TEXT RETURN INIT_VECTOR_2D(84, 20) CASE GGSM_SPRITE_CHERRY_BOMB RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_CIRCLE_SHIP_RED CASE GGSM_SPRITE_CIRCLE_SHIP_YELLOW CASE GGSM_SPRITE_CIRCLE_SHIP_GREEN RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_CRUMB_MEDIUM RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_CRUMB_SMALL RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_ENEMY_BULLET_BLUE CASE GGSM_SPRITE_ENEMY_BULLET_PURPLE CASE GGSM_SPRITE_ENEMY_BULLET_RED CASE GGSM_SPRITE_ENEMY_BULLET_YELLOW RETURN INIT_VECTOR_2D(32, 32) CASE GGSM_SPRITE_EXP_SHELL RETURN INIT_VECTOR_2D(16, 32) CASE GGSM_SPRITE_EXPLOSION RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_FLAME RETURN INIT_VECTOR_2D(32, 16) CASE GGSM_SPRITE_FRUITBOWL RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_LIVES_REMAINING RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_METEOR_SMALL RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_METEOR_MEDIUM RETURN INIT_VECTOR_2D(160, 160) CASE GGSM_SPRITE_METEOR_BIG RETURN INIT_VECTOR_2D(200, 200) CASE GGSM_SPRITE_METEOR_VERY_BIG RETURN INIT_VECTOR_2D(250, 250) CASE GGSM_SPRITE_METEOR_HUGE RETURN INIT_VECTOR_2D(300, 300) CASE GGSM_SPRITE_MONKEY RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_PEANUT_METEOR RETURN INIT_VECTOR_2D(96, 96) CASE GGSM_SPRITE_POWER_UP_BEAM CASE GGSM_SPRITE_POWER_UP_FORWARD_BACK CASE GGSM_SPRITE_POWER_UP_BOLT CASE GGSM_SPRITE_POWER_UP_DECOY CASE GGSM_SPRITE_POWER_UP_DUALARCH CASE GGSM_SPRITE_POWER_UP_EXPLOSION CASE GGSM_SPRITE_POWER_UP_EXTRALIFE CASE GGSM_SPRITE_POWER_UP_HEALTH CASE GGSM_SPRITE_POWER_UP_NUKE CASE GGSM_SPRITE_POWER_UP_REPULSE CASE GGSM_SPRITE_POWER_UP_ROCKET CASE GGSM_SPRITE_POWER_UP_SCATTER CASE GGSM_SPRITE_POWER_UP_SHIELD CASE GGSM_SPRITE_POWER_UP_STUN CASE GGSM_SPRITE_POWER_UP_WAVE RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_RAIL_GUN_FIRE_BLUE CASE GGSM_SPRITE_RAIL_GUN_FIRE_RED CASE GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE CASE GGSM_SPRITE_RAIL_GUN_FIRE_YELLOW RETURN INIT_VECTOR_2D(48, 192) CASE GGSM_SPRITE_PROJ_BEAM_PURPLE RETURN INIT_VECTOR_2D(48, 192) CASE GGSM_SPRITE_ROCKET RETURN INIT_VECTOR_2D(32, 64) CASE GGSM_SPRITE_ROCKET_BLUE RETURN INIT_VECTOR_2D(32, 64) CASE GGSM_SPRITE_SHIELD RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_SHOT_LONG_BLUE CASE GGSM_SPRITE_SHOT_LONG_PURPLE CASE GGSM_SPRITE_SHOT_LONG_RED CASE GGSM_SPRITE_SHOT_LONG_YELLOW RETURN INIT_VECTOR_2D(16, 64) CASE GGSM_SPRITE_SHOT_ROUND_RED CASE GGSM_SPRITE_SHOT_ROUND_BLUE CASE GGSM_SPRITE_SHOT_ROUND_PURPLE CASE GGSM_SPRITE_SHOT_ROUND_YELLOW RETURN INIT_VECTOR_2D(32, 64) CASE GGSM_SPRITE_SMALL_SMOKE RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_SMALL_SMOOTHIE RETURN INIT_VECTOR_2D(113, 143) CASE GGSM_SPRITE_BOSS_BREAD_EYEBROWS RETURN INIT_VECTOR_2D(256, 128) CASE GGSM_SPRITE_BOSS_BREAD CASE GGSM_SPRITE_BOSS_BREAD_FACE CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT CASE GGSM_SPRITE_BOSS_BREAD_TOP_LEFT CASE GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT RETURN INIT_VECTOR_2D(512, 512) CASE GGSM_SPRITE_BOSS_BANANA_SPLIT RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_BOSS_MARINE RETURN INIT_VECTOR_2D(512, 1024) CASE GGSM_SPRITE_BOSS_DR_DANK_BOTTOM RETURN INIT_VECTOR_2D(512, 256) CASE GGSM_SPRITE_BOSS_DR_DANK_MIDDLE RETURN INIT_VECTOR_2D(512, 512) CASE GGSM_SPRITE_BOSS_DR_DANK_TOP RETURN INIT_VECTOR_2D(512, 512) CASE GGSM_SPRITE_BOSS_GRANANA RETURN INIT_VECTOR_2D(512, 512) CASE GGSM_SPRITE_BOSS_GRANANA_GLASSES RETURN INIT_VECTOR_2D(128, 64) CASE GGSM_SPRITE_BOSS_GRANANA_HAIR RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_BOSS_SMOOTHIE RETURN INIT_VECTOR_2D(512, 512) CASE GGSM_SPRITE_PIC_BREAD_MAIN CASE GGSM_SPRITE_PIC_DR_DANK_MAIN CASE GGSM_SPRITE_PIC_GRANANA_MAIN CASE GGSM_SPRITE_PIC_MARINE_MAIN CASE GGSM_SPRITE_PIC_MONKEY_MAIN CASE GGSM_SPRITE_PIC_SMOOTHIE_MAIN RETURN INIT_VECTOR_2D(256, 256) CASE GGSM_SPRITE_PIC_BREAD_64 CASE GGSM_SPRITE_PIC_GRANANA_64 CASE GGSM_SPRITE_PIC_SMOOTHIE_64 CASE GGSM_SPRITE_PIC_MARINE_64 CASE GGSM_SPRITE_PIC_DR_DANK_64 RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_PIC_MONKEY_ASTEROID CASE GGSM_SPRITE_PIC_DR_DANK_FAIL CASE GGSM_SPRITE_PIC_MONKEY_FAIL RETURN INIT_VECTOR_2D(128, 128) CASE GGSM_SPRITE_HEALTH_BAR_BOSS CASE GGSM_SPRITE_HEALTH_BAR_MONKEY RETURN INIT_VECTOR_2D(256, 32) CASE GGSM_SPRITE_HEALTH_BOX_BOSS CASE GGSM_SPRITE_HEALTH_BOX_MONKEY RETURN INIT_VECTOR_2D(256, 32) CASE GGSM_SPRITE_WEAPON_BOX RETURN INIT_VECTOR_2D(64, 64) CASE GGSM_SPRITE_BOX_LVL1_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL1_BOSS_START CASE GGSM_SPRITE_BOX_LVL1_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL1_MONKEY_START CASE GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL1_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL2_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL2_BOSS_START CASE GGSM_SPRITE_BOX_LVL2_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL2_MONKEY_START CASE GGSM_SPRITE_BOX_LVL2_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL3_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL3_BOSS_START CASE GGSM_SPRITE_BOX_LVL3_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL3_MONKEY_START CASE GGSM_SPRITE_BOX_LVL3_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL4_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL4_BOSS_START CASE GGSM_SPRITE_BOX_LVL4_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL4_MONKEY_START CASE GGSM_SPRITE_BOX_LVL4_MONKEY_WIN CASE GGSM_SPRITE_BOX_LVL5_BOSS_FAIL CASE GGSM_SPRITE_BOX_LVL5_BOSS_START CASE GGSM_SPRITE_BOX_LVL5_BOSS_START2 CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN2 CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START2 CASE GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL CASE GGSM_SPRITE_BOX_LVL5_MONKEY_WIN RETURN INIT_VECTOR_2D(1024, 128) CASE GGSM_SPRITE_BOX_ASTEROID_NEARING CASE GGSM_SPRITE_BOX_ASTEROID_LEAVING CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS1 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS2 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS3 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS4 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS5 CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS6 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5 CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6 RETURN INIT_VECTOR_2D(512, 128) CASE GGSM_SPRITE_BG_LAYER_BREAD_PLANET CASE GGSM_SPRITE_BG_LAYER_BOSS_PLANET CASE GGSM_SPRITE_BG_LAYER_CRATERS CASE GGSM_SPRITE_BG_LAYER_EARTH CASE GGSM_SPRITE_BG_LAYER_PINK_PLANET RETURN INIT_VECTOR_2D(512, 256) CASE GGSM_SPRITE_BG_SPACE RETURN INIT_VECTOR_2D(1024, 1024) CASE GGSM_SPRITE_BG_STARS RETURN INIT_VECTOR_2D(1264, 930) CASE GGSM_SPRITE_BG_MAP RETURN INIT_VECTOR_2D(1500, 1000) CASE GGSM_SPRITE_FACADE RETURN INIT_VECTOR_2D(2048, 1080) CASE GGSM_SPRITE_FBI_WARN RETURN INIT_VECTOR_2D(1024, 1024) CASE GGSM_SPRITE_PSA RETURN INIT_VECTOR_2D(1024, 1024) CASE GGSM_SPRITE_GAME_OVER_SCREEN RETURN INIT_VECTOR_2D(1264, 132) CASE GGSM_SPRITE_LEVEL_SCREEN_DASH RETURN INIT_VECTOR_2D(16.0, 128.0) CASE GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR CASE GGSM_SPRITE_LEVEL_SCREEN_CAVERN CASE GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL CASE GGSM_SPRITE_LEVEL_SCREEN_EARTH CASE GGSM_SPRITE_LEVEL_SCREEN_METEORS CASE GGSM_SPRITE_LEVEL_SCREEN_PINK RETURN INIT_VECTOR_2D(384.0, 384.0) CASE GGSM_SPRITE_OPENING_TEXT_1 CASE GGSM_SPRITE_OPENING_TEXT_2 CASE GGSM_SPRITE_OPENING_TEXT_3 CASE GGSM_SPRITE_OPENING_TEXT_4 CASE GGSM_SPRITE_OPENING_TEXT_5 CASE GGSM_SPRITE_OPENING_TEXT_6 CASE GGSM_SPRITE_OPENING_TEXT_7 CASE GGSM_SPRITE_OPENING_TEXT_8 CASE GGSM_SPRITE_OPENING_TEXT_9 RETURN INIT_VECTOR_2D(1024.0, 32.0) CASE GGSM_SPRITE_PRESS_START RETURN INIT_VECTOR_2D(512.0, 32.0) CASE GGSM_SPRITE_MONKEY_CONGRATS RETURN INIT_VECTOR_2D(256.0, 256.0) ENDSWITCH RETURN INIT_VECTOR_2D(64, 64) UNUSED_PARAMETER(iAnimFrame) ENDFUNC FUNC FLOAT GGSM_GET_DOMINANT_SPRITE_SIZE(GGSM_SPRITE_TYPE spr) VECTOR_2D size = GGSM_GET_SPRITE_SIZE(spr) RETURN FMAX(size.x, size.y) ENDFUNC FUNC VECTOR_2D GGSM_GET_SPRITE_BG_LAYER_SIZE_FOR_STAGE(INT iStage) SWITCH (iStage) CASE GGSM_SECTOR_EARTH RETURN GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_BG_LAYER_EARTH) CASE GGSM_SECTOR_ASTEROID_BELT RETURN INIT_VECTOR_2D(0, 0) CASE GGSM_SECTOR_PINK_RING RETURN GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_BG_LAYER_PINK_PLANET) CASE GGSM_SECTOR_YELLOW_CLAM RETURN INIT_VECTOR_2D(0, 0) // RETURN GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_BG_LAYER_CRATERS) CASE GGSM_SECTOR_DOUGHBALL RETURN GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_BG_LAYER_BREAD_PLANET) CASE GGSM_SECTOR_BANANASTAR RETURN GGSM_GET_SPRITE_SIZE(GGSM_SPRITE_BG_LAYER_BOSS_PLANET) ENDSWITCH RETURN INIT_VECTOR_2D(0, 0) ENDFUNC FUNC STRING GGSM_GET_SPRITE_BG_LAYER_NAME_FOR_STAGE(INT iStage) SWITCH (iStage) CASE GGSM_SECTOR_EARTH RETURN GGSM_GET_SPRITE_NAME(GGSM_SPRITE_BG_LAYER_EARTH) CASE GGSM_SECTOR_ASTEROID_BELT RETURN "" CASE GGSM_SECTOR_PINK_RING RETURN GGSM_GET_SPRITE_NAME(GGSM_SPRITE_BG_LAYER_PINK_PLANET) CASE GGSM_SECTOR_YELLOW_CLAM RETURN "" // RETURN GGSM_GET_SPRITE_NAME(GGSM_SPRITE_BG_LAYER_CRATERS) CASE GGSM_SECTOR_DOUGHBALL RETURN GGSM_GET_SPRITE_NAME(GGSM_SPRITE_BG_LAYER_BREAD_PLANET) CASE GGSM_SECTOR_BANANASTAR RETURN GGSM_GET_SPRITE_NAME(GGSM_SPRITE_BG_LAYER_BOSS_PLANET) ENDSWITCH RETURN "" ENDFUNC FUNC BOOL GGSM_GET_SPRITE_ANIM_DATA(GGSM_SPRITE_ANIM eAnim, GGSM_SPRITE_ANIM_DATA &data) data.eSound = ARCADE_GAMES_SOUND_END SWITCH (eAnim) CASE GGSM_SPRITE_ANIM_DANK_CANNON data.eSprite = GGSM_SPRITE_BOSS_DR_DANK_BOTTOM data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 1.0 data.fAnimTime = 0.0625 BREAK CASE GGSM_SPRITE_ANIM_EXPLOSION data.eSprite = GGSM_SPRITE_EXPLOSION data.eSound = ARCADE_GAMES_SOUND_GGSM_EXP_ENEMY_DESTROYED data.eAnimFlags = GGSM_ANIM_BIT_NONE SET_BITMASK_ENUM_AS_ENUM(data.eAnimFlags, GGSM_ANIM_BIT_DESTROY_AT_END) data.fStartFrame = 0.0 data.fEndFrame = 7.0 data.fAnimTime = 0.5 BREAK CASE GGSM_SPRITE_ANIM_BOMB_EXPLOSION data.eSprite = GGSM_SPRITE_BOMB_EXPLOSION data.eAnimFlags = GGSM_ANIM_BIT_NONE SET_BITMASK_ENUM_AS_ENUM(data.eAnimFlags, GGSM_ANIM_BIT_DESTROY_AT_END) data.fStartFrame = 0.0 data.fEndFrame = 4.0 data.fAnimTime = 0.25 BREAK CASE GGSM_SPRITE_ANIM_GRANANA data.eSprite = GGSM_SPRITE_BOSS_GRANANA data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 3.0 data.fAnimTime = 0.5 BREAK CASE GGSM_SPRITE_ANIM_MARINE data.eSprite = GGSM_SPRITE_BOSS_MARINE data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 3.0 data.fAnimTime = 0.25 BREAK CASE GGSM_SPRITE_ANIM_MARINE_ALIEN data.eSprite = GGSM_SPRITE_BOSS_MARINE data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 4.0 data.fEndFrame = 7.0 data.fAnimTime = 0.25 BREAK CASE GGSM_SPRITE_ANIM_PLYR_EXPLOSION data.eSprite = GGSM_SPRITE_EXPLOSION data.eSound = ARCADE_GAMES_SOUND_GGSM_EXP_PLAYER_DESTROYED data.eAnimFlags = GGSM_ANIM_BIT_NONE SET_BITMASK_ENUM_AS_ENUM(data.eAnimFlags, GGSM_ANIM_BIT_DESTROY_AT_END) data.fStartFrame = 0.0 data.fEndFrame = 7.0 data.fAnimTime = 0.5 BREAK CASE GGSM_SPRITE_ANIM_SMOOTHIE data.eSprite = GGSM_SPRITE_BOSS_SMOOTHIE data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 3.0 data.fAnimTime = 0.25 BREAK CASE GGSM_SPRITE_ANIM_SMALL_SMOOTHIE data.eSprite = GGSM_SPRITE_SMALL_SMOOTHIE data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 3.0 data.fAnimTime = 0.25 BREAK CASE GGSM_SPRITE_ANIM_GRAN_GLASS data.eSprite = GGSM_SPRITE_BOSS_GRANANA_GLASSES data.eSound = ARCADE_GAMES_SOUND_GGSM_BOSS_GRAN_ATTACK_EYE_LASER_CHARGE_LOOP data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 1.0 data.fAnimTime = 0.025 BREAK CASE GGSM_SPRITE_ANIM_GRAN_GLASSCRACK data.eSprite = GGSM_SPRITE_BOSS_GRANANA_GLASSES data.eSound = ARCADE_GAMES_SOUND_GGSM_BOSS_GRAN_ATTACK_EYE_LASER_CHARGE_LOOP data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 2.0 data.fEndFrame = 3.0 data.fAnimTime = 0.0125 BREAK CASE GGSM_SPRITE_ANIM_BREAD_EYEBROWS data.eSprite = GGSM_SPRITE_BOSS_BREAD_EYEBROWS data.eAnimFlags = GGSM_ANIM_BIT_LOOP data.fStartFrame = 0.0 data.fEndFrame = 3.0 data.fAnimTime = 0.1 BREAK DEFAULT RETURN FALSE ENDSWITCH data.fFrameRange = data.fEndFrame - data.fStartFrame RETURN TRUE ENDFUNC //------------------------------------------------- // SECTOR MAP FUNCTIONS //------------------------------------------------- FUNC VECTOR_2D GGSM_GET_SPRITE_POSITION_FOR_STAGE_MAP(INT iStage) SWITCH (iStage) CASE 0 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X, GGSM_PX_SECTOR_MAP_MIN_Y) CASE 1 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X, GGSM_PX_SECTOR_MAP_MIN_Y + GGSM_PX_SECTOR_MAP_Y_SPREAD) CASE 2 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X + GGSM_PX_SECTOR_MAP_X_SPREAD, GGSM_PX_SECTOR_MAP_MIN_Y + GGSM_PX_SECTOR_MAP_Y_SPREAD) CASE 3 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X + GGSM_PX_SECTOR_MAP_X_SPREAD, GGSM_PX_SECTOR_MAP_MIN_Y) CASE 4 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X + (GGSM_PX_SECTOR_MAP_X_SPREAD * 2), GGSM_PX_SECTOR_MAP_MIN_Y) CASE 5 RETURN INIT_VECTOR_2D(GGSM_PX_SECTOR_MAP_MIN_X + (GGSM_PX_SECTOR_MAP_X_SPREAD * 2), GGSM_PX_SECTOR_MAP_MIN_Y + GGSM_PX_SECTOR_MAP_Y_SPREAD) ENDSWITCH RETURN INIT_VECTOR_2D(cfBASE_SCREEN_HALF_WIDTH, cfBASE_SCREEN_HALF_HEIGHT) ENDFUNC FUNC VECTOR_2D GGSM_GET_SPRITE_DASH_POSITION_FOR_STAGE_MAP(INT iStage) VECTOR_2D v1, v2 IF (iStage = 0) OR (iStage > 5) RETURN INIT_VECTOR_2D(0, 0) ENDIF v1 = GGSM_GET_SPRITE_POSITION_FOR_STAGE_MAP(iStage - 1) v2 = GGSM_GET_SPRITE_POSITION_FOR_STAGE_MAP(iStage) RETURN LERP_VECTOR_2D(v1, v2, 0.5) ENDFUNC FUNC FLOAT GGSM_GET_SPRITE_DASH_ROTATION_FOR_STAGE_MAP(INT iStage) IF (iStage % 2 = 0) RETURN 90.0 ENDIF RETURN 0.0 ENDFUNC FUNC BOOL GGSM_IS_SPRITE_DASH_HORIZONTAL_FOR_STAGE_MAP(INT iStage) IF (iStage % 2 = 0) RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Gets sprite name from enum /// PARAMS: /// iStage /// RETURNS: /// FUNC STRING GGSM_GET_SPRITE_NAME_FOR_STAGE_MAP(INT iStage) // we assume that everything lives in the common directory unless stated SWITCH (iStage) CASE GGSM_SECTOR_EARTH RETURN "LEVEL_SCREEN_EARTH" CASE GGSM_SECTOR_ASTEROID_BELT RETURN "LEVEL_SCREEN_METEORS" CASE GGSM_SECTOR_PINK_RING RETURN "LEVEL_SCREEN_PINK" CASE GGSM_SECTOR_YELLOW_CLAM RETURN "LEVEL_SCREEN_CAVERN" CASE GGSM_SECTOR_DOUGHBALL RETURN "LEVEL_SCREEN_DOUGHBALL" CASE GGSM_SECTOR_BANANASTAR RETURN "LEVEL_SCREEN_BANANASTAR" ENDSWITCH RETURN "" ENDFUNC FUNC VECTOR_2D GGSM_GET_SPRITE_SIZE_FOR_STAGE_MAP(INT iStage) // we assume that everything lives in the common directory unless stated SWITCH (iStage) CASE GGSM_SECTOR_EARTH //RETURN INIT_VECTOR_2D(148.0, 140.0) CASE GGSM_SECTOR_ASTEROID_BELT //RETURN INIT_VECTOR_2D(160.0, 140.0) CASE GGSM_SECTOR_PINK_RING //RETURN INIT_VECTOR_2D(168.0, 140.0) CASE GGSM_SECTOR_YELLOW_CLAM //RETURN INIT_VECTOR_2D(140.0, 140.0) CASE GGSM_SECTOR_DOUGHBALL //RETURN INIT_VECTOR_2D(192.0, 160.0) CASE GGSM_SECTOR_BANANASTAR //RETURN INIT_VECTOR_2D(156.0, 156.0) RETURN INIT_VECTOR_2D(256.0, 256.0) ENDSWITCH RETURN INIT_VECTOR_2D(0.0, 0.0) ENDFUNC FUNC VECTOR_2D GGSM_GET_TEXT_POSITION_FOR_STAGE_MAP(INT iStage) // we assume that everything lives in the common directory unless stated VECTOR_2D pos = GGSM_GET_SPRITE_POSITION_FOR_STAGE_MAP(iStage) SWITCH (iStage) CASE 0 CASE 3 CASE 4 pos.y -= 150.0 BREAK DEFAULT pos.y += 150.0 BREAK ENDSWITCH RETURN pos ENDFUNC //------------------------------------------------- // ENTITY DATA //------------------------------------------------- FUNC BOOL GGSM_ENTITY_TYPE_IS_PLAYER_ALLIED(GGSM_ENTITY_TYPE eType) IF (eType = GGSM_ENTITY_PLAYERSHIP) RETURN TRUE ENDIF IF (eType = GGSM_ENTITY_PLAYERDECOY) RETURN TRUE ENDIF RETURN (eType = GGSM_ENTITY_PLAYERSHIELD) ENDFUNC FUNC GGSM_ENTITY_DATA GGSM_ENTITY_DATA_INIT(GGSM_ENTITY_TYPE eType) GGSM_ENTITY_DATA data data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_ENEMY_DESTROYED data.sGunPos.fRotation = 90.0 // we generally assume most enemies come from the right data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_ENEMY_DAMAGED data.fTotalExplodeTime = 0.0 data.fExplodeDelay = 0.125 data.iMaxHP = GGSM_BASE_ENEMY_HP GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, 0), INIT_VECTOR_2D(0, 0), 20) SWITCH (eType) CASE GGSM_ENTITY_PLAYERSHIP data.eSpriteType = GGSM_SPRITE_MONKEY data.fBaseSpeed = 540.0 data.iMaxHP = GGSM_MAX_PLAYER_HP data.fTotalExplodeTime = GGSM_PLAYER_EXPLOSION_TIME data.sGunPos.vPosition = INIT_VECTOR_2D(28, 15) data.sGunPos.fRotation = 270.0 data.eWeaponType = GGSM_WEAPON_PLYRVULCAN data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_PLAYER_DAMAGED data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_PLAYER_DESTROYED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-3, -10), INIT_VECTOR_2D(-3, 1), 10) BREAK CASE GGSM_ENTITY_PLAYERDECOY data.eSpriteType = GGSM_SPRITE_MONKEY data.fBaseSpeed = 540.0 data.iMaxHP = 999 data.sGunPos.vPosition = INIT_VECTOR_2D(28, 15) data.sGunPos.fRotation = 270.0 data.eWeaponType = GGSM_WEAPON_NONE data.eDamageSound = ARCADE_GAMES_SOUND_END data.eDieSound = ARCADE_GAMES_SOUND_GGSM_ABIL_PLAYER_DEACTIVATE_DECOY GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-3, -19), INIT_VECTOR_2D(-3, 18), 18) BREAK CASE GGSM_ENTITY_PLAYERSHIELD data.eSpriteType = GGSM_SPRITE_SHIELD data.fBaseSpeed = 0.0 data.iMaxHP = 3 data.eDieSound = ARCADE_GAMES_SOUND_END GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 60) BREAK CASE GGSM_ENTITY_BANDANA_GREEN data.eSpriteType = GGSM_SPRITE_BANDANA_GREEN data.fBaseSpeed = 400.0 data.sGunPos.vPosition = INIT_VECTOR_2D(-24, 2) data.eWeaponType = GGSM_WEAPON_ENEMYSHOT data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_BANANA_ASTRONAUT data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_BANANA_ASTRONAUT GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, -30), INIT_VECTOR_2D(-0, 28), 20) BREAK CASE GGSM_ENTITY_BANDANA_RED data.eSpriteType = GGSM_SPRITE_BANDANA_RED data.fBaseSpeed = 600.0 data.sGunPos.vPosition = INIT_VECTOR_2D(-24, 2) data.eWeaponType = GGSM_WEAPON_ENEMYVULCAN data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_BANANA_ASTRONAUT data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_BANANA_ASTRONAUT GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, -30), INIT_VECTOR_2D(-0, 28), 20) BREAK CASE GGSM_ENTITY_BANANAGREEN data.eSpriteType = GGSM_SPRITE_BANANA_GREEN data.fBaseSpeed = 400.0 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(2, -4), 42) BREAK CASE GGSM_ENTITY_BANANAYELLOW data.eSpriteType = GGSM_SPRITE_BANANA_YELLOW data.fBaseSpeed = 500.0 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(2, -4), 42) BREAK CASE GGSM_ENTITY_BANANARED data.eSpriteType = GGSM_SPRITE_BANANA_RED data.fBaseSpeed = 500.0 data.iMaxHP = 1 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(2, -4), 42) BREAK CASE GGSM_ENTITY_BANANARED_ATTACK data.eSpriteType = GGSM_SPRITE_BANANA_RED_ATTACK data.fBaseSpeed = 450.0 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(2, -4), 42) BREAK CASE GGSM_ENTITY_BANANAJETPAC data.eSpriteType = GGSM_SPRITE_BANANA_JETPAC_YELLOW data.fBaseSpeed = 500.0 data.sGunPos.vPosition = INIT_VECTOR_2D(-22, 15) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_BANANA_ASTRONAUT data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_BANANA_ASTRONAUT GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, -21), INIT_VECTOR_2D(-3, 24), 23) BREAK CASE GGSM_ENTITY_BANANAJETPAC_RED data.eSpriteType = GGSM_SPRITE_BANANA_JETPAC_RED data.fBaseSpeed = 500.0 data.eWeaponType = GGSM_WEAPON_ENEMYVULCAN data.sGunPos.vPosition = INIT_VECTOR_2D(-22, 15) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_BANANA_ASTRONAUT data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_BANANA_ASTRONAUT GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, -21), INIT_VECTOR_2D(-3, 24), 23) BREAK CASE GGSM_ENTITY_BANANAJETPAC_GREEN data.eSpriteType = GGSM_SPRITE_BANANA_JETPAC_GREEN data.fBaseSpeed = 500.0 data.eWeaponType = GGSM_WEAPON_ENEMYSHOT data.sGunPos.vPosition = INIT_VECTOR_2D(-22, 15) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_BANANA_ASTRONAUT data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_BANANA_ASTRONAUT GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, -21), INIT_VECTOR_2D(-3, 24), 23) BREAK CASE GGSM_ENTITY_CHERRYBOMB data.eSpriteType = GGSM_SPRITE_CHERRY_BOMB data.fBaseSpeed = 500.0 data.iMaxHP = 3 data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_SMOOTHIE_EXP_APPLE GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 8), 30) BREAK CASE GGSM_ENTITY_CIRCLE_SHIP_RED data.eSpriteType = GGSM_SPRITE_CIRCLE_SHIP_RED data.fBaseSpeed = 750.0 data.iMaxHP = 1 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_UFO data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_UFO GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 32) BREAK CASE GGSM_ENTITY_CIRCLE_SHIP_YELLOW data.eSpriteType = GGSM_SPRITE_CIRCLE_SHIP_YELLOW data.fBaseSpeed = 600.0 data.iMaxHP = 1 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_UFO data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_UFO GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 32) BREAK CASE GGSM_ENTITY_CIRCLE_SHIP_GREEN data.eSpriteType = GGSM_SPRITE_CIRCLE_SHIP_GREEN data.fBaseSpeed = 500.0 data.iMaxHP = 1 data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_UFO data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_UFO GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 32) BREAK CASE GGSM_ENTITY_ARMOUR_FRUITBOWL data.eSpriteType = GGSM_SPRITE_FRUITBOWL data.fBaseSpeed = 200.0 data.iMaxHP = 25 data.eWeaponType = GGSM_WEAPON_ENEMYCLUSTERBOMB data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.vExplodeVelocity = INIT_VECTOR_2D(0.0, 1.0) GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(-6, 0), 48) BREAK CASE GGSM_ENTITY_FRUITBOWL data.eSpriteType = GGSM_SPRITE_FRUITBOWL data.fBaseSpeed = 400.0 data.sGunPos.vPosition = INIT_VECTOR_2D(-48, 25) data.eWeaponType = GGSM_WEAPON_FRUITBOWL data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_DAMAGE_SPACESHIP data.eDieSound = ARCADE_GAMES_SOUND_GGSM_EXP_SPACESHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(-6, 0), 48) BREAK CASE GGSM_ENTITY_CRUMB_METEOR data.eSpriteType = GGSM_SPRITE_CRUMB_MEDIUM data.fBaseSpeed = 400.0 data.iMaxHP = 3 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 32) BREAK CASE GGSM_ENTITY_METEOR_HUGE data.eSpriteType = GGSM_SPRITE_METEOR_HUGE data.fBaseSpeed = 200.0 data.iMaxHP = 5 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 72) BREAK CASE GGSM_ENTITY_METEOR_VERY_BIG data.eSpriteType = GGSM_SPRITE_METEOR_VERY_BIG data.fBaseSpeed = 200.0 data.iMaxHP = 5 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 72) BREAK CASE GGSM_ENTITY_METEOR_BIG data.eSpriteType = GGSM_SPRITE_METEOR_BIG data.fBaseSpeed = 200.0 data.iMaxHP = 5 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 72) BREAK CASE GGSM_ENTITY_METEOR_MEDIUM data.eSpriteType = GGSM_SPRITE_METEOR_MEDIUM data.fBaseSpeed = 400.0 data.iMaxHP = 3 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 48) BREAK CASE GGSM_ENTITY_METEOR_SMALL data.eSpriteType = GGSM_SPRITE_METEOR_SMALL data.fBaseSpeed = 800.0 GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 20) BREAK CASE GGSM_ENTITY_PEANUT_METEOR data.eSpriteType = GGSM_SPRITE_PEANUT_METEOR data.fBaseSpeed = 900.0 data.iMaxHP = 3 GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-13, -18), INIT_VECTOR_2D(13, 12), 23) BREAK CASE GGSM_ENTITY_SMALL_SMOOTHIE data.eSpriteType = GGSM_SPRITE_SMALL_SMOOTHIE data.fBaseSpeed = 400.0 data.iMaxHP = 2 BREAK CASE GGSM_ENTITY_BANANASLICE_FRONT data.eSpriteType = GGSM_SPRITE_BANANA_SLICE_FRONT data.fBaseSpeed = 500.0 data.iMaxHP = 25 data.sGunPos.vPosition = INIT_VECTOR_2D(-44, 30) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-15, 7), INIT_VECTOR_2D(20, -13), 41) BREAK CASE GGSM_ENTITY_BANANASLICE data.eSpriteType = GGSM_SPRITE_BANANA_SLICE data.fBaseSpeed = 400.0 data.iMaxHP = 5 data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, 11), INIT_VECTOR_2D(0, -14), 28) BREAK CASE GGSM_ENTITY_BANANASLICE_BACK data.eSpriteType = GGSM_SPRITE_BANANA_SLICE_BACK data.fBaseSpeed = 400.0 data.iMaxHP = 8 data.fSpriteRotationFix = -90.0 data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-32, -12), INIT_VECTOR_2D(23, 11), 36) BREAK CASE GGSM_ENTITY_BANANASPLIT_1 data.eSpriteType = GGSM_SPRITE_BOSS_BANANA_SPLIT data.fBaseSpeed = 700.0 data.iMaxHP = 8 data.sGunPos.vPosition = INIT_VECTOR_2D(-15, 27) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(9, 22), INIT_VECTOR_2D(-13, -23), 36) BREAK CASE GGSM_ENTITY_BANANASPLIT_2 data.eSpriteType = GGSM_SPRITE_BOSS_BANANA_SPLIT data.iDefaultAnimFrame = 1 data.fBaseSpeed = 700.0 data.iMaxHP = 3 data.sGunPos.vPosition = INIT_VECTOR_2D(-14, 9) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(10, 0), 45) BREAK CASE GGSM_ENTITY_BANANASPLIT_3 data.eSpriteType = GGSM_SPRITE_BOSS_BANANA_SPLIT data.iDefaultAnimFrame = 2 data.fBaseSpeed = 700.0 data.iMaxHP = 3 data.sGunPos.vPosition = INIT_VECTOR_2D(-18, 19) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(10, 13), INIT_VECTOR_2D(9, -17), 36) BREAK CASE GGSM_ENTITY_BANANASPLIT_4 data.eSpriteType = GGSM_SPRITE_BOSS_BANANA_SPLIT data.iDefaultAnimFrame = 3 data.fBaseSpeed = 700.0 data.iMaxHP = 3 data.sGunPos.vPosition = INIT_VECTOR_2D(-34, 2) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-9, 8), INIT_VECTOR_2D(-9, -26), 36) BREAK CASE GGSM_ENTITY_BOSS_SMOOTHIE data.eSpriteType = GGSM_SPRITE_BOSS_SMOOTHIE data.fBaseSpeed = 200.0 data.fTotalExplodeTime = GGSM_BOSS_EXPLOSION_TIME data.iMaxHP = 125 data.sGunPos.vPosition = INIT_VECTOR_2D(-142, 62) data.eWeaponType = GGSM_WEAPON_SMOOTHIESPREAD data.iPackedDefaultLocation = GGSM_PACK_VECTOR_2D_TO_INT_EXPLICIT(1300, 540) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_SMOOTHIE_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_SMOOTHIE_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(12, -84), INIT_VECTOR_2D(13, 71), 95) BREAK CASE GGSM_ENTITY_BOSS_MARINE data.eSpriteType = GGSM_SPRITE_BOSS_MARINE data.fBaseSpeed = 140.0 data.iMaxHP = 260 data.fTotalExplodeTime = GGSM_BOSS_EXPLOSION_TIME data.sGunPos.vPosition = INIT_VECTOR_2D(-170, 7) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(29, 145), INIT_VECTOR_2D(9, -176), 100) BREAK CASE GGSM_ENTITY_BOSS_GRANANA data.eSpriteType = GGSM_SPRITE_BOSS_GRANANA data.fBaseSpeed = 140.0 data.iMaxHP = 310 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, -57) data.fTotalExplodeTime = GGSM_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_GRAN_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_GRAN_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-1, -83), INIT_VECTOR_2D(-23, 124), 55) BREAK CASE GGSM_ENTITY_BOSS_BREAD_FACE data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_FACE data.fBaseSpeed = 300.0 data.iMaxHP = 120 data.sGunPos.vPosition = INIT_VECTOR_2D(-58, 70) data.fTotalExplodeTime = GGSM_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-38, 76), INIT_VECTOR_2D(-38, -67), 78) BREAK CASE GGSM_ENTITY_BOSS_DR_DANK_TOP data.eSpriteType = GGSM_SPRITE_BOSS_DR_DANK_TOP data.fBaseSpeed = 140.0 data.iMaxHP = 200 data.eWeaponType = GGSM_WEAPON_DANK_SCATTER data.fTotalExplodeTime = GGSM_UBER_BOSS_EXPLOSION_TIME data.sGunPos.vPosition = INIT_VECTOR_2D(-181, -130) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-106, -120), INIT_VECTOR_2D(60, 124), 55) BREAK CASE GGSM_ENTITY_BOSS_BREAD_EYEBROWS data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_EYEBROWS data.fBaseSpeed = 140.0 data.iMaxHP = 0 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, -57) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-89, 0), INIT_VECTOR_2D(88, 0), 20) BREAK CASE GGSM_ENTITY_BOSS_BREAD_TOP_LEFT data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_TOP_LEFT data.fBaseSpeed = 500.0 data.iMaxHP = 20 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, -57) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_CHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(-112, -110), 80) BREAK CASE GGSM_ENTITY_BOSS_BREAD_TOP_RIGHT data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT data.fBaseSpeed = 500.0 data.iMaxHP = 20 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, -57) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_CHIP GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-5, -53), INIT_VECTOR_2D(96, -83), 95) BREAK CASE GGSM_ENTITY_BOSS_BREAD_BOTTOM_LEFT data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT data.fBaseSpeed = 500.0 data.iMaxHP = 20 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, 136) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_CHIP GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-95, 23), INIT_VECTOR_2D(-73, 82), 85) BREAK CASE GGSM_ENTITY_BOSS_BREAD_BOTTOM_RIGHT data.eSpriteType = GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT data.fBaseSpeed = 500.0 data.iMaxHP = 20 data.sGunPos.vPosition = INIT_VECTOR_2D(-56, 136) data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_CHIP GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(72, 96), 101) BREAK CASE GGSM_ENTITY_BOSS_GRANANA_HAIR data.eSpriteType = GGSM_SPRITE_BOSS_GRANANA_HAIR data.fBaseSpeed = 300.0 data.iMaxHP = 0 data.fTotalExplodeTime = GGSM_SUB_BOSS_EXPLOSION_TIME data.iPackedDefaultLocation = GGSM_PACK_VECTOR_2D_TO_INT_EXPLICIT(-80, -160) GGSM_COLLISION_DATA_SET_AS_CIRCLE(data.sCollisionData, INIT_VECTOR_2D(0, 0), 40) BREAK CASE GGSM_ENTITY_BOSS_GRANANA_GLASSES data.eSpriteType = GGSM_SPRITE_BOSS_GRANANA_GLASSES data.fBaseSpeed = 140.0 data.iMaxHP = 0 data.sGunPos.vPosition = INIT_VECTOR_2D(-41, 0) data.iPackedDefaultLocation = GGSM_PACK_VECTOR_2D_TO_INT_EXPLICIT(-20, -60) GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(0, 0), INIT_VECTOR_2D(-41, 0), 20) BREAK CASE GGSM_ENTITY_BOSS_DR_DANK_MIDDLE data.eSpriteType = GGSM_SPRITE_BOSS_DR_DANK_MIDDLE data.fBaseSpeed = 140.0 data.iMaxHP = 100 data.fTotalExplodeTime = GGSM_UBER_BOSS_EXPLOSION_TIME data.eWeaponType = GGSM_WEAPON_ENEMYCLUSTERBOMB data.sGunPos.vPosition = INIT_VECTOR_2D(-157, -96) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(91, -77), INIT_VECTOR_2D(-113, -77), 55) BREAK CASE GGSM_ENTITY_BOSS_DR_DANK_BOTTOM data.eSpriteType = GGSM_SPRITE_BOSS_DR_DANK_BOTTOM data.fBaseSpeed = 450.0 data.iMaxHP = 50 data.eWeaponType = GGSM_WEAPON_DANK_CANNON data.fTotalExplodeTime = GGSM_UBER_BOSS_EXPLOSION_TIME data.sGunPos.vPosition = INIT_VECTOR_2D(-170, 7) data.eDamageSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DAMAGE data.eDieSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_DIED GGSM_COLLISION_DATA_SET_AS_CAPSULE(data.sCollisionData, INIT_VECTOR_2D(-121, 6), INIT_VECTOR_2D(125, 6), 69) BREAK CASE GGSM_ENTITY_BOSS_DR_DANK_RLAUNCHER data.eSpriteType = GGSM_SPRITE_NONE data.fBaseSpeed = 0.0 data.iMaxHP = 0 data.eWeaponType = GGSM_WEAPON_DANK_ROCKET data.sGunPos.vPosition = INIT_VECTOR_2D(0, 0) data.eDamageSound = ARCADE_GAMES_SOUND_END data.eDieSound = ARCADE_GAMES_SOUND_END BREAK CASE GGSM_ENTITY_BOSS_DR_DANK_RHLAUNCHER data.eSpriteType = GGSM_SPRITE_NONE data.fBaseSpeed = 0.0 data.iMaxHP = 0 data.eWeaponType = GGSM_WEAPON_DANK_HROCKET data.sGunPos.vPosition = INIT_VECTOR_2D(0, 0) data.eDamageSound = ARCADE_GAMES_SOUND_END data.eDieSound = ARCADE_GAMES_SOUND_END BREAK CASE GGSM_ENTITY_BOSS_MARINE_LAUNCHER data.eSpriteType = GGSM_SPRITE_NONE data.fBaseSpeed = 0.0 data.iMaxHP = 0 data.eWeaponType = GGSM_WEAPON_MARINE_LAUNCHER data.sGunPos.vPosition = INIT_VECTOR_2D(0, 0) data.eDamageSound = ARCADE_GAMES_SOUND_END data.eDieSound = ARCADE_GAMES_SOUND_END BREAK ENDSWITCH #IF GGSM_EASY_ENEMIES IF NOT GGSM_ENTITY_TYPE_IS_PLAYER_ALLIED(eType) data.iMaxHP = 1 ENDIF #ENDIF RETURN data ENDFUNC FUNC BOOL GGSM_ENTITY_TYPE_IS_MAIN_BOSS_SECTION(GGSM_ENTITY_TYPE eType) IF (eType = GGSM_ENTITY_BOSS_BREAD_FACE) RETURN TRUE ENDIF IF (eType = GGSM_ENTITY_BOSS_GRANANA) RETURN TRUE ENDIF IF (eType = GGSM_ENTITY_BOSS_MARINE) RETURN TRUE ENDIF IF (eType = GGSM_ENTITY_BOSS_SMOOTHIE) RETURN TRUE ENDIF IF (eType = GGSM_ENTITY_BOSS_DR_DANK_TOP) RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC INT GGSM_ENTITY_GET_SCORE_FROM_TYPE(GGSM_ENTITY_TYPE eType) IF GGSM_ENTITY_TYPE_IS_MAIN_BOSS_SECTION(eType) RETURN 10000 ENDIF RETURN 200 ENDFUNC #IF IS_DEBUG_BUILD #IF GGSM_ENTITY_EDITOR_ACTIVE PROC GGSM_ENTITY_DATA_INIT_DEBUG_ARRAY() GGSM_ENTITY_TYPE eType REPEAT NUM_GGSM_ENTITY_TYPE eType sGGSMData.sDebugEntityEditor.sDebugEntData[eType] = GGSM_ENTITY_DATA_INIT(eType) ENDREPEAT ENDPROC #ENDIF #ENDIF FUNC GGSM_ENTITY_DATA GGSM_ENTITY_DATA_GET(GGSM_ENTITY_TYPE eType) #IF IS_DEBUG_BUILD #IF GGSM_ENTITY_EDITOR_ACTIVE RETURN sGGSMData.sDebugEntityEditor.sDebugEntData[eType] #ENDIF #ENDIF RETURN GGSM_ENTITY_DATA_INIT(eType) ENDFUNC //------------------------------------------------- // PROJECTILE DATA FUNCTIONS //------------------------------------------------- FUNC GGSM_PROJECTILE_DATA GGSM_PROJECTILE_DATA_INIT(GGSM_PROJECTILE_TYPE eType) GGSM_PROJECTILE_DATA data data.fShotReloadTime = 0.125 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_ENEMY_DEFAULT SWITCH (eType) CASE GGSM_PROJECTILE_BOMB_EXPLOSION data.eAlliedSprite = GGSM_SPRITE_BOMB_EXPLOSION data.fBaseSpeed = 0 data.fShotReloadTime = 0.125 data.fRadius = 64.0 data.fLength = 0.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_ROCKET_EXPLODE BREAK CASE GGSM_PROJECTILE_EXP_SHELL data.eAlliedSprite = GGSM_SPRITE_EXP_SHELL data.fBaseSpeed = 800.0 data.fShotReloadTime = 0.125 data.fRadius = 12.0 data.fLength = 24.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_ROCKET BREAK CASE GGSM_PROJECTILE_HOMING_ROCKET data.eAlliedSprite = GGSM_SPRITE_ROCKET_BLUE data.eEnemySprite = GGSM_SPRITE_ROCKET data.fBaseSpeed = 800.0 data.fRadius = 12.0 data.fLength = 24.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_ROCKET BREAK CASE GGSM_PROJECTILE_SCATTER data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_RED data.fBaseSpeed = 800.0 data.fShotReloadTime = 0.125 data.fRadius = 16.0 data.fLength = 64.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_SCATTER BREAK CASE GGSM_PROJECTILE_WAVE data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_RED data.fBaseSpeed = 1200.0 data.fShotReloadTime = 0.0625 data.fRadius = 16.0 data.fLength = 64.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_TRIPLE BREAK CASE GGSM_PROJECTILE_DUAL_ARCH data.eAlliedSprite = GGSM_SPRITE_SHOT_LONG_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_LONG_RED data.fBaseSpeed = 1400.0 data.fShotReloadTime = 0.125 data.fRadius = 10.0 data.fLength = 80.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_DOUBLE BREAK CASE GGSM_PROJECTILE_VULKAN data.eAlliedSprite = GGSM_SPRITE_SHOT_LONG_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_LONG_RED data.fBaseSpeed = 1400.0 data.fShotReloadTime = 0.125 data.fRadius = 10.0 data.fLength = 80.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_WPN_PLAYER_DEFAULT BREAK CASE GGSM_PROJECTILE_ENEMY_BEAM data.eAlliedSprite = GGSM_SPRITE_PROJ_BEAM_BLUE data.eEnemySprite = GGSM_SPRITE_PROJ_BEAM_PURPLE data.fBaseSpeed = 0.0 data.fShotReloadTime = 0.125 data.fRadius = 24.0 data.fLength = 0.0 BREAK CASE GGSM_PROJECTILE_ENEMY_LASER data.eAlliedSprite = GGSM_SPRITE_RAIL_GUN_FIRE_BLUE data.eEnemySprite = GGSM_SPRITE_RAIL_GUN_FIRE_RED data.fBaseSpeed = 2000.0 data.fShotReloadTime = 0.25 data.fRadius = 12.0 data.fLength = 180.0 BREAK CASE GGSM_PROJECTILE_ENEMY_LASER_PURPLE data.eAlliedSprite = GGSM_SPRITE_RAIL_GUN_FIRE_BLUE data.eEnemySprite = GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE data.fBaseSpeed = 2000.0 data.fShotReloadTime = 0.05 data.fRadius = 12.0 data.fLength = 360.0 BREAK CASE GGSM_PROJECTILE_ENEMY_ROUND_RED data.eAlliedSprite = GGSM_SPRITE_ENEMY_BULLET_BLUE data.eEnemySprite = GGSM_SPRITE_ENEMY_BULLET_RED data.fBaseSpeed = 400.0 data.fShotReloadTime = 0.5 data.fRadius = 24.0 data.fLength = 0.0 BREAK CASE GGSM_PROJECTILE_ENEMY_ROUND_PURPLE data.eAlliedSprite = GGSM_SPRITE_ENEMY_BULLET_BLUE data.eEnemySprite = GGSM_SPRITE_ENEMY_BULLET_PURPLE data.fBaseSpeed = 400.0 data.fShotReloadTime = 0.5 data.fRadius = 24.0 data.fLength = 0.0 BREAK CASE GGSM_PROJECTILE_ENEMY_SHOT data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_RED data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.5 data.fRadius = 16.0 data.fLength = 32.0 BREAK CASE GGSM_PROJECTILE_ENEMY_SHOT_RAPID data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_RED data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.25 data.fRadius = 16.0 data.fLength = 32.0 BREAK CASE GGSM_PROJECTILE_ENEMY_SHOT_PURPLE data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_PURPLE data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.5 data.fRadius = 16.0 data.fLength = 32.0 BREAK CASE GGSM_PROJECTILE_ENEMY_SHOT_YELLOW data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_YELLOW data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.5 data.fRadius = 16.0 data.fLength = 32.0 BREAK CASE GGSM_PROJECTILE_ENEMY_VULKAN data.eAlliedSprite = GGSM_SPRITE_SHOT_LONG_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_LONG_RED data.fBaseSpeed = 850.0 data.fShotReloadTime = 0.175 data.fRadius = 10.0 data.fLength = 80.0 BREAK CASE GGSM_PROJECTILE_ENEMY_CLUSTER_BOMB data.eAlliedSprite = GGSM_SPRITE_ENEMY_BULLET_BLUE data.eEnemySprite = GGSM_SPRITE_ENEMY_BULLET_PURPLE data.fBaseSpeed = 300.0 data.fShotReloadTime = 1.0 data.fRadius = 30.0 data.fLength = 0.0 BREAK CASE GGSM_PROJECTILE_SMOOTHIE_SPREAD data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_PURPLE data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.3 data.fRadius = 16.0 data.fLength = 32.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_SMOOTHIE_ATTACK BREAK CASE GGSM_PROJECTILE_SMOOTHIE_VULKAN data.eAlliedSprite = GGSM_SPRITE_SHOT_LONG_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_LONG_RED data.fBaseSpeed = 1000.0 data.fShotReloadTime = 0.0625 data.fRadius = 10.0 data.fLength = 80.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_SMOOTHIE_ATTACK_SPECIAL BREAK CASE GGSM_PROJECTILE_BREAD_CRUMB data.eAlliedSprite = GGSM_SPRITE_CRUMB_SMALL data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.125 data.fRadius = 40.0 data.fLength = 0.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_BREAD_ATTACK BREAK CASE GGSM_PROJECTILE_ACID data.eAlliedSprite = GGSM_SPRITE_ACID_BLUE data.eEnemySprite = GGSM_SPRITE_ACID data.fBaseSpeed = 500.0 data.fShotReloadTime = 0.35 data.fRadius = 20.0 data.fLength = 40.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_ATTACK_SPECIAL BREAK CASE GGSM_PROJECTILE_ACID_VULKAN data.eAlliedSprite = GGSM_SPRITE_ACID_BLUE data.eEnemySprite = GGSM_SPRITE_ACID data.fBaseSpeed = 650.0 data.fShotReloadTime = 0.125 data.fRadius = 20.0 data.fLength = 40.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_ATTACK_SPECIAL BREAK CASE GGSM_PROJECTILE_MARINE_SPREAD data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_PURPLE data.fBaseSpeed = 650.0 data.fShotReloadTime = 0.2 data.fRadius = 16.0 data.fLength = 32.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_ATTACK BREAK CASE GGSM_PROJECTILE_MARINE_LAUNCHER data.eAlliedSprite = GGSM_SPRITE_ROCKET_BLUE data.eEnemySprite = GGSM_SPRITE_ROCKET data.fBaseSpeed = 500.0 data.fRadius = 24.0 data.fLength = 48.0 data.fShotReloadTime = 0.25 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_MARINE_ATTACK BREAK CASE GGSM_PROJECTILE_DANK_ROCKET data.eAlliedSprite = GGSM_SPRITE_ROCKET_BLUE data.eEnemySprite = GGSM_SPRITE_ROCKET data.fBaseSpeed = 450.0 data.fRadius = 12.0 data.fLength = 24.0 data.fShotReloadTime = 0.18 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ROCKETS BREAK CASE GGSM_PROJECTILE_DANK_HOMING_ROCKET data.eAlliedSprite = GGSM_SPRITE_ROCKET_BLUE data.eEnemySprite = GGSM_SPRITE_ROCKET data.fBaseSpeed = 400.0 data.fRadius = 12.0 data.fLength = 24.0 data.fShotReloadTime = 0.25 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ROCKETS BREAK CASE GGSM_PROJECTILE_DANK_SCATTER data.eAlliedSprite = GGSM_SPRITE_SHOT_ROUND_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_ROUND_RED data.fBaseSpeed = 700.0 data.fShotReloadTime = 0.25 data.fRadius = 16.0 data.fLength = 64.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ATTACK BREAK CASE GGSM_PROJECTILE_DANK_VULCAN data.eAlliedSprite = GGSM_SPRITE_SHOT_LONG_BLUE data.eEnemySprite = GGSM_SPRITE_SHOT_LONG_RED data.fBaseSpeed = 1200.0 data.fShotReloadTime = 0.125 data.fRadius = 10.0 data.fLength = 80.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ATTACK_MINIGUN BREAK CASE GGSM_PROJECTILE_DANK_CLUSTERBOMB data.eAlliedSprite = GGSM_SPRITE_ENEMY_BULLET_BLUE data.eEnemySprite = GGSM_SPRITE_ENEMY_BULLET_PURPLE data.fBaseSpeed = 300.0 data.fShotReloadTime = 0.7 data.fRadius = 30.0 data.fLength = 0.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ATTACK_SPECIAL BREAK CASE GGSM_PROJECTILE_DANK_SPREAD data.eAlliedSprite = GGSM_SPRITE_ENEMY_BULLET_BLUE data.eEnemySprite = GGSM_SPRITE_ENEMY_BULLET_YELLOW data.fBaseSpeed = 300.0 data.fShotReloadTime = 0.7 data.fRadius = 30.0 data.fLength = 0.0 data.eProjSound = ARCADE_GAMES_SOUND_GGSM_BOSS_DR_DANK_ATTACK BREAK ENDSWITCH IF (data.eEnemySprite = GGSM_SPRITE_NONE) data.eEnemySprite = data.eAlliedSprite ENDIF RETURN data ENDFUNC FUNC GGSM_PROJECTILE_DATA GGSM_PROJECTILE_DATA_GET(GGSM_PROJECTILE_TYPE eType) RETURN GGSM_PROJECTILE_DATA_INIT(eType) ENDFUNC //------------------------------------------------- // WEAPON DATA FUNCTIONS //------------------------------------------------- FUNC GGSM_WEAPON_DATA GGSM_WEAPON_DATA_INIT(GGSM_WEAPON_TYPE eType) GGSM_WEAPON_DATA data SWITCH (eType) CASE GGSM_WEAPON_ENEMYBEAM data.eProjectileType = GGSM_PROJECTILE_ENEMY_BEAM data.eSpreadType = GGSM_SPREAD_LINEAR data.fSpreadValue = 0 data.iNumShots = 1 BREAK CASE GGSM_WEAPON_ENEMYCONESPREAD data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 3 data.iNumBursts = 2 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_ENEMYLASER data.eProjectileType = GGSM_PROJECTILE_ENEMY_LASER data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 data.iNumBursts = 4 data.fBurstReloadTime = 0.5 BREAK CASE GGSM_WEAPON_ENEMYSHOT data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 data.iNumBursts = 1 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_ENEMYSHOT_RAPID data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT_RAPID data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 data.iNumBursts = 1 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_ENEMYSPREAD data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT_PURPLE data.eSpreadType = GGSM_SPREAD_RADIAL data.fSpreadValue = 30.0 data.iNumShots = 6 data.iNumBursts = 1 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_ENEMYCLUSTERBOMB data.eProjectileType = GGSM_PROJECTILE_ENEMY_CLUSTER_BOMB data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 2 BREAK CASE GGSM_WEAPON_ENEMYTIMEDSPREAD data.eProjectileType = GGSM_PROJECTILE_ENEMY_ROUND_PURPLE data.eSpreadType = GGSM_SPREAD_RADIAL data.fSpreadValue = 30.0 data.iNumShots = 8 data.iNumBursts = 2 data.fBurstReloadTime = 1.5 BREAK CASE GGSM_WEAPON_ENEMYVULCAN data.eProjectileType = GGSM_PROJECTILE_ENEMY_VULKAN data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 data.iNumBursts = 2 data.fBurstReloadTime = 1.25 BREAK CASE GGSM_WEAPON_FRUITBOWL data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT data.eSpreadType = GGSM_SPREAD_RADIAL data.fSpreadValue = 30.0 data.iNumShots = 6 data.iNumBursts = 2 data.fBurstReloadTime = 1.5 BREAK CASE GGSM_WEAPON_GRANANAHAIR data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT_YELLOW data.eSpreadType = GGSM_SPREAD_RADIAL data.fSpreadValue = 30.0 data.iNumShots = 5 data.iNumBursts = 2 data.fBurstReloadTime = 0.5 BREAK CASE GGSM_WEAPON_GRANANAGLASSES data.eProjectileType = GGSM_PROJECTILE_ENEMY_LASER data.eSpreadType = GGSM_SPREAD_LINEAR data.fSpreadValue = 45.0 data.iNumShots = 1 data.iNumBursts = 1 data.fBurstReloadTime = 0.125 BREAK CASE GGSM_WEAPON_GRANANAGLASSES2 data.eProjectileType = GGSM_PROJECTILE_ENEMY_LASER_PURPLE data.eSpreadType = GGSM_SPREAD_LINEAR data.fSpreadValue = 45.0 data.iNumShots = 1 data.iNumBursts = 4 data.fBurstReloadTime = 0.125 BREAK CASE GGSM_WEAPON_GRANANASPREAD1 data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 3 BREAK CASE GGSM_WEAPON_GRANANASPREAD1A data.eProjectileType = GGSM_PROJECTILE_ENEMY_SHOT_PURPLE data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 3 BREAK CASE GGSM_WEAPON_PLYRVULCAN data.eProjectileType = GGSM_PROJECTILE_VULKAN data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 BREAK CASE GGSM_WEAPON_PLYREXPSHELL data.eProjectileType = GGSM_PROJECTILE_EXP_SHELL data.eSpreadType = GGSM_SPREAD_LINEAR data.fSpreadValue = 0.0 data.iNumShots = 1 data.iNumBursts = 4 data.fBurstReloadTime = 0.6 BREAK CASE GGSM_WEAPON_PLYRSCATTER data.eProjectileType = GGSM_PROJECTILE_SCATTER data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 30.0 data.iNumShots = 3 data.iNumBursts = 3 data.fBurstReloadTime = 0.3 BREAK CASE GGSM_WEAPON_PLYRHOMINGROCKET data.eProjectileType = GGSM_PROJECTILE_HOMING_ROCKET data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 BREAK CASE GGSM_WEAPON_PLYRDUALARCH data.eProjectileType = GGSM_PROJECTILE_DUAL_ARCH data.eSpreadType = GGSM_SPREAD_DUALARCH data.fSpreadValue = 30.0 data.iNumShots = 2 data.iNumBursts = 0 data.fBurstReloadTime = 0.5 BREAK CASE GGSM_WEAPON_PLYRWAVEBLASTER data.eProjectileType = GGSM_PROJECTILE_WAVE data.eSpreadType = GGSM_SPREAD_WAVE data.fSpreadValue = 60.0 data.iNumShots = 3 data.iNumBursts = 3 data.fBurstReloadTime = 0.125 BREAK CASE GGSM_WEAPON_PLYRBACKVULCAN data.eProjectileType = GGSM_PROJECTILE_VULKAN data.eSpreadType = GGSM_SPREAD_BACKVULCAN data.fSpreadValue = 60.0 data.iNumShots = 3 data.iNumBursts = 3 data.fBurstReloadTime = 0.125 BREAK CASE GGSM_WEAPON_SMOOTHIEVULCAN data.eProjectileType = GGSM_PROJECTILE_SMOOTHIE_VULKAN data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 0 data.iNumShots = 1 data.iNumBursts = 8 data.fBurstReloadTime = 0.5 BREAK CASE GGSM_WEAPON_BREADSPREAD data.eProjectileType = GGSM_PROJECTILE_BREAD_CRUMB data.eSpreadType = GGSM_SPREAD_RADIAL data.fSpreadValue = 60.0 data.iNumShots = 10 data.iNumBursts = 3 data.fBurstReloadTime = 2.0 BREAK CASE GGSM_WEAPON_SMOOTHIESPREAD data.eProjectileType = GGSM_PROJECTILE_SMOOTHIE_SPREAD data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 6 data.iNumBursts = 3 data.fBurstReloadTime = 2.0 BREAK CASE GGSM_WEAPON_DANK_CANNON data.eProjectileType = GGSM_PROJECTILE_DANK_VULCAN data.eSpreadType = GGSM_SPREAD_DUALARCH data.fSpreadValue = 30.0 data.iNumShots = 2 data.iNumBursts = 3 data.fBurstReloadTime = 0.5 BREAK CASE GGSM_WEAPON_DANK_ROCKET data.eProjectileType = GGSM_PROJECTILE_DANK_ROCKET data.eSpreadType = GGSM_SPREAD_LINEAR data.iNumShots = 1 data.iNumBursts = 2 data.fBurstReloadTime = 3.0 BREAK CASE GGSM_WEAPON_DANK_HROCKET data.eProjectileType = GGSM_PROJECTILE_DANK_HOMING_ROCKET data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 120.0 data.iNumShots = 2 data.iNumBursts = 2 data.fBurstReloadTime = 4.0 BREAK CASE GGSM_WEAPON_DANK_SCATTER data.eProjectileType = GGSM_PROJECTILE_DANK_SCATTER data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 3 data.iNumBursts = 2 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_DANK_CLUSTERBOMB data.eProjectileType = GGSM_PROJECTILE_DANK_CLUSTERBOMB data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 2 BREAK CASE GGSM_WEAPON_DANK_SPREAD data.eProjectileType = GGSM_PROJECTILE_DANK_SPREAD data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 60.0 data.iNumShots = 2 BREAK CASE GGSM_WEAPON_ACID data.eProjectileType = GGSM_PROJECTILE_ACID data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 100.0 data.iNumShots = 5 data.iNumBursts = 3 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_ACID_VULKAN data.eProjectileType = GGSM_PROJECTILE_ACID_VULKAN data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 120.0 data.iNumShots = 12 data.iNumBursts = 3 data.fBurstReloadTime = 1.0 BREAK CASE GGSM_WEAPON_MARINE_LAUNCHER data.eProjectileType = GGSM_PROJECTILE_MARINE_LAUNCHER data.eSpreadType = GGSM_SPREAD_LINEAR data.fSpreadValue = 0.0 data.iNumShots = 1 data.iNumBursts = 4 data.fBurstReloadTime = 2.0 BREAK CASE GGSM_WEAPON_MARINE_SPREAD data.eProjectileType = GGSM_PROJECTILE_MARINE_SPREAD data.eSpreadType = GGSM_SPREAD_CONE data.fSpreadValue = 40.0 data.iNumShots = 3 data.iNumBursts = 4 data.fBurstReloadTime = 1.0 BREAK DEFAULT data.eProjectileType = GGSM_PROJECTILE_INVALID data.eSpreadType = GGSM_SPREAD_LINEAR BREAK ENDSWITCH RETURN data ENDFUNC FUNC GGSM_WEAPON_DATA GGSM_WEAPON_DATA_GET(GGSM_WEAPON_TYPE eType) RETURN GGSM_WEAPON_DATA_INIT(eType) ENDFUNC //------------------------------------------------- // PATH SETTING FUNCTIONS //------------------------------------------------- PROC GGSM_PATH_DATA_RESET(GGSM_PATH_DATA &data) INT i REPEAT COUNT_OF(data.iPackedPathPoints) i data.iPackedPathPoints[i] = 0 ENDREPEAT data.iNumPoints = 0 ENDPROC PROC GGSM_PATH_DATA_SET_NUM_POINTS(GGSM_PATH_DATA &data, INT iNumPoints) data.iNumPoints = iNumPoints ENDPROC FUNC INT GGSM_PATH_DATA_GET_NUM_POINTS(GGSM_PATH_DATA &data) RETURN data.iNumPoints ENDFUNC PROC GGSM_PATH_DATA_SET_POINT(GGSM_PATH_DATA &dat, INT iPoint, FLOAT x, FLOAT y) IF (iPoint < 0) OR (iPoint >= GGSM_MAX_PATH_POINTS) EXIT ENDIF // We pack 2 points into each int // Points are packed as followed // (0 - 5) X Pos (position is in a grid) // (6 - 12) Y Pos (position is in a grid) // (13 - 15) Reserved for future crap INT iIndex = iPoint / 2 INT iBitStart = 0 IF (iPoint % 2 != 0) iBitStart += GGSM_PATH_BIT_WIDTH ENDIF SET_BITS_IN_RANGE(dat.iPackedPathPoints[iIndex], iBitStart + GGSM_PATH_X_POS_BIT_START, iBitStart + GGSM_PATH_X_POS_BIT_END, FLOOR(x / TO_FLOAT(GGSM_PATH_GRID_SEPERATION))) SET_BITS_IN_RANGE(dat.iPackedPathPoints[iIndex], iBitStart + GGSM_PATH_Y_POS_BIT_START, iBitStart + GGSM_PATH_Y_POS_BIT_END, FLOOR(y / TO_FLOAT(GGSM_PATH_GRID_SEPERATION))) IF (dat.iNumPoints < iPoint) dat.iNumPoints = iPoint ENDIF ENDPROC FUNC VECTOR_2D GGSM_PATH_DATA_GET_POINT(GGSM_PATH_DATA &dat, INT iPoint) IF (iPoint < 0) OR (iPoint >= GGSM_MAX_PATH_POINTS) RETURN INIT_VECTOR_2D(0, 0) ENDIF INT iIndex = iPoint / 2 INT iBitStart = 0 IF (iPoint % 2 != 0) iBitStart += GGSM_PATH_BIT_WIDTH ENDIF VECTOR_2D out out.x = TO_FLOAT(GET_BITS_IN_RANGE(dat.iPackedPathPoints[iIndex], iBitStart + GGSM_PATH_X_POS_BIT_START, iBitStart + GGSM_PATH_X_POS_BIT_END) * GGSM_PATH_GRID_SEPERATION) out.y = TO_FLOAT(GET_BITS_IN_RANGE(dat.iPackedPathPoints[iIndex], iBitStart + GGSM_PATH_Y_POS_BIT_START, iBitStart + GGSM_PATH_Y_POS_BIT_END) * GGSM_PATH_GRID_SEPERATION) RETURN out ENDFUNC PROC GGSM_RESET_PATH_DATA_ARRAY(GGSM_PATH_DATA &array[]) INT i REPEAT COUNT_OF(array) i GGSM_PATH_DATA_RESET(array[i]) ENDREPEAT ENDPROC //------------------------------------------------- // FORMATION SETTING FUNCTIONS //------------------------------------------------- PROC GGSM_FORMATION_SET_SCROLL_DISTANCE(GGSM_FORMATION_DATA &form, FLOAT dist) form.fScrollDistance = dist ENDPROC FUNC FLOAT GGSM_FORMATION_GET_SCROLL_DISTANCE(GGSM_FORMATION_DATA &form) RETURN form.fScrollDistance ENDFUNC PROC GGSM_FORMATION_SET_TYPE(GGSM_FORMATION_DATA &form, GGSM_FORMATION_TYPE eType) SET_BITS_IN_RANGE(form.iPackedTypeData, 0, 7, (ENUM_TO_INT(eType) & 255)) ENDPROC FUNC GGSM_FORMATION_TYPE GGSM_FORMATION_GET_TYPE(GGSM_FORMATION_DATA &form) RETURN INT_TO_ENUM(GGSM_FORMATION_TYPE, GET_BITS_IN_RANGE(form.iPackedTypeData, 0, 7) & 255) ENDFUNC PROC GGSM_FORMATION_SET_ENTITY_TYPE(GGSM_FORMATION_DATA &form, GGSM_ENTITY_TYPE eType) SET_BITS_IN_RANGE(form.iPackedTypeData, 8, 15, (ENUM_TO_INT(eType) & 255)) ENDPROC FUNC GGSM_ENTITY_TYPE GGSM_FORMATION_GET_ENTITY_TYPE(GGSM_FORMATION_DATA &form) RETURN INT_TO_ENUM(GGSM_ENTITY_TYPE, GET_BITS_IN_RANGE(form.iPackedTypeData, 8, 15) & 255) ENDFUNC PROC GGSM_FORMATION_SET_MOVEMENT_TYPE(GGSM_FORMATION_DATA &form, GGSM_MOVEMENT_TYPE eType) SET_BITS_IN_RANGE(form.iPackedTypeData, 16, 23, (ENUM_TO_INT(eType) & 255)) ENDPROC FUNC GGSM_MOVEMENT_TYPE GGSM_FORMATION_GET_MOVEMENT_TYPE(GGSM_FORMATION_DATA &form) RETURN INT_TO_ENUM(GGSM_MOVEMENT_TYPE, GET_BITS_IN_RANGE(form.iPackedTypeData, 16, 23) & 255) ENDFUNC PROC GGSM_FORMATION_SET_WEAPON_TYPE(GGSM_FORMATION_DATA &form, GGSM_WEAPON_TYPE eType) SET_BITS_IN_RANGE(form.iPackedTypeData, 24, 31, (ENUM_TO_INT(eType) & 255)) ENDPROC FUNC GGSM_WEAPON_TYPE GGSM_FORMATION_GET_WEAPON_TYPE(GGSM_FORMATION_DATA &form) RETURN INT_TO_ENUM(GGSM_WEAPON_TYPE, GET_BITS_IN_RANGE(form.iPackedTypeData, 24, 31) & 255) ENDFUNC PROC GGSM_FORMATION_SET_MEMBER_COUNT(GGSM_FORMATION_DATA &form, INT n) form.iFormationMembers = n ENDPROC FUNC INT GGSM_FORMATION_GET_MEMBER_COUNT(GGSM_FORMATION_DATA &form) RETURN form.iFormationMembers ENDFUNC PROC GGSM_FORMATION_SET_PATH_INDEX(GGSM_FORMATION_DATA &form, INT n) form.iPathNumber = n ENDPROC FUNC INT GGSM_FORMATION_GET_PATH_INDEX(GGSM_FORMATION_DATA &form) RETURN form.iPathNumber ENDFUNC FUNC GGSM_SPRITE_TYPE GGSM_FORMATION_GET_POWER_UP_SPRITE(GGSM_FORMATION_DATA &form) GGSM_FORMATION_TYPE eType = GGSM_FORMATION_GET_TYPE(form) IF (eType != GGSM_FORMATION_POWER_UP) RETURN GGSM_SPRITE_NONE ENDIF RETURN INT_TO_ENUM(GGSM_SPRITE_TYPE, ENUM_TO_INT(GGSM_SPRITE_POWER_UP_BEAM) + form.iPathNumber) ENDFUNC PROC GGSM_FORMATION_SET_POWER_UP_SPRITE(GGSM_FORMATION_DATA &form, GGSM_SPRITE_TYPE eSprite) GGSM_FORMATION_TYPE eType = GGSM_FORMATION_GET_TYPE(form) IF (eType != GGSM_FORMATION_POWER_UP) EXIT ENDIF IF (eSprite < GGSM_SPRITE_POWER_UP_BEAM) OR (eSprite > GGSM_SPRITE_POWER_UP_WAVE) EXIT ENDIF form.iPathNumber = ENUM_TO_INT(eSprite) - ENUM_TO_INT(GGSM_SPRITE_POWER_UP_BEAM) ENDPROC PROC GGSM_FORMATION_SET_START_POSITION(GGSM_FORMATION_DATA &data, FLOAT x, FLOAT y) data.iPackedBasePosition = GGSM_PACK_VECTOR_2D_TO_INT_EXPLICIT(x, y) ENDPROC FUNC VECTOR_2D GGSM_FORMATION_GET_START_POSITION(GGSM_FORMATION_DATA &data) RETURN GGSM_UNPACK_VECTOR_2D(data.iPackedBasePosition) ENDFUNC PROC GGSM_FORMATION_SET_START_DIRECTION(GGSM_FORMATION_DATA &data, FLOAT x, FLOAT y) data.iPackedBaseDirection = GGSM_PACK_DIRECTION_2D_TO_INT_EXPLICIT(x, y) ENDPROC PROC GGSM_FORMATION_SET_START_DIRECTION_AS_ANGLE(GGSM_FORMATION_DATA &data, FLOAT ang) VECTOR_2D v = GGSM_GET_VECTOR_FROM_HEADING(ang) data.iPackedBaseDirection = GGSM_PACK_DIRECTION_2D_TO_INT_EXPLICIT(v.x, v.y) ENDPROC FUNC VECTOR_2D GGSM_FORMATION_GET_START_DIRECTION(GGSM_FORMATION_DATA &data) RETURN GGSM_UNPACK_DIRECTION_2D(data.iPackedBaseDirection) ENDFUNC FUNC FLOAT GGSM_FORMATION_GET_START_DIRECTION_AS_ANGLE(GGSM_FORMATION_DATA &data) VECTOR_2D v = GGSM_UNPACK_DIRECTION_2D(data.iPackedBaseDirection) RETURN GET_HEADING_FROM_VECTOR_2D(v.x, v.y) ENDFUNC PROC GGSM_FORMATION_SET_SPACING(GGSM_FORMATION_DATA &data, FLOAT hSpacing, FLOAT vSpacing) data.vSpacing.x = hSpacing data.vSpacing.y = vSpacing ENDPROC FUNC VECTOR_2D GGSM_FORMATION_GET_SPACING(GGSM_FORMATION_DATA &data) RETURN data.vSpacing ENDFUNC FUNC BOOL GGSM_FORMATION_IS_VALID(GGSM_FORMATION_DATA &data) RETURN (data.fScrollDistance > 0.0) AND (data.fScrollDistance != MAX_FLOAT) ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_LINE_EXPLICT(VECTOR_2D root, VECTOR_2D dir, INT ind, VECTOR_2D entSize, VECTOR_2D spacing) FLOAT dist = (entSize.x * spacing.x) * TO_FLOAT(ind) RETURN INIT_VECTOR_2D(root.x - (dir.x * dist), root.y - (dir.y * dist)) ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_LINE(GGSM_FORMATION_DATA &data, INT ind, VECTOR_2D entSize) VECTOR_2D root = GGSM_FORMATION_GET_START_POSITION(data) VECTOR_2D dir = GGSM_FORMATION_GET_START_DIRECTION(data) RETURN GGSM_FORMATION_GET_POSITION_FOR_LINE_EXPLICT(root, dir, ind, entSize, data.vSpacing) ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_FLYING_V_EXPLICT(VECTOR_2D root, VECTOR_2D dir, INT ind, VECTOR_2D entSize, VECTOR_2D spacing) INT iRow = (ind + 1) / 2 IF (ind = 0) RETURN root ENDIF // if the index is even rotate by 135 else rotate by -135 IF (ind % 2 = 0) dir = GGSM_ROTATE_VECTOR_2D_ABOUT_Z(dir, -135.0) ELSE dir = GGSM_ROTATE_VECTOR_2D_ABOUT_Z(dir, 135.0) ENDIF root.x += ((entSize.x * spacing.x) * TO_FLOAT(iRow)) * dir.x root.y += ((entSize.y * spacing.y) * TO_FLOAT(iRow)) * dir.y RETURN root ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_FLYING_V(GGSM_FORMATION_DATA &data, INT ind, VECTOR_2D entSize) VECTOR_2D root = GGSM_FORMATION_GET_START_POSITION(data) VECTOR_2D dir = GGSM_FORMATION_GET_START_DIRECTION(data) RETURN GGSM_FORMATION_GET_POSITION_FOR_FLYING_V_EXPLICT(root, dir, ind, entSize, data.vSpacing) ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_DELAYED_LINE_EXPLICIT(VECTOR_2D root, VECTOR_2D dir, INT ind, VECTOR_2D entSize, VECTOR_2D spacing) FLOAT fDistBetweenUnits = FMAX(ABSF(entSize.x), ABSF(entSize.y)) * spacing.x GGSM_TRANSLATE_VECTOR_BY_DIRECTION(root, dir, ind * fDistBetweenUnits) RETURN root ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_DELAYED_LINE(GGSM_FORMATION_DATA &data, VECTOR_2D lineDir, INT ind, VECTOR_2D entSize) VECTOR_2D root = GGSM_FORMATION_GET_START_POSITION(data) RETURN GGSM_FORMATION_GET_POSITION_FOR_DELAYED_LINE_EXPLICIT(root, lineDir, ind, entSize, data.vSpacing) ENDFUNC FUNC VECTOR_2D GGSM_FORMATION_GET_POSITION_FOR_UNIT(GGSM_FORMATION_DATA &data, INT ind, VECTOR_2D entSize) GGSM_FORMATION_TYPE formType = GGSM_FORMATION_GET_TYPE(data) SWITCH (formType) CASE GGSM_FORMATION_FLYING_V RETURN GGSM_FORMATION_GET_POSITION_FOR_FLYING_V(data, ind, entSize) CASE GGSM_FORMATION_DELAYED_HLINE RETURN GGSM_FORMATION_GET_POSITION_FOR_DELAYED_LINE(data, INIT_VECTOR_2D(1, 0), ind, entSize) CASE GGSM_FORMATION_DELAYED_VLINE RETURN GGSM_FORMATION_GET_POSITION_FOR_DELAYED_LINE(data, INIT_VECTOR_2D(0, 1), ind, entSize) CASE GGSM_FORMATION_LINE RETURN GGSM_FORMATION_GET_POSITION_FOR_LINE(data, ind, entSize) ENDSWITCH RETURN GGSM_FORMATION_GET_START_POSITION(data) ENDFUNC PROC GGSM_RESET_FORMATION_DATA(GGSM_FORMATION_DATA &data) GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_NONE) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_START_DIRECTION(data, -1, 0) GGSM_FORMATION_SET_START_POSITION(data, 2000, 540) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_MEMBER_COUNT(data, 0) GGSM_FORMATION_SET_SPACING(data, 1.25, 1.25) data.fScrollDistance = MAX_FLOAT ENDPROC FUNC INT GGSM_GET_FREE_FORMATION_SLOT(GGSM_FORMATION_DATA &array[]) INT i REPEAT COUNT_OF(array) i IF NOT GGSM_FORMATION_IS_VALID(array[i]) RETURN i ENDIF ENDREPEAT RETURN -1 ENDFUNC FUNC INT GGSM_FIND_FORMATION_SLOT_AT_DISTANCE(GGSM_FORMATION_DATA &array[], FLOAT fDist) INT i REPEAT COUNT_OF(array) i IF (array[i].fScrollDistance >= fDist) RETURN i ENDIF ENDREPEAT RETURN -1 ENDFUNC /// PURPOSE: /// Sort Z Sort Array /// PARAMS: /// sArray - Array to sort /// iLeft - left index /// iRight - right index PROC GGSM_QUICK_SORT_FORMATION_DATA_ARRAY(GGSM_FORMATION_DATA &sArray[]) INT n = COUNT_OF(sArray) - 1 GGSM_FORMATION_DATA tmp INT i, j FOR i = 0 TO n STEP 1 FOR j = (i + 1) TO n STEP 1 IF (sArray[i].fScrollDistance > sArray[j].fScrollDistance) tmp = sArray[i] sArray[i] = sArray[j] sArray[j] = tmp ENDIF ENDFOR ENDFOR ENDPROC PROC GGSM_RESET_FORMATION_DATA_ARRAY(GGSM_FORMATION_DATA &sArray[]) INT i REPEAT COUNT_OF(sArray) i GGSM_RESET_FORMATION_DATA(sArray[i]) ENDREPEAT ENDPROC PROC GGSM_SHIFT_FORMATION_DATA_ARRAY(GGSM_FORMATION_DATA &sArray[], FLOAT fAmount, INT iAfterIndex = -1) INT i FLOAT fDist REPEAT COUNT_OF(sArray) i IF (i > iAfterIndex) fDist = GGSM_FORMATION_GET_SCROLL_DISTANCE(sArray[i]) GGSM_FORMATION_SET_SCROLL_DISTANCE(sArray[i], fDist + fAmount) ENDIF ENDREPEAT GGSM_QUICK_SORT_FORMATION_DATA_ARRAY(sArray) ENDPROC //------------------------------------------------- // TILEMAP DEFINITION FUNCTIONS //------------------------------------------------- /// PURPOSE: /// Calculate which tile a particular position in screen coords is over /// PARAMS: /// cam - camera struct /// vScreenPos - screen pos /// tx - tile x /// ty - tile y PROC GGSM_CAMERA_GET_SCREEN_POSITION_IN_TILE_MAP(GGSM_CAMERA &cam, GGSM_TILEMAP &tm, VECTOR_2D vScreenPos, INT &tx, INT &ty) tx = FLOOR((vScreenPos.x + cam.vWorldPosition.x) / tm.fTileSize) ty = FLOOR((vScreenPos.y + cam.vWorldPosition.y) / tm.fTileSize) ENDPROC /// PURPOSE: /// Calculate which tile a particular position in screen coords is over /// PARAMS: /// cam - camera struct /// vScreenPos - screen pos /// tx - tile x /// ty - tile y PROC GGSM_WORLD_POSITION_IN_TILE_MAP(GGSM_TILEMAP &tm, VECTOR_2D vPos, INT &tx, INT &ty) tx = FLOOR(vPos.x / tm.fTileSize) ty = FLOOR(vPos.y / tm.fTileSize) ENDPROC /// PURPOSE: /// Give a tilemap coord give us the top left pos in world sapce /// PARAMS: /// tm - tilemap /// iMx - map coord x /// iMy - map coord y /// RETURNS: /// World Position of Top Left Corner of tile FUNC VECTOR_2D GGSM_TILEMAP_GET_TOP_LEFT_WORLD_POSITION_FOR_TILE(GGSM_TILEMAP &tm, INT iMx, INT iMy) VECTOR_2D vec vec.x = iMx * tm.fTileSize vec.y = iMy * tm.fTileSize RETURN vec ENDFUNC PROC GGSM_TILEMAP_SET_DATA(GGSM_TILEMAP &tm, INT x, INT y, INT iTile, BOOL hFlip = FALSE, BOOL vFlip = FALSE) IF (x < 0) OR (x >= GGSM_MAX_TILEMAP_SIZE_X) EXIT ENDIF IF (y < 0) OR (y >= GGSM_MAX_TILEMAP_SIZE_Y) EXIT ENDIF INT iData = iTile IF (hFlip) SET_BIT(iData, GGSM_TILE_BIT_H_FLIP) ENDIF IF (vFlip) SET_BIT(iData, GGSM_TILE_BIT_Y_FLIP) ENDIF SET_PACKED_BITFIELD_VALUE_IN_ARRAY(tm.sMapRow[y].iData, x, GGSM_TILE_MAP_ENTRY_BIT_WIDTH, iData) ENDPROC FUNC BOOL GGSM_TILEMAP_GET_DATA(GGSM_TILEMAP &tm, INT iMx, INT iMy, INT &iTile, BOOL &hFlip, BOOL &vFlip) INT iData iTile = 0 hFlip = FALSE vFlip = FALSE // if it isn't wrapped just return zero IF (!tm.bWrapped) IF (iMx < 0) OR (iMx >= tm.iMapWidth) OR (iMy < 0) OR (iMy >= tm.iMapHeight) RETURN TRUE ENDIF ENDIF // wrap IF (iMx < 0) iMx += tm.iMapWidth ENDIF IF (iMy < 0) iMy += tm.iMapHeight ENDIF iMx = iMx % tm.iMapWidth iMy = iMy % tm.iMapHeight // now we access the data - unpack it iData = GET_PACKED_BITFIELD_VALUE_FROM_ARRAY(tm.sMapRow[iMy].iData, iMx, GGSM_TILE_MAP_ENTRY_BIT_WIDTH) // get the tile from the first 5 bits - get the flip for the last 2 iTile = GET_BITS_IN_RANGE(iData, 0, 5) hFlip = IS_BIT_SET(iData, GGSM_TILE_BIT_H_FLIP) vFlip = IS_BIT_SET(iData, GGSM_TILE_BIT_Y_FLIP) RETURN TRUE ENDFUNC FUNC BOOL GGSM_TILEMAP_IS_TILE_HORIZONTAL_FLIPPED(GGSM_TILEMAP &tm, INT x, INT y) INT tile BOOL hflip, vflip GGSM_TILEMAP_GET_DATA(tm, x, y, tile, hflip, vflip) RETURN hflip ENDFUNC FUNC BOOL GGSM_TILEMAP_IS_TILE_VERTICAL_FLIPPED(GGSM_TILEMAP &tm, INT x, INT y) INT tile BOOL hflip, vflip GGSM_TILEMAP_GET_DATA(tm, x, y, tile, hflip, vflip) RETURN vflip ENDFUNC PROC GGSM_TILEMAP_SET_INDEX(GGSM_TILEMAP &tm, INT x, INT y, INT ind) INT tile BOOL hflip, vflip IF (x < 0) OR (x >= GGSM_MAX_TILEMAP_SIZE_X) EXIT ENDIF IF (y < 0) OR (y >= GGSM_MAX_TILEMAP_SIZE_Y) EXIT ENDIF GGSM_TILEMAP_GET_DATA(tm, x, y, tile, hflip, vflip) GGSM_TILEMAP_SET_DATA(tm, x, y, ind, hflip, vflip) ENDPROC PROC GGSM_TILEMAP_SET_HORIZONTAL_FLIP(GGSM_TILEMAP &tm, INT x, INT y, BOOL bTrue = TRUE) INT tile BOOL hflip, vflip GGSM_TILEMAP_GET_DATA(tm, x, y, tile, hflip, vflip) GGSM_TILEMAP_SET_DATA(tm, x, y, tile, bTrue, vflip) ENDPROC PROC GGSM_TILEMAP_SET_VERTICAL_FLIP(GGSM_TILEMAP &tm, INT x, INT y, BOOL bTrue = TRUE) INT tile BOOL hflip, vflip GGSM_TILEMAP_GET_DATA(tm, x, y, tile, hflip, vflip) GGSM_TILEMAP_SET_DATA(tm, x, y, tile, hflip, bTrue) ENDPROC PROC GGSM_TILE_SET_FLIP(GGSM_TILEMAP &tm, INT x, INT y, INT iFlipBits) GGSM_TILEMAP_SET_HORIZONTAL_FLIP(tm, x, y, IS_BIT_SET(iFlipBits, 0)) GGSM_TILEMAP_SET_VERTICAL_FLIP(tm, x, y, IS_BIT_SET(iFlipBits, 1)) ENDPROC /// PURPOSE: /// Clears a tile map completely /// PARAMS: /// tm - PROC GGSM_TILEMAP_RESET(GGSM_TILEMAP &tm) INT x, y REPEAT GGSM_MAX_TILEMAP_SIZE_X x REPEAT GGSM_MAX_TILEMAP_SIZE_Y y GGSM_TILEMAP_SET_DATA(tm, x, y, 0) ENDREPEAT ENDREPEAT REPEAT GGSM_MAX_TILES_IN_TILE_SET x tm.sCollisionData[x].eType = GGSM_TILE_COLLISION_NONE tm.sCollisionData[x].iNumPoints = 0 REPEAT GGSM_MAX_TILE_POLYPOINTS y tm.sCollisionData[x].vCollisionVectors[y].x = 0 tm.sCollisionData[x].vCollisionVectors[y].y = 0 ENDREPEAT ENDREPEAT ENDPROC /// PURPOSE: /// Initializes the tile map /// PARAMS: /// tm - tile map /// sTileDirectory - dictionary /// sBaseName - base name /// iTileSize - Tile Size in pixels /// iMaxTile - Max Tiles Used for Map PROC GGSM_TILEMAP_INIT(GGSM_TILEMAP &tm, FLOAT fTileSize = 128.0, INT iMaxTile = GGSM_MAX_TILES_IN_TILE_SET, STRING sTileDirectory = NULL, STRING sBaseName = NULL) tm.sTileSetBaseName = sBaseName tm.sTileDirectory = sTileDirectory tm.iMaxTiles = iMaxTile tm.fTileSize = fTileSize tm.fTileDrawSize = 0.0 GGSM_TILEMAP_RESET(tm) ENDPROC /// PURPOSE: /// Returns a rect in tile coords telling use what to draw /// RETURNS: /// Rect int PROC GGSM_TILEMAP_SET_RENDERABLE_TILE_BOUNDS(GGSM_TILEMAP &tileMap, GGSM_CAMERA &cam) VECTOR_2D vTopLeft = ADD_VECTOR_2D(cam.vWorldPosition, cam.vWorldViewportOffset) VECTOR_2D vBaseRight = ADD_VECTOR_2D(vTopLeft, cam.vViewportSize) INT farx, fary // work out top corner of where we should be on tile map tileMap.sVisibleTileRect.x = FLOOR(vTopLeft.x / tileMap.fTileSize) tileMap.sVisibleTileRect.y = FLOOR(vTopLeft.y / tileMap.fTileSize) // work out bottom corner farx = CEIL(vBaseRight.x / tileMap.fTileSize) fary = CEIL(vBaseRight.y / tileMap.fTileSize) // work out the extents tileMap.sVisibleTileRect.w = farx - tileMap.sVisibleTileRect.x tileMap.sVisibleTileRect.h = fary - tileMap.sVisibleTileRect.y ENDPROC /// PURPOSE: /// Tells us if a screen position (all ships and projectiles are in screen space) has collided with map /// PARAMS: /// vScreenPos - Screen Pos /// RETURNS: /// FUNC BOOL GGSM_IS_SCREEN_POSITION_COLLIDED_WITH_TILE_MAP(VECTOR_2D vScreenPos) INT mx, my INT iTile BOOL bHFlip, bVFlip GGSM_CAMERA_GET_SCREEN_POSITION_IN_TILE_MAP(sGGSMData.sCamera, sGGSMData.sTileMap, vScreenPos, mx, my) IF NOT GGSM_TILEMAP_GET_DATA(sGGSMData.sTileMap, mx, my, iTile, bHFlip, bVFlip) RETURN FALSE ENDIF IF (iTile = 0) RETURN FALSE ENDIF IF (sGGSMData.sTileMap.sCollisionData[iTile].eType = GGSM_TILE_COLLISION_FULLBOX) RETURN TRUE ENDIF GGSM_TILE_COLLISION_DATA tmp VECTOR_2D vec = GGSM_TILEMAP_GET_TOP_LEFT_WORLD_POSITION_FOR_TILE(sGGSMData.sTileMap, mx, my) vec.x -= sGGSMData.sCamera.vWorldPosition.x vec.y -= sGGSMData.sCamera.vWorldPosition.y IF (bHFlip OR bVFlip) GGSM_TILEMAP_FLIP_COLLISION(sGGSMData.sTileMap, iTile, tmp, bHFlip, bVFlip) RETURN GGSM_TILE_COLLISION_IN_POINT_IN_TILE(vScreenPos, vec, tmp) ENDIF RETURN GGSM_TILE_COLLISION_IN_POINT_IN_TILE(vScreenPos, vec, sGGSMData.sTileMap.sCollisionData[iTile]) ENDFUNC //------------------------------------------------- // MAP DATA //------------------------------------------------- /// PURPOSE: /// Gets a tile collder for level 1 /// PARAMS: /// data - tile data array /// iTileIndex - palette tile to get collision for PROC GGSM_GET_TILE_COLLISION_DATA_FOR_EMPTY_MAP(GGSM_TILE_COLLISION_DATA &data, INT iTileIndex) UNUSED_PARAMETER(data) UNUSED_PARAMETER(iTileIndex) ENDPROC PROC GGSM_GET_TILE_MAP_DATA_FOR_EMPTY_MAP(GGSM_TILEMAP &data) // Tile Map Dimensions data.iMapWidth = 0 data.iMapHeight = 0 data.iMaxTiles = 0 data.fTileSize = 256.0000 data.fTileDrawSize = 261.0000 data.bWrapped = TRUE ENDPROC /// PURPOSE: /// Gets a tile collder for level 1 /// PARAMS: /// data - tile data array /// iTileIndex - palette tile to get collision for PROC GGSM_GET_TILE_COLLISION_DATA_FOR_EARTH_SECTOR(GGSM_TILE_COLLISION_DATA &data, INT iTileIndex) UNUSED_PARAMETER(data) UNUSED_PARAMETER(iTileIndex) ENDPROC PROC GGSM_GET_TILE_MAP_DATA_FOR_EARTH_SECTOR(GGSM_TILEMAP &data) // Tile Map Dimensions data.iMapWidth = 0 data.iMapHeight = 0 data.iMaxTiles = 0 data.fTileSize = 256.0000 data.fTileDrawSize = 261.0000 data.bWrapped = TRUE ENDPROC /// PURPOSE: /// Gets a tile collder for level 1 /// PARAMS: /// data - tile data array /// iTileIndex - palette tile to get collision for PROC GGSM_GET_TILE_COLLISION_DATA_FOR_YELLOW_CLAM(GGSM_TILE_COLLISION_DATA &data, INT iTileIndex) // Tile Colliders SWITCH (iTileIndex) CASE 0 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_NONE data.iNumPoints = 0 BREAK CASE 1 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 150.3005) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 256.0000, 85.9883) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 176.2818, 0.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 116.5771, 9.3526) data.iNumPoints = 6 BREAK CASE 2 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 256.0000, 154.1782) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 162.5250, 54.2983) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 101.5943, 54.0883) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 0.0000, 154.7257) data.iNumPoints = 6 BREAK CASE 3 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 144.4315) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 256.0000, 161.6841) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 200.3127, 105.0080) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 61.6703, 104.8637) data.iNumPoints = 6 BREAK CASE 4 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 134.3873) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 256.0000, 157.6073) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 0.0000, 256.0000) data.iNumPoints = 4 BREAK CASE 5 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 238.0651, 172.0537) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 44.6565, 87.2523) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 0.0000, 145.6503) data.iNumPoints = 5 BREAK CASE 6 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 241.2662, 61.1125) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 0.0000, 155.3188) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 39.4136, 77.3982) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 123.9532, 105.0678) data.iNumPoints = 6 BREAK CASE 7 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 1.1886, 149.0535) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 62.8181, 91.8640) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 212.7052, 108.1814) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 251.7001, 158.4413) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 256.0000, 256.0000) data.iNumPoints = 6 BREAK CASE 8 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 0.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 256.0000, 256.0000) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 251.8729, 127.4646) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 207.0582, 76.8475) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 94.9670, 89.4194) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 0.0000, 216.5755) data.iNumPoints = 6 BREAK CASE 9 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 3.7238, 163.1078) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 116.5266, 209.8779) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 256.0000, 215.2173) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 254.8834, 43.3265) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 105.6755, 51.5779) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 8.7276, 110.8403) data.iNumPoints = 6 BREAK CASE 10 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 1.5006, 212.2412) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 252.8283, 205.8661) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 252.7192, 41.0821) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 1.7632, 42.0741) data.iNumPoints = 4 BREAK CASE 11 // Tile Collision Data data.eType = GGSM_TILE_COLLISION_POLYGON GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 0, 246.1125, 109.5481) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 1, 247.1098, 167.5226) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 2, 97.5659, 215.2353) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 3, 0.0000, 211.6201) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 4, 0.0000, 53.6619) GGSM_TILE_COLLISION_DATA_SET_COLLISION_VECTOR(data, 5, 140.3455, 42.8085) data.iNumPoints = 6 BREAK ENDSWITCH ENDPROC PROC GGSM_GET_TILE_MAP_DATA_FOR_YELLOW_CLAM(GGSM_TILEMAP &data) // Tile Map Dimensions data.iMapWidth = 57 data.iMapHeight = 4 data.iMaxTiles = 12 data.fTileSize = 256.0000 data.fTileDrawSize = 256.0000 data.bWrapped = TRUE // Tile Directories data.sTileDirectory = "MpGoGoSpaceCavernStage" data.sTileSetBaseName = "BANANA_CAVERN_" // Tile Map Data GGSM_TILEMAP_SET_DATA(data, 0, 0, 5, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 1, 0, 1, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 2, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 3, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 4, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 5, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 6, 0, 1, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 7, 0, 4, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 8, 0, 4, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 9, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 10, 0, 1, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 11, 0, 3, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 12, 0, 4, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 13, 0, 1, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 14, 0, 5, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 16, 0, 5, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 17, 0, 4, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 18, 0, 7, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 19, 0, 4, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 20, 0, 5, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 24, 0, 5, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 25, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 26, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 27, 0, 7, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 28, 0, 3, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 29, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 30, 0, 1, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 31, 0, 2, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 32, 0, 5, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 35, 0, 5, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 36, 0, 6, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 37, 0, 8, TRUE, TRUE) GGSM_TILEMAP_SET_DATA(data, 39, 0, 8, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 40, 0, 1, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 41, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 42, 0, 5, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 44, 0, 8, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 45, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 46, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 47, 0, 7, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 48, 0, 2, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 49, 0, 7, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 50, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 51, 0, 4, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 52, 0, 3, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 53, 0, 6, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 54, 0, 6, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 55, 0, 5, FALSE, TRUE) GGSM_TILEMAP_SET_DATA(data, 0, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 1, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 2, 3, 2, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 3, 3, 3, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 4, 3, 3, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 5, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 6, 3, 2, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 7, 3, 3, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 8, 3, 3, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 9, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 10, 3, 7, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 11, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 12, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 13, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 14, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 15, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 16, 3, 7, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 17, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 18, 3, 5, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 23, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 24, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 25, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 26, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 27, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 28, 3, 3, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 29, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 30, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 31, 3, 6, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 32, 3, 5, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 40, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 41, 3, 6, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 42, 3, 5, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 44, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 45, 3, 2, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 46, 3, 5, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 48, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 49, 3, 2, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 50, 3, 4, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 51, 3, 5, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 53, 3, 8, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 54, 3, 1, FALSE, FALSE) GGSM_TILEMAP_SET_DATA(data, 55, 3, 5, FALSE, FALSE) INT i REPEAT data.iMaxTiles i GGSM_GET_TILE_COLLISION_DATA_FOR_YELLOW_CLAM(data.sCollisionData[i], i) ENDREPEAT ENDPROC PROC GGSM_GET_STAGE_TILE_MAP(GGSM_TILEMAP &data, INT iStage = 0) GGSM_TILEMAP_RESET(data) SWITCH (iStage) CASE GGSM_SECTOR_EARTH GGSM_GET_TILE_MAP_DATA_FOR_EARTH_SECTOR(data) BREAK CASE GGSM_SECTOR_YELLOW_CLAM GGSM_GET_TILE_MAP_DATA_FOR_YELLOW_CLAM(data) BREAK DEFAULT GGSM_GET_TILE_MAP_DATA_FOR_EMPTY_MAP(data) BREAK ENDSWITCH ENDPROC //------------------------------------------------- // FORMATION DATA //------------------------------------------------- FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_EARTH_SECTOR(GGSM_FORMATION_DATA &data, INT iSpawnIndex)// Spawn Definitions // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 713.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 239.5084) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_ASTEROID_BELT(GGSM_FORMATION_DATA &data, INT iSpawnIndex) // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 713.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 239.5084) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1670.0000, 304.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 785.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1665.0000, 540.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1102.7141) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DUALARCH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 8) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 501.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1378.5645) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 8) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 300.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1714.8989) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 5 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1691.0000, 735.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2138.0479) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 6 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 237.0000, 236.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2534.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 7 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_FLYING_V) GGSM_FORMATION_SET_START_POSITION(data, 1683.0000, 1088.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.5505, -0.8349) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2986.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.1250, 1.1250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 8 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1690.0000, 351.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3329.4946) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 9 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1675.0000, 539.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3570.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 10 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_FLYING_V) GGSM_FORMATION_SET_START_POSITION(data, 1661.0000, 7.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.8482, 0.5297) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4055.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCONESPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.7500, 1.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 11 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1729.0000, 803.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4362.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 12 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1669.0000, 234.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4590.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 13 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1667.0000, 357.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4910.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 14 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1667.0000, 711.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4914.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 15 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1753.0000, 442.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5304.4946) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SCATTER) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 16 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_VERTLINE) GGSM_FORMATION_SET_START_POSITION(data, 1687.0000, 666.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5362.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.1250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 17 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1693.0000, 182.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5562.4946) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.1250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 18 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_FLYING_V) GGSM_FORMATION_SET_START_POSITION(data, 1889.0000, 502.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5625.3398) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 2.2500, 1.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 19 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 555.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5900.9907) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 20 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1679.0000, 201.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6075.6450) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 21 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1679.0000, 832.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6079.6450) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 22 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_ARMOUR_FRUITBOWL) GGSM_FORMATION_SET_START_POSITION(data, 1686.0000, 537.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6464.6616) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_RANDOM_WANDER) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.8750) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 23 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1672.0000, 263.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6971.4878) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.1250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 6) RETURN TRUE CASE 24 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1674.0000, 9.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.8010, 0.5986) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7555.6484) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.1250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 25 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1671.0000, 343.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8154.4146) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 26 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 669.0000, 1080.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.5368, -0.8437) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8422.2002) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 27 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 549.0000, 30.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.4350, 0.9004) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8901.8740) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 28 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_VERTLINE) GGSM_FORMATION_SET_START_POSITION(data, 1839.0000, 485.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9188.9707) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 29 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1716.0000, 725.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9671.2656) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 6) RETURN TRUE CASE 30 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1656.0000, 403.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9897.0693) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 31 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1723.0000, 826.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9950.0400) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 32 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1688.0000, 678.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10083.6328) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 33 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1655.0000, 710.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10366.2080) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_NUKE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 8) RETURN TRUE CASE 34 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1688.0000, 288.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10983.6328) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 35 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1680.0000, 484.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11211.6328) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 36 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1691.0000, 522.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11682.0244) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_FRUITBOWL) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 37 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1270.0000, 16.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.6612, 0.7502) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12042.2969) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 7) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 38 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1661.0000, 362.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12430.3164) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 39 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1708.0000, 665.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13067.2969) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, 0) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 40 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1673.0000, 731.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13091.0449) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_REPULSE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 41 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_SMOOTHIE) GGSM_FORMATION_SET_START_POSITION(data, 1800.0000, 526.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14058.2949) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_SMOOTHIE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_PLYRWAVEBLASTER) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_PINK_RING(GGSM_FORMATION_DATA &data, INT iSpawnIndex) // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1834.0000, 789.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 800.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 211.0000, 285.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1428.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1743.0000, -137.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.6903, 0.7235) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1996.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1690.0000, 511.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2184.1279) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DUALARCH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1717.0000, 225.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2864.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 5 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1739.0000, 537.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3280.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 6 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 224.0000, 822.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3358.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 7 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1668.0000, 751.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0027) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3464.7039) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_FORWARD_BACK) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 8 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1708.0000, 312.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3822.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 9 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1744.0000, 718.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4398.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 10 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1744.0000, 333.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4403.8789) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DECOY) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 11 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1324.0000, -331.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4930.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 12 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 568.0000, 1399.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, -1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5259.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 13 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1769.0000, 311.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5598.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 2.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 14 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BANANASNAKE) GGSM_FORMATION_SET_START_POSITION(data, 1677.0000, 1032.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6422.8789) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANASLICE_FRONT) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_RANDOM_WANDER) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 14) RETURN TRUE CASE 15 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1677.0000, 610.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6982.6431) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXTRALIFE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 9) RETURN TRUE CASE 16 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1677.0000, 199.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7121.0801) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 17 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1725.0000, 292.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7492.3901) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 6) RETURN TRUE CASE 18 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1547.0000, -33.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.4394, 0.8983) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8235.1182) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 19 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1661.0000, 672.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8575.1182) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_STUN) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 20 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1654.0000, 322.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9053.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 21 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1689.0000, 184.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9726.1182) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, 0) GGSM_FORMATION_SET_SPACING(data, 0.6250, 2.5000) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 22 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 238.0000, 203.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9898.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 23 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 66.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9319, 0.3628) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10283.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 24 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1666.0000, 447.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10379.2109) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SCATTER) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 25 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1920.0000, 843.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10828.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 26 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_HLINE) GGSM_FORMATION_SET_START_POSITION(data, 715.0000, -406.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11340.3564) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 2.0000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 27 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1668.0000, 773.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11345.3564) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_NUKE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 28 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1703.0000, 228.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11858.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 29 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1703.0000, 231.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12373.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 30 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 244.0000, 817.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12723.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_BASE_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 2.0000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 31 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1701.0000, 178.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13168.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 32 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_HLINE) GGSM_FORMATION_SET_START_POSITION(data, 948.0000, -309.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13370.0273) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.8750, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 33 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1701.0000, 290.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13991.1689) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 2.0000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 34 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1701.0000, 444.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14141.1689) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 2.0000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 35 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1709.0000, 733.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14368.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 36 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1361.0000, -456.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14568.6807) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 37 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1691.0000, 686.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14573.6807) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_WAVE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 38 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1709.0000, 312.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14684.9648) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 6) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 39 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1652.0000, 284.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 15521.8525) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SHIELD) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 40 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_MARINE) GGSM_FORMATION_SET_START_POSITION(data, 1907.0000, 533.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 15705.7256) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_MARINE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_YELLOW_CLAM(GGSM_FORMATION_DATA &data, INT iSpawnIndex) // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1677.0000, 480.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 255.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1654.0000, 613.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 260.4437) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_NUKE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1677.0000, 561.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 660.7986) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1686.0000, 654.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 945.0073) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 235.0000, 423.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1194.2844) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 5 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1684.0000, 412.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1643.2697) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_WAVE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 6 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1800.0000, 653.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1674.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 7 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1694.0000, 598.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2100.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCONESPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 8 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1718.0000, 402.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2233.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 9 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1740.0000, 705.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2872.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 10 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 239.0000, 370.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3125.2627) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 11 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1654.0000, 297.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3438.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 12 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1666.0000, 825.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3904.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 13 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1684.0000, 433.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4044.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 14 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1745.0000, 715.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4158.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 15 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1705.0000, 359.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4357.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCONESPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 16 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1708.0000, 582.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4736.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 17 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1250.0000, 14.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4789.6748) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, 10) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 18 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 227.0000, 332.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4862.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 13) GGSM_FORMATION_SET_SPACING(data, 1.6250, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 19 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1688.0000, 410.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5826.3867) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 20 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1688.0000, 496.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6091.9116) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXTRALIFE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 21 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_ARMOUR_FRUITBOWL1) GGSM_FORMATION_SET_START_POSITION(data, 1717.0000, 558.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6334.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_MIDDLE_Y_RANGE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 22 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 221.0000, 366.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7055.7451) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 23 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1669.0000, 785.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7169.9199) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SHIELD) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 24 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1697.0000, 694.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7589.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 25 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 258.0000, 350.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8056.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 8) RETURN TRUE CASE 26 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1653.0000, 827.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8059.5645) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 27 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1664.0000, 438.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8376.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 2.5000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 28 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1108.0000, 22.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.3599, 0.9330) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8897.2012) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 29 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1715.0000, 398.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9097.2012) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 30 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1715.0000, 247.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9340.3320) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 2.1250, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 31 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1587.0000, 1060.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.7014, -0.7128) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9924.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 32 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1686.0000, 690.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10129.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_STUN) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 33 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1690.0000, 324.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9878, 0.1559) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10266.6758) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 34 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1669.0000, 499.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10862.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 35 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1393.0000, 1138.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.4484, -0.8939) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10966.5254) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 36 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1798.0000, 288.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11019.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.5000, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 37 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1687.0000, 588.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9944, -0.1054) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11698.5254) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 38 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1669.0000, 373.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11832.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DECOY) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 39 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1670.0000, 330.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12220.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 40 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_VERTLINE) GGSM_FORMATION_SET_START_POSITION(data, 1708.0000, 435.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12752.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 41 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1674.0000, 419.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13082.2100) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_NUKE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 42 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1681.0000, 382.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13437.4365) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 43 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1690.0000, 693.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 13915.4746) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 44 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1690.0000, 367.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14496.2080) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCONESPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 2.8750, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 45 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1676.0000, 441.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14880.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 46 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1858.0000, 260.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9331, 0.3597) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 15079.0664) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 47 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1709.0000, 833.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9358, -0.3527) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 15506.8115) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 48 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 246.0000, 801.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 16069.3896) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_BASE_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.8750, 0.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 49 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1668.0000, 371.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 16858.6348) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.5000, 0.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 50 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1730.0000, 379.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 17054.3906) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.6250) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 51 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1686.0000, 743.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 17144.4746) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXPLOSION) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 52 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_VLINE) GGSM_FORMATION_SET_START_POSITION(data, 1698.0000, 287.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 17869.3906) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.5000) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 53 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 223.0000, 319.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 18424.3906) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.5000) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 54 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1439.0000, 1097.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.5553, -0.8316) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 18584.3906) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 0.5000) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 55 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1661.0000, 382.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 19692.3965) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 56 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_GRANANA) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 20210.7305) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_GRANANA) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_NONE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_DOUGH_BALL(GGSM_FORMATION_DATA &data, INT iSpawnIndex) // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 544.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 135.6943) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DUALARCH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 544.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 355.0135) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 364.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 629.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1702.0000, 772.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 995.9887) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 312.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1528.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 5 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 418.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1658.0190) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 6 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1695.0000, 241.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2045.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 7 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 626.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2250.0134) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_REPULSE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 8 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 510.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2341.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_FRUITBOWL) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 9 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1695.0000, 830.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2457.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_BASE_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 10 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1695.0000, 387.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2992.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 11 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_VERTLINE) GGSM_FORMATION_SET_START_POSITION(data, 1695.0000, 473.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3196.9429) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYVULCAN) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 12 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1456.0000, -14.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.5186, 0.8550) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3596.9429) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 13 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 547.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3833.1934) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 14 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 364.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3880.9429) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 15 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 547.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4573.1934) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 16 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1699.0000, 371.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4828.1934) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SCATTER) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 17 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1707.0000, 290.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4869.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 0) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 18 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1710.0000, -37.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.9180, 0.3966) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5477.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, 1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 19 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1710.0000, 797.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5773.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_BASE_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, 1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 20 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_VERTLINE) GGSM_FORMATION_SET_START_POSITION(data, 1684.0000, 307.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6163.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANDANA_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 21 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1684.0000, 294.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6469.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 22 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1669.0000, 531.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6691.5386) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXTRALIFE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 23 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1684.0000, 794.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 6793.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 24 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1481.0000, -206.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -0.4738, 0.8806) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7292.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 25 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1664.0000, 697.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7477.2280) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_FORWARD_BACK) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 26 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 215.0000, 324.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7500.1187) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 27 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 215.0000, 773.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7505.1187) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 28 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1420.0000, 1098.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, -1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 7805.2280) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 29 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 243.0000, 204.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 8386.0361) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYCLUSTERBOMB) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 30 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1706.0000, 375.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9069.7656) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 31 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1706.0000, 568.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9148.9521) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 32 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1706.0000, 341.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9514.7197) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAYELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 33 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_MIRROR_Y) GGSM_FORMATION_SET_START_POSITION(data, 1790.0000, 256.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 9937.2285) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANARED_ATTACK) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_NONE) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 34 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1392.0000, -249.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, 1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10218.8311) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 35 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1663.0000, 430.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10407.2285) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 36 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1702.0000, 525.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10600.2285) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 37 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1392.0000, 1279.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.0000, -1.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 10921.8867) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_FRUITBOWL) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_FORWARD_THEN_BACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYTIMEDSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 38 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1659.0000, 418.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 11518.3506) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_ROCKET) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 39 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 219.0000, 299.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12179.1396) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_LEFT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 40 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_DELAYED_HLINE) GGSM_FORMATION_SET_START_POSITION(data, 630.0000, 1097.0000) GGSM_FORMATION_SET_START_DIRECTION(data, 0.5255, -0.8508) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12484.1396) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_GREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_STRAIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 5) RETURN TRUE CASE 41 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1694.0000, 146.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 12931.3271) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_CIRCLE_SHIP_YELLOW) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_ARC_TOP_RIGHT) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSHOT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 4) RETURN TRUE CASE 42 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1717.0000, 779.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14018.2617) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAGREEN) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_BG_ATTACK) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 3) RETURN TRUE CASE 43 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_STANDARD) GGSM_FORMATION_SET_START_POSITION(data, 1694.0000, 450.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14246.3271) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BANANAJETPAC_RED) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_KAMAZAKE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_ENEMYSPREAD) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 44 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1694.0000, 600.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14405.3271) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_WAVE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 45 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1694.0000, 364.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 14626.3271) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 2) RETURN TRUE CASE 46 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_BREAD) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 15170.1084) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_BREAD_FACE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_BANANA_STAR(GGSM_FORMATION_DATA &data, INT iSpawnIndex) // Formation Definitions SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 300.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DUALARCH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1662.0000, 639.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, -0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 305.7207) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXTRALIFE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_SMOOTHIE) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_SMOOTHIE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1652.0000, 346.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1482.5034) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXPLOSION) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1800.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 5 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1646.0000, 775.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1849.4717) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_STUN) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 6 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_MARINE) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2228.1382) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_MARINE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 7 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1709.0000, 315.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2591.8416) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_FORWARD_BACK) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 8 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1659.0000, 619.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2745.7954) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 9 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1682.0000, 512.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2961.2610) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_DECOY) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 10 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_GRANANA) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_GRANANA) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 11 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1653.0000, 268.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3365.1082) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_WAVE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 12 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1673.0000, 737.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3805.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_NUKE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 13 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_BREAD) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_BREAD_FACE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 14 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1674.0000, 711.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4413.1465) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_HEALTH) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 15 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1653.0000, 715.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4575.0337) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_SCATTER) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 16 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_POWER_UP) GGSM_FORMATION_SET_START_POSITION(data, 1661.0000, 350.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4805.0000) GGSM_FORMATION_SET_POWER_UP_SPRITE(data, GGSM_SPRITE_POWER_UP_EXTRALIFE) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 17 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_DR_DANK) GGSM_FORMATION_SET_START_POSITION(data, 1825.0000, 509.0000) GGSM_FORMATION_SET_START_DIRECTION(data, -1.0000, 0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_DR_DANK_TOP) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_SPACING(data, 1.2500, 1.2500) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_BOSS_RUSH(GGSM_FORMATION_DATA &data, INT iSpawnIndex) SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_SMOOTHIE) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_SMOOTHIE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 1 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_MARINE) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 2000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_MARINE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 2 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_GRANANA) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 3000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_GRANANA) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 3 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_BREAD) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 4000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_BREAD_FACE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE CASE 4 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_DR_DANK) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 5000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_DR_DANK_TOP) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC BOOL GGSM_GET_FORMATION_DATA_FOR_BOSS_TEST(GGSM_FORMATION_DATA &data, INT iSpawnIndex) SWITCH (iSpawnIndex) CASE 0 // Formation Data GGSM_FORMATION_SET_TYPE(data, GGSM_FORMATION_BOSS_BREAD) GGSM_FORMATION_SET_START_POSITION(data,1825.0000,509.0000) GGSM_FORMATION_SET_START_DIRECTION(data,-1.0000,0.0000) GGSM_FORMATION_SET_SCROLL_DISTANCE(data, 1000.0000) GGSM_FORMATION_SET_ENTITY_TYPE(data, GGSM_ENTITY_BOSS_BREAD_FACE) GGSM_FORMATION_SET_MOVEMENT_TYPE(data, GGSM_MOVEMENT_SIN_WAVE) GGSM_FORMATION_SET_WEAPON_TYPE(data, GGSM_WEAPON_DEFAULT) GGSM_FORMATION_SET_PATH_INDEX(data, -1) GGSM_FORMATION_SET_MEMBER_COUNT(data, 1) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC PROC GGSM_GET_STAGE_FORMATION_DATA_ARRAY(GGSM_FORMATION_DATA &array[], INT iStage = 0) INT i GGSM_RESET_FORMATION_DATA_ARRAY(array) sGGSMData.iSpawnsUsed = 0 SWITCH (iStage) CASE GGSM_SECTOR_EARTH REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_EARTH_SECTOR(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_ASTEROID_BELT REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_ASTEROID_BELT(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_PINK_RING REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_PINK_RING(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_YELLOW_CLAM REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_YELLOW_CLAM(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_DOUGHBALL REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_DOUGH_BALL(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_BANANASTAR REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_BANANA_STAR(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_BOSSRUSH REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_BOSS_RUSH(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK CASE GGSM_SECTOR_BOSS_TEST REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_BOSS_TEST(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK DEFAULT REPEAT COUNT_OF(array) i IF GGSM_GET_FORMATION_DATA_FOR_EARTH_SECTOR(array[i], i) sGGSMData.iSpawnsUsed ++ ENDIF ENDREPEAT BREAK ENDSWITCH ENDPROC //------------------------------------------------- // PATH DATA //------------------------------------------------- FUNC BOOL GGSM_GET_PATH_DATA_FROM_ARRAY(GGSM_PATH_DATA &data, INT iPathIndex) // Path Definitions SWITCH (iPathIndex) CASE 0 // Path Data GGSM_PATH_DATA_SET_NUM_POINTS(data, 3) GGSM_PATH_DATA_SET_POINT(data, 0, 1664.0000, 320.0000) GGSM_PATH_DATA_SET_POINT(data, 1, 768.0000, 320.0000) GGSM_PATH_DATA_SET_POINT(data, 2, 256.0000, 640.0000) RETURN TRUE CASE 1 // Path Data GGSM_PATH_DATA_SET_NUM_POINTS(data, 3) GGSM_PATH_DATA_SET_POINT(data, 0, 1408.0000, 64.0000) GGSM_PATH_DATA_SET_POINT(data, 1, 1408.0000, 448.0000) GGSM_PATH_DATA_SET_POINT(data, 2, 256.0000, 448.0000) RETURN TRUE ENDSWITCH RETURN FALSE ENDFUNC FUNC GGSM_PATH_DATA GGSM_PATH_DATA_GET(INT iIndex) GGSM_PATH_DATA dat IF (iIndex < 0) OR (iIndex >= GGSM_MAX_PATH_LIBRARY) RETURN dat ENDIF #IF IS_DEBUG_BUILD /* #IF GGSM_PATH_EDITOR_ACTIVE RETURN sGGSMData.sDebugPathData[iIndex] #ENDIF */ #ENDIF GGSM_GET_PATH_DATA_FROM_ARRAY(dat, iIndex) RETURN dat ENDFUNC PROC GGSM_POPULATE_PATH_DATA_ARRAY(GGSM_PATH_DATA &array[]) INT i GGSM_RESET_PATH_DATA_ARRAY(array) REPEAT COUNT_OF(array) i GGSM_GET_PATH_DATA_FROM_ARRAY(array[i], i) ENDREPEAT ENDPROC