totem picker done

This commit is contained in:
François-Xavier Guillois
2023-08-31 19:18:37 +02:00
parent 987bb9fd6e
commit ff6be3989e
8 changed files with 152 additions and 28 deletions
+3 -1
View File
@@ -171,8 +171,10 @@ ul.unstyled li {
}
.system-vermine2047 .char-header h1.char-name {
.system-vermine2047 .char-header h1.char-name,
.system-vermine2047 .char-vermine2047 {
border-bottom: none;
line-height: 2rem;
}
.system-vermine2047 .char-vermine2047 {
+88 -10
View File
@@ -172,16 +172,94 @@
"VERMINE.skill_level.legend": "Légende",
"TOTEMS": {
"human": { "name": "L'Humain", "number":1},
"predator": { "name": "Le prédateur", "number":2},
"scavenger": { "name": "Le Charognard", "number":3},
"symbiote": { "name": "Le Symbiote", "number":4},
"parasite": { "name": "Le Parasite", "number":5},
"builder": { "name": "Le Bâtisseur", "number":6},
"horde": { "name": "La Horde", "number":7},
"hive": { "name": "La Ruche", "number":8},
"loner": { "name": "Le solitaire", "number":9},
"adapted": { "name": "L'adapté", "number":10}
"human": {
"name": "L'Humain",
"number":1,
"description":"",
"instincts" : "",
"bans" : "",
"opposite": "adapted"
},
"predator": {
"name": "Le prédateur",
"number":2,
"description":"Totem emblématique, le Prédateur a toujours été lun des plus répandus dans le règne animal, et il reste de loin celui qui influence le plus grand nombre despèces aujourdhui. On lobserve aussi bien chez les mammifères que chez de minuscules insectes, en meute comme en solitaire. Il inspire les comportements de traque, de chasse et daffrontement essentiels à lalimentation, mais il ne prône quune violence justifiée, nécessaire et vitale. Selon les peuples et les cultures, il a longtemps été symbolisé par le lion, laigle ou le chasseur, et ses valeurs guerrières ont toujours revêtu une certaine forme de noblesse. Un prédateur ne tue pas : il triomphe. Un prédateur ne fuit pas : il perd, ou il meurt",
"instincts" : "Triompher, relever un défi, prendre linitiative, atteindre un objectif.",
"bans" : "Fuir, abandonner, renoncer,faire preuve de lâcheté.",
"behaviour" : "Déterminé, implacable,courageux, dominant.",
"opposite": "scavenger"
},
"scavenger": {
"name": "Le Charognard",
"number":3,
"description":"Dans un écosystème dominé par la loi du plus fort, certains ont pris le parti dattendre que la mort fasse son œuvre, quitte à se contenter des restes. Poissons de fond, plantes carnivores, pillards, insectes nécrophages, vautours ou meutes de loups trop faibles pour sattaquer seuls aux proies de grande taille : le Charognard inspire toutes les espèces qui ont fait de la patience une de leurs rares vertus, et misent sur la faiblesse, la blessure, la fatigue ou lopportunité pour se nourrir. Il règne sur les régions hostiles où le soleil, la chaleur ou le froid font son jeu, et se développe souvent dans lombre du Prédateur, avec qui il entretient une relation quasi symbiotique",
"instincts" : "Achever, saboter, affaiblir, sen prendre au plus faible.",
"bans" : "Affronter, sexposer, agir de façon compulsive, sapitoyer.",
"behaviour" : "Sournois, calculateur, impitoyable",
"opposite": "predator"
},
"symbiote": {
"name": "Le Symbiote",
"number":4,
"description":"Symbole dentraide, d’équilibre et dharmonie, le Symbiote se définit par la relation d’échange et de réciprocité où chaque partie profite de ce que lautre apporte, quels que soient ses besoins ou ses motivations. Très courante dans le règne végétal, où de nombreuses fleurs et plantes lont instaurée avec les pollinisateurs, cette relation de symbiose sobserve également chez les insectes, les mammifères et les êtres humains. Elle peut être ponctuelle, issue des liens du sang, liée à un territoire ou un projet commun, et rien ne lempêche d’être motivée par le profit ou lintérêt, tant quelle est réciproque ce qui distingue le Symbiote du Parasite.",
"instincts" : "Partager, transmettre, équilibrer, trouver un compromis",
"bans" : "Exploiter, abuser, profiter de la faiblesse, mettre en danger",
"behaviour" : "Bienveillant, responsable, diplomate, modéré.",
"opposite": "parasite"
},
"parasite": {
"name": "Le Parasite",
"number":5,
"description":"Totem des infections, des basses œuvres et des épidémies, le Parasite a toujours joué un rôle funeste dans le destin de lhumanité, jusqu’à en devenir le fléau. Symbolisé par les moustiques, il sobserve également chez de nombreux champignons, végétaux et insectes incapables de survivre, de se nourrir ou de se reproduire sans un hôte, et toujours à ses dépens. Le Parasite exploite, profite, abuse sans états d’âme, mu par la seule démarche de prendre ce quun autre possède et dont il a besoin. Avec le Prédateur, cest lun des Totems les plus présents et les plus redoutés, tant les comportements quil inspire peuvent ruiner tout espoir de survie.",
"instincts" : "Profiter, manipuler, voler, exploiter.",
"bans" : "Partager, contribuer, tenir une promesse, prendre par la force",
"behaviour" : "Manipulateur, menteur, égoïste, profiteur",
"opposite": "symbiote"
},
"builder": {
"name": "Le Bâtisseur",
"number":6,
"description":"Souvent confondu avec la Ruche en raison des constructions géantes typiques de certaines espèces sociales, le Bâtisseur nest pas le Totem de la communauté, mais celui de la fondation. À limage des termites, des castors, de la plupart des oiseaux ou de certaines espèces daraignées, il se caractérise par lacte de construction, de création ou de modification, et sobserve aussi bien chez des groupes que chez des individus. Avec la Ruche, le Symbiote et la Horde, cest lun des Totems les plus courants chez les communautés humaines, dont il inspire les édifices, les inventions et les réparations.",
"instincts" : "Fonder, créer, sinstaller durablement, nouer des liens.",
"bans" : "Détruire, saboter, quitter une communauté, provoquer le chaos",
"behaviour" : "Réfléchi, organisé, pragmatique, constant.",
"opposite": "horde"
},
"horde": {
"name": "La Horde",
"number":7,
"description":"Fléau des cultures depuis la nuit des temps, la Horde est à limage des nuées de criquets, des meutes de carnivores ou des tribus de nomades qui la représentent : imprévisible, impitoyable et sans visage. Au-delà de ses aspects collectifs, ce Totem redoutable se caractérise surtout par sa violence et sa méthode daction. Là où le Prédateur tue, la Horde brûle, pille, dévaste pour parvenir à ses fins sans le moindre état d’âme. Elle inspire ceux qui prennent par la force, qui détruisent, qui ravagent et qui refusent toute forme de compromis, quelles que soient leur démarche ou leurs motivations.",
"instincts" : "Piller, détruire, prendre par la force, miser sur le nombre",
"bans" : "Négocier, épargner, faire des réserves, planifier à long terme.",
"behaviour" : "Violent, imprévisible, destructeur, radical.",
"opposite": "builder"
},
"hive": {
"name": "La Ruche",
"number":8,
"description":"Fourmis, abeilles, termites, factions aux règles strictes : la Ruche est le Totem des créatures sociales et des communautés humaines par excellence. Des cellules familiales aux multinationales, des meutes organisées aux super-colonies de plusieurs milliards dindividus, la Ruche est caractérisée par lorganisation, la hiérarchie, le dévouement et la conscience aigüe du rôle que chacun doit jouer dans lintérêt commun, plus que par la notion de communauté elle-même. Elle sappuie bien souvent sur un ensemble de règles, des tâches attribuées, des rôles identifiés une philosophie qui proscrit tout individualisme et condamne toute désobéissance.",
"instincts" : "Organiser, œuvrer pour la communauté, respecter la hiérarchie, privilégier lintérêt collectif",
"bans" : "trahir, désobéir, mettre sa communauté en danger, faire preuve dindividualisme.",
"behaviour" : "Méthodique, autoritaire, consciencieux, rigide",
"opposite": "loner"
},
"loner": {
"name": "Le solitaire",
"number":9,
"description":"Survivre, quoi quil en coûte. Sans cruauté, sans états d’âme, mais à tout prix. À linverse de la Ruche qui loue le sacrifice sil est accompli dans lintérêt du groupe, le Solitaire incarne le plus fondamental des réflexes : celui de la survie. Ni individualiste, ni franchement égoïste, il fait seulement passer ses propres intérêts, ses urgences et ses nécessités avant tout, quitte à trahir, à décevoir, à quitter ou à tuer. Rien nempêche un Solitaire de trouver une place durable dans un groupe, dy jouer un rôle précis ou même de suivre des règles établies, tant quelles ne heurtent pas ses propres convictions et quelles ne mettent pas en péril son bien le plus précieux : sa vie.",
"instincts" : "Survivre, anticiper, sadapter, faire passer sa vie avant tout",
"bans" : "Se sacrifier, risquer sa vie, dépendre de quelquun, se résigner.",
"behaviour" : "Indépendant, lucide, autonome, réactif.",
"opposite": "hive"
},
"adapted": {
"name": "L'adapté",
"number":10,
"description":"Évoluer ou mourir. Changer ou disparaître. LAdapté est le Totem de la nécessité, de la survie et de l’évolution. Ni positif, ni négatif, il est présent partout. Il est cette dynamique, ce principe fondamental qui rythme les mutations des espèces et qui rappelle que lHomme est la seule forme de vie à tenter de contrôler sa propre évolution. LAdapté ne possède ni Interdit, ni Instinct spécifique. Aucun comportement nest inapproprié, sil permet de faire face et de survivre, et les Instincts de tous les autres Totems le renforcent. Seul lHumain lutte contre son influence…",
"instincts" : "Tous ceux des huit Totems majeurs",
"bans" : "Aucun…",
"opposite": "human"
}
},
"ABILITY_CATEGORIES": {
"physical": { "name": "Physique"},
+1 -1
View File
@@ -272,7 +272,7 @@ export class VermineCharacterSheet extends VermineActorSheet {
const el = event.currentTarget;
// const dataset = el.dataset;
const totemPicker = new TotemPicker(el);
const totemPicker = new TotemPicker(el, this.actor);
totemPicker.render(true);
}
+16 -7
View File
@@ -1,9 +1,11 @@
export class TotemPicker extends Application {
constructor(element) {
super();
}
constructor(linkEl, actor) {
super();
this.linkEl = linkEl;
this.actor = actor;
}
/* -------------------------------------------- */
static get defaultOptions() {
@@ -20,8 +22,9 @@ export class TotemPicker extends Application {
getData() {
// Send data to the template
return {
config: CONFIG.VERMINE
config: CONFIG.VERMINE,
/*anarchy: this.gmAnarchy.getAnarchy(),
convergences: this.gmConvergence.getConvergences(),
difficultyPools: this.gmDifficulty.getDifficultyData(),
@@ -33,10 +36,16 @@ export class TotemPicker extends Application {
activateListeners(html) {
super.activateListeners(html);
// html.find('.app-title-bar').mousedown(event => this.handleDrag.onMouseDown(event));
html.find('.totem').click(event => {
const totem = $(event.target).parent('a').data('totem');
if (totem != null){
this.actor.update({ 'system.identity.totem': totem });
}
async _updateObject(event, formData) {
});
}
/*async _updateObject(event, formData) {
// console.log(formData.exampleInput);
}
}*/
}
+12
View File
@@ -77,6 +77,18 @@ VERMINE.totems = {
"loner": "TOTEMS.loner.name",
"adapted": "TOTEMS.adapted.name"
}
VERMINE.totem_opposites = {
"human":"TOTEMS.adapted.name",
"predator": "TOTEMS.scavenger.name" ,
"scavenger": "TOTEMS.predator.name" ,
"symbiote": "TOTEMS.parasite.name" ,
"parasite": "TOTEMS.symbiote.name" ,
"builder": "TOTEMS.horde.name" ,
"horde": "TOTEMS.builder.name" ,
"hive": "TOTEMS.loner.name" ,
"loner": "TOTEMS.hive.name",
"adapted": "TOTEMS.human.name"
}
VERMINE.origins = {"aon":"Aon",
"avhorae": "Avhorae" ,
+14
View File
@@ -46,6 +46,20 @@ export const registerHandlebarsHelpers = function () {
return game.i18n.localize(arrayLabel +"."+objectLabel+".name");
});
Handlebars.registerHelper('smarttlk', function (arrayLabel,objectLabel, key) {
return game.i18n.localize(arrayLabel +"."+objectLabel+"."+key);
});
Handlebars.registerHelper('smartcfg', function (configLabel, objectLabel) {
let text = "";
text = game.i18n.localize(CONFIG.VERMINE[configLabel][objectLabel]);
if (text == null){
text = CONFIG.VERMINE[configLabel][objectLabel];
}
return text;
});
// return skill level information
Handlebars.registerHelper('skillLevel', function (property, level, options) {
if (level < 1 || level > 5)
+4 -4
View File
@@ -1,7 +1,7 @@
<!-- HEADER -->
<header class="char-header grid grid-2col">
<section class="char-details">
<h1 class="char-name flexrow flex-group-left">
<h1 class="char-name flexrow flex-group-left w-full">
<label>{{ localize 'IDENTITY.name' }}</label>
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize "VERMINE.CharacterNamePlaceholder"}}" />
</h1>
@@ -11,21 +11,21 @@
</div>
<div class="flexrow flex-group-center">
<label for="system.identity.age">{{ localize 'IDENTITY.age' }}</label>
<div>
<div class="flexrow row">
<input type="number" name="system.identity.age" value="{{ system.identity.age }}" data-dtype="Number"/>
<span id="ageType">({{ ageType "name" system.identity.ageType }})</span>
</div>
</div>
</section>
<section class="char-level">
<div class="char-vermine2047 flexrow flex-group-center">
<h1 class="char-vermine2047 flexrow flex-group-left w-full">
<label for="system.identity.totem">{{ localize 'IDENTITY.totem' }}</label>
{{#if (eq system.identity.totem "")}}
<a name="chooseTotem" class="chooseTotem">Choisissez votre totem</button>
{{ else }}
<a name="chooseTotem" class="chooseTotem">{{ smarttl "TOTEMS" system.identity.totem }}</button>
{{/if}}
</div>
</h1>
<div class="reputation flexrow flex-group-center">
<label>{{ localize 'VERMINE.reputation' }}</label>
<input name="system.attributes.reputation.value" type="text" value="{{system.attributes.reputation.value }}" data-dtype="Number" />
+13 -4
View File
@@ -1,8 +1,17 @@
<div class="totem choose">
{{#each config.totems as | totem tk|}}
{{#if (ne tk "human")}}
{{#if (ne tk "adapted")}}
<div class="flexrow row mdb">
<label for="system.identity.totem">{{ localize 'IDENTITY.totem' }}</label>
<select name="system.identity.totem" class="w-full">
{{selectOptions config.totems selected=system.identity.totem localize=true}}
</select>
<h4 style="flex:20%;"><a class="totem" data-totem="{{ tk }}" title="{{ smarttlk "TOTEMS" tk "description"}}"><img src="" alt="{{ localize totem }}" /></a></h4>
<p style="flex:80%;">
<strong>Instincts</strong> : {{ smarttlk "TOTEMS" tk "instincts"}}<br>
<strong>Interdits</strong> : {{ smarttlk "TOTEMS" tk "bans"}}<br>
<strong>Comportements</strong> : {{ smarttlk "TOTEMS" tk "behaviour"}}<br>
<strong>Totem opposé</strong> : {{ smartcfg "totem_opposites" tk }}<br>
</p>
</div>
{{/if}}
{{/if}}
{{/each}}
</div>