diff --git a/modules/imperium5-actor-sheet.js b/modules/imperium5-actor-sheet.js
index 4b434e1..a6f25e0 100644
--- a/modules/imperium5-actor-sheet.js
+++ b/modules/imperium5-actor-sheet.js
@@ -143,22 +143,11 @@ export class Imperium5ActorSheet extends ActorSheet {
this.actor.incDecQuantity( li.data("item-id"), +1 );
} );
- html.find('.roll-ame').click((event) => {
+ html.find('.roll-ame-button').click((event) => {
const ameKey = $(event.currentTarget).data("ame-key")
this.actor.rollAme(ameKey)
});
- html.find('.roll-spec').click((event) => {
- const li = $(event.currentTarget).parents(".item");
- const specId = li.data("item-id");
- this.actor.rollSpec(specId);
- });
-
- html.find('.weapon-damage-roll').click((event) => {
- const li = $(event.currentTarget).parents(".item");
- const weaponId = li.data("item-id");
- this.actor.rollWeapon(weaponId, true);
- });
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
diff --git a/modules/imperium5-actor.js b/modules/imperium5-actor.js
index 32d1528..87233a3 100644
--- a/modules/imperium5-actor.js
+++ b/modules/imperium5-actor.js
@@ -111,6 +111,17 @@ export class Imperium5Actor extends Actor {
let item = duplicate(this.items.filter( it => it.type == "contact") || [] )
return item
}
+ getUnusedParadigmes() {
+ let paraList = []
+ for(let k in this.system.paradigmes) {
+ let para = this.system.paradigmes[k]
+ if (!para.used) {
+ para.key = k
+ paraList.push(duplicate(para))
+ }
+ }
+ return paraList
+ }
/* -------------------------------------------- */
incDecKarma( value ) {
@@ -156,10 +167,6 @@ export class Imperium5Actor extends Actor {
/* -------------------------------------------- */
getInitiativeScore(combatId, combatantId) {
- if (this.type == 'character') {
- this.rollMR(true, combatId, combatantId)
- }
- console.log("Init required !!!!")
return -1;
}
@@ -213,6 +220,13 @@ export class Imperium5Actor extends Actor {
}
}
}
+
+ /* -------------------------------------------- */
+ setParadigmeUsed(paraKey) {
+ let para = duplicate(this.system.paradigmes)
+ para[paraKey].used = true
+ this.update( {'system.paradigmes': para} )
+ }
/* -------------------------------------------- */
/* ROLL SECTION
@@ -250,6 +264,8 @@ export class Imperium5Actor extends Actor {
rollData.actorId = this.id
rollData.img = this.img
rollData.capacites = this.getUnusedCapacites()
+ rollData.paradigmes = this.getUnusedParadigmes()
+ rollData.selectedParadigme = "none"
rollData.karma = this.system.karma.value
return rollData
diff --git a/modules/imperium5-utility.js b/modules/imperium5-utility.js
index d2318ae..87b6b3a 100644
--- a/modules/imperium5-utility.js
+++ b/modules/imperium5-utility.js
@@ -91,9 +91,13 @@ export class Imperium5Utility {
/* -------------------------------------------- */
static async chatListeners(html) {
- html.on("click", '.view-item-from-chat', event => {
- game.system.pegasus.creator.openItemView(event)
+ html.on("click", '.button-apply-paradigme', event => {
+ let paraKey = $(event.currentTarget).data("para-key")
+ let rollData = this.getRollDataFromMessage(event)
+ rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget)
+ this.applyParadigme(rollData, paraKey)
})
+
}
/* -------------------------------------------- */
@@ -152,6 +156,12 @@ export class Imperium5Utility {
}
return undefined;
}
+ /* -------------------------------------------- */
+ static getRollDataFromMessage(event) {
+ let messageId = Imperium5Utility.findChatMessageId(event.currentTarget)
+ let message = game.messages.get(messageId)
+ return message.getFlag("world", "imperium5-roll-data")
+ }
/* -------------------------------------------- */
static createDirectOptionList(min, max) {
@@ -279,6 +289,16 @@ export class Imperium5Utility {
return Math.max(val, 0)
}
+ /* -------------------------------------------- */
+ static computeReussites(rollData) {
+ let myRoll = rollData.roll
+ rollData.successPC = myRoll.terms[0].results.filter(res => res.result <= rollData.seuil).length
+ rollData.successGM = myRoll.terms[4].results.filter(res => res.result <= rollData.seuil).length
+ rollData.bonPresage = myRoll.terms[2].results[0].result == 1
+ rollData.mauvaisPresage = myRoll.terms[2].results[0].result == 8
+ rollData.nbUnitesNarration = Math.max( rollData.successPC-1, 0)
+ }
+
/* -------------------------------------------- */
static async rollImperium5(rollData) {
@@ -308,16 +328,24 @@ export class Imperium5Utility {
}
// Calcul réussites
- rollData.successPC = myRoll.terms[0].results.filter(res => res.result <= 2).length
- rollData.successGM = myRoll.terms[4].results.filter(res => res.result <= 2).length
- rollData.bonPresage = myRoll.terms[2].results[0].result == 1
- rollData.mauvaisPresage = myRoll.terms[2].results[0].result == 8
- rollData.nbUnitesNarration = Math.max( rollData.successPC-1, 0)
+ this.computeReussites(rollData)
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
})
- msg.setFlag("world", "rolldata", rollData)
+ msg.setFlag("world", "imperium5-roll-data", rollData)
+ }
+
+ /* ------------------------- ------------------- */
+ static async processParadigmeRoll(rollData) {
+ this.computeReussites(rollData)
+ rollData.paradigmes = []
+ let msg = await this.createChatWithRollMode(rollData.alias, {
+ content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
+ })
+ msg.setFlag("world", "imperium5-roll-data", rollData)
+
+ this.removeChatMessageId(rollData.previousMessageId)
}
/* ------------------------- ------------------- */
@@ -445,12 +473,24 @@ export class Imperium5Utility {
useArchetype: false,
useAide: false,
useKarma: false,
- usedCapacite: "none"
+ usedCapacite: "none",
+ seuil: 2
}
Imperium5Utility.updateWithTarget(rollData)
return rollData
}
+ /* -------------------------------------------- */
+ static applyParadigme(rollData, paraKey) {
+ let actor = game.actors.get(rollData.actorId)
+ let para = actor.system.paradigmes[paraKey]
+ rollData.seuil = para.value
+ rollData.usedParadigme = para.label
+ actor.setParadigmeUsed(paraKey)
+
+ this.processParadigmeRoll(rollData)
+ }
+
/* -------------------------------------------- */
static updateWithTarget(rollData) {
let objectDefender
diff --git a/styles/simple.css b/styles/simple.css
index 8318f6b..8f21492 100644
--- a/styles/simple.css
+++ b/styles/simple.css
@@ -60,7 +60,7 @@
font-size: 1.0rem;
} /* For title, sidebar character and scene */
.sheet nav.sheet-tabs {
- font-size: 0.8rem;
+ font-size: 1.2rem;
} /* For nav and title */
.window-app input, .foundryvtt-vadentis .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
font-size: 0.8rem;
@@ -78,7 +78,7 @@
font-weight: bold;
}
-.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
+.tabs .item.active, a:hover {
text-shadow: 1px 0px 0px #ff6600;
}
@@ -335,20 +335,21 @@ table {border: 1px solid #7a7971;}
}
.fvtt-imperium5 .tabs {
- height: 40px;
+ height: 24px;
border-top: 1px solid #AAA;
border-bottom: 1px solid #AAA;
color: #000000;
}
.fvtt-imperium5 .tabs .item {
- line-height: 40px;
+ line-height: 24px;
font-weight: bold;
}
.fvtt-imperium5 .tabs .item.active {
- text-decoration: underline;
- text-shadow: none;
+ /*text-decoration: underline;*/
+ background: linear-gradient(to bottom, #B8A799F0 5%, #9c6d47f0 100%);
+ /*text-shadow: none;*/
}
.fvtt-imperium5 .items-list {
@@ -445,29 +446,40 @@ section.sheet-body{padding: 0.25rem 0.5rem;}
}
.sheet nav.sheet-tabs {
- font-size: 0.70rem;
+ font-size: 1.0rem;
font-weight: bold;
- height: 3rem;
+ height: 2.5rem;
flex: 0 0 3rem;
margin: 0;
padding: 0 0 0 0.25rem;
text-align: center;
text-transform: uppercase;
line-height: 1.5rem;
+ border-radius: 8px;
border-top: 0 none;
border-bottom: 0 none;
border-right: 0 none;
- background-color:#B8A799F0;
- color:beige;
+ color: #403f3e;
}
-/* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/
-
nav.sheet-tabs .item {
position: relative;
padding: 0 0.25rem;
}
+.tab-title {
+ background-color:#B8A799F0;
+ border-radius: 4px;
+}
+.tab-title:hover {
+ background: linear-gradient(to bottom, #B8A799F0 5%, #9c6d47f0 100%);
+ background-color: red;
+}
+.tab-title:active {
+ position:relative;
+ top:1px;
+}
+
nav.sheet-tabs .item:after {
content: "";
position: absolute;
@@ -1150,47 +1162,46 @@ ul, li {
opacity: 1;
}
-.river-button {
+.common-button {
box-shadow: inset 0px 1px 0px 0px #a6827e;
- background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%);
- background-color: #7d5d3b00;
- border-radius: 3px;
+ background: linear-gradient(to bottom, #B8A799F0 5%, #80624af0 100%);
+ background-color: #B8A799F0; /*#7d5d3b00;*/
+ border-radius: 4px;
+ opacity: 60%;
border: 2px ridge #846109;
display: inline-block;
cursor: pointer;
color: #ffffff;
- font-size: 0.8rem;
- padding: 2px 4px 0px 4px;
text-decoration: none;
text-shadow: 0px 1px 0px #4d3534;
position: relative;
- margin:4px;
+}
+
+.common-button:hover {
+ background: linear-gradient(to bottom, #97B5AEFF 5%, rgb(101, 167, 151) 100%);
+ background-color: #97B5AEFF;
+}
+.common-button:active {
+ position:relative;
+ top:1px;
+}
+
+.roll-ame-button {
+ width: 80px;
+ min-width: 80px;
}
.chat-card-button {
- box-shadow: inset 0px 1px 0px 0px #a6827e;
- background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%);
- background-color: #7d5d3b00;
- border-radius: 3px;
- border: 2px ridge #846109;
- display: inline-block;
- cursor: pointer;
- color: #ffffff;
font-size: 0.8rem;
- padding: 4px 12px 0px 12px;
- text-decoration: none;
- text-shadow: 0px 1px 0px #4d3534;
- position: relative;
+ padding: 2px 2px 0px 2px;
margin:2px;
}
-.chat-card-button:hover {
- background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
- background-color: red;
-}
-.chat-card-button:active {
- position:relative;
- top:1px;
+
+.li-button-paradigme {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
}
.plus-minus-button {
@@ -1209,9 +1220,7 @@ ul, li {
margin:0px;
}
-.river-button:hover,
-.plus-minus-button:hover,
-.chat-card-button:hover {
+.plus-minus-button:hover {
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
background-color: red;
}
@@ -1295,7 +1304,7 @@ ul, li {
/* =================== 1. ACTOR SHEET FONT STYLES =========== *//*
*/
.sheet-box {
- border-radius: 5%;
+ border-radius: 12px;
border-width: 1px;
padding: 0.4rem;
margin: 0.2rem;
@@ -1450,4 +1459,7 @@ ul, li {
}
.color-text-ame {
color: #806B64;
+}
+.ame-block {
+ margin-bottom: 24px;
}
\ No newline at end of file
diff --git a/system.json b/system.json
index e8592c2..6138034 100644
--- a/system.json
+++ b/system.json
@@ -1,9 +1,13 @@
{
"id": "fvtt-imperium5",
"title": "Imperium5 RPG",
- "authors": [ {"name":"Uberwald"} ],
- "version": "10.0.3",
- "compatibleCoreVersion": "9",
+ "authors": [
+ {
+ "name": "Uberwald",
+ "flags": {}
+ }
+ ],
+ "version": "10.0.4",
"compatibility": {
"minimum": "10",
"verified": "10",
@@ -15,12 +19,7 @@
],
"gridDistance": 5,
"gridUnits": "m",
- "languages": [
- ],
- "library": false,
"license": "LICENSE.txt",
- "manifestPlusVersion": "1.0.0",
- "media": [],
"packs": [
{
"type": "Item",
@@ -65,9 +64,8 @@
"styles": [
"styles/simple.css"
],
- "templateVersion": 47,
- "background" : "./images/ui/imperium5_welcome_page.webp",
+ "background": "images/ui/imperium5_welcome_page.webp",
"url": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/archive/fvtt-imperium5-v10.0.3.zip"
-}
+}
\ No newline at end of file
diff --git a/templates/actor-partial-ames.html b/templates/actor-partial-ames.html
index 9240b69..29fa111 100644
--- a/templates/actor-partial-ames.html
+++ b/templates/actor-partial-ames.html
@@ -1,35 +1,38 @@
-
- {{typedata.label}}
- {{typedata.label}}
+
- {{#each system.ames as |ame key|}}
- {{#if (eq ame.type ../typeame)}}
-
\ No newline at end of file
+
+
+{{para.label}}
+ {{para.label}}
{{/if}}
-
+
{{/each}}
\ No newline at end of file
diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html
index 1641e64..a397f98 100644
--- a/templates/actor-sheet.html
+++ b/templates/actor-sheet.html
@@ -8,9 +8,9 @@