Final Fantasy X HD - Fortune Spheres

Automatically earn fortune spheres by defeating Earth Eaters at the Calm Lands Monster Arena using an unattended repeating combo.
Version0.1
Authoradampage
Publish DateTue, 17 Jun 2014 - 02:12
Last UpdateTue, 17 Jun 2014 - 02:12
Downloads64
RATE


0

0

Release Notes: This version of the script is entirely untested. I'm just hoping to get acquainted with GPC and seek advice while I wait for my CronusMax to arrive. :-)
Code: Select all
// GPC Online Library
// ffx-fortune-spheres.gpc
// =============================================================================
//
// SYSTEM:      Playstation 3
// CONTROLLER:  DualShock 3
// GAME:        Final Fantasy X HD
// TASK:        Collect Fortune Spheres
//
// DESCRIPTION:
//
// * Harvesting Fortune Spheres is a time-consuming pain in the ass.  The Earth
//   Eater - an Original Species in the Monster Arena - will drop 1 or 2 Fortune
//   Spheres upon defeat (or, rarely, Dark Matters).  This script automates the
//   menu and combat process so that Fortune Spheres can easily be accrued.
//
// ASSUMPTIONS:
//
// * Before starting the combo, the player must travel to the Calm Lands Monster
//   Arena and position Tidus so that he is adjacent to and facing the Keeper.
//
// * The player must manually speak to the Keeper and set the cursor to
//   "Fight monsters.", then start the combo.
//
// * The battle party must be sufficiently leveled & equipped to survive
//   multiple consecutive fights against the Earth Eater.
//
// * Each character in the active party must reliably inflict 99,999 points of
//   damage on every normal Attack strike, regardless of their current HP.
//
// * The first strike against an Earth Eater will result in a fatal
//   counterattack, unless the targeted character is wearing armor with the
//   Deathproof ability.
//
// * The second strike against an Earth Eater will knock it down.
//
// * All subsequent strikes against an Earth Eater will result in a Flare
//   counterattack that deals roughly 2,500 points of damage.
//
// * All party members must have armor equipped with the Auto-Phoenix ability so
//   that fallen members will automatically be revived.
//
// * 99 Phoenix Downs must be available in the player's item inventory.
//
// =============================================================================
 
// INPUTS
// -----------------------------------------------------------------------------
 
define START   = PS3_L3;
define STOP    = PS3_R3;
define CONFIRM = PS3_CROSS;
define CANCEL  = PS3_CIRCLE;
define UP      = PS3_UP;
define RIGHT   = PS3_RIGHT;
define DOWN    = PS3_DOWN;
define LEFT    = PS3_LEFT;
 
// DURATIONS (values in milliseconds; 1 second = 1000)
 
define TAP = 20; // Minimum duration to register a button tap.
 
// CONSTANTS
 
define MAXCYCLES = 24; // Maximum number of battle cycles to perform.
 
// GLOBALS
// -----------------------------------------------------------------------------
 
int running = 0;
int cycles = 0;
 
// MAIN
// -----------------------------------------------------------------------------
 
main {
 
  // When the start combo button is pressed, initialize the number of cycles
  // and flag the combo to start running.
 
  if (get_val(START)) {
    cycles = 0;
    running = 1;
  }
 
  // When the stop button is pressed, or when the maximum number of cycles
  // has been reached, flag the combo to stop running.
 
  if (get_val(STOP) || cycles >= MAXCYCLES) {
    running = 0;
  }
 
  // Continue running the combo until flagged otherwise.
 
  if (running == 1) {
    combo_run(fightEarthEater);
    cycles = cycles + 1;
  }
}
 
// COMBOS
// -----------------------------------------------------------------------------
 
// Fight and defeat an Earth Eater.  Defeating the Earth Eater requires 14
// strikes of 99,999 damage each.
 
combo fightEarthEater {
 
  // Select fiend and enter combat.
 
  call(pressConfirm); call(waitForAreaMenu);
  call(pressUp);      call(waitForCursor);
  call(pressRight);   call(waitForCursor);
  call(pressConfirm); call(waitForFiendMenu);
  call(pressConfirm); call(waitForAreYouSure);
  call(pressConfirm); call(waitForBattlePrompt);
 
  // Fight!
 
  call(attack); call(waitForCounterPunch);
  call(attack); call(waitForKnockdown);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForCounterFlare);
  call(attack); call(waitForVictory);
 
  // Item get!
 
  call(pressConfirm); call(waitForItemResults);
  call(pressConfirm); call(waitForReset);
}
 
// HELPER COMBOS
// -----------------------------------------------------------------------------
 
// When this combo is called, it is assumed the player is in combat and the
// cursor is currently targeting the "Attack" command.
combo attack {
  call(pressConfirm);
  call(waitForCursor);
  call(pressConfirm);
}
 
// Time between menu cursor movements.
combo waitForCursor {
  wait(500);
}
 
// Time between the Keeper dialog and the area menu.
combo waitForAreaMenu {
  wait(4000);
  wait(1000);
}
 
// Time between the area menu and the fiend menu.
combo waitForFiendMenu {
  wait(1000);
}
 
// Time before fiend's confirmation dialog appears.
combo waitForAreYouSure {
  wait(1000);
}
 
// Time between confirming fiend and Attack prompt.
combo waitForBattlePrompt {
  wait(4000);
  wait(4000);
  wait(2000);
}
 
// Time between confirming fiend and Attack prompt with 2-punch ambush.
combo waitForAmbushBattlePrompt {
  wait(4000);
  wait(4000);
  wait(4000);
  wait(4000);
}
 
// Time for the Megaton Punch and phoenix down.
combo waitForCounterPunch {
  wait(4000);
  wait(4000);
  wait(4000);
  wait(4000);
}
 
// Time to knock down the Earth Eater.
combo waitForKnockdown {
  wait(2000);
}
 
// Time for flare and, potentially, phoenix down.
combo waitForCounterFlare {
  wait(4000);
  wait(4000);
  wait(4000);
  wait(4000);
}
 
// The fiend's death animation, time to AP screen.
combo waitForVictory {
  wait(4000);
  wait(4000);
  wait(4000);
  wait(4000);
  wait(4000);
}
 
// Time between AP results and item results.
combo waitForItemResults {
  wait(2000);
}
 
// Time between item results and Keeper dialog.
combo waitForReset {
  wait(3000);
}
 
// Press the confirm button.
combo pressConfirm {
  set_val(CONFIRM, 100);
  wait(TAP);
  set_val(CONFIRM, 0);
}
 
// Press up on the directional pad.
combo pressUp {
  set_val(UP, 100);
  wait(TAP);
  set_val(UP, 0);
}
 
// Press up on the directional pad.
combo pressRight {
  set_val(RIGHT, 100);
  wait(TAP);
  set_val(RIGHT, 0);
}