Files
2024-06-03 13:15:14 -04:00

331 lines
17 KiB
HTML

<div class="main">
<!-- EN-TÊTE : logo, nom du personnage, couverture, etc. -->
<div class="header 3colrow">
<div class="col">
<div><img src="https://raw.githubusercontent.com/DrAltay/roll20-character-sheets/insmv-3eme-ed/INS-MV_3E/insmv-300x206.jpg" /></div>
<div style="text-align: center;">
<h2>INS/MV - 3ème édition</h2>
<br />
<button type="roll" class="sheet-btRoll" title="Jet" name="jet"
value="&{template:insmv} {{name=@{name}}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}}">
Lancer 3d6
</button>
</div>
</div>
<div class="col">
<label>Nom humain :</label><input type="text" name="attr_character_name" placeholder="Nom de mon personnage" />
<label>Vrai nom :</label><input type="text" name="attr_true_name" placeholder="" />
<label>Supérieur :</label><input type="text" name="attr_superieur" placeholder="" />
<label>Grade :</label><input type="text" name="attr_grade" placeholder="0" />
<label>Nature :</label><input type="text" name="attr_nature" placeholder="Humain" />
</div>
<div class="col">
<label>Couverture :</label><textarea type="text" name="attr_couverture" rows=10></textarea>
</div>
</div>
<!-- FIN DE L'EN-TÊTE -->
<hr/>
<!-- ATTRIBUTS -->
<div class="block attributes">
<h2>Caractéristiques</h2>
<div class="flex-col attributes-group">
<div><label>Force</label><input type="number" value=1 min="1" max="6" name='attr_force' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet de Force" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{force}}} {{subtags=Force}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div><label>Volonté</label><input type="number" value=1 min="1" max="6" name='attr_volonte' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet de Volonté" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{volonte}}} {{subtags=Volonté}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div><label>Perception</label><input type="number" value=1 min="1" max="6" name='attr_perception' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet de Perception" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{perception}}} {{subtags=Perception}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div><label>Agilité</label><input type="number" value=1 min="1" max="6" name='attr_agilite' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet d'Agilité" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{agilite}}} {{subtags=Agilité}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div><label>Précision</label><input type="number" value=1 min="1" max="6" min="1" max="6" name='attr_precision' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet de Précision" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{precision}}} {{subtags=Précision}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div><label>Apparence</label><input type="number" value=1 min="1" max="6" name='attr_apparence' class='sheet-short'>
<button type="roll" class="sheet-btRoll" title="Jet d'Apparence" name="jet"
value="&{template:insmv} {{name=@{name}}} {{level=@{apparence}}} {{subtags=Apparence}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div class="small-separator"></div>
<div class="pp"><label>Blessures</label><input type="number" value=0 min="0" max="@{blessures_max}" name='attr_blessures' class='sheet-short'><span class="pp_divider">/</span><input type="number" name="attr_blessures_max" value="@{force}" disabled="true" class="sheet-short"/></div>
<div class="pp"><label>Points de pouvoir</label><input type="number" value=0 min="0" max="@{pp_max}" name='attr_pp' class='sheet-short'><span class="pp_divider">/</span><input type="number" value="@{volonte}+4" min="0" name="attr_pp_max" placeholder="@{volonte}+4" class='sheet-short'></div>
</div>
<div class="hidden"><input type="number" name='attr_force_surnaturelle' disabled hidden /></div>
</div>
<!-- FIN DES ATTRIBUTS -->
<!-- TALENTS -->
<div class="block skills">
<h2>Talents</h2>
<!-- Les talents sont répartis sur deux colonnes pour une meilleure lisibilité. -->
<div class="flex-2col skills-group">
<div>
<fieldset class="repeating_talents1">
<div class="flex-col skill">
<div><select name="attr_dtype" class="dtype">
<option value="force">Force</option>
<option value="volonte">Volonté</option>
<option value="perception">Perception</option>
<option value="agilite">Agilité</option>
<option value="precision">Précision</option>
<option value="apparence">Apparence</option>
</select></div>
<div><input type="text" name="attr_skillname1" placeholder="Nouveau talent" autofocus /></div>
<div class="center"><input type="number" value=1 min="1" max="6" name="attr_skilllevel1" /></div>
<div><button type="roll" class="sheet-btRoll" title="Jet" name="jet"
value="&{template:insmv} {{name=@{skillname1}}} {{level=@{skilllevel1}}} {{subtags=Talent}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
</fieldset>
</div>
<div>
<fieldset class="repeating_talents2">
<div class="flex-col skill">
<div><select name="attr_dtype" class="dtype">
<option value="force">Force</option>
<option value="volonte">Volonté</option>
<option value="perception">Perception</option>
<option value="agilite">Agilité</option>
<option value="precision">Précision</option>
<option value="apparence">Apparence</option>
</select></div>
<div><input type="text" name="attr_skillname2" placeholder="Nouveau talent" autofocus /></div>
<div class="center"><input type="number" value=1 min="1" max="6" name="attr_skilllevel2" /></div>
<div><button type="roll" class="sheet-btRoll" title="Jet" name="jet"
value="&{template:insmv} {{name=@{skillname2}}} {{level=@{skilllevel2}}} {{subtags=Talent}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
</fieldset>
</div>
</div>
</div>
<!-- FIN DES TALENTS -->
<!-- POUVOIRS (inclut les pouvoirs de grade et les limitations) -->
<div class="block powers">
<h2>Pouvoirs</h2>
<div class="powers-group">
<fieldset class="repeating_powers">
<div class="flex-col power">
<div class="shrinkable"><!-- Type -->
<select name="attr_type">
<option value="mental">Mental</option>
<option value="physique">Physique</option>
</select>
</div>
<div class="half"><!-- Nom -->
<input type="text" name="attr_powername" placeholder="Nom du pouvoir" autofocus />
</div>
<div><!-- Niveau -->
<span style="padding-left: 5px;"><strong>Niv. : </strong></span><input type="number" value=1 min="1" max="6" name="attr_powerlevel" placeholder="niveau" />
</div>
<div><!-- Coût -->
<input type="number" min="0" placeholder="coût" value="0" name="attr_powercost" class="pp_cost" /><strong>PP</strong>
</div>
<div class="shrinkable"><button type="roll" class="sheet-btRoll" title="Jet" name="jet"
value="&{template:insmv} {{accuracy=[[@{poweraccuracy}]]}} {{damage=@{powerdamage}}} {{name=@{powername}}} {{level=@{powerlevel}}} {{subtags=Pouvoir @{type}}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
<div class="shrinkable"><button type="action" name="act_activate">⚡ Activer</button></div>
<div class="shrinkable"><!-- Caractéristique -->
<label>Caractéristique :</label><select name="attr_powerattack" class="dtype">
<option value="force">Force</option>
<option value="volonte">Volonté</option>
<option value="perception">Perception</option>
<option value="agilite">Agilité</option>
<option value="precision">Précision</option>
<option value="apparence">Apparence</option>
</select>
</div>
<div class="shrinkable"><!-- Défense -->
<label>Défense :</label><select name="attr_powerdefense" class="dtype">
<option value="">Aucune</option>
<option value="esquive">Esquive</option>
<option value="parade">Parade</option>
<option value="force">Force</option>
<option value="volonte">Volonté</option>
<option value="perception">Perception</option>
<option value="agilite">Agilité</option>
<option value="precision">Précision</option>
<option value="apparence">Apparence</option>
</select>
</div>
<div class="center"><!-- Portée -->
<label>Portée :</label><input name="attr_powerrange" placeholder="Vue" />
</div>
<div class="center">
<label>PU :</label><input type="number" name="attr_powerdamage" value="0" placeholder="PU" />
</div>
<div class="center">
<label>PR :</label><input type="number" name="attr_poweraccuracy" value="0" placeholder="PR" />
</div>
<div class="center"><!-- Auto -->
<label>Auto :</label><input type="checkbox" name="attr_powerauto" />
</div>
<div class="center"><!-- Permanent -->
<label>Permanent :</label><input type="checkbox" name="attr_powerpermanent" />
</div>
<div class="center"><!-- Unique -->
<label>Unique :</label><input type="checkbox" name="attr_powerunique"/>
</div>
<div class="large">
<textarea rows="1" name="attr_powerdescription" class="description" placeholder="Description" /></textarea>
</div>
</div>
</fieldset>
<h3>Limitations</h3>
<fieldset class="repeating_limitations">
<input name="attr_limitation" type="text" />
</fieldset>
<h3>Pouvoirs de grade</h3>
<fieldset class="repeating_pouvoirsgrade">
<input name="attr_gradepower" type="text" />
</fieldset>
</div>
</div>
<!-- FIN DES POUVOIRS -->
<!-- ÉQUIPEMENT (armes, armures, matériel divers) -->
<div class="block inventory">
<h2>Équipement</h2>
<div class="inventory-group">
<div class="flex-2col">
<div class="weapons">
<h3>Armes</h3>
<div class="headings flex-col">
<div class="half">Description</div>
<div class="">Niv.</div>
<div class="">PU</div>
<div class="">PR</div>
<div class=""></div>
</div>
<fieldset class="repeating_armes">
<div class="flex-col weapon">
<div class="half"><input type="text" name="attr_weaponname" placeholder="Arme" /></div>
<div class=""><input type="number" min="0" max="6" name="attr_weaponlevel" placeholder="Niv" /></div>
<div class=""><input type="number" name="attr_weapondamage" placeholder="PU" value="0" /></div>
<div class=""><input type="number" name="attr_weaponaccuracy" placeholder="PR" value="0" /></div>
<div class=""><button type="roll" class="sheet-btRoll" title="Jet" name="act_rollwiththreshold"
value="&{template:insmv} {{force=[[@{force_surnaturelle}]]}} {{accuracy=[[@{weaponaccuracy}]]}} {{damage=@{weapondamage}}} {{name=@{weaponname}}} {{level=@{weaponlevel}}} {{subtags=}} {{jet1=[[1d6cs1cf6]]}} {{jet2=[[1d6cs1cf6]]}} {{jet3=[[1d6cs1cf6]]}} {{difficulty=?{Difficulté|Moyen,moyenne|Facile,facile|Difficile,difficile|Très difficile,très difficile}}} {{offset=[[?{De combien de colonnes voulez-vous décaler ?|0}]]}}" />
</div>
</fieldset>
</div>
<div>
<h3>Armures</h3>
<fieldset class="repeating_armures">
<input name="attr_armor" type="text" />
</fieldset>
</div>
</div>
<h3>Matériel</h3>
<textarea rows=5></textarea>
</div>
</div>
<!-- FIN DES ÉQUIPEMENTS -->
</div>
<!-- ROLL TEMPLATE -->
<rolltemplate class="sheet-rolltemplate-insmv">
<div class="container">
<div><h1>{{name}}</h1></div>
<div><span class="subheader">{{subtags}}{{#level}} (niv. {{level}}){{/level}}</span></div>
{{#difficulty}}<div><span class="subheader">Difficulté {{difficulty}}</span></div>{{/difficulty}}
<div class="arrow-container"><div class="arrow-right"></div></div>
<div class="rowcolor"><span class="tcat">Dés : </span>{{jet1}} | {{jet2}} | <span class="units">{{jet3}}</span></div>
<div class="rowcolor"><span class="tcat">RU : </span> {{jet3}} </div>
{{#^rollBetween() offset 0 0}}
<div class="unit-modifier rowcolor"><span class="tcat">+ décalage de </span>{{offset}}</div>
{{/^rollBetween() offset 0 0}}
{{#damage}}
<div class="unit-modifier rowcolor"><span class="tcat">+ puissance : </span>{{damage}}</div>
{{/damage}}
{{#^rollBetween() force 0 0}}
<div class="unit-modifier rowcolor"><span class="tcat">+ force surnaturelle : </span>{{force}}</div>
{{/^rollBetween() force 0 0}}
{{#accuracy}}{{#^rollBetween() accuracy 0 0}}
<div class="rowcolor">
<span class="tcat">Bonus de précision : </span>{{accuracy}}
</div>
{{/^rollBetween() accuracy 0 0}}{{/accuracy}}
{{#rollWasCrit() jet1}}{{#rollWasCrit() jet2}}{{#rollWasCrit() jet3}}
<div class="crit-angel">111</div>
{{/rollWasCrit() jet3}}{{/rollWasCrit() jet2}}{{/rollWasCrit() jet1}}
{{#rollWasFumble() jet1}}{{#rollWasFumble() jet2}}{{#rollWasFumble() jet3}}
<div class="crit-demon">666</div>
{{/rollWasFumble() jet3}}{{/rollWasFumble() jet2}}{{/rollWasFumble() jet1}}
</div>
</rolltemplate>
<!-- SHEET WORKER SCRIPTS -->
<script type="text/worker">
on("sheet:opened", function() {
console.log("Sheet worker says: sheet has been opened");
});
</script>
<script type="text/worker">
// This does not work at the moment
on("clicked:rollwiththreshold", function() {
tum = {
"facile": [31, 43, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66],
"moyen": [16, 24, 43, 46, 54, 62, 63, 64, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66],
"difficile": [13, 21, 32, 34, 36, 43, 45, 51, 54, 55, 56, 62, 64, 66, 66, 66, 66, 66],
"très_difficile": [11, 13, 21, 22, 23, 24, 25, 26, 32, 33, 34, 35, 41, 43, 46, 53, 61, 66],
}
columns = {1: 2, 2: 3, 3: 6, 4: 9, 5: 14, 6: 18}
function get_threshold(level, difficulty, bonus, offset) {
column = (columns[level] - 1) + bonus - offset;
column = Math.min(column, 18)
column = Math.max(column, 0)
threshold = tum[difficulty][column];
return threshold;
}
getAttrs(["level", "offset"], function(values) {
console.log(get_threshold(values["level"], "moyen", 0, values["offset"]));
});
});
</script>
<script type="text/worker">
// Activation d'un pouvoir pour consommer les PP correspondants
on("clicked:repeating_powers:activate", function() {
getAttrs(["repeating_powers_powercost", "pp"], function(values) {
setAttrs({pp: values.pp - values.repeating_powers_powercost});
});
});
</script>
<script type="text/worker">
// Calcul de l'attribut de force surnaturelle (bonus aux dégâts pour une Force > 3)
on("change:force", function(eventInfo) {
setAttrs({force_surnaturelle: Math.max(0, eventInfo.newValue - 3), blessures_max: eventInfo.newValue});
});
</script>