Beispiel #1
0
    $temp_condition .= $mmrpg_database_fields_filter;
}
// Collect the database fields
$field_fields = rpg_field::get_index_fields(true);
$db->query("SET @field_row_number = 0;");
$mmrpg_database_fields = $db->get_array_list("SELECT {$field_fields} FROM mmrpg_index_fields WHERE field_flag_published = 1 AND (field_flag_hidden = 0 OR field_token = '{$this_current_token}') {$temp_condition} ORDER BY field_flag_hidden ASC, field_order ASC;", 'field_token');
$mmrpg_database_fields_count = $db->get_value("SELECT COUNT(field_id) AS field_count FROM mmrpg_index_fields WHERE field_flag_published = 1 AND field_flag_hidden = 0 {$temp_condition_unfiltered};", 'field_count');
$mmrpg_database_fields_numbers = $db->get_array_list("SELECT field_token, (@field_row_number:=@field_row_number + 1) AS field_key FROM mmrpg_index_fields WHERE field_flag_published = 1 {$temp_condition_unfiltered} ORDER BY field_flag_hidden ASC, field_order ASC;", 'field_token');
// Remove unallowed fields from the database
foreach ($mmrpg_database_fields as $temp_token => $temp_info) {
    // Define first field token if not set
    if (!isset($first_field_token)) {
        $first_field_token = $temp_token;
    }
    // Send this data through the field index parser
    $temp_info = rpg_field::parse_index_info($temp_info);
    // Collect this field's key in the index
    $temp_info['field_key'] = $mmrpg_database_fields_numbers[$temp_token]['field_key'];
    if (in_array($temp_token, $hidden_database_fields)) {
        unset($mmrpg_database_fields[$temp_token]);
    } else {
        // Ensure this field's image exists, else default to the placeholder
        if ($temp_info['field_flag_complete']) {
            $temp_info['field_image'] = $temp_token;
        } else {
            $temp_info['field_image'] = 'field';
        }
    }
    // Update the data in the fields index array
    $mmrpg_database_fields[$temp_token] = $temp_info;
}
 function generate_player($this_prototype_data, $this_user_info, $this_max_robots, &$field_factors_one, &$field_factors_two, &$field_factors_three)
 {
     // Pull in global variables for this function
     global $mmrpg_index, $db, $this_omega_factors_one, $this_omega_factors_two, $this_omega_factors_three, $this_omega_factors_four, $this_omega_factors_five, $this_omega_factors_six, $this_omega_factors_seven, $this_omega_factors_eight, $this_omega_factors_nine;
     $this_field_index = rpg_field::get_index();
     // Define the omega battle and default to empty
     $temp_battle_omega = array();
     $temp_battle_omega['flags']['save_records'] = false;
     $temp_battle_omega['flags']['player_battle'] = true;
     $temp_battle_omega['values']['player_battle_masters'] = array();
     $temp_battle_omega['values']['player_battle_level'] = 1;
     // Define the local scope current player
     $this_player_token = $this_prototype_data['this_player_token'];
     $target_player_token = $this_prototype_data['target_player_token'];
     $target_player_token_backup = $target_player_token;
     // DEBUG
     //die('<pre>'.print_r($temp_player_array, true).'</pre>');
     // Pull and random player from the list and collect their full data
     $temp_player_array = $this_user_info;
     /* $temp_player_array = $db->get_array("SELECT users.*, saves.*, boards.* FROM mmrpg_users AS users
         LEFT JOIN mmrpg_saves AS saves ON saves.user_id = users.user_id
         LEFT JOIN mmrpg_leaderboard AS boards ON boards.user_id = users.user_id
       	WHERE users.user_id = {$this_user_id}
       	"); */
     // Add this player data to the omage array
     $temp_battle_omega_player = $temp_player_array;
     // DEBUG
     //echo('<pre>'.print_r($temp_player_array, true).'</pre>');
     // Collect the player values and decode the rewards and settings arrays
     $temp_player_rewards = $temp_player_array['player_rewards'];
     $temp_player_settings = $temp_player_array['player_settings'];
     $temp_player_starforce = $temp_player_array['player_starforce'];
     $temp_player_favourites = $temp_player_array['player_favourites'];
     // Calculate what level these bonus robots should be in the range of
     $temp_player_rewards2 = rpg_game::player_rewards($this_prototype_data['this_player_token']);
     $temp_total_level = 0;
     $temp_total_robots = 0;
     $temp_bonus_level_min = 100;
     $temp_bonus_level_max = 1;
     if (!empty($temp_player_rewards2['player_robots'])) {
         foreach ($temp_player_rewards2['player_robots'] as $token => $info) {
             $temp_level = !empty($info['robot_level']) ? $info['robot_level'] : 1;
             if ($temp_level > $temp_bonus_level_max) {
                 $temp_bonus_level_max = $temp_level;
             }
             if ($temp_level < $temp_bonus_level_min) {
                 $temp_bonus_level_min = $temp_level;
             }
             $temp_total_robots++;
         }
         //$temp_bonus_level_max = ceil($temp_total_level / $temp_total_robots);
         //$temp_bonus_level_min = ceil($temp_bonus_level_max / 3);
     }
     // Round the number to the nearst multiple of ten so it looks nicer
     $temp_player_battle_level = $temp_bonus_level_max;
     $temp_player_battle_level = floor($temp_player_battle_level * 0.1) * 10;
     if ($temp_player_battle_level < 10) {
         $temp_player_battle_level = 10;
     }
     // Update the player battle level to match that of this player's highest
     $temp_battle_omega['values']['player_battle_level'] = $temp_player_battle_level;
     // Create the empty array for the target player's battle robots
     $temp_player_robots = array();
     $temp_player_robots_rewards = !empty($temp_player_rewards[$target_player_token]['player_robots']) ? $temp_player_rewards[$target_player_token]['player_robots'] : array();
     $temp_player_robots_settings = !empty($temp_player_settings[$target_player_token]['player_robots']) ? $temp_player_settings[$target_player_token]['player_robots'] : array();
     $temp_player_field_settings = !empty($temp_player_settings[$target_player_token]['player_fields']) ? $temp_player_settings[$target_player_token]['player_fields'] : array();
     if (empty($temp_player_robots_rewards)) {
         foreach ($temp_player_rewards as $ptoken => $pinfo) {
             if (!empty($temp_player_rewards[$ptoken]['player_robots'])) {
                 $target_player_token = $ptoken;
                 $temp_player_robots_rewards = !empty($temp_player_rewards[$target_player_token]['player_robots']) ? $temp_player_rewards[$target_player_token]['player_robots'] : array();
                 $temp_player_robots_settings = !empty($temp_player_settings[$target_player_token]['player_robots']) ? $temp_player_settings[$target_player_token]['player_robots'] : array();
                 $temp_player_field_settings = !empty($temp_player_settings[$target_player_token]['player_fields']) ? $temp_player_settings[$target_player_token]['player_fields'] : array();
                 break;
             }
         }
     }
     //echo('<pre>'.__FILE__.' on line '.__LINE__.' : $temp_player_robots_rewards = '.preg_replace('/\s+/', ' ', print_r($temp_player_robots_rewards, true)).'</pre>');
     //echo('<pre>'.__FILE__.' on line '.__LINE__.' : $temp_player_robots_settings = '.preg_replace('/\s+/', ' ', print_r($temp_player_robots_settings, true)).'</pre>');
     // If the player fields setting is empty, define manually
     if (empty($temp_player_field_settings)) {
         $temp_omega_fields = array();
         if ($target_player_token == 'dr-light') {
             $temp_omega_fields = $this_omega_factors_one;
         } elseif ($target_player_token == 'dr-wily') {
             $temp_omega_fields = $this_omega_factors_two;
         } elseif ($target_player_token == 'dr-cossack') {
             $temp_omega_fields = $this_omega_factors_three;
         }
         foreach ($temp_omega_fields as $omega) {
             $temp_player_field_settings[$omega['field']] = array('field_token' => $omega['field']);
         }
     }
     // Ensure this player has been unlocked by the target before continuing
     if (!empty($temp_player_robots_rewards)) {
         //echo('<pre>'.__FILE__.' on line '.__LINE__.' : '.preg_replace('/\s+/', ' ', print_r($temp_player_rewards[$target_player_token], true)).'</pre>');
         // Collect the target player's robot rewards from the array
         $temp_player_robots = $temp_player_robots_rewards;
         // Define the array to hold the omega battle robots
         $temp_battle_omega_robots = array();
         // Loop through the reward robots and append their info
         $temp_counter = 1;
         foreach ($temp_player_robots as $key => $temp_robotinfo) {
             // Skip if does not exist
             if (empty($temp_robotinfo['robot_token'])) {
                 continue;
             }
             // Collect this robot's settings if they exist
             if (!empty($temp_player_robots_settings[$temp_robotinfo['robot_token']])) {
                 $temp_settings_array = $temp_player_robots_settings[$temp_robotinfo['robot_token']];
             } else {
                 $temp_settings_array = $temp_robotinfo;
             }
             // Collect this robot's rewards if they exist
             if (!empty($temp_player_robots_rewards[$temp_robotinfo['robot_token']])) {
                 $temp_rewards_array = $temp_player_robots_rewards[$temp_robotinfo['robot_token']];
             } else {
                 $temp_rewards_array = $temp_robotinfo;
             }
             // Collect the basic details of this robot like ID, token, and level
             $temp_robot_id = MMRPG_SETTINGS_TARGET_PLAYERID + $temp_counter;
             $temp_robot_token = $temp_robotinfo['robot_token'];
             $temp_robot_level = $temp_battle_omega['values']['player_battle_level'];
             //!empty($temp_robotinfo['robot_level']) ? $temp_robotinfo['robot_level'] : 1;
             $temp_robot_favourite = in_array($temp_robot_token, $temp_player_favourites) ? 1 : 0;
             $temp_robot_image = !empty($temp_settings_array['robot_image']) ? $temp_settings_array['robot_image'] : $temp_robotinfo['robot_token'];
             //$temp_robot_rewards = $temp_player_rewards[$target_player_token];
             $temp_robot_rewards = $temp_rewards_array;
             $temp_robot_settings = $temp_settings_array;
             // Collect this robot's abilities, format them, and crop if necessary
             $temp_robot_abilities = array();
             foreach ($temp_settings_array['robot_abilities'] as $key2 => $temp_abilityinfo) {
                 $temp_robot_abilities[] = $temp_abilityinfo['ability_token'] != 'copy-shot' ? $temp_abilityinfo['ability_token'] : 'buster-shot';
             }
             $temp_robot_abilities = count($temp_robot_abilities) > 8 ? array_slice($temp_robot_abilities, 0, 8) : $temp_robot_abilities;
             // Create the new robot info array to be added to the omega battle options
             $temp_new_array = array('values' => array('flag_favourite' => $temp_robot_favourite, 'robot_rewards' => $temp_robot_rewards), 'robot_id' => $temp_robot_id, 'robot_token' => $temp_robot_token, 'robot_level' => $temp_robot_level, 'robot_image' => $temp_robot_image, 'robot_abilities' => $temp_robot_abilities);
             // Add this robot to the omega array and increment the counter
             $temp_battle_omega_robots[] = $temp_new_array;
             $temp_counter++;
         }
         // Sort the player's robots according to their level
         usort($temp_battle_omega_robots, 'mmrpg_prototype_sort_player_robots');
         // Slice the robot array based on the max num requested
         $temp_max_robots = $this_max_robots;
         $temp_omega_robots_count = count($temp_battle_omega_robots);
         if ($temp_omega_robots_count > $temp_max_robots) {
             $temp_battle_omega_robots = array_slice($temp_battle_omega_robots, 0, $temp_max_robots);
             shuffle($temp_battle_omega_robots);
         } elseif ($temp_omega_robots_count < $temp_max_robots) {
             $temp_max_robots = $temp_omega_robots_count;
         }
         $temp_omega_robots_count = count($temp_battle_omega_robots);
         // DEBUG
         //die('<pre><strong>$temp_battle_omega_robots</strong><br />'.print_r($temp_battle_omega_robots, true).'</pre>');
         // Populate the battle options with the player battle option
         $temp_battle_userid = $temp_battle_omega_player['user_id'];
         $temp_battle_usertoken = $temp_battle_omega_player['user_name_clean'];
         $temp_battle_username = !empty($temp_battle_omega_player['user_name_public']) ? $temp_battle_omega_player['user_name_public'] : $temp_battle_omega_player['user_name'];
         $temp_battle_userpronoun = $temp_battle_omega_player['user_gender'] == 'male' ? 'his' : ($temp_battle_omega_player['user_gender'] == 'female' ? 'her' : 'their');
         //$temp_battle_userimage = !empty($temp_battle_omega_player['user_image_path']) ? $temp_battle_omega_player['user_image_path'] : 'robots/mega-man';
         $temp_robots_num = count($temp_battle_omega_robots);
         $temp_battle_token = $this_prototype_data['phase_battle_token'] . '-vs-player-' . $temp_battle_usertoken;
         $backup_fields = array('flags', 'values', 'counters');
         $backup_values = array();
         foreach ($backup_fields as $field) {
             $backup_values[$field] = isset($temp_battle_omega[$field]) ? $temp_battle_omega[$field] : array();
         }
         $temp_battle_omega = rpg_battle::get_index_info('bonus-prototype-complete-3');
         foreach ($backup_fields as $field) {
             $temp_battle_omega[$field] = isset($temp_battle_omega[$field]) ? array_replace($temp_battle_omega[$field], $backup_values[$field]) : $backup_values[$field];
         }
         $temp_challenge_type = ($temp_max_robots == 8 ? 'an ' : 'a ') . $temp_max_robots . '-on-' . $temp_max_robots;
         $temp_star_boost = !empty($temp_player_starforce) ? array_sum($temp_player_starforce) : 0;
         $temp_battle_omega['battle_token'] = $temp_battle_token;
         $temp_battle_omega['battle_size'] = '1x2';
         $temp_battle_omega['battle_phase'] = $this_prototype_data['battle_phase'];
         $temp_battle_omega['battle_name'] = 'Player Battle vs ' . $temp_battle_username;
         if (!empty($temp_star_boost)) {
             reset($temp_player_starforce);
             $temp_most_powerful = key($temp_player_starforce);
             $temp_most_powerful_value = $temp_player_starforce[$temp_most_powerful];
             //$temp_battle_omega['battle_description'] = 'Defeat '.ucfirst($temp_battle_username).'&#39;s starforce boosted player data in a '.$temp_challenge_type.' battle! The '.ucfirst($temp_most_powerful).' type appears to be '.$temp_battle_userpronoun.' most powerful element, with '.($temp_most_powerful_value * 10).'&nbsp;/&nbsp;'.($temp_star_boost * 10).'% of the total boost!';
             $temp_battle_omega['battle_description'] = 'Defeat ' . ucfirst($temp_battle_username) . '&#39;' . (!preg_match('/s$/i', $temp_battle_username) ? 's' : '') . ' starforce boosted player data in ' . $temp_challenge_type . ' battle!';
             $temp_battle_omega['battle_description2'] = 'The ' . ucfirst($temp_most_powerful) . ' type appears to be ' . $temp_battle_userpronoun . ' most powerful element, with nearly ' . ceil($temp_most_powerful_value / $temp_star_boost * 100) . '% of the total boost!';
         } else {
             $temp_battle_omega['battle_description'] = 'Defeat ' . ucfirst($temp_battle_username) . '&#39;' . (!preg_match('/s$/i', $temp_battle_username) ? 's' : '') . ' player data in ' . $temp_challenge_type . ' battle!';
             $temp_battle_omega['battle_description2'] = '';
         }
         $temp_battle_omega['battle_turns_limit'] = ceil(MMRPG_SETTINGS_BATTLETURNS_PERROBOT * $temp_robots_num * MMRPG_SETTINGS_BATTLETURNS_PLAYERBATTLE_MULTIPLIER);
         $temp_battle_omega['battle_robots_limit'] = $this_max_robots;
         $temp_battle_omega['battle_points'] = 0;
         foreach ($temp_battle_omega_robots as $info) {
             $temp_stat_counter = 0;
             $temp_robot_rewards = !empty($info['values']['robot_rewards']) ? $info['values']['robot_rewards'] : array();
             if (!empty($temp_robot_rewards['robot_energy'])) {
                 $temp_stat_counter += $temp_robot_rewards['robot_energy'];
             }
             if (!empty($temp_robot_rewards['robot_attack'])) {
                 $temp_stat_counter += $temp_robot_rewards['robot_attack'];
             }
             if (!empty($temp_robot_rewards['robot_defense'])) {
                 $temp_stat_counter += $temp_robot_rewards['robot_defense'];
             }
             if (!empty($temp_robot_rewards['robot_speed'])) {
                 $temp_stat_counter += $temp_robot_rewards['robot_speed'];
             }
             $temp_battle_omega['battle_points'] += ceil(MMRPG_SETTINGS_BATTLEPOINTS_PERROBOT * $info['robot_level'] * MMRPG_SETTINGS_BATTLEPOINTS_PLAYERBATTLE_MULTIPLIER) + $temp_stat_counter;
             $temp_battle_omega['battle_points'] += !empty($temp_star_boost) ? ceil($temp_star_boost * $temp_stat_counter / MMRPG_SETTINGS_STARS_ATTACKBOOST) : 0;
             $temp_battle_omega['values']['player_battle_masters'][] = $info['robot_token'];
         }
         //if (!empty($temp_star_boost)){ $temp_battle_omega['battle_points'] += ceil($temp_star_boost * 1000);  }
         // Define the fusion field properties
         //$temp_battle_omega['battle_field_info']['field_name'] = ucfirst($temp_battle_username); //'Player Battle : '.$temp_battle_username;
         $temp_battle_omega['battle_button'] = ucfirst($temp_battle_username);
         $temp_field_info_options = array_keys($temp_player_field_settings);
         $temp_rand_int = mt_rand(1, 4);
         $temp_rand_start = ($temp_rand_int - 1) * 2;
         $temp_field_info_options = array_slice($temp_field_info_options, $temp_rand_start, 2);
         //shuffle($temp_field_info_options);
         $temp_field_token_one = $temp_field_info_options[0];
         $temp_field_token_two = $temp_field_info_options[1];
         $temp_field_info_one = rpg_field::parse_index_info($this_field_index[$temp_field_token_one]);
         $temp_field_info_two = rpg_field::parse_index_info($this_field_index[$temp_field_token_two]);
         $temp_option_multipliers = array();
         $temp_option_field_list = array($temp_field_info_one, $temp_field_info_two);
         $temp_battle_omega['battle_field_info']['field_name'] = preg_replace('/^([-_a-z0-9\\s]+)\\s+([-_a-z0-9]+)$/i', '$1', $temp_field_info_one['field_name']) . ' ' . preg_replace('/^([-_a-z0-9\\s]+)\\s+([-_a-z0-9]+)$/i', '$2', $temp_field_info_two['field_name']);
         foreach ($temp_option_field_list as $temp_field) {
             if (!empty($temp_field['field_multipliers'])) {
                 foreach ($temp_field['field_multipliers'] as $temp_type => $temp_multiplier) {
                     if (!isset($temp_option_multipliers[$temp_type])) {
                         $temp_option_multipliers[$temp_type] = $temp_multiplier;
                     } else {
                         $temp_option_multipliers[$temp_type] = $temp_option_multipliers[$temp_type] * $temp_multiplier;
                     }
                 }
             }
         }
         //$temp_battle_omega['battle_field_info']['field_music'] = $temp_field_token_three['field'];
         $temp_battle_omega['battle_field_info']['field_type'] = !empty($temp_field_info_one['field_type']) ? $temp_field_info_one['field_type'] : '';
         $temp_battle_omega['battle_field_info']['field_type2'] = !empty($temp_field_info_two['field_type']) ? $temp_field_info_two['field_type'] : '';
         $temp_battle_omega['battle_field_info']['field_music'] = $temp_field_token_two;
         $temp_battle_omega['battle_field_info']['field_background'] = $temp_field_token_one;
         $temp_battle_omega['battle_field_info']['field_foreground'] = $temp_field_token_two;
         // Update the battle robot limit once more in case target had fewer robots than anticipated
         $temp_battle_omega['battle_robots_limit'] = count($temp_battle_omega_robots);
         //$temp_battle_omega['battle_description'] .= ' // starforce:+'.($temp_star_boost * 10).'% // background:'.$temp_battle_omega['battle_field_info']['field_background'].' / foreground:'.$temp_battle_omega['battle_field_info']['field_foreground'];
         $temp_battle_omega['battle_field_info']['field_multipliers'] = $temp_option_multipliers;
         $temp_battle_omega['battle_field_info']['field_mechas'] = array();
         if (!empty($temp_field_info_one['field_mechas'])) {
             $temp_battle_omega['battle_field_info']['field_mechas'] = array_merge($temp_battle_omega['battle_field_info']['field_mechas'], $temp_field_info_one['field_mechas']);
         }
         if (!empty($temp_field_info_two['field_mechas'])) {
             $temp_battle_omega['battle_field_info']['field_mechas'] = array_merge($temp_battle_omega['battle_field_info']['field_mechas'], $temp_field_info_two['field_mechas']);
         }
         //if (!empty($temp_option_field_list[2]['field_mechas'])){ $temp_battle_omega['battle_field_info']['field_mechas'] = array_merge($temp_battle_omega['battle_field_info']['field_mechas'], $temp_option_field_list[2]['field_mechas']); }
         if (empty($temp_battle_omega['battle_field_info']['field_mechas'])) {
             $temp_battle_omega['battle_field_info']['field_mechas'][] = 'met';
         }
         $temp_battle_omega['battle_field_info']['field_background_frame'] = $temp_field_info_one['field_background_frame'];
         $temp_battle_omega['battle_field_info']['field_foreground_frame'] = $temp_field_info_two['field_foreground_frame'];
         $temp_battle_omega['battle_field_info']['field_background_attachments'] = $temp_field_info_one['field_background_attachments'];
         $temp_battle_omega['battle_field_info']['field_foreground_attachments'] = $temp_field_info_two['field_foreground_attachments'];
         // Define the final details for the player
         $temp_battle_omega['battle_target_player']['player_id'] = $temp_battle_userid;
         $temp_battle_omega['battle_target_player']['player_token'] = $target_player_token_backup;
         $temp_battle_omega['battle_target_player']['player_name'] = ucfirst($temp_battle_username);
         $temp_battle_omega['battle_target_player']['player_robots'] = $temp_battle_omega_robots;
         $temp_battle_omega['battle_target_player']['player_starforce'] = $temp_player_starforce;
     } else {
         return false;
     }
     // Return the generated battle data
     return $temp_battle_omega;
 }
