diff --git a/system/pages/characters.php b/system/pages/characters.php
index 786b17b9..ea6db47d 100644
--- a/system/pages/characters.php
+++ b/system/pages/characters.php
@@ -120,581 +120,576 @@ if(empty($name))
 
 $name = str_replace('/', '', $name);
 
-if(check_name($name))
+$oldName = '';
+
+$player = $ots->createObject('Player');
+$player->find($name);
+if(!$player->isLoaded())
 {
-	$oldName = '';
-
-	$player = $ots->createObject('Player');
-	$player->find($name);
-	if(!$player->isLoaded())
+	$tmp_zmienna = "";
+	$tmp_name = retrieve_former_name($name);
+	while(!empty($tmp_name))
 	{
-		$tmp_zmienna = "";
-		$tmp_name = retrieve_former_name($name);
-		while(!empty($tmp_name))
-		{
-			$tmp_zmienna = $tmp_name;
-			$tmp_name = retrieve_former_name($tmp_zmienna);
-		}
-
-		if(!empty($tmp_zmienna))
-			$player->find($tmp_zmienna);
+		$tmp_zmienna = $tmp_name;
+		$tmp_name = retrieve_former_name($tmp_zmienna);
 	}
 
-	if($player->isLoaded() && !$player->isDeleted())
-	{
-		$title = $player->getName() . ' - ' . $title;
-		$account = $player->getAccount();
-		$rows = 0;
+	if(!empty($tmp_zmienna))
+		$player->find($tmp_zmienna);
+}
+
+if($player->isLoaded() && !$player->isDeleted())
+{
+	$title = $player->getName() . ' - ' . $title;
+	$account = $player->getAccount();
+	$rows = 0;
 ?>
-		<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
-			<td><img src="<?php echo $template_path; ?>/images/general/blank.gif" width="10" height="1" border="0"></td>
-			<td>
-				<table border="0" cellspacing="1" cellpadding="4" width="100%">
-					<tr bgcolor="<?php echo $config['vdarkborder']; ?>">
-						<td colspan="2" class="white"><b>Character Information</b></td>
-					</tr>
+	<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
+		<td><img src="<?php echo $template_path; ?>/images/general/blank.gif" width="10" height="1" border="0"></td>
+		<td>
+			<table border="0" cellspacing="1" cellpadding="4" width="100%">
+				<tr bgcolor="<?php echo $config['vdarkborder']; ?>">
+					<td colspan="2" class="white"><b>Character Information</b></td>
+				</tr>
 
-					<?php
-					$flag = '';
-					if($config['account_country'])
-						$flag = getFlagImage($account->getCustomField('country'));
-
-					echo
-					'<TR BGCOLOR="' . getStyle(++$rows) . '">'.
-						'<TD WIDTH=20%>Name:</TD>
-						<TD>' . $flag . ' <font color="'.($player->isOnline() ? 'green' : 'red').'"><b>'.$player->getName().'</b></font>'.$oldName.
-					'</TD></TR>';
-
-					echo
-					'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Sex:</TD><TD>'.
-					($player->getSex() == 0 ? 'female' : 'male').
-					'</TD></TR>';
-
-				if($config['characters']['marriage_info'] && fieldExist('marriage', 'players'))
-				{
-					echo
-						'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Marital status:</TD><TD>';
-					$marriage = new OTS_Player();
-					$marriage->load($player->getMarriage());
-					if($marriage->isLoaded())
-						echo 'married to ' . getPlayerLink($marriage->getName());
-					else
-						echo 'single';
-					echo
-						'</TD></TR>';
-				}
+				<?php
+				$flag = '';
+				if($config['account_country'])
+					$flag = getFlagImage($account->getCustomField('country'));
 
 				echo
-					'<TR BGCOLOR="' . getStyle(++$rows). '">'.
-						'<TD>Profession:</TD><TD>' . $config['vocations'][$player->getVocation()] . '</TD>'.
-					'</TR>';
-
-				if($config['characters']['level'])
-					echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Level:</TD><TD>'.$player->getLevel().'</TD></TR>';
-
-				if($config['characters']['experience'])
-					echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Experience:</TD><TD>'.$player->getExperience().'</TD></TR>';
-
-				if($config['characters']['magic_level'])
-					echo'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Magic Level:</TD><TD>'.$player->getMagLevel().'</TD></TR>';
-
-				//frags
-				if(tableExist('player_killers') && $config['characters']['frags']) {
-					$frags_count = 0;
-					$frags_query = $db->query(
-						'SELECT COUNT(`player_id`) as `frags`' .
-						'FROM `player_killers`' .
-						'WHERE `player_id` = ' .$player->getId() . ' ' .
-						'GROUP BY `player_id`' .
-						'ORDER BY COUNT(`player_id`) DESC');
-
-					if($frags_query->rowCount() > 0)
-					{
-						$frags_query = $frags_query->fetch();
-						$frags_count = $frags_query['frags'];
-					}
-
-					echo
-					'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Frags:</TD><TD>' . $frags_count . '</TD></TR>';
-				}
-
-				if(!empty($config['towns'][$player->getTownId()]))
-					echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Residence:</TD><TD>' . $config['towns'][$player->getTownId()] . '</TD></TR>';
-
-				if($config['characters']['balance'])
-					echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Balance:</TD><TD>'.$player->getBalance().' Gold Coins.</TD></TR>';
-
-				$town_field = 'town';
-				if(fieldExist('town_id', 'houses'))
-					$town_field = 'town_id';
-				else if(fieldExist('townid', 'houses'))
-					$town_field = 'townid';
-				
-				$house = $db->query('SELECT `id`, `paid`, `name`, `' . $town_field . '` FROM `houses` WHERE `owner` = '.$player->getId())->fetch();
-				if(isset($house['id']))
-				{
-					if($house['paid'] > 0)
-						$add = ' is paid until '.date("M d Y", $house['paid']);
-
-					echo
-					'<TR BGCOLOR="'.getStyle(++$rows).'">
-						<TD>House:</TD>
-						<TD>
-							<TABLE BORDER=0><TR>
-								<TD>'.$house['name'].' ('.$config['towns'][$house[$town_field]].')'.$add.'</TD>
-								<TD>
-									<FORM ACTION="?subtopic=houses&page=view" METHOD=post>
-										<INPUT TYPE=hidden NAME=house VALUE="'.$house['name'].'">
-										<INPUT TYPE=image NAME="View" ALT="View" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120>
-									</FORM>
-								</TD>
-							</TR></TABLE>
-						</TD>
-					</TR>';
-				}
-
-				$rank_of_player = $player->getRank();
-				if($rank_of_player->isLoaded()) {
-					$guild = $rank_of_player->getGuild();
-					if($guild->isLoaded()) {
-						$guild_name = $guild->getName();
-						echo
-						'<TR BGCOLOR="'.getStyle(++$rows).'">'.
-							'<TD>Guild membership:</TD><TD>'.$rank_of_player->getName().' of the ' . getGuildLink($guild_name) . '</TD>'.
-						'</TR>';
-					}
-				}
+				'<TR BGCOLOR="' . getStyle(++$rows) . '">'.
+					'<TD WIDTH=20%>Name:</TD>
+					<TD>' . $flag . ' <font color="'.($player->isOnline() ? 'green' : 'red').'"><b>'.$player->getName().'</b></font>'.$oldName.
+				'</TD></TR>';
 
 				echo
-					'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Last login:</TD><TD>';
-				$lastlogin = $player->getLastLogin();
-				if(empty($lastlogin))
-					echo 'Never logged in.';
+				'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Sex:</TD><TD>'.
+				($player->getSex() == 0 ? 'female' : 'male').
+				'</TD></TR>';
+
+			if($config['characters']['marriage_info'] && fieldExist('marriage', 'players'))
+			{
+				echo
+					'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Marital status:</TD><TD>';
+				$marriage = new OTS_Player();
+				$marriage->load($player->getMarriage());
+				if($marriage->isLoaded())
+					echo 'married to ' . getPlayerLink($marriage->getName());
 				else
-					echo date("M d Y, H:i:s", $lastlogin).' CEST';
-
-				echo '</TD></TR>';
-				if($config['characters']['creation_date'])
-					echo
-					'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Created:</TD><TD>'.date("M d Y, H:i:s", $player->getCreated()).' CEST</TD></TR>';
-
-			$comment = $player->getComment();/*
-			$newlines   = array("\r\n", "\n", "\r");
-			$comment_with_lines = str_replace($newlines, '<br />', $comment, $count);
-			if($count < 50)
-				$comment = $comment_with_lines;*/
-			if(!empty($comment))
-				echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD VALIGN=top>Comment:</TD><TD>' . wordwrap(nl2br($comment), 60, "<br />", true) . '</TD></TR>';
+					echo 'single';
+				echo
+					'</TD></TR>';
+			}
 
 			echo
-					'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Account Status:</TD><TD>' . (($account->isPremium()) ? 'Premium Account' : 'Free Account') . '</TD></TR>'.
-				'</TABLE>';
+				'<TR BGCOLOR="' . getStyle(++$rows). '">'.
+					'<TD>Profession:</TD><TD>' . $config['vocations'][$player->getVocation()] . '</TD>'.
+				'</TR>';
 
-		echo '<br>'.
-				'<TABLE BORDER=0 WIDTH=100%><TR>';
+			if($config['characters']['level'])
+				echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Level:</TD><TD>'.$player->getLevel().'</TD></TR>';
 
-					if($config['characters']['skills'])
-					{
-						if(fieldExist('skill_fist', 'players')) {// tfs 1.0+
-							$skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch();
-							
-							$skill_ids = array(
-								POT::SKILL_FIST => 'skill_fist',
-								POT::SKILL_CLUB => 'skill_club',
-								POT::SKILL_SWORD => 'skill_sword',
-								POT::SKILL_AXE => 'skill_axe',
-								POT::SKILL_DIST => 'skill_dist',
-								POT::SKILL_SHIELD => 'skill_shielding',
-								POT::SKILL_FISH => 'skill_fishing',
-							);
-							
-							$skills = array();
-							foreach($skill_ids as $skillid => $field_name) {
-								$skills[] = array('skillid' => $skillid, 'value' => $skills_db[$field_name]);
-							}
-						}
-						else
-							$skills = $db->query('SELECT `skillid`, `value` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' LIMIT 7');
-						echo '
-						<TD WIDTH=30% VALIGN="TOP">'.
-							'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
-								<TR BGCOLOR='.$config['vdarkborder'].'>
-									<TD COLSPAN=2 class="white"><B>Skills</B></TD>
-								</TR>';
+			if($config['characters']['experience'])
+				echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Experience:</TD><TD>'.$player->getExperience().'</TD></TR>';
 
-							$i = 0;
-							foreach($skills as $skill)
-							{
-								echo
-								'<TR BGCOLOR=' . getStyle(++$i) . '>
-									<TD VALIGN=top>' . getSkillName($skill['skillid']) . '</TD>
-									<TD>' . $skill['value'] . '</TD>
-								</TR>';
-							}
+			if($config['characters']['magic_level'])
+				echo'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Magic Level:</TD><TD>'.$player->getMagLevel().'</TD></TR>';
 
-							echo
-							'</TABLE>
-						</TD>';
-					}
+			//frags
+			if(tableExist('player_killers') && $config['characters']['frags']) {
+				$frags_count = 0;
+				$frags_query = $db->query(
+					'SELECT COUNT(`player_id`) as `frags`' .
+					'FROM `player_killers`' .
+					'WHERE `player_id` = ' .$player->getId() . ' ' .
+					'GROUP BY `player_id`' .
+					'ORDER BY COUNT(`player_id`) DESC');
 
-					if($config['characters']['quests'] && !empty($config['quests']))
-					{
-						$quests = $config['quests'];
-						$sql_query_in = '';
-						$i = 0;
-						foreach($quests as $quest_name => $quest_storage)
-						{
-							if($i != 0)
-								$sql_query_in .= ', ';
-
-							$sql_query_in .= $quest_storage;
-							$i++;
-						}
-
-						$storage_sql = $db->query('SELECT `key`, `value` FROM `player_storage` WHERE `player_id` = '.$player->getId().' AND `key` IN (' . $sql_query_in . ')');
-						$player_storage = array();
-						foreach($storage_sql as $storage)
-							$player_storage[$storage['key']] = $storage['value'];
-
-						echo '
-						<TD WIDTH=40% VALIGN="TOP">'.
-							'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
-								<TR BGCOLOR='.$config['vdarkborder'].'>
-									<TD COLSPAN=2 class="white"><B>Quests</B></TD>
-								</TR>';
-
-							//for($i=0; $i < count($quests); $i++)
-							$i = 0;
-							foreach($quests as $name => $storage)
-							{
-								$i++;
-								echo
-								'<TR BGCOLOR='.getStyle($i - 1).'>
-									<TD VALIGN=top>'.$name.'</TD>
-									<TD><img src="images/'.($player_storage[$storage] ? 'true' : 'false').'.png" border="0"/></TD>
-								</TR>';
-							}
-
-							echo
-							'</TABLE>
-						</TD>';
-					}
-
-					if($config['characters']['equipment'])
-					{
-						echo '
-						<TD WIDTH=100 VALIGN="TOP">'.
-							'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>'.
-								'<TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Equipment</B></TD></TR>'.
-								'<TR BGCOLOR='.getStyle(1).'><TD>'.generate_player_lookup($player).'</TD></TR>
-							</TABLE>
-						</TD>';
-					}
-
-				echo '</TR></TABLE>';
-
-
-			if(tableExist('killers')) {
-				$player_deaths = $db->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;');
-				if(count($player_deaths))
+				if($frags_query->rowCount() > 0)
 				{
-					$dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>';
+					$frags_query = $frags_query->fetch();
+					$frags_count = $frags_query['frags'];
+				}
 
-					$number_of_rows = 0;
-					foreach($player_deaths as $death)
-					{
-						$dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\">
-						<td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['date'])."</td>
-						<td> ";
-						$killers = $db->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id
-	LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id
-	WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll();
+				echo
+				'<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Frags:</TD><TD>' . $frags_count . '</TD></TR>';
+			}
 
-						$i = 0;
-						$count = count($killers);
-						foreach($killers as $killer)
-						{
-							$i++;
-							if($killer['player_name'] != "")
-							{
-								if($i == 1)
-									$dead_add_content .= "Killed at level <b>".$death['level']."</b>";
-								else if($i == $count)
-									$dead_add_content .= " and";
-								else
-									$dead_add_content .= ",";
+			if(!empty($config['towns'][$player->getTownId()]))
+				echo '<TR BGCOLOR="' . getStyle(++$rows) . '"><TD>Residence:</TD><TD>' . $config['towns'][$player->getTownId()] . '</TD></TR>';
 
-								$dead_add_content .= " by ";
-								if($killer['monster_name'] != "")
-									$dead_add_content .= $killer['monster_name']." summoned by ";
+			if($config['characters']['balance'])
+				echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Balance:</TD><TD>'.$player->getBalance().' Gold Coins.</TD></TR>';
 
-								if($killer['player_exists'] == 0)
-									$dead_add_content .= getPlayerLink($killer['player_name']);
-								else
-									$dead_add_content .= $killer['player_name'];
-							}
-							else
-							{
-								if($i == 1)
-									$dead_add_content .= "Died at level <b>".$death['level']."</b>";
-								else if($i == $count)
-									$dead_add_content .= " and";
-								else
-									$dead_add_content .= ",";
+			$town_field = 'town';
+			if(fieldExist('town_id', 'houses'))
+				$town_field = 'town_id';
+			else if(fieldExist('townid', 'houses'))
+				$town_field = 'townid';
+			
+			$house = $db->query('SELECT `id`, `paid`, `name`, `' . $town_field . '` FROM `houses` WHERE `owner` = '.$player->getId())->fetch();
+			if(isset($house['id']))
+			{
+				if($house['paid'] > 0)
+					$add = ' is paid until '.date("M d Y", $house['paid']);
 
-								$dead_add_content .= " by ".$killer['monster_name'];
-							}
-						}
+				echo
+				'<TR BGCOLOR="'.getStyle(++$rows).'">
+					<TD>House:</TD>
+					<TD>
+						<TABLE BORDER=0><TR>
+							<TD>'.$house['name'].' ('.$config['towns'][$house[$town_field]].')'.$add.'</TD>
+							<TD>
+								<FORM ACTION="?subtopic=houses&page=view" METHOD=post>
+									<INPUT TYPE=hidden NAME=house VALUE="'.$house['name'].'">
+									<INPUT TYPE=image NAME="View" ALT="View" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120>
+								</FORM>
+							</TD>
+						</TR></TABLE>
+					</TD>
+				</TR>';
+			}
 
-						$dead_add_content .= ".</td></tr>";
-					}
-
-					if($number_of_rows > 0)
-						echo $dead_add_content . '</TABLE>';
+			$rank_of_player = $player->getRank();
+			if($rank_of_player->isLoaded()) {
+				$guild = $rank_of_player->getGuild();
+				if($guild->isLoaded()) {
+					$guild_name = $guild->getName();
+					echo
+					'<TR BGCOLOR="'.getStyle(++$rows).'">'.
+						'<TD>Guild membership:</TD><TD>'.$rank_of_player->getName().' of the ' . getGuildLink($guild_name) . '</TD>'.
+					'</TR>';
 				}
 			}
-			else {
-				$deaths = $db->query('SELECT 
-					`player_id`, `time`, `level`, `killed_by`, `is_player`, 
-					`mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified` 
-					FROM `player_deaths` 
-					WHERE `player_id` = ' . $player->getId() . ' ORDER BY `time` DESC LIMIT 10;');
 
-				if(count($deaths))
+			echo
+				'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Last login:</TD><TD>';
+			$lastlogin = $player->getLastLogin();
+			if(empty($lastlogin))
+				echo 'Never logged in.';
+			else
+				echo date("M d Y, H:i:s", $lastlogin).' CEST';
+
+			echo '</TD></TR>';
+			if($config['characters']['creation_date'])
+				echo
+				'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Created:</TD><TD>'.date("M d Y, H:i:s", $player->getCreated()).' CEST</TD></TR>';
+
+		$comment = $player->getComment();/*
+		$newlines   = array("\r\n", "\n", "\r");
+		$comment_with_lines = str_replace($newlines, '<br />', $comment, $count);
+		if($count < 50)
+			$comment = $comment_with_lines;*/
+		if(!empty($comment))
+			echo '<TR BGCOLOR="'.getStyle(++$rows).'"><TD VALIGN=top>Comment:</TD><TD>' . wordwrap(nl2br($comment), 60, "<br />", true) . '</TD></TR>';
+
+		echo
+				'<TR BGCOLOR="'.getStyle(++$rows).'"><TD>Account Status:</TD><TD>' . (($account->isPremium()) ? 'Premium Account' : 'Free Account') . '</TD></TR>'.
+			'</TABLE>';
+
+	echo '<br>'.
+			'<TABLE BORDER=0 WIDTH=100%><TR>';
+
+				if($config['characters']['skills'])
 				{
-					$dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>';
-
-					$number_of_rows = 0;
-					foreach($deaths as $death) 
-					{
-						$dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\">
-						<td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['time'])."</td>
-						<td> ";
-
-						$lasthit = ($death['is_player']) ? getPlayerLink($death['killed_by']) : $death['killed_by'];
-						$dead_add_content .=  'Killed at level ' . $death['level'] . ' by ' . $lasthit;
-						if($death['unjustified']) {
-							$dead_add_content .=  " <font color='red' style='font-style: italic;'>(unjustified)</font>";
-						}
-					
-						$mostdmg = ($death['mostdamage_by'] !== $death['killed_by']) ? true : false;
-						if($mostdmg) 
-						{
-							$mostdmg = ($death['mostdamage_is_player']) ? getPlayerLink($death['mostdamage_by']) : $death['mostdamage_by'];
-							$dead_add_content .=  '<br>and by ' . $mostdmg;
-							
-							if ($death['mostdamage_unjustified']) {
-								$dead_add_content .=  " <font color='red' style='font-style: italic;'>(unjustified)</font>";
-							}
-						} 
-						else {
-							$dead_add_content .=  " <b>(soloed)</b>";
-						}
+					if(fieldExist('skill_fist', 'players')) {// tfs 1.0+
+						$skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch();
 						
-						$dead_add_content .= ".</td></tr>";
+						$skill_ids = array(
+							POT::SKILL_FIST => 'skill_fist',
+							POT::SKILL_CLUB => 'skill_club',
+							POT::SKILL_SWORD => 'skill_sword',
+							POT::SKILL_AXE => 'skill_axe',
+							POT::SKILL_DIST => 'skill_dist',
+							POT::SKILL_SHIELD => 'skill_shielding',
+							POT::SKILL_FISH => 'skill_fishing',
+						);
+						
+						$skills = array();
+						foreach($skill_ids as $skillid => $field_name) {
+							$skills[] = array('skillid' => $skillid, 'value' => $skills_db[$field_name]);
+						}
 					}
-				
-					if($number_of_rows > 0)
-						echo $dead_add_content . '</TABLE>';
-				}
-			}
+					else
+						$skills = $db->query('SELECT `skillid`, `value` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' LIMIT 7');
+					echo '
+					<TD WIDTH=30% VALIGN="TOP">'.
+						'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
+							<TR BGCOLOR='.$config['vdarkborder'].'>
+								<TD COLSPAN=2 class="white"><B>Skills</B></TD>
+							</TR>';
 
-			if($config['characters']['frags'])
-			{
-				//frags list by Xampy
-				$i = 0;
-				$frags_limit = 10; // frags limit to show? // default: 10
-				$player_frags = $db->query('SELECT `player_deaths`.*, `players`.`name`, `killers`.`unjustified` FROM `player_deaths` LEFT JOIN `killers` ON `killers`.`death_id` = `player_deaths`.`id` LEFT JOIN `player_killers` ON `player_killers`.`kill_id` = `killers`.`id` LEFT JOIN `players` ON `players`.`id` = `player_deaths`.`player_id` WHERE `player_killers`.`player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,'.$frags_limit.';');
-				if(count($player_frags))
+						$i = 0;
+						foreach($skills as $skill)
+						{
+							echo
+							'<TR BGCOLOR=' . getStyle(++$i) . '>
+								<TD VALIGN=top>' . getSkillName($skill['skillid']) . '</TD>
+								<TD>' . $skill['value'] . '</TD>
+							</TR>';
+						}
+
+						echo
+						'</TABLE>
+					</TD>';
+				}
+
+				if($config['characters']['quests'] && !empty($config['quests']))
 				{
-					$frags = 0;
-					$frag_add_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><br><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Victims</B></TD></TR>';
-					foreach($player_frags as $frag)
+					$quests = $config['quests'];
+					$sql_query_in = '';
+					$i = 0;
+					foreach($quests as $quest_name => $quest_storage)
 					{
-						$frags++;
-						$frag_add_content .= '<tr bgcolor="' . getStyle($frags) . '">
-						<td width="20%" align="center">' . date("j M Y, H:i", $frag['date']) . '</td>
-						<td>Fragged <a href="' . getPlayerLink($frag[name], false) . '">' . $frag[name] . '</a> at level ' . $frag[level];
+						if($i != 0)
+							$sql_query_in .= ', ';
 
-						$frag_add_content .= ". (".(($frag['unjustified'] == 0) ? "<font size=\"1\" color=\"green\">Justified</font>" : "<font size=\"1\" color=\"red\">Unjustified</font>").")</td></tr>";
+						$sql_query_in .= $quest_storage;
+						$i++;
 					}
-					if($frags > 0)
-						echo $frag_add_content . '</TABLE>';
+
+					$storage_sql = $db->query('SELECT `key`, `value` FROM `player_storage` WHERE `player_id` = '.$player->getId().' AND `key` IN (' . $sql_query_in . ')');
+					$player_storage = array();
+					foreach($storage_sql as $storage)
+						$player_storage[$storage['key']] = $storage['value'];
+
+					echo '
+					<TD WIDTH=40% VALIGN="TOP">'.
+						'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
+							<TR BGCOLOR='.$config['vdarkborder'].'>
+								<TD COLSPAN=2 class="white"><B>Quests</B></TD>
+							</TR>';
+
+						//for($i=0; $i < count($quests); $i++)
+						$i = 0;
+						foreach($quests as $name => $storage)
+						{
+							$i++;
+							echo
+							'<TR BGCOLOR='.getStyle($i - 1).'>
+								<TD VALIGN=top>'.$name.'</TD>
+								<TD><img src="images/'.($player_storage[$storage] ? 'true' : 'false').'.png" border="0"/></TD>
+							</TR>';
+						}
+
+						echo
+						'</TABLE>
+					</TD>';
 				}
-			}
 
-		//Signature
-		//Js
-		if($config['signature_enabled'])
-		{
-			echo '<script type="text/javascript">
-			function showSignLinks()
-			{
-				if(document.getElementById(\'signLinks\').style.display == "none")
-				{
-					document.getElementById(\'signLinks\').style.display = "inline";
-					document.getElementById(\'signText\').innerHTML = "Hide links";
-				}
-				else
-				{
-					document.getElementById(\'signLinks\').style.display = "none";
-					document.getElementById(\'signText\').innerHTML = "Show links";
-				}
-			}
-			</script>';
-			echo '<br>
-				<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Signature</B></TD></TR>
-				<TR BGCOLOR='.$config['lightborder'].'><TD align="center" VALIGN=top>';
-						$signature_url = BASE_URL . 'tools/signature/?name=' . urlencode($player->getName());
-						if($config['friendly_urls'])
-							$signature_url = BASE_URL . urlencode($player->getName()) . '.png';
-
-						echo '
-						<img src="' . $signature_url . '" alt="Signature for player '.$player->getName().'">
-						<br/>
-						<b><a href="#" onclick="showSignLinks(); return false;" id="signText">Show links</a></b>
-						<br>
-						<table id="signLinks" style="display: none;">
-							<tr>
-								<td>Website:</td>
-								<td><input type="text" value="<a href=&quot;' . getPlayerLink($player->getName(), false) . '&quot;><img src=&quot;' . $signature_url . '&quot;></a>" style="width: 400px;" onclick="this.select()"></td>
-							</tr>
-							<tr>
-								<td>Forum::</td>
-								<td><input type="text" value="[URL=' . getPlayerLink($player->getName(), false) . '][IMG]' . $signature_url . '[/IMG][/URL]" style="width: 400px;" onclick="this.select()"></td>
-							</tr>
-							<tr>
-								<td>Direct link::</td>
-								<td><input type="text" value="' . $signature_url . '" style="width: 400px;" onclick="this.select()"></td>
-							</tr>
-						</table>
-					</TD></TR>
-				</TABLE>';
-		}
-
-			if($player->getCustomField('hidden') != 1)
-			{
-				$rows = 0;
-				echo '<br/><br/>
-				<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
-					<TR BGCOLOR='.$config['vdarkborder'].'>
-						<TD COLSPAN=2 class="white"><B>Account Information</B></TD>
-					</TR>';
-
-				$realName = $account->getCustomField('rlname');
-				if(!empty($realName))
+				if($config['characters']['equipment'])
 				{
 					echo '
-					<TR BGCOLOR='.getStyle(++$rows).'>
-						<TD WIDTH=20%>Real name:</TD>
-						<TD>'.$realName.'</TD>
-					</TR>';
+					<TD WIDTH=100 VALIGN="TOP">'.
+						'<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>'.
+							'<TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Equipment</B></TD></TR>'.
+							'<TR BGCOLOR='.getStyle(1).'><TD>'.generate_player_lookup($player).'</TD></TR>
+						</TABLE>
+					</TD>';
 				}
 
-				$group = $player->getGroup();
-				if($group->isLoaded() && $group->getId() != 1)
+			echo '</TR></TABLE>';
+
+
+		if(tableExist('killers')) {
+			$player_deaths = $db->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;');
+			if(count($player_deaths))
+			{
+				$dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>';
+
+				$number_of_rows = 0;
+				foreach($player_deaths as $death)
 				{
-					echo
-					'<TR BGCOLOR='.getStyle(++$rows).'>
-						<TD>Position:</TD>
-						<TD>' . ucfirst($group->getName()) . '</TD>
-					</TR>';
-				}
+					$dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\">
+					<td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['date'])."</td>
+					<td> ";
+					$killers = $db->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id
+LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id
+WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll();
 
-			$realLocation = $account->getCustomField('location');
-			if(isset($realLocation[0]))
-			{
-					echo
-					'<TR BGCOLOR='.getStyle(++$rows).'>
-						<TD WIDTH=20%>Location:</TD>
-						<TD>'.$realLocation.'</TD>
-					</TR>';
-			}
-
-			echo
-					'<TR BGCOLOR='.getStyle(++$rows).'>
-						<TD WIDTH=20%>Created:</TD>';
-						$bannedUntil = '';
-						if(tableExist('account_bans'))
-							$banned = $db->query('SELECT `expires_at` as `expires` FROM `account_bans` WHERE `account_id` = '.$account->getId().' and `expires_at` > ' . time());
-						else
-							$banned = $db->query('SELECT `expires` FROM `bans` WHERE (`value` = '.$account->getId().' or `value` = '.$player->getId().') and `active` = 1 and `type` != 2 and `type` != 4 and `expires` > ' . time());
-						foreach($banned as $ban)
+					$i = 0;
+					$count = count($killers);
+					foreach($killers as $killer)
+					{
+						$i++;
+						if($killer['player_name'] != "")
 						{
-							if($ban['type'] != 2 and $ban['type'] != 4)
-							$bannedUntil = ' <font color="red">[Banished '.($ban['expires'] == "-1" ? 'forever' : 'until '.date("d F Y, h:s", $ban['expires'])).']</font>';
+							if($i == 1)
+								$dead_add_content .= "Killed at level <b>".$death['level']."</b>";
+							else if($i == $count)
+								$dead_add_content .= " and";
+							else
+								$dead_add_content .= ",";
+
+							$dead_add_content .= " by ";
+							if($killer['monster_name'] != "")
+								$dead_add_content .= $killer['monster_name']." summoned by ";
+
+							if($killer['player_exists'] == 0)
+								$dead_add_content .= getPlayerLink($killer['player_name']);
+							else
+								$dead_add_content .= $killer['player_name'];
 						}
-						echo '<TD>'.date("j F Y, g:i a", $account->getCustomField("created")).$bannedUntil.'</TD>
-					</TR>
-				</TABLE>';
+						else
+						{
+							if($i == 1)
+								$dead_add_content .= "Died at level <b>".$death['level']."</b>";
+							else if($i == $count)
+								$dead_add_content .= " and";
+							else
+								$dead_add_content .= ",";
 
-			echo '<br/><br/>
-				<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
-					<TR BGCOLOR='.$config['vdarkborder'].'>
-						<TD COLSPAN=4 class="white"><B>Characters</B></TD>
-					</TR>
-					<TR BGCOLOR='.$config['darkborder'].'>
-						<TD WIDTH=62%><B>Name</B></TD>
-						<TD WIDTH=30%><B>Level</B></TD>
-						<TD WIDTH=8%><b>Status</b></TD>
-						<TD><B>&#160;</B></TD>
-					</TR>';
+							$dead_add_content .= " by ".$killer['monster_name'];
+						}
+					}
 
-			$account_players = $account->getPlayersList();
-			$account_players->orderBy('name');
-			$player_number = 0;
-			foreach($account_players as $player_list)
-			{
-				$player_list_status = '';
-				if($player_list->isHidden())
-					continue;
-
-				$player_number++;
-				if($player_list->isOnline())
-					$player_list_status = '<b><font color="green">Online</font></b>';
-
-				echo '<TR BGCOLOR="'.getStyle($player_number).'"><TD><NOBR>'.$player_number.'.&#160;'.$player_list->getName();
-				echo ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : '';
-				echo '</NOBR></TD><TD>'.$player_list->getLevel().' '.$config['vocations'][$player_list->getVocation()].'</TD><TD>' . $player_list_status . '</TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="' . internalLayoutLink('characters') . '" METHOD=post><TR><TD><INPUT TYPE=hidden NAME=name VALUE="'.$player_list->getName().'"><INPUT TYPE=image NAME="View '.$player_list->getName().'" ALT="View '.$player_list->getName().'" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>';
-			}
-			echo '</TABLE></TD><TD><IMG SRC="'.$template_path.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>';
-			}
-		echo '<br/><br/>' . generate_search_table();
-		echo '</TABLE>';
-	}
-	else
-	{
-		$search_errors[] = 'Character <b>' . $name . '</b> does not exist or has been deleted.';
-		output_errors($search_errors);
-		$search_errors = array();
-
-		$promotion = '';
-		if(fieldExist('promotion', 'players'))
-			$promotion = ', `promotion`';
-
-		$deleted = 'deleted';
-		if(fieldExist('deletion', 'players'))
-			$deleted = 'deletion';
-
-		$query = $db->query('SELECT `name`, `level`, `vocation`' . $promotion . ' FROM `players` WHERE `name` LIKE  ' . $db->quote('%' . $name . '%') . ' AND ' . $deleted . ' != 1;');
-		if($query->rowCount() > 0)
-		{
-			echo 'Did you mean:<ul>';
-			foreach($query as $player) {
-				if(isset($player['promotion'])) {
-					if((int)$player['promotion'] > 0)
-						$player['vocation'] + ($player['promotion'] * 4);
+					$dead_add_content .= ".</td></tr>";
 				}
-				echo '<li>' . getPlayerLink($player['name']) . ' (<small><strong>level ' . $player['level'] . ', ' . $config['vocations'][$player['vocation']] . '</strong></small>)</li>';
+
+				if($number_of_rows > 0)
+					echo $dead_add_content . '</TABLE>';
+			}
+		}
+		else {
+			$deaths = $db->query('SELECT 
+				`player_id`, `time`, `level`, `killed_by`, `is_player`, 
+				`mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified` 
+				FROM `player_deaths` 
+				WHERE `player_id` = ' . $player->getId() . ' ORDER BY `time` DESC LIMIT 10;');
+
+			if(count($deaths))
+			{
+				$dead_add_content = '<br/><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Character Deaths</B></TD></TR>';
+
+				$number_of_rows = 0;
+				foreach($deaths as $death) 
+				{
+					$dead_add_content .= "<tr bgcolor=\"".getStyle($number_of_rows++)."\">
+					<td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['time'])."</td>
+					<td> ";
+
+					$lasthit = ($death['is_player']) ? getPlayerLink($death['killed_by']) : $death['killed_by'];
+					$dead_add_content .=  'Killed at level ' . $death['level'] . ' by ' . $lasthit;
+					if($death['unjustified']) {
+						$dead_add_content .=  " <font color='red' style='font-style: italic;'>(unjustified)</font>";
+					}
+				
+					$mostdmg = ($death['mostdamage_by'] !== $death['killed_by']) ? true : false;
+					if($mostdmg) 
+					{
+						$mostdmg = ($death['mostdamage_is_player']) ? getPlayerLink($death['mostdamage_by']) : $death['mostdamage_by'];
+						$dead_add_content .=  '<br>and by ' . $mostdmg;
+						
+						if ($death['mostdamage_unjustified']) {
+							$dead_add_content .=  " <font color='red' style='font-style: italic;'>(unjustified)</font>";
+						}
+					} 
+					else {
+						$dead_add_content .=  " <b>(soloed)</b>";
+					}
+					
+					$dead_add_content .= ".</td></tr>";
+				}
+			
+				if($number_of_rows > 0)
+					echo $dead_add_content . '</TABLE>';
 			}
-			echo '</ul>';
 		}
 
-		echo generate_search_table(true);
+		if($config['characters']['frags'])
+		{
+			//frags list by Xampy
+			$i = 0;
+			$frags_limit = 10; // frags limit to show? // default: 10
+			$player_frags = $db->query('SELECT `player_deaths`.*, `players`.`name`, `killers`.`unjustified` FROM `player_deaths` LEFT JOIN `killers` ON `killers`.`death_id` = `player_deaths`.`id` LEFT JOIN `player_killers` ON `player_killers`.`kill_id` = `killers`.`id` LEFT JOIN `players` ON `players`.`id` = `player_deaths`.`player_id` WHERE `player_killers`.`player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,'.$frags_limit.';');
+			if(count($player_frags))
+			{
+				$frags = 0;
+				$frag_add_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><br><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Victims</B></TD></TR>';
+				foreach($player_frags as $frag)
+				{
+					$frags++;
+					$frag_add_content .= '<tr bgcolor="' . getStyle($frags) . '">
+					<td width="20%" align="center">' . date("j M Y, H:i", $frag['date']) . '</td>
+					<td>Fragged <a href="' . getPlayerLink($frag[name], false) . '">' . $frag[name] . '</a> at level ' . $frag[level];
+
+					$frag_add_content .= ". (".(($frag['unjustified'] == 0) ? "<font size=\"1\" color=\"green\">Justified</font>" : "<font size=\"1\" color=\"red\">Unjustified</font>").")</td></tr>";
+				}
+				if($frags > 0)
+					echo $frag_add_content . '</TABLE>';
+			}
+		}
+
+	//Signature
+	//Js
+	if($config['signature_enabled'])
+	{
+		echo '<script type="text/javascript">
+		function showSignLinks()
+		{
+			if(document.getElementById(\'signLinks\').style.display == "none")
+			{
+				document.getElementById(\'signLinks\').style.display = "inline";
+				document.getElementById(\'signText\').innerHTML = "Hide links";
+			}
+			else
+			{
+				document.getElementById(\'signLinks\').style.display = "none";
+				document.getElementById(\'signText\').innerHTML = "Show links";
+			}
+		}
+		</script>';
+		echo '<br>
+			<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['vdarkborder'].'><TD COLSPAN=2 class="white"><B>Signature</B></TD></TR>
+			<TR BGCOLOR='.$config['lightborder'].'><TD align="center" VALIGN=top>';
+					$signature_url = BASE_URL . 'tools/signature/?name=' . urlencode($player->getName());
+					if($config['friendly_urls'])
+						$signature_url = BASE_URL . urlencode($player->getName()) . '.png';
+
+					echo '
+					<img src="' . $signature_url . '" alt="Signature for player '.$player->getName().'">
+					<br/>
+					<b><a href="#" onclick="showSignLinks(); return false;" id="signText">Show links</a></b>
+					<br>
+					<table id="signLinks" style="display: none;">
+						<tr>
+							<td>Website:</td>
+							<td><input type="text" value="<a href=&quot;' . getPlayerLink($player->getName(), false) . '&quot;><img src=&quot;' . $signature_url . '&quot;></a>" style="width: 400px;" onclick="this.select()"></td>
+						</tr>
+						<tr>
+							<td>Forum::</td>
+							<td><input type="text" value="[URL=' . getPlayerLink($player->getName(), false) . '][IMG]' . $signature_url . '[/IMG][/URL]" style="width: 400px;" onclick="this.select()"></td>
+						</tr>
+						<tr>
+							<td>Direct link::</td>
+							<td><input type="text" value="' . $signature_url . '" style="width: 400px;" onclick="this.select()"></td>
+						</tr>
+					</table>
+				</TD></TR>
+			</TABLE>';
 	}
+
+		if($player->getCustomField('hidden') != 1)
+		{
+			$rows = 0;
+			echo '<br/><br/>
+			<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
+				<TR BGCOLOR='.$config['vdarkborder'].'>
+					<TD COLSPAN=2 class="white"><B>Account Information</B></TD>
+				</TR>';
+
+			$realName = $account->getCustomField('rlname');
+			if(!empty($realName))
+			{
+				echo '
+				<TR BGCOLOR='.getStyle(++$rows).'>
+					<TD WIDTH=20%>Real name:</TD>
+					<TD>'.$realName.'</TD>
+				</TR>';
+			}
+
+			$group = $player->getGroup();
+			if($group->isLoaded() && $group->getId() != 1)
+			{
+				echo
+				'<TR BGCOLOR='.getStyle(++$rows).'>
+					<TD>Position:</TD>
+					<TD>' . ucfirst($group->getName()) . '</TD>
+				</TR>';
+			}
+
+		$realLocation = $account->getCustomField('location');
+		if(isset($realLocation[0]))
+		{
+				echo
+				'<TR BGCOLOR='.getStyle(++$rows).'>
+					<TD WIDTH=20%>Location:</TD>
+					<TD>'.$realLocation.'</TD>
+				</TR>';
+		}
+
+		echo
+				'<TR BGCOLOR='.getStyle(++$rows).'>
+					<TD WIDTH=20%>Created:</TD>';
+					$bannedUntil = '';
+					if(tableExist('account_bans'))
+						$banned = $db->query('SELECT `expires_at` as `expires` FROM `account_bans` WHERE `account_id` = '.$account->getId().' and `expires_at` > ' . time());
+					else
+						$banned = $db->query('SELECT `expires` FROM `bans` WHERE (`value` = '.$account->getId().' or `value` = '.$player->getId().') and `active` = 1 and `type` != 2 and `type` != 4 and `expires` > ' . time());
+					foreach($banned as $ban)
+					{
+						if($ban['type'] != 2 and $ban['type'] != 4)
+						$bannedUntil = ' <font color="red">[Banished '.($ban['expires'] == "-1" ? 'forever' : 'until '.date("d F Y, h:s", $ban['expires'])).']</font>';
+					}
+					echo '<TD>'.date("j F Y, g:i a", $account->getCustomField("created")).$bannedUntil.'</TD>
+				</TR>
+			</TABLE>';
+
+		echo '<br/><br/>
+			<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
+				<TR BGCOLOR='.$config['vdarkborder'].'>
+					<TD COLSPAN=4 class="white"><B>Characters</B></TD>
+				</TR>
+				<TR BGCOLOR='.$config['darkborder'].'>
+					<TD WIDTH=62%><B>Name</B></TD>
+					<TD WIDTH=30%><B>Level</B></TD>
+					<TD WIDTH=8%><b>Status</b></TD>
+					<TD><B>&#160;</B></TD>
+				</TR>';
+
+		$account_players = $account->getPlayersList();
+		$account_players->orderBy('name');
+		$player_number = 0;
+		foreach($account_players as $player_list)
+		{
+			$player_list_status = '';
+			if($player_list->isHidden())
+				continue;
+
+			$player_number++;
+			if($player_list->isOnline())
+				$player_list_status = '<b><font color="green">Online</font></b>';
+
+			echo '<TR BGCOLOR="'.getStyle($player_number).'"><TD><NOBR>'.$player_number.'.&#160;'.$player_list->getName();
+			echo ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : '';
+			echo '</NOBR></TD><TD>'.$player_list->getLevel().' '.$config['vocations'][$player_list->getVocation()].'</TD><TD>' . $player_list_status . '</TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="' . internalLayoutLink('characters') . '" METHOD=post><TR><TD><INPUT TYPE=hidden NAME=name VALUE="'.$player_list->getName().'"><INPUT TYPE=image NAME="View '.$player_list->getName().'" ALT="View '.$player_list->getName().'" SRC="'.$template_path.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>';
+		}
+		echo '</TABLE></TD><TD><IMG SRC="'.$template_path.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>';
+		}
+	echo '<br/><br/>' . generate_search_table();
+	echo '</TABLE>';
 }
 else
-	$search_errors[] = 'This name contains invalid letters. Please use only A-Z, a-z and space. Minimum length is 3 characters.';
+{
+	$search_errors[] = 'Character <b>' . $name . '</b> does not exist or has been deleted.';
+	output_errors($search_errors);
+	$search_errors = array();
+
+	$promotion = '';
+	if(fieldExist('promotion', 'players'))
+		$promotion = ', `promotion`';
+
+	$deleted = 'deleted';
+	if(fieldExist('deletion', 'players'))
+		$deleted = 'deletion';
+
+	$query = $db->query('SELECT `name`, `level`, `vocation`' . $promotion . ' FROM `players` WHERE `name` LIKE  ' . $db->quote('%' . $name . '%') . ' AND ' . $deleted . ' != 1;');
+	if($query->rowCount() > 0)
+	{
+		echo 'Did you mean:<ul>';
+		foreach($query as $player) {
+			if(isset($player['promotion'])) {
+				if((int)$player['promotion'] > 0)
+					$player['vocation'] + ($player['promotion'] * 4);
+			}
+			echo '<li>' . getPlayerLink($player['name']) . ' (<small><strong>level ' . $player['level'] . ', ' . $config['vocations'][$player['vocation']] . '</strong></small>)</li>';
+		}
+		echo '</ul>';
+	}
+
+	echo generate_search_table(true);
+}
 
 if(!empty($search_errors))
 	output_errors($search_errors);