diff --git a/lang/en.json b/lang/en.json
index dab5661..0b08f89 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -70,12 +70,18 @@
   "WH.ui.parrybonustotal": "Parry bonus total",
   "WH.ui.drbonustotal": "DR bonus total",
   "WH.ui.counterspell": "Counter spell",
-  "WH.ui.createitem": "Create item",
+  "WH.ui.createitem": "Bonus to percentage throws",
   "WH.ui.classSkills": "Class Skills",
-  "WH.ui.skills": "Skills",
+  "WH.ui.skills": "Skills based on level",
   "WH.ui.isclassskill": "Class skill ?",
   "WH.ui.unlimited": "Unlimited use ?",
   "WH.ui.currentuse": "Current use",
   "WH.ui.maxuse": "Max use",
-  "WH.ui.languages": "Languages"
+  "WH.ui.languages": "Languagess",
+  "WH.ui.languagesbonus": "Bonus Languages (mind/2)",
+  "WH.ui.competency": "Competency",
+  "WH.ui.conditions": "Conditions",
+  "WH.ui.effect": "Effect",
+  
+  "WH.chat.save": "Save"
 }
\ No newline at end of file
diff --git a/modules/warhero-actor-sheet.js b/modules/warhero-actor-sheet.js
index 585867f..2156a94 100644
--- a/modules/warhero-actor-sheet.js
+++ b/modules/warhero-actor-sheet.js
@@ -46,12 +46,14 @@ export class WarheroActorSheet extends ActorSheet {
       classSkills: this.actor.getClassSkills( ),
       languages: this.actor.getLanguages( ),
       weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
+      conditions: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getConditions()) ),
       armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
       shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
       powers: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getPowers())),
       equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
       slotEquipments: this.actor.buildEquipmentsSlot(),
       subActors: duplicate(this.actor.getSubActors()),
+      competency: this.actor.getCompetency(),
       race: duplicate(race),
       class: duplicate(this.actor.getClass()),
       moneys: duplicate(this.actor.getMoneys()),
diff --git a/modules/warhero-actor.js b/modules/warhero-actor.js
index e7d1915..0ed93fd 100644
--- a/modules/warhero-actor.js
+++ b/modules/warhero-actor.js
@@ -203,6 +203,12 @@ export class WarheroActor extends Actor {
     return comp;
   }
   /* -------------------------------------------- */
