mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
Reboot The Future new sheet
This commit is contained in:
@@ -0,0 +1,596 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Set the min-width so that when the window is resized the look will stay consistant */
|
||||
|
||||
.charsheet {
|
||||
background-image: linear-gradient(135deg, #293749, white, #293749);
|
||||
background-size: cover;
|
||||
width:825px;
|
||||
min-width:825px;
|
||||
max-width:825px;
|
||||
min-height:400px;
|
||||
margin:0;
|
||||
font-family: Consolas, monospace;
|
||||
}
|
||||
|
||||
/* Universal styling applied to all elements of these types */
|
||||
|
||||
.charsheet h1 {
|
||||
font-size: 4em;
|
||||
margin-bottom: 10px;
|
||||
margin-top:5px;
|
||||
text-align: center;
|
||||
color:#EE0009;
|
||||
text-shadow: 0px 0px 8px #FFF;
|
||||
}
|
||||
|
||||
.charsheet h2 {
|
||||
font-size: 2em;
|
||||
margin-bottom: 10px;
|
||||
text-align: center;
|
||||
width:100%;
|
||||
background: #293749;
|
||||
color:white;
|
||||
}
|
||||
.charsheet h3 {
|
||||
margin-bottom: 10px;
|
||||
text-align: center;
|
||||
text-shadow: 0px 0px 5px #FFF;
|
||||
}
|
||||
|
||||
.charsheet input, .charsheet textarea, .charsheet select {
|
||||
background-color:#ced7e3;
|
||||
border-radius:0;
|
||||
border:1px solid black;
|
||||
}
|
||||
|
||||
.charsheet button {
|
||||
border-radius:0;
|
||||
border:1px solid black;
|
||||
/*background-color: #eff2f6;*/
|
||||
background-image: linear-gradient(top, #ffffff, #ced7e3);
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #ced7e3);
|
||||
}
|
||||
.charsheet button:hover {
|
||||
border-radius:0;
|
||||
border:1px solid black;
|
||||
background-color: #adbdd1;
|
||||
}
|
||||
|
||||
.charsheet p {
|
||||
font-family: Consolas, monospace;
|
||||
}
|
||||
|
||||
|
||||
/* LAYOUT */
|
||||
|
||||
.charsheet .sheet-character {
|
||||
display: grid;
|
||||
grid-template-columns: 133px 133px 133px 133px 133px 133px;
|
||||
grid-template-rows: auto;
|
||||
gap: 5px;
|
||||
grid-template-areas:
|
||||
"basic basic basic drive drive drive"
|
||||
"attributes attributes avatar avatar experience experience"
|
||||
"physical physical mental mental social social"
|
||||
"explain explain explain explain explain explain"
|
||||
"unspent unspent cap cap totalskill totalskill"
|
||||
"traits traits traits other other other"
|
||||
}
|
||||
|
||||
/* BASIC INFO */
|
||||
|
||||
|
||||
.charsheet .sheet-character label {
|
||||
color:#333;
|
||||
}
|
||||
.sheet-basicinfo-left {
|
||||
grid-area: basic;
|
||||
}
|
||||
|
||||
.sheet-basicinfo-right {
|
||||
grid-area: drive;
|
||||
}
|
||||
|
||||
.charsheet .sheet-character .basicinfo label {
|
||||
display: inline-block;
|
||||
width: 90px;
|
||||
color:white;
|
||||
vertical-align:top;
|
||||
margin-top:3px;
|
||||
}
|
||||
|
||||
.basicinfo input {
|
||||
display: inline-block;
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
.basicinfo select {
|
||||
display: inline-block;
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
.basicinfo textarea {
|
||||
display: inline-block;
|
||||
width: 280px;
|
||||
height:70px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.charsheet input[type=checkbox], .charsheet input[type=radio]{
|
||||
opacity: 0;
|
||||
margin-right: -1.5em;
|
||||
margin-left:7px;
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
}
|
||||
|
||||
.charsheet input[type=checkbox] + span:before, .charsheet input[type=radio] + span:before{
|
||||
content:"✖";
|
||||
padding:0 0.2em;
|
||||
border: 1px solid black;
|
||||
height: 1em;
|
||||
width: 2em;
|
||||
color: #00000000;
|
||||
font-size: 1.2em;
|
||||
background: #ced7e3;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.charsheet input[type=checkbox]:checked + span:before, .charsheet input[type=radio]:checked + span:before{
|
||||
color: #293749;
|
||||
}
|
||||
|
||||
|
||||
/* ATTRIBUTES */
|
||||
.sheet-attributes {
|
||||
grid-area:attributes;
|
||||
}
|
||||
|
||||
.sheet-attributes button[type=roll].sheet-2d6-dice::before {
|
||||
font-family: 'dicefontd6';
|
||||
content: 'ff ';
|
||||
}
|
||||
|
||||
.sheet-attributes button[type=roll].sheet-d6-dice::before {
|
||||
font-family: 'dicefontd6';
|
||||
content: 'f ';
|
||||
}
|
||||
|
||||
.sheet-attributes h4 {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.sheet-attributes h4.sheet-first {
|
||||
margin-left: 160px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.sheet-attributes input {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.sheet-attributes label {
|
||||
display: inline-block;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.sheet-attributes label.sheet-driveused {
|
||||
display: inline-block;
|
||||
width: 202px;
|
||||
}
|
||||
|
||||
.sheet-attributes label.sheet-damagebonus {
|
||||
display: inline-block;
|
||||
width: 203px;
|
||||
}
|
||||
|
||||
/* AVATAR */
|
||||
|
||||
.sheet-avatar {
|
||||
grid-area:avatar;
|
||||
}
|
||||
|
||||
.sheet-avatar input {
|
||||
display: inline-block;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.sheet-avatar label {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.sheet-avatar span {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sheet-avatar button[type=roll].sheet-d6-dice::before {
|
||||
font-family: 'dicefontd6';
|
||||
content: 'f ';
|
||||
}
|
||||
|
||||
/* Experience */
|
||||
.sheet-experience {
|
||||
grid-area:experience;
|
||||
}
|
||||
|
||||
.sheet-experience input {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.sheet-experience label {
|
||||
display: inline-block;
|
||||
width: 203px;
|
||||
}
|
||||
|
||||
/* SKILLS */
|
||||
|
||||
.sheet-physical {
|
||||
grid-area: physical;
|
||||
}
|
||||
.sheet-mental {
|
||||
grid-area: mental;
|
||||
}
|
||||
.sheet-social {
|
||||
grid-area: social;
|
||||
}
|
||||
|
||||
.sheet-skills label {
|
||||
margin-left:167px;
|
||||
margin-bottom:0;
|
||||
margin-top:-5px;
|
||||
font-weight: bold;
|
||||
font-size:1em;
|
||||
max-width: 105px;
|
||||
}
|
||||
.sheet-skills input {
|
||||
display: inline-block;
|
||||
width: 105px;
|
||||
border:1px solid black;
|
||||
border-bottom:0;
|
||||
}
|
||||
.sheet-skills input[type="number"]{
|
||||
text-align: center;
|
||||
width: 36px !important;
|
||||
border-right:0;
|
||||
}
|
||||
|
||||
.charsheet .sheet-skills button[type=roll].sheet-skill-button {
|
||||
width:120px;
|
||||
margin:0;
|
||||
height:22px;
|
||||
text-align:left;
|
||||
border:1px solid black;
|
||||
border-bottom:0;
|
||||
border-right:0;
|
||||
border-radius:0;
|
||||
}
|
||||
.sheet-skills button[type=roll].sheet-skill-button::before {
|
||||
content: '';
|
||||
}
|
||||
|
||||
|
||||
p.sheet-skill-explain {
|
||||
grid-area:explain;
|
||||
margin-top:10px;
|
||||
}
|
||||
|
||||
.sheet-unspent {
|
||||
grid-area: unspent;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
.sheet-cap {
|
||||
grid-area: cap;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
.sheet-totalskill {
|
||||
grid-area: totalskill;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
|
||||
.sheet-skillpoints label {
|
||||
display: inline-block;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.sheet-skillpoints input {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
img {
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
/* TRAITS */
|
||||
.sheet-traits {
|
||||
grid-area:traits;
|
||||
}
|
||||
|
||||
.sheet-traits input {
|
||||
display: inline-block;
|
||||
width: 362px;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.sheet-traits input + input[type=number] {
|
||||
border-left:0;
|
||||
}
|
||||
.sheet-traits textarea {
|
||||
height:100px;
|
||||
width:398px;
|
||||
border-top:0;
|
||||
}
|
||||
|
||||
/* OTHER STUFF */
|
||||
|
||||
.sheet-other {
|
||||
grid-area: other;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.sheet-other textarea {
|
||||
width:400px;
|
||||
}
|
||||
|
||||
/* COMBAT */
|
||||
.sheet-equipment .itemrow {
|
||||
margin-bottom:5px;
|
||||
}
|
||||
|
||||
.sheet-equipment label {
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.sheet-equipment input {
|
||||
display: inline-block;
|
||||
width: 120px;
|
||||
border-right:0;
|
||||
}
|
||||
|
||||
.sheet-equipment select {
|
||||
display: inline-block;
|
||||
width: 60px;
|
||||
vertical-align:middle;
|
||||
border-right:0;
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
.charsheet .sheet-equipment button[type="roll"] {
|
||||
margin-right:0;
|
||||
}
|
||||
|
||||
.sheet-equipment button[type=roll].sheet-2d6-dice::before {
|
||||
font-family: 'dicefontd6';
|
||||
content: 'ff ';
|
||||
}
|
||||
|
||||
.sheet-equipment button[type=roll].sheet-d6-dice::before {
|
||||
font-family: 'dicefontd6';
|
||||
content: 'f ';
|
||||
}
|
||||
|
||||
.sheet-equipment input.gearitem {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
border-right:1px solid black;
|
||||
}
|
||||
|
||||
/* GANG AREA */
|
||||
.sheet-gang textarea {
|
||||
height:110px;
|
||||
width:720px;
|
||||
}
|
||||
|
||||
.charsheet .sheet-gang label {
|
||||
color:#333;
|
||||
}
|
||||
|
||||
.sheet-gang-relationships h3 {
|
||||
padding-right:14px;
|
||||
}
|
||||
|
||||
.charsheet .repcontainer[data-groupname="repeating_assets"] > .repitem {
|
||||
display: inline-block;
|
||||
margin-right:10px;
|
||||
}
|
||||
|
||||
.charsheet .repcontainer[data-groupname="repeating_assets"] > .repitem input{
|
||||
width:360px;
|
||||
}
|
||||
|
||||
.charsheet .repcontainer[data-groupname="repeating_assets"] > .repitem textarea{
|
||||
width:350px;
|
||||
display:block;
|
||||
}
|
||||
|
||||
.sheet-gang-relationships h3.sheet-factionname, .sheet-gang-relationships h3.sheet-factionmodifiers, .sheet-gang-relationships textarea {
|
||||
display:inline-block;
|
||||
width:40%;
|
||||
}
|
||||
.sheet-gang-relationships h3.sheet-factiontotal {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.sheet-gang-relationships input {
|
||||
display:inline-block;
|
||||
vertical-align:top !important;
|
||||
}
|
||||
.sheet-gang-relationships textarea {
|
||||
height:60px;
|
||||
}
|
||||
|
||||
/* DOMAIN AREA */
|
||||
/* LAYOUT */
|
||||
|
||||
.charsheet .sheet-domain {
|
||||
display: grid;
|
||||
grid-template-columns: 133px 133px 133px 133px 133px 133px;
|
||||
grid-template-rows: auto;
|
||||
gap: 5px;
|
||||
grid-template-areas:
|
||||
"header header header header header header"
|
||||
"game game game safety safety safety"
|
||||
"system system system system2 system2 system2"
|
||||
}
|
||||
|
||||
.sheet-domain .header {
|
||||
grid-area:header;
|
||||
}
|
||||
|
||||
.charsheet .sheet-domain label {
|
||||
color:#333;
|
||||
}
|
||||
|
||||
.sheet-domain .gamedetails {
|
||||
grid-area:game;
|
||||
}
|
||||
|
||||
.sheet-domain .safety {
|
||||
grid-area:safety;
|
||||
}
|
||||
|
||||
.sheet-domain .systemdetails {
|
||||
grid-area:system;
|
||||
}
|
||||
|
||||
.sheet-domain .othersystemdetails {
|
||||
grid-area:system2;
|
||||
}
|
||||
|
||||
.sheet-domain label {
|
||||
display: inline-block;
|
||||
vertical-align:top;
|
||||
margin-top:3px;
|
||||
}
|
||||
|
||||
.sheet-domain input {
|
||||
display: inline-block;
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
.sheet-domain textarea {
|
||||
width:391px;
|
||||
}
|
||||
|
||||
.sheet-domain textarea.small {
|
||||
height:54px;
|
||||
}
|
||||
|
||||
.sheet-domain textarea.large {
|
||||
height:234px;
|
||||
}
|
||||
|
||||
.sheet-domain h3 {
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
|
||||
.charsheet .sheet-mods label {
|
||||
color:#333;
|
||||
}
|
||||
|
||||
/* TABS */
|
||||
|
||||
/*Configure the tab buttons*/
|
||||
.charsheet .sheet-character,
|
||||
.charsheet .sheet-gang ,
|
||||
.charsheet .sheet-domain ,
|
||||
.charsheet .sheet-mods {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* show the selected tab */
|
||||
.charsheet .sheet-tabstoggle[value="character"] ~ div.sheet-character,
|
||||
.charsheet .sheet-tabstoggle[value="gang"] ~ div.sheet-gang ,
|
||||
.charsheet .sheet-tabstoggle[value="domain"] ~ div.sheet-domain ,
|
||||
.charsheet .sheet-tabstoggle[value="mods"] ~ div.sheet-mods {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
|
||||
/* ROLL TEMPLATE */
|
||||
.sheet-rolltemplate-future {
|
||||
margin-left: -37px;
|
||||
}
|
||||
.withoutavatars .sheet-rolltemplate-future {
|
||||
margin-left: -7px;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-future .sheet-container {
|
||||
border: 1px solid;
|
||||
border-color: #293749;
|
||||
}
|
||||
|
||||
/* Header formatting - title and subtitle */
|
||||
.sheet-rolltemplate-future .sheet-header {
|
||||
background-color: #293749;
|
||||
text-align: left;
|
||||
color: white;
|
||||
padding: 5px;
|
||||
}
|
||||
.sheet-rolltemplate-future .sheet-title {
|
||||
font-size:1.1em;
|
||||
}
|
||||
.sheet-rolltemplate-future .sheet-subtitle {
|
||||
font-size:.9em;
|
||||
}
|
||||
|
||||
|
||||
/* Allprops part */
|
||||
.sheet-rolltemplate-future .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-future .sheet-content > div {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* Left column */
|
||||
.sheet-rolltemplate-future .sheet-content .sheet-key {
|
||||
font-weight: bold;
|
||||
padding-right: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Empty rule, use this if you want to change the right column
|
||||
.sheet-rolltemplate-future .sheet-value {
|
||||
}
|
||||
*/
|
||||
|
||||
/* Make even-numbered rows grey */
|
||||
.sheet-rolltemplate-future .sheet-content :nth-child(4n+3),
|
||||
.sheet-rolltemplate-future .sheet-content :nth-child(4n) {
|
||||
background:#EEE;
|
||||
}
|
||||
|
||||
/* Desc field */
|
||||
.sheet-rolltemplate-future .sheet-desc {
|
||||
grid-column: span 2;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* set the inline roll result so it doesn't look awful in dark mode */
|
||||
.sheet-rolltemplate-future .sheet-container .inlinerollresult {
|
||||
background-color:#ced7e3;
|
||||
border: 1px solid #333;
|
||||
color:black;
|
||||
}
|
||||
@@ -0,0 +1,617 @@
|
||||
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="character" />
|
||||
<div>
|
||||
<button type="action" name="act_character" >Character</button>
|
||||
<button type="action" name="act_gang" >Gang</button>
|
||||
<button type="action" name="act_domain" >Domain</button>
|
||||
<button type="action" name="act_mods" >Mods</button>
|
||||
</div>
|
||||
|
||||
<h1>Reboot The Future</h1>
|
||||
<h3>Cyberpunk Roleplaying in the 23rd Century</h3>
|
||||
|
||||
<div class="sheet-character">
|
||||
|
||||
<div class="sheet-basicinfo-left basicinfo">
|
||||
<div class="inforow"><label>Full Name:</label><input type="text" name="attr_character_name" /></div>
|
||||
<div class="inforow"><label>Origin:</label><input type="text" name="attr_origin" /></div>
|
||||
<div class="inforow"><label>Concept:</label><input type="text" name="attr_concept" /></div>
|
||||
<div class="inforow"><label>Drive:</label><input type="text" name="attr_drive" /></div>
|
||||
</div>
|
||||
<div class="sheet-basicinfo-right basicinfo">
|
||||
<div class="inforow"><label>Handle:</label><input type="text" name="attr_character_handle" /></div>
|
||||
<div class="inforow"><label>Flashbacks:</label><input type="checkbox" name="attr_flashback1"></input><span></span> <input type="checkbox" name="attr_flashback2"></input><span></span> <input type="checkbox" name="attr_flashback3"></input><span></span></div>
|
||||
<div class="inforow"><label>Style:</label><input type="text" name="attr_style" /></div>
|
||||
<div class="inforow"><label>Focus:</label><select name="attr_focus">
|
||||
<option value="Commerce">Commerce</option>
|
||||
<option value="Determined">Determined</option>
|
||||
<option value="Hacker">Hacker</option>
|
||||
<option value="Tough">Tough</option>
|
||||
</select></div>
|
||||
</div>
|
||||
|
||||
<div class="sheet-attributes">
|
||||
<h2>Attributes</h2>
|
||||
<h4 class="sheet-first">Current</h4><h4>Max</h4><br />
|
||||
<label>Endurance</label><input type="number" name="attr_endurance" />/<input type="number" name="attr_endurance_max" /><br />
|
||||
<label>Will</label><input type="number" name="attr_will" />/<input type="number" name="attr_will_max" /><br />
|
||||
|
||||
<label class="sheet-driveused">Drive used this game?</label><input type="checkbox" name="attr_driveused"></input><span></span><button class="sheet-skill-button sheet-d6-dice" type='roll' name='roll_drive' value='&{template:future} {{title=@{character_name}}} {{Will points recovered=[[1d6]]}}'></button><br />
|
||||
|
||||
<label class="sheet-damagebonus">Melee damage bonus</label><input type="number" name="attr_meleebonus" /><br />
|
||||
<label class="sheet-damagebonus">Shoot damage bonus</label><input type="number" name="attr_shootbonus" />
|
||||
<label class="sheet-damagebonus">Initiative bonus</label><input type="number" name="attr_initiativebonus" />
|
||||
|
||||
<button class="sheet-2d6-dice" type='roll' name='roll_initiative' value='&{template:future} {{title=@{character_name}}} {{Initiative=[[2d6 + @{awareness} + @{initiativebonus} + ?{Modifier|0}]]}}'>Roll Initiative</button>
|
||||
</div>
|
||||
|
||||
<div class="sheet-avatar">
|
||||
<h2>Avatar</h2>
|
||||
<div class="inforow"><label>Name:</label><input type="text" name="attr_avatar_name" /></div>
|
||||
<div class="inforow"><label>Style:</label><input type="text" name="attr_avatar_style" /></div>
|
||||
<div class="inforow"><label style="width:204px;">System Integrity:</label><input type="number" name="attr_avatar_systemintegrity" /></div>
|
||||
<div class="inforow"><label style="width:126px;">Damage:</label><button class="sheet-d6-dice" type='roll' name='roll_avatar_damage' value='&{template:future} {{title=@{character_name}}} {{Avatar Damage=[[1d6 + @{avatar_damage} + ?{Modifier|0}]]}}'></button><span>1d6 + </span><input type="number" name="attr_avatar_damage" /></div>
|
||||
<div class="inforow"><label style="width:126px;">Protection:</label><button class="sheet-d6-dice" type='roll' name='roll_avatar_protection' value='&{template:future} {{title=@{character_name}}} {{Avatar Protection=[[1d6 + @{avatar_protection} + ?{Modifier|0}]]}}'></button><span>1d6 + </span><input type="number" name="attr_avatar_protection" /></div>
|
||||
</div>
|
||||
|
||||
<div class="sheet-experience">
|
||||
<h2>Experience</h2>
|
||||
<label>Experience</label><input type="number" name="attr_experience" />
|
||||
<br />
|
||||
<br />
|
||||
<label>Total advancements</label><input type="number" name="attr_totaladvancements" /><br />
|
||||
<label>Unspent advancements</label><input type="number" name="attr_advancements" /><br />
|
||||
<p class="sheet-skill-explain">Spend 1 advancement to buy a trait point, increase your skill cap, or buy a gang asset.</p>
|
||||
|
||||
<label>Additional gang assets</label><input type="number" name="attr_gangassets" />
|
||||
<label>Added trait points</label><input type="number" name="attr_addtraitpoints" />
|
||||
<label>Increased skill cap</label><input type="number" name="attr_addskillcap" />
|
||||
</div>
|
||||
|
||||
<div class="sheet-skills sheet-physical">
|
||||
<h2>Physical Skills</h2>
|
||||
<label>Specialities</label>
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_athletics' value='&{template:future} {{title=@{character_name}}} {{Athletics=[[2d6 + @{athletics} + ?{Modifier|0}]]}}'>Athletics</button><input type="number" name='attr_athletics' min="0"></input><input type="text" name='attr_athleticsspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_awareness' value='&{template:future} {{title=@{character_name}}} {{Awareness=[[2d6 + @{awareness} + ?{Modifier|0}]]}}'>Awareness</button><input type="number" name='attr_awareness' min="0"></input><input type="text" name='attr_awarenessspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_melee' value='&{template:future} {{title=@{character_name}}} {{Melee=[[2d6 + @{melee} + ?{Modifier|0}]]}}'>Melee</button><input type="number" name='attr_melee' min="0"></input><input type="text" name='attr_meleespec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_shoot' value='&{template:future} {{title=@{character_name}}} {{Shoot=[[2d6 + @{shoot} + ?{Modifier|0}]]}}'>Shoot</button><input type="number" name='attr_shoot' min="0"></input><input type="text" name='attr_shootspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_stealth' value='&{template:future} {{title=@{character_name}}} {{Stealth=[[2d6 + @{stealth} + ?{Modifier|0}]]}}'>Stealth</button><input type="number" name='attr_stealth' min="0"></input><input type="text" name='attr_stealthspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_survival' value='&{template:future} {{title=@{character_name}}} {{Survival=[[2d6 + @{survival} + ?{Modifier|0}]]}}'>Survival</button><input type="number" name='attr_survival' min="0"></input><input type="text" name='attr_survivalspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" style="border-bottom:1px solid black;" type='roll' name='roll_vehicles' value='&{template:future} {{title=@{character_name}}} {{Vehicles=[[2d6 + @{vehicles} + ?{Modifier|0}]]}}'>Vehicles</button><input type="number" name='attr_vehicles' min="0" style="border-bottom:1px solid black;"></input><input type="text" name='attr_vehiclesspec' style="border-bottom:1px solid black;"></input>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-skills sheet-mental">
|
||||
<h2>Mental Skills</h2>
|
||||
<label>Specialities</label>
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_art' value='&{template:future} {{title=@{character_name}}} {{Art=[[2d6 + @{art} + ?{Modifier|0}]]}}'>Art</button><input type="number" name='attr_art' min="0"></input><input type="text" name='attr_artspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_business' value='&{template:future} {{title=@{character_name}}} {{Business=[[2d6 + @{business} + ?{Modifier|0}]]}}'>Business</button><input type="number" name='attr_business' min="0"></input><input type="text" name='attr_businessspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_corporatelaw' value='&{template:future} {{title=@{character_name}}} {{Corporate Law=[[2d6 + @{corporatelaw} + ?{Modifier|0}]]}}'>Corporate Law</button><input type="number" name='attr_corporatelaw' min="0"></input><input type="text" name='attr_corporatelawspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_education' value='&{template:future} {{title=@{character_name}}} {{Education=[[2d6 + @{education} + ?{Modifier|0}]]}}'>Education</button><input type="number" name='attr_education' min="0"></input><input type="text" name='attr_educationspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_interface' value='&{template:future} {{title=@{character_name}}} {{Interface=[[2d6 + @{interfaceX} + ?{Modifier|0}]]}}'>Interface</button><input type="number" name='attr_interfaceX' min="0"></input><input type="text" name='attr_interfacespec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_medicine' value='&{template:future} {{title=@{character_name}}} {{Medicine=[[2d6 + @{medicine} + ?{Modifier|0}]]}}'>Medicine</button><input type="number" name='attr_medicine' min="0"></input><input type="text" name='attr_medicinespec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_remotes' value='&{template:future} {{title=@{character_name}}} {{Remotes=[[2d6 + @{remotes} + ?{Modifier|0}]]}}'>Remotes</button><input type="number" name='attr_remotes' min="0"></input><input type="text" name='attr_remotesspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_testattack' value='&{template:future} {{title=@{character_name}}} {{Science=[[2d6 + @{science} + ?{Modifier|0}]]}}'>Science</button><input type="number" name='attr_science' min="0"></input><input type="text" name='attr_sciencespec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" style="border-bottom:1px solid black;" type='roll' name='roll_testattack' value='&{template:future} {{title=@{character_name}}} {{Technology=[[2d6 + @{technology} + ?{Modifier|0}]]}}'>Technology</button><input type="number" name='attr_technology' min="0" style="border-bottom:1px solid black;"></input><input type="text" name='attr_technologyspec' style="border-bottom:1px solid black;"></input>
|
||||
</div>
|
||||
|
||||
<div class="sheet-skills sheet-social">
|
||||
<h2>Social Skills</h2>
|
||||
<label>Specialities</label>
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_charm' value='&{template:future} {{title=@{character_name}}} {{Charm=[[2d6 + @{charm} + ?{Modifier|0}]]}}'>Charm</button><input type="number" name='attr_charm' min="0"></input><input type="text" name='attr_charmspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_conviction' value='&{template:future} {{title=@{character_name}}} {{Conviction=[[2d6 + @{conviction} + ?{Modifier|0}]]}}'>Conviction</button><input type="number" name='attr_conviction' min="0"></input><input type="text" name='attr_convictionspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_empathy' value='&{template:future} {{title=@{character_name}}} {{Empathy=[[2d6 + @{empathy} + ?{Modifier|0}]]}}'>Empathy</button><input type="number" name='attr_empathy' min="0"></input><input type="text" name='attr_empathyspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_highsociety' value='&{template:future} {{title=@{character_name}}} {{High Society=[[2d6 + @{highsociety} + ?{Modifier|0}]]}}'>High Society</button><input type="number" name='attr_highsociety' min="0"></input><input type="text" name='attr_highsocietyspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_rhetoric' value='&{template:future} {{title=@{character_name}}} {{Rhetoric=[[2d6 + @{rhetoric} + ?{Modifier|0}]]}}'>Rhetoric</button><input type="number" name='attr_rhetoric' min="0"></input><input type="text" name='attr_rhetoricspec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" type='roll' name='roll_streetwise' value='&{template:future} {{title=@{character_name}}} {{Streetwise=[[2d6 + @{streetwise} + ?{Modifier|0}]]}}'>Streetwise</button><input type="number" name='attr_streetwise' min="0"></input><input type="text" name='attr_streetwisespec'></input>
|
||||
<br />
|
||||
|
||||
<button class="sheet-skill-button" style="border-bottom:1px solid black;" type='roll' name='roll_taunt' value='&{template:future} {{title=@{character_name}}} {{Taunt=[[2d6 + @{taunt} + ?{Modifier|0}]]}}'>Taunt</button><input type="number" name='attr_taunt' min="0" style="border-bottom:1px solid black;"></input><input type="text" name='attr_tauntspec' style="border-bottom:1px solid black;"></input>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="sheet-skill-explain">Start with 17 Skill points. If you have a skill at 3 or higher you may spend 1 point for a Speciality.</p>
|
||||
|
||||
|
||||
<div class="sheet-skillpoints sheet-unspent">
|
||||
<label>Unspent skill points </label><input type="number" name='attr_skillpoints'></input>
|
||||
</div>
|
||||
<div class="sheet-skillpoints sheet-cap">
|
||||
<label>Skill cap </label><input type="number" name='attr_skillcap'></input>
|
||||
</div>
|
||||
<div class="sheet-skillpoints sheet-totalskill">
|
||||
<label>Total skill points </label><input type="number" name='attr_totalskillpoints'></input>
|
||||
</div>
|
||||
|
||||
<div class="sheet-traits">
|
||||
<h2>Traits</h2>
|
||||
|
||||
<fieldset class="repeating_traits">
|
||||
<input type="text" name="attr_traitname" /><input type="number" name="attr_traitcost" min="0" />
|
||||
<textarea name="attr_traitdescription" />
|
||||
</fieldset>
|
||||
|
||||
<h2 style="margin-top:20px;">Limitations</h2>
|
||||
|
||||
<fieldset class="repeating_limitations">
|
||||
<input type="text" name="attr_limitationname" /><input type="number" name="attr_limitationcost" min="0" />
|
||||
<textarea name="attr_limitationdescription" />
|
||||
</fieldset>
|
||||
<p class="sheet-skill-explain">Start with 5 Trait points. You can gain extra trait points from Limitations.</p>
|
||||
<div class="sheet-skillpoints">
|
||||
<div class="sheet-col">
|
||||
<label>Unspent trait points </label><input type="number" name='attr_traitpoints'></input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Attributes and combat -->
|
||||
<div class="sheet-other">
|
||||
<div class="sheet-equipment">
|
||||
<h2>Equipment</h2>
|
||||
|
||||
<label>Weapons</label>
|
||||
<div class="inforow"><div style="display:inline-block;width:120px;">Weapon</div><div style="display:inline-block;width:120px;">Traits</div><div style="display:inline-block;width:50px;">Damage</div><div style="display:inline-block;width:60px;">Type</div><div style="display:inline-block;width:30px;">1d6</div><div style="display:inline-block;width:25px;">2d6</div></div>
|
||||
|
||||
<div class="itemrow"><input type="text" disabled="true" value="Unarmed" /><input type="text" disabled="true" value="" /><input type="number" value="0" disabled="true" /><select disabled="true" style="border-right:1px solid black;">
|
||||
<option value="@{meleebonus}">Melee</option>
|
||||
</select><button class="sheet-d6-dice" type='roll' name='roll_unarmed' value='&{template:future} {{title=@{character_name}}} {{Weapon=Unarmed}} {{Damage=[[1d6 + @{meleebonus} + ?{Modifier|0}]]}}'></button><button class="sheet-2d6-dice" type='roll' name='roll_unarmed' value='&{template:future} {{title=@{character_name}}} {{Weapon=Unarmed}} {{Damage=[[2d6 + @{meleebonus} + ?{Modifier|0}]]}}'></button></div>
|
||||
|
||||
<fieldset class="repeating_weapons">
|
||||
<div class="itemrow"><input type="text" name="attr_weaponname" /><input type="text" name="attr_weapontraits" /><input type="number" name="attr_weapondamagebonus" /><select name="attr_weapontype" style="border-right:1px solid black;">
|
||||
<option value="@{meleebonus}">Melee</option>
|
||||
<option value="@{shootbonus}">Shoot</option>
|
||||
<option value="0">Other</option>
|
||||
</select><button class="sheet-d6-dice" type='roll' name='roll_weapon' value='&{template:future} {{title=@{character_name}}} {{Weapon=@{weaponname}}} {{Damage=[[1d6 + @{weapondamagebonus} + @{weapontype} + ?{Modifier|0}]]}}'></button><button class="sheet-2d6-dice" type='roll' name='roll_weapon' value='&{template:future} {{title=@{character_name}}} {{Weapon=@{weaponname}}} {{Damage=[[2d6 + @{weapondamagebonus} + @{weapontype} + ?{Modifier|0}]]}}'></button></div>
|
||||
</fieldset>
|
||||
<hr />
|
||||
|
||||
<label>Armour</label>
|
||||
<div class="inforow"><div style="display:inline-block;width:200px;">Armour</div><div style="display:inline-block;width:109px;">Traits</div><div style="display:inline-block;width:78px;">Protection</div><div style="display:inline-block;width:20px;">1d6</div></div>
|
||||
|
||||
<fieldset class="repeating_armour">
|
||||
<div class="itemrow" style="margin-bottom:5px;"><input type="text" name="attr_armourname" style="width:200px;" /><input type="text" name="attr_weapontraits" /><input type="number" name="attr_armourbonus" style="border-right:1px solid black;" />
|
||||
<button class="sheet-d6-dice" type='roll' name='roll_weapon' value='&{template:future} {{title=@{character_name}}} {{Weapon=@{weaponname}}} {{Damage=[[1d6 + @{weapondamagebonus} + @{weapontype} + ?{Modifier|0}]]}}' style="margin-left: 14px;"></button></div>
|
||||
</fieldset>
|
||||
<hr />
|
||||
|
||||
<label>Gear</label><br />
|
||||
<fieldset class="repeating_gear">
|
||||
<input type="text" name="attr_gear" class="gearitem" />
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
<h2 style="margin-top:10px;">Circles</h2>
|
||||
<textarea class="attr_circles" />
|
||||
|
||||
<h2>Contacts</h2>
|
||||
<textarea class="attr_contacts" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- GANG SHEET -->
|
||||
<div class="sheet-gang">
|
||||
<h2>Gang Record</h2>
|
||||
<label>Name:</label><textarea name="attr_gang_name" /><br />
|
||||
<label>Concept:</label><textarea name="attr_gang_concept" /><br />
|
||||
<label>Goal:</label><textarea name="attr_gang_goal" /><br />
|
||||
<label>Base:</label><textarea name="attr_gang_base" /><br />
|
||||
<label>Gang Assets:</label>
|
||||
<fieldset class="repeating_assets">
|
||||
<div class="sheet-gang-asset">
|
||||
<input type="text" name="attr_assetname" />
|
||||
<textarea name="attr_assetdescription" />
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<label>Hooks:</label><textarea name="attr_gang_hooks" />
|
||||
|
||||
</div>
|
||||
<!-- END GANG SHEET -->
|
||||
|
||||
<!-- DOMAIN SHEET -->
|
||||
<div class="sheet-domain">
|
||||
<div class="header"><h2>Domain Record</h2></div>
|
||||
|
||||
<div class="gamedetails">
|
||||
<h2>Game Details</h2>
|
||||
<h3>Name of Game</h3><textarea name="attr_game_name" class="small" /><br />
|
||||
<h3>Type of Game</h3>
|
||||
<label style="width:50px;">Closed</label><input type="radio" name="attr_game_type" value="Closed"><span></span>
|
||||
<label style="width:30px;">Open</label><input type="radio" name="attr_game_type" value="Open"><span></span><br />
|
||||
<h3>Power Level:</h3>
|
||||
<label style="width:50px;">Street</label><input type="radio" name="attr_game_power" value="Street"><span></span>
|
||||
<label style="width:120px;">Troubleshooter</label><input type="radio" name="attr_game_power" value="Troubleshooter"><span></span>
|
||||
<label style="width:45px;">Elite</label><input type="radio" name="attr_game_power" value="Elite"><span></span><br />
|
||||
</div>
|
||||
|
||||
<div class="safety">
|
||||
<h2>Safety Discussion</h2>
|
||||
<h3>Rating</h3>
|
||||
<label style="width:20px;">PG</label><input type="radio" name="attr_rating" value="PG"><span></span>
|
||||
<label style="width:20px;">15</label><input type="radio" name="attr_rating" value="15"><span></span>
|
||||
<label style="width:20px;">18</label><input type="radio" name="attr_rating" value="18"><span></span>
|
||||
<label style="width:12px;">R</label><input type="radio" name="attr_rating" value="R"><span></span><br />
|
||||
<h3>Off Limit Topics</h3><textarea name="attr_off_limit" />
|
||||
</div>
|
||||
|
||||
<div class="systemdetails">
|
||||
<h2>System Details</h2>
|
||||
<h3>Home World</h3><textarea name="attr_homeworld" class="small" /><br />
|
||||
<h3>Type of World</h3>
|
||||
<label style="width:40px;">First</label><input type="radio" name="attr_world_type" value="First"><span></span>
|
||||
<label style="width:50px;">Second</label><input type="radio" name="attr_world_type" value="Second"><span></span>
|
||||
<label style="width:40px;">Third</label><input type="radio" name="attr_world_type" value="Third"><span></span><br />
|
||||
<h3>Planetary Story Concept</h3><textarea name="attr_story_concept" class="small" /><br />
|
||||
<h3>Details</h3><textarea name="attr_system_details" class="large" /><br />
|
||||
</div>
|
||||
|
||||
<div class="othersystemdetails" style="margin-top:46px;">
|
||||
<h3>Other System Objects</h3><textarea name="attr_system_objects" class="large" /><br />
|
||||
<h3>Non-Player Characters</h3><textarea name="attr_system_npcs" class="large" /><br />
|
||||
</div>
|
||||
</div>
|
||||
<!-- END DOMAIN SHEET -->
|
||||
|
||||
<!-- MODS SHEET -->
|
||||
<div class="sheet-mods">
|
||||
<h2>Modifications</h2>
|
||||
<p>Need to make some tweaks? Modify things here.</p>
|
||||
<label>Modify skill points:</label><input type="number" name="attr_extraskills" /><br />
|
||||
<label>Modify endurance:</label><input type="number" name="attr_extraendurance" /><br />
|
||||
<label>Modify will:</label><input type="number" name="attr_extrawill" /><br />
|
||||
</div>
|
||||
<!-- END MODS SHEET -->
|
||||
|
||||
<!-- ROLL TEMPLATE -->
|
||||
<rolltemplate class="sheet-rolltemplate-future">
|
||||
<div class="sheet-container">
|
||||
<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}}
|
||||
<div class="sheet-key">{{key}}</div>
|
||||
<div class="sheet-value">{{value}}</div>
|
||||
{{/allprops() title subtitle desc color}}
|
||||
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<script type="text/worker">
|
||||
|
||||
// Deal with the tabs
|
||||
const buttonlist = ["character","gang","domain","mods"];
|
||||
buttonlist.forEach(button => {
|
||||
on(`clicked:${button}`, function() {
|
||||
setAttrs({
|
||||
sheetTab: button
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Initialise skills and other numbered attributes
|
||||
on("change:athletics change:awareness change:melee change:shoot change:stealth change:survival change:vehicles change:art change:business change:education change:lore change:medicine change:science change:technology change:charm change:conviction change:empathy change:highsociety change:rhetoric change:streetwise change:taunt sheet:opened", function() {
|
||||
getAttrs(["athletics","awareness","melee","shoot","stealth","survival","vehicles","art","business","corporatelaw","education","interfaceX","medicine","remotes","science","technology","charm","conviction","empathy","highsociety","rhetoric","streetwise","taunt","skillcap","meleebonus","shootbonus","initiativebonus","totaltraitpoints","gangassets"], function(values) {
|
||||
let athletics = parseInt(values.athletics)||0;
|
||||
let awareness = parseInt(values.awareness)||0;
|
||||
let melee = parseInt(values.melee)||0;
|
||||
let shoot = parseInt(values.shoot)||0;
|
||||
let stealth = parseInt(values.stealth)||0;
|
||||
let survival = parseInt(values.survival)||0;
|
||||
let vehicles = parseInt(values.vehicles)||0;
|
||||
let art = parseInt(values.art)||0;
|
||||
let business = parseInt(values.business)||0;
|
||||
let corporatelaw = parseInt(values.corporatelaw)||0;
|
||||
let education = parseInt(values.education)||0;
|
||||
let interfaceX = parseInt(values.interfaceX)||0;
|
||||
let medicine = parseInt(values.medicine)||0;
|
||||
let remotes = parseInt(values.remotes)||0;
|
||||
let science = parseInt(values.science)||0;
|
||||
let technology = parseInt(values.technology)||0;
|
||||
let charm = parseInt(values.charm)||0;
|
||||
let conviction = parseInt(values.conviction)||0;
|
||||
let empathy = parseInt(values.empathy)||0;
|
||||
let highsociety = parseInt(values.highsociety)||0;
|
||||
let rhetoric = parseInt(values.rhetoric)||0;
|
||||
let streetwise = parseInt(values.streetwise)||0;
|
||||
let taunt = parseInt(values.taunt)||0;
|
||||
let skillcap = parseInt(values.skillcap)||4;
|
||||
let meleebonus = parseInt(values.meleebonus)||0;
|
||||
let shootbonus = parseInt(values.shootbonus)||0;
|
||||
let initiativebonus = parseInt(values.initiativebonus)||0;
|
||||
let addtraitpoints = parseInt(values.addtraitpoints)||0;
|
||||
let gangassets = parseInt(values.gangassets)||0;
|
||||
|
||||
setAttrs({
|
||||
"athletics": Math.min(athletics, skillcap),
|
||||
"awareness": Math.min(awareness, skillcap),
|
||||
"melee": Math.min(melee, skillcap),
|
||||
"shoot": Math.min(shoot, skillcap),
|
||||
"stealth": Math.min(stealth, skillcap),
|
||||
"survival": Math.min(survival, skillcap),
|
||||
"vehicles": Math.min(vehicles, skillcap),
|
||||
"art": Math.min(art, skillcap),
|
||||
"business": Math.min(business, skillcap),
|
||||
"corporatelaw": Math.min(corporatelaw, skillcap),
|
||||
"education": Math.min(education, skillcap),
|
||||
"interfaceX": Math.min(interfaceX, skillcap),
|
||||
"medicine": Math.min(medicine, skillcap),
|
||||
"remotes": Math.min(remotes, skillcap),
|
||||
"science": Math.min(science, skillcap),
|
||||
"technology": Math.min(technology, skillcap),
|
||||
"charm": Math.min(charm, skillcap),
|
||||
"conviction": Math.min(conviction, skillcap),
|
||||
"empathy": Math.min(empathy, skillcap),
|
||||
"highsociety": Math.min(highsociety, skillcap),
|
||||
"rhetoric": Math.min(rhetoric, skillcap),
|
||||
"streetwise": Math.min(streetwise, skillcap),
|
||||
"taunt": Math.min(taunt, skillcap),
|
||||
"skillcap": skillcap,
|
||||
"meleebonus": meleebonus,
|
||||
"shootbonus": shootbonus,
|
||||
"initiativebonus": initiativebonus,
|
||||
"addtraitpoints": addtraitpoints,
|
||||
"gangassets": gangassets
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set endurance maximum
|
||||
on("change:athletics change:extraendurance change:focus sheet:opened", function() {
|
||||
getAttrs(["athletics","focus","extraendurance"], function(values) {
|
||||
let athletics = parseInt(values.athletics)||0;
|
||||
let extraendurance = parseInt(values.extraendurance)||0;
|
||||
let focus = values.focus;
|
||||
let endurance = athletics + 8 + extraendurance;
|
||||
if (focus === "Tough")
|
||||
{
|
||||
endurance = athletics + 12 + extraendurance;
|
||||
}
|
||||
setAttrs({
|
||||
"endurance_max": endurance
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set will maximum
|
||||
on("change:conviction change:extrawill change:focus sheet:opened", function() {
|
||||
getAttrs(["conviction","focus","extrawill"], function(values) {
|
||||
let conviction = parseInt(values.conviction)||0;
|
||||
let extrawill = parseInt(values.extrawill)||0;
|
||||
let focus = values.focus;
|
||||
let will = conviction + 8 + extrawill;
|
||||
if (focus === "Determined")
|
||||
{
|
||||
will = conviction + 10 + extrawill;
|
||||
}
|
||||
setAttrs({
|
||||
"will_max": will
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set total skill points and advancements
|
||||
on("change:experience change:extraskills sheet:opened", function() {
|
||||
getAttrs(["experience", "extraskills"], function(values) {
|
||||
let experience = parseInt(values.experience)||0;
|
||||
let extraskills = parseInt(values.extraskills)||0;
|
||||
let totalskillpoints = Math.floor(experience/5) + 17 + extraskills;
|
||||
let totaladvancements = Math.floor(experience/15);
|
||||
setAttrs({
|
||||
"totalskillpoints": totalskillpoints,
|
||||
"totaladvancements": totaladvancements
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set unspent skill points
|
||||
on("change:athletics change:awareness change:melee change:shoot change:stealth change:survival change:vehicles change:art change:business change:education change:lore change:medicine change:science change:technology change:charm change:conviction change:empathy change:highsociety change:rhetoric change:streetwise change:taunt change:athleticsspec change:awarenessspec change:meleespec change:shootspec change:stealthspec change:survivalspec change:vehiclesspec change:artspec change:businessspec change:educationspec change:lorespec change:medicinespec change:sciencespec change:technologyspec change:charmspec change:convictionspec change:empathyspec change:highsocietyspec change:rhetoricspec change:streetwisespec change:tauntspec change:totalskillpoints sheet:opened", function() {
|
||||
getAttrs(["athletics","awareness","melee","shoot","stealth","survival","vehicles","art","business","education","lore","medicine","science","technology","charm","conviction","empathy","highsociety","rhetoric","streetwise","taunt","athleticsspec","awarenessspec","meleespec","shootspec","stealthspec","survivalspec","vehiclesspec","artspec","businessspec","educationspec","lorespec","medicinespec","sciencespec","technologyspec","charmspec","convictionspec","empathyspec","highsocietyspec","rhetoricspec","streetwisespec","tauntspec","totalskillpoints"], function(values) {
|
||||
let athletics = parseInt(values.athletics)||0;
|
||||
let awareness = parseInt(values.awareness)||0;
|
||||
let melee = parseInt(values.melee)||0;
|
||||
let shoot = parseInt(values.shoot)||0;
|
||||
let stealth = parseInt(values.stealth)||0;
|
||||
let survival = parseInt(values.survival)||0;
|
||||
let vehicles = parseInt(values.vehicles)||0;
|
||||
let art = parseInt(values.art)||0;
|
||||
let business = parseInt(values.business)||0;
|
||||
let education = parseInt(values.education)||0;
|
||||
let lore = parseInt(values.lore)||0;
|
||||
let medicine = parseInt(values.medicine)||0;
|
||||
let science = parseInt(values.science)||0;
|
||||
let technology = parseInt(values.technology)||0;
|
||||
let charm = parseInt(values.charm)||0;
|
||||
let conviction = parseInt(values.conviction)||0;
|
||||
let empathy = parseInt(values.empathy)||0;
|
||||
let highsociety = parseInt(values.highsociety)||0;
|
||||
let rhetoric = parseInt(values.rhetoric)||0;
|
||||
let streetwise = parseInt(values.streetwise)||0;
|
||||
let taunt = parseInt(values.taunt)||0;
|
||||
|
||||
let athleticsspec = CountSpecialities(values.athleticsspec);
|
||||
let awarenessspec = CountSpecialities(values.awarenessspec);
|
||||
let meleespec = CountSpecialities(values.meleespec);
|
||||
let shootspec = CountSpecialities(values.shootspec);
|
||||
let stealthspec = CountSpecialities(values.stealthspec);
|
||||
let survivalspec = CountSpecialities(values.survivalspec);
|
||||
let vehiclesspec = CountSpecialities(values.vehiclesspec);
|
||||
let artspec = CountSpecialities(values.artspec);
|
||||
let businessspec = CountSpecialities(values.businessspec);
|
||||
let educationspec = CountSpecialities(values.educationspec);
|
||||
let lorespec = CountSpecialities(values.lorespec);
|
||||
let medicinespec = CountSpecialities(values.medicinespec);
|
||||
let sciencespec = CountSpecialities(values.sciencespec);
|
||||
let technologyspec = CountSpecialities(values.technologyspec);
|
||||
let charmspec = CountSpecialities(values.charmspec);
|
||||
let convictionspec = CountSpecialities(values.convictionspec);
|
||||
let empathyspec = CountSpecialities(values.empathyspec);
|
||||
let highsocietyspec = CountSpecialities(values.highsocietyspec);
|
||||
let rhetoricspec = CountSpecialities(values.rhetoricspec);
|
||||
let streetwisespec = CountSpecialities(values.streetwisespec);
|
||||
let tauntspec = CountSpecialities(values.tauntspec);
|
||||
console.log(stealthspec);
|
||||
|
||||
let totalskillpoints = parseInt(values.totalskillpoints)||0;
|
||||
|
||||
let skillpoints = athletics
|
||||
+ awareness
|
||||
+ melee
|
||||
+ shoot
|
||||
+ stealth
|
||||
+ survival
|
||||
+ vehicles
|
||||
+ art
|
||||
+ business
|
||||
+ education
|
||||
+ lore
|
||||
+ medicine
|
||||
+ science
|
||||
+ technology
|
||||
+ charm
|
||||
+ conviction
|
||||
+ empathy
|
||||
+ highsociety
|
||||
+ rhetoric
|
||||
+ streetwise
|
||||
+ taunt
|
||||
+ athleticsspec
|
||||
+ awarenessspec
|
||||
+ meleespec
|
||||
+ shootspec
|
||||
+ stealthspec
|
||||
+ survivalspec
|
||||
+ vehiclesspec
|
||||
+ artspec
|
||||
+ businessspec
|
||||
+ educationspec
|
||||
+ lorespec
|
||||
+ medicinespec
|
||||
+ sciencespec
|
||||
+ technologyspec
|
||||
+ charmspec
|
||||
+ convictionspec
|
||||
+ empathyspec
|
||||
+ highsocietyspec
|
||||
+ rhetoricspec
|
||||
+ streetwisespec
|
||||
+ tauntspec;
|
||||
|
||||
setAttrs({
|
||||
"skillpoints": totalskillpoints - skillpoints
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set trait points
|
||||
on('sheet:opened remove:repeating_traits change:repeating_traits:traitcost change:addtraitpoints change:repeating_limitations:limitationcost remove:repeating_limitations', function() {
|
||||
getSectionIDs('traits', function(idarray) {
|
||||
// first get the attribute names for all rows in put in one array
|
||||
const fieldnames = [];
|
||||
idarray.forEach(id => fieldnames.push(`repeating_traits_${id}_traitcost`));
|
||||
getAttrs(fieldnames, values => {
|
||||
let totaltraitcost = 0;
|
||||
// now loop through the rows again
|
||||
idarray.forEach(id => {
|
||||
let row = 'repeating_traits_' + id;
|
||||
let traitcost = parseInt(values[`${row}_traitcost`])||0;
|
||||
totaltraitcost += traitcost;
|
||||
});
|
||||
|
||||
// Repeat for limitations
|
||||
getSectionIDs('limitations', function(idarray) {
|
||||
const fieldnames = [];
|
||||
idarray.forEach(id => fieldnames.push(`repeating_limitations_${id}_limitationcost`));
|
||||
getAttrs(fieldnames, values => {
|
||||
let totallimitationcost = 0;
|
||||
// now loop through the rows again
|
||||
idarray.forEach(id => {
|
||||
let row = 'repeating_limitations_' + id;
|
||||
let limitationcost = parseInt(values[`${row}_limitationcost`])||0;
|
||||
totallimitationcost += limitationcost;
|
||||
});
|
||||
totaltraitcost -= totallimitationcost;
|
||||
// Get the number of trait points.
|
||||
getAttrs(["addtraitpoints"], function(values) {
|
||||
let totaltraitpoints = parseInt(values.addtraitpoints) + 5||5;
|
||||
setAttrs({
|
||||
"traitpoints": totaltraitpoints - totaltraitcost
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set unspent advancements
|
||||
on('sheet:opened change:addtraitpoints change:addskillcap change:gangassets change:totaladvancements', function() {
|
||||
getAttrs(["addtraitpoints","addskillcap","gangassets","totaladvancements"], function(values) {
|
||||
let additionaltraitpoints = parseInt(values.addtraitpoints)||0;
|
||||
let additionalskillcap = parseInt(values.addskillcap)||0;
|
||||
let gangassets = parseInt(values.gangassets)||0;
|
||||
let totaladvancements = parseInt(values.totaladvancements)||0;
|
||||
setAttrs({
|
||||
"advancements": totaladvancements - additionaltraitpoints - additionalskillcap - gangassets
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Set skill cap
|
||||
on('sheet:opened change:addskillcap', function() {
|
||||
getAttrs(["skillcap","addskillcap"], function(values) {
|
||||
let addskillcap = parseInt(values.addskillcap)||0;
|
||||
setAttrs({
|
||||
"skillcap": 4 + addskillcap
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function CountSpecialities(attribute){
|
||||
return attribute == null ? 0 : attribute.trim().length > 0 ? attribute.split(",").length : 0;
|
||||
}
|
||||
</script>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 198 KiB |
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"html": "rebootthefuture.html",
|
||||
"css": "rebootthefuture.css",
|
||||
"authors": "Sue Savage",
|
||||
"roll20userid": "5009227",
|
||||
"preview": "rebootthefuturepreview.png",
|
||||
"instructions": "A character sheet for Reboot The Future.",
|
||||
"legacy": false
|
||||
}
|
||||
Reference in New Issue
Block a user