echo '</th>'.PHP_EOL; } else { echo '<th class="'.$class.'"> </th>'.PHP_EOL; } } ?> </tr> </thead> <tbody> <? // Loop through collected users and list their details if (!empty($user_index)){ $filter = '/[^a-z0-9]+/i'; foreach ($user_index AS $user_id => $user_info){ // Parse the user info before displaying it $user_info = rpg_user::parse_info($user_info); // Collect the display fields from the array $user_token = $user_info['user_name_clean']; $user_name = $user_info['user_name']; $user_name2 = $user_info['user_name_public']; $user_names_match = preg_replace($filter, '', $user_name) == preg_replace($filter, '', $user_name2) ? true : false; if (!empty($user_name2) && !$user_names_match){ $user_name .= ' / '.$user_name2; } $user_email = $user_info['user_email_address']; $user_accessed = !empty($user_info['user_date_accessed']) ? $user_info['user_date_accessed'] : $user_info['user_date_created']; $user_role = '<span class="type '.$user_info['role_colour'].'">'.$user_info['role_name'].'</span>'; $edit_link = 'admin/users/'.$user_id.'/'; $view_link = 'leaderboard/'.$user_token.'/'; $approved = $user_info['user_flag_approved'] ? true : false; $played = $user_info['user_flag_played'] ? true : false; // Print out the user info as a table row ?>
// -- Collect Indexes -- // // Generate form select options for the robot class index $robot_class_index = array('mecha' => 'Support Mecha', 'master' => 'Robot Master', 'boss' => 'Fortress Boss', 'system' => 'System Object'); $robot_class_index_plural = array('mecha' => 'Support Mechas', 'master' => 'Robot Masters', 'boss' => 'Fortress Bosses', 'system' => 'System Objects'); $robot_class_tokens = array_keys($robot_class_index); $robot_class_index_options = ''; foreach ($robot_class_tokens AS $robot_class_token){ $robot_class_name = $robot_class_index[$robot_class_token]; $robot_class_index_options .= '<option value="'.$robot_class_token.'">'.$robot_class_name.'</option>'.PHP_EOL; } // Generate form select options for the sprite contributor index $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'); $contributor_index_options = ''; $contributor_index_options .= '<option value="0">- Select Contributor -</option>'.PHP_EOL;
// Define the SEO variables for this page $this_seo_title = 'Community | ' . $this_seo_title; $this_seo_description = 'The community forums serve as a place for players and developers to connect and communicate with each other, providing feedback and relaying ideas in a forum-style bulletin board tied directly to player\'s save files. Mega Man RPG World is a browser-based fangame that combines the mechanics of both the Pokémon and Mega Man series of video games into one strange and wonderful little time waster.'; // Define the Open Graph variables for this page $this_graph_data['title'] = 'Community Forums'; $this_graph_data['description'] = 'The community forums serve as a place for players and developers to connect and communicate with each other, providing feedback and relaying ideas in a forum-style bulletin board tied directly to player\'s save files.'; //$this_graph_data['image'] = MMRPG_CONFIG_ROOTURL.'images/assets/mmrpg-prototype-logo.png'; //$this_graph_data['type'] = 'website'; // Define the MARKUP variables for this page $this_markup_header = 'Mega Man RPG World Community'; // Generate field lists for the relevant community database tables $db_category_fields = rpg_website::get_category_fields(true, 'categories'); $db_thread_fields = rpg_website::get_thread_fields(true, 'threads'); $db_post_fields = rpg_website::get_post_fields(true, 'posts'); $db_role_fields = rpg_user_role::get_fields(true, 'roles'); $db_user_fields = rpg_user::get_fields(true, 'users'); /* * COLLECT FORMACTIONS */ // Collect this player's battle point total if (empty($_SESSION[rpg_game::session_token()]['DEMO'])) { $community_battle_points = rpg_game::battle_points(); } else { $community_battle_points = 0; } // Collect all the categories from the index $this_categories_index = rpg_website::community_index(); $this_categories_index_tokens = array(); foreach ($this_categories_index as $token => $info) { $this_categories_index_tokens[$info['category_id']] = $token; }
public static function print_database_markup($ability_info, $print_options = array()) { // Define the global variables global $mmrpg_index, $this_current_uri, $this_current_url; global $mmrpg_database_abilities, $mmrpg_database_abilities, $mmrpg_database_types; global $db; // Collect global indexes for easier search $mmrpg_types = rpg_type::get_index(); // Define the markup variable $this_markup = ''; // 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_icon'])) { $print_options['show_icon'] = true; } if (!isset($print_options['show_sprites'])) { $print_options['show_sprites'] = true; } if (!isset($print_options['show_robots'])) { $print_options['show_robots'] = 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; } } elseif ($print_options['layout_style'] == 'website_compact') { if (!isset($print_options['show_basics'])) { $print_options['show_basics'] = true; } if (!isset($print_options['show_icon'])) { $print_options['show_icon'] = true; } if (!isset($print_options['show_sprites'])) { $print_options['show_sprites'] = false; } if (!isset($print_options['show_robots'])) { $print_options['show_robots'] = 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; } } elseif ($print_options['layout_style'] == 'event') { if (!isset($print_options['show_basics'])) { $print_options['show_basics'] = true; } if (!isset($print_options['show_icon'])) { $print_options['show_icon'] = false; } if (!isset($print_options['show_sprites'])) { $print_options['show_sprites'] = false; } if (!isset($print_options['show_robots'])) { $print_options['show_robots'] = 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; } } // Collect the ability sprite dimensions $ability_image_size = !empty($ability_info['ability_image_size']) ? $ability_info['ability_image_size'] : 40; $ability_image_size_text = $ability_image_size . 'x' . $ability_image_size; $ability_image_token = !empty($ability_info['ability_image']) ? $ability_info['ability_image'] : $ability_info['ability_token']; // Collect the ability's type for background display $ability_type_class = !empty($ability_info['ability_type']) ? $ability_info['ability_type'] : 'none'; if ($ability_type_class != 'none' && !empty($ability_info['ability_type2'])) { $ability_type_class .= '_' . $ability_info['ability_type2']; } elseif ($ability_type_class == 'none' && !empty($ability_info['ability_type2'])) { $ability_type_class = $ability_info['ability_type2']; } $ability_header_types = 'ability_type_' . $ability_type_class . ' '; // If this is a special category of item, it's a special type if (preg_match('/^item-score-ball-(red|blue|green|purple)$/i', $ability_info['ability_token'])) { $ability_info['ability_type_special'] = 'bonus'; } elseif (preg_match('/^item-super-(pellet|capsule)$/i', $ability_info['ability_token'])) { $ability_info['ability_type_special'] = 'multi'; } // Define the sprite sheet alt and title text $ability_sprite_size = $ability_image_size * 2; $ability_sprite_size_text = $ability_sprite_size . 'x' . $ability_sprite_size; $ability_sprite_title = $ability_info['ability_name']; //$ability_sprite_title = $ability_info['ability_number'].' '.$ability_info['ability_name']; //$ability_sprite_title .= ' Sprite Sheet | Robot Database | Mega Man RPG World'; // Define the sprite frame index for robot images $ability_sprite_frames = array('frame_01', 'frame_02', 'frame_03', 'frame_04', 'frame_05', 'frame_06', 'frame_07', 'frame_08', 'frame_09', 'frame_10'); // Limit any damage or recovery percents to 100% if (!empty($ability_info['ability_damage_percent']) && $ability_info['ability_damage'] > 100) { $ability_info['ability_damage'] = 100; } if (!empty($ability_info['ability_damage2_percent']) && $ability_info['ability_damage2'] > 100) { $ability_info['ability_damage2'] = 100; } if (!empty($ability_info['ability_recovery_percent']) && $ability_info['ability_recovery'] > 100) { $ability_info['ability_recovery'] = 100; } if (!empty($ability_info['ability_recovery2_percent']) && $ability_info['ability_recovery2'] > 100) { $ability_info['ability_recovery2'] = 100; } // Start the output buffer ob_start(); ?> <div class="database_container database_<?php echo $ability_info['ability_class'] == 'item' ? 'item' : 'ability'; ?> _container" data-token="<?php echo $ability_info['ability_token']; ?> " style="<?php echo $print_options['layout_style'] == 'website_compact' ? 'margin-bottom: 2px !important;' : ''; ?> "> <?php if ($print_options['layout_style'] == 'website' || $print_options['layout_style'] == 'website_compact') { ?> <a class="anchor" id="<?php echo $ability_info['ability_token']; ?> "> </a> <?php } ?> <div class="subbody event event_triple event_visible" data-token="<?php echo $ability_info['ability_token']; ?> " style="<?php echo ($print_options['layout_style'] == 'event' ? 'margin: 0 !important; ' : '') . ($print_options['layout_style'] == 'website_compact' ? 'margin-bottom: 2px !important; ' : ''); ?> "> <?php if ($print_options['show_icon']) { ?> <div class="this_sprite sprite_left" style="height: 40px;"> <?php if ($print_options['show_icon']) { ?> <?php if ($print_options['show_key'] !== false) { ?> <div class="icon ability_type <?php echo $ability_header_types; ?> " style="font-size: 9px; line-height: 11px; text-align: center; margin-bottom: 2px; padding: 0 0 1px !important;"><?php echo 'No.' . $ability_info['ability_key']; ?> </div> <?php } ?> <?php if ($ability_image_token != 'ability') { ?> <div class="icon ability_type <?php echo $ability_header_types; ?> "><div style="background-image: url(i/a/<?php echo $ability_image_token; ?> /ir<?php echo $ability_image_size; ?> .png?<?php echo MMRPG_CONFIG_CACHE_DATE; ?> ); background-color: #000000; background-color: rgba(0, 0, 0, 0.6); box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); " class="sprite sprite_ability sprite_40x40 sprite_40x40_icon sprite_size_<?php echo $ability_image_size_text; ?> sprite_size_<?php echo $ability_image_size_text; ?> _icon"><?php echo $ability_info['ability_name']; ?> 's Mugshot</div></div> <?php } else { ?> <div class="icon ability_type <?php echo $ability_header_types; ?> "><div style="background-image: none; background-color: #000000; background-color: rgba(0, 0, 0, 0.6); box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); " class="sprite sprite_ability sprite_40x40 sprite_40x40_icon sprite_size_<?php echo $ability_image_size_text; ?> sprite_size_<?php echo $ability_image_size_text; ?> _icon">No Image</div></div> <?php } ?> <?php } ?> </div> <?php } ?> <?php if ($print_options['show_basics']) { ?> <h2 class="header header_left <?php echo $ability_header_types; ?> <?php echo !$print_options['show_icon'] ? 'noicon' : ''; ?> "> <?php if ($print_options['layout_style'] == 'website_compact') { ?> <a href="<?php echo preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' . preg_replace('/^item-/i', '', $ability_info['ability_token']) . '/' : 'database/abilities/' . $ability_info['ability_token'] . '/'; ?> "><?php echo $ability_info['ability_name']; ?> </a> <?php } else { ?> <?php echo $ability_info['ability_name']; ?> 's Data <?php } ?> <?php if (!empty($ability_info['ability_type_special'])) { ?> <div class="header_core ability_type"><?php echo ucfirst($ability_info['ability_type_special']); ?> Type</div> <?php } elseif (!empty($ability_info['ability_type']) && !empty($ability_info['ability_type2'])) { ?> <div class="header_core ability_type"><?php echo ucfirst($ability_info['ability_type']) . ' / ' . ucfirst($ability_info['ability_type2']); ?> Type</div> <?php } elseif (!empty($ability_info['ability_type'])) { ?> <div class="header_core ability_type"><?php echo ucfirst($ability_info['ability_type']); ?> Type</div> <?php } else { ?> <div class="header_core ability_type">Neutral Type</div> <?php } ?> </h2> <div class="body body_left" style="margin-right: 0; margin-bottom: 5px; padding: 2px 0; min-height: 10px; <?php echo !$print_options['show_icon'] ? 'margin-left: 0; ' : ''; echo $print_options['layout_style'] == 'event' ? 'font-size: 10px; min-height: 150px; ' : ''; ?> "> <table class="full" style="margin: 5px auto 10px;"> <colgroup> <col width="48%" /> <col width="1%" /> <col width="48%" /> </colgroup> <tbody> <tr> <td class="right"> <label style="display: block; float: left;">Name :</label> <span class="ability_type ability_type_"><?php echo $ability_info['ability_name']; ?> </span> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Type :</label> <?php if ($print_options['layout_style'] != 'event') { ?> <?php if (!empty($ability_info['ability_type_special'])) { echo '<a href="' . ((preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' : 'database/abilities/') . $ability_info['ability_type_special'] . '/') . '" class="ability_type ' . $ability_header_types . '">' . ucfirst($ability_info['ability_type_special']) . '</a>'; } elseif (!empty($ability_info['ability_type'])) { $temp_string = array(); $ability_type = !empty($ability_info['ability_type']) ? $ability_info['ability_type'] : 'none'; $temp_string[] = '<a href="' . ((preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' : 'database/abilities/') . $ability_type . '/') . '" class="ability_type ability_type_' . $ability_type . '">' . $mmrpg_types[$ability_type]['type_name'] . '</a>'; if (!empty($ability_info['ability_type2'])) { $ability_type2 = !empty($ability_info['ability_type2']) ? $ability_info['ability_type2'] : 'none'; $temp_string[] = '<a href="' . ((preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' : 'database/abilities/') . $ability_type2 . '/') . '" class="ability_type ability_type_' . $ability_type2 . '">' . $mmrpg_types[$ability_type2]['type_name'] . '</a>'; } echo implode(' ', $temp_string); } else { echo '<a href="' . ((preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' : 'database/abilities/') . 'none/') . '" class="ability_type ability_type_none">Neutral</a>'; } ?> <?php } else { ?> <?php if (!empty($ability_info['ability_type_special'])) { echo '<span class="ability_type ' . $ability_header_types . '">' . ucfirst($ability_info['ability_type_special']) . '</span>'; } elseif (!empty($ability_info['ability_type'])) { $temp_string = array(); $ability_type = !empty($ability_info['ability_type']) ? $ability_info['ability_type'] : 'none'; $temp_string[] = '<span class="ability_type ability_type_' . $ability_type . '">' . $mmrpg_types[$ability_type]['type_name'] . '</span>'; if (!empty($ability_info['ability_type2'])) { $ability_type2 = !empty($ability_info['ability_type2']) ? $ability_info['ability_type2'] : 'none'; $temp_string[] = '<span class="ability_type ability_type_' . $ability_type2 . '">' . $mmrpg_types[$ability_type2]['type_name'] . '</span>'; } echo implode(' ', $temp_string); } else { echo '<span class="ability_type ability_type_none">Neutral</span>'; } ?> <?php } ?> </td> </tr> <?php if ($ability_info['ability_class'] != 'item') { ?> <?php if ($ability_image_token != 'ability') { ?> <tr> <td class="right"> <label style="display: block; float: left;">Power :</label> <?php if (!empty($ability_info['ability_damage']) || !empty($ability_info['ability_recovery'])) { ?> <?php if (!empty($ability_info['ability_damage'])) { ?> <span class="ability_stat"><?php echo $ability_info['ability_damage'] . (!empty($ability_info['ability_damage_percent']) ? '%' : ''); ?> Damage</span><?php } ?> <?php if (!empty($ability_info['ability_recovery'])) { ?> <span class="ability_stat"><?php echo $ability_info['ability_recovery'] . (!empty($ability_info['ability_recovery_percent']) ? '%' : ''); ?> Recovery</span><?php } ?> <?php } else { ?> <span class="ability_stat">-</span> <?php } ?> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Accuracy :</label> <span class="ability_stat"><?php echo $ability_info['ability_accuracy'] . '%'; ?> </span> </td> </tr> <tr> <td class="right"> <label style="display: block; float: left;">Energy :</label> <span class="ability_stat"><?php echo (!empty($ability_info['ability_energy']) ? $ability_info['ability_energy'] : '-') . (!empty($ability_info['ability_energy_percent']) ? '%' : ''); ?> </span> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Speed :</label> <span class="ability_stat"><?php echo !empty($ability_info['ability_speed']) ? $ability_info['ability_speed'] : '1'; ?> </span> </td> </tr> <?php } else { ?> <tr> <td class="right"> <label style="display: block; float: left;">Power :</label> <span class="ability_stat">-</span> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Accuracy :</label> <span class="ability_stat">-</span> </td> </tr> <tr> <td class="right"> <label style="display: block; float: left;">Energy :</label> <span class="ability_stat">-</span> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Speed :</label> <span class="ability_stat">-</span> </td> </tr> <?php } ?> <?php } ?> </tbody> </table> <table class="full" style="margin: 5px auto 10px;"> <colgroup> <col width="100%" /> </colgroup> <tbody> <tr> <td class="right"> <?php if ($print_options['layout_style'] != 'event') { ?> <label style="display: block; float: left;">Description :</label> <?php } ?> <div class="description_container" style="white-space: normal; text-align: left; <?php echo $print_options['layout_style'] == 'event' ? 'font-size: 12px; ' : ''; ?> "><?php // Define the search/replace pairs for the description $temp_find = array('{DAMAGE}', '{RECOVERY}', '{DAMAGE2}', '{RECOVERY2}', '{}'); $temp_replace = array(!empty($ability_info['ability_damage']) ? $ability_info['ability_damage'] : 0, !empty($ability_info['ability_recovery']) ? $ability_info['ability_recovery'] : 0, !empty($ability_info['ability_damage2']) ? $ability_info['ability_damage2'] : 0, !empty($ability_info['ability_recovery2']) ? $ability_info['ability_recovery2'] : 0, ''); $temp_description = !empty($ability_info['ability_description']) ? $ability_info['ability_description'] : ''; if (!empty($ability_info['ability_description2'])) { $temp_description .= ' ' . $ability_info['ability_description2']; } echo !empty($temp_description) ? str_replace($temp_find, $temp_replace, $temp_description) : '…'; ?> </div> </td> </tr> </tbody> </table> </div> <?php } ?> <?php if ($print_options['show_sprites'] && (!isset($ability_info['ability_image_sheets']) || $ability_info['ability_image_sheets'] !== 0) && $ability_image_token != 'ability') { ?> <?php // Start the output buffer and prepare to collect sprites ob_start(); // Define the alts we'll be looping through for this ability $temp_alts_array = array(); $temp_alts_array[] = array('token' => '', 'name' => $ability_info['ability_name'], 'summons' => 0); // Append predefined alts automatically, based on the ability image alt array if (!empty($ability_info['ability_image_alts'])) { $temp_alts_array = array_merge($temp_alts_array, $ability_info['ability_image_alts']); } elseif ($ability_info['ability_type'] == 'copy' && preg_match('/^(mega-man|proto-man|bass)$/i', $ability_info['ability_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' => $ability_info['ability_name'] . ' (' . ucfirst($type_token) . ' Core)', 'summons' => 0); } } elseif (!empty($ability_info['ability_image_sheets'])) { for ($i = 2; $i <= $ability_info['ability_image_sheets']; $i++) { $temp_alts_array[] = array('sheet' => $i, 'name' => $ability_info['ability_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_ability_image_token = $ability_image_token; $temp_ability_image_token .= !empty($alt_info['token']) ? '_' . $alt_info['token'] : ''; $temp_ability_image_token .= !empty($alt_info['sheet']) ? '-' . $alt_info['sheet'] : ''; $temp_ability_image_name = $alt_info['name']; // Update the alt array with this info $temp_alts_array[$alt_key]['image'] = $temp_ability_image_token; // Collect the number of sheets $temp_sheet_number = !empty($ability_info['ability_image_sheets']) ? $ability_info['ability_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 = '[ability:' . $temp_direction . ']{' . $temp_ability_image_token . '}'; $temp_title = $temp_ability_image_name . ' | Icon 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 = 'Icon ' . ucfirst(substr($temp_direction, 0, 1)); echo '<div class="frame_container" data-clickcopy="' . $temp_embed . '" data-direction="' . $temp_direction . '" data-image="' . $temp_ability_image_token . '" data-frame="icon" style="padding-top: 20px; float: left; position: relative; margin: 0; box-shadow: inset 1px 1px 5px rgba(0, 0, 0, 0.75); width: ' . $ability_sprite_size . 'px; height: ' . $ability_sprite_size . 'px; overflow: hidden;">'; echo '<img style="margin-left: 0;" data-tooltip="' . $temp_title . '" src="i/a/' . $temp_ability_image_token . '/i' . $temp_direction2 . $ability_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 ($ability_sprite_frames as $this_key => $this_frame) { $margin_left = ceil((0 - $this_key) * $ability_sprite_size); $frame_relative = $this_frame; //if ($temp_sheet > 1){ $frame_relative = 'frame_'.str_pad((($temp_sheet - 1) * count($ability_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 = '[ability:' . $temp_direction . ':' . $frame_relative . ']{' . $temp_ability_image_token . '}'; $temp_title = $temp_ability_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($ability_info['ability_image']) ? $ability_info['ability_image'] : $ability_info['ability_token']; //if ($temp_sheet > 1){ $temp_ability_image_token .= '-'.$temp_sheet; } echo '<div class="frame_container" data-clickcopy="' . $temp_embed . '" data-direction="' . $temp_direction . '" data-image="' . $temp_ability_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: ' . $ability_sprite_size . 'px; height: ' . $ability_sprite_size . 'px; overflow: hidden;">'; echo '<img style="margin-left: ' . $margin_left . 'px;" title="' . $temp_title . '" alt="' . $temp_title . '" src="i/a/' . $temp_ability_image_token . '/s' . $temp_direction2 . $ability_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 $ability_header_types; ?> " style="margin: 10px 0 0; text-align: left;"> <?php echo $ability_info['ability_name']; ?> '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 foreach ($temp_alts_array as $alt_key => $alt_info) { $alt_type = ''; $alt_style = ''; $alt_title = $alt_info['name']; 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 = '•'; //ucfirst($alt_type); //substr(ucfirst($alt_type), 0, 2); $alt_type = 'ability_type ability_type_' . $alt_type . ' core_type '; $alt_style = 'border-color: rgba(0, 0, 0, 0.2) !important; '; } else { $alt_name = $alt_key + 1; //$alt_key == 0 ? $ability_info['ability_name'] : 'Alt'.($alt_key > 1 ? ' '.$alt_key : ''); //$alt_key == 0 ? $ability_info['ability_name'] : $ability_info['ability_name'].' Alt'.($alt_key > 1 ? ' '.$alt_key : ''); $alt_type = 'ability_type ability_type_empty '; $alt_style = 'border-color: rgba(0, 0, 0, 0.2) !important; background-color: rgba(0, 0, 0, 0.2) !important; '; //if ($ability_info['ability_type'] == 'copy' && $alt_key == 0){ $alt_type = 'ability_type ability_type_empty '; } } echo '<a href="#" data-tooltip="' . $alt_title . '" 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" 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: auto;"> <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($ability_info['ability_image_editor']) && isset($contributor_index[$ability_info['ability_image_editor']])){ $temp_editor_ids[] = $ability_info['ability_image_editor']; } // Check if a second image editor ID has been defined if (!empty($ability_info['ability_image_editor2']) && isset($contributor_index[$ability_info['ability_image_editor2']])){ $temp_editor_ids[] = $ability_info['ability_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); } // Print out the final credits footer based on if special case or Capcom original if ($ability_info['ability_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 ($ability_info['ability_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 } ?> <?php if ($print_options['show_robots'] && $ability_info['ability_class'] != 'item') { ?> <h2 class="header header_full <?php echo $ability_header_types; ?> " style="margin: 10px 0 0; text-align: left;"> <?php echo $ability_info['ability_name']; ?> 's Robots </h2> <div class="body body_full" style="margin: 0; padding: 2px 3px;"> <table class="full" style="margin: 5px auto 10px;"> <colgroup> <col width="100%" /> </colgroup> <tbody> <tr> <td class="right"> <div class="robot_container"> <?php // Collect the full robot index to loop through $ability_type_one = !empty($ability_info['ability_type']) ? $ability_info['ability_type'] : false; $ability_type_two = !empty($ability_info['ability_type2']) ? $ability_info['ability_type2'] : false; $ability_robot_rewards = array(); $ability_robot_rewards_level = array(); $ability_robot_rewards_core = array(); $ability_robot_rewards_player = array(); // Collect a FULL list of abilities for display $temp_required = array(); if (!empty($ability_info['ability_master'])) { $temp_required[] = $ability_info['ability_master']; } $temp_robots_index = rpg_robot::get_index(false, false, 'master', $temp_required); // Loop through and remove any robots that do not learn the ability foreach ($temp_robots_index as $robot_token => $robot_info) { // Define the match flah to prevent doubling up $temp_match_flag = false; // Loop through this robot's ability rewards one by one foreach ($robot_info['robot_rewards']['abilities'] as $temp_info) { // If the temp info's type token matches this ability if ($temp_info['token'] == $ability_info['ability_token']) { // Add this ability to the rewards list $ability_robot_rewards_level[] = array_merge($robot_info, array('token' => $robot_info['robot_token'], 'level' => $temp_info['level'])); $temp_match_flag = true; break; } } // If a type match was found, continue if ($temp_match_flag) { continue; } // If this ability's type matches the robot's first if (!empty($robot_info['robot_core']) && ($robot_info['robot_core'] == $ability_type_one || $robot_info['robot_core'] == $ability_type_two)) { // Add this ability to the rewards list $ability_robot_rewards_core[] = array_merge($robot_info, array('token' => $robot_info['robot_token'], 'level' => 'core')); continue; } // If this ability's type matches the robot's second if (!empty($robot_info['robot_core2']) && ($robot_info['robot_core2'] == $ability_type_one || $robot_info['robot_core2'] == $ability_type_two)) { // Add this ability to the rewards list $ability_robot_rewards_core[] = array_merge($robot_info, array('token' => $robot_info['robot_token'], 'level' => 'core')); continue; } // If a type match was found, continue if ($temp_match_flag) { continue; } // If this ability's in the robot's list of player-only abilities if (!empty($robot_info['robot_abilities']) && in_array($ability_info['ability_token'], $robot_info['robot_abilities']) || !empty($robot_info['robot_core']) && $robot_info['robot_core'] == 'copy' || !empty($robot_info['robot_core2']) && $robot_info['robot_core2'] == 'copy') { // Add this ability to the rewards list $ability_robot_rewards_player[] = array_merge($robot_info, array('token' => $robot_info['robot_token'], 'level' => 'player')); continue; } // If a type match was found, continue if ($temp_match_flag) { continue; } } // Combine the arrays together into one $ability_robot_rewards = array_merge($ability_robot_rewards_level, $ability_robot_rewards_core, $ability_robot_rewards_player); // Loop through the collected robots if there are any if (!empty($ability_robot_rewards)) { $temp_string = array(); $robot_key = 0; $robot_method_key = 0; $robot_method = ''; $temp_global_abilities = self::get_global_abilities(); foreach ($ability_robot_rewards as $this_info) { $this_level = $this_info['level']; $this_robot = $temp_robots_index[$this_info['token']]; $this_robot_token = $this_robot['robot_token']; $this_robot_name = $this_robot['robot_name']; $this_robot_image = !empty($this_robot['robot_image']) ? $this_robot['robot_image'] : $this_robot['robot_token']; $this_robot_energy = !empty($this_robot['robot_energy']) ? $this_robot['robot_energy'] : 0; $this_robot_attack = !empty($this_robot['robot_attack']) ? $this_robot['robot_attack'] : 0; $this_robot_defense = !empty($this_robot['robot_defense']) ? $this_robot['robot_defense'] : 0; $this_robot_speed = !empty($this_robot['robot_speed']) ? $this_robot['robot_speed'] : 0; $this_robot_method = 'level'; $this_robot_method_text = 'Level Up'; $this_robot_title_html = '<strong class="name">' . $this_robot_name . '</strong>'; if (is_numeric($this_level)) { if ($this_level > 1) { $this_robot_title_html .= '<span class="level">Lv ' . str_pad($this_level, 2, '0', STR_PAD_LEFT) . '</span>'; } else { $this_robot_title_html .= '<span class="level">Start</span>'; } } else { if ($this_level == 'core') { $this_robot_method = 'core'; $this_robot_method_text = 'Core Match'; } elseif ($this_level == 'player') { $this_robot_method = 'player'; $this_robot_method_text = 'Player Only'; } $this_robot_title_html .= '<span class="level"> </span>'; } $this_stat_base_total = $this_robot_energy + $this_robot_attack + $this_robot_defense + $this_robot_speed; $this_stat_width_total = 84; if (!empty($this_robot['robot_core'])) { $this_robot_title_html .= '<span class="robot_core type_' . $this_robot['robot_core'] . '">' . ucwords($this_robot['robot_core'] . (!empty($this_robot['robot_core2']) ? ' / ' . $this_robot['robot_core2'] : '')) . ' Core</span>'; } else { $this_robot_title_html .= '<span class="robot_core type_none">Neutral Core</span>'; } $this_robot_title_html .= '<span class="class">' . (!empty($this_robot['robot_description']) ? $this_robot['robot_description'] : '…') . '</span>'; if (!empty($this_robot_speed)) { $temp_speed_width = floor($this_stat_width_total * ($this_robot_speed / $this_stat_base_total)); } if (!empty($this_robot_defense)) { $temp_defense_width = floor($this_stat_width_total * ($this_robot_defense / $this_stat_base_total)); } if (!empty($this_robot_attack)) { $temp_attack_width = floor($this_stat_width_total * ($this_robot_attack / $this_stat_base_total)); } if (!empty($this_robot_energy)) { $temp_energy_width = $this_stat_width_total - ($temp_speed_width + $temp_defense_width + $temp_attack_width); } if (!empty($this_robot_energy)) { $this_robot_title_html .= '<span class="energy robot_type robot_type_energy" style="width: ' . $temp_energy_width . '%;" title="' . $this_robot_energy . ' Energy">' . $this_robot_energy . '</span>'; } if (!empty($this_robot_attack)) { $this_robot_title_html .= '<span class="attack robot_type robot_type_attack" style="width: ' . $temp_attack_width . '%;" title="' . $this_robot_attack . ' Attack">' . $this_robot_attack . '</span>'; } if (!empty($this_robot_defense)) { $this_robot_title_html .= '<span class="defense robot_type robot_type_defense" style="width: ' . $temp_defense_width . '%;" title="' . $this_robot_defense . ' Defense">' . $this_robot_defense . '</span>'; } if (!empty($this_robot_speed)) { $this_robot_title_html .= '<span class="speed robot_type robot_type_speed" style="width: ' . $temp_speed_width . '%;" title="' . $this_robot_speed . ' Speed">' . $this_robot_speed . '</span>'; } $this_robot_sprite_size = !empty($this_robot['robot_image_size']) ? $this_robot['robot_image_size'] : 40; $this_robot_sprite_path = 'images/sprites/robots/' . $this_robot_image . '/mug_left_' . $this_robot_sprite_size . 'x' . $this_robot_sprite_size . '.png'; if (!file_exists(MMRPG_CONFIG_ROOTDIR . $this_robot_sprite_path)) { $this_robot_image = 'robot'; $this_robot_sprite_path = 'i/r/robot/ml40.png'; } else { $this_robot_sprite_path = 'i/r/' . $this_robot_image . '/ml' . $this_robot_sprite_size . '.png'; } if ($this_robot_image != 'robot') { $this_robot_sprite_html = '<span class="mug"><img class="size_' . $this_robot_sprite_size . 'x' . $this_robot_sprite_size . '" src="' . $this_robot_sprite_path . '?' . MMRPG_CONFIG_CACHE_DATE . '" alt="' . $this_robot_name . ' Mug" /></span>'; } else { $this_robot_sprite_html = '<span class="mug"></span>'; } $this_robot_title_html = '<span class="label">' . $this_robot_title_html . '</span>'; //$this_robot_title_html = (is_numeric($this_level) && $this_level > 1 ? 'Lv '.str_pad($this_level, 2, '0', STR_PAD_LEFT).' : ' : $this_level.' : ').$this_robot_title_html; if ($robot_method != $this_robot_method) { if ($this_robot_method == 'level' && $ability_info['ability_token'] == 'buster-shot') { continue; } $temp_separator = '<div class="robot_separator">' . $this_robot_method_text . '</div>'; $temp_string[] = $temp_separator; $robot_method = $this_robot_method; $robot_method_key++; // Print out the disclaimer if a global ability if (in_array($ability_info['ability_token'], $temp_global_abilities)) { $temp_string[] = '<div class="" style="margin: 10px auto; text-align: center; color: #767676; font-size: 11px;">' . $ability_info['ability_name'] . ' can be equipped by <em>any</em> robot master!</div>'; } } // If this is a global ability, don't bother showing EVERY compatible robot if ($this_robot_method == 'level' && $ability_info['ability_token'] == 'buster-shot' || $this_robot_method != 'level' && in_array($ability_info['ability_token'], $temp_global_abilities)) { continue; } if ($this_level >= 0) { //title="'.$this_robot_title_plain.'" $temp_markup = '<a href="' . MMRPG_CONFIG_ROOTURL . 'database/robots/' . $this_robot['robot_token'] . '/" class="robot_name robot_type robot_type_' . (!empty($this_robot['robot_core']) ? $this_robot['robot_core'] . (!empty($this_robot['robot_core2']) ? '_' . $this_robot['robot_core2'] : '') : 'none') . '" style="' . ($this_robot_image == 'robot' ? 'opacity: 0.3; ' : '') . '">'; $temp_markup .= '<span class="chrome">' . $this_robot_sprite_html . $this_robot_title_html . '</span>'; $temp_markup .= '</a>'; $temp_string[] = $temp_markup; $robot_key++; continue; } } echo implode(' ', $temp_string); } else { echo '<span class="robot_ability robot_type_none"><span class="chrome">Neutral</span></span>'; } ?> </div> </td> </tr> </tbody> </table> </div> <?php } ?> <?php if ($print_options['show_footer'] && $print_options['layout_style'] == 'website') { ?> <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a> <a class="link link_permalink permalink" href="<?php echo preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' . preg_replace('/^item-/i', '', $ability_info['ability_token']) . '/' : 'database/abilities/' . $ability_info['ability_token'] . '/'; ?> " rel="permalink">+ Permalink</a> <?php } elseif ($print_options['show_footer'] && $print_options['layout_style'] == 'website_compact') { ?> <a class="link link_top" data-href="#top" rel="nofollow">^ Top</a> <a class="link link_permalink permalink" href="<?php echo preg_match('/^item-/', $ability_info['ability_token']) ? 'database/items/' . preg_replace('/^item-/i', '', $ability_info['ability_token']) . '/' : 'database/abilities/' . $ability_info['ability_token'] . '/'; ?> " rel="permalink">+ View More</a> <?php } ?> </div> </div> <?php // Collect the outbut buffer contents $this_markup = trim(ob_get_clean()); // Return the generated markup return $this_markup; }
// Define the default SEO and MARKUP variables $this_seo_title = 'Game | Mega Man RPG World | Last Updated ' . preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})-([0-9]{2})#', '$1/$2/$3', MMRPG_CONFIG_CACHE_DATE); $this_seo_keywords = 'megaman,mega man,protoman,proto man,bass,rpg,prototype,dr.light,dr.wily,dr.cossack,battle,browser,pbbg,ipad,firefox,chrome,safari'; $this_seo_description = 'Battle through more than thirty robot masters in classic RPG style with either Dr. Light and Mega Man, Dr. Wily and Bass, or Dr. Cossack and Proto Man! Mega Man RPG World is a browser-based fangame that combines the mechanics of both the Pokémon and Mega Man series of video games into one strange and wonderful little time waster.'; // Define the default Open Graph tag variables $this_graph_data = array('title' => 'Mega Man RPG World', 'type' => 'website', 'url' => $this_current_url, 'image' => MMRPG_CONFIG_ROOTURL . 'images/assets/mmrpg-prototype-logo.png?' . MMRPG_CONFIG_CACHE_DATE, 'site_name' => 'Mega Man RPG World', 'description' => $this_seo_description); // If a reset was intentionally called if (!empty($_GET['reset']) || rpg_game::is_demo() && !empty($_SESSION['GAME']['CACHE_DATE']) && $_SESSION['GAME']['CACHE_DATE'] != MMRPG_CONFIG_CACHE_DATE) { // Reset the game session rpg_game::reset_session(); } elseif (rpg_game::is_demo() && !empty($_SESSION['GAME']['CACHE_DATE']) && $_SESSION['GAME']['CACHE_DATE'] != MMRPG_CONFIG_CACHE_DATE) { // Reset the game session rpg_game::reset_session(); } elseif (!empty($_GET['reload']) || !isset($_SESSION['GAME']['CACHE_DATE']) || rpg_game::is_demo() && $_SESSION['GAME']['CACHE_DATE'] != MMRPG_CONFIG_CACHE_DATE) { // Ensure there is a save file to load if (rpg_user::is_member()) { // Load the save file into memory and overwrite the session rpg_game::load_session(); } else { // Reset the game session rpg_game::reset_session(); } // Update the cache date to reflect the reload $_SESSION['GAME']['CACHE_DATE'] = MMRPG_CONFIG_CACHE_DATE; // Save the updated file back to the system rpg_game::save_session(); } // Automatically empty all temporary battle variables $_SESSION['BATTLES'] = array(); $_SESSION['FIELDS'] = array(); $_SESSION['PLAYERS'] = array();
// Collect the battle target menus markup $actions_markup['target_target'] = rpg_battle::get_menu_markup($objects, 'target_target'); $actions_markup['target_this'] = rpg_battle::get_menu_markup($objects, 'target_this'); $actions_markup['target_this_disabled'] = rpg_battle::get_menu_markup($objects, 'target_this_disabled'); // Collect the battle scan menu markup $actions_markup['scan'] = rpg_battle::get_menu_markup($objects, 'scan'); // Collect the battle menu markup $actions_markup['battle'] = rpg_battle::get_menu_markup($objects, 'battle'); } elseif (empty($this_redirect) && $this_battle_status == 'complete') { // Collect the battle options menu markup $actions_markup['option'] = rpg_battle::get_menu_markup($objects, 'option'); // Collect the battle complete menu markup $actions_markup['complete'] = rpg_battle::get_menu_markup($objects, 'complete'); } // If possible, attempt to save the game to the session with recent changes if (rpg_user::is_member() && $this_battle_status == 'complete') { // Save the game session rpg_game::save_session(); } // Determine the next action based on everything that's happened if (empty($this_redirect)) { $this_next_action = 'battle'; $this_robot_status = $this_robot->get_status(); $this_robot_position = $this_robot->get_position(); if (($this_robot_status == 'disabled' || $this_robot_position != 'active') && $this_battle_status != 'complete') { $this_next_action = 'switch'; } } // Stop the output buffer and collect contents $output_buffer_contents = trim(ob_get_clean()); ?>
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']; ?> '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 & Forte 2 : Challenger from the Future (JP)">Mega Man & 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 & Forte (JP)">Mega Man & 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'] : '…'; ?> </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…', $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…', $field_info['field_name']); ?> </span> <?php } ?> <?php } } else { ?> <span class="field_type">…</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">"<?php echo !empty($robot_info['robot_quotes']['battle_taunt']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_taunt']) : '…'; ?> "</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']; ?> '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 = '•'; //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']; ?> '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">"<?php echo !empty($robot_info['robot_quotes']['battle_start']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_start']) : '…'; ?> "</span> </td> </tr> <tr> <td class="right"> <label>Taunt Quote : </label> <span class="robot_quote">"<?php echo !empty($robot_info['robot_quotes']['battle_taunt']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_taunt']) : '…'; ?> "</span> </td> </tr> <tr> <td class="right"> <label>Victory Quote : </label> <span class="robot_quote">"<?php echo !empty($robot_info['robot_quotes']['battle_victory']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_victory']) : '…'; ?> "</span> </td> </tr> <tr> <td class="right"> <label>Defeat Quote : </label> <span class="robot_quote">"<?php echo !empty($robot_info['robot_quotes']['battle_defeat']) ? str_replace($temp_find, $temp_replace, $robot_info['robot_quotes']['battle_defeat']) : '…'; ?> "</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']; ?> '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']; ?> '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"> </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']; ?> '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" > </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']; ?> '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; }
public static function save_session($user_id = 0) { // Reference global variables global $db; $session_token = self::session_token(); $mmrpg_index_players = rpg_player::get_index(); // Do NOT load, save, or otherwise alter the game file while viewing remote if (defined('MMRPG_REMOTE_GAME')) { return true; } // Collect or update the user ID in the session if (empty($user_id) && isset($_SESSION[$session_token]['USER']['userid'])) { $user_id = $_SESSION[$session_token]['USER']['userid']; } else { $_SESSION[$session_token]['USER']['userid'] = $user_id; } // Update the last saved value $_SESSION[$session_token]['values']['last_save'] = time(); // If this is NOT demo mode, load from database if (empty($_SESSION[$session_token]['DEMO'])) { // UPDATE DATABASE INFO // Collect the save info $save = $_SESSION[$session_token]; $this_user = $save['USER']; $this_cache_date = !empty($save['CACHE_DATE']) ? $save['CACHE_DATE'] : MMRPG_CONFIG_CACHE_DATE; $this_counters = !empty($save['counters']) ? $save['counters'] : array(); $this_values = !empty($save['values']) ? $save['values'] : array(); $this_flags = !empty($save['flags']) ? $save['flags'] : array(); $this_settings = !empty($save['battle_settings']) ? $save['battle_settings'] : array(); $this_stars = !empty($save['values']['battle_stars']) ? $save['values']['battle_stars'] : array(); unset($save); // Collect this user's ID from the database if not set if (empty($user_id)) { // Generate new user, save, and board IDs for this listing $temp_user_id = $db->get_value('SELECT MAX(user_id) AS user_id FROM mmrpg_users WHERE user_id < ' . MMRPG_SETTINGS_GUEST_ID, 'user_id') + 1; $temp_save_id = $db->get_value('SELECT MAX(save_id) AS save_id FROM mmrpg_saves', 'save_id') + 1; $temp_board_id = $db->get_value('SELECT MAX(board_id) AS board_id FROM mmrpg_leaderboard', 'board_id') + 1; // Generate the USER details for import $temp_user_array = array(); $temp_user_array['user_id'] = $temp_user_id; $temp_user_array['role_id'] = isset($this_user['roleid']) ? $this_user['roleid'] : 3; $temp_user_array['user_name'] = $this_user['username']; $temp_user_array['user_name_clean'] = $this_user['username_clean']; $temp_user_array['user_name_public'] = !empty($this_user['displayname']) ? $this_user['displayname'] : ''; $temp_user_array['user_password'] = $this_user['password']; $temp_user_array['user_password_encoded'] = $this_user['password_encoded']; $temp_user_array['user_profile_text'] = !empty($this_user['profiletext']) ? $this_user['profiletext'] : ''; $temp_user_array['user_credit_text'] = !empty($this_user['creditstext']) ? $this_user['creditstext'] : ''; $temp_user_array['user_credit_line'] = !empty($this_user['creditsline']) ? $this_user['creditsline'] : ''; $temp_user_array['user_image_path'] = !empty($this_user['imagepath']) ? $this_user['imagepath'] : ''; $temp_user_array['user_background_path'] = !empty($this_user['backgroundpath']) ? $this_user['backgroundpath'] : ''; $temp_user_array['user_colour_token'] = !empty($this_user['colourtoken']) ? $this_user['colourtoken'] : ''; $temp_user_array['user_gender'] = !empty($this_user['gender']) ? $this_user['gender'] : ''; $temp_user_array['user_email_address'] = !empty($this_user['emailaddress']) ? $this_user['emailaddress'] : ''; $temp_user_array['user_website_address'] = !empty($this_user['websiteaddress']) ? $this_user['websiteaddress'] : ''; $temp_user_array['user_date_created'] = time(); $temp_user_array['user_date_accessed'] = time(); $temp_user_array['user_date_modified'] = time(); $temp_user_array['user_date_birth'] = !empty($this_user['dateofbirth']) ? $this_user['dateofbirth'] : 0; $temp_user_array['user_flag_approved'] = !empty($this_user['approved']) ? 1 : 0; // Generate the BOARD details for import $temp_board_array = array(); $temp_board_array['board_id'] = $temp_board_id; $temp_board_array['user_id'] = $temp_user_id; $temp_board_array['save_id'] = $temp_save_id; $temp_board_array['board_points'] = !empty($this_counters['battle_points']) ? $this_counters['battle_points'] : 0; $temp_board_array['board_robots'] = array(); $temp_board_array['board_battles'] = array(); $temp_board_array['board_stars'] = 0; $temp_board_array['board_stars_dr_light'] = 0; $temp_board_array['board_stars_dr_wily'] = 0; $temp_board_array['board_stars_dr_cossack'] = 0; $temp_board_array['board_abilities'] = 0; $temp_board_array['board_abilities_dr_light'] = 0; $temp_board_array['board_abilities_dr_wily'] = 0; $temp_board_array['board_abilities_dr_cossack'] = 0; $temp_board_array['board_missions'] = 0; $temp_board_array['board_missions_dr_light'] = 0; $temp_board_array['board_missions_dr_wily'] = 0; $temp_board_array['board_missions_dr_cossack'] = 0; $temp_board_ability_tokens = array(); if (!empty($this_values['battle_rewards'])) { //foreach ($this_values['battle_rewards'] AS $player_token => $player_array){ foreach ($mmrpg_index_players as $player_token => $player_array) { if ($player_token == 'player') { continue; } $player_reward_array = !empty($this_values['battle_rewards'][$player_token]) ? $this_values['battle_rewards'][$player_token] : array(); $player_battles_array = !empty($this_values['battle_complete'][$player_token]) ? $this_values['battle_complete'][$player_token] : array(); $player_database_token = str_replace('-', '_', $player_token); if (!empty($player_reward_array)) { $temp_board_array['board_points_' . $player_database_token] = $player_reward_array['player_points']; $temp_board_array['board_robots_' . $player_database_token] = array(); $temp_board_array['board_battles_' . $player_database_token] = array(); if (!empty($player_reward_array['player_robots'])) { foreach ($player_reward_array['player_robots'] as $robot_token => $robot_array) { $temp_token = $robot_array['robot_token']; $temp_level = !empty($robot_array['robot_level']) ? $robot_array['robot_level'] : 1; $temp_robot_info = array('robot_token' => $temp_token, $temp_level); $temp_board_array['board_robots'][] = '[' . $temp_token . ':' . $temp_level . ']'; $temp_board_array['board_robots_' . $player_database_token][] = '[' . $temp_token . ':' . $temp_level . ']'; } } if (!empty($player_reward_array['player_abilities'])) { foreach ($player_reward_array['player_abilities'] as $ability_token => $ability_array) { //if (!isset($ability_array['ability_token'])){ die('player_abilities->'.print_r($ability_array, true)); } $temp_token = !empty($ability_array['ability_token']) ? $ability_array['ability_token'] : $ability_token; $temp_board_array['board_abilities_' . $player_database_token] += 1; if (!in_array($temp_token, $temp_board_ability_tokens)) { $temp_board_array['board_abilities'] += 1; $temp_board_ability_tokens[] = $temp_token; } } } if (!empty($player_battles_array)) { foreach ($player_battles_array as $battle_token => $battle_info) { $temp_token = $battle_info['battle_token']; $temp_board_array['board_battles'][] = '[' . $temp_token . ']'; $temp_board_array['board_battles_' . $player_database_token][] = '[' . $temp_token . ']'; $temp_board_array['board_missions'] += 1; $temp_board_array['board_missions_' . $player_database_token] += 1; } } } else { $temp_board_array['board_points_' . $player_database_token] = 0; $temp_board_array['board_robots_' . $player_database_token] = array(); $temp_board_array['board_battles_' . $player_database_token] = array(); } $temp_board_array['board_robots_' . $player_database_token] = !empty($temp_board_array['board_robots_' . $player_database_token]) ? implode(',', $temp_board_array['board_robots_' . $player_database_token]) : ''; $temp_board_array['board_battles_' . $player_database_token] = !empty($temp_board_array['board_battles_' . $player_database_token]) ? implode(',', $temp_board_array['board_battles_' . $player_database_token]) : ''; } } if (!empty($this_stars)) { foreach ($this_stars as $temp_star_token => $temp_star_info) { $temp_star_player = str_replace('-', '_', $temp_star_info['star_player']); $temp_board_array['board_stars'] += 1; $temp_board_array['board_stars_' . $temp_star_player] += 1; } } $temp_board_array['board_robots'] = !empty($temp_board_array['board_robots']) ? implode(',', $temp_board_array['board_robots']) : ''; $temp_board_array['board_battles'] = !empty($temp_board_array['board_battles']) ? implode(',', $temp_board_array['board_battles']) : ''; $temp_board_array['board_date_created'] = $temp_user_array['user_date_created']; $temp_board_array['board_date_modified'] = $temp_user_array['user_date_modified']; // Generate the SAVE details for import $temp_save_array = array(); if (!empty($this_values['battle_index'])) { unset($this_values['battle_index']); } if (!empty($this_values['battle_complete'])) { $temp_save_array['save_values_battle_complete'] = json_encode($this_values['battle_complete']); $temp_hash = md5($temp_save_array['save_values_battle_complete']); if (isset($this_values['battle_complete_hash']) && $this_values['battle_complete_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_complete']); } unset($this_values['battle_complete'], $this_values['battle_complete_hash']); } if (!empty($this_values['battle_failure'])) { $temp_save_array['save_values_battle_failure'] = json_encode($this_values['battle_failure']); $temp_hash = md5($temp_save_array['save_values_battle_failure']); if (isset($this_values['battle_failure_hash']) && $this_values['battle_failure_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_failure']); } unset($this_values['battle_failure'], $this_values['battle_failure_hash']); } if (!empty($this_values['battle_rewards'])) { $temp_save_array['save_values_battle_rewards'] = json_encode($this_values['battle_rewards']); $temp_hash = md5($temp_save_array['save_values_battle_rewards']); if (isset($this_values['battle_rewards_hash']) && $this_values['battle_rewards_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_rewards']); } unset($this_values['battle_rewards'], $this_values['battle_rewards_hash']); } if (!empty($this_values['battle_settings'])) { $temp_save_array['save_values_battle_settings'] = json_encode($this_values['battle_settings']); $temp_hash = md5($temp_save_array['save_values_battle_settings']); if (isset($this_values['battle_settings_hash']) && $this_values['battle_settings_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_settings']); } unset($this_values['battle_settings'], $this_values['battle_settings_hash']); } if (!empty($this_values['battle_items'])) { $temp_save_array['save_values_battle_items'] = json_encode($this_values['battle_items']); $temp_hash = md5($temp_save_array['save_values_battle_items']); if (isset($this_values['battle_items_hash']) && $this_values['battle_items_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_items']); } unset($this_values['battle_items'], $this_values['battle_items_hash']); } if (!empty($this_values['battle_stars'])) { $temp_save_array['save_values_battle_stars'] = json_encode($this_values['battle_stars']); $temp_hash = md5($temp_save_array['save_values_battle_stars']); if (isset($this_values['battle_stars_hash']) && $this_values['battle_stars_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_stars']); } unset($this_values['battle_stars'], $this_values['battle_stars_hash']); } if (!empty($this_values['robot_database'])) { $temp_save_array['save_values_robot_database'] = json_encode($this_values['robot_database']); $temp_hash = md5($temp_save_array['save_values_robot_database']); if (isset($this_values['robot_database_hash']) && $this_values['robot_database_hash'] == $temp_hash) { unset($temp_save_array['save_values_robot_database']); } unset($this_values['robot_database'], $this_values['robot_database_hash']); } $temp_save_array['save_id'] = $temp_save_id; $temp_save_array['user_id'] = $temp_user_id; $temp_save_array['save_counters'] = json_encode($this_counters); $temp_save_array['save_values'] = json_encode($this_values); $temp_save_array['save_flags'] = json_encode($this_flags); $temp_save_array['save_settings'] = json_encode($this_settings); $temp_save_array['save_cache_date'] = $this_cache_date; $temp_save_array['save_file_name'] = $this_file['name']; $temp_save_array['save_file_path'] = $this_file['path']; $temp_save_array['save_date_created'] = $temp_user_array['user_date_created']; $temp_save_array['save_date_accessed'] = $temp_user_array['user_date_accessed']; $temp_save_array['save_date_modified'] = $temp_user_array['user_date_modified']; // Insert these users into the database $temp_user_array_return = $db->insert('mmrpg_users', $temp_user_array); $temp_save_array_return = $db->insert('mmrpg_saves', $temp_save_array); $temp_board_array_return = $db->insert('mmrpg_leaderboard', $temp_board_array); unset($temp_user_array, $temp_save_array, $temp_board_array); // Update the ID in the user array and continue $this_user['userid'] = $temp_user_id; $user_id = $temp_user_id; } // DEBUG $DEBUG = ''; // Define the user database update array and populate $temp_user_array = array(); $temp_user_array['user_name'] = $this_user['username']; $temp_user_array['user_name_clean'] = $this_user['username_clean']; $temp_user_array['user_name_public'] = !empty($this_user['displayname']) ? $this_user['displayname'] : ''; $temp_user_array['user_password'] = $this_user['password']; $temp_user_array['user_password_encoded'] = $this_user['password_encoded']; $temp_user_array['user_profile_text'] = !empty($this_user['profiletext']) ? $this_user['profiletext'] : ''; $temp_user_array['user_credit_text'] = !empty($this_user['creditstext']) ? $this_user['creditstext'] : ''; $temp_user_array['user_credit_line'] = !empty($this_user['creditsline']) ? $this_user['creditsline'] : ''; $temp_user_array['user_image_path'] = !empty($this_user['imagepath']) ? $this_user['imagepath'] : ''; $temp_user_array['user_background_path'] = !empty($this_user['backgroundpath']) ? $this_user['backgroundpath'] : ''; $temp_user_array['user_colour_token'] = !empty($this_user['colourtoken']) ? $this_user['colourtoken'] : ''; $temp_user_array['user_gender'] = !empty($this_user['gender']) ? $this_user['gender'] : ''; $temp_user_array['user_email_address'] = !empty($this_user['emailaddress']) ? $this_user['emailaddress'] : ''; $temp_user_array['user_website_address'] = !empty($this_user['websiteaddress']) ? $this_user['websiteaddress'] : ''; $temp_user_array['user_date_modified'] = time(); $temp_user_array['user_date_accessed'] = time(); $temp_user_array['user_date_birth'] = !empty($this_user['dateofbirth']) ? $this_user['dateofbirth'] : 0; $temp_user_array['user_flag_approved'] = !empty($this_user['approved']) ? 1 : 0; // Update this user's info in the database $db->update('mmrpg_users', $temp_user_array, 'user_id = ' . $this_user['userid']); unset($temp_user_array); // DEBUG //$DEBUG .= '$db->update(\'mmrpg_users\', $temp_user_array, \'user_id = \'.$this_user[\'userid\']);'; //$DEBUG .= '<pre>$temp_user_array = '.print_r($temp_user_array, true).'</pre>'; //$DEBUG .= '<pre>$this_user = '******'</pre>'; // Define the board database update array and populate $temp_board_array = array(); $temp_board_array['board_points'] = !empty($this_counters['battle_points']) ? $this_counters['battle_points'] : 0; $temp_board_array['board_robots'] = array(); $temp_board_array['board_battles'] = array(); $temp_board_array['board_stars'] = 0; $temp_board_array['board_stars_dr_light'] = 0; $temp_board_array['board_stars_dr_wily'] = 0; $temp_board_array['board_stars_dr_cossack'] = 0; $temp_board_array['board_abilities'] = 0; $temp_board_array['board_abilities_dr_light'] = 0; $temp_board_array['board_abilities_dr_wily'] = 0; $temp_board_array['board_abilities_dr_cossack'] = 0; $temp_board_array['board_missions'] = 0; $temp_board_array['board_missions_dr_light'] = 0; $temp_board_array['board_missions_dr_wily'] = 0; $temp_board_array['board_missions_dr_cossack'] = 0; $temp_board_array['board_awards'] = !empty($this_values['prototype_awards']) ? array_keys($this_values['prototype_awards']) : ''; $temp_board_ability_tokens = array(); if (!empty($this_values['battle_rewards'])) { //foreach ($this_values['battle_rewards'] AS $player_token => $player_array){ foreach ($mmrpg_index_players as $player_token => $player_array) { if ($player_token == 'player' || !self::player_unlocked($player_token)) { continue; } $player_reward_array = !empty($this_values['battle_rewards'][$player_token]) ? $this_values['battle_rewards'][$player_token] : array(); $player_battles_array = !empty($this_values['battle_complete'][$player_token]) ? $this_values['battle_complete'][$player_token] : array(); $player_database_token = str_replace('-', '_', $player_token); if (!empty($player_reward_array)) { $temp_board_array['board_points_' . $player_database_token] = !empty($player_reward_array['player_points']) ? $player_reward_array['player_points'] : 0; $temp_board_array['board_robots_' . $player_database_token] = array(); $temp_board_array['board_battles_' . $player_database_token] = array(); if (!empty($player_reward_array['player_robots'])) { foreach ($player_reward_array['player_robots'] as $robot_token => $robot_array) { //if (!isset($robot_array['robot_token'])){ die('player_robots->'.print_r($robot_array, true)); } $temp_token = !empty($robot_array['robot_token']) ? $robot_array['robot_token'] : $robot_token; $temp_level = !empty($robot_array['robot_level']) ? $robot_array['robot_level'] : 1; $temp_robot_info = array('robot_token' => $temp_token, $temp_level); $temp_board_array['board_robots'][] = '[' . $temp_token . ':' . $temp_level . ']'; $temp_board_array['board_robots_' . $player_database_token][] = '[' . $temp_token . ':' . $temp_level . ']'; } } if (!empty($player_reward_array['player_abilities'])) { foreach ($player_reward_array['player_abilities'] as $ability_token => $ability_array) { //if (!isset($ability_array['ability_token'])){ die('player_abilities->'.print_r($ability_array, true)); } $temp_token = !empty($ability_array['ability_token']) ? $ability_array['ability_token'] : $ability_token; $temp_board_array['board_abilities_' . $player_database_token] += 1; if (!in_array($temp_token, $temp_board_ability_tokens)) { $temp_board_array['board_abilities'] += 1; $temp_board_ability_tokens[] = $temp_token; } } } if (!empty($player_battles_array)) { foreach ($player_battles_array as $battle_token => $battle_info) { $temp_token = $battle_info['battle_token']; $temp_board_array['board_battles'][] = '[' . $temp_token . ']'; $temp_board_array['board_battles_' . $player_database_token][] = '[' . $temp_token . ']'; $temp_board_array['board_missions'] += 1; $temp_board_array['board_missions_' . $player_database_token] += 1; } } } else { $temp_board_array['board_points_' . $player_database_token] = 0; $temp_board_array['board_robots_' . $player_database_token] = array(); $temp_board_array['board_battles_' . $player_database_token] = array(); } $temp_board_array['board_robots_' . $player_database_token] = !empty($temp_board_array['board_robots_' . $player_database_token]) ? implode(',', $temp_board_array['board_robots_' . $player_database_token]) : ''; $temp_board_array['board_battles_' . $player_database_token] = !empty($temp_board_array['board_battles_' . $player_database_token]) ? implode(',', $temp_board_array['board_battles_' . $player_database_token]) : ''; } } if (!empty($this_stars)) { foreach ($this_stars as $temp_star_token => $temp_star_info) { $temp_star_player = str_replace('-', '_', $temp_star_info['star_player']); $temp_board_array['board_stars'] += 1; $temp_board_array['board_stars_' . $temp_star_player] += 1; } } //$temp_board_array['board_robots'] = json_encode($temp_board_array['board_robots']); $temp_board_array['board_robots'] = !empty($temp_board_array['board_robots']) ? implode(',', $temp_board_array['board_robots']) : ''; $temp_board_array['board_battles'] = !empty($temp_board_array['board_battles']) ? implode(',', $temp_board_array['board_battles']) : ''; $temp_board_array['board_awards'] = !empty($temp_board_array['board_awards']) ? implode(',', $temp_board_array['board_awards']) : ''; $temp_board_array['board_date_modified'] = time(); // Update this board's info in the database $db->update('mmrpg_leaderboard', $temp_board_array, 'user_id = ' . $this_user['userid']); unset($temp_board_array); // Clear any leaderboard data that exists in the session, forcing it to recache if (isset($_SESSION[$session_token]['BOARD']['boardrank'])) { unset($_SESSION[$session_token]['BOARD']['boardrank']); } // Define the save database update array and populate $temp_save_array = array(); if (!empty($this_values['battle_index'])) { ////foreach ($this_values['battle_index'] AS $key => $array){ $this_values['battle_index'][$key] = json_decode($array, true); } ////$temp_save_array['save_values_battle_index'] = json_encode($this_values['battle_index']); ////$temp_hash = md5($temp_save_array['save_values_battle_index']); ////if (isset($this_values['battle_index_hash']) && $this_values['battle_index_hash'] == $temp_hash){ unset($temp_save_array['save_values_battle_index']); } //unset($this_values['battle_index'], $this_values['battle_index_hash']); unset($this_values['battle_index']); } if (!empty($this_values['battle_complete'])) { $temp_save_array['save_values_battle_complete'] = json_encode($this_values['battle_complete']); $temp_hash = md5($temp_save_array['save_values_battle_complete']); if (isset($this_values['battle_complete_hash']) && $this_values['battle_complete_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_complete']); } unset($this_values['battle_complete'], $this_values['battle_complete_hash']); } if (!empty($this_values['battle_failure'])) { $temp_save_array['save_values_battle_failure'] = json_encode($this_values['battle_failure']); $temp_hash = md5($temp_save_array['save_values_battle_failure']); if (isset($this_values['battle_failure_hash']) && $this_values['battle_failure_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_failure']); } unset($this_values['battle_failure'], $this_values['battle_failure_hash']); } if (!empty($this_values['battle_rewards'])) { $temp_save_array['save_values_battle_rewards'] = json_encode($this_values['battle_rewards']); $temp_hash = md5($temp_save_array['save_values_battle_rewards']); if (isset($this_values['battle_rewards_hash']) && $this_values['battle_rewards_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_rewards']); } unset($this_values['battle_rewards'], $this_values['battle_rewards_hash']); } if (!empty($this_values['battle_settings'])) { $temp_save_array['save_values_battle_settings'] = json_encode($this_values['battle_settings']); $temp_hash = md5($temp_save_array['save_values_battle_settings']); if (isset($this_values['battle_settings_hash']) && $this_values['battle_settings_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_settings']); } unset($this_values['battle_settings'], $this_values['battle_settings_hash']); } if (!empty($this_values['battle_items'])) { $temp_save_array['save_values_battle_items'] = json_encode($this_values['battle_items']); $temp_hash = md5($temp_save_array['save_values_battle_items']); if (isset($this_values['battle_items_hash']) && $this_values['battle_items_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_items']); } unset($this_values['battle_items'], $this_values['battle_items_hash']); } if (!empty($this_values['battle_stars'])) { $temp_save_array['save_values_battle_stars'] = json_encode($this_values['battle_stars']); $temp_hash = md5($temp_save_array['save_values_battle_stars']); if (isset($this_values['battle_stars_hash']) && $this_values['battle_stars_hash'] == $temp_hash) { unset($temp_save_array['save_values_battle_stars']); } unset($this_values['battle_stars'], $this_values['battle_stars_hash']); } if (!empty($this_values['robot_database'])) { $temp_save_array['save_values_robot_database'] = json_encode($this_values['robot_database']); $temp_hash = md5($temp_save_array['save_values_robot_database']); if (isset($this_values['robot_database_hash']) && $this_values['robot_database_hash'] == $temp_hash) { unset($temp_save_array['save_values_robot_database']); } unset($this_values['robot_database'], $this_values['robot_database_hash']); } $temp_save_array['save_counters'] = json_encode($this_counters); $temp_save_array['save_values'] = json_encode($this_values); $temp_save_array['save_flags'] = json_encode($this_flags); $temp_save_array['save_settings'] = json_encode($this_settings); $temp_save_array['save_cache_date'] = $this_cache_date; $temp_save_array['save_date_modified'] = time(); // Update this save's info in the database $db->update('mmrpg_saves', $temp_save_array, 'user_id = ' . $this_user['userid']); unset($temp_save_array); // DEBUG //$DEBUG .= '$db->update(\'mmrpg_saves\', $temp_save_array, \'user_id = \'.$this_user[\'userid\']);'; //$DEBUG .= '<pre>$temp_save_array = '.print_r($temp_save_array, true).'</pre>'; //$DEBUG .= '<pre>$this_user = '******'</pre>'; // DEBUG //$DEBUG .= '$db->update(\'mmrpg_leaderboard\', $temp_board_array, \'user_id = \'.$this_user[\'userid\']);'; //$DEBUG .= '<pre>$temp_board_array = '.print_r($temp_board_array, true).'</pre>'; //$DEBUG .= '<pre>$this_user = '******'</pre>'; } else { // DEBUG //echo 'but we\'re in demo mode'; } // Pull the updated user info from the database $user_fields = rpg_user::get_fields(true, 'user'); $user_role_fields = rpg_user_role::get_fields(true, 'role'); $this_userinfo = $db->get_array("SELECT\n {$user_fields}, {$user_role_fields}\n FROM mmrpg_users AS user\n LEFT JOIN mmrpg_roles AS role ON role.role_id = user.role_id\n WHERE user.user_id = '{$user_id}'\n LIMIT 1"); // Update the session with the new user info $_SESSION['GAME']['USER']['userinfo'] = $this_userinfo; // Return true on success return true; }