diff --git a/main.php b/main.php
index 4c995f1..d5a2729 100644
--- a/main.php
+++ b/main.php
@@ -36,7 +36,6 @@
 
 		<?php
 			$user = get_users($_SESSION["id"]);
-			$victim = get_users($user->quimata);
 			if ($user->mort) die("<script>window.location.href = './dead.php'</script>");
 
 			// @TODO: Reenable photos
@@ -74,57 +73,81 @@
 					</form>
 				</div>
 
-				<p>La teva víctima és:</p>
+				<?php
+				if (!Credentials::isAllVsAllModeEnabled()) {
+					$victim = get_users($user->quimata);
+					?>
+					<p>La teva víctima és:</p>
 
-				<div class="victima">
-					<table>
-						<tr>
-							<?php
-							// @TODO: Reenable photos
-							/*
-							<td class="table_img">
-								<div id="victim_img">
-									<div class="grid-container">
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>  
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>  
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
-										  <div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+					<div class="victima">
+						<table>
+							<tr>
+								<?php
+								// @TODO: Reenable photos
+								/*
+								<td class="table_img">
+									<div id="victim_img">
+										<div class="grid-container">
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>  
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>  
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+												<div class="grid-item <?=(int)$bits[$bit_counter++] ? 'black' : ''?>"></div>
+										</div>
 									</div>
-								</div>
-							</td>
-							*/
-							?>
-							<td class="table_text">
-								<div id="victim_name"><?=Security::htmlsafe($victim->nomcomplet)?></div>
-								<div id="victim_curs_i_grau">
-									<span id="victim_curs"><?=Security::htmlsafe($victim->nomcurs())?></span>
-									-
-									<span id="victim_grau"><?=Security::htmlsafe($victim->nomgrau())?></span>
-								</div>
-								<div id="butons" class="options">
-									<button id="win" onclick="js: send_request(user, 'REQ KILL');">L'he matat</button>
-								</div>
-							</td>
-						</tr>
-					</table>
-				</div>
-				
-                                <?php
-                                        $query_seen_victim = "SELECT COUNT(*) FROM missatges WHERE `seen` = 0 AND (`receiver_id` = " . (int)$user->id . " AND `sender_id` = " . (int)$user->quimata . ")";
-                                        $query_seen_killer = "SELECT COUNT(*) FROM missatges WHERE `seen` = 0 AND (`receiver_id` = " . (int)$user->id . " AND `sender_id` != " . (int)$user->quimata . ")";
-                                ?>
+								</td>
+								*/
+								?>
+								<td class="table_text">
+									<div id="victim_name"><?=Security::htmlsafe($victim->nomcomplet)?></div>
+									<div id="victim_curs_i_grau">
+										<span id="victim_curs"><?=Security::htmlsafe($victim->nomcurs())?></span>
+										-
+										<span id="victim_grau"><?=Security::htmlsafe($victim->nomgrau())?></span>
+									</div>
+									<div id="butons" class="options">
+										<button id="win" onclick="js: send_request(user, 'REQ KILL');">L'he matat</button>
+									</div>
+								</td>
+							</tr>
+						</table>
+					</div>
+					
+																	<?php
+																					$query_seen_victim = "SELECT COUNT(*) FROM missatges WHERE `seen` = 0 AND (`receiver_id` = " . (int)$user->id . " AND `sender_id` = " . (int)$user->quimata . ")";
+																					$query_seen_killer = "SELECT COUNT(*) FROM missatges WHERE `seen` = 0 AND (`receiver_id` = " . (int)$user->id . " AND `sender_id` != " . (int)$user->quimata . ")";
+																	?>
 
-				<div>
-					<p>Podeu posar aquesta pàgina com a icona apretant el botó de "Add to Home Screen" del vostre navegador.</p>
-					<a href="./ranking.php">Anar al rànquing</a><br />
-                                        <a href="./victim-chat.php">Xatejar amb la teva víctima (<?= query($query_seen_victim)->fetch_row()[0] ?>)</a><br />
-                                        <a href="./killer-chat.php">Xatejar amb el teu assassí (<?= query($query_seen_killer)->fetch_row()[0] ?>)</a>
-				</div>
+					<div>
+						<p>Podeu posar aquesta pàgina com a icona apretant el botó de "Add to Home Screen" del vostre navegador.</p>
+						<a href="./ranking.php">Anar al rànquing</a><br />
+																					<a href="./victim-chat.php">Xatejar amb la teva víctima (<?= query($query_seen_victim)->fetch_row()[0] ?>)</a><br />
+																					<a href="./killer-chat.php">Xatejar amb el teu assassí (<?= query($query_seen_killer)->fetch_row()[0] ?>)</a>
+					</div>
+					<?php
+				} else {
+					?>
+					<p>Tots contra tots! Ara pots matar a qualsevol persona que continuï viva (les de la següent llista).</p>
+					<p>Quan matis alguna persona, selecciona-la i fes clic al botó "L'he assassinat/da".</p>
+					<form action="php/request.php" method="POST" onsubmit="return confirm('Estàs segura que has assassinat aquesta persona? Per agilitzar el procediment l\'altra persona no haurà de confirmar la mort i obtindràs els punts directament.\n\nL\'ús inadecuat comportarà una penalització.');">
+					<?php
+					$users = get_users();
+					foreach ($users as $user) {
+						if ($user->mort) continue;
+						?>
+						<p><input type="radio" name="mort" value="<?=(int)$user->id?>" required<?=$user->id == $_SESSION['id'] ? ' disabled' : ''?>> <?=Security::htmlsafe($user->nomcomplet)?> - <?=Security::htmlsafe($user->nomcurs())?> - <?=Security::htmlsafe($user->nomgrau())?></p>
+						<?php
+					}
+					?>
+					<input type="hidden" name="msg" value="INSTAKILL">
+					<button>L'he assassinat/da</button>
+					<?php
+				}
+				?>
 			</div>
 		</div>
 
@@ -132,6 +155,7 @@
 			$(document).ready(function() {
 				// Set interval of checking
 				update_info(user);
+
 				// Set to hidden or not the password prompt
 				if (<?=$user->md5password=="" ? 1 : 0?>) {
 					$.notify("No tens clau d'accés", "info");
@@ -141,6 +165,7 @@
 				if (getUrlParameter("wrongconfirmation")) read_message("Les contrasenyes no coincideixen", "error");
 				if (getUrlParameter("errordb")) read_message("Hi ha hagut un problema a la base de dades, torna-ho a intentar", "error");
 				if (getUrlParameter("successpassword")) read_message("La teva clau d'accés s'ha guardat", "success");
+				if (getUrlParameter("killsuccess")) read_message("La mort s'ha guardat correctament", "success");
 			});
 		</script>
 	</body>
