public static function formatting_decode($string) { // Define the static formatting array variable static $mmrpg_formatting_array = array(); static $mmrpg_types_array_string = ''; // If the formatting array has not been populated, do so if (empty($mmrpg_formatting_array)) { // Pull in global variables global $db; $mmrpg_types = rpg_type::get_index(); // Collect the types array from the index $mmrpg_types_array = array_keys($mmrpg_types); $mmrpg_types_array_string = implode('|', $mmrpg_types_array); $mmrpg_types_array_string .= '|neutral'; //die($mmrpg_types_array_string); // Collect the robot and ability index from the database $temp_robots_index = $db->get_array_list("SELECT * FROM mmrpg_index_robots WHERE robot_flag_complete = 1;", 'robot_token'); $temp_abilities_index = $db->get_array_list("SELECT * FROM mmrpg_index_abilities WHERE ability_flag_complete = 1;", 'ability_token'); // Define the array to hold the images of larger size than default $mmrpg_large_robot_images = array(); $mmrpg_large_ability_images = array(); // Loop through robots and abilities and collect tokens of large ones if (!empty($temp_robots_index)) { foreach ($temp_robots_index as $token => $info) { if ($info['robot_image_size'] == 80) { $mmrpg_large_robot_images[] = $info['robot_token']; } } } if (!empty($temp_abilities_index)) { foreach ($temp_abilities_index as $token => $info) { if ($info['ability_image_size'] == 80) { $mmrpg_large_ability_images[] = $info['ability_token']; } } } // Create strings for the large robot and ability patterns by imploding the arrays $mmrpg_large_robot_images_string = implode('|', $mmrpg_large_robot_images); $mmrpg_large_ability_images_string = implode('|', $mmrpg_large_ability_images); // Pull in the global index formatting variables $mmrpg_formatting_array = array(); $mmrpg_formatting_array += array('/\\[code\\]\\s?(.*?)\\s?\\[\\/code\\]/is' => '$1'); $mmrpg_formatting_array += array('/\\[tab\\]/i' => ' ', '/\\s{2,}[-]{5,}\\s{2,}/i' => '<hr class="line_divider line_divider_bigger" />', '/\\s?[-]{5,}\\s?/i' => '<hr class="line_divider" />', '/\\s\\|\\s/i' => ' <span class="pipe">|</span> '); $mmrpg_formatting_array += array('/\\[image\\]\\((.*?).(jpg|jpeg|gif|png|bmp)\\)/i' => '<span class="link_image_inline"><img src="$1.$2" /></span>'); $mmrpg_formatting_array += array('/\\[player\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/players/$1/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[player:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/players/$2/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[player:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/players/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[player:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/players/$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[player:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/players/$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[player:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/players/$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[player:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/players/$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[player:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/players/$3/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[player:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/players/$3/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[robot\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span data-test="1" class="sprite_image sprite_image_80x80"><img src="images/sprites/robots/$1_$2/mug_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[robot:(left|right)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span data-test="2" class="sprite_image sprite_image_80x80"><img src="images/sprites/robots/$2_$3/mug_$1_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[robot:(left|right):([a-z0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span data-test="3" class="sprite_image sprite_image_80x80 sprite_image_80x80_$2"><span><img src="images/sprites/robots/$3_$4/sprite_$1_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5_$6/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5_$6/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4_$5/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4_$5/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3_$4/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3_$4/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$1_$2/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[robot:(left|right)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$2_$3/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[robot:(left|right):([a-z0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/robots/$3_$4/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5_$6/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5_$6/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4_$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4_$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3_$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+)\\]\\{([-a-z0-9]+)_([-_a-z0-9]+)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3_$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80"><img src="images/sprites/robots/$1/mug_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[robot:(left|right)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80"><img src="images/sprites/robots/$2/mug_$1_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[robot:(left|right):([a-z0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$2"><span><img src="images/sprites/robots/$3/sprite_$1_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3/sprite_left_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(' . $mmrpg_large_robot_images_string . ')\\}/i' => '<span class="sprite_image sprite_image_80x80 sprite_image_80x80_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3/sprite_right_80x80.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$1/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[robot:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$2/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[robot:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/robots/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:(left|right):([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2" style="left: $3px; bottom: $4px; z-index: $5; transform: rotate($6deg);"><span><img src="images/sprites/robots/$7/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$7" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[robot:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[robot:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[mecha\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$1/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[mecha:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$2/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[mecha:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/robots/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[mecha:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[mecha:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[mecha:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[mecha:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[mecha:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[mecha:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[boss\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$1/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[boss:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/robots/$2/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[boss:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/robots/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[boss:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[boss:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/robots/$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[boss:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[boss:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/robots/$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[boss:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/robots/$3/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[boss:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/robots/$3/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[ability\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/abilities/$1/mug_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[ability:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/abilities/$2/mug_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[ability:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/abilities/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[ability:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/abilities/$5/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[ability:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px; z-index: $4;"><span><img src="images/sprites/abilities/$5/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$5" /></span></span>', '/\\[ability:left:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px; bottom: $3px;"><span><img src="images/sprites/abilities/$4/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[ability:right:([a-z0-9]+):(-?[0-9]+),(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px; bottom: $3px;"><span><img src="images/sprites/abilities/$4/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$4" /></span></span>', '/\\[ability:left:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="right: $2px;"><span><img src="images/sprites/abilities/$3/sprite_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>', '/\\[ability:right:([a-z0-9]+):(-?[0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$1" style="left: $2px;"><span><img src="images/sprites/abilities/$3/sprite_right_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[item\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/abilities/item-$1/icon_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[item:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/abilities/item-$2/icon_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[item:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/abilities/item-$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[shop\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/shops/$1/icon_left_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$1" /></span>', '/\\[shop:(left|right)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40"><img src="images/sprites/shops/$2/icon_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$2" /></span>', '/\\[shop:(left|right):([a-z0-9]+)\\]\\{(.*?)\\}/i' => '<span class="sprite_image sprite_image_40x40 sprite_image_40x40_$2"><span><img src="images/sprites/shops/$3/sprite_$1_40x40.png?' . MMRPG_CONFIG_CACHE_DATE . '" alt="$3" /></span></span>'); $mmrpg_formatting_array += array('/\\[sprite\\]/i' => '<span class="sprite_image sprite_image_40x40"></span>'); $mmrpg_formatting_array += array('/\\[([^\\[\\]]+)\\]\\((.*?).(jpg|jpeg|gif|png|bmp)\\:text\\)/i' => '<a class="link_inline" href="$2.$3" target="_blank">$1</a>', '/\\[([^\\[\\]]+)\\]\\((.*?).(jpg|jpeg|gif|png|bmp)\\:image\\)/i' => '<a class="link_image_inline" href="$2.$3" target="_blank"><img src="$2.$3" alt="$1" title="$1" /></a>'); } //die('<pre>$mmrpg_formatting_array = '.print_r($mmrpg_formatting_array, true).'</pre>'); // -- REPLACE CODE BLOCKS -- // // Define the newline string $nl = "\n"; // Strip any illegal HTML from the string $string = strip_tags($string); $string = preg_replace('/\\[\\/code\\]\\[\\/code\\]/i', '[/code][/code]', $string); //$string = preg_replace('/\s+/', ' ', $string); // Loop through each find, and replace with the appropriate replacement $code_matches = array(); $has_code = preg_match_all('/\\[code\\]\\s?(.*?)\\s?\\[\\/code\\]/is', $string, $code_matches); //if ($has_code){ echo('<pre style="background-color: white; clear: both; width: 100%; white-space: normal; color: #000000; margin: 0 auto 20px;">$code_matches = '.print_r($code_matches[0], true).'</pre>'); } if ($has_code) { foreach ($code_matches[0] as $key => $match) { $string = str_replace($match, '##CODE' . $key . '##', $string); } } //if ($has_code){ echo('<pre style="background-color: white; clear: both; width: 100%; white-space: normal; color: #000000; margin: 0 auto 20px;">$string = '.print_r($string, true).'</pre>'); } // -- REPLACE STANDARD FORMATTING -- // // Replace all the other, inline formatting with its markup foreach ($mmrpg_formatting_array as $find_pattern => $replace_pattern) { $string = preg_replace($find_pattern, $replace_pattern, $string); } // Start off the count variable for later $count = 0; // Replace special types of line breaks with one single type //$string = str_replace("\r\n", "\n", $string); $string = str_replace("\r\n", "\n", $string); // -- REPLACE IMAGES -- // // Recusively replace all the size spans with their span markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\((.*?).(jpg|jpeg|gif|png|bmp)\\)/i', '<a class="link_image_inline" href="$2.$3" target="_blank"><img src="$2.$3" alt="$1" title="$1" /></a>', $string, -1, $count); } while ($count > 0); // -- REPLACE LINKS -- // // Recusively replace all the standard text links with their markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\((.*?)\\)/i', '<a class="link_inline" href="$2" target="_blank">$1</a>', $string, -1, $count); } while ($count > 0); // -- REPLACE BBCODE BLOCKS/SPANS -- // // Recusively replace all the BOLD blocks with their div markup do { $string = preg_replace('/\\[b\\](.*?)\\[\\/b\\]/is', '<strong class="bold">$1</strong>', $string, -1, $count); } while ($count > 0); // Recusively replace all the ITALIC blocks with their div markup do { $string = preg_replace('/\\[i\\](.*?)\\[\\/i\\]/is', '<em class="italic">$1</em>', $string, -1, $count); } while ($count > 0); // Recusively replace all the UNDERLINE blocks with their div markup do { $string = preg_replace('/\\[u\\](.*?)\\[\\/u\\]/is', '<span class="underline">$1</span>', $string, -1, $count); } while ($count > 0); // Recusively replace all the STRIKE blocks with their div markup do { $string = preg_replace('/\\[s\\](.*?)\\[\\/s\\]/is', '<span class="strike">$1</span>', $string, -1, $count); } while ($count > 0); // -- REPLACE TYPE/COLOR/SIZE SPANS -- // // Recusively replace all the dual type spans with their span markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\{(' . $mmrpg_types_array_string . ')_(' . $mmrpg_types_array_string . ')\\}/i', '<span class="type type_span type_$2_$3">$1</span>', $string, -1, $count); } while ($count > 0); // Recusively replace all the single type spans with their span markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\{(' . $mmrpg_types_array_string . ')\\}/i', '<span class="type type_span type_$2">$1</span>', $string, -1, $count); } while ($count > 0); // Recusively replace all the size spans with their span markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\{(small|medium|large)\\}/i', '<span class="size_$2">$1</span>', $string, -1, $count); } while ($count > 0); // Recusively replace all the colour(hex) spans with their span markup do { $string = preg_replace('/\\[([^\\[\\]]+)\\]\\{(#[a-f0-9]{6}|[a-z]+|rgb\\([0-9]+,[0-9]+,[0-9]+\\)|rgba\\([0-9]+,[0-9]+,[0-9]+,[.0-9]+\\)|[a-z]+)\\}/i', '<span class="colour_inline" style="color: $2;">$1</span>', $string, -1, $count); } while ($count > 0); // -- REPLACE BACKGROUND BLOCKS -- // // Replace background blocks code with relavant markup [background-name:posx,posy:width,height][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/background(?:-\\1)?(?:-\\2)\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-position: $2 $3; width: $4; height: $5; background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$6</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background-name:posx,posy:width][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/background(?:-\\1)?(?:-\\2)\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-position: $2 $3; width: $4; background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$5</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background-name:posx,posy][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)\\](.*?)\\[\\/background(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-position: $2 $3; background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$4</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background-name:posy][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(top|bottom)\\](.*?)\\[\\/background(?:-\\1)(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-position: center $2; background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$3</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background-name:posx][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px)\\](.*?)\\[\\/background(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-position: $2 center; background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$3</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background-name][/background] do { $string = preg_replace('/\\s?\\[background(?:-|=|\\:)([-_a-z0-9]+)\\](.*?)\\[\\/background(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_background" style="background-image: url(images/sprites/fields/$1/battle-field_background_base.gif?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$2</div></div>', $string, -1, $count); } while ($count > 0); // Replace background blocks code with relavant markup [background][/background] do { $string = preg_replace('/\\s?\\[background\\](.*?)\\[\\/background\\]\\s?/is', '<div class="field field_panel field_panel_background"><div class="wrap">$1</div></div>', $string, -1, $count); } while ($count > 0); // -- REPLACE FOREGROUND BLOCKS -- // // Replace foreground blocks code with relavant markup [foreground-name:posx,posy:width,height][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-position: $2 $3; width: $4; height: $5; background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$6</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground-name:posx,posy:width][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-position: $2 $3; width: $4; background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$5</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground-name:posx,posy][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px),(top|bottom|center|[0-9]+%|[0-9]+px)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-position: $2 $3; background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$4</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground-name:posy][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(top|bottom)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-position: center $2; background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$3</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground-name:posx][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)(?:-|=|\\:)(left|right|center|[0-9]+%|[0-9]+px)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-position: $2 center; background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$3</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground-name][/foreground] do { $string = preg_replace('/\\s?\\[foreground(?:-|=|\\:)([-_a-z0-9]+)\\](.*?)\\[\\/foreground(?:-\\1)?(?:-\\2)?\\]\\s?/is', '<div class="field field_panel field_panel_foreground" style="background-image: url(images/sprites/fields/$1/battle-field_foreground_base.png?' . MMRPG_CONFIG_CACHE_DATE . ');"><div class="wrap">$2</div></div>', $string, -1, $count); } while ($count > 0); // Replace foreground blocks code with relavant markup [foreground][/foreground] do { $string = preg_replace('/\\s?\\[foreground\\](.*?)\\[\\/foreground\\]\\s?/is', '<div class="field field_panel field_panel_foreground"><div class="wrap">$1</div></div>', $string, -1, $count); } while ($count > 0); // Replace float blocks code with relavant markup [layer][/layer] //do { $string = preg_replace('/\s?\[layer\](.*?)\[\/layer\]\s?/is', '<div class="layer">$1</div>', $string, -1, $count); } //while ($count > 0); // -- REPLACE LAYER WRAPPERS -- // // Replace layer wrappers code with relavant markup [layer][/layer] do { $string = preg_replace('/\\s?\\[layer(?:-|=|\\:)([0-9]+)%\\](.*?)\\[\\/layer\\]\\s?/is', '<div class="layer" style="opacity: 0.$1;">$2</div>', $string, -1, $count); } while ($count > 0); // Replace layer wrappers code with relavant markup [layer][/layer] do { $string = preg_replace('/\\s?\\[layer\\](.*?)\\[\\/layer\\]\\s?/is', '<div class="layer">$1</div>', $string, -1, $count); } while ($count > 0); // -- REPLACE TYPE BLOCKS -- // // Replace type blocks code with relavant markup [type-name:width,height][/type] do { $string = preg_replace('/\\s?\\[type(?:-|=|\\:)([_a-z]+)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/type(?:-\\1)?\\]\\s?/is', '<div class="type type_panel type_$1" style="width: $2; height: $3;">$4</div>', $string, -1, $count); } while ($count > 0); // Replace type blocks code with relavant markup [type-name:width][/type] do { $string = preg_replace('/\\s?\\[type(?:-|=|\\:)([_a-z]+)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/type(?:-\\1)?\\]\\s?/is', '<div class="type type_panel type_$1" style="width: $2;">$3</div>', $string, -1, $count); } while ($count > 0); // Replace type blocks code with relavant markup [type-name][/type] do { $string = preg_replace('/\\s?\\[type(?:-|=|\\:)([_a-z]+)\\](.*?)\\[\\/type(?:-\\1)?\\]\\s?/is', '<div class="type type_panel type_$1">$2</div>', $string, -1, $count); } while ($count > 0); // Replace type blocks code with relavant markup [type][/type] do { $string = preg_replace('/\\s?\\[type\\](.*?)\\[\\/type\\]\\s?/is', '<div class="type type_panel type_none">$1</div>', $string, -1, $count); } while ($count > 0); // -- REPLACE COLOUR BLOCKS/SPANS -- // // Replace colour blocks code with relavant markup [color-value:width,height][/color] do { $string = preg_replace('/\\s?\\[color(?:-|=|\\:)(#[a-f0-9]{6}|[a-z]+|rgb\\([0-9]+,[0-9]+,[0-9]+\\)|rgba\\([0-9]+,[0-9]+,[0-9]+,[.0-9]+\\)|[a-z]+)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/color(?:-\\1)?\\]\\s?/is', '<div class="colour_panel" style="color: $1; width: $2; height: $3;">$4</div>', $string, -1, $count); } while ($count > 0); // Replace colour blocks code with relavant markup [color-value:width][/color] do { $string = preg_replace('/\\s?\\[color(?:-|=|\\:)(#[a-f0-9]{6}|[a-z]+|rgb\\([0-9]+,[0-9]+,[0-9]+\\)|rgba\\([0-9]+,[0-9]+,[0-9]+,[.0-9]+\\)|[a-z]+)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/color(?:-\\1)?\\]\\s?/is', '<div class="colour_panel" style="color: $1; width: $2;">$3</div>', $string, -1, $count); } while ($count > 0); // Replace colour blocks code with relavant markup [color-value][/color] do { $string = preg_replace('/\\s?\\[color(?:-|=|\\:)(#[a-f0-9]{6}|[a-z]+|rgb\\([0-9]+,[0-9]+,[0-9]+\\)|rgba\\([0-9]+,[0-9]+,[0-9]+,[.0-9]+\\)|[a-z]+)\\](.*?)\\[\\/color(?:-\\1)?\\]\\s?/is', '<div class="colour_panel" style="color: $1;">$2</div>', $string, -1, $count); } while ($count > 0); // Replace colour blocks code with relavant markup [color][/color] do { $string = preg_replace('/\\s?\\[color\\](.*?)\\[\\/color\\]\\s?/is', '<div class="colour_panel" style="color: #FFFFFF;">$1</div>', $string, -1, $count); } while ($count > 0); // -- REPLACE SIZE BLOCKS -- // // Replace size blocks code with relavant markup [size-keyword:width,height][/size] do { $string = preg_replace('/\\s?\\[size(?:-|=|\\:)(small|medium|large)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/size(?:-\\1)?\\]\\s?/is', '<div class="size_$1" style="width: $2; height: $3;">$4</div>', $string, -1, $count); } while ($count > 0); // Replace size blocks code with relavant markup [size-keyword:width][/size] do { $string = preg_replace('/\\s?\\[size(?:-|=|\\:)(small|medium|large)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/size(?:-\\1)?\\]\\s?/is', '<div class="size_$1" style="width: $2;">$3</div>', $string, -1, $count); } while ($count > 0); // Replace size blocks code with relavant markup [size-keyword][/size] do { $string = preg_replace('/\\s?\\[size(?:-|=|\\:)(small|medium|large)\\](.*?)\\[\\/size(?:-\\1)?\\]\\s?/is', '<div class="size_$1">$2</div>', $string, -1, $count); } while ($count > 0); // Replace size blocks code with relavant markup [size][/size] do { $string = preg_replace('/\\s?\\[size\\](.*?)\\[\\/size\\]\\s?/is', '<div class="size_medium">$1</div>', $string, -1, $count); } while ($count > 0); // -- REPLACE ALIGN BLOCKS -- // // Replace align blocks code with relavant markup [align-direction:width,height][/align] do { $string = preg_replace('/\\s?\\[align(?:-|=)(left|right|center)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/align(?:-\\1)?\\]\\s?/is', '<div class="align_$1" style="width: $2; height: $3;">$4</div>', $string, -1, $count); } while ($count > 0); // Replace align blocks code with relavant markup [align-direction:width][/align] do { $string = preg_replace('/\\s?\\[align(?:-|=)(left|right|center)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/align(?:-\\1)?\\]\\s?/is', '<div class="align_$1" style="width: $2;">$3</div>', $string, -1, $count); } while ($count > 0); // Replace align blocks code with relavant markup [align-direction][/align] do { $string = preg_replace('/\\s?\\[align(?:-|=)(left|right|center)\\](.*?)\\[\\/align(?:-\\1)?\\]\\s?/is', '<div class="align_$1">$2</div>', $string, -1, $count); } while ($count > 0); // Replace align blocks code with relavant markup [align][/align] do { $string = preg_replace('/\\s?\\[align\\](.*?)\\[\\/align\\]\\s?/is', '<div class="align_left">$1</div>', $string, -1, $count); } while ($count > 0); // -- REPLACE FLOAT BLOCKS -- // // Replace float blocks code with relavant markup [float-direction:width,height][/float] do { $string = preg_replace('/\\s?\\[float(?:-|=|\\:)(left|right|none)(?:-|=|\\:)([0-9]+%|[0-9]+px),([0-9]+%|[0-9]+px)\\](.*?)\\[\\/float(?:-\\1)?\\]\\s?/is', '<div class="float_$1" style="width: $2; height: $3;">$4</div>', $string, -1, $count); } while ($count > 0); // Replace float blocks code with relavant markup [float-direction:width][/float] do { $string = preg_replace('/\\s?\\[float(?:-|=|\\:)(left|right|none)(?:-|=|\\:)([0-9]+%|[0-9]+px)\\](.*?)\\[\\/float(?:-\\1)?\\]\\s?/is', '<div class="float_$1" style="width: $2;">$3</div>', $string, -1, $count); } while ($count > 0); // Replace float blocks code with relavant markup [float-direction][/float] do { $string = preg_replace('/\\s?\\[float(?:-|=|\\:)(left|right|none)\\](.*?)\\[\\/float(?:-\\1)?\\]\\s?/is', '<div class="float_$1">$2</div>', $string, -1, $count); } while ($count > 0); // Replace float blocks code with relavant markup [float][/float] do { $string = preg_replace('/\\s?\\[float\\](.*?)\\[\\/float\\]\\s?/is', '<div class="float_left">$1</div>', $string, -1, $count); } while ($count > 0); // -- RE-INSERT CODE BLOCKS -- // // Loop through any code blocks and replace their contents with the original markup if ($has_code) { foreach ($code_matches[1] as $key => $match) { $string = str_replace('##CODE' . $key . '##', '<span class="code">' . $match . '</span>', $string); } } // -- REPLACE LINE BREAKS -- // // Change line breaks to actual breaks by grouping into paragraphs $string = str_replace("\n", '<br />', $string); $string = preg_replace('/<div( class="[^"]+")?( style="[^"]+")?><br \\/>/is', '<div$1$2>', $string); $string = preg_replace('/<br \\/><\\/div>/is', '</div>', $string); //$string = preg_replace('<br /><', '<', $string); $string = '<div>' . $string . '</div>'; // Return the decoded string return $string; }
$user_id = isset($_GET['num']) && is_numeric($_GET['num']) ? (int) $_GET['num'] : false; // Collect user info based on the ID if available $user_fields = rpg_user::get_fields(true); if (!empty($user_id)) { $user_info = $db->get_array("SELECT {$user_fields} FROM mmrpg_users WHERE user_id = {$user_id};"); } elseif ($user_id === 0) { $user_info = $db->get_array("SELECT {$user_fields} FROM mmrpg_users WHERE user_name_clean = 'guest';"); } else { $user_info = array(); } // Parse the user info if it was collected if (!empty($user_info)) { $user_info = rpg_user::parse_info($user_info); } // Collect the type index for display and looping $type_index = rpg_type::get_index(true); // Generate form select options for the type index $type_tokens = array_keys($type_index); $type_index_options = ''; $type_index_options .= '<option value="">Neutral</option>' . PHP_EOL; // Manually add 'none' up top foreach ($type_tokens as $type_token) { if ($type_token == 'none') { continue; } // We already added 'none' above $type_info = $type_index[$type_token]; $type_index_options .= '<option value="' . $type_token . '">' . $type_info['type_name'] . '</option>' . PHP_EOL; } // Require actions file for form processing require_once MMRPG_CONFIG_ROOTDIR . 'pages/admin_users_actions.php';
/** * Get a formatted quote from this player object, optionally providing search and replace values * @return string */ public function print_quote($quote_type, $this_search = array(), $this_replace = array()) { $mmrpg_types = rpg_type::get_index(); // Define the quote text variable $quote_text = ''; // If the player is visible and has the requested quote text if ($this->get_token() != 'player' && $this->has_quote($quote_type)) { // Collect the quote text with any search/replace modifications $this_quote_text = $this->get_quote($quote_type); $this_quote_text = str_replace($this_search, $this_replace, $this_quote_text); // Collect the text colour for this player $this_type_token = str_replace('dr-', '', $this->player_token); $this_text_colour = !empty($mmrpg_types[$this_type_token]) ? $mmrpg_types[$this_type_token]['type_colour_light'] : array(200, 200, 200); foreach ($this_text_colour as $key => $val) { $this_text_colour[$key] += 20; } // Generate the quote text markup with the appropriate RGB values $quote_text = '<span style="color: rgb(' . implode(',', $this_text_colour) . ');">"<em>' . $this_quote_text . '</em>"</span>'; } return $quote_text; }
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; }
'limit' => $this_search_limit ); // Sanitize the search string to prevent exploitation if (!empty($this_search_text)){ $this_search_text = trim($this_search_text); if (!is_numeric($this_search_text)){ $this_search_text = strtolower($this_search_text); $this_search_text = preg_replace('/[^-a-z0-9*@]+/i', ' ', $this_search_text); $this_search_text = trim($this_search_text); $this_search_text = preg_replace('/(\*|\s)+/', '%', $this_search_text); } } // Collect an array of elemental types $mmrpg_types = rpg_type::get_index(true); $mmrpg_types_tokens = array_keys($mmrpg_types); $mmrpg_types_tokens[] = 'neutral'; // Define different search actions for different types switch ($this_search_type){ // If this was a USER search request case 'users': { // Define a search query for finding users $this_search_query = "SELECT user_id AS id, user_name AS name, user_name_public AS name2, user_name_clean AS name3,
<?php // TYPES DATABASE // Define the index of types for the game $mmrpg_database_types = rpg_type::get_index(); uasort($mmrpg_database_types, function ($t1, $t2) { if ($t1['type_order'] > $t2['type_order']) { return 1; } elseif ($t1['type_order'] < $t2['type_order']) { return -1; } else { return 0; } }); $mmrpg_database_types_count = count($mmrpg_database_types); $mmrpg_database_types_count_added = 1; $mmrpg_database_types_count_actual = count($mmrpg_database_types);
public static function print_database_markup($item_info, $print_options = array()) { // Define the global variables global $mmrpg_index, $this_current_uri, $this_current_url; global $mmrpg_database_items, $mmrpg_database_robots, $mmrpg_database_items, $mmrpg_database_types; global $db; // Collect global indexes for easier search $mmrpg_types = rpg_type::get_index(true); // 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 item sprite dimensions $item_image_size = !empty($item_info['item_image_size']) ? $item_info['item_image_size'] : 40; $item_image_size_text = $item_image_size . 'x' . $item_image_size; $item_image_token = !empty($item_info['item_image']) ? $item_info['item_image'] : $item_info['item_token']; // Collect the item's type for background display $item_type_class = !empty($item_info['item_type']) ? $item_info['item_type'] : 'none'; if ($item_type_class != 'none' && !empty($item_info['item_type2'])) { $item_type_class .= '_' . $item_info['item_type2']; } elseif ($item_type_class == 'none' && !empty($item_info['item_type2'])) { $item_type_class = $item_info['item_type2']; } $item_header_types = 'item_type_' . $item_type_class . ' '; // If this is a special category of item, it's a special type if (preg_match('/^(red|blue|green|purple)-score-ball$/i', $item_info['item_token'])) { $item_info['item_type_special'] = 'bonus'; } elseif (preg_match('/^super-(pellet|capsule)$/i', $item_info['item_token'])) { $item_info['item_type_special'] = 'multi'; } // Define the sprite sheet alt and title text $item_sprite_size = $item_image_size * 2; $item_sprite_size_text = $item_sprite_size . 'x' . $item_sprite_size; $item_sprite_title = $item_info['item_name']; //$item_sprite_title = $item_info['item_number'].' '.$item_info['item_name']; //$item_sprite_title .= ' Sprite Sheet | Robot Database | Mega Man RPG World'; // Define the sprite frame index for robot images $item_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($item_info['item_damage_percent']) && $item_info['item_damage'] > 100) { $item_info['item_damage'] = 100; } if (!empty($item_info['item_damage2_percent']) && $item_info['item_damage2'] > 100) { $item_info['item_damage2'] = 100; } if (!empty($item_info['item_recovery_percent']) && $item_info['item_recovery'] > 100) { $item_info['item_recovery'] = 100; } if (!empty($item_info['item_recovery2_percent']) && $item_info['item_recovery2'] > 100) { $item_info['item_recovery2'] = 100; } // Start the output buffer ob_start(); ?> <div class="database_container database_<?php echo $item_info['item_class'] == 'item' ? 'item' : 'item'; ?> _container" data-token="<?php echo $item_info['item_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 $item_info['item_token']; ?> "> </a> <?php } ?> <div class="subbody event event_triple event_visible" data-token="<?php echo $item_info['item_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 item_type <?php echo $item_header_types; ?> " style="font-size: 9px; line-height: 11px; text-align: center; margin-bottom: 2px; padding: 0 0 1px !important;"><?php echo 'No.' . $item_info['item_key']; ?> </div> <?php } ?> <?php if ($item_image_token != 'item') { ?> <div class="icon item_type <?php echo $item_header_types; ?> "><div style="background-image: url(i/i/<?php echo $item_image_token; ?> /ir<?php echo $item_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_item sprite_40x40 sprite_40x40_icon sprite_size_<?php echo $item_image_size_text; ?> sprite_size_<?php echo $item_image_size_text; ?> _icon"><?php echo $item_info['item_name']; ?> 's Mugshot</div></div> <?php } else { ?> <div class="icon item_type <?php echo $item_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_item sprite_40x40 sprite_40x40_icon sprite_size_<?php echo $item_image_size_text; ?> sprite_size_<?php echo $item_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 $item_header_types; ?> <?php echo !$print_options['show_icon'] ? 'noicon' : ''; ?> "> <?php if ($print_options['layout_style'] == 'website_compact') { ?> <a href="<?php echo preg_match('/^item-/', $item_info['item_token']) ? 'database/items/' . preg_replace('/^item-/i', '', $item_info['item_token']) . '/' : 'database/items/' . $item_info['item_token'] . '/'; ?> "><?php echo $item_info['item_name']; ?> </a> <?php } else { ?> <?php echo $item_info['item_name']; ?> 's Data <?php } ?> <?php if (!empty($item_info['item_type_special'])) { ?> <div class="header_core item_type"><?php echo ucfirst($item_info['item_type_special']); ?> Type</div> <?php } elseif (!empty($item_info['item_type']) && !empty($item_info['item_type2'])) { ?> <div class="header_core item_type"><?php echo ucfirst($item_info['item_type']) . ' / ' . ucfirst($item_info['item_type2']); ?> Type</div> <?php } elseif (!empty($item_info['item_type'])) { ?> <div class="header_core item_type"><?php echo ucfirst($item_info['item_type']); ?> Type</div> <?php } else { ?> <div class="header_core item_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="item_type item_type_"><?php echo $item_info['item_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($item_info['item_type_special'])) { echo '<a href="database/items/' . $item_info['item_type_special'] . '/" class="item_type ' . $item_header_types . '">' . ucfirst($item_info['item_type_special']) . '</a>'; } elseif (!empty($item_info['item_type'])) { $temp_string = array(); $item_type = !empty($item_info['item_type']) ? $item_info['item_type'] : 'none'; $temp_string[] = '<a href="database/items/' . $item_type . '/" class="item_type item_type_' . $item_type . '">' . $mmrpg_types[$item_type]['type_name'] . '</a>'; if (!empty($item_info['item_type2'])) { $item_type2 = !empty($item_info['item_type2']) ? $item_info['item_type2'] : 'none'; $temp_string[] = '<a href="database/items/' . $item_type2 . '/" class="item_type item_type_' . $item_type2 . '">' . $mmrpg_types[$item_type2]['type_name'] . '</a>'; } echo implode(' ', $temp_string); } else { echo '<a href="database/items/none/" class="item_type item_type_none">Neutral</a>'; } ?> <?php } else { ?> <?php if (!empty($item_info['item_type_special'])) { echo '<span class="item_type ' . $item_header_types . '">' . ucfirst($item_info['item_type_special']) . '</span>'; } elseif (!empty($item_info['item_type'])) { $temp_string = array(); $item_type = !empty($item_info['item_type']) ? $item_info['item_type'] : 'none'; $temp_string[] = '<span class="item_type item_type_' . $item_type . '">' . $mmrpg_types[$item_type]['type_name'] . '</span>'; if (!empty($item_info['item_type2'])) { $item_type2 = !empty($item_info['item_type2']) ? $item_info['item_type2'] : 'none'; $temp_string[] = '<span class="item_type item_type_' . $item_type2 . '">' . $mmrpg_types[$item_type2]['type_name'] . '</span>'; } echo implode(' ', $temp_string); } else { echo '<span class="item_type item_type_none">Neutral</span>'; } ?> <?php } ?> </td> </tr> <tr> <td class="right"> <label style="display: block; float: left;">Power :</label> <?php if (!empty($item_info['item_damage']) || !empty($item_info['item_recovery'])) { ?> <?php if (!empty($item_info['item_damage'])) { ?> <span class="item_stat"><?php echo number_format($item_info['item_damage'], 0, '.', ',') . (!empty($item_info['item_damage_percent']) ? '%' : ''); ?> Damage</span><?php } ?> <?php if (!empty($item_info['item_recovery'])) { ?> <span class="item_stat"><?php echo number_format($item_info['item_recovery'], 0, '.', ',') . (!empty($item_info['item_recovery_percent']) ? '%' : ''); ?> Recovery</span><?php } ?> <?php } elseif (!empty($item_info['item_damage2']) || !empty($item_info['item_recovery2'])) { ?> <?php if (!empty($item_info['item_damage2'])) { ?> <span class="item_stat"><?php echo number_format($item_info['item_damage2'], 0, '.', ',') . (!empty($item_info['item_damage2_percent']) ? '%' : ''); ?> </span><?php } ?> <?php if (!empty($item_info['item_recovery2'])) { ?> <span class="item_stat"><?php echo number_format($item_info['item_recovery2'], 0, '.', ',') . (!empty($item_info['item_recovery2_percent']) ? '%' : ''); ?> </span><?php } ?> <?php } else { ?> <span class="item_stat">-</span> <?php } ?> </td> <td class="center"> </td> <td class="right"> <label style="display: block; float: left;">Value :</label> <?php if (!empty($item_info['item_price'])) { ?> <span class="item_stat"><?php echo number_format($item_info['item_price'], 0, '.', ',') . 'z'; ?> </span> <?php } else { ?> <span class="item_stat">-</span> <?php } ?> </td> </tr> </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($item_info['item_damage']) ? number_format($item_info['item_damage'], 0, '.', ',') : 0, !empty($item_info['item_recovery']) ? number_format($item_info['item_recovery'], 0, '.', ',') : 0, !empty($item_info['item_damage2']) ? number_format($item_info['item_damage2'], 0, '.', ',') : 0, !empty($item_info['item_recovery2']) ? number_format($item_info['item_recovery2'], 0, '.', ',') : 0, ''); echo !empty($item_info['item_description']) ? str_replace($temp_find, $temp_replace, $item_info['item_description']) : '…'; ?> </div> </td> </tr> </tbody> </table> </div> <?php } ?> <?php if ($print_options['show_sprites'] && (!isset($item_info['item_image_sheets']) || $item_info['item_image_sheets'] !== 0) && $item_image_token != 'item') { ?> <?php // Start the output buffer and prepare to collect sprites ob_start(); // Define the alts we'll be looping through for this item $temp_alts_array = array(); $temp_alts_array[] = array('token' => '', 'name' => $item_info['item_name'], 'summons' => 0); // Append predefined alts automatically, based on the item image alt array if (!empty($item_info['item_image_alts'])) { $temp_alts_array = array_merge($temp_alts_array, $item_info['item_image_alts']); } elseif ($item_info['item_type'] == 'copy' && preg_match('/^(mega-man|proto-man|bass)$/i', $item_info['item_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' => $item_info['item_name'] . ' (' . ucfirst($type_token) . ' Core)', 'summons' => 0); } } elseif (!empty($item_info['item_image_sheets'])) { for ($i = 2; $i <= $item_info['item_image_sheets']; $i++) { $temp_alts_array[] = array('sheet' => $i, 'name' => $item_info['item_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_item_image_token = $item_image_token; $temp_item_image_token .= !empty($alt_info['token']) ? '_' . $alt_info['token'] : ''; $temp_item_image_token .= !empty($alt_info['sheet']) ? '-' . $alt_info['sheet'] : ''; $temp_item_image_name = $alt_info['name']; // Update the alt array with this info $temp_alts_array[$alt_key]['image'] = $temp_item_image_token; // Collect the number of sheets $temp_sheet_number = !empty($item_info['item_image_sheets']) ? $item_info['item_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 = '[item:' . $temp_direction . ']{' . $temp_item_image_token . '}'; $temp_title = $temp_item_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_item_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: ' . $item_sprite_size . 'px; height: ' . $item_sprite_size . 'px; overflow: hidden;">'; echo '<img style="margin-left: 0;" data-tooltip="' . $temp_title . '" src="i/i/' . $temp_item_image_token . '/i' . $temp_direction2 . $item_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 ($item_sprite_frames as $this_key => $this_frame) { $margin_left = ceil((0 - $this_key) * $item_sprite_size); $frame_relative = $this_frame; //if ($temp_sheet > 1){ $frame_relative = 'frame_'.str_pad((($temp_sheet - 1) * count($item_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 = '[item:' . $temp_direction . ':' . $frame_relative . ']{' . $temp_item_image_token . '}'; $temp_title = $temp_item_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($item_info['item_image']) ? $item_info['item_image'] : $item_info['item_token']; //if ($temp_sheet > 1){ $temp_item_image_token .= '-'.$temp_sheet; } echo '<div class="frame_container" data-clickcopy="' . $temp_embed . '" data-direction="' . $temp_direction . '" data-image="' . $temp_item_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: ' . $item_sprite_size . 'px; height: ' . $item_sprite_size . 'px; overflow: hidden;">'; echo '<img style="margin-left: ' . $margin_left . 'px;" title="' . $temp_title . '" alt="' . $temp_title . '" src="i/i/' . $temp_item_image_token . '/s' . $temp_direction2 . $item_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 $item_header_types; ?> " style="margin: 10px 0 0; text-align: left;"> <?php echo $item_info['item_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 = 'item_type item_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 ? $item_info['item_name'] : 'Alt'.($alt_key > 1 ? ' '.$alt_key : ''); //$alt_key == 0 ? $item_info['item_name'] : $item_info['item_name'].' Alt'.($alt_key > 1 ? ' '.$alt_key : ''); $alt_type = 'item_type item_type_empty '; $alt_style = 'border-color: rgba(0, 0, 0, 0.2) !important; background-color: rgba(0, 0, 0, 0.2) !important; '; //if ($item_info['item_type'] == 'copy' && $alt_key == 0){ $alt_type = 'item_type item_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="item_type item_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> <?php // Define the editor title based on ID $temp_editor_title = 'Undefined'; if (!empty($item_info['item_image_editor'])) { if ($item_info['item_image_editor'] == 412) { $temp_editor_title = 'Adrian Marceau / Ageman20XX'; } elseif ($item_info['item_image_editor'] == 110) { $temp_editor_title = 'MetalMarioX100 / EliteP1'; } elseif ($item_info['item_image_editor'] == 18) { $temp_editor_title = 'Sean Adamson / MetalMan'; } } elseif ($item_image_token != 'item') { $temp_editor_title = 'Adrian Marceau / Ageman20XX'; } ?> <p class="text text_editor" style="text-align: center; color: #868686; font-size: 10px; line-height: 10px; margin-top: 6px;">Sprite Editing by <strong><?php echo $temp_editor_title; ?> </strong> <span style="color: #565656;"> | </span> Original Artwork by <strong>Capcom</strong></p> </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 'database/items/' . $item_info['item_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 'database/items/' . $item_info['item_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; }
/** * Get the formatted editor title markup for this field object given field info * @param array $field_info * @return string */ public static function print_editor_title_markup($field_info) { // Collect references to global objects $db = cms_database::get_database(); // Collect references to global indexes $mmrpg_types = rpg_type::get_index(); $mmrpg_players = rpg_player::get_index(); $mmrpg_robots = rpg_robot::get_index(); // Expand the field index info $field_token = $field_info['field_token']; $field_info = rpg_field::get_index_info($field_token); if (empty($field_info) || empty($field_info)) { return false; } // Collect the field type info and expand master/mecha data $temp_field_type = !empty($field_info['field_type']) ? $mmrpg_types[$field_info['field_type']] : false; $temp_field_type2 = !empty($field_info['field_type2']) ? $mmrpg_types[$field_info['field_type2']] : false; $temp_field_master = !empty($field_info['field_master']) ? rpg_robot::parse_index_info($mmrpg_robots[$field_info['field_master']]) : false; $temp_field_mechas = !empty($field_info['field_mechas']) ? $field_info['field_mechas'] : array(); foreach ($temp_field_mechas as $key => $token) { $temp_mecha = rpg_robot::parse_index_info($mmrpg_robots[$token]); if (!empty($temp_mecha)) { $temp_field_mechas[$key] = $temp_mecha['robot_name']; } else { unset($temp_field_mechas[$key]); } } // Generate the field title markup $temp_field_title = $field_info['field_name']; if (!empty($temp_field_type)) { $temp_field_title .= ' (' . $temp_field_type['type_name'] . ' Type)'; } if (!empty($temp_field_type2)) { $temp_field_title = str_replace('Type', '/ ' . $temp_field_type2['type_name'] . ' Type', $temp_field_title); } $temp_field_title .= ' // '; if (!empty($temp_field_master)) { $temp_field_title .= 'Robot : ' . $temp_field_master['robot_name'] . ' // '; } if (!empty($temp_field_mechas)) { $temp_field_title .= 'Mecha : ' . implode(', ', array_unique($temp_field_mechas)) . ' // '; } // Return the generated markup return $temp_field_title; }
$key_counter = array_search($this_token, array_keys($mmrpg_database_fields)); $temp_field_info = $mmrpg_database_fields[$this_token]; $temp_field_markup = rpg_field::print_database_markup($temp_field_info, array('show_key' => $key_counter)); $temp_field_markup = preg_replace('/\\s+/', ' ', $temp_field_markup); echo 'success : ' . $temp_field_markup; break; // If this was a item request // If this was a item request case 'items': $key_counter = array_search($this_token, array_keys($mmrpg_database_items)); $temp_item_info = $mmrpg_database_items[$this_token]; $temp_item_markup = rpg_ability::print_database_markup($temp_item_info, array('show_key' => $key_counter)); $temp_item_markup = preg_replace('/\\s+/', ' ', $temp_item_markup); echo 'success : ' . $temp_item_markup; break; // If this was a type request // If this was a type request case 'types': $temp_type_info = $mmrpg_database_types[$this_token]; $temp_type_markup = rpg_type::print_database_markup($temp_type_info); $temp_type_markup = preg_replace('/\\s+/', ' ', $temp_type_markup); echo 'success : ' . $temp_type_markup; break; // If this was an invalid request // If this was an invalid request default: die('error : invalid class requested'); break; } // Exit the script gracefully if it gets this far exit;
if (!empty($this_current_cat) && $this_current_id !== false && !empty($this_current_token)) { $this_current_uri .= $this_current_cat . '/' . $this_current_id . '/' . $this_current_token . '/'; } elseif (!empty($this_current_cat) && !empty($this_current_sub)) { $this_current_uri = $this_current_page . '/' . $this_current_cat . '/' . $this_current_sub . '/'; } elseif (!empty($this_current_cat)) { $this_current_uri .= $this_current_cat . '/'; } if (!empty($this_current_target)) { //$this_current_uri .= $this_current_target.'/'; } if (!empty($this_current_num) && $this_current_num != 1) { $this_current_uri .= $this_current_num . '/'; } } elseif ($this_current_page == 'database') { $this_current_token = !empty($_GET['token']) ? $_GET['token'] : ''; $temp_type_token = rpg_type::get_index_info($this_current_token); if (!empty($this_current_token) && !empty($temp_type_token) || in_array($this_current_token, array('multi', 'bonus'))) { $this_current_filter = $_GET['filter'] = $this_current_token; $this_current_filter_name = $this_current_filter == 'none' ? 'Neutral' : ucfirst($this_current_filter); $this_current_uri .= $this_current_filter . '/'; $this_current_token = $_GET['token'] = ''; } elseif (!empty($this_current_token)) { $this_current_uri .= $this_current_token . '/'; } } elseif ($this_current_page == 'leaderboard') { $this_current_token = !empty($_GET['token']) ? $_GET['token'] : ''; if (!empty($this_current_token)) { $this_current_uri .= $this_current_token . '/'; } } elseif ($this_current_page == 'file') { $this_current_token = !empty($_GET['token']) ? $_GET['token'] : '';
/** * Generate the markup for the in-game battle menu given environment variables * @param $objects array * @param $kind string (battle, ability, scan, item, option, switch, target_this, target_target, target_this_disabled) * @return array */ public static function get_menu_markup($objects, $menu_kind) { // Extract global objects into local scope extract($objects); // Count the total number of robots $num_robots = count($this_player->player_robots); $robot_direction = $this_player->player_side == 'left' ? 'right' : 'left'; // Collect this and target robot options and sort them $this_player_robots = $this_player->player_robots; $target_player_robots = $target_player->player_robots; usort($this_player_robots, array('rpg_functions', 'robot_sort_by_active')); usort($target_player_robots, array('rpg_functions', 'robot_sort_by_active')); // Collect required item and ability tokens to display $temp_item_tokens = array(); $temp_ability_tokens = array(); if (!empty($this_player->player_items)) { $temp_item_tokens = array_merge($temp_item_tokens, $this_player->player_items); } if (!empty($target_player->player_items)) { $temp_item_tokens = array_merge($temp_item_tokens, $target_player->player_items); } foreach (array($this_player_robots, $target_player_robots) as $player_robots) { foreach ($player_robots as $robot_key => $robot_info) { if (!empty($robot_info['robot_item'])) { $temp_item_tokens[] = $robot_info['robot_item']; } if (!empty($robot_info['robot_abilities'])) { $temp_ability_tokens = array_merge($temp_ability_tokens, $robot_info['robot_abilities']); } } } $temp_item_tokens = array_unique($temp_item_tokens); $temp_ability_tokens = array_unique($temp_ability_tokens); // Generate custom ability and item indexes for reference $temp_items_index = rpg_item::get_index_custom($temp_item_tokens); $temp_abilities_index = rpg_ability::get_index_custom($temp_ability_tokens); // Generate the markup for the action battle panel ob_start(); // Generate different markup for the different menu kinds switch ($menu_kind) { // If this was a BATTLE menu request case 'battle': // If the current robot is not disabled and is active if ($this_robot->robot_energy > 0 && $this_robot->robot_position == 'active') { // Define the order counter and start at one $dataOrder = 1; // Display available main actions ?> <div class="main_actions"><?php if (!empty($temp_player_ability_actions) || $this_robot->robot_class == 'mecha') { ?> <a class="button action_ability" type="button" data-panel="ability" data-order="<?php echo $dataOrder; ?> "><label>Ability</label></a><?php } else { ?> <a class="button button_disabled action_ability" type="button" data-action="ability_8_action-noweapons" data-order="<?php echo $dataOrder; ?> "><label style="text-decoration: line-through;">Ability</label></a><?php } $dataOrder++; ?> </div><?php // Display the available sub options ?> <div class="sub_actions"><?php // Display the SCAN option if ($target_player->counters['robots_active'] > 1) { ?> <a class="button action_scan" type="button" <?php echo $target_player->counters['robots_active'] > 1 ? 'data-panel="scan"' : 'data-action="scan_' . $target_robot->robot_id . '_' . $target_robot->robot_token . '"'; ?> data-order="<?php echo $dataOrder; ?> "><label>Scan</label></a><?php } else { foreach ($target_player->values['robots_active'] as $key => $info) { if ($info['robot_position'] != 'active') { continue; } ?> <a class="button action_scan" type="button" data-action="scan_<?php echo $info['robot_id'] . '_' . $info['robot_token']; ?> " data-order="<?php echo $dataOrder; ?> "><label>Scan</label></a><?php break; } } $dataOrder++; // Display the ITEM option $temp_disabled = false; ?> <a class="button action_item <?php echo $temp_disabled ? 'button_disabled' : ''; ?> " type="button" <?php echo !$temp_disabled ? 'data-panel="item"' : ''; ?> <?php echo !$temp_disabled ? 'data-order="' . $dataOrder . '"' : ''; ?> ><label>Item</label></a><?php if (!$temp_disabled) { $dataOrder++; } // Display the OPTION option ?> <a class="button action_option" type="button" data-panel="option" data-order="<?php echo $dataOrder; ?> "><label>Option</label></a><?php $dataOrder++; // Display the SWITCH option ?> <a class="button action_switch" type="button" data-panel="switch" data-order="<?php echo $dataOrder; ?> "><label>Switch</label></a><?php $dataOrder++; ?> </div><?php } else { // Display available main actions ?> <div class="main_actions"><?php ?> <a class="button action_ability button_disabled" type="button"><label>Ability</label></a><?php ?> </div><?php // Display the available sub options ?> <div class="sub_actions"><?php ?> <a class="button action_scan button_disabled" type="button"><label>Scan</label></a><?php ?> <a class="button action_item button_disabled" type="button"><label>Item</label></a><?php ?> <a class="button action_option" type="button" data-panel="option" data-order="1"><label>Option</label></a><?php ?> <a class="button action_switch" type="button" data-panel="switch" data-order="2"><label>Switch</label></a><?php ?> </div><?php } break; // If this was a ABILITY menu request // If this was a ABILITY menu request case 'ability': // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select Ability</span><?php // Collect the abilities for this robot, by whatever means if ($this_robot->robot_class == 'master') { $this_robot_settings = rpg_game::robot_settings($this_player->player_token, $this_robot->robot_token); if (!empty($this_robot_settings['robot_abilities'])) { $current_robot_abilities = $this_robot_settings['robot_abilities']; } else { $current_robot_abilities = array(); } // If this robot has more than eight abilities, slice to only eight if (count($current_robot_abilities) > 8) { $current_robot_abilities = array_slice($current_robot_abilities, 0, 8); $_SESSION['GAME']['values']['battle_settings'][$this_player->player_token]['player_robots'][$this_robot->robot_token]['robot_abilities'] = $current_robot_abilities; } // Collect the robot's held item if any if (!empty($_SESSION['GAME']['values']['battle_settings'][$this_player->player_token]['player_robots'][$this_robot->robot_token]['robot_item'])) { $current_robot_item = $_SESSION['GAME']['values']['battle_settings'][$this_player->player_token]['player_robots'][$this_robot->robot_token]['robot_item']; } else { $current_robot_item = ''; } } elseif ($this_robot->robot_class == 'mecha') { // Collect the temp ability index $temp_index_info = rpg_robot::get_index_info($this_robot->robot_token); $current_robot_abilities = array(); foreach ($temp_index_info['robot_abilities'] as $token) { $current_robot_abilities[$token] = array('ability_token' => $token); } $current_robot_item = ''; } // Ensure this robot has abilities to display if (!empty($current_robot_abilities)) { // Count the total number of abilities $num_abilities = count($this_robot->robot_abilities); $robot_direction = $this_player->player_side == 'left' ? 'right' : 'left'; // Define the ability display counter $unlocked_abilities_count = 0; // Collect the temp ability index $temp_abilities_index = rpg_ability::get_index_custom(array_keys($current_robot_abilities)); $temp_robotinfo = rpg_robot::get_index_info($this_robot->robot_token); if ($temp_robotinfo['robot_core'] != $this_robot->robot_core) { $temp_robotinfo['robot_core'] = $this_robot->robot_core; } $temp_robotinfo['robot_core2'] = preg_match('/^item-core-/i', $current_robot_item) ? preg_replace('/^item-core-/i', '', $current_robot_item) : ''; if ($temp_robotinfo['robot_core2'] == 'none') { $temp_robotinfo['robot_core2'] = ''; } // Loop through each ability and display its button $ability_key = 0; //$temp_robot_array = $this_robot->export_array(); foreach ($current_robot_abilities as $ability_token => $ability_info) { if (empty($ability_token) || !isset($temp_abilities_index[$ability_token])) { continue; } // Check if this ability has been unlocked $this_ability_unlocked = true; if ($this_ability_unlocked) { $unlocked_abilities_count++; } else { continue; } // Create the ability object using the session/index data $temp_abilityinfo = $temp_abilities_index[$ability_token]; $temp_abilityinfo['ability_id'] = $this_robot->robot_id . str_pad($temp_abilityinfo['ability_id'], 3, '0', STR_PAD_LEFT); $temp_ability = $this_battle->get_ability($temp_abilityinfo['ability_id']); $temp_type = $temp_ability->ability_type; $temp_type2 = $temp_ability->ability_type2; $temp_damage = $temp_ability->ability_damage; $temp_damage2 = $temp_ability->ability_damage2; $temp_damage_unit = $temp_ability->ability_damage_percent ? '%' : ''; $temp_damage2_unit = $temp_ability->ability_damage2_percent ? '%' : ''; $temp_recovery = $temp_ability->ability_recovery; $temp_recovery2 = $temp_ability->ability_recovery2; $temp_recovery_unit = $temp_ability->ability_recovery_percent ? '%' : ''; $temp_recovery2_unit = $temp_ability->ability_recovery2_percent ? '%' : ''; $temp_accuracy = $temp_ability->ability_accuracy; $temp_kind = !empty($temp_damage) && empty($temp_recovery) ? 'damage' : (!empty($temp_recovery) && empty($temp_damage) ? 'recovery' : (!empty($temp_damage) && !empty($temp_recovery) ? 'multi' : '')); $temp_target = 'auto'; $temp_target_text = ''; if ($temp_ability->ability_target == 'select_target' && $target_player->counters['robots_active'] > 1) { $temp_target = 'select_target'; $temp_target_text = 'Select Target'; } elseif ($temp_ability->ability_target == 'select_this') { $temp_target = 'select_this'; $temp_target_text = 'Select Target'; } $temp_multiplier = 1; if (!empty($this_robot->robot_core) && ($this_robot->robot_core == $temp_type || $this_robot->robot_core == $temp_type2)) { $temp_multiplier = $temp_multiplier * 1.5; } if (!empty($temp_type) && !empty($this_battle->battle_field->field_multipliers[$temp_type])) { $temp_multiplier = $temp_multiplier * $this_battle->battle_field->field_multipliers[$temp_type]; } elseif (!empty($this_battle->battle_field->field_multipliers['none'])) { $temp_multiplier = $temp_multiplier * $this_battle->battle_field->field_multipliers['none']; } if (!empty($temp_type2) && !empty($this_battle->battle_field->field_multipliers[$temp_type2])) { $temp_multiplier = $temp_multiplier * $this_battle->battle_field->field_multipliers[$temp_type2]; } $temp_damage = ceil($temp_damage * $temp_multiplier); if (!preg_match('/-(booster|breaker)$/i', $ability_token) && !empty($this_battle->battle_field->field_multipliers['damage'])) { $temp_damage = ceil($temp_damage * $this_battle->battle_field->field_multipliers['damage']); } if ($temp_damage_unit == '%' && $temp_damage > 100) { $temp_damage = 100; } $temp_damage2 = ceil($temp_damage2 * $temp_multiplier); if (!preg_match('/-(booster|breaker)$/i', $ability_token) && !empty($this_battle->battle_field->field_multipliers['damage'])) { $temp_damage2 = ceil($temp_damage2 * $this_battle->battle_field->field_multipliers['damage']); } if ($temp_damage2_unit == '%' && $temp_damage2 > 100) { $temp_damage2 = 100; } $temp_recovery = ceil($temp_recovery * $temp_multiplier); if (!preg_match('/-(booster|breaker)$/i', $ability_token) && !empty($this_battle->battle_field->field_multipliers['recovery'])) { $temp_recovery = ceil($temp_recovery * $this_battle->battle_field->field_multipliers['recovery']); } if ($temp_recovery_unit == '%' && $temp_recovery > 100) { $temp_recovery = 100; } $temp_recovery2 = ceil($temp_recovery2 * $temp_multiplier); if (!preg_match('/-(booster|breaker)$/i', $ability_token) && !empty($this_battle->battle_field->field_multipliers['recovery'])) { $temp_recovery2 = ceil($temp_recovery2 * $this_battle->battle_field->field_multipliers['recovery']); } if ($temp_recovery2_unit == '%' && $temp_recovery2 > 100) { $temp_recovery2 = 100; } // Define the amount of weapon energy for this ability $temp_robot_weapons = $this_robot->robot_weapons; $temp_ability_energy = $this_robot->calculate_weapon_energy($temp_ability, $temp_ability_energy_base, $temp_ability_energy_mods); // Collect the type info for this ability if it exists $temp_type_info = !empty($temp_ability->ability_type) ? rpg_type::get_index_info($temp_ability->ability_type) : false; $temp_type_info2 = !empty($temp_ability->ability_type2) ? rpg_type::get_index_info($temp_ability->ability_type2) : false; // Define the ability title details text $temp_ability_details = $temp_ability->ability_name; $temp_ability_details .= ' (' . (!empty($temp_type_info) ? $temp_type_info['type_name'] : 'Neutral'); if (!empty($temp_type_info2)) { $temp_ability_details .= ' / ' . $temp_type_info2['type_name']; } else { $temp_ability_details .= ' Type'; } $temp_ability_details .= ') <br />'; if ($temp_kind == 'damage') { $temp_ability_details .= $temp_damage . $temp_damage_unit . ' Damage'; } elseif ($temp_kind == 'recovery') { $temp_ability_details .= $temp_recovery . $temp_recovery_unit . ' Recovery'; } elseif ($temp_kind == 'multi') { $temp_ability_details .= $temp_damage . $temp_damage_unit . ' Damage / ' . ($temp_multiplier != 1 ? '<del>' . $temp_ability->ability_recovery . '</del> ' : '') . $temp_recovery . $temp_recovery_unit . ' Recovery'; } else { $temp_ability_details .= 'Support'; } $temp_ability_details .= ' | ' . $temp_ability->ability_accuracy . '% Accuracy'; if (!empty($temp_ability_energy)) { $temp_ability_details .= ' | ' . $temp_ability_energy . ' Energy'; } if (!empty($temp_target_text)) { $temp_ability_details .= ' | ' . $temp_target_text; } $temp_ability_description = $temp_ability->ability_description; $temp_ability_description = str_replace('{DAMAGE}', $temp_damage, $temp_ability_description); $temp_ability_description = str_replace('{RECOVERY}', $temp_recovery, $temp_ability_description); $temp_ability_description = str_replace('{DAMAGE2}', $temp_damage2, $temp_ability_description); $temp_ability_description = str_replace('{RECOVERY2}', $temp_recovery2, $temp_ability_description); $temp_ability_details .= ' <br />' . $temp_ability_description; $temp_ability_details_plain = strip_tags(str_replace('<br />', ' ', $temp_ability_details)); $temp_ability_details_tooltip = htmlentities($temp_ability_details, ENT_QUOTES, 'UTF-8'); // Define the ability button text variables $temp_ability_label = '<span class="multi">'; $temp_ability_label .= '<span class="maintext">' . $temp_ability->ability_name . '</span>'; $temp_ability_label .= '<span class="subtext">'; $temp_ability_label .= !empty($temp_type_info) ? $temp_type_info['type_name'] . ' ' : 'Neutral '; if (!empty($temp_type_info2)) { $temp_ability_label .= ' / ' . $temp_type_info2['type_name']; } else { $temp_ability_label .= $temp_kind == 'damage' ? 'Damage' : ($temp_kind == 'recovery' ? 'Recovery' : ($temp_kind == 'multi' ? 'Effects' : 'Special')); } $temp_ability_label .= '</span>'; $temp_ability_label .= '<span class="subtext">'; $temp_ability_label .= '<span style="' . ($temp_multiplier != 1 ? $temp_multiplier > 1 ? 'color: rgb(161, 255, 124); ' : 'color: rgb(255, 150, 150); ' : '') . '">P:' . ($temp_kind == 'damage' ? $temp_damage . $temp_damage_unit . ' ' : ($temp_kind == 'recovery' ? $temp_recovery . $temp_recovery_unit . ' ' : ($temp_kind == 'multi' ? $temp_damage . $temp_damage_unit . '/' . $temp_recovery . $temp_recovery_unit . ' ' : '0'))) . '</span>'; $temp_ability_label .= ' '; $temp_ability_label .= 'A:' . $temp_accuracy . '%'; $temp_ability_label .= '</span>'; $temp_ability_label .= '</span>'; // Define whether or not this ability button should be enabled $temp_button_enabled = $temp_robot_weapons >= $temp_ability_energy ? true : false; // If the ability is not actually compatible with this robot, disable it $temp_button_compatible = rpg_robot::has_ability_compatibility($temp_robotinfo, $temp_abilityinfo, $current_robot_item); if (!$temp_button_compatible) { $temp_button_enabled = false; } // If this button is enabled, add it to the global ability options array if ($temp_button_enabled) { $temp_player_ability_actions[] = $temp_ability->ability_token; } // Define the ability sprite variables $temp_ability_sprite = array(); $temp_ability_sprite['name'] = $temp_ability->ability_name; if ($this_robot->robot_class == 'master') { $temp_ability_sprite['image'] = $temp_ability->ability_image; $temp_ability_sprite['image_size'] = $temp_ability->ability_image_size; $temp_ability_sprite['image_size_text'] = $temp_ability_sprite['image_size'] . 'x' . $temp_ability_sprite['image_size']; $temp_ability_sprite['image_size_zoom'] = $temp_ability->ability_image_size * 2; $temp_ability_sprite['image_size_zoom_text'] = $temp_ability_sprite['image_size'] . 'x' . $temp_ability_sprite['image_size']; $temp_ability_sprite['url'] = 'images/sprites/abilities/' . $temp_ability_sprite['image'] . '/icon_' . $robot_direction . '_' . $temp_ability_sprite['image_size_text'] . '.png'; $temp_ability_sprite['class'] = 'sprite size' . $temp_ability_sprite['image_size'] . ' base '; $temp_ability_sprite['style'] = 'background-image: url(' . $temp_ability_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 5px; left: 5px; '; $temp_ability_sprite['markup'] = '<span class="' . $temp_ability_sprite['class'] . ' ability" style="' . $temp_ability_sprite['style'] . '">' . $temp_ability_sprite['name'] . '</span>'; $temp_ability_sprite['markup'] .= '<span class="' . $temp_ability_sprite['class'] . ' weapons" style="top: 35px; left: 5px; ' . ($temp_ability_energy == $temp_ability_energy_base ? '' : ($temp_ability_energy_mods <= 1 ? 'color: #80A280; ' : 'color: #68B968; ')) . '">' . $temp_ability_energy . ' WE</span>'; } elseif ($this_robot->robot_class == 'mecha') { $temp_ability_sprite['image'] = $this_robot->robot_image; $temp_ability_sprite['image_size'] = $this_robot->robot_image_size; $temp_ability_sprite['image_size_text'] = $temp_ability_sprite['image_size'] . 'x' . $temp_ability_sprite['image_size']; $temp_ability_sprite['image_size_zoom'] = $this_robot->robot_image_size * 2; $temp_ability_sprite['image_size_zoom_text'] = $temp_ability_sprite['image_size'] . 'x' . $temp_ability_sprite['image_size']; $temp_ability_sprite['url'] = 'images/sprites/robots/' . $temp_ability_sprite['image'] . '/mug_' . $robot_direction . '_' . $temp_ability_sprite['image_size_text'] . '.png'; $temp_ability_sprite['class'] = 'sprite size' . $temp_ability_sprite['image_size'] . ' base '; $temp_ability_sprite['style'] = 'background-image: url(' . $temp_ability_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 7px; left: 5px; height: 43px; background-position: center center !important; background-size: 50% 50% !important; '; $temp_ability_sprite['markup'] = '<span class="' . $temp_ability_sprite['class'] . ' ability" style="' . $temp_ability_sprite['style'] . '">' . $temp_ability_sprite['name'] . '</span>'; } $temp_ability_sprite['preload'] = 'images/sprites/abilities/' . $temp_ability_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_ability_sprite['image_size_zoom_text'] . '.png'; // Now use the new object to generate a snapshot of this ability button if ($temp_button_enabled) { ?> <a data-order="<?php echo $temp_order_counter; ?> " class="button action_ability ability_<?php echo $temp_ability->ability_token; ?> ability_type ability_type_<?php echo (!empty($temp_ability->ability_type) ? $temp_ability->ability_type : 'none') . (!empty($temp_ability->ability_type2) ? '_' . $temp_ability->ability_type2 : ''); ?> block_<?php echo $unlocked_abilities_count; ?> " type="button" data-action="ability_<?php echo $temp_ability->ability_id . '_' . $temp_ability->ability_token; ?> " data-tooltip="<?php echo $temp_ability_details_tooltip; ?> " data-target="<?php echo $temp_target; ?> "><label class=""><?php echo $temp_ability_sprite['markup']; echo $temp_ability_label; ?> </label></a><?php } else { ?> <a data-order="<?php echo $temp_order_counter; ?> " class="button button_disabled action_ability ability_<?php echo $temp_ability->ability_token; ?> ability_type ability_type_<?php echo (!empty($temp_ability->ability_type) ? $temp_ability->ability_type : 'none') . (!empty($temp_ability->ability_type2) ? '_' . $temp_ability->ability_type2 : ''); ?> block_<?php echo $unlocked_abilities_count; ?> " type="button"><label class=""><?php echo $temp_ability_sprite['markup']; echo $temp_ability_label; ?> </label></a><?php } // Increment the order counter $temp_order_counter++; $ability_key++; } // If there were less than 8 abilities, fill in the empty spaces if ($unlocked_abilities_count < 8) { for ($i = $unlocked_abilities_count; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_ability button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag //echo 'Abilities : ['.print_r($this_robot->robot_abilities, true).']'; //echo preg_replace('#\s+#', ' ', print_r($this_robot_settings, true)); ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="battle"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a ITEM menu request // If this was a ITEM menu request case 'item': // Define all the available player items in a handy index array $current_player_items = $this_player->player_items; foreach ($current_player_items as $key => $token) { $info = !empty($temp_items_index[$token]) ? $temp_items_index[$token] : false; if (empty($info) || $info['ability_subclass'] != 'consumable') { unset($current_player_items[$key]); } } $current_player_items_count = count($current_player_items); $current_player_items_pages = $current_player_items_count <= 8 ? 1 : ceil($current_player_items_count / 8); // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"> <span class="main_actions_title <?php echo $target_player->player_id != MMRPG_SETTINGS_TARGET_PLAYERID || !empty($this_player->flags['item_used_this_turn']) ? 'main_actions_title_disabled' : ''; ?> "> <?php // If there were more than eight items, print the page numbers if ($current_player_items_count > 8) { $temp_selected_page = 1; //!empty($_SESSION['GAME']['battle_settings']['action_ability_page_num']) ? $_SESSION['GAME']['battle_settings']['action_ability_page_num'] : 1; echo '<span class="float_title">Select Item</span>'; echo '<span class="float_links"><span class="page">Page</span>'; for ($i = 1; $i <= $current_player_items_pages; $i++) { echo '<a class="num' . ($i == $temp_selected_page ? ' active' : '') . '" href="#' . $i . '">' . $i . '</a>'; } echo '</span>'; } else { echo 'Select Item'; } ?> </span> <?php // Ensure this player has items to display if (!empty($current_player_items)) { // Count the total number of items $num_items = count($current_player_items); $item_direction = $this_player->player_side == 'left' ? 'right' : 'left'; // Define the item display counter $equipped_items_count = 0; // Define the default button enabled option if ($target_player->player_id != MMRPG_SETTINGS_TARGET_PLAYERID) { $temp_button_enabled_base = false; } else { $temp_button_enabled_base = true; } // If this player has already used an item this turn if (!empty($this_player->flags['item_used_this_turn'])) { $temp_button_enabled_base = false; } // Loop through each ability and display its button $item_key = 0; $item_token_list = array_keys($temp_items_index); foreach ($item_token_list as $item_key => $item_token) { // Ensure this is an actual ability in the index if (!empty($item_token) && in_array($item_token, $current_player_items)) { // Define the amount of weapon energy for this ability $temp_item_quantity = !empty($_SESSION['GAME']['values']['battle_items'][$item_token]) ? $_SESSION['GAME']['values']['battle_items'][$item_token] : 0; // CHANGEME to zero!!! mt_rand(0, 10) $temp_item_cost = 1; // If this player has never aquired this item, do not display it if (!isset($_SESSION['GAME']['values']['battle_items'][$item_token])) { continue; } //$temp_item_quantity = 99; // CHANGEME! COMMENT ME OUT! TESTING ONLY! // Increment the equipped items count $equipped_items_count++; // Define the button enabled flag $temp_button_enabled = $temp_button_enabled_base; // Create the ability object using the session/index data $temp_iteminfo = $temp_items_index[$item_token]; //$temp_iteminfo['item_id'] = $this_player->player_id.str_pad($temp_iteminfo['item_id'], 3, '0', STR_PAD_LEFT); $temp_item = new rpg_item($this_player, $this_robot, $temp_iteminfo); $temp_type = $temp_item->item_type; $temp_type2 = $temp_item->item_type2; $temp_damage = $temp_item->item_damage; $temp_damage2 = $temp_item->item_damage2; $temp_damage_unit = $temp_item->item_damage_percent ? '%' : ''; $temp_damage2_unit = $temp_item->item_damage2_percent ? '%' : ''; $temp_recovery = $temp_item->item_recovery; $temp_recovery2 = $temp_item->item_recovery2; $temp_recovery_unit = $temp_item->item_recovery_percent ? '%' : ''; $temp_recovery2_unit = $temp_item->item_recovery2_percent ? '%' : ''; $temp_accuracy = $temp_item->item_accuracy; $temp_kind = !empty($temp_damage) && empty($temp_recovery) ? 'damage' : (!empty($temp_recovery) && empty($temp_damage) ? 'recovery' : (!empty($temp_damage) && !empty($temp_recovery) ? 'multi' : '')); if (preg_match('/-score-ball$/i', $item_token)) { $temp_kind = 'score'; } elseif (preg_match('/-core$/i', $item_token)) { $temp_kind = 'core'; } $temp_target = 'select_this'; if ($temp_item->item_target == 'select_target' && $target_player->counters['robots_active'] > 1) { $temp_target = 'select_target'; } elseif ($temp_item->item_target == 'select_this' && $this_player->counters['robots_active'] > 1) { $temp_target = 'select_this'; } elseif ($temp_item->item_target == 'select_this_disabled') { $temp_target = 'select_this_disabled'; } elseif ($temp_item->item_target == 'auto') { $temp_target = 'auto'; } $temp_multiplier = 1; // Collect the type info for this item if it exists $temp_type_info = !empty($temp_item->item_type) ? rpg_type::get_index_info($temp_item->item_type) : false; $temp_type_info2 = !empty($temp_item->item_type2) ? rpg_type::get_index_info($temp_item->item_type2) : false; // Define the ability title details text $temp_item_details = $temp_item->item_name . ' <br />'; if ($temp_kind == 'damage') { $temp_item_details .= $temp_damage . $temp_damage_unit . ' Damage'; } elseif ($temp_kind == 'recovery') { $temp_item_details .= $temp_recovery . $temp_recovery_unit . ' Recovery'; } elseif ($temp_kind == 'multi') { $temp_item_details .= $temp_damage . $temp_damage_unit . ' Damage / ' . $temp_recovery . $temp_recovery_unit . ' Recovery'; } elseif ($temp_kind == 'core') { $temp_item_details .= '10% Damage'; } else { $temp_item_details .= 'Support'; } if (!empty($temp_item_quantity)) { if ($temp_item_quantity != 1) { $temp_item_details .= ' | ' . $temp_item_quantity . ' Units'; } else { $temp_item_details .= ' | 1 Unit'; } } $temp_item_description = $temp_item->item_description; $temp_item_description = str_replace('{DAMAGE}', $temp_damage, $temp_item_description); $temp_item_description = str_replace('{RECOVERY}', $temp_recovery, $temp_item_description); $temp_item_description = str_replace('{DAMAGE2}', $temp_damage2, $temp_item_description); $temp_item_description = str_replace('{RECOVERY2}', $temp_recovery2, $temp_item_description); $temp_item_details .= ' <br />' . $temp_item_description; $temp_item_details_plain = strip_tags(str_replace('<br />', ' ', $temp_item_details)); $temp_item_details_tooltip = htmlentities($temp_item_details, ENT_QUOTES, 'UTF-8'); // Define the ability button text variables $temp_item_label = '<span class="multi">'; $temp_item_label .= '<span class="maintext">' . $temp_item->item_name . '</span>'; $temp_item_label .= '<span class="subtext">'; if ($temp_kind == 'score') { $temp_item_label .= 'Reward Booster'; } elseif ($temp_kind == 'core') { $temp_item_label .= !empty($temp_type_info) ? $temp_type_info['type_name'] : 'Neutral'; $temp_item_label .= ' Damage'; } else { $temp_item_label .= !empty($temp_type_info) ? $temp_type_info['type_name'] . ' ' : 'Neutral '; if (!empty($temp_type_info) && !empty($temp_type_info2)) { $temp_item_label .= ' / ' . $temp_type_info2['type_name']; } else { $temp_item_label .= $temp_kind == 'damage' ? 'Damage' : ($temp_kind == 'recovery' ? 'Recovery' : ($temp_kind == 'multi' ? 'Effects' : 'Special')); } } $temp_item_label .= '</span>'; $temp_item_label .= '<span class="subtext">'; if ($temp_kind == 'score') { $temp_item_label .= '<span>Value : +' . $temp_recovery . $temp_recovery_unit . '</span>'; } elseif ($temp_kind == 'core') { $temp_item_label .= '<span>Power : 10%</span>'; } else { $temp_item_label .= '<span style="' . ($temp_multiplier != 1 ? $temp_multiplier > 1 ? 'color: rgb(161, 255, 124); ' : 'color: rgb(255, 150, 150); ' : '') . '">Power : ' . ($temp_kind == 'damage' ? $temp_damage . $temp_damage_unit . ' ' : ($temp_kind == 'recovery' ? $temp_recovery . $temp_recovery_unit . ' ' : ($temp_kind == 'multi' ? $temp_damage . $temp_damage_unit . '/' . $temp_recovery . $temp_recovery_unit . ' ' : '0'))) . '</span>'; } $temp_item_label .= ' '; $temp_item_label .= '</span>'; $temp_item_label .= '</span>'; // Define whether or not this ability button should be enabled if ($temp_item_quantity < $temp_item_cost) { $temp_button_enabled = false; } // Define the ability sprite variables $temp_item_sprite = array(); $temp_item_sprite['name'] = $temp_item->item_name; $temp_item_sprite['image'] = $temp_item->item_image; if ($temp_item->item_token == 'item-extra-life') { // Automatically change this ability's image based on player if ($this_player->player_token == 'dr-light') { $temp_item_sprite['image'] = 'item-extra-life'; } elseif ($this_player->player_token == 'dr-wily') { $temp_item_sprite['image'] = 'item-extra-life-2'; } elseif ($this_player->player_token == 'dr-cossack') { $temp_item_sprite['image'] = 'item-extra-life-3'; } } $temp_item_sprite['image_size'] = $temp_item->item_image_size; $temp_item_sprite['image_size_text'] = $temp_item_sprite['image_size'] . 'x' . $temp_item_sprite['image_size']; $temp_item_sprite['image_size_zoom'] = $temp_item->item_image_size * 2; $temp_item_sprite['image_size_zoom_text'] = $temp_item_sprite['image_size'] . 'x' . $temp_item_sprite['image_size']; $temp_item_sprite['url'] = 'images/sprites/items/' . $temp_item_sprite['image'] . '/icon_' . $item_direction . '_' . $temp_item_sprite['image_size_text'] . '.png'; $temp_item_sprite['preload'] = 'images/sprites/items/' . $temp_item_sprite['image'] . '/sprite_' . $item_direction . '_' . $temp_item_sprite['image_size_zoom_text'] . '.png'; $temp_item_sprite['class'] = 'sprite size' . $temp_item_sprite['image_size'] . ' base '; // ability_type ability_type_'.(!empty($temp_item->item_type) ? $temp_item->item_type : 'none'); $temp_item_sprite['style'] = 'background-image: url(' . $temp_item_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 5px; left: 5px; '; $temp_item_sprite['markup'] = '<span class="' . $temp_item_sprite['class'] . ' ability" style="' . $temp_item_sprite['style'] . '">' . $temp_item_sprite['name'] . '</span>'; $temp_item_sprite['markup'] .= '<span class="' . $temp_item_sprite['class'] . ' weapons" style="top: 35px; left: 5px; ' . ($temp_item_quantity > 1 ? '' : ($temp_item_quantity > 0 ? 'color: #AA9393; ' : 'color: #A77D7D; ')) . '"><sup style="position: relative: bottom: 1px;">x</sup> ' . $temp_item_quantity . '</span>'; $temp_type_class = !empty($temp_item->item_type) ? $temp_item->item_type : 'none'; if ($temp_type_class != 'none' && !empty($temp_item->item_type2)) { $temp_type_class .= '_' . $temp_item->item_type2; } elseif ($temp_type_class == 'none' && !empty($temp_item->item_type2)) { $temp_type_class = $temp_item->item_type2; } // Now use the new object to generate a snapshot of this ability button if ($temp_button_enabled) { ?> <a data-order="<?php echo $temp_order_counter; ?> " class="button action_item ability_<?php echo $temp_item->item_token; ?> ability_type ability_type_<?php echo $temp_type_class; ?> block_<?php echo $equipped_items_count; ?> " type="button" data-action="ability_<?php echo $temp_item->item_id . '_' . $temp_item->item_token; ?> " data-tooltip="<?php echo $temp_item_details_tooltip; ?> " data-preload="<?php echo $temp_item_sprite['preload']; ?> " data-actualtarget="<?php echo $temp_item->item_target; ?> " data-target="<?php echo $temp_target; ?> "><label class=""><?php echo $temp_item_sprite['markup']; echo $temp_item_label; ?> </label></a><?php } else { ?> <a data-order="<?php echo $temp_order_counter; ?> " class="button button_disabled action_item ability_<?php echo $temp_item->item_token; ?> ability_type ability_type_<?php echo $temp_type_class; ?> block_<?php echo $equipped_items_count; ?> " type="button"><label class=""><?php echo $temp_item_sprite['markup']; echo $temp_item_label; ?> </label></a><?php } // Increment the order counter $temp_order_counter++; } $item_key++; } // If there were less than 8 items, fill in the empty spaces if ($equipped_items_count % 8 != 0) { $temp_padding_amount = 8 - $equipped_items_count % 8; $temp_last_key = $equipped_items_count + $temp_padding_amount; for ($i = $equipped_items_count; $i < $temp_last_key; $i++) { // Display an empty button placeholder ?> <a class="button action_item button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } ?> </div> <?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="battle"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a OPTION menu request // If this was a OPTION menu request case 'option': // Define the markup for the option buttons $temp_options = array(); // Display the option for returning to the main prototype menu $temp_options[] = '<a data-order="1" class="button action_option block_1 ability_type_space" type="button" data-action="prototype"><label><span class="multi">Return To<br />Main Menu</span></label></a>'; // Display an option for restarting this battle from scratch $temp_options[] = '<a data-order="2" class="button action_option block_2 ability_type_space" type="button" data-action="restart"><label><span class="multi">Restart<br />Mission</span></label></a>'; // Display an option for changing config settings //$temp_options[] = '<a class="button action_option block_3" type="button" data-panel="settings"><label><span class="multi">Settings<br />Menu</span></label></a>'; $temp_options[] = '<a data-order="3" class="button action_option block_3 ability_type_space" type="button" data-panel="settings_eventTimeout"><label><span class="multi">Message<br />Speed</span></label></a>'; $temp_options[] = '<a data-order="4" class="button action_option block_4 ability_type_space" type="button" onclick="parent.mmrpg_music_load(\'fields/' . $this_field->field_music . '/battle-field_background_music\', true);"><label><span class="multi">Restart<br />Music</span></label></a>'; // Display the toggle options for debug mode and stuff $current_debug_value = !empty($_SESSION['GAME']['debug_mode']) ? 1 : 0; $temp_options[] = '<a data-order="5" class="button action_option block_5 ability_type_space" type="button" onclick="mmrpg_toggle_debug_mode(this);" data-value="' . $current_debug_value . '"><label><span class="multi"><span class="title">Toggle Debug</span><br /><span class="value type ' . ($current_debug_value ? 'nature' : 'flame') . '">' . ($current_debug_value ? 'ON' : 'OFF') . '</span></span></label></a>'; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select Option</span><?php // Ensure there are options to display if (!empty($temp_options)) { // Count the total number of options $num_options = count($temp_options); // Loop through each option and display its button markup foreach ($temp_options as $key => $option_markup) { // Display the option button's generated markup echo $option_markup; } // If there were less than 6 options, fill in the empty spaces if ($num_options < 8) { for ($i = $num_options; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_option button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="7" class="button action_back" type="button" data-panel="battle"><label>Back</label></a></div><?php break; // If this was a SCAN menu request // If this was a SCAN menu request case 'scan': // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select Scan Target</span><?php // Ensure there are robots to display if (!empty($target_player->player_robots)) { // Loop through each robot and display its target button foreach ($target_player_robots as $robot_key => $robot_info) { // Ensure this robot has an ID before attempting to load if (!empty($robot_info['robot_id'])) { // Create the scan object using the session/index data $temp_robot = $this_battle->get_robot($robot_info['robot_id']); // Default the allow button flag to true $allow_button = true; // If this robot is disabled, disable the button if ($temp_robot->robot_status == 'disabled') { $allow_button = false; } // If this robot is not active, disable the button //if ($temp_robot->robot_position != 'active'){ $allow_button = false; } // Define the title hover for the robot $temp_robot_title = $temp_robot->robot_name . ' (Lv. ' . $temp_robot->robot_level . ')'; //$temp_robot_title .= ' | '.$temp_robot->robot_id.''; $temp_robot_title .= ' <br />' . (!empty($temp_robot->robot_core) ? ucfirst($temp_robot->robot_core) . ' Core' : 'Neutral Core') . ' | ' . ucfirst($temp_robot->robot_position) . ' Position'; // Display the robot's item if it exists if (!empty($temp_robot->robot_item)) { $temp_item = $temp_items_index[$temp_robot->robot_item]; $temp_robot_title .= ' | + ' . $temp_item['ability_name'] . ' '; } // Display the robot's life and weapon energy current and base $temp_robot_title .= ' <br />' . $temp_robot->robot_energy . ' / ' . $temp_robot->robot_base_energy . ' LE'; $temp_robot_title .= ' | ' . $temp_robot->robot_weapons . ' / ' . $temp_robot->robot_base_weapons . ' WE'; $temp_required_experience = rpg_prototype::calculate_experience_required($temp_robot->robot_level); if ($robot_direction == 'right' && $temp_robot->robot_class != 'mecha') { $temp_robot_title .= ' | ' . $temp_robot->robot_experience . ' / ' . $temp_required_experience . ' EXP'; } $temp_robot_title .= ' <br />' . $temp_robot->robot_attack . ' / ' . $temp_robot->robot_base_attack . ' AT'; $temp_robot_title .= ' | ' . $temp_robot->robot_defense . ' / ' . $temp_robot->robot_base_defense . ' DF'; $temp_robot_title .= ' | ' . $temp_robot->robot_speed . ' / ' . $temp_robot->robot_base_speed . ' SP'; // Generate alt formats for the robot title $temp_robot_title_plain = strip_tags(str_replace('<br />', ' ', $temp_robot_title)); $temp_robot_title_tooltip = htmlentities($temp_robot_title, ENT_QUOTES, 'UTF-8'); // Collect the robot's core types for display $temp_robot_core_type = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_core2_type = !empty($temp_robot->robot_core2) ? $temp_robot->robot_core2 : ''; if (!empty($temp_robot->robot_item) && preg_match('/^item-core-/', $temp_robot->robot_item)) { $temp_item_core_type = preg_replace('/^item-core-/', '', $temp_robot->robot_item); if (empty($temp_robot_core2_type) && $temp_robot_core_type != $temp_item_core_type) { $temp_robot_core2_type = $temp_item_core_type; } } // Define the robot button text variables $temp_robot_label = '<span class="multi">'; $temp_robot_label .= '<span class="maintext">' . $temp_robot->robot_name . '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= $temp_robot->robot_energy . '/' . $temp_robot->robot_base_energy . ' Energy'; $temp_robot_label .= '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= 'A:' . $temp_robot->robot_attack; $temp_robot_label .= ' '; $temp_robot_label .= 'D:' . $temp_robot->robot_defense; $temp_robot_label .= ' '; $temp_robot_label .= 'S:' . $temp_robot->robot_speed; $temp_robot_label .= '</span>'; $temp_robot_label .= '</span>'; // Define the robot sprite variables $temp_robot_sprite = array(); $temp_robot_sprite['name'] = $temp_robot->robot_name; $temp_robot_sprite['core'] = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_sprite['image'] = $temp_robot->robot_image; $temp_robot_sprite['image_size'] = $temp_robot->robot_image_size; $temp_robot_sprite['image_size_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['image_size_zoom'] = $temp_robot->robot_image_size * 2; $temp_robot_sprite['image_size_zoom_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['url'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_text'] . '.png'; $temp_robot_sprite['preload'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_zoom_text'] . '.png'; $temp_robot_sprite['class'] = 'sprite size' . $temp_robot_sprite['image_size'] . ' ' . ($temp_robot->robot_energy > 0 ? $temp_robot->robot_energy > $temp_robot->robot_base_energy / 2 ? 'base' : 'defend' : 'defeat') . ' '; $temp_robot_sprite['style'] = 'background-image: url(' . $temp_robot_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 6px; left: 5px; '; if ($temp_robot->robot_position == 'active') { $temp_robot_sprite['style'] .= 'border-color: #ababab; '; } $temp_energy_percent = ceil($temp_robot->robot_energy / $temp_robot->robot_base_energy * 100); if ($temp_energy_percent > 50) { $temp_robot_sprite['class'] .= 'energy high '; } elseif ($temp_energy_percent > 25) { $temp_robot_sprite['class'] .= 'energy medium '; } elseif ($temp_energy_percent > 0) { $temp_robot_sprite['class'] .= 'energy low '; } $temp_robot_sprite['markup'] = '<span class="' . $temp_robot_sprite['class'] . '" style="' . $temp_robot_sprite['style'] . '">' . $temp_robot_sprite['name'] . '</span>'; // Update the order button if necessary $order_button_markup = $allow_button ? 'data-order="' . $temp_order_counter . '"' : ''; $temp_order_counter += $allow_button ? 1 : 0; // Now use the new object to generate a snapshot of this switch button /*?><a <?= $order_button_markup?> title="<?= $temp_robot_title_plain?>" data-tooltip="<?= $temp_robot_title_tooltip?>" class="button <?= !$allow_button ? 'button_disabled' : '' ?> action_scan scan_<?= $temp_robot->robot_token ?> status_<?= $temp_robot->robot_status ?> robot_type robot_type_<?= !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none' ?> block_<?= $robot_key + 1 ?>" type="button" <?if($allow_button):?>data-action="scan_<?= $temp_robot->robot_id.'_'.$temp_robot->robot_token ?>"<?endif;?> data-preload="<?= $temp_robot_sprite['preload'] ?>"><label><?= $temp_robot_sprite['markup'] ?><?= $temp_robot_label ?></label></a><?*/ ?> <a class="button <?php echo !$allow_button ? 'button_disabled' : ''; ?> action_scan scan_<?php echo $temp_robot->robot_token; ?> status_<?php echo $temp_robot->robot_status; ?> robot_type robot_type_<?php echo $temp_robot_core_type . (!empty($temp_robot_core2_type) ? '_' . $temp_robot_core2_type : ''); ?> block_<?php echo $robot_key + 1; ?> " type="button" data-tooltip="<?php echo $temp_robot_title_tooltip; ?> " <?php echo $order_button_markup; ?> <?if($allow_button):?>data-action="scan_<?php echo $temp_robot->robot_id . '_' . $temp_robot->robot_token; ?> "<?endif;?> data-preload="<?php echo $temp_robot_sprite['preload']; ?> "><label><?php echo $temp_robot_sprite['markup']; echo $temp_robot_label; ?> </label></a><?php } } // If there were less than 8 robots, fill in the empty spaces if ($num_robots < 8) { for ($i = $num_robots; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_scan button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="battle"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a SWITCH menu request // If this was a SWITCH menu request case 'switch': // Check if the switch should be disabled $this_switch_disabled = false; if ($this_robot->robot_status != 'disabled' && $this_robot->robot_position == 'active' && !empty($this_robot->robot_attachments)) { foreach ($this_robot->robot_attachments as $attachment_token => $attachment_info) { if (isset($attachment_info['attachment_switch_disabled']) && $attachment_info['attachment_switch_disabled'] == 1) { $this_switch_disabled = true; } } } // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title" style="<?php echo !empty($this_player->flags['switch_used_this_turn']) ? 'text-decoration: line-through;' : ''; ?> ">Select Switch Target <?php echo $this_switch_disabled ? '(Disabled)' : ''; ?> </span><?php // Ensure there are robots to display if (!empty($this_player_robots)) { // Collect the target robot options and sort them $switch_robots_count = $this_player->counters['robots_active']; // Loop through each robot and display its switch button foreach ($this_player_robots as $robot_key => $robot_info) { // Ensure this robot has an ID before attempting to load if (!empty($robot_info['robot_id'])) { // Create the scan object using the session/index data $temp_robot = $this_battle->get_robot($robot_info['robot_id']); // Check if the switch should be disabled based on attachments on this robot $temp_switch_disabled = false; if ($temp_robot->robot_status != 'disabled' && !empty($temp_robot->robot_attachments)) { foreach ($temp_robot->robot_attachments as $attachment_token => $attachment_info) { if (!empty($attachment_info['attachment_switch_disabled'])) { $temp_switch_disabled = true; } } } // If the switch is not disabled yet and the robot status isn't disabled, disable it if ($this_switch_disabled && $this_robot->robot_status != 'disabled') { $temp_switch_disabled = true; } // If this player has already used a switch this turn if (!empty($this_player->flags['switch_used_this_turn'])) { $temp_switch_disabled = true; } // Default the allow button flag to true $allow_button = true; // If this robot is already out, disable the button if ($temp_robot->robot_position == 'active') { $allow_button = false; } // If this robot is disabled, disable the button if ($temp_robot->robot_status == 'disabled') { $allow_button = false; } // If this robot is the "active" one (maybe it was a force switch?) if ($switch_robots_count >= 2 && $temp_robot->robot_id == $this_robot->robot_id) { $allow_button = false; } // If the current robot has switching disabled if ($temp_switch_disabled) { $allow_button = false; } // Define the title hover for the robot $temp_robot_title = $temp_robot->robot_name . ' (Lv. ' . $temp_robot->robot_level . ')'; $temp_robot_title .= ' <br />' . (!empty($temp_robot->robot_core) ? ucfirst($temp_robot->robot_core) . ' Core' : 'Neutral Core') . ' | ' . ucfirst($temp_robot->robot_position) . ' Position'; // Display the robot's item if it exists if (!empty($temp_robot->robot_item)) { $temp_item = $temp_items_index[$temp_robot->robot_item]; $temp_robot_title .= ' | + ' . $temp_item['ability_name'] . ' '; } // Display the robot's life and weapon energy current and base $temp_robot_title .= ' <br />' . $temp_robot->robot_energy . ' / ' . $temp_robot->robot_base_energy . ' LE'; $temp_robot_title .= ' | ' . $temp_robot->robot_weapons . ' / ' . $temp_robot->robot_base_weapons . ' WE'; // Display the robot's experience points if on the player side $temp_required_experience = rpg_prototype::calculate_experience_required($temp_robot->robot_level); if ($robot_direction == 'right' && $temp_robot->robot_class != 'mecha') { $temp_robot_title .= ' | ' . $temp_robot->robot_experience . ' / ' . $temp_required_experience . ' EXP'; } $temp_robot_title .= ' <br />' . $temp_robot->robot_attack . ' / ' . $temp_robot->robot_base_attack . ' AT'; $temp_robot_title .= ' | ' . $temp_robot->robot_defense . ' / ' . $temp_robot->robot_base_defense . ' DF'; $temp_robot_title .= ' | ' . $temp_robot->robot_speed . ' / ' . $temp_robot->robot_base_speed . ' SP'; // Loop through this robot's current abilities and list them as well $temp_robot_title .= ' <br />'; foreach ($temp_robot->robot_abilities as $key => $token) { if (!isset($temp_abilities_index[$token])) { continue; } if ($key > 0 && $key % 4 != 0) { $temp_robot_title .= ' | '; } if ($key > 0 && $key % 4 == 0) { $temp_robot_title .= '<br /> '; } $info = $temp_abilities_index[$token]; $temp_robot_title .= $info['ability_name']; } // Encode the tooltip for markup insertion and create a plain one too $temp_robot_title_plain = strip_tags(str_replace('<br />', '//', $temp_robot_title)); $temp_robot_title_tooltip = htmlentities($temp_robot_title, ENT_QUOTES, 'UTF-8'); // Collect the robot's core types for display $temp_robot_core_type = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_core2_type = !empty($temp_robot->robot_core2) ? $temp_robot->robot_core2 : ''; if (!empty($temp_robot->robot_item) && preg_match('/^item-core-/', $temp_robot->robot_item)) { $temp_item_core_type = preg_replace('/^item-core-/', '', $temp_robot->robot_item); if (empty($temp_robot_core2_type) && $temp_robot_core_type != $temp_item_core_type) { $temp_robot_core2_type = $temp_item_core_type; } } // Define the robot button text variables $temp_robot_label = '<span class="multi">'; $temp_robot_label .= '<span class="maintext">' . $temp_robot->robot_name . '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= $temp_robot->robot_energy . '/' . $temp_robot->robot_base_energy . ' Energy'; $temp_robot_label .= '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= 'A:' . $temp_robot->robot_attack; $temp_robot_label .= ' '; $temp_robot_label .= 'D:' . $temp_robot->robot_defense; $temp_robot_label .= ' '; $temp_robot_label .= 'S:' . $temp_robot->robot_speed; $temp_robot_label .= '</span>'; $temp_robot_label .= '</span>'; // Define the robot sprite variables $temp_robot_sprite = array(); $temp_robot_sprite['name'] = $temp_robot->robot_name; $temp_robot_sprite['image'] = $temp_robot->robot_image; $temp_robot_sprite['image_size'] = $temp_robot->robot_image_size; $temp_robot_sprite['image_size_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['image_size_zoom'] = $temp_robot->robot_image_size * 2; $temp_robot_sprite['image_size_zoom_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['url'] = 'images/sprites/robots/' . $temp_robot->robot_image . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_text'] . '.png'; $temp_robot_sprite['preload'] = 'images/sprites/robots/' . $temp_robot->robot_image . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_zoom_text'] . '.png'; $temp_robot_sprite['class'] = 'sprite size' . $temp_robot_sprite['image_size'] . ' ' . ($temp_robot->robot_energy > 0 ? $temp_robot->robot_energy > $temp_robot->robot_base_energy / 2 ? 'base' : 'defend' : 'defeat') . ' '; $temp_robot_sprite['style'] = 'background-image: url(' . $temp_robot_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 5px; left: 5px; '; if ($temp_robot->robot_position == 'active') { $temp_robot_sprite['style'] .= 'border-color: #ababab; '; } $temp_energy_percent = ceil($temp_robot->robot_energy / $temp_robot->robot_base_energy * 100); if ($temp_energy_percent > 50) { $temp_robot_sprite['class'] .= 'energy high '; } elseif ($temp_energy_percent > 25) { $temp_robot_sprite['class'] .= 'energy medium '; } elseif ($temp_energy_percent > 0) { $temp_robot_sprite['class'] .= 'energy low '; } $temp_robot_sprite['markup'] = '<span class="' . $temp_robot_sprite['class'] . '" style="' . $temp_robot_sprite['style'] . '">' . $temp_robot_sprite['name'] . '</span>'; // Update the order button if necessary $order_button_markup = $allow_button ? 'data-order="' . $temp_order_counter . '"' : ''; $temp_order_counter += $allow_button ? 1 : 0; // Now use the new object to generate a snapshot of this switch button /*?><a <?= $order_button_markup?> title="<?= $temp_robot_title_plain?>" data-tooltip="<?= $temp_robot_title_tooltip?>" class="button <?= !$allow_button ? 'button_disabled' : '' ?> action_switch switch_<?= $temp_robot->robot_token ?> status_<?= $temp_robot->robot_status ?> robot_type robot_type_<?= !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none' ?> block_<?= $robot_key + 1 ?>" type="button" <?if($allow_button):?>data-action="switch_<?= $temp_robot->robot_id.'_'.$temp_robot->robot_token ?>"<?endif;?> data-preload="<?= $temp_robot_sprite['preload'] ?>"><label><?= $temp_robot_sprite['markup'] ?><?= $temp_robot_label ?></label></a><?*/ ?> <a <?php echo $order_button_markup; ?> data-key="<?php echo $temp_robot->robot_key; ?> " data-tooltip="<?php echo $temp_robot_title_tooltip; ?> " class="button <?php echo !$allow_button ? 'button_disabled' : ''; ?> action_switch switch_<?php echo $temp_robot->robot_token; ?> status_<?php echo $temp_robot->robot_status; ?> robot_type robot_type_<?php echo $temp_robot_core_type . (!empty($temp_robot_core2_type) ? '_' . $temp_robot_core2_type : ''); ?> block_<?php echo $robot_key + 1; ?> " type="button" <?if($allow_button):?>data-action="switch_<?php echo $temp_robot->robot_id . '_' . $temp_robot->robot_token; ?> "<?endif;?> data-preload="<?php echo $temp_robot_sprite['preload']; ?> "><label><?php echo $temp_robot_sprite['markup']; echo $temp_robot_label; ?> </label></a><?php } } // If there were less than 8 robots, fill in the empty spaces if ($num_robots < 8) { for ($i = $num_robots; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_switch button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default $allow_back_button = $this_robot->robot_position == 'active' && $this_robot->robot_status != 'disabled' ? true : false; ?> <div class="sub_actions"><a <?php echo $allow_back_button ? 'data-order="' . $temp_order_counter . '"' : ''; ?> class="button action_back <?php echo !$allow_back_button ? 'button_disabled' : ''; ?> " type="button" <?php echo $allow_back_button ? 'data-panel="battle"' : ''; ?> ><?php echo $allow_back_button ? '<label>Back</label>' : ' '; ?> </a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a TARGET (THIS) menu request // If this was a TARGET (THIS) menu request case 'target_this': // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select {thisPanel} Target</span><?php // Ensure there are robots to display if (!empty($this_player_robots)) { // Loop through each robot and display its target button foreach ($this_player_robots as $robot_key => $robot_info) { // Ensure this robot has a lookup ID if (!empty($robot_info['robot_id'])) { // Create the scan object using the session/index data $temp_robot = $this_battle->get_robot($robot_info['robot_id']); // Default the allow button flag to true $allow_button = true; // If this robot is disabled, disable the button if ($temp_robot->robot_status == 'disabled') { $allow_button = false; } // If this robot is not active, disable the button //if ($temp_robot->robot_position != 'active'){ $allow_button = false; } // Define the title hover for the robot $temp_robot_title = $temp_robot->robot_name . ' (Lv. ' . $temp_robot->robot_level . ')'; //$temp_robot_title .= ' | '.$temp_robot->robot_id.''; $temp_robot_title .= ' <br />' . (!empty($temp_robot->robot_core) ? ucfirst($temp_robot->robot_core) . ' Core' : 'Neutral Core') . ' | ' . ucfirst($temp_robot->robot_position) . ' Position'; // Display the robot's item if it exists if (!empty($temp_robot->robot_item)) { $temp_item = $temp_items_index[$temp_robot->robot_item]; $temp_robot_title .= ' | + ' . $temp_item['ability_name'] . ' '; } // Display the robot's life and weapon energy current and base $temp_robot_title .= ' <br />' . $temp_robot->robot_energy . ' / ' . $temp_robot->robot_base_energy . ' LE'; $temp_robot_title .= ' | ' . $temp_robot->robot_weapons . ' / ' . $temp_robot->robot_base_weapons . ' WE'; $temp_required_experience = rpg_prototype::calculate_experience_required($temp_robot->robot_level); if ($robot_direction == 'right' && $temp_robot->robot_class != 'mecha') { $temp_robot_title .= ' | ' . $temp_robot->robot_experience . ' / ' . $temp_required_experience . ' EXP'; } $temp_robot_title .= ' <br />' . $temp_robot->robot_attack . ' / ' . $temp_robot->robot_base_attack . ' AT'; $temp_robot_title .= ' | ' . $temp_robot->robot_defense . ' / ' . $temp_robot->robot_base_defense . ' DF'; $temp_robot_title .= ' | ' . $temp_robot->robot_speed . ' / ' . $temp_robot->robot_base_speed . ' SP'; // Loop through this robot's current abilities and list them as well $temp_robot_title .= ' <br />'; foreach ($temp_robot->robot_abilities as $key => $token) { if (!isset($temp_abilities_index[$token])) { continue; } if ($key > 0 && $key % 4 != 0) { $temp_robot_title .= ' | '; } if ($key > 0 && $key % 4 == 0) { $temp_robot_title .= '<br /> '; } $info = $temp_abilities_index[$token]; $temp_robot_title .= $info['ability_name']; } // Encode the tooltip for markup insertion and create a plain one too $temp_robot_title_plain = strip_tags(str_replace('<br />', '//', $temp_robot_title)); $temp_robot_title_tooltip = htmlentities($temp_robot_title, ENT_QUOTES, 'UTF-8'); // Collect the robot's core types for display $temp_robot_core_type = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_core2_type = !empty($temp_robot->robot_core2) ? $temp_robot->robot_core2 : ''; if (!empty($temp_robot->robot_item) && preg_match('/^item-core-/', $temp_robot->robot_item)) { $temp_item_core_type = preg_replace('/^item-core-/', '', $temp_robot->robot_item); if (empty($temp_robot_core2_type) && $temp_robot_core_type != $temp_item_core_type) { $temp_robot_core2_type = $temp_item_core_type; } } // Define the robot button text variables $temp_robot_label = '<span class="multi">'; $temp_robot_label .= '<span class="maintext">' . $temp_robot->robot_name . '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= $temp_robot->robot_energy . '/' . $temp_robot->robot_base_energy . ' Energy'; $temp_robot_label .= '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= 'A:' . $temp_robot->robot_attack; $temp_robot_label .= ' '; $temp_robot_label .= 'D:' . $temp_robot->robot_defense; $temp_robot_label .= ' '; $temp_robot_label .= 'S:' . $temp_robot->robot_speed; $temp_robot_label .= '</span>'; $temp_robot_label .= '</span>'; // Define the robot sprite variables $temp_robot_sprite = array(); $temp_robot_sprite['name'] = $temp_robot->robot_name; $temp_robot_sprite['core'] = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_sprite['image'] = $temp_robot->robot_image; $temp_robot_sprite['image_size'] = $temp_robot->robot_image_size; $temp_robot_sprite['image_size_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['image_size_zoom'] = $temp_robot->robot_image_size * 2; $temp_robot_sprite['image_size_zoom_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['url'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_text'] . '.png'; $temp_robot_sprite['class'] = 'sprite size' . $temp_robot_sprite['image_size'] . ' ' . ($temp_robot->robot_energy > 0 ? $temp_robot->robot_energy > $temp_robot->robot_base_energy / 2 ? 'base' : 'defend' : 'defeat') . ' '; $temp_robot_sprite['style'] = 'background-image: url(' . $temp_robot_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 6px; left: 5px; '; if ($temp_robot->robot_position == 'active') { $temp_robot_sprite['style'] .= 'border-color: #ababab; '; } $temp_energy_percent = ceil($temp_robot->robot_energy / $temp_robot->robot_base_energy * 100); if ($temp_energy_percent > 50) { $temp_robot_sprite['class'] .= 'energy high '; } elseif ($temp_energy_percent > 25) { $temp_robot_sprite['class'] .= 'energy medium '; } elseif ($temp_energy_percent > 0) { $temp_robot_sprite['class'] .= 'energy low '; } $temp_robot_sprite['markup'] = '<span class="' . $temp_robot_sprite['class'] . '" style="' . $temp_robot_sprite['style'] . '">' . $temp_robot_sprite['name'] . '</span>'; // Update the order button if necessary $order_button_markup = $allow_button ? 'data-order="' . $temp_order_counter . '"' : ''; $temp_order_counter += $allow_button ? 1 : 0; // Now use the new object to generate a snapshot of this target button ?> <a <?php echo $order_button_markup; ?> data-tooltip="<?php echo $temp_robot_title_tooltip; ?> " class="button <?php echo !$allow_button ? 'button_disabled' : ''; ?> action_target target_<?php echo $temp_robot->robot_token; ?> status_<?php echo $temp_robot->robot_status; ?> robot_type robot_type_<?php echo $temp_robot_core_type . (!empty($temp_robot_core2_type) ? '_' . $temp_robot_core2_type : ''); ?> block_<?php echo $robot_key + 1; ?> " type="button" <?if($allow_button):?>data-action="target_<?php echo $temp_robot->robot_id . '_' . $temp_robot->robot_token; ?> "<?endif;?>><label><?php echo $temp_robot_sprite['markup']; echo $temp_robot_label; ?> </label></a><?php } } // If there were less than 8 robots, fill in the empty spaces if ($num_robots < 8) { for ($i = $num_robots; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_target button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="ability"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a TARGET (TARGET) menu request // If this was a TARGET (TARGET) menu request case 'target_target': // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select {thisPanel} Target</span><?php // Ensure there are robots to display if (!empty($target_player_robots)) { // Loop through each robot and display its target button foreach ($target_player_robots as $robot_key => $robot_info) { // Ensure this robot has a lookup ID if (!empty($robot_info['robot_id'])) { // Create the scan object using the session/index data $temp_robot = $this_battle->get_robot($robot_info['robot_id']); // Default the allow button flag to true $allow_button = true; // If this robot is disabled, disable the button if ($temp_robot->robot_status == 'disabled') { $allow_button = false; } // If this robot is not active, disable the button //if ($temp_robot->robot_position != 'active'){ $allow_button = false; } // Define the title hover for the robot $temp_robot_title = $temp_robot->robot_name . ' (Lv. ' . $temp_robot->robot_level . ')'; //$temp_robot_title .= ' | '.$temp_robot->robot_id.''; $temp_robot_title .= ' <br />' . (!empty($temp_robot->robot_core) ? ucfirst($temp_robot->robot_core) . ' Core' : 'Neutral Core') . ' | ' . ucfirst($temp_robot->robot_position) . ' Position'; // Display the robot's item if it exists if (!empty($temp_robot->robot_item)) { $temp_item = $temp_items_index[$temp_robot->robot_item]; $temp_robot_title .= ' | + ' . $temp_item['ability_name'] . ' '; } // Display the robot's life and weapon energy current and base $temp_robot_title .= ' <br />' . $temp_robot->robot_energy . ' / ' . $temp_robot->robot_base_energy . ' LE'; $temp_robot_title .= ' | ' . $temp_robot->robot_weapons . ' / ' . $temp_robot->robot_base_weapons . ' WE'; $temp_required_experience = rpg_prototype::calculate_experience_required($temp_robot->robot_level); if ($robot_direction == 'right' && $temp_robot->robot_class != 'mecha') { $temp_robot_title .= ' | ' . $temp_robot->robot_experience . ' / ' . $temp_required_experience . ' EXP'; } $temp_robot_title .= ' <br />' . $temp_robot->robot_attack . ' / ' . $temp_robot->robot_base_attack . ' AT'; $temp_robot_title .= ' | ' . $temp_robot->robot_defense . ' / ' . $temp_robot->robot_base_defense . ' DF'; $temp_robot_title .= ' | ' . $temp_robot->robot_speed . ' / ' . $temp_robot->robot_base_speed . ' SP'; $temp_robot_title_plain = strip_tags(str_replace('<br />', ' ', $temp_robot_title)); $temp_robot_title_tooltip = htmlentities($temp_robot_title, ENT_QUOTES, 'UTF-8'); // Collect the robot's core types for display $temp_robot_core_type = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_core2_type = !empty($temp_robot->robot_core2) ? $temp_robot->robot_core2 : ''; if (!empty($temp_robot->robot_item) && preg_match('/^item-core-/', $temp_robot->robot_item)) { $temp_item_core_type = preg_replace('/^item-core-/', '', $temp_robot->robot_item); if (empty($temp_robot_core2_type) && $temp_robot_core_type != $temp_item_core_type) { $temp_robot_core2_type = $temp_item_core_type; } } // Define the robot button text variables $temp_robot_label = '<span class="multi">'; $temp_robot_label .= '<span class="maintext">' . $temp_robot->robot_name . '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= $temp_robot->robot_energy . '/' . $temp_robot->robot_base_energy . ' Energy'; $temp_robot_label .= '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= 'A:' . $temp_robot->robot_attack; $temp_robot_label .= ' '; $temp_robot_label .= 'D:' . $temp_robot->robot_defense; $temp_robot_label .= ' '; $temp_robot_label .= 'S:' . $temp_robot->robot_speed; $temp_robot_label .= '</span>'; $temp_robot_label .= '</span>'; // Define the robot sprite variables $temp_robot_sprite = array(); $temp_robot_sprite['name'] = $temp_robot->robot_name; $temp_robot_sprite['core'] = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_sprite['image'] = $temp_robot->robot_image; $temp_robot_sprite['image_size'] = $temp_robot->robot_image_size; $temp_robot_sprite['image_size_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['image_size_zoom'] = $temp_robot->robot_image_size * 2; $temp_robot_sprite['image_size_zoom_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['url'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_text'] . '.png'; $temp_robot_sprite['preload'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_zoom_text'] . '.png'; $temp_robot_sprite['class'] = 'sprite size' . $temp_robot_sprite['image_size'] . ' ' . ($temp_robot->robot_energy > 0 ? $temp_robot->robot_energy > $temp_robot->robot_base_energy / 2 ? 'base' : 'defend' : 'defeat') . ' '; $temp_robot_sprite['style'] = 'background-image: url(' . $temp_robot_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 6px; left: 5px; '; if ($temp_robot->robot_position == 'active') { $temp_robot_sprite['style'] .= 'border-color: #ababab; '; } $temp_energy_percent = ceil($temp_robot->robot_energy / $temp_robot->robot_base_energy * 100); if ($temp_energy_percent > 50) { $temp_robot_sprite['class'] .= 'energy high '; } elseif ($temp_energy_percent > 25) { $temp_robot_sprite['class'] .= 'energy medium '; } elseif ($temp_energy_percent > 0) { $temp_robot_sprite['class'] .= 'energy low '; } $temp_robot_sprite['markup'] = '<span class="' . $temp_robot_sprite['class'] . '" style="' . $temp_robot_sprite['style'] . '">' . $temp_robot_sprite['name'] . '</span>'; // Update the order button if necessary $order_button_markup = $allow_button ? 'data-order="' . $temp_order_counter . '"' : ''; $temp_order_counter += $allow_button ? 1 : 0; // Now use the new object to generate a snapshot of this target button /*?><a <?= $order_button_markup?> title="<?= $temp_robot_title_plain?>" data-tooltip="<?= $temp_robot_title_tooltip?>" class="button <?= !$allow_button ? 'button_disabled' : '' ?> action_target target_<?= $temp_robot->robot_token ?> status_<?= $temp_robot->robot_status ?> robot_type robot_type_<?= !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none' ?> block_<?= $robot_key + 1 ?>" type="button" <?if($allow_button):?>data-action="target_<?= $temp_robot->robot_id.'_'.$temp_robot->robot_token ?>"<?endif;?> data-preload="<?= $temp_robot_sprite['preload'] ?>"><label><?= $temp_robot_sprite['markup'] ?><?= $temp_robot_label ?></label></a><?*/ ?> <a <?php echo $order_button_markup; ?> data-tooltip="<?php echo $temp_robot_title_tooltip; ?> " class="button <?php echo !$allow_button ? 'button_disabled' : ''; ?> action_target target_<?php echo $temp_robot->robot_token; ?> status_<?php echo $temp_robot->robot_status; ?> robot_type robot_type_<?php echo $temp_robot_core_type . (!empty($temp_robot_core2_type) ? '_' . $temp_robot_core2_type : ''); ?> block_<?php echo $robot_key + 1; ?> " type="button" <?if($allow_button):?>data-action="target_<?php echo $temp_robot->robot_id . '_' . $temp_robot->robot_token; ?> "<?endif;?> data-preload="<?php echo $temp_robot_sprite['preload']; ?> "><label><?php echo $temp_robot_sprite['markup']; echo $temp_robot_label; ?> </label></a><?php } } // If there were less than 8 robots, fill in the empty spaces if ($num_robots < 8) { for ($i = $num_robots; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_target button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="ability"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a TARGET (THIS, DISABLED) menu request // If this was a TARGET (THIS, DISABLED) menu request case 'target_this_disabled': // Define and start the order counter $temp_order_counter = 1; // Display container for the main actions ?> <div class="main_actions main_actions_hastitle"><span class="main_actions_title">Select {thisPanel} Target</span><?php // Ensure there are robots to display if (!empty($this_player_robots)) { // Loop through each robot and display its target button foreach ($this_player_robots as $robot_key => $scan_robotinfo) { // Ensure this is an actual switch in the index if (!empty($switch_robotinfo['robot_token'])) { // Create the scan object using the session/index data $temp_robot = new rpg_robot($this_player, $scan_robotinfo); // Default the allow button flag to true $allow_button = false; // If this robot is disabled, disable the button if ($temp_robot->robot_status == 'disabled') { $allow_button = true; } // If this robot is not active, disable the button //if ($temp_robot->robot_position != 'active'){ $allow_button = false; } // Define the title hover for the robot $temp_robot_title = $temp_robot->robot_name . ' (Lv. ' . $temp_robot->robot_level . ')'; //$temp_robot_title .= ' | '.$temp_robot->robot_id.''; $temp_robot_title .= ' <br />' . (!empty($temp_robot->robot_core) ? ucfirst($temp_robot->robot_core) . ' Core' : 'Neutral Core') . ' | ' . ucfirst($temp_robot->robot_position) . ' Position'; // Display the robot's item if it exists if (!empty($temp_robot->robot_item)) { $temp_item = $temp_items_index[$temp_robot->robot_item]; $temp_robot_title .= ' | + ' . $temp_item['ability_name'] . ' '; } // Display the robot's life and weapon energy current and base $temp_robot_title .= ' <br />' . $temp_robot->robot_energy . ' / ' . $temp_robot->robot_base_energy . ' LE'; $temp_robot_title .= ' | ' . $temp_robot->robot_weapons . ' / ' . $temp_robot->robot_base_weapons . ' WE'; $temp_required_experience = rpg_prototype::calculate_experience_required($temp_robot->robot_level); if ($robot_direction == 'right' && $temp_robot->robot_class != 'mecha') { $temp_robot_title .= ' | ' . $temp_robot->robot_experience . ' / ' . $temp_required_experience . ' EXP'; } $temp_robot_title .= ' <br />' . $temp_robot->robot_attack . ' / ' . $temp_robot->robot_base_attack . ' AT'; $temp_robot_title .= ' | ' . $temp_robot->robot_defense . ' / ' . $temp_robot->robot_base_defense . ' DF'; $temp_robot_title .= ' | ' . $temp_robot->robot_speed . ' / ' . $temp_robot->robot_base_speed . ' SP'; // Loop through this robot's current abilities and list them as well $temp_robot_title .= ' <br />'; foreach ($temp_robot->robot_abilities as $key => $token) { if (!isset($temp_abilities_index[$token])) { continue; } if ($key > 0 && $key % 4 != 0) { $temp_robot_title .= ' | '; } if ($key > 0 && $key % 4 == 0) { $temp_robot_title .= '<br /> '; } $info = $temp_abilities_index[$token]; $temp_robot_title .= $info['ability_name']; } // Encode the tooltip for markup insertion and create a plain one too $temp_robot_title_plain = strip_tags(str_replace('<br />', '//', $temp_robot_title)); $temp_robot_title_tooltip = htmlentities($temp_robot_title, ENT_QUOTES, 'UTF-8'); // Collect the robot's core types for display $temp_robot_core_type = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_core2_type = !empty($temp_robot->robot_core2) ? $temp_robot->robot_core2 : ''; if (!empty($temp_robot->robot_item) && preg_match('/^item-core-/', $temp_robot->robot_item)) { $temp_item_core_type = preg_replace('/^item-core-/', '', $temp_robot->robot_item); if (empty($temp_robot_core2_type) && $temp_robot_core_type != $temp_item_core_type) { $temp_robot_core2_type = $temp_item_core_type; } } // Define the robot button text variables $temp_robot_label = '<span class="multi">'; $temp_robot_label .= '<span class="maintext">' . $temp_robot->robot_name . '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= $temp_robot->robot_energy . '/' . $temp_robot->robot_base_energy . ' Energy'; $temp_robot_label .= '</span>'; $temp_robot_label .= '<span class="subtext">'; $temp_robot_label .= 'A:' . $temp_robot->robot_attack; $temp_robot_label .= ' '; $temp_robot_label .= 'D:' . $temp_robot->robot_defense; $temp_robot_label .= ' '; $temp_robot_label .= 'S:' . $temp_robot->robot_speed; $temp_robot_label .= '</span>'; $temp_robot_label .= '</span>'; // Define the robot sprite variables $temp_robot_sprite = array(); $temp_robot_sprite['name'] = $temp_robot->robot_name; $temp_robot_sprite['core'] = !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none'; $temp_robot_sprite['image'] = $temp_robot->robot_image; $temp_robot_sprite['image_size'] = $temp_robot->robot_image_size; $temp_robot_sprite['image_size_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['image_size_zoom'] = $temp_robot->robot_image_size * 2; $temp_robot_sprite['image_size_zoom_text'] = $temp_robot_sprite['image_size'] . 'x' . $temp_robot_sprite['image_size']; $temp_robot_sprite['url'] = 'images/sprites/robots/' . $temp_robot_sprite['image'] . '/sprite_' . $robot_direction . '_' . $temp_robot_sprite['image_size_text'] . '.png'; $temp_robot_sprite['class'] = 'sprite size' . $temp_robot_sprite['image_size'] . ' ' . ($temp_robot->robot_energy > 0 ? $temp_robot->robot_energy > $temp_robot->robot_base_energy / 2 ? 'base' : 'defend' : 'defeat') . ' '; $temp_robot_sprite['style'] = 'background-image: url(' . $temp_robot_sprite['url'] . '?' . MMRPG_CONFIG_CACHE_DATE . '); top: 6px; left: 5px; '; if ($temp_robot->robot_position == 'active') { $temp_robot_sprite['style'] .= 'border-color: #ababab; '; } $temp_energy_percent = ceil($temp_robot->robot_energy / $temp_robot->robot_base_energy * 100); if ($temp_energy_percent > 50) { $temp_robot_sprite['class'] .= 'energy high '; } elseif ($temp_energy_percent > 25) { $temp_robot_sprite['class'] .= 'energy medium '; } elseif ($temp_energy_percent > 0) { $temp_robot_sprite['class'] .= 'energy low '; } $temp_robot_sprite['markup'] = '<span class="' . $temp_robot_sprite['class'] . '" style="' . $temp_robot_sprite['style'] . '">' . $temp_robot_sprite['name'] . '</span>'; // Update the order button if necessary $order_button_markup = $allow_button ? 'data-order="' . $temp_order_counter . '"' : ''; $temp_order_counter += $allow_button ? 1 : 0; // Now use the new object to generate a snapshot of this target button /*?><a <?= $order_button_markup?> title="<?= $temp_robot_title_plain?>" data-tooltip="<?= $temp_robot_title_tooltip?>" class="button <?= !$allow_button ? 'button_disabled' : '' ?> action_target target_<?= $temp_robot->robot_token ?> status_<?= $temp_robot->robot_status ?> robot_type robot_type_<?= !empty($temp_robot->robot_core) ? $temp_robot->robot_core : 'none' ?> block_<?= $robot_key + 1 ?>" type="button" <?if($allow_button):?>data-action="target_<?= $temp_robot->robot_id.'_'.$temp_robot->robot_token ?>"<?endif;?>><label><?= $temp_robot_sprite['markup'] ?><?= $temp_robot_label ?></label></a><?*/ ?> <a <?php echo $order_button_markup; ?> data-tooltip="<?php echo $temp_robot_title_tooltip; ?> " class="button <?php echo !$allow_button ? 'button_disabled' : ''; ?> action_target target_<?php echo $temp_robot->robot_token; ?> status_<?php echo $temp_robot->robot_status; ?> robot_type robot_type_<?php echo $temp_robot_core_type . (!empty($temp_robot_core2_type) ? '_' . $temp_robot_core2_type : ''); ?> block_<?php echo $robot_key + 1; ?> " type="button" <?if($allow_button):?>data-action="target_<?php echo $temp_robot->robot_id . '_' . $temp_robot->robot_token; ?> "<?endif;?>><label><?php echo $temp_robot_sprite['markup']; echo $temp_robot_label; ?> </label></a><?php } } // If there were less than 8 robots, fill in the empty spaces if ($num_robots < 8) { for ($i = $num_robots; $i < 8; $i++) { // Display an empty button placeholder ?> <a class="button action_target button_disabled block_<?php echo $i + 1; ?> " type="button"> </a><?php } } } // End the main action container tag ?> </div><?php // Display the back button by default ?> <div class="sub_actions"><a data-order="<?php echo $temp_order_counter; ?> " class="button action_back" type="button" data-panel="ability"><label>Back</label></a></div><?php // Increment the order counter $temp_order_counter++; break; // If this was a COMPLETE menu request // If this was a COMPLETE menu request case 'complete': // If the current robot is not disabled (WE WIN!) if ($this_player->counters['robots_active'] > 0) { // Display available main actions ?> <div class="main_actions"><?php ?> <a class="button action_ability" data-action="prototype" type="button" data-order="1"><label>Mission Complete!</label></a><?php ?> </div><?php // Display the available sub options ?> <div class="sub_actions"><?php ?> <a class="button action_scan button_disabled" type="button"> </a><?php ?> <a class="button action_item button_disabled" type="button"> </a><?php ?> <a class="button action_option button_disabled" type="button"> </a><?php ?> <a class="button action_switch button_disabled" type="button"> </a><?php ?> </div><?php } else { // Display available main actions ?> <div class="main_actions"><?php ?> <a class="button action_ability button_disabled" type="button"><label>Mission Failure…</label></a><?php ?> </div><?php // Display the available sub options ?> <div class="sub_actions"><?php ?> <a class="button action_scan button_disabled" type="button"> </a><?php ?> <a class="button action_item" data-action="prototype" type="button" data-order="1"><label>Exit Mission</label></a><?php ?> <a class="button action_option" data-action="restart" type="button" data-order="2"><label>Restart Mission</label></a><?php ?> <a class="button action_switch button_disabled" type="button"> </a><?php ?> </div><?php } break; } // Collect generated markup, compress, and return $menu_markup = trim(ob_get_clean()); $menu_markup = preg_replace('#\\s+#', ' ', $menu_markup); return $menu_markup; }