diff --git a/assets/datas/creatures/animals.csv b/assets/datas/creatures/animals.csv
new file mode 100644
index 0000000..e69de29
diff --git a/assets/datas/creatures/animals.json b/assets/datas/creatures/animals.json
new file mode 100644
index 0000000..5eb038e
--- /dev/null
+++ b/assets/datas/creatures/animals.json
@@ -0,0 +1,36 @@
+{
+ "data": [
+ {
+ "name":"Rat",
+ "level":1,
+ "size":"tiny",
+ "trait":"predateur",
+ "pow1":"",
+ "pow2":""
+ },
+ {
+ "name":"Souris",
+ "level":1,
+ "size":"tiny",
+ "trait":"craintif",
+ "pow1":"",
+ "pow2":""
+ },
+ {
+ "name":"Chat",
+ "level":1,
+ "size":"small",
+ "trait":"predateur",
+ "pow1":"",
+ "pow2":""
+ },
+ {
+ "name":"Chien",
+ "level":1,
+ "size":"medium",
+ "trait":"predateur",
+ "pow1":"Woof: Aboie tout le temps et casse les pieds",
+ "pow2":"Est-ce que ça se mange ?"
+ }
+ ]
+}
diff --git a/assets/datas/creatures/data.json b/assets/datas/creatures/data.json
new file mode 100644
index 0000000..09dfb79
--- /dev/null
+++ b/assets/datas/creatures/data.json
@@ -0,0 +1,30 @@
+{
+ "files": [
+ {"title":"Animaux", "file":"animals.json"}
+ ],
+ "stats": [
+ "tiny":{
+ "boost1":["DIS", "FIN"],
+ "boost2":[],
+ "malus1":["PHY"],
+ "malus2":["AUR"],
+ "VIG":-1, "JET":1, "PSY":1
+ }
+ ],
+ "traits": [
+ "predateur":{"boost1":"PHY", "boost2":"INS", "malus":"FIN"},
+ "craintif":{"boost1":"DIS", "boost2":"FIN", "malus":"REL"},
+ "domestique":{"boost1":"REL", "boost2":"AUR", }
+ ],
+
+ "levels": [
+ {"base":40, "boost1":15, "boost2":5, "malus1":15, "malus2":10, "dice":2},
+ {"base":50, "boost1":20, "boost2":10, "malus1":15, "malus2":10, "dice":2},
+ {"base":50, "boost1":20, "boost2":10, "malus1":15, "malus2":10, "dice":2},
+ {"base":60, "boost1":20, "boost2":10, "malus1":15, "malus2":10, "dice":2},
+ {"base":70, "boost1":20, "boost2":10, "malus1":15, "malus2":10, "dice":2},
+ ],
+
+ "dices": ["1D2", "1D4", "1D6", "1D8", "1D12", "1D20"]
+
+}
diff --git a/rules/erratum/lore/magies.md b/rules/erratum/lore/magies.md
index fe57ae4..607bdf9 100644
--- a/rules/erratum/lore/magies.md
+++ b/rules/erratum/lore/magies.md
@@ -12,11 +12,11 @@ Les utilisateurs font un pacte avec certains nombres d'éléments qui pourront e
|:--:|:--:|:--:|
| Grands élémentaires | Commune | INT, HAB |
-### Niveau 0 (pouvoir de base)
+### Niveau 0
-| Pacte élémentaire |
-|:---:|
-| Obtient un élément principal (eau, feu, terre, air) qui devient l’élément principal de l’élémentariste, qui lui confère naturellement une résistance élémentaire (l’élément fait -50 % de dégâts). |
+| Compétence | Pouvoir de base |
+|:----|:---:|
+| -- | **Pacte élémentaire**
Obtient un élément principal (eau, feu, terre, air) qui devient l’élément principal de l’élémentariste, qui lui confère naturellement une résistance élémentaire (l’élément fait -50 % de dégâts). |
### Niveau 1 (1 xp)
diff --git a/static/bestiaire.html b/static/bestiaire.html
new file mode 100644
index 0000000..54d9463
--- /dev/null
+++ b/static/bestiaire.html
@@ -0,0 +1,226 @@
+
+
+
+
+
+ Rulebook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Retour
+
+
+
+
+ Nom |
+ PV |
+ PE |
+ FOR |
+ CON |
+ HAB |
+ INT |
+ SAG |
+ VOL |
+ CHA |
+ DIS |
+ REL |
+ PER |
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/bestiaire.js b/static/bestiaire.js
new file mode 100644
index 0000000..5e6bc68
--- /dev/null
+++ b/static/bestiaire.js
@@ -0,0 +1,85 @@
+let data = {
+ "files": [
+ {"title":"Animaux", "file":"animals.json"}
+ ],
+ "archetypes": {
+ "tiny":{
+ "pv":10, "pe":20,
+ "FOR":30, "INT":50, "CHA":40,
+ "CON":20, "SAG":80, "DIS":80,
+ "HAB":90, "VOL":40, "REL":50,
+ "PER":50,
+ "PHY":0, "SPE":0, "MEN":0,
+ "VIG":-2, "JET":1, "PSY":1
+ },
+ "small":{
+ "pv":15, "pe":20,
+ "FOR":40, "INT":50, "CHA":35,
+ "CON":30, "SAG":50, "DIS":70,
+ "HAB":80, "VOL":45, "REL":50,
+ "PER":50,
+ "VIG":0, "JET":0, "PSY":0
+ },
+ "medium":{
+ "pv":35, "pe":20,
+ "FOR":50, "INT":40, "CHA":50,
+ "CON":40, "SAG":40, "DIS":50,
+ "HAB":60, "VOL":50, "REL":50,
+ "PER":50,
+ "VIG":1, "JET":0, "PSY":0
+ },
+ },
+ "traits": {
+ "predateur":{"boost1":"PHY", "boost2":"INS", "malus":"FIN", "pv":0, "pe":0},
+ "craintif":{"boost1":"DIS", "boost2":"FIN", "malus":"", "pv":10, "pe":-10},
+ "domestique":{"boost1":"REL", "boost2":"AUR", "malus":"INS", "pv":-10, "pe":0}
+ },
+
+ "levels": [
+ {"base":0, "min":10, "max":70, "boost1":15, "boost2":5, "malus":-15, "dice":2, "pv":1},
+ {"base":10, "min":10, "max":70, "boost1":20, "boost2":10, "malus":-15, "dice":2, "pv":1.25},
+ {"base":10, "min":10, "max":70, "boost1":20, "boost2":10, "malus":-15, "dice":3, "pv":1.5},
+ {"base":20, "min":10, "max":70, "boost1":20, "boost2":10, "malus":-15, "dice":3, "pv":2},
+ {"base":20, "min":10, "max":70, "boost1":20, "boost2":10, "malus":-15, "dice":3, "pv":3}
+ ],
+
+ "dices": ["1D2", "1D4", "1D6", "1D8", "1D12", "1D20"]
+}
+
+function getPV(level, size, trait) {
+ var levelData = getLevelData(level);
+ var sizeData = getSizeData(size);
+ var traitData = getTraitData(trait);
+ return Math.floor((sizeData.pv + traitData.pv) * levelData.pv);
+}
+
+function getPE(level, size, trait) {
+ var levelData = getLevelData(level);
+ var sizeData = getSizeData(size);
+ var traitData = getTraitData(trait);
+ return Math.floor((sizeData.pe + traitData.pe) * levelData.pv);
+}
+
+function getLevelData(level) {
+ var levelValue = Math.min(Math.max(0, level - 1), 4)
+ var allLevelsData = data["levels"]
+ return allLevelsData[levelValue]
+}
+
+function getSizeData(size) {
+ var allSizeData = data["stats"]
+ return allSizeData[size]
+}
+
+function getTraitData(trait) {
+ var allTraitsData = data["traits"]
+ return allTraitsData[trait]
+}
+
+
+function getStat(type, level, size, trait) {
+ var levelData = getLevelData(level);
+ var sizeData = getSizeData(size);
+ var traitData = getTraitData(trait);
+ return sizeData[type] + levelData.base;
+}
diff --git a/static/includes/_links.html b/static/includes/_links.html
index c7706f7..8718da8 100644
--- a/static/includes/_links.html
+++ b/static/includes/_links.html
@@ -6,6 +6,8 @@
+
+