Beispiel #3
0
     // Collect the info for this base field and create the star
     $field_info = rpg_field::parse_index_info($mmrpg_database_fields[$token]);
     if (isset($_SESSION[$session_token]['values']['battle_stars'][$token])) {
         $star_info = $_SESSION[$session_token]['values']['battle_stars'][$token];
     } else {
         $star_info = array('star_token' => $token, 'star_name' => $field_info['field_name'], 'star_kind' => 'field', 'star_type' => $field_info['field_type'], 'star_type2' => '', 'star_player' => '', 'star_date' => '');
     }
     $star_list_array_raw['today'][$star_info['star_token']] = $star_info;
     $temp_star_tokens[] = $star_info['star_token'];
     // Collect the two fusion field token info and create stars
     $key2 = $key + $temp_star_counter;
     $key3 = $key2 + $temp_star_counter;
     $token2 = isset($temp_base_tokens[$key2]) ? $temp_base_tokens[$key2] : $temp_base_tokens[$key2 % count($temp_base_tokens)];
     $token3 = isset($temp_base_tokens[$key3]) ? $temp_base_tokens[$key3] : $temp_base_tokens[$key3 % count($temp_base_tokens)];
     $field_info2 = rpg_field::parse_index_info($mmrpg_database_fields[$token2]);
     $field_info3 = rpg_field::parse_index_info($mmrpg_database_fields[$token3]);
     $fusion_token = preg_replace('/-([a-z0-9]+)$/i', '', $token2) . '-' . preg_replace('/^([a-z0-9]+)-/i', '', $token3);
     $fusion_name = preg_replace('/\\s+([a-z0-9]+)$/i', '', $field_info2['field_name']) . ' ' . preg_replace('/^([a-z0-9]+)\\s+/i', '', $field_info3['field_name']);
     $fusion_type = !empty($field_info2['field_type']) ? $field_info2['field_type'] : '';
     $fusion_type2 = !empty($field_info3['field_type']) ? $field_info3['field_type'] : '';
     if (isset($_SESSION[$session_token]['values']['battle_stars'][$fusion_token])) {
         $star_info = $_SESSION[$session_token]['values']['battle_stars'][$fusion_token];
     } else {
         $star_info = array('star_token' => $fusion_token, 'star_name' => $fusion_name, 'star_kind' => 'fusion', 'star_type' => $fusion_type, 'star_type2' => $fusion_type2, 'star_player' => '', 'star_date' => '');
     }
     $star_list_array_raw['today'][$star_info['star_token']] = $star_info;
     $temp_star_tokens[] = $star_info['star_token'];
     //$temp_star_tokens[] = "\$key2 = {$key2}; \$key3 = {$key3};\n\$token2 = {$token2}; \$token3 = {$token3}; ";
 }
 /*
 ob_end_clean();
Beispiel #4
0
 }
 // Send this data through the robot index parser
 $temp_info = rpg_robot::parse_index_info($temp_info);
 // Collect this robot's key in the index
 $temp_info['robot_key'] = $mmrpg_database_robots_numbers[$temp_token]['robot_key'];
 // Ensure this robot's image exists, else default to the placeholder
 if ($temp_info['robot_flag_complete']) {
     $temp_info['robot_image'] = $temp_token;
 } else {
     $temp_info['robot_image'] = 'robot';
 }
 // Modify the name of this robot if it is of the mecha class
 if ($temp_info['robot_class'] == 'mecha' && defined('DATA_DATABASE_SHOW_MECHAS')) {
     // Collect this mecha's field token, then robot master token, then robot master number
     $temp_field_token = $temp_info['robot_field'];
     $temp_field_info = !empty($mmrpg_database_fields[$temp_field_token]) ? rpg_field::parse_index_info($mmrpg_database_fields[$temp_field_token]) : array();
     $temp_master_token = !empty($temp_field_info['field_master']) ? $temp_field_info['field_master'] : 'met';
     $temp_master_number = $mmrpg_database_robots[$temp_master_token]['robot_number'];
     $temp_info['robot_master_number'] = $temp_master_number;
 } elseif ($temp_info['robot_class'] == 'master') {
     $temp_info['robot_master_number'] = $temp_info['robot_number'];
 } elseif ($temp_info['robot_class'] == 'boss') {
     $temp_info['robot_master_number'] = $temp_info['robot_number'];
 }
 // Increment the robot core counter if not empty
 if (!empty($temp_info['robot_core'])) {
     $mmrpg_database_robots_types['cores'][$temp_info['robot_core']]++;
 } else {
     $mmrpg_database_robots_types['cores']['none']++;
 }
 if (!empty($temp_info['robot_core2'])) {
    public static function print_editor_markup($player_info)
    {
        // Define the global variables
        global $mmrpg_index, $this_current_uri, $this_current_url, $db;
        global $allowed_edit_players, $allowed_edit_fields, $global_allow_editing;
        global $allowed_edit_data_count, $allowed_edit_player_count, $first_player_token;
        global $key_counter, $player_key, $player_counter, $player_rewards, $player_field_rewards, $player_item_rewards, $temp_player_totals, $player_options_markup;
        global $mmrpg_database_robots, $mmrpg_database_items;
        $session_token = rpg_game::session_token();
        // If either fo empty, return error
        if (empty($player_info)) {
            return 'error:player-empty';
        }
        // Collect the approriate database indexes
        if (empty($mmrpg_database_robots)) {
            $mmrpg_database_robots = $db->get_array_list("SELECT * FROM mmrpg_index_robots WHERE robot_flag_complete = 1;", 'robot_token');
        }
        if (empty($mmrpg_database_items)) {
            $mmrpg_database_items = $db->get_array_list("SELECT * FROM mmrpg_index_abilities WHERE ability_class = 'item' AND ability_flag_complete = 1;", 'ability_token');
        }
        // Define the quick-access variables for later use
        $player_token = $player_info['player_token'];
        if (!isset($first_player_token)) {
            $first_player_token = $player_token;
        }
        // Define the player's image and size if not defined
        $player_info['player_image'] = !empty($player_info['player_image']) ? $player_info['player_image'] : $player_info['player_token'];
        $player_info['player_image_size'] = !empty($player_info['player_image_size']) ? $player_info['player_image_size'] : 40;
        // Define the player's battle points total, battles complete, and other details
        $player_info['player_points'] = rpg_game::player_points($player_token);
        $player_info['player_battles_complete'] = rpg_prototype::battles_complete($player_token);
        $player_info['player_battles_complete_total'] = rpg_prototype::battles_complete($player_token, false);
        $player_info['player_battles_failure'] = rpg_prototype::battles_failure($player_token);
        $player_info['player_battles_failure_total'] = rpg_prototype::battles_failure($player_token, false);
        $player_info['player_robots_count'] = 0;
        $player_info['player_abilities_count'] = rpg_game::abilities_unlocked($player_token);
        $player_info['player_field_stars'] = rpg_game::stars_unlocked($player_token, 'field');
        $player_info['player_fusion_stars'] = rpg_game::stars_unlocked($player_token, 'fusion');
        $player_info['player_screw_counter'] = 0;
        $player_info['player_heart_counter'] = 0;
        // Define the player's experience points total
        $player_info['player_experience'] = 0;
        // Collect this player's current defined omega item list
        if (!empty($_SESSION[$session_token]['values']['battle_rewards'])) {
            //$debug_experience_sum = $player_token.' : ';
            foreach ($_SESSION[$session_token]['values']['battle_rewards'] as $temp_player => $temp_player_info) {
                if (!empty($_SESSION[$session_token]['values']['battle_rewards'][$temp_player]['player_robots'])) {
                    $temp_player_robot_rewards = $_SESSION[$session_token]['values']['battle_rewards'][$temp_player]['player_robots'];
                    $temp_player_robot_settings = $_SESSION[$session_token]['values']['battle_settings'][$temp_player]['player_robots'];
                    if (empty($temp_player_robot_rewards) || empty($temp_player_robot_settings)) {
                        unset($_SESSION[$session_token]['values']['battle_rewards'][$temp_player]['player_robots']);
                        unset($_SESSION[$session_token]['values']['battle_settings'][$temp_player]['player_robots']);
                        continue;
                    }
                    foreach ($temp_player_robot_rewards as $temp_key => $temp_robot_info) {
                        if (empty($temp_robot_info['robot_token'])) {
                            unset($_SESSION[$session_token]['values']['battle_rewards'][$temp_player]['player_robots'][$temp_key]);
                            unset($_SESSION[$session_token]['values']['battle_settings'][$temp_player]['player_robots'][$temp_key]);
                            continue;
                        }
                        $temp_robot_settings = $temp_player_robot_settings[$temp_robot_info['robot_token']];
                        $temp_robot_rewards = $temp_player_robot_settings[$temp_robot_info['robot_token']];
                        // If this robot is not owned by the player, skip it as it doesn't count towards their totals
                        if (empty($temp_robot_settings['original_player']) && $temp_player != $player_token) {
                            continue;
                        } elseif (empty($temp_robot_settings['original_player'])) {
                            $temp_robot_settings['original_player'] = $temp_player;
                        }
                        if ($temp_robot_settings['original_player'] != $player_token) {
                            continue;
                        }
                        //$debug_experience_sum .= $temp_robot_info['robot_token'].', ';
                        $player_info['player_robots_count']++;
                        if (!empty($temp_robot_info['robot_level'])) {
                            $player_info['player_experience'] += $temp_robot_info['robot_level'] * MMRPG_SETTINGS_BATTLEPOINTS_PERROBOT;
                        }
                        if (!empty($temp_robot_info['robot_experience'])) {
                            $player_info['player_experience'] += $temp_robot_info['robot_experience'];
                        }
                    }
                }
            }
            //die($debug_experience_sum);
        }
        // Collect this player's current field selection from the omega session
        $temp_session_key = $player_info['player_token'] . '_target-robot-omega_prototype';
        $player_info['target_robot_omega'] = !empty($_SESSION[$session_token]['values'][$temp_session_key]) ? $_SESSION[$session_token]['values'][$temp_session_key] : array();
        $player_info['player_fields_current'] = array();
        //die('<pre>$player_info[\'target_robot_omega\'] = '.print_r($player_info['target_robot_omega'], true).'</pre>');
        if (count($player_info['target_robot_omega']) == 2) {
            $player_info['target_robot_omega'] = array_shift($player_info['target_robot_omega']);
        }
        foreach ($player_info['target_robot_omega'] as $key => $info) {
            $field = rpg_field::get_index_info($info['field']);
            if (empty($field)) {
                continue;
            }
            $player_info['player_fields_current'][] = $field;
        }
        // Define this player's stat type boost for display purposes
        $player_info['player_stat_type'] = '';
        if (!empty($player_info['player_energy'])) {
            $player_info['player_stat_type'] = 'energy';
        } elseif (!empty($player_info['player_attack'])) {
            $player_info['player_stat_type'] = 'attack';
        } elseif (!empty($player_info['player_defense'])) {
            $player_info['player_stat_type'] = 'defense';
        } elseif (!empty($player_info['player_speed'])) {
            $player_info['player_stat_type'] = 'speed';
        }
        // Define whether or not field switching is enabled
        $temp_allow_field_switch = rpg_prototype::campaign_complete($player_info['player_token']) || rpg_prototype::campaign_complete();
        // Collect a temp robot object for printing items
        if ($player_info['player_token'] == 'dr-light') {
            $robot_info = rpg_robot::parse_index_info($mmrpg_database_robots['mega-man']);
        } elseif ($player_info['player_token'] == 'dr-wily') {
            $robot_info = rpg_robot::parse_index_info($mmrpg_database_robots['bass']);
        } elseif ($player_info['player_token'] == 'dr-cossack') {
            $robot_info = rpg_robot::parse_index_info($mmrpg_database_robots['proto-man']);
        }
        // Define the markup variable
        $this_markup = '';
        // Start the output buffer
        ob_start();
        // DEBUG
        //die(print_r($player_field_rewards, true));
        ?>
            <div class="event event_double event_<?php 
        echo $player_key == $first_player_token ? 'visible' : 'hidden';
        ?>
" data-token="<?php 
        echo $player_info['player_token'] . '_' . $player_info['player_token'];
        ?>
">
                <div class="this_sprite sprite_left" style="height: 40px;">
                    <?php 
        $temp_margin = -1 * ceil(($player_info['player_image_size'] - 40) * 0.5);
        ?>
                    <div style="margin-top: <?php 
        echo $temp_margin;
        ?>
px; margin-bottom: <?php 
        echo $temp_margin * 3;
        ?>
px; background-image: url(i/p/<?php 
        echo !empty($player_info['player_image']) ? $player_info['player_image'] : $player_info['player_token'];
        ?>
/mr<?php 
        echo $player_info['player_image_size'];
        ?>
.png?<?php 
        echo MMRPG_CONFIG_CACHE_DATE;
        ?>
); " class="sprite sprite_player sprite_player_sprite sprite_<?php 
        echo $player_info['player_image_size'] . 'x' . $player_info['player_image_size'];
        ?>
 sprite_<?php 
        echo $player_info['player_image_size'] . 'x' . $player_info['player_image_size'];
        ?>
_mug player_status_active player_position_active"><?php 
        echo $player_info['player_name'];
        ?>
</div>
                </div>
                <div class="header header_left player_type player_type_<?php 
        echo !empty($player_info['player_stat_type']) ? $player_info['player_stat_type'] : 'none';
        ?>
" style="margin-right: 0;"><?php 
        echo $player_info['player_name'];
        ?>
&#39;s Data <span class="player_type"><?php 
        echo !empty($player_info['player_stat_type']) ? ucfirst($player_info['player_stat_type']) : 'Neutral';
        ?>
 Type</span></div>
                <div class="body body_left" style="margin-right: 0; padding: 2px 3px; height: auto;">
                    <table class="full" style="margin-bottom: 5px;">
                        <colgroup>
                            <col width="48.5%" />
                            <col width="1%" />
                            <col width="48.5%" />
                        </colgroup>
                        <tbody>

                            <tr>
                                <td  class="right">
                                    <label style="display: block; float: left;">Name :</label>
                                    <span class="player_name player_type player_type_none"><?php 
        echo $player_info['player_name'];
        ?>
</span>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td class="right">
                                    <label style="display: block; float: left;">Bonus :</label>
                                    <?php 
        // Display any special boosts this player has
        if (!empty($player_info['player_stat_type'])) {
            echo '<span class="player_name player_type player_type_' . $player_info['player_stat_type'] . '">Robot ' . ucfirst($player_info['player_stat_type']) . ' +' . $player_info['player_' . $player_info['player_stat_type']] . '%</span>';
        } else {
            echo '<span class="player_name player_type player_type_none">None</span>';
        }
        ?>
                                </td>
                            </tr>

                            <tr>
                                <td  class="right">
                                    <label style="display: block; float: left;">Exp Points :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_experience']) ? 'cutter' : 'none';
        ?>
"><?php 
        echo number_format($player_info['player_experience'], 0, '.', ',');
        ?>
 EXP</span>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td  class="right">
                                    <label style="display: block; float: left;">Unlocked Robots :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_robots_count']) ? 'cutter' : 'none';
        ?>
"><?php 
        echo $player_info['player_robots_count'] . ' ' . ($player_info['player_robots_count'] == 1 ? 'Robot' : 'Robots');
        ?>
</span>
                                </td>
                            </tr>
                            <tr>
                                <td  class="right">
                                    <label style="display: block; float: left;">Battle Points :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_points']) ? 'cutter' : 'none';
        ?>
"><?php 
        echo number_format($player_info['player_points'], 0, '.', ',');
        ?>
 BP</span>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td  class="right">
                                    <label style="display: block; float: left;">Unlocked Abilities :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_abilities_count']) ? 'cutter' : 'none';
        ?>
"><?php 
        echo $player_info['player_abilities_count'] . ' ' . ($player_info['player_abilities_count'] == 1 ? 'Ability' : 'Abilities');
        ?>
</span>
                                </td>
                            </tr>

                            <tr>
                                <td  class="right">
                                    <label style="display: block; float: left;">Missions Completed :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_battles_complete']) ? 'energy' : 'none';
        ?>
"><?php 
        echo $player_info['player_battles_complete'];
        ?>
 Missions</span>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td  class="right">
                                    <label style="display: block; float: left;">Total Victories :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_battles_complete_total']) ? 'energy' : 'none';
        ?>
"><?php 
        echo $player_info['player_battles_complete_total'];
        ?>
 Victories</span>
                                </td>
                            </tr>
                            <tr>
                                <td  class="right">
                                    <label style="display: block; float: left;">Missions Failed :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_battles_failure']) ? 'attack' : 'none';
        ?>
"><?php 
        echo $player_info['player_battles_failure'];
        ?>
 Missions</span>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td  class="right">
                                    <label style="display: block; float: left;">Total Defeats :</label>
                                    <span class="player_stat player_type player_type_<?php 
        echo !empty($player_info['player_battles_failure_total']) ? 'attack' : 'none';
        ?>
"><?php 
        echo $player_info['player_battles_failure_total'];
        ?>
 Defeats</span>
                                </td>
                            </tr>

                            <tr>
                                <td  class="right">
                                    <?php 
        if (!empty($player_info['player_field_stars'])) {
            ?>
                                    <label style="display: block; float: left;">Field Stars :</label>
                                    <span class="player_stat player_type player_type_<?php 
            echo !empty($player_info['player_field_stars']) ? 'electric' : 'empty';
            ?>
"><?php 
            echo $player_info['player_field_stars'] . ' ' . ($player_info['player_field_stars'] == 1 ? 'Star' : 'Stars');
            ?>
</span>
                                    <?php 
        } else {
            ?>
                                    <label style="display: block; float: left; opacity: 0.5; filter: alpha(opacity=50); ">??? :</label>
                                    <span class="player_stat player_type player_type_empty" style=" opacity: 0.5; filter: alpha(opacity=50); ">0</span>
                                    <?php 
        }
        ?>
                                </td>
                                <td class="center">&nbsp;</td>
                                <td  class="right">
                                    <?php 
        if (!empty($player_info['player_fusion_stars'])) {
            ?>
                                    <label style="display: block; float: left;">Fusion Stars :</label>
                                    <span class="player_stat player_type player_type_<?php 
            echo !empty($player_info['player_fusion_stars']) ? 'time' : 'empty';
            ?>
"><?php 
            echo $player_info['player_fusion_stars'] . ' ' . ($player_info['player_fusion_stars'] == 1 ? 'Star' : 'Stars');
            ?>
</span>
                                    <?php 
        } else {
            ?>
                                    <label style="display: block; float: left; opacity: 0.5; filter: alpha(opacity=50); ">??? :</label>
                                    <span class="player_stat player_type player_type_empty" style=" opacity: 0.5; filter: alpha(opacity=50); ">0</span>
                                    <?php 
        }
        ?>
                                </td>
                            </tr>

                        </tbody>
                    </table>



                    <?php 
        if (false && !empty($player_item_rewards)) {
            ?>

                        <table class="full">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <tr>
                                    <td class="right" style="padding-top: 4px;">
                                    <label class="item_header">Player Items :</label>
                                        <div class="item_container" style="height: auto;">
                                        <?php 
            // Define the array to hold ALL the reward option markup
            $item_rewards_options = '';
            // Collect this player's item rewards and add them to the dropdown
            //$player_item_rewards = !empty($player_rewards['player_items']) ? $player_rewards['player_items'] : array();
            //if (!empty($player_item_rewards)){ sort($player_item_rewards); }
            // DEBUG
            //$debug_tokens = array();
            //foreach ($player_item_rewards AS $info){ $debug_tokens[] = $info['ability_token']; }
            //echo 'before:'.implode(',', array_keys($debug_tokens)).'<br />';
            // Sort the item index based on item group
            uasort($player_item_rewards, array('rpg_functions', 'items_sort_for_editor'));
            // DEBUG
            //echo 'after:'.implode(',', array_keys($player_item_rewards)).'<br />';
            // DEBUG
            //$debug_tokens = array();
            //foreach ($player_item_rewards AS $info){ $debug_tokens[] = $info['ability_token']; }
            //echo 'after:'.implode(',', $debug_tokens).'<br />';
            // Dont' bother generating option dropdowns if editing is disabled
            if ($global_allow_editing) {
                $player_item_rewards_options = array();
                foreach ($player_item_rewards as $temp_item_key => $temp_item_info) {
                    if (empty($temp_item_info['ability_token'])) {
                        continue;
                    }
                    $temp_token = $temp_item_info['ability_token'];
                    $temp_item_info = rpg_ability::parse_index_info($mmrpg_database_items[$temp_token]);
                    $temp_option_markup = rpg_ability::print_editor_option_markup($robot_info, $temp_item_info);
                    if (!empty($temp_option_markup)) {
                        $player_item_rewards_options[] = $temp_option_markup;
                    }
                }
                $player_item_rewards_options = '<optgroup label="Player Items">' . implode('', $player_item_rewards_options) . '</optgroup>';
                $item_rewards_options .= $player_item_rewards_options;
                /*
                // Collect this robot's item rewards and add them to the dropdown
                $player_item_rewards = !empty($player_rewards['player_items']) ? $player_rewards['player_items'] : array();
                $player_item_settings = !empty($player_settings['player_items']) ? $player_settings['player_items'] : array();
                foreach ($player_item_settings AS $token => $info){ if (empty($player_item_rewards[$token])){ $player_item_rewards[$token] = $info; } }
                if (!empty($player_item_rewards)){ sort($player_item_rewards); }
                $player_item_rewards_options = array();
                foreach ($player_item_rewards AS $temp_item_info){
                    if (empty($temp_item_info['ability_token'])){ continue; }
                    $temp_token = $temp_item_info['ability_token'];
                    $temp_item_info = rpg_ability::parse_index_info($mmrpg_database_items[$temp_token]);
                    $temp_option_markup = rpg_ability::print_editor_option_markup($robot_info, $temp_item_info);
                    if (!empty($temp_option_markup)){ $player_item_rewards_options[] = $temp_option_markup; }
                }
                $player_item_rewards_options = '<optgroup label="Player Items">'.implode('', $player_item_rewards_options).'</optgroup>';
                $item_rewards_options .= $player_item_rewards_options;
                */
                // Add an option at the bottom to remove the ability
                $item_rewards_options .= '<optgroup label="Item Actions">';
                $item_rewards_options .= '<option value="" title="">- Remove Item -</option>';
                $item_rewards_options .= '</optgroup>';
            }
            // Loop through the robot's current items and list them one by one
            $empty_item_counter = 0;
            $temp_string = array();
            $temp_inputs = array();
            $item_key = 0;
            if (!empty($player_info['player_items_current'])) {
                // DEBUG
                //echo 'robot-ability:';
                foreach ($player_info['player_items_current'] as $key => $player_item) {
                    if (empty($player_item['ability_token'])) {
                        continue;
                    } elseif ($player_item['ability_token'] == '*') {
                        continue;
                    } elseif ($player_item['ability_token'] == 'ability') {
                        continue;
                    } elseif ($item_key > 7) {
                        continue;
                    }
                    $this_item = rpg_ability::parse_index_info($mmrpg_database_items[$player_item['ability_token']]);
                    if (empty($this_item)) {
                        continue;
                    }
                    $this_item_token = $this_item['ability_token'];
                    $this_item_name = $this_item['ability_name'];
                    $this_item_type = !empty($this_item['ability_type']) ? $this_item['ability_type'] : false;
                    $this_item_type2 = !empty($this_item['ability_type2']) ? $this_item['ability_type2'] : false;
                    if (!empty($this_item_type) && !empty($mmrpg_index['types'][$this_item_type])) {
                        $this_item_type = $mmrpg_index['types'][$this_item_type]['type_name'] . ' Type';
                        if (!empty($this_item_type2) && !empty($mmrpg_index['types'][$this_item_type2])) {
                            $this_item_type = str_replace(' Type', ' / ' . $mmrpg_index['types'][$this_item_type2]['type_name'] . ' Type', $this_item_type);
                        }
                    } else {
                        $this_item_type = '';
                    }
                    $this_item_energy = isset($this_item['ability_energy']) ? $this_item['ability_energy'] : 4;
                    $this_item_damage = !empty($this_item['ability_damage']) ? $this_item['ability_damage'] : 0;
                    $this_item_damage2 = !empty($this_item['ability_damage2']) ? $this_item['ability_damage2'] : 0;
                    $this_item_damage_percent = !empty($this_item['ability_damage_percent']) ? true : false;
                    $this_item_damage2_percent = !empty($this_item['ability_damage2_percent']) ? true : false;
                    if ($this_item_damage_percent && $this_item_damage > 100) {
                        $this_item_damage = 100;
                    }
                    if ($this_item_damage2_percent && $this_item_damage2 > 100) {
                        $this_item_damage2 = 100;
                    }
                    $this_item_recovery = !empty($this_item['ability_recovery']) ? $this_item['ability_recovery'] : 0;
                    $this_item_recovery2 = !empty($this_item['ability_recovery2']) ? $this_item['ability_recovery2'] : 0;
                    $this_item_recovery_percent = !empty($this_item['ability_recovery_percent']) ? true : false;
                    $this_item_recovery2_percent = !empty($this_item['ability_recovery2_percent']) ? true : false;
                    if ($this_item_recovery_percent && $this_item_recovery > 100) {
                        $this_item_recovery = 100;
                    }
                    if ($this_item_recovery2_percent && $this_item_recovery2 > 100) {
                        $this_item_recovery2 = 100;
                    }
                    $this_item_accuracy = !empty($this_item['ability_accuracy']) ? $this_item['ability_accuracy'] : 0;
                    $this_item_description = !empty($this_item['ability_description']) ? $this_item['ability_description'] : '';
                    $this_item_description = str_replace('{DAMAGE}', $this_item_damage, $this_item_description);
                    $this_item_description = str_replace('{RECOVERY}', $this_item_recovery, $this_item_description);
                    $this_item_description = str_replace('{DAMAGE2}', $this_item_damage2, $this_item_description);
                    $this_item_description = str_replace('{RECOVERY2}', $this_item_recovery2, $this_item_description);
                    $this_item_title = rpg_ability::print_editor_title_markup($robot_info, $this_item);
                    $this_item_title_plain = strip_tags(str_replace('<br />', '&#10;', $this_item_title));
                    $this_item_title_tooltip = htmlentities($this_item_title, ENT_QUOTES, 'UTF-8');
                    $this_item_title_html = str_replace(' ', '&nbsp;', $this_item_name);
                    $temp_select_options = str_replace('value="' . $this_item_token . '"', 'value="' . $this_item_token . '" selected="selected" disabled="disabled"', $item_rewards_options);
                    $this_item_title_html = '<label style="background-image: url(i/a/' . $this_item_token . '/il40.png?' . MMRPG_CONFIG_CACHE_DATE . ');">' . $this_item_title_html . '</label>';
                    if ($global_allow_editing) {
                        $this_item_title_html .= '<select class="ability_name" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '">' . $temp_select_options . '</select>';
                    }
                    $temp_string[] = '<a class="ability_name ability_type ability_type_' . (!empty($this_item['ability_type']) ? $this_item['ability_type'] : 'none') . (!empty($this_item['ability_type2']) ? '_' . $this_item['ability_type2'] : '') . '" style="' . (($item_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . (!$global_allow_editing ? 'cursor: default; ' : '') . '" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '" data-item="' . $this_item_token . '" title="' . $this_item_title_plain . '" data-tooltip="' . $this_item_title_tooltip . '">' . $this_item_title_html . '</a>';
                    $item_key++;
                }
                if ($item_key <= 7) {
                    for ($item_key; $item_key <= 7; $item_key++) {
                        $empty_item_counter++;
                        if ($empty_item_counter >= 2) {
                            $empty_item_disable = true;
                        } else {
                            $empty_item_disable = false;
                        }
                        $temp_select_options = str_replace('value=""', 'value="" selected="selected" disabled="disabled"', $item_rewards_options);
                        $this_item_title_html = '<label>-</label>';
                        if ($global_allow_editing) {
                            $this_item_title_html .= '<select class="ability_name" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '" ' . ($empty_item_disable ? 'disabled="disabled" ' : '') . '>' . $temp_select_options . '</select>';
                        }
                        $temp_string[] = '<a class="ability_name " style="' . (($item_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . ($empty_item_disable ? 'opacity:0.25; ' : '') . (!$global_allow_editing ? 'cursor: default; ' : '') . '" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '" data-item="" title="" data-tooltip="">' . $this_item_title_html . '</a>';
                    }
                }
            } else {
                for ($item_key = 0; $item_key <= 7; $item_key++) {
                    $empty_item_counter++;
                    if ($empty_item_counter >= 2) {
                        $empty_item_disable = true;
                    } else {
                        $empty_item_disable = false;
                    }
                    $temp_select_options = str_replace('value=""', 'value="" selected="selected"', $item_rewards_options);
                    $this_item_title_html = '<label>-</label>';
                    if ($global_allow_editing) {
                        $this_item_title_html .= '<select class="ability_name" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '" data-robot="' . $robot_info['robot_token'] . '" ' . ($empty_item_disable ? 'disabled="disabled" ' : '') . '>' . $temp_select_options . '</select>';
                    }
                    $temp_string[] = '<a class="ability_name " style="' . (($item_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . ($empty_item_disable ? 'opacity:0.25; ' : '') . (!$global_allow_editing ? 'cursor: default; ' : '') . '" data-key="' . $item_key . '" data-player="' . $player_info['player_token'] . '" data-robot="' . $robot_info['robot_token'] . '" data-ability="">' . $this_item_title_html . '</a>';
                }
            }
            // DEBUG
            //echo 'temp-string:';
            echo !empty($temp_string) ? implode(' ', $temp_string) : '';
            // DEBUG
            //echo '<br />temp-inputs:';
            echo !empty($temp_inputs) ? implode(' ', $temp_inputs) : '';
            // DEBUG
            //echo '<br />';
            ?>
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>

                    <?php 
        }
        ?>

                    <?php 
        if (!empty($player_field_rewards) && rpg_prototype::campaign_complete($player_info['player_token'])) {
            ?>

                        <table class="full">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <tr>
                                    <td class="right" style="padding-top: 4px;">
                                        <label class="field_header"><?php 
            echo $global_allow_editing ? 'Edit ' : '';
            ?>
Player Fields :</label>
                                        <div class="field_container" style="height: auto;">
                                        <?php 
            // Define the array to hold ALL the reward option markup
            $field_rewards_options = '';
            // Collect this player's field rewards and add them to the dropdown
            //$player_field_rewards = !empty($player_rewards['player_fields']) ? $player_rewards['player_fields'] : array();
            //if (!empty($player_field_rewards)){ sort($player_field_rewards); }
            // DEBUG
            //echo 'start:player_field_rewards:<pre style="font-size: 80%;">'.print_r($player_field_rewards, true).'</pre><br />';
            // DEBUG
            //echo 'before:player_field_rewards(keys):'.implode(',', array_keys($player_field_rewards)).'<br />';
            // DEBUG
            //$debug_tokens = array();
            //foreach ($player_field_rewards AS $info){ $debug_tokens[] = $info['field_token']; }
            //echo 'before:player_field_rewards(field_tokens):'.implode(',', array_values($debug_tokens)).'<br />';
            // Sort the field index based on field number
            uasort($player_field_rewards, array('rpg_functions', 'fields_sort_for_editor'));
            // DEBUG
            //echo 'after:player_field_rewards(keys):'.implode(',', array_keys($player_field_rewards)).'<br />';
            // DEBUG
            //$debug_tokens = array();
            //foreach ($player_field_rewards AS $info){ $debug_tokens[] = $info['field_token']; }
            //echo 'after:player_field_rewards(field_tokens):'.implode(',', array_values($debug_tokens)).'<br />';
            // Don't bother generating the option markup if disabled editing
            if ($global_allow_editing) {
                // Define the field group index for displau
                $temp_group_index = array('MMRPG' => 'Mega Man RPG Fields', 'MM00' => 'Mega Man Bonus Fields', 'MM01' => 'Mega Man 1 Fields', 'MM02' => 'Mega Man 2 Fields', 'MM03' => 'Mega Man 3 Fields', 'MM04' => 'Mega Man 4 Fields', 'MM05' => 'Mega Man 5 Fields', 'MM06' => 'Mega Man 6 Fields', 'MM07' => 'Mega Man 7 Fields', 'MM08' => 'Mega Man 8 Fields', 'MM09' => 'Mega Man 9 Fields', 'MM10' => 'Mega Man 10 Fields');
                // Loop through the group index and display any fields that match
                $player_field_rewards_backup = $player_field_rewards;
                foreach ($temp_group_index as $group_key => $group_name) {
                    $player_field_rewards_options = array();
                    foreach ($player_field_rewards_backup as $temp_field_key => $temp_field_info) {
                        if (empty($temp_field_info['field_game']) || $temp_field_info['field_game'] != $group_key) {
                            continue;
                        }
                        $temp_option_markup = rpg_field::print_editor_option_markup($temp_field_info);
                        if (!empty($temp_option_markup)) {
                            $player_field_rewards_options[] = $temp_option_markup;
                        }
                        unset($player_field_rewards_backup[$temp_field_key]);
                    }
                    if (empty($player_field_rewards_options)) {
                        continue;
                    }
                    $player_field_rewards_options = '<optgroup label="' . $group_name . '">' . implode('', $player_field_rewards_options) . '</optgroup>';
                    $field_rewards_options .= $player_field_rewards_options;
                }
            }
            // Add an option at the bottom to remove the field
            //$field_rewards_options .= '<optgroup label="Field Actions">';
            //$field_rewards_options .= '<option value="" title="">- Remove Field -</option>';
            //$field_rewards_options .= '</optgroup>';
            // Loop through the player's current fields and list them one by one
            $empty_field_counter = 0;
            $temp_string = array();
            $temp_inputs = array();
            $field_key = 0;
            if (!empty($player_info['player_fields_current'])) {
                // DEBUG
                //echo 'player-field:';
                $rpg_field_index = rpg_field::get_index();
                $player_info['player_fields_current'] = $player_info['player_fields_current'];
                //array_reverse($player_info['player_fields_current']);
                foreach ($player_info['player_fields_current'] as $player_field) {
                    if ($player_field['field_token'] == '*') {
                        continue;
                    } elseif (!isset($rpg_field_index[$player_field['field_token']])) {
                        continue;
                    } elseif ($field_key > 7) {
                        continue;
                    }
                    $this_field = rpg_field::parse_index_info($rpg_field_index[$player_field['field_token']]);
                    $this_field_token = $this_field['field_token'];
                    $this_robot_token = $this_field['field_master'];
                    $this_robot = rpg_robot::parse_index_info($mmrpg_database_robots[$this_robot_token]);
                    $this_field_name = $this_field['field_name'];
                    $this_field_type = !empty($this_field['field_type']) ? $this_field['field_type'] : false;
                    $this_field_type2 = !empty($this_field['field_type2']) ? $this_field['field_type2'] : false;
                    if (!empty($this_field_type) && !empty($mmrpg_index['types'][$this_field_type])) {
                        $this_field_type = $mmrpg_index['types'][$this_field_type]['type_name'] . ' Type';
                        if (!empty($this_field_type2) && !empty($mmrpg_index['types'][$this_field_type2])) {
                            $this_field_type = str_replace(' Type', ' / ' . $mmrpg_index['types'][$this_field_type2]['type_name'] . ' Type', $this_field_type);
                        }
                    } else {
                        $this_field_type = '';
                    }
                    $this_field_description = !empty($this_field['field_description']) ? $this_field['field_description'] : '';
                    $this_field_title = rpg_field::print_editor_title_markup($this_field);
                    $this_field_title_plain = strip_tags(str_replace('<br />', '&#10;', $this_field_title));
                    $this_field_title_tooltip = htmlentities($this_field_title, ENT_QUOTES, 'UTF-8');
                    $this_field_title_html = str_replace(' ', '&nbsp;', $this_field_name);
                    $temp_select_options = str_replace('value="' . $this_field_token . '"', 'value="' . $this_field_token . '" selected="selected" disabled="disabled"', $field_rewards_options);
                    $temp_field_type_class = 'field_type_' . (!empty($this_field['field_type']) ? $this_field['field_type'] : 'none') . (!empty($this_field['field_type2']) ? '_' . $this_field['field_type2'] : '');
                    if ($global_allow_editing && $temp_allow_field_switch) {
                        $this_field_title_html = '<label class="field_type  ' . $temp_field_type_class . '" style="">' . $this_field_title_html . '</label><select class="field_name" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '">' . $temp_select_options . '</select>';
                    } elseif (!$global_allow_editing && $temp_allow_field_switch) {
                        $this_field_title_html = '<label class="field_type  ' . $temp_field_type_class . '" style="cursor: default !important;">' . $this_field_title_html . '</label>';
                    } else {
                        $this_field_title_html = '<label class="field_type ' . $temp_field_type_class . '" style="cursor: default !important;">' . $this_field_title_html . '</label>';
                    }
                    $temp_string[] = '<a class="field_name field_type ' . $temp_field_type_class . '" style="background-image: url(i/f/' . $this_field_token . '/bfp.png?' . MMRPG_CONFIG_CACHE_DATE . '); ' . (($field_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . (!$temp_allow_field_switch || !$global_allow_editing ? 'cursor: default !important; ' : '') . (!$temp_allow_field_switch ? 'opacity: 0.50; filter: alpha(opacity=50); ' : '') . '" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '" data-field="' . $this_field_token . '" data-tooltip="' . $this_field_title_tooltip . '">' . $this_field_title_html . '</a>';
                    $field_key++;
                }
                if ($field_key <= 7) {
                    for ($field_key; $field_key <= 7; $field_key++) {
                        $empty_field_counter++;
                        if ($empty_field_counter >= 2) {
                            $empty_field_disable = true;
                        } else {
                            $empty_field_disable = false;
                        }
                        $temp_select_options = str_replace('value=""', 'value="" selected="selected" disabled="disabled"', $field_rewards_options);
                        $this_field_title_html = '<label>-</label><select class="field_name" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '" ' . ($empty_field_disable ? 'disabled="disabled" ' : '') . '>' . $temp_select_options . '</select>';
                        $temp_string[] = '<a class="field_name " style="' . (($field_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . ($empty_field_disable ? 'opacity:0.25; ' : '') . '" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '" data-field="" title="">' . $this_field_title_html . '</a>';
                    }
                }
            } else {
                for ($field_key = 0; $field_key <= 7; $field_key++) {
                    $empty_field_counter++;
                    if ($empty_field_counter >= 2) {
                        $empty_field_disable = true;
                    } else {
                        $empty_field_disable = false;
                    }
                    $temp_select_options = str_replace('value=""', 'value="" selected="selected"', $field_rewards_options);
                    $this_field_title_html = '<label>-</label><select class="field_name" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '" ' . ($empty_field_disable ? 'disabled="disabled" ' : '') . '>' . $temp_select_options . '</select>';
                    $temp_string[] = '<a class="field_name " style="' . (($field_key + 1) % 4 == 0 ? 'margin-right: 0; ' : '') . ($empty_field_disable ? 'opacity:0.25; ' : '') . '" data-key="' . $field_key . '" data-player="' . $player_info['player_token'] . '" data-player="' . $player_info['player_token'] . '" data-field="" title="">' . $this_field_title_html . '</a>';
                }
            }
            // DEBUG
            //echo 'temp-string:';
            echo !empty($temp_string) ? implode(' ', $temp_string) : '';
            // DEBUG
            //echo '<br />temp-inputs:';
            echo !empty($temp_inputs) ? implode(' ', $temp_inputs) : '';
            // DEBUG
            //echo '<br />';
            // Collect the available star counts for this player
            $temp_star_counts = rpg_game::stars_available($player_token);
            ?>
                                        <div class="field_stars">
                                            <label class="label">stars</label>
                                            <span class="star star_field" data-star="field"><?php 
            echo $temp_star_counts['field'];
            ?>
 field</span>
                                            <span class="star star_fusion" data-star="fusion"><?php 
            echo $temp_star_counts['fusion'];
            ?>
 fusion</span>
                                        </div>
                                        <?php 
            // Print the sort wrapper and options if allowed
            if ($global_allow_editing) {
                ?>
                                            <div class="field_tools">
                                                <label class="label">tools</label>
                                                <a class="tool tool_shuffle" data-tool="shuffle" data-player="<?php 
                echo $player_token;
                ?>
">shuffle</a>
                                                <a class="tool tool_randomize" data-tool="randomize" data-player="<?php 
                echo $player_token;
                ?>
">randomize</a>
                                            </div>
                                            <?php 
            }
            ?>
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>

                    <?php 
        }
        ?>


                </div>
            </div>
            <?php 
        $key_counter++;
        // Collect the outbut buffer contents
        $this_markup = trim(ob_get_clean());
        // Return the generated markup
        return $this_markup;
    }
 public static function options_markup(&$battle_options, $player_token)
 {
     // Refence the global config and index objects for easy access
     global $mmrpg_index, $db;
     $mmrpg_index_fields = rpg_field::get_index();
     // Define the variable to collect option markup
     $this_markup = '';
     // Count the number of completed battle options for this group and update the variable
     foreach ($battle_options as $this_key => $this_info) {
         // Define the chapter if not set
         if (!isset($this_info['option_chapter'])) {
             $this_info['option_chapter'] = '0';
         }
         // If this is an event message type option, simply display the text/images
         if (!empty($this_info['option_type']) && $this_info['option_type'] == 'message') {
             // Generate the option markup for the event message
             $temp_optiontitle = $this_info['option_maintext'];
             $temp_optionimages = !empty($this_info['option_images']) ? $this_info['option_images'] : '';
             $temp_optiontext = '<span class="multi"><span class="maintext">' . $this_info['option_maintext'] . '</span></span>';
             $this_markup .= '<a data-chapter="' . $this_info['option_chapter'] . '" class="option option_message option_1x4 option_this-' . $player_token . '-message" style="' . (!empty($this_info['option_style']) ? $this_info['option_style'] : '') . '"><div class="chrome"><div class="inset"><label class="' . (!empty($temp_optionimages) ? 'has_image' : '') . '">' . $temp_optionimages . $temp_optiontext . '</label></div></div></a>' . "\n";
         } else {
             // If the skip flag is set, continue to the next index
             //if (isset($this_info['flag_skip']) && $this_info['flag_skip'] == true){ continue; }
             // Collect the current battle and field info from the index
             if (!isset($this_info['battle_token'])) {
                 echo '$this_key(' . $this_key . ') = ' . print_r($this_info, true);
             }
             $this_battleinfo = rpg_battle::get_index_info($this_info['battle_token']);
             //if (!empty($this_battleinfo)){ $this_battleinfo = array_replace($this_battleinfo, $this_info); }
             $temp_flags = isset($this_battleinfo['flags']) ? $this_battleinfo['flags'] : array();
             $temp_values = isset($this_battleinfo['values']) ? $this_battleinfo['values'] : array();
             $temp_counters = isset($this_battleinfo['counters']) ? $this_battleinfo['counters'] : array();
             if (!empty($this_battleinfo)) {
                 $this_battleinfo = array_merge($this_battleinfo, $this_info);
             } else {
                 $this_battleinfo = $this_info;
             }
             $this_battleinfo['flags'] = !empty($this_battleinfo['flags']) ? array_merge($this_battleinfo['flags'], $temp_flags) : $temp_flags;
             $this_battleinfo['values'] = !empty($this_battleinfo['values']) ? array_merge($this_battleinfo['values'], $temp_values) : $temp_values;
             $this_battleinfo['counters'] = !empty($this_battleinfo['counters']) ? array_merge($this_battleinfo['counters'], $temp_counters) : $temp_counters;
             //if (!is_array($this_battleinfo['battle_field_info'])){ echo('Key '.$this_key.' in $battle_options_reversed = <pre>'.print_r($battle_options_reversed, true).'</pre>'); }
             //if (!is_array($this_battleinfo['battle_field_info'])){ echo('$this_battleinfo[\'battle_field_info\'] = <pre>'.print_r($this_battleinfo, true).'</pre>'); }
             //if (!is_array($this_battleinfo['battle_field_info'])){ echo('$db->INDEX[\'BATTLES\']['.$this_info['battle_token'].'] = <pre>'.print_r($db->INDEX['BATTLES'][$this_info['battle_token']], true).'</pre>'); }
             if (!isset($this_battleinfo['battle_field_info'])) {
                 echo print_r($this_battleinfo, true);
             }
             $this_fieldtoken = $this_battleinfo['battle_field_info']['field_token'];
             $this_fieldinfo = !empty($mmrpg_index_fields[$this_fieldtoken]) ? array_replace(rpg_field::parse_index_info($mmrpg_index_fields[$this_fieldtoken]), $this_battleinfo['battle_field_info']) : $this_battleinfo['battle_field_info'];
             $this_targetinfo = !empty($mmrpg_index['players'][$this_battleinfo['battle_target_player']['player_token']]) ? array_replace($mmrpg_index['players'][$this_battleinfo['battle_target_player']['player_token']], $this_battleinfo['battle_target_player']) : $this_battleinfo['battle_target_player'];
             // Collect the robot index for calculation purposes
             $this_robot_index = $db->get_array_list("SELECT * FROM mmrpg_index_robots WHERE robot_flag_complete = 1;", 'robot_token');
             // Check the GAME session to see if this battle has been completed, increment the counter if it was
             $this_battleinfo['battle_option_complete'] = rpg_prototype::battle_complete($player_token, $this_info['battle_token']);
             $this_battleinfo['battle_option_failure'] = rpg_prototype::battle_failure($player_token, $this_info['battle_token']);
             // Generate the markup fields for display
             $this_option_token = $this_battleinfo['battle_token'];
             $this_option_limit = !empty($this_battleinfo['battle_robots_limit']) ? $this_battleinfo['battle_robots_limit'] : 8;
             $this_option_frame = !empty($this_battleinfo['battle_sprite_frame']) ? $this_battleinfo['battle_sprite_frame'] : 'base';
             $this_option_status = !empty($this_battleinfo['battle_status']) ? $this_battleinfo['battle_status'] : 'enabled';
             $this_option_points = !empty($this_battleinfo['battle_points']) ? $this_battleinfo['battle_points'] : 0;
             $this_option_complete = $this_battleinfo['battle_option_complete'];
             $this_option_failure = $this_battleinfo['battle_option_failure'];
             $this_option_targets = !empty($this_targetinfo['player_robots']) ? count($this_targetinfo['player_robots']) : 0;
             $this_option_encore = isset($this_battleinfo['battle_encore']) ? $this_battleinfo['battle_encore'] : true;
             $this_option_disabled = !empty($this_option_complete) && !$this_option_encore ? true : false;
             $this_has_field_star = !empty($this_battleinfo['values']['field_star']) && !rpg_game::star_unlocked($this_battleinfo['values']['field_star']['star_token']) ? true : false;
             $this_has_dark_tower = !empty($this_battleinfo['flags']['dark_tower']) ? true : false;
             $this_option_class = 'option option_fieldback option_this-' . $player_token . '-battle-select option_' . $this_battleinfo['battle_size'] . ' option_' . $this_option_status . ' block_' . ($this_key + 1) . ' ' . ($this_option_complete && !$this_has_field_star && !$this_has_dark_tower ? 'option_complete ' : '') . ($this_option_disabled ? 'option_disabled ' . ($this_option_encore ? 'option_disabled_clickable ' : '') : '');
             $this_option_style = 'background-position: -' . mt_rand(5, 50) . 'px -' . mt_rand(5, 50) . 'px; ';
             if (!empty($this_fieldinfo['field_type'])) {
                 $this_option_class .= 'field_type field_type_' . $this_fieldinfo['field_type'] . (!empty($this_fieldinfo['field_type2']) && $this_fieldinfo['field_type2'] != $this_fieldinfo['field_type'] ? '_' . $this_fieldinfo['field_type2'] : '');
             } else {
                 $this_option_class .= 'field_type field_type_none';
             }
             if (!empty($this_fieldinfo['field_background'])) {
                 //$this_background_x = $this_background_y = -20;
                 //$this_option_style = 'background-position: 0 0; background-size: 100% auto; background-image: url(images/sprites/fields/'.$this_fieldinfo['field_background'].'/battle-field_preview.png?'.MMRPG_CONFIG_CACHE_DATE.'); ';
                 $this_option_style = 'background-image: url(images/sprites/fields/' . $this_fieldinfo['field_background'] . '/battle-field_preview.png?' . MMRPG_CONFIG_CACHE_DATE . ') !important; ';
             }
             $this_option_label = '';
             $this_option_platform_style = '';
             if (!empty($this_fieldinfo['field_foreground'])) {
                 //$this_background_x = $this_background_y = -20;
                 //$this_option_platform_style = 'background-position: 0 -76px; background-size: 100% auto; background-image: url(images/sprites/fields/'.$this_fieldinfo['field_foreground'].'/battle-field_foreground_base.png?'.MMRPG_CONFIG_CACHE_DATE.'); ';
                 $this_option_platform_style = 'background-image: url(images/sprites/fields/' . $this_fieldinfo['field_foreground'] . '/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . '); ';
             }
             $this_option_min_level = false;
             $this_option_max_level = false;
             $this_option_star_boost = !empty($this_targetinfo['player_starforce']) ? array_sum($this_targetinfo['player_starforce']) : 0;
             $this_battleinfo['battle_sprite'] = array();
             $this_targetinfo = !empty($mmrpg_index['players'][$this_targetinfo['player_token']]) ? array_merge($mmrpg_index['players'][$this_targetinfo['player_token']], $this_targetinfo) : $mmrpg_index['players']['player'];
             if ($this_targetinfo['player_token'] != 'player') {
                 $this_battleinfo['battle_sprite'][] = array('path' => 'players/' . $this_targetinfo['player_token'], 'size' => !empty($this_targetinfo['player_image_size']) ? $this_targetinfo['player_image_size'] : 40);
             }
             if (!empty($this_targetinfo['player_robots'])) {
                 // Count the number of masters in this battle
                 $this_master_count = 0;
                 $this_mecha_count = 0;
                 $temp_robot_tokens = array();
                 foreach ($this_targetinfo['player_robots'] as $robo_key => $this_robotinfo) {
                     //if (empty($this_robotinfo['robot_token'])){ die('<pre>'.$this_battleinfo['battle_token'].print_r($this_robotinfo, true).'</pre>'); }
                     if ($this_robotinfo['robot_token'] == 'robot') {
                         unset($this_targetinfo['player_robots'][$robo_key]);
                         continue;
                     }
                     if (isset($this_robot_index[$this_robotinfo['robot_token']])) {
                         $this_robotindex = rpg_robot::parse_index_info($this_robot_index[$this_robotinfo['robot_token']]);
                     } else {
                         continue;
                     }
                     $temp_robot_tokens[] = $this_robotinfo['robot_token'];
                     $this_robotinfo = array_merge($this_robotindex, $this_robotinfo);
                     $this_targetinfo['player_robots'][$robo_key] = $this_robotinfo;
                     if (!empty($this_robotinfo['robot_class']) && $this_robotinfo['robot_class'] == 'mecha') {
                         $this_mecha_count++;
                     } elseif (empty($this_robotinfo['robot_class']) || $this_robotinfo['robot_class'] == 'master') {
                         $this_master_count++;
                     }
                     unset($this_robotindex);
                 }
                 $temp_robot_tokens = array_unique($temp_robot_tokens);
                 $temp_robot_tokens_count = count($temp_robot_tokens);
                 $temp_robot_target_count = count($this_targetinfo['player_robots']);
                 // Create a list of the different robot tokens in this battle
                 // Now loop through robots again and display 'em
                 foreach ($this_targetinfo['player_robots'] as $this_robotinfo) {
                     // HIDE MECHAS
                     if (empty($this_battleinfo['flags']['starter_battle']) && empty($this_battleinfo['flags']['player_battle']) && !empty($this_robotinfo['robot_class']) && $this_robotinfo['robot_class'] == 'mecha' && $temp_robot_tokens_count > 1 && $this_master_count > 0) {
                         continue;
                     }
                     // HIDE MECHAS in FORTRESS
                     if (!empty($this_battleinfo['flags']['fortress_battle']) && !empty($this_robotinfo['robot_class']) && $this_robotinfo['robot_class'] == 'mecha') {
                         continue;
                     }
                     // HIDE HIDDEN
                     if (!empty($this_robotinfo['flags']['hide_from_mission_select'])) {
                         continue;
                     }
                     $this_robotinfo['robot_image'] = !empty($this_robotinfo['robot_image']) ? $this_robotinfo['robot_image'] : $this_robotinfo['robot_token'];
                     //if (!empty($this_battleinfo['flags']['player_battle'])){ $this_robotinfo['robot_image'] = 'robot'; }
                     //if (!empty($this_robotinfo['flags']['hide_from_mission_'])){ $temp_path = 'robots/robot'; }
                     //else { $temp_path = 'robots/'.$this_robotinfo['robot_image']; }
                     //$temp_path = 'robots/'.(empty($this_battleinfo['flags']['player_battle']) ? $this_robotinfo['robot_image'] : 'robot');
                     $temp_path = 'robots/' . $this_robotinfo['robot_image'];
                     $temp_size = !empty($this_robotinfo['robot_image_size']) ? $this_robotinfo['robot_image_size'] : 40;
                     if (!empty($this_battleinfo['flags']['player_battle'])) {
                         $temp_path = in_array($this_robotinfo['robot_token'], array('roll', 'disco', 'rhythm', 'splash-woman')) ? 'robots/robot2' : 'robots/robot';
                         $temp_size = 40;
                     }
                     $this_battleinfo['battle_sprite'][] = array('path' => $temp_path, 'size' => $temp_size);
                     $this_robot_level = !empty($this_robotinfo['robot_level']) ? $this_robotinfo['robot_level'] : 1;
                     if ($this_option_min_level === false || $this_option_min_level > $this_robot_level) {
                         $this_option_min_level = $this_robot_level;
                     }
                     if ($this_option_max_level === false || $this_option_max_level < $this_robot_level) {
                         $this_option_max_level = $this_robot_level;
                     }
                 }
             }
             // Add the field/fusion star sprite if one has been added
             if ($this_has_field_star) {
                 //$this_option_complete = false;
                 $this_option_disabled = false;
                 // Check if this is a field star or fusion star
                 $temp_star_data = $this_battleinfo['values']['field_star'];
                 //die('<pre>'.print_r($temp_star_data, true).'</pre>');
                 $temp_star_kind = $temp_star_data['star_kind'];
                 // Collect the star image info from the index based on type
                 $temp_field_type_1 = !empty($temp_star_data['star_type']) ? $temp_star_data['star_type'] : 'none';
                 $temp_field_type_2 = !empty($temp_star_data['star_type2']) ? $temp_star_data['star_type2'] : $temp_field_type_1;
                 // If this is a field star, we can add sprite normally
                 if ($temp_star_kind == 'field') {
                     $temp_star_back_info = rpg_prototype::star_image($temp_field_type_1);
                     $temp_star_front_info = rpg_prototype::star_image($temp_field_type_1);
                     $temp_star_back = array('path' => 'abilities/item-star-base-' . $temp_star_front_info['sheet'], 'size' => 40, 'frame' => $temp_star_front_info['frame']);
                     $temp_star_front = array('path' => 'abilities/item-star-' . $temp_star_kind . '-' . $temp_star_back_info['sheet'], 'size' => 40, 'frame' => $temp_star_back_info['frame']);
                     array_unshift($this_battleinfo['battle_sprite'], $temp_star_back, $temp_star_front);
                 } elseif ($temp_star_kind == 'fusion') {
                     $temp_star_back_info = rpg_prototype::star_image($temp_field_type_2);
                     $temp_star_front_info = rpg_prototype::star_image($temp_field_type_1);
                     $temp_star_back = array('path' => 'abilities/item-star-base-' . $temp_star_front_info['sheet'], 'size' => 40, 'frame' => $temp_star_front_info['frame']);
                     $temp_star_front = array('path' => 'abilities/item-star-' . $temp_star_kind . '-' . $temp_star_back_info['sheet'], 'size' => 40, 'frame' => $temp_star_back_info['frame']);
                     array_unshift($this_battleinfo['battle_sprite'], $temp_star_back, $temp_star_front);
                 }
             }
             // Add the dark tower sprite if one has been added
             if ($this_has_dark_tower) {
                 //$this_option_complete = false;
                 $this_option_disabled = false;
                 // Add the dark tower sprite to the mission select
                 $temp_tower_sprite = array('path' => 'abilities/item-dark-tower', 'size' => 40, 'frame' => 0);
                 array_unshift($this_battleinfo['battle_sprite'], $temp_tower_sprite);
             }
             // Loop through the battle sprites and display them
             if (!empty($this_battleinfo['battle_sprite'])) {
                 $temp_right = false;
                 $temp_layer = 100;
                 $temp_count = count($this_battleinfo['battle_sprite']);
                 $temp_last_size = 0;
                 foreach ($this_battleinfo['battle_sprite'] as $temp_key => $this_battle_sprite) {
                     $temp_opacity = $temp_layer == 10 ? 1 : 1 - $temp_key * 0.09;
                     $temp_path = $this_battle_sprite['path'];
                     $temp_size = $this_battle_sprite['size'];
                     $temp_frame = !empty($this_battle_sprite['frame']) ? $this_battle_sprite['frame'] : '';
                     $temp_size_text = $temp_size . 'x' . $temp_size;
                     $temp_top = -2 + (40 - $temp_size);
                     if (!preg_match('/^abilities/i', $temp_path)) {
                         if ($temp_right === false) {
                             //die('<pre>'.print_r($temp_right, true).'</pre>');
                             if ($temp_size == 40) {
                                 $temp_right_inc = 0;
                                 $temp_right = 18 + $temp_right_inc;
                             } else {
                                 $temp_right_inc = -1 * ceil(($temp_size - 40) * 0.5);
                                 $temp_right = 18 + $temp_right_inc;
                             }
                         } else {
                             if ($temp_size == 40) {
                                 $temp_right_inc = ceil($temp_size * 0.5);
                                 $temp_right += $temp_right_inc;
                             } else {
                                 $temp_right_inc = ceil(($temp_size - 40) * 0.5);
                                 //ceil($temp_size * 0.5);
                                 $temp_right += $temp_right_inc;
                             }
                             if ($temp_size > $temp_last_size) {
                                 $temp_right -= ceil(($temp_size - $temp_last_size) / 2);
                             } elseif ($temp_size < $temp_last_size) {
                                 $temp_right += ceil(($temp_last_size - $temp_size) / 2);
                             }
                         }
                     } else {
                         $temp_right = 5;
                     }
                     $temp_path_full = 'images/sprites/' . $temp_path . '/sprite_left_' . $temp_size_text . '.png';
                     // Find and replace length path names with shorter ones for smaller request sizes
                     $temp_find_paths = array('images/sprites/players/', 'images/shadows/players/', 'images/sprites/robots/', 'images/shadows/robots/', 'images/sprites/abilities/', '/sprite_left_40x40', '/sprite_left_80x80', '/sprite_left_160x160', '/sprite_right_40x40', '/sprite_right_80x80', '/sprite_right_160x160', '/mug_left_40x40', '/mug_left_80x80', '/mug_left_160x160', '/mug_right_40x40', '/mug_right_80x80', '/mug_right_160x160', '/icon_left_40x40', '/icon_left_80x80', '/icon_left_160x160', '/icon_right_40x40', '/icon_right_80x80', '/icon_right_160x160');
                     $temp_replace_paths = array('i/p/', 'i/ps/', 'i/r/', 'i/rs/', 'i/a/', '/sl40', '/sl80', '/sl160', '/sr40', '/sr80', '/sr160', '/ml40', '/ml80', '/ml160', '/mr40', '/mr80', '/mr160', '/il40', '/il80', '/il160', '/ir40', '/ir80', '/ir160');
                     $temp_path_full = str_replace($temp_find_paths, $temp_replace_paths, $temp_path_full);
                     if (preg_match('/^abilities/i', $temp_path)) {
                         $this_option_label .= '<span class="sprite sprite_' . $temp_size_text . ' sprite_' . $temp_size_text . '_' . str_pad($temp_frame, 2, '0', STR_PAD_LEFT) . ' " style="background-image: url(' . $temp_path_full . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 1px; right: -3px;">&nbsp;</span>';
                     } else {
                         $this_option_label .= '<span class="sprite sprite_' . $temp_size_text . ' ' . ($this_option_complete && !$this_has_field_star && !$this_has_dark_tower && $this_option_frame == 'base' ? 'sprite_' . $temp_size_text . '_defeat ' : 'sprite_' . $temp_size_text . '_' . $this_option_frame . ' ') . '" style="background-image: url(' . $temp_path_full . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: ' . $temp_top . 'px; right: ' . $temp_right . 'px;">&nbsp;</span>';
                     }
                     //'.$this_battleinfo['battle_name'].'
                     $temp_layer -= 1;
                     $temp_last_size = $temp_size;
                 }
             }
             //if ($this_battleinfo['battle_token'] == 'base-spark-man') die('<pre>'.print_r(htmlentities($this_option_label), true).'</pre>');
             //$this_option_button_text = !empty($this_battleinfo['battle_button']) ? $this_battleinfo['battle_button'] : '';
             //$this_option_button_text = !empty($this_fieldinfo['field_name']) ? $this_fieldinfo['field_name'] : '';
             if (!isset($this_battleinfo['battle_robots_limit'])) {
                 $this_battleinfo['battle_robots_limit'] = 1;
             }
             if (!isset($this_battleinfo['battle_points'])) {
                 $this_battleinfo['battle_points'] = 0;
             }
             if (!isset($this_battleinfo['battle_zenny'])) {
                 $this_battleinfo['battle_zenny'] = 0;
             }
             if (!empty($this_battleinfo['battle_button'])) {
                 $this_option_button_text = $this_battleinfo['battle_button'];
             } elseif (!empty($this_fieldinfo['field_name'])) {
                 $this_option_button_text = $this_fieldinfo['field_name'];
             } else {
                 $this_option_button_text = 'Battle';
             }
             if ($this_option_min_level < 1) {
                 $this_option_min_level = 1;
             }
             if ($this_option_max_level > 100) {
                 $this_option_max_level = 100;
             }
             $this_option_level_range = $this_option_min_level == $this_option_max_level ? 'Level ' . $this_option_min_level : 'Levels ' . $this_option_min_level . '-' . $this_option_max_level;
             $this_option_star_force = !empty($this_targetinfo['player_starforce']) ? ' | +' . number_format($this_option_star_boost * MMRPG_SETTINGS_STARS_ATTACKBOOST, 0, '.', ',') . ' Boost' : '';
             $this_option_point_amount = number_format($this_option_points, 0, '.', ',') . ' Point' . ($this_option_points != 1 ? 's' : '');
             //$this_option_label .= (!empty($this_option_button_text) ? '<span class="multi"><span class="maintext">'.$this_option_button_text.'</span><span class="subtext">'.$this_option_level_range.str_replace('|', '<span class="pipe">|</span>', $this_option_star_force).'</span><span class="subtext2">'.$this_option_point_amount.'</span></span>'.(!$this_has_field_star && (!$this_option_complete || ($this_option_complete && $this_option_encore)) ? '<span class="arrow"> &#9658;</span>' : '') : '<span class="single">???</span>');
             if (!empty($this_option_button_text)) {
                 $this_option_label .= '<span class="multi"><span class="maintext">' . $this_option_button_text . '</span><span class="subtext">' . $this_option_point_amount . '</span><span class="subtext2">' . $this_option_level_range . '</span></span>' . (!$this_has_field_star && (!$this_option_complete || $this_option_complete && $this_option_encore) ? '<span class="arrow"> &#9658;</span>' : '');
             } else {
                 $this_option_label .= '<span class="single">???</span>';
             }
             // Generate this options hover tooltip details
             $this_option_title = '';
             //$this_battleinfo['battle_button'];
             //$this_option_title .= '$this_master_count = '.$this_master_count.'; $this_mecha_count = '.$this_mecha_count.'; ';
             //if ($this_battleinfo['battle_button'] != $this_battleinfo['battle_name']){ $this_option_title .= ' | '.$this_battleinfo['battle_name']; }
             $this_option_title .= '&laquo; ' . $this_battleinfo['battle_name'] . ' &raquo;';
             $this_option_title .= ' <br />' . $this_fieldinfo['field_name'];
             if (!empty($this_fieldinfo['field_type'])) {
                 if (!empty($this_fieldinfo['field_type2'])) {
                     $this_option_title .= ' | ' . ucfirst($this_fieldinfo['field_type']) . ' / ' . ucfirst($this_fieldinfo['field_type2']) . ' Type';
                 } else {
                     $this_option_title .= ' | ' . ucfirst($this_fieldinfo['field_type']) . ' Type';
                 }
             }
             $this_option_title .= ' | ' . $this_option_level_range . ' <br />';
             //.$this_option_star_force;
             $this_option_title .= 'Target : ' . ($this_battleinfo['battle_turns_limit'] == 1 ? '1 Turn' : $this_battleinfo['battle_turns_limit'] . ' Turns') . ' with ' . ($this_battleinfo['battle_robots_limit'] == 1 ? '1 Robot' : $this_battleinfo['battle_robots_limit'] . ' Robots') . ' <br />';
             $this_option_title .= 'Reward : ' . ($this_battleinfo['battle_points'] == 1 ? '1 Point' : number_format($this_battleinfo['battle_points'], 0, '.', ',') . ' Points') . ' and ' . ($this_battleinfo['battle_zenny'] == 1 ? '1 Zenny' : number_format($this_battleinfo['battle_zenny'], 0, '.', ',') . ' Zenny');
             $this_option_title .= ' <br />' . $this_battleinfo['battle_description'] . (!empty($this_battleinfo['battle_description2']) ? ' ' . $this_battleinfo['battle_description2'] : '');
             /*
             if (!empty($this_option_complete) || !empty($this_option_failure) || !empty($this_has_field_star)){
                 $this_option_title .= ' <hr />&laquo; Battle Records &raquo;';
                 $this_option_title .= ' <br />Cleared : '.(!empty($this_option_complete['battle_count']) ? ($this_option_complete['battle_count'] == 1 ? '1 Time' : $this_option_complete['battle_count'].' Times') : '0 Times');
                 $this_option_title .= ' | Failed : '.(!empty($this_option_failure['battle_count']) ? ($this_option_failure['battle_count'] == 1 ? '1 Time' : $this_option_failure['battle_count'].' Times') : '0 Times');
                 if (!empty($this_option_complete)){
                     if (!empty($this_option_complete['battle_max_points'])){
                         $this_option_title .= ' <br />Max Points : '.(!empty($this_option_complete['battle_max_points']) ? number_format($this_option_complete['battle_max_points']) : 0).'';
                         $this_option_title .= ' | Min Points : '.(!empty($this_option_complete['battle_min_points']) ? number_format($this_option_complete['battle_min_points']) : 0).'';
                     }
                     if (!empty($this_option_complete['battle_max_turns'])){
                         $this_option_title .= ' <br />Max Turns : '.(!empty($this_option_complete['battle_max_turns']) ? number_format($this_option_complete['battle_max_turns']) : 0).'';
                         $this_option_title .= ' | Min Turns : '.(!empty($this_option_complete['battle_min_turns']) ? number_format($this_option_complete['battle_min_turns']) : 0).'';
                     }
                     if (!empty($this_option_complete['battle_max_robots'])){
                         $this_option_title .= ' <br />Max Robots : '.(!empty($this_option_complete['battle_max_robots']) ? number_format($this_option_complete['battle_max_robots']) : 0).'';
                         $this_option_title .= ' | Min Robots : '.(!empty($this_option_complete['battle_min_robots']) ? number_format($this_option_complete['battle_min_robots']) : 0).'';
                     }
                 }
             }
             */
             $this_option_title_plain = strip_tags(str_replace('<br />', '&#10;', $this_option_title));
             $this_option_title_tooltip = htmlentities($this_option_title, ENT_QUOTES, 'UTF-8');
             // Define the field multipliers
             $temp_field_multipliers = array();
             if (!empty($this_fieldinfo['field_multipliers'])) {
                 $temp_multiplier_list = $this_fieldinfo['field_multipliers'];
                 asort($temp_multiplier_list);
                 $temp_multiplier_list = array_reverse($temp_multiplier_list, true);
                 foreach ($temp_multiplier_list as $temp_type => $temp_multiplier) {
                     if ($temp_multiplier == 1) {
                         continue;
                     }
                     $temp_field_multipliers[] = $temp_type . '*' . number_format($temp_multiplier, 1);
                 }
             }
             $temp_field_multipliers = !empty($temp_field_multipliers) ? implode('|', $temp_field_multipliers) : '';
             // DEBUG DEBUG
             //$this_battleinfo['battle_description'] .= json_encode($this_battleinfo['battle_rewards']);
             // Print out the option button markup with sprite and name
             $this_markup .= '<a data-chapter="' . $this_info['option_chapter'] . '" data-tooltip="' . $this_option_title_tooltip . '" data-field="' . htmlentities($this_fieldinfo['field_name'], ENT_QUOTES, 'UTF-8', true) . '" data-description="' . htmlentities($this_battleinfo['battle_description'] . (!empty($this_battleinfo['battle_description2']) ? ' ' . $this_battleinfo['battle_description2'] : ''), ENT_QUOTES, 'UTF-8', true) . '" data-multipliers="' . $temp_field_multipliers . '" data-background="' . (!empty($this_fieldinfo['field_background']) ? $this_fieldinfo['field_background'] : '') . '" data-foreground="' . (!empty($this_fieldinfo['field_foreground']) ? $this_fieldinfo['field_foreground'] : '') . '" class="' . $this_option_class . '" data-token="' . $this_option_token . '" data-next-limit="' . $this_option_limit . '" style="' . $this_option_style . (!empty($this_info['option_style']) ? ' ' . $this_info['option_style'] : '') . '"><div class="platform" style="' . $this_option_platform_style . '"><div class="chrome"><div class="inset"><label class="' . (!empty($this_battleinfo['battle_sprite']) ? 'has_image' : 'no_image') . '">' . $this_option_label . '</label></div></div></div></a>' . "\r\n";
             // Update the main battle option array with recent changes
             $this_battleinfo['flag_skip'] = true;
             $battle_options[$this_key] = $this_battleinfo;
         }
     }
     // Return the generated markup
     return $this_markup;
 }
Beispiel #7
0
   foreach ($this_omega_factors_four AS $key => $factor){ if (in_array($factor['field'], $temp_unlocked_fields)){ $temp_omega_factor_options[] = $factor; } }
 */
 // Loop through the players in the field edit data
 foreach ($allowed_edit_data as $player_token => $player_info) {
     // Collect the rewards for this player
     $player_rewards = rpg_game::player_rewards($player_token);
     // Auto-populate the player fields array with appropriate values
     if (empty($player_rewards['player_fields'])) {
         // Define the player fields array and prepare to populate
         $player_rewards['player_fields'] = array();
         // Loop through and add all the MM1 fields
         foreach ($temp_omega_factor_options as $omega_key => $omega_info) {
             if (empty($mmrpg_database_fields[$omega_info['field']])) {
                 continue;
             }
             $field_info = rpg_field::parse_index_info($mmrpg_database_fields[$omega_info['field']]);
             $player_rewards['player_fields'][] = $field_info;
         }
     }
     /*
     // Auto-populate the player items array with appropriate values
     if (!empty($_SESSION[$session_token]['values']['battle_items'])){
       // Define the player items array and prepare to populate
       $player_rewards['player_items'] = array();
       // Loop through and add all the collected items as options
       $temp_key_items = array('item-screw-large', 'item-screw-small', 'item-heart', 'item-star');
       foreach ($_SESSION[$session_token]['values']['battle_items'] AS $omega_token => $omega_count){
         if (empty($mmrpg_database_items[$omega_token])){ continue; }
         elseif (in_array($omega_token, $temp_key_items)){ continue; }
         $item_info = $mmrpg_database_items[$omega_token];
         $player_rewards['player_items'][] = $item_info;
                                 elseif ($active && $sort_direction == 'desc'){ echo ' <sup>&#8593;</sup>'; }
                             echo '</th>'.PHP_EOL;
                         } else {
                             echo '<th class="'.$class.'">&nbsp;</th>'.PHP_EOL;
                         }
                     }
                     ?>
                 </tr>
             </thead>
             <tbody>
                 <?
                 // Loop through collected fields and list their details
                 if (!empty($field_index)){
                     foreach ($field_index AS $field_id => $field_info){
                         // Parse the field info before displaying it
                         $field_info = rpg_field::parse_index_info($field_info);
                         // Collect the display fields from the array
                         $field_token = $field_info['field_token'];
                         $field_name = $field_info['field_name'];
                         $field_group = '<span class="token">'.$field_info['field_group'].'</span>';
                         $field_type1 = !empty($field_info['field_type']) && !empty($type_index[$field_info['field_type']]) ? $type_index[$field_info['field_type']] : $type_index['none'];
                         $type_string = '<span class="type '.$field_type1['type_token'].'">'.$field_type1['type_name'].'</span>';
                         $edit_link = 'admin/fields/'.$field_id.'/';
                         $view_link = 'database/fields/'.$field_token.'/';
                         $complete = $field_info['field_flag_complete'] ? true : false;
                         $published = $field_info['field_flag_published'] ? true : false;
                         $hidden = $field_info['field_flag_hidden'] ? true : false;
                         // Print out the field info as a table row
                         ?>
                         <tr class="object<?php 
 echo !$published ? ' unpublished' : '';
    public static function print_database_markup($robot_info, $print_options = array(), $cache_markup = false)
    {
        // Define the markup variable
        $this_markup = '';
        // Define the global variables
        global $mmrpg_index, $this_current_uri, $this_current_url, $db;
        global $mmrpg_database_players, $mmrpg_database_items, $mmrpg_database_fields, $mmrpg_database_types;
        global $mmrpg_stat_base_max_value;
        // Collect the approriate database indexes
        if (empty($mmrpg_database_players)) {
            $mmrpg_database_players = rpg_player::get_index(true);
        }
        if (empty($mmrpg_database_items)) {
            $mmrpg_database_items = rpg_item::get_index(true);
        }
        if (empty($mmrpg_database_fields)) {
            $mmrpg_database_fields = rpg_field::get_index(true);
        }
        if (empty($mmrpg_database_types)) {
            $mmrpg_database_types = rpg_type::get_index();
        }
        // Define the print style defaults
        if (!isset($print_options['layout_style'])) {
            $print_options['layout_style'] = 'website';
        }
        if ($print_options['layout_style'] == 'website') {
            if (!isset($print_options['show_basics'])) {
                $print_options['show_basics'] = true;
            }
            if (!isset($print_options['show_mugshot'])) {
                $print_options['show_mugshot'] = true;
            }
            if (!isset($print_options['show_quotes'])) {
                $print_options['show_quotes'] = true;
            }
            if (!isset($print_options['show_description'])) {
                $print_options['show_description'] = true;
            }
            if (!isset($print_options['show_sprites'])) {
                $print_options['show_sprites'] = true;
            }
            if (!isset($print_options['show_abilities'])) {
                $print_options['show_abilities'] = true;
            }
            if (!isset($print_options['show_records'])) {
                $print_options['show_records'] = true;
            }
            if (!isset($print_options['show_footer'])) {
                $print_options['show_footer'] = true;
            }
            if (!isset($print_options['show_key'])) {
                $print_options['show_key'] = false;
            }
            if (!isset($print_options['show_stats'])) {
                $print_options['show_stats'] = true;
            }
        } elseif ($print_options['layout_style'] == 'website_compact') {
            if (!isset($print_options['show_basics'])) {
                $print_options['show_basics'] = true;
            }
            if (!isset($print_options['show_mugshot'])) {
                $print_options['show_mugshot'] = true;
            }
            if (!isset($print_options['show_quotes'])) {
                $print_options['show_quotes'] = false;
            }
            if (!isset($print_options['show_description'])) {
                $print_options['show_description'] = false;
            }
            if (!isset($print_options['show_sprites'])) {
                $print_options['show_sprites'] = false;
            }
            if (!isset($print_options['show_abilities'])) {
                $print_options['show_abilities'] = false;
            }
            if (!isset($print_options['show_records'])) {
                $print_options['show_records'] = false;
            }
            if (!isset($print_options['show_footer'])) {
                $print_options['show_footer'] = true;
            }
            if (!isset($print_options['show_key'])) {
                $print_options['show_key'] = false;
            }
            if (!isset($print_options['show_stats'])) {
                $print_options['show_stats'] = false;
            }
        } elseif ($print_options['layout_style'] == 'event') {
            if (!isset($print_options['show_basics'])) {
                $print_options['show_basics'] = true;
            }
            if (!isset($print_options['show_mugshot'])) {
                $print_options['show_mugshot'] = false;
            }
            if (!isset($print_options['show_quotes'])) {
                $print_options['show_quotes'] = false;
            }
            if (!isset($print_options['show_description'])) {
                $print_options['show_description'] = false;
            }
            if (!isset($print_options['show_sprites'])) {
                $print_options['show_sprites'] = false;
            }
            if (!isset($print_options['show_abilities'])) {
                $print_options['show_abilities'] = false;
            }
            if (!isset($print_options['show_records'])) {
                $print_options['show_records'] = false;
            }
            if (!isset($print_options['show_footer'])) {
                $print_options['show_footer'] = false;
            }
            if (!isset($print_options['show_key'])) {
                $print_options['show_key'] = false;
            }
            if (!isset($print_options['show_stats'])) {
                $print_options['show_stats'] = false;
            }
        }
        // Collect the robot sprite dimensions
        $robot_image_size = !empty($robot_info['robot_image_size']) ? $robot_info['robot_image_size'] : 40;
        $robot_image_size_text = $robot_image_size . 'x' . $robot_image_size;
        $robot_image_token = !empty($robot_info['robot_image']) ? $robot_info['robot_image'] : $robot_info['robot_token'];
        //die('<pre>$robot_info = '.print_r($robot_info, true).'</pre>');
        // Collect the robot's type for background display
        $robot_header_types = 'type_' . (!empty($robot_info['robot_core']) ? $robot_info['robot_core'] . (!empty($robot_info['robot_core2']) ? '_' . $robot_info['robot_core2'] : '') : 'none') . ' ';
        // Define the sprite sheet alt and title text
        $robot_sprite_size = $robot_image_size * 2;
        $robot_sprite_size_text = $robot_sprite_size . 'x' . $robot_sprite_size;
        $robot_sprite_title = $robot_info['robot_name'];
        // Prepare the variable for extra text
        $robot_info['robot_name_append'] = '';
        // Define the sprite frame index for robot images
        $robot_sprite_frames = array('base', 'taunt', 'victory', 'defeat', 'shoot', 'throw', 'summon', 'slide', 'defend', 'damage', 'base2');
        // Collect the field info if applicable
        $field_info_array = array();
        $temp_robot_fields = array();
        if (!empty($robot_info['robot_field']) && $robot_info['robot_field'] != 'field') {
            $temp_robot_fields[] = $robot_info['robot_field'];
        }
        if (!empty($robot_info['robot_field2'])) {
            $temp_robot_fields = array_merge($temp_robot_fields, $robot_info['robot_field2']);
        }
        if ($temp_robot_fields) {
            foreach ($temp_robot_fields as $key => $token) {
                if (!empty($mmrpg_database_fields[$token])) {
                    $field_info_array[] = rpg_field::parse_index_info($mmrpg_database_fields[$token]);
                }
            }
        }
        // Define the class token for this robot
        $robot_class_token = '';
        $robot_class_token_plural = '';
        if ($robot_info['robot_class'] == 'master') {
            $robot_class_token = 'robot';
            $robot_class_token_plural = 'robots';
        } elseif ($robot_info['robot_class'] == 'mecha') {
            $robot_class_token = 'mecha';
            $robot_class_token_plural = 'mechas';
        } elseif ($robot_info['robot_class'] == 'boss') {
            $robot_class_token = 'boss';
            $robot_class_token_plural = 'bosses';
        }
        // Define the default class tokens for "empty" images
        $default_robot_class_tokens = array('robot', 'mecha', 'boss');
        // Automatically disable sections if content is unavailable
        if (empty($robot_info['robot_description2'])) {
            $print_options['show_description'] = false;
        }
        if (isset($robot_info['robot_image_sheets']) && $robot_info['robot_image_sheets'] === 0) {
            $print_options['show_sprites'] = false;
        } elseif (in_array($robot_image_token, $default_robot_class_tokens)) {
            $print_options['show_sprites'] = false;
        }
        // Define the base URLs for this robot
        $database_url = 'database/';
        $database_category_url = $database_url;
        if ($robot_info['robot_class'] == 'master') {
            $database_category_url .= 'robots/';
        } elseif ($robot_info['robot_class'] == 'mecha') {
            $database_category_url .= 'mechas/';
        } elseif ($robot_info['robot_class'] == 'boss') {
            $database_category_url .= 'bosses/';
        }
        $database_category_robot_url = $database_category_url . $robot_info['robot_token'] . '/';
        // Calculate the robot base stat total
        $robot_info['robot_total'] = 0;
        $robot_info['robot_total'] += $robot_info['robot_energy'];
        $robot_info['robot_total'] += $robot_info['robot_attack'];
        $robot_info['robot_total'] += $robot_info['robot_defense'];
        $robot_info['robot_total'] += $robot_info['robot_speed'];
        // Calculate this robot's maximum base stat for reference
        $robot_info['robot_max_stat_name'] = 'unknown';
        $robot_info['robot_max_stat_value'] = 0;
        $temp_types = array('energy', 'attack', 'defense', 'speed');
        foreach ($temp_types as $type) {
            if ($robot_info['robot_' . $type] > $robot_info['robot_max_stat_value']) {
                $robot_info['robot_max_stat_value'] = $robot_info['robot_' . $type];
                $robot_info['robot_max_stat_name'] = $type;
            }
        }
        // Collect the database records for this robot
        if ($print_options['show_records']) {
            global $db;
            $temp_robot_records = array('robot_encountered' => 0, 'robot_defeated' => 0, 'robot_unlocked' => 0, 'robot_summoned' => 0, 'robot_scanned' => 0);
            //$temp_robot_records['player_count'] = $db->get_value("SELECT COUNT(board_id) AS player_count  FROM mmrpg_leaderboard WHERE board_robots LIKE '%[".$robot_info['robot_token'].":%' AND board_points > 0", 'player_count');
            $temp_player_query = "SELECT\n                mmrpg_saves.user_id,\n                mmrpg_saves.save_values_robot_database,\n                mmrpg_leaderboard.board_points\n                FROM mmrpg_saves\n                LEFT JOIN mmrpg_leaderboard ON mmrpg_leaderboard.user_id = mmrpg_saves.user_id\n                WHERE mmrpg_saves.save_values_robot_database LIKE '%\"{$robot_info['robot_token']}\"%' AND mmrpg_leaderboard.board_points > 0;";
            $temp_player_list = $db->get_array_list($temp_player_query);
            if (!empty($temp_player_list)) {
                foreach ($temp_player_list as $temp_data) {
                    $temp_values = !empty($temp_data['save_values_robot_database']) ? json_decode($temp_data['save_values_robot_database'], true) : array();
                    $temp_entry = !empty($temp_values[$robot_info['robot_token']]) ? $temp_values[$robot_info['robot_token']] : array();
                    foreach ($temp_robot_records as $temp_record => $temp_count) {
                        if (!empty($temp_entry[$temp_record])) {
                            $temp_robot_records[$temp_record] += $temp_entry[$temp_record];
                        }
                    }
                }
            }
            $temp_values = array();
            //echo '<pre>'.print_r($temp_robot_records, true).'</pre>';
        }
        // Define the common stat container variables
        $stat_container_percent = 74;
        $stat_base_max_value = 2000;
        $stat_padding_area = 76;
        if (!empty($mmrpg_stat_base_max_value[$robot_info['robot_class']])) {
            $stat_base_max_value = $mmrpg_stat_base_max_value[$robot_info['robot_class']];
        } elseif ($robot_info['robot_class'] == 'master') {
            $stat_base_max_value = 400;
        } elseif ($robot_info['robot_class'] == 'mecha') {
            $stat_base_max_value = 400;
        } elseif ($robot_info['robot_class'] == 'boss') {
            $stat_base_max_value = 2000;
        }
        // If this is a mecha class, do not show potential stat totals... for now
        //if ($robot_info['robot_class'] != 'master'){
        //  $print_options['show_stats'] = false;
        //}
        // Define the variable to hold compact footer link markup
        $compact_footer_link_markup = array();
        //$compact_footer_link_markup[] = '<a class="link link_permalink" href="'.$database_category_robot_url.'">+ Huh?</a>';
        // Add a link to the sprites in the compact footer markup
        if (!in_array($robot_image_token, $default_robot_class_tokens)) {
            $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#sprites">#Sprites</a>';
        }
        if (!empty($robot_info['robot_quotes']['battle_start'])) {
            $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#quotes">#Quotes</a>';
        }
        if (!empty($robot_info['robot_description2'])) {
            $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#description">#Description</a>';
        }
        if (!empty($robot_info['robot_abilities'])) {
            $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#abilities">#Abilities</a>';
        }
        $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#stats">#Stats</a>';
        $compact_footer_link_markup[] = '<a class="link" href="' . $database_category_robot_url . '#records">#Records</a>';
        /*
        $compact_footer_link_markup[] = '<a class="link '.$robot_header_types.'" href="'.$database_category_robot_url.'">View More</a>';
        */
        // Start the output buffer
        ob_start();
        /*<div class="database_container database_<?= $robot_class_token ?>_container database_<?= $print_options['layout_style'] ?>_container" data-token="<?= $robot_info['robot_token']?>" style="<?= $print_options['layout_style'] == 'website_compact' ? 'margin-bottom: 2px !important;' : '' ?>">*/
        ?>
        <div class="database_container layout_<?php 
        echo str_replace('website_', '', $print_options['layout_style']);
        ?>
" data-token="<?php 
        echo $robot_info['robot_token'];
        ?>
">

            <?php 
        if ($print_options['layout_style'] == 'website' || $print_options['layout_style'] == 'website_compact') {
            ?>
                <a class="anchor" id="<?php 
            echo $robot_info['robot_token'];
            ?>
"></a>
            <?php 
        }
        ?>

            <div class="subbody event event_triple event_visible" data-token="<?php 
        echo $robot_info['robot_token'];
        ?>
">

                <?php 
        if ($print_options['show_mugshot']) {
            ?>

                    <div class="this_sprite sprite_left" style="height: 40px;">
                        <?php 
            if ($print_options['show_mugshot']) {
                ?>
                            <?php 
                if ($print_options['show_key'] !== false) {
                    ?>
                                <div class="mugshot robot_type <?php 
                    echo $robot_header_types;
                    ?>
" style="font-size: 9px; line-height: 11px; text-align: center; margin-bottom: 2px; padding: 0 0 1px !important;"><?php 
                    echo 'No.' . $robot_info['robot_key'];
                    ?>
</div>
                            <?php 
                }
                ?>
                            <?php 
                if (!in_array($robot_image_token, $default_robot_class_tokens)) {
                    ?>
                                <div class="mugshot robot_type <?php 
                    echo $robot_header_types;
                    ?>
"><div style="background-image: url(i/r/<?php 
                    echo $robot_image_token;
                    ?>
/mr<?php 
                    echo $robot_image_size;
                    ?>
.png?<?php 
                    echo MMRPG_CONFIG_CACHE_DATE;
                    ?>
); " class="sprite sprite_robot sprite_40x40 sprite_40x40_mug sprite_size_<?php 
                    echo $robot_image_size_text;
                    ?>
 sprite_size_<?php 
                    echo $robot_image_size_text;
                    ?>
_mug robot_status_active robot_position_active"><?php 
                    echo $robot_info['robot_name'];
                    ?>
's Mugshot</div></div>
                            <?php 
                } else {
                    ?>
                                <div class="mugshot robot_type <?php 
                    echo $robot_header_types;
                    ?>
"><div style="background-image: none; background-color: #000000; background-color: rgba(0, 0, 0, 0.6); " class="sprite sprite_robot sprite_40x40 sprite_40x40_mug sprite_size_<?php 
                    echo $robot_image_size_text;
                    ?>
 sprite_size_<?php 
                    echo $robot_image_size_text;
                    ?>
_mug robot_status_active robot_position_active">No Image</div></div>
                            <?php 
                }
                ?>
                        <?php 
            }
            ?>
                    </div>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_basics']) {
            ?>

                    <h2 class="header header_left <?php 
            echo $robot_header_types;
            ?>
 <?php 
            echo !$print_options['show_mugshot'] ? 'nomug' : '';
            ?>
" style="<?php 
            echo !$print_options['show_mugshot'] ? 'margin-left: 0;' : '';
            ?>
">
                        <?php 
            if ($print_options['layout_style'] == 'website_compact') {
                ?>
                            <a href="<?php 
                echo $database_category_robot_url;
                ?>
"><?php 
                echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
                ?>
</a>
                        <?php 
            } else {
                ?>
                            <?php 
                echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
                ?>
&#39;s Data
                        <?php 
            }
            ?>
                        <div class="header_core robot_type"><?php 
            echo !empty($robot_info['robot_core']) ? ucwords($robot_info['robot_core'] . (!empty($robot_info['robot_core2']) ? ' / ' . $robot_info['robot_core2'] : '')) : 'Neutral';
            echo $robot_info['robot_class'] == 'mecha' ? ' Type' : ' Core';
            ?>
</div>
                    </h2>
                    <div class="body body_left <?php 
            echo !$print_options['show_mugshot'] ? 'fullsize' : '';
            ?>
">
                        <table class="full">
                            <colgroup>
                                <?php 
            if ($print_options['layout_style'] == 'website') {
                ?>
                                    <col width="48%" />
                                    <col width="1%" />
                                    <col width="48%" />
                                <?php 
            } else {
                ?>
                                    <col width="40%" />
                                    <col width="1%" />
                                    <col width="59%" />
                                <?php 
            }
            ?>
                            </colgroup>
                            <tbody>
                                <?php 
            if ($print_options['layout_style'] != 'event') {
                ?>
                                    <tr>
                                        <td  class="right">
                                            <label>Name :</label>
                                            <span class="robot_type" style="width: auto;"><?php 
                echo $robot_info['robot_name'];
                ?>
</span>
                                            <?php 
                if (!empty($robot_info['robot_generation'])) {
                    ?>
<span class="robot_type" style="width: auto;"><?php 
                    echo $robot_info['robot_generation'];
                    ?>
 Gen</span><?php 
                }
                ?>
                                        </td>
                                        <td></td>
                                        <td class="right">
                                            <?php 
                // Define the source game string
                if ($robot_info['robot_token'] == 'mega-man' || $robot_info['robot_token'] == 'roll') {
                    $temp_source_string = 'Mega Man';
                } elseif ($robot_info['robot_token'] == 'proto-man') {
                    $temp_source_string = 'Mega Man 3';
                } elseif ($robot_info['robot_token'] == 'bass') {
                    $temp_source_string = 'Mega Man 7';
                } elseif ($robot_info['robot_token'] == 'disco' || $robot_info['robot_token'] == 'rhythm') {
                    $temp_source_string = 'Mega Man RPG Prototype';
                } elseif (preg_match('/^flutter-fly/i', $robot_info['robot_token'])) {
                    $temp_source_string = 'Mega Man RPG Prototype';
                } elseif (preg_match('/^beetle-borg/i', $robot_info['robot_token'])) {
                    $temp_source_string = '<span title="Rockman &amp; Forte 2 : Challenger from the Future (JP)">Mega Man &amp; Bass 2</span>';
                } elseif ($robot_info['robot_token'] == 'bond-man') {
                    $temp_source_string = 'Mega Man RPG Prototype';
                } elseif ($robot_info['robot_token'] == 'enker') {
                    $temp_source_string = 'Mega Man : Dr. Wily\'s Revenge';
                } elseif ($robot_info['robot_token'] == 'punk') {
                    $temp_source_string = 'Mega Man III';
                } elseif ($robot_info['robot_token'] == 'ballade') {
                    $temp_source_string = 'Mega Man IV';
                } elseif ($robot_info['robot_token'] == 'quint') {
                    $temp_source_string = 'Mega Man II';
                } elseif ($robot_info['robot_token'] == 'oil-man' || $robot_info['robot_token'] == 'time-man') {
                    $temp_source_string = 'Mega Man Powered Up';
                } elseif ($robot_info['robot_token'] == 'solo') {
                    $temp_source_string = 'Mega Man Star Force 3';
                } elseif (preg_match('/^duo-2/i', $robot_info['robot_token'])) {
                    $temp_source_string = 'Mega Man 8';
                } elseif (preg_match('/^duo/i', $robot_info['robot_token'])) {
                    $temp_source_string = 'Mega Man Power Battles';
                } elseif (preg_match('/^trio/i', $robot_info['robot_token'])) {
                    $temp_source_string = 'Mega Man RPG Prototype';
                } elseif ($robot_info['robot_token'] == 'cosmo-man' || $robot_info['robot_token'] == 'lark-man') {
                    $temp_source_string = 'Mega Man Battle Network 5';
                } elseif ($robot_info['robot_token'] == 'laser-man') {
                    $temp_source_string = 'Mega Man Battle Network 4';
                } elseif ($robot_info['robot_token'] == 'desert-man') {
                    $temp_source_string = 'Mega Man Battle Network 3';
                } elseif ($robot_info['robot_token'] == 'planet-man' || $robot_info['robot_token'] == 'gate-man') {
                    $temp_source_string = 'Mega Man Battle Network 2';
                } elseif ($robot_info['robot_token'] == 'shark-man' || $robot_info['robot_token'] == 'number-man' || $robot_info['robot_token'] == 'color-man') {
                    $temp_source_string = 'Mega Man Battle Network';
                } elseif ($robot_info['robot_token'] == 'trill' || $robot_info['robot_token'] == 'slur') {
                    $temp_source_string = '<span title="Rockman.EXE Stream (JP)">Mega Man NT Warrior</span>';
                } elseif ($robot_info['robot_game'] == 'MM085') {
                    $temp_source_string = '<span title="Rockman &amp; Forte (JP)">Mega Man &amp; Bass</span>';
                } elseif ($robot_info['robot_game'] == 'MM30') {
                    $temp_source_string = 'Mega Man V';
                } elseif ($robot_info['robot_game'] == 'MM21') {
                    $temp_source_string = 'Mega Man : The Wily Wars';
                } elseif ($robot_info['robot_game'] == 'MM19') {
                    $temp_source_string = 'Mega Man RPG Prototype';
                } elseif ($robot_info['robot_game'] == 'MMEXE') {
                    $temp_source_string = 'Mega Man EXE';
                } elseif ($robot_info['robot_game'] == 'MM00' || $robot_info['robot_game'] == 'MM01') {
                    $temp_source_string = 'Mega Man';
                } elseif (preg_match('/^MM([0-9]{2})$/', $robot_info['robot_game'])) {
                    $temp_source_string = 'Mega Man ' . ltrim(str_replace('MM', '', $robot_info['robot_game']), '0');
                } elseif (!empty($robot_info['robot_game'])) {
                    $temp_source_string = $robot_info['robot_game'];
                } else {
                    $temp_source_string = '???';
                }
                ?>
                                            <label>Source :</label>
                                            <span class="robot_type"><?php 
                echo $temp_source_string;
                ?>
</span>
                                        </td>
                                    </tr>
                                <?php 
            }
            ?>
                                <tr>
                                    <td  class="right">
                                        <label>Model :</label>
                                        <span class="robot_type"><?php 
            echo $robot_info['robot_number'];
            ?>
</span>
                                    </td>
                                    <td></td>
                                    <td  class="right">
                                        <label>Class :</label>
                                        <span class="robot_type"><?php 
            echo !empty($robot_info['robot_description']) ? $robot_info['robot_description'] : '&hellip;';
            ?>
</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td  class="right">
                                        <label>Type :</label>
                                        <?php 
            if ($print_options['layout_style'] != 'event') {
                ?>
                                            <?php 
                if (!empty($robot_info['robot_core2'])) {
                    ?>
                                                <span class="robot_type type_<?php 
                    echo $robot_info['robot_core'] . '_' . $robot_info['robot_core2'];
                    ?>
">
                                                    <a href="<?php 
                    echo $database_category_url;
                    echo $robot_info['robot_core'];
                    ?>
/"><?php 
                    echo ucfirst($robot_info['robot_core']);
                    ?>
</a> /
                                                    <a href="<?php 
                    echo $database_category_url;
                    echo $robot_info['robot_core2'];
                    ?>
/"><?php 
                    echo ucfirst($robot_info['robot_core2']);
                    echo $robot_info['robot_class'] == 'master' ? ' Core' : ' Type';
                    ?>
</a>
                                                </span>
                                            <?php 
                } else {
                    ?>
                                                <a href="<?php 
                    echo $database_category_url;
                    echo !empty($robot_info['robot_core']) ? $robot_info['robot_core'] : 'none';
                    ?>
/" class="robot_type type_<?php 
                    echo !empty($robot_info['robot_core']) ? $robot_info['robot_core'] : 'none';
                    ?>
"><?php 
                    echo !empty($robot_info['robot_core']) ? ucfirst($robot_info['robot_core']) : 'Neutral';
                    echo $robot_info['robot_class'] == 'master' ? ' Core' : ' Type';
                    ?>
</a>
                                            <?php 
                }
                ?>
                                        <?php 
            } else {
                ?>
                                            <span class="robot_type type_<?php 
                echo !empty($robot_info['robot_core']) ? $robot_info['robot_core'] . (!empty($robot_info['robot_core2']) ? '_' . $robot_info['robot_core2'] : '') : 'none';
                ?>
"><?php 
                echo !empty($robot_info['robot_core']) ? ucwords($robot_info['robot_core'] . (!empty($robot_info['robot_core2']) ? ' / ' . $robot_info['robot_core2'] : '')) : 'Neutral';
                echo $robot_info['robot_class'] == 'master' ? ' Core' : ' Type';
                ?>
</span>
                                        <?php 
            }
            ?>
                                    </td>
                                    <td></td>
                                    <td  class="right">
                                        <label><?php 
            echo empty($field_info_array) || count($field_info_array) == 1 ? 'Field' : 'Fields';
            ?>
 :</label>
                                        <?php 
            // Loop through the robots fields if available
            if (!empty($field_info_array)) {
                foreach ($field_info_array as $key => $field_info) {
                    ?>
                                                    <?php 
                    if ($print_options['layout_style'] != 'event') {
                        ?>
                                                        <a href="<?php 
                        echo $database_url;
                        ?>
fields/<?php 
                        echo $field_info['field_token'];
                        ?>
/" class="field_type field_type_<?php 
                        echo (!empty($field_info['field_type']) ? $field_info['field_type'] : 'none') . (!empty($field_info['field_type2']) ? '_' . $field_info['field_type2'] : '');
                        ?>
" <?php 
                        echo $key > 0 ? 'title="' . $field_info['field_name'] . '"' : '';
                        ?>
><?php 
                        echo $key == 0 ? $field_info['field_name'] : preg_replace('/^([a-z0-9]+)\\s([a-z0-9]+)$/i', '$1&hellip;', $field_info['field_name']);
                        ?>
</a>
                                                    <?php 
                    } else {
                        ?>
                                                        <span class="field_type field_type_<?php 
                        echo (!empty($field_info['field_type']) ? $field_info['field_type'] : 'none') . (!empty($field_info['field_type2']) ? '_' . $field_info['field_type2'] : '');
                        ?>
" <?php 
                        echo $key > 0 ? 'title="' . $field_info['field_name'] . '"' : '';
                        ?>
><?php 
                        echo $key == 0 ? $field_info['field_name'] : preg_replace('/^([a-z0-9]+)\\s([a-z0-9]+)$/i', '$1&hellip;', $field_info['field_name']);
                        ?>
</span>
                                                    <?php 
                    }
                    ?>
                                                <?php 
                }
            } else {
                ?>
                                                <span class="field_type">&hellip;</span>
                                            <?php 
            }
            ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td  class="right">
                                        <label>Energy :</label>
                                        <span class="stat" style="width: <?php 
            echo $stat_container_percent;
            ?>
%;">
                                            <?php 
            if (false && $print_options['layout_style'] == 'website_compact') {
                ?>
                                                <span class="robot_stat type_energy" style="padding-left: <?php 
                echo round($robot_info['robot_energy'] / $robot_info['robot_total'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_energy'];
                ?>
</span></span>
                                            <?php 
            } else {
                ?>
                                                <span class="robot_stat type_energy" style="padding-left: <?php 
                echo round($robot_info['robot_energy'] / $robot_info['robot_max_stat_value'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_energy'];
                ?>
</span></span>
                                            <?php 
            }
            ?>
                                        </span>
                                    </td>
                                    <td></td>
                                    <td class="right">
                                        <label>Weaknesses :</label>
                                        <?php 
            if (!empty($robot_info['robot_weaknesses'])) {
                $temp_string = array();
                foreach ($robot_info['robot_weaknesses'] as $robot_weakness) {
                    if ($print_options['layout_style'] != 'event') {
                        $temp_string[] = '<a href="' . $database_url . 'abilities/' . $robot_weakness . '/" class="robot_weakness robot_type type_' . $robot_weakness . '">' . $mmrpg_database_types[$robot_weakness]['type_name'] . '</a>';
                    } else {
                        $temp_string[] = '<span class="robot_weakness robot_type type_' . $robot_weakness . '">' . $mmrpg_database_types[$robot_weakness]['type_name'] . '</span>';
                    }
                }
                echo implode(' ', $temp_string);
            } else {
                echo '<span class="robot_weakness robot_type type_none">None</span>';
            }
            ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td  class="right">
                                        <label>Attack :</label>
                                        <span class="stat" style="width: <?php 
            echo $stat_container_percent;
            ?>
%;">
                                            <?php 
            if (false && $print_options['layout_style'] == 'website_compact') {
                ?>
                                                <span class="robot_stat type_attack" style="padding-left: <?php 
                echo round($robot_info['robot_attack'] / $robot_info['robot_total'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_attack'];
                ?>
</span></span>
                                            <?php 
            } else {
                ?>
                                                <span class="robot_stat type_attack" style="padding-left: <?php 
                echo round($robot_info['robot_attack'] / $robot_info['robot_max_stat_value'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_attack'];
                ?>
</span></span>
                                            <?php 
            }
            ?>
                                        </span>
                                    </td>
                                    <td></td>
                                    <td class="right">
                                        <label>Resistances :</label>
                                        <?php 
            if (!empty($robot_info['robot_resistances'])) {
                $temp_string = array();
                foreach ($robot_info['robot_resistances'] as $robot_resistance) {
                    if ($print_options['layout_style'] != 'event') {
                        $temp_string[] = '<a href="' . $database_url . 'abilities/' . $robot_resistance . '/" class="robot_resistance robot_type type_' . $robot_resistance . '">' . $mmrpg_database_types[$robot_resistance]['type_name'] . '</a>';
                    } else {
                        $temp_string[] = '<span class="robot_resistance robot_type type_' . $robot_resistance . '">' . $mmrpg_database_types[$robot_resistance]['type_name'] . '</span>';
                    }
                }
                echo implode(' ', $temp_string);
            } else {
                echo '<span class="robot_resistance robot_type type_none">None</span>';
            }
            ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td  class="right">
                                        <label>Defense :</label>
                                        <span class="stat" style="width: <?php 
            echo $stat_container_percent;
            ?>
%;">
                                            <?php 
            if (false && $print_options['layout_style'] == 'website_compact') {
                ?>
                                                <span class="robot_stat type_defense" style="padding-left: <?php 
                echo round($robot_info['robot_defense'] / $robot_info['robot_total'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_defense'];
                ?>
</span></span>
                                            <?php 
            } else {
                ?>
                                                <span class="robot_stat type_defense" style="padding-left: <?php 
                echo round($robot_info['robot_defense'] / $robot_info['robot_max_stat_value'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_defense'];
                ?>
</span></span>
                                            <?php 
            }
            ?>
                                        </span>
                                    </td>
                                    <td></td>
                                    <td class="right">
                                        <label>Affinities :</label>
                                        <?php 
            if (!empty($robot_info['robot_affinities'])) {
                $temp_string = array();
                foreach ($robot_info['robot_affinities'] as $robot_affinity) {
                    if ($print_options['layout_style'] != 'event') {
                        $temp_string[] = '<a href="' . $database_url . 'abilities/' . $robot_affinity . '/" class="robot_affinity robot_type type_' . $robot_affinity . '">' . $mmrpg_database_types[$robot_affinity]['type_name'] . '</a>';
                    } else {
                        $temp_string[] = '<span class="robot_affinity robot_type type_' . $robot_affinity . '">' . $mmrpg_database_types[$robot_affinity]['type_name'] . '</span>';
                    }
                }
                echo implode(' ', $temp_string);
            } else {
                echo '<span class="robot_affinity robot_type type_none">None</span>';
            }
            ?>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Speed :</label>
                                        <span class="stat" style="width: <?php 
            echo $stat_container_percent;
            ?>
%;">
                                            <?php 
            if (false && $print_options['layout_style'] == 'website_compact') {
                ?>
                                                <span class="robot_stat type_speed" style="padding-left: <?php 
                echo round($robot_info['robot_speed'] / $robot_info['robot_total'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_speed'];
                ?>
</span></span>
                                            <?php 
            } else {
                ?>
                                                <span class="robot_stat type_speed" style="padding-left: <?php 
                echo round($robot_info['robot_speed'] / $robot_info['robot_max_stat_value'] * $stat_padding_area, 4);
                ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                echo $robot_info['robot_speed'];
                ?>
</span></span>
                                            <?php 
            }
            ?>
                                        </span>
                                    </td>
                                    <td></td>
                                    <td class="right">
                                        <label>Immunities :</label>
                                        <?php 
            if (!empty($robot_info['robot_immunities'])) {
                $temp_string = array();
                foreach ($robot_info['robot_immunities'] as $robot_immunity) {
                    if ($print_options['layout_style'] != 'event') {
                        $temp_string[] = '<a href="' . $database_url . 'abilities/' . $robot_immunity . '/" class="robot_immunity robot_type type_' . $robot_immunity . '">' . $mmrpg_database_types[$robot_immunity]['type_name'] . '</a>';
                    } else {
                        $temp_string[] = '<span class="robot_immunity robot_type type_' . $robot_immunity . '">' . $mmrpg_database_types[$robot_immunity]['type_name'] . '</span>';
                    }
                }
                echo implode(' ', $temp_string);
            } else {
                echo '<span class="robot_immunity robot_type type_none">None</span>';
            }
            ?>
                                    </td>
                                </tr>

                                <?php 
            if (false && ($print_options['layout_style'] == 'website' || $print_options['layout_style'] == 'website_compact')) {
                ?>

                                    <tr>
                                        <td class="right">
                                            <label>Total :</label>
                                            <span class="stat" style="width: <?php 
                echo $stat_container_percent;
                ?>
%;">
                                                <?php 
                if ($print_options['layout_style'] == 'website_compact' && $robot_info['robot_total'] < $stat_base_max_value) {
                    ?>
                                                    <span class="robot_stat type_empty">
                                                        <span class="robot_stat type_none" style="padding-left: <?php 
                    echo round($robot_info['robot_total'] / $stat_base_max_value * $stat_padding_area, 4);
                    ?>
%;"><span><?php 
                    echo $robot_info['robot_total'];
                    ?>
</span></span>
                                                    </span>
                                                <?php 
                } else {
                    ?>
                                                    <span class="robot_stat type_none" style="padding-left: <?php 
                    echo $stat_padding_area;
                    ?>
%;"><span style="display: inline-block; width: 35px;"><?php 
                    echo $robot_info['robot_total'];
                    ?>
</span></span>
                                                <?php 
                }
                ?>
                                            </span>
                                        </td>
                                        <td></td>
                                        <td class="right"><?/*
                                            <label>Immunities :</label>
                                            <?php 
                if (!empty($robot_info['robot_immunities'])) {
                    $temp_string = array();
                    foreach ($robot_info['robot_immunities'] as $robot_immunity) {
                        if ($print_options['layout_style'] != 'event') {
                            $temp_string[] = '<a href="' . $database_url . 'abilities/' . $robot_immunity . '/" class="robot_immunity robot_type type_' . $robot_immunity . '">' . $mmrpg_database_types[$robot_immunity]['type_name'] . '</a>';
                        } else {
                            $temp_string[] = '<span class="robot_immunity robot_type type_' . $robot_immunity . '">' . $mmrpg_database_types[$robot_immunity]['type_name'] . '</span>';
                        }
                    }
                    echo implode(' ', $temp_string);
                } else {
                    echo '<span class="robot_immunity robot_type type_none">None</span>';
                }
                ?>
*/?>
                                        </td>
                                    </tr>

                                <?php 
            }
            ?>

                                <?php 
            if ($print_options['layout_style'] == 'event') {
                ?>

                                    <?php 
                // Define the search and replace arrays for the robot quotes
                $temp_find = array('{this_player}', '{this_robot}', '{target_player}', '{target_robot}');
                $temp_replace = array('Doctor', $robot_info['robot_name'], 'Doctor', 'Robot');
                ?>
                                    <tr>
                                        <td colspan="3" class="center" style="font-size: 13px; padding: 5px 0; ">
                                            <span class="robot_quote">&quot;<?php 
                echo !empty($robot_info['robot_quotes']['battle_taunt']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_taunt']) : '&hellip;';
                ?>
&quot;</span>
                                        </td>
                                    </tr>

                                <?php 
            }
            ?>

                            </tbody>
                        </table>
                    </div>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['layout_style'] == 'website') {
            ?>

                    <?php 
            // Define the various tabs we are able to scroll to
            $section_tabs = array();
            if ($print_options['show_sprites']) {
                $section_tabs[] = array('sprites', 'Sprites', false);
            }
            if ($print_options['show_quotes']) {
                $section_tabs[] = array('quotes', 'Quotes', false);
            }
            if ($print_options['show_description']) {
                $section_tabs[] = array('description', 'Description', false);
            }
            if ($print_options['show_abilities']) {
                $section_tabs[] = array('abilities', 'Abilities', false);
            }
            if ($print_options['show_stats']) {
                $section_tabs[] = array('stats', 'Stats', false);
            }
            if ($print_options['show_records']) {
                $section_tabs[] = array('records', 'Records', false);
            }
            // Automatically mark the first element as true or active
            $section_tabs[0][2] = true;
            // Define the current URL for this robot or mecha page
            $temp_url = 'database/';
            if ($robot_info['robot_class'] == 'mecha') {
                $temp_url .= 'mechas/';
            } elseif ($robot_info['robot_class'] == 'master') {
                $temp_url .= 'robots/';
            } elseif ($robot_info['robot_class'] == 'boss') {
                $temp_url .= 'bosses/';
            }
            $temp_url .= $robot_info['robot_token'] . '/';
            ?>

                    <div class="section_tabs">
                        <?php 
            foreach ($section_tabs as $tab) {
                echo '<a class="link_inline link_' . $tab[0] . ' ' . ($tab[2] ? 'active' : '') . '" href="' . $temp_url . '#' . $tab[0] . '" data-anchor="#' . $tab[0] . '"><span class="wrap">' . $tab[1] . '</span></a>';
            }
            ?>
                    </div>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_sprites']) {
            ?>

                    <?php 
            // Start the output buffer and prepare to collect sprites
            ob_start();
            // Define the alts we'll be looping through for this robot
            $temp_alts_array = array();
            $temp_alts_array[] = array('token' => '', 'name' => $robot_info['robot_name'], 'summons' => 0);
            // Append predefined alts automatically, based on the robot image alt array
            if (!empty($robot_info['robot_image_alts'])) {
                $temp_alts_array = array_merge($temp_alts_array, $robot_info['robot_image_alts']);
            } elseif ($robot_info['robot_core'] == 'copy' && preg_match('/^(mega-man|proto-man|bass|doc-robot)$/i', $robot_info['robot_token'])) {
                foreach ($mmrpg_database_types as $type_token => $type_info) {
                    if (empty($type_token) || $type_token == 'none' || $type_token == 'copy') {
                        continue;
                    }
                    $temp_alts_array[] = array('token' => $type_token, 'name' => $robot_info['robot_name'] . ' (' . ucfirst($type_token) . ' Core)', 'summons' => 0);
                }
            } elseif (!empty($robot_info['robot_image_sheets'])) {
                for ($i = 2; $i <= $robot_info['robot_image_sheets']; $i++) {
                    $temp_alts_array[] = array('sheet' => $i, 'name' => $robot_info['robot_name'] . ' (Sheet #' . $i . ')', 'summons' => 0);
                }
            }
            // Loop through the alts and display images for them (yay!)
            foreach ($temp_alts_array as $alt_key => $alt_info) {
                // Define the current image token with alt in mind
                $temp_robot_image_token = $robot_image_token;
                $temp_robot_image_token .= !empty($alt_info['token']) ? '_' . $alt_info['token'] : '';
                $temp_robot_image_token .= !empty($alt_info['sheet']) ? '-' . $alt_info['sheet'] : '';
                $temp_robot_image_name = $alt_info['name'];
                // Update the alt array with this info
                $temp_alts_array[$alt_key]['image'] = $temp_robot_image_token;
                // Collect the number of sheets
                $temp_sheet_number = !empty($robot_info['robot_image_sheets']) ? $robot_info['robot_image_sheets'] : 1;
                // Loop through the different frames and print out the sprite sheets
                foreach (array('right', 'left') as $temp_direction) {
                    $temp_direction2 = substr($temp_direction, 0, 1);
                    $temp_embed = '[robot:' . $temp_direction . ']{' . $temp_robot_image_token . '}';
                    $temp_title = $temp_robot_image_name . ' | Mugshot Sprite ' . ucfirst($temp_direction);
                    $temp_title .= '<div style="margin-top: 4px; letting-spacing: 1px; font-size: 90%; font-family: Courier New; color: rgb(159, 150, 172);">' . $temp_embed . '</div>';
                    $temp_title = htmlentities($temp_title, ENT_QUOTES, 'UTF-8', true);
                    $temp_label = 'Mugshot ' . ucfirst(substr($temp_direction, 0, 1));
                    echo '<div class="frame_container" data-clickcopy="' . $temp_embed . '" data-direction="' . $temp_direction . '" data-image="' . $temp_robot_image_token . '" data-frame="mugshot" style="padding-top: 20px; float: left; position: relative; margin: 0; box-shadow: inset 1px 1px 5px rgba(0, 0, 0, 0.75); width: ' . $robot_sprite_size . 'px; height: ' . $robot_sprite_size . 'px; overflow: hidden;">';
                    echo '<img style="margin-left: 0;" data-tooltip="' . $temp_title . '" src="i/r/' . $temp_robot_image_token . '/m' . $temp_direction2 . $robot_sprite_size . '.png?' . MMRPG_CONFIG_CACHE_DATE . '" />';
                    echo '<label style="position: absolute; left: 5px; top: 0; color: #EFEFEF; font-size: 10px; text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);">' . $temp_label . '</label>';
                    echo '</div>';
                }
                // Loop through the different frames and print out the sprite sheets
                foreach ($robot_sprite_frames as $this_key => $this_frame) {
                    $margin_left = ceil((0 - $this_key) * $robot_sprite_size);
                    $frame_relative = $this_frame;
                    //if ($temp_sheet > 1){ $frame_relative = 'frame_'.str_pad((($temp_sheet - 1) * count($robot_sprite_frames) + $this_key + 1), 2, '0', STR_PAD_LEFT); }
                    $frame_relative_text = ucfirst(str_replace('_', ' ', $frame_relative));
                    foreach (array('right', 'left') as $temp_direction) {
                        $temp_direction2 = substr($temp_direction, 0, 1);
                        $temp_embed = '[robot:' . $temp_direction . ':' . $frame_relative . ']{' . $temp_robot_image_token . '}';
                        $temp_title = $temp_robot_image_name . ' | ' . $frame_relative_text . ' Sprite ' . ucfirst($temp_direction);
                        $temp_title .= '<div style="margin-top: 4px; letting-spacing: 1px; font-size: 90%; font-family: Courier New; color: rgb(159, 150, 172);">' . $temp_embed . '</div>';
                        $temp_title = htmlentities($temp_title, ENT_QUOTES, 'UTF-8', true);
                        $temp_label = $frame_relative_text . ' ' . ucfirst(substr($temp_direction, 0, 1));
                        //$image_token = !empty($robot_info['robot_image']) ? $robot_info['robot_image'] : $robot_info['robot_token'];
                        //if ($temp_sheet > 1){ $temp_robot_image_token .= '-'.$temp_sheet; }
                        echo '<div class="frame_container" data-clickcopy="' . $temp_embed . '" data-direction="' . $temp_direction . '" data-image="' . $temp_robot_image_token . '" data-frame="' . $frame_relative . '" style="padding-top: 20px; float: left; position: relative; margin: 0; box-shadow: inset 1px 1px 5px rgba(0, 0, 0, 0.75); width: ' . $robot_sprite_size . 'px; height: ' . $robot_sprite_size . 'px; overflow: hidden;">';
                        echo '<img style="margin-left: ' . $margin_left . 'px;" title="' . $temp_title . '" alt="' . $temp_title . '" src="i/r/' . $temp_robot_image_token . '/s' . $temp_direction2 . $robot_sprite_size . '.png?' . MMRPG_CONFIG_CACHE_DATE . '" />';
                        echo '<label style="position: absolute; left: 5px; top: 0; color: #EFEFEF; font-size: 10px; text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);">' . $temp_label . '</label>';
                        echo '</div>';
                    }
                }
            }
            // Collect the sprite markup from the output buffer for later
            $this_sprite_markup = ob_get_clean();
            ?>

                    <h2 id="sprites" class="header header_full <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left; overflow: hidden; height: auto;">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Sprites
                        <span class="header_links image_link_container">
                            <span class="images" style="<?php 
            echo count($temp_alts_array) == 1 ? 'visibility: hidden;' : '';
            ?>
"><?php 
            // Loop though and print links for the alts
            $alt_type_base = 'robot_type type_' . (!empty($robot_info['robot_core']) ? $robot_info['robot_core'] : 'none') . ' ';
            foreach ($temp_alts_array as $alt_key => $alt_info) {
                $alt_type = '';
                $alt_style = '';
                $alt_title = $alt_info['name'];
                $alt_type2 = $alt_type_base;
                if (preg_match('/^(?:[-_a-z0-9\\s]+)\\s\\(([a-z0-9]+)\\sCore\\)$/i', $alt_info['name'])) {
                    $alt_type = strtolower(preg_replace('/^(?:[-_a-z0-9\\s]+)\\s\\(([a-z0-9]+)\\sCore\\)$/i', '$1', $alt_info['name']));
                    $alt_name = '&bull;';
                    //ucfirst($alt_type); //substr(ucfirst($alt_type), 0, 2);
                    $alt_type = 'robot_type type_' . $alt_type . ' core_type ';
                    $alt_type2 = 'robot_type type_' . $alt_type . ' ';
                    $alt_style = 'border-color: rgba(0, 0, 0, 0.2) !important; ';
                } else {
                    $alt_name = $alt_key == 0 ? $robot_info['robot_name'] : 'Alt' . ($alt_key > 1 ? ' ' . $alt_key : '');
                    //$alt_key == 0 ? $robot_info['robot_name'] : $robot_info['robot_name'].' Alt'.($alt_key > 1 ? ' '.$alt_key : '');
                    $alt_type = 'robot_type type_empty ';
                    $alt_style = 'border-color: rgba(0, 0, 0, 0.2) !important; background-color: rgba(0, 0, 0, 0.2) !important; ';
                    //if ($robot_info['robot_core'] == 'copy' && $alt_key == 0){ $alt_type = 'robot_type type_empty '; }
                }
                echo '<a href="#" data-tooltip="' . $alt_title . '" data-tooltip-type="' . $alt_type2 . '" class="link link_image ' . ($alt_key == 0 ? 'link_active ' : '') . '" data-image="' . $alt_info['image'] . '">';
                echo '<span class="' . $alt_type . '" style="' . $alt_style . '">' . $alt_name . '</span>';
                echo '</a>';
            }
            ?>
</span>
                            <span class="pipe" style="<?php 
            echo count($temp_alts_array) == 1 ? 'visibility: hidden;' : '';
            ?>
">|</span>
                            <span class="directions"><?php 
            // Loop though and print links for the alts
            foreach (array('right', 'left') as $temp_key => $temp_direction) {
                echo '<a href="#" data-tooltip="' . ucfirst($temp_direction) . ' Facing Sprites" data-tooltip-type="' . $alt_type_base . '" class="link link_direction ' . ($temp_key == 0 ? 'link_active' : '') . '" data-direction="' . $temp_direction . '">';
                echo '<span class="ability_type ability_type_empty" style="border-color: rgba(0, 0, 0, 0.2) !important; background-color: rgba(0, 0, 0, 0.2) !important; ">' . ucfirst($temp_direction) . '</span>';
                echo '</a>';
            }
            ?>
</span>
                        </span>
                    </h2>
                    <div id="sprites_body" class="body body_full" style="margin: 0; padding: 10px; min-height: 10px;">
                        <div style="border: 1px solid rgba(0, 0, 0, 0.20); border-radius: 0.5em; -moz-border-radius: 0.5em; -webkit-border-radius: 0.5em; background: #4d4d4d url(images/assets/sprite-grid.gif) scroll repeat -10px -30px; overflow: hidden; padding: 10px 30px;">
                            <?php 
            echo $this_sprite_markup;
            ?>
                        </div>
                        <?
                        // Collect the sprite contributor index for display
                        $user_fields = rpg_user::get_fields(true, 'user');
                        $user_role_fields = rpg_user_role::get_fields(true, 'role');
                        $contributor_index = $db->get_array_list("SELECT
                            {$user_fields},
                            {$user_role_fields},
                            (CASE WHEN user.user_name_public <> ''
                                THEN user.user_name_public
                                ELSE user.user_name
                                END) AS user_name_current
                            FROM mmrpg_users AS user
                            LEFT JOIN mmrpg_roles AS role ON role.role_id = user.role_id
                            WHERE role.role_token IN ('developer', 'administrator', 'contributor', 'moderator')
                            ORDER BY user_name_current ASC;
                            ", 'user_id');
                        // Define the editor title based on ID
                        $temp_editor_title = 'Undefined';
                        $temp_final_divider = '<span style="color: #565656;"> | </span>';
                        $temp_editor_ids = array();
                        // Check if an image editor ID has been defined
                        if (!empty($robot_info['robot_image_editor']) && isset($contributor_index[$robot_info['robot_image_editor']])){
                            $temp_editor_ids[] = $robot_info['robot_image_editor'];
                        }
                        // Check if a second image editor ID has been defined
                        if (!empty($robot_info['robot_image_editor2']) && isset($contributor_index[$robot_info['robot_image_editor2']])){
                            $temp_editor_ids[] = $robot_info['robot_image_editor2'];
                        }
                        // If not empty, loop through and add image editors to the string
                        if (!empty($temp_editor_ids)){
                            $temp_editor_title = array();
                            foreach ($temp_editor_ids AS $editor_id){
                                $temp_editor = $contributor_index[$editor_id];
                                $temp_name_public = !empty($temp_editor['user_name_public']) ? $temp_editor['user_name_public'] : $temp_editor['user_name'];
                                $temp_name_real = !empty($temp_editor['user_name']) ? $temp_editor['user_name'] : $temp_editor['user_name_clean'];
                                $temp_name_public_clean = preg_replace('/[^a-z0-9]+/i', '', strtolower($temp_name_public));
                                $temp_name_real_clean = preg_replace('/[^a-z0-9]+/i', '', strtolower($temp_name_real));
                                if ($temp_name_public_clean != $temp_name_real_clean){ $temp_editor_title[] = '<strong>'.$temp_name_public.' / '.$temp_name_real.'</strong>'; }
                                else { $temp_editor_title[] = '<strong>'.$temp_name_public.'</strong>'; }
                            }
                            if (count($temp_editor_title) > 1){ $temp_final_divider = '<br />'; }
                            $temp_editor_title = implode(' and ', $temp_editor_title);
                        }
                        // Define the robots created by specific creators outside of the Capcom characters
                        $temp_adrian_robots = array('disco', 'rhythm', 'flutter-fly', 'flutter-fly-2', 'flutter-fly-3');
                        // Print out the final credits footer based on if special case or Capcom original
                        if (in_array($robot_info['robot_token'], $temp_adrian_robots)){
                            echo '<p class="text text_editor" style="text-align: center; color: #868686; font-size: 10px; line-height: 13px; margin-top: 6px;">Sprite Editing by '.$temp_editor_title.' '.$temp_final_divider.' Original Character by <strong>Adrian Marceau</strong></p>'."\n";
                        } elseif ($robot_info['robot_game'] == 'MMRPG'){
                            echo '<p class="text text_editor" style="text-align: center; color: #868686; font-size: 10px; line-height: 13px; margin-top: 6px;">Sprite Editing by '.$temp_editor_title.' '.$temp_final_divider.' Original Artwork by <strong>Mega Man RPG Prototype</strong></p>'."\n";
                        } elseif ($robot_info['robot_game'] == 'MMRPG2'){
                            echo '<p class="text text_editor" style="text-align: center; color: #868686; font-size: 10px; line-height: 13px; margin-top: 6px;">Sprite Editing by '.$temp_editor_title.' '.$temp_final_divider.' Original Artwork by <strong>Mega Man RPG World</strong></p>'."\n";
                        }else {
                            echo '<p class="text text_editor" style="text-align: center; color: #868686; font-size: 10px; line-height: 13px; margin-top: 6px;">Sprite Editing by '.$temp_editor_title.' '.$temp_final_divider.' Original Artwork by <strong>Capcom</strong></p>'."\n";
                        }
                        ?>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#sprites" rel="permalink">#Sprites</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_quotes']) {
            ?>

                    <h2 id="quotes" class="header header_left <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left;">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Quotes
                    </h2>
                    <div class="body body_left" style="margin-right: 0; margin-left: 0; margin-bottom: 5px; padding: 2px 0; min-height: 10px;">
                        <?php 
            // Define the search and replace arrays for the robot quotes
            $temp_find = array('{this_player}', '{this_robot}', '{target_player}', '{target_robot}');
            $temp_replace = array('Doctor', $robot_info['robot_name'], 'Doctor', 'Robot');
            ?>
                        <table class="full" style="margin: 5px auto 10px;">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <tr>
                                    <td class="right">
                                        <label>Start Quote : </label>
                                        <span class="robot_quote">&quot;<?php 
            echo !empty($robot_info['robot_quotes']['battle_start']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_start']) : '&hellip;';
            ?>
&quot;</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Taunt Quote : </label>
                                        <span class="robot_quote">&quot;<?php 
            echo !empty($robot_info['robot_quotes']['battle_taunt']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_taunt']) : '&hellip;';
            ?>
&quot;</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Victory Quote : </label>
                                        <span class="robot_quote">&quot;<?php 
            echo !empty($robot_info['robot_quotes']['battle_victory']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_victory']) : '&hellip;';
            ?>
&quot;</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Defeat Quote : </label>
                                        <span class="robot_quote">&quot;<?php 
            echo !empty($robot_info['robot_quotes']['battle_defeat']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_defeat']) : '&hellip;';
            ?>
&quot;</span>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#quotes" rel="permalink">#Quotes</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_description'] && !empty($robot_info['robot_description2'])) {
            ?>

                    <h2 id="description" class="header header_left <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left; ">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Description
                    </h2>
                    <div class="body body_left" style="margin-right: 0; margin-left: 0; margin-bottom: 5px; padding: 2px 0; min-height: 10px;">
                        <table class="full" style="margin: 5px auto 10px;">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <tr>
                                    <td class="right">
                                        <div class="robot_description" style="text-align: left; padding: 0 4px;"><?php 
            echo $robot_info['robot_description2'];
            ?>
</div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#description" rel="permalink">#Description</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_abilities']) {
            ?>

                    <h2 id="abilities" class="header header_full <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left;">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Abilities
                    </h2>
                    <div class="body body_full" style="margin: 0; padding: 2px 3px; min-height: 10px;">
                        <table class="full" style="margin: 5px auto 10px;">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <tr>
                                    <td class="right">
                                        <div class="ability_container">
                                        <?php 
            // Define the robot ability class and collect the cores for testing
            $robot_ability_class = !empty($robot_info['robot_class']) ? $robot_info['robot_class'] : 'master';
            $robot_ability_core = !empty($robot_info['robot_core']) ? $robot_info['robot_core'] : false;
            $robot_ability_core2 = !empty($robot_info['robot_core2']) ? $robot_info['robot_core2'] : false;
            $robot_ability_list = !empty($robot_info['robot_abilities']) ? $robot_info['robot_abilities'] : array();
            $robot_ability_rewards = !empty($robot_info['robot_rewards']['abilities']) ? $robot_info['robot_rewards']['abilities'] : array();
            // Collect a FULL list of abilities for display
            $temp_required = array();
            foreach ($robot_ability_rewards as $info) {
                $temp_required[] = $info['token'];
            }
            $temp_abilities_index = rpg_ability::get_index(false, false, '', $temp_required);
            // Clone abilities into new array for filtering
            $new_ability_rewards = array();
            foreach ($robot_ability_rewards as $this_info) {
                $new_ability_rewards[$this_info['token']] = $this_info;
            }
            $robot_copy_program = $robot_ability_core == 'copy' || $robot_ability_core2 == 'copy' ? true : false;
            //if ($robot_copy_program){ $robot_ability_list = $temp_all_ability_tokens; }
            $robot_ability_core_list = array();
            if ((!empty($robot_ability_core) || !empty($robot_ability_core2)) && $robot_ability_class != 'mecha') {
                // only robot masters can core match abilities
                foreach ($temp_abilities_index as $token => $info) {
                    if (!empty($info['ability_type']) && ($robot_copy_program || $info['ability_type'] == $robot_ability_core || $info['ability_type'] == $robot_ability_core2) || !empty($info['ability_type2']) && ($info['ability_type2'] == $robot_ability_core || $info['ability_type2'] == $robot_ability_core2)) {
                        $robot_ability_list[] = $info['ability_token'];
                        $robot_ability_core_list[] = $info['ability_token'];
                    }
                }
            }
            foreach ($robot_ability_list as $this_token) {
                if ($this_token == '*') {
                    continue;
                }
                if (!isset($new_ability_rewards[$this_token])) {
                    if (in_array($this_token, $robot_ability_core_list)) {
                        $new_ability_rewards[$this_token] = array('level' => 'Player', 'token' => $this_token);
                    } else {
                        $new_ability_rewards[$this_token] = array('level' => 'Player', 'token' => $this_token);
                    }
                }
            }
            $robot_ability_rewards = $new_ability_rewards;
            //die('<pre>'.print_r($robot_ability_rewards, true).'</pre>');
            if (!empty($robot_ability_rewards)) {
                $temp_string = array();
                $ability_key = 0;
                $ability_method_key = 0;
                $ability_method = '';
                foreach ($robot_ability_rewards as $this_info) {
                    if (!isset($temp_abilities_index[$this_info['token']])) {
                        continue;
                    }
                    $this_level = $this_info['level'];
                    $this_ability = $temp_abilities_index[$this_info['token']];
                    $this_ability_token = $this_ability['ability_token'];
                    $this_ability_name = $this_ability['ability_name'];
                    $this_ability_class = !empty($this_ability['ability_class']) ? $this_ability['ability_class'] : 'master';
                    $this_ability_image = !empty($this_ability['ability_image']) ? $this_ability['ability_image'] : $this_ability['ability_token'];
                    $this_ability_type = !empty($this_ability['ability_type']) ? $this_ability['ability_type'] : false;
                    $this_ability_type2 = !empty($this_ability['ability_type2']) ? $this_ability['ability_type2'] : false;
                    if (!empty($this_ability_type) && !empty($mmrpg_database_types[$this_ability_type])) {
                        $this_ability_type = $mmrpg_database_types[$this_ability_type]['type_name'] . ' Type';
                    } else {
                        $this_ability_type = '';
                    }
                    if (!empty($this_ability_type2) && !empty($mmrpg_database_types[$this_ability_type2])) {
                        $this_ability_type = str_replace('Type', '/ ' . $mmrpg_database_types[$this_ability_type2]['type_name'], $this_ability_type);
                    }
                    $this_ability_damage = !empty($this_ability['ability_damage']) ? $this_ability['ability_damage'] : 0;
                    $this_ability_damage2 = !empty($this_ability['ability_damage2']) ? $this_ability['ability_damage2'] : 0;
                    $this_ability_damage_percent = !empty($this_ability['ability_damage_percent']) ? true : false;
                    $this_ability_damage2_percent = !empty($this_ability['ability_damage2_percent']) ? true : false;
                    if ($this_ability_damage_percent && $this_ability_damage > 100) {
                        $this_ability_damage = 100;
                    }
                    if ($this_ability_damage2_percent && $this_ability_damage2 > 100) {
                        $this_ability_damage2 = 100;
                    }
                    $this_ability_recovery = !empty($this_ability['ability_recovery']) ? $this_ability['ability_recovery'] : 0;
                    $this_ability_recovery2 = !empty($this_ability['ability_recovery2']) ? $this_ability['ability_recovery2'] : 0;
                    $this_ability_recovery_percent = !empty($this_ability['ability_recovery_percent']) ? true : false;
                    $this_ability_recovery2_percent = !empty($this_ability['ability_recovery2_percent']) ? true : false;
                    if ($this_ability_recovery_percent && $this_ability_recovery > 100) {
                        $this_ability_recovery = 100;
                    }
                    if ($this_ability_recovery2_percent && $this_ability_recovery2 > 100) {
                        $this_ability_recovery2 = 100;
                    }
                    $this_ability_accuracy = !empty($this_ability['ability_accuracy']) ? $this_ability['ability_accuracy'] : 0;
                    $this_ability_description = !empty($this_ability['ability_description']) ? $this_ability['ability_description'] : '';
                    $this_ability_description = str_replace('{DAMAGE}', $this_ability_damage, $this_ability_description);
                    $this_ability_description = str_replace('{RECOVERY}', $this_ability_recovery, $this_ability_description);
                    $this_ability_description = str_replace('{DAMAGE2}', $this_ability_damage2, $this_ability_description);
                    $this_ability_description = str_replace('{RECOVERY2}', $this_ability_recovery2, $this_ability_description);
                    //$this_ability_title_plain = $this_ability_name;
                    //if (!empty($this_ability_type)){ $this_ability_title_plain .= ' | '.$this_ability_type; }
                    //if (!empty($this_ability_damage)){ $this_ability_title_plain .= ' | '.$this_ability_damage.' Damage'; }
                    //if (!empty($this_ability_recovery)){ $this_ability_title_plain .= ' | '.$this_ability_recovery.' Recovery'; }
                    //if (!empty($this_ability_accuracy)){ $this_ability_title_plain .= ' | '.$this_ability_accuracy.'% Accuracy'; }
                    //if (!empty($this_ability_description)){ $this_ability_title_plain .= ' | '.$this_ability_description; }
                    $this_ability_title_plain = rpg_ability::print_editor_title_markup($robot_info, $this_ability);
                    $this_ability_method = 'level';
                    $this_ability_method_text = 'Level Up';
                    $this_ability_title_html = '<strong class="name">' . $this_ability_name . '</strong>';
                    if (is_numeric($this_level)) {
                        if ($this_level > 1) {
                            $this_ability_title_html .= '<span class="level">Lv ' . str_pad($this_level, 2, '0', STR_PAD_LEFT) . '</span>';
                        } else {
                            $this_ability_title_html .= '<span class="level">Start</span>';
                        }
                    } else {
                        $this_ability_method = 'player';
                        $this_ability_method_text = 'Player Only';
                        if (!in_array($this_ability_token, $robot_info['robot_abilities'])) {
                            $this_ability_method = 'core';
                            $this_ability_method_text = 'Core Match';
                        }
                        $this_ability_title_html .= '<span class="level">&nbsp;</span>';
                    }
                    // If this is a boss, don't bother showing player or core match abilities
                    if ($this_ability_method != 'level' && $robot_info['robot_class'] == 'boss') {
                        continue;
                    }
                    if (!empty($this_ability_type)) {
                        $this_ability_title_html .= '<span class="type">' . $this_ability_type . '</span>';
                    }
                    if (!empty($this_ability_damage)) {
                        $this_ability_title_html .= '<span class="damage">' . $this_ability_damage . (!empty($this_ability_damage_percent) ? '%' : '') . ' ' . ($this_ability_damage && $this_ability_recovery ? 'D' : 'Damage') . '</span>';
                    }
                    if (!empty($this_ability_recovery)) {
                        $this_ability_title_html .= '<span class="recovery">' . $this_ability_recovery . (!empty($this_ability_recovery_percent) ? '%' : '') . ' ' . ($this_ability_damage && $this_ability_recovery ? 'R' : 'Recovery') . '</span>';
                    }
                    if (!empty($this_ability_accuracy)) {
                        $this_ability_title_html .= '<span class="accuracy">' . $this_ability_accuracy . '% Accuracy</span>';
                    }
                    $this_ability_sprite_path = 'images/sprites/abilities/' . $this_ability_image . '/icon_left_40x40.png';
                    if (!file_exists(MMRPG_CONFIG_ROOTDIR . $this_ability_sprite_path)) {
                        $this_ability_image = 'ability';
                        $this_ability_sprite_path = 'i/a/ability/il40.png';
                    } else {
                        $this_ability_sprite_path = 'i/a/' . $this_ability_image . '/il40.png';
                    }
                    $this_ability_sprite_html = '<span class="icon"><img src="' . $this_ability_sprite_path . '?' . MMRPG_CONFIG_CACHE_DATE . '" alt="' . $this_ability_name . ' Icon" /></span>';
                    $this_ability_title_html = '<span class="label">' . $this_ability_title_html . '</span>';
                    //$this_ability_title_html = (is_numeric($this_level) && $this_level > 1 ? 'Lv '.str_pad($this_level, 2, '0', STR_PAD_LEFT).' : ' : $this_level.' : ').$this_ability_title_html;
                    // Show the ability method separator if necessary
                    if ($ability_method != $this_ability_method && $robot_info['robot_class'] == 'master') {
                        $temp_separator = '<div class="ability_separator">' . $this_ability_method_text . '</div>';
                        $temp_string[] = $temp_separator;
                        $ability_method = $this_ability_method;
                        $ability_method_key++;
                        // Print out the disclaimer if a copy-core robot
                        if ($this_ability_method != 'level' && $robot_copy_program) {
                            $temp_string[] = '<div class="" style="margin: 10px auto; text-align: center; color: #767676; font-size: 11px;">Copy Core robots can equip <em>any</em> ' . ($this_ability_method == 'player' ? 'player' : 'type') . ' ability!</div>';
                        }
                    }
                    // If this is a copy core robot, don't bother showing EVERY core-match ability
                    if ($this_ability_method != 'level' && $robot_copy_program) {
                        continue;
                    } elseif ($this_level >= 0 || !$robot_copy_program) {
                        $temp_element = $this_ability_class == 'master' ? 'a' : 'span';
                        $temp_markup = '<' . $temp_element . ' ' . ($this_ability_class == 'master' ? 'href="' . MMRPG_CONFIG_ROOTURL . 'database/abilities/' . $this_ability['ability_token'] . '/"' : '') . ' class="ability_name ability_class_' . $this_ability_class . ' ability_type ability_type_' . (!empty($this_ability['ability_type']) ? $this_ability['ability_type'] : 'none') . (!empty($this_ability['ability_type2']) ? '_' . $this_ability['ability_type2'] : '') . '" title="' . $this_ability_title_plain . '" style="' . ($this_ability_image == 'ability' ? 'opacity: 0.3; ' : '') . '">';
                        $temp_markup .= '<span class="chrome">' . $this_ability_sprite_html . $this_ability_title_html . '</span>';
                        $temp_markup .= '</' . $temp_element . '>';
                        $temp_string[] = $temp_markup;
                        $ability_key++;
                        continue;
                    }
                }
                echo implode(' ', $temp_string);
            } else {
                echo '<span class="robot_ability type_none"><span class="chrome">None</span></span>';
            }
            ?>
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#abilities" rel="permalink">#Abilities</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_stats']) {
            ?>

                    <h2 id="stats" class="header header_full <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left;">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Stats
                    </h2>
                    <div class="body body_full" style="margin: 0 auto 5px; padding: 2px 0; min-height: 10px;">
                        <?php 
            // Define the various levels we'll display in this chart
            $display_levels = array(1, 5, 10, 50, 100);
            //range(1, 100, 1);
            ?>
                        <table class="full stat_container" style="">
                            <colgroup>
                                <col width="20%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                                <col width="10%" />
                            </colgroup>
                            <thead>
                                <tr>
                                    <th class="top left level">Level</th>
                                    <th class="top center energy" colspan="1">Energy</th>
                                    <th class="top center weapons" colspan="1">Weapons</th>
                                    <th class="top center attack" colspan="2">Attack</th>
                                    <th class="top center defense" colspan="2">Defense</th>
                                    <th class="top center speed" colspan="2">Speed</th>
                                </tr>
                                <tr>
                                    <th class="sub left level" >&nbsp;</th>
                                    <th class="sub center energy max">-</th>
                                    <th class="sub center weapons max">-</th>
                                    <th class="sub center attack min">Min</th>
                                    <th class="sub center attack max">Max</th>
                                    <th class="sub center defense min">Min</th>
                                    <th class="sub center defense max">Max</th>
                                    <th class="sub center speed min">Min</th>
                                    <th class="sub center speed max">Max</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php 
            // Define or collect the base stats for this robot, ready to be modified
            $base_stats = array();
            $base_stats['energy'] = $robot_info['robot_energy'];
            $base_stats['weapons'] = $robot_info['robot_weapons'];
            $base_stats['attack'] = $robot_info['robot_attack'];
            $base_stats['defense'] = $robot_info['robot_defense'];
            $base_stats['speed'] = $robot_info['robot_speed'];
            // Loop through the display levels and calculate stat adjustments
            foreach ($display_levels as $level) {
                // Calculate the minimum stat values for this robot with only level-based stat boosts
                $min_stats = array();
                $min_stats['energy'] = MMRPG_SETTINGS_STATS_GET_ROBOTMIN($base_stats['energy'], $level);
                $min_stats['attack'] = MMRPG_SETTINGS_STATS_GET_ROBOTMIN($base_stats['attack'], $level);
                $min_stats['defense'] = MMRPG_SETTINGS_STATS_GET_ROBOTMIN($base_stats['defense'], $level);
                $min_stats['speed'] = MMRPG_SETTINGS_STATS_GET_ROBOTMIN($base_stats['speed'], $level);
                // Calculate the maximum stat values for this robot considering both level and overkill-based stat boosts
                $max_stats = array();
                //$max_stats['energy'] = MMRPG_SETTINGS_STATS_GET_ROBOTMAX($base_stats['energy'], $level);
                $max_stats['attack'] = MMRPG_SETTINGS_STATS_GET_ROBOTMAX($base_stats['attack'], $level);
                $max_stats['defense'] = MMRPG_SETTINGS_STATS_GET_ROBOTMAX($base_stats['defense'], $level);
                $max_stats['speed'] = MMRPG_SETTINGS_STATS_GET_ROBOTMAX($base_stats['speed'], $level);
                ?>
                                    <tr>
                                        <td class="left level">Lv <?php 
                echo $level;
                ?>
</td>
                                        <td class="center energy max"><?php 
                echo number_format($min_stats['energy'], 0, '.', ',');
                ?>
</td>
                                        <td class="center weapons max"><?php 
                echo number_format($base_stats['weapons'], 0, '.', ',');
                ?>
</td>
                                        <td class="center attack min"><?php 
                echo number_format($min_stats['attack'], 0, '.', ',');
                ?>
</td>
                                        <td class="center attack max"><?php 
                echo number_format($max_stats['attack'], 0, '.', ',');
                ?>
</td>
                                        <td class="center defense min"><?php 
                echo number_format($min_stats['defense'], 0, '.', ',');
                ?>
</td>
                                        <td class="center defense max"><?php 
                echo number_format($max_stats['defense'], 0, '.', ',');
                ?>
</td>
                                        <td class="center speed min"><?php 
                echo number_format($min_stats['speed'], 0, '.', ',');
                ?>
</td>
                                        <td class="center speed max"><?php 
                echo number_format($max_stats['speed'], 0, '.', ',');
                ?>
</td>
                                    </tr>
                                    <?php 
            }
            ?>
                                <tr>
                                    <td class="left help" colspan="9">
                                        <?php 
            if ($robot_info['robot_class'] == 'master') {
                ?>
                                            * Min stats represent a robot's base values without any knockout bonuses applied.<br />
                                            ** Max stats represent a robot's potential values with maximum knockout bonuses applied.
                                        <?php 
            } elseif ($robot_info['robot_class'] == 'mecha') {
                ?>
                                            * Min stats represent a mecha's base values without any difficulty mods applied.<br />
                                            ** Max stats represent a mecha's potential values with maximum difficulty mods applied.
                                        <?php 
            } elseif ($robot_info['robot_class'] == 'boss') {
                ?>
                                            * Min stats represent a boss's base values without any difficulty mods applied.<br />
                                            ** Max stats represent a boss's potential values with maximum difficulty mods applied.
                                        <?php 
            }
            ?>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#stats" rel="permalink">#Stats</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_records']) {
            ?>

                    <h2 id="records" class="header header_full <?php 
            echo $robot_header_types;
            ?>
" style="margin: 10px 0 0; text-align: left;">
                        <?php 
            echo $robot_info['robot_name'] . $robot_info['robot_name_append'];
            ?>
&#39;s Records
                    </h2>
                    <div class="body body_full" style="margin: 0 auto 5px; padding: 2px 0; min-height: 10px;">
                        <table class="full" style="margin: 5px auto 10px;">
                            <colgroup>
                                <col width="100%" />
                            </colgroup>
                            <tbody>
                                <?php 
            if ($robot_info['robot_class'] == 'master') {
                ?>
                                    <tr>
                                        <td class="right">
                                            <label>Unlocked By : </label>
                                            <span class="robot_quote"><?php 
                echo $temp_robot_records['robot_unlocked'] == 1 ? '1 Player' : number_format($temp_robot_records['robot_unlocked'], 0, '.', ',') . ' Players';
                ?>
</span>
                                        </td>
                                    </tr>
                                <?php 
            }
            ?>
                                <tr>
                                    <td class="right">
                                        <label>Encountered : </label>
                                        <span class="robot_quote"><?php 
            echo $temp_robot_records['robot_encountered'] == 1 ? '1 Time' : number_format($temp_robot_records['robot_encountered'], 0, '.', ',') . ' Times';
            ?>
</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Summoned : </label>
                                        <span class="robot_quote"><?php 
            echo $temp_robot_records['robot_summoned'] == 1 ? '1 Time' : number_format($temp_robot_records['robot_summoned'], 0, '.', ',') . ' Times';
            ?>
</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Defeated : </label>
                                        <span class="robot_quote"><?php 
            echo $temp_robot_records['robot_defeated'] == 1 ? '1 Time' : number_format($temp_robot_records['robot_defeated'], 0, '.', ',') . ' Times';
            ?>
</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="right">
                                        <label>Scanned : </label>
                                        <span class="robot_quote"><?php 
            echo $temp_robot_records['robot_scanned'] == 1 ? '1 Time' : number_format($temp_robot_records['robot_scanned'], 0, '.', ',') . ' Times';
            ?>
</span>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <?php 
            if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') {
                ?>
                        <div class="link_wrapper">
                            <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                            <a class="link link_permalink" href="<?php 
                echo $database_category_robot_url;
                ?>
#records" rel="permalink">#Records</a>
                        </div>
                    <?php 
            }
            ?>

                <?php 
        }
        ?>

                <?php 
        if ($print_options['show_footer'] && $print_options['layout_style'] == 'website_compact') {
            ?>

                    <div class="link_wrapper">
                        <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a>
                        <a class="link link_permalink" href="<?php 
            echo $database_category_robot_url;
            ?>
" rel="permalink">+ View More</a>
                    </div>
                    <span class="link_container">
                        <?php 
            echo !empty($compact_footer_link_markup) ? implode("\n", $compact_footer_link_markup) : '';
            ?>
                    </span>

                <?php 
        }
        ?>

            </div>
        </div>
        <?php 
        // Collect the outbut buffer contents
        $this_markup = trim(ob_get_clean());
        // Return the generated markup
        return $this_markup;
    }