Skip to content

Commit

Permalink
adding degenesis system
Browse files Browse the repository at this point in the history
besides the basic system config...

added a degenesis specific html file. The existing one had a bunch of fields that aren't relevant to the degenesis system. The skills were also overflowing off the sheet because of many skills with longer names

had to create LMRTFY.skills by reading from an actor. I had to do this because this type of system info wasn't readily available without importing a file and even then it wouldn't be in the proper format to work with LMRTFY
  • Loading branch information
dmdorman committed Feb 2, 2023
1 parent c051b7e commit 0c5eb8e
Show file tree
Hide file tree
Showing 5 changed files with 298 additions and 3 deletions.
11 changes: 10 additions & 1 deletion module.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@
"coc",
"demonlord",
"ose",
"foundry-chromatic-dungeons"
"foundry-chromatic-dungeons",
"degenesis"
],
"relationships": {
"systems": [
Expand Down Expand Up @@ -166,6 +167,14 @@
"compatibility": {
"verified": "1.1.0"
}
},
{
"id": "degenesis",
"type": "system",
"manifest": "https://github.com/greedyj4ck/DEGENESIS-FoundryVTT/releases/latest/download/system.json",
"compatibility": {
"verified": "0.5.1"
}
}
]
},
Expand Down
16 changes: 15 additions & 1 deletion src/lmrtfy.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,21 @@ class LMRTFY {
LMRTFY.saves = CONFIG.CHROMATIC.saves;
LMRTFY.specialRolls = {};
LMRTFY.canFailChecks = game.settings.get('lmrtfy', 'showFailButtons'); // defaulted to false due to system
break;
break;

case 'degenesis':
LMRTFY.skillRollMethod = 'rollSkill';

let skills = game.actors.contents[0].skills;
for (const [key, value] of Object.entries(skills)) {
skills[key]["label"] = key;
skills[key]["ability"] = value.attribute;
}
LMRTFY.skills = skills;

LMRTFY.abilityModifiers = LMRTFY.parseAbilityModifiers();
LMRTFY.canFailChecks = game.settings.get('lmrtfy', 'showFailButtons'); // defaulted to false due to system
break;

default:
console.error('LMRFTY | Unsupported system detected');
Expand Down
13 changes: 12 additions & 1 deletion src/requestor.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,21 @@ class LMRTFYRequestor extends FormApplication {
}

static get defaultOptions() {

let template;
switch (game.system.id) {
case "degenesis":
template = "modules/lmrtfy/templates/degenesis-request-rolls.html";
break;
default:
template = "modules/lmrtfy/templates/request-rolls.html";
break;
}

const options = super.defaultOptions;
options.title = game.i18n.localize("LMRTFY.Title");
options.id = "lmrtfy";
options.template = "modules/lmrtfy/templates/request-rolls.html";
options.template = template;
options.closeOnSubmit = false;
options.popOut = true;
options.width = 600;
Expand Down
6 changes: 6 additions & 0 deletions src/roller.js
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,12 @@ class LMRTFYRoller extends Application {
break;
}

case "degenesis": {
const key = args[0];
actor[rollMethod].call(actor, key, false)
break;
}

default: {
await actor[rollMethod].call(actor, ...args, options);
}
Expand Down
255 changes: 255 additions & 0 deletions templates/degenesis-request-rolls.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,255 @@
<form autocomplete="off" onsubmit="event.preventDefault();" class="app.window-app">
<fieldset>
<div class="form-group">
<label>{{localize "LMRTFY.SelectUser"}}</label>

<select name="user" data-dtype="String">
<option value="tokens" selected>{{localize "LMRTFY.ControlledTokens"}}</option>
<option value="character">{{localize "LMRTFY.AssignedCharacters"}}</option>
<optgroup label="{{localize "LMRTFY.Macros"}}">
<option value="selected">{{localize "LMRTFY.Selected"}}</option>
</optgroup>
<optgroup label="{{localize "LMRTFY.Users"}}">
{{#each users}}
<option value="{{this.id}}">{{this.name}}</option>
{{/each}}
</optgroup>
</select>
</div>
<div class="form-group">
<label>{{localize "LMRTFY.SelectCharacters"}}</label>
<button type="button" class="select-all"><i class="fas fa-check-square"></i>{{localize "LMRTFY.SelectAll"}}</button>
<button type="button" class="deselect-all"><i class="fas fa-square"></i>{{localize "LMRTFY.SelectNone"}}</button>
</div>
<div class="form-group lmrtfy-actor-avatars">
{{#each actors}}
<div class="lmrtfy-actor" data-id="{{this.id}}">
<input type="checkbox" name="actor-{{this.id}}" id="lmrtf-actor-{{this.id}}" data-dtype="Boolean" {{#if (lmrtfy-controlledToken this)}}checked{{/if}} />
<label for="lmrtf-actor-{{this.id}}">
{{#if (lmrtfy-showTokenImage this)}}<img src="{{this.prototypeToken.texture.src}}" />{{else}}<img src="{{this.img}}" />{{/if}}
</label>
</div>
{{/each}}
</div>
</fieldset>

<fieldset>
<div class="form-group">
<label>{{localize "LMRTFY.Modifiers"}}</label>

<select name="mode" data-dtype="String">
{{#each rollModes as |name mode|}}
<option value="{{mode}}">{{localize name}}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<label>{{localize "LMRTFY.WindowTitle"}}</label>
<input type="text" name="title" value='{{localize "LMRTFY.WindowTitleValue"}}' placeholder='{{localize "LMRTFY.WindowTitlePlaceholder"}}' data-dtype="String"/>
</div>
<div class="form-group">
<label>{{localize "LMRTFY.Message"}}</label>
<input type="text" name="message" value='' placeholder='{{localize "LMRTFY.MessagePlaceholder"}}' data-dtype="String"/>
</div>
<div class="form-group">
<label>{{localize "LMRTFY.ChooseOneDM"}}</label>
<div class="lmrtfy-extra-perception">
<input type="checkbox" name="choose-one" id="lmrtf-choose-one" data-dtype="Boolean" />
<label for="lmrtf-choose-one">{{localize "LMRTFY.Enabled"}}</label>
</div>
</div>
</fieldset>

{{#if showDC}}
<fieldset>
<div class="form-group">
<label>{{localize "LMRTFY.DC"}}</label>
<input type="number" name="dc" value="" placeholder="20" data-dtype="Integer"/>

<label>&nbsp;{{localize "LMRTFY.Visibility"}}</label>
<select name="visibility" data-dtype="String">
<option value="gm" selected>{{localize "USER.RoleGamemaster"}}</option>
<option value="owner">{{localize "PERMISSION.OWNER"}}</option>
<option value="all">{{localize "PERMISSION.AllPlayers"}}</option>
</select>
</div>
</fieldset>
{{/if}}

<fieldset>
<div class="form-group">
<label>{{localize "LMRTFY.CustomFormula"}}</label>
<input type="text" class="custom-formula" name="formula" value='' placeholder='{{localize "LMRTFY.CustomFormulaPlaceholder"}}' data-dtype="String"/>
</div>
<details class="lmrtfy-dice-tray-details">
<summary class="lmrtfy-dice-tray-expander">{{localize "LMRTFY.Selectors"}}</summary>
<div>
<div class="lmrtfy-dice-tray-buttons flexrow lmrtfy-dice-row-flexrow">
<!-- d4 -->
<div class="lmrtfy-dice-tray-button" data-value="d4">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<polygon points="31.7,15.7 13.2,47.8 31.7,37.1 "/>
<polygon points="32.3,15.7 32.3,37.1 50.8,47.8 "/>
<polygon points="32,37.6 13.5,48.3 50.5,48.3 "/>
</g>
</svg>
</div>
<!-- d6 -->
<div class="lmrtfy-dice-tray-button" data-value="d6">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<path d="M11.5,9h41c1.4,0,2.6,1.1,2.6,2.6v41c0,1.4-1.1,2.6-2.6,2.6h-41C10.1,55,9,53.9,9,52.5v-41C9,10.1,10.1,9,11.5,9z"/>
</g>
</svg>
</div>
<!-- d8 -->
<div class="lmrtfy-dice-tray-button" data-value="d8">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<g transform="translate(-242.40981,-473.89862)">
<path d="M254.5,515.3l19.9-34.6l20.1,34.4L254.5,515.3z"/>
<path d="M253.4,515.1l-0.3-19.6l20.2-14.9L253.4,515.1z"/>
<path d="M295.4,514.9l0.3-19.3l-20.3-15L295.4,514.9z"/>
<path d="M274.4,531.2l-19.9-14.9l40-0.3L274.4,531.2z"/>
</g>
</g>
</svg>
</div>
<!-- d10 -->
<div class="lmrtfy-dice-tray-button" data-value="d10">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
<path d="M263.4,124.6L249.9,153l12.5,8.1l13.5-8.2L263.4,124.6z"/>
<path d="M264.1,124.1l12.5,28.6l7.3-2.3l0.5-11.6L264.1,124.1z"/>
<path d="M262.7,161.8v4.4l20.9-14.7l-7,2L262.7,161.8z"/>
<path d="M262.7,124.2l-13.7,28.5l-7.1-3.1l-0.6-11.6L262.7,124.2z"/>
<path d="M261.8,161.7v4.5l-20-15.4l6.9,2.7L261.8,161.7z"/>
</g>
</g>
</svg>
</div>
<!-- d12 -->
<div class="lmrtfy-dice-tray-button" data-value="d12">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<path d="M24,43.7l-5.4-16.3l13.7-10.8l14.1,10.8L41.2,44L24,43.7z"/>
<path d="M7.9,24l0.5,16.3l8.8,12.1l6.3-7.7l-5.8-17.5L7.9,24z"/>
<path d="M41,45.1L23.9,45l-5.5,7.8l13.9,4.3l14.2-4.5L41,45.1z"/>
<path d="M8.7,23.5l8.7-11.6l14.3-4.9v8.7L17.8,26.5L8.7,23.5z"/>
<path d="M33.4,6.9l14.2,4.8l8.3,11.9l-8.7,3.1l-13.9-11L33.4,6.9z"/>
<path d="M42.2,44.4l5.3-16.3l8.6-3l0,14.6l-8.5,11.9L42.2,44.4z"/>
</g>
</svg>
</div>
<!-- d20 -->
<div class="lmrtfy-dice-tray-button" data-value="d20">
<svg class="lmrtfy-dice-svg-normal" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g transform="translate(-246.69456,-375.66745)">
<path d="M278.2,382.1c-0.1,0-0.2,0-0.3,0.1L264.8,398c-0.2,0.3-0.2,0.3,0.1,0.3l26.4-0.1c0.4,0,0.4,0,0.1-0.3l-13-15.8
C278.4,382.1,278.3,382.1,278.2,382.1L278.2,382.1z M280.7,383.5l11.9,14.5c0.2,0.2,0.2,0.2,0.5,0.1l6.3-2.9
c0.4-0.2,0.4-0.2,0.1-0.4L280.7,383.5z M275.2,384c0,0-0.1,0.1-0.3,0.2l-17.3,11.4l5.4,2.5c0.3,0.1,0.4,0.1,0.5-0.1l11.4-13.6
C275.1,384.1,275.2,384,275.2,384L275.2,384z M300.3,395.8c-0.1,0-0.1,0-0.3,0.1l-6.4,2.9c-0.2,0.1-0.2,0.2-0.1,0.4l7.5,19
l-0.5-22.1C300.4,395.9,300.4,395.8,300.3,395.8L300.3,395.8z M257.1,396.4l-0.7,21.5l6.3-18.6c0.1-0.3,0.1-0.3-0.1-0.4
L257.1,396.4L257.1,396.4z M291.6,399.2l-27,0.1c-0.4,0-0.4,0-0.2,0.3l13.7,23.1c0.2,0.4,0.2,0.3,0.4,0l13.2-23.2
C291.9,399.3,291.9,399.2,291.6,399.2L291.6,399.2z M292.7,399.8c0,0-0.1,0.1-0.1,0.2l-13.3,23.3c-0.1,0.2-0.2,0.3,0.2,0.3
l21.1-2.9c0.3-0.1,0.3-0.2,0.2-0.5l-7.9-20.2C292.7,399.9,292.7,399.8,292.7,399.8L292.7,399.8z M263.6,400c0,0,0,0.1-0.1,0.3
l-6.7,19.8c-0.1,0.4-0.1,0.6,0.3,0.7l20.1,2.9c0.4,0.1,0.3-0.1,0.2-0.3l-13.7-23.1C263.6,400,263.6,400,263.6,400L263.6,400z
M258.3,421.9l19.7,11.2c0.3,0.2,0.3,0.1,0.3-0.2l-0.4-7.9c0-0.3,0-0.4-0.3-0.4L258.3,421.9L258.3,421.9z M299.1,421.9l-20,2.8
c-0.3,0-0.2,0.2-0.2,0.4l0.4,8c0,0.2,0,0.3,0.3,0.2L299.1,421.9z"/>
</g>
</svg>
</div>
<!-- d100 -->
<div class="lmrtfy-dice-tray-button" data-value="d100">
<svg class="lmrtfy-dice-svg-normal lmrtfy-dice-svg-smaller" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
<g>
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
<polygon points="264.7,150.8 263.7,151.4 262.2,152.3 261.4,152.8 259.6,153.8 253.3,157.7 242.7,150.8 254.2,126.6 258.2,135.9
259.9,139.8 262.7,146.1 263.1,147 263.1,147 "/>
<polygon points="271.9,138.7 271.5,148.5 265.4,150.5 263.5,146.2 263.1,145.3 258.8,135.5 257.8,133.3 254.7,126.2 255.8,127
263.4,132.5 267.8,135.7 268.3,136 "/>
<polygon points="271.3,149.5 264.9,154.1 264.6,154.2 264.2,154.5 262.3,155.9 253.6,162 253.6,158.2 260.2,154.3 262.1,153.2
262.8,152.7 263.9,152 265.4,151.1 "/>
<path d="M253.6,126.3L242,150.5l-6.1-2.6l-0.5-9.9L253.6,126.3z"/>
<path d="M252.8,158.2v3.8l-17-13.1l5.9,2.3L252.8,158.2z"/>
</g>
</g>
<g>
<g transform="matrix(1.1679092,0,0,1.1679092,-274.931,-137.53749)">
<polygon points="283,151.5 271.5,158.4 265.6,154.5 272.2,149.7 272.6,138.2 268.6,135.3 272.5,127.3 "/>
<path d="M273,126.9l10.6,24.3l6.2-2l0.4-9.8L273,126.9z"/>
<path d="M271.9,159v3.7l17.7-12.5l-5.9,1.7L271.9,159z"/>
<polygon points="271.9,127 268.1,134.9 264.1,132 "/>
<polygon points="265,155 271.1,158.9 271.1,162.7 262.9,156.4 "/>
</g>
</g>
</svg>
</div>
</div>
<div class="lmrtfy-dice-tray-buttons flexrow lmrtfy-dice-row-flexrow">
<div class="lmrtfy-dice-tray-button lmrtfy-bonus-button" data-value="-1">
-
</div>
<div class="lmrtfy-dice-tray-button lmrtfy-bonus-button" data-value="+1">
+
</div>
</div>
<div class="form-group lmrtfy-dice-tray-checks">
<div class="lmrtfy-ability-checks">
{{#each abilityModifiers as |name key|}}
<div class="lmrtfy-ability">
<input type="checkbox" class="lmrtfy-formula-ability" name="lmrtfy-formula-{{key}}" id="lmrtfy-formula-{{key}}" data-value="{{key}}" />
<label for="lmrtfy-formula-{{key}}">{{localize name}}</label>
</div>
{{/each}}
</div>
</div>
<div class="lmrtfy-clear-button-area">
<button type="button" class="lmrtfy-clear-formula" name="lmrtfy-clear-custom" value="1"><i class="fas fa-pump-soap"></i>{{localize "LMRTFY.ClearCustomFormula"}}</button>
</div>
</div>
</details>
</fieldset>

<fieldset>
<label>{{localize "LMRTFY.SkillChecks"}}</label>
<div class="form-group">
<div class="" style="display: flex; flex-wrap: wrap; flex-direction: column; justify-content: space-evenly; max-height: 180px; flex: 6;">
{{#each skills as |name key|}}
<div class="lmrtfy-skill" style="padding-left:7px;padding-right:20px;">
<input type="checkbox" name="skill-{{key}}" id="lmrtf-skill-{{key}}" data-dtype="Boolean" />
<label for="lmrtf-skill-{{key}}">{{localize name}}</label>
</div>
{{/each}}
</div>
</div>
</fieldset>

{{#if tables}}
<fieldset>
<div class="form-group">
<label>{{localize "LMRTFY.RollTables"}}</label>

<select name="table" class="lmrtfy-roll-table-list" data-dtype="String" multiple="multiple">
{{#each tables as |name|}}
<option value="{{name}}">{{name}}</option>
{{/each}}
</select>
</div>
</fieldset>
{{/if}}

<div class="lmrtfy-submit">
<button type="submit" class="item lmrtfy-request-roll" name="submit" value="1"><i class="fas fa-dice"></i>{{localize "LMRTFY.RequestRolls"}}</button>
<button type="button" class="item lmrtfy-save-roll" name="submit" value="1"><i class="fas fa-download"></i>{{localize "LMRTFY.SaveRequest"}}</button>
</div>
</form>

0 comments on commit 0c5eb8e

Please sign in to comment.