Files
roll20-character-sheets-tester/Krystal (FR)/Krystal character sheet v1.html
T
Syprien 1980045604 Krystal (FR) fix (#6239)
* Update Krystal character sheet v1.html

Fix incorrect refresh trigger for (INT, SAG) comp

* Update Krystal character sheet v1.html
2020-04-20 16:42:54 -04:00

1591 lines
77 KiB
HTML

<!-- Character sheet for Krystal RPG (FR)
RPG Publisher: Les 12 Singes
Sheet Author: Tomaxx
Sheet version: 1.01
-->
<div class="outline">
<!-- Call 800px image -->
<img src="http://i.imgur.com/ycM7ctq.png">
<div class="sheet-2colrow section1"> <!-- Section 1 -->
<div class="sheet-col"> <!-- Column 1 -->
<table class="table2">
<tr>
<td>
<h1>Héraut</h1>
</td>
<td> </td>
</tr>
<tr>
<td>
Nom
</td>
<td>
<INPUT type="text" name="attr_character_name" class="input1"></INPUT>
</td>
</tr>
<tr>
<td>
Profil
</td>
<td>
<INPUT type="text" name="attr_profil" class="input1"></INPUT>
</td>
</tr>
<tr>
<td>
Saison
</td>
<td>
<INPUT type="text" name="attr_saison" class="input1"></INPUT>
</td>
</tr>
</table>
<table class="table2">
<tr>
<td>
Points de vie
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_pdv" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
Points d’énergie
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_energie" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
Actions
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_actions" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
Déplacement
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_deplacement"style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
Bonus aux dégâts (mêlée)
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_degmelee" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
Bonus aux dégâts (tir)
</td>
<td>
<INPUT type="number" min="0" value="0" name="attr_degtir" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
</table>
<br>
</div> <!-- END Column 1 -->
<div class="sheet-col" > <!-- Column 2 -->
<table class="table2">
<tr>
<td>
<h1>Caractéristiques</h1>
</td>
<td>
</td>
</tr>
<tr>
<td>
FOR - Force
</td>
<td>
<INPUT type="number" name="attr_force" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
CON - Constitution
</td>
<td>
<INPUT type="number" name="attr_cons" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
DEX - Dextérité
</td>
<td>
<INPUT type="number" name="attr_dext" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
INT - Intelligence
</td>
<td>
<INPUT type="number" name="attr_intel" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
SAG - Sagesse
</td>
<td>
<INPUT type="number" name="attr_sage" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
<tr>
<td>
CHA - Charisme
</td>
<td>
<INPUT type="number" name="attr_chari" value="0" min="0" style="width: 100px;" class="input2" ></INPUT>
</td>
</tr>
</table>
<br>
<img src="http://i.imgur.com/u2lZtKL.png" class="image2">
</div> <!-- END Column 1 -->
</div> <!-- END Section 1 -->
<div class="sheet-2colrow section1"> <!-- Section 2 -->
<div class="sheet-col"> <!-- Column 1 -->
<table class="table2">
<tr>
<td>
<h1>Atouts</h1>
</td>
</tr>
<tr>
<td>
<fieldset class="repeating_atouts">
<input type="text" name="attr_atout" class="input4" />
</fieldset>
</td>
</tr>
</table>
</div> <!-- END Column 1 -->
<div class="sheet-col" > <!-- Column 2 -->
<table class="table2">
<tr>
<td>
<h1>Equipement</h1>
</td>
</tr>
<tr>
<td>
<fieldset class="repeating_equipement">
<input type="text" name="attr_equipement" class="input4" />
</fieldset>
</td>
</tr>
</table>
</div> <!-- END Column 2 -->
</div> <!-- END Section 2 -->
<div class="section2"> <!-- Section 3 Competences-->
<table class="table1">
<tr>
<td><h1>Compétences</h1></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> Caracs &nbsp; Rang &nbsp; Total </td>
</tr>
<tr>
<td>
Acrobatie (FOR, DEX)
</td>
<td>
<input type="number" name="attr_acrocarac" readonly >
<script type="text/worker">
on('ready change:force change:dext', function() {
getAttrs(['force', 'dext'], function(values) {
var force = parseInt(values.force) || 0,
dext = parseInt(values.dext) || 0;
setAttrs({ acrocarac: force + dext });
});
});
</script>
<input type="number" name="attr_acrorang" min="0" value="0" />
<input type="number" name="attr_acrototal" readonly >
<script type="text/worker">
on('ready change:acrocarac change:acrorang', function() {
getAttrs(['acrocarac', 'acrorang'], function(values) {
var acrocarac = parseInt(values.acrocarac) || 0,
acrorang = parseInt(values.acrorang) || 0;
setAttrs({ acrototal: acrorang === 0 ? 0 : acrocarac + acrorang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{acrototal} Acrobatie" name="acrotest"></button>
</td>
</tr>
<tr>
<td>
<!-- Art 1 -->
Art: <input type="text" name="attr_art1nom" class="sheet-input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_art1carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ art1carac: dext + sage });
});
});
</script>
<input type="number" name="attr_art1rang" min="0" value="0" />
<input type="number" name="attr_art1total" readonly >
<script type="text/worker">
on('ready change:art1carac change:art1rang', function() {
getAttrs(['art1carac', 'art1rang'], function(values) {
var art1carac = parseInt(values.art1carac) || 0,
art1rang = parseInt(values.art1rang) || 0;
setAttrs({ art1total: art1rang === 0 ? 0 : art1carac + art1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{art1total} Art: @{art1nom}" name="art1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- ART 2 -->
Art: <input type="text" name="attr_art2nom" class="input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_art2carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ art2carac: dext + sage });
});
});
</script>
<input type="number" name="attr_art2rang" min="0" value="0" />
<input type="number" name="attr_art2total" readonly >
<script type="text/worker">
on('ready change:art2carac change:art2rang', function() {
getAttrs(['art2carac', 'art2rang'], function(values) {
var art2carac = parseInt(values.art2carac) || 0,
art2rang = parseInt(values.art2rang) || 0;
setAttrs({ art2total: art2rang === 0 ? 0 : art2carac + art2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{art2total} Art: @{art2nom}" name="art2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- ART 3 -->
Art: <input type="text" name="attr_art3nom" class="input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_art3carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ art3carac: dext + sage });
});
});
</script>
<input type="number" name="attr_art3rang" min="0" value="0" />
<input type="number" name="attr_art3total" readonly >
<script type="text/worker">
on('ready change:art3carac change:art3rang', function() {
getAttrs(['art3carac', 'art3rang'], function(values) {
var art3carac = parseInt(values.art3carac) || 0,
art3rang = parseInt(values.art3rang) || 0;
setAttrs({ art3total: art3rang === 0 ? 0 : art3carac + art3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{art3total} Art: @{art3nom}" name="art3test" ></button>
</td>
</tr>
<tr>
<td>
Athlétisme (FOR, CON)
</td>
<td>
<input type="number" name="attr_athlcarac" readonly >
<script type="text/worker">
on('ready change:force change:cons', function() {
getAttrs(['force', 'cons'], function(values) {
var force = parseInt(values.force) || 0,
cons = parseInt(values.cons) || 0;
setAttrs({ athlcarac: force + cons });
});
});
</script>
<input type="number" name="attr_athlrang" min="0" value="0" />
<input type="number" name="attr_athltotal" readonly >
<script type="text/worker">
on('ready change:athlcarac change:athlrang', function() {
getAttrs(['athlcarac', 'athlrang'], function(values) {
var athlcarac = parseInt(values.athlcarac) || 0,
athlrang = parseInt(values.athlrang) || 0;
setAttrs({ athltotal: athlrang === 0 ? 0 : athlcarac + athlrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{athltotal} Athlétisme" name="athltest"></button>
</td>
</tr>
<tr>
<td>
Bluff (INT, CHA)
</td>
<td>
<input type="number" name="attr_bluffcarac" readonly >
<script type="text/worker">
on('ready change:intel change:chari', function() {
getAttrs(['intel', 'chari'], function(values) {
var intel = parseInt(values.intel) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ bluffcarac: intel + chari });
});
});
</script>
<input type="number" name="attr_bluffrang" min="0" value="0" />
<input type="number" name="attr_blufftotal" readonly >
<script type="text/worker">
on('ready change:bluffcarac change:bluffrang', function() {
getAttrs(['bluffcarac', 'bluffrang'], function(values) {
var bluffcarac = parseInt(values.bluffcarac) || 0,
bluffrang = parseInt(values.bluffrang) || 0;
setAttrs({ blufftotal: bluffrang === 0 ? 0 : bluffcarac + bluffrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{blufftotal} Bluff" name="blufftest"></button>
</td>
</tr>
<tr>
<td>
<!-- Connaissance 1 -->
Connaissance: <input type="text" name="attr_conn1nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_conn1carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ conn1carac: intel + sage });
});
});
</script>
<input type="number" name="attr_conn1rang" min="0" value="0" />
<input type="number" name="attr_conn1total" readonly >
<script type="text/worker">
on('ready change:conn1carac change:conn1rang', function() {
getAttrs(['conn1carac', 'conn1rang'], function(values) {
var conn1carac = parseInt(values.conn1carac) || 0,
conn1rang = parseInt(values.conn1rang) || 0;
setAttrs({ conn1total: conn1rang === 0 ? 0 : conn1carac + conn1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{conn1total} Connaissance: @{conn1nom}" name="conn1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Connaissance 2 -->
Connaissance: <input type="text" name="attr_conn2nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_conn2carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ conn2carac: intel + sage });
});
});
</script>
<input type="number" name="attr_conn2rang" min="0" value="0" />
<input type="number" name="attr_conn2total" readonly >
<script type="text/worker">
on('ready change:conn2carac change:conn2rang', function() {
getAttrs(['conn2carac', 'conn2rang'], function(values) {
var conn2carac = parseInt(values.conn2carac) || 0,
conn2rang = parseInt(values.conn2rang) || 0;
setAttrs({ conn2total: conn2rang === 0 ? 0 : conn2carac + conn2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{conn2total} Connaissance: @{conn2nom}" name="conn2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Connaissance 3 -->
Connaissance: <input type="text" name="attr_conn3nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_conn3carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ conn3carac: intel + sage });
});
});
</script>
<input type="number" name="attr_conn3rang" min="0" value="0" />
<input type="number" name="attr_conn3total" readonly >
<script type="text/worker">
on('ready change:conn3carac change:conn3rang', function() {
getAttrs(['conn3carac', 'conn3rang'], function(values) {
var conn3carac = parseInt(values.conn3carac) || 0,
conn3rang = parseInt(values.conn3rang) || 0;
setAttrs({ conn3total: conn3rang === 0 ? 0 : conn3carac + conn3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{conn3total} Connaissance: @{conn3nom}" name="conn3test" ></button>
</td>
</tr>
<tr>
<td>
Déguisement (DEX, CHA)
</td>
<td>
<input type="number" name="attr_deguicarac" readonly >
<script type="text/worker">
on('ready change:dext change:chari', function() {
getAttrs(['dext', 'chari'], function(values) {
var dext = parseInt(values.dext) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ deguicarac: dext + chari });
});
});
</script>
<input type="number" name="attr_deguirang" min="0" value="0" />
<input type="number" name="attr_deguitotal" readonly >
<script type="text/worker">
on('ready change:deguicarac change:deguirang', function() {
getAttrs(['deguicarac', 'deguirang'], function(values) {
var deguicarac = parseInt(values.deguicarac) || 0,
deguirang = parseInt(values.deguirang) || 0;
setAttrs({ deguitotal: deguirang === 0 ? 0 : deguicarac + deguirang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{deguitotal} Déguisement" name="deguitest"></button>
</td>
</tr>
<tr>
<td>
Diplomatie (INT, CHA)
</td>
<td>
<input type="number" name="attr_diplocarac" readonly >
<script type="text/worker">
on('ready change:intel change:chari', function() {
getAttrs(['intel', 'chari'], function(values) {
var intel = parseInt(values.intel) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ diplocarac: intel + chari });
});
});
</script>
<input type="number" name="attr_diplorang" min="0" value="0" />
<input type="number" name="attr_diplototal" readonly >
<script type="text/worker">
on('ready change:diplocarac change:diplorang', function() {
getAttrs(['diplocarac', 'diplorang'], function(values) {
var diplocarac = parseInt(values.diplocarac) || 0,
diplorang = parseInt(values.diplorang) || 0;
setAttrs({ diplototal: diplorang === 0 ? 0 : diplocarac + diplorang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{diplototal} Diplomatie" name="diplotest"></button>
</td>
</tr>
<tr>
<td>
Discrétion (DEX, INT)
</td>
<td>
<input type="number" name="attr_discrcarac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ discrcarac: dext + intel });
});
});
</script>
<input type="number" name="attr_discrrang" min="0" value="0" />
<input type="number" name="attr_discrtotal" readonly >
<script type="text/worker">
on('ready change:discrcarac change:discrrang', function() {
getAttrs(['discrcarac', 'discrrang'], function(values) {
var discrcarac = parseInt(values.discrcarac) || 0,
discrrang = parseInt(values.discrrang) || 0;
setAttrs({ discrtotal: discrrang === 0 ? 0 : discrcarac + discrrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{discrtotal} Discrétion" name="discrtest"></button>
</td>
</tr>
<tr>
<td>
Escamotage (DEX, INT)
</td>
<td>
<input type="number" name="attr_escamcarac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ escamcarac: dext + intel });
});
});
</script>
<input type="number" name="attr_escamrang" min="0" value="0" />
<input type="number" name="attr_escamtotal" readonly >
<script type="text/worker">
on('ready change:escamcarac change:escamrang', function() {
getAttrs(['escamcarac', 'escamrang'], function(values) {
var escamcarac = parseInt(values.escamcarac) || 0,
escamrang = parseInt(values.escamrang) || 0;
setAttrs({ escamtotal: escamrang === 0 ? 0 : escamcarac + escamrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{escamtotal} Escamotage" name="escamtest"></button>
</td>
</tr>
<tr>
<td>
Esquive (DEX, INT)
</td>
<td>
<input type="number" name="attr_esquicarac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ esquicarac: dext + intel });
});
});
</script>
<input type="number" name="attr_esquirang" min="0" value="0" />
<input type="number" name="attr_esquitotal" readonly >
<script type="text/worker">
on('ready change:esquicarac change:esquirang', function() {
getAttrs(['esquicarac', 'esquirang'], function(values) {
var esquicarac = parseInt(values.esquicarac) || 0,
esquirang = parseInt(values.esquirang) || 0;
setAttrs({ esquitotal: esquirang === 0 ? 0 : esquicarac + esquirang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{esquitotal} Esquive" name="esquitest"></button>
</td>
</tr>
<tr>
<td>
Fouille (INT, SAG)
</td>
<td>
<input type="number" name="attr_fouilcarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ fouilcarac: intel + sage });
});
});
</script>
<input type="number" name="attr_fouilrang" min="0" value="0" />
<input type="number" name="attr_fouiltotal" readonly >
<script type="text/worker">
on('ready change:fouilcarac change:fouilrang', function() {
getAttrs(['fouilcarac', 'fouilrang'], function(values) {
var fouilcarac = parseInt(values.fouilcarac) || 0,
fouilrang = parseInt(values.fouilrang) || 0;
setAttrs({ fouiltotal: fouilrang === 0 ? 0 : fouilcarac + fouilrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{fouiltotal} Fouille" name="fouiltest"></button>
</td>
</tr>
<tr>
<td>
Idée (INT, SAG)
</td>
<td>
<input type="number" name="attr_ideecarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ ideecarac: intel + sage });
});
});
</script>
<input type="number" name="attr_ideerang" min="0" value="0" />
<input type="number" name="attr_ideetotal" readonly >
<script type="text/worker">
on('ready change:ideecarac change:ideerang', function() {
getAttrs(['ideecarac', 'ideerang'], function(values) {
var ideecarac = parseInt(values.ideecarac) || 0,
ideerang = parseInt(values.ideerang) || 0;
setAttrs({ ideetotal: ideerang === 0 ? 0 : ideecarac + ideerang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{ideetotal} Idée" name="ideetest"></button>
</td>
</tr>
<tr>
<td>
<!-- Influence 1 -->
Influence: <input type="text" name="attr_influ1nom" class="input3"> (INT, CHA)
</td>
<td>
<input type="number" name="attr_influ1carac" readonly >
<script type="text/worker">
on('ready change:intel change:chari', function() {
getAttrs(['intel', 'chari'], function(values) {
var intel = parseInt(values.intel) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ influ1carac: intel + chari });
});
});
</script>
<input type="number" name="attr_influ1rang" min="0" value="0" />
<input type="number" name="attr_influ1total" readonly >
<script type="text/worker">
on('ready change:influ1carac change:influ1rang', function() {
getAttrs(['influ1carac', 'influ1rang'], function(values) {
var influ1carac = parseInt(values.influ1carac) || 0,
influ1rang = parseInt(values.influ1rang) || 0;
setAttrs({ influ1total: influ1rang === 0 ? 0 : influ1carac + influ1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{influ1total} Influence: @{influ1nom}" name="influ1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Influence 2 -->
Influence: <input type="text" name="attr_influ2nom" class="input3"> (INT, CHA)
</td>
<td>
<input type="number" name="attr_influ2carac" readonly >
<script type="text/worker">
on('ready change:intel change:chari', function() {
getAttrs(['intel', 'chari'], function(values) {
var intel = parseInt(values.intel) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ influ2carac: intel + chari });
});
});
</script>
<input type="number" name="attr_influ2rang" min="0" value="0" />
<input type="number" name="attr_influ2total" readonly >
<script type="text/worker">
on('ready change:influ2carac change:influ2rang', function() {
getAttrs(['influ2carac', 'influ2rang'], function(values) {
var influ2carac = parseInt(values.influ2carac) || 0,
influ2rang = parseInt(values.influ2rang) || 0;
setAttrs({ influ2total: influ2rang === 0 ? 0 : influ2carac + influ2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{influ2total} Influence: @{influ2nom}" name="influ2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Influence 3 -->
Influence: <input type="text" name="attr_influ3nom" class="input3"> (INT, CHA)
</td>
<td>
<input type="number" name="attr_influ3carac" readonly >
<script type="text/worker">
on('ready change:intel change:chari', function() {
getAttrs(['intel', 'chari'], function(values) {
var intel = parseInt(values.intel) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ influ3carac: intel + chari });
});
});
</script>
<input type="number" name="attr_influ3rang" min="0" value="0" />
<input type="number" name="attr_influ3total" readonly >
<script type="text/worker">
on('ready change:influ3carac change:influ3rang', function() {
getAttrs(['influ3carac', 'influ3rang'], function(values) {
var influ3carac = parseInt(values.influ3carac) || 0,
influ3rang = parseInt(values.influ3rang) || 0;
setAttrs({ influ3total: influ3rang === 0 ? 0 : influ3carac + influ3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{influ3total} Influence: @{influ3nom}" name="influ3test" ></button>
</td>
</tr>
<tr>
<td>
Intimidation (FOR, CHA)
</td>
<td>
<input type="number" name="attr_intimcarac" readonly >
<script type="text/worker">
on('ready change:force change:chari', function() {
getAttrs(['force', 'chari'], function(values) {
var force = parseInt(values.force) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ intimcarac: force + chari });
});
});
</script>
<input type="number" name="attr_intimrang" min="0" value="0" />
<input type="number" name="attr_intimtotal" readonly >
<script type="text/worker">
on('ready change:intimcarac change:intimrang', function() {
getAttrs(['intimcarac', 'intimrang'], function(values) {
var intimcarac = parseInt(values.intimcarac) || 0,
intimrang = parseInt(values.intimrang) || 0;
setAttrs({ intimtotal: intimrang === 0 ? 0 : intimcarac + intimrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{intimtotal} Intimidation" name="intimtest"></button>
</td>
</tr>
<tr>
<td>
<!-- Langue 1 -->
Langue: <input type="text" name="attr_lang1nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_lang1carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ lang1carac: intel + sage });
});
});
</script>
<input type="number" name="attr_lang1rang" min="0" value="0" />
<input type="number" name="attr_lang1total" readonly >
<script type="text/worker">
on('ready change:lang1carac change:lang1rang', function() {
getAttrs(['lang1carac', 'lang1rang'], function(values) {
var lang1carac = parseInt(values.lang1carac) || 0,
lang1rang = parseInt(values.lang1rang) || 0;
setAttrs({ lang1total: lang1rang === 0 ? 0 : lang1carac + lang1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{lang1total} Langue: @{lang1nom}" name="lang1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Langue 2 -->
Langue: <input type="text" name="attr_lang2nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_lang2carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ lang2carac: intel + sage });
});
});
</script>
<input type="number" name="attr_lang2rang" min="0" value="0" />
<input type="number" name="attr_lang2total" readonly >
<script type="text/worker">
on('ready change:lang2carac change:lang2rang', function() {
getAttrs(['lang2carac', 'lang2rang'], function(values) {
var lang2carac = parseInt(values.lang2carac) || 0,
lang2rang = parseInt(values.lang2rang) || 0;
setAttrs({ lang2total: lang2rang === 0 ? 0 : lang2carac + lang2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{lang2total} Langue: @{lang2nom}" name="lang2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Langue 3 -->
Langue: <input type="text" name="attr_lang3nom" class="input3"> (INT, SAG)
</td>
<td>
<input type="number" name="attr_lang3carac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ lang3carac: intel + sage });
});
});
</script>
<input type="number" name="attr_lang3rang" min="0" value="0" />
<input type="number" name="attr_lang3total" readonly >
<script type="text/worker">
on('ready change:lang3carac change:lang3rang', function() {
getAttrs(['lang3carac', 'lang3rang'], function(values) {
var lang3carac = parseInt(values.lang3carac) || 0,
lang3rang = parseInt(values.lang3rang) || 0;
setAttrs({ lang3total: lang3rang === 0 ? 0 : lang3carac + lang3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{lang3total} Langue: @{lang3nom}" name="lang3test" ></button>
</td>
</tr>
<tr>
<td>
Lire et écrire (INT, SAG)
</td>
<td>
<input type="number" name="attr_lirecarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ lirecarac: intel + sage });
});
});
</script>
<input type="number" name="attr_lirerang" min="0" value="0" />
<input type="number" name="attr_liretotal" readonly >
<script type="text/worker">
on('ready change:lirecarac change:lirerang', function() {
getAttrs(['lirecarac', 'lirerang'], function(values) {
var lirecarac = parseInt(values.lirecarac) || 0,
lirerang = parseInt(values.lirerang) || 0;
setAttrs({ liretotal: lirerang === 0 ? 0 : lirecarac + lirerang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{liretotal} Lire et écrire" name="liretest"></button>
</td>
</tr>
<tr>
<td>
Mêlée (FOR, DEX)
</td>
<td>
<input type="number" name="attr_meleecarac" readonly >
<script type="text/worker">
on('ready change:force change:dext', function() {
getAttrs(['force', 'dext'], function(values) {
var force = parseInt(values.force) || 0,
dext = parseInt(values.dext) || 0;
setAttrs({ meleecarac: force + dext });
});
});
</script>
<input type="number" name="attr_meleerang" min="0" value="0" />
<input type="number" name="attr_meleetotal" readonly >
<script type="text/worker">
on('ready change:meleecarac change:meleerang', function() {
getAttrs(['meleecarac', 'meleerang'], function(values) {
var meleecarac = parseInt(values.meleecarac) || 0,
meleerang = parseInt(values.meleerang) || 0;
setAttrs({ meleetotal: meleerang === 0 ? 0 : meleecarac + meleerang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{meleetotal} Mêlée" name="meleetest"></button>
</td>
</tr>
<tr>
<td>
Muscles (FOR, CON)
</td>
<td>
<input type="number" name="attr_musclcarac" readonly >
<script type="text/worker">
on('ready change:force change:cons', function() {
getAttrs(['force', 'cons'], function(values) {
var force = parseInt(values.force) || 0,
cons = parseInt(values.cons) || 0;
setAttrs({ musclcarac: force + cons });
});
});
</script>
<input type="number" name="attr_musclrang" min="0" value="0" />
<input type="number" name="attr_muscltotal" readonly >
<script type="text/worker">
on('ready change:musclcarac change:musclrang', function() {
getAttrs(['musclcarac', 'musclrang'], function(values) {
var musclcarac = parseInt(values.musclcarac) || 0,
musclrang = parseInt(values.musclrang) || 0;
setAttrs({ muscltotal: musclrang === 0 ? 0 : musclcarac + musclrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{muscltotal} Muscles" name="muscltest"></button>
</td>
</tr>
<tr>
<td>
Perception (INT, SAG)
</td>
<td>
<input type="number" name="attr_perccarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ perccarac: intel + sage });
});
});
</script>
<input type="number" name="attr_percrang" min="0" value="0" />
<input type="number" name="attr_perctotal" readonly >
<script type="text/worker">
on('ready change:perccarac change:percrang', function() {
getAttrs(['perccarac', 'percrang'], function(values) {
var perccarac = parseInt(values.perccarac) || 0,
percrang = parseInt(values.percrang) || 0;
setAttrs({ perctotal: percrang === 0 ? 0 : perccarac + percrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{perctotal} Perception" name="perctest"></button>
</td>
</tr>
<tr>
<td>
<!-- Pilotage 1 -->
Pilotage: <input type="text" name="attr_pilot1nom" class="input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_pilot1carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ pilot1carac: dext + sage });
});
});
</script>
<input type="number" name="attr_pilot1rang" min="0" value="0" />
<input type="number" name="attr_pilot1total" readonly >
<script type="text/worker">
on('ready change:pilot1carac change:pilot1rang', function() {
getAttrs(['pilot1carac', 'pilot1rang'], function(values) {
var pilot1carac = parseInt(values.pilot1carac) || 0,
pilot1rang = parseInt(values.pilot1rang) || 0;
setAttrs({ pilot1total: pilot1rang === 0 ? 0 : pilot1carac + pilot1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{pilot1total} Pilotage: @{pilot1nom}" name="pilot1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Pilotage 2 -->
Pilotage: <input type="text" name="attr_pilot2nom" class="input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_pilot2carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ pilot2carac: dext + sage });
});
});
</script>
<input type="number" name="attr_pilot2rang" min="0" value="0" />
<input type="number" name="attr_pilot2total" readonly >
<script type="text/worker">
on('ready change:pilot2carac change:pilot2rang', function() {
getAttrs(['pilot2carac', 'pilot2rang'], function(values) {
var pilot2carac = parseInt(values.pilot2carac) || 0,
pilot2rang = parseInt(values.pilot2rang) || 0;
setAttrs({ pilot2total: pilot2rang === 0 ? 0 : pilot2carac + pilot2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{pilot2total} Pilotage: @{pilot2nom}" name="pilot2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Pilotage 3 -->
Pilotage: <input type="text" name="attr_pilot3nom" class="input3"> (DEX, SAG)
</td>
<td>
<input type="number" name="attr_pilot3carac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ pilot3carac: dext + sage });
});
});
</script>
<input type="number" name="attr_pilot3rang" min="0" value="0" />
<input type="number" name="attr_pilot3total" readonly >
<script type="text/worker">
on('ready change:pilot3carac change:pilot3rang', function() {
getAttrs(['pilot3carac', 'pilot3rang'], function(values) {
var pilot3carac = parseInt(values.pilot3carac) || 0,
pilot3rang = parseInt(values.pilot3rang) || 0;
setAttrs({ pilot3total: pilot3rang === 0 ? 0 : pilot3carac + pilot3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{pilot3total} Pilotage: @{pilot3nom}" name="pilot3test" ></button>
</td>
</tr>
<tr>
<td>
Psychologie (INT, SAG)
</td>
<td>
<input type="number" name="attr_psychcarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ psychcarac: intel + sage });
});
});
</script>
<input type="number" name="attr_psychrang" min="0" value="0" />
<input type="number" name="attr_psychtotal" readonly >
<script type="text/worker">
on('ready change:psychcarac change:psychrang', function() {
getAttrs(['psychcarac', 'psychrang'], function(values) {
var psychcarac = parseInt(values.psychcarac) || 0,
psychrang = parseInt(values.psychrang) || 0;
setAttrs({ psychtotal: psychrang === 0 ? 0 : psychcarac + psychrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{psychtotal} Psychologie" name="psychtest"></button>
</td>
</tr>
<tr>
<td>
Renseignements (SAG, CHA)
</td>
<td>
<input type="number" name="attr_renscarac" readonly >
<script type="text/worker">
on('ready change:sage change:chari', function() {
getAttrs(['sage', 'chari'], function(values) {
var sage = parseInt(values.sage) || 0,
chari = parseInt(values.chari) || 0;
setAttrs({ renscarac: sage + chari });
});
});
</script>
<input type="number" name="attr_rensrang" min="0" value="0" />
<input type="number" name="attr_renstotal" readonly >
<script type="text/worker">
on('ready change:renscarac change:rensrang', function() {
getAttrs(['renscarac', 'rensrang'], function(values) {
var renscarac = parseInt(values.renscarac) || 0,
rensrang = parseInt(values.rensrang) || 0;
setAttrs({ renstotal: rensrang === 0 ? 0 : renscarac + rensrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{renstotal} Renseignements" name="renstest"></button>
</td>
</tr>
<tr>
<td>
Réflexes (DEX, SAG)
</td>
<td>
<input type="number" name="attr_reflcarac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ reflcarac: dext + sage });
});
});
</script>
<input type="number" name="attr_reflrang" min="0" value="0" />
<input type="number" name="attr_refltotal" readonly >
<script type="text/worker">
on('ready change:reflcarac change:reflrang', function() {
getAttrs(['reflcarac', 'reflrang'], function(values) {
var reflcarac = parseInt(values.reflcarac) || 0,
reflrang = parseInt(values.reflrang) || 0;
setAttrs({ refltotal: reflrang === 0 ? 0 : reflcarac + reflrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{refltotal} Réflexes" name="refltest"></button>
</td>
</tr>
<tr>
<td>
Résistance (CON, SAG)
</td>
<td>
<input type="number" name="attr_resiscarac" readonly >
<script type="text/worker">
on('ready change:cons change:sage', function() {
getAttrs(['cons', 'sage'], function(values) {
var cons = parseInt(values.cons) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ resiscarac: cons + sage });
});
});
</script>
<input type="number" name="attr_resisrang" min="0" value="0" />
<input type="number" name="attr_resistotal" readonly >
<script type="text/worker">
on('ready change:resiscarac change:resisrang', function() {
getAttrs(['resiscarac', 'resisrang'], function(values) {
var resiscarac = parseInt(values.resiscarac) || 0,
resisrang = parseInt(values.resisrang) || 0;
setAttrs({ resistotal: resisrang === 0 ? 0 : resiscarac + resisrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{resistotal} Résistance" name="resistest"></button>
</td>
</tr>
<tr>
<td>
Soins (DEX, INT)
</td>
<td>
<input type="number" name="attr_soinscarac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ soinscarac: dext + intel });
});
});
</script>
<input type="number" name="attr_soinsrang" min="0" value="0" />
<input type="number" name="attr_soinstotal" readonly >
<script type="text/worker">
on('ready change:soinscarac change:soinsrang', function() {
getAttrs(['soinscarac', 'soinsrang'], function(values) {
var soinscarac = parseInt(values.soinscarac) || 0,
soinsrang = parseInt(values.soinsrang) || 0;
setAttrs({ soinstotal: soinsrang === 0 ? 0 : soinscarac + soinsrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{soinstotal} Soins" name="soinstest"></button>
</td>
</tr>
<tr>
<td>
Survie (CON, SAG)
</td>
<td>
<input type="number" name="attr_survcarac" readonly >
<script type="text/worker">
on('ready change:cons change:sage', function() {
getAttrs(['cons', 'sage'], function(values) {
var cons = parseInt(values.cons) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ survcarac: cons + sage });
});
});
</script>
<input type="number" name="attr_survrang" min="0" value="0" />
<input type="number" name="attr_survtotal" readonly >
<script type="text/worker">
on('ready change:survcarac change:survrang', function() {
getAttrs(['survcarac', 'survrang'], function(values) {
var survcarac = parseInt(values.survcarac) || 0,
survrang = parseInt(values.survrang) || 0;
setAttrs({ survtotal: survrang === 0 ? 0 : survcarac + survrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{survtotal} Survie" name="survtest"></button>
</td>
</tr>
<tr>
<td>
<!-- Technique 1 -->
Technique: <input type="text" name="attr_tech1nom" class="input3"> (DEX, INT)
</td>
<td>
<input type="number" name="attr_tech1carac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ tech1carac: dext + intel });
});
});
</script>
<input type="number" name="attr_tech1rang" min="0" value="0" />
<input type="number" name="attr_tech1total" readonly >
<script type="text/worker">
on('ready change:tech1carac change:tech1rang', function() {
getAttrs(['tech1carac', 'tech1rang'], function(values) {
var tech1carac = parseInt(values.tech1carac) || 0,
tech1rang = parseInt(values.tech1rang) || 0;
setAttrs({ tech1total: tech1rang === 0 ? 0 : tech1carac + tech1rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{tech1total} Technique: @{tech1nom}" name="tech1test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Technique 2 -->
Technique: <input type="text" name="attr_tech2nom" class="input3"> (DEX, INT)
</td>
<td>
<input type="number" name="attr_tech2carac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ tech2carac: dext + intel });
});
});
</script>
<input type="number" name="attr_tech2rang" min="0" value="0" />
<input type="number" name="attr_tech2total" readonly >
<script type="text/worker">
on('ready change:tech2carac change:tech2rang', function() {
getAttrs(['tech2carac', 'tech2rang'], function(values) {
var tech2carac = parseInt(values.tech2carac) || 0,
tech2rang = parseInt(values.tech2rang) || 0;
setAttrs({ tech2total: tech2rang === 0 ? 0 : tech2carac + tech2rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{tech2total} Technique: @{tech2nom}" name="tech2test" ></button>
</td>
</tr>
<tr>
<td>
<!-- Technique 3 -->
Technique: <input type="text" name="attr_tech3nom" class="input3"> (DEX, INT)
</td>
<td>
<input type="number" name="attr_tech3carac" readonly >
<script type="text/worker">
on('ready change:dext change:intel', function() {
getAttrs(['dext', 'intel'], function(values) {
var dext = parseInt(values.dext) || 0,
intel = parseInt(values.intel) || 0;
setAttrs({ tech3carac: dext + intel });
});
});
</script>
<input type="number" name="attr_tech3rang" min="0" value="0" />
<input type="number" name="attr_tech3total" readonly >
<script type="text/worker">
on('ready change:tech3carac change:tech3rang', function() {
getAttrs(['tech3carac', 'tech3rang'], function(values) {
var tech3carac = parseInt(values.tech3carac) || 0,
tech3rang = parseInt(values.tech3rang) || 0;
setAttrs({ tech3total: tech3rang === 0 ? 0 : tech3carac + tech3rang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{tech3total} Technique: @{tech3nom}" name="tech3test" ></button>
</td>
</tr>
<tr>
<td>
Tir (DEX, SAG)
</td>
<td>
<input type="number" name="attr_tircarac" readonly >
<script type="text/worker">
on('ready change:dext change:sage', function() {
getAttrs(['dext', 'sage'], function(values) {
var dext = parseInt(values.dext) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ tircarac: dext + sage });
});
});
</script>
<input type="number" name="attr_tirrang" min="0" value="0" />
<input type="number" name="attr_tirtotal" readonly >
<script type="text/worker">
on('ready change:tircarac change:tirrang', function() {
getAttrs(['tircarac', 'tirrang'], function(values) {
var tircarac = parseInt(values.tircarac) || 0,
tirrang = parseInt(values.tirrang) || 0;
setAttrs({ tirtotal: tirrang === 0 ? 0 : tircarac + tirrang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{tirtotal} Tir" name="tirtest"></button>
</td>
</tr>
<tr>
<td>
Volonté (INT, SAG)
</td>
<td>
<input type="number" name="attr_volocarac" readonly >
<script type="text/worker">
on('ready change:intel change:sage', function() {
getAttrs(['intel', 'sage'], function(values) {
var intel = parseInt(values.intel) || 0,
sage = parseInt(values.sage) || 0;
setAttrs({ volocarac: intel + sage });
});
});
</script>
<input type="number" name="attr_volorang" min="0" value="0" />
<input type="number" name="attr_volototal" readonly >
<script type="text/worker">
on('ready change:volocarac change:volorang', function() {
getAttrs(['volocarac', 'volorang'], function(values) {
var volocarac = parseInt(values.volocarac) || 0,
volorang = parseInt(values.volorang) || 0;
setAttrs({ volototal: volorang === 0 ? 0 : volocarac + volorang });
});
});
</script>
<button type="roll" value="/roll 1d20 + @{volototal} Volonté" name="volotest"></button>
</td>
</tr>
</table>
<br>
</div> <!-- END Section 3 Competences-->
<div class="sheet-footer">
<!-- black bar with possibly author name on it -->
</div>
</div> <!-- END Outline -->