npc sheet

This commit is contained in:
François-Xavier Guillois
2023-09-04 09:44:41 +02:00
parent 6f244ca1ef
commit 5600e37991
4 changed files with 144 additions and 33 deletions
+39 -6
View File
@@ -76,6 +76,25 @@
"morale_level": "Niveau de moral",
"notes": "Notes"
},
"ADVERSITY": {
"threat": "Menace",
"experience": "Expérience",
"role": "Rôle",
"attack": "Attaque",
"damage": "Dommages",
"weapon": "Arme",
"vigor": "Vigueur",
"wounds": "Blessures",
"action": "Action",
"specialties": "Spécialité",
"rerolls": "Relances",
"contact": "Contact",
"reaction": "Réaction",
"pools":"Réserves",
"gear": "Matériel",
"protection": "Protection"
},
"VERMINE": {
"name": "Vermine",
"stats": "Statistiques",
@@ -163,6 +182,26 @@
"will":{ "name": "Volonté"},
"empathy":{ "name": "Empathie"}
},
"SKILLS_LEVELS": {
"beginner": "Débutant",
"proficient": "Confirmé",
"expert":"Expert",
"master":"Maître",
"legend":"Légende"
},
"THREAT_LEVELS": {
"minor": "Mineure",
"serious": "Sérieuse",
"major":"Majeure",
"deadly":"Mortelle"
},
"ROLE_LEVELS": {
"minor": "Mineur",
"secondaray": "Secondaire",
"important":"Important",
"major":"Majeur"
},
"VERMINE.effect_treate": "Create Effect",
"VERMINE.effect_toggle": "Toggle Effect",
@@ -170,12 +209,6 @@
"VERMINE.effect_delete": "Delete Effect",
"VERMINE.Add": "Ajouter",
"VERMINE.skill_level.beginner": "Débutant",
"VERMINE.skill_level.proficient": "Confirmé",
"VERMINE.skill_level.expert": "Expert",
"VERMINE.skill_level.master": "Maître",
"VERMINE.skill_level.legend": "Légende",
"TOTEMS": {
"human": {
+26 -5
View File
@@ -12,11 +12,11 @@ VERMINE.AgeTypes = {
}
VERMINE.SkillLevels = {
1:{ "label":"VERMINE.skill_level.beginner", "dicePool":1, "reroll":0},
2:{ "label":"VERMINE.skill_level.proficient", "dicePool":1, "reroll":1},
3:{ "label":"VERMINE.skill_level.expert", "dicePool":2, "reroll":1},
4:{ "label":"VERMINE.skill_level.master", "dicePool":2, "reroll":2},
5:{ "label":"VERMINE.skill_level.legend", "dicePool":3, "reroll":2}
1:{ "label":"SKILL_LEVELS.beginner", "dicePool":1, "reroll":0},
2:{ "label":"SKILL_LEVELS.proficient", "dicePool":1, "reroll":1},
3:{ "label":"SKILL_LEVELS.expert", "dicePool":2, "reroll":1},
4:{ "label":"SKILL_LEVELS.master", "dicePool":2, "reroll":2},
5:{ "label":"SKILL_LEVELS.legend", "dicePool":3, "reroll":2}
}
VERMINE.DifficultyLevels = {
@@ -27,6 +27,27 @@ VERMINE.DifficultyLevels = {
5:{ "label":"DIFFICULTY_LEVELS.impossible", "difficulty":10}
},
VERMINE.ThreatLevels = {
1:{ "label":"THREAT_LEVELS.minor", "attack":3, "vigor":1, "minorWound":1, "majorWound":1, "deadlyWound":1},
2:{ "label":"THREAT_LEVELS.serious", "attack":4, "vigor":2, "minorWound":2, "majorWound":1, "deadlyWound":1},
3:{ "label":"THREAT_LEVELS.major", "attack":5, "vigor":3, "minorWound":2, "majorWound":1, "deadlyWound":1},
4:{ "label":"THREAT_LEVELS.deadly", "attack":6, "vigor":4, "minorWound":2, "majorWound":2, "deadlyWound":2},
}
VERMINE.ExperienceLevels = {
1:{ "label":"SKILL_LEVELS.beginner", "action":3, "specialties":4, "rerolls":0, "contact":"7"},
2:{ "label":"SKILL_LEVELS.proficient", "action":3, "specialties":5, "rerolls":0, "contact":"5 ou 7"},
3:{ "label":"SKILL_LEVELS.expert", "action":4, "specialties":6, "rerolls":1, "contact":"5,7 ou 9"},
4:{ "label":"SKILL_LEVELS.master", "action":4, "specialties":6, "rerolls":2, "contact":"3,5,7 ou 9"},
}
VERMINE.RoleLevels = {
1:{ "label":"ROLE_LEVELS.minor", "reaction":3, "reaction_bonus":0, "pools":0, "gear":9, "gear_hindrance":0, "protection":1},
2:{ "label":"ROLE_LEVELS.secondary", "reaction":3,"reaction_bonus":1, "pools":1, "gear":9,"gear_hindrance":1, "protection":2},
3:{ "label":"ROLE_LEVELS.important", "reaction":3, "reaction_bonus":2, "pools":2, "gear":9,"gear_hindrance":2, "protection":3},
4:{ "label":"ROLE_LEVELS.major", "reaction":4, "reaction_bonus":2, "pools":4, "gear":10, "gear_hindrance":2, "protection":3},
}
VERMINE.abilityCategories = {
"physical": {
"label":"VERMINE.ability_category.physical"
+36
View File
@@ -61,6 +61,42 @@ export const registerHandlebarsHelpers = function () {
});
// return threat level information
Handlebars.registerHelper('threatLevel', function (property, level, options) {
if (level < 1 || level > 5)
return "";
let levelData = CONFIG.VERMINE.ThreatLevels[level];
if (property == 'label'){
return (levelData !== undefined) ? game.i18n.localize(levelData[property]) : "";
} else {
return (levelData !== undefined) ? levelData[property] : "";
}
});
// return experience level information
Handlebars.registerHelper('experienceLevel', function (property, level, options) {
if (level < 1 || level > 5)
return "";
let levelData = CONFIG.VERMINE.ExperienceLevels[level];
if (property == 'label'){
return (levelData !== undefined) ? game.i18n.localize(levelData[property]) : "";
} else {
return (levelData !== undefined) ? levelData[property] : "";
}
});
// return role level information
Handlebars.registerHelper('roleLevel', function (property, level, options) {
if (level < 1 || level > 5)
return "";
let levelData = CONFIG.VERMINE.RoleLevels[level];
if (property == 'label'){
return (levelData !== undefined) ? game.i18n.localize(levelData[property]) : "";
} else {
return (levelData !== undefined) ? levelData[property] : "";
}
});
// return skill level information
Handlebars.registerHelper('skillLevel', function (property, level, options) {
if (level < 1 || level > 5)
+43 -22
View File
@@ -1,42 +1,29 @@
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
<form class="{{cssClass}} {{actor.type}} flexcol form" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
{{!-- The grid classes are defined in scss/global/_grid.scss. To use,
use both the "grid" and "grid-Ncol" class where "N" can be any number
from 1 to 12 and will create that number of columns. --}}
<div class="resources grid grid-3col">
{{!-- "flex-group-center" is also defined in the _grid.scss file
and it will add a small amount of padding, a border, and will
center all of its child elements content and text. --}}
<div class="resource flex-group-center">
<label for="system.health.value" class="resource-label">Health</label>
<label for="system.threat.value" class="resource-label">{{ localize 'ADVERSITY.threat'}}</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.health.value" value="{{system.health.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="system.health.max" value="{{system.health.max}}" data-dtype="Number"/>
<input type="number" name="system.threat.value" value="{{system.threat.value}}" data-dtype="Number" min="1" max="4" />
</div>
</div>
<div class="resource flex-group-center">
<label for="system.power.value" class="resource-label">Power</label>
<label for="system.experience.value" class="resource-label">{{ localize 'ADVERSITY.experience'}}</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.power.value" value="{{system.power.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="system.power.max" value="{{system.power.max}}" data-dtype="Number"/>
<input type="number" name="system.experience.value" value="{{system.experience.value}}" data-dtype="Number" min="1" max="4" />
</div>
</div>
<div class="resource flex-group-center">
<label for="system.cr" class="resource-label">CR / XP</label>
<label for="system.cr" class="resource-label">{{ localize 'ADVERSITY.role'}}</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.cr" value="{{system.cr}}" data-dtype="Number"/>
<span> / </span>
<input type="text" disabled="true" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
<input type="number" name="system.role.value" value="{{system.role.value }}" data-dtype="Number" min="1" max="4"/>
</div>
</div>
@@ -57,8 +44,42 @@
{{!-- Biography Tab --}}
<div class="tab biography" data-group="primary" data-tab="description">
{{!-- If you want TinyMCE editors to output inline rolls when rendered, you need to pass the actor's roll data to the rollData property. --}}
{{editor system.biography target="system.biography" rollData=rollData button=true owner=owner editable=editable}}
<section class="grid grid-3col gap-md">
<div class="mdb">
<h4 class="align-center">{{ localize 'ADVERSITY.threat'}}</h4>
<ul class="unstyled">
<li>{{ localize 'ADVERSITY.attack'}} {{ threatLevel "attack" system.threat.value }}</li>
<li><input type="text" name="system.identity.skills" value="{{ system.identity.skills }}" data-dtype="String"/></li>
<li>{{ localize 'ADVERSITY.damage'}}</li>
<li>{{ localize 'ADVERSITY.weapon'}}</li>
<li>{{ localize 'ADVERSITY.vigor'}} {{ threatLevel "vigor" system.threat.value }}</li>
<li>{{ localize 'ADVERSITY.wounds'}} {{ threatLevel "minorWound" system.threat.value }}/{{ threatLevel "majorWound" system.threat.value }}/{{ threatLevel "deadlyWound" system.threat.value }}</li>
</ul>
</div>
<div class="mdb">
<h4 class="align-center">{{ localize 'ADVERSITY.experience'}}</h4>
<ul class="unstyled">
<li>{{ localize 'ADVERSITY.action'}} {{ experienceLevel "action" system.experience.value }}</li>
<li>{{ localize 'ADVERSITY.specialties'}} {{ experienceLevel "specialties" system.experience.value }}</li>
<li>{{ localize 'ADVERSITY.rerolls'}} {{ experienceLevel "rerolls" system.experience.value }}</li>
<li>{{ localize 'ADVERSITY.contact'}} {{ experienceLevel "contact" system.experience.value }}</li>
</ul>
</div>
<div class="mdb">
<h4 class="align-center">{{ localize 'ADVERSITY.role'}}</h4>
<ul class="unstyled">
<li>{{ localize 'ADVERSITY.reaction'}} {{ roleLevel "reaction" system.role.value }} + {{ roleLevel "reaction_bonus" system.role.value }}</li>
<li>{{ localize 'ADVERSITY.pools'}} {{ roleLevel "pools" system.role.value }}</li>
<li>{{ localize 'ADVERSITY.gear'}} {{ roleLevel "gear" system.role.value }}</li>
<li>{{ localize 'ADVERSITY.protection'}} {{ roleLevel "protection" system.role.value }}</li>
</ul>
</div>
</section>
<section class="grid grid-1col gap-md">
<h4 class="align-center">{{ localize 'IDENTITY.notes'}}</h4>
{{editor system.biography target="system.biography" button=true owner=owner editable=editable}}
</section>
</div>
{{!-- Owned Items Tab --}}