push initial
This commit is contained in:
parent
28274e328a
commit
8290d2e459
5 changed files with 406 additions and 2 deletions
28
1analyse_new_logryzom.sh
Executable file
28
1analyse_new_logryzom.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Dernière révision : 2021/10/31
|
||||||
|
# Auteur : Zatalyz. Merci à YannK, Tycho, Pulkomandy, Madi, Link Mauve et Glorf pour leurs nombreux conseils, les explications, l'aide et la patience !
|
||||||
|
# Licence CC0
|
||||||
|
# Ce script permet de ne garder que l'alentours et les emotes.
|
||||||
|
# Système adapté au nouveau système de log (à la fois plus simple puisque pas besoin du syslog,
|
||||||
|
# et un peu moins régulier dans les noms...)
|
||||||
|
# Fonctionnement idéal : /usr/bin/bash ./1analyse_new_logryzom.sh fichier_entrée fichier_sortie
|
||||||
|
# Par exemple :
|
||||||
|
# ./1analyse_new_logryzom.sh log_zatalyz.txt log_zatalye_alentours.txt
|
||||||
|
# On peut aussi renseigner les noms et chemins ici sur les variables :
|
||||||
|
logfile1="$1"
|
||||||
|
logsortie="$2"
|
||||||
|
# Canaux à garder
|
||||||
|
# Alentours + Endroit où on est
|
||||||
|
grep 'SAY\|SHOUT\|SYSTEM\/ZON' "$logfile1" > templog.txt
|
||||||
|
# vire le timestamp de début des lignes. Garde le * si ça peut servir à nettoyer le sys.info..
|
||||||
|
cut -b 21- templog.txt > templog2.txt
|
||||||
|
# Enlève les couleurs des canaux
|
||||||
|
sed 's/@{[A-F0-9]\{4\}}//g' templog2.txt > templog3.txt
|
||||||
|
# enlever le nom des canaux :
|
||||||
|
sed -re 's:^\([A-Z/]+\) +\* +(.*)$:\1:' templog3.txt > templog4.txt
|
||||||
|
# laisser uniquement les phrases traduites (attention, ça peut être étrange)
|
||||||
|
sed -re 's#\{:[a-zA-Z]{2}:[^}]+\}@\{[[:space:]]##' templog4.txt > templog5.txt
|
||||||
|
# Si quelqu'un joue avec des caractères bizarres, ça remet tout d'aplomb
|
||||||
|
iconv -t utf-8 -c templog5.txt > "$logsortie"
|
||||||
|
# Enlever les fichiers temporaires
|
||||||
|
rm templog*.txt
|
164
2split_log.sh
Executable file
164
2split_log.sh
Executable file
|
@ -0,0 +1,164 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Dernière révision : 2021/10/31
|
||||||
|
# Auteur : Zatalyz. Merci à YannK, Tycho et Glorf pour leurs nombreux conseils, les explications, l'aide et la patience !
|
||||||
|
# Licence CC0
|
||||||
|
# Ce script sépare les logs en 1 fichier de log par jour.
|
||||||
|
# Il est prévu pour les logs du jeu Ryzom mais peut s'adapter à d'autres types de log (virer "pseudo !")
|
||||||
|
# Mettre tous les logs en vrac dans le même dossier que le script, et lancer la moulinette.
|
||||||
|
# La bonne commande à passer est
|
||||||
|
# cmd ./dossiersource ./dossier final [nomperso]
|
||||||
|
# Sans argument des variables par défaut seront utilisées. Le nom du perso peut être déduit des logs
|
||||||
|
# Exemple :
|
||||||
|
# ./split_log.sh ./logbrut/zatalyz/ ./final john
|
||||||
|
# => les fichiers seront traités depuis ./logbrut/zatalyz/, et mis dans le dossier ./final sous le nom de log_john_année_mois_jour.txt
|
||||||
|
# sans préciser "john", le nom des logs sera probablement celui de zatalyz, si les fichiers d'origine sont bien formatés comme log_zatalyz.txt ou log_zatalyz_*.txt
|
||||||
|
# Le script range aussi les logs.
|
||||||
|
# Attention ! Il laisse quelques fichiers dans le dossier courant.
|
||||||
|
# Attention ! Gardez les logs originaux, dans quelques cas les lignes
|
||||||
|
# ne sont pas analysées correctement (cas des retours à la ligne comme
|
||||||
|
# dans les poèmes : la ligne ne commence plus par une date).
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
# Variables #
|
||||||
|
#############
|
||||||
|
# Variables par défaut dans les checks : pouvoir les changer ?
|
||||||
|
|
||||||
|
# Vérification si le dossier source des logs existe et est renseigné
|
||||||
|
if [ -d "$1" ]
|
||||||
|
then originalfolderlog="$1"
|
||||||
|
else originalfolderlog="./logsource"
|
||||||
|
fi
|
||||||
|
# Vérification si le dossier final des logs existe et est renseigné
|
||||||
|
if [ -d "$2" ]
|
||||||
|
then finalfolder="$2"
|
||||||
|
else finalfolder="./final_logs"
|
||||||
|
fi
|
||||||
|
# Vérification si un nom de perso est donné et sinon, extraction depuis les noms de fichier
|
||||||
|
if [ -z "$3" ]
|
||||||
|
then
|
||||||
|
myfunc() {
|
||||||
|
basename -a "$originalfolderlog"/* | cut -d_ -f2 | uniq
|
||||||
|
}
|
||||||
|
perso="$(myfunc)"
|
||||||
|
else perso="$3"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Résultat final : nous partons de $originalfolderlog pour mettre les logs de $perso dans $finalfolder"
|
||||||
|
|
||||||
|
# Variables des dossiers de travail
|
||||||
|
tmpfolder="./tmplogfolder"
|
||||||
|
listrawlog="$tmpfolder/listrawlog.txt"
|
||||||
|
rawfolder="$tmpfolder/raw_logs"
|
||||||
|
yearfolder="$tmpfolder/year_logs"
|
||||||
|
monthfolder="$tmpfolder/month_logs"
|
||||||
|
dayfolder="$tmpfolder/day_logs"
|
||||||
|
|
||||||
|
#############
|
||||||
|
# Script #
|
||||||
|
#############
|
||||||
|
# Vérifier si on a les dossiers temporaires de travail et sinon, les créer
|
||||||
|
if [ -d "$rawfolder" ];then
|
||||||
|
echo "Le dossier $rawfolder existe, passons à la suite";
|
||||||
|
else
|
||||||
|
mkdir -p "$rawfolder"
|
||||||
|
echo "Le dossier $rawfolder a été créé, passons à la suite";
|
||||||
|
fi
|
||||||
|
if [ -d "$yearfolder" ];then
|
||||||
|
echo "Le dossier $yearfolder existe, passons à la suite";
|
||||||
|
else
|
||||||
|
mkdir -p "$yearfolder"
|
||||||
|
echo "Le dossier $yearfolder a été créé, passons à la suite";
|
||||||
|
fi
|
||||||
|
if [ -d "$monthfolder" ];then
|
||||||
|
echo "Le dossier $monthfolder existe, passons à la suite";
|
||||||
|
else
|
||||||
|
mkdir -p "$monthfolder"
|
||||||
|
echo "Le dossier $monthfolder a été créé, passons à la suite";
|
||||||
|
fi
|
||||||
|
if [ -d "$dayfolder" ];then
|
||||||
|
echo "Le dossier $dayfolder existe, passons à la suite";
|
||||||
|
else
|
||||||
|
mkdir -p "$dayfolder"
|
||||||
|
echo "Le dossier $dayfolder a été créé, passons à la suite";
|
||||||
|
fi
|
||||||
|
if [ -d "$finalfolder" ];then
|
||||||
|
echo "Le dossier $finalfolder existe, passons à la suite";
|
||||||
|
else
|
||||||
|
mkdir -p "$finalfolder"
|
||||||
|
echo "Le dossier $finalfolder a été créé, passons à la suite";
|
||||||
|
fi
|
||||||
|
|
||||||
|
# On ne travaille pas sur les fichiers sources. Jamais.
|
||||||
|
# Parce qu'il y a parfois des blagues dans les logs, on nettoie l'encodage.
|
||||||
|
for file in "$originalfolderlog"/*
|
||||||
|
do
|
||||||
|
originallog="$(basename $file)"
|
||||||
|
cat "$file" | tr -d "\000-\010" | tr -d "\016-\037" > "$rawfolder"/"$originallog"
|
||||||
|
done
|
||||||
|
# on va faire un très gros fichier avec tous les logs. Évitez de l'ouvrir avec un éditeur de texte basique.
|
||||||
|
cat "$rawfolder"/* > "$tmpfolder"/logcomplet_"$perso".txt
|
||||||
|
|
||||||
|
#Et on va faire un fichier de controle donnant toutes les dates avec logs, et les lignes foireuses (genre chants) (à vérifier manuellement en cas de doute)
|
||||||
|
cut -c 1-11 "$tmpfolder"/logcomplet_"$perso".txt | sort | uniq > controlline_"$perso".txt
|
||||||
|
echo "$tmpfolder"/logcomplet_"$perso".txt et controlline_"$perso".txt créés
|
||||||
|
|
||||||
|
for logname in "$tmpfolder"/logcomplet_"$perso".txt
|
||||||
|
do
|
||||||
|
# Vérification que les fichiers sont bien des fichiers, ce serait bête de planter le script pour un manque de vérification
|
||||||
|
if [ -f "$logname" ] ; then
|
||||||
|
echo "$logname est un fichier et va être traité"
|
||||||
|
# On va faire un seul gros fichier par année
|
||||||
|
for year in {2009..2025} ; do
|
||||||
|
#echo "${year}"
|
||||||
|
grep "^${year}/" "$logname" >> "$yearfolder"/"${year}".log
|
||||||
|
# Effacer les fichiers vides
|
||||||
|
[ -s "$yearfolder"/"${year}".log ] || rm -f "$yearfolder"/"${year}".log
|
||||||
|
#echo "${year} traitée"
|
||||||
|
# On vérifie si le fichier d'année existe et on ne traite que celles qui existent
|
||||||
|
if [ -f "$yearfolder"/"${year}".log ] ; then
|
||||||
|
# Puis on va faire un fichier par mois
|
||||||
|
for month in {01..12} ; do
|
||||||
|
# echo "${year}/${month} en cours"
|
||||||
|
grep "^${year}/${month}" "$yearfolder"/"${year}".log > "$monthfolder"/"${year}_${month}".log
|
||||||
|
[ -s "$monthfolder"/"${year}_${month}".log ] || rm -f "$monthfolder"/"${year}_${month}".log
|
||||||
|
# On vérifie si le fichier année/mois existe et on ne traite que ceux qui existent
|
||||||
|
if [ -f "$monthfolder"/"${year}_${month}".log ] ; then
|
||||||
|
#echo "$monthfolder"/"${year}_${month}".log
|
||||||
|
# Puis un fichier par jour
|
||||||
|
for day in {01..31} ; do
|
||||||
|
#echo "${year}/${month}/${day} en cours"
|
||||||
|
grep "^${year}/${month}/${day}" "$monthfolder"/"${year}_${month}".log > "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log
|
||||||
|
[ -s "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log ] || rm -f "$dayfolder"/log_"$perso"_"${year}_${month}_${day}".log
|
||||||
|
#echo "${year}/${month}/${day} traité"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "$logname n'est pas un fichier, il n'a pas été traité"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#Tri des fichiers dans des dossiers du type Dossier_trié/perso/année/mois/log.log
|
||||||
|
# On récupère la date, en formattant comme pour les logs
|
||||||
|
for f in $dayfolder/*.log
|
||||||
|
do
|
||||||
|
year=${f: -14:4}
|
||||||
|
month=${f: -9:2}
|
||||||
|
day=${f: -6:2}
|
||||||
|
|
||||||
|
# On se fait une jolie variable qui imite la partie datée du nom des fichiers de log
|
||||||
|
log=log_"$perso"_"${year}_${month}_${day}.log"
|
||||||
|
# on créé le dossier de chaque mois dans les archives s'il n'existe pas
|
||||||
|
mkdir -p "$finalfolder"/"$perso"/"$year"/"$month/"
|
||||||
|
# on déplace ces logs dans leur archive
|
||||||
|
mv "$dayfolder"/"$log" "$finalfolder"/"$perso"/"$year"/"$month"/"$log"
|
||||||
|
done
|
||||||
|
echo "Les fichiers ont été découpés et rangés"
|
||||||
|
|
||||||
|
# Nettoyage
|
||||||
|
#rm -r "$tmpfolder"
|
||||||
|
echo "faites un rm -r $tmpfolder si le dossier tmp était bien JUSTE pour le script..."
|
||||||
|
echo "Tout est bon. Contrôlez le nombre de fichiers entre $finalfolder et controlline_$perso.txt"
|
27
3analyse_old_logryzom.sh
Executable file
27
3analyse_old_logryzom.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Dernière révision : 2021/10/31
|
||||||
|
# Auteur : Zatalyz. Merci à Madi, sans qui tout ça n'aurait jamais pu existé. Que ton Perl soit sanctifié.
|
||||||
|
# Licence CC0
|
||||||
|
# Ce script permet de ne garder que l'alentours et les emotes.
|
||||||
|
# Les commandes sont paramétrées pour l'ancien système de log
|
||||||
|
# Améliorer le sysinfo au fil des nettoyages.
|
||||||
|
# Fonctionnement idéal : usr/bin/bash ./analyselogryzom.sh fichier_entrée fichier_sortie
|
||||||
|
# On peut aussi renseigner les noms et chemins ici sur les variables :
|
||||||
|
#logfile1="/home/zatalyz/Alinea/Histoires/Ryzomstories/log/logbrut/tri_perso_log/denakyo/log_denakyo2012_1215.txt"
|
||||||
|
#logsortie="log_denakyo2012_1215_alentours.txt"
|
||||||
|
logfile1="$1"
|
||||||
|
logsortie="$2"
|
||||||
|
# Canaux à virer (option -v)
|
||||||
|
grep -v 'F4FF\|F80F\|BBBF\|18EF\|FCCF\|78FF\|AFBF\|BBFF' "$logfile1" > templog.txt
|
||||||
|
# canaux à garder
|
||||||
|
# grep "FFFF\|F99F\|FF4F"
|
||||||
|
# vire le timestamp de début des lignes. Garde le * si ça peut servir à nettoyer le sys.info..
|
||||||
|
cut -b 23- templog.txt > templog2.txt
|
||||||
|
# enlever le nom des canaux @{FFFF}
|
||||||
|
sed 's/@{[A-F0-9]\{4\}}//g' templog2.txt > templog3.txt
|
||||||
|
# Si quelqu'un joue avec des caractères bizarres, ça remet tout d'aplomb
|
||||||
|
iconv -t utf-8 -c templog3.txt > templog4.txt
|
||||||
|
# analyser un fichier d'expression régulières de sysinfo et virer ce qui matche
|
||||||
|
#grep -v -f "$fichier"
|
||||||
|
grep -v -f sysinfo.ini templog4.txt > "$logsortie"
|
||||||
|
#rm templog*.txt
|
67
README.md
67
README.md
|
@ -1,3 +1,66 @@
|
||||||
# ryzom_log_cleaner
|
# Gestion des logs
|
||||||
|
|
||||||
Ensemble de scripts bash pour nettoyer les logs clients de Ryzom
|
Ensemble de scripts bash pour nettoyer les logs clients de Ryzom
|
||||||
|
|
||||||
|
## Analyse New log
|
||||||
|
Pour analyser les logs d'après 2012/2013, par là.
|
||||||
|
Fonctionnement idéal : /usr/bin/bash ./1analyse_new_logryzom.sh fichier_entrée fichier_sortie
|
||||||
|
Par exemple :
|
||||||
|
./1analyse_new_logryzom.sh log_zatalyz.txt log_zatalye_alentours.txt
|
||||||
|
|
||||||
|
Liste des canaux, si on veut filtrer autrement :
|
||||||
|
SAY : alentours
|
||||||
|
SAY/EMT : emotes
|
||||||
|
SAY/BBL : messages de PNJ
|
||||||
|
SAY/SHOUT : cris
|
||||||
|
|
||||||
|
UNIVERSE : Univers
|
||||||
|
REGION : comme indiqué
|
||||||
|
|
||||||
|
SYSTEM : messages systèmes
|
||||||
|
SYSTEM/BC : Broadcast (annonces des administrateurs)
|
||||||
|
SYSTEM/AROUND : messages en alentours qui ne sont pas dit par des homins (genre "bienvenue sur ryzom)
|
||||||
|
SYSTEM/ZON : Endroit où le personnage se trouve (affiché lors des changements de zone)
|
||||||
|
SYSTEM/SPLM : Combat ?
|
||||||
|
SYSTEM/SPL : Combat aussi
|
||||||
|
SYSTEM/CHK : Check du système
|
||||||
|
SYSTEM/ITM : gestion des items (type achat de TP)
|
||||||
|
SYSTEM/DG : dégâts
|
||||||
|
SYSTEM/DMG : Dommages
|
||||||
|
SYSTEM/MIS : parade/esquive
|
||||||
|
SYSTEM/ISE : Effets de type vedice etc
|
||||||
|
SYSTEM/PVPTM : infos autour du pvp
|
||||||
|
SYSTEM/TSK : informations à propos des missions
|
||||||
|
SYSTEM/XP : expérience gagnée
|
||||||
|
SYSTEM/THM : encyclopédie
|
||||||
|
|
||||||
|
GUILD/MTD : Mot du jour de la Guilde
|
||||||
|
GUILD : Messages en guilde
|
||||||
|
|
||||||
|
DYN0, DYN1, DYN3, etc : canaux dynamiques. Le canal de langue est souvent sur DYN0
|
||||||
|
|
||||||
|
TELL : messages privés
|
||||||
|
TEAM : messages en équipe
|
||||||
|
|
||||||
|
## Analyse Old Log
|
||||||
|
Pour les logs d'avant le changement de système (donc avant 2013, je crois). Il FAUT un fichier sysinfo.ini, qui contient toutes les expressions régulières à filtrer (tout ce qui est dans le sys.infos). C'était plus lourd. Les canaux sont gardés selon un code couleur. À documenter, un jour, peut-être, ou pas : ça se retrouve en regardant les logs.
|
||||||
|
|
||||||
|
## Splitlog
|
||||||
|
Ce script sépare les logs en 1 fichier de log par jour.
|
||||||
|
Il est prévu pour les logs du jeu Ryzom mais peut s'adapter à d'autres types de log (virer "pseudo !")
|
||||||
|
Mettre tous les logs en vrac dans le même dossier que le script, et lancer la moulinette.
|
||||||
|
|
||||||
|
La bonne commande à passer est
|
||||||
|
cmd ./dossiersource ./dossier final [nomperso]
|
||||||
|
Sans argument des variables par défaut seront utilisées. Le nom du perso peut être déduit des logs
|
||||||
|
Exemple :
|
||||||
|
./split_log.sh ./logbrut/zatalyz/ ./final john
|
||||||
|
=> les fichiers seront traités depuis ./logbrut/zatalyz/, et mis dans le dossier ./final sous le nom de log_john_année_mois_jour.txt sans préciser "john", le nom des logs sera probablement celui de zatalyz, si les fichiers d'origine sont bien formatés comme log_zatalyz.txt ou log_zatalyz_*.txt
|
||||||
|
|
||||||
|
Le script range aussi les logs.
|
||||||
|
|
||||||
|
Attention ! Il laisse quelques fichiers dans le dossier courant. Gardez les logs originaux, dans quelques cas les lignes ne sont pas analysées correctement (cas des retours à la ligne comme dans les poèmes : la ligne ne commence plus par une date).
|
||||||
|
|
||||||
|
## Crédits et licence
|
||||||
|
|
||||||
|
Auteur : Zatalyz. Tout est sous licence CC0, c'est de l'assemblage de bons conseils et de tests, rien de transcendant. Plus de détail dans chaque script.
|
||||||
|
|
||||||
|
|
122
sysinfo.ini
Normal file
122
sysinfo.ini
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# Pas de ligne vide dans ce fichier ! Les commentaires fonctionnent.
|
||||||
|
# Sys.Info : lignes commençants par...
|
||||||
|
^Bienvenue dans Ryzom
|
||||||
|
^MDJ
|
||||||
|
^Vous êtes
|
||||||
|
^Vous quittez
|
||||||
|
^La téléportation
|
||||||
|
^Vous avez détruit
|
||||||
|
^Vous avez acheté
|
||||||
|
^Vous avez reçu
|
||||||
|
^Vous prenez votre
|
||||||
|
^Vous rangez
|
||||||
|
^Votre action de création
|
||||||
|
^Vous vendez
|
||||||
|
^Vos .* ont été vendu(e)s
|
||||||
|
^Votre expérience dans la compétence
|
||||||
|
^Vous avez déposé
|
||||||
|
^Déconnexion annulée
|
||||||
|
^Affichage des personnages en ligne dans la région
|
||||||
|
^Vous avez franchi
|
||||||
|
^Vous proposez à
|
||||||
|
^Vous avez créé
|
||||||
|
^Vous invitez
|
||||||
|
^Vous avez quitté
|
||||||
|
^Votre \w* \w* a été vendu
|
||||||
|
^Joueurs dans le canal de discussion
|
||||||
|
^Nouvelle cible ajoutée au compas
|
||||||
|
^Votre compétence
|
||||||
|
^Vous avez gagné
|
||||||
|
^L[[:punct:]]échange est accepté
|
||||||
|
^Vous achetez
|
||||||
|
^Votre
|
||||||
|
^Vous rejoignez
|
||||||
|
^\w* a quitté votre équipe\.
|
||||||
|
^\w* est maintenant le chef de votre équipe\.
|
||||||
|
^\w* succède au chef de votre équipe\.
|
||||||
|
^Vous étiez
|
||||||
|
^Afficher les CSRs en ligne
|
||||||
|
^Aucun personnage trouvé
|
||||||
|
^\w* est inconnu(e) ou déconnecté(e)\.
|
||||||
|
^Tâche réussie\.
|
||||||
|
# Avec le nom du perso ou des autres
|
||||||
|
^\"\w*\" a été sauvegardée\.
|
||||||
|
^\w* rejoint
|
||||||
|
^\w*\.
|
||||||
|
^Vous avez
|
||||||
|
# Combat
|
||||||
|
^Vous ciblez
|
||||||
|
^Vous jetez
|
||||||
|
^Votre sort
|
||||||
|
^Vous soignez
|
||||||
|
^Vous régénérez
|
||||||
|
^\w* est maintenant au maximum
|
||||||
|
^.* vous attaque\.
|
||||||
|
^.* atteint \w* \w*, infligeant
|
||||||
|
^.* vous porte un coup critique
|
||||||
|
^.* a esquivé votre attaque
|
||||||
|
^.* a paré votre attaque
|
||||||
|
^.* vous rate.
|
||||||
|
^.* quitte le combat
|
||||||
|
^.* vous fait perdre [[:digit:]]* points
|
||||||
|
^.* résiste aux effets de votre sort\.
|
||||||
|
^.* vous atteint mais n[[:punct:]]inflige pas de dégâts\.
|
||||||
|
^.* n[[:punct:]]est plus \w*\.
|
||||||
|
^.* subit une pénalité sur ses esquives\.
|
||||||
|
^.* vous a enraciné et vous ne pouvez plus bouger\.
|
||||||
|
^.* subit une pénalité sur ses compétences de combats\.
|
||||||
|
^.* vous a désarmé\.
|
||||||
|
^Vous attaquez
|
||||||
|
^Vous atteignez
|
||||||
|
^Vous avez esquivé
|
||||||
|
^Vous avez paré
|
||||||
|
^Vous ratez
|
||||||
|
^Vous ralentissez
|
||||||
|
^Vous étourdissez
|
||||||
|
^Vous avez tué
|
||||||
|
^Vous commencez
|
||||||
|
^Les effets du pouvoir
|
||||||
|
^A la recherche de ressources
|
||||||
|
^Vous avez trouvé des ressources
|
||||||
|
^Vos compétences de combats ne sont plus soumises à une pénalité
|
||||||
|
^Vous portez
|
||||||
|
^Vous faites
|
||||||
|
^Vous avez été tué
|
||||||
|
^Votre pénalité de décès
|
||||||
|
^\w* vous jette
|
||||||
|
^\w* vous soigne
|
||||||
|
^\w* vous régénère
|
||||||
|
^Vous subissez des dégâts
|
||||||
|
^Vous pourrez être attaqué
|
||||||
|
^Vous pouvez encore être attaqué
|
||||||
|
^Vous obtenez
|
||||||
|
^Bravo \! Vous obtenez la nouvelle compétence
|
||||||
|
^Vous n[[:punct:]]obtenez
|
||||||
|
^\w* obtient .* de qualité [[:digit:]]*\.
|
||||||
|
^Il n[[:punct:]]y a rien à dépecer
|
||||||
|
^Vous n[[:punct:]]avez pas le droit de dépecer cette carcasse
|
||||||
|
^La cadavre que vous essayez
|
||||||
|
^Le cadavre que vous essayez
|
||||||
|
^Vous n[[:punct:]]êtes
|
||||||
|
^Votre incantation
|
||||||
|
^Vous activez
|
||||||
|
^Vous gagnez
|
||||||
|
^Vous perdez
|
||||||
|
^Vous consommez
|
||||||
|
^Vous ne pouvez pas jeter un sort sur un cadavre
|
||||||
|
^Votre incantation est rompue
|
||||||
|
^Vos esquives ne subissent plus de pénalité
|
||||||
|
^Vous ne pouvez pas attaquer un personnage neutre
|
||||||
|
^Ce sort ne peut être jeté que sur un ennemi
|
||||||
|
^Vos attaques
|
||||||
|
^Vous n[[:punct:]]avez
|
||||||
|
^Vous ne pouvez pas
|
||||||
|
^\w* a lancé un sort qui vous inflige
|
||||||
|
^Vous résistez
|
||||||
|
^Vous interrompez
|
||||||
|
^Les attaques
|
||||||
|
^Les compétences
|
||||||
|
^Vous n[[:punct:]]attaquez plus
|
||||||
|
^Vous utilisez
|
||||||
|
#Forage
|
||||||
|
^La source
|
Loading…
Reference in a new issue