copy from gods

This commit is contained in:
François-Xavier Guillois
2023-05-30 15:01:27 +02:00
parent d8ab796808
commit cb71f649f1
15 changed files with 793 additions and 304 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

+322 -6
View File
@@ -14,22 +14,338 @@
/* custom styles */ /* custom styles */
body.system-totem img#logo { body.system-totem img#logo {
content: url("/systems/totem/assets/images/ui/logo_totem_foundry.webp"); content: url("/systems/totem/assets/images/ui/logo_gods_foundry.webp");
height:auto; height:auto;
} }
/* Customize the chat roll area! */ /* Customize the chat roll area! */
#chat-form textarea { #chat-form textarea {
/*background: url(systems/totem/assets/images/ui/box_background.png) repeat; background: url(/systems/totem/assets/images/ui/box_background.webp) repeat;
font-family: monospace; /*font-family: monospace;
font-size: 14px; font-size: 14px;
color: black; */ color: black; */
} }
/* Customize the chat history area! */ /* Customize the chat history area! */
#chat-log .message { #chat-log .message {
/*background: url(systems/totem/assets/images/ui/box_background.png) repeat; background: url(/systems/totem/assets/images/ui/box_background.webp) repeat;
color: #191813; */ /*color: #191813; */
} }
img {
border:none;
}
ul.unstyled {
list-style-type: none;
padding:0;
margin:0;
}
ul.unstyled li {
padding:0;
margin:0;
}
.padding-with-frieze {
margin: 0 23% !important;
}
.padding-with-frieze li {
max-width:100%;
}
.w-full {
width:100%;
}
/* ----------------------------------------- */
/* Sheet Structure */
/* ----------------------------------------- */
.system-totem .window-content {
background: url(/systems/totem/assets/images/ui/box_background.webp);
padding: 0;
overflow-y: hidden;
}
.actor.sheet form .form {
display: grid;
/*grid:
"sidebar header" 75px
"sidebar nav" minmax(min-content, max-content)
"sidebar content" 1fr/230px 1fr;*/
grid-template-columns: minmax(230px,1fr) 3fr;
grid-template-rows: 1fr;
align-items: flex-start;
height: 100%;
}
.actor.sheet .form aside {
display: flex;
grid-row: span 1 / span 1;
flex-direction: column;
justify-content: space-between;
align-items: center;
background-image: url(/systems/totem/assets/images/ui/barre_lateral.webp);
background-repeat: no-repeat;
background-position: bottom center;
height: 100%;
}
.actor.sheet .form main {
grid-row: span 1 / span 1;
}
.system-totem .char-header {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
flex: 0 0 100%;
height: 102px;
}
.system-totem .char-level {
background: url(/systems/totem/assets/images/ui/gods_navig_top.webp);
height: 56px;
background-size: cover;
width: 100%;
display:flex;
justify-content: space-around;
align-items: flex-end;
}
.system-totem .sheet.actor .sheet-body {
height: calc(100% - 35px);
overflow: hidden;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
}
.system-totem .sheet.actor form {
width: 100%;
height: 100%;
overflow: hidden;
}
.system-totem .sheet.actor form input[type=text], .system-totem .sheet.actor form input[type=number] {
width: calc(100% - 2px);
height: calc(100% - 2px);
background: none;
padding: 0;
margin: 1px 0;
color: #333;
border: 1px solid transparent;
}
.system-totem .sheet.actor form input[type=text]:hover:not(:disabled), .system-totem .sheet.actor form input[type=text]:focus, .system-totem .sheet.actor form input[type=number]:hover:not(:disabled), .system-totem .sheet.actor form input[type=number]:focus {
border: 1px solid black;
box-shadow: 0 0 10px #00005a;
}
.system-totem .sheet.actor form select {
font-size: var(--font-size-10);
height: 18px;
background: rgba(255, 255, 255, 0.5);
}
.system-totem .sheet.actor form label {
display: block;
}
.system-totem .sheet.actor form .mce-panel span {
display: inherit;
}
.system-totem .sheet.actor form.editable .rollable:hover {
color: #000;
text-shadow: 0 0 10px #00005a;
cursor: pointer;
}
.system-totem .sheet.actor form .sheet-tabs {
font-weight: 500;
height: 30px;
}
.system-totem .sheet.actor form .sheet-tabs > .list-row {
line-height: 24px;
padding-top: 3px;
font-size: var(--font-size-12);
text-align: center;
}
.system-totem .sheet.actor form .sheet-tabs > .list-row:last-of-type {
padding-right: 4px;
}
.system-totem .sheet.actor form .sheet-tabs > .list-row.active {
color: #000;
font-weight: 700;
}
.system-totem .sheet.actor form .tab {
flex: 1;
overflow: hidden;
}
.system-totem .sheet.actor form .tag-legacy {
float: left;
margin: 0 2px 2px 0;
padding: 0 3px;
font-size: var(--font-size-10);
line-height: 16px;
border: 1px solid #999;
border-radius: 3px;
white-space: normal;
font-weight: 500;
}
/* ---------------------------------------- */
/* Actor Sheet */
/* ---------------------------------------- */
.system-totem .sheet.actor {
min-width: 650px;
min-height: 450px;
}
.system-totem .sheet.actor .sidebar {
width: 230px;
min-height:518px;
}
.system-totem .sheet.actor .floatright {
float: right;
}
.system-totem .sheet.actor .sheet-upper {
height: 268px;
}
.system-totem .sheet.actor .sheet-upper .sheet-header {
height: 48px;
}
.system-totem .sheet.actor .sheet-upper .sheet-profile, .system-totem .sheet.actor .sheet-upper .sheet-showcase {
height: 220px;
}
.system-totem .sheet.actor .sheet-content {
padding:4px;
}
.system-totem .sheet.actor .sheet-sidebar {
height: calc(100% - 48px);
display: flex;
flex-direction: column;
flex-wrap: nowrap;
overflow-x: hidden;
overflow-y: auto;
}
.system-totem .sheet.actor .sheet-sidebar > * {
flex: 1;
}
.system-totem .sheet.actor .sheet-sidebar .sidebar-summary {
overflow-y: hidden;
}
.system-totem .sheet.actor.npc-sheet .sheet-upper {
height: 220px;
}
.system-totem .sheet.actor.npc-sheet .sheet-upper .sheet-showcase {
height: 172px;
}
.system-totem .sheet.actor.npc-sheet .sheet-lower {
height: calc(100% - 220px - 32px);
}
.system-totem .sheet.actor.npc-sheet section.sheet-body {
height: calc(100% - 48px);
}
.system-totem .sheet.actor .sheet-navigation {
border-top: 1px solid var(--secondary-background);
border-bottom: 1px solid var(--primary-background);
}
.system-totem .sheet.actor .sheet-navigation .sheet-tabs > .list-row {
border-radius: 5px 5px 0 0;
}
.system-totem .sheet.actor .sheet-navigation .sheet-tabs > .list-row.active {
border: 1px solid #666;
border-bottom: none;
/* box-shadow: 0 0 10px inset #ff6400;
*/
background: var(--primary-background);
color: #fff;
text-shadow: none;
}
.system-totem .sheet.actor .sheet-header {
border-bottom: 1px solid var(--primary-background);
}
.system-totem .sheet.actor .sheet-header h1 {
margin: 0;
border: none;
}
.system-totem .sheet.actor .sheet-header h1.charname {
flex-basis: 50%;
}
.system-totem .sheet.actor .sheet-header .editsheet {
flex: 3;
font-size: 0.625rem;
text-align: center;
margin-top: 3px;
}
.system-totem .sheet.actor .sheet-header .charlevel {
flex: 0 0 150px;
display: flex;
align-items: center;
text-align: right;
}
.system-totem .sheet.actor .sheet-header .charlevel > * {
flex: 1;
}
.system-totem .sheet.actor .sheet-header .charlevel .level {
font-family: var(--serif-condensed);
font-weight: 700;
align-items: center;
color: #444;
display: flex;
justify-content: end;
}
.system-totem .sheet.actor .sheet-header .charlevel .level input {
flex-basis: 1.5rem;
margin-left: 0.1em;
text-align: center;
}
.system-totem .sheet.actor .sheet-header .charlevel .xpbar {
width: 100%;
flex: 0 0 8px;
background: #666;
border: 1px solid #000;
border-radius: 3px;
}
.system-totem .sheet.actor .sheet-header .charlevel .xpbar .bar {
height: 4px;
margin: 1px;
display: block;
background: #afebff;
border: 1px solid #000;
border-radius: 2px;
}
.system-totem .sheet.actor .sheet-header .charlevel .experience {
flex: 0 0 16px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
justify-content: flex-end;
}
.system-totem .sheet.actor .sheet-header .charlevel .experience > * {
flex: 1;
}
.system-totem .sheet.actor .sheet-header .charlevel .experience > input[type=text], .system-totem .sheet.actor .sheet-header .charlevel .experience > input[type=number] {
flex: 1;
text-align: right;
height: 16px;
}
.actor.sheet nav.sheet-navigation {
display: inline-flex;
justify-content: flex-end;
align-items: center;
height: 30px;
background: var(--secondary);
background: url(../assets/sheet/border-pattern.webp) repeat-x top, url(../assets/sheet/border-pattern.webp) repeat-x bottom, var(--secondary);
transition: all 0.1s ease-out;
box-shadow: 0 -1px 1px rgb(0 0 0 / 25%);
border-top: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: 1px solid rgba(255, 255, 255, 0.5);
width:95%;
position: relative;
}
.actor.sheet nav.sheet-navigation .item {
height: 24px;
width: 24px;
border-radius: 50%;
z-index: 1;
transition: all 0.1s ease-out;
}
+118 -61
View File
@@ -1,11 +1,17 @@
{ {
"TOTEM.WorldSettings.GameMode.Name":"Choix du mode de jeu", "TOTEM.WorldSettings.GameMode.Name":"Choix du mode de jeu",
"TOTEM.WorldSettings.GameMode.Hint":"À limage de certains jeux vidéo proposant différents, Vermine 2047 permet aux joueurs de choisir leur Mode de jeu et de fixer eux-mêmes le degré de réalisme, de surnaturel et de dangerosité de lunivers.", "TOTEM.WorldSettings.GameMode.Hint":"À limage de certains jeux vidéo proposant différents, Vermine 2047 permet aux joueurs de choisir leur Mode de jeu et de fixer eux-mêmes le degré de réalisme, de surnaturel et de dangerosité de lunivers.",
"GAME_MODES": {
"heroic": { "name": "Héroique"},
"epic": { "name": "Epique"},
"legendary": { "name": "Légendaire"}
},
"TOTEM.roll_tool": "Lanceur de dés", "TOTEM.roll_tool": "Lanceur de dés",
"TOTEM.roll_dice": "Jeter les dés", "TOTEM.roll_dice": "Jeter les dés",
"TOTEM.level": "Niveau", "TOTEM.level": "Niveau",
"TOTEM.experience": "Expérience",
"TOTEM.reputation": "Réputation",
"TOTEM.pool": "Réserve", "TOTEM.pool": "Réserve",
"TOTEM.pools": "Réserves", "TOTEM.pools": "Réserves",
"TOTEM.self_control": "Sang-Froid", "TOTEM.self_control": "Sang-Froid",
@@ -20,19 +26,22 @@
"TOTEM.penalty":"Malus", "TOTEM.penalty":"Malus",
"TOTEM.reroll":"Relance", "TOTEM.reroll":"Relance",
"TOTEM.specialty":"Spécialité", "TOTEM.specialty":"Spécialité",
"TOTEM.technique":"Technique",
"TOTEM.techniques":"Techniques",
"TOTEM.difficulty":"Difficulté", "TOTEM.difficulty":"Difficulté",
"TOTEM.help":"Entraide", "TOTEM.help":"Entraide",
"TOTEM.tooling":"Matériel", "TOTEM.tooling":"Equipement",
"ABILITIES": {
"TOTEM.vigor_ability":"Vigueur", "strength": { "name": "Puissance"},
"TOTEM.health_ability":"Santé", "constitution": { "name": "Résistance"},
"TOTEM.precision_ability":"Précision", "precision":{ "name": "Précision"},
"TOTEM.reflexes_ability":"Réflexes", "reflexes":{ "name": "Réflexes"},
"TOTEM.knowledge_ability":"Savoir", "knowledge":{ "name": "Connaissance"},
"TOTEM.perception_ability":"Perception", "perception":{ "name": "Perception"},
"TOTEM.will_ability":"Volonté", "will":{ "name": "Volonté"},
"TOTEM.empathy_ability":"Empathie", "empathy":{ "name": "Empathie"}
},
"TOTEM.effect_treate": "Create Effect", "TOTEM.effect_treate": "Create Effect",
"TOTEM.effect_toggle": "Toggle Effect", "TOTEM.effect_toggle": "Toggle Effect",
@@ -47,56 +56,104 @@
"TOTEM.skill_level.master": "Maître", "TOTEM.skill_level.master": "Maître",
"TOTEM.skill_level.legend": "Légende", "TOTEM.skill_level.legend": "Légende",
"TOTEM.totems.human": "l'Humain", "INSTINCTS": {
"TOTEM.totems.scavenger": "le Prédateur", "architect": { "name": "L'Architecte"},
"TOTEM.totems.symbiote": "le Symbiote", "sword": { "name": "L'épée"},
"TOTEM.totems.parasite": "le Parasite", "flail": { "name": "Le fléau"},
"TOTEM.totems.builder": "le Bâtisseur", "man": { "name": "L'Homme"},
"TOTEM.totems.horde": "la Horde", "keeper": { "name": "Le Gardien"},
"TOTEM.totems.hive": "la Ruche", "hand": { "name": "La Main"},
"TOTEM.totems.solitary": "le Solitaire", "mask": { "name": "Le Masque"},
"TOTEM.totems.adapted": "l'Adapté", "void": { "name": "Le Néant"},
"bone": { "name": "L'Os"},
"traveller": { "name": "Le Voyageur"}
},
"ABILITY_CATEGORIES": {
"physical": { "name": "Physique"},
"manual": { "name": "Manuel"},
"mental": { "name": "Mental"},
"social": { "name": "Social"}
},
"SKILLS_CATEGORIES": {
"man": { "name": "L'Homme" },
"animal": { "name": "L'Animal" },
"tool": { "name": "L'Outil" },
"weapon": { "name": "L'Arme" },
"survival": { "name": "Les Terres Sauvages" },
"world": { "name": "L'Inconnu" }
},
"SKILLS": {
"arts": { "name": "Arts"},
"civilization": { "name": "Civilisations"},
"psychology": { "name": "Relationnel"},
"rumors": { "name": "Cité"},
"healing": { "name": "Soins"},
"animalism": { "name": "Animalisme"},
"riding": { "name": "Monture"},
"wildlife": { "name": "Faune"},
"territory": { "name": "Territoire"},
"tracks": { "name": "Pistage"},
"crafting": { "name": "Artisanat"},
"manipulation": { "name": "Adresse"},
"mecanisms": { "name": "Mécanismes"},
"runes": { "name": "Runes"},
"armory": { "name": "Armurerie"},
"shield": { "name": "Bouclier"},
"close": { "name": "Corps-à-corps"},
"archery": { "name": "Tir"},
"throwing": { "name": "Lancer"},
"melee": { "name": "Mêlée"},
"atletics": { "name": "Atlétisme"},
"stealth": { "name": "Discrétion"},
"alertness": { "name": "Vigilance"},
"flora": { "name": "Flore"},
"road": { "name": "Voyage"},
"burst": { "name": "Eclat"},
"moons": { "name": "Lunes"},
"myths": { "name": "Mythes"},
"pantheons": { "name": "Panthéons"},
"rituals": { "name": "Rituels"}
},
"TOTEM.ability_category.physical": "Physiques", "TOTEM.sexes.male":"Masculin",
"TOTEM.ability_category.manual": "Manuelles", "TOTEM.sexes.female":"Féminin",
"TOTEM.ability_category.mental": "Mentales",
"TOTEM.ability_category.social": "Sociales",
"TOTEM.skill_category.man": "L'Homme", "SIGNS": {
"TOTEM.skill_category.animal": "L'Animal", "wolf":{
"TOTEM.skill_category.machine": "La Machine", "name":"Le Loup",
"TOTEM.skill_category.weapon": "L'Arme", "description":""
"TOTEM.skill_category.survival": "La Survie", },
"TOTEM.skill_category.earth": "La Terre", "child":{
"name":"L'Enfant",
"TOTEM.skills.arts":"Arts", "description":""
"TOTEM.skills.civilization":"Civilisation", },
"TOTEM.skills.psychology":"Psychologie", "tree":{
"TOTEM.skills.rumors":"Rumeurs", "name":"L'Arbre",
"TOTEM.skills.healing":"Soins", "description":""
"TOTEM.skills.animalism":"Animalisme", },
"TOTEM.skills.dissection":"Dissection", "specter":{
"TOTEM.skills.wildlife":"Faune", "name":"Le Spectre",
"TOTEM.skills.repulsion":"Répulsion", "description":""
"TOTEM.skills.tracks":"Traces", },
"TOTEM.skills.crafting":"Artisanat", "whirlwind":{
"TOTEM.skills.diy":"Bricolage", "name":"Le Tourbillon",
"TOTEM.skills.mecanical":"Mécanique", "description":""
"TOTEM.skills.driving":"Pilotage", },
"TOTEM.skills.technology":"Technologie", "vulture":{
"TOTEM.skills.firearms":"Armes à feu", "name":"Le Vautour",
"TOTEM.skills.archery":"Armes de tir", "description":""
"TOTEM.skills.armory":"Armurerie", },
"TOTEM.skills.throwing":"Armes de jet", "ship":{
"TOTEM.skills.melee":"Mêlée", "name":"Le Navire",
"TOTEM.skills.feed":"Alimentation", "description":""
"TOTEM.skills.atletics":"Atlétisme", },
"TOTEM.skills.brawling":"Corps à corps", "sword":{
"TOTEM.skills.stealth":"Furtivité", "name":"Le Glaive",
"TOTEM.skills.alertness":"Vigilance", "description":""
"TOTEM.skills.environment":"Environnement", },
"TOTEM.skills.flora":"Flote", "cat":{
"TOTEM.skills.road":"Route", "name":"Le Chat",
"TOTEM.skills.toxics":"Toxiques", "description":""
"TOTEM.skills.remains":"Vestiges" }
}
} }
+43 -13
View File
@@ -5,24 +5,27 @@ export const TOTEM = {};
* @type {Object} * @type {Object}
*/ */
TOTEM.SkillLevels = { TOTEM.SkillLevels = {
1:{ "label":"TOTEM.skill_level.beginner", "dicePool":1, "reroll":0}, 1:{ "label":"TOTEM.skill_level.beginner", "dicePool":1, "reroll":0},
2:{ "label":"TOTEM.skill_level.proficient", "dicePool":1, "reroll":1}, 2:{ "label":"TOTEM.skill_level.proficient", "dicePool":1, "reroll":1},
3:{ "label":"TOTEM.skill_level.expert", "dicePool":2, "reroll":1}, 3:{ "label":"TOTEM.skill_level.expert", "dicePool":2, "reroll":1},
4:{ "label":"TOTEM.skill_level.master", "dicePool":2, "reroll":2}, 4:{ "label":"TOTEM.skill_level.master", "dicePool":2, "reroll":2},
5:{ "label":"TOTEM.skill_level.legend", "dicePool":3, "reroll":2}, 5:{ "label":"TOTEM.skill_level.archmaster", "dicePool":3, "reroll":2},
5:{ "label":"TOTEM.skill_level.legend", "dicePool":3, "reroll":3},
} }
TOTEM.TotemNumbers = { TOTEM.Instincts = {
1:{ "label":"TOTEM.totems.human", "key":"human"}, 1:{ "key":"architect"},
2:{ "label":"TOTEM.totems.scavenger", "key":"scavenger"}, 2:{ "key":"sword"},
3:{ "label":"TOTEM.totems.symbiote", "key":"symbiote"}, 3:{ "key":"flail"},
4:{ "label":"TOTEM.totems.parasite", "key":"parasite"}, 4:{ "key":"man"},
5:{ "label":"TOTEM.totems.builder", "key":"builder"}, 5:{ "key":"keeper"},
6:{ "label":"TOTEM.totems.horde", "key":"horde"}, 6:{ "key":"hand"},
7:{ "label":"TOTEM.totems.hive", "key":"hive"}, 7:{ "key":"mask"},
8:{ "label":"TOTEM.totems.solitary", "key":"solitary"}, 8:{ "key":"void"},
9:{ "label":"TOTEM.totems.adapted", "key":"adapted"} 9:{ "key":"bone"},
0:{ "key":"traveller"}
} }
@@ -49,7 +52,7 @@ TOTEM.skillCategories = {
"label":"TOTEM.skill_category.animal" "label":"TOTEM.skill_category.animal"
}, },
"tool": { "tool": {
"label":"TOTEM.skill_category.machine" "label":"TOTEM.skill_category.tool"
}, },
"weapon": { "weapon": {
"label":"TOTEM.skill_category.weapon" "label":"TOTEM.skill_category.weapon"
@@ -58,6 +61,33 @@ TOTEM.skillCategories = {
"label":"TOTEM.skill_category.survival" "label":"TOTEM.skill_category.survival"
}, },
"world": { "world": {
"label":"TOTEM.skill_category.earth" "label":"TOTEM.skill_category.world"
} }
} }
TOTEM.sexes = {"male": "TOTEM.sexes.male", "female": "TOTEM.sexes.female"};
TOTEM.signs = {"wolf":"SIGNS.wolf.name","child": "SIGNS.child.name" ,
"tree": "SIGNS.tree.name" ,
"specter": "SIGNS.specter.name" ,
"whirlwind": "SIGNS.whirlwind.name" ,
"vulture": "SIGNS.vulture.name" ,
"ship": "SIGNS.ship.name" ,
"sword": "SIGNS.sword.name" ,
"cat": "SIGNS.cat.name" }
TOTEM.origins = {"aon":"Aon",
"avhorae": "Avhorae" ,
"babel": "Babel",
"soleil_noir": "Empire du Soleil Noir",
"fakhar": "Fakhar",
"horde": "Horde",
"khashan": "Khashan",
"ool": "Ool",
"shattered_kingdoms": "Royaumes divisés",
"saeth": "Saeth",
"tegee": "Tégée (Thalos)",
"tuuhle": "Tuuhle",
"vaelor": "Vaelor",
"valdheim": "Valdheim"
}
+9 -16
View File
@@ -6,10 +6,15 @@
export const preloadHandlebarsTemplates = async function() { export const preloadHandlebarsTemplates = async function() {
return loadTemplates([ return loadTemplates([
// Actor partials. // Actor partials.
"systems/totem/templates/actor/parts/actor-spells.html", "systems/totem/templates/actor/parts/actor-spells.html",
"systems/totem/templates/actor/parts/actor-features.html", "systems/totem/templates/actor/parts/actor-features.html",
// "systems/totem/templates/actor/parts/actor-skills.html", "systems/totem/templates/actor/parts/actor-spells.html",
"systems/totem/templates/actor/parts/actor-id.hbs",
"systems/totem/templates/actor/parts/actor-instincts.hbs",
"systems/totem/templates/actor/parts/character-features.hbs",
"systems/totem/templates/actor/parts/character-header.hbs",
"systems/totem/templates/actor/parts/actor-items.html", "systems/totem/templates/actor/parts/actor-items.html",
"systems/totem/templates/actor/parts/actor-effects.html", "systems/totem/templates/actor/parts/actor-effects.html",
@@ -27,20 +32,8 @@ export const registerHandlebarsHelpers = function () {
return str.toLowerCase(); return str.toLowerCase();
}); });
// Ifis not equal // search translation with variables
Handlebars.registerHelper('ifne', function (v1, v2, options) { Handlebars.registerHelper('smarttl', function (arrayLabel,objectLabel, options) {
if (v1 !== v2) return options.fn(this); return game.i18n.localize(arrayLabel +"."+objectLabel+".name");
else return options.inverse(this);
});
// if equal
Handlebars.registerHelper('ife', function (v1, v2, options) {
if (v1 === v2) return options.fn(this);
else return options.inverse(this);
});
// if equal
Handlebars.registerHelper('ifgt', function (v1, v2, options) {
if (v1 > v2) return options.fn(this);
else return options.inverse(this);
}); });
} }
+96 -115
View File
@@ -12,89 +12,100 @@
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 2 "max": 2
} ,
"deadlyWound": {
"value": 0,
"min": 0,
"max": 2
}, },
"totem":0, "instinct":0,
"activity": "" "identity": {
"height": 0,
"weight": 0,
"sign": "",
"age": 15,
"origin": ""
},
"stories": {
"biography": ""
}
} }
}, },
"character": { "character": {
"templates": ["base"], "templates": ["base"],
"attributes": { "attributes": {
"level": { "level": {
"label":"TOTEM.level", "value": 1,
"value": 1 "max":10
},
"xp": {
"value": 0,
"max":0
},
"reputation": {
"value": 0,
"max":0
}, },
"self_control": { "self_control": {
"label":"TOTEM.self_control",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5 "max": 5
}, },
"effort": { "effort": {
"label":"TOTEM.effort",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5 "max": 5
}, },
"group": { "group": {
"label":"TOTEM.group",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5 "max": 5
} }
}, },
"abilities": { "abilities": {
"vig": { "strength": {
"label":"TOTEM.vigor_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "physical" "category": "physical"
}, },
"vie": { "constitution": {
"label":"TOTEM.health_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "physical" "category": "physical"
}, },
"pre": { "precision": {
"label":"TOTEM.precision_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "manual" "category": "manual"
}, },
"ref": { "reflexes": {
"label":"TOTEM.reflexes_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "manual" "category": "manual"
}, },
"sav": { "knowledge": {
"label":"TOTEM.knowledge_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "mental" "category": "mental"
}, },
"per": { "perception": {
"label":"TOTEM.perception_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "mental" "category": "mental"
}, },
"vol": { "will": {
"label":"TOTEM.will_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "social" "category": "social"
}, },
"emp": { "empathy": {
"label":"TOTEM.empathy_ability",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -103,31 +114,27 @@
}, },
"skills": { "skills": {
"arts": { "arts": {
"label":"TOTEM.skills.arts",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "man", "category": "man",
"rarity":1 "rarity":0
}, },
"civilization": { "civilization": {
"label":"TOTEM.skills.civilization",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "man", "category": "man",
"rarity":2 "rarity":0
}, },
"psychology": { "psychology": {
"label":"TOTEM.skills.psychology",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "man", "category": "man",
"rarity":1 "rarity":0
}, },
"rumors": { "rumors": {
"label":"TOTEM.skills.rumors",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -135,23 +142,20 @@
"rarity":0 "rarity":0
}, },
"healing": { "healing": {
"label":"TOTEM.skills.healing",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "man", "category": "man",
"rarity":1 "rarity":0
}, },
"animalism": { "animalism": {
"label":"TOTEM.skills.animalism",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "animal", "category": "animal",
"rarity":1 "rarity":1
}, },
"dissection": { "riding": {
"label":"TOTEM.skills.dissection",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -159,15 +163,13 @@
"rarity":2 "rarity":2
}, },
"wildlife": { "wildlife": {
"label":"TOTEM.skills.wildlife",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "animal", "category": "animal",
"rarity":1 "rarity":0
}, },
"repulsion": { "territory": {
"label":"TOTEM.skills.repulsion",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -175,7 +177,6 @@
"rarity":0 "rarity":0
}, },
"tracks": { "tracks": {
"label":"TOTEM.skills.tracks",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -183,71 +184,62 @@
"rarity":0 "rarity":0
}, },
"crafting": { "crafting": {
"label":"TOTEM.skills.crafting",
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":2
},
"diy": {
"label":"TOTEM.skills.diy",
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":0
},
"mecanical": {
"label":"TOTEM.skills.mecanical",
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":2
},
"driving": {
"label":"TOTEM.skills.driving",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "tool", "category": "tool",
"rarity":1 "rarity":1
}, },
"technology": { "manipulation": {
"label":"TOTEM.skills.technology", "value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":0
},
"mecanisms": {
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "tool", "category": "tool",
"rarity":2 "rarity":2
}, },
"firearms": { "runes": {
"label":"TOTEM.skills.firearms", "value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":1
},
"armory": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity":2
},
"shield": {
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "weapon", "category": "weapon",
"rarity":2 "rarity":1
}, },
"archery": { "archery": {
"label":"TOTEM.skills.archery",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "weapon", "category": "weapon",
"rarity":0 "rarity":0
}, },
"armory": { "close": {
"label":"TOTEM.skills.armory",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "weapon", "category": "weapon",
"rarity":2 "rarity":0
}, },
"throwing": { "throwing": {
"label":"TOTEM.skills.throwing",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -255,15 +247,13 @@
"rarity":0 "rarity":0
}, },
"melee": { "melee": {
"label":"TOTEM.skills.melee",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "weapon", "category": "weapon",
"rarity":0 "rarity":0
}, },
"feed": { "alertness": {
"label":"TOTEM.skills.feed",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -271,15 +261,13 @@
"rarity":0 "rarity":0
}, },
"atletics": { "atletics": {
"label":"TOTEM.skills.atletics",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "survival", "category": "survival",
"rarity":0 "rarity":0
}, },
"brawling": { "flora": {
"label":"TOTEM.skills.brawling",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
@@ -287,60 +275,53 @@
"rarity":0 "rarity":0
}, },
"stealth": { "stealth": {
"label":"TOTEM.skills.stealth",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "survival", "category": "survival",
"rarity":0 "rarity":0
}, },
"alertness": {
"label":"TOTEM.skills.alertness",
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity":0
},
"environment": {
"label":"TOTEM.skills.environment",
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity":0
},
"flora": {
"label":"TOTEM.skills.flora",
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity":0
},
"road": { "road": {
"label":"TOTEM.skills.road",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "world", "category": "survival",
"rarity":0 "rarity":0
}, },
"toxics": { "burst": {
"label":"TOTEM.skills.toxics",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "world", "category": "world",
"rarity":0 "rarity":2
}, },
"remains": { "moons": {
"label":"TOTEM.skills.remains",
"value": 0, "value": 0,
"min": 0, "min": 0,
"max": 5, "max": 5,
"category": "world", "category": "world",
"rarity":0 "rarity":1
},
"myths": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity":1
},
"pantheons": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity":1
},
"rituals": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity":2
} }
} }
}, },
@@ -384,7 +365,7 @@
} }
}, },
"Item": { "Item": {
"types": ["item", "feature", "spell"], "types": ["item", "weapons", "defense", "ritual", "technique"],
"templates": { "templates": {
"base": { "base": {
"description": "" "description": ""
+68 -80
View File
@@ -1,99 +1,87 @@
<form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off"> <form class="{{cssClass}} {{actor.type}} flexcol" autocomplete="off">
<div class="form">
<aside>
<img class="logo" src="systems/totem/assets/images/ui/logo.webp" height="56" width="230" alt="logo TOTEM" />
<div class="sidebar" data-group="dashboard" data-tab="sidebar">
<!--ID -->
{{> "systems/totem/templates/actor/parts/actor-id.hbs"}}
</div>
</aside>
<main>
<!-- HEADER -->
{{> "systems/totem/templates/actor/parts/character-header.hbs"}}
{{!-- Sheet Header --}} <!-- SHEET NAVIGATION -->
<header class="sheet-header"> <nav class="sheet-navigation sheet-tabs tabs flex-group-end" data-group="primary">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/> <a class="item" data-tab="character" title="{{localize "GODS.tab_character_label"}}">
<div class="header-fields"> <i class="fas fa-address-card"></i>
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1> </a>
{{!-- 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-4col">
{{#each system.attributes as |attribute att|}}
<div class="resource flex-group-center">
<label for="system.attributes.level.value" class="resource-label">{{ localize attribute.label }}</label>
<div class="resource-content flexrow flex-center flex-between">
<input type="text" name="system.attributes.{{att}}.value" value="{{attribute.value}}" data-dtype="Number"/>
</div>
</div>
{{/each}}
</div> <a class="item" data-tab="instincts" title="{{localize "GODS.tab_instincts_label"}}">
</div> <i class="fas fa-star"></i>
</header> </a>
{{!-- Sheet Tab Navigation --}} <a class="item" data-tab="gods" title="{{localize "GODS.tab_gods_label"}}">
<nav class="sheet-tabs tabs" data-group="primary"> <i class="fas fa-wand-magic-sparkles"></i>
{{!-- Default tab is specified in actor-sheet.mjs --}} </a>
<a class="item" data-tab="features">Statistiques</a>
<a class="item" data-tab="description">Background</a> <a class="item" data-tab="equipment" title="{{localize "GODS.tab_equipment_label"}}">
<a class="item" data-tab="items">Matos</a> <i class="fas fa-hammer"></i>
<a class="item" data-tab="spells">Totem</a> </a>
<a class="item" data-tab="effects">Santé</a>
<a class="item" data-tab="stories" title="{{localize "GODS.tab_stories_label"}}">
<i class="fas fa-hand-paper"></i>
</a>
<a class="item" data-tab="combat" title="{{localize "GODS.tab_combat_label"}}">
<i class="fas fa-medal"></i>
</a>
<a class="manage-tabs" data-action="manage-tabs" title="{{localize "GODS.tab_options"}}">
<i class="fas fa-fw fa-ellipsis-v"></i>
</a>
</nav> </nav>
{{!-- Sheet Body --}} <!-- BODY -->
<section class="sheet-body"> <section class="sheet-body">
<section class="sheet-content">
{{!-- Owned Features Tab --}} <div class="tab character character-pane active" data-group="primary" data-tab="character">
<div class="tab features" data-group="primary" data-tab="features"> <!-- Character -->
<h3>Caractéristiques</h3> {{> "systems/totem/templates/actor/parts/character-features.hbs"}}
<section class="grid grid-4col">
{{#each config.abilityCategories as |abilityCategory ackey|}}
<div>
<h4 class="align-center">{{ localize abilityCategory.label }}</h4>
{{#each @root.system.abilities as |ability key|}}
{{#ife ability.category ackey }}
<div class="ability flexcol flex-group-center items-center">
<label for="system.abilities.{{key}}.value" class="resource-label rollable flexlarge align-left" data-label="{{ability.label}}">{{ability.label}}</label>
<input type="text" name="system.abilities.{{key}}.value" value="{{ability.value}}" data-dtype="Number"/>
</div> </div>
{{/ife}} <div class="tab instincts" data-group="primary" data-tab="instincts">
{{/each}} <h3>Instincts</h3>
</div> <!-- Rituals -->
{{/each}} {{> "systems/totem/templates/actor/parts/actor-instincts.hbs"}}
</section>
<h3>Compétences</h3>
<div class="grid grid-cols-3">
{{#each config.skillCategories as |skillCategory sckey|}}
<div class="col">
<h4>{{ localize skillCategory.label }}</h4>
{{#each @root.system.skills as |skill skey|}}
{{#ife skill.category sckey }}
<div class="ability flexrow flex-group-center">
<label style="flex:80%;" for="system.skills.{{skey}}.value" class="resource-label rollable flexlarge align-left" data-roll="+@skills.{{skey}}d10" data-label="{{skill.label}}">{{ localize skill.label}} ({{skill.rarity}})</label>
<input type="text" name="system.skills.{{skey}}.value" value="{{skill.value}}" data-dtype="Number"/>
</div>
{{/ife}}
{{/each}}
</div>
{{/each}}
</div> </div>
<div class="tab gods" data-group="primary" data-tab="gods">
<h3>Dieux</h3>
<!-- Rituals -->
{{> "systems/totem/templates/actor/parts/actor-spells.html"}}
</div> </div>
<div class="tab equipment" data-group="primary" data-tab="equipment">
{{!-- Biography Tab --}} <h3>Equipement</h3>
<div class="tab biography" data-group="primary" data-tab="description"> <!-- Rituals -->
{{!-- 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}}
</div>
{{!-- Owned Items Tab --}}
<div class="tab items" data-group="primary" data-tab="items">
{{> "systems/totem/templates/actor/parts/actor-items.html"}} {{> "systems/totem/templates/actor/parts/actor-items.html"}}
</div> </div>
<div class="tab combat" data-group="primary" data-tab="combat">
{{!-- Owned Spells Tab --}} <h3>Combat</h3>
<div class="tab spells" data-group="primary" data-tab="spells"> <!-- effects -->
{{> "systems/totem/templates/actor/parts/actor-spells.html"}}
</div>
{{!-- Active Effects Tab --}}
<div class="tab effects flexcol" data-group="primary" data-tab="effects">
{{> "systems/totem/templates/actor/parts/actor-effects.html"}} {{> "systems/totem/templates/actor/parts/actor-effects.html"}}
</div> </div>
<div class="tab stories" data-group="primary" data-tab="stories">
<h3>Histoire</h3>
<section class="biography-details">
<label class="details-label">Bio</label>
{{editor system.stories.biography target="system.stories.biography" button=true owner=owner editable=editable}}
</section> </section>
</div>
</section>
</section>
</main>
</div>
</form> </form>
+48
View File
@@ -0,0 +1,48 @@
<ul class="padding-with-frieze unstyled">
<li>
<div class="flexrow flex-group-center items-center">
<label for="system.identity.age" class="resource-label flexlarge align-left">Age</label>
<input type="number" name="system.identity.age" value="{{ system.identity.age }}" data-dtype="Number"/>
<span>cm</span>
</div>
</li>
<li>
<div class="flexrow flex-group-center items-center">
<label for="system.identity.height" class="resource-label flexlarge align-left">Taille</label>
<input type="number" name="system.identity.height" value="{{ system.identity.height }}" data-dtype="Number"/>
<span>cm</span>
</div>
</li>
<li>
<div class="flexrow flex-group-center items-center">
<label for="system.identity.weigth" class="resource-label flexlarge align-left">Poids</label>
<input type="number" name="system.identity.weigth" value="{{ system.identity.weigth }}" data-dtype="Number"/>
<span>kgs</span>
</div>
</li>
<li>
<div class="flexcol flex-group-center items-center w-full">
<label for="system.identity.gender" class="resource-label flexlarge align-left">Sexe</label>
<select name="system.identity.gender" class="w-full">
{{selectOptions config.sexes selected=system.identity.gender localize=true}}
</select>
</div>
</li>
<li>
<div class="flexcol flex-group-center items-center w-full">
<label for="system.identity.sign" class="resource-label flexlarge align-left">Signe astro.</label>
<select name="system.identity.sign" class="w-full">
{{selectOptions config.signs selected=system.identity.sign localize=true}}
</select>
</div>
</li>
<li>
<div class="flexcol flex-group-center items-center w-full">
<label for="system.identity.origin" class="resource-label flexlarge align-left">Origine</label>
<select name="system.identity.origin" class="w-full">
{{selectOptions config.origins selected=system.identity.origin localize=true}}
</select>
</div>
</li>
</ul>
+23
View File
@@ -0,0 +1,23 @@
<ol class="items-list">
<li class="item flexrow items-header">
<div class="item-name">Principes</div>
</li>
<li class="item flexrow items-header">
<div class="item-name">Interdits</div>
</li>
{{#each gear as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name">
<div class="item-image">
<a class="rollable" data-roll-type="item"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></a>
</div>
<h4>{{item.name}}</h4>
</div>
<div class="item-formula item-prop">{{item.system.formula}}</div>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ol>
@@ -0,0 +1,34 @@
<!-- Character -->
<h3>Caractéristiques</h3>
<div class="grid grid-4col">
{{#each config.abilityCategories as |abilityCategory ackey|}}
<div>
<h4 class="align-center">{{ smarttl "ABILITY_CATEGORIES" ackey }}</h4>
{{#each @root.system.abilities as |ability key|}}
{{#if (eq ability.category ackey) }}
<div class="ability flexcol flex-group-center items-center">
<label for="system.abilities.{{key}}.value" class="resource-label rollable flexlarge align-left" data-label="{{ smarttl "ABILITIES" key }}">{{ smarttl "ABILITIES" key }}</label>
<input type="text" name="system.abilities.{{key}}.value" value="{{ability.value}}" data-dtype="Number"/>
</div>
{{/if}}
{{/each}}
</div>
{{/each}}
</div>
<h3>Compétences</h3>
<div class="grid grid-cols-3">
{{#each config.skillCategories as |skillCategory sckey|}}
<div class="col">
<h4>{{ smarttl "SKILLS_CATEGORIES" sckey }}</h4>
{{#each @root.system.skills as |skill skey|}}
{{#if (eq skill.category sckey) }}
<div class="ability flexrow flex-group-center">
<label style="flex:80%;" for="system.skills.{{skey}}.value" class="resource-label rollable flexlarge align-left" data-roll="+@skills.{{skey}}d10" data-label="{{ smarttl "SKILLS" skey }}">{{ smarttl "SKILLS" skey }} ({{skill.rarity}})</label>
<input type="text" name="system.skills.{{skey}}.value" value="{{skill.value}}" data-dtype="Number"/>
</div>
{{/if}}
{{/each}}
</div>
{{/each}}
</div>
@@ -0,0 +1,19 @@
<!-- HEADER -->
<header class="char-header">
<section class="char-details">
<h1 class="char-name">
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "GODS.CharacterNamePlaceholder"}}" spellcheck="false" />
</h1>
</section>
<section class="char-level">
<div class="reputation">
<label>total {{ data.attributes.reputation.max }}</label>
<input name="system.attributes.reputation.value" type="text" value="{{data.attributes.reputation.value }}" data-dtype="Number" placeholder="1000" size="4" />
</div>
<div class="experience">
<input name="system.details.xp.value" type="text" value="{{data.attributes.xp.value}}" data-dtype="Number" data-allow-delta placeholder="0" size="4" />
<label>total {{data.attributes.xp.max}}</label>
</div>
</section>
</header>