mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
New Publisher Sheet: Barbaric! by Stellagama Publishing
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# About
|
||||
|
||||
Official Character Sheet for [Barbaric!](https://www.drivethrurpg.com/product/348272/Barbaric) by Stellagama Publishing. Sheet Created by [Andreas J.](https://wiki.roll20.net/Anduh)
|
||||
|
||||
## Sheet Info
|
||||
Basic character sheet for tracking your stats, with roll buttons for Skills, Attacks & Initiative.
|
||||
|
||||
If critical Success or Critical Fumbles are rolled with Skills or Attacks, the crit will be highlighted in the result.
|
||||
|
||||
Sheet can be translated to other languages using [CrowdIn](https://wiki.roll20.net/CrowdIn).
|
||||
|
||||
### Roll Template
|
||||
|
||||
Has built in roll templates that can be used for creating customize roll results, such as sorcery.
|
||||
|
||||
**base format**
|
||||
`&{template:rolls} {{title=the}} {{subtitle= optional subtitle }} {{color= color of title background, default black}} {{anything= anything, can have as many of these sections}} {{desc= optional section that's full width of the template, good for descriptions}}`
|
||||
|
||||
|
||||
|
||||
**Ex 1**
|
||||
How the base roll for crafting looks like:
|
||||
`&{template:rolls} {{title=craft}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{craft} ]]}} {{baseroll=$[[0]]}}`
|
||||
|
||||
**Ex 2**
|
||||
|
||||
`&{template:rolls} {{title=Poison Cloud}} {{color=green}} {{damage=[[3d6]]}} {{desc=poison cloud spreads in the surrounding}}`
|
||||
|
||||
|
||||
**Ex 3**
|
||||
|
||||
`&{template:rolls} {{title=Read/Sense Magic}} {{subtitle= @{selected|character_name} }} {{color=purple}} {{^{roll-i18n}[[ [[2d6]]+@{selected|sorcery} ]]}} {{baseroll=$[[0]]}} {{desc=Succeeds on a Sorcery 8+ throw}}`
|
||||
|
||||
# Contribute
|
||||
|
||||
Compile `barbaric.scss` from the `src` folder to get the barbaric.css, don't edit barbaric.css directly.
|
||||
Executable
+329
@@ -0,0 +1,329 @@
|
||||
/*------------------------------------------------*\
|
||||
#GENERAL
|
||||
\*------------------------------------------------*/
|
||||
@import url("https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz|Anton&display=swap");
|
||||
/* duplicate class to catch import bug */
|
||||
.charsheet * {
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
}
|
||||
|
||||
.charsheet {
|
||||
/* --------- Text ------------- */
|
||||
/* --------- Inputs ------------- */
|
||||
/* -----Hides up/down buttons on numberfields that don't need them ---*/
|
||||
/* ------- Buttons ---------- */
|
||||
/*-----------------------------------------------------------------*\
|
||||
#SECTIONS
|
||||
\*-----------------------------------------------------------------*/
|
||||
/* --------- General Section Styling ------------- */
|
||||
}
|
||||
.charsheet * {
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
}
|
||||
.charsheet label, .charsheet div, .charsheet span, .charsheet button[type=roll] {
|
||||
text-transform: capitalize;
|
||||
flex-grow: 0;
|
||||
align-self: center;
|
||||
}
|
||||
.charsheet div, .charsheet span, .charsheet label {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
.charsheet textarea, .charsheet input[type=number], .charsheet input[type=text] {
|
||||
flex-grow: 6;
|
||||
flex-shrink: 1;
|
||||
align-self: center;
|
||||
}
|
||||
.charsheet label {
|
||||
padding-left: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
.charsheet input[type=text],
|
||||
.charsheet input[type=number] {
|
||||
background-color: transparent;
|
||||
border-style: none none solid none;
|
||||
border-color: black;
|
||||
border-radius: 0px;
|
||||
width: fit-content;
|
||||
padding: 0.5em;
|
||||
margin: auto 5px 5px 5px;
|
||||
max-height: 50px;
|
||||
}
|
||||
.charsheet input[type=number] {
|
||||
text-align: center;
|
||||
}
|
||||
.charsheet textarea {
|
||||
background-color: transparent;
|
||||
width: 95%;
|
||||
height: max-content;
|
||||
}
|
||||
.charsheet input[type=checkbox].checkbox {
|
||||
border-style: solid black;
|
||||
border-radius: 0px;
|
||||
height: auto;
|
||||
}
|
||||
.charsheet textarea:focus,
|
||||
.charsheet input[type=text]:focus,
|
||||
.charsheet input[type=number]:focus {
|
||||
background-color: #cab7b7;
|
||||
}
|
||||
.charsheet textarea.warn-missing:placeholder-shown,
|
||||
.charsheet input[type=text].warn-missing:placeholder-shown,
|
||||
.charsheet input[type=number].warn-missing:placeholder-shown {
|
||||
background-color: #EAC9D1;
|
||||
}
|
||||
.charsheet input[type=number].txtfield::-webkit-inner-spin-button,
|
||||
.charsheet input[type=number].txtfield::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
.charsheet input[type=number].txtfield {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
.charsheet button[type=roll], .charsheet button[type=roll].d6, .charsheet button[type=roll].blank {
|
||||
text-shadow: none;
|
||||
background-position: 0 -40px;
|
||||
background-color: #d9d9d9;
|
||||
border: 2px;
|
||||
}
|
||||
.charsheet button[type=roll].blank::before {
|
||||
content: "";
|
||||
height: min-content;
|
||||
text-align: center;
|
||||
}
|
||||
.charsheet button[type=roll].d6::before {
|
||||
/*new die changes die roller to d6*/
|
||||
font-family: "dicefontd6";
|
||||
content: "F ";
|
||||
}
|
||||
.charsheet button[type=roll].d6:hover, .charsheet button[type=roll].blank:hover, .charsheet button[type=roll]:hover {
|
||||
border: 2px solid black;
|
||||
background-color: #7e7d7d;
|
||||
border-radius: 10px;
|
||||
text-shadow: none;
|
||||
}
|
||||
.charsheet section, .charsheet .section {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
align-content: space-around;
|
||||
}
|
||||
.charsheet .border {
|
||||
border: solid 2px black;
|
||||
}
|
||||
.charsheet .flex-center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.charsheet .flex-middle {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.charsheet .flex-col {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
}
|
||||
.charsheet .flex-row {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
}
|
||||
.charsheet main {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 4fr 4fr 100px;
|
||||
grid-template-rows: 1fr 5fr 5fr;
|
||||
grid-template-areas: "name name name name " "skills traits combat xp " "equip equip sorcery sorcery";
|
||||
grid-gap: 4px;
|
||||
width: 1200px;
|
||||
/* Defines the width and height of the sheet */
|
||||
height: 800px;
|
||||
background-color: whitesmoke;
|
||||
/* NAME SECTION */
|
||||
}
|
||||
.charsheet main section.name {
|
||||
grid-area: name;
|
||||
}
|
||||
.charsheet main section.name input[type=checkbox] {
|
||||
height: auto;
|
||||
transform: scale(1.1);
|
||||
}
|
||||
.charsheet main section.name .pad {
|
||||
padding: 8px;
|
||||
}
|
||||
.charsheet main section.skills {
|
||||
grid-area: skills;
|
||||
}
|
||||
.charsheet main section.skills .flex-row {
|
||||
width: 90%;
|
||||
}
|
||||
.charsheet main section.skills .flex-row input {
|
||||
width: 25%;
|
||||
margin: 0 10px;
|
||||
border: 4px solid black;
|
||||
border-radius: 22px;
|
||||
font-size: 1.4em;
|
||||
padding: 6px;
|
||||
}
|
||||
.charsheet main section.skills .flex-row button {
|
||||
width: 55%;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
.charsheet main section.traits {
|
||||
grid-area: traits;
|
||||
}
|
||||
.charsheet main section.combat {
|
||||
grid-area: combat;
|
||||
}
|
||||
.charsheet main section.combat .flex-row.section {
|
||||
width: 90%;
|
||||
height: 90%;
|
||||
}
|
||||
.charsheet main section.combat .flex-row.section button {
|
||||
height: 35%;
|
||||
}
|
||||
.charsheet main section.combat div.armor {
|
||||
flex-grow: 1;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon {
|
||||
display: grid;
|
||||
grid-template-columns: 30px 180px 42px 42px auto;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-gap: 5px;
|
||||
grid-row-gap: 10px;
|
||||
flex-grow: 1;
|
||||
width: 560px;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon span {
|
||||
width: 70px;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon button {
|
||||
width: 18px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon input[type=text].weapon-name {
|
||||
width: 170px;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon input[type=text].weapon-notes {
|
||||
width: 235px;
|
||||
}
|
||||
.charsheet main section.combat div.grid-weapon input[type=text].dmg {
|
||||
width: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
.charsheet main section.equip {
|
||||
grid-area: equip;
|
||||
}
|
||||
.charsheet main section.sorcery {
|
||||
grid-area: sorcery;
|
||||
}
|
||||
.charsheet main section.xp {
|
||||
grid-area: xp;
|
||||
display: flex;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.charsheet main section.xp input[type=checkbox] {
|
||||
height: 23px;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
.charsheet main section.xp span {
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*------------------------------------*\
|
||||
#ROLL TEMPLATES
|
||||
\*------------------------------------*/
|
||||
/* Smaller margins - remove these if you want the huge default left margin */
|
||||
.withoutavatars .sheet-rolltemplate-rolls {
|
||||
margin-left: -7px;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-rolls {
|
||||
margin-left: -37px;
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
/* Header formatting - title and subtitle */
|
||||
/* example colors */
|
||||
/* alt template colors */
|
||||
/* Allprops part */
|
||||
/* Left column */
|
||||
/* Make even-numbered rows grey */
|
||||
/* Description field */
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container {
|
||||
border: 3px solid black;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-header {
|
||||
background-color: var(--header-bg-color, #a83521);
|
||||
color: var(--header-text-color, #FFF);
|
||||
text-align: left;
|
||||
text-transform: capitalize;
|
||||
padding: 5px;
|
||||
border-bottom: 2px solid black;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-title {
|
||||
font-size: 1.4em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-subtitle {
|
||||
font-size: 1em;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container {
|
||||
/* the default colors */
|
||||
--header-bg-color: #a83521;
|
||||
--header-text-color: #FFF;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-green {
|
||||
--header-bg-color: #008000;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-blue {
|
||||
--header-bg-color: #0000e0;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-gold {
|
||||
--header-bg-color: #ffdd1f;
|
||||
--header-text-color: #000;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-purple {
|
||||
--header-bg-color: #c200c2;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-black {
|
||||
--header-bg-color: #000;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-container.sheet-color-white {
|
||||
--header-bg-color: #FFF;
|
||||
--header-text-color: #000;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-content {
|
||||
display: grid;
|
||||
background: #FFF;
|
||||
/* Header formatting - modify the column layout below */
|
||||
grid-template-columns: auto auto;
|
||||
/* Line height to match default roll template */
|
||||
line-height: 1.4em;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-content > div {
|
||||
padding: 5px;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-content .sheet-key {
|
||||
font-weight: bold;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-content :nth-child(4n+3),
|
||||
.sheet-rolltemplate-rolls .sheet-content :nth-child(4n) {
|
||||
background: #EEE;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-desc, .sheet-rolltemplate-rolls .sheet-crit, .sheet-rolltemplate-rolls .sheet-fail {
|
||||
grid-column: span 2;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-crit, .sheet-rolltemplate-rolls .sheet-fail {
|
||||
font-weight: bold;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-crit {
|
||||
color: green;
|
||||
}
|
||||
.sheet-rolltemplate-rolls .sheet-fail {
|
||||
color: red;
|
||||
}
|
||||
@@ -0,0 +1,225 @@
|
||||
<main>
|
||||
<!-- name -->
|
||||
<section class="name flex-row">
|
||||
|
||||
<span class="border flex-col">
|
||||
<span data-i18n="name" >Name</span>
|
||||
<input class="bold" type="text" name="attr_character_name" />
|
||||
</span>
|
||||
<span class="border flex-col">
|
||||
<span data-i18n="heritage" >heritage</span>
|
||||
<input name="attr_heritage" type="text" list="heritage" value=""/>
|
||||
</span>
|
||||
<span class="border flex-col">
|
||||
<span data-i18n="endurance" >endurance</span>
|
||||
<input name="attr_endurance" type="number" value=""/>
|
||||
</span>
|
||||
<span class="border flex-col">
|
||||
<span data-i18n="lifeblood" >lifeblood</span>
|
||||
<input name="attr_lifeblood" type="number" value=""/>
|
||||
</span>
|
||||
<span class="border flex-col pad">
|
||||
<span data-i18n="fatigued-" >Fatigued?</span>
|
||||
<input name="attr_fatigue" type="checkbox" value="1"/>
|
||||
</span>
|
||||
|
||||
<span class="border pad">
|
||||
<span data-i18n="hero-points" >hero points</span>
|
||||
<input name="attr_heropoints" type="number" value=""/>
|
||||
</span>
|
||||
<span class="border flex-col">
|
||||
<span data-i18n="player">Player</span>
|
||||
<input name="attr_player_name" type="text" value=""/>
|
||||
</span>
|
||||
</section>
|
||||
|
||||
<section class="skills flex-col">
|
||||
<label data-i18n="skills" >skills</label>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_combat" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_combat" class="blank" type="roll" value="&{template:rolls} {{title=combat}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}=[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="combat" >combat</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_craft" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_craft" class="blank" type="roll" value="&{template:rolls} {{title=craft}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{craft} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="craft" >craft</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_lore" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_lore" class="blank" type="roll" value="&{template:rolls} {{title=lore}} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{lore} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="lore" >lore</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_physical" class="txtfield" value="" placeholder="0">
|
||||
<button name="roll_physical" class="blank" type="roll" value="&{template:rolls} {{title=Physical}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{physical} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="physical" >physical</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_social" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_social" class="blank" type="roll" value="&{template:rolls} {{title=social}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{social} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="social" >social</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_sorcery" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_sorcery" class="blank" type="roll" value="&{template:rolls} {{title=sorcery}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{sorcery} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="sorcery" >sorcery</span></button>
|
||||
</div>
|
||||
<div class="section flex-row">
|
||||
<input type="number" name="attr_stealth" class="txtfield warn-missing" value="" placeholder="0">
|
||||
<button name="roll_stealth" class="blank" type="roll" value="&{template:rolls} {{title=stealth}} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[ [[2d6]]+@{stealth} ]]}} {{baseroll=$[[0]]}}"><span data-i18n="stealth" >stealth</span></button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="border traits">
|
||||
<label for="" data-i18n="traits" >traits</label>
|
||||
<textarea name="attr_traits" value=""/></textarea>
|
||||
</section>
|
||||
|
||||
<section class="combat">
|
||||
|
||||
<div class="flex-row section">
|
||||
<button name="roll_" class="d6" type="roll" value="&{template:rolls} {{title=^{initiative} }} {{subtitle=@{character_name} }} {{color=black}} {{^{roll-i18n}[[2d6+(@{combat} &{tracker}]]}}" ><span data-i18n="initative" >Initiative</span></button>
|
||||
<div class="armor border">
|
||||
<label for="" data-i18n="armor" >armor</label>
|
||||
<input name="attr_armorname" type="text" value=""/>
|
||||
<input name="attr_armor" type="number" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border grid-weapon">
|
||||
<span></span>
|
||||
<span data-i18n="weapons" >weapons</span>
|
||||
<span data-i18n="range" >range</span>
|
||||
<span data-i18n="damage" >damage</span>
|
||||
<span data-i18n="notes" >notes</span>
|
||||
|
||||
<button name="roll_weapon1" class="d6" type="roll" value="&{template:rolls} {{title=^{weapon}: @{wpn1name} }} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{range}= @{wpn1range} }} {{^{roll-i18n}=[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}} {{^{damage}= [[@{wpn1dmg}6]] }}"></button>
|
||||
<input name="attr_wpn1name" class="weapon-name" type="text" value=""/>
|
||||
<input name="attr_wpn1range" class="dmg" type="text" value=""/>
|
||||
<input name="attr_wpn1dmg" class="dmg" placeholder="2d" type="text" value=""/>
|
||||
<input name="attr_wpn1notes" class="weapon-notes" type="text" value=""/>
|
||||
|
||||
<button name="roll_weapon2" class="d6" type="roll" value="&{template:rolls} {{title=^{weapon}: @{wpn2name} }} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{range}= @{wpn2range} }} {{^{roll-i18n}[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}} {{^{damage}= [[@{wpn2dmg}6]] }}"></button>
|
||||
<input name="attr_wpn2name" class="weapon-name" type="text" value=""/>
|
||||
<input name="attr_wpn2range" class="dmg" type="text" value=""/>
|
||||
<input name="attr_wpn2dmg" class="dmg" placeholder="2d" type="text" value=""/>
|
||||
<input name="attr_wpn2notes" class="weapon-notes" type="text" value=""/>
|
||||
|
||||
<button name="roll_weapon3" class="d6" type="roll" value="&{template:rolls} {{title=^{weapon}: @{wpn3name} }} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{range}= @{wpn3range} }} {{^{roll-i18n}[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}} {{^{damage}= [[@{wpn3dmg}6]] }}"></button>
|
||||
<input name="attr_wpn3name" class="weapon-name" type="text" value=""/>
|
||||
<input name="attr_wpn3range" class="dmg" type="text" value=""/>
|
||||
<input name="attr_wpn3dmg" class="dmg" placeholder="2d" type="text" value=""/>
|
||||
<input name="attr_wpn3notes" class="weapon-notes" type="text" value=""/>
|
||||
|
||||
<button name="roll_weapon4" class="d6" type="roll" value="&{template:rolls} {{title=^{weapon}: @{wpn4name} }} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{range}= @{wpn4range} }} {{^{roll-i18n}[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}} {{^{damage}= [[@{wpn4dmg}6]] }}"></button>
|
||||
<input name="attr_wpn4name" class="weapon-name" type="text" value=""/>
|
||||
<input name="attr_wpn4range" class="dmg" type="text" value=""/>
|
||||
<input name="attr_wpn4dmg" class="dmg" placeholder="2d" type="text" value=""/>
|
||||
<input name="attr_wpn4notes" class="weapon-notes" type="text" value=""/>
|
||||
|
||||
<button name="roll_weapon5" class="d6" type="roll" value="&{template:rolls} {{title=^{weapon}: @{wpn5name} }} {{color=black}} {{subtitle=@{character_name} }} {{color=black}} {{^{range}= @{wpn5range} }} {{^{roll-i18n}[[ [[2d6]]+@{combat} ]]}} {{baseroll=$[[0]]}} {{^{damage}= [[@{wpn5dmg}6]] }}"></button>
|
||||
<input name="attr_wpn5name" class="weapon-name" type="text" value=""/>
|
||||
<input name="attr_wpn5range" class="dmg" type="text" value=""/>
|
||||
<input name="attr_wpn5dmg" class="dmg" placeholder="2d" type="text" value=""/>
|
||||
<input name="attr_wpn5notes" class="weapon-notes" type="text" value=""/>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="border equip">
|
||||
<label for="" data-i18n="equipment" >equipment</label>
|
||||
<textarea name="attr_equipment" value=""/></textarea>
|
||||
</section>
|
||||
|
||||
<section class="border sorcery">
|
||||
<label for="" data-i18n="sorcery-notes" >sorcery/notes</label>
|
||||
<textarea name="attr_sorcery" value=""/></textarea>
|
||||
</section>
|
||||
|
||||
<section class="xp flex-col">
|
||||
<label data-i18n="xp">XP</label>
|
||||
<span data-i18n="experienced">experienced</span>
|
||||
<div>
|
||||
<input type="checkbox" name="attr_experienced1" value="1">
|
||||
<input type="checkbox" name="attr_experienced2" value="1">
|
||||
<input type="checkbox" name="attr_experienced3" value="1">
|
||||
<input type="checkbox" name="attr_experienced4" value="1">
|
||||
<input type="checkbox" name="attr_experienced5" value="1">
|
||||
</div>
|
||||
<span data-i18n="expert">expert</span>
|
||||
<div>
|
||||
<input type="checkbox" name="attr_expert1" value="1">
|
||||
<input type="checkbox" name="attr_expert2" value="1">
|
||||
<input type="checkbox" name="attr_expert3" value="1">
|
||||
<input type="checkbox" name="attr_expert4" value="1">
|
||||
<input type="checkbox" name="attr_expert5" value="1">
|
||||
</div>
|
||||
<span data-i18n="master">master</span>
|
||||
<div>
|
||||
<input type="checkbox" name="attr_master1" value="1">
|
||||
<input type="checkbox" name="attr_master2" value="1">
|
||||
<input type="checkbox" name="attr_master3" value="1">
|
||||
<input type="checkbox" name="attr_master4" value="1">
|
||||
<input type="checkbox" name="attr_master5" value="1">
|
||||
</div>
|
||||
<span data-i18n="grandmster">grandmster</span>
|
||||
<div>
|
||||
<input type="checkbox" name="attr_grandmaster1" value="1">
|
||||
<input type="checkbox" name="attr_grandmaster2" value="1">
|
||||
<input type="checkbox" name="attr_grandmaster3" value="1">
|
||||
<input type="checkbox" name="attr_grandmaster4" value="1">
|
||||
<input type="checkbox" name="attr_grandmaster5" value="1">
|
||||
</div>
|
||||
<span data-i18n="legend">legend</span>
|
||||
<div>
|
||||
<input type="checkbox" name="attr_legend1" value="1">
|
||||
<input type="checkbox" name="attr_legend2" value="1">
|
||||
<input type="checkbox" name="attr_legend3" value="1">
|
||||
<input type="checkbox" name="attr_legend4" value="1">
|
||||
<input type="checkbox" name="attr_legend5" value="1">
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<datalist id="heritage">
|
||||
<option value="Human"></option>
|
||||
<option value="Anunaki"></option>
|
||||
<option value="Apefolk"></option>
|
||||
<option value="Dwarf"></option>
|
||||
<option value="Elf"></option>
|
||||
<option value="Geckofolk"></option>
|
||||
<option value="Lizardfolk"></option>
|
||||
</datalist>
|
||||
|
||||
<!-- ROLL TEMPLATE -->
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-rolls">
|
||||
<div class="sheet-container sheet-color-{{color}}">
|
||||
<div class="sheet-header">
|
||||
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
|
||||
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
|
||||
</div>
|
||||
<div class="sheet-content">
|
||||
{{#allprops() title subtitle desc color baseroll}}
|
||||
<div class="sheet-key">{{key}}</div>
|
||||
<div class="sheet-value">{{value}}</div>
|
||||
{{/allprops() title subtitle desc color baseroll}}
|
||||
{{#rollTotal() baseroll 2}}
|
||||
<div class="sheet-fail">Critical Fumble!</div>
|
||||
{{/rollTotal() baseroll 2}}
|
||||
{{#rollTotal() baseroll 12}}
|
||||
<div class="sheet-crit">Critical Success!</div>
|
||||
{{/rollTotal() baseroll 12}}
|
||||
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<!--
|
||||
// Translation key replacement, didn't work
|
||||
<input name="attr_fumble_i18n" type="hidden" value="fumble">
|
||||
<input name="attr_success_i18n" type="hidden" value="crit success">
|
||||
|
||||
<script type="text/worker">
|
||||
on("sheet:opened", function(eventInfo){
|
||||
setAttrs({
|
||||
fumble_i18n: getTranslationByKey("critical-fumble"),
|
||||
success_i18n: getTranslationByKey("critical-success")
|
||||
});
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"html": "barbaric.html",
|
||||
"css": "barbaric.css",
|
||||
"authors": "Andreas J.",
|
||||
"roll20userid": "1223200",
|
||||
"preview": "barbaric-preview.png",
|
||||
"instructions": "This is the Official character sheet for **Barbaric!** by [Stellagama Publishing](https://www.drivethrurpg.com/browse/pub/9571/Stellagama-Publishing).\n\n* [Readme.md](https://github.com/Roll20/roll20-character-sheets/blob/master/Barbaric/) - sheet instructions\n* [Barbaric!](https://www.drivethrurpg.com/product/348272/Barbaric) - rules",
|
||||
"legacy": false
|
||||
}
|
||||
Executable
+388
@@ -0,0 +1,388 @@
|
||||
/*------------------------------------------------*\
|
||||
#GENERAL
|
||||
\*------------------------------------------------*/
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz|Anton&display=swap');
|
||||
|
||||
/* duplicate class to catch import bug */
|
||||
.charsheet *{
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
}
|
||||
|
||||
.charsheet {
|
||||
|
||||
*{
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
}
|
||||
/* --------- Text ------------- */
|
||||
|
||||
label, div, span, button[type="roll"] {
|
||||
text-transform: capitalize;
|
||||
flex-grow: 0;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
div, span, label{
|
||||
flex-shrink: 1;
|
||||
}
|
||||
textarea, input[type="number"], input[type="text"] {
|
||||
flex-grow: 6;
|
||||
flex-shrink: 1;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
label{
|
||||
padding-left: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/* --------- Inputs ------------- */
|
||||
|
||||
input[type="text"],
|
||||
input[type="number"]{
|
||||
background-color: transparent;
|
||||
border-style: none none solid none;
|
||||
border-color: black;
|
||||
border-radius: 0px;
|
||||
width: fit-content;
|
||||
padding: 0.5em;
|
||||
margin: auto 5px 5px 5px;
|
||||
max-height: 50px;
|
||||
|
||||
}
|
||||
|
||||
input[type="number"]{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
textarea {
|
||||
background-color: transparent;
|
||||
width: 95%;
|
||||
height: max-content;
|
||||
}
|
||||
|
||||
input[type="checkbox"].checkbox {
|
||||
border-style: solid black;
|
||||
border-radius: 0px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
textarea:focus,
|
||||
input[type="text"]:focus,
|
||||
input[type="number"]:focus{
|
||||
background-color: hsla(0.0, 15.2%, 75.5%, 1.0);
|
||||
}
|
||||
|
||||
textarea.warn-missing:placeholder-shown,
|
||||
input[type="text"].warn-missing:placeholder-shown,
|
||||
input[type="number"].warn-missing:placeholder-shown {
|
||||
background-color: #EAC9D1;
|
||||
}
|
||||
|
||||
/* -----Hides up/down buttons on numberfields that don't need them ---*/
|
||||
|
||||
input[type=number].txtfield::-webkit-inner-spin-button,
|
||||
input[type=number].txtfield::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type=number].txtfield {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
|
||||
/* ------- Buttons ---------- */
|
||||
button[type=roll], button[type=roll].d6, button[type=roll].blank {
|
||||
text-shadow: none;
|
||||
background-position: 0 -40px;
|
||||
background-color: #d9d9d9;
|
||||
border: 2px;
|
||||
}
|
||||
|
||||
button[type=roll].blank::before {
|
||||
content: '';
|
||||
height: min-content;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
button[type=roll].d6::before { /*new die changes die roller to d6*/
|
||||
font-family: 'dicefontd6';
|
||||
content: 'F ';
|
||||
}
|
||||
|
||||
button[type=roll].d6:hover, button[type=roll].blank:hover, button[type=roll]:hover{
|
||||
border: 2px solid black;
|
||||
background-color: #7e7d7d;
|
||||
border-radius: 10px;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------*\
|
||||
#SECTIONS
|
||||
\*-----------------------------------------------------------------*/
|
||||
|
||||
|
||||
/* --------- General Section Styling ------------- */
|
||||
section, .section{
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
align-items:center;
|
||||
justify-content: space-around;
|
||||
align-content: space-around;
|
||||
}
|
||||
|
||||
.border{
|
||||
border: solid 2px black;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.flex-middle {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
}
|
||||
|
||||
.flex-row {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
}
|
||||
|
||||
|
||||
main {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 4fr 4fr 100px;
|
||||
grid-template-rows: 1fr 5fr 5fr;
|
||||
grid-template-areas:"name name name name "
|
||||
"skills traits combat xp "
|
||||
"equip equip sorcery sorcery";
|
||||
grid-gap: 4px;
|
||||
width: 1200px;/* Defines the width and height of the sheet */
|
||||
height: 800px;
|
||||
background-color: whitesmoke;
|
||||
|
||||
/* NAME SECTION */
|
||||
|
||||
section.name{
|
||||
grid-area: name;
|
||||
|
||||
input[type="checkbox"]{
|
||||
height: auto;
|
||||
transform: scale(1.1);
|
||||
}
|
||||
.pad{
|
||||
padding: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
section.skills{
|
||||
grid-area: skills;
|
||||
|
||||
.flex-row{
|
||||
width: 90%;
|
||||
|
||||
input{
|
||||
width: 25%;
|
||||
margin: 0 10px;
|
||||
border: 4px solid black;
|
||||
border-radius: 22px;
|
||||
font-size: 1.4em;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
button{
|
||||
width: 55%;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
section.traits{
|
||||
grid-area: traits;
|
||||
}
|
||||
section.combat{
|
||||
grid-area: combat;
|
||||
|
||||
.flex-row.section{
|
||||
width: 90%;
|
||||
height: 90%;
|
||||
|
||||
button{
|
||||
height: 35%;
|
||||
}
|
||||
}
|
||||
|
||||
div.armor{
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
div.grid-weapon{
|
||||
display: grid;
|
||||
grid-template-columns: 30px 180px 42px 42px auto;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-gap: 5px;
|
||||
grid-row-gap: 10px;
|
||||
flex-grow: 1;
|
||||
width: 560px;
|
||||
|
||||
span{
|
||||
width: 70px;
|
||||
}
|
||||
button{
|
||||
width: 18px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
input[type="text"].weapon-name{
|
||||
width: 170px;
|
||||
}
|
||||
input[type="text"].weapon-notes{
|
||||
width: 235px;
|
||||
}
|
||||
input[type="text"].dmg{
|
||||
width: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
section.equip{
|
||||
grid-area: equip;
|
||||
}
|
||||
section.sorcery{
|
||||
grid-area: sorcery;
|
||||
}
|
||||
section.xp{
|
||||
grid-area: xp;
|
||||
display: flex;
|
||||
align-content: flex-start;
|
||||
input[type="checkbox"]{
|
||||
height: 23px;
|
||||
transform: scale(0.8);
|
||||
}
|
||||
span{
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------*\
|
||||
#ROLL TEMPLATES
|
||||
\*------------------------------------*/
|
||||
|
||||
/* Smaller margins - remove these if you want the huge default left margin */
|
||||
|
||||
.withoutavatars .sheet-rolltemplate-rolls {
|
||||
margin-left: -7px;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-rolls {
|
||||
margin-left: -37px;
|
||||
font-family: "Yanone Kaffeesatz";
|
||||
|
||||
.sheet-container {
|
||||
border: 3px solid black;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
/* Header formatting - title and subtitle */
|
||||
.sheet-header {
|
||||
background-color: var(--header-bg-color, #a83521);
|
||||
color: var(--header-text-color, #FFF);
|
||||
text-align: left;
|
||||
text-transform: capitalize;
|
||||
padding: 5px;
|
||||
border-bottom: 2px solid black;
|
||||
}
|
||||
.sheet-title {
|
||||
font-size: 1.4em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.sheet-subtitle {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* example colors */
|
||||
.sheet-container {
|
||||
/* the default colors */
|
||||
--header-bg-color: #a83521;
|
||||
--header-text-color: #FFF;
|
||||
}
|
||||
|
||||
/* alt template colors */
|
||||
.sheet-container.sheet-color-green {
|
||||
--header-bg-color: #008000;
|
||||
}
|
||||
.sheet-container.sheet-color-blue {
|
||||
--header-bg-color: #0000e0;
|
||||
}
|
||||
.sheet-container.sheet-color-gold {
|
||||
--header-bg-color: #ffdd1f;
|
||||
--header-text-color: #000;
|
||||
}
|
||||
.sheet-container.sheet-color-purple {
|
||||
--header-bg-color: #c200c2;
|
||||
}
|
||||
.sheet-container.sheet-color-black {
|
||||
--header-bg-color: #000;
|
||||
}
|
||||
.sheet-container.sheet-color-white {
|
||||
--header-bg-color: #FFF;
|
||||
--header-text-color: #000;
|
||||
}
|
||||
|
||||
/* Allprops part */
|
||||
.sheet-content {
|
||||
display: grid;
|
||||
background: #FFF;
|
||||
/* Header formatting - modify the column layout below */
|
||||
grid-template-columns: auto auto;
|
||||
/* Line height to match default roll template */
|
||||
line-height:1.4em;
|
||||
}
|
||||
.sheet-content > div {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* Left column */
|
||||
.sheet-content .sheet-key {
|
||||
font-weight: bold;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Make even-numbered rows grey */
|
||||
.sheet-content :nth-child(4n+3),
|
||||
.sheet-content :nth-child(4n) {
|
||||
background:#EEE;
|
||||
}
|
||||
|
||||
/* Description field */
|
||||
.sheet-desc, .sheet-crit, .sheet-fail {
|
||||
grid-column: span 2;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
.sheet-crit, .sheet-fail{
|
||||
font-weight: bold;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
.sheet-crit {
|
||||
color: green;
|
||||
}
|
||||
.sheet-fail {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name":"name",
|
||||
"heritage":"heritage",
|
||||
"endurance":"endurance",
|
||||
"lifeblood":"lifeblood",
|
||||
"fatigued-":"Fatigued?",
|
||||
"hero-points":"hero points",
|
||||
"skills":"skills",
|
||||
"combat":"combat",
|
||||
"craft":"craft",
|
||||
"lore":"lore",
|
||||
"physical":"physical",
|
||||
"social":"social",
|
||||
"sorcery":"sorcery",
|
||||
"stealth":"stealth",
|
||||
"traits":"traits",
|
||||
"initative":"Initiative",
|
||||
"armor":"armor",
|
||||
"weapons":"weapons",
|
||||
"weapon":"Weapon",
|
||||
"range":"range",
|
||||
"damage":"damage",
|
||||
"notes":"notes",
|
||||
"equipment":"equipment",
|
||||
"sorcery-notes":"sorcery/notes",
|
||||
"description-short":"desc",
|
||||
"xp":"XP",
|
||||
"experienced":"experienced",
|
||||
"expert":"expert",
|
||||
"master":"master",
|
||||
"grandmster":"grandmster",
|
||||
"legend":"legend",
|
||||
"critical-fumble":"Critical Fumble!",
|
||||
"critical-success":"Critical Success!",
|
||||
"roll-i18n":"roll",
|
||||
"player":"Player"
|
||||
}
|
||||
Reference in New Issue
Block a user