Feast of Legends: New sheet added. Includes roll buttons for main stats, and stat bonuses are calculated automaticly. (#5529)

This commit is contained in:
Andreas J
2019-10-07 11:11:16 -05:00
committed by Cassie Levett
parent e117ed507f
commit f976725c41
4 changed files with 509 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

+305
View File
@@ -0,0 +1,305 @@
/*------------------------------------*\
#GENERAL
\*------------------------------------*/
/* --------- Content positioning ------------- */
.sheet-flex-center {
display: flex;
align-items: center;
}
.sheet-flex-middle {
display: flex;
justify-content: center;
}
.sheet-flex-down {
flex-flow: column nowrap;
}
.sheet-section {
padding: 5px;
min-height: 90%;
}
/* --------- Text ------------- */
span.sheet-bold{
font-weight: 800;
font-size: medium;
}
label {
margin: 5px 0px 5px 0px;
font-size: 1.1em;
}
/* --------- Inputs ------------- */
input[type="text"] {
background-color: transparent;
border-style: none none solid none;
border-color: black;
}
input[type="number"] {
background-color: transparent;
border: none;
}
textarea {
width: 85%;
height: 70%;
background-color: transparent;
}
input[type="checkbox"].sheet-checkbox {
border-style: solid black;
border-radius: 0px;
}
/* -----Hides up/down buttons on numberfields that don't need them ---*/
input[type=number].sheet-ref::-webkit-inner-spin-button,
input[type=number].sheet-ref::-webkit-outer-spin-button,
input[type=number].sheet-txtfield::-webkit-inner-spin-button,
input[type=number].sheet-txtfield::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number].sheet-ref,
input[type=number].sheet-txtfield {
-moz-appearance: textfield;
}
/* Buttons */
button[type="roll"]{
color: black;
height: 30px;
width: 30px;
margin-left: 15px;
}
button[type="roll"]::before{
font-size: 1.4em;
}
/*------------------------------------*\
#SECTIONS
\*------------------------------------*/
div.sheet-main {
display: grid;
grid-gap: 6px;
grid-template-columns: 2.5fr 1fr 3.5fr;
grid-template-rows: 2fr 1fr 2fr 1fr 3fr 1fr 1fr 2fr;
grid-template-areas:"logo logo name"
"logo logo bio"
"stats stats bio"
"stats stats gold"
"stats stats load"
"stats stats skilled"
"resistance resistance order-skills"
"resistance resistance order-skills";
width: 650px;
height: 900px;
background-image: url(https://i.imgur.com/qKceron.jpg);
background-size: 650px 900px;
background-repeat: no-repeat;
}
/* LOGO SECTION */
div.sheet-logo{
grid-area: logo;
background-image: url(https://i.imgur.com/N8oNFQ9.jpg);
background-size: 295px 180px;
background-repeat: no-repeat;
margin-left: 20px;
margin-top: 20px;
}
/* NAME SECTION */
div.sheet-name{
grid-area: name;
padding-top: 35px;
}
div.sheet-name div.sheet-section-small{
background-image: url(https://i.imgur.com/ia9MOUx.jpg);
background-size: contain;
background-repeat: no-repeat;
height: 50px;
width: 290px;
}
div.sheet-name label{
width: 50px;
padding-left: 15px;
}
div.sheet-name input{
width: 180px;
}
/* STATS SECTION */
div.sheet-stats{
grid-area: stats;
margin-left: 15px;
}
div.sheet-stats div.sheet-stat-block{
background-image: url(https://i.imgur.com/i0fqhxv.jpg);
background-repeat: no-repeat;
background-size: contain;
height: 65px;
width: 290px;
}
div.sheet-stats div.sheet-stat-block label{
width: 90px;
padding-left: 10px;
}
div.sheet-stats input,
div.sheet-stats span{
height: 45px;
width: 60px;
font-size: 20px;
font-weight: 600;
text-align: center;
padding-left: 20px;
}
div.sheet-stats span{
padding-top: 15px;
padding-left: 10px;
}
/* RESITANCE SECTION */
div.sheet-resistance{
grid-area: resistance;
background-image: url(https://i.imgur.com/SlEHxEm.jpg);
background-size: 290px 170px;
background-repeat: no-repeat;
margin-left: 20px;
margin-bottom: 20px;
}
div.sheet-resistance label{
width: 110px;
text-align: center;
}
div.sheet-resistance div{
padding-bottom: 25px;
}
div.sheet-resistance input{
width: 150px;
margin: 3px 0px 3px 0px;
}
div.sheet-resistance hr {
display: block;
margin-top: 0.5em;
margin-bottom: 0.5em;
margin-left: auto;
margin-right: auto;
border-style: solid;
border-width: 2px;
border-color: black;
width: 110px;
}
/* BIO SECTION */
div.sheet-bio{
grid-area: bio;
background-image: url(https://i.imgur.com/SlEHxEm.jpg);
background-size: 290px 195px;
background-repeat: no-repeat;
padding-right: 25px;
}
div.sheet-bio label{
width:60px;
margin-top: 0px;
}
/* GOLD SECTION */
div.sheet-gold{
grid-area: gold;
background-image: url(https://i.imgur.com/ia9MOUx.jpg);
background-size: 290px 60px;
background-repeat: no-repeat;
padding-bottom: 20px;
}
div.sheet-gold label{
width: 50px;
margin-left: 15px;
}
div.sheet-gold input[type=number]{
width: 120px;
}
/* LOAD SECTION */
div.sheet-load{
grid-area: load;
background-image: url(https://i.imgur.com/SlEHxEm.jpg);
background-size: 290px 195px;
background-repeat: no-repeat;
padding-right: 25px;
}
div.sheet-load label{
width:60px;
margin-top: 0px;
}
/* SKILLED SECTION */
div.sheet-skilled{
grid-area: skilled;
background-image: url(https://i.imgur.com/ia9MOUx.jpg);
background-size: 290px 60px;
background-repeat: no-repeat;
padding-bottom: 25px;
}
div.sheet-skilled label{
width: 90px;
padding-left: 10px;
}
div.sheet-skilled input{
width: 160px;
}
/* ORDER SKILL SECTION */
div.sheet-order-skills{
grid-area: order-skills;
background-image: url(https://i.imgur.com/SlEHxEm.jpg);
background-size: 290px 185px;
background-repeat: no-repeat;
padding-right: 25px;
}
div.sheet-order-skills label{
width:120px;
margin: 3px 0px 2px;
}
+196
View File
@@ -0,0 +1,196 @@
<div class="main">
<!-- LOGO SECTION -->
<div class="logo section"></div>
<!-- NAME SECTION -->
<div class="name section">
<div class="section-small flex-center">
<label>NAME: </label>
<input name="attr_character_name" type="text">
</div>
<div class="section-small flex-center">
<label>ORDER: </label>
<input name="attr_order" type="text">
</div>
</div>
<!-- MAIN STAT SECTION -->
<div class="stats section">
<div class="stat-block flex-center">
<label>STRENGTH</label>
<input name="attr_strength" type="number" value="2">
<span name="attr_strength_bonus"></span>
<button name="roll_strength" type="roll" value="&{template:default} {{name=Strength}} {{Result=[[d20+(@{strength_bonus})]]}}"></button>
</div>
<div class="stat-block flex-center">
<label>INTELLIGENCE</label>
<input name="attr_intelligence" type="number" value="">
<span name="attr_intelligence_bonus"></span>
<button name="roll_intelligence" type="roll" value="&{template:default} {{name=Intelligence}} {{Result=[[d20+(@{intelligence_bonus})]]}}"></button>
</div>
<div class="stat-block flex-center">
<label>CHARM</label>
<input name="attr_charm" type="number" value="">
<span name="attr_charm_bonus"></span>
<button name="roll_charm" type="roll" value="&{template:default} {{name=Charm}} {{Result=[[d20+(@{charm_bonus})]]}}"></button>
</div>
<div class="stat-block flex-center">
<label>ARCANA</label>
<input name="attr_arcana" type="number" value="">
<span name="attr_arcana_bonus"></span>
<button name="roll_arcana" type="roll" value="&{template:default} {{name=Arcana}} {{Result=[[d20+(@{arcana_bonus})]]}}"></button>
</div>
<div class="stat-block flex-center">
<label>GRACE</label>
<input name="attr_grace" type="number" value="">
<span name="attr_grace_bonus"></span>
<button name="roll_grace" type="roll" value="&{template:default} {{name=Grace}} {{Result=[[d20+(@{grace_bonus})]]}}"></button>
</div>
<div class="stat-block flex-center">
<label>DEFENSE</label>
<input name="attr_defense" type="number" value="11">
<input name="attr_defense_bonus" type="number" value="" class="ref" disabled="true">
</div>
<div class="stat-block flex-center">
<label>HIT POINTS</label>
<input name="attr_hit_points" type="number" value="">
<input name="attr_hit_points_max" type="number" value="">
</div>
</div>
<!-- RESISTANCE/WEAKNESS/ADVANTAGE SECTION -->
<div class="resistance section flex-center">
<div>
<label>Resistance/</label>
<label>Weakness</label>
<hr>
<label>Advantage/</label>
<label>Disadvantage</label>
</div>
<div>
<input name="attr_resistance1" type="text">
<input name="attr_resistance2" type="text">
<input name="attr_resistance3" type="text">
<input name="attr_resistance4" type="text">
</div>
</div>
<!-- BIO SECTION -->
<div class="bio section flex-center flex-middle flex-down">
<label>Bio</label>
<textarea name="attr_bio" placeholder="Bio"></textarea>
</div>
<!-- GOLD SECTION-->
<div class="gold section flex-center">
<label>Gold:</label>
<input name="attr_gold" type="number" value="200">
</div>
<!-- LOAD SECTION -->
<div class="load section flex-center flex-middle flex-down">
<label>Load</label>
<textarea name="attr_load" placeholder="Load"></textarea>
</div>
<!-- SKILLED WITH SECTION -->
<div class="skilled section flex-center">
<label>Skilled with: </label>
<input name="attr_skilled_with" type="text">
</div>
<!-- ORDER SKILL SECTION -->
<div class="order-skills section flex-center flex-down">
<label>Order Skills</label>
<textarea name="attr_order_skills" placeholder="Order Skills"></textarea>
</div>
</div>
<input name="attr_strength_bonus" type="hidden" value="0">
<input name="attr_intelligence_bonus" type="hidden" value="0">
<input name="attr_charm_bonus" type="hidden" value="0">
<input name="attr_arcana_bonus" type="hidden" value="0">
<input name="attr_grace_bonus" type="hidden" value="0">
<!-- ---------------------------SHEET WORKERS----------------- -->
<script type="text/worker">
var attr_base = ["strength_base","intelligence_base","charm_base","arcana_base","grace_base"];
var attr_bonus = ["strength_bonus","intelligence_bonus","charm_bonus","arcana_bonus","grace_bonus"];
const stats = ["strength","intelligence","charm","arcana","grace"];
stats.forEach(stat => {
on(`change:${stat}`, () => {
getAttrs([stat], values => {
const stat_base = parseInt(values[stat], 10)||0;
console.log(stat_base);
if(stat_base == "2" || stat_base == "3" || stat_base == "4"){
const stat_bonus = "-2"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base == "5" || stat_base == "6"){
const stat_bonus = "-1"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base == "7" || stat_base == "8"){
const stat_bonus = "0"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base == "9" || stat_base == "10" || stat_base == "11" || stat_base == "12"){
const stat_bonus = "+1"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base == "13" || stat_base == "14" || stat_base == "15"){
const stat_bonus = "+2"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base == "16"){
const stat_bonus = "+3"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
else if(stat_base >= "17"){
const stat_bonus = "+4"
setAttrs({
[`${stat}_bonus`]: stat_bonus
});
}
});
});
});
</script>
+8
View File
@@ -0,0 +1,8 @@
{
"html": "feast_of_legends.html",
"css": "feast_of_legends.css",
"authors": "Andreas J.",
"roll20userid": "1223200",
"preview": "FoLpreview.png",
"instructions": "Character Sheet for 'Feast of Legends', a RPG made by Wendy's.\n* [Rulebook](https://www.feastoflegends.com/images/Feast_Of_Legends.pdf)"
}