if (empty($this_data_condition) || $this_data_select == 'this_player_token' || in_array('this_player_token=dr-wily', $this_data_condition)) { $ability_counter_wily = $unlock_flag_wily ? rpg_game::abilities_unlocked('dr-wily') : 0; $star_counter_wily = $unlock_flag_wily ? rpg_game::stars_unlocked('dr-wily') : 0; $core_counter_wily = $unlock_flag_wily ? rpg_game::cores_unlocked('dr-wily') : 0; } $battle_complete_counter_wily = $unlock_flag_wily ? rpg_prototype::battles_complete('dr-wily') : 0; $battle_failure_counter_wily = $unlock_flag_wily ? rpg_prototype::battles_failure('dr-wily') : 0; //$battle_complete_counter_wily_total = $unlock_flag_light ? rpg_prototype::battles_complete('dr-wily', false) : 0; //$battle_failure_counter_wily_total = $unlock_flag_light ? rpg_prototype::battles_failure('dr-wily', false) : 0; $prototype_complete_flag_wily = $unlock_flag_wily ? rpg_prototype::campaign_complete('dr-wily') : false; if ($unlock_flag_wily && !$prototype_complete_flag_wily && $battle_complete_counter_wily >= 17) { $_SESSION[$session_token]['flags']['prototype_events']['dr-wily']['prototype_complete'] = $prototype_complete_flag_wily = true; } // Collect the counters and flags for Dr. Cossack $unlock_flag_cossack = rpg_game::player_unlocked('dr-cossack'); $point_counter_cossack = $unlock_flag_cossack ? rpg_game::player_points('dr-cossack') : 0; $robot_counter_cossack = $unlock_flag_cossack ? rpg_game::robots_unlocked('dr-cossack') : 0; if (empty($this_data_condition) || $this_data_select == 'this_player_token' || in_array('this_player_token=dr-cossack', $this_data_condition)) { $ability_counter_cossack = $unlock_flag_cossack ? rpg_game::abilities_unlocked('dr-cossack') : 0; $star_counter_cossack = $unlock_flag_cossack ? rpg_game::stars_unlocked('dr-cossack') : 0; $core_counter_cossack = $unlock_flag_cossack ? rpg_game::cores_unlocked('dr-cossack') : 0; } $battle_complete_counter_cossack = $unlock_flag_cossack ? rpg_prototype::battles_complete('dr-cossack') : 0; $battle_failure_counter_cossack = $unlock_flag_cossack ? rpg_prototype::battles_failure('dr-cossack') : 0; //$battle_complete_counter_cossack_total = $unlock_flag_light ? rpg_prototype::battles_complete('dr-cossack', false) : 0; //$battle_failure_counter_cossack_total = $unlock_flag_light ? rpg_prototype::battles_failure('dr-cossack', false) : 0; $prototype_complete_flag_cossack = $unlock_flag_cossack ? rpg_prototype::campaign_complete('dr-cossack') : false; if ($unlock_flag_cossack && !$prototype_complete_flag_cossack && $battle_complete_counter_cossack >= 17) { $_SESSION[$session_token]['flags']['prototype_events']['dr-cossack']['prototype_complete'] = $prototype_complete_flag_cossack = true; } // -- Mission Counts -- //
if (empty($temp_game_flags['events'][$temp_event_flag])) { $temp_game_flags['events'][$temp_event_flag] = true; $_SESSION[$session_token]['battle_settings']['this_player_token'] = false; } } // UNLOCK EVENT : PROTOTYPE COMPLETE (COSSACK) // If the player completed the first battle and leveled up, display window event if ($battle_complete_counter_cossack >= 17) { // Display the prototype complete message, showing Dr. Cossack and Proto Man $temp_event_flag = 'dr-cossack_event-99_prototype-complete-new'; if (empty($temp_game_flags['events'][$temp_event_flag])) { $temp_game_flags['events'][$temp_event_flag] = true; // Define the player's battle points total, battles complete, and other details $player_token = 'dr-cossack'; $player_info = $mmrpg_index['players'][$player_token]; $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; if (!empty($_SESSION[$session_token]['values']['battle_rewards'])) { 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'])) {
// Define the robot options and counter for Dr. Light mode $this_prototype_data['this_player_token'] = 'dr-light'; $this_prototype_data['this_player_field'] = 'light-laboratory'; $this_prototype_data['this_support_robot'] = 'roll'; $this_prototype_data['this_chapter_levels'] = array(0 => 1, 1 => 4, 2 => 12, 3 => 31, 4 => 35, 5 => 40, 6 => 45); $this_prototype_data['this_chapter_unlocked'] = $chapters_unlocked_light; $this_prototype_data['target_player_token'] = 'dr-wily'; $this_prototype_data['battle_phase'] = 0; $this_prototype_data['battle_options'] = array(); $this_prototype_data['missions_markup'] = ''; $this_prototype_data['battles_complete'] = rpg_prototype::battles_complete($this_prototype_data['this_player_token']); $this_prototype_data['phase_token'] = 'phase' . $this_prototype_data['battle_phase']; $this_prototype_data['phase_battle_token'] = $this_prototype_data['this_player_token'] . '-' . $this_prototype_data['phase_token']; $this_prototype_data['robots_unlocked'] = rpg_game::robots_unlocked($this_prototype_data['this_player_token']); $this_prototype_data['abilities_unlocked'] = rpg_game::abilities_unlocked($this_prototype_data['this_player_token']); $this_prototype_data['points_unlocked'] = rpg_game::player_points($this_prototype_data['this_player_token']); $this_prototype_data['prototype_complete'] = $prototype_complete_flag_light; // Define the stage select music based on progression $this_music_token = $this_prototype_data['battles_complete'] >= 10 ? $this_prototype_data['target_player_token'] : $this_prototype_data['this_player_token']; $this_prototype_data['missions_music'] = 'misc/stage-select-' . $this_music_token; // Define the robot omega array for dynamic battle options $temp_session_key = $this_prototype_data['this_player_token'] . '_target-robot-omega_prototype'; $this_prototype_data['target_robot_omega'] = !empty($_SESSION['GAME']['values'][$temp_session_key]) ? $_SESSION['GAME']['values'][$temp_session_key] : array(); $this_prototype_data['this_player_fields'] = !empty($_SESSION['GAME']['values']['battle_settings'][$this_prototype_data['this_player_token']]['player_fields']) ? $_SESSION['GAME']['values']['battle_settings'][$this_prototype_data['this_player_token']]['player_fields'] : array(); // If the options have not already been defined, generate them $temp_save = false; if (empty($this_prototype_data['target_robot_omega'])) { // Define the phase one omega factors, then shuffle $this_prototype_data['target_robot_omega'] = $this_omega_factors_one; shuffle($this_prototype_data['target_robot_omega']); $temp_save = true;
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']; ?> '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"> </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"> </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"> </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"> </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"> </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"> </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 />', ' ', $this_item_title)); $this_item_title_tooltip = htmlentities($this_item_title, ENT_QUOTES, 'UTF-8'); $this_item_title_html = str_replace(' ', ' ', $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 />', ' ', $this_field_title)); $this_field_title_tooltip = htmlentities($this_field_title, ENT_QUOTES, 'UTF-8'); $this_field_title_html = str_replace(' ', ' ', $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; }
/** * Trigger the battle complete action and end the current mission * @param rpg_player this_player * @param rpg_robot this_robot * @param rpg_player target_player * @param rpg_robot target_robot */ public function trigger_complete(rpg_player $this_player, rpg_robot $this_robot, rpg_player $target_player, rpg_robot $target_robot) { // Collect references to global objects $db = cms_database::get_database(); $this_battle = self::get_battle(); $this_field = rpg_field::get_field(); // Default the return variable to false $this_return = false; //$this_battle->events_create(false, false, 'DEBUG', 'Battle complete trigger triggered!'); // Return false if anything is missing if (empty($this_player) || empty($this_robot)) { return false; } if (empty($target_player) || empty($target_robot)) { return false; } // Return true if the battle status is already complete if ($this_battle->battle_status == 'complete') { return true; } // Update the battle status to complete $this_battle->set_info('battle_status', 'complete'); if ($this_battle->battle_result == 'pending') { $this_battle->set_info('battle_result', $target_player->player_side == 'right' ? 'victory' : 'defeat'); $event_options = array(); if ($this_battle->battle_result == 'victory') { $event_options['event_flag_victory'] = true; } elseif ($this_battle->battle_result == 'defeat') { $event_options['event_flag_defeat'] = true; } $this_battle->events_create(false, false, '', '', $event_options); } // -- CALCULATE REWARDS -- // // Define variables for the human's rewards in this scenario $temp_human_token = $target_player->player_side == 'left' ? $target_player->player_token : $this_player->player_token; $temp_human_info = $target_player->player_side == 'left' ? $target_player->export_array() : $this_player->export_array(); $temp_human_rewards = array(); $temp_human_rewards['battle_points'] = 0; $temp_human_rewards['battle_zenny'] = 0; $temp_human_rewards['battle_complete'] = isset($_SESSION['GAME']['values']['battle_complete'][$temp_human_token][$this_battle->battle_token]['battle_count']) ? $_SESSION['GAME']['values']['battle_complete'][$temp_human_token][$this_battle->battle_token]['battle_count'] : 0; $temp_human_rewards['battle_failure'] = isset($_SESSION['GAME']['values']['battle_failure'][$temp_human_token][$this_battle->battle_token]['battle_count']) ? $_SESSION['GAME']['values']['battle_failure'][$temp_human_token][$this_battle->battle_token]['battle_count'] : 0; $temp_human_rewards['checkpoint'] = 'start: '; // Calculate the base point and zenny rewards for this battle $temp_reward_points_base = !empty($this_battle->battle_rewards_points) ? $this_battle->battle_rewards_points : 0; $temp_reward_zenny_base = !empty($this_battle->battle_rewards_zenny) ? $this_battle->battle_rewards_zenny : 0; // Default the bonus to zero and calulate based on turns $temp_turn_bonus = 0; if ($this_battle->counters['battle_turn'] < $this_battle->battle_turns_limit) { $temp_turn_bonus = round(($this_battle->battle_turns_limit - $this_battle->counters['battle_turn']) * 10); } elseif ($this_battle->counters['battle_turn'] > $this_battle->battle_turns_limit) { $temp_turn_bonus = round(($this_battle->counters['battle_turn'] - $this_battle->battle_turns_limit) * 10) * -1; } // Default the bonus to zero and calulate based on turns $temp_robot_bonus = 0; if ($temp_human_info['counters']['robots_masters_total'] < $this_battle->battle_robots_limit) { $temp_robot_bonus = round(($this_battle->battle_robots_limit - $temp_human_info['counters']['robots_masters_total']) * 10); } elseif ($temp_human_info['counters']['robots_masters_total'] > $this_battle->battle_robots_limit) { $temp_robot_bonus = $temp_robot_bonus = round(($temp_human_info['counters']['robots_masters_total'] - $this_battle->battle_robots_limit) * 10) * -1; } // Calculate the bonus points and zenny for the turns $temp_turn_bonus_points = (int) ($temp_reward_points_base * ($temp_turn_bonus / 100)); $temp_turn_bonus_zenny = (int) ($temp_reward_zenny_base * ($temp_turn_bonus / 100)); // Calculate the bonus points and zenny for the turns $temp_robot_bonus_points = (int) ($temp_reward_points_base * ($temp_robot_bonus / 100)); $temp_robot_bonus_zenny = (int) ($temp_reward_zenny_base * ($temp_robot_bonus / 100)); // Calculate the final reward points based on above if ($this_battle->battle_result == 'victory') { $temp_reward_points_final = $temp_reward_points_base + $temp_turn_bonus_points + $temp_robot_bonus_points; $temp_reward_zenny_final = $temp_reward_zenny_base + $temp_turn_bonus_zenny + $temp_robot_bonus_zenny; if ($temp_reward_points_final < 0) { $temp_reward_points_final = 0; } if ($temp_reward_zenny_final < 0) { $temp_reward_zenny_final = 0; } } else { $temp_reward_points_final = 0; $temp_reward_zenny_final = 0; } // Define the number of stars to show for this mission $temp_rating_stars = 0; if ($this_battle->battle_result == 'victory') { $temp_rating_stars += 1; if ($temp_turn_bonus >= 0) { $temp_rating_stars += 1; } if ($temp_robot_bonus >= 0) { $temp_rating_stars += 1; } if (empty($temp_human_info['counters']['robots_disabled'])) { $temp_rating_stars += 1; } if (empty($temp_human_info['counters']['items_used_this_battle'])) { $temp_rating_stars += 1; } } // Generate the markup for this stars $temp_rating_stars_markup = ''; for ($i = 1; $i <= 5; $i++) { $temp_rating_stars_markup .= $i <= $temp_rating_stars ? '★' : '☆'; } // (HUMAN) TARGET DEFEATED // Check if the target was the human character if ($target_player->player_side == 'left') { // Increment the main game's points total with the battle points $_SESSION['GAME']['counters']['battle_points'] += $temp_reward_points_final; $_SESSION['GAME']['counters']['battle_zenny'] += $temp_reward_zenny_final; // Increment this player's points total with the battle points if (!isset($_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_points'])) { $_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_points'] = 0; } if (!isset($_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_zenny'])) { $_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_zenny'] = 0; } $_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_points'] += $temp_reward_points_final; $_SESSION['GAME']['values']['battle_rewards'][$target_player->player_token]['player_zenny'] += $temp_reward_zenny_final; // Update the global variable with the points reward $temp_human_rewards['battle_points'] = $temp_reward_points_final; $temp_human_rewards['battle_zenny'] = $temp_reward_zenny_final; // Update the GAME session variable with the failed battle token $save_records = $this_battle->has_flag('save_records') ? $this_battle->get_flag('save_records') : true; if ($save_records) { $bak_session_array = isset($_SESSION['GAME']['values']['battle_failure'][$target_player->player_token][$this_battle->battle_token]) ? $_SESSION['GAME']['values']['battle_failure'][$target_player->player_token][$this_battle->battle_token] : array(); $new_session_array = array('battle_token' => $this_battle->battle_token, 'battle_count' => 0, 'battle_level' => 0); if (!empty($bak_session_array['battle_count'])) { $new_session_array['battle_count'] = $bak_session_array['battle_count']; } if (!empty($bak_session_array['battle_level'])) { $new_session_array['battle_level'] = $bak_session_array['battle_level']; } $new_session_array['battle_level'] = $this_battle->battle_level; $new_session_array['battle_count']++; $_SESSION['GAME']['values']['battle_failure'][$target_player->player_token][$this_battle->battle_token] = $new_session_array; $temp_human_rewards['battle_failure'] = $_SESSION['GAME']['values']['battle_failure'][$target_player->player_token][$this_battle->battle_token]['battle_count']; } } // NON-INVISIBLE PLAYER DEFEATED // Display the defeat message for the target character if not default/hidden if ($target_player->player_token != 'player') { // (HUMAN) TARGET DEFEATED BY (INVISIBLE/COMPUTER) // If this was a player battle and the human user lost against the ghost target (this/computer/victory | target/human/defeat) if ($this_player->player_id == MMRPG_SETTINGS_TARGET_PLAYERID && $target_player->player_side == 'left' && $this_robot->robot_class != 'mecha') { // Calculate how many points the other player is rewarded for winning $target_player_robots = $target_player->values['robots_disabled']; $target_player_robots_count = count($target_player_robots); $other_player_points = 0; $other_player_turns = $target_player_robots_count * MMRPG_SETTINGS_BATTLETURNS_PERROBOT; foreach ($target_player_robots as $disabled_robotinfo) { $other_player_points += $disabled_robotinfo['robot_level'] * MMRPG_SETTINGS_BATTLEPOINTS_PERROBOT * MMRPG_SETTINGS_BATTLEPOINTS_PLAYERBATTLE_MULTIPLIER; } // Create the victory event for the target player $this_robot->robot_frame = 'victory'; $this_robot->update_session(); $event_header = $this_robot->robot_name . ' Undefeated'; $event_body = ''; $event_body .= $this_robot->print_name() . ' could not be defeated! '; $event_body .= '<br />'; $event_options = array(); $event_options['console_show_this_robot'] = true; $event_options['console_show_target'] = false; $event_options['event_flag_defeat'] = true; $event_options['this_header_float'] = $event_options['this_body_float'] = $this_robot->player->player_side; if ($this_robot->robot_token != 'robot' && isset($this_robot->robot_quotes['battle_victory'])) { $this_find = array('{target_player}', '{target_robot}', '{this_player}', '{this_robot}'); $this_replace = array($target_player->player_name, $target_robot->robot_name, $this_player->player_name, $this_robot->robot_name); $event_body .= $this_robot->print_quote('battle_victory', $this_find, $this_replace); } $this_battle->events_create($this_robot, $target_robot, $event_header, $event_body, $event_options); } $target_player->set_frame('defeat'); $target_robot->update_session(); $event_header = $target_player->player_name . ' Defeated'; $event_body = $target_player->print_name() . ' was defeated' . ($target_player->player_side == 'left' ? '…' : '!') . ' '; $event_body .= '<br />'; $event_options = array(); $event_options['console_show_this_player'] = true; $event_options['console_show_target'] = false; $event_options['event_flag_defeat'] = true; $event_options['this_header_float'] = $event_options['this_body_float'] = $target_player->player_side; if ($target_player->player_token != 'player' && isset($target_player->player_quotes['battle_defeat'])) { $this_find = array('{target_player}', '{target_robot}', '{this_player}', '{this_robot}'); $this_replace = array($this_player->player_name, $this_robot->robot_name, $target_player->player_name, $target_robot->robot_name); $this_quote_text = str_replace($this_find, $this_replace, $target_player->player_quotes['battle_defeat']); $event_body .= $target_player->print_quote('battle_defeat', $this_find, $this_replace); } $this_battle->events_create($target_robot, $this_robot, $event_header, $event_body, $event_options); // (HUMAN) TARGET DEFEATED BY (GHOST/COMPUTER) // If this was a player battle and the human user lost against the ghost target (this/computer/victory | target/human/defeat) if ($this_player->player_id != MMRPG_SETTINGS_TARGET_PLAYERID && $target_player->player_side == 'left') { // Calculate how many points the other player is rewarded for winning $target_player_robots = $target_player->values['robots_disabled']; $target_player_robots_count = count($target_player_robots); $other_player_points = 0; $other_player_turns = $target_player_robots_count * MMRPG_SETTINGS_BATTLETURNS_PERROBOT; foreach ($target_player_robots as $disabled_robotinfo) { $other_player_points += $disabled_robotinfo['robot_level'] * MMRPG_SETTINGS_BATTLEPOINTS_PERROBOT * MMRPG_SETTINGS_BATTLEPOINTS_PLAYERBATTLE_MULTIPLIER; } // Create the victory event for the target player $this_player->set_frame('victory'); $target_robot->update_session(); $event_header = $this_player->player_name . ' Victorious'; $event_body = $this_player->print_name() . ' was victorious! '; $event_body .= $this_player->print_name() . ' could not be defeated!'; $event_body .= '<br />'; $event_options = array(); $event_options['console_show_this_player'] = true; $event_options['console_show_target'] = false; $event_options['event_flag_defeat'] = true; $event_options['this_header_float'] = $event_options['this_body_float'] = $this_player->player_side; if ($this_player->player_token != 'player' && isset($this_player->player_quotes['battle_victory'])) { $this_find = array('{target_player}', '{target_robot}', '{this_player}', '{this_robot}'); $this_replace = array($target_player->player_name, $target_robot->robot_name, $this_player->player_name, $this_robot->robot_name); $event_body .= $this_player->print_quote('battle_victory', $this_find, $this_replace); } $this_battle->events_create($this_robot, $target_robot, $event_header, $event_body, $event_options); } } // (HUMAN) TARGET DEFEATED BY (COMPUTER) // Check if the target was the human character (and they LOST) if ($target_player->player_side == 'left') { // Collect the robot info array $temp_player_info = $target_player->export_array(); // Collect or define the player points and player rewards variables $temp_player_token = $temp_player_info['player_token']; $temp_player_points = rpg_game::player_points($temp_player_info['player_token']); $temp_player_rewards = rpg_game::player_rewards($temp_player_info['player_token']); //!empty($temp_player_info['player_rewards']) ? $temp_player_info['player_rewards'] : array(); // -- ABILITY REWARDS for HUMAN PLAYER -- // // Loop through the ability rewards for this robot if set if (!empty($temp_player_rewards['abilities']) && rpg_game::is_user()) { $temp_abilities_index = $db->get_array_list("SELECT * FROM mmrpg_index_abilities WHERE ability_flag_complete = 1;", 'ability_token'); foreach ($temp_player_rewards['abilities'] as $ability_reward_key => $ability_reward_info) { // If this ability is already unlocked, continue if (rpg_game::ability_unlocked($target_player->player_token, false, $ability_reward_info['token'])) { continue; } // Check if the required level has been met by this robot if ($temp_player_points >= $ability_reward_info['points'] && rpg_game::is_user()) { // Collect the ability info from the index $ability_info = array('ability_id' => MMRPG_SETTINGS_BATTLEABILITIES_PERROBOT_MAX + $ability_reward_key, 'ability_token' => $ability_reward_info['token']); // Create the temporary ability object for event creation $temp_ability = new rpg_ability($target_player, $target_robot, $ability_info); // Collect or define the ability variables $temp_ability_token = $ability_info['ability_token']; // Display the robot reward message markup $event_header = $temp_ability->ability_name . ' Unlocked'; $event_body = rpg_functions::get_random_positive_word() . ' <span class="player_name">' . $temp_player_info['player_name'] . '</span> unlocked new ability data!<br />'; $event_body .= '<span class="ability_name">' . $temp_ability->ability_name . '</span> can now be used in battle!'; $event_options = array(); $event_options['console_show_target'] = false; $event_options['this_header_float'] = $target_player->player_side; $event_options['this_body_float'] = $target_player->player_side; $event_options['this_ability'] = $temp_ability; $event_options['this_ability_image'] = 'icon'; $event_options['event_flag_victory'] = true; $event_options['console_show_this_player'] = false; $event_options['console_show_this_robot'] = false; $event_options['console_show_this_ability'] = true; $event_options['canvas_show_this_ability'] = false; $target_player->set_frame($ability_reward_key % 2 == 0 ? 'victory' : 'taunt'); $temp_ability->ability_frame = 'base'; $temp_ability->update_session(); $this_battle->events_create($target_robot, $target_robot, $event_header, $event_body, $event_options); // Automatically unlock this ability for use in battle $this_reward = array('ability_token' => $temp_ability_token); $show_event = !rpg_game::ability_unlocked('', '', $temp_ability_token) ? true : false; rpg_game::unlock_ability($temp_player_info, false, $this_reward, $show_event); } } } } // (COMPUTER) TARGET DEFEATED BY (HUMAN) // Check if this player was the human player (and they WON) if ($this_player->player_side == 'left') { // Increment the main game's points total with the battle points $_SESSION['GAME']['counters']['battle_points'] += $temp_reward_points_final; $_SESSION['GAME']['counters']['battle_zenny'] += $temp_reward_zenny_final; // Reference the number of points this player gets $this_player_points = $temp_reward_points_final; $this_player_zenny = $temp_reward_zenny_final; // Increment this player's points total with the battle points $player_token = $this_player->player_token; $player_info = $this_player->export_array(); if (!isset($_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_points'])) { $_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_points'] = 0; } $_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_points'] += $this_player_points; if (!isset($_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_zenny'])) { $_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_zenny'] = 0; } $_SESSION['GAME']['values']['battle_rewards'][$player_token]['player_zenny'] += $this_player_zenny; // Update the global variable with the points reward $temp_human_rewards['battle_points'] = $this_player_points; $temp_human_rewards['battle_zenny'] = $this_player_zenny; // Display the win message for this player with battle points $this_robot->robot_frame = 'victory'; $this_player->set_frame('victory'); $this_robot->update_session(); $event_header = $this_player->player_name . ' Victorious'; $event_body = $this_player->print_name() . ' was victorious! '; $event_body .= 'The ' . ($target_player->counters['robots_disabled'] > 1 ? 'targets were' : 'target was') . ' defeated!'; $event_body .= '<br />'; $event_options = array(); $event_options['console_show_this_player'] = true; $event_options['console_show_target'] = false; $event_options['event_flag_victory'] = true; $event_options['this_header_float'] = $event_options['this_body_float'] = $this_player->player_side; if ($this_player->player_token != 'player' && isset($this_player->player_quotes['battle_victory'])) { $this_find = array('{target_player}', '{target_robot}', '{this_player}', '{this_robot}'); $this_replace = array($target_player->player_name, $target_robot->robot_name, $this_player->player_name, $this_robot->robot_name); $event_body .= $this_player->print_quote('battle_victory', $this_find, $this_replace); } $this_battle->events_create($this_robot, $target_robot, $event_header, $event_body, $event_options); /* * PLAYER REWARDS */ // Check if the the player was a human character if ($this_player->player_side == 'left') { // Collect the robot info array $temp_player_info = $this_player->export_array(); // Collect or define the player points and player rewards variables $temp_player_token = $temp_player_info['player_token']; $temp_player_points = rpg_game::player_points($temp_player_info['player_token']); $temp_player_rewards = !empty($temp_player_info['player_rewards']) ? $temp_player_info['player_rewards'] : array(); // -- ABILITY REWARDS for HUMAN PLAYER -- // // Loop through the ability rewards for this player if set if (!empty($temp_player_rewards['abilities']) && rpg_game::is_user()) { $temp_abilities_index = $db->get_array_list("SELECT * FROM mmrpg_index_abilities WHERE ability_flag_complete = 1;", 'ability_token'); foreach ($temp_player_rewards['abilities'] as $ability_reward_key => $ability_reward_info) { // If this ability is already unlocked, continue if (rpg_game::ability_unlocked($this_player->player_token, false, $ability_reward_info['token'])) { continue; } // Check if the required level has been met by this robot if ($temp_player_points >= $ability_reward_info['points']) { // Collect the ability info from the index $ability_info = rpg_ability::parse_index_info($temp_abilities_index[$ability_reward_info['token']]); // Create the temporary ability object for event creation $temp_ability = new rpg_ability($this_player, $this_robot, $ability_info); // Collect or define the ability variables $temp_ability_token = $ability_info['ability_token']; // Display the robot reward message markup $event_header = $ability_info['ability_name'] . ' Unlocked'; $event_body = rpg_functions::get_random_positive_word() . ' <span class="player_name">' . $temp_player_info['player_name'] . '</span> unlocked new ability data!<br />'; $event_body .= '<span class="ability_name">' . $ability_info['ability_name'] . '</span> can now be used in battle!'; $event_options = array(); $event_options['console_show_target'] = false; $event_options['this_header_float'] = $this_player->player_side; $event_options['this_body_float'] = $this_player->player_side; $event_options['this_ability'] = $temp_ability; $event_options['this_ability_image'] = 'icon'; $event_options['event_flag_victory'] = true; $event_options['console_show_this_player'] = false; $event_options['console_show_this_robot'] = false; $event_options['console_show_this_ability'] = true; $event_options['canvas_show_this_ability'] = false; $this_player->set_frame($ability_reward_key % 2 == 0 ? 'victory' : 'taunt'); $this_robot->robot_frame = $ability_reward_key % 2 == 0 ? 'taunt' : 'base'; $this_robot->update_session(); $temp_ability->ability_frame = 'base'; $temp_ability->update_session(); $this_battle->events_create($this_robot, $this_robot, $event_header, $event_body, $event_options); // Automatically unlock this ability for use in battle $this_reward = array('ability_token' => $temp_ability_token); $show_event = !rpg_game::ability_unlocked('', '', $temp_ability_token) ? true : false; rpg_game::unlock_ability($temp_player_info, false, $this_reward, $show_event); } } } } } /* * BATTLE REWARDS */ // Collect or define the player variables $this_player_token = $this_player->player_token; $this_player_info = $this_player->export_array(); // Collect or define the target player variables $target_player_token = $target_player->player_token; $target_player_info = $target_player->export_array(); // Check if this player was the human player if ($this_player->player_side == 'left') { // Update the GAME session variable with the completed battle token $save_records = $this_battle->has_flag('save_records') ? $this_battle->get_flag('save_records') : true; if ($save_records) { // Back up the current session array for this battle complete counter $bak_session_array = isset($_SESSION['GAME']['values']['battle_complete'][$this_player->player_token][$this_battle->battle_token]) ? $_SESSION['GAME']['values']['battle_complete'][$this_player->player_token][$this_battle->battle_token] : array(); // Create the new session array from scratch to ensure all values exist $new_session_array = array('battle_token' => $this_battle->battle_token, 'battle_count' => 0, 'battle_min_level' => 0, 'battle_max_level' => 0, 'battle_min_turns' => 0, 'battle_max_turns' => 0, 'battle_min_points' => 0, 'battle_max_points' => 0, 'battle_min_robots' => 0, 'battle_max_robots' => 0); // Recollect applicable battle values from the backup session array if (!empty($bak_session_array['battle_count'])) { $new_session_array['battle_count'] = $bak_session_array['battle_count']; } if (!empty($bak_session_array['battle_level'])) { $new_session_array['battle_min_level'] = $bak_session_array['battle_level']; } // LEGACY if (!empty($bak_session_array['battle_min_level'])) { $new_session_array['battle_min_level'] = $bak_session_array['battle_min_level']; } if (!empty($bak_session_array['battle_max_level'])) { $new_session_array['battle_max_level'] = $bak_session_array['battle_max_level']; } if (!empty($bak_session_array['battle_min_turns'])) { $new_session_array['battle_min_turns'] = $bak_session_array['battle_min_turns']; } if (!empty($bak_session_array['battle_max_turns'])) { $new_session_array['battle_max_turns'] = $bak_session_array['battle_max_turns']; } if (!empty($bak_session_array['battle_min_points'])) { $new_session_array['battle_min_points'] = $bak_session_array['battle_min_points']; } if (!empty($bak_session_array['battle_max_points'])) { $new_session_array['battle_max_points'] = $bak_session_array['battle_max_points']; } if (!empty($bak_session_array['battle_min_robots'])) { $new_session_array['battle_min_robots'] = $bak_session_array['battle_min_robots']; } if (!empty($bak_session_array['battle_max_robots'])) { $new_session_array['battle_max_robots'] = $bak_session_array['battle_max_robots']; } // Update and/or increment the appropriate battle variables in the new array if ($new_session_array['battle_max_level'] == 0 || $this_battle->battle_level > $new_session_array['battle_max_level']) { $new_session_array['battle_max_level'] = $this_battle->battle_level; } if ($new_session_array['battle_min_level'] == 0 || $this_battle->battle_level < $new_session_array['battle_min_level']) { $new_session_array['battle_min_level'] = $this_battle->battle_level; } if ($new_session_array['battle_max_turns'] == 0 || $this_battle->counters['battle_turn'] > $new_session_array['battle_max_turns']) { $new_session_array['battle_max_turns'] = $this_battle->counters['battle_turn']; } if ($new_session_array['battle_min_turns'] == 0 || $this_battle->counters['battle_turn'] < $new_session_array['battle_min_turns']) { $new_session_array['battle_min_turns'] = $this_battle->counters['battle_turn']; } if ($new_session_array['battle_max_points'] == 0 || $temp_human_rewards['battle_points'] > $new_session_array['battle_max_points']) { $new_session_array['battle_max_points'] = $temp_human_rewards['battle_points']; } if ($new_session_array['battle_min_points'] == 0 || $temp_human_rewards['battle_points'] < $new_session_array['battle_min_points']) { $new_session_array['battle_min_points'] = $temp_human_rewards['battle_points']; } if ($new_session_array['battle_max_robots'] == 0 || $this_player->counters['robots_total'] > $new_session_array['battle_max_robots']) { $new_session_array['battle_max_robots'] = $this_player->counters['robots_total']; } if ($new_session_array['battle_min_robots'] == 0 || $this_player->counters['robots_total'] < $new_session_array['battle_min_robots']) { $new_session_array['battle_min_robots'] = $this_player->counters['robots_total']; } $new_session_array['battle_count']++; // Update the session variable for this player with the updated battle values $_SESSION['GAME']['values']['battle_complete'][$this_player->player_token][$this_battle->battle_token] = $new_session_array; $temp_human_rewards['battle_complete'] = $_SESSION['GAME']['values']['battle_complete'][$this_player->player_token][$this_battle->battle_token]['battle_count']; } // Refresh the player info array $this_player_info = $this_player->export_array(); // ROBOT REWARDS // Loop through any robot rewards for this battle $this_robot_rewards = $this_battle->get_robot_rewards(); if (!empty($this_robot_rewards) && rpg_game::is_user()) { foreach ($this_robot_rewards as $robot_reward_key => $robot_reward_info) { // If this robot has already been unlocked by anyone, continue if (rpg_game::robot_unlocked(false, $robot_reward_info['token'])) { continue; } // Collect the robot info from the index $robot_info = rpg_robot::get_index_info($robot_reward_info['token']); // Search this player's base robots for the robot ID $robot_info['robot_id'] = 0; foreach ($this_player->player_base_robots as $base_robot) { if ($robot_info['robot_token'] == $base_robot['robot_token']) { $robot_info['robot_id'] = $base_robot['robot_id']; break; } } // Create the temporary robot object for event creation $temp_robot = new rpg_robot($this_player, $robot_info); // Collect or define the robot points and robot rewards variables $this_robot_token = $robot_reward_info['token']; $this_robot_level = !empty($robot_reward_info['level']) ? $robot_reward_info['level'] : 1; $this_robot_experience = !empty($robot_reward_info['experience']) ? $robot_reward_info['experience'] : 0; $this_robot_rewards = !empty($robot_info['robot_rewards']) ? $robot_info['robot_rewards'] : array(); // Automatically unlock this robot for use in battle $this_reward = $robot_info; $this_reward['robot_level'] = $this_robot_level; $this_reward['robot_experience'] = $this_robot_experience; rpg_game::unlock_robot($this_player_info, $this_reward, true, true); } } // ABILITY REWARDS // Loop through any ability rewards for this battle $this_ability_rewards = $this_battle->get_ability_rewards(); if (!empty($this_ability_rewards) && rpg_game::is_user()) { $temp_abilities_index = $db->get_array_list("SELECT * FROM mmrpg_index_abilities WHERE ability_flag_complete = 1;", 'ability_token'); foreach ($this_ability_rewards as $ability_reward_key => $ability_reward_info) { // Collect the ability info from the index $ability_info = rpg_ability::parse_index_info($temp_abilities_index[$ability_reward_info['token']]); // Create the temporary robot object for event creation $temp_ability = new rpg_ability($this_player, $this_robot, $ability_info); // Collect or define the robot points and robot rewards variables $this_ability_token = $ability_info['ability_token']; // Now loop through all active robots on this side of the field foreach ($this_player_info['values']['robots_active'] as $temp_key => $temp_info) { // If this robot is a mecha, skip it! if (!empty($temp_info['robot_class']) && $temp_info['robot_class'] == 'mecha') { continue; } // Equip this ability to the robot is there was a match found if (rpg_robot::has_ability_compatibility($temp_info['robot_token'], $ability_info['ability_token'])) { if (!isset($_SESSION['GAME']['values']['battle_settings'][$this_player_info['player_token']]['player_robots'][$temp_info['robot_token']]['robot_abilities'])) { $_SESSION['GAME']['values']['battle_settings'][$this_player_info['player_token']]['player_robots'][$temp_info['robot_token']]['robot_abilities'] = array(); } if (count($_SESSION['GAME']['values']['battle_settings'][$this_player_info['player_token']]['player_robots'][$temp_info['robot_token']]['robot_abilities']) < 8) { $_SESSION['GAME']['values']['battle_settings'][$this_player_info['player_token']]['player_robots'][$temp_info['robot_token']]['robot_abilities'][$ability_info['ability_token']] = array('ability_token' => $ability_info['ability_token']); } } } // If this ability has already been unlocked by the player, continue if (rpg_game::ability_unlocked($this_player_token, false, $ability_reward_info['token'])) { continue; } // Automatically unlock this ability for use in battle $this_reward = array('ability_token' => $this_ability_token); $show_event = !rpg_game::ability_unlocked('', '', $this_ability_token) ? true : false; rpg_game::unlock_ability($this_player_info, false, $this_reward, $show_event); // Display the robot reward message markup $event_header = $ability_info['ability_name'] . ' Unlocked'; $event_body = rpg_functions::get_random_positive_word() . ' <span class="player_name">' . $this_player_info['player_name'] . '</span> unlocked new ability data!<br />'; $event_body .= '<span class="ability_name">' . $ability_info['ability_name'] . '</span> can now be used in battle!'; $event_options = array(); $event_options['console_show_target'] = false; $event_options['this_header_float'] = $this_player->player_side; $event_options['this_body_float'] = $this_player->player_side; $event_options['this_ability'] = $temp_ability; $event_options['this_ability_image'] = 'icon'; $event_options['console_show_this_player'] = false; $event_options['console_show_this_robot'] = false; $event_options['console_show_this_ability'] = true; $event_options['canvas_show_this_ability'] = false; $this_player->set_frame('victory'); $temp_ability->ability_frame = 'base'; $temp_ability->update_session(); $this_battle->events_create($this_robot, false, $event_header, $event_body, $event_options); } } } // end of BATTLE REWARDS // Check if there is a field star for this stage to collect if ($this_battle->battle_result == 'victory' && !empty($this_battle->values['field_star'])) { // Collect the field star data for this battle $temp_field_star = $this_battle->values['field_star']; // Print out the event for collecting the new field star $temp_name_markup = '<span class="field_name field_type field_type_' . (!empty($temp_field_star['star_type']) ? $temp_field_star['star_type'] : 'none') . (!empty($temp_field_star['star_type2']) ? '_' . $temp_field_star['star_type2'] : '') . '">' . $temp_field_star['star_name'] . ' Star</span>'; $temp_event_header = $this_player->player_name . ''s ' . ucfirst($temp_field_star['star_kind']) . ' Star'; $temp_event_body = $this_player->print_name() . ' collected the ' . $temp_name_markup . '!<br />'; $temp_event_body .= 'The new ' . ucfirst($temp_field_star['star_kind']) . ' Star amplifies your Starforce!'; $temp_event_options = array(); $temp_event_options['console_show_this_player'] = false; $temp_event_options['console_show_target_player'] = false; $temp_event_options['console_show_this_robot'] = false; $temp_event_options['console_show_target_robot'] = false; $temp_event_options['console_show_this_ability'] = false; $temp_event_options['console_show_this'] = true; $temp_event_options['console_show_this_star'] = true; $temp_event_options['this_header_float'] = $temp_event_options['this_body_float'] = $this_player->player_side; $temp_event_options['this_star'] = $temp_field_star; $temp_event_options['this_ability'] = false; $this_battle->events_create(false, false, $temp_event_header, $temp_event_body, $temp_event_options); // Update the session with this field star data $_SESSION['GAME']['values']['battle_stars'][$temp_field_star['star_token']] = $temp_field_star; // DEBUG DEBUG //$this_battle->events_create($this_robot, $target_robot, 'DEBUG FIELD STAR', 'You got a field star! The field star names '.implode(' | ', $temp_field_star)); } // If this robot's image has been changed, reveert it back to what it was if ($this_robot->robot_core == 'copy') { if (isset($this_robot->robot_image_overlay['copy_type1'])) { unset($this_robot->robot_image_overlay['copy_type1']); } if (isset($this_robot->robot_image_overlay['copy_type2'])) { unset($this_robot->robot_image_overlay['copy_type2']); } $this_robot->update_session(); } // If the target robot's image has been changed, reveert it back to what it was if ($target_robot->robot_core == 'copy') { if (isset($target_robot->robot_image_overlay['copy_type1'])) { unset($target_robot->robot_image_overlay['copy_type1']); } if (isset($target_robot->robot_image_overlay['copy_type2'])) { unset($target_robot->robot_image_overlay['copy_type2']); } $target_robot->update_session(); } // Define the first event body markup, regardless of player type $first_event_header = $this_battle->battle_name . ($this_battle->battle_result == 'victory' ? ' Complete' : ' Failure') . ' <span class="pipe">|</span> ' . $this_battle->battle_field->field_name; if ($this_battle->battle_result == 'victory') { $first_event_body = 'Mission complete! <span class="pipe">|</span> ' . ($temp_human_rewards['battle_complete'] > 1 ? rpg_functions::get_random_positive_word() . ' That's ' . $temp_human_rewards['battle_complete'] . ' times now! ' : '') . rpg_functions::get_random_victory_quote(); } elseif ($this_battle->battle_result == 'defeat') { $first_event_body = 'Mission failure. <span class="pipe">|</span> ' . ($temp_human_rewards['battle_failure'] > 1 ? 'That's ' . $temp_human_rewards['battle_failure'] . ' times now… ' : '') . rpg_functions::get_random_defeat_quote(); } $first_event_body .= ' <span class="pipe">|</span> ' . $temp_rating_stars_markup . '<br />'; // Print out the table and markup for the battle $first_event_body .= '<table class="full">'; $first_event_body .= '<colgroup><col width="30%" /><col width="15%" /><col width="15%" /><col width="20%" /><col width="20%" /></colgroup>'; $first_event_body .= '<tbody>'; $first_event_body .= '<tr>'; $first_event_body .= '<td class="left">Base Values</td>'; $first_event_body .= '<td class="center"></td>'; $first_event_body .= '<td class="center"></td>'; $first_event_body .= '<td class="right">' . ($temp_reward_points_base == 1 ? '1 Point' : number_format($temp_reward_points_base, 0, '.', ',') . ' Points') . '</td>'; $first_event_body .= '<td class="right">' . ($temp_reward_zenny_base == 1 ? '1 Zenny' : number_format($temp_reward_zenny_base, 0, '.', ',') . ' Zenny') . '</td>'; $first_event_body .= '</tr> '; // Only grant bonuses if there was a victory if ($this_battle->battle_result == 'victory') { // Print out the label and target vs actual turn stats $first_event_body .= '<tr>'; $first_event_body .= '<td class="left">Target Turns</td>'; $first_event_body .= '<td class="center">' . $this_battle->counters['battle_turn'] . ' / ' . $this_battle->battle_turns_limit . '</td>'; // Print the markup for the bonus/penalty percent if ($temp_turn_bonus > 0) { $first_event_body .= '<td class="center positive">+' . $temp_turn_bonus . '%</td>'; } elseif ($temp_turn_bonus < 0) { $first_event_body .= '<td class="center negative">' . $temp_turn_bonus . '%</td>'; } else { $first_event_body .= '<td class="center">+0%</td>'; } // Print out any mods to the points $markup = $temp_turn_bonus_points == 1 ? '1 Point' : number_format($temp_turn_bonus_points, 0, '.', ',') . ' Points'; if ($temp_turn_bonus_points > 0) { $first_event_body .= '<td class="right positive">+' . $markup . '</td>'; } elseif ($temp_turn_bonus_points < 0) { $first_event_body .= '<td class="right negative">' . $markup . '</td>'; } else { $first_event_body .= '<td class="right">-</td>'; } // Print out any mods to the zenny $markup = $temp_turn_bonus_zenny == 1 ? '1 Zenny' : number_format($temp_turn_bonus_zenny, 0, '.', ',') . ' Zenny'; if ($temp_turn_bonus_zenny > 0) { $first_event_body .= '<td class="right positive">+' . $markup . '</td>'; } elseif ($temp_turn_bonus_zenny < 0) { $first_event_body .= '<td class="right negative">' . $markup . '</td>'; } else { $first_event_body .= '<td class="right">-</td>'; } $first_event_body .= '</tr>'; // Print out the label and target vs actual robot stats $first_event_body .= '<tr>'; $first_event_body .= '<td class="left">Target Robots</td>'; $first_event_body .= '<td class="center">' . $this_player_info['counters']['robots_masters_total'] . ' / ' . $this_battle->battle_robots_limit . '</td>'; // Print the markup for the bonus/penalty percent if ($temp_robot_bonus > 0) { $first_event_body .= '<td class="center positive">+' . $temp_robot_bonus . '%</td>'; } elseif ($temp_robot_bonus < 0) { $first_event_body .= '<td class="center negative">' . $temp_robot_bonus . '%</td>'; } else { $first_event_body .= '<td class="center">+0%</td>'; } // Print out any mods to the points $markup = $temp_robot_bonus_points == 1 ? '1 Point' : number_format($temp_robot_bonus_points, 0, '.', ',') . ' Points'; if ($temp_robot_bonus_points > 0) { $first_event_body .= '<td class="right positive">+' . $markup . '</td>'; } elseif ($temp_robot_bonus_points < 0) { $first_event_body .= '<td class="right negative">' . $markup . '</td>'; } else { $first_event_body .= '<td class="right">-</td>'; } // Print out any mods to the zenny $markup = $temp_robot_bonus_zenny == 1 ? '1 Zenny' : number_format($temp_robot_bonus_zenny, 0, '.', ',') . ' Zenny'; if ($temp_robot_bonus_zenny > 0) { $first_event_body .= '<td class="right positive">+' . $markup . '</td>'; } elseif ($temp_robot_bonus_zenny < 0) { $first_event_body .= '<td class="right negative">' . $markup . '</td>'; } else { $first_event_body .= '<td class="right">-</td>'; } $first_event_body .= '</tr>'; } elseif ($this_battle->battle_result == 'defeat') { // Print out the label and target vs actual turn stats $first_event_body .= '<tr>'; $first_event_body .= '<td class="left">Target Turns</td>'; $first_event_body .= '<td class="center">' . $this_battle->counters['battle_turn'] . ' / ' . $this_battle->battle_turns_limit . '</td>'; // Print the markup for the empty fields $first_event_body .= '<td class="center">-</td>'; $first_event_body .= '<td class="right">-</td>'; $first_event_body .= '<td class="right">-</td>'; $first_event_body .= '</tr>'; // Print out the label and target vs actual robot stats $first_event_body .= '<tr>'; $first_event_body .= '<td class="left">Target Robots</td>'; $first_event_body .= '<td class="center">' . $this_player_info['counters']['robots_masters_total'] . ' / ' . $this_battle->battle_robots_limit . '</td>'; // Print the markup for the empty fields $first_event_body .= '<td class="center">-</td>'; $first_event_body .= '<td class="right">-</td>'; $first_event_body .= '<td class="right">-</td>'; $first_event_body .= '</tr>'; } // Print out the final rewards for this battle $first_event_body .= '<tr>'; $first_event_body .= '<td class="left"><strong>Final Rewards</strong></td>'; $first_event_body .= '<td class="center"></td>'; $first_event_body .= '<td class="center"></td>'; $first_event_body .= '<td class="right"><strong>' . ($temp_reward_points_final != 1 ? number_format($temp_reward_points_final, 0, '.', ',') . ' Points' : '1 Point') . '</strong></td>'; $first_event_body .= '<td class="right"><strong>' . ($temp_reward_zenny_final != 1 ? number_format($temp_reward_zenny_final, 0, '.', ',') . ' Zenny' : '1 Zenny') . '</strong></td>'; $first_event_body .= '</tr>'; // Finalize the table body for the results $first_event_body .= '</tbody>'; $first_event_body .= '</table>'; // Print the battle complete message $event_options = array(); $event_options['this_header_float'] = 'center'; $event_options['this_body_float'] = 'center'; $event_options['this_event_class'] = false; $event_options['console_show_this'] = false; $event_options['console_show_target'] = false; $event_options['console_container_classes'] = 'field_type field_type_event field_type_' . ($this_battle->battle_result == 'victory' ? 'nature' : 'flame'); $this_battle->events_create($target_robot, $this_robot, $first_event_header, $first_event_body, $event_options); // Add the flag to prevent any further messages from appearing $this_battle->set_flag('battle_complete_message_created', true); // Return the result for this battle function return $this_return; }