Skip to content

Commit

Permalink
Struggling with Consequences
Browse files Browse the repository at this point in the history
  • Loading branch information
Eunomiac committed Nov 3, 2023
1 parent ac616e6 commit fbaa276
Show file tree
Hide file tree
Showing 14 changed files with 262 additions and 112 deletions.
Binary file added Clipboard Image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions css/style.min.css
Original file line number Diff line number Diff line change
Expand Up @@ -8968,6 +8968,14 @@ template {
color: var(--blades-gold-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .red-bright {
color: var(--blades-red-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .red-dark {
color: var(--blades-red-dark) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .grey {
color: var(--blades-grey) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .white {
color: var(--blades-white) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .white-bright {
color: var(--blades-white-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .cyan-bright {
color: var(--blades-cyan-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app .uppercase {
Expand Down Expand Up @@ -10546,6 +10554,14 @@ template {
color: var(--blades-gold-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .red-bright {
color: var(--blades-red-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .red-dark {
color: var(--blades-red-dark) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .grey {
color: var(--blades-grey) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .white {
color: var(--blades-white) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .white-bright {
color: var(--blades-white-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .cyan-bright {
color: var(--blades-cyan-bright) !important; }
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content form .uppercase {
Expand Down
8 changes: 8 additions & 0 deletions css/tinymce/content.min.css
Original file line number Diff line number Diff line change
Expand Up @@ -2254,6 +2254,14 @@ html, :root {
color: var(--blades-gold-bright) !important; }
html .red-bright, :root .red-bright {
color: var(--blades-red-bright) !important; }
html .red-dark, :root .red-dark {
color: var(--blades-red-dark) !important; }
html .grey, :root .grey {
color: var(--blades-grey) !important; }
html .white, :root .white {
color: var(--blades-white) !important; }
html .white-bright, :root .white-bright {
color: var(--blades-white-bright) !important; }
html .cyan-bright, :root .cyan-bright {
color: var(--blades-cyan-bright) !important; }
html .uppercase, :root .uppercase {
Expand Down
Binary file added eunos-blades-LTSC.lnk
Binary file not shown.
35 changes: 18 additions & 17 deletions module/BladesRoll.js
Original file line number Diff line number Diff line change
Expand Up @@ -445,8 +445,9 @@ class BladesRollMod {
name: harmConsequence.type === ConsequenceType.Harm1
? "Fully Negated"
: (Object.values(harmConsequence.resistOptions ?? [])[0]?.name ?? harmConsequence.name),
type: C.ResistedConsequenceTypes[harmConsequence.type]
};
type: C.ResistedConsequenceTypes[harmConsequence.type],
isSelected: true
};
}
},
QualityPenalty: () => {
Expand Down Expand Up @@ -1732,21 +1733,21 @@ class BladesRoll extends DocumentSheet {
async clearConsequence(cName) {
await this.clearFlagVal(`consequenceData.${cName}`);
}
async addResistanceOptions(cName, rNames) {
const cData = this.getFlagVal(`consequenceData.${cName}`);
async addResistanceOptions(cResult, cIndex, rNames) {
const cData = this.getFlagVal(`consequenceData.${cResult}.${cIndex}`);
if (!cData) {
return;
}
const cType = cData.type;
const rType = C.ResistedConsequenceTypes[cType] ?? undefined;
const resistOptions = cData.resistOptions ?? {};
for (const rName of rNames) {
resistOptions[rName] = { name: rName };
resistOptions[rName] = { name: rName, isSelected: false };
if (rType) {
resistOptions[rName].type = rType;
}
}
await this.setFlagVal(`consequenceData.${cName}.resistOptions`, resistOptions);
await this.setFlagVal(`consequenceData.${cResult}.${cIndex}.resistOptions`, resistOptions);
}
promptGMForConsequences() {
}
Expand Down Expand Up @@ -2099,14 +2100,12 @@ class BladesRoll extends DocumentSheet {


get consequenceTypeOptions() {
if (!this.rollResult) {
return [];
}
if (this.rollResult === RollResult.critical || this.rollResult === RollResult.success) {
return [];
}
return C.Consequences[this.finalPosition][this.rollResult]
.map((cType) => ({ value: cType, display: cType }));
return {
[RollResult.partial]: C.Consequences[this.finalPosition][RollResult.partial]
.map((cType) => ({ value: cType, display: cType })),
[RollResult.fail]: C.Consequences[this.finalPosition][RollResult.fail]
.map((cType) => ({ value: cType, display: cType }))
};
}
_consequenceAI;
async manageConsequenceAI(sData) {
Expand All @@ -2117,20 +2116,22 @@ class BladesRoll extends DocumentSheet {
if (!this._consequenceAI) {
this._consequenceAI = new BladesAI(AGENTS.ConsequenceAdjuster);
}
await Promise.all(Object.values(consequenceData).map((cData) => {
await Promise.all(Object.entries(consequenceData)
.map(([rollResult, cResultData]) => Object.entries(cResultData)
.map(([cIndex, cData]) => {
if (!cData.resistOptions) {
if (!this._consequenceAI?.hasQueried(cData.name)) {
this._consequenceAI?.query(cData.name, cData.name);
}
else {
const response = this._consequenceAI?.getResponse(cData.name);
if (response) {
return this.addResistanceOptions(cData.name, response.split("|"));
return this.addResistanceOptions(rollResult, cIndex, response.split("|"));
}
}
}
return undefined;
}));
})));
}
async getData() {
const context = super.getData();
Expand Down
21 changes: 12 additions & 9 deletions module/blades.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
|* ▌████░░░░ ░░░░█████▐ *|
\* ****▌███████████████████████████████████████████████████████████████████████████▐**** */

import C, { AttributeTrait, RollType, ConsequenceType } from "./core/constants.js";
import C, { AttributeTrait, RollType, ConsequenceType, RollResult } from "./core/constants.js";
import registerSettings, { initTinyMCEStyles, initCanvasStyles } from "./core/settings.js";
import { registerHandlebarHelpers, preloadHandlebarsTemplates } from "./core/helpers.js";
import BladesPushAlert from "./BladesPushAlert.js";
Expand Down Expand Up @@ -58,14 +58,17 @@ class GlobalGetter {
rollFactors: pc.rollFactors
},
consequenceData: {
"Shattered Knee": {
name: "Shattered Knee",
type: ConsequenceType.Harm3,
attribute: AttributeTrait.prowess,
resistOptions: {
"Twisted Knee": { name: "Twisted Knee", type: ConsequenceType.Harm2 }
},
selectedResistOption: "Twisted Knee"
[RollResult.fail]: {
0: {
name: "Shattered Knee",
type: ConsequenceType.Harm3,
attribute: AttributeTrait.prowess,
resistOptions: {
"Twisted Knee": { name: "Twisted Knee", type: ConsequenceType.Harm2, isSelected: true },
"Bum Leg": { name: "Bum Leg", type: ConsequenceType.Harm2, isSelected: false },
"Sprained Knee": { name: "Sprained Knee", type: ConsequenceType.Harm2, isSelected: false }
}
}
}
}
};
Expand Down
4 changes: 4 additions & 0 deletions scss/core/_globals.scss
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@

.gold-bright { color: var(--blades-gold-bright) !important }
.red-bright { color: var(--blades-red-bright) !important }
.red-dark { color: var(--blades-red-dark) !important}
.grey { color: var(--blades-grey) !important }
.white { color: var(--blades-white) !important }
.white-bright { color: var(--blades-white-bright) !important }
.cyan-bright { color: var(--blades-cyan-bright) !important }
.uppercase { text-transform: uppercase !important }
.inline-code {
Expand Down
2 changes: 1 addition & 1 deletion templates/components/roll-collab-mod.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
{{/if}}
{{log "THIS" this}}
{{log "Select Options" selectOptions}}
<div class="roll-select" option-test="{{rollInstance.rollCosts}}">
<div class="roll-select">
{{> "systems/eunos-blades/templates/components/select.hbs"
cssClass="shadowed roll-sheet-select roll-sheet-select-doc"
dataAction="gm-select"
Expand Down
7 changes: 6 additions & 1 deletion templates/components/toggle-icon.hbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<span class="toggle-icon {{blockClass}} {{~#if isToggled}} toggled{{/if}}">
<input data-dtype="Boolean" type="checkbox" class="hidden-toggle" name="{{targetKey}}" {{checked isToggled}} />
{{#if targetKey}}
<input data-dtype="Boolean" type="checkbox" class="hidden-toggle" name="{{targetKey}}" {{checked isToggled}} />
{{else if targetFlagKey}}
<input data-dtype="Boolean" type="checkbox" class="hidden-toggle" data-action="gm-toggle" data-flag-target="{{targetFlagKey}}" {{checked isToggled}} />
{{/if}}

<i class="toggle-on {{activeClass}}"></i>
<i class="toggle-off {{inactiveClass}}"></i>
{{#if tooltip}}
Expand Down
17 changes: 11 additions & 6 deletions templates/npc-sheet.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,18 @@

<div class="comp comp-traits">
<div class="comp comp-randomizer-field field-size-half">

{{> "systems/eunos-blades/templates/components/toggle-icon.hbs"
isToggled=system.persona.trait1.isLocked
activeClass="fas fa-lock"
activeTooltip="<b>Field Frozen</b><br>Click to Randomize"
inactiveClass="far fa-lock-open-alt"
inactiveTooltip="<b>Randomizing Field</b><br>Click to Freeze"
targetKey="system.persona.trait1.isLocked" }}
isToggled=system.persona.trait1.isLocked
activeClass="fas fa-lock"
activeTooltip="<b>Field Frozen</b><br>Click to Randomize"
inactiveClass="far fa-lock-open-alt"
inactiveTooltip="<b>Randomizing Field</b><br>Click to Freeze"
targetKey="system.persona.trait1.isLocked"
targetFlagKey=false
}}


<input class="shadowed randomizer-input" type="text" name="system.persona.trait1.value" value="{{system.persona.trait1.value}}" placeholder="Trait">
</div>

Expand Down
103 changes: 94 additions & 9 deletions templates/roll/partials/roll-collab-action-gm.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -235,17 +235,102 @@
{{> "systems/eunos-blades/templates/components/roll-collab-opposition.hbs" rollOpposition=rollOpposition factorData=rollFactors.opposition}}
</section>
<section class="sheet-main tab-content roll-consequences">
<label class="roll-consequence-section-label">Consequence(s): Partial</label>
{{#each consequenceData.partial as |cData cIndex|}}
<div class="roll-consequence-row">
{{!-- Type --}}
{{> "systems/eunos-blades/templates/components/select.hbs"
cssClass="roll-consequence-type-select"
dataAction="gm-select"
dataFlagTarget=(concat "rollCollab.consequenceData.partial." cIndex ".type")
dataDType="String"
dataDocType=false
selected=cData.type
options=consequenceTypeOptions.partial }}
{{!-- Name --}}
<input class="shadowed consequence-name" type="text" data-action="gm-text-input" data-flag-target="rollCollab.consequenceData.partial.{{cIndex}}.name" value="{{cData.name}}" />
{{!-- AI Options --}}
<div class="flex-vertical consequence-resist-options-container">
{{#each cData.resistOptions as |rData rName|}}
<div class="flex-horizontal consequence-resist-option">
{{> "systems/eunos-blades/templates/components/toggle-icon.hbs"
isToggled=rData.isSelected
activeClass="fa-solid fa-bandage red-bright"
activeTooltip="<b>AI Suggestion</b><br>Click to Select"
inactiveClass="fa-solid fa-bandage grey"
inactiveTooltip="<b>Selected AI Suggestion</b><br>Click to Deselect"
targetFlagKey="rollCollab.consequenceData.partial.{{cIndex}}.resistOptions.{{rName}}.isSelected"
}}
<label class="consequence-name">{{rData.name}}</label>
</div>
{{/each}}
</div>
</div>
{{/each}}
{{!-- Blank Entry for New Consequence --}}
{{#with (count consequenceData.partial) as |index|}}
<div class="roll-consequence-row">
<select class="roll-consequence-type" data-dtype="String" name="consequenceData.type">
{{#select consequenceData.type}}
<option value="" hidden disabled selected></option>
{{#each consequenceTypes}}
<option value="{{this}}">{{this}}</option>
{{/each}}
{{/select}}
</select>
{{!-- Type --}}
{{> "systems/eunos-blades/templates/components/select.hbs"
cssClass="roll-consequence-type-select"
dataAction="gm-select"
dataFlagTarget=(concat "rollCollab.consequenceData.partial." index ".type")
dataDType="String"
dataDocType=false
selected=""
options=./consequenceTypeOptions.partial }}
{{!-- Name --}}
<input class="shadowed consequence-name" type="text" data-action="gm-text-input" data-flag-target="rollCollab.consequenceData.partial.{{index}}.name" />
</div>
<input type="text"
{{/with}}
<label class="roll-consequence-section-label">Consequence(s): Fail</label>
{{#each consequenceData.fail as |cData cIndex|}}
<div class="roll-consequence-row">
{{!-- Type --}}
{{> "systems/eunos-blades/templates/components/select.hbs"
cssClass="roll-consequence-type-select"
dataAction="gm-select"
dataFlagTarget=(concat "rollCollab.consequenceData.fail." cIndex ".type")
dataDType="String"
dataDocType=false
selected=cData.type
options=consequenceTypeOptions.fail }}
{{!-- Name --}}
<input class="shadowed consequence-name" type="text" data-action="gm-text-input" data-flag-target="rollCollab.consequenceData.fail.{{cIndex}}.name" value="{{cData.name}}" />
{{!-- AI Options --}}
<div class="flex-vertical consequence-resist-options-container">
{{#each cData.resistOptions as |rData rName|}}
<div class="flex-horizontal consequence-resist-option">
{{> "systems/eunos-blades/templates/components/toggle-icon.hbs"
isToggled=rData.isSelected
activeClass="fa-solid fa-bandage red-bright"
activeTooltip="<b>AI Suggestion</b><br>Click to Select"
inactiveClass="fa-solid fa-bandage grey"
inactiveTooltip="<b>Selected AI Suggestion</b><br>Click to Deselect"
targetFlagKey=(concat "rollCollab.consequenceData.fail." cIndex ".resistOptions." rName ".isSelected")
}}
<label class="consequence-name">{{rData.name}}</label>
</div>
{{/each}}
</div>
</div>
{{/each}}
{{!-- Blank Entry for New Consequence --}}
{{#with (count consequenceData.fail) as |index|}}
<div class="roll-consequence-row">
{{!-- Type --}}
{{> "systems/eunos-blades/templates/components/select.hbs"
cssClass="roll-consequence-type-select"
dataAction="gm-select"
dataFlagTarget=(concat "rollCollab.consequenceData.fail." index ".type")
dataDType="String"
dataDocType=false
selected=""
options=./consequenceTypeOptions.fail }}
{{!-- Name --}}
<input class="shadowed consequence-name" type="text" data-action="gm-text-input" data-flag-target="rollCollab.consequenceData.fail.{{index}}.name" />
</div>
{{/with}}
</section>
<section class="sheet-main flex-vertical factor-controls">

Expand Down
Loading

0 comments on commit fbaa276

Please sign in to comment.