MissingN▯

**missingN▯** était un personnage jouable dans *Vampire Survivors* (retiré au patch 0.2.12) qui commençait avec la Hache ou la Spirale Fatale (50% chance pour chaque).

## Déblocage

Il n'y actuellement aucun moyen de débloquer missingN▯. Tout comme les autres personnages, il peut être débloqué en éditant sa sauvegarde, cependant modifier votre fichier de sauvegarde vous rendra inéligible au support technique d'après le développeur.

Depuis au moins la v0.5.209-EA, le chemin de sauvegarde local a changé.

* Les anciennes versions utilisaient 'LastRunBackup.sav' dans le dossier du jeu sous le chemin `.\steamapps\common\Vampire Survivors\resources\app\.webpack\renderer\`
* Cette méthode demande de restaurer la copie de la sauvegarde après l'avoir modifié. Elle peut toujours fonctionner pour les ordinateurs qui ne sont pas sous Windows.

Le nouvelle méthode modifie directement le fichier de sauvegarde et ne demande pas de restauration depuis une sauvegarde.

1. Dans votre explorateur de fichier, aller dans votre dossier local de stockage des données d'applications
	* **Windows**: `%appdata%`
	* **macOS**: `~/Library/Application Support/` \*Quelqu'un avec une expérience sur MacOS pourrait valider ce chemin ?
	* **Linux**: `~/home/$user/.local/share/Vampire_Survivors/saves`
2. Une fois dans ce dossier, cherchez pour `Vampire Survivors`, puis `saves`.
3. Faites une sauvegarde de `SaveData.sav` (ne la mélanger pas avec `SaveDataBackup.bak.sav`).
4. Ouvrez `SaveData.sav` dans un éditeur de texte.
5. Faites une recherche (ctrl+F) pour `BoughtCharacters`.
	1. Après avoir une liste qui ressemble à `["IMELDA","PASQUALINA",...]` (l'ordre des personnages peut être différent).
	2. Ajoutez `,"FINO"` à la fin, devenant :
	```
	["IMELDA","PASQUALINA",...,"FINO"]
	```
6. Faites une recherche pour `UnlockedCharacters`.
	1. Après qu'il y ait une liste qui ressemble aussi à `["CIRO","PORTA",...]` (l'ordre des personnages peut être différent).
	2. Ajoutez `,"FINO"` à la fin, devenant :
	```
	["CIRO","PORTA",...,"FINO"]
	```
7. Allez à la toute fin du document où vous devrez voir :
```
"checksum":"<beaucoup-de-digits-hexadecimaux>"
```
8. Retirez ces digits, cela devrait ressembler à :
```
"checksum":""
```
9. Sélectionnez tout (ctrl+A) et copiez (ctrl+C).
10. Hashez le texte copié en utilisant SHA-256.
	1. Une simple méthode pour réaliser ceci est d'aller sur cette page : https://emn178.github.io/online-tools/sha256.html.
	2. Collez l'entièreté de `SaveData.sav` dans le champ d'entrée.
	3. Copiez le résultat du champ de sortie
11. Collez le résultat là où était les digits au départ, cela doit ressembler à :
```
"checksum":"<result>"
```
12. Sauvegardez le fichier et lancez le jeu
	* Vous n'avez pas à restaurer quoi que ce soit depuis une sauvegarde de secours. Vous devriez voir missingN▯ dans le choix des personnages.

Méthode automatisée pour Windows 10+ utilisant PowerShell:

1. Dans votre explorateur de fichier, allez à : `%appdata%\Vampire_Survivors\saves`
2. Maintenez Shift et faites un Click Droit dans un espace vide et sélectionnez 'Ouvrir PowerShell window ici' ou 'Ouvrir dans le Terminal' pour Windows 11.
3. Exécutez les commandes suivantes. Les lignes commençant avec # sont des commentaires et décrivent ce que les lignes suivantes font.
```
 #Sauvegarde le fichier .sav file, s'il n'y en a pas
 $TargetSaveFile = (get-item ".\SaveData.sav" -ErrorAction Stop).fullname
 if (-not (get-item ($TargetSaveFile+".backup") -ErrorAction SilentlyContinue)) {copy-item $TargetSaveFile ($TargetSaveFile+".backup")}
 #Charge le fichier comme un objet JSON
 $json = Get-Content $TargetSaveFile | ConvertFrom-Json
 #Ajoute FINO aux listes de personnages débloqués et achetés
 if ("FINO" -notin $json.UnlockedCharacters) {$json.UnlockedCharacters+="FINO"}
 if ("FINO" -notin $json.BoughtCharacters) {$json.BoughtCharacters+="FINO"}
 #supprime le checksum
 $json.checksum = ""
 # genère l'hash SHA256 hash des données de sauvegarde
 $Sha265 = [System.Security.Cryptography.SHA256]::Create()
 $hashAsByte = $Sha265.ComputeHash([System.Text.Encoding]::ASCII.GetBytes(($json | ConvertTo-Json -Compress)))
 $hashAsString = ($hashAsByte | ForEach-Object {[System.Convert]::ToString($\_,16).padLeft(2,'0') } ) -join ""
 # met à jour la valeur du checksum et écrit les nouvelles infos du JSON sur le fichier
 $json.checksum = $hashAsString
 $json | ConvertTo-Json -Compress | Set-Content $TargetSaveFile

