Skip to content

Instantly share code, notes, and snippets.

@NoxMortem
Created April 26, 2016 16:14
Show Gist options
  • Save NoxMortem/712df7eecfa6c0ad05e704efa8d23387 to your computer and use it in GitHub Desktop.
Save NoxMortem/712df7eecfa6c0ad05e704efa8d23387 to your computer and use it in GitHub Desktop.
[SR 5] Custom Script Supported: Wandlers Charactersheet v0.1
/* Reset */
{}
div.sheet-wrapper{
margin-left: -25px !important;
margin-top: -25px !important;
width: 108% !important;
}
.sheet-wrapper input {
font-size: 0.9em;
}
/* Rows and Columns */
.sheet-row{
margin-bottom: 3px;
}
.sheet-row,.sheet-row div{
display:inline-block;
}
/* Labels and Input */
.sheet-labels{
font-weight: bold;
}
.sheet-buttoninput{
height: 20px !important;
text-align: center;
width: 26px;
margin: 0;
margin-left: -5px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
padding: 0;
}
button.sheet-buttoninput{
height:35px;
margin:0px;
padding:0px;
}
input[type=checkbox].sheet-buttoninput{
height:17px !important;
width:17px;
}
.sheet-buttoninput-left{
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.sheet-buttoninput-center{
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
margin-left: -5px !important;
}
.sheet-buttoninput-right{
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
margin-left: -5px !important;
}
.sheet-buttoninput-left{
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.sheet-buttoninput-both{
border-radius: 3px;
margin-right:5px;
}
button.sheet-buttoninput-center + input.sheet-buttoninput {
margin-left: -8px !important;
}
.sheet-buttoninput-right + .sheet-buttoninput-left{
margin-left:0px;
}
.sheet-trigger-select{
margin-left:-8px !important;
}
/* TABS */
.sheet-tab{
float: left;
}
input.sheet-tab{
width: 80px;
height: 20px;
cursor: pointer;
z-index: 1;
opacity: 0;
margin-bottom: 10px;
float: left;
}
input.sheet-tab + span::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 80px;
height: 20px;
font-size: 18px;
top: -3px;
font-size: 0.9em;
font-weight: bold;
color: black;
border-top:2px solid black;
border-bottom:2px solid black;
}
input.sheet-tab:checked + span::before{
color:darkred;
border-top:2px solid darkred;
border-bottom:2px solid darkred;
font-size: 1.1em;
}
.sheet-tab-sub{
margin-top:-8px;
font-style:italic;
display:none;
}
.sheet-tab-sub-menu{
font-size:0.8em;
}
div.sheet-tab{
display:none;
}
label.sheet-tab{
cursor:default;
}
input.sheet-tab + span{
float: left;
margin-left: -80px;
z-index: 10;
}
input.sheet-tab-basis:checked ~ div.sheet-tab-basis,
input.sheet-tab-combat:checked ~ div.sheet-tab-combat,
input.sheet-tab-magic:checked ~ div.sheet-tab-magic,
input.sheet-tab-matrix:checked ~ div.sheet-tab-matrix,
input.sheet-tab-skills:checked ~ div.sheet-tab-skills,
input.sheet-tab-technomancer:checked ~ div.sheet-tab-technomancer,
input.sheet-tab-social:checked ~ div.sheet-tab-social,
input.sheet-tab-equipment:checked ~ div.sheet-tab-equipment{
display:block;
}
input.sheet-tab-knowledgekills:checked ~ div.sheet-tab-skills-knowledgekills,
input.sheet-tab-actionskills:checked ~ div.sheet-tab-skills-actionskills{
display:block;
}
/* Sub Menus */
input.sheet-tab-basis:checked ~ .sheet-tab-sub-basis,
input.sheet-tab-skills:checked ~ .sheet-tab-sub-skills,
input.sheet-tab-magic:checked ~ .sheet-tab-sub-magic,
input.sheet-tab-matrix:checked ~ .sheet-tab-sub-matrix,
input.sheet-tab-technomancer:checked ~ .sheet-tab-sub-technomancer,
input.sheet-tab-social:checked ~ .sheet-tab-sub-social,
input.sheet-tab-equipment:checked ~ .sheet-tab-sub-equipment{
display:block;
}
/* submenu:basis*/
input.sheet-tab-character:checked ~ div .sheet-tab-basis-character,
input.sheet-tab-attributes:checked ~ div .sheet-tab-basis-attributes,
input.sheet-tab-qualities:checked ~ div .sheet-tab-basis-qualities,
input.sheet-tab-description:checked ~ div .sheet-tab-basis-description,
input.sheet-tab-advancement:checked ~ div .sheet-tab-basis-advancement,
input.sheet-tab-settings:checked ~ div .sheet-tab-basis-settings{
display:block;
}
/* submenu:skills*/
input.sheet-tab-actionskills:checked ~ div .sheet-tab-skills-actionskills,
input.sheet-tab-knowledgeskills:checked ~ div .sheet-tab-skills-knowledgeskills{
display:block;
}
/* submenu:magic*/
input.sheet-tab-spellcasting:checked ~ .sheet-tab-magic-spellcasting,
input.sheet-tab-alchemy:checked ~ .sheet-tab-magic-alchemy,
input.sheet-tab-summoning:checked ~ .sheet-tab-magic-summoning,
input.sheet-tab-rituals:checked ~ .sheet-tab-magic-rituals,
input.sheet-tab-adeptpowers:checked ~ .sheet-tab-magic-adeptpowers,
input.sheet-tab-tradition:checked ~ .sheet-tab-magic-tradition{
display:block;
}
/* submenu:matrix*/
input.sheet-tab-matrixequipment:checked ~ div .sheet-tab-matrix-matrixequipment,
input.sheet-tab-programs:checked ~ div .sheet-tab-matrix-programs,
input.sheet-tab-matrixactions:checked ~ div .sheet-tab-matrix-matrixactions{
display:block;
}
/* submenu:technomancer*/
input.sheet-tab-livingpersona:checked ~ div .sheet-tab-technomancer-livingpersona,
input.sheet-tab-complexforms:checked ~ div .sheet-tab-technomancer-complexforms,
input.sheet-tab-sprites:checked ~ div .sheet-tab-technomancer-sprites{
display:block;
}
/* submenu:social*/
input.sheet-tab-sinlicense:checked ~ div .sheet-tab-social-sinlicense,
input.sheet-tab-lifestyles:checked ~ div .sheet-tab-social-lifestyles,
input.sheet-tab-connections:checked ~ div .sheet-tab-social-connections{
display:block;
}
/* submenu:equipment*/
input.sheet-tab-equipment-equipment:checked ~ div .sheet-tab-equipment-equipment,
input.sheet-tab-augmentations:checked ~ div .sheet-tab-equipment-augmentations,
input.sheet-tab-ammunition:checked ~ div .sheet-tab-equipment-ammunition,
input.sheet-tab-vehicles:checked ~ div .sheet-tab-equipment-vehicles,
input.sheet-tab-drones:checked ~ div .sheet-tab-equipment-drones,
input.sheet-tab-orders:checked ~ div .sheet-tab-equipment-orders{
display:block;
}
/* SETTINGS */
div.sheet-is-mage,
div.sheet-show-matrix,
div.sheet-is-technomancer{
display:none;
}
.sheet-tab-matrix, .sheet-tab-matrix + span{display:none;}
input.sheet-settings-show-matrix:checked ~ input.sheet-tab-matrix,
input.sheet-settings-show-matrix:checked ~ input.sheet-tab-matrix + span,
input.sheet-settings-show-matrix:checked ~ div .sheet-show-matrix{
display:block;
}
.sheet-tab-technomancer, .sheet-tab-technomancer + span{display:none;}
input.sheet-settings-is-technomancer:checked ~ input.sheet-tab-technomancer,
input.sheet-settings-is-technomancer:checked ~ input.sheet-tab-technomancer + span,
input.sheet-settings-is-technomancer:checked ~ div .sheet-is-technomancer,
input.sheet-settings-is-technomancer:checked ~ div .sheet-show-matrix{
display:block;
}
.sheet-tab-magic, .sheet-tab-magic + span,
.sheet-tab-sub-magic, .sheet-tab-sub-magic + span{
display:none;
}
input.sheet-settings-is-mage:checked ~ input.sheet-tab-magic,
input.sheet-settings-is-mage:checked ~ input.sheet-tab-magic + span,
input.sheet-settings-is-mage:checked ~ input.sheet-tab-sub-magic,
input.sheet-settings-is-mage:checked ~ input.sheet-tab-sub-magic + span,
input.sheet-settings-is-mage:checked ~ div .sheet-is-mage{
display:block;
}
.sheet-tab-tradition,.sheet-tab-tradition + span{
display:block;
}
.sheet-tab-spellcasting, .sheet-tab-spellcasting + span{display:none;}
input.sheet-settings-has-spellcasting:checked ~ div.sheet-tab-sub-magic input.sheet-tab-spellcasting,
input.sheet-settings-has-spellcasting:checked ~ div.sheet-tab-sub-magic input.sheet-tab-spellcasting + span{
display:block;
}
.sheet-tab-alchemy, .sheet-tab-alchemy + span{display:none;}
input.sheet-settings-has-alchemy:checked ~ div.sheet-tab-sub-magic input.sheet-tab-alchemy,
input.sheet-settings-has-alchemy:checked ~ div.sheet-tab-sub-magic input.sheet-tab-alchemy + span{
display:block;
}
.sheet-tab-rituals, .sheet-tab-rituals + span{display:none;}
input.sheet-settings-has-rituals:checked ~ div.sheet-tab-sub-magic input.sheet-tab-rituals,
input.sheet-settings-has-rituals:checked ~ div.sheet-tab-sub-magic input.sheet-tab-rituals + span{
display:block;
}
.sheet-tab-summoning, .sheet-tab-summoning + span{display:none;}
input.sheet-settings-has-summoning:checked ~ div.sheet-tab-sub-magic input.sheet-tab-summoning,
input.sheet-settings-has-summoning:checked ~ div.sheet-tab-sub-magic input.sheet-tab-summoning + span{
display:block;
}
.sheet-tab-adeptpowers, .sheet-tab-adeptpowers + span{display:none;}
input.sheet-settings-has-adeptpowers:checked ~ div.sheet-tab-sub-magic input.sheet-tab-adeptpowers,
input.sheet-settings-has-adeptpowers:checked ~ div.sheet-tab-sub-magic input.sheet-tab-adeptpowers + span{
display:block;
}
/* Show Details */
.charsheet textarea{
resize:vertical;
}
div.sheet-details{
display:none;
margin-top: 5px;
margin-left: 9px;
}
input.sheet-show-details{
opacity:0;
}
input.sheet-show-details + span:after{
content: "►";
margin-left: -20px;
}
input.sheet-show-details:checked + span:after{
content: "▼";
margin-left: -20px;
}
input.sheet-show-details:checked ~ .sheet-details{
display:block;
}
/* CHARACTER SHEET TYPE */
input.sheet-type{
width: 60px;
height: 20px;
cursor: pointer;
z-index: 1;
opacity: 0;
margin-bottom: 10px;
position:absolute;
top:5px;
right:5px;
}
input.sheet-type + span::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 60px;
height: 20px;
font-size: 18px;
font-size: 0.9em;
font-weight: bold;
border: 2px solid black;
position: absolute;
top: 5px;
right: 5px;
background: darkred;
color: white;
}
input.sheet-type:checked + span::before{
border-top:2px solid darkred;
border-bottom:2px solid darkred;
font-size: 1.1em;
}
input.sheet-type,
input.sheet-type + span,
input.sheet-type + span::before {
display:none;
}
input.sheet-type-sc,
span.sheet-type-sc::before {
display:block;
}
input.sheet-type-sc:checked ~ input.sheet-type-nsc,
input.sheet-type-sc:checked ~ span.sheet-type-sc,
input.sheet-type-sc:checked ~ span.sheet-type-sc::before {
display: block;
}
input.sheet-type-nsc:checked ~ input.sheet-type-other,
input.sheet-type-nsc:checked ~ span.sheet-type-nsc,
input.sheet-type-nsc:checked ~ span.sheet-type-nsc::before {
display: block;
}
input.sheet-type-other:checked ~ input.sheet-type-sc,
input.sheet-type-other:checked ~ span.sheet-type-other,
input.sheet-type-other:checked ~ span.sheet-type-other::before {
display: block;
}
/* Verletzung ON/OFF */
input.sheet-injury{
width: 75px;
height: 20px;
cursor: pointer;
z-index: 1;
opacity: 0;
margin-bottom: 10px;
position:absolute;
top:5px;
right:70px;
}
input.sheet-injury + span.sheet-injury::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 75px;
height: 20px;
font-size: 18px;
font-size: 0.9em;
font-weight: bold;
border: 2px solid grey;
position: absolute;
top: 5px;
right: 70px;
background: darkgrey;
color: grey;
}
input.sheet-injury:checked + span.sheet-injury::before{
border-color:black;
background: darkred;
color: white;
}
/* Edge ON/OFF */
input.sheet-use-edge{
width: 75px;
height: 20px;
cursor: pointer;
z-index: 1;
opacity: 0;
margin-bottom: 10px;
position:absolute;
top:5px;
right:150px;
}
input.sheet-use-edge + span.sheet-use-edge::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 75px;
height: 20px;
font-size: 18px;
font-size: 0.9em;
font-weight: bold;
border: 2px solid grey;
position: absolute;
top: 5px;
right: 150px;
background: darkgrey;
color: grey;
}
input.sheet-use-edge:checked + span.sheet-use-edge::before{
border-color:black;
background: darkred;
color: white;
}
/* Hide Rolls ON/OFF */
input.sheet-hide-rolls{
width: 30px;
height: 20px;
cursor: pointer;
z-index: 1;
opacity: 0;
margin-bottom: 10px;
position:absolute;
top:5px;
right:230px;
}
input.sheet-hide-rolls + span.sheet-hide-rolls::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 30px;
height: 20px;
font-size: 18px;
font-size: 0.9em;
font-weight: bold;
border: 2px solid grey;
position: absolute;
top: 5px;
right: 230px;
background: darkgrey;
color: grey;
}
input.sheet-hide-rolls:checked + span.sheet-hide-rolls::before{
border-color:black;
background: darkred;
color: white;
}
/* INITIATIVE ACTIVE */
input.sheet-ini_active{
width: 40px;
cursor: pointer;
z-index: 1;
opacity: 0;
}
span.sheet-ini_active{
width: 40px;
float: left;
margin-top: -18px;
}
input.sheet-ini_active + span::before{
content: attr(title);
text-align: center;
display: inline-block;
width: 40px;
}
input.sheet-ini_active:checked + span::before{
font-weight:bold;
}
/* FLOAT */
.sheet-float{
float:left;
}
.sheet-clear{
clear:both;
}
/* CARD */
.sheet-card{
-webkit-box-shadow: 4px 4px 6px 0px rgba(56, 56, 56, 0.8);
-moz-box-shadow: 4px 4px 6px 0px rgba(56, 56, 56, 0.8);
box-shadow: 4px 4px 6px 0px rgba(56, 56, 56, 0.8);
margin-right: 15px;
margin-bottom: 10px;
}
/* Rolltemplates */
/* Template: gm-menu*/
.sheet-rolltemplate-gm-menu{
text-align: center;
border: 1px solid black;
padding-bottom: 5px;
}
.sheet-rolltemplate-gm-menu .sheet-menu-title{
text-align: center;
color: white;
font-weight: bold;
background: black;
}
.sheet-rolltemplate-gm-menu a[href^="!"] {
padding: 5px;
font-size: 0.9em;
background-color: hsla(354,90%,30%,1);
font-weight: bold;
border: 1px solid black;
margin: 1px;
color: whitesmoke;
}
.sheet-rolltemplate-gm-menu .sheet-menu-row:nth-child(even) {
background: rgb(250, 244, 233);
}
.sheet-rolltemplate-gm-menu.sheet-menu-row:nth-child(odd) {
background: rgb(250, 244, 233);
}
/* Template: ROLL*/
.sheet-rolltemplate-roll{
width: 100%;
}
.sheet-rolltemplate-roll .sheet-box {
border: 1px solid black;
border-collapse: inherit;
margin: 0 auto;
padding: 0;
border-radius: 5px;
}
.sheet-rolltemplate-roll .sheet-text{
display: table-cell;
background: black;
padding: 5px;
color: white;
font-style: normal;
font-weight: bold;
text-align: center;
}
.sheet-rolltemplate-roll .sheet-erfolge{
background: rgb(250, 244, 233);
border-radius: 5px;
padding: 5px;
color:black;
text-align: center;
font-style: italic;
min-width: 35px;
}
.sheet-rolltemplate-roll .sheet-note{
background: rgb(250, 244, 233);
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
font-style: italic;
font-size: 12px;
color: black;
font-weight: normal;
line-height: 12px;
padding-top: 2px;
padding-bottom: 2px;
}
.sheet-rolltemplate-roll .inlinerollresult,
.sheet-rolltemplate-roll .userscript-inlinerollresult{
background:none;
border:none;
font-weight: bold;
font-size: 1.1em;
}
.sheet-rolltemplate-roll .inlinerollresult.importantroll,
.sheet-rolltemplate-roll .inlinerollresult.fullcrit,
.sheet-rolltemplate-roll .inlinerollresult.fullfail,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-importantroll,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-fullcrit,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-fullfail{
border:none;
}
.sheet-rolltemplate-roll .inlinerollresult.importantroll,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-roll .inlinerollresult.fullcrit,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-roll .inlinerollresult.fullfail,
.sheet-rolltemplate-roll .userscript-inlinerollresult.userscript-fullfail{
color: #B31515;
}
.sheet-rolltemplate-roll table{
margin:0 auto;
}
.sheet-rolltemplate-roll .sheet-pool{
/*color: #333;*/
font-size: 10px;
line-height: 10px;
font-style: normal;
}
.sheet-rolltemplate-roll .sheet-pool .inlinerollresult,
.sheet-rolltemplate-roll .sheet-pool .userscript-inlinerollresult{
font-size: 10px;
margin: 0;
padding: 0;
}
.sheet-rolltemplate-roll .sheet-erfolge{
position:relative;
}
.sheet-rolltemplate-roll .sheet-injurymod{
font-size: 10px;
position: absolute;
top: -3px;
color: darkred;
font-style: normal;
}
.sheet-rolltemplate-roll .sheet-limit{
font-size: 10px;
position: absolute;
top: -3px;
color: darkred;
font-style: normal;
right: 1px;
}
.sheet-rolltemplate-roll .sheet-border-top{
border-top: 1px solid black;
}
/* Color for rolltemplate-roll*/
/* PINK */
.sheet-rolltemplate-roll .sheet-box.sheet-pink{
border: 1px solid rgb(239, 138, 242);
}
.sheet-rolltemplate-roll .sheet-box.sheet-pink .sheet-text {
background: rgb(239, 138, 242);
}
/* BROWN */
.sheet-rolltemplate-roll .sheet-box.sheet-brown{
border: 1px solid brown;
}
.sheet-rolltemplate-roll .sheet-box.sheet-brown .sheet-text {
background: brown;
}
/* DARKGREEN */
.sheet-rolltemplate-roll .sheet-box.sheet-darkgreen{
border: 1px solid #0A420A;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkgreen .sheet-text {
background: #0A420A;
}
/* PURPLE */
.sheet-rolltemplate-roll .sheet-box.sheet-purple{
border: 1px solid rgb(142, 32, 99);
}
.sheet-rolltemplate-roll .sheet-box.sheet-purple .sheet-text {
background: rgb(142, 32, 99);
}
/* TEAL */
.sheet-rolltemplate-roll .sheet-box.sheet-teal{
border: 1px solid #1499B9;
}
.sheet-rolltemplate-roll .sheet-box.sheet-teal .sheet-text {
background: #1499B9;
}
/* DARKRED */
.sheet-rolltemplate-roll .sheet-box.sheet-darkred{
border: 1px solid darkred;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkred .sheet-text {
background: darkred;
}
/* DARKBLUE */
.sheet-rolltemplate-roll .sheet-box.sheet-darkblue{
border: 1px solid darkblue;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkblue .sheet-text {
background: darkblue;
}
/* PURPLEBLUE */
.sheet-rolltemplate-roll .sheet-box.sheet-purpleblue{
border: 1px solid rgb(66, 84, 211);
}
.sheet-rolltemplate-roll .sheet-box.sheet-purpleblue .sheet-text {
background: rgb(66, 84, 211);
}
/* BLUE */
.sheet-rolltemplate-roll .sheet-box.sheet-blue{
border: 1px solid rgb(1, 79, 168);
}
.sheet-rolltemplate-roll .sheet-box.sheet-blue .sheet-text {
background: rgb(1, 79, 168);
}
/* LIGHTBLUE */
.sheet-rolltemplate-roll .sheet-box.sheet-lightblue{
border: 1px solid rgb(61, 137, 224);
}
.sheet-rolltemplate-roll .sheet-box.sheet-lightblue .sheet-text {
background: rgb(61, 137, 224);
}
/* GREEN */
.sheet-rolltemplate-roll .sheet-box.sheet-green{
border: 1px solid rgb(6, 121, 34);
}
.sheet-rolltemplate-roll .sheet-box.sheet-green .sheet-text {
background: rgb(6, 121, 34);
}
/* ORANGE */
.sheet-rolltemplate-roll .sheet-box.sheet-orange{
border: 1px solid rgb(165, 76, 23);
}
.sheet-rolltemplate-roll .sheet-box.sheet-orange .sheet-text {
background: rgb(165, 76, 23);
}
/* LIGHTSEAGREEN */
.sheet-rolltemplate-roll .sheet-box.sheet-lightseagreen{
border: 1px solid lightseagreen;
}
.sheet-rolltemplate-roll .sheet-box.sheet-lightseagreen .sheet-text {
background: lightseagreen;
}
/* BLUEVIOLET */
.sheet-rolltemplate-roll .sheet-box.sheet-blueviolet{
border: 1px solid blueviolet;
}
.sheet-rolltemplate-roll .sheet-box.sheet-blueviolet .sheet-text {
background: blueviolet;
}
/* Cadetblue */
.sheet-rolltemplate-roll .sheet-box.sheet-cadetblue{
border: 1px solid cadetblue;
}
.sheet-rolltemplate-roll .sheet-box.sheet-cadetblue .sheet-text {
background: cadetblue;
}
/* Cadetblue */
.sheet-rolltemplate-roll .sheet-box.sheet-cornflowerblue{
border: 1px solid cornflowerblue;
}
.sheet-rolltemplate-roll .sheet-box.sheet-cornflowerblue .sheet-text {
background: cornflowerblue;
}
/* crimson */
.sheet-rolltemplate-roll .sheet-box.sheet-crimson{
border: 1px solid crimson;
}
.sheet-rolltemplate-roll .sheet-box.sheet-crimson .sheet-text {
background: crimson;
}
/* darkcyan */
.sheet-rolltemplate-roll .sheet-box.sheet-darkcyan{
border: 1px solid darkcyan;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkcyan .sheet-text {
background: darkcyan;
}
/* darkmagenta */
.sheet-rolltemplate-roll .sheet-box.sheet-darkmagenta{
border: 1px solid darkmagenta;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkmagenta .sheet-text {
background: darkmagenta;
}
/* darkolivegreen */
.sheet-rolltemplate-roll .sheet-box.sheet-darkolivegreen{
border: 1px solid darkolivegreen;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkolivegreen .sheet-text {
background: darkolivegreen;
}
/* darkorange */
.sheet-rolltemplate-roll .sheet-box.sheet-darkorange{
border: 1px solid darkorange;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkorange .sheet-text {
background: darkorange;
}
/* darkslateblue */
.sheet-rolltemplate-roll .sheet-box.sheet-darkslateblue{
border: 1px solid darkslateblue;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkslateblue .sheet-text {
background: darkslateblue;
}
/* darkslategray */
.sheet-rolltemplate-roll .sheet-box.sheet-darkslategray{
border: 1px solid darkslategray;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkslategray .sheet-text {
background: darkslategray;
}
/* deeppink */
.sheet-rolltemplate-roll .sheet-box.sheet-deeppink{
border: 1px solid deeppink;
}
.sheet-rolltemplate-roll .sheet-box.sheet-deeppink .sheet-text {
background: deeppink;
}
/* deepskyblue */
.sheet-rolltemplate-roll .sheet-box.sheet-deepskyblue{
border: 1px solid deepskyblue;
}
.sheet-rolltemplate-roll .sheet-box.sheet-deepskyblue .sheet-text {
background: deepskyblue;
}
/* firebrick */
.sheet-rolltemplate-roll .sheet-box.sheet-firebrick{
border: 1px solid firebrick;
}
.sheet-rolltemplate-roll .sheet-box.sheet-firebrick .sheet-text {
background: firebrick;
}
/* forestgreen */
.sheet-rolltemplate-roll .sheet-box.sheet-forestgreen{
border: 1px solid forestgreen;
}
.sheet-rolltemplate-roll .sheet-box.sheet-forestgreen .sheet-text {
background: forestgreen;
}
/* hotpink */
.sheet-rolltemplate-roll .sheet-box.sheet-hotpink{
border: 1px solid hotpink;
}
.sheet-rolltemplate-roll .sheet-box.sheet-hotpink .sheet-text {
background: hotpink;
}
/* indianred */
.sheet-rolltemplate-roll .sheet-box.sheet-indianred{
border: 1px solid indianred;
}
.sheet-rolltemplate-roll .sheet-box.sheet-indianred .sheet-text {
background: indianred;
}
/* mediumaquamarine */
.sheet-rolltemplate-roll .sheet-box.sheet-mediumaquamarine{
border: 1px solid mediumaquamarine;
}
.sheet-rolltemplate-roll .sheet-box.sheet-mediumaquamarine .sheet-text {
background: mediumaquamarine;
}
/* mediumorchid */
.sheet-rolltemplate-roll .sheet-box.sheet-mediumorchid{
border: 1px solid mediumorchid;
}
.sheet-rolltemplate-roll .sheet-box.sheet-mediumorchid .sheet-text {
background: mediumorchid;
}
/* darkgoldenrod */
.sheet-rolltemplate-roll .sheet-box.sheet-darkgoldenrod{
border: 1px solid darkgoldenrod;
}
.sheet-rolltemplate-roll .sheet-box.sheet-darkgoldenrod .sheet-text {
background: darkgoldenrod;
}
/* mediumorchid */
.sheet-rolltemplate-roll .sheet-box.sheet-mediumorchid{
border: 1px solid mediumorchid;
}
.sheet-rolltemplate-roll .sheet-box.sheet-mediumorchid .sheet-text {
background: mediumorchid;
}
/* mediumseagreen */
.sheet-rolltemplate-roll .sheet-box.sheet-mediumseagreen{
border: 1px solid mediumseagreen;
}
.sheet-rolltemplate-roll .sheet-box.sheet-mediumseagreen .sheet-text {
background: mediumseagreen;
}
/* mediumvioletred */
.sheet-rolltemplate-roll .sheet-box.sheet-mediumvioletred{
border: 1px solid mediumvioletred;
}
.sheet-rolltemplate-roll .sheet-box.sheet-mediumvioletred .sheet-text {
background: mediumvioletred;
}
/* teal */
.sheet-rolltemplate-roll .sheet-box.sheet-teal{
border: 1px solid teal;
}
.sheet-rolltemplate-roll .sheet-box.sheet-teal .sheet-text {
background: teal;
}
/* Template: Alchemie */
.sheet-rolltemplate-alchemie{
text-align:center;
border: 1px solid rgb(66, 84, 211);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-alchemie table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-alchemie table td{
border-radius:3px;
}
.sheet-rolltemplate-alchemie .sheet-text{
background: rgb(66, 84, 211);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-alchemie div:nth-child(even),
.sheet-rolltemplate-alchemie table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-alchemie .inlinerollresult,
.sheet-rolltemplate-alchemie .userscript-inlinerollresult{
background:none;
border:none;
font-weight: bold;
font-size:1.1em;
}
.sheet-rolltemplate-alchemie .inlinerollresult.importantroll,
.sheet-rolltemplate-alchemie .inlinerollresult.fullcrit,
.sheet-rolltemplate-alchemie .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-alchemie .inlinerollresult.importantroll,
.sheet-rolltemplate-alchemie .userscript-inlinerollresult.userscript-importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-alchemie .inlinerollresult.fullcrit,
.sheet-rolltemplate-alchemie .userscript-inlinerollresult.userscript-fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-alchemie .inlinerollresult.fullfail,
.sheet-rolltemplate-alchemie .userscript-inlinerollresult.userscript-fullfail{
color: #B31515;
}
.sheet-rolltemplate-alchemie td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-alchemie td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-alchemie td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-alchemie table{
margin:0 auto;
}
/* Zauber */
.sheet-rolltemplate-zauber{
text-align:center;
border: 1px solid darkred;
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-zauber table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-zauber table td{
border-radius:3px;
}
.sheet-rolltemplate-zauber .sheet-text {
background: darkred;
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-zauber .userscript-inlinerollresult{
font-weight:bold;
}
.sheet-rolltemplate-zauber div:nth-child(even),
.sheet-rolltemplate-zauber table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-zauber .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-zauber .inlinerollresult.importantroll,
.sheet-rolltemplate-zauber .inlinerollresult.fullcrit,
.sheet-rolltemplate-zauber .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-zauber .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-zauber .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-zauber .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-zauber td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-zauber td.sheet-w50{
width:50%;
}
.sheet-rolltemplate-zauber td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-zauber td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-zauber table{
margin:0 auto;
}
/* Komplexe Form */
.sheet-rolltemplate-complex-form{
text-align:center;
border: 1px solid darkred;
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-complex-form table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-complex-form table td{
border-radius:3px;
}
.sheet-rolltemplate-complex-form .sheet-text {
background: darkred;
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-complex-form div:nth-child(even),
.sheet-rolltemplate-complex-form table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-complex-form .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-complex-form .inlinerollresult.importantroll,
.sheet-rolltemplate-complex-form .inlinerollresult.fullcrit,
.sheet-rolltemplate-complex-form .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-complex-form .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-complex-form .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-complex-form .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-complex-form td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-complex-form td.sheet-w50{
width:50%;
}
.sheet-rolltemplate-complex-form td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-complex-form td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-complex-form table{
margin:0 auto;
}
/* Template: Kräfte */
.sheet-rolltemplate-kraft{
text-align:center;
border: 1px solid rgb(28, 174, 135);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-kraft table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-kraft table td{
border-radius:3px;
}
.sheet-rolltemplate-kraft .sheet-text {
background: rgb(28, 174, 135);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-kraft div:nth-child(even),
.sheet-rolltemplate-kraft table tbody tr:nth-child(even){
background:rgb(250, 244, 233)
}
.sheet-rolltemplate-kraft .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-kraft .inlinerollresult.importantroll,
.sheet-rolltemplate-kraft .inlinerollresult.fullcrit,
.sheet-rolltemplate-kraft .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-kraft .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-kraft .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-kraft .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-kraft td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-kraft td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-kraft td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-kraft table{
margin:0 auto;
}
/* Template: Schwächen */
.sheet-rolltemplate-schwaeche{
text-align:center;
border: 1px solid rgb(28, 174, 135);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-schwaeche div.sheet-beschreibung {
font-size: 0.8em;
font-style: italic;
}
.sheet-rolltemplate-schwaeche .sheet-text {
background: rgb(28, 174, 135);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-schwaeche div:nth-child(even),
.sheet-rolltemplate-schwaeche table tbody tr:nth-child(even){
background:rgb(250, 244, 233)
}
.sheet-rolltemplate-schwaeche .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-schwaeche .inlinerollresult.importantroll,
.sheet-rolltemplate-schwaeche .inlinerollresult.fullcrit,
.sheet-rolltemplate-schwaeche .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-schwaeche .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-schwaeche .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-schwaeche .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-schwaeche td{
padding-left: 5px;
padding-right: 5px;
border-radius:3px;
}
.sheet-rolltemplate-schwaeche td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-schwaeche td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-schwaeche table{
margin:0 auto;
}
/* Template: Geister */
.sheet-rolltemplate-geist{
text-align:center;
border: 1px solid rgb(0, 195, 180);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-geist table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-geist .sheet-text {
background: rgb(0, 195, 180);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-geist div:nth-child(even),
.sheet-rolltemplate-geist table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-geist .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-geist .inlinerollresult.importantroll,
.sheet-rolltemplate-geist .inlinerollresult.fullcrit,
.sheet-rolltemplate-geist .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-geist .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-geist .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-geist .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-geist td{
padding-left: 5px;
}
.sheet-rolltemplate-geist td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-geist td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-geist table{
margin:0 auto;
}
/* Template: Sprites */
.sheet-rolltemplate-sprite{
text-align:center;
border: 1px solid rgb(0, 195, 180);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-sprite table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-sprite table td{
border-radius:3px;
}
.sheet-rolltemplate-sprite .sheet-text {
background: rgb(0, 195, 180);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-sprite div:nth-child(even),
.sheet-rolltemplate-sprite table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-sprite .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-sprite .inlinerollresult.importantroll,
.sheet-rolltemplate-sprite .inlinerollresult.fullcrit,
.sheet-rolltemplate-sprite .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-sprite .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-sprite .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-sprite .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-sprite td{
padding-left: 5px;
}
.sheet-rolltemplate-sprite td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-sprite td.sheet-entzugsschaden{
color:black;
}
.sheet-rolltemplate-sprite table{
margin:0 auto;
}
/* Template: Fernkampf */
.sheet-rolltemplate-rangedattack{
text-align:center;
border: 1px solid rgb(93, 17, 105);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-rangedattack table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-rangedattack table td{
border-radius:3px;
}
.sheet-rolltemplate-rangedattack .sheet-text {
background: rgb(93, 17, 105);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-rangedattack div:nth-child(even),
.sheet-rolltemplate-rangedattack table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-rangedattack .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-rangedattack .inlinerollresult.importantroll,
.sheet-rolltemplate-rangedattack .inlinerollresult.fullcrit,
.sheet-rolltemplate-rangedattack .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-rangedattack .inlinerollresult.importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-rangedattack .inlinerollresult.fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-rangedattack .inlinerollresult.fullfail{
color: #B31515;
}
.sheet-rolltemplate-rangedattack td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-rangedattack td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-rangedattack table{
margin:0 auto;
}
/* Template: Nahkampf */
.sheet-rolltemplate-meleeattack{
text-align:center;
border: 1px solid rgb(142, 32, 99);
font-weight: normal;
color: black;
background: white;
font-style: normal;
border-radius:3px;
}
.sheet-rolltemplate-meleeattack table {
font-size: 0.8em;
width: 100%;
}
.sheet-rolltemplate-meleeattack table td{
border-radius:3px;
}
.sheet-rolltemplate-meleeattack .sheet-text {
background: rgb(142, 32, 99);
color: white;
font-weight: bold;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.sheet-rolltemplate-meleeattack div:nth-child(even),
.sheet-rolltemplate-meleeattack table tbody tr:nth-child(even){
background:rgb(250, 244, 233);
}
.sheet-rolltemplate-meleeattack .inlinerollresult{
background:none;
border:none;
}
.sheet-rolltemplate-meleeattack .inlinerollresult.importantroll,
.sheet-rolltemplate-meleeattack .inlinerollresult.fullcrit,
.sheet-rolltemplate-meleeattack .inlinerollresult.fullfail{
border:none;
}
.sheet-rolltemplate-meleeattack .inlinerollresult.importantroll,
.sheet-rolltemplate-meleeattack .userscript-inlinerollresult.userscript-importantroll{
color: #4A57ED;
}
.sheet-rolltemplate-meleeattack .inlinerollresult.fullcrit,
.sheet-rolltemplate-meleeattack .userscript-inlinerollresult.userscript-fullcrit{
color: #3FB315;
}
.sheet-rolltemplate-meleeattack .inlinerollresult.fullfail,
.sheet-rolltemplate-meleeattack .userscript-inlinerollresult.userscript-fullfail{
color: #B31515;
}
.sheet-rolltemplate-meleeattack td{
padding-left: 5px;
padding-right: 5px;
}
.sheet-rolltemplate-meleeattack td.sheet-italic{
font-style:italic;
}
.sheet-rolltemplate-meleeattack table{
margin:0 auto;
}
.userscript-inlinerollresult {
font-weight: bold;
font-size: 1.1em;
}
/* Zustandsmonitor */
.sheet-rolltemplate-zustandsmonitor table{
border: 1px solid black;
border-collapse: inherit;
margin: 0 auto;
padding: 0;
border-radius: 5px;
}
.sheet-rolltemplate-zustandsmonitor tr.sheet-header{
background: black;
color: white;
font-style: normal;
font-weight: bold;
text-align: center;
}
.sheet-rolltemplate-zustandsmonitor tr.sheet-header-white{
background: white;
color: black;
font-style: normal;
font-weight: bold;
text-align: center;
}
.sheet-rolltemplate-zustandsmonitor td.sheet-center{
text-align: center;
}
.sheet-rolltemplate-zustandsmonitor tr.sheet-header-white td{
border-top-left-radius:5px;
border-top-right-radius:5px;
}
.sheet-rolltemplate-zustandsmonitor td.sheet-roundbottomborder5{
border-bottom-left-radius:5px;
border-bottom-right-radius:5px;
}
.sheet-rolltemplate-zustandsmonitor tr.sheet-header td,
.sheet-rolltemplate-zustandsmonitor tr.sheet-header-white td {
padding: 5px;
}
.sheet-rolltemplate-zustandsmonitor tr {
background: rgb(250, 244, 233);
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
color: black;
font-weight: normal;
}
.sheet-rolltemplate-zustandsmonitor td.sheet-successes {
text-align: center;
font-weight: bold;
}
.sheet-rolltemplate-zustandsmonitor tr.sheet-final td {
border-top: 2px solid black;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
.sheet-rolltemplate-zustandsmonitor .sheet-successes{
color:blue;
}
.sheet-rolltemplate-zustandsmonitor .sheet-fullcrit{
color:green;
}
.sheet-rolltemplate-zustandsmonitor .sheet-fullfail{
color:red;
}
/*
!shadowrun --action extended-test --pool 10 --target 14 --intervall 1h
*/
/* API generated outputs */
.sheet-rolltemplate-script table{
border: 1px solid black;
border-collapse: inherit;
margin: 0 auto;
padding: 0;
border-radius: 5px;
}
.sheet-rolltemplate-script tr.userscript-header{
background: black;
color: white;
font-style: normal;
font-weight: bold;
text-align: center;
}
.sheet-rolltemplate-script tr.userscript-header td {
padding: 5px;
}
.sheet-rolltemplate-script tr {
background: rgb(250, 244, 233);
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
color: black;
font-weight: normal;
}
.sheet-rolltemplate-script td.userscript-extended-test-successes {
text-align: center;
font-weight: bold;
}
.sheet-rolltemplate-script tr.userscript-final td {
border-top: 2px solid black;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
.sheet-rolltemplate-script .userscript-extended-test-successes{
color:blue;
}
.sheet-rolltemplate-script .userscript-fullcrit{
color:green;
}
.sheet-rolltemplate-script .userscript-fullfail{
color:red;
}
/* Colors */
.sheet-color-darkred{
color:darkred;
}
.sheet-color-darkblue{
color:darkblue;
}
.sheet-color-darkgreen{
color:darkgreen;
}
.sheet-color-blueviolet{
color:blueviolet;
}
.sheet-color-darkslategray{
color:darkslategray;
}
/* Aligns */
.sheet-left{
text-align:left;
}
.sheet-center{
text-align:center;
}
.sheet-right{
text-align:right;
}
/* floats */
.sheet-float-left{
float:left;
}
.sheet-float-center{
float:center;
}
.sheet-float-right{
float:right;
}
/* Widths */
.sheet-w5{width:5%;}
.sheet-w10{width:10%;}
.sheet-w15{width:15%;}
.sheet-w20{width:20%;}
.sheet-w25{width:25%;}
.sheet-w30{width:30%;}
.sheet-w35{width:35%;}
.sheet-w40{width:40%;}
.sheet-w45{width:45%;}
.sheet-w50{width:50%;}
.sheet-w55{width:55%;}
.sheet-w60{width:60%;}
.sheet-w65{width:65%;}
.sheet-w70{width:70%;}
.sheet-w75{width:75%;}
.sheet-w80{width:80%;}
.sheet-w85{width:85%;}
.sheet-w90{width:90%;}
.sheet-w95{width:95%;}
.sheet-w96{width:96%;}
.sheet-w97{width:97%;}
.sheet-w98{width:98%;}
.sheet-w100{width:100%;}
.sheet-w20px{width:20px;}
.sheet-w25px{width:25px;}
.sheet-w30px{width:30px;}
.sheet-w35px{width:35px;}
.sheet-w38px{width:38px;}
.sheet-w40px{width:40px;}
.sheet-w45px{width:45px;}
.sheet-w48px{width:48px;}
.sheet-w49px{width:49px;}
.sheet-w50px{width:50px;}
.sheet-w55px{width:55px;}
.sheet-w57px{width:57px;}
.sheet-w60px{width:60px;}
.sheet-w65px{width:65px;}
.sheet-w70px{width:70px;}
.sheet-w75px{width:75px;}
.sheet-w80px{width:80px;}
.sheet-w85px{width:85px;}
.sheet-w90px{width:90px;}
.sheet-w95px{width:95px;}
.sheet-w100px{width:100px;}
.sheet-w105px{width:105px;}
.sheet-w101px{width:101px;}
.sheet-w110px{width:110px;}
.sheet-w120px{width:120px;}
.sheet-w125px{width:125px;}
.sheet-w130px{width:130px;}
.sheet-w135px{width:135px;}
.sheet-w140px{width:140px;}
.sheet-w145px{width:145px;}
.sheet-w150px{width:150px;}
.sheet-w155px{width:155px;}
.sheet-w160px{width:160px;}
.sheet-w165px{width:165px;}
.sheet-w175px{width:175px;}
.sheet-w180px{width:180px;}
.sheet-w200px{width:200px;}
.sheet-w220px{width:220px;}
.sheet-w225px{width:225px;}
.sheet-w230px{width:230px;}
.sheet-w240px{width:240px;}
.sheet-w250px{width:250px;}
.sheet-w255px{width:255px;}
.sheet-w260px{width:260px;}
.sheet-w270px{width:270px;}
.sheet-w275px{width:275px;}
.sheet-w300px{width:300px;}
.sheet-w300px{width:400px;}
.sheet-w408px{width:408px;}
.sheet-wm25px{min-width:25px;}
.sheet-wm50px{min-width:50px;}
.sheet-wm75px{min-width:75px;}
.sheet-wm100px{min-width:100px;}
.sheet-wm125px{min-width:125px;}
.sheet-wm150px{min-width:150px;}
.sheet-wm175px{min-width:175px;}
.sheet-wm200px{min-width:200px;}
.sheet-wm225px{min-width:225px;}
.sheet-wm250px{min-width:250px;}
.sheet-wm275px{min-width:275px;}
.sheet-wm300px{min-width:300px;}
.sheet-wm745px{min-width:745px;}
.sheet-wm785px{min-width:785px;}
.sheet-wm795px{min-width:795px;}
.sheet-wm810px{min-width:810px;}
.sheet-h100px{height:100px;}
.sheet-h300px{height:300px;}
/* Margins */
.sheet-margin-bottom-10{
margin-bottom:10px;
}
.sheet-margin-right-10{
margin-right:10px;
}
.sheet-margin-left-25{
margin-left:25px;
}
/* Display: None */
.sheet-hidden{
display:none;
}
/* Style repcontrol */
.charsheet .repitem{
float: left;
clear: both;
}
.charsheet .repcontrol {
float: left;
width: 100%;
}
.charsheet .repcontrol .btn {
font-size: 12px;
margin: 0px;
padding: 0px;
background: darkred;
color: white;
padding-left: 2px;
padding-right: 2px;
}
.charsheet .itemcontrol .repcontrol_del {
background-color: darkred;
color: white;
font-size: 20px;
padding: 0;
margin: 0px;
padding-left: 7px;
padding-right: 7px;
background-image: none;
}
.charsheet .repcontrol .btn.repcontrol_add,
.charsheet .repcontrol .btn.repcontrol_edit{
color:darkred;
text-shadow:none;
}
.charsheet .repcontrol .btn.repcontrol_add::after,
.charsheet .repcontrol .btn.repcontrol_edit::after{
margin-left: -27px;
color: white;
padding-right: 5px;
font-weight: bold;
}
[data-groupname=repeating_sins] > button.btn.repcontrol_add::after {
content: "+SIN";
}
[data-groupname=repeating_sins] > button.btn.repcontrol_edit::after {
content: "SINS bearbeiten";
}
[data-groupname=repeating_licenses] > button.btn.repcontrol_add::after {
content: "+Lizenz";
}
[data-groupname=repeating_licenses] > button.btn.repcontrol_edit::after {
content: "Lizenzen bearbeiten";
}
[data-groupname=repeating_lifestyles] > button.btn.repcontrol_add::after {
content: "+Lebensstil";
}
[data-groupname=repeating_lifestyles] > button.btn.repcontrol_edit::after {
content: "Lebensstile bearbeiten";
}
[data-groupname=repeating_positivequalities] > button.btn.repcontrol_add::after {
content: "+Vorteil";
}
[data-groupname=repeating_positivequalities] > button.btn.repcontrol_edit::after {
content: "Vorteile bearbeiten";
}
[data-groupname=repeating_negativequalities] > button.btn.repcontrol_add::after {
content: "+Nachteil";
}
[data-groupname=repeating_negativequalities] > button.btn.repcontrol_edit::after {
content: "Nachteile bearbeiten";
}
[data-groupname=repeating_advancementkarma] > button.btn.repcontrol_add::after {
content: "+Karma";
}
[data-groupname=repeating_advancementkarma] > button.btn.repcontrol_edit::after {
content: "Karma bearbeiten";
}
[data-groupname=repeating_advancementnuyen] > button.btn.repcontrol_add::after {
content: "+Nuyen";
}
[data-groupname=repeating_advancementnuyen] > button.btn.repcontrol_edit::after {
content: "Nuyen bearbeiten";
}
[data-groupname=repeating_skillsaction] > button.btn.repcontrol_add::after {
content: "+Aktionsfertigkeit";
}
[data-groupname=repeating_skillsaction] > button.btn.repcontrol_edit::after {
content: "Aktionsfertigkeiten bearbeiten";
}
[data-groupname=repeating_skillsknowledge] > button.btn.repcontrol_add::after {
content: "+Wissensfertigkeit";
}
[data-groupname=repeating_skillsknowledge] > button.btn.repcontrol_edit::after {
content: "Wissensfertigkeiten bearbeiten";
}
[data-groupname=repeating_weaponsranged] > button.btn.repcontrol_add::after {
content: "+Fernkampfwaffe";
}
[data-groupname=repeating_weaponsranged] > button.btn.repcontrol_edit::after {
content: "Fernkampfwaffen bearbeiten";
}
[data-groupname=repeating_weaponsmelee] > button.btn.repcontrol_add::after {
content: "+Nahkampfwaffe";
}
[data-groupname=repeating_weaponsmelee] > button.btn.repcontrol_edit::after {
content: "Nahkampfwaffen bearbeiten";
}
[data-groupname=repeating_combatpools] > button.btn.repcontrol_add::after {
content: "+Pool";
}
[data-groupname=repeating_combatpools] > button.btn.repcontrol_edit::after {
content: "Pools bearbeiten";
}
[data-groupname=repeating_armor] > button.btn.repcontrol_add::after {
content: "+Panzerung";
}
[data-groupname=repeating_armor] > button.btn.repcontrol_edit::after {
content: "Panzerung bearbeiten";
}
[data-groupname=repeating_spellcasting] > button.btn.repcontrol_add::after {
content: "+Zauber";
}
[data-groupname=repeating_spellcasting] > button.btn.repcontrol_edit::after {
content: "Zauber bearbeiten";
}
[data-groupname=repeating_alchemyspells] > button.btn.repcontrol_add::after {
content: "+Alchemistischer Zauber";
}
[data-groupname=repeating_alchemyspells] > button.btn.repcontrol_edit::after {
content: "Alchemistische Zauber bearbeiten";
}
[data-groupname=repeating_preparations] > button.btn.repcontrol_add::after {
content: "+Praeparat";
}
[data-groupname=repeating_preparations] > button.btn.repcontrol_edit::after {
content: "Praeparate bearbeiten";
}
[data-groupname=repeating_summonspirit] > button.btn.repcontrol_add::after {
content: "+Geistertyp";
}
[data-groupname=repeating_summonspirit] > button.btn.repcontrol_edit::after {
content: "Geistertyp bearbeiten";
}
[data-groupname=repeating_rituals] > button.btn.repcontrol_add::after {
content: "+Ritual";
}
[data-groupname=repeating_rituals] > button.btn.repcontrol_edit::after {
content: "Rituale bearbeiten";
}
[data-groupname=repeating_adeptpowers] > button.btn.repcontrol_add::after {
content: "+Adeptenkraft";
}
[data-groupname=repeating_adeptpowers] > button.btn.repcontrol_edit::after {
content: "Adeptenkraefte bearbeiten";
}
[data-groupname=repeating_cyberdecks] > button.btn.repcontrol_add::after {
content: "+Cyberdeck";
}
[data-groupname=repeating_cyberdecks] > button.btn.repcontrol_edit::after {
content: "Cyberdecks bearbeiten";
}
[data-groupname=repeating_riggerconsoles] > button.btn.repcontrol_add::after {
content: "+Riggerkonsole";
}
[data-groupname=repeating_riggerconsoles] > button.btn.repcontrol_edit::after {
content: "Riggerkonsolen bearbeiten";
}
[data-groupname=repeating_matrixprograms] > button.btn.repcontrol_add::after {
content: "+Programm";
}
[data-groupname=repeating_matrixprograms] > button.btn.repcontrol_edit::after {
content: "Programme bearbeiten";
}
[data-groupname=repeating_compilesprite] > button.btn.repcontrol_add::after {
content: "+Spriteart";
}
[data-groupname=repeating_compilesprite] > button.btn.repcontrol_edit::after {
content: "Sprites bearbeiten";
}
[data-groupname=repeating_activesprites] > button.btn.repcontrol_add::after {
content: "+Aktives Sprite";
}
[data-groupname=repeating_activesprites] > button.btn.repcontrol_edit::after {
content: "Aktive Sprites bearbeiten";
}
[data-groupname=repeating_complexforms] > button.btn.repcontrol_add::after {
content: "+Komplexe Form";
}
[data-groupname=repeating_complexforms] > button.btn.repcontrol_edit::after {
content: "Komplexe Formen bearbeiten";
}
[data-groupname=repeating_connections] > button.btn.repcontrol_add::after {
content: "+Connection";
}
[data-groupname=repeating_connections] > button.btn.repcontrol_edit::after {
content: "Connections bearbeiten";
}
[data-groupname=repeating_equipment] > button.btn.repcontrol_add::after {
content: "+Gegenstand";
}
[data-groupname=repeating_equipment] > button.btn.repcontrol_edit::after {
content: "Inventar bearbeiten";
}
[data-groupname=repeating_augmentations] > button.btn.repcontrol_add::after {
content: "+Augmentierung";
}
[data-groupname=repeating_augmentations] > button.btn.repcontrol_edit::after {
content: "Augmentierungen bearbeiten";
}
[data-groupname=repeating_ammunition] > button.btn.repcontrol_add::after {
content: "+Munition";
}
[data-groupname=repeating_ammunition] > button.btn.repcontrol_edit::after {
content: "Munition bearbeiten";
}
[data-groupname=repeating_vehicles] > button.btn.repcontrol_add::after {
content: "+Fahrzeug";
}
[data-groupname=repeating_vehicles] > button.btn.repcontrol_edit::after {
content: "Fahrzeuge bearbeiten";
}
[data-groupname=repeating_drones] > button.btn.repcontrol_add::after {
content: "+Drohne";
}
[data-groupname=repeating_drones] > button.btn.repcontrol_edit::after {
content: "Drohnen bearbeiten";
}
[data-groupname=repeating_orders] > button.btn.repcontrol_add::after {
content: "+Bestellung";
}
[data-groupname=repeating_orders] > button.btn.repcontrol_edit::after {
content: "Bestellungen bearbeiten";
}
[data-groupname=repeating_activespirits] > button.btn.repcontrol_add::after {
content: "+Geist";
}
[data-groupname=repeating_activespirits] > button.btn.repcontrol_edit::after {
content: "Geister bearbeiten";
}
[data-groupname=repeating_activespirits]{
clear:both;
}
[data-groupname=repeating_activespirits] > div.repitem{
float:left;
clear:none;
}
a.btn.repcontrol_move{
right: 50px;
position: absolute;
right: -29px;
height: 10px;
padding-top: 0px;
}
.charsheet .editmode + .repcontrol .btn.repcontrol_edit::after {
content: "Speichern";
}
input[readonly],input[disabled="true"]{
background:#DADADA;
font-weight:bold;
border-color: #BBB;
}
.sheet-color-darkred ~ input[readonly],
.sheet-color-darkred input[readonly],
.sheet-color-darkred ~ input[disabled="true"],
.sheet-color-darkred input[disabled="true"]{
color: darkred;
}
.sheet-color-darkblue ~ input[readonly],
.sheet-color-darkblue input[readonly],
.sheet-color-darkblue ~ input[disabled="true"],
.sheet-color-darkblue input[disabled="true"]{
color: darkblue;
}
.sheet-color-blueviolet ~ input[readonly],
.sheet-color-blueviolet input[readonly],
.sheet-color-blueviolet ~ input[disabled="true"],
.sheet-color-blueviolet input[disabled="true"]{
color: blueviolet;
}
.sheet-color-darkgreen ~ input[readonly],
.sheet-color-darkgreen input[readonly],
.sheet-color-darkgreen ~ input[disabled="true"],
.sheet-color-darkgreen input[disabled="true"]{
color: darkgreen;
}
<div class="wrapper">
<!--<input name="attr_fixme" type="text" value=""/>
<button name="roll_fixme" type="roll" value="!shadowrun --character @{character_id} --action fix-repeating --name @{fixme}">Roll</button>-->
<input class="hidden settings-show-matrix" type="checkbox" name="attr_settings_show_matrix" checked="checked" />
<input class="hidden settings-is-technomancer" type="checkbox" name="attr_settings_is_technomancer" checked="checked"/>
<input class="hidden settings-is-mage" type="checkbox" name="attr_settings_is_mage" checked="checked" />
<input class="hidden settings-has-spellcasting" type="checkbox" name="attr_settings_has_spellcasting" checked="checked" />
<input class="hidden settings-has-alchemy" type="checkbox" name="attr_settings_has_alchemy" checked="checked" />
<input class="hidden settings-has-summoning" type="checkbox" name="attr_settings_has_summoning" checked="checked" />
<input class="hidden settings-has-rituals" type="checkbox" name="attr_settings_has_rituals" checked="checked" />
<input class="hidden settings-has-adeptpowers" type="checkbox" name="attr_settings_has_adeptpowers" checked="checked" />
<!-- Sheet Worker Helper -->
<input class="hidden" type="text" name="attr_cmd_use_edge_token"/>
<input class="hidden" type="text" name="attr_cmd_use_edge_text"/>
<input class="hidden" type="text" name="attr_cmd_use_edge_mod"/>
<input class="hidden" type="text" name="attr_cmd_injury_mod"/>
<input class="hidden" type="text" name="attr_cmd_injury_text"/>
<!-- First Menu Row -->
<input class="tab tab-basis" type="radio" name="attr_tabs" value="0" checked="checked" />
<span class="tab" title="Charakter" ></span>
<input class="tab tab-skills" type="radio" name="attr_tabs" value="1"/>
<span class="tab" title="Fertigkeiten" ></span>
<input class="tab tab-combat" type="radio" name="attr_tabs" value="2"/>
<span class="tab" title="Kampf" ></span>
<input class="tab tab-magic" type="radio" name="attr_tabs" value="3"/>
<span class="tab" title="Magie" ></span>
<input class="tab tab-matrix" type="radio" name="attr_tabs" value="4"/>
<span class="tab" title="Matrix" ></span>
<input class="tab tab-technomancer" type="radio" name="attr_tabs" value="5"/>
<span class="tab" title="Technomancer" ></span>
<input class="tab tab-social" type="radio" name="attr_tabs" value="6"/>
<span class="tab" title="Sozial" ></span>
<input class="tab tab-equipment" type="radio" name="attr_tabs" value="7"/>
<span class="tab" title="Ausrüstung" ></span>
<!-- Charactersheet Menu -->
<input class="sheet-type sheet-type-sc" type="radio" name="attr_sheet_type" value="SC" checked="checked"/>
<span class="sheet-type sheet-type-sc" title="SC" ></span>
<input class="sheet-type sheet-type-nsc" type="radio" name="attr_sheet_type" value="NSC"/>
<span class="sheet-type sheet-type-nsc" title="NSC" ></span>
<input class="sheet-type sheet-type-other" type="radio" name="attr_sheet_type" value="OTHER"/>
<span class="sheet-type sheet-type-other" title="OTHER" ></span>
<!-- Settings -->
<input class="sheet-injury" type="checkbox" name="attr_use_injury_mod"></input>
<span class="sheet-injury" title="Verletzung" ></span>
<input class="sheet-use-edge" type="checkbox" name="attr_use_edge"></input>
<span class="sheet-use-edge" title="Edge" ></span>
<input class="sheet-hidden" type="text" name="attr_hide_rolls_cmd" value="/em "></input>
<input class="sheet-hide-rolls" type="checkbox" name="attr_hide_rolls"></input>
<span class="sheet-hide-rolls" title="/w" ></span>
<div class="clear"></div>
<!-- Submenu: Basis -->
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-character" type="radio" name="attr_menu_basis" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-character" title="Charakter" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-attributes" type="radio" name="attr_menu_basis" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-attributes" title="Attribute" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-qualities" type="radio" name="attr_menu_basis" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-qualities" title="Vor/Nachteile" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-description" type="radio" name="attr_menu_basis" value="3"/>
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-description" title="Beschreibung" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-advancement" type="radio" name="attr_menu_basis" value="4"/>
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-advancement" title="Entwicklung" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-basis tab-settings" type="radio" name="attr_menu_basis" value="5"/>
<span class="tab tab-sub tab-sub-menu tab-sub-basis tab-settings" title="Einstellungen" ></span>
<!-- Submenu: Skills -->
<input class="tab tab-sub tab-sub-menu tab-sub-skills tab-actionskills" type="radio" name="attr_menu_skills" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-skills tab-actionskills" title="Aktion" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-skills tab-knowledgeskills" type="radio" name="attr_menu_skills" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-skills tab-knowledgeskills" title="Wissen" ></span>
<!-- Submenu: Magic -->
<div class="tab-sub-magic">
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-spellcasting" type="radio" name="attr_menu_magic" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-spellcasting" title="Spruchzauberei" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-alchemy" type="radio" name="attr_menu_magic" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-alchemy" title="Alchemie" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-summoning" type="radio" name="attr_menu_magic" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-summoning" title="Beschwören" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-rituals" type="radio" name="attr_menu_magic" value="3"/>
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-rituals" title="Rituale" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-adeptpowers" type="radio" name="attr_menu_magic" value="4"/>
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-adeptpowers" title="Adeptenkräfte" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-magic tab-tradition" type="radio" name="attr_menu_magic" value="5"/>
<span class="tab tab-sub tab-sub-menu tab-sub-magic tab-tradition" title="Tradition" ></span>
<div class="clear"></div>
<div class="tab tab-magic-spellcasting">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Zauber</div>
<div class="w45px">Wert</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_spellcasting">
<input class="hidden" type="text" name="attr_spellcasting_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_spellcasting_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_spellcasting_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_spellcasting_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_spellcasting_basis' value='!shadowrun --character @{character_id} --action spellcasting-cast --id @{spellcasting_id} --spellname "@{spellcasting_name}" --basis @{spellcasting_basis} --mod 0 --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_spellcasting_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_spellcasting_mod' value='!shadowrun --character @{character_id} --action spellcasting-cast --id @{spellcasting_id} --spellname "@{spellcasting_name}" --basis @{spellcasting_basis} --mod ?{Modifikator?|@{spellcasting_mod}} --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_spellcasting" value="@{spellcasting_basis}+@{spellcasting_mod}" disabled></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_spellcasting' value='!shadowrun --character @{character_id} --action spellcasting-cast --id @{spellcasting_id} --spellname "@{spellcasting_name}" --basis @{spellcasting_basis} --mod @{spellcasting_mod} --force ?{Kraftstufe?|1}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_spellcasting_note" class="w95 h100px clear"></textarea>
</div>
</div>
<!--pools, dodge, etc-->
</div><!--float-->
</div><!--submenu:spellcasting-->
<div class="tab tab-magic-alchemy">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Zauber</div>
<div class="w45px">Pool</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_alchemyspells">
<input class="hidden" type="text" name="attr_alchemyspells_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_alchemy_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_alchemy_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_alchemy_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_alchemy_basis' value='!shadowrun --character @{character_id} --action alchemy-prepare --spell-name "@{alchemy_name}" --basis @{alchemy_basis} --mod 0 --ks ?{Kraftstufe?|1} --trigger @{trigger_entzug}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_alchemy_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_alchemy_mod' value='!shadowrun --character @{character_id} --action alchemy-prepare --spell-name "@{alchemy_name}" --basis @{alchemy_basis} --mod ?{Mod|@{alchemy_mod}} --ks ?{Kraftstufe?|1} --trigger @{trigger_entzug}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_alchemy" value="@{alchemy_basis}+@{alchemy_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_alchemy' value='!shadowrun --character @{character_id} --action alchemy-prepare --spell-name "@{alchemy_name}" --basis @{alchemy_basis} --mod @{alchemy_mod} --ks ?{Kraftstufe?|1} --trigger @{trigger_entzug}'></button>
<select name="attr_trigger_entzug" class="buttoninput buttoninput-right trigger-select w110px">
<option value="Befehl">Befehl</option>
<option value="Kontakt">Kontakt</option>
<option value="Zeitzünder">Zeitzünder</option>
<option value="Ver._Befehl">Ver. Befehl</option>
<option value="Ver._Kontakt">Ver. Kontakt</option>
<option value="Ver._Kontakt_Geschlecht/Metatyp">Ver. Kontakt Geschlecht/Metatyp</option>
</select>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_alchemy_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Präparate</div>
<div class="w45px">Wirk.</div>
<div class="w45px">KS</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_preparations">
<input class="hidden" type="text" name="attr_preparations_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_preparations_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_preparations_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_preparations_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_preparations_basis' value='!shadowrun --character @{character_id} --action alchemy-use --id @{preparations_id} --wirksamkeit @{preparations_basis} --force @{preparations_mod}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_preparations_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_preparations_mod' value='!shadowrun --character @{character_id} --action alchemy-use --id @{preparations_id} --wirksamkeit @{preparations_basis} --force @{preparations_mod}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_preparations" value="@{preparations_basis}+@{preparations_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_preparations' value='!shadowrun --character @{character_id} --action alchemy-use --id @{preparations_id} --wirksamkeit @{preparations_basis} --force @{preparations_mod}'></button>
<div class="details">
<div class="labels color-darkred w100">Herstellungszeitpunkt</div>
<input class="buttoninput buttoninput-both left" type="text" name="attr_preparations_date" value="0"></input>
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_preparations_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
</div><!--submenu:alchemy-->
<div class="tab tab-magic-summoning">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Geist</div>
<div class="w45px">Pool</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_summonspirit">
<input class="hidden" type="text" name="attr_summonspirit_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_summonspirit_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_summonspirit_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_summonspirit_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_summonspirit_basis' value='!summon Geister-@{summonspirit_name} T
!shadowrun --character @{character_id} --action summon-spirit --spirit-name "@{summonspirit_name}" --basis @{summonspirit_basis} --mod 0 --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_summonspirit_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_summonspirit_mod' value='!summon Geister-@{summonspirit_name} T
!shadowrun --character @{character_id} --action summon-spirit --spirit-name "@{summonspirit_name}" --basis @{summonspirit_basis} --mod ?{Modifikator?|@{summonspirit_mod}} --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_summonspirit" value="@{summonspirit_basis}+@{summonspirit_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_summonspirit' value='!summon Geister-@{summonspirit_name} T
!shadowrun --character @{character_id} --action summon-spirit --spirit-name "@{summonspirit_name}" --basis @{summonspirit_basis} --mod @{summonspirit_mod} --force ?{Kraftstufe?|1}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_summonspirit_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
<fieldset class="repeating_activespirits">
<input class="hidden" type="text" name="attr_activespirits_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Aktive Geister</div>
<div class="w45px">Stufe</div>
<div class="w45px">Dienste</div>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_activespirits_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_activespirits_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_stufe" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_stufe' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_dienste" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_dienste' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<div class="details">
<div class="row labels color-darkred">
<div class="w45px">KON</div>
<div class="w45px">STR</div>
<div class="w45px">GES</div>
<div class="w45px">REA</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_kon" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_kon' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_str" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_str' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_ges" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_ges' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_rea" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_rea' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
</div>
<div class="row labels color-darkblue">
<div class="w45px">INT</div>
<div class="w45px">LOG</div>
<div class="w45px">WIL</div>
<div class="w45px">CHA</div>
</div>
<div class="row labels color-darkblue">
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_int" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_int' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_log" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_log' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_wil" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_wil' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_cha" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_cha' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
</div>
<div class="row labels color-blueviolet">
<div class="w45px">EDG</div>
<div class="w45px">ESS</div>
<div class="w45px">MAG</div>
</div>
<div class="row labels color-blueviolet">
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_edg" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_edg' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_ess" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activespirits_ess' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activespirits_mag" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_mag' value='@{hide_rolls_cmd} Noch nicht implementiert @{activespirits_id}'></button>
</div>
<div class="row labels color-darkred">
<div class="w45px">Fertigkeiten</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_1_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_1_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_1' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_1_name}}}{{basis=@{activespirits_skill_1_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_1_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_1_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_2_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_2_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_2' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_2_name}}}{{basis=@{activespirits_skill_2_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_2_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_2_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_3_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_3_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_3' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_3_name}}}{{basis=@{activespirits_skill_3_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_3_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_3_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_4_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_4_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_4' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_4_name}}}{{basis=@{activespirits_skill_4_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_4_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_4_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_5_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_5_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_5' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_5_name}}}{{basis=@{activespirits_skill_5_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_5_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_5_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_6_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_6_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_6' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_6_name}}}{{basis=@{activespirits_skill_6_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_6_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_6_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_7_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_7_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_7' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_7_name}}}{{basis=@{activespirits_skill_7_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_7_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_7_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_8_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_8_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_8' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_8_name}}}{{basis=@{activespirits_skill_8_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_8_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_8_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_9_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_9_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_9' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_9_name}}}{{basis=@{activespirits_skill_9_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_9_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_9_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_skill_10_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_skill_10_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_skill_100' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activespirits_name} benutzt @{activespirits_skill_10_name}}}{{basis=@{activespirits_skill_10_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activespirits_skill_10_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activespirits_skill_10_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<div class="w45px">Kräfte</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_1_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_1_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_1' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_1_name}}}{{art=%{Kräfte-@{activespirits_power_1_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_1_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_1_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_1_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_1_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_2_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_2_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_2' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_2_name}}}{{art=%{Kräfte-@{activespirits_power_2_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_2_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_2_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_2_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_2_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_3_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_3_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_3' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_3_name}}}{{art=%{Kräfte-@{activespirits_power_3_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_3_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_3_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_3_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_3_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_4_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_4_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_4' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_4_name}}}{{art=%{Kräfte-@{activespirits_power_4_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_4_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_4_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_4_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_4_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_5_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_5_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_5' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_5_name}}}{{art=%{Kräfte-@{activespirits_power_5_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_5_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_5_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_5_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_5_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_6_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_6_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_6' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_6_name}}}{{art=%{Kräfte-@{activespirits_power_6_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_6_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_6_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_6_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_6_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_7_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_7_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_7' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_7_name}}}{{art=%{Kräfte-@{activespirits_power_7_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_7_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_7_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_7_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_7_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_8_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_8_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_8' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_8_name}}}{{art=%{Kräfte-@{activespirits_power_8_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_8_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_8_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_8_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_8_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_9_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_9_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_9' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_9_name}}}{{art=%{Kräfte-@{activespirits_power_9_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_9_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_9_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_9_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_9_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_power_10_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_power_10_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_power_10' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_power_10_name}}}{{art=%{Kräfte-@{activespirits_power_10_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_power_10_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_power_10_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_power_10_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_power_10_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<div class="w45px">Schwächen</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_1_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_1_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_1' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_1_name}}}{{art=%{Kräfte-@{activespirits_weakness_1_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_1_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_1_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_1_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_1_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_2_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_2_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_2' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_2_name}}}{{art=%{Kräfte-@{activespirits_weakness_2_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_2_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_2_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_2_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_2_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_3_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_3_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_3' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_3_name}}}{{art=%{Kräfte-@{activespirits_weakness_3_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_3_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_3_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_3_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_3_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_4_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_4_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_4' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_4_name}}}{{art=%{Kräfte-@{activespirits_weakness_4_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_4_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_4_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_4_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_4_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_5_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_5_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_5' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_5_name}}}{{art=%{Kräfte-@{activespirits_weakness_5_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_5_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_5_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_5_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_5_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_6_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_6_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_6' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_6_name}}}{{art=%{Kräfte-@{activespirits_weakness_6_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_6_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_6_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_6_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_6_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_7_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_7_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_7' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_7_name}}}{{art=%{Kräfte-@{activespirits_weakness_7_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_7_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_7_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_7_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_7_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_8_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_8_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_8' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_8_name}}}{{art=%{Kräfte-@{activespirits_weakness_8_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_8_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_8_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_8_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_8_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_9_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_9_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_9' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_9_name}}}{{art=%{Kräfte-@{activespirits_weakness_9_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_9_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_9_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_9_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_9_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activespirits_weakness_10_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activespirits_weakness_10_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activespirits_weakness_10' value='@{hide_rolls_cmd} &{template:schwaeche}{{text=@{activespirits_name} benutzt }}{{name=@{activespirits_weakness_10_name}}}{{art=%{Kräfte-@{activespirits_weakness_10_name}|Art}}}{{handlung=%{Kräfte-@{activespirits_weakness_10_name}|Handlung}}}{{dauer=%{Kräfte-@{activespirits_weakness_10_name}|Dauer}}}{{reichweite=%{Kräfte-@{activespirits_weakness_10_name}|Reichweite}}}{{beschreibung=%{Kräfte-@{activespirits_weakness_10_name}|Beschreibung}}}'></button>
</div>
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_activespirits_note" class="w95 h100px clear"></textarea>
</div>
</div>
</div><!--float-->
</fieldset><!--pools, dodge, etc-->
</div><!--submenu:summoning-->
<div class="tab tab-magic-rituals">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Ritual</div>
<div class="w45px">Pool</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_rituals">
<input class="hidden" type="text" name="attr_rituals_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_rituals_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_rituals_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_rituals_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_rituals_basis' value='@{hide_rolls_cmd} Noch nicht implementiert @{rituals_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_rituals_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_rituals_mod' value='@{hide_rolls_cmd} Noch nicht implementiert @{rituals_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_rituals" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_rituals' value='@{hide_rolls_cmd} Noch nicht implementiert @{rituals_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_rituals_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
</div><!--submenu:rituals-->
<div class="tab tab-magic-adeptpowers">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Adeptenkraft</div>
<div class="w45px">Pool</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_adeptpowers">
<input class="hidden" type="text" name="attr_adeptpowers_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_adeptpowers_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_adeptpowers_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_adeptpowers_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_adeptpowers_basis' value="@{hide_rolls_cmd} &{template:roll}{{color=purple}}{{text=@{adeptpowers_name}}}{{desc=@{adeptpowers_note}}}{{basis=@{adeptpowers_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{adeptpowers_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{adeptpowers_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_adeptpowers_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_adeptpowers_mod' value="@{hide_rolls_cmd} &{template:roll}{{color=purple}}{{text=@{adeptpowers_name}}}{{desc=@{adeptpowers_note}}}{{basis=@{adeptpowers_basis}}}{{mod=[[?{Modifikator|@{adeptpowers_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{adeptpowers_basis}+?{Modifikator|@{adeptpowers_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{adeptpowers_basis}+?{Modifikator|@{adeptpowers_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_adeptpowers" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_adeptpowers' value="@{hide_rolls_cmd} &{template:roll}{{color=purple}}{{text=@{adeptpowers_name}}}{{desc=@{adeptpowers_note}}}{{basis=@{adeptpowers_basis}}}{{mod=[[@{adeptpowers_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{adeptpowers_basis}+@{adeptpowers_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{adeptpowers_basis}+@{adeptpowers_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_adeptpowers_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
</div><!--submenu:adeptpowers-->
<div class="tab tab-magic-tradition">
<div class="float card">
<div class="row labels color-darkred">
<div class="w105px">Tradition</div>
<div class="w85px">Entzugsattribut</div>
<div class="w50px center">WIL</div>
<div class="w50px center">Mod</div>
<div class="w45px">Total</div>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_tradition_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_tradition_name" value="0"></input>
<select name="attr_tradition_drainattribute" class="buttoninput buttoninput-center w60px">
<option value="@{kon}">KON</option>
<option value="@{ges}">GES</option>
<option value="@{rea}">REA</option>
<option value="@{str}">STR</option>
<option value="@{wil}">WIL</option>
<option value="@{log}">LOG</option>
<option value="@{int}">INT</option>
<option value="@{cha}">CHA</option>
<option value="@{mag}">MAG</option>
<option value="@{res}">RES</option>
</select>
<input class="buttoninput buttoninput-center" type="text" name="attr_display_drainattribute" value="@{tradition_drainattribute}" disabled></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_tradition_drainmod" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_tradition_drainpool" value="@{tradition_drainattribute}+@{tradition_drainmod}+@{wil}" disabled></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_tradition_drainpool' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Entzug}}{{basis=[[@{tradition_drainattribute}+@{wil}]]}}{{mod=[[@{tradition_drainmod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{tradition_drainattribute}+@{wil}+@{tradition_drainmod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{tradition_drainattribute}+@{wil}+@{tradition_drainmod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_tradition_note" class="w95 h100px clear"></textarea>
</div>
</div>
</div><!--float-->
<div class="clear"></div>
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Schutzpatron</div>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_patron_name" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="w155px">Vorteile</div>
<textarea name="attr__patron_positive_qualities" class="w95 h100px clear"></textarea>
</div>
<div class="row labels color-darkred">
<div class="w155px">Nachteile</div>
<textarea name="attr__patron_negative_qualities" class="w95 h100px clear"></textarea>
</div>
</div><!--float-->
</div><!--submenu:tradition-->
</div><!--sub-magic-->
<!-- Submenu: Matrix -->
<input class="tab tab-sub tab-sub-menu tab-sub-matrix tab-matrixequipment" type="radio" name="attr_menu_matrix" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-matrix tab-matrixequipment" title="Ausrüstung" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-matrix tab-programs" type="radio" name="attr_menu_matrix" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-matrix tab-programs" title="Programme" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-matrix tab-matrixactions" type="radio" name="attr_menu_matrix" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-matrix tab-matrixactions" title="Aktionen" ></span>
<!-- Submenu: Technomancer -->
<input class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-livingpersona" type="radio" name="attr_menu_technomancer" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-livingpersona" title="Persona" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-complexforms" type="radio" name="attr_menu_technomancer" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-complexforms" title="KF" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-sprites" type="radio" name="attr_menu_technomancer" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-technomancer tab-sprites" title="Sprites" ></span>
<!-- Submenu: Social -->
<input class="tab tab-sub tab-sub-menu tab-sub-social tab-sinlicense" type="radio" name="attr_menu_social" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-social tab-sinlicense" title="SIN/Lizenzen" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-social tab-lifestyles" type="radio" name="attr_menu_social" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-social tab-lifestyles" title="Lebensstile" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-social tab-connections" type="radio" name="attr_menu_social" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-social tab-connections" title="Connections" ></span>
<!-- Submenu: Equipment -->
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-equipment-equipment" type="radio" name="attr_menu_equipment" value="0" checked />
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-equipment-equipment" title="Ausrüstung" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-augmentations" type="radio" name="attr_menu_equipment" value="1"/>
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-augmentations" title="Augmentierung" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-ammunition" type="radio" name="attr_menu_equipment" value="2"/>
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-ammunition" title="Munition" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-vehicles" type="radio" name="attr_menu_equipment" value="3"/>
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-vehicles" title="Fahrzeuge" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-drones" type="radio" name="attr_menu_equipment" value="4"/>
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-drones" title="Drohnen" ></span>
<input class="tab tab-sub tab-sub-menu tab-sub-equipment tab-orders" type="radio" name="attr_menu_equipment" value="5"/>
<span class="tab tab-sub tab-sub-menu tab-sub-equipment tab-orders" title="Bestellungen" ></span>
<div class="clear"></div>
<div class="tab tab-basis w100">
<div class="tab tab-basis-character">
<!--Personaldaten-->
<div class="float card">
<div class="row">
<div class="w80px labels color-darkred">Name</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_name"></input>
<div class="w80px labels color-darkred right margin-right-10">Geschlecht</div>
<input class="buttoninput buttoninput-both w60px" type="text" name="attr_sex"></input>
</div>
<div class="row">
<div class="w80px labels color-darkred">Metatyp</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_metatype"></input>
<div class="w80px labels color-darkred right margin-right-10">Alter</div>
<input class="buttoninput buttoninput-both w60px" type="text" name="attr_age"></input>
</div>
<div class="row">
<div class="w80px labels color-darkred">Ethnie</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_ethnicity"></input>
<div class="w80px labels color-darkred right margin-right-10">Größe</div>
<input class="buttoninput buttoninput-both w60px" type="text" name="attr_height"></input>
</div>
<div class="row">
<div class="w110px labels color-darkred">Aktuelles Karma</div>
<input class="buttoninput buttoninput-both w50px" type="text" name="attr_karma_current" readonly></input>
<div class="w95px labels color-darkred right margin-right-10">Gesamtkarma</div>
<input class="buttoninput buttoninput-both w57px" type="text" name="attr_karma_total" readonly></input>
<div class="w80px labels color-darkred right margin-right-10">Gewicht</div>
<input class="buttoninput buttoninput-both w60px" type="text" name="attr_weight"></input>
</div>
<div class="row">
<div class="w110px labels color-darkred">Straßenruf</div>
<input class="buttoninput buttoninput-both w50px" type="text" name="attr_reputation_street"></input>
<div class="w95px labels color-darkred right margin-right-10">Schlechter Ruf</div>
<input class="buttoninput buttoninput-both w57px" type="text" name="attr_reputation_bad"></input>
<div class="w80px labels color-darkred right margin-right-10">Prominenz</div>
<input class="buttoninput buttoninput-both w60px" type="text" name="attr_repuation_prominence"></input>
</div>
<div class="row">
<div class="w80px labels color-darkred">Konto</div>
<input class="buttoninput buttoninput-both w80px right" type="text" name="attr_nuyen_aktuell" value="0"></input>
<span class="labels color-darkred margin-right-10">-</span>
<input class="buttoninput buttoninput-both w80px right" type="text" name="attr_nuyen_total" readonly></input>
<span class="labels color-darkred margin-right-10">=</span>
<input class="buttoninput buttoninput-both w80px right" type="text" name="attr_nuyen_neu" readonly></input>
</div>
</div><!--float-->
</div>
<div class="tab tab-basis-attributes">
<div class="float card">
<!-- Attributes -->
<div class="row labels color-darkred">
<div class="w35px"></div>
<div class="w145px center">Basis/Mod/Total</div>
</div>
<div class="row">
<div class="w35px labels color-darkred">KON</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_kon_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_kon_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=KON}}{{basis=@{kon_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{kon_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{kon_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_kon_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_kon_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=KON}}{{basis=@{kon_basis}}}{{mod=[[?{Mod|@{kon_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{kon_basis}+?{Mod|@{kon_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{kon_basis}+?{Mod|@{kon_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_kon" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_kon' value="@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=KON}}{{basis=@{kon_basis}}}{{mod=[[@{kon_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{kon}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{kon_basis}+@{kon_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="w35px labels color-darkred">GES</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_ges_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ges_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=GES}}{{basis=@{ges_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{ges_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{ges_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ges_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ges_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=GES}}{{basis=@{ges_basis}}}{{mod=[[?{Mod|@{ges_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{ges_basis}+?{Mod|@{ges_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{ges_basis}+?{Mod|@{ges_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ges" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_ges' value="@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=GES}}{{basis=@{ges_basis}}}{{mod=[[@{ges_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{ges}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{ges_basis}+@{ges_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="w35px labels color-darkred">REA</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_rea_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_rea_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=REA}}{{basis=@{rea_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{rea_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_rea_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_rea_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=REA}}{{basis=@{rea_basis}}}{{mod=[[?{Mod|@{rea_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea_basis}+?{Mod|@{rea_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{rea_basis}+?{Mod|@{rea_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_rea" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_rea' value="@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=REA}}{{basis=@{rea_basis}}}{{mod=[[@{rea_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{rea_basis}+@{rea_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row margin-bottom-10">
<div class="w35px labels color-darkred">STR</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_str_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_str_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=STR}}{{basis=@{str_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{str_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{str_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_str_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_str_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=STR}}{{basis=@{str_basis}}}{{mod=[[?{Mod|@{str_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{str_basis}+?{Mod|@{str_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{str_basis}+?{Mod|@{str_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_str" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_str' value="@{hide_rolls_cmd} &{template:roll}{{color=darkred}}{{text=STR}}{{basis=@{str_basis}}}{{mod=[[@{str_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{str}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{str_basis}+@{str_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="w35px labels color-darkblue">WIL</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_wil_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_wil_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=WIL}}{{basis=@{wil_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{wil_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{wil_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_wil_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_wil_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=WIL}}{{basis=@{wil_basis}}}{{mod=[[?{Mod|@{wil_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{wil_basis}+?{Mod|@{wil_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{wil_basis}+?{Mod|@{wil_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_wil" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_wil' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=WIL}}{{basis=@{wil_basis}}}{{mod=[[@{wil_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{wil}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{wil_basis}+@{wil_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="w35px labels color-darkblue">LOG</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_log_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_log_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=LOG}}{{basis=@{log_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{log_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{log_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_log_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_log_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=LOG}}{{basis=@{log_basis}}}{{mod=[[?{Mod|@{log_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{log_basis}+?{Mod|@{log_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{log_basis}+?{Mod|@{log_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_log" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_log' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=LOG}}{{basis=@{log_basis}}}{{mod=[[@{log_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{log}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{log_basis}+@{log_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="w35px labels color-darkblue">INT</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_int_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_int_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=INT}}{{basis=@{int_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{int_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{int_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_int_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_int_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=INT}}{{basis=@{int_basis}}}{{mod=[[?{Mod|@{int_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{int_basis}+?{Mod|@{int_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{int_basis}+?{Mod|@{int_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_int" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_int' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=INT}}{{basis=@{int_basis}}}{{mod=[[@{int_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{int}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{int_basis}+@{int_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row margin-bottom-10">
<div class="w35px labels color-darkblue">CHA</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_cha_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cha_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=CHA}}{{basis=@{cha_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{cha_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{cha_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cha_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cha_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=CHA}}{{basis=@{cha_basis}}}{{mod=[[?{Mod|@{cha_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{cha_basis}+?{Mod|@{cha_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{cha_basis}+?{Mod|@{cha_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cha" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_cha' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=CHA}}{{basis=@{cha_basis}}}{{mod=[[@{cha_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{cha}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{cha_basis}+@{cha_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
<div class="row">
<div class="is-mage">
<div class="w35px labels color-blueviolet">MAG</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_mag_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_mag_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=MAG}}{{basis=@{mag_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{mag_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{mag_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_mag_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_mag_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=MAG}}{{basis=@{mag_basis}}}{{mod=[[?{Mod|@{mag_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{mag_basis}+?{Mod|@{mag_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{mag_basis}+?{Mod|@{mag_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_mag" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_mag' value="@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=MAG}}{{basis=@{mag_basis}}}{{mod=[[@{mag_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{mag}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{mag_basis}+@{mag_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
</div>
<div class="row">
<div class="is-technomancer">
<div class="w35px labels color-blueviolet">RES</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_res_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_res_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=RES}}{{basis=@{res_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{res_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{res_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_res_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_res_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=RES}}{{basis=@{res_basis}}}{{mod=[[?{Mod|@{res_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{res_basis}+?{Mod|@{res_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{res_basis}+?{Mod|@{res_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_res" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_res' value="@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=RES}}{{basis=@{res_basis}}}{{mod=[[@{res_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{res}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{res_basis}+@{res_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
</div>
<div class="row">
<div class="w35px labels color-blueviolet">EDG</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_edg_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_edg_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=EDG}}{{basis=@{edg_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{edg_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{edg_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_edg_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_edg_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=EDG}}{{basis=@{edg_basis}}}{{mod=[[?{Mod|@{edg_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{edg_basis}+?{Mod|@{edg_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{edg_basis}+?{Mod|@{edg_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_edg" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_edg' value="@{hide_rolls_cmd} &{template:roll}{{color=blueviolet}}{{text=EDG}}{{basis=@{edg_basis}}}{{mod=[[@{edg_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{edg}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{edg_basis}+@{edg_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}"></button>
</div>
</div><!--float-->
<!--Derived Attributes -->
<div class="float card">
<!-- Attributes -->
<div class="row labels color-darkred">
<div class="w40px"></div>
<div class="w145px center">Limits</div>
</div>
<div class="row">
<div class="w40px labels color-darkred">Körp.</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_klimit_basis" readonly></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_klimit_basis' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=@{klimit_basis}}}{{text=Körperliches Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_klimit_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_klimit_mod' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{klimit_basis}+@{klimit_mod}]]}}{{text=Körperliches Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_klimit" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_klimit' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{klimit_basis}+@{klimit_mod}]]}}{{text=Körperliches Limit}}'></button>
</div>
<div class="row">
<div class="w40px labels color-darkblue">Geis.</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_glimit_basis" readonly></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_glimit_basis' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=@{glimit_basis}}}{{text=Geistiges Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_glimit_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_glimit_mod' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{glimit_basis}+@{glimit_mod}]]}}{{text=Geistiges Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_glimit" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_glimit' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{glimit_basis}+@{glimit_mod}]]}}{{text=Geistiges Limit}}'></button>
</div>
<div class="row">
<div class="w40px labels">Soz.</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_slimit_basis" readonly></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_slimit_basis' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{slimit_basis}]]}}{{text=Soziales Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_slimit_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_slimit_mod' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{slimit_basis}+@{slimit_mod}]]}}{{text=Soziales Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_slimit" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_slimit' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{slimit_basis}+@{slimit_mod}]]}}{{text=Soziales Limit}}'></button>
</div>
<div class="row">
<div class="is-mage">
<div class="w40px labels color-blueviolet">Astral</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_alimit_basis" readonly></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_alimit_basis' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{alimit_basis}]]}}{{text=Astrales Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_alimit_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_alimit_mod' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{alimit_basis}+@{alimit_mod}]]}}{{text=Astrales Limit}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_alimit" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_alimit' value='@{hide_rolls_cmd} &{template:roll}{{erfolge=[[@{alimit_basis}+@{alimit_mod}]]}}{{text=Astrales Limit}}'></button>
</div>
</div>
<input class="hidden" type="text" name="attr_initiative_basis_active" readonly="true"></input>
<input class="hidden" type="text" name="attr_initiative_mod_active" readonly="true"></input>
<input class="hidden" type="text" name="attr_initiative_wuerfel_active" readonly="true"></input>
<div class="row labels color-darkred">
<div class="w40px"></div>
<div class="w140px center">Basis/Mod/+W6</div>
</div>
<div class="row color-darkred">
<div class="w40px">
<input class="ini_active ini_active_ini" type="radio" name="attr_ini_active" value="INI" checked="checked"/>
<span class="ini_active ini_active_ini" title="INI" ></span>
</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_initiative_basis" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_initiative_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[0@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_initiative_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_initiative_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6@{cmd_use_edge_token}sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_initiative_wuerfel" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_initiative_wuerfel' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[@{initiative_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
</div>
<div class="row color-black">
<div class="show-matrix">
<div class="w40px">
<input class="ini_active ini_active_ar" type="radio" name="attr_ini_active" value="AR"/>
<span class="ini_active ini_active_ar" title="AR" ></span>
</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_ar_initiative_basis" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ar_initiative_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=AR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[0@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ar_initiative_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ar_initiative_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=AR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6@{cmd_use_edge_token}sacs>70cf<0 &cf<0 &{tracker}]]}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ar_initiative_wuerfel" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_ar_initiative_wuerfel' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=AR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[@{initiative_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
</div>
</div>
<div class="row color-black">
<div class="show-matrix">
<div class="w40px">
<input class="ini_active ini_active_vr_cold" type="radio" name="attr_ini_active" value="VRk"/>
<span class="ini_active ini_active_vr_cold" title="VRk" ></span>
</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_vr_cold_initiative_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_vr_cold_initiative_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[0@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_vr_cold_initiative_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_vr_cold_initiative_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6@{cmd_use_edge_token}sacs>70cf<0 &cf<0 &{tracker}]]}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_vr_cold_initiative_wuerfel" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_vr_cold_initiative_wuerfel' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[@{initiative_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
</div>
</div>
<div class="row color-black">
<div class="show-matrix">
<div class="w40px">
<input class="ini_active ini_active_vr_hot" type="radio" name="attr_ini_active" value="VRh"/>
<span class="ini_active ini_active_vr_hot" title="VRh" ></span>
</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_vr_hot_initiative_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_vr_hot_initiative_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR (heiß) Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[0@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_vr_hot_initiative_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_vr_hot_initiative_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR (heiß) Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6@{cmd_use_edge_token}sacs>70cf<0 &cf<0 &{tracker}]]}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_vr_hot_initiative_wuerfel" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_vr_hot_initiative_wuerfel' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=VR (heiß) Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[@{initiative_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
</div>
</div>
<div class="row color-blueviolet">
<div class="is-mage">
<div class="w40px">
<input class="ini_active ini_active_astral" type="radio" name="attr_ini_active" value="Astral"/>
<span class="ini_active ini_active_astral" title="Astr."></span>
</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_astral_initiative_basis" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_astral_initiative_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Astrale Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[0@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_astral_initiative_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_astral_initiative_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Astrale Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+?{Mod|@{initiative_mod}}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6@{cmd_use_edge_token}sacs>70cf<0 &cf<0 &{tracker}]]}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_astral_initiative_wuerfel" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_astral_initiative_wuerfel' value='@{hide_rolls_cmd} &{template:roll}{{color=brown}}{{text=Astrale Initiative}}{{basis=[[@{rea}+@{int}]]}}{{mod=[[@{initiative_mod}@{cmd_injury_mod}]]}}{{total=[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}}}{{erfolge=[[[[@{rea}+@{int}+@{initiative_mod}@{cmd_injury_mod}]]+@{initiative_wuerfel}d6sacs>70cf<0 &{tracker}]]}}@{cmd_injury_text}'></button>
</div>
</div>
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w65px"></div>
<div class="w145px center">Gehen/Laufen/Sprinten</div>
</div>
<div class="row labels color-darkred">
<div class="w75px labels color-darkred">Bewegung</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_bewegung_gehen" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_bewegung_gehen' value='!shadowrun --character @{character_id} --action move-reset'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_bewegung_laufen" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_bewegung_laufen' value='!shadowrun --character @{character_id} --action run-reset'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_bewegung_sprinten" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_bewegung_sprinten' value='!shadowrun --character @{character_id} --action sprint-reset'></button>
</div>
<div class="row labels color-darkred">
<div class="w75px labels color-darkred">Mult/Mod</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_bewegung_gehen_mult" value="2.0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_bewegung_gehen_mult' value='!shadowrun --character @{character_id} --action move ?{Distanz|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_bewegung_laufen_mult" value="4.0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_bewegung_laufen_mult' value='!shadowrun --character @{character_id} --action run ?{Distanz|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_bewegung_sprinten_mod" value="2"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_bewegung_sprinten_mod' value='!shadowrun --character @{character_id} --action sprint ?{Würfelpool|0}'></button>
</div>
<div class="row labels color-darkred">
<div class="w65px"></div>
<div class="w145px center">Heben/Tragen/Stemmen</div>
</div>
<div class="row labels color-darkred">
<div class="w75px labels color-darkred">Tragkraft</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_tragkraft_heben" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_tragkraft_heben' value='!shadowrun --character @{character_id} --action heben-reset'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_tragkraft_tragen" readonly="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_tragkraft_tragen' value='!shadowrun --character @{character_id} --action tragen-reset'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_tragkraft_stemmen" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_tragkraft_stemmen' value='!shadowrun --character @{character_id} --action stemmen-reset'></button>
</div>
<div class="row labels color-darkred">
<div class="w75px labels color-darkred">Mult</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_tragkraft_heben_mult" value="15"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_tragkraft_heben_mult' value='!shadowrun --character @{character_id} --action heben'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_tragkraft_tragen_mult" value="10"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_tragkraft_tragen_mult' value='!shadowrun --character @{character_id} --action tragen'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_tragkraft_stemmen_mult" value="5"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_tragkraft_stemmen_mult' value='!shadowrun --character @{character_id} --action stemmen'></button>
</div>
<div class="row labels color-darkblue">
<div class="w75px"></div>
<div class="w145px center">Basis/Mod/Total</div>
</div>
<div class="row labels color-darkblue">
<div class="w75px labels color-darkblue">Selbstb.</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_selbstbeherrschung_basis" value="@{cha}+@{wil}" disabled="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_selbstbeherrschung_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Selbstbeherrschung}}{{basis=@{selbstbeherrschung_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{selbstbeherrschung_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{selbstbeherrschung_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_selbstbeherrschung_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_selbstbeherrschung_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Selbstbeherrschung}}{{basis=@{selbstbeherrschung_basis}}}{{mod=[[?{Mod|@{selbstbeherrschung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{selbstbeherrschung_basis}+?{Mod|@{selbstbeherrschung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{selbstbeherrschung_basis}+?{Mod|@{selbstbeherrschung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_selbstbeherrschung" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_selbstbeherrschung' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Selbstbeherrschung}}{{basis=@{selbstbeherrschung_basis}}}{{mod=[[@{selbstbeherrschung_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{selbstbeherrschung}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{selbstbeherrschung_basis}+@{selbstbeherrschung_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}"></button>
</div>
<div class="row labels color-darkblue">
<div class="w75px labels color-darkblue">Erinnerung</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_erinnerung_basis" value="@{log}+@{wil}" disabled="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_erinnerung_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Erinnerungsvermögen}}{{basis=@{erinnerung_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{erinnerung_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{erinnerung_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_erinnerung_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_erinnerung_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Erinnerungsvermögen}}{{basis=@{erinnerung_basis}}}{{mod=[[?{Mod|@{erinnerung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{erinnerung_basis}+?{Mod|@{erinnerung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{erinnerung_basis}+?{Mod|@{erinnerung_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_erinnerung" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_erinnerung' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Erinnerungsvermögen}}{{basis=@{erinnerung_basis}}}{{mod=[[@{erinnerung_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{erinnerung}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{erinnerung_basis}+@{erinnerung_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}"></button>
</div>
<div class="row labels color-darkblue">
<div class="w75px labels color-darkblue">Menschenk.</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_menschenkenntnis_basis" value="@{cha}+@{int}" disabled="true"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_menschenkenntnis_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Menschenkenntnis}}{{basis=@{menschenkenntnis_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{menschenkenntnis_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{menschenkenntnis_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_menschenkenntnis_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_menschenkenntnis_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Menschenkenntnis}}{{basis=@{menschenkenntnis_basis}}}{{mod=[[?{Mod|@{menschenkenntnis_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{menschenkenntnis_basis}+?{Mod|@{menschenkenntnis_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{menschenkenntnis_basis}+?{Mod|@{menschenkenntnis_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_menschenkenntnis" readonly="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_menschenkenntnis' value="@{hide_rolls_cmd} &{template:roll}{{color=darkblue}}{{text=Menschenkenntnis}}{{basis=@{menschenkenntnis_basis}}}{{mod=[[@{menschenkenntnis_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{menschenkenntnis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{menschenkenntnis_basis}+@{menschenkenntnis_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5kh@{glimit}]]}}@{cmd_use_edge_text}@{cmd_injury_text}{{limit=@{glimit}}}"></button>
</div>
<!-- Essence -->
<div class="row labels color-darkred">
<div class="w75px"></div>
<div class="w40px">Basis</div>
<div class="w40px">-</div>
<div class="w40px">Rest</div>
</div>
<div class="row labels color-blueviolet">
<div class="w75px">Essenz</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_ess_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ess_basis' value='@{hide_rolls_cmd} &{template:roll}{{text=Essenz (Max)}}{{erfolge=@{ess_basis}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ess_mod" readonly></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_ess_mod' value='@{hide_rolls_cmd} &{template:roll}{{text=-Essenz}}{{erfolge=@{ess_mod}}}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_ess" readonly></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_ess' value='@{hide_rolls_cmd} &{template:roll}{{text=Essenz}}{{erfolge=[[round((@{ess_basis}-@{ess_mod})*100)/100]]}}}'></button>
</div>
<!-- Edgepoints -->
<div class="row labels color-darkred">
<div class="w75px"></div>
<div class="w135px">Aktuell/Total</div>
</div>
<div class="row labels color-blueviolet">
<div class="w75px">Edgepunkte</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_edgepunkte_aktuell" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_edgepunkte_aktuell' value='!shadowrun --character @{character_id} --action edge-use'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_edgpunkte_max" readonly ></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_edgepunkte_max' value='!shadowrun --character @{character_id} --action edge-refill'></button>
</div>
</div><!--float-->
</div><!--submenu: attributes-->
<div class="tab tab-basis-qualities">
<div class="float card">
<div class="row labels color-darkred">
<div class="w230px">Vorteile</div>
</div>
<fieldset class="repeating_positivequalities">
<input class="hidden" type="text" name="attr_positivequalities_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_positivequalities_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w240px left" type="text" name="attr_positivequalities_name"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_positivequalities' value="@{hide_rolls_cmd} &{template:roll}{{color=purple}}{{text=@{positivequalities_name}}}{{desc=@{positivequalities_note}}}"></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_positivequalities_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset>
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w230px">Nachteile</div>
</div>
<fieldset class="repeating_negativequalities">
<input class="hidden" type="text" name="attr_negativequalities_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_negativequalities_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-both w240px left" type="text" name="attr_negativequalities_name"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_negativequalities' value="@{hide_rolls_cmd} &{template:roll}{{color=purple}}{{text=@{negativequalities_name}}}{{desc=@{negativequalities_note}}}"></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_negativequalities_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset>
</div><!--float-->
</div><!--submenu: qualities-->
<div class="tab tab-basis-description w100">
<textarea name="attr_description_full" class="w95 h300px clear"></textarea>
</div><!--submenu: description-->
<div class="tab tab-basis-advancement">
<div class="float card">
<div class="row labels color-darkred">
<div class="w50px">Datum</div>
<div class="w30px">Karma</div>
<div class="w270px center">Run</div>
</div>
<fieldset class="repeating_advancementkarma">
<input class="hidden" type="text" name="attr_advancementkarma_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_advancementkarma_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w70px left" type="text" name="attr_advancementkarma_date"></input>
<input class="buttoninput buttoninput-center w30px center" type="text" name="attr_advancementkarma_karma"></input>
<input class="buttoninput buttoninput-right w270px left" type="text" name="attr_advancementkarma_desc"></input>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_advancementkarma_note" class="w98 h100px clear"></textarea>
</div>
</div>
</fieldset>
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w50px">Datum</div>
<div class="w30px">Nuyen</div>
<div class="w270px center">Run</div>
</div>
<fieldset class="repeating_advancementnuyen">
<input class="hidden" type="text" name="attr_advancementnuyen_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_advancementnuyen_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w70px left" type="text" name="attr_advancementnuyen_date"></input>
<input class="buttoninput buttoninput-center w50px center" type="text" name="attr_advancementnuyen_nuyen"></input>
<input class="buttoninput buttoninput-right w270px left" type="text" name="attr_advancementnuyen_desc"></input>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_advancementnuyen_note" class="w98 h100px clear"></textarea>
</div>
</div>
</fieldset>
</div><!--float-->
</div><!--submenu: advancement-->
<div class="tab tab-basis-settings w100">
<div class="float card">
<div class="row labels color-darkred">
<div class="w180px center">Magie</div>
</div>
<div class="row labels color-darkred">
<div class="w160px">Ist Magier?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_is_mage" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Besitzt Spruchzauberei?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_has_spellcasting" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Besitzt Alchemie?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_has_alchemy" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Besitzt Beschwörung?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_has_summoning" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Besitzt Ritualmagie?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_has_rituals" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Besitzt Adeptenkräfte?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_has_adeptpowers" checked="checked"></input>
</div>
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w180px center">Matrix</div>
</div>
<div class="row labels color-darkred">
<div class="w160px">Zeige Matrixtab</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_show_matrix" checked="checked"></input>
</div>
<div class="row labels color-darkred">
<div class="w160px">Ist Technomancer?</div>
<input class="buttoninput buttoninput-both" type="checkbox" name="attr_settings_is_technomancer" checked="checked"></input>
</div>
</div><!--float-->
</div><!--submenu: description-->
</div><!--attributes-->
<!-- Tab Skills -->
<div class="tab tab-skills">
<div class="tab tab-skills-actionskills">
<!--Action skills-->
<div class="float card">
<!-- Skills -->
<div class="row labels color-darkred">
<div class="w230px">Aktionsfertigkeiten</div>
<div class="w80px center">Attribut</div>
<div class="w50px center">Stufe</div>
<div class="w40px center">Mod</div>
<div class="w45px center">Total</div>
</div>
<fieldset class="repeating_skillsaction">
<input class="hidden" type="text" name="attr_skillsaction_id" value=""></input>
<div class="row color-darkred">
<input class="show-details" type="checkbox" name="attr_skillsaction_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w240px left" type="text" name="attr_skillsaction_name"></input>
<select name="attr_skillsaction_attribut" class="buttoninput buttoninput-center w60px">
<option value="@{kon}">KON</option>
<option value="@{ges}">GES</option>
<option value="@{rea}">REA</option>
<option value="@{str}">STR</option>
<option value="@{wil}">WIL</option>
<option value="@{log}">LOG</option>
<option value="@{int}">INT</option>
<option value="@{cha}">CHA</option>
<option value="@{mag}">MAG</option>
<option value="@{res}">RES</option>
</select>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction_att_display" value="@{skillsaction_attribut}" disabled="true"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_skillsaction_basis' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsaction_name}}}{{color=darkred}}@{skillsaction_desc}{{basis=[[@{skillsaction_attribut}+@{skillsaction_basis}]]}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsaction_attribut}+@{skillsaction_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsaction_attribut}+@{skillsaction_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsaction_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsaction_limit_text}"'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_skillsaction_mod' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsaction_name}}}{{color=darkred}}@{skillsaction_desc}{{basis=[[@{skillsaction_attribut}+@{skillsaction_basis}]]}}{{mod=[[?{Mod|@{skillsaction_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsaction_attribut}+@{skillsaction_basis}+?{Mod|@{skillsaction_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsaction_attribut}+@{skillsaction_basis}+?{Mod|@{skillsaction_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsaction_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsaction_limit_text}"'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction" value="@{skillsaction_attribut}+@{skillsaction_basis}+@{skillsaction_mod}" disabled="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_skillsaction' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsaction_name}}}{{color=darkred}}@{skillsaction_desc}{{basis=[[@{skillsaction_attribut}+@{skillsaction_basis}]]}}{{mod=[[@{skillsaction_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsaction_attribut}+@{skillsaction_basis}+@{skillsaction_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsaction_attribut}+@{skillsaction_basis}+@{skillsaction_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsaction_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsaction_limit_text}"'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_skillsaction_note" class="w97 h100px clear"></textarea>
<div class="row labels color-darkred">
<div class="w100px">Limit</div>
<div class="">Mod</div>
<div class="">Total</div>
<div class="">Inkl. Notiz</div>
</div>
<div class="row">
<select name="attr_skillsaction_limit" class="buttoninput buttoninput-left w85px">
<option value="99">Keines</option>
<option value="@{klimit}">Körperlich</option>
<option value="@{glimit}">Geistig</option>
<option value="@{slimit}">Sozial</option>
<option value="@{alimit}">Astral</option>
<option value="0">Sonstiges</option>
</select>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction_limit_display" readonly></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsaction_limit_mod" value="0"></input>
<input class="buttoninput buttoninput-right" type="text" name="attr_skillsaction_limit_total" readonly></input>
<input class="buttoninput margin-left-25" type="checkbox" name="attr_skillsaction_include_note" ></input>
<input class="hidden" type="text" name="attr_skillsaction_limit_text" ></input>
<input class="hidden" type="text" name="attr_skillsaction_limit_formatted"></input>
<input class="hidden" type="text" name="attr_skillsaction_desc"></input>
</div>
</div>
</div>
</fieldset>
</div><!--float-->
</div><!--actionskills-->
<div class="tab tab-skills-knowledgeskills">
<!--Knowledge skills-->
<div class="float card">
<!-- Skills -->
<div class="row labels color-darkblue">
<div class="w230px">Wissensfertigkeiten</div>
<div class="w80px center">Attribut</div>
<div class="w50px center">Basis</div>
<div class="w40px center">Mod</div>
<div class="w45px center">Total</div>
</div>
<fieldset class="repeating_skillsknowledge">
<input class="hidden" type="text" name="attr_skillsknowledge_id" value=""></input>
<div class="row color-darkblue">
<input class="show-details" type="checkbox" name="attr_skillsknowledge_show_details"></input>
<span class="show-details color-darkblue"></span>
<input class="buttoninput buttoninput-left w240px left" type="text" name="attr_skillsknowledge_name"></input>
<select name="attr_skillsknowledge_attribut" class="buttoninput buttoninput-center w60px">
<option value="@{log}">LOG</option>
<option value="@{int}">INT</option>
</select>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge_att_display" value="@{skillsknowledge_attribut}" disabled="true"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_skillsknowledge_basis' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsknowledge_name}}}{{color=darkblue}}@{skillsknowledge_desc}{{basis=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}]]}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsknowledge_attribut}+@{skillsknowledge_basis}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsknowledge_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsknowledge_limit_text}"'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_skillsknowledge_mod' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsknowledge_name}}}{{color=darkblue}}@{skillsknowledge_desc}{{basis=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}]]}}{{mod=[[?{Mod|@{skillsknowledge_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}+?{Mod|@{skillsknowledge_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsknowledge_attribut}+@{skillsknowledge_basis}+?{Mod|@{skillsknowledge_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsknowledge_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsknowledge_limit_text}"'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge" value="@{skillsknowledge_attribut}+@{skillsknowledge_basis}+@{skillsknowledge_mod}" disabled="true"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_skillsknowledge' value='@{hide_rolls_cmd} &{template:roll}{{text=@{skillsknowledge_name}}}{{color=darkblue}}@{skillsknowledge_desc}{{basis=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}]]}}{{mod=[[@{skillsknowledge_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{skillsknowledge_attribut}+@{skillsknowledge_basis}+@{skillsknowledge_mod}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{skillsknowledge_attribut}+@{skillsknowledge_basis}+@{skillsknowledge_mod}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5@{skillsknowledge_limit_formatted}]]}}@{cmd_use_edge_text}@{cmd_injury_text}@{skillsknowledge_limit_text}"'></button>
<div class="details">
<div class="labels color-darkblue w100">Notizen</div>
<textarea name="attr_skillsknowledge_note" class="w97 h100px clear"></textarea>
<div class="row labels color-darkblue">
<div class="w100px">Limit</div>
<div class="">Mod</div>
<div class="">Total</div>
<div class="">Inkl. Notiz</div>
</div>
<div class="row">
<select name="attr_skillsknowledge_limit" class="buttoninput buttoninput-left w85px">
<option value="99">Keines</option>
<option value="@{glimit}">Geistig</option>
<option value="0">Sonstiges</option>
</select>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge_limit_display" readonly></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_skillsknowledge_limit_mod" value="0"></input>
<input class="buttoninput buttoninput-right" type="text" name="attr_skillsknowledge_limit_total" readonly></input>
<input class="buttoninput margin-left-25" type="checkbox" name="attr_skillsknowledge_include_note" ></input>
<input class="hidden" type="text" name="attr_skillsknowledge_limit_text" ></input>
<input class="hidden" type="text" name="attr_skillsknowledge_limit_formatted"></input>
<input class="hidden" type="text" name="attr_skillsknowledge_desc"></input>
</div>
</div>
</div>
</fieldset>
</div><!--float-->
</div><!--knowledgeskillsskills-->
</div><!--skills-->
<div class="tab tab-combat">
<div class="float card">
<!-- Physical Monitor -->
<div class="row">
<input class="buttoninput buttoninput-left" type="text" name="attr_zmp_aktuell" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_zmp_aktuell' value='!shadowrun --character @{character_id} --action physical-damage --value ?{Schaden|0} --resist ?{Widerstandspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_zmp_maximum" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_zmp_maximum' value='!shadowrun --character @{character_id} --action physical-healing --pool ?{Heilungspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_zmp_toleranz" value="3"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_zmp_toleranz' value='!shadowrun --character @{character_id} --action physical-reset'></button>
</div>
<div class="sheet-row sheet-labels sheet-center sheet-color-darkred">Körperlich</div>
</div><!--float-->
<div class="float card">
<!-- Mental Monitor -->
<div class="row">
<input class="buttoninput buttoninput-left" type="text" name="attr_zmg_aktuell" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_zmg_aktuell' value='!shadowrun --character @{character_id} --action mental-damage --value ?{Schaden|0} --resist ?{Widerstandspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_zmg_maximum" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_zmg_maximum' value='!shadowrun --character @{character_id} --action mental-healing --pool ?{Heilungspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_zmg_toleranz" value="3"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_zmg_toleranz' value='!shadowrun --character @{character_id} --action mental-reset'></button>
</div>
<div class="sheet-row sheet-labels sheet-center sheet-color-darkblue">Geistig</div>
</div><!--float-->
<div class="float card">
<!-- Overflow Monitor -->
<div class="row">
<input class="buttoninput buttoninput-left" type="text" name="attr_overflow_aktuell" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_overflow_aktuell' value='!shadowrun --character @{character_id} --action overflow-damage --value ?{Schaden|0} --resist ?{Widerstandspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_overflow_maximum" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_overflow_maximum' value='!shadowrun --character @{character_id} --action overflow-healing --pool ?{Heilungspool|0}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_overflow_toleranz" value="3"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_overflow_toleranz' value='!shadowrun --character @{character_id} --action overflow-reset'></button>
</div>
<div class="sheet-row sheet-labels sheet-center sheet-color-black">Überzählig</div>
</div><!--float -->
<div class="float card">
<!-- Modifikator -->
<div class="row">
<input class="buttoninput buttoninput-left" type="text" name="attr_injury_mod" value="0"></input>
<input class="hidden" type="text" name="attr_injury_mod_negative" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_injury_mod' value='!shadowrun --character @{character_id} --action injury-recalc'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_injury_ignore" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_injury_ignore' value='!shadowrun --character @{character_id} --action injury-reset'></button>
</div>
<div class="sheet-row sheet-labels sheet-center sheet-color-darkgreen">Mod/Ign.</div>
</div><!--float-->
<div class="float card">
<!-- Modifikator -->
<div class="row">
<input class="buttoninput buttoninput-left" type="text" name="attr_recoil" value="0"></input>
<input class="hidden" type="text" name="attr_recoil_negative" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_reset_recoil' value='!shadowrun --character @{character_id} --action recoil-reset'></button>
</div>
<div class="sheet-row sheet-labels sheet-center sheet-color-darkslategray">Rückstoß</div>
</div><!--float-->
<div class="clear"></div>
<div class="float card wm810px">
<div class="row labels color-darkred">
<div class="w240px">Fernkampfwaffe</div>
<div class="w60px center">Pool</div>
<div class="w35px center">Tarn</div>
<div class="w15px center">-0</div>
<div class="w25px center">-1</div>
<div class="w30px center">-3</div>
<div class="w30px center">-6</div>
<div class="w35px center">DV</div>
<div class="w25px center">Präz</div>
<div class="w20px center">DK</div>
<div class="w30px center">RK</div>
<div class="w70px center">Modus</div>
<div class="w55px center">Munition</div>
<div class="w55px center">Magazin</div>
</div>
<fieldset class="repeating_weaponsranged">
<input class="hidden" type="text" name="attr_weaponsranged_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_weaponsranged_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_weaponsranged_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsranged" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_weaponsranged' value='!shadowrun --character @{character_id} --action weaponsranged-attack --id @{weaponsranged_id} --mod ?{Modifikator|-@{recoil}@{cmd_injury_mod}} --bullets ?{Kugeln|1}'></button>
<input class="buttoninput buttoninput-both" type="text" name="attr_weaponsranged_tarn" value="0"></input>
<input class="buttoninput buttoninput-left" type="text" name="attr_weaponsranged_short" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsranged_medium" value="0"></input>
<input class="buttoninput buttoninput-center w35px" type="text" name="attr_weaponsranged_long" value="0"></input>
<input class="buttoninput buttoninput-right w35px" type="text" name="attr_weaponsranged_extreme" value="0"></input>
<input class="buttoninput buttoninput-left w40px" type="text" name="attr_weaponsranged_dv" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsranged_precision" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsranged_dk" value="0"></input>
<input class="buttoninput buttoninput-right" type="text" name="attr_weaponsranged_rk" value="0"></input>
<input class="buttoninput buttoninput-left w75px" type="text" name="attr_weaponsranged_mod" value="0"></input>
<input class="buttoninput buttoninput-center w30px" type="text" name="attr_weaponsranged_ammunition_current" value="0"></input>
<input class="buttoninput buttoninput-center w30px" type="text" name="attr_weaponsranged_ammunition_maximum" value="0"></input>
<input class="buttoninput buttoninput-center w65px" type="text" name="attr_weaponsranged_magazin" value="0"></input>
<button class="buttoninput buttoninput-right rangeweapons-pool" type='roll' name='roll_weaponsranged_magazin' value='!shadowrun --character @{character_id} --action weaponsranged-reload --id @{weaponsranged_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen, Ausrüstung, etc</div>
<textarea name="attr_weaponsranged_note" class="w98 h100px clear"></textarea>
</div>
</div>
</fieldset><!--rangedweapons-->
</div><!--float-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w240px">Nahkampfwaffe</div>
<div class="w60px">Pool</div>
<div class="w35px">Tarn</div>
<div class="w20px center">R</div>
<div class="w35px center">DV</div>
<div class="w35px center">Präz.</div>
<div class="w30px center">DK</div>
</div>
<fieldset class="repeating_weaponsmelee">
<input class="hidden" type="text" name="attr_weaponsmelee_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_weaponsmelee_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_weaponsmelee_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsmelee" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_weaponsmelee' value='@{hide_rolls_cmd} &{template:meleeattack}{{text=schlägt zu mit @{weaponsmelee_name}}}{{basis=@{weaponsmelee}}}{{mod=[[?{Modifikator?|0}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{pool=[[@{weaponsmelee}+[[?{Modifikator?|0}@{cmd_use_edge_mod}@{cmd_injury_mod}]]]]}}{{erfolge=[[[[@{weaponsmelee}+[[?{Modifikator?|0}@{cmd_use_edge_mod}@{cmd_injury_mod}]]]]d6@{cmd_use_edge_token}sacs5cs6>5kh@{weaponsmelee_precision}]]}}{{schaden=@{weaponsmelee_dv}}}{{dk=@{weaponsmelee_dk}}}{{praezision=@{weaponsmelee_precision}}}{{reichweite=@{weaponsmelee_range}}}'></button>
<input class="buttoninput buttoninput-both" type="text" name="attr_weaponsmelee_tarn" value="0"></input>
<input class="buttoninput buttoninput-left" type="text" name="attr_weaponsmelee_range" value="0"></input>
<input class="buttoninput buttoninput-center w45px" type="text" name="attr_weaponsmelee_dv" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsmelee_precision" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_weaponsmelee_dk" value="0"></input>
<button class="buttoninput buttoninput-right rangeweapons-pool" type='roll' name='roll_weaponsmelee_dk' value='@{hide_rolls_cmd} Noch nicht implementiert @{weaponsmelee_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen, Ausrüstung, etc</div>
<textarea name="attr_weaponsmelee_note" class="w97 h100px clear"></textarea>
</div>
</div>
</fieldset><!--meleeweapons-->
</div>
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Würfelpool</div>
<div class="w45px">Wert</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_combatpools">
<input class="hidden" type="text" name="attr_combatpools_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_combatpools_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_combatpools_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_combatpools_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_combatpools_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=forestgreen}}{{text=@{combatpools_name}}}{{basis=@{combatpools_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{combatpools_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{combatpools_basis}+0@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_combatpools_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_combatpools_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=forestgreen}}{{text=@{combatpools_name}}}{{basis=@{combatpools_basis}}}{{mod=[[?{Modifikator|@{combatpools_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{combatpools_basis}+?{Modifikator|@{combatpools_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{combatpools_basis}+?{Modifikator|@{combatpools_mod}}@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_combatpools" value="@{combatpools_basis}+@{combatpools_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_combatpools' value='@{hide_rolls_cmd} &{template:roll}{{color=forestgreen}}{{text=@{combatpools_name}}}{{basis=@{combatpools_basis}}}{{mod=[[0@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{total=[[@{combatpools_basis}@{cmd_use_edge_mod}@{cmd_injury_mod}]]}}{{erfolge=[[(@{combatpools_basis}+0@{cmd_use_edge_mod}@{cmd_injury_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}@{cmd_injury_text}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen, Ausrüstung, etc</div>
<textarea name="attr_combatpools_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div>
<div class="float card">
<div class="row labels color-darkred">
<div class="w240px">Panzerung</div>
<div class="w45px">Wert</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
<div class="w45px">Pool</div>
</div>
<fieldset class="repeating_armor">
<input class="hidden" type="text" name="attr_armor_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_armor_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_armor_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_armor_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_armor_basis' value='@{hide_rolls_cmd} &{template:roll}{{color=darkgoldenrod}}{{text=@{armor_name}}}{{basis=@{armor_basis}}}{{mod=[[0@{cmd_use_edge_mod}]]}}{{total=[[@{armor_basis}@{cmd_use_edge_mod}]]}}{{erfolge=[[(@{armor_basis}+0@{cmd_use_edge_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_armor_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_armor_mod' value='@{hide_rolls_cmd} &{template:roll}{{color=darkgoldenrod}}{{text=@{armor_name}}}{{basis=@{armor_basis}}}{{mod=[[?{Modifikator|@{armor_mod}}@{cmd_use_edge_mod}]]}}{{total=[[@{armor_basis}+?{Modifikator|@{armor_mod}}@{cmd_use_edge_mod}]]}}{{erfolge=[[(@{armor_basis}+?{Modifikator|@{armor_mod}}@{cmd_use_edge_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_armor" value="@{armor_basis}+@{armor_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_armor' value='@{hide_rolls_cmd} &{template:roll}{{color=darkgoldenrod}}{{text=@{armor_name}}}{{basis=@{armor_basis}}}{{mod=[[@{armor_mod}@{cmd_use_edge_mod}]]}}{{total=[[@{armor_basis}+@{armor_mod}@{cmd_use_edge_mod}]]}}{{erfolge=[[(@{armor_basis}+@{armor_mod}@{cmd_use_edge_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_armor_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_armor_pool' value='@{hide_rolls_cmd} &{template:roll}{{color=darkgoldenrod}}{{text=@{armor_name}}}{{basis=@{armor_pool}}}{{mod=[[?{Modifikator|0}@{cmd_use_edge_mod}]]}}{{total=[[@{armor_pool}+?{Modifikator|0}@{cmd_use_edge_mod}]]}}{{erfolge=[[(@{armor_pool}+?{Modifikator|0}@{cmd_use_edge_mod})d6@{cmd_use_edge_token}sacs5cs6>5]]}}@{cmd_use_edge_text}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen, Ausrüstung, etc</div>
<textarea name="attr_armor_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--meleeweapons-->
</div>
</div><!--combat-->
<div class="tab tab-matrix">
<div class="tab tab-matrix-matrixequipment">
<fieldset class="repeating_cyberdecks">
<input class="hidden" type="text" name="attr_cyberdecks_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w135px">Cyberdeck</div>
<div class="w80px">Gerätestufe</div>
<div class="w45px">A</div>
<div class="w45px">S</div>
<div class="w45px">D</div>
<div class="w45px">F</div>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_cyberdecks_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_cyberdecks_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_cyberdecks_rating" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cyberdecks_rating' value='@{hide_rolls_cmd} Noch nicht implementiert @{cyberdecks_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cyberdecks_a" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cyberdecks_a' value='@{hide_rolls_cmd} Noch nicht implementiert @{cyberdecks_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cyberdecks_s" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cyberdecks_s' value='@{hide_rolls_cmd} Noch nicht implementiert @{cyberdecks_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cyberdecks_d" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_cyberdecks_d' value='@{hide_rolls_cmd} Noch nicht implementiert @{cyberdecks_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_cyberdecks_f" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_cyberdecks_f' value='@{hide_rolls_cmd} Noch nicht implementiert @{cyberdecks_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_cyberdecks_note" class="w96 h100px clear"></textarea>
</div>
</div>
</div><!--float-->
</fieldset><!--cyberdecks-->
<div class="clear"></div>
<fieldset class="repeating_riggerconsoles">
<input class="hidden" type="text" name="attr_riggerconsoles_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w120px">Riggerkonsole</div>
<div class="w80px">Gerätestufe</div>
<div class="w45px">D</div>
<div class="w45px">F</div>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_riggerconsoles_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_riggerconsoles_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_riggerconsoles_rating" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_riggerconsoles_rating' value='@{hide_rolls_cmd} Noch nicht implementiert @{riggerconsoles_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_riggerconsoles_d" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_riggerconsoles_d' value='@{hide_rolls_cmd} Noch nicht implementiert @{riggerconsoles_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_riggerconsoles_f" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_riggerconsoles_f' value='@{hide_rolls_cmd} Noch nicht implementiert @{riggerconsoles_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_riggerconsoles_note" class="w96 h100px clear"></textarea>
</div>
</div>
</div><!--float-->
</fieldset><!--riggerconsoles-->
</div><!--submenu:matrixequipment-->
<div class="tab tab-matrix-programs">
<div class="float card">
<div class="row labels color-darkred">
<div class="w240px">Programm</div>
<div class="w45px">Notiz</div>
</div>
<fieldset class="repeating_matrixprograms">
<input class="hidden" type="text" name="attr_matrixprograms_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_matrixprograms_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_matrixprograms_name" value="0"></input>
<input class="buttoninput buttoninput-center w250px left" type="text" name="attr_matrixprograms_desc" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixprograms' value='@{hide_rolls_cmd} Noch nicht implementiert @{matrixprograms_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_matrixprograms_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--meleeweapons-->
</div><!--float card-->
</div><!--submenu:programs-->
<div class="tab tab-matrix-matrixactions">
<!-- Matrixcombat -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Matrixkampf</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Datenspike</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_matrixcombat_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixcombat_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixcombat_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_matrixcombat' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Programm abstürzen lassen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_crashprogram_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_crashprogram_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_crashprogram_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_crashprogram' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Volle Matrixabwehr</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_fulldefense_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_fulldefense_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_fulldefense_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_fulldefense' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Schadenswiderstand</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_damageresistance_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_damageresistance_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_damageresistance_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_damageresistance' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Biofeedback widerstehen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_biofeedbackresistance_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_biofeedbackresistance_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_biofeedbackresistance_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_biofeedbackresistance' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
<!-- Manipulation of Devices -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Manipulation von Geräten</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Befehl vortäuschen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_spoofcommand_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_spoofcommand_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_spoofcommand_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_zmg_aktuell' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Gerät formatieren</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_formatdevice_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_formatdevice_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_formatdevice_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_formatdevice' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Gerät neustarten</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_restartdevice_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_restartdevice_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_restartdevice_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_restartdevice' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Gerät steuern</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_controldevice_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_controldevice_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_controldevice_command" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_zmg_aktuell' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Unerwarteter Fehler</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_unexpectederror_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_unexpectederror_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_unexpectederror_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_unexpectederror' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
<!-- Manipulation of Dateien -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Manipulation von Dateien</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Datei cracken</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_decryptfile_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_decryptfile_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_decryptfile_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_decryptfile' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Datei editieren</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_editfile_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_editfile_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_editfile_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_editfile' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Datenbombe entschärfen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_defusedatabomb_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_defusedatabomb_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_defusedatabomb_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_defusedatabomb' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Datenbombe legen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_placedatabomb_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_placedatabomb_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_placedatabomb_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_placedatabomb' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
<!-- Manipulation of Marks -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Manipulation von Marken</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Brute Force</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_brutforce_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_brutforce_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_brutforce_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_brutforce' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Eiliges Hacken</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_hackonthefly_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_hackonthefly_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_hackonthefly_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_hackonthefly' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Marke einladen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_invitemark_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_invitemark_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_invitemark_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_invitemark' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Marke löschen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_deletemark_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_deletemark_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_deletemark_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_deletemark' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float
<!-- Gather information -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Information sammeln</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Icon aufspüren</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_traceicon_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_traceicon_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_traceicon_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_traceicon' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Rückverfolgung</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_traceback_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_traceback_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_traceback_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_traceback' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Matrixsuche</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_matrixsearch_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixsearch_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixsearch_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_matrixsearch' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Matrixwahrnehmung</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_matrixperception_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixperception_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_matrixperception_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_matrixperception' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">OW bestimmen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_getow_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_getow_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_getow_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_getow' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Übertragung abfangen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_interceptmessage_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_interceptmessage_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_interceptmessage_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_interceptmessage' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
<!-- Other Actions -->
<div class="float card">
<div class="row labels color-darkred">
<div class="w160px">Sonstige</div>
<div class="">Limit</div>
<div class="">Handlung</div>
<div class="">Marken</div>
</div>
<div class="row">
<div class="w165px">Ausstöpseln</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_jackout_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jackout_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jackout_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_jackout' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Gitterwechsel</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_changegrid_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changegrid_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changegrid_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_changegrid' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Host betreten/verlassen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_enterhost_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_enterhost_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_enterhost_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_enterhost' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Icon verändern</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_changeicon_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changeicon_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changeicon_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_changeicon' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">In Gerät springen</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_jumpintodevice_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jumpintodevice_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jumpintodevice_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_jumpintodevice' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Interfacemodus ändern</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_changeinterfacemode_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changeinterfacemode_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_changeinterfacemode_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_changeinterfacemode' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Nachricht senden</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_sendmessage_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_sendmessage_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_sendmessage_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_sendmessage' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Signal stören</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_jamsignal_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jamsignal_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_jamsignal_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_jamsignal' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w165px">Verstecken</div>
<input class="buttoninput buttoninput-left w40px center" type="text" name="attr_matrixactions_hide_limit" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_hide_action" value="0"></input>
<input class="buttoninput buttoninput-center w40px" type="text" name="attr_matrixactions_hide_marks" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_matrixactions_hide' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
</div><!--submenu:matrixactions-->
</div><!--matrix-->
<div class="tab tab-technomancer">
<div class="tab tab-technomancer-livingpersona">
<div class="float card">
<!-- Attributes -->
<div class="row labels color-darkred">
<div class="w120px"></div>
<div class="w145px center">Basis/Mod/Total</div>
</div>
<div class="row">
<div class="w120px labels color-darkred">Gerätestufe</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_livingpersona_devicerating_basis" value="@{res}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_devicerating_basis' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_devicerating_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_devicerating_mod' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_devicerating" value="@{livingpersona_devicerating_basis}+@{livingpersona_devicerating_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_livingpersona_devicerating' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w120px labels color-darkred">Angriff</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_livingpersona_attack_basis" value="@{cha}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_attack_basis' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_attack_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_attack_mod' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_attack" value="@{livingpersona_attack_basis}+@{livingpersona_attack_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_livingpersona_attack' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w120px labels color-darkred">Schleicher</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_livingpersona_sleaze_basis" value="@{int}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_sleaze_basis' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_sleaze_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_sleaze_mod' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_sleaze" value="@{livingpersona_sleaze_basis}+@{livingpersona_sleaze_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_livingpersona_sleaze' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w120px labels color-darkred">Datenverarbeitung</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_livingpersona_dataprocessing_basis" value="@{log}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_dataprocessing_basis' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_dataprocessing_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_dataprocessing_mod' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_dataprocessing" value="@{livingpersona_dataprocessing_basis}+@{livingpersona_dataprocessing_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_livingpersona_dataprocessing' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
<div class="row">
<div class="w120px labels color-darkred">Firewall</div>
<input class="buttoninput buttoninput-left" type="text" name="attr_livingpersona_firewall_basis" value="@{wil}" disabled="disabled"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_firewall_basis' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_firewall_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_livingpersona_firewall_mod' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_livingpersona_firewall" value="@{livingpersona_firewall_basis}+@{livingpersona_firewall_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_livingpersona_firewall' value='@{hide_rolls_cmd} Noch nicht implementiert'></button>
</div>
</div><!--float-->
</div><!--submenu:livingpersona-->
<div class="tab tab-technomancer-complexforms">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Komplexe Form</div>
<div class="w45px">Wert</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_complexforms">
<input class="hidden" type="text" name="attr_complexforms_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_complexforms_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_complexforms_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_complexforms_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_complexforms_basis' value='!shadowrun --character @{character_id} --action complexforms-use --id @{complexforms_id} --name "@{complexforms_name}" --basis @{complexforms_basis} --mod 0 --force ?{Stufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_complexforms_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_complexforms_mod' value='!shadowrun --character @{character_id} --action complexforms-use --id @{complexforms_id} --name "@{complexforms_name}" --basis @{complexforms_basis} --mod ?{Modifikator?|@{complexforms_mod}} --force ?{Stufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_complexforms" value="@{complexforms_basis}+@{complexforms_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_complexforms' value='!shadowrun --character @{character_id} --action complexforms-use --id @{complexforms_id} --name "@{complexforms_name}" --basis @{complexforms_basis} --mod @{complexforms_mod} --force ?{Stufe?|1}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_complexforms_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
</div><!--submenu:complexforms-->
<div class="tab tab-technomancer-sprites">
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Sprite</div>
<div class="w45px">Pool</div>
<div class="w45px">Mod</div>
<div class="w45px">Total</div>
</div>
<fieldset class="repeating_compilesprite">
<input class="hidden" type="text" name="attr_compilesprite_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_compilesprite_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_compilesprite_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_compilesprite_basis" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_compilesprite_basis' value='!summon Sprites-@{compilesprite_name} T
!shadowrun --character @{character_id} --action compile-sprite --sprite-name "@{compilesprite_name}" --basis @{compilesprite_basis} --mod 0 --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_compilesprite_mod" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_compilesprite_mod' value='!summon Sprites-@{compilesprite_name} T
!shadowrun --character @{character_id} --action compile-sprite --sprite-name "@{compilesprite_name}" --basis @{compilesprite_basis} --mod ?{Modifikator?|@{compilesprite_mod}} --force ?{Kraftstufe?|1}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_compilesprite" value="@{compilesprite_basis}+@{compilesprite_mod}" disabled="disabled"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_compilesprite' value='!summon Sprites-@{compilesprite_name} T
!shadowrun --character @{character_id} --action compile-sprite --sprite-name "@{compilesprite_name}" --basis @{compilesprite_basis} --mod @{compilesprite_mod} --force ?{Kraftstufe?|1}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_compilesprite_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--pools, dodge, etc-->
</div><!--float-->
<fieldset class="repeating_activesprites">
<input class="hidden" type="text" name="attr_activesprites_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w155px">Aktive Sprites</div>
<div class="w45px">Stufe</div>
<div class="w45px">Dienste</div>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_activesprites_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w155px left" type="text" name="attr_activesprites_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_stufe" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activesprites_stufe' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_dienste" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activesprites_dienste' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
<div class="details">
<div class="row labels color-darkblue">
<div class="w45px">A</div>
<div class="w45px">S</div>
<div class="w45px">D</div>
<div class="w45px">F</div>
</div>
<div class="row labels color-darkblue">
<input class="buttoninput buttoninput-left" type="text" name="attr_activesprites_attack" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activesprites_attack' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activesprites_sleaze" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activesprites_sleaze' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activesprites_dataprocessing" value="0"></input>
<button class="buttoninput buttoninput-center" type='roll' name='roll_activesprites_dataprocessing' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
<input class="buttoninput buttoninput-left" type="text" name="attr_activesprites_firewall" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_firewall' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
</div>
<div class="row labels color-blueviolet">
<div class="w45px">RES</div>
</div>
<div class="row labels color-blueviolet">
<input class="buttoninput buttoninput-left" type="text" name="attr_activesprites_res" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_res' value='@{hide_rolls_cmd} Noch nicht implementiert @{activesprites_id}'></button>
</div>
<div class="row labels color-darkred">
<div class="w45px">Fertigkeiten</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_1_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_1_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_1' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_1_name}}}{{basis=@{activesprites_skill_1_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_1_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_1_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_2_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_2_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_2' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_2_name}}}{{basis=@{activesprites_skill_2_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_2_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_2_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_3_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_3_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_3' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_3_name}}}{{basis=@{activesprites_skill_3_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_3_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_3_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_4_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_4_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_4' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_4_name}}}{{basis=@{activesprites_skill_4_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_4_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_4_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_5_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_5_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_5' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_5_name}}}{{basis=@{activesprites_skill_5_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_5_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_5_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_6_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_6_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_6' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_6_name}}}{{basis=@{activesprites_skill_6_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_6_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_6_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_7_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_7_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_7' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_7_name}}}{{basis=@{activesprites_skill_7_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_7_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_7_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_8_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_8_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_8' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_8_name}}}{{basis=@{activesprites_skill_8_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_8_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_8_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_9_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_9_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_9' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_9_name}}}{{basis=@{activesprites_skill_9_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_9_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_9_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_skill_10_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_skill_10_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_skill_100' value='@{hide_rolls_cmd} &{template:roll}{{text=@{activesprites_name} benutzt @{activesprites_skill_10_name}}}{{basis=@{activesprites_skill_10_pool}}}{{mod=?{Modifikator?|0}}}{{pool=[[@{activesprites_skill_10_pool}+?{Modifikator?|0}]]}}{{erfolge=[[[[@{activesprites_skill_10_pool}+?{Modifikator?|0}]]d6sacs5cs6>5]]}}'></button>
</div>
<div class="row labels color-darkred">
<div class="w45px">Spritekräfte</div>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_1_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_1_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_1' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_1_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_2_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_2_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_2' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_2_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_3_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_3_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_3' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_3_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_4_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_4_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_4' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_4_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_5_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_5_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_5' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_5_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_6_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_6_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_6' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_6_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_7_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_7_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_7' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_7_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_8_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_8_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_8' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_8_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_9_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_9_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_9' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_9_name}|Beschreibung}}}'></button>
</div>
<div class="row labels color-darkred">
<input class="buttoninput buttoninput-left left w150px" type="text" name="attr_activesprites_power_10_name" value="0"></input>
<input class="buttoninput buttoninput-center" type="text" name="attr_activesprites_power_10_pool" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_activesprites_power_10' value='@{hide_rolls_cmd} &{template:kraft}{{text=@{activesprites_name} benutzt }}{{beschreibung=%{Spritekräfte-@{activesprites_power_10_name}|Beschreibung}}}'></button>
</div>
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_activesprites_note" class="w95 h100px clear"></textarea>
</div>
</div>
</div><!--float-->
</fieldset><!--pools, dodge, etc-->
</div><!--submenu:sprites-->
</div><!--technomancer-->
<div class="tab tab-social">
<div class="tab tab-social-sinlicense">
<div class="float card">
<div class="row labels color-darkred">
<div class="w255px">SIN</div>
<div class="w45px">Stufe</div>
</div>
<fieldset class="repeating_sins">
<input class="hidden" type="text" name="attr_sins_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_sin_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_sin_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_sin_level" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_sin' value='@{hide_rolls_cmd} Noch nicht implementiert @{sins_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_sin_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--SIN-->
</div><!--float card-->
<div class="float card">
<div class="row labels color-darkred">
<div class="w255px">SIN</div>
<div class="w240px">Lizenz</div>
<div class="w45px">Stufe</div>
</div>
<fieldset class="repeating_licenses">
<input class="hidden" type="text" name="attr_licenses_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_license_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_license_sin_name" value="0"></input>
<input class="buttoninput buttoninput-center w250px left" type="text" name="attr_license_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_license_rating" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_license' value='@{hide_rolls_cmd} Noch nicht implementiert @{licenses_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_license_note" class="w95 h100px clear"></textarea>
</div>
</div>
</fieldset><!--licenses-->
</div><!--float card-->
</div><!--submenu:sinlicense-->
<div class="tab tab-social-lifestyles">
<fieldset class="repeating_lifestyles">
<input class="hidden" type="text" name="attr_lifestyles_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w80px">SIN</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_lifestyles_sin_name" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="w80px">Lebensstil</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_lifestyles_rating" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="w80px">Miete</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_lifestyles_cost" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-left-5">K&amp;G</div>
<div class="w20px center">S</div>
<div class="w20px center">W</div>
<div class="w20px center">A</div>
</div>
<div class="row labels color-darkred">
<input class="show-details" type="checkbox" name="attr_lifestyles_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left center" type="text" name="attr_lifestyles_comfort" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_lifestyles_security" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_lifestyles_neighbourhood" value="0"></input>
<input class="buttoninput buttoninput-right center" type="text" name="attr_lifestyles_accomodities" value="0"></input>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_lifestyles_note" class="w96 h100px clear"></textarea>
</div>
</div>
</div><!--float card-->
</fieldset><!--lifestyles-->
</div><!--submenu:lifestyles-->
<div class="tab tab-social-connections">
<div class="float card">
<div class="row labels color-darkred">
<div class="w260px">Name</div>
<div class="w25px">E</div>
<div class="">L</div>
</div>
<fieldset class="repeating_connections">
<input class="hidden" type="text" name="attr_connections_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_connections_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_connections_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_connections_rating" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_connections_loyality" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_connections' value='!shadowrun --character @{character_id} --action contact-connection --id @{connections_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_connections_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--SIN-->
</div><!--float card-->
</div><!--submenu:connections-->
</div><!--social-->
<div class="tab tab-equipment">
<div class="tab tab-equipment-equipment">
<div class="float card">
<div class="row labels color-darkred">
<div class="w260px">Gegenstand</div>
<div class="w25px">Anzahl</div>
</div>
<fieldset class="repeating_equipment">
<input class="hidden" type="text" name="attr_equipment_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_equipment_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_equipment_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_equipment_count" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_equipment' value='@{hide_rolls_cmd} Noch nicht implementiert @{equipment_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_equipment_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--equipment-->
</div><!--float card-->
</div><!--submenu:equipment-->
<div class="tab tab-equipment-augmentations">
<div class="float card">
<div class="row labels color-darkred">
<div class="w240px">Augmentierung</div>
<div class="w35px">Stufe</div>
<div class="">Kat.</div>
<div class="">Essenz</div>
</div>
<fieldset class="repeating_augmentations">
<input class="hidden" type="text" name="attr_augmentations_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_augmentations_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_augmentations_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_augmentations_rating" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_augmentations_category" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_augmentations_essence" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_augmentations' value='@{hide_rolls_cmd} Noch nicht implementiert @{augmentations_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_augmentations_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--equipment-->
</div><!--float card-->
</div><!--submenu:augmentations-->
<div class="tab tab-equipment-ammunition">
<div class="float card">
<div class="row labels color-darkred">
<div class="w260px">Munition</div>
<div class="">Anzahl</div>
</div>
<fieldset class="repeating_ammunition">
<input class="hidden" type="text" name="attr_ammunition_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_ammunition_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_ammunition_name" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_ammunition_count" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_ammunition' value='@{hide_rolls_cmd} Noch nicht implementiert @{ammunition_id}'></button>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_ammunition_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--equipment-->
</div><!--float card-->
</div><!--submenu:ammunition-->
<div class="tab tab-equipment-vehicles">
<fieldset class="repeating_vehicles">
<input class="hidden" type="text" name="attr_vehicles_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w60px">Fahrzeug</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_vehicles_name" value="0"></input>
<div class="margin-right-10">Sitze</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_seats" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Handling</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_handling" value="0"></input>
<div class="margin-right-10">Beschleunigung</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_acceleration" value="0"></input>
<div class="margin-right-10">Geschwindigkeit</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_speed" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Pilot</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_pilot" value="0"></input>
<div class="margin-right-10">Sensor</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_sensor" value="0"></input>
<div class="margin-right-10">Panzerung</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_vehicles_armor" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Matrixzustandsmonitor</div>
<input class="buttoninput buttoninput-left center" type="text" name="attr_vehicles_matrixmonitor_current" value="0"></input>
<input class="buttoninput buttoninput-right center" type="text" name="attr_vehicles_matrixmonitor_max" value="0"></input>
<div class="margin-right-10">Zustandmonitor</div>
<input class="buttoninput buttoninput-left center" type="text" name="attr_vehicles_physicalmonitor_current" value="0"></input>
<input class="buttoninput buttoninput-right center" type="text" name="attr_vehicles_physicalmonitor_max" value="0"></input>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_vehicles_show_details"></input>
<span class="show-details color-darkred"></span>
<div class="labels color-darkred">Notizen</div>
<div class="details">
<textarea name="attr_vehicles_note" class="w96 h100px clear"></textarea>
</div>
</div>
</div><!--float card-->
</fieldset><!--equipment-->
</div><!--submenu:vehicles-->
<div class="tab tab-equipment-drones">
<fieldset class="repeating_drones">
<input class="hidden" type="text" name="attr_drones_id" value=""></input>
<div class="float card">
<div class="row labels color-darkred">
<div class="w60px">Drohne</div>
<input class="buttoninput buttoninput-both w250px left" type="text" name="attr_drones_name" value="0"></input>
<div class="margin-right-10">Sitze</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_seats" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Handling</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_handling" value="0"></input>
<div class="margin-right-10">Beschleunigung</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_acceleration" value="0"></input>
<div class="margin-right-10">Geschwindigkeit</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_speed" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Pilot</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_pilot" value="0"></input>
<div class="margin-right-10">Sensor</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_sensor" value="0"></input>
<div class="margin-right-10">Panzerung</div>
<input class="buttoninput buttoninput-both center" type="text" name="attr_drones_armor" value="0"></input>
</div>
<div class="row labels color-darkred">
<div class="margin-right-10">Matrixzustandsmonitor</div>
<input class="buttoninput buttoninput-left center" type="text" name="attr_drones_matrixmonitor_current" value="0"></input>
<input class="buttoninput buttoninput-right center" type="text" name="attr_drones_matrixmonitor_max" value="0"></input>
<div class="margin-right-10">Zustandmonitor</div>
<input class="buttoninput buttoninput-left center" type="text" name="attr_drones_physicalmonitor_current" value="0"></input>
<input class="buttoninput buttoninput-right center" type="text" name="attr_drones_physicalmonitor_max" value="0"></input>
</div>
<div class="row">
<input class="show-details" type="checkbox" name="attr_drones_show_details"></input>
<span class="show-details color-darkred"></span>
<div class="labels color-darkred">Notizen</div>
<div class="details">
<textarea name="attr_drones_note" class="w96 h100px clear"></textarea>
</div>
</div>
</div><!--float card-->
</fieldset><!--equipment-->
</div><!--submenu:drones-->
<div class="tab tab-equipment-orders">
<div class="float card">
<div class="row labels color-darkred">
<div class="w255px">Gegenstand</div>
<div class="">Anzahl</div>
<div class="w55px center">&yen;</div>
<div class="w40px">V</div>
<div class="">Lieferdatum</div>
</div>
<fieldset class="repeating_orders">
<input class="hidden" type="text" name="attr_orders_id" value=""></input>
<div class="row">
<input class="show-details" type="checkbox" name="attr_orders_show_details"></input>
<span class="show-details color-darkred"></span>
<input class="buttoninput buttoninput-left w250px left" type="text" name="attr_orders_name" value="0"></input>
<input class="buttoninput buttoninput-center w45px center" type="text" name="attr_orders_count" value="0"></input>
<input class="buttoninput buttoninput-center w55px center" type="text" name="attr_orders_price" value="0"></input>
<input class="buttoninput buttoninput-center center" type="text" name="attr_orders_availability" value="0"></input>
<button class="buttoninput buttoninput-right" type='roll' name='roll_orders' value='!shadowrun --character @{character_id} --action order-buy --id @{orders_id} --name @{orders_name} --count @{orders_count} --availability @{orders_availability} --price @{orders_price}'></button>
<input class="buttoninput buttoninput-both w65px left" type="text" name="attr_orders_orderdate" value="0"></input>
<div class="details">
<div class="labels color-darkred w100">Notizen</div>
<textarea name="attr_orders_note" class="w96 h100px clear"></textarea>
</div>
</div>
</fieldset><!--equipment-->
</div><!--float card-->
</div><!--submenu:orders-->
</div><!--equipment-->
</div><!--wrapper-->
<!-- ROLLTEMPLATES -->
<rolltemplate class="sheet-rolltemplate-roll">
<table class="sheet-box {{#color}}{{color}}{{/color}}">
<tr>
{{#erfolge}}
<td class="sheet-erfolge">
{{#injurymod}}<div class="sheet-injurymod">{{injurymod}}</div>{{/injurymod}}
{{#limit}}<div class="sheet-limit">{{limit}}</div>{{/limit}}
<div class="sheet-count">{{erfolge}}</div>
{{#total}}<div class="sheet-pool">{{#basis}}{{basis}}{{/basis}}{{#mod}}+{{mod}}={{/mod}}{{^mod}}{{#basis}}={{/basis}}{{/mod}}{{#total}}{{total}}{{/total}}{{^total}}?{{/total}}W6</div>{{/total}}
</td>{{/erfolge}}
<td class="sheet-text">
<div class="sheet-desc">{{text}}</div>
{{#edge}}<div class="sheet-pool">{{edge}}</div>{{/edge}}
</td>
</tr>
{{#desc}}
<tr>
<td class="border-top" colspan="2"><div class="sheet-note">{{desc}}</div></td>
</tr>{{/desc}}
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zauber">
<div class="sheet-text">{{text}}{{#ks}} [{{ks}}]{{/ks}}</div>
<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+{{mod}}{{/mod}}{{#pool}}{{#basis}}={{/basis}}{{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>
{{#kategorie}}<table>
<tr>
<td class="sheet-w50">{{kategorie}}</td>
<td class="sheet-w50"><em>Art:</em> {{art}}</td>
</tr>
<tr>
<td><em>Reichweite:</em> {{reichweite}}</td>
<td><em>Dauer:</em> {{dauer}}</td>
</tr>
<tr>
<td><em>Schaden:</em> {{schaden}}</td>
<td><em>Entzug:</em> {{entzug}}</td>
</tr>
{{#entzugswiderstand}}
<tr>
<td colspan="2" class="sheet-entzugsschaden"><em>Du erleidest {{entzugswiderstand}} Entzugsschaden.</em></td>
</tr>
{{/entzugswiderstand}}
{{#reagenzien}}
<tr>
<td colspan="2" class="sheet-entzugsschaden"><em>Du verbrauchst {{reagenzien}} Reagenzien.</em></td>
</tr>
{{/reagenzien}}
<tr><td colspan="2" class="sheet-italic">{{beschreibung}}</td></tr>
</table>
{{/kategorie}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-alchemie">
<div class="sheet-text">{{text}}{{#ks}} [{{ks}}]{{/ks}}</div>
<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, Wirksamkeit {{erfolge}}{{/erfolge}}</div>
<table>
{{#herzstueck}}
<tr>
<td colspan="2" class="sheet-entzugsschaden"><em>Herzstück:</em>{{herzstueck}}</td>
</tr>
{{/herzstueck}}
<tr>
<td colspan="2">{{kategorie}}</td>
</tr>
<tr>
<td><em>Auslöser:</em> {{ausloeser}}</td>
<td><em>Art:</em> {{art}}</td>
</tr>
<tr>
<td><em>Reichweite:</em> {{reichweite}}</td>
<td><em>Dauer:</em> {{dauer}}</td>
</tr>
<tr>
<td><em>Schaden:</em> {{schaden}}</td>
<td><em>Entzug:</em> {{entzug}}</td>
</tr>
{{#entzugswiderstand}}
<tr>
<td colspan="2" class="sheet-entzugsschaden"><em>Du erleidest {{entzugswiderstand}} Entzugsschaden.</em></td>
</tr>
{{/entzugswiderstand}}
{{#reagenzien}}
<tr>
<td colspan="2" class="sheet-entzugsschaden"><em>Du verbrauchst {{reagenzien}} Reagenzien.</em></td>
</tr>
{{/reagenzien}}
<tr><td colspan="2" class="sheet-italic">{{beschreibung}}</td></tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-complex-form">
<div class="sheet-text">{{text}}{{#stufe}} [{{stufe}}]{{/stufe}}</div>
<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+{{mod}}{{/mod}}{{#pool}}{{#basis}}={{/basis}}{{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>
<table>
<tr>
<td class="sheet-w50"><em>Ziel:</em> {{ziel}}</td>
<td class="sheet-w50"><em>Dauer:</em> {{dauer}}</td>
<td class="sheet-w50"><em>Schwund:</em> {{schwund}}</td>
</tr>
{{#schwundwiderstand}}
<tr>
<td colspan="3" class="sheet-schwundschaden"><em>Du erleidest {{schwundwiderstand}} Schwundschaden.</em></td>
</tr>
{{/schwundwiderstand}}
<tr><td colspan="3" class="sheet-italic">{{beschreibung}}</td></tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-kraft">
<div class="sheet-text">{{text}}{{name}}</div>
<table>
{{#art}}<tr>
<td><em>Art:</em> {{art}}</td>
<td><em>Handlung:</em> {{handlung}}</td>
</tr>
{{/art}}
{{#reichweite}}
<tr>
<td><em>Reichweite:</em> {{reichweite}}</td>
<td><em>Dauer:</em> {{dauer}}</td>
</tr>
{{/reichweite}}
<tr><td colspan="2" class="sheet-italic">{{beschreibung}}</td></tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-schwaeche">
<div class="sheet-text">{{text}}{{name}}</div>
<div class="sheet-beschreibung">{{beschreibung}}</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-rangedattack">
<div class="sheet-text">{{text}}</div>
{{#erfolge}}<div class="sheet-probe">{{basis}}+{{mod}}={{pool}}W6{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
<table>
{{#kurz}}<tr>
<td><em>Kurz:</em> {{kurz}}</td>
<td><em>Mittel:</em> {{mittel}}</td>
<td><em>Weit:</em> {{weit}}</td>
<td><em>Extrem:</em> {{extrem}}</td>
</tr>{{/kurz}}
{{#schaden}}<tr>
<td colspan="2"><em>Schaden:</em> {{schaden}}</td>
<td><em>DK:</em> {{dk}}</td>
<td><em>RK:</em> {{rk}}</td>
</tr>{{/schaden}}
{{#modus}}<tr>
{{#praezision}}
<td colspan="1"><em>Modus:</em> {{modus}}</td>
<td colspan="1"><em>Präzision:</em> {{praezision}}</td>
<td colspan="2"><em>Munition:</em> {{munition_aktuell}}/{{munition_maximum}}</td>
{{/praezision}}
{{^praezision}}
<td colspan="2"><em>Modus:</em> {{modus}}</td>
<td colspan="2"><em>Munition:</em> {{munition_aktuell}}/{{munition_maximum}}</td>
{{/praezision}}
</tr>{{/modus}}
{{#anzahlkugeln}}
<tr><td colspan="4" class="sheet-italic">Du verschießt {{anzahlkugeln}} Kugeln</td></tr>
{{/anzahlkugeln}}
{{#recoil}}
<tr><td colspan="4" class="sheet-italic">Dein aktueller Rückstoß beträgt -{{recoil}}</td></tr>
{{/recoil}}
{{#munition_update}}
<tr><td colspan="4" class="sheet-italic">Munition muss um -{{munition_update}} aktualisiert werden</td></tr>
{{/munition_update}}
{{#tarn}}
<tr><td colspan="4" class="sheet-italic"><em>Tarnmodifikator:</em> {{tarn}}</td></tr>
{{/tarn}}
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-meleeattack">
<div class="sheet-text">{{text}}</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
<table>
{{#reichweite}}<tr>
<td><em>Reichweite:</em> {{reichweite}}</td>
<td><em>Schaden:</em> {{schaden}}</td>
</tr>{{/reichweite}}
{{#praezision}}<tr>
<td><em>Präzision:</em> {{praezision}}</td>
<td><em>DK:</em> {{dk}}</td>
</tr>{{/praezision}}
{{#tarn}}
<tr><td colspan="2" class="sheet-italic"><em>Tarnmodifikator:</em> {{tarn}}</td></tr>
{{/tarn}}
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-geist">
<div class="sheet-text">{{#text}}{{text}} {{/text}}{{name}} [{{ks}}]</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
{{#geist-erfolge}}<div class="sheet-probe">Der Geist hat {{geist-erfolge}} Erfolge</div>{{/geist-erfolge}}
{{#dienste}}<div class="sheet-probe">Dienste: {{dienste}}</div>{{/dienste}}
{{#entzugsschaden}}<div class="sheet-probe">Du erleidest {{entzugsschaden}} Entzugsschaden</div>{{/entzugsschaden}}
{{#reagenzien}}<div class="sheet-probe">Der verbrauchst {{reagenzien}} Reagenzien</div>{{/reagenzien}}
<table>
{{#kon}}
<tr>
<td><em>Kon:</em></td><td>{{kon}}</td>
<td><em>Ges:</em></td><td>{{ges}}</td>
<td><em>Rea:</em></td><td>{{rea}}</td>
<td><em>Str:</em></td><td>{{str}}</td>
</tr>
<tr>
<td><em>Wil:</em></td><td>{{wil}}</td>
<td><em>Log:</em></td><td>{{log}}</td>
<td><em>Int:</em></td><td>{{int}}</td>
<td><em>Cha:</em></td><td>{{cha}}</td>
</tr>
<tr>
<td><em>Edg:</em></td><td>{{edg}}</td>
<td><em>Ess:</em></td><td>{{ess}}</td>
<td><em>Mag:</em></td><td>{{mag}}</td>
<td></td><td></td>
</tr>{{/kon}}
{{#ini}}<tr>
<td colspan="4"><em>Initiative:</em></td><td colspan="4">{{ini}}</td>
</tr>
<tr>
<td colspan="4"><em>Astrale Initiative:</em></td><td colspan="4">{{a-ini}}</td>
</tr>{{/ini}}
{{#fertigkeiten}}<tr>
<td colspan="8"><em>Fertigkeiten:</em></td>
</tr>
<tr>
<td colspan="8">{{fertigkeiten}}</td>
</tr>{{/fertigkeiten}}
{{#kräfte}}<tr>
<td colspan="8"><em>Kräfte:</em></td>
</tr>
<tr>
<td colspan="8">{{kräfte}}</td>
</tr>
<tr>
<td colspan="8"><em>Zusätzliche Kräfte:</em></td>
</tr>
<tr>
<td colspan="8">{{zusätzliche-kräfte}}</td>
</tr>
<tr>
<td colspan="8"><em>Schwächen:</em></td>
</tr>
<tr>
<td colspan="8">{{schwächen}}</td>
</tr>{{/kräfte}}
{{#besonderheiten}}<tr>
<td colspan="8"><em>Besonderheiten:</em></td>
</tr>
<tr>
<td colspan="8">{{besonderheiten}}</td>
</tr>{{/besonderheiten}}
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-sprite">
<div class="sheet-text">{{#text}}{{text}} {{/text}}{{name}} [{{stufe}}]</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
{{#sprite-erfolge}}<div class="sheet-probe">Das Sprite hat {{sprite-erfolge}} Erfolge</div>{{/sprite-erfolge}}
<table>
{{#angriff}}
<tr>
<td><em>A:</em></td><td>{{angriff}}</td>
<td><em>S:</em></td><td>{{schleicher}}</td>
<td><em>D:</em></td><td>{{datenverarbeitung}}</td>
<td><em>F:</em></td><td>{{firewall}}</td>
</tr>
<tr>
<td><em>RES:</em></td><td>{{resonanz}}</td>
<td><em>INI:</em></td><td colspan="5">{{initiative}}</td>
</tr>
<tr>
<td colspan="8"><em>Fertigkeiten:</em></td>
</tr>
<tr>
<td colspan="8">{{fertigkeiten}}</td>
</tr>
<tr>
<td colspan="8"><em>Kräfte:</em></td>
</tr>
<tr>
<td colspan="8">{{kräfte}}</td>
</tr>
{{/angriff}}
<tr>
<td colspan="8"><em>Du erleidest </em> {{fadeschaden}} <em>Schwundschaden</em></td>
</tr>
<tr>
<td colspan="8"><em>Das Sprite schuldet dir </em> {{tasks}} <em>Aufgaben</em></td>
</tr>
{{#beschreibung}}
<tr>
<td colspan="8"><em>Beschreibung:</em></td>
</tr>
<tr>
<td colspan="8"><em>{{beschreibung}}</em></td>
</tr>
{{/beschreibung}}
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-probe">
<div class="sheet-text {{#color}}{{color}}{{/color}}">{{#text}}{{text}} {{/text}}{{#test}}{{test}}{{/test}}</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}{{#basis}}={{/basis}}{{pool}}W6{{/pool}}{{#erfolge}}{{#probe}}, {{/probe}}{{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
{{#wert}}<div class="sheet-wert">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#basis}}={{/basis}}{{wert}}</div>{{/wert}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-attribut">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-aktionsfertigkeit">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-wissensfertigkeit">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-entzug">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-schwund">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-defense">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-initiative">
<table>
<tr>
<td class="sheet-text">{{text}}</td>
<td class="sheet-erfolge">{{erfolge}}</td>
</tr>
</table>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-zustandsmonitor">
{{#paktuell}}
<table>
<tbody>
{{#probe}}
<tr class="header-white">
<td colspan="2">Probe</td>
<td>{{probe}}</td>
</tr>
{{/probe}}
<tr class="header">
<td>Physisch</td>
<td>Geistig</td>
<td>Überzählig</td>
</tr>
<tr>
<td class="center">{{paktuell}}/{{pmax}}</td>
<td class="center">{{gaktuell}}/{{gmax}}</td>
<td class="center">{{overflow}}/{{overflowmax}}</td>
</tr>
{{#mod}}
<tr>
<td colspan="2" class="roundbottomborder5"><em>Verletzungsmodifikator:</em></td><td class="center">{{mod}}</td>
</tr>
{{/mod}}
{{#hoheschmerztoleranz}}
<tr>
<td colspan="2" class="roundbottomborder5"><em>Hohe Schmerztoleranz:</em></td><td class="center">{{hoheschmerztoleranz}}</td>
</tr>
{{/hoheschmerztoleranz}}
</tbody>
</table>
{{/paktuell}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-connection">
<div class="sheet-text">{{#text}}{{text}}{{/text}}</div>
{{#typ}}<div class="sheet-typ">{{typ}}</div>{{/typ}}
{{#wert}}<div class="sheet-wert">{{wert}}</div>{{/wert}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-item">
<div class="sheet-text">{{#text}}{{text}} {{/text}}{{#test}}{{test}}{{/test}}{{#erfolge}}{{/erfolge}}</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
{{#wert}}<div class="sheet-wert">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#basis}}={{/basis}}{{wert}}</div>{{/wert}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-edge">
<div class="sheet-text">{{#text}}{{text}} {{/text}}{{#test}}{{test}}{{/test}}{{#erfolge}}{{/erfolge}}</div>
{{#erfolge}}<div class="sheet-probe">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#pool}}={{pool}}W6{{/pool}}{{#erfolge}}, {{erfolge}} Erfolge{{/erfolge}}</div>{{/erfolge}}
{{#wert}}<div class="sheet-wert">{{#basis}}{{basis}}{{/basis}}{{#mod}}+({{mod}}){{/mod}}{{#basis}}={{/basis}}{{wert}}</div>{{/wert}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-tragkraft">
<div class="sheet-text">{{#text}}{{text}} {{/text}}{{#test}}{{test}}{{/test}}</div>
{{#erfolge}}<div class="sheet-erfolge">Erfolge: {{erfolge}}</div>{{/erfolge}}
{{#str}}<div class="sheet-erfolge"><em>STR:</em>: {{str}},<em>KON:</em>: {{kon}}</div>{{/str}}
{{#heben}}<table>
<tbody>
<tr>
<td>Heben</td>
<td>Tragen</td>
<td>Stemmen</td>
</tr>
<tr>
<td>{{heben}}</td>
<td>{{tragen}}</td>
<td>{{stemmen}}</td>
</tr>
</tbody>
</table>{{/heben}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-bewegung">
<div class="sheet-text">{{#text}}{{text}}{{/text}}</div>
{{#gehen_frei}}<div class="sheet-wert">Noch {{gehen_frei}}m gehen übrig</div>{{/gehen_frei}}
{{#laufen_frei}}<div class="sheet-wert">Noch {{laufen_frei}}m laufen übrig</div>{{/laufen_frei}}
{{#sprinten}}<div class="sheet-wert">Inkl. +{{sprinten}}m durch Sprinten</div>{{/sprinten}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-gm-menu">
{{#title}}<div class="sheet-menu-title">{{title}}</div>{{/title}}
{{#allprops() title}}<div class="sheet-menu-row">{{value}}</div>{{/allprops() title}}
</rolltemplate>
<!-- Sheet Worker -->
<script type="text/worker">
/* ---- BEGIN: TheAaronSheet.js ---- */
// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
// By: The Aaron, Arcane Scriptomancer
// Contact: https://app.roll20.net/users/104025/the-aaron
var TAS = TAS || (function(){
'use strict';
var version = '0.2.1',
lastUpdate = 1453794214,
loggingSettings = {
debug: {
key: 'debug',
title: 'DEBUG',
color: {
bgLabel: '#7732A2',
label: '#F2EF40',
bgText: '#FFFEB7',
text: '#7732A2'
}
},
error: {
key: 'error',
title: 'Error',
color: {
bgLabel: '#C11713',
label: 'white',
bgText: '#C11713',
text: 'white'
}
},
warn: {
key: 'warn',
title: 'Warning',
color: {
bgLabel: '#F29140',
label: 'white',
bgText: '#FFD8B7',
text: 'black'
}
},
info: {
key: 'info',
title: 'Info',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#B3B2EB',
text: 'black'
}
},
notice: {
key: 'notice',
title: 'Notice',
color: {
bgLabel: '#33C133',
label: 'white',
bgText: '#ADF1AD',
text: 'black'
}
},
log: {
key: 'log',
title: 'Log',
color: {
bgLabel: '#f2f240',
label: 'black',
bgText: '#ffff90',
text: 'black'
}
},
callstack: {
key: 'TAS',
title: 'function',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#B3B2EB',
text: 'black'
}
},
callstack_async: {
key: 'TAS',
title: 'ASYNC CALL',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#413FA9',
text: 'white'
}
},
TAS: {
key: 'TAS',
title: 'TAS',
color: {
bgLabel: 'grey',
label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
bgText: 'grey',
text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
}
}
},
config = {
debugMode: false,
logging: {
log: true,
notice: true,
info: true,
warn: true,
error: true,
debug: false
}
},
callstackRegistry = [],
queuedUpdates = {}, //< Used for delaying saves till the last momment.
complexType = function(o){
switch(typeof o){
case 'string':
return 'string';
case 'boolean':
return 'boolean';
case 'number':
return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
case 'function':
return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
case 'object':
return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
default:
return typeof o;
}
},
dataLogger = function(primaryLogger,secondaryLogger,data){
_.each(data,function(m){
var type = complexType(m);
switch(type){
case 'string':
primaryLogger(m);
break;
case 'undefined':
case 'null':
case 'NaN':
primaryLogger('['+type+']');
break;
case 'number':
case 'not a number':
case 'integer':
case 'decimal':
case 'boolean':
primaryLogger('['+type+']: '+m);
break;
default:
primaryLogger('['+type+']:=========================================');
secondaryLogger(m);
primaryLogger('=========================================================');
break;
}
});
},
colorLog = function(options){
var coloredLoggerFunction,
key = options.key,
label = options.title || 'TAS',
lBGColor = (options.color && options.color.bgLabel) || 'blue',
lTxtColor = (options.color && options.color.label) || 'white',
mBGColor = (options.color && options.color.bgText) || 'blue',
mTxtColor = (options.color && options.color.text) || 'white';
coloredLoggerFunction = function(message){
console.log(
'%c '+label+': %c '+message,
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
'background-color: '+mBGColor+';color: '+mTxtColor+';'
);
};
return function(){
if('TAS'===key || config.logging[key]){
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
}
};
},
logDebug = colorLog(loggingSettings.debug),
logError = colorLog(loggingSettings.error),
logWarn = colorLog(loggingSettings.warn),
logInfo = colorLog(loggingSettings.info),
logNotice = colorLog(loggingSettings.notice),
logLog = colorLog(loggingSettings.log),
log = colorLog(loggingSettings.TAS),
logCS = colorLog(loggingSettings.callstack),
logCSA = colorLog(loggingSettings.callstack_async),
registerCallstack = function(callstack,label){
var idx=_.findIndex(callstackRegistry,function(o){
return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length)
&& _.difference(o.stack,callstack).length === 0
&& o.label === label;
});
if(-1 === idx){
idx=callstackRegistry.length;
callstackRegistry.push({
stack: callstack,
label: label
});
}
return idx;
},
setConfigOption = function(options){
var newconf =_.defaults(options,config);
newconf.logging=_.defaults(
(options && options.logging)||{},
config.logging
);
config=newconf;
},
debugMode = function(){
config.logging.debug=true;
config.debugMode = true;
},
getCallstack = function(){
var e = new Error('dummy'),
stack = _.map(_.rest(e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
.split('\n')),function(l){
return l.replace(/\s+.*$/,'');
});
return stack;
},
logCallstackSub = function(cs){
var matches, csa;
_.find(cs,function(line){
matches = line.match(/TAS_CALLSTACK_(\d+)/);
if(matches){
csa=callstackRegistry[matches[1]];
logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
logCallstackSub(csa.stack);
return true;
}
logCS(line);
return false;
});
},
logCallstack = function(){
var cs;
if(config.debugMode){
cs = getCallstack();
cs.shift();
log('==============================> CALLSTACK <==============================');
logCallstackSub(cs);
log('=========================================================================');
}
},
wrapCallback = function (label, callback,context){
var callstack;
if('function' === typeof label){
context=callback;
callback=label;
label=undefined;
}
if(!config.debugMode){
return (function(cb,ctx){
return function(){
cb.apply(ctx||{},arguments);
};
}(callback,context));
}
callstack = getCallstack();
callstack.shift();
return (function(cb,ctx,cs,lbl){
var ctxref=registerCallstack(cs,lbl);
return new Function('cb','ctx','TASlog',
"return function TAS_CALLSTACK_"+ctxref+"(){"+
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
"cb.apply(ctx||{},arguments);"+
"TASlog('Exiting: '+(cb.name||'(anonymous function)'));"+
"};")(cb,ctx,log);
}(callback,context,callstack,label));
},
prepareUpdate = function( attribute, value ){
queuedUpdates[attribute]=value;
},
applyQueuedUpdates = function() {
setAttrs(queuedUpdates);
queuedUpdates = {};
},
namesFromArgs = function(args,base){
return _.chain(args)
.reduce(function(memo,attr){
if('string' === typeof attr) {
memo.push(attr);
} else if(_.isArray(args) || _.isArguments(args)){
memo = namesFromArgs(attr,memo);
}
return memo;
},(_.isArray(base) && base) || [])
.uniq()
.value();
},
addId = function(obj,value){
Object.defineProperty(obj,'id',{
value: value,
writeable: false,
enumerable: false
});
},
addProp = function(obj,prop,value,fullname){
(function(){
var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
full_pname = fullname || prop,
pvalue=value;
_.each(['S','I','F'],function(p){
if( !_.has(obj,p)){
Object.defineProperty(obj, p, {
value: {},
enumerable: false,
readonly: true
});
}
});
if( !_.has(obj,'D')){
Object.defineProperty(obj, 'D', {
value: _.reduce(_.range(10),function(m,d){
Object.defineProperty(m, d, {
value: {},
enumerable: true,
readonly: true
});
return m;
},{}),
enumerable: false,
readonly: true
});
}
// Raw value
Object.defineProperty(obj, pname, {
enumerable: true,
set: function(v){
pvalue=v;
prepareUpdate(full_pname,v);
},
get: function(){
return pvalue;
}
});
// string value
Object.defineProperty(obj.S, pname, {
enumerable: true,
set: function(v){
var val=v.toString();
pvalue=val;
prepareUpdate(full_pname,val);
},
get: function(){
return pvalue.toString();
}
});
// int value
Object.defineProperty(obj.I, pname, {
enumerable: true,
set: function(v){
var val=parseInt(v,10) || 0;
pvalue=val;
prepareUpdate(full_pname,val);
},
get: function(){
return parseInt(pvalue,10) || 0;
}
});
// float value
Object.defineProperty(obj.F, pname, {
enumerable: true,
set: function(v){
var val=parseFloat(v) || 0;
pvalue=val;
prepareUpdate(full_pname,val);
},
get: function(){
return parseFloat(pvalue) || 0;
}
});
_.each(_.range(10),function(d){
Object.defineProperty(obj.D[d], pname, {
enumerable: true,
set: function(v){
var val=(parseFloat(v) || 0).toFixed(d);
pvalue=val;
prepareUpdate(full_pname,val);
},
get: function(){
return (parseFloat(pvalue) || 0).toFixed(d);
}
});
});
}());
},
repeating = function( section ) {
return (function(s){
var sectionName = s,
attrNames = [],
fieldNames = [],
operations = [],
after = [],
repAttrs = function TAS_Repeating_Attrs(){
attrNames = namesFromArgs(arguments,attrNames);
return this;
},
repFields = function TAS_Repeating_Fields(){
fieldNames = namesFromArgs(arguments,fieldNames);
return this;
},
repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
operations.push({
type: 'reduce',
func: (func && _.isFunction(func) && func) || _.noop,
memo: (_.isUndefined(initial) && 0) || initial,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repMap = function TAS_Repeating_Map(func, final, context) {
operations.push({
type: 'map',
func: (func && _.isFunction(func) && func) || _.noop,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repEach = function TAS_Repeating_Each(func, final, context) {
operations.push({
type: 'each',
func: (func && _.isFunction(func) && func) || _.noop,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repTap = function TAS_Repeating_Tap(final, context) {
operations.push({
type: 'tap',
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repAfter = function TAS_Repeating_After(callback,context) {
after.push({
callback: (callback && _.isFunction(callback) && callback) || _.noop,
context: context || {}
});
return this;
},
repExecute = function TAS_Repeating_Execute(callback,context){
var rowSet = {},
attrSet = {},
fieldIds = [],
fullFieldNames = [];
repAfter(callback,context);
// call each operation per row.
// call each operation's final
getSectionIDs("repeating_"+sectionName,function(ids){
fieldIds = ids;
fullFieldNames = _.reduce(fieldIds,function(memo,id){
return memo.concat(_.map(fieldNames,function(name){
return 'repeating_'+sectionName+'_'+id+'_'+name;
}));
},[]);
getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
_.each(attrNames,function(aname){
if(values.hasOwnProperty(aname)){
addProp(attrSet,aname,values[aname]);
}
});
rowSet = _.reduce(fieldIds,function(memo,id){
var r={};
addId(r,id);
_.each(fieldNames,function(name){
var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
addProp(r,name,values[fn],fn);
});
memo[id]=r;
return memo;
},{});
_.each(operations,function(op){
var res;
switch(op.type){
case 'tap':
_.bind(op.final,op.context,rowSet,attrSet)();
break;
case 'each':
_.each(rowSet,function(r){
_.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,rowSet,attrSet)();
break;
case 'map':
res = _.map(rowSet,function(r){
return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,res,rowSet,attrSet)();
break;
case 'reduce':
res = op.memo;
_.each(rowSet,function(r){
res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,res,rowSet,attrSet)();
break;
}
});
// finalize attrs
applyQueuedUpdates();
_.each(after,function(op){
_.bind(op.callback,op.context)();
});
});
});
};
return {
attrs: repAttrs,
attr: repAttrs,
column: repFields,
columns: repFields,
field: repFields,
fields: repFields,
reduce: repReduce,
inject: repReduce,
foldl: repReduce,
map: repMap,
collect: repMap,
each: repEach,
forEach: repEach,
tap: repTap,
'do': repTap,
after: repAfter,
last: repAfter,
done: repAfter,
execute: repExecute,
go: repExecute,
run: repExecute
};
}(section));
},
repeatingSimpleSum = function(section, field, destination){
repeating(section)
.attr(destination)
.field(field)
.reduce(function(m,r){
return m + (r.F[field]);
},0,function(t,r,a){
a[destination]=t;
})
.execute();
};
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ The Aaron Sheet v'+version+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: '+(new Date(lastUpdate*1000))+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
return {
/* Repeating Sections */
repeatingSimpleSum: repeatingSimpleSum,
repeating: repeating,
/* Configuration */
config: setConfigOption,
/* Debugging */
callback: wrapCallback,
callstack: logCallstack,
debugMode: debugMode,
_fn: wrapCallback,
/* Logging */
debug: logDebug,
error: logError,
warn: logWarn,
info: logInfo,
notice: logNotice,
log: logLog
};
}());
/* ---- END: TheAaronSheet.js ---- */
// Attributes
on("sheet:opened change:kon_basis change:kon_mod",function(){update_kon();});
on("sheet:opened change:ges_basis change:ges_mod",function(){update_ges();});
on("sheet:opened change:rea_basis change:rea_mod",function(){update_rea();});
on("sheet:opened change:str_basis change:str_mod",function(){update_str();});
on("sheet:opened change:wil_basis change:wil_mod",function(){update_wil();});
on("sheet:opened change:int_basis change:int_mod",function(){update_int();});
on("sheet:opened change:log_basis change:log_mod",function(){update_log();});
on("sheet:opened change:cha_basis change:cha_mod",function(){update_cha();});
on("sheet:opened change:mag_basis change:mag_mod",function(){update_mag();});
on("sheet:opened change:res_basis change:res_mod",function(){update_res();});
on("sheet:opened change:edg_basis change:edg_mod",function(){update_edg();});
on("sheet:opened change:ess_basis change:ess_mod",function(){update_ess();});
// Initiative
on("sheet:opened change:ini_active "+
"change:initiative_basis change:ar_initiative_basis change:vr_cold_initiative_basis change:vr_hot_initiative_basis change:astral_initiative_basis "+
"change:initiative_mod change:ar_initiative_mod change:vr_cold_initiative_mod change:vr_hot_initiative_mod change:astral_initiative_mod "+
"change:initiative_wuerfel change:ar_initiative_wuerfel change:vr_cold_initiative_wuerfel change:vr_hot_initiative_wuerfel change:astral_initiative_wuerfel", function() {
set_active_ini()
});
on("sheet:opened change:rea change:int",function(){update_initiative();});
on("sheet:opened change:rea change:int",function(){update_ar_initiative();});
on("sheet:opened", function() {
update_vr_cold_initiative();
update_vr_hot_initiative();
});
on("sheet:opened change:int",function(){update_astral_initiative();});
// Limits
on("sheet:opened change:str change:kon change:rea change:klimit_mod",function(){update_klimit();});
on("sheet:opened change:log change:int change:wil change:glimit_mod",function(){update_glimit();});
on("sheet:opened change:cha change:wil change:ess change:slimit_mod",function(){update_slimit();});
on("sheet:opened change:glimit change:slimit", function(){update_alimit();});
// Bewegung / Tragen
on("sheet:opened change:ges change:bewegung_gehen_mult change:bewegung_laufen_mult", function(){update_movement();});
on("sheet:opened change:str change:tragkraft_heben_mult change:tragkraft_tragen_mult change:tragkraft_stemmen_mult",function(){update_lifting();});
// attribute tests
on("sheet:opened change:cha change:wil change:selbstbeherrschung_mod",function(){update_composure();});
on("sheet:opened change:cha change:int change:menschenkenntnis_mod", function(){update_judge();});
on("sheet:opened change:log change:int change:erinnerung_mod", function(){update_memory();});
// SUM
// Karma
on("sheet:opened change:repeating_advancementkarma remove:repeating_advancementkarma", function() {
TAS.repeating('advancementkarma')
.attrs('karma_total','karma_current') //< getting the attributes for the totals
.fields('advancementkarma_karma') //< specifying the fields we care about
.reduce(function(m,r){
m.income += r.I.advancementkarma_karma>0 ? r.I.advancementkarma_karma:0; //< Generate a running cost
m.expense += r.I.advancementkarma_karma<0 ? r.I.advancementkarma_karma:0;
return m;
},{income:0,expense:0},function(m,r,a){
a.I.karma_total = m.income; //< take the final sum and set it on the total attribute
console.log("Set karma_total to"+m.income)
a.I.karma_current = m.income + m.expense;
console.log("Set karma_current to"+a.I.karma_current)
})
.execute(); //< begin executing the above operations
});
// nuyen
on("sheet:opened change:repeating_advancementnuyen remove:repeating_advancementnuyen", function() {
TAS.repeating('advancementnuyen')
.attrs('nuyen_total') //< getting the attributes for the totals
.fields('advancementnuyen_nuyen') //< specifying the fields we care about
.reduce(function(m,r){
m += r.I.advancementnuyen_nuyen; //< Generate a running cost
return m;
},0,function(m,r,a){
a.I.nuyen_total = m; //< take the final sum and set it on the total attribute
console.log("Set nuyen to"+m)
})
.execute(); //< begin executing the above operations
});
on("sheet:opened change:nuyen_total change:nuyen_aktuell", function() {
getAttrs(["nuyen_total","nuyen_aktuell"], function(v) {
setAttrs({
'nuyen_neu': safe.I(v.nuyen_aktuell) - safe.I(v.nuyen_total)
});
});
});
// essence
on("sheet:opened change:repeating_augmentation remove:repeating_augmentations", function() {
TAS.repeating('augmentations')
.attrs('ess_mod') //< getting the attributes for the totals
.fields('augmentations_essence') //< specifying the fields we care about
.reduce(function(m,r){
m += r.F.augmentations_essence; //< Generate a running cost
return m;
},0,function(m,r,a){
a.F.ess_mod = m; //< take the final sum and set it on the total attribute
console.log("Set ess_mod to"+m)
})
.execute(); //< begin executing the above operations
});
// settings
on("sheet:opened change:use_edge", function() {
getAttrs(["use_edge"], function(v) {
console.log("USE EDGE:"+v.use_edge)
use_edge = (v.use_edge == "on")
if(use_edge){
setAttrs({
'cmd_use_edge_token': "!",
'cmd_use_edge_text' : "{{edge=Edge @{edg}}}",
'cmd_use_edge_mod' : "+@{edg}"
});
}else{
setAttrs({
'cmd_use_edge_token': "",
'cmd_use_edge_text' : "",
'cmd_use_edge_mod' : ""
});
}
});
});
on("sheet:opened change:use_injury_mod change:injury_mod", function() {
getAttrs(["use_injury_mod","injury_mod"], function(v) {
use_injury = (v.use_injury_mod == "on");
if(use_injury && v.injury_mod > 0){
setAttrs({
'cmd_injury_mod': "-@{injury_mod}",
'cmd_injury_text': "{{injurymod=-@{injury_mod}}}"
});
}else{
setAttrs({
'cmd_injury_mod': "",
'cmd_injury_text': ""
});
}
setAttrs({
'injury_mod_negative': -safe.I(v.injury_mod)
});
});
});
on("sheet:opened change:hide_rolls", function() {
getAttrs(["hide_rolls"], function(v) {
hide_rolls = (v.hide_rolls == "on");
if(hide_rolls){
setAttrs({
'hide_rolls_cmd': "/w gm "
});
}else{
setAttrs({
'hide_rolls_cmd': "/em "
});
}
});
});
// Actionskills
on("change:repeating_skillsaction:skillsaction_id change:repeating_skillsaction:skillsaction_limit "+
"change:repeating_skillsaction:skillsaction_limit change:repeating_skillsaction:skillsaction_limit_mod "+
"change:repeating_skillsaction:skillsaction_note change:repeating_skillsaction:skillsaction_include_note", function() {
getAttrs(["klimit","glimit","slimit","alimit",
"repeating_skillsaction_skillsaction_id",
"repeating_skillsaction_skillsaction_limit","repeating_skillsaction_skillsaction_limit_mod",
"repeating_skillsaction_skillsaction_note","repeating_skillsaction_skillsaction_include_note"], function(v) {
if(v.repeating_skillsaction_skillsaction_id = "" || v.repeating_skillsaction_skillsaction_id == undefined){
return;
}
console.log("Selected Limit:"+v.repeating_skillsaction_skillsaction_limit);
var mod = safe.I(v.repeating_skillsaction_skillsaction_limit_mod);
if(v.repeating_skillsaction_skillsaction_limit == "@{klimit}"){
console.log("@{klimit}:"+v.klimit);
var total = safe.I(v.klimit) + mod;
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{limit="+total+"}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh"+total,
'repeating_skillsaction_skillsaction_limit_display': safe.I(v.klimit),
'repeating_skillsaction_skillsaction_limit_total': total
});
}else if(v.repeating_skillsaction_skillsaction_limit == "@{glimit}"){
console.log("@{glimit}:"+v.glimit);
var total = safe.I(v.glimit) + mod;
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{limit="+total+"}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh"+total,
'repeating_skillsaction_skillsaction_limit_display': safe.I(v.glimit),
'repeating_skillsaction_skillsaction_limit_total': total
});
}else if(v.repeating_skillsaction_skillsaction_limit == "@{slimit}"){
console.log("@{slimit}:"+v.slimit);
var total = safe.I(v.slimit) + mod;
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{limit="+total+"}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh"+total,
'repeating_skillsaction_skillsaction_limit_display': safe.I(v.slimit),
'repeating_skillsaction_skillsaction_limit_total': total
});
}else if(v.repeating_skillsaction_skillsaction_limit == "@{alimit}"){
console.log("@{alimit}:"+v.alimit);
var total = safe.I(v.alimit) + mod;
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{limit="+total+"}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh"+total,
'repeating_skillsaction_skillsaction_limit_display': safe.I(v.alimit),
'repeating_skillsaction_skillsaction_limit_total': total
});
}else if(v.repeating_skillsaction_skillsaction_limit == "0"){
console.log("0+"+v.repeating_skillsaction_skillsaction_limit_mod);
var total = mod;
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{limit="+total+"}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh"+total,
'repeating_skillsaction_skillsaction_limit_display': "-",
'repeating_skillsaction_skillsaction_limit_total': total
});
}else if(v.repeating_skillsaction_skillsaction_limit == "99"){
console.log("99: NO LIMIT");
setAttrs({
'repeating_skillsaction_skillsaction_limit_text': "{{unused}}",
'repeating_skillsaction_skillsaction_limit_formatted': "kh9999",
'repeating_skillsaction_skillsaction_limit_display': "-",
'repeating_skillsaction_skillsaction_limit_total': "-"
});
}else{
console.log("ELSE "+v.repeating_skillsaction_skillsaction_limit);
}
if(v.repeating_skillsaction_skillsaction_include_note == "on"){
setAttrs({
'repeating_skillsaction_skillsaction_desc': "{{desc=@{skillsaction_note}}}"
});
}else{
setAttrs({
'repeating_skillsaction_skillsaction_desc': "{{unused}}"
});
}
});
});
on("change:repeating_skillsknowledge:skillsknowledge_id change:repeating_skillsknowledge:skillsknowledge_limit change:repeating_skillsknowledge:skillsknowledge_limit_mod "+
"change:repeating_skillsknowledge:skillsknowledge_limit_note change:repeating_skillsknowledge:skillsknowledge_include_note", function(eventInfo) {
getAttrs(["klimit","glimit","slimit","alimit",
"repeating_skillsknowledge_skillsknowledge_id",
"repeating_skillsknowledge_skillsknowledge_limit","repeating_skillsknowledge_skillsknowledge_limit_mod",
"repeating_skillsknowledge_skillsknowledge_note","repeating_skillsknowledge_skillsknowledge_include_note"], function(v) {
if(v.repeating_skillsknowledge_skillsknowledge_id = "" || v.repeating_skillsknowledge_skillsknowledge_id == undefined){
return;
}
var mod = safe.I(v.repeating_skillsknowledge_skillsknowledge_limit_mod);
if(v.repeating_skillsknowledge_skillsknowledge_limit == "@{glimit}"){
var total = safe.I(v.glimit) + mod;
setAttrs({
'repeating_skillsknowledge_skillsknowledge_limit_text': "{{limit="+safe.I(v.glimit)+"}}",
'repeating_skillsknowledge_skillsknowledge_limit_formatted': "kh"+safe.I(v.glimit),
'repeating_skillsknowledge_skillsknowledge_limit_display': v.glimit,
'repeating_skillsknowledge_skillsknowledge_limit_total': total
});
}else if(v.repeating_skillsknowledge_skillsknowledge_limit == "0"){
var total = mod;
setAttrs({
'repeating_skillsknowledge_skillsknowledge_limit_text': "{{limit="+safe.I(v.repeating_skillsknowledge_skillsknowledge_limit_mod)+"}}",
'repeating_skillsknowledge_skillsknowledge_limit_formatted': "kh"+safe.I(v.repeating_skillsknowledge_skillsknowledge_limit_mod),
'repeating_skillsknowledge_skillsknowledge_limit_display': "-",
'repeating_skillsknowledge_skillsknowledge_limit_total': total
});
}else if(v.repeating_skillsknowledge_skillsknowledge_limit == "99"){
setAttrs({
'repeating_skillsknowledge_skillsknowledge_limit_text': "{{unused}}",
'repeating_skillsknowledge_skillsknowledge_limit_formatted': "kh9999",
'repeating_skillsknowledge_skillsknowledge_limit_display': "-",
'repeating_skillsknowledge_skillsknowledge_limit_total': "-"
});
}
if(v.repeating_skillsknowledge_skillsknowledge_include_note == "on"){
setAttrs({
'repeating_skillsknowledge_skillsknowledge_desc': "{{desc=@{skillsknowledge_note}}}"
});
}else{
setAttrs({
'repeating_skillsknowledge_skillsknowledge_desc': "{{unused}}"
});
}
});
});
//Zustandsmonitor
on("change:zmp_aktuell change:zmp_maximum change:zmp_toleranz "+
"change:zmg_aktuell change:zmg_maximum change:zmg_toleranz "+
"change:overflow_aktuell change:overflow_maximum change:overflow_toleranz", function() {
getAttrs(["zmp_aktuell","zmp_maximum","zmp_toleranz",
"zmg_aktuell","zmg_maximum","zmg_toleranz",
"overflow_aktuell","overflow_maximum","overflow_toleranz"], function(v) {
var pc = safe.I(v.zmp_aktuell);
var pm = safe.I(v.zmp_maximum);
var pt = safe.I(v.zmp_toleranz);
var gc = safe.I(v.zmg_aktuell);
var gm = safe.I(v.zmg_maximum);
var gt = safe.I(v.zmg_toleranz);
var oc = safe.I(v.overflow_aktuell);
var om = safe.I(v.overflow_maximum);
var ot = safe.I(v.overflow_toleranz);
if(gc > gm + 1){
//Overflow -> physical per 2 boxes
var overflow = Math.floor((gc - gm)/2.0);
pc = pc + overflow;
//Substract overflow from mental
gc = gc - overflow*2;
}
if(pc > pm){
var overflow = pc - pm;
oc = oc + overflow;
//Substract overflow from physical
pc = pc - overflow;
}
if(pt<=0){
pt =1;
}
if(gt<=0){
gt =1;
}
if(ot<=0){
ot = 1;
}
var mod_p = Math.floor(pc/pt);
var mod_g = Math.floor(gc/gt);
var injurymod = mod_p + mod_g;
setAttrs({
"zmp_aktuell":pc,
"zmp_toleranz":pt,
"zmg_aktuell":gc,
"zmg_toleranz":gt,
"overflow_aktuell":oc,
"overflow_toleranz":ot,
"injury_mod":injurymod
});
});
});
//ROW ID
on("sheet:opened change:repeating_spellcasting", function() {update_id("spellcasting");});
on("sheet:opened change:repeating_alchemyspells", function() {update_id("alchemyspells");});
on("sheet:opened change:repeating_preparations:preparations_name", function() {update_id("preparations");});
on("sheet:opened change:repeating_summonspirit", function() {update_id("summonspirit");});
on("sheet:opened change:repeating_rituals", function() {update_id("rituals");});
on("sheet:opened change:repeating_adeptpowers", function() {update_id("adeptpowers");});
on("sheet:opened change:repeating_positivequalities", function() {update_id("positivequalities");});
on("sheet:opened change:repeating_negativequalities", function() {update_id("negativequalities");});
on("sheet:opened change:repeating_advancementkarma", function() {update_id("advancementkarma");});
on("sheet:opened change:repeating_advancementnuyen", function() {update_id("advancementnuyen");});
on("sheet:opened change:repeating_skillsaction", function() {update_id("skillsaction");});
on("sheet:opened change:repeating_skillsknowledge", function() {update_id("skillsknowledge");});
on("sheet:opened change:repeating_weaponsranged", function() {update_id("weaponsranged");});
on("sheet:opened change:repeating_weaponsmelee", function() {update_id("weaponsmelee");});
on("sheet:opened change:repeating_combatpools", function() {update_id("combatpools");});
on("sheet:opened change:repeating_armor", function() {update_id("armor");});
on("sheet:opened change:repeating_cyberdecks", function() {update_id("cyberdecks");});
on("sheet:opened change:repeating_riggerconsoles", function() {update_id("riggerconsoles");});
on("sheet:opened change:repeating_matrixprograms", function() {update_id("matrixprograms");});
on("sheet:opened change:repeating_complexforms", function() {update_id("complexforms");});
on("sheet:opened change:repeating_compilesprites", function() {update_id("compilesprites");});
on("sheet:opened change:repeating_sins", function() {update_id("sins");});
on("sheet:opened change:repeating_licenses", function() {update_id("licenses");});
on("sheet:opened change:repeating_lifestyles", function() {update_id("lifestyles");});
on("sheet:opened change:repeating_connections", function() {update_id("connections");});
on("sheet:opened change:repeating_equipment", function() {update_id("equipment");});
on("sheet:opened change:repeating_augmentations", function() {update_id("augmentations");});
on("sheet:opened change:repeating_ammunition", function() {update_id("ammunition");});
on("sheet:opened change:repeating_vehicles", function() {update_id("vehicles");});
on("sheet:opened change:repeating_drones", function() {update_id("drones");});
on("sheet:opened change:repeating_orders", function() {update_id("orders");});
var update_id = function(name){ getSectionIDs("repeating_"+name, function(idarray) {for(var i=0; i < idarray.length; i++) {var attrs ={};attrs['repeating_'+name+'_' + idarray[i] + '_'+name+'_id'] = idarray[i];setAttrs(attrs,{silent:true});}});};
var update_kon = function(){getAttrs(["kon_basis","kon_mod"],function(v){setAttrs({"kon":safe.I(v["kon_basis"])+safe.I(v["kon_mod"])});});};
var update_ges = function(){getAttrs(["ges_basis","ges_mod"],function(v){setAttrs({"ges":safe.I(v["ges_basis"])+safe.I(v["ges_mod"])});});};
var update_rea = function(){getAttrs(["rea_basis","rea_mod"],function(v){setAttrs({"rea":safe.I(v["rea_basis"])+safe.I(v["rea_mod"])});});};
var update_str = function(){getAttrs(["str_basis","str_mod"],function(v){setAttrs({"str":safe.I(v["str_basis"])+safe.I(v["str_mod"])});});};
var update_wil = function(){getAttrs(["wil_basis","wil_mod"],function(v){setAttrs({"wil":safe.I(v["wil_basis"])+safe.I(v["wil_mod"])});});};
var update_int = function(){getAttrs(["int_basis","int_mod"],function(v){setAttrs({"int":safe.I(v["int_basis"])+safe.I(v["int_mod"])});});};
var update_log = function(){getAttrs(["log_basis","log_mod"],function(v){setAttrs({"log":safe.I(v["log_basis"])+safe.I(v["log_mod"])});});};
var update_cha = function(){getAttrs(["cha_basis","cha_mod"],function(v){setAttrs({"cha":safe.I(v["cha_basis"])+safe.I(v["cha_mod"])});});};
// special attributes
var update_mag = function(){getAttrs(["mag_basis","mag_mod"],function(v){setAttrs({"mag":safe.I(v["mag_basis"])+safe.I(v["mag_mod"])});});};
var update_res = function(){getAttrs(["res_basis","res_mod"],function(v){setAttrs({"res":safe.I(v["res_basis"])+safe.I(v["res_mod"])});});};
// edge/essence
var update_edg = function(){
getAttrs(["edg_basis","edg_mod"], function(v) {
setAttrs({
"edg": safe.I(v.edg_basis) + safe.I(v.edg_mod),
"edgpunkte_max": safe.I(v.edg_basis) + safe.I(v.edg_mod)
});
});
};
var update_ess = function(){
getAttrs(["ess_basis","ess_mod"], function(v) {
setAttrs({
"ess": safe.F(v.ess_basis) - safe.F(v.ess_mod)
});
});
};
var update_initiative = function(){
getAttrs(["rea","int"], function(v) {
setAttrs({
"initiative_basis": safe.F(v.rea) + safe.F(v.int)
});
});
};
var update_ar_initiative = function(){
getAttrs(["rea","int"], function(v) {
setAttrs({
"ar_initiative_basis": safe.F(v.rea) + safe.F(v.int)
});
});
};
var update_vr_cold_initiative = function(){
return;//Do nothing at the moment -> Later we want to update this from the active deck
getAttrs(["int"], function(v) {
setAttrs({
"vr_cold_initiative_basis": safe.F(v.int)*2.0
});
});
};
var update_vr_hot_initiative = function(){
return;//Do nothing at the moment -> Later we want to update this from the active deck
getAttrs(["int"], function(v) {
setAttrs({
"vr_hot_initiative_basis": safe.F(v.int)*2.0
});
});
};
var update_astral_initiative = function(){
getAttrs(["int"], function(v) {
setAttrs({
"astral_initiative_basis": safe.F(v.int)*2.0
});
});
};
var set_active_ini = function(){
getAttrs(["ini_active",
"initiative_basis","initiative_mod","initiative_wuerfel",
"ar_initiative_basis","ar_initiative_mod","ar_initiative_wuerfel",
"vr_cold_initiative_basis","vr_cold_initiative_mod","vr_cold_initiative_wuerfel",
"vr_hot_initiative_basis","vr_hot_initiative_mod","vr_hot_initiative_wuerfel",
"ar_initiative_basis","ar_initiative_mod","ar_initiative_wuerfel",
"astral_initiative_basis","astral_initiative_mod","astral_initiative_wuerfel"], function(v) {
if (v.ini_active == "INI"){
setAttrs({
"initiative_basis_active": safe.I(v.initiative_basis),
"initiative_mod_active": safe.I(v.initiative_mod),
"initiative_wuerfel_active": safe.I(v.initiative_wuerfel)
});
}else if (v.ini_active == "AR"){
setAttrs({
"initiative_basis_active": safe.I(v.ar_initiative_basis),
"initiative_mod_active": safe.I(v.ar_initiative_mod),
"initiative_wuerfel_active": safe.I(v.ar_initiative_wuerfel)
});
}else if (v.ini_active == "VRk"){
setAttrs({
"initiative_basis_active": safe.I(v.vr_cold_initiative_basis),
"initiative_mod_active": safe.I(v.vr_cold_initiative_mod),
"initiative_wuerfel_active": safe.I(v.vr_cold_initiative_wuerfel)
});
}else if (v.ini_active == "VRh"){
setAttrs({
"initiative_basis_active": safe.I(v.vr_hot_initiative_basis),
"initiative_mod_active": safe.I(v.vr_hot_initiative_mod),
"initiative_wuerfel_active": safe.I(v.vr_hot_initiative_wuerfel)
});
}else if (v.ini_active == "Astral"){
setAttrs({
"initiative_basis_active": safe.I(v.astral_initiative_basis),
"initiative_mod_active": safe.I(v.astral_initiative_mod),
"initiative_wuerfel_active": safe.I(v.astral_initiative_wuerfel)
});
}
});
};
// limits
var update_klimit = function(){
getAttrs(["str","kon","rea","klimit_mod"], function(v) {
klimit = Math.ceil((safe.I(v.str)*2.0 + safe.I(v.kon) + safe.I(v.rea))/3.0);
klimit_mod = safe.I(v.klimit_mod);
setAttrs({
"klimit_basis": klimit,
"klimit": klimit + klimit_mod
});
});
};
var update_glimit = function(){
getAttrs(["log","int","wil","glimit_mod"], function(v) {
glimit = Math.ceil((safe.I(v.log)*2.0 + safe.I(v.int) + safe.I(v.wil))/3.0);
glimit_mod = safe.I(v.glimit_mod);
setAttrs({
"glimit_basis": glimit,
"glimit": glimit + glimit_mod
});
});
};
var update_slimit = function(){
getAttrs(["cha","wil","ess","slimit_mod"], function(v) {
slimit = Math.ceil((safe.I(v.cha)*2.0 + safe.I(v.wil) + safe.I(v.ess))/3.0);
slimit_mod = safe.I(v.slimit_mod);
setAttrs({
"slimit_basis": slimit,
"slimit": slimit + slimit_mod
});
});
};
var update_alimit = function(){
getAttrs(["glimit","slimit","alimit_mod"], function(v) {
alimit = Math.max(safe.I(v.glimit),safe.I(v.slimit));
alimit_mod = safe.I(v.alimit_mod);
setAttrs({
"alimit_basis": alimit,
"alimit": alimit + alimit_mod
});
});
};
// movement
var update_movement = function(){
getAttrs(["ges","bewegung_gehen_mult","bewegung_laufen_mult"], function(v) {
ges = safe.I(v.ges);
gehen_mult = safe.I(v.bewegung_gehen_mult);
laufen_mult = safe.I(v.bewegung_laufen_mult);
setAttrs({
"bewegung_gehen": ges*gehen_mult,
"bewegung_laufen": ges*laufen_mult,
"bewegung_sprinten": 0
});
});
};
// lifting
var update_lifting = function(){
getAttrs(["str","tragkraft_heben_mult","tragkraft_tragen_mult","tragkraft_stemmen_mult"], function(v) {
str = safe.I(v.str);
heben_mult = safe.I(v.tragkraft_heben_mult);
tragen_mult = safe.I(v.tragkraft_tragen_mult);
stemmen_mult = safe.I(v.tragkraft_stemmen_mult);
setAttrs({
"tragkraft_heben": str*heben_mult,
"tragkraft_tragen": str*tragen_mult,
"tragkraft_stemmen": str*stemmen_mult
});
});
};
// attribute rolls
var update_composure = function(){
getAttrs(["cha","wil","selbstbeherrschung_mod"], function(v) {
cha = safe.I(v.cha);
wil = safe.I(v.wil);
mod = safe.I(v.selbstbeherrschung_mod);
setAttrs({
"selbstbeherrschung_basis": cha+wil,
"selbstbeherrschung": cha+wil+mod
});
});
};
var update_judge = function(){
getAttrs(["cha","int","menschenkenntnis_mod"], function(v) {
cha = safe.I(v.cha);
intuition = safe.I(v.int);
mod = safe.I(v.menschenkenntnis_mod);
setAttrs({
"menschenkenntnis_basis": cha+intuition,
"menschenkenntnis": cha+intuition+mod
});
});
};
var update_memory = function(){
getAttrs(["log","int","erinnerung_mod"], function(v) {
log = safe.I(v.log);
intuition = safe.I(v.int);
mod = safe.I(v.erinnerung_mod);
setAttrs({
"erinnerung_basis": log+intuition,
"erinnerung": log+intuition+mod
});
});
};
var safe = {
I:function(x){return x = isNaN(parseInt(x)) ?0:parseInt(x);},
F:function(x){return x = isNaN(parseFloat(x)) ?0:parseFloat(x);}
};
</script>
// Github:
// By: Wandler, The Apprentice
// Contact:
var Shadowrun = Shadowrun || (function() {
'use strict';
var version = '0.0.1',
lastUpdate = 1427604268,
tableCache = {},
ch = function (c) {
var entities = {
'<' : 'lt',
'>' : 'gt',
"'" : '#39',
'@' : '#64',
'{' : '#123',
'|' : '#124',
'}' : '#125',
'[' : '#91',
']' : '#93',
'"' : 'quot',
'-' : 'mdash',
' ' : 'nbsp'
};
if(_.has(entities,c) ){
return ('&'+entities[c]+';');
}
return '';
},
checkInstall = function() {
log('-=> Shadowrun v'+version+' <=- ['+(new Date(lastUpdate*1000))+']');
},
showHelp = function() {
sendChat('','/w gm The help is not implemented yet.');
};
var handleShadowrunInput = function(msg) {
var args;
if (msg.type !== "api") {
return;
}
args = msg.content.splitArgs(/\s+/);
if(args[0] == "!shadowrun"){
log(msg);
var character,character_id,action;
if(args.indexOf("--character") !== -1){
character_id = args[args.indexOf("--character") + 1];
character = getObj("character", character_id);
}
if(args.indexOf("--action") !== -1){
action = args[args.indexOf("--action") + 1];
}
if(character){
if(action == "edge-use"){
handleEdgeUse(msg,character);
}else if(action == "edge-refill"){
handleEdgeRefill(msg,character);
}else if(action == "move"){
var distance = parseInt(args[args.indexOf("--action") + 2]);
if(isNaN(distance)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
handleMove(msg,character,distance);
}else if(action == "run"){
var distance = parseInt(args[args.indexOf("--action") + 2]);
handleRun(msg,character,distance);
}else if(action == "sprint"){
var pool = parseInt(args[args.indexOf("--action") + 2]);
handleSprint(msg,character,pool);
}else if(action == "move-reset"){
handleMoveReset(msg,character);
}else if(action == "run-reset"){
handleRunReset(msg,character);
}else if(action == "sprint-reset"){
handleSprintReset(msg,character);
}else if(action == "heben"){
handleHeben(msg,character);
}else if(action == "tragen"){
handleTragen(msg,character);
}else if(action == "stemmen"){
handleStemmen(msg,character);
}else if(action == "heben-reset"){
handleHebenReset(msg,character);
}else if(action == "tragen-reset"){
handleTragenReset(msg,character);
}else if(action == "stemmen-reset"){
handleStemmenReset(msg,character);
}else if(action == "alchemy-prepare"){
var spellname = args[args.indexOf("--spell-name") + 1];
var force = parseInt(args[args.indexOf("--ks") + 1]);
var basis = parseInt(args[args.indexOf("--basis") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
if(isNaN(force)||isNaN(basis)||isNaN(mod)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
var trigger_name = args[args.indexOf("--trigger") + 1];
var trigger = 0;
switch(trigger_name){
case 'Befehl':trigger=2;break;
case 'Kontakt':trigger=1;break;
case 'Zeitzünder':trigger=2;break;
case 'Ver._Befehl':trigger=2;break;
case 'Ver._Kontakt':trigger=1;break;
case 'Ver._Kontakt_Geschlecht/Metatyp':trigger=3;break;
}
trigger_name = trigger_name.replace(/\_/g," ");
handleAlchemyPrepare(msg,character,spellname,force,basis,mod,trigger,trigger_name);
}else if(action == "alchemy-use"){
var id = args[args.indexOf("--id") + 1];
var wirksamkeit = parseInt(args[args.indexOf("--wirksamkeit") + 1]);
var force = parseInt(args[args.indexOf("--force") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
handleAlchemyUse(msg,character,id,force,wirksamkeit);
}else if(action == "spellcasting-cast"){
var id = args[args.indexOf("--id") + 1];
var spellname = args[args.indexOf("--spellname") + 1];
var force = parseInt(args[args.indexOf("--force") + 1]);
var basis = parseInt(args[args.indexOf("--basis") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
if(isNaN(force)||isNaN(basis)||isNaN(mod)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
handleSpellcastingCast(msg,character,spellname,id,force,basis,mod);
}else if(action == "summon-spirit"){
var force = parseInt(args[args.indexOf("--force") + 1]);
var basis = parseInt(args[args.indexOf("--basis") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
if(isNaN(force)||isNaN(basis)||isNaN(mod)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
var aargs = msg.content.split(/\--+/);
var spiritname = aargs[3].substring(12,aargs[3].length - 1);
handleSummonSpirit(msg,character,spiritname,basis,mod,force);
}else if(action == "complexforms-use"){
var id = args[args.indexOf("--id") + 1];
var name = args[args.indexOf("--name") + 1];
var force = parseInt(args[args.indexOf("--force") + 1]);
var basis = parseInt(args[args.indexOf("--basis") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
if(isNaN(force)||isNaN(basis)||isNaN(mod)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
handleComplexFormUse(msg,character,name,id,force,basis,mod);
}else if(action == "compile-sprite"){
var force = parseInt(args[args.indexOf("--force") + 1]);
var basis = parseInt(args[args.indexOf("--basis") + 1]);
var mod = parseInt(args[args.indexOf("--mod") + 1]);
if(isNaN(force)||isNaN(basis)||isNaN(mod)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
var aargs = msg.content.split(/\--+/);
var spritename = aargs[3].substring(12,aargs[3].length - 1);
handleCompileSprite(msg,character,spritename,basis,mod,force);
}else if(action == "recoil-reset"){
handleRecoilReset(msg,character);
}else if(action == "physical-damage"){
var damage = parseInt(args[args.indexOf("--value") + 1]);
var resistpool = parseInt(args[args.indexOf("--resist") + 1]);
if(isNaN(damage)||isNaN(resistpool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
physicalDamage(msg,character,damage,resistpool);
}else if(action == "physical-healing"){
var healingpool = parseInt(args[args.indexOf("--pool") + 1]);
if(isNaN(healingpool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
physicalHealing(msg,character,healingpool);
}else if(action == "physical-reset"){
physicalReset(msg,character);
}else if(action == "mental-damage"){
var damage = parseInt(args[args.indexOf("--value") + 1]);
var resistpool = parseInt(args[args.indexOf("--resist") + 1]);
if(isNaN(damage)||isNaN(resistpool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
mentalDamage(msg,character,damage,resistpool);
}else if(action == "mental-healing"){
var healingpool = parseInt(args[args.indexOf("--pool") + 1]);
if(isNaN(healingpool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
mentalHealing(msg,character,healingpool);
}else if(action == "mental-reset"){
mentalReset(msg,character);
}else if(action == "overflow-damage"){
var damage = parseInt(args[args.indexOf("--value") + 1]);
var resistpool = parseInt(args[args.indexOf("--resist") + 1]);
if(isNaN(damage)||isNaN(resistpool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
overflowDamage(msg,character,damage,resistpool);
}else if(action == "overflow-healing"){
var healingpool = parseInt(args[args.indexOf("--pool") + 1]);
overflowHealing(msg,character,healingpool);
}else if(action == "overflow-reset"){
overflowReset(msg,character);
}else if(action == "weaponsranged-attack"){
var id = args[args.indexOf("--id") + 1];
var mod = parseInt(args[args.indexOf("--mod") + 1]);
var bullets = parseInt(args[args.indexOf("--bullets") + 1]);
if(isNaN(mod)||isNaN(bullets)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
weaponsRangedAttack(msg,character,id,mod,bullets);
}else if(action == "weaponsranged-reload"){
var id = args[args.indexOf("--id") + 1];
weaponsRangedReload(msg,character,id);
}else if(action == "order-buy"){
var name = args[args.indexOf("--name") + 1];
var id = args[args.indexOf("--id") + 1];
var count = parseInt(args[args.indexOf("--count") + 1]);
var price = parseInt(args[args.indexOf("--price") + 1]);
var availability = parseInt(args[args.indexOf("--availability") + 1]);
if(isNaN(count)||isNaN(price)||isNaN(availability)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
handleOrderBuy(msg,character,id,name,count,availability,price);
}else if(action == "order-buy-roll"){
var name = args[args.indexOf("--name") + 1];
var id = args[args.indexOf("--id") + 1];
var count = parseInt(args[args.indexOf("--count") + 1]);
var price = parseInt(args[args.indexOf("--price") + 1]);
var availability = parseInt(args[args.indexOf("--availability") + 1]);
var pool = undefined;
if(args.indexOf("--pool") > -1){
pool = parseInt(args[args.indexOf("--pool") + 1]);
if(isNaN(pool)){
whisperTo(msg.who,msg.who,"Bitte als Zahl angeben");
return;
}
}
var connection = undefined;
if(args.indexOf("--connection") > -1){
connection = args[args.indexOf("--connection") + 1];
}
var tryself = undefined;
if(args.indexOf("--try-self") > -1){
tryself = args[args.indexOf("--try-self") + 1];
if(tryself=="True"){
tryself = true;
}else{
tryself = false;
}
}
handleOrderRoll(msg,character,id,name,count,availability,price,connection,tryself,pool);
}else if(action == "contact-connection"){
var id = args[args.indexOf("--id") + 1];
handleContactConnection(msg,character,id);
}else if(action == "connection-test-availability"){
var id = args[args.indexOf("--id") + 1];
handleConnectionTestAvailability(msg,character,id);
}else if(action == "connection-answer-call"){
var id = args[args.indexOf("--id") + 1];
handleConnectionAnswerCall(msg,character,id);
}else if(action == "fix-repeating"){
log("Try to fix");
var name = args[args.indexOf("--name") + 1];
//var nameRegex = /repeating_skillsknowledge_[^_]+_skillsknowledge_id/;
var nameRegex = new RegExp('repeating_'+name+'_[^_]*_'+name+'.*');
var searchResult = filterObjs(function(o){return o.get('type')==='attribute' && o.get('characterid') === character.id && o.get('name').match(nameRegex);});
log(searchResult);
_.each(searchResult,function(r){
log(r);
});
}
}else{
log("Parse Actions for commands without character");
if(action == "extended-test"){
args = msg.content.splitArgs();
var pool = undefined;
if(args.indexOf("--pool")>-1){pool = parseInt(args[args.indexOf("--pool") + 1]);}
var target = undefined;
if(args.indexOf("--target")>-1){target = parseInt(args[args.indexOf("--target") + 1]);}
var intervall = undefined;
if(args.indexOf("--intervall")>-1){intervall = args[args.indexOf("--intervall") + 1];}
var id = undefined;
if(args.indexOf("--id")){id = args[args.indexOf("--id") + 1];}
log(intervall);
handleExtendedTest(msg,pool,target,intervall,id);
}else if(action == "extended-test-reset"){
var extendedTests = state.Shadowrun["extendedTests"];
for(var e in extendedTests){
log(extendedTests[e]);
delete extendedTests[e];
}
}else if(action == "extended-test-menu"){
var id = undefined;
if(args.indexOf("--id")){id = args[args.indexOf("--id") + 1];}
handleExtendedTestMenu(msg,id);
}else if(action == "extended-test-rename"){
log(msg);
log(action);
var id = undefined;
if(args.indexOf("--id")){id = args[args.indexOf("--id") + 1];}
var name = undefined;
if(args.indexOf("--name")){name = args[args.indexOf("--name") + 1];}
handleExtendedTestRename(msg,id,name);
}else if(action == "skillcheck"){
log("Parse skill");
var skill = undefined;
if(args.indexOf("--skill")){skill = args[args.indexOf("--skill") + 1];}
handleSkillCheck(msg,skill);
}else if(action == "extended-test-delete"){
var id = undefined;
if(args.indexOf("--id")){id = args[args.indexOf("--id") + 1];}
handleExtendedTestDelete(msg,id);
}
}
}
};
var handleRecoilReset = function (msg,character){
var recoil = attributes.get(character,"recoil");
attributes.set(recoil,0);
whisperToGM(msg.who,msg.who,"Rückstoß zurückgesetzt");
};
var messageConditionMonitor = function(msg,character,probe){
var zmg_aktuell = attributes.get(character,"zmg_aktuell");
var zmg_maximum = attributes.get(character,"zmg_maximum");
var zmg_toleranz = attributes.get(character,"zmg_toleranz");
var zmp_aktuell = attributes.get(character,"zmp_aktuell");
var zmp_maximum = attributes.get(character,"zmp_maximum");
var zmp_toleranz = attributes.get(character,"zmp_toleranz");
var overflow_aktuell = attributes.get(character,"overflow_aktuell");
var overflow_maximum = attributes.get(character,"overflow_maximum");
var overflow_toleranz = attributes.get(character,"overflow_toleranz");
var injury_mod = attributes.get(character,"injury_mod");
var ic = attributes.I(injury_mod);
var pc = attributes.I(zmp_aktuell);
var pm = attributes.I(zmp_maximum);
var pt = attributes.I(zmp_toleranz);
var gc = attributes.I(zmg_aktuell);
var gm = attributes.I(zmg_maximum);
var gt = attributes.I(zmg_toleranz);
var oc = attributes.I(overflow_aktuell);
var om = attributes.I(overflow_maximum);
var ot = attributes.I(overflow_toleranz);
var rt = '&{template:zustandsmonitor}{{paktuell='+pc+'}}{{pmax='+pm+'}}{{gaktuell='+gc+'}}{{gmax='+gm+'}}{{overflow='+oc+'}}{{overflowmax='+om+'}}{{mod='+ic+'}}';
if(probe != undefined){
rt +='{{probe='+probe+'}}';
}
whisperTo(msg.who,"gm",rt);
}
var physicalDamage = function (msg,character,damage,resistpool){
var zmp_aktuell = attributes.get(character,"zmp_aktuell");
var p = attributes.I(zmp_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var unresistedDamage = Math.max(0,damage-s);
var pnew = p + unresistedDamage;
attributes.set(zmp_aktuell,pnew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,damage+"P-"+roll+"="+pnew);
};
sendChat(msg.who, "/roll [["+resistpool+"d6sacs5cs6>5]]", process);
};
var physicalHealing = function (msg,character,healingpool){
var zmp_aktuell = attributes.get(character,"zmp_aktuell");
var p = attributes.I(zmp_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var pnew = Math.max(0,p-s);
attributes.set(zmp_aktuell,pnew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Heilt "+s+"P Schaden");
};
sendChat(msg.who, "/roll [["+healingpool+"d6sacs5cs6>5]]", process);
};
var physicalReset = function (msg,character){
var zmp_aktuell = attributes.get(character,"zmp_aktuell");
attributes.set(zmp_aktuell,0);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Physisch -> 0");
};
var mentalDamage = function (msg,character,damage,resistpool){
var zmg_aktuell = attributes.get(character,"zmg_aktuell");
var g = attributes.I(zmg_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var unresistedDamage = Math.max(0,damage-s);
var gnew = g + unresistedDamage;
attributes.set(zmg_aktuell,gnew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,damage+"G-"+roll+"="+gnew);
};
sendChat(msg.who, "/roll [["+resistpool+"d6sacs5cs6>5]]", process);
};
var mentalHealing = function (msg,character,healingpool){
var zmg_aktuell = attributes.get(character,"zmg_aktuell");
var g = attributes.I(zmg_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var gnew = Math.max(0,g-s);
attributes.set(zmp_aktuell,pnew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Heilt "+s+"G Schaden");
};
sendChat(msg.who, "/roll [["+healingpool+"d6sacs5cs6>5]]", process);
};
var mentalReset = function (msg,character){
var zmg_aktuell = attributes.get(character,"zmg_aktuell");
attributes.set(zmg_aktuell,0);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Geistig -> 0");
};
var overflowDamage = function (msg,character,damage,resistpool){
var overflow_aktuell = attributes.get(character,"overflow_aktuell");
var o = attributes.I(overflow_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var unresistedDamage = Math.max(0,damage-s);
var onew = o + unresistedDamage;
attributes.set(overflow_aktuell,onew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,damage+"Überzählig-"+roll+"="+onew);
};
sendChat(msg.who, "/roll [["+resistpool+"d6sacs5cs6>5]]", process);
};
var overflowHealing = function (msg,character,healingpool){
var overflow_aktuell = attributes.get(character,"overflow_aktuell");
var o = attributes.I(overflow_aktuell);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var onew = Math.max(0,o-s);
attributes.set(overflow_aktuell,onew);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Heilt "+s+" überzähligen Schaden");
};
sendChat(msg.who, "/roll [["+healingpool+"d6sacs5cs6>5]]", process);
};
var overflowReset = function (msg,character){
var overflow_aktuell = attributes.get(character,"overflow_aktuell");
attributes.set(overflow_aktuell,0);
updateConditionMonitorAndInjury(character);
messageConditionMonitor(msg,character,"Überzählig -> 0");
};
var weaponsRangedReload = function(msg,character,id){
var weapon_name = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_name"));
var weapon_pool = attributes.I(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged"));
var weapon_tarn = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_tarn"));
var weapon_short = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_short"));
var weapon_medium = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_medium"));
var weapon_long = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_long"));
var weapon_extreme = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_extreme"));
var weapon_dv = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_dv"));
var weapon_precision = attributes.I(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_precision"));
var weapon_dk = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_dk"));
var weapon_rk = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_rk"));
var weapon_mod = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_mod"));
var weapon_amm_current = attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_ammunition_current");
var ac = attributes.I(weapon_amm_current);
var weapon_amm_max = attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_ammunition_maximum");
var am = attributes.I(weapon_amm_max);
attributes.set(weapon_amm_current,am);
var weapon_amm_mag = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_magazin"));
whisperToGM(msg.who,msg.who,weapon_name+" mit "+am+" Schuss Munition ("+weapon_amm_mag+") geladen");
};
var weaponsRangedAttack = function(msg,character,id,mod,bullets){
var weapon_name = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_name"));
var weapon_pool = attributes.I(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged"));
var weapon_tarn = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_tarn"));
var weapon_short = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_short"));
var weapon_medium = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_medium"));
var weapon_long = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_long"));
var weapon_extreme = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_extreme"));
var weapon_dv = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_dv"));
var weapon_precision = attributes.I(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_precision"));
var weapon_dk = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_dk"));
var weapon_rk = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_rk"));
var weapon_mod = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_mod"));
var weapon_amm_current = attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_ammunition_current");
var ac = attributes.I(weapon_amm_current);
if(bullets>ac){
whisperToGM(msg.who,msg.who,"Ungenügend Munition geladen "+bullets+"/"+ac);
bullets = Math.min(bullets,ac);
}
attributes.set(weapon_amm_current,Math.max(0,ac-bullets));
var recoil = attributes.get(character,"recoil");
var r = attributes.I(recoil);
attributes.set(recoil,r+bullets);
var weapon_amm_max = attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_ammunition_maximum");
var am = attributes.I(weapon_amm_max);
var weapon_amm_mag = attributes.S(attributes.get(character,"repeating_weaponsranged_"+id+"_weaponsranged_magazin"));
var dicepool = Math.max(weapon_pool + mod,0);
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var message = '&{template:rangedattack}{{text=feuert '+weapon_name+' ab}}{{basis='+weapon_pool+'}}{{mod='+mod+'}}{{pool='+dicepool+'}}{{erfolge='+roll+'}}'+
'{{kurz='+weapon_short+'}}'+'{{mittel='+weapon_medium+'}}'+'{{weit='+weapon_long+'}}'+'{{extrem='+weapon_extreme+'}}'+
'{{schaden='+weapon_dv+'}}'+'{{dk='+weapon_dk+'}}'+'{{rk='+weapon_rk+'}}'+
'{{modus='+weapon_mod+'}}'+'{{praezision='+weapon_precision+'}}'+'{{munition_aktuell='+ac+'}}'+'{{munition_maximum='+am+'}}'+
'{{tarn='+weapon_tarn+'}}{{anzahlkugeln='+bullets+'}}';
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
};
sendChat(msg.who, "/roll [["+dicepool+"d6sacs5cs6>5kh"+weapon_precision+"]]", process);
};
var processSkillCheck = function(name,attribute,base,mod,pool,who,x) {
log(name+" "+attribute+" "+base+" "+mod+" "+pool+" "+x);
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var result = "&{template:roll}"+
"{{text="+name+"}}"+
"{{color=darkred}}"+
"{{basis="+attribute+"+"+base+"}}"+
"{{mod="+mod+"}}"+
"{{total="+pool+"}}"+
"{{erfolge="+roll+"}}";
whisperToGM(x[0].who,who,result);
};
var handleSkillCheck = function(msg,skill){
log("Enter handleSkillCheck");
var selected = msg['selected'];
if(selected == undefined){
whisperTo(msg.who,msg.who,"Du musst einen Token auswählen für diesen Befehl");
return;
}
var attrs = findObjs({type:'attribute'});
for(var s in selected){
s = selected[s];
var id = s["_id"];
var token = getObj('graphic', id);
var represents = token.get("represents");
if(represents != undefined && represents != ""){
//var character = characters.get_by_id(represents);
var character = getObj("character",represents);
if(character != undefined){
var chr_attr = _.filter(attrs,function(o){return o.get('characterid') === represents});
var chr_skillsaction = _.filter(chr_attr,function(o){return o.get('name').match(/repeating_skillsaction_.+/g); });
var IDregex = /repeating_skillsaction_[^_]+_skillsaction_id+/;
var ids = _.filter(chr_skillsaction,function(o){return o.get('name').match(IDregex);});
log(ids);
var hasSkill = false;
_.each(ids,function(id){
id = id.get("current").toLowerCase();
var rowregex = new RegExp("repeating_skillsaction_"+id+"_skillsaction_[^_]+");
//var rows = filterObjs(function(o){return o.get('type')==='attribute' && o.get('characterid') === represents && o.get('name').toLowerCase().match(rowregex);});
var row = _.filter(chr_skillsaction,function(o){return o.get('name').toLowerCase().match(rowregex);});
var name = _.filter(row,function(o){return o.get('name').toLowerCase() == "repeating_skillsaction_"+id+"_skillsaction_name";})[0].get("current");
if(name != skill){return;}
hasSkill = true;
var attribute = _.filter(row,function(o){return o.get('name').toLowerCase() == "repeating_skillsaction_"+id+"_skillsaction_attribut";})[0].get("current");
attribute = attribute.replace(/[\{\}@]/g,"");//Strip @{}
attribute = _.filter(chr_attr,function(o){return o.get('name').toLowerCase() == attribute;})[0].get("current");
var base = _.filter(row,function(o){return o.get('name').toLowerCase() == "repeating_skillsaction_"+id+"_skillsaction_basis";})[0].get("current");
var mod = _.filter(row,function(o){return o.get('name').toLowerCase() == "repeating_skillsaction_"+id+"_skillsaction_mod";})[0].get("current");
//log(name+" "+ attribute+" "+base+" "+mod);
attribute = parseInt(attribute);
base = parseInt(base);
mod = parseInt(mod);
var pool = attribute + base + mod;
sendChat(token.get("name"), "/roll [["+pool+"d6sacs5cs6>5]]", _.partial(processSkillCheck,name,attribute,base,mod,pool,msg.who));
});
if(hasSkill == false){
whisperTo(token.get("name"),msg.who,"Ich besitze die Fertigkeit "+skill+" nicht.");
}
}else{
whisperTo(token.get("name"),msg.who,"Der Charakter des Tokens wurde nicht gefunden");
}
}else{
whisperTo(token.get("name"),msg.who,"Der Token repräsentiert keinen Charakter");
}
}
sendChat("","/desc Die Würfel des Spielleiters rollen.");
};
var handleExtendedTestMenu = function(msg,id) {
var extendedTests = state.Shadowrun["extendedTests"];
if(msg.playerid in extendedTests){
/* Player does have tests */
var etp = extendedTests[msg.playerid];
if(!(id in etp)){
whisperToGM(msg.who,msg.who,"This Extended Test does not exist anymore");
return;
}
var test = etp[id];
var outputText='<div class="sheet-rolltemplate-script extended-test"><table><tr class="header"><td class="who">'+msg.who+'</td><td class="what">Ausgedehnte Proben</td></tr>';
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number"><a href="!shadowrun --action extended-test-rename --id '+test.id+' --name &quot;?{Name}&quot;">Umbenennen</a></td>';
outputText +='<td class="extended-test-successes"><a href="!shadowrun --action extended-test-delete --id '+test.id+'">Löschen</a></td>';
outputText +='</tr>';
outputText +='</div>';
whisperToGM(msg.who,msg.who,outputText);
}
};
var handleExtendedTestRename = function(msg,id,name) {
var extendedTests = state.Shadowrun["extendedTests"];
if(msg.playerid in extendedTests){
/* Player does have tests */
if(!(msg.playerid in extendedTests)){
whisperToGM(msg.who,msg.who,"This Player has no active Extended Tests");
return;
}
var etp = extendedTests[msg.playerid];
log(etp);
log("ID IS ");
log(id);
if(!(id in etp)){
whisperToGM(msg.who,msg.who,"This Extended Test does not exist anymore");
return;
}
var test = etp[id];
log(test);
test["name"] = name;
var outputText = "Test "+test.pool+"W6("+test.target+","+test.intervall+") für "+msg.who+" umbenannt in "+name;
whisperToGM(msg.who,msg.who,outputText);
}
};
var handleExtendedTestDelete = function(msg,id) {
var extendedTests = state.Shadowrun["extendedTests"];
if(msg.playerid in extendedTests){
/* Player does have tests */
if(!(msg.playerid in extendedTests)){
whisperToGM(msg.who,msg.who,"This Extended Test does not exist anymore");
return;
}
var etp = extendedTests[msg.playerid];
if(!(id in etp)){
whisperToGM(msg.who,msg.who,"This Extended Test does not exist anymore");
return;
}
var test = etp[id];
var outputText = "Test "+test.pool+"W6("+test.target+","+test.intervall+") für "+msg.who+" gelöscht";
whisperToGM(msg.who,msg.who,outputText);
delete etp[id];
}
};
var handleExtendedTest = function(msg,p,t,intervall,id) {
if(p == undefined || t == undefined || intervall == undefined){
log(p);
log(t);
log(intervall);
// The player has just called extendedTest but did not provide a pool or anything. List all active extendedTest by the player.
var outputText='<div class="sheet-rolltemplate-script extended-test"><table><tr class="header"><td class="who">'+msg.who+'</td><td class="what">Ausgedehnte Proben</td></tr>';
var extendedTests = state.Shadowrun["extendedTests"];
log("ExtendedTests IS:");
log(extendedTests);
if(msg.playerid in extendedTests){
log("List the player which tests he already started")
// The player already has started some extendedTests earlier, list them first
if(!(msg.playerid in extendedTests)){
whisperToGM(msg.who,msg.who,"This Extended Test does not exist anymore");
return;
}
var etp = extendedTests[msg.playerid];
log("ETP IS:")
log(etp);
var i = 0;
for(var key in etp){
i++;
var test = etp[key];
log("Test "+i);
log(test);
var label;
if("name" in test){
label = '<a href="!shadowrun --action extended-test-menu --id '+test.id+'">'+test.name+'</a>';
}else{
label = '<a href="!shadowrun --action extended-test-menu --id '+test.id+'">Test '+i+'</a>';
}
var rolls = test.rolls;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+label+'</td>';
if(rolls == undefined){
outputText +='<td class="extended-test-successes"><a href="!shadowrun --action extended-test --pool '+test.pool+' --target '+test.target+' --intervall &quot;'+test.intervall+'&quot; --id '+test.id+'">'+test.pool+'W6('+test.target+','+test.intervall+')</a></td>';
}else{
var lastRoll = rolls[rolls.length - 1];
log("Last Roll:");
log(lastRoll);
var pool = lastRoll.pool - 1;
outputText +='<td class="extended-test-successes"><a href="!shadowrun --action extended-test --pool '+pool+' --target '+test.target+' --intervall &quot;'+test.intervall+'&quot; --id '+test.id+'">'+pool+'W6('+test.target+','+test.intervall+')</a></td>';
}
outputText +='</tr>';
}
}
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">Ausgedehnte Probe</td>';
outputText +='<td class="extended-test-successes"><a href="!shadowrun --action extended-test --pool ?{Pool|0} --target ?{Benötigte Erfolge?|0} --intervall &quot;?{Intervall?|1 Kampfrunde|1 Minute|10 Minuten|30 Minuten|1 Stunde|1 Tag|1 Woche|1 Monat}&quot; --id new">Neue Probe</a></td>';
outputText +='</tr>';
// Close outputText
outputText += "</div>";
whisperToGM(msg.who,msg.who,outputText);
return;
}
if(id != undefined){
/* We want to roll "roll-by-roll" */
var extendedTests = state.Shadowrun["extendedTests"];
var etp;
if(msg.playerid in extendedTests){
log("Load existing Tests by player");
etp = extendedTests[msg.playerid];
}else{
log("Create new tests for player");
etp = {};
extendedTests[msg.playerid] = etp;
}
var test = undefined;
log("ETP IS:");
log(etp);
if(id in etp){
test = etp[id];
}else{
id = generateRowID();
var rolls = [];
test = {id:id,intervall:intervall,pool:p,target:t,rolls:rolls};
etp[id] = test;
}
var outputText='<div class="sheet-rolltemplate-script extended-test"><table><tr class="header"><td class="name"><a href="!shadowrun --action extended-test-rename --id '+id+' --name &quot;?{Name}&quot;">'+(test.name==undefined?msg.who:test.name)+'</a></td><td class="what">'+p+'W6('+t+','+intervall+')</td></tr>';
var intervall = intervall;
var pool = p;
var target = t;
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var totalSucccesses = s;
/* Old rolls */
var i=0;
for(i=0; i < test.rolls.length; i++){
var rollI = test.rolls[i];
totalSucccesses += rollI.successes;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollI.rollnumber+':'+rollI.pool+'W6</td>';
outputText +='<td class="extended-test-successes">'+rollI.roll+'</td>';
outputText +='</tr>';
}
var currentRoll = {who:msg.who,rollnumber:test.rolls.length,successes:s,pool:pool,target:target,intervall:intervall,roll:roll};
test.rolls[test.rolls.length] = currentRoll;
/* Current roll */
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+currentRoll.rollnumber+':'+currentRoll.pool+'W6</td>';
outputText +='<td class="extended-test-successes">'+currentRoll.roll+'</td>';
outputText +='</tr>';
/* Next roll or sum */
if(totalSucccesses < target){
pool -= 1;
if(pool>0){
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number"><a href="!shadowrun --action extended-test --pool '+pool+' --target '+target+' --intervall &quot;'+intervall+'&quot; --id '+id+'">'+(test.rolls.length)+':'+pool+'W6</a></td>';
outputText +='<td class="extended-test-successes">'+totalSucccesses+'+?</td>';
outputText +='</tr>';
whisperToGM(msg.who,msg.who,outputText);
}else{
//Test Fehlgeschlagen
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">Fehlschlag</td>';
outputText +='<td class="extended-test-successes">'+totalSucccesses+'</td>';
outputText +='</tr>';
/*extended-test*/
outputText +='</table></div>';
whisperToGM(msg.who,msg.who,outputText);
delete etp[id];
}
}else{
//Test Erfolgreich
outputText +='<tr class="extended-test-roll userscript-final">';
outputText +='<td class="extended-test-number">Erfolgreich</td>';
outputText +='<td class="extended-test-successes">'+totalSucccesses+'</td>';
outputText +='</tr>';
/*extended-test*/
outputText +='</table></div>';
whisperToGM(msg.who,msg.who,outputText);
delete etp[id];
}
};
sendChat(msg.who, "/roll [["+pool+"d6sacs5cs6>5]]", process);
}else{
/* We want to roll "all-at-once" */
var rollnumber =0;
var pool = p;
var successes = 0;
var target = t;
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
rollnumber += 1;
successes += s;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+pool+'W6</td>';
outputText +='<td class="extended-test-successes">'+roll+'</td>';
outputText +='</tr>';
if(successes<target){
pool-=1;
if(pool>0){
sendChat(msg.who, "/roll [["+pool+"d6sacs5cs6>5]]", process);
}else{
//Test Fehlgeschlagen
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">Fehlschlag</td>';
outputText +='<td class="extended-test-successes">'+successes+'</td>';
outputText +='</tr>';
/*extended-test*/
outputText +='</table></div>';
whisperToGM(msg.who,msg.who,outputText);
}
}else{
//Test Erfolgreich
outputText +='<tr class="extended-test-roll userscript-final">';
outputText +='<td class="extended-test-number">Erfolgreich</td>';
outputText +='<td class="extended-test-successes">'+successes+'</td>';
outputText +='</tr>';
/*extended-test*/
outputText +='</table></div>';
whisperToGM(msg.who,msg.who,outputText);
}
};
sendChat(msg.who, "/roll [["+pool+"d6sacs5cs6>5]]", process);
}
};
var handleToken = function(token) {
if( 'graphic' === token.get('type') && 'token' === token.get('subtype')) {
handleLinkedBars(token);
}
};
var handleMove = function(msg,character,distance){
var available_move = attributes.get(character,"bewegung_gehen");
var available_run = attributes.get(character,"bewegung_laufen");
var avdm = attributes.I(available_move);
var avdr = attributes.I(available_run);
if(avdm < distance){
if(avdr < distance){
whisperToGM(msg.who,msg.who,"Du kannst dich nicht so weit bewegen. Du musst sprinten.");
}else{
whisperToGM(msg.who,msg.who,"Du musst laufen");
attributes.set(available_move,0);
attributes.set(available_run,avdr-distance);
}
}else{
attributes.set(available_move,avdm-distance);
attributes.set(available_run,avdr-distance);
}
};
var handleRun = function(msg,character,distance){
log(character);
log(distance);
var available_move = attributes.get(character,"bewegung_gehen");
log(available_move);
var available_run = attributes.get(character,"bewegung_laufen");
log(available_run);
var avdm = attributes.I(available_move);
log(avdm);
var avdr = attributes.I(available_run);
log(avdr);
if(avdm < distance){
if(avdr < distance){
whisperToGM(msg.who,msg.who,"Du kannst dich nicht so weit bewegen. Du musst sprinten.");
}else{
whisperToGM(msg.who,msg.who,"Du läufst");
attributes.set(available_move,0);
attributes.set(available_run,avdr-distance);
}
}else{
attributes.set(available_move,avdm-distance);
attributes.set(available_run,avdr-distance);
}
};
var handleSprint = function(msg,character,pool){
var sprinten_mod = attributes.get(character,"bewegung_sprinten_mod");
var sprinten_distanz = attributes.get(character,"bewegung_sprinten");
var bewegung_laufen = attributes.get(character,"bewegung_laufen");
var sm = attributes.I(sprinten_mod);
var bl = attributes.I(bewegung_laufen);
var use_edge = attributes.get(character,"use_edge");
var edge = attributes.get(character,"edg");
var edg = attributes.I(edge);
var use_injury_mod = attributes.get(character,"use_injury_mod");
var injury_mod = attributes.get(character,"injury_mod");
var injury_modi = -attributes.I(injury_mod);
var edgetoken = (attributes.S(use_edge)=="on")?"!":"";
var edgetext = (attributes.S(use_edge)=="on")?"{{edge=Edge "+edg+"}}":"";
var edgemod = (attributes.S(use_edge)=="on")?edg:0;
var injurytext = (attributes.S(use_injury_mod)=="on")?"{{injurymod=-"+injury_modi+"}}":"";
var injurymod = (attributes.S(use_injury_mod)=="on")?injury_modi:0;
pool = pool + injurymod + edgemod;
if(pool > 0){
sendChat(character.get('name'), "/roll [["+pool+"d6"+edgetoken+"sacs5cs6>5]]", function(x) {
var RollValue = 0;
var i = 1;
Object.keys(x[0].inlinerolls).forEach(function(i) {
RollValue = x[0].inlinerolls[i];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
var bonus = s*sm;
attributes.set(sprinten_distanz,bonus);
attributes.set(bewegung_laufen,bl+bonus);
whisperToGM(msg.who,msg.who,"&{template:roll}{{erfolge="+roll+"}}{{text=Sprinten}}{{total="+pool+"}}"+edgetext+injurytext+"{{desc=<div style=\"text-align:center;\">+"+bonus+"m</div>}}");
});
});
}else{
whisperToGM(msg.who,msg.who,"Nicht genug Würfel! "+pool);
}
};
var handleMoveReset = function(msg,character){
log(character);
var available_move = attributes.get(character,"bewegung_gehen");
var available_run = attributes.get(character,"bewegung_laufen");
var available_move_mult = attributes.get(character,"bewegung_gehen_mult");
var available_run_mult = attributes.get(character,"bewegung_laufen_mult");
var sprinten_distanz = attributes.get(character,"bewegung_sprinten");
var ges = attributes.get(character,"ges");
var g = attributes.I(ges);
var mm = attributes.F(available_move_mult);
var rm = attributes.F(available_run_mult);
attributes.set(available_move,g*mm);
attributes.set(available_run,g*rm);
attributes.set(sprinten_distanz,0);
};
var handleRunReset = function(msg,character){
handleMoveReset(msg,character);
};
var handleSprintReset = function(msg,character){
handleMoveReset(msg,character);
};
var handleEdgeUse = function(msg,character){
var edge_current = attributes.get(character,"edgepunkte_aktuell");
var current = attributes.I(edge_current);
if (current == 0){
whisperToGM(msg.who,msg.who,"Nicht genügend Edgepunkte!");
}else{
attributes.set(edge_current,current - 1)
}
};
var handleHebenReset = function(msg,character){
var str = attributes.get(character,"str");
var kon = attributes.get(character,"kon");
var heben = attributes.get(character,"tragkraft_heben");
var tragen = attributes.get(character,"tragkraft_tragen");
var stemmen = attributes.get(character,"tragkraft_stemmen");
var heben_mult = attributes.get(character,"tragkraft_heben_mult");
var tragen_mult = attributes.get(character,"tragkraft_tragen_mult");
var stemmen_mult = attributes.get(character,"tragkraft_stemmen_mult");
var h = attributes.I(heben);
var t = attributes.I(tragen);
var s = attributes.I(stemmen);
var hm = attributes.I(heben_mult);
var tm = attributes.I(tragen_mult);
var sm = attributes.I(stemmen_mult);
var stri = attributes.I(str);
var koni = attributes.I(kon);
attributes.set(heben,stri*15);
attributes.set(tragen,stri*10);
attributes.set(stemmen,stri*5);
};
var handleTragenReset = function(msg,character){
handleHebenReset(msg,character);
};
var handleStemmenReset = function(msg,character){
handleHebenReset(msg,character);
};
var handleHeben = function(msg,character){
var str = attributes.get(character,"str");
var kon = attributes.get(character,"kon");
var heben = attributes.get(character,"tragkraft_heben");
var tragen = attributes.get(character,"tragkraft_tragen");
var stemmen = attributes.get(character,"tragkraft_stemmen");
var heben_mult = attributes.get(character,"tragkraft_heben_mult");
var tragen_mult = attributes.get(character,"tragkraft_tragen_mult");
var stemmen_mult = attributes.get(character,"tragkraft_stemmen_mult");
var h = attributes.I(heben);
var t = attributes.I(tragen);
var s = attributes.I(stemmen);
var hm = attributes.I(heben_mult);
var tm = attributes.I(tragen_mult);
var sm = attributes.I(stemmen_mult);
var stri = attributes.I(str);
var koni = attributes.I(kon);
var pool = stri+koni;
var use_edge = attributes.get(character,"use_edge");
var edge = attributes.get(character,"edg");
var edg = attributes.I(edge);
var use_injury_mod = attributes.get(character,"use_injury_mod");
var injury_mod = attributes.get(character,"injury_mod");
var injury_modi = -attributes.I(injury_mod);
var edgetoken = (attributes.S(use_edge)=="on")?"!":"";
var edgetext = (attributes.S(use_edge)=="on")?"{{edge=Edge "+edg+"}}":"";
var edgemod = (attributes.S(use_edge)=="on")?edg:0;
var injurytext = (attributes.S(use_injury_mod)=="on")?"{{injurymod=-"+injury_modi+"}}":"";
var injurymod = (attributes.S(use_injury_mod)=="on")?injury_modi:0;
pool = pool + injurymod + edgemod;
if(pool > 0 ){
sendChat(character.get('name'), "/roll [[("+pool+")d6sacs5cs6>5]]", function(x) {
var RollValue = 0;
var i = 1;
Object.keys(x[0].inlinerolls).forEach(function(i) {
RollValue = x[0].inlinerolls[i];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
heben.set('current',(stri+s)*15);
tragen.set('current',(stri+s)*10);
stemmen.set('current',(stri+s)*5);
whisperToGM(msg.who,msg.who,"&{template:roll}{{erfolge="+roll+"}}{{text=Heben & Tragen}}{{total="+pool+"}}"+edgetext+injurytext+"{{desc=<div style=\"text-align:center;\">+"+(s*15)+"kg/"+(s*10)+"kg/"+(s*5)+"kg</div>}}");
});
});
}else{
whisperToGM(msg.who,msg.who,"Nicht genug Würfel! "+pool);
}
};
var handleTragen = function(msg,character){
handleHeben(msg,character);
};
var handleStemmen = function(msg,character){
handleHeben(msg,character);
};
var handleEdgeRefill = function(msg,character){
var edge_total = attributes.get(character,"edg");
var edge_current = attributes.get(character,"edgepunkte_aktuell");
var edge_total = attributes.I(edge_total);
attributes.set(edge_current,edge_total);
};
var handleConnectionTestAvailability = function(msg,character,id){
var connection_name = attributes.S(attributes.get(character,"repeating_connections_"+id+"_connections_name"));
var connection_loyality = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_loyality"));
var connection_rating = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_rating"));
var process = function(x) {
var RollValue = x[0].inlinerolls[0];
var roll = buildInline(RollValue, undefined, undefined);
var s = parseInt(RollValue["results"]["total"]);
if(s>=connection_rating){
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">'+connection_name+'(L:'+connection_loyality+',E:'+connection_rating+'<='+roll+')</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">Hallo, Was gibt es?'+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperTo(connection_name,msg.who,rt);
}else{
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">'+connection_name+'(L:'+connection_loyality+',E:'+connection_rating+'>'+roll+')</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">... es hebt niemand ab...'+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperTo(connection_name,msg.who,rt);
}
};
sendChat(msg.who, "/roll [[2d6sacs5cs6]]", process);
};
var handleConnectionAnswerCall = function(msg,character,id){
log(character);
log(id);
var connection_name = attributes.S(attributes.get(character,"repeating_connections_"+id+"_connections_name"));
var connection_loyality = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_loyality"));
var connection_rating = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_rating"));
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">'+connection_name+'(L:'+connection_loyality+',E:'+connection_rating+')</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">Hallo, Was gibt es?'+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperTo(connection_name,msg.who,rt);
};
var handleContactConnection = function(msg,character,id){
log(id);
var connection_name = attributes.S(attributes.get(character,"repeating_connections_"+id+"_connections_name"));
var connection_loyality = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_loyality"));
var connection_rating = attributes.I(attributes.get(character,"repeating_connections_"+id+"_connections_rating"));
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">'+msg.who+' möchte '+connection_name+'(L:'+connection_loyality+',E:'+connection_rating+') kontaktieren</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">'+
'<a href="!shadowrun --character '+character.id+' --action connection-test-availability --id '+id+' --name '+connection_name+' --loyality '+connection_loyality+' --rating '+connection_rating+'">2W6 ob verfügbar</a><br/>'+
'<a href="!shadowrun --character '+character.id+' --action connection-answer-call --id '+id+' --name '+connection_name +' --loyality '+connection_loyality+' --rating '+connection_rating+'">Abheben</a><br/>'+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperToGM(msg.who,"gm",rt);
};
var handleOrderRoll = function(msg,character,id,name,count,availability,price,connection,tryself,pool){
if(connection != undefined){
log(connection);
var connection_name = attributes.S(attributes.get(character,"repeating_connections_"+connection+"_connections_name"));
log(connection_name);
var connection_loyality = attributes.I(attributes.get(character,"repeating_connections_"+connection+"_connections_loyality"));
log(connection_loyality);
var connection_rating = attributes.I(attributes.get(character,"repeating_connections_"+connection+"_connections_rating"));
log(connection_rating);
var connectionCharacter = characters.get(connection_name);
if(connectionCharacter != undefined){
log("Connection exists as character");
log(connectionCharacter);
var nameRegex = /repeating_skillsaction_[^_]+_skillsaction_id/;
var skillIDs = filterObjs(function(o){return o.get('type')==='attribute' && o.get('characterid') === connectionCharacter.id && o.get('name').match(nameRegex);});
var connectionButtons = "";
_.each(skillIDs,function(sid){
sid = attributes.S(sid);
var satt = attributes.I(attributes.unwrap(connectionCharacter,"repeating_skillsaction_"+sid+"_skillsaction_attribut"));
var sname = attributes.S(attributes.get(connectionCharacter,"repeating_skillsaction_"+sid+"_skillsaction_name"));
var sbase = attributes.I(attributes.get(connectionCharacter,"repeating_skillsaction_"+sid+"_skillsaction_basis"));
var smod = attributes.I(attributes.get(connectionCharacter,"repeating_skillsaction_"+sid+"_skillsaction_mod"));
if(sname.toLowerCase().trim() =="verhandlung"){
pool = satt + sbase + smod;
}
});
}
if(pool == undefined){
whisperTo(msg.who,msg.who,"Anfrage an den Spielleiter geschickt");
/* Ask the GM for the NSC Pool*/
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">'+msg.who+' möchte bei '+connection_name+'(L:'+connection_loyality+',E:'+connection_rating+') bestellen</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">'+
count+"x "+name+" um "+price+"&yen; mit Verfügbarkeit "+availability+"<br/>"+
'<a href="!shadowrun --character '+character.id+' --action order-buy-roll --id '+id+' --name '+name+' --count '+count+' --availability '+availability+' --connection '+connection+' --price '+price+' --pool ?{Pool|1}">Würfeln</a><br/>'+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperTo(msg.who,"gm",rt);
return;
}else{
var pool = pool + connection_rating;
var intervalX = 0;
var intervalUnit = "";
if(price<=100.0){
intervalX = 6.0;
intervalUnit = "Stunden";
}else if(price<=1000.0){
intervalX = 1.0;
intervalUnit = "Tag";
}else if(price<=10000.0){
intervalX = 2.0;
intervalUnit = "Tage";
}else if(price<=100000.0){
intervalX = 1.0;
intervalUnit = "Woche";
}else{
intervalX = 1.0;
intervalUnit = "Monat";
}
var outputText='<div class="sheet-rolltemplate-script extended-test"><table><tr class="header"><td class="who">'+connection_name+'<br/>'+pool+'W6</td><td class="what">'+pool+'W6 vs '+availability+'W6<br/>'+intervalX+' '+intervalUnit+'</td></tr>';
var rollnumber = 0;
var usedTime = 0;
var processVendor = function(x) {
var RollValueVendor = x[0].inlinerolls[0];
var rollVendor = buildInline(RollValueVendor, undefined, undefined);
var sVendor = parseInt(RollValueVendor["results"]["total"]);
var processItem = function(x) {
var RollValueItem = x[0].inlinerolls[0];
var rollItem = buildInline(RollValueItem, undefined, undefined);
var sItem = parseInt(RollValueItem["results"]["total"]);
if(sVendor < sItem){
usedTime += 2*intervalX;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollVendor+' vs '+rollItem+'</td>';
outputText +='</tr>';
if(rollnumber < 100){
sendChat(character.get('name'), "/roll [["+pool+"d6sacs5cs6>5]]", processVendor);
}else{
outputText +='<tr><td colspan="2">Nach 100 Versuchen abgebrochen</td></tr>';
whisperToGM(msg.who,"gm",outputText);
}
}else if(sVendor==sItem){
/* Double Time but found */
usedTime += 2*intervalX;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollVendor+' vs '+rollItem+'</td>';
outputText +='</tr>';
outputText +='</table></div>';
whisperToGM(msg.who,"gm",outputText);
}else{
/* X / Net Successes */
var ns = sVendor - sItem;
/*extended-test*/
usedTime += intervalX/ns;
usedTime = Math.round(usedTime * 100) / 100;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollVendor+' vs '+rollItem+'</td>';
outputText +='</tr>';
outputText +='</table></div>';
whisperToGM(msg.who,"gm",outputText);
}
};
rollnumber += 1;
sendChat(character.get('name'), "/roll [["+availability+"d6sacs5cs6>5]]", processItem);
};
sendChat(character.get('name'), "/roll [["+pool+"d6sacs5cs6>5]]", processVendor);
}
}else{
var pool = pool;
var intervalX = 0;
var intervalUnit = "";
if(price<=100.0){
intervalX = 6.0;
intervalUnit = "Stunden";
}else if(price<=1000.0){
intervalX = 1.0;
intervalUnit = "Tag";
}else if(price<=10000.0){
intervalX = 2.0;
intervalUnit = "Tage";
}else if(price<=100000.0){
intervalX = 1.0;
intervalUnit = "Wochen";
}else{
intervalX = 1.0;
intervalUnit = "Monat";
}
var outputText='<div class="sheet-rolltemplate-script extended-test"><table><tr class="header"><td class="who">'+msg.who+'<br/>'+pool+'W6</td><td class="what">'+pool+'W6 vs '+availability+'W6<br/>'+intervalX+' '+intervalUnit+'</td></tr>';
var rollnumber = 0;
var usedTime = 0;
var processPlayer = function(x) {
var RollValuePlayer = x[0].inlinerolls[0];
var rollPlayer = buildInline(RollValuePlayer, undefined, undefined);
var sPlayer = parseInt(RollValuePlayer["results"]["total"]);
var processItem = function(x) {
var RollValueItem = x[0].inlinerolls[0];
var rollItem = buildInline(RollValueItem, undefined, undefined);
var sItem = parseInt(RollValueItem["results"]["total"]);
if(sPlayer < sItem){
usedTime += intervalX*2;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollPlayer+' vs '+rollItem+'</td>';
outputText +='</tr>';
if(rollnumber < 100){
sendChat(character.get('name'), "/roll [["+pool+"d6sacs5cs6>5]]", processPlayer);
}else{
outputText +='<tr><td colspan="2">Nach 100 Versuchen abgebrochen</td></tr>';
whisperToGM(msg.who,"gm",outputText);
}
}else if(sPlayer==sItem){
/* Double Time but found */
usedTime += 2*intervalX;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollPlayer+' vs '+rollItem+'</td>';
outputText +='</tr>';
outputText +='</table></div>';
whisperToGM(msg.who,"gm",outputText);
}else{
/* X / Net Successes */
var ns = sPlayer - sItem;
/*extended-test*/
usedTime += intervalX/ns;
outputText +='<tr class="extended-test-roll">';
outputText +='<td class="extended-test-number">'+rollnumber+':'+usedTime+' '+intervalUnit+'</td>';
outputText +='<td class="extended-test-successes">'+rollPlayer+' vs '+rollItem+'</td>';
outputText +='</tr>';
outputText +='</table></div>';
whisperToGM(msg.who,"gm",outputText);
}
};
rollnumber += 1;
sendChat(character.get('name'), "/roll [["+availability+"d6sacs5cs6>5]]", processItem);
};
sendChat(character.get('name'), "/roll [["+pool+"d6sacs5cs6>5]]", processPlayer);
}
}
var handleOrderBuy = function(msg,character,id,name,count,availability,price){
//var itemname = attributes.get(character,"repeating_orders_"+id+"_orders_name");
var nameRegex = /repeating_connections_[^_]+_connections_id/;
var connectionIDs = filterObjs(function(o){return o.get('type')==='attribute' && o.get('characterid') === character.id && o.get('name').match(nameRegex);});
var connectionButtons = "";
_.each(connectionIDs,function(cid){
cid = attributes.S(cid);
log(cid);
var cname = attributes.S(attributes.get(character,"repeating_connections_"+cid+"_connections_name"));
log(cname);
var rating = attributes.I(attributes.get(character,"repeating_connections_"+cid+"_connections_rating"));
log(rating);
var loyality = attributes.I(attributes.get(character,"repeating_connections_"+cid+"_connections_loyality"));
log(loyality);
var note = attributes.S(attributes.get(character,"repeating_connections_"+cid+"_connections_note"));
log(note);
connectionButtons += '<a href="!shadowrun --character '+character.id+' --action order-buy-roll --id '+id+' --name '+name+' --count '+count+' --availability '+availability+' --connection '+cid+' --price '+price+'">'+cname+'(L'+loyality+',E'+rating+')</a>';
});
var rt = '<div class="sheet-rolltemplate-roll">'+
'<table class="sheet-box sheet-cyan">'+
'<tr>'+
'<td class="sheet-text">'+
'<div class="sheet-desc">Hey, ich bräuchte da was!</div>'+
'</td>'+
'</tr>'+
'<tr>'+
'<td class="border-top" colspan="2"><div class="sheet-note">'+
count+"x "+name+" um "+price+"&yen; mit Verfügbarkeit "+availability+"<br/>"+
"Ich möchte es "+
'<a href="!shadowrun --character '+character.id+' --action order-buy-roll --id '+id+' --name '+name+' --count '+count+' --availability '+availability+' --tryself True --price '+price+' --pool ?{Pool|1}">selbst</a> versuchen.<br/>'+
"Ich möchte, dass es<br/>"+connectionButtons+"<br/>versucht."+
'</div></td>'+
'</tr>'+
'</table>'+
'</div>';
whisperToGM(msg.who,msg.who,rt);
}
var handleSummonSpirit = function(msg,character,spiritname,basis,mod,force){
spiritname = spiritname.replace(/\\/g,"").replace(/"/g,"");
var castpool = basis + mod;
var spirit = characters.get("Geister-"+spiritname);
if(spirit==undefined){
whisperToGM(msg.who,msg.who," Geist: "+spiritname+" nicht gefunden");
return;
}
var kon = Math.max(force+abilities.I(abilities.get(spirit,"Kon")),1);
var ges = Math.max(force+abilities.I(abilities.get(spirit,"Ges")),1);
var rea = Math.max(force+abilities.I(abilities.get(spirit,"Ges")),1);
var str = Math.max(force+abilities.I(abilities.get(spirit,"Str")),1);
var wil = Math.max(force+abilities.I(abilities.get(spirit,"Wil")),1);
var intu = Math.max(force+abilities.I(abilities.get(spirit,"Int")),1);
var logic = Math.max(force+abilities.I(abilities.get(spirit,"Log")),1);
var cha = Math.max(force+abilities.I(abilities.get(spirit,"Cha")),1);
var edg = Math.max(force/parseInt(abilities.S(abilities.get(spirit,"Edg")).replace(/\//g,"")),1);
var ess = Math.max(force+abilities.I(abilities.get(spirit,"Ess")),1);
var mag = Math.max(force+abilities.I(abilities.get(spirit,"Mag")),1);
var ini = abilities.S(abilities.get(spirit,"Ini"));
var aini = abilities.S(abilities.get(spirit,"A-Ini"));
var skills = abilities.S(abilities.get(spirit,"Fertigkeiten"));
var powers = abilities.S(abilities.get(spirit,"Kräfte"));
var additional_powers = abilities.S(abilities.get(spirit,"Zusätzliche-Kräfte"));
var weaknesses = abilities.S(abilities.get(spirit,"Schwächen"));
var specials = abilities.S(abilities.get(spirit,"Besonderheiten"));
var skillsplit = skills.split(",").map(function(e){return e.trim();});
var powerssplit = powers.split(",").map(function(e){return e.trim();});
var weaknessessplit = weaknesses.split(",").map(function(e){return e.trim();});
var additional_powerssplit = additional_powers.splitArgs(",").map(function(e){return e.trim();});
// Unwrap the @{attribute}
var drainattribute = attributes.I(attributes.unwrap(character,"tradition_drainattribute"));
var drainmod = attributes.get(character,"tradition_drainmod");
drainmod = attributes.I(drainmod);
var wil = attributes.I(attributes.get(character,"wil"));
var drainpool = drainattribute + drainmod + wil;
//Roll for Summoner
sendChat(character.get('name'), "/roll [["+castpool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueSummoner = x[0].inlinerolls[i];
var rollCast = buildInline(RollValueSummoner, undefined, undefined);
var successesSummoner = parseInt(RollValueSummoner["results"]["total"]);
//Roll for Spirit
sendChat(character.get('name'),"/roll [["+force+"d6sacs5cs6>5]]",function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueSpirit = x[0].inlinerolls[i];
var rollSpirit = buildInline(RollValueSpirit, undefined, undefined);
var successesSpirit = parseInt(RollValueSpirit["results"]["total"]);
//Roll Entzug
var totaldrain = Math.max(successesSpirit*2,2);
var tasks = Math.max(successesSummoner-successesSpirit,0);
sendChat(character.get('name'),"/roll [["+drainpool+"d6sacs5cs6>5]]",function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueDrain = x[0].inlinerolls[i];
var rollDrain = buildInline(RollValueDrain, undefined, undefined);
var successesDrain = parseInt(RollValueDrain["results"]["total"]);
var draindamage = Math.max(totaldrain-successesDrain,0);
if(tasks > 0){
var newid = generateRowID();
var name = "repeating_activespirits_"+newid+"_activespirits_name";
createObj("attribute", {name: name, current: spiritname, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_stufe";
createObj("attribute", {name: name, current: force, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_dienste";
createObj("attribute", {name: name, current: tasks, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_kon";
createObj("attribute", {name: name, current: kon, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_str";
createObj("attribute", {name: name, current: str, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_rea";
createObj("attribute", {name: name, current: rea, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_ges";
createObj("attribute", {name: name, current: ges, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_int";
createObj("attribute", {name: name, current: intu, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_log";
createObj("attribute", {name: name, current: logic, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_wil";
createObj("attribute", {name: name, current: wil, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_cha";
createObj("attribute", {name: name, current: cha, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_mag";
createObj("attribute", {name: name, current: mag, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_ess";
createObj("attribute", {name: name, current: ess, max:"", _characterid: character.id});
name = "repeating_activespirits_"+newid+"_activespirits_edg";
createObj("attribute", {name: name, current: edg, max:"", _characterid: character.id});
var skillpool = force;
for (var i = 0; i < skillsplit.length;i = i + 1) {
var index = i + 1;
var skillname = skillsplit[i];
name = "repeating_activespirits_" + newid + "_activespirits_skill_" + index + "_name";
createObj("attribute", {name: name, current: skillname, max:"", _characterid: character.id});
name = "repeating_activespirits_" + newid + "_activespirits_skill_" + index + "_pool";
createObj("attribute", {name: name, current: skillpool, max:"", _characterid: character.id});
}
for (var i = 0; i < powerssplit.length;i = i + 1) {
var index = i + 1;
var powername = powerssplit[i];
name = "repeating_activespirits_" + newid + "_activespirits_power_" + index + "_name";
createObj("attribute", {name: name, current: powername, max:"", _characterid: character.id});
name = "repeating_activespirits_" + newid + "_activespirits_power_" + index + "_pool";
createObj("attribute", {name: name, current: skillpool, max:"", _characterid: character.id});
}
for (var i = 0; i < weaknessessplit.length;i = i + 1) {
var index = i + 1;
var weaknessname = weaknessessplit[i];
name = "repeating_activespirits_" + newid + "_activespirits_weakness_" + index + "_name";
createObj("attribute", {name: name, current: weaknessname, max:"", _characterid: character.id});
name = "repeating_activespirits_" + newid + "_activespirits_weakness_" + index + "_pool";
createObj("attribute", {name: name, current: skillpool, max:"", _characterid: character.id});
}
var add_power_button = "";
for (var i = 0; i < additional_powerssplit.length;i = i + 1) {
var index = i + 1;
var additionalpower = additional_powerssplit[i];
additionalpower = additionalpower.replace(/"/g,"").replace(/\([^)]*\)/g,"").trim();
add_power_button = add_power_button + "["+additionalpower+"](!shadowrun --character "+character.id+" --action spirit-select-additional-power --power-name '"+additionalpower+"' --spirit-id "+newid+")";
}
var message = "&{template:geist}"+
"{{text=beschwört }}"+
"{{name="+spiritname+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+castpool+"}}"+
"{{erfolge="+rollCast+"}}"+
"{{geist-erfolge="+rollSpirit+"}}"+
"{{entzugsschaden="+totaldrain+"-"+rollDrain+"="+draindamage+"}}"+
"{{dienste="+tasks+"}}"+
"{{ks="+force+"}}"+
"{{kon="+kon+"}}"+
"{{ges="+ges+"}}"+
"{{rea="+rea+"}}"+
"{{str="+str+"}}"+
"{{wil="+wil+"}}"+
"{{log="+logic+"}}"+
"{{int="+intu+"}}"+
"{{cha="+cha+"}}"+
"{{edg="+edg+"}}"+
"{{ess="+ess+"}}"+
"{{mag="+mag+"}}"+
"{{ini="+ini+"}}"+
"{{a-ini="+aini+"}}"+
"{{fertigkeiten="+skills+"}}"+
"{{kräfte="+powers+"}}"+
"{{zusätzliche-kräfte="+add_power_button+"}}"+
"{{schwächen="+weaknesses+"}}"+
"{{besonderheiten="+specials+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
}else{
var message = "&{template:geist}"+
"{{text=beschwört }}"+
"{{name="+spiritname+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{ks="+force+"}}"+
"{{pool="+castpool+"}}"+
"{{erfolge="+rollCast+"}}"+
"{{geist-erfolge="+rollSpirit+"}}"+
"{{entzugsschaden="+totaldrain+"-"+rollDrain+"="+draindamage+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
}
});
});
});
});
});
});
};
var handleAlchemyPrepare = function(msg,character,spellname,force,basis,mod,trigger,trigger_name){
var castpool = basis + mod;
var spell = characters.get("Zauber-"+spellname);
if(spell==undefined){
whisperToGM(msg.who,msg.who,"Zauber: "+spellname+" nicht gefunden");
return;
}
var art = abilities.S(abilities.get(spell,"Art"));
var category = abilities.S(abilities.get(spell,"Kategorie"));
var range = abilities.S(abilities.get(spell,"Reichweite"));
var damage = abilities.S(abilities.get(spell,"Schaden"));
var duration = abilities.S(abilities.get(spell,"Dauer"));
var drain = abilities.I(abilities.get(spell,"Entzug"));
var description = abilities.S(abilities.get(spell,"Beschreibung"));
// Unwrap the @{attribute}
var drainattribute = attributes.I(attributes.unwrap(character,"tradition_drainattribute"));
var drainmod = attributes.I(attributes.get(character,"tradition_drainmod"));
var wil = attributes.I(attributes.get(character,"wil"));
var drainpool = drainattribute + drainmod + wil;
var wirksamkeit = 0;
//Alchemist roll
sendChat(character.get('name'), "/roll [["+castpool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueAlchemist = x[0].inlinerolls[i];
var rollCast = buildInline(RollValueAlchemist, undefined, undefined);
var successesAlchemist = parseInt(RollValueAlchemist["results"]["total"]);
//Roll for Preparations
sendChat(character.get('name'),"/roll [["+force+"d6sacs5cs6>5]]",function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValuePreparation = x[0].inlinerolls[i];
var rollPreparation = buildInline(RollValuePreparation, undefined, undefined);
var successesPreparation = parseInt(RollValuePreparation["results"]["total"]);
var totaldrain = Math.max(force + drain + trigger,2);
wirksamkeit = Math.max(successesAlchemist-successesPreparation,0);
sendChat(character.get('name'),"/roll [["+drainpool+"d6sacs5cs6>5]]",function(x) {
var RollValueDrain = 0;
var i = 1;
Object.keys(x[0].inlinerolls).forEach(function(i) {
RollValueDrain = x[0].inlinerolls[i];
var rollDrain = buildInline(RollValueDrain, undefined, undefined);
var successesDrain = parseInt(RollValueDrain["results"]["total"]);
var draindamage = Math.max(totaldrain-successesDrain,0);
if(wirksamkeit>0){
var newid = generateRowID();
var name = "repeating_preparations_"+newid+"_preparations_name";
createObj("attribute", {name: name, current: spellname, max:"", _characterid: character.id});
name = "repeating_preparations_"+newid+"_preparations_basis";
createObj("attribute", {name: name, current: wirksamkeit, max:"", _characterid: character.id});
name = "repeating_preparations_"+newid+"_preparations_mod";
createObj("attribute", {name: name, current: force, max:"", _characterid: character.id});
//name = "repeating_preparations_"+newid+"_preparations";
//createObj("attribute", {name: name, current: 0, max:"", _characterid: character.id});
name = "repeating_preparations_"+newid+"_preparations_date";
createObj("attribute", {name: name, current: "", max:"", _characterid: character.id});
name = "repeating_preparations_"+newid+"_preparations_note";
createObj("attribute", {name: name, current: "", max:"", _characterid: character.id});
name = "repeating_preparations_"+newid+"_preparations_id";
createObj("attribute", {name: name, current: newid, max:"", _characterid: character.id});
}else{
description = "Vorbereitung fehlgeschlagen.";
}
var message = "&{template:alchemie}"+
"{{text=präpariert "+spellname+"}}"+
"{{ks="+force+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+castpool+"}}"+
"{{art="+art+"}}"+
"{{schaden="+damage+"}}"+
"{{kategorie="+category+"}}"+
"{{reichweite="+range+"}}"+
"{{dauer="+duration+"}}"+
"{{entzug="+force+"+"+drain+"+"+trigger+"="+totaldrain+"}}"+
"{{beschreibung="+description+"}}"+
"{{erfolge="+rollCast+"-"+rollPreparation+"="+wirksamkeit+"}}"+
"{{entzugswiderstand="+totaldrain+"-"+rollDrain+"="+draindamage+"}}"+
"{{ausloeser="+trigger_name+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
});
});
});
});
});
});
};
var handleAlchemyUse = function(msg,character,id,force,wirksamkeit){
var spellname = attributes.get(character,"repeating_preparations_"+id+"_preparations_name");
if(spellname==undefined){
whisperToGM(msg.who,msg.who,"Präparat mit ID: "+id+" nicht gefunden");
return;
}
spellname = attributes.S(spellname);
var wirksamkeit = attributes.I(attributes.get(character,"repeating_preparations_"+id+"_preparations_basis"));
var force = attributes.I(attributes.get(character,"repeating_preparations_"+id+"_preparations_mod"));
if(isNaN(wirksamkeit) || isNaN(force)){
whisperTo(msg.who,msg.who,"Wirksamkeit oder Krafstufe müssen eine Zahl sein");
return;
}
var castpool = wirksamkeit + force;
var spell = characters.get("Zauber-"+spellname);
if(spell==undefined){
whisperToGM(msg.who,msg.who,"Zauber "+spellname+" nicht gefunden");
return;
}
var art = abilities.S(abilities.get(spell,"Art"));
var category = abilities.S(abilities.get(spell,"Kategorie"));
var range = abilities.S(abilities.get(spell,"Reichweite"));
var damage = abilities.S(abilities.get(spell,"Schaden"));
var duration = abilities.S(abilities.get(spell,"Dauer"));
var drain = abilities.I(abilities.get(spell,"Entzug"));
var description = abilities.S(abilities.get(spell,"Beschreibung"));
// Unwrap the @{attribute}
var drainattribute = attributes.I(attributes.unwrap(character,"tradition_drainattribute"));
var drainmod = attributes.I(attributes.get(character,"tradition_drainmod"));
var wil = attributes.I(attributes.get(character,"wil"));
var drainpool = drainattribute + drainmod + wil;
var myid = id;
//Cast roll
sendChat(character.get('name'), "/roll [["+castpool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
var RollValueCaster = x[0].inlinerolls[0];
var rollCast = buildInline(RollValueCaster, undefined, undefined);
var successesCaster = parseInt(RollValueCaster["results"]["total"]);
var totaldrain = Math.max(force + drain,2);
sendChat(character.get('name'),"/roll [["+drainpool+"d6sacs5cs6>5]]",function(x) {
var RollValueDrain = x[0].inlinerolls[0];
var rollDrain = buildInline(RollValueDrain, undefined, undefined);
var successesDrain = parseInt(RollValueDrain["results"]["total"]);
var draindamage = Math.max(totaldrain-successesDrain,0);
var message = "&{template:zauber}"+
"{{text=zaubert "+spellname+"}}"+
"{{beschreibung="+description+"}}"+
"{{ks="+force+"}}"+
"{{basis="+wirksamkeit+"}}"+
"{{mod="+force+"}}"+
"{{pool="+castpool+"}}"+
"{{erfolge="+rollCast+"}}"+
"{{art="+art+"}}"+
"{{schaden="+damage+"}}"+
"{{kategorie="+category+"}}"+
"{{reichweite="+range+"}}"+
"{{entzug="+force+"+"+drain+"="+totaldrain+"}}"+
"{{entzugswiderstand="+totaldrain+"-"+rollDrain+"="+draindamage+"}}"+
"{{dauer="+duration+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
log("Delete preparation "+myid);
spellname = attributes.get(character,"repeating_preparations_"+myid+"_preparations_name");
if(spellname != undefined){
log("Delete spellname");
spellname.remove();
}
wirksamkeit = attributes.get(character,"repeating_preparations_"+myid+"_preparations_basis");
if(wirksamkeit!=undefined){
log("Delete basis");
wirksamkeit.remove();
}
force = attributes.get(character,"repeating_preparations_"+myid+"_preparations_mod");
if(force != undefined){
log("Delete mod");
force.remove();
}
castpool = attributes.get(character,"repeating_preparations_"+myid+"_preparations");
if(castpool != undefined){
log("Delete preparations");
castpool.remove();
}
var show_details = attributes.get(character,"repeating_preparations_"+myid+"_preparations_show_details");
if(show_details != undefined){
log("Delete show details");
show_details.remove();
}
var note = attributes.get(character,"repeating_preparations_"+myid+"_preparations_note");
if(note != undefined){
log("Delete note");
note.remove();
}
var preparations_date = attributes.get(character,"repeating_preparations_"+myid+"_preparations_date");
if(preparations_date != undefined){
log("Delete preparations date");
preparations_date.remove();
}
var id = attributes.get(character,"repeating_preparations_"+myid+"_preparations_id");
if(id != undefined){
log("Delete id");
id.remove();
}
});
});
};
var handleSpellcastingCast = function(msg,character,spellname,id,force,basis,mod){
var castpool = basis + mod;
var spell = characters.get("Zauber-"+spellname);
if(spell==undefined){
whisperToGM(msg.who,msg.who," Zauber "+spellname+" nicht gefunden");
return;
}
var art = abilities.S(abilities.get(spell,"Art"));
var category = abilities.S(abilities.get(spell,"Kategorie"));
var range = abilities.S(abilities.get(spell,"Reichweite"));
var damage = abilities.S(abilities.get(spell,"Schaden"));
var duration = abilities.S(abilities.get(spell,"Dauer"));
var drain = abilities.I(abilities.get(spell,"Entzug"));
var description = abilities.S(abilities.get(spell,"Beschreibung"));
// Unwrap the @{attribute}
var drainattribute = attributes.I(attributes.unwrap(character,"tradition_drainattribute"));
var drainmod = attributes.I(attributes.get(character,"tradition_drainmod"));
var wil = attributes.I(attributes.get(character,"wil"));
var drainpool = drainattribute + drainmod + wil;
var myid = id;
//Cast roll
sendChat(character.get('name'), "/roll [["+castpool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
var RollValueCaster = x[0].inlinerolls[0];
var rollCast = buildInline(RollValueCaster, undefined, undefined);
var successesCaster = parseInt(RollValueCaster["results"]["total"]);
var totaldrain = Math.max(force + drain,2);
sendChat(character.get('name'),"/roll [["+drainpool+"d6sacs5cs6>5]]",function(x) {
var RollValueDrain = x[0].inlinerolls[0];
var rollDrain = buildInline(RollValueDrain, undefined, undefined);
var successesDrain = parseInt(RollValueDrain["results"]["total"]);
var draindamage = Math.max(totaldrain-successesDrain,0);
var message = "&{template:zauber}"+
"{{text=zaubert "+spellname+"}}"+
"{{beschreibung="+description+"}}"+
"{{ks="+force+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+castpool+"}}"+
"{{erfolge="+rollCast+"}}"+
"{{art="+art+"}}"+
"{{schaden="+damage+"}}"+
"{{kategorie="+category+"}}"+
"{{reichweite="+range+"}}"+
"{{entzug="+force+"+"+drain+"="+totaldrain+"}}"+
"{{entzugswiderstand="+totaldrain+"-"+rollDrain+"="+draindamage+"}}"+
"{{dauer="+duration+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
});
});
};
var handleComplexFormUse = function(msg,character,name,id,force,basis,mod){
var pool = basis + mod;
var spell = characters.get("Complex-Form-"+name);
if(spell==undefined){
whisperToGM(msg.who,msg.who," Komplexe Form "+name+" nicht gefunden");
return;
}
var target = abilities.S(abilities.get(spell,"Ziel"));
var duration = abilities.S(abilities.get(spell,"Dauer"));
var fade = abilities.I(abilities.get(spell,"Schwund"));
var description = abilities.S(abilities.get(spell,"Beschreibung"));
description = description.replace(/(?:\r\n|\r|\n)/g, '');
// Unwrap the @{attribute}
var res = attributes.I(attributes.get(character,"res"));
var wil = attributes.I(attributes.get(character,"wil"));
var fadepool = res + wil;
var myid = id;
//Cast roll
sendChat(character.get('name'), "/roll [["+pool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
var RollValueTechnomancer = x[0].inlinerolls[0];
var rollTechnomancer = buildInline(RollValueTechnomancer, undefined, undefined);
var successesTechnomancer = parseInt(RollValueTechnomancer["results"]["total"]);
var totalfade = Math.max(force + fade,2);
sendChat(character.get('name'),"/roll [["+fadepool+"d6sacs5cs6>5]]",function(x) {
var RollValueFade = x[0].inlinerolls[0];
var rollFade = buildInline(RollValueFade, undefined, undefined);
var successesFade = parseInt(RollValueFade["results"]["total"]);
var fadedamage = Math.max(totalfade-successesFade,0);
var message = "&{template:complex-form}"+
"{{text=nutzt "+name+"}}"+
"{{beschreibung="+description+"}}"+
"{{stufe="+force+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+pool+"}}"+
"{{erfolge="+rollTechnomancer+"}}"+
"{{ziel="+target+"}}"+
"{{dauer="+duration+"}}"+
"{{schwund="+force+"+"+fade+"="+totalfade+"}}"+
"{{schwundwiderstand="+totalfade+"-"+rollFade+"="+fadedamage+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
});
});
};
var handleCompileSprite = function(msg,character,spritename,basis,mod,force){
spritename = spritename.replace(/\\/g,"").replace(/"/g,"");
var compilepool = basis + mod;
var sprite = characters.get("Sprites-"+spritename);
if(sprite==undefined){
whisperToGM(msg.who,msg.who," Sprite: "+spritename+" nicht gefunden.");
return;
}
var attack = Math.max(force+abilities.I(abilities.get(sprite,"Angriff")),1);
var sleaze = Math.max(force+abilities.I(abilities.get(sprite,"Schleicher")),1);
var dataprocessing = Math.max(force+abilities.I(abilities.get(sprite,"Datenverarbeitung")),1);
var firewall = Math.max(force+abilities.I(abilities.get(sprite,"Firewall")),1);
var spriteres = force;
var ini = abilities.S(abilities.get(sprite,"Initiative"));
var description = abilities.S(abilities.get(sprite,"Beschreibung"));
var skills = abilities.S(abilities.get(sprite,"Fertigkeiten"));
var powers = abilities.S(abilities.get(sprite,"Kräfte"));
var skillsplit = skills.split(",").map(function(e){return e.trim();});
var powerssplit = powers.split(",").map(function(e){return e.trim();});
// Unwrap the @{attribute}
var res = attributes.I(attributes.get(character,"res"));
var wil = attributes.I(attributes.get(character,"res"));
var fadepool = res+wil;
//Roll for Technomancer
sendChat(character.get('name'), "/roll [["+compilepool+"d6sacs5cs6>5kh"+force+"]]", function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueTechnomancer = x[0].inlinerolls[i];
var rollCompile = buildInline(RollValueTechnomancer, undefined, undefined);
var successesTechnomancer = parseInt(RollValueTechnomancer["results"]["total"]);
//Roll for Sprite
sendChat(character.get('name'),"/roll [["+force+"d6sacs5cs6>5]]",function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueSprite = x[0].inlinerolls[i];
var rollSprite = buildInline(RollValueSprite, undefined, undefined);
var successesSprite = parseInt(RollValueSprite["results"]["total"]);
//Roll Entzug
var totalfade = Math.max(successesSprite*2,2);
var tasks = Math.max(successesTechnomancer-successesSprite,0);
sendChat(character.get('name'),"/roll [["+fadepool+"d6sacs5cs6>5]]",function(x) {
Object.keys(x[0].inlinerolls).forEach(function(i) {
var RollValueFade = x[0].inlinerolls[i];
var rollFade = buildInline(RollValueFade, undefined, undefined);
var successesFade = parseInt(RollValueFade["results"]["total"]);
var fadedamage = Math.max(totalfade-successesFade,0);
if(tasks > 0){
var newid = generateRowID();
var name = "repeating_activesprites_"+newid+"_activesprites_name";
createObj("attribute", {name: name, current: spritename, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_stufe";
createObj("attribute", {name: name, current: force, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_dienste";
createObj("attribute", {name: name, current: tasks, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_attack";
createObj("attribute", {name: name, current: attack, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_sleaze";
createObj("attribute", {name: name, current: sleaze, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_dataprocessing";
createObj("attribute", {name: name, current: dataprocessing, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_firewall";
createObj("attribute", {name: name, current: firewall, max:"", _characterid: character.id});
name = "repeating_activesprites_"+newid+"_activesprites_res";
createObj("attribute", {name: name, current: spriteres, max:"", _characterid: character.id});
var skillpool = force;
for (var i = 0; i < skillsplit.length;i = i + 1) {
var index = i + 1;
var skillname = skillsplit[i];
name = "repeating_activesprites_" + newid + "_activesprites_skill_" + index + "_name";
createObj("attribute", {name: name, current: skillname, max:"", _characterid: character.id});
name = "repeating_activesprites_" + newid + "_activesprites_skill_" + index + "_pool";
createObj("attribute", {name: name, current: skillpool, max:"", _characterid: character.id});
}
for (var i = 0; i < powerssplit.length;i = i + 1) {
var index = i + 1;
var powername = powerssplit[i];
name = "repeating_activesprites_" + newid + "_activesprites_power_" + index + "_name";
createObj("attribute", {name: name, current: powername, max:"", _characterid: character.id});
name = "repeating_activesprites_" + newid + "_activesprites_power_" + index + "_pool";
createObj("attribute", {name: name, current: skillpool, max:"", _characterid: character.id});
}
var message = "&{template:sprite}"+
"{{text=kompiliert }}"+
"{{name="+spritename+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+compilepool+"}}"+
"{{erfolge="+rollCompile+"}}"+
"{{sprite-erfolge="+rollSprite+"}}"+
"{{fadeschaden="+totalfade+"-"+rollFade+"="+fadedamage+"}}"+
"{{tasks="+tasks+"}}"+
"{{stufe="+force+"}}"+
"{{angriff="+attack+"}}"+
"{{schleicher="+sleaze+"}}"+
"{{datenverarbeitung="+dataprocessing+"}}"+
"{{firewall="+firewall+"}}"+
"{{resonanz="+spriteres+"}}"+
"{{initiative="+ini+"}}"+
"{{fertigkeiten="+skills+"}}"+
"{{kräfte="+powers+"}}"+
"{{beschreibung="+description+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
}else{
var message = "&{template:sprite}"+
"{{text=scheitert bei Kompilierung von }}"+
"{{name="+spritename+"}}"+
"{{basis="+basis+"}}"+
"{{mod="+mod+"}}"+
"{{pool="+compilepool+"}}"+
"{{erfolge="+rollCompile+"}}"+
"{{sprite-erfolge="+rollSprite+"}}"+
"{{fadeschaden="+totalfade+"-"+rollFade+"="+fadedamage+"}}"+
"{{stufe="+force+"}}";
var hiderolls = attributes.S(attributes.get(character,"hide_rolls_cmd"));
sendChatRoll(msg.who,hiderolls,message);
//whisperToGM(msg.who,msg.who,message);
}
});
});
});
});
});
});
};
var handleLinkedBars = function(token){
var represents = token.get('represents');
var bar1_link = token.get('bar1_link');
var bar2_link = token.get('bar2_link');
var bar3_link = token.get('bar3_link');
if(represents){
var character = characters.get_by_id(represents);
if(bar1_link){
//Update Injury Mod
var injury_mod = attributes.get(character,"injury_mod");
var im = attributes.I(injury_mod);
if(isNaN(parseInt(im))){
im = 0;
attributes.set(injury_mod,0);
}
var injury_mod_negative = attributes.get(character,"injury_mod_negative");
attributes.set(injury_mod_negative,-im);
var use_injury = attributes.get(character,"use_injury_mod",true);
var cmd_injury_mod = attributes.get(character,"cmd_injury_mod",true);
var cmd_injury_text = attributes.get(character,"cmd_injury_text",true);
if(use_injury.get('current') == "on" && attributes.I(injury_mod) > 0){
attributes.set(cmd_injury_mod,"-@{injury_mod}");
attributes.set(cmd_injury_text,"{{injurymod=-@{injury_mod}}}");
}else{
attributes.set(cmd_injury_mod,"");
attributes.set(cmd_injury_text,"");
}
}
if(bar2_link && bar3_link){
updateConditionMonitorAndInjury(character);
}
}
};
var updateConditionMonitorAndInjury = function(character){
var zmg_aktuell = attributes.get(character,"zmg_aktuell");
var zmg_maximum = attributes.get(character,"zmg_maximum");
var zmg_toleranz = attributes.get(character,"zmg_toleranz");
var zmp_aktuell = attributes.get(character,"zmp_aktuell");
var zmp_maximum = attributes.get(character,"zmp_maximum");
var zmp_toleranz = attributes.get(character,"zmp_toleranz");
var overflow_aktuell = attributes.get(character,"overflow_aktuell");
var overflow_maximum = attributes.get(character,"overflow_maximum");
var overflow_toleranz = attributes.get(character,"overflow_toleranz");
var injury_mod = attributes.get(character,"injury_mod");
if(zmg_aktuell == undefined ||zmg_maximum==undefined||zmg_toleranz==undefined||
zmp_aktuell==undefined||zmp_maximum==undefined||zmp_toleranz==undefined||
overflow_aktuell==undefined||overflow_maximum==undefined||overflow_toleranz==undefined||
injury_mod==undefined){
whisperToGM("gm","gm","Character "+character.get('name')+" has undefined condition monitor variables.");
return;
}
var pc = attributes.I(zmp_aktuell);
var pm = attributes.I(zmp_maximum);
var pt = attributes.I(zmp_toleranz);
if(pt<=0){
attributes.set(zmp_toleranz,1);
pt = 1;
}
var gc = attributes.I(zmg_aktuell);
var gm = attributes.I(zmg_maximum);
var gt = attributes.I(zmg_toleranz);
if(gt<=0){
attributes.set(zmg_toleranz,1);
gt = 1;
}
var oc = attributes.I(overflow_aktuell);
var om = attributes.I(overflow_maximum);
var ot = attributes.I(overflow_toleranz);
if(ot<=0){
attributes.set(overflow_toleranz,1);
ot = 1;
}
if(gc > gm + 1){
//Overflow -> physical per 2 boxes
var overflow = Math.floor((gc - gm)/2.0);
pc = pc + overflow;
//Substract overflow from mental
gc = gc - overflow*2;
}
if(pc > pm){
var overflow = pc - pm;
oc = oc + overflow;
//Substract overflow from physical
pc = pc - overflow;
}
var mod_p = Math.floor(pc/pt);
var mod_g = Math.floor(gc/gt);
var injurymod = mod_p + mod_g;
attributes.set(zmg_aktuell,gc);
attributes.setMax(zmg_aktuell,gm);
attributes.set(zmp_aktuell,pc);
attributes.setMax(zmp_aktuell,pm);
attributes.set(overflow_aktuell,oc);
attributes.set(injury_mod,injurymod);
var maxinjurymod = Math.floor(pm/pt)+Math.floor(gm/gt);
attributes.setMax(injury_mod,maxinjurymod);
var use_injury_mod = attributes.S(attributes.get(character,"use_injury_mod"));
var cmd_injury_mod = attributes.get(character,"cmd_injury_mod");
if(use_injury_mod == "on"){
attributes.set(cmd_injury_mod,"-@{injury_mod}");
}else{
attributes.set(cmd_injury_mod,"");
}
};
var whisperTo = function(sender,reciever,msg){
if(reciever.indexOf(" (GM)")>-1){
reciever = "gm";
}
sendChat(sender,'/w \"'+reciever+'\" '+msg)
}
var whisperToGM = function(sender,reciever,msg){
if(sender.indexOf("(GM)") == -1 && reciever.indexOf("(GM)") == -1){
whisperTo(sender,"gm",msg);
}
whisperTo(sender,reciever,msg);
}
var sendChatRoll = function(sender,hiderollcmd,msg){
if(hiderollcmd.indexOf("/w gm") == -1){
log("/em ?");
sendChat(sender,hiderollcmd + msg);
}else{
log("/w gm ?");
if(sender.indexOf("(GM)") == -1){
whisperTo(sender,"gm",msg);
}
whisperTo(sender,sender,msg);
}
}
var registerEventHandlers = function() {
on('chat:message', handleShadowrunInput);
on('change:token', handleToken);
};
return {
CheckInstall: checkInstall,
RegisterEventHandlers: registerEventHandlers
};
}());
var attributes = {
get:function(chr,att,create){
create = (typeof create === 'undefined') ? false : create;
var a = findObjs({_type: 'attribute', _characterid: chr.id, name: att},{caseInsensitive: true})[0];
if(a == undefined && create){a = attributes.create(chr,att,'0');}
return a;
},
get_from_str:function(chr,str){
var s = str.replace(/[\{\}@]/g,"");
var a = attributes.get(chr,s);
return a;
},
set:function(att,value){att.set({current:value});},
setMax:function(att,max){att.set({max:max});},
create:function(chr,name,value){return createObj("attribute", {name: name, current: value, characterid: chr.id});},
I:function(attr){
if(attr == undefined){
log("attributes.I: You passed 'undefined'");
return undefined;
}
var x = parseInt(attr.get('current'));
return isNaN(x)?0:x;
},
F:function(attr){
var x = parseFloat(attr.get('current'));
return isNaN(x)?0:x;
},
S:function(attr){
var x = attr != undefined ? attr.get('current') : undefined;
return x == undefined ? "" : x;
},
unwrap:function(chr,att){
//Unwraps @{log} to get(character,log)
var attribute = attributes.S(attributes.get(chr,att)).replace(/[\{\}@]/g,"");
return attributes.get(chr,attribute);
}
};
var abilities = {
get:function(chr,ab){return findObjs({_type: 'ability', _characterid: chr.id, name: ab},{caseInsensitive: true})[0];},
set:function(ab,value){ab.set({current:value});},
S:function(ab){
var x = ab.get('action');
return x == undefined ? "" : x;
},
I:function(ab){
var x = parseInt(ab.get('action'));
return isNaN(x)?0:x;
}
};
var characters = {
get:function(name){return findObjs({_type: 'character', name: name},{caseInsensitive: true})[0];},
get_by_id:function(id){return findObjs({_type: 'character', id: id},{caseInsensitive: true})[0];}
};
on("ready",function(){
'use strict';
Shadowrun.CheckInstall();
Shadowrun.RegisterEventHandlers();
if(!state.Shadowrun) {
state.Shadowrun = {};
}
if(state.Shadowrun["extendedTests"] == undefined) {
state.Shadowrun["extendedTests"] = {};
}
});
//Functions stolen from Aarons Post how to get UUID generation into the API
var generateUUID = (function() {
"use strict";
var a = 0, b = [];
return function() {
var c = (new Date()).getTime() + 0, d = c === a;
a = c;
for (var e = new Array(8), f = 7; 0 <= f; f--) {
e[f] = "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(c % 64);
c = Math.floor(c / 64);
}
c = e.join("");
if (d) {
for (f = 11; 0 <= f && 63 === b[f]; f--) {
b[f] = 0;
}
b[f]++;
} else {
for (f = 0; 12 > f; f++) {
b[f] = Math.floor(64 * Math.random());
}
}
for (f = 0; 12 > f; f++){
c += "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);
}
return c;
};
}());
var generateRowID = function () {
"use strict";
var uuid = generateUUID().replace(/_/g, "Z");
while(findObjs({id: uuid},{caseInsensitive: true}).length!=0){
uuid = generateUUID().replace(/_/g, "Z");
}
return uuid;
};
//Functions: Stolen from HoneyBadgers PowerCards
// INLINE ROLL COLORS
var INLINE_ROLL_DEFAULT = " background-color: #FFFEA2; border-color: #87850A; color: #000000;";
var INLINE_ROLL_CRIT_LOW = " background-color: #FFAAAA; border-color: #660000; color: #660000;";
var INLINE_ROLL_CRIT_HIGH = " background-color: #88CC88; border-color: #004400; color: #004400;";
var INLINE_ROLL_CRIT_BOTH = " background-color: #8FA4D4; border-color: #061539; color: #061539;";
var INLINE_ROLL_STYLE = "text-align: center; font-size: 100%; font-weight: bold; display: inline-block; min-width: 1.75em; height: 1em; margin-top: -1px; margin-bottom: 1px; padding: 0px 2px; border: 1px solid; border-radius: 3px;";
function buildInline(inlineroll, TrackerID, who) {
var InlineColorOverride = "";
var values = [];
var critRoll = false;
var failRoll = false;
var critCheck = false;
var failCheck = false;
var expandedCheck = false;
var highRoll = false;
var lowRoll = false;
var noHighlight = false;
var expandedRoll = false;
var notInline = false;
var addToTracker = false;
inlineroll.results.rolls.forEach(function(roll) {
var result = processRoll(roll, noHighlight, expandedRoll, critCheck, failCheck, notInline);
if (result["critCheck"]) critCheck = true;
if (result["failCheck"]) failCheck = true;
if (result["noHighlight"]) noHighlight = true;
if (result["expandedRoll"]) expandedRoll = true;
if (result["notInline"]) notInline = true;
if (result["addToTracker"]) {
// ADD TOKEN OR CHARACTER OR DISPLAY NAME TO TURN ORDER TRACKER...
var TrackerName = "";
if (TrackerID.charAt(0) === "C") {
var Char = getObj("character", TrackerID.substring(2));
var Tok = findObjs({
type: 'graphic',
pageid: Campaign().get("playerpageid"),
represents: TrackerID.substring(2)
});
if (_.isEmpty(Tok) && Char !== undefined) TrackerName = Char.get("name");
else TrackerID = Tok[0].id;
} else if (TrackerID.charAt(0) === "T") TrackerID = TrackerID.substring(2);
else TrackerName = who;
// CHECK TURN ORDER FOR EXISTING ID... REPLACE PR VALUE IF FOUND...
var turn_order = ("" === Campaign().get("turnorder")) ? [] : JSON.parse(Campaign().get("turnorder"));
var pos = turn_order.map(function(z) {
return z.id;
}).indexOf(TrackerID);
if (pos === -1) turn_order.push({
id: TrackerID,
pr: inlineroll.results.total,
custom: TrackerName
});
else turn_order[pos]["pr"] = inlineroll.results.total;
// OPEN THE INITIATIVE WINDOW IF IT'S CLOSED...
if (!Campaign().get("initiativepage")) Campaign().set("initiativepage", true);
// SEND TURN ORDER BACK TO THE CAMPAIGN() OBJECT...
Campaign().set("turnorder", JSON.stringify(turn_order));
}
if (result.value !== "") values.push(result.value);
});
// OVERRIDE THE ROLL20 INLINE ROLL COLORS...
var critclass="";
if (critCheck && failCheck) critclass="importantroll";
else if (critCheck && !failCheck) critclass="fullcrit";
else if (!critCheck && failCheck) critclass="fullfail";
else critclass="";
/*if (critCheck && failCheck) InlineColorOverride = INLINE_ROLL_CRIT_BOTH;
else if (critCheck && !failCheck) InlineColorOverride = INLINE_ROLL_CRIT_HIGH;
else if (!critCheck && failCheck) InlineColorOverride = INLINE_ROLL_CRIT_LOW;
else InlineColorOverride = INLINE_ROLL_DEFAULT;*/
// PARSE TABLE RESULTS
inlineroll.results.tableentries = _.chain(inlineroll.results.rolls)
.filter(function(r) {
var tbl = _.has(r, 'table');
return _.has(r, 'table');
})
.reduce(function(memo, r) {
_.each(r.results, function(i) {
i = i.tableItem;
if (!/^[+\-]?(0|[1-9][0-9]*)([.]+[0-9]*)?([eE][+\-]?[0-9]+)?$/.test(i.name)) {
memo.push({
name: i.name,
weight: i.weight,
table: r.table
});
}
});
return memo;
}, [])
.value();
// REMOVE ROLL OPTIONS LIKE NH, XPND, EMPTY BRACKETS, & ADD SPACING...
inlineroll.expression = inlineroll.expression
.replace(/\|nh|nh/, "")
.replace(/\|xpnd|xpnd/i, "")
.replace(/\|trkr|trkr/i, "")
.replace(/\[\]/, "")
.replace("<", "&" + "amp;" + "lt;")
.replace(/\+/g, " + ")
.replace(/\-/g, " - ")
.replace(/\*/g, " * ")
.replace(/\//g, " / ");
// END ROLL OPTIONS
// FINAL STEP...
var rollOut = "";
if (expandedRoll) {
if (notInline) {
rollOut = values.join("") + " = " + inlineroll.results.total;
} else {
rollOut = '<span title="Rolling: ' + inlineroll.expression + '=<br>' + values.join("");
rollOut += '" class="inlinerollresult showtip tipsy">' + values.join("") + ' = ' + inlineroll.results.total + '</span>';
}
} else {
if (notInline) {
rollOut = inlineroll.results.total;
} else {
rollOut = '<span title="Rolling: ' + inlineroll.expression + '=<br>' + values.join("");
rollOut += '" class="inlinerollresult showtip tipsy '+critclass+'">' + inlineroll.results.total + '</span>';
}
}
// rollOut = (inlineroll.results.total === 0 && inlineroll.results.tableentries.length) ? '' : rollOut;
rollOut = (inlineroll.results.tableentries.length) ? '' : rollOut;
rollOut += _.map(inlineroll.results.tableentries, function(l) {
return (notInline) ? l.name : '<span title="Table: ' + l.table + ' ' + 'Weight: ' + l.weight + '" class="inlinerollresult showtip tipsy">' + l.name + '</span>';
}).join('');
return rollOut;
};
function processRoll(roll, noHighlight, expandedRoll, critCheck, failCheck, notInline, addToTracker) {
if (roll.type === "C") {
return {
value: " " + roll.text + " "
};
} else if (roll.type === "L") {
if (roll.text.match(/nh/i) !== null) noHighlight = true;
if (roll.text.match(/xpnd/i) !== null) expandedRoll = true;
if (roll.text.match(/txt/i) !== null) notInline = true;
if (roll.text.match(/trkr/i) !== null) addToTracker = true;
return {
noHighlight: noHighlight,
expandedRoll: expandedRoll,
notInline: notInline,
addToTracker: addToTracker
};
} else if (roll.type === "M") {
if (roll.expr.toString().match(/\+|\-|\*|\\/g)) roll.expr = roll.expr.toString().replace(/\+/g, " + ").replace(/\-/g, " - ").replace(/\*/g, " * ").replace(/\//g, " / ");
return {
value: roll.expr
};
} else if (roll.type === "R") {
var rollValues = [];
_.each(roll.results, function(result) {
if (result.tableItem !== undefined) {
rollValues.push(result.tableItem.name);
} else {
critRoll = false;
failRoll = false;
if (noHighlight) {
critRoll = false;
failRoll = false;
} else {
var Sides = roll.sides;
// CRITROLL CHECKS...
if (roll.mods && roll.mods["customCrit"]) {
var p = 0;
_.each(roll.mods["customCrit"], function() {
if (roll.mods["customCrit"][p]["comp"] === "<=" && result.v <= roll.mods["customCrit"][p]["point"]) critRoll = true;
if (roll.mods["customCrit"][p]["comp"] === "==" && result.v == roll.mods["customCrit"][p]["point"]) critRoll = true;
if (roll.mods["customCrit"][p]["comp"] === ">=" && result.v >= roll.mods["customCrit"][p]["point"]) critRoll = true;
p++;
});
} else {
if (result.v === Sides) critRoll = true;
}
// FAILROLL CHECKS...
if (roll.mods && roll.mods["customFumble"]) {
var p = 0;
_.each(roll.mods["customFumble"], function() {
if (roll.mods["customFumble"][p]["comp"] === "<=" && result.v <= roll.mods["customFumble"][p]["point"]) failRoll = true;
if (roll.mods["customFumble"][p]["comp"] === "==" && result.v == roll.mods["customFumble"][p]["point"]) failRoll = true;
if (roll.mods["customFumble"][p]["comp"] === ">=" && result.v >= roll.mods["customFumble"][p]["point"]) failRoll = true;
p++;
});
} else {
if (result.v === 1) failRoll = true;
}
}
if (expandedRoll) result.v = "<span style='" + (critRoll ? 'color: #040;' : (failRoll ? 'color: #600;' : '')) + "'>" + result.v + "</span>";
else result.v = "<span style='" + (critRoll ? 'color: #0F0; font-size: 1.25em;' : (failRoll ? 'color: #F00; font-size: 1.25em;' : '')) + "'>" + result.v + "</span>";
rollValues.push(result.v);
if (critRoll) critCheck = true;
if (failRoll) failCheck = true;
}
});
return {
value: "(" + rollValues.join(" + ") + ")",
noHighlight: noHighlight,
expandedRoll: expandedRoll,
critCheck: critCheck,
failCheck: failCheck,
notInline: notInline,
addToTracker: addToTracker
};
} else if (roll.type === "G") {
var grollVal = [];
_.each(roll.rolls, function(groll) {
_.each(groll, function(groll2) {
var result = processRoll(groll2, noHighlight, expandedRoll, critCheck, failCheck, notInline);
grollVal.push(result.value);
critCheck = critCheck || result.critCheck;
failCheck = failCheck || result.failCheck;
noHighlight = noHighlight || result.noHighlight;
expandedRoll = expandedRoll || result.expandedRoll;
notInline = notInline || result.notInline;
addToTracker = addToTracker || result.addToTracker;
});
});
return {
value: "{" + grollVal.join(" ") + "}",
noHighlight: noHighlight,
expandedRoll: expandedRoll,
critCheck: critCheck,
failCheck: failCheck,
notInline: notInline,
addToTracker: addToTracker
};
}
};
function doInlineFormatting(content, ALLOW_URLS, ALLOW_HIDDEN_URLS, Rolls) {
// REPLACE [^ID] with value...
var RollID;
while (content.indexOf("[^") !== -1) {
RollID = content.match(/\[\^(.*?)\]/);
if (Rolls["$" + RollID[1].split(".")[0]]) {
switch (RollID[1].split(".")[1]) {
case "total":
content = content.replace(RollID[0], Rolls["$" + RollID[1].split(".")[0]].total);
case "base":
content = content.replace(RollID[0], Rolls["$" + RollID[1].split(".")[0]].base);
case "ss":
content = content.replace(RollID[0], Rolls["$" + RollID[1].split(".")[0]].successes);
case "ones":
content = content.replace(RollID[0], Rolls["$" + RollID[1].split(".")[0]].ones);
default:
content = content.replace(RollID[0], Rolls["$" + RollID[1].split(".")[0]].base);
}
} else {
content = content.replace(RollID[0], "Roll ID Not Found");
}
}
// PARSE FOR INLINE FORMATTING
var urls = [],
str,
formatter = function(s) {
return s
.replace(/__(.*?)__/g, "<u>$1</u>")
.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>")
.replace(/\/\/(.*?)\/\//g, "<i>$1</i>")
.replace(/\^\^/g, "<br>")
.replace(/\^\*/g, "<span></span>")
.replace(/\$\$(#([a-fA-F0-9]{3}|[a-fA-F0-9]{6}))\|(.*?)\$\$/g, "<span>$3</span>")
.replace(/\~\~\~/g, "<hr/>")
.replace(/\~\J(.*?)\~\J/g, "<div>$1</div>")
.replace(/\~\L(.*?)\~\L/g, "<span>$1</span>")
.replace(/\~\C(.*?)\~\C/g, "<div>$1</div>")
.replace(/\~\R(.*?)\~\R/g, "<div>$1</div><div></div>")
.replace(/\[\!(.*?)\!\]/g, "<span>$1</span>")
;
};
str = _.reduce(
content.match(/@@.*?@@/g),
function(m, s, i) {
var parts = s.replace(/@@(.*)@@/, '$1').split(/\|\|/),
url = parts.shift().replace(/^\s*(http(s)?:\/\/|\/\/()|())/, 'http$2://'),
text = formatter(parts.join('||'));
if (ALLOW_URLS) {
if (ALLOW_HIDDEN_URLS) {
urls[i] = '<a href="' + url + '">' + (text || url) + '</a>';
} else {
urls[i] = '<a href="' + url + '">' + text + ' [' + url + ']</a>';
}
} else {
urls[i] = s;
}
return m.replace(s, '@@' + i + '@@');
},
content
);
str = formatter(str);
return _.reduce(
urls,
function(m, s, i) {
return m.replace('@@' + i + '@@', s);
},
str
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment