Skip to content

Commit

Permalink
Merge pull request #178 from dmdorman/degenesis-system
Browse files Browse the repository at this point in the history
adding degenesis system
  • Loading branch information
Varriount authored Feb 2, 2023
2 parents c051b7e + 0c5eb8e commit 1a65128
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 1a65128

Please sign in to comment.