+  getConditions() {
+    let comp = duplicate(this.items.filter(item => item.type == 'condition') || []);
+    WarheroUtility.sortArrayObjectsByName(comp)
+    return comp;
+  }
+  /* -------------------------------------------- */
   getItemById(id) {
     let item = this.items.find(item => item.id == id);
     if (item) {
@@ -365,6 +371,28 @@ export class WarheroActor extends Actor {
     this.update({ 'system.secondary.hp': hp })
     return Number(dmgRoll.total)
   }
+  /* -------------------------------------------- */
+  updateCompetency(competency, obj) {
+    for(let key in obj) {
+      if (obj[key]) {
+        competency[key] = true
+      }
+    }
+  }
+  getCompetency() {
+    let myRace = this.getRace()
+    let myClass = this.getClass()
+    let competency = { weapons: {}, armors: {}, shields: {}}
+    if ( myRace.system && myClass.system) {
+      this.updateCompetency(competency.weapons, myRace.system.weapons)
+      this.updateCompetency(competency.armors, myRace.system.armors)
+      this.updateCompetency(competency.shields, myRace.system.shields)
+      this.updateCompetency(competency.weapons, myClass.system.weapons)
+      this.updateCompetency(competency.armors, myClass.system.armors)
+      this.updateCompetency(competency.shields, myClass.system.shields)
+    }
+    return competency
+  }
 
   /* -------------------------------------------- */
   getAbility(abilKey) {
@@ -549,7 +577,7 @@ export class WarheroActor extends Actor {
   /* -------------------------------------------- */
   setLevel() {
     let xp = this.system.secondary.xp.value
-    this.system.secondary.xp.level = Math.floor(xp/10)
+    this.system.secondary.xp.level = 1 + Math.floor(xp/10)
   }
   /* -------------------------------------------- */
   computeDRTotal() {
diff --git a/modules/warhero-utility.js b/modules/warhero-utility.js
index eac2f85..b1df65f 100644
--- a/modules/warhero-utility.js
+++ b/modules/warhero-utility.js
@@ -519,12 +519,18 @@ export class WarheroUtility {
       await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
     }
     rollData.roll = myRoll
+    rollData.diceFormula = diceFormula
+    rollData.diceResult = myRoll.terms[0].results[0].result
     rollData.isSuccess = false
-    if (myRoll.total >= 12 || myRoll.terms[0].results[0].result == 12) {
+    if (myRoll.total >= 12 || rollData.diceResult == 12) {
       rollData.isSuccess = true
+      if (rollData.diceResult == 12) {
+        rollData.isCriticalSuccess = true
+      }
     }
-    if (myRoll.terms[0].results[0].result == 1) {
+    if (rollData.diceResult == 1) {
       rollData.isSuccess = false
+      rollData.isCriticalFailure = true
     }
     let msg = await this.createChatWithRollMode(rollData.alias, {
       content: await renderTemplate(`systems/fvtt-warhero/templates/chat-parry-result.html`, rollData)
@@ -554,6 +560,8 @@ export class WarheroUtility {
       let myRoll = new Roll(rollData.weapon.damageFormula + "+" + rollData.bonusMalus).roll({ async: false })
       await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
       rollData.roll = myRoll
+      rollData.diceFormula = myRoll.formula
+      rollData.diceResult = myRoll.terms[0].results[0].result
   
       let msg = await this.createChatWithRollMode(rollData.alias, {
         content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
@@ -571,7 +579,6 @@ export class WarheroUtility {
       diceFormula += "+" + rollData.mWeaponMalus
     }
     diceFormula += "+" + rollData.bonusMalus
-    rollData.diceFormula = diceFormula
 
     // Performs roll
     console.log("Roll formula", diceFormula)
@@ -581,6 +588,14 @@ export class WarheroUtility {
       await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
     }
     rollData.roll = myRoll
+    rollData.diceFormula = diceFormula
+    rollData.diceResult = myRoll.terms[0].results[0].result
+    if (rollData.diceResult == 20) {
+      rollData.isCriticalSuccess = true
+    }
+    if (rollData.diceResult == 1) {
+      rollData.isCriticalFailure = true
+    }
 
     let msg = await this.createChatWithRollMode(rollData.alias, {
       content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData)
diff --git a/styles/simple.css b/styles/simple.css
index 57106fe..d357ec6 100644
--- a/styles/simple.css
+++ b/styles/simple.css
@@ -1494,4 +1494,10 @@
   }
   form .notes {
     color: rgba(214, 230, 230, 0.95);
+  }
+  .crit-success {
+    color: darkgreen;
+  }
+  .crit-failure {
+    color: darkred;
   }
\ No newline at end of file
diff --git a/system.json b/system.json
index 4266b1d..9df51e2 100644
--- a/system.json
+++ b/system.json
@@ -100,7 +100,7 @@
   "styles": [
     "styles/simple.css"
   ],
-  "version": "10.0.18",
+  "version": "10.0.19",
   "compatibility": {
     "minimum": "10",
     "verified": "10",
@@ -108,7 +108,7 @@
   },
   "title": "Warhero RPG",
   "manifest": "https://www.uberwald.me/gitea/public/fvtt-warhero/raw/branch/master/system.json",
-  "download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.18.zip",
+  "download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.19.zip",
   "url": "https://www.uberwald.me/gitea/public/fvtt-warhero",
   "background": "images/ui/warhero_welcome_page.webp",
   "id": "fvtt-warhero"
diff --git a/template.json b/template.json
index e884dc1..0ed5a8f 100644
--- a/template.json
+++ b/template.json
@@ -56,6 +56,7 @@
             "abbrev": "hp",
             "style": "edit",
             "hasmax": true,
+            "isheader": true,
             "max": 1,
             "value": 1
           },
@@ -98,6 +99,7 @@
             "abbrev": "pm",
             "style": "edit",
             "hasmax": true,
+            "isheader": true,
             "max": 1,
             "value": 1
           },
@@ -187,7 +189,7 @@
             "value": 0            
           },
           "nblanguage": {
-            "label": "WH.ui.languages",
+            "label": "WH.ui.languagesbonus",
             "abbrev": "nblanguage",
             "style": "edit",
             "disabled": true,
@@ -208,14 +210,15 @@
    }
   },
   "Item": {
-    "types": [ "equipment", "race", "weapon", "armor", "shield", "money" , "skill", "power", "language", "condition", "class"],
+    "types": [ "equipment", "race", "weapon", "armor", "shield", "skill", "power", "language", "condition", "class"],
     "templates": {
       "commonclassrace": {
         "weapons": {
           "short": false,
           "long": false,
           "twohanded": false,
-          "shotgun": false,  
+          "shooting": false,
+          "polearm": false,
           "throwing": false  
         },
         "armors": {
@@ -231,6 +234,7 @@
       }
     },
     "condition": {
+      "shortdescription": "",
       "description": ""
     },
     "class": {
@@ -247,6 +251,7 @@
       "templates": ["commonclassrace"]
     },
     "language": {
+      "shortdescription": "",
       "description": ""
     },
     "skill": {
@@ -303,11 +308,6 @@
       "level4_2": "",
       "description": ""
     },
-    "money" : {
-      "value": 0,
-      "quantity": 0,
-      "description": ""
-    },
     "spell":{
       "lore": "",
       "circle": 1,
diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html
index 68864ea..bc783be 100644
--- a/templates/actor-sheet.html
+++ b/templates/actor-sheet.html
@@ -23,18 +23,36 @@
                   
                   
                   
+