GODSEND Agenda v1.0.0 publisher sheet, minimal version

This commit is contained in:
Andreas Johansson
2021-05-17 18:27:46 +03:00
parent 07198e5225
commit 4d5a413aa5
9 changed files with 389 additions and 714 deletions
+35 -179
View File
@@ -11,43 +11,26 @@
/*------------------------------------*\
#SECTIONS
\*------------------------------------*/
/* page selection */
/* --------------- Universal Section ------------------- */
/* Section specific */
/* Core layout of each page */
/* -------------------------- Pages Specific Layout--------------------- */
/* -------------------------- Page 2/Notes --------------------- */
/* -------------------------- Page 3/Settings ------------------ */
/* -------------------------- Page 4/NPC ------------------ */
/*------------------------------------*\
#PAGE LAYOUT/ PAGE BUTTONS
\*------------------------------------*/
/* -------------- page buttons ------------- */
/*
main.npc,
button[type="action"].npc,
button[type="action"].pc,
input.tabstoggle[value="npc"] ~ main.npc,
*/
/* show the selected page */
/* shows/hides page buttons */
/*
input.npctoggle[value="0"] ~ button[type="action"].pc,
input.npctoggle[value="1"] ~ button[type="action"].npc{
display: flex;
} */
}
.charsheet * {
font-family: "Noto Sans TC";
--mythic-dark-red: #4a0004;
--mythic-light-red: #ac3f2b;
--mythic-red: #a83521;
overflow: clip;
}
.charsheet .version {
color: black;
font-weight: bold;
float: right;
margin: -16px 20px;
margin: -31px 13px;
}
.charsheet .capital,
.charsheet :not(textarea) {
@@ -165,6 +148,18 @@
color: white;
font-size: 1.7em;
}
.charsheet div.tab-buttons {
display: flex;
gap: 30px;
border: 2px black;
border-style: none none solid none;
}
.charsheet div.tab-buttons button {
font-size: 1.5em;
}
.charsheet div.tab-buttons select {
width: 90px;
}
.charsheet .border {
border-style: solid;
border-radius: 13px;
@@ -187,7 +182,7 @@
background: white;
opacity: 0.9;
min-height: 90%;
max-width: 800px;
max-width: 750px;
}
.charsheet .flex-row {
display: flex;
@@ -235,33 +230,34 @@
.charsheet div.halfsection {
max-width: 400px;
}
.charsheet section.common {
grid-area: common;
}
.charsheet section.points {
grid-area: points;
}
.charsheet section.disadv {
grid-area: disadv;
}
.charsheet section.skills {
grid-area: skills;
}
.charsheet section.notes {
grid-area: notes;
}
.charsheet section.notes input {
background-color: #ccc;
}
.charsheet main.character {
display: grid;
grid-gap: 4px;
grid-template-columns: 3fr 1fr;
grid-template-rows: 70px 40px 100px auto;
grid-template-rows: 70px 40px 140px auto;
grid-template-areas: "common common" "points points" "attrs attrs" "skills notes";
width: 800px;
height: 1300px;
position: relative;
/* Section specific */
}
.charsheet main.character section.common {
grid-area: common;
}
.charsheet main.character section.points {
grid-area: points;
}
.charsheet main.character section.disadv {
grid-area: disadv;
}
.charsheet main.character section.skills {
grid-area: skills;
}
.charsheet main.character section.notes {
grid-area: notes;
}
.charsheet main.character section.notes input {
background-color: #ccc;
}
.charsheet main.notes {
display: grid;
@@ -273,52 +269,6 @@
width: 750px;
position: relative;
}
.charsheet main.npc textarea {
height: 140px;
}
.charsheet main.settings input[type=number] {
height: 24px;
}
.charsheet main.settings span.dice {
margin-top: 5px;
}
.charsheet main.npc * {
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
}
.charsheet main.npc h3 {
text-align: center;
}
.charsheet main.npc .mookgrid {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(4, 1fr) 3fr;
place-items: center;
}
.charsheet main.npc .mookgrid .orange {
background-color: orange;
font-size: 1.3em;
place-self: stretch;
}
.charsheet main.npc .mookgrid .name {
grid-column: span 5;
}
.charsheet main.npc .mookgrid .name label {
width: 40px;
}
.charsheet main.npc .mookgrid .name input {
font-size: 1.7em;
text-align: center;
margin-bottom: 5px;
}
.charsheet main.npc .mookgrid .al {
grid-column: span 2;
}
.charsheet main.npc .mookgrid .notes {
grid-column: span 5;
background-color: LemonChiffon;
}
.charsheet main.character,
.charsheet main.notes,
.charsheet main.settings {
@@ -329,101 +279,7 @@
.charsheet input.tabstoggle[value=settings] ~ main.settings {
display: grid;
}
.charsheet div.tab-buttons {
display: flex;
gap: 10px;
}
.charsheet div.tab-buttons button {
font-size: 1.5em;
}
/* mobile styling */
@media only screen and (max-width: 480px) {
.charsheet button[type=roll].d6-dice::before {
/*new die changes die roller to d6*/
content: "";
}
.charsheet main.character {
display: grid;
grid-gap: 4px;
grid-template-columns: 13fr 9fr;
grid-template-rows: 1fr minmax(0.3fr, 2.5fr) 1.5fr 8fr 3fr 2fr 2fr 2fr 2fr 1fr;
grid-template-areas: "common common " "archetype archetype " "attributes attributes" "skills skills " "powers powers " "weapons weapons " "armor armor " "stress stress " "equipment equipment " "rules rules ";
width: 480px;
height: 1800px;
position: relative;
}
.charsheet div.archetype {
width: 400px;
}
.charsheet div.archetype details div {
flex-direction: column;
}
.charsheet div.archetype textarea.featuredesc {
width: 90%;
}
.charsheet div.attributes {
flex-wrap: wrap;
}
.charsheet div.attributes label.title {
text-align: center;
min-width: 450px;
width: 450px;
}
.charsheet div.attributes div.rowflex.nowrap.middle {
flex-wrap: wrap;
width: 350px;
}
.charsheet div.skills div.rowflex {
flex-direction: column;
}
.charsheet div.skills div.skillgrid {
display: grid;
padding: 5px;
grid-template-rows: repeat(21, 1fr);
grid-template-columns: 3fr 2fr;
width: 400px;
height: 800px;
}
.charsheet div.skills button[type=roll].red {
width: 170px;
}
.charsheet button[type=roll].skills {
font-size: 14px;
padding: 0px;
margin: 0px;
width: 145px;
height: 25px;
border: 2px solid white;
color: var(--mythic-light-red);
text-shadow: none;
}
.charsheet button[type=roll].skills:hover {
font-size: 14px;
padding: 0px;
margin: 0px;
width: 145px;
height: 25px;
border: 2px solid black;
border-radius: 9px;
color: var(--mythic-light-red);
text-shadow: none;
}
.charsheet button[type=roll].skills:hover::after {
content: "";
}
.charsheet div.skills button[type=roll].special {
width: 25px;
color: var(--mythic-light-red);
}
.charsheet div.skills button[type=roll].special:hover {
width: 25px;
color: var(--mythic-light-red);
}
.charsheet div.skills button[type=roll].special::after {
content: "d6";
}
}
/*------------------------------------*\
#ROLL TEMPLATES
\*------------------------------------*/
+172 -239
View File
@@ -1,221 +1,192 @@
<!-- main sheet code-->
<div class="tab-buttons middle center">
<!-- <input type="hidden" class="npctoggle" name="attr_npc" value="0"> -->
<button type="action" name="act_character" >Character</button>
<!-- <button class="npc" type="action" name="act_npc" >NPC</button> -->
<button type="action" name="act_notes" >Notes</button>
<button type="action" name="act_settings" >Settings</button>
<div class="tab-buttons spaced center">
<!--_ button(type="action" name=`act_${tab}`) tab-->
<h1>GODSEND AGENDA</h1>
<div><span>Page selection</span>
<select name="attr_sheetTab">
<option value="character">character</option>
<option value="notes">notes</option>
<option value="settings">settings</option>
</select>
</div>
<div class="version"><span>Sheet Version: </span><span name="attr_version"></span></div>
</div>
<span class="version">Sheet Version: <span name="attr_version"></span> </span>
<input type="hidden" class="tabstoggle" name="attr_sheetTab" value="character">
<input class="tabstoggle" type="hidden" name="attr_sheetTab" value="character"/>
<main class="character">
<section class="common">
<div class="columnflex nowrap">
<label>Name</label>
<input name="attr_character_name" title="@{character_name}" type="text">
</div>
<div class="columnflex nowrap">
<label>Species</label>
<input name="attr_species" title="@{species}" type="text">
</div>
<div class="columnflex nowrap">
<label>Archetype</label>
<input name="attr_archetype" title="@{archetype}" type="text">
</div>
<div class="columnflex nowrap">
<label>Renown</label>
<input name="attr_renown" title="@{renown}" type="text">
</div>
</section>
<section class="points rowflex nowrap spaced">
<div class="rowflex nowrap">
<span>Body Points</span><input name="attr_body_points" type="number" value="" class="txtfield">/<input name="attr_body_points_max" type="number" value="" class="txtfield">
</div>
<div class="rowflex nowrap">
<span>Mind Points</span><input name="attr_mind_points" type="number" value="" class="txtfield">/<input name="attr_mind_points_max" type="number" value="" class="txtfield">
</div>
<div class="rowflex nowrap">
<span>Hero Points</span><input name="attr_hero_points" title="@{hero_points}" type="number" value="" class="txtfield">/<input name="attr_hero_points_max" title="@{hero_points_max}" type="number" value="" class="txtfield">
</div>
<div class="rowflex nowrap">
<span>Wealth Rating</span><input name="attr_wealth" title="@{wealth}" type="text" value="" class="txtfield">
</div>
</section>
<section class="attrs columnflex nowrap">
<h2>Attributes</h2>
<div class="rowflex nowrap">
<div>
<span>con</span>
<input name="attr_con" type="number" value="">
<button name="roll_con" value="" type="roll">con</button>
</div>
<div>
<span>dex</span>
<input name="attr_dex" type="number" value="">
<button name="roll_dex" value="" type="roll">dex</button>
</div>
<div>
<span>spd</span>
<input name="attr_spd" type="number" value="">
<button name="roll_spd" value="" type="roll">spd</button>
</div>
<div>
<span>str</span>
<input name="attr_str" type="number" value="">
<button name="roll_str" value="" type="roll">str</button>
</div>
<div>
<span>cr</span>
<input name="attr_cr" type="number" value="">
<button name="roll_cr" value="" type="roll">cr</button>
</div>
</div>
<div class="rowflex nowrap">
<div>
<span>cha</span>
<input name="attr_cha" type="number" value="">
<button name="roll_cha" value="" type="roll">sha</button>
</div>
<div>
<span>int</span>
<input name="attr_int" type="number" value="">
<button name="roll_int" value="" type="roll">int</button>
</div>
<div>
<span>per</span>
<input name="attr_per" type="number" value="">
<button name="roll_per" value="" type="roll">per</button>
</div>
<div>
<span>wil</span>
<input name="attr_wil" type="number" value="">
<button name="roll_wil" value="" type="roll">wil</button>
</div>
<div>
<span>mr</span>
<input name="attr_mr" type="number" value="">
<button name="roll_mr" value="" type="roll">mr</button>
</div>
<section class="common">
<div class="columnflex nowrap">
<label>Name</label>
<input name="attr_character_name" title="@{character_name}" type="text"/>
</div>
<div class="columnflex nowrap">
<label>Species</label>
<input name="attr_species" title="@{species}" type="text"/>
</div>
<div class="columnflex nowrap">
<label>Archetype</label>
<input name="attr_archetype" title="@{archetype}" type="text"/>
</div>
<div class="columnflex nowrap">
<label>Renown</label>
<input name="attr_renown" title="@{renown}" type="number"/>
</div>
</section>
<section class="points rowflex nowrap spaced">
<div class="rowflex nowrap"><span>Body Points</span>
<input class="txtfield" name="attr_body_points" type="number" value=""/><span>/</span>
<input class="txtfield" name="attr_body_points_max" type="number" value=""/>
</div>
<div class="rowflex nowrap"><span>Mind Points</span>
<input class="txtfield" name="attr_mind_points" type="number" value=""/><span>/</span>
<input class="txtfield" name="attr_mind_points_max" type="number" value=""/>
</div>
<div class="rowflex nowrap"><span>Hero Points</span>
<input class="txtfield" name="attr_hero_points" title="@{hero_points}" type="number" value=""/><span>/</span>
<input class="txtfield" name="attr_hero_points_max" title="@{hero_points_max}" type="number" value=""/>
</div>
<div class="rowflex nowrap"><span>Wealth Rating</span>
<input class="txtfield" name="attr_wealth" title="@{wealth}" type="number" value=""/>
</div>
<div class="rowflex nowrap"><span>XP</span>
<input class="txtfield" name="attr_xp" title="@{xp}" type="number" value=""/>
<input class="txtfield" name="attr_xp_max" title="@{xp_max}" type="number" value=""/>
</div>
</section>
<section class="attrs columnflex nowrap">
<h2>Attributes</h2>
<div class="rowflex nowrap middle spaced">
<div>
</section>
<!--
<section class="disadv">
</section>
-->
<section class="skills columnflex nowrap">
<h2>Skills</h2>
<fieldset class="repeating_skills">
<input name="attr_name" title="@{name}" type="text">
<input name="attr_rank" title="@{rank}" type="number">
<input name="attr_attribute" title="@{attribute}" type="number">
<button name="roll_roll" value="&{template:rolls} {{title=@{name} }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{rank}+@{attribute}[attribute]@{modquery}]]}}" type="roll" ></button>
</fieldset>
</section>
<section class="notes columnflex nowrap">
<h2>Disadvantages</h2>
<div>
<span>personal <input name="attr_personal" title="@{personal}" type="text"><input name="attr_personaldice" title="@{personaldice}" type="number" value=""></span>
<button name="roll_con" value="@{whisper}&{template:rolls} {{title=con }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{con}[con]@{modquery}]]}}" type="roll">con</button>
<input name="attr_con" type="number" title="@{con}" value=""/>
</div>
<div>
<span>internal <input name="attr_internal" title="@{internal}" type="text"><input name="attr_internaldice" title="@{internaldice}" type="number" value=""></span>
<button name="roll_dex" value="@{whisper}&{template:rolls} {{title=dex }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{dex}[dex]@{modquery}]]}}" type="roll">dex</button>
<input name="attr_dex" type="number" title="@{dex}" value=""/>
</div>
<div>
<span>external <input name="attr_external" title="@{external}" type="text"><input name="attr_externaldice" title="@{externaldice}" type="number" value=""></span>
<button name="roll_spd" value="@{whisper}&{template:rolls} {{title=spd }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{spd}[spd]@{modquery}]]}}" type="roll">spd</button>
<input name="attr_spd" type="number" title="@{spd}" value=""/>
</div>
<h2>Notes</h2>
<textarea name="attr_notes"></textarea>
</section>
</main>
<!--
<main class="npc gap">
<h1>NPC</h1>
</main>
-->
<main class="notes">
<h1>Notes</h1>
<section>
<h3>powers</h3>
<textarea name="attr_powers"></textarea>
</section>
<section>
<h3>weapons</h3>
<textarea name="attr_weapons"></textarea>
</section>
<section>
<h3>equipment</h3>
<textarea name="attr_equipment"></textarea>
</section>
</main>
<main class="settings">
<h1>Settings</h1>
<div class="section columnflex nowrap">
<span title="@{show_name}">Ask for Roll Modifiers?</span>
<select name="attr_modquery" title="@{modquery}" title="@{modquery}">
<option value="+?{Roll Modifier|0}">Yes</option>
<option value=" ">No</option>
<div>
<button name="roll_str" value="@{whisper}&{template:rolls} {{title=str }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{str}[str]@{modquery}]]}}" type="roll">str</button>
<input name="attr_str" type="number" title="@{str}" value=""/>
</div>
<div>
<button name="roll_cr" value="@{whisper}&{template:rolls} {{title=cr }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{cr}[cr]@{modquery}]]}}" type="roll">cr</button>
<input name="attr_cr" type="number" title="@{cr}" value=""/>
</div>
</div>
<div class="rowflex nowrap middle spaced">
<div>
<button name="roll_sha" value="@{whisper}&{template:rolls} {{title=sha }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{sha}[sha]@{modquery}]]}}" type="roll">sha</button>
<input name="attr_sha" type="number" title="@{sha}" value=""/>
</div>
<div>
<button name="roll_int" value="@{whisper}&{template:rolls} {{title=int }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{int}[int]@{modquery}]]}}" type="roll">int</button>
<input name="attr_int" type="number" title="@{int}" value=""/>
</div>
<div>
<button name="roll_per" value="@{whisper}&{template:rolls} {{title=per }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{per}[per]@{modquery}]]}}" type="roll">per</button>
<input name="attr_per" type="number" title="@{per}" value=""/>
</div>
<div>
<button name="roll_wil" value="@{whisper}&{template:rolls} {{title=wil }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{wil}[wil]@{modquery}]]}}" type="roll">wil</button>
<input name="attr_wil" type="number" title="@{wil}" value=""/>
</div>
<div>
<button name="roll_mr" value="@{whisper}&{template:rolls} {{title=mr }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{mr}[mr]@{modquery}]]}}" type="roll">mr</button>
<input name="attr_mr" type="number" title="@{mr}" value=""/>
</div>
</div>
</section>
<section class="skills columnflex nowrap">
<h2>Skills</h2>
<fieldset class="repeating_skills">
<input name="attr_name" title="@{name}" type="text"/>
<input name="attr_level" title="@{level}" type="number"/>
<select name="attr_attribute">
<option value="[[@{con}]]">con</option>
<option value="[[@{dex}]]">dex</option>
<option value="[[@{spd}]]">spd</option>
<option value="[[@{str}]]">str</option>
<option value="[[@{cr}]]">cr</option>
<option value="[[@{sha}]]">sha</option>
<option value="[[@{int}]]">int</option>
<option value="[[@{per}]]">per</option>
<option value="[[@{wil}]]">wil</option>
<option value="[[@{mr}]]">mr</option>
<option value="[[@{none}]]">none</option>
</select>
</div>
<div class="section rowflex nowrap gap">
<span title="@{whisper}">Whisper rolls to GM?</span>
<input name="attr_whisper" title="@{whisper}" type="checkbox" value="/w gm">
</div>
<div class="section rowflex nowrap gap">
<span>Dice type</span>
<input name="attr_dice" title="@{dice}" type="text" value="1d20">
</div>
<button name="roll_roll" value="@{whisper}&{template:rolls} {{title=@{name} }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{level}[skill level]+@{attribute}[attribute]@{modquery}]]}}" type="roll"><span name="attr_name"></span></button>
</fieldset>
</section>
<section class="notes columnflex nowrap">
<h2>Disadvantages</h2>
<div><span>personal
<input name="attr_personal" title="@{personal}" type="text"/>
<input name="attr_personaldice" title="@{personaldice}" type="number" value=""/></span></div>
<div><span>internal
<input name="attr_internal" title="@{internal}" type="text"/>
<input name="attr_internaldice" title="@{internaldice}" type="number" value=""/></span></div>
<div><span>external
<input name="attr_external" title="@{external}" type="text"/>
<input name="attr_externaldice" title="@{externaldice}" type="number" value=""/></span></div>
<h2>Notes</h2>
<textarea name="attr_notes"></textarea>
</section>
</main>
<main class="notes">
<h1>Notes</h1>
<section>
<h3>archetype_description</h3>
<textarea name="attr_archetype_description"></textarea>
</section>
<section>
<h3>powers</h3>
<textarea name="attr_powers"></textarea>
</section>
<section>
<h3>weapons</h3>
<textarea name="attr_weapons"></textarea>
</section>
<section>
<h3>equipment</h3>
<textarea name="attr_equipment"></textarea>
</section>
</main>
<main class="settings">
<h1>Settings</h1>
<div class="section columnflex nowrap"><span>Ask for Roll Modifiers?</span>
<select name="attr_modquery" title="@{modquery}">
<option value="+(?{Roll Modifier|0}[Modifiers])">Yes</option>
<option value=" ">No</option>
</select>
</div>
<div class="section rowflex nowrap gap"><span title="@{whisper}">Whisper rolls to GM?</span>
<input name="attr_whisper" title="@{whisper}" type="checkbox" value="/w gm"/>
</div>
<div class="section rowflex nowrap gap"><span>Dice type</span>
<select name="attr_dice" title="@{dice}">
<option value="2d10cf0cs0" selected="selected">2d10 (GODSEND Agenda)</option>
<option value="1d20">d20 (Talislanta, Hellas, Atlantis)</option>
</select>
</div>
</main>
<!--hidden inputs & datalists-->
<!--sheet version-->
<input type="hidden" name="attr_version" value="1.0.0"/>
<input type="hidden" name="attr_" value="0"/>
<datalist id="list">
<option value="human"></option>
<option value="elf"></option>
<option value="dwarf"></option>
<option value="halfling"></option>
</datalist>
<input type="hidden" name="attr_none" value="0"/>
<!--roll templates-->
<rolltemplate class="sheet-rolltemplate-rolls">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#name}}<div class="sheet-name">{{name}}</div>{{/name}}
<!-- {{#name}}<div class="sheet-name">{{name}}</div>{{/name}} -->
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title name subtitle desc color baseroll}}
{{#allprops() title subtitle desc color baseroll}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color baseroll}}
@@ -235,55 +206,17 @@
const int = score => parseInt(score, 10) || 0;
const list = ["str", "dex"];
// tabs
const buttonlist = ["notes","settings","character"];
const buttonlist = ["character", "notes", "settings"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
console.log(button + " was pressed");
setAttrs({
sheetTab: button
});
});
});
/*
on("sheet:opened", function() {
getAttrs(["npc", "sheetTab"], values => {
let npc = int(values["npc"]);
let sheetTab = values["sheetTab"];
console.log("sheetTab: ", sheetTab);
//let page = "character";
if (sheetTab === "character"){
npc = 0;
console.log("sheetTab was char, set NPC=0: ", npc);
}
else if (sheetTab === "npc"){
npc = 1;
console.log("sheetTab was npc, set NPC=1: ", npc);
}
else if (sheetTab === "notes"){
console.log("sheetTab was note");
}
else if (sheetTab === "settings"){
console.log("sheetTab was settings");
}
setAttrs({
npc: npc
});
});
});
on("sheet:opened", function(eventInfo){
setAttrs({
fumble_i18n: getTranslationByKey("critical-fumble"),
success_i18n: getTranslationByKey("critical-success")
});
});
*/
</script>
+9 -9
View File
@@ -4,7 +4,7 @@
"authors": "Andreas J.",
"roll20userid": "1223200",
"preview": "sheet-preview.png",
"instructions": "This is the character sheet for'GODSEND Agenda', by Khepera Publishing.\n\n* [GODSEND-Agenda-3-Beta-Test on DriveThuRPG](https://www.drivethrurpg.com/product/305357/GODSEND-Agenda-3-Beta-Test?affiliate_id=135577)",
"instructions": "This is the character sheet for'GODSEND Agenda', by Khepera Publishing.\n\n* [GODSEND-Agenda-3-Beta-Test](https://www.drivethrurpg.com/product/305357/GODSEND-Agenda-3-Beta-Test?affiliate_id=135577) on DriveThuRPG",
"legacy": false,
"useroptions": [
{
@@ -20,21 +20,21 @@
"type": "select",
"options": [
"No| ",
"Yes|+?{Extra Dice?|0}d6>3cf0cs0[EXTRA DICE]"
"Yes|+(?{Roll Modifier|0}[Modifiers])"
],
"default": " ",
"default": "+(?{Roll Modifier|0}[Modifiers])",
"description": "If active, sheet will as for dice modifiers before every roll."
},
{
"attribute": "skillcolor",
"displayname": "",
"attribute": "dice",
"displayname": "Base dice for rolls",
"type": "select",
"options": [
"No| ",
"Yes|"
"2d10 (GODSEND)|2d10cf0cs0",
"1d20 (Talislanta, Hellas, Atlantis)|1d20"
],
"default": " ",
"description": ""
"default": "2d10cf0cs0",
"description": "Choose what dice is used of the rolls from the sheet. GODSEND Agenda uses '2d10', while some other variations like Talislanta, Hellas & Atlantis use a 'd20'."
}
]
}
+1 -1
View File
@@ -1,6 +1,6 @@
// main sheet code
include src/pug/core.html
include src/pug/core.pug
//hidden inputs & datalists
include src/pug/data.pug
+6 -45
View File
@@ -2,54 +2,15 @@
const int = score => parseInt(score, 10) || 0;
const list = ["str", "dex"];
// tabs
const buttonlist = ["notes","settings","character"];
const buttonlist = ["character", "notes", "settings"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
console.log(button + " was pressed");
setAttrs({
sheetTab: button
});
});
});
/*
on("sheet:opened", function() {
getAttrs(["npc", "sheetTab"], values => {
let npc = int(values["npc"]);
let sheetTab = values["sheetTab"];
console.log("sheetTab: ", sheetTab);
//let page = "character";
if (sheetTab === "character"){
npc = 0;
console.log("sheetTab was char, set NPC=0: ", npc);
}
else if (sheetTab === "npc"){
npc = 1;
console.log("sheetTab was npc, set NPC=1: ", npc);
}
else if (sheetTab === "notes"){
console.log("sheetTab was note");
}
else if (sheetTab === "settings"){
console.log("sheetTab was settings");
}
setAttrs({
npc: npc
});
});
});
on("sheet:opened", function(eventInfo){
setAttrs({
fumble_i18n: getTranslationByKey("critical-fumble"),
success_i18n: getTranslationByKey("critical-success")
});
});
*/
+126
View File
@@ -0,0 +1,126 @@
//- PUG variables/lists
- var attrs1 = ["con", "dex", "spd", "str", "cr"];
- var attrs2 = ["sha", "int", "per", "wil", "mr"];
- var attrsall = ["con", "dex", "spd", "str", "cr", "sha", "int", "per", "wil", "mr", "none"];
- var pages = ["character", "notes", "settings"];
//- Mixins
mixin attrsrolls(name)
div
button(name=`roll_${name}` value!=`@{whisper}&{template:rolls} {{title=${name} }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{${name}}[${name}]@{modquery}]]}}` type="roll")= name
input(name=`attr_${name}` type="number" title=`@{${name}}` value="")
mixin attrselect
select(name="attr_attribute")
each name in attrsall
option(value=`[[@{${name}}]]`)= name
//- end of mixins
//- sheet code
.tab-buttons.spaced.center
//- <input type="hidden" class="npctoggle" name="attr_npc" value="0">
//- each tab in pages
//_ button(type="action" name=`act_${tab}`) tab
//- <button class="npc" type="action" name="act_npc" >NPC</button>
h1 GODSEND AGENDA
div
span Page selection
select(name="attr_sheetTab")
each tab in pages
option(value=`${tab}`)= tab
.version
span Sheet Version:
span(name="attr_version")
input.tabstoggle(type="hidden" name="attr_sheetTab" value="character")
main.character
section.common
.columnflex.nowrap
label Name
input(name="attr_character_name" title="@{character_name}" type="text")
.columnflex.nowrap
label Species
input(name="attr_species" title="@{species}" type="text")
.columnflex.nowrap
label Archetype
input(name="attr_archetype" title="@{archetype}" type="text")
.columnflex.nowrap
label Renown
input(name="attr_renown" title="@{renown}" type="number")
section.points.rowflex.nowrap.spaced
.rowflex.nowrap
span Body Points
input.txtfield(name="attr_body_points" type="number" value="")
span /
input.txtfield(name="attr_body_points_max" type="number" value="")
.rowflex.nowrap
span Mind Points
input.txtfield(name="attr_mind_points" type="number" value="")
span /
input.txtfield(name="attr_mind_points_max" type="number" value="")
.rowflex.nowrap
span Hero Points
input.txtfield(name="attr_hero_points" title="@{hero_points}" type="number" value="")
span /
input.txtfield(name="attr_hero_points_max" title="@{hero_points_max}" type="number" value="")
.rowflex.nowrap
span Wealth Rating
input.txtfield(name="attr_wealth" title="@{wealth}" type="number" value="")
.rowflex.nowrap
span XP
input.txtfield(name="attr_xp" title="@{xp}" type="number" value="")
input.txtfield(name="attr_xp_max" title="@{xp_max}" type="number" value="")
section.attrs.columnflex.nowrap
h2 Attributes
.rowflex.nowrap.middle.spaced
each name in attrs1
+attrsrolls(name)
.rowflex.nowrap.middle.spaced
each name in attrs2
+attrsrolls(name)
section.skills.columnflex.nowrap
h2 Skills
fieldset.repeating_skills
input(name="attr_name" title="@{name}" type="text")
input(name="attr_level" title="@{level}" type="number")
+attrselect
button(name="roll_roll" value!="@{whisper}&{template:rolls} {{title=@{name} }} {{subtitle=@{character_name} }} {{result= [[@{dice}+@{level}[skill level]+@{attribute}[attribute]@{modquery}]]}}" type="roll")
span(name="attr_name")
section.notes.columnflex.nowrap
h2 Disadvantages
div
span
| personal
input(name="attr_personal" title="@{personal}" type="text")
input(name="attr_personaldice" title="@{personaldice}" type="number" value="")
div
span
| internal
input(name="attr_internal" title="@{internal}" type="text")
input(name="attr_internaldice" title="@{internaldice}" type="number" value="")
div
span
| external
input(name="attr_external" title="@{external}" type="text")
input(name="attr_externaldice" title="@{externaldice}" type="number" value="")
h2 Notes
textarea(name="attr_notes")
main.notes
h1 Notes
each option in ["archetype_description", "powers","weapons","equipment"]
section
h3= option
textarea(name=`attr_${option}`)
main.settings
h1 Settings
.section.columnflex.nowrap
span Ask for Roll Modifiers?
select(name="attr_modquery" title="@{modquery}")
option(value="+(?{Roll Modifier|0}[Modifiers])") Yes
option(value=" ") No
.section.rowflex.nowrap.gap
span(title="@{whisper}") Whisper rolls to GM?
input(name="attr_whisper" title="@{whisper}" type="checkbox" value="/w gm")
.section.rowflex.nowrap.gap
span Dice type
select(name="attr_dice" title="@{dice}")
option(value="2d10cf0cs0" selected)= '2d10 (GODSEND Agenda)'
option(value="1d20")= 'd20 (Talislanta, Hellas, Atlantis)'
+5 -5
View File
@@ -2,10 +2,10 @@
//sheet version
input(type="hidden" name="attr_version" value="1.0.0")
input(type="hidden" name="attr_none" value="0")
input(type="hidden" name="attr_" value="0")
//- - var = ["lore", "crafting", "dwarf", "halfling"];
datalist#list
each item in ["human", "elf", "dwarf", "halfling"]
option(value=`${item}`)
//- datalist#skillsgodsend
//- each item in
//- option(value=`${item}`)
+2 -2
View File
@@ -3,11 +3,11 @@
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#name}}<div class="sheet-name">{{name}}</div>{{/name}}
<!-- {{#name}}<div class="sheet-name">{{name}}</div>{{/name}} -->
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title name subtitle desc color baseroll}}
{{#allprops() title subtitle desc color baseroll}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color baseroll}}
+33 -234
View File
@@ -8,14 +8,13 @@
--mythic-dark-red: #4a0004;
--mythic-light-red: #ac3f2b;
--mythic-red: #a83521;
overflow: clip;
}
.version{
color: black;
font-weight: bold;
float: right;
margin: -16px 20px;
margin: -31px 13px;
}
.capital,
@@ -120,8 +119,6 @@
/* ------- Buttons ---------- */
@@ -178,6 +175,23 @@
#SECTIONS
\*------------------------------------*/
/* page selection */
div.tab-buttons{
display: flex;
gap: 30px;
border: 2px black;
border-style: none none solid none;
button{
font-size: 1.5em;
}
select{
width: 90px;
}
}
/* --------------- Universal Section ------------------- */
.border{
@@ -204,7 +218,7 @@
background: white;
opacity: 0.9;
min-height: 90%;
max-width: 800px;
max-width: 750px;
}
.flex-row {
display: flex;
@@ -263,6 +277,20 @@
}
/* Core layout of each page */
main.character {
display: grid;
grid-gap: 4px;
grid-template-columns: 3fr 1fr;
grid-template-rows: 70px 40px 140px auto;
grid-template-areas:"common common"
"points points"
"attrs attrs"
"skills notes";
width: 800px;
height: 1300px;
position: relative;
/* Section specific */
section.common{
grid-area: common;
@@ -283,22 +311,6 @@
background-color: #ccc;
}
}
/* Core layout of each page */
main.character {
display: grid;
grid-gap: 4px;
grid-template-columns: 3fr 1fr;
grid-template-rows: 70px 40px 100px auto;
grid-template-areas:"common common"
"points points"
"attrs attrs"
"skills notes";
width: 800px;
height: 1300px;
position: relative;
}
main.notes {
@@ -315,81 +327,6 @@
position: relative;
}
/* -------------------------- Pages Specific Layout--------------------- */
/* -------------------------- Page 2/Notes --------------------- */
main.npc {
textarea{
height: 140px;
}
}
/* -------------------------- Page 3/Settings ------------------ */
main.settings {
input[type="number"]{
height: 24px;
}
span.dice{
margin-top: 5px;
}
}
/* -------------------------- Page 4/NPC ------------------ */
main.npc{
* {
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
}
h3{
text-align: center;
}
.mookgrid{
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(4, 1fr) 3fr;
place-items: center;
.orange {
background-color: orange;
font-size: 1.3em;
place-self: stretch;
}
.name {
grid-column: span 5;
label{
width: 40px;
}
input{
font-size: 1.7em;
text-align: center;
margin-bottom: 5px;
}
}
.al{
grid-column: span 2;
}
.notes{
grid-column: span 5;
background-color: LemonChiffon;
}
}
}
/*------------------------------------*\
#PAGE LAYOUT/ PAGE BUTTONS
\*------------------------------------*/
@@ -403,150 +340,12 @@
main.settings {
display: none;
}
/*
main.npc,
button[type="action"].npc,
button[type="action"].pc,
input.tabstoggle[value="npc"] ~ main.npc,
*/
/* show the selected page */
input.tabstoggle[value="character"] ~ main.character,
input.tabstoggle[value="notes"] ~ main.notes,
input.tabstoggle[value="settings"] ~ main.settings {
display: grid;
}
/* shows/hides page buttons */
/*
input.npctoggle[value="0"] ~ button[type="action"].pc,
input.npctoggle[value="1"] ~ button[type="action"].npc{
display: flex;
} */
div.tab-buttons{
display: flex;
gap: 10px;
button{
font-size: 1.5em;
}
}
}
/* mobile styling */
@media only screen and (max-width: 480px) {
.charsheet{
button[type=roll].d6-dice::before { /*new die changes die roller to d6*/
content: '';
}
main.character {
display: grid;
grid-gap: 4px;
grid-template-columns: 13fr 9fr;
grid-template-rows: 1fr minmax(0.3fr, 2.5fr) 1.5fr 8fr 3fr 2fr 2fr 2fr 2fr 1fr;
grid-template-areas:"common common "
"archetype archetype "
"attributes attributes"
"skills skills "
"powers powers "
"weapons weapons "
"armor armor "
"stress stress "
"equipment equipment "
"rules rules ";
width: 480px;
height: 1800px;
position: relative;
}
div.archetype {
width: 400px;
details div{
flex-direction: column;
}
textarea.featuredesc{
width: 90%;
}
}
div.attributes {
flex-wrap: wrap;
label.title{
text-align: center;
min-width: 450px;
width: 450px;
}
div.rowflex.nowrap.middle{
flex-wrap: wrap;
width: 350px;
}
}
div.skills {
div.rowflex{
flex-direction: column;
}
div.skillgrid{
display: grid;
padding: 5px;
grid-template-rows: repeat(21, 1fr);
grid-template-columns: 3fr 2fr;
width: 400px;
height: 800px;
}
button[type="roll"].red{
width: 170px;
}
}
button[type="roll"].skills{
font-size: 14px;
padding: 0px;
margin: 0px;
width: 145px;
height: 25px;
border: 2px solid white;
color: var(--mythic-light-red);
text-shadow: none;
}
button[type="roll"].skills:hover{
font-size: 14px;
padding: 0px;
margin: 0px;
width: 145px;
height: 25px;
border: 2px solid black;
border-radius: 9px;
color: var(--mythic-light-red);
text-shadow: none;
}
button[type="roll"].skills:hover::after{
content: '';
}
div.skills{
button[type="roll"].special{
width: 25px;
color: var(--mythic-light-red);
}
button[type="roll"].special:hover{
width: 25px;
color: var(--mythic-light-red);
}
button[type="roll"].special::after{
content: 'd6';
}
}
}
}