```

*Vous devriez pouvoir copier/coller tout ce block dans la fenêtre PowerShell, vous devrez cependant devoir appuyer plusieurs fois sur la touche entrée pour exécuter les dernières lignes.*
	* En modifiant ce ficher, les changements prendront directement effet en relançant Vampire Survivors.

(Si quelque chose au-dessus ne fonctionne pas. Essayez de lancer Steam en mode Offline, puis essayez les étapes. Steam cloud sauvegarde les données et peut empêcher ceci de fonctionner comme attendu. Pour entrer en mode offline : dans votre application Steam -> en haut "Steam" -> "Go Offline...")

## Bonus passifs

Les stats de base demissingN▯'s sont choisies au hasard à chaque fois que la sélection de personnages est ouverte. La stat finale est déterminée par la statistique de base et les stats d'amélioration.

Il y a plusieurs scénarios intéressants qui peuvent se produire :

* Si sa santé maximale est négative, missingN▯ devient invincible.
* Si sa vitesse de déplacement est en-dessous de -100%, les contrôles deviennent inversés.
* Si Apprendre est à -100% ou moins, missingN▯ ne peut gagner de l'expérience.
* Si Malédiction est à -100% ou moins, aucun ennemi n'apparaîtra.
* Si Chance est à -100% ou moins, aucun coffre n'apparaîtra.

## Galerie

Première itérationDeuxième itérationItération actuelle
## Trivia

* missingN▯ était débloqué en tuant Death. Depuis l'ajout de Mask of the Red Death, le missingN▯ précédemment débloqué par les joueurs fut remplacé par Mask of the Red Death. À cause de ceci, il est impossible d'avoir missingN▯ de débloqué sur le jeu actuelle avec une sauvegarde non modifiée.
* Il n'y a pas que les stats de missingN▯ qui sont calculées aléatoirement, mais son nom et sa description contient aussi des caractères générés aléatoirement entre ces caractères ASCII : `0x00 - 0xde`:
	+ Son nom est déterminé comme *missingN▯*, où '▯' représente un caractère aléatoire.
	+ Sa description est déterminée comme *'M(▯▯)*, où '▯' représente un caractère aléatoire.
* Le nom et l'objet sur la version plus petite de missingN▯ sur une case est le nom et l'objet quand il était précédemment sélectionné.
	+ Après avoir sélectionné missingN▯, son nom actuel et son arme est affiché sur la plus grand case de personnage.
	+ Au démarrage, son nom est au départ "LATODISOTTO" (l'Italien pour "dessous"), et son objet est le Duplicator. C'est purement esthétique.
* À la fois son nom et son apparence glitchée sont des références au fameuxglitch du même nom des jeux Gameboy, Pokémon Rouge et Bleu.
	+ La description de missingN▯ est une référence additionnelle à un glitch moins connu de Pokémon Rouge et Bleu.