From 48550cc3a72ba09a6a60cc5391ed7b8fe5edccf0 Mon Sep 17 00:00:00 2001 From: NathaTerrien Date: Sun, 17 Sep 2017 22:10:39 +0200 Subject: [PATCH] eventinfo --- Antika/ReadMe.md | 5 + Antika/antika.htm | 6 +- Barbarians Of Lemuria - Mythic/ReadMe.md | 6 +- Barbarians Of Lemuria - Mythic/bolm.htm | 42 +- Barbarians Of Lemuria - Mythic/sheet.json | 2 +- CypherSystem/CypherSystem.htm | 95 +++-- CypherSystem/ReadMe.md | 5 +- CypherSystem/sheet.json | 2 +- CypherSystemFrench/CypherSystem.htm | 91 ++--- CypherSystemFrench/ReadMe.md | 5 +- CypherSystemFrench/sheet.json | 2 +- DungeonWorldFrench/ReadMe.md | 6 +- DungeonWorldFrench/dwfr.htm | 303 +++++++-------- DungeonWorldFrench/sheet.json | 2 +- Mordiou/ReadMe.md | 5 +- Mordiou/mordiou.htm | 32 +- Mordiou/sheet.json | 2 +- PortesMonstresTresors/ReadMe.md | 5 +- PortesMonstresTresors/dwim.htm | 218 +++++------ PortesMonstresTresors/pmt.htm | 220 +++++------ PortesMonstresTresors/sheet.json | 2 +- SavageWorldsFrench/ReadMe.md | 7 +- SavageWorldsFrench/sawofr.html | 390 +++++++++---------- SavageWorldsFrench/sheet.json | 2 +- SavageWorldsFrench/stmpnk.htm | 2 +- Sig/ReadMe.md | 6 +- Sig/sheet.json | 2 +- Sig/sig.htm | 452 +++++++++++----------- Swords_&_Wizardry/ReadMe.md | 6 +- Swords_&_Wizardry/SWSheet.html | 412 ++++++++++---------- TODO.txt | 14 + Vastemonde/ReadMe.md | 5 +- Vastemonde/sheet.json | 2 +- Vastemonde/vastemonde.htm | 432 ++++++++++----------- WhiteLies/ReadMe.md | 6 +- WhiteLies/sheet.json | 2 +- WhiteLies/whitelies.htm | 156 ++++---- 37 files changed, 1446 insertions(+), 1506 deletions(-) create mode 100644 TODO.txt diff --git a/Antika/ReadMe.md b/Antika/ReadMe.md index b303140..c6a2535 100644 --- a/Antika/ReadMe.md +++ b/Antika/ReadMe.md @@ -27,6 +27,11 @@ Désolé de cet inconvénient mais il n'y a pas d'autres moyens dans Roll20 de r # Notes de version +## v1.1 (2017-09-27) + +Optimisation technique. + + ## v1.0 (2016-09-27) Création de la feuille. diff --git a/Antika/antika.htm b/Antika/antika.htm index 48ff4bb..385a8c3 100644 --- a/Antika/antika.htm +++ b/Antika/antika.htm @@ -37,10 +37,9 @@ }); }); }); - on("change:UBRIS", function(){ - getAttrs(["UBRIS"], function(values) { + on("change:UBRIS", function(eventinfo){ var newval=0; - var carac=parseInt(values.UBRIS) || 0; + var carac=parseInt(eventinfo.newValue) || 0; if (carac > 9) { newval=9; } else { @@ -49,7 +48,6 @@ setAttrs({ UBRISJET: newval }); - }); });
diff --git a/Barbarians Of Lemuria - Mythic/ReadMe.md b/Barbarians Of Lemuria - Mythic/ReadMe.md index f2b8c23..98cccfe 100644 --- a/Barbarians Of Lemuria - Mythic/ReadMe.md +++ b/Barbarians Of Lemuria - Mythic/ReadMe.md @@ -6,7 +6,7 @@ Graphic design is based on the french edition. Background image courtesy of [Emmanuel Roudier](http://roudier-neandertal.blogspot.fr/), lead artist on BoL:Mythic, french edition. # Current version -1.4 [Screenshot](bolm.jpg) +1.5 [Screenshot](bolm.jpg) The sheet has integrated rolls (with chat roll templates). Every roll as a PC or NPC asks for, at least, a modifier (default 0). @@ -23,6 +23,10 @@ Due to some temporary technical translation limitations of Roll20, the french ve # Release notes +## v1.5 (2017-09-17) + +* Technical optipisation + ## v1.4 (2017-06-06) * Updated (official) German translation, by Marc M. (Roll20 Id 4134) diff --git a/Barbarians Of Lemuria - Mythic/bolm.htm b/Barbarians Of Lemuria - Mythic/bolm.htm index 4c5a554..ddb3125 100644 --- a/Barbarians Of Lemuria - Mythic/bolm.htm +++ b/Barbarians Of Lemuria - Mythic/bolm.htm @@ -83,30 +83,26 @@ }); }); }); - on("change:armourhelmet", function(){ - getAttrs(["armourhelmet"], function(values) { - var vhelmet = parseInt(values.armourhelmet) || 0; - var vinitpen = 0; - if (vhelmet == 1) { - vinitpen = -1; - } - setAttrs({ - armourinit: vinitpen - }); - }); + on("change:armourhelmet", function(eventinfo){ + var vhelmet = parseInt(eventinfo.newValue) || 0; + var vinitpen = 0; + if (vhelmet == 1) { + vinitpen = -1; + } + setAttrs({ + armourinit: vinitpen }); - on("change:strength", function(){ - getAttrs(["strength"], function(values) { - var str = parseInt(values.strength) || 0; - var half = 0; - if (str < 0 ) { - half = str; - } else { - half = Math.floor(str/2); - } - setAttrs({ - strengthhalf: half - }); + }); + on("change:strength", function(eventinfo){ + var str = parseInt(eventinfo.newValue) || 0; + var half = 0; + if (str < 0 ) { + half = str; + } else { + half = Math.floor(str/2); + } + setAttrs({ + strengthhalf: half }); }); on('sheet:opened',function(){ diff --git a/Barbarians Of Lemuria - Mythic/sheet.json b/Barbarians Of Lemuria - Mythic/sheet.json index 6184d3c..2f1b403 100644 --- a/Barbarians Of Lemuria - Mythic/sheet.json +++ b/Barbarians Of Lemuria - Mythic/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "bolm.jpg", - "instructions": "Character sheet for Barbarians of Lemuria - Mythic Edition, in [english](http://barbariansoflemuria.webs.com/), [french](http://www.ludospherik.fr/content/14-barbarians-of-lemuria) and [german](http://truant.com/spiele/rollenspiele). [Readme](https://github.com/Roll20/roll20-character-sheets/blob/master/Barbarians%20Of%20Lemuria%20-%20Mythic/ReadMe.md). v1.4 (2017-06-06)." + "instructions": "Character sheet for Barbarians of Lemuria - Mythic Edition, in [english](http://barbariansoflemuria.webs.com/), [french](http://www.ludospherik.fr/content/14-barbarians-of-lemuria) and [german](http://truant.com/spiele/rollenspiele). [Readme](https://github.com/Roll20/roll20-character-sheets/blob/master/Barbarians%20Of%20Lemuria%20-%20Mythic/ReadMe.md). v1.5 (2017-09-17)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/CypherSystem/CypherSystem.htm b/CypherSystem/CypherSystem.htm index 6f20dc0..cd988e6 100644 --- a/CypherSystem/CypherSystem.htm +++ b/CypherSystem/CypherSystem.htm @@ -1,3 +1,45 @@ + +
Style:
Cypher System @@ -9,56 +51,9 @@ Roll Queries
- Use:
Assets -bonus +Bonus Costs -
- v1.6 (2016-02-21)
- +
- v1.7 (2017-09-17)
@@ -621,7 +616,7 @@ value="&{template:cyphBasicRoll} {{charid=@{character_id}}} {{stat=intellect}} {{diceRoll=[[1d20cs>17cf1]]}} {{attribute=@{atkintelname}}} {{attrEdge=@{intellectedge}}} {{difficulty=[[@{rollQstDiff}]]}} {{effortRoll=[[@{rollQstRollEff}]]}} {{assets=[[@{rollQstAsset}]]}} {{bonusToRoll=[[@{rollQstBonus}]]}} {{statExpense=[[@{atkintelcost}]]}} {{effortDmg=[[@{rollQstRollDmg}]]}} {{targNum=[[@{targNumQst}]]}} {{finalDiff=[[@{rollQstDiff}-(1*@{rollQstAsset})-(1*@{rollQstRollEff})-(1*@{atkintellvl})-(1*@{atkintelmod})]]}} {{targNumRoll=[[(3*@{rollQstDiff})-(3*@{rollQstAsset})-(3*@{rollQstRollEff})-(3*@{atkintellvl})-(3*@{atkintelmod})-(1*@{rollQstBonus})]]}} {{totalCost=[[@{effortCostQst}+@{atkintelcost}-@{intellectedge}]]}} {{effortCost=[[@{effortCostQst}]]}} {{bonusDmg=[[@{atkinteldmg}+@{rollQstRollDmg}*3]]}} {{skilled=[[@{atkintellvl}]]}} {{atkmod=[[@{atkintelmod}]]}}" name="roll_macroIntelAttack"> -
+
Mod: diff --git a/CypherSystem/ReadMe.md b/CypherSystem/ReadMe.md index a5d2c9a..1325271 100644 --- a/CypherSystem/ReadMe.md +++ b/CypherSystem/ReadMe.md @@ -3,7 +3,7 @@ Character sheet, with integrated rolls and optional API script, for the Cypher S It can look like and be used as a sheet for _Numenéra_ (except the armor stat cost, as per the CSR rule) or _The Strange_ (except the armor stat cost thing also, and the recursion management which requires several characters/sheets, one per recursion). # Current version: -Version 1.6 (February 21st, 2016). +Version 1.7 (September 17th, 2017). * Screenshot [Generic Cypher System style](CypherSystem.png) * Screenshot [Numenera style](CypherSystem_style_Numenera.png) @@ -42,6 +42,9 @@ Set up the API script: # Release Notes +## Release 1.7 (September 17th, 2017) +Technical optimisation. + ## Release 1.6 (February 21st, 2016) Cosmetic changes, to ease access to the delete button on repeatable sections, and diminish repeatable sections line height. diff --git a/CypherSystem/sheet.json b/CypherSystem/sheet.json index 18cc5ec..2f26940 100644 --- a/CypherSystem/sheet.json +++ b/CypherSystem/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "CypherSystem.png", - "instructions": "v1.6 (2015-02-21) To set up a token that's linked to the character sheet, and optionally for API scripts to enhance rolls, check the [README](https://github.com/Roll20/roll20-character-sheets/blob/master/CypherSystem/ReadMe.md)." + "instructions": "v1.7 (2017-09-17) To set up a token that's linked to the character sheet, and optionally for API scripts to enhance rolls, check the [README](https://github.com/Roll20/roll20-character-sheets/blob/master/CypherSystem/ReadMe.md)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/CypherSystemFrench/CypherSystem.htm b/CypherSystemFrench/CypherSystem.htm index a1f6dc0..2fe754a 100644 --- a/CypherSystemFrench/CypherSystem.htm +++ b/CypherSystemFrench/CypherSystem.htm @@ -1,3 +1,45 @@ + +
Style:
Cypher System @@ -10,54 +52,7 @@
- Utiliser :
Atouts Bonus -Coûts
- v1.6 (2016-02-21)
- +Coûts
- v1.7 (2017-09-17)
diff --git a/CypherSystemFrench/ReadMe.md b/CypherSystemFrench/ReadMe.md index 328a9ab..fb79b23 100644 --- a/CypherSystemFrench/ReadMe.md +++ b/CypherSystemFrench/ReadMe.md @@ -5,7 +5,7 @@ Elle est aussi utilisable (et stylée) pour _Numenéra_ (modulo la g La VF s'appuie sur la traduction de Numenéra par Black Book Editions. # Version courante : -Version 1.6 (21 Février 2016) : +Version 1.7 (17 Septembre 2017) : * Capture d'écran [style Cypher System générique](CypherSystem.png) * Capture d'écran [style Numenéra](CypherSystem_style_Numenera.png) @@ -53,6 +53,9 @@ Le script API permet que l'état du personnage soit automatiquement mis &a # Notes de version +## Version 1.7 (17 Septembre 2017) +Optimisation technique. + ## Version 1.6 (21 Février 2016) Changements esthétiques, pour faciliter l'accès au bouton de suppression de ligne répétable, et diminuer la hauteur des lignes répétables. diff --git a/CypherSystemFrench/sheet.json b/CypherSystemFrench/sheet.json index 5639b25..bf90993 100644 --- a/CypherSystemFrench/sheet.json +++ b/CypherSystemFrench/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "CypherSystem.png", - "instructions": "v1.6 (2015-02-21) Lisez le ficher [README](https://github.com/Roll20/roll20-character-sheets/blob/master/CypherSystemFrench/ReadMe.md) pour mettre en place un pion avec la feuille de personnage, et éventuellement ajouter les scripts API accompagnant la fiche de personnage." + "instructions": "v1.7 (2017-09-17) Lisez le ficher [README](https://github.com/Roll20/roll20-character-sheets/blob/master/CypherSystemFrench/ReadMe.md) pour mettre en place un pion avec la feuille de personnage, et éventuellement ajouter les scripts API accompagnant la fiche de personnage." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/DungeonWorldFrench/ReadMe.md b/DungeonWorldFrench/ReadMe.md index f6ee672..c09e967 100644 --- a/DungeonWorldFrench/ReadMe.md +++ b/DungeonWorldFrench/ReadMe.md @@ -4,10 +4,14 @@ Feuille de Personnage en français pour [Dungeon World V1 et V2](http://dungeonw Basée sur la feuille VO de Willem den Besten (Morenim) et Devindra Payment (@Ardnived) ... et considérablement modifiée. # Version courante -3.3 [Capture d'écran](dwfr.png) +3.4 [Capture d'écran](dwfr.png) # Notes de version +## v3.4 (2017-09-17) + +* Optimisation technique + ## v3.3 (2017-02-18) * Correction d'une anomalie occasionnelle dans la totalisation automatique de l'encombrement diff --git a/DungeonWorldFrench/dwfr.htm b/DungeonWorldFrench/dwfr.htm index b67ae04..a6ffdc0 100644 --- a/DungeonWorldFrench/dwfr.htm +++ b/DungeonWorldFrench/dwfr.htm @@ -41,63 +41,55 @@ }); // ACTIONS // Actions Base - on("change:repeating_actionsbase:actionbasejet", function() { - getAttrs(["repeating_actionsbase_actionbasejet"], function(values) { - var chkjet = parseInt(values.repeating_actionsbase_actionbasejet) || 0; - var jet="0"; - if (chkjet == 1) { - jet= "[[2d6 + (@{actionbasemod})[Mod.Carac.] + (@{actionbasebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; - } else { - jet="0"; - } - setAttrs({ - repeating_actionsbase_actionbaseroll: jet - }); + on("change:repeating_actionsbase:actionbasejet", function(eventinfo) { + var chkjet = parseInt(eventinfo.newValue) || 0; + var jet="0"; + if (chkjet == 1) { + jet= "[[2d6 + (@{actionbasemod})[Mod.Carac.] + (@{actionbasebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; + } else { + jet="0"; + } + setAttrs({ + repeating_actionsbase_actionbaseroll: jet }); }); // Actions Spéciales - on("change:repeating_actionsspe:actionspejet", function() { - getAttrs(["repeating_actionsspe_actionspejet"], function(values){ - var chkjet = parseInt(values.repeating_actionsspe_actionspejet) || 0; - var jet="0"; - if( chkjet == 1) { - jet="[[2d6 + (@{actionspemod})[Mod.Carac.] + (@{actionspebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; - } else { - jet="0"; - } - setAttrs({ - repeating_actionsspe_actionsperoll: jet - }); + on("change:repeating_actionsspe:actionspejet", function(eventinfo) { + var chkjet = parseInt(eventinfo.newValue) || 0; + var jet="0"; + if( chkjet == 1) { + jet="[[2d6 + (@{actionspemod})[Mod.Carac.] + (@{actionspebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; + } else { + jet="0"; + } + setAttrs({ + repeating_actionsspe_actionsperoll: jet }); }); // Départ - on("change:repeating_actionsdepart:actiondepjet", function() { - getAttrs(["repeating_actionsdepart_actiondepjet"], function(values){ - var chkjet = parseInt(values.repeating_actionsdepart_actiondepjet) || 0; - var jet="0"; - if( chkjet == 1) { - jet="[[2d6 + (@{actiondepmod})[Mod.Carac.] + (@{actiondepbonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; - } else { - jet="0"; - } - setAttrs({ - repeating_actionsdepart_actiondeproll: jet - }); + on("change:repeating_actionsdepart:actiondepjet", function(eventinfo) { + var chkjet = parseInt(eventinfo.newValue) || 0; + var jet="0"; + if( chkjet == 1) { + jet="[[2d6 + (@{actiondepmod})[Mod.Carac.] + (@{actiondepbonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; + } else { + jet="0"; + } + setAttrs({ + repeating_actionsdepart_actiondeproll: jet }); }); // Avancées - on("change:repeating_moves:movejet", function() { - getAttrs(["repeating_moves_movejet"], function(values){ - var chkjet = parseInt(values.repeating_moves_movejet) || 0; - var jet="0"; - if( chkjet == 1) { - jet="[[2d6 + (@{movemod})[Mod.Carac.] + (@{movebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; - } else { - jet="0"; - } - setAttrs({ - repeating_moves_moveroll: jet - }); + on("change:repeating_moves:movejet", function(eventinfo) { + var chkjet = parseInt(eventinfo.newValue) || 0; + var jet="0"; + if( chkjet == 1) { + jet="[[2d6 + (@{movemod})[Mod.Carac.] + (@{movebonus})[Bonus] + (@{jetpjbonus})[Bonus circonstanciel] ]]"; + } else { + jet="0"; + } + setAttrs({ + repeating_moves_moveroll: jet }); }); // Sorts @@ -187,114 +179,112 @@ }); }); // CLASSES - on("change:laclasse", function() { - getAttrs(["laclasse"], function(values) { - var classe = values.laclasse; - var nom = ""; - var pv = 0; - var charge = 0; - var sorts = 0; - var degats = ""; - switch(classe) { - case "barbare": - nom = "Le Barbare"; - pv = 8; - charge = 9; - sorts = 0; - degats = "d10"; - break; - case "barde": - nom = "Le Barde"; - pv = 6; - charge = 9; - sorts = 0; - degats = "d6"; - break; - case "cambrioleur": - nom = "Le Cambrioleur"; - pv = 6; - charge = 9; - sorts = 0; - degats = "d8"; - break; - case "chaman": - nom = "Le Chaman"; - pv = 6; - charge = 8; - sorts = 0; - degats = "d6"; - break; - case "clerc": - nom = "Le Clerc"; - pv = 8; - charge = 10; - sorts = 1; - degats = "d6"; - break; - case "druide": - nom = "Le Druide"; - pv = 6; - charge = 6; - sorts = 0; - degats = "d6"; - break; - case "ranger": - nom = "L'Éclaireur"; - pv = 8; - charge = 11; - sorts = 0; - degats = "d8"; - break; - case "guerrier": - nom = "Le Guerrier"; - pv = 10; - charge = 12; - sorts = 0; - degats = "d10"; - break; - case "immolateur": - nom = "L'Immolateur"; - pv = 4; - charge = 9; - sorts = 0; - degats = "d8"; - break; - case "magicien": - nom = "Le Magicien"; - pv = 4; - charge = 7; - sorts = 1; - degats = "d4"; - break; - case "paladin": - nom = "Le Paladin"; - pv = 10; - charge = 12; - sorts = 0; - degats = "d10"; - break; - case "voleur": - nom = "Le Voleur"; - pv = 6; - charge = 9; - sorts = 0; - degats = "d8"; - break; - default: - nom = ""; - pv = 0; - charge = 0; - sorts = 0; - degats = ""; - break; - } - setAttrs({ - class: nom, - basehp: pv, - baseload : charge, - spellsmax : sorts, - dtype: degats - }); + on("change:laclasse", function(eventinfo) { + var classe = eventinfo.newValue; + var nom = ""; + var pv = 0; + var charge = 0; + var sorts = 0; + var degats = ""; + switch(classe) { + case "barbare": + nom = "Le Barbare"; + pv = 8; + charge = 9; + sorts = 0; + degats = "d10"; + break; + case "barde": + nom = "Le Barde"; + pv = 6; + charge = 9; + sorts = 0; + degats = "d6"; + break; + case "cambrioleur": + nom = "Le Cambrioleur"; + pv = 6; + charge = 9; + sorts = 0; + degats = "d8"; + break; + case "chaman": + nom = "Le Chaman"; + pv = 6; + charge = 8; + sorts = 0; + degats = "d6"; + break; + case "clerc": + nom = "Le Clerc"; + pv = 8; + charge = 10; + sorts = 1; + degats = "d6"; + break; + case "druide": + nom = "Le Druide"; + pv = 6; + charge = 6; + sorts = 0; + degats = "d6"; + break; + case "ranger": + nom = "L'Éclaireur"; + pv = 8; + charge = 11; + sorts = 0; + degats = "d8"; + break; + case "guerrier": + nom = "Le Guerrier"; + pv = 10; + charge = 12; + sorts = 0; + degats = "d10"; + break; + case "immolateur": + nom = "L'Immolateur"; + pv = 4; + charge = 9; + sorts = 0; + degats = "d8"; + break; + case "magicien": + nom = "Le Magicien"; + pv = 4; + charge = 7; + sorts = 1; + degats = "d4"; + break; + case "paladin": + nom = "Le Paladin"; + pv = 10; + charge = 12; + sorts = 0; + degats = "d10"; + break; + case "voleur": + nom = "Le Voleur"; + pv = 6; + charge = 9; + sorts = 0; + degats = "d8"; + break; + default: + nom = ""; + pv = 0; + charge = 0; + sorts = 0; + degats = ""; + break; + } + setAttrs({ + class: nom, + basehp: pv, + baseload : charge, + spellsmax : sorts, + dtype: degats }); }); @@ -3246,7 +3236,6 @@
Cette Action nécessite un jet -
3
diff --git a/DungeonWorldFrench/sheet.json b/DungeonWorldFrench/sheet.json index b77b985..15facd6 100644 --- a/DungeonWorldFrench/sheet.json +++ b/DungeonWorldFrench/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "dwfr.png", - "instructions": "Feuille de personnage pour [Dungeon World V1 et V2](http://dungeonworld.pbta.fr/). Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/DungeonWorldFrench/ReadMe.md). v3.3 (2017-02-18)." + "instructions": "Feuille de personnage pour [Dungeon World V1 et V2](http://dungeonworld.pbta.fr/). Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/DungeonWorldFrench/ReadMe.md). v3.4 (2017-09-17)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/Mordiou/ReadMe.md b/Mordiou/ReadMe.md index c1145d2..7eda663 100644 --- a/Mordiou/ReadMe.md +++ b/Mordiou/ReadMe.md @@ -11,13 +11,16 @@ Tout commençait généralement par un bon repas, servi à sa table, la meilleur Mordiou ! est un jeu de rôle complet, proposant de jouer des héros de cape et d'épée dans une France légèrement fantasmée - vous y trouverez un système de jeu original (tout au d6), une courte description de Paris à l'époque et de quelques figures majeures de l'univers, ainsi que quatre scénarios. # Version courante -1.1 [Capture d'écran](mordiou.jpg) +1.2 [Capture d'écran](mordiou.jpg) Les jets diffèrent légèrement du livre de règles (pour compenser un manque technique de Roll20 et ne pas utiliser l'API) mais restent statistiquement identiques. Au lieu de compter une Qualité sur des résultats pairs au D6, et deux qualités pour un résultat 6, la feuille ne compte aucune qualité pour un résultat de 1,2 ou 3 au D6, une qualité pour un résultat de 4 ou 5, et deux qualités pour un résultat de 6. # Notes de version +## v1.2 (2017-09-17) +Optimisation technique. + ## v1.1 (2017-02-26) Merci au Grümph, à Xo de Vorcen et Nessir pour les retours, idées et suggestions. diff --git a/Mordiou/mordiou.htm b/Mordiou/mordiou.htm index 597af7b..ea16ab7 100644 --- a/Mordiou/mordiou.htm +++ b/Mordiou/mordiou.htm @@ -105,15 +105,13 @@ }); }); }); - on("change:reservesraz", function(){ - getAttrs(["reservesraz"], function(values) { - if (values.reservesraz == 1 ) { - setAttrs({ - reserves: 0, - reservesraz: 0 - }); - } - }); + on("change:reservesraz", function(eventinfo){ + if (eventinfo.newValue == 1 ) { + setAttrs({ + reserves: 0, + reservesraz: 0 + }); + } }); on("change:aide", function(){ getAttrs(["aide","aidemax"], function(values) { @@ -126,15 +124,13 @@ mordiou.recalcAll(); }); }); - on("change:aideraz", function(){ - getAttrs(["aideraz"], function(values) { - if (values.aideraz == 1 ) { - setAttrs({ - aide: 0, - aideraz: 0 - }); - } - }); + on("change:aideraz", function(eventinfo){ + if (eventinfo.newValue == 1 ) { + setAttrs({ + aide: 0, + aideraz: 0 + }); + } }); on("change:fortune change:defense change:reserves change:maniere", function(){ mordiou.recalcAll(); diff --git a/Mordiou/sheet.json b/Mordiou/sheet.json index 690bf0b..92d7f76 100644 --- a/Mordiou/sheet.json +++ b/Mordiou/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "mordiou.jpg", - "instructions": "Feuille de personnage de [Mordiou !](http://legrumph.org/Terrier/?Chibi/Mordiou-%21), pour jouer des héros de cape et d'épée dans une France légàrement fantasmée. Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/Mordiou/ReadMe.md). v1.1 (2017-02-26)." + "instructions": "Feuille de personnage de [Mordiou !](http://legrumph.org/Terrier/?Chibi/Mordiou-%21), pour jouer des héros de cape et d'épée dans une France légàrement fantasmée. Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/Mordiou/ReadMe.md). v1.2 (2017-09-17)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/PortesMonstresTresors/ReadMe.md b/PortesMonstresTresors/ReadMe.md index 422c7c4..a342ffe 100644 --- a/PortesMonstresTresors/ReadMe.md +++ b/PortesMonstresTresors/ReadMe.md @@ -8,7 +8,7 @@ PMT est une adaptation de **Labyrinth Lord**, réalisée par [Arasmo Le jeu complet est disponible gratuitement en PDF sur le site du [Scriptorium](https://le-scriptorium.fr/jeux-de-role/portes-monstres-tresors/), et en version papier sur [Lulu](http://www.lulu.com/shop/daniel-proctor-and-james-manez/portes-monstres-tr%C3%A9sors/hardcover/product-22096059.html) ou [Amazon](http://www.amazon.fr/Portes-Monstres-Tresors-daventures-fantastiques/dp/1508659044). # Version courante -4.4 [Screenshot](pmt_v4.jpg) +4.5 [Screenshot](pmt_v4.jpg) # Script API de création de personnage Un [script API](pmt.js) est disponible pour créer des personnages rapidement (le taux de mortalité est élevé en OSR ;) ). @@ -44,6 +44,9 @@ Par défaut, le personnage créé est attribué au joueur qui a cliqué dans le # Notes de version +## v4.5 (17 Septembre 2017). +Optimisation technique. + ## v4.4 (18 Février 2017). Correction du calcul d'encombrement. diff --git a/PortesMonstresTresors/dwim.htm b/PortesMonstresTresors/dwim.htm index 25e9901..f40f289 100644 --- a/PortesMonstresTresors/dwim.htm +++ b/PortesMonstresTresors/dwim.htm @@ -178,129 +178,117 @@ }); }); // Caractéristiques et modificateurs - on("change:force", function() { - getAttrs(["force"], function(values) { - var Force=parseInt(values.force); - var MOD_FOR=0; - if (Force <4) {MOD_FOR=-3;} - else if (Force>3 && Force<6) {MOD_FOR=-2;} - else if (Force>5 && Force<9) {MOD_FOR=-1;} - else if (Force>12 && Force<16) {MOD_FOR=1;} - else if (Force>15 && Force<18) {MOD_FOR=2;} - else if (Force>17) {MOD_FOR=3;} - else {MOD_FOR=0;} - setAttrs({ - MOD_FOR:MOD_FOR - }); + on("change:force", function(eventinfo) { + var Force=parseInt(eventinfo.newValue) || 0; + var MOD_FOR=0; + if (Force <4) {MOD_FOR=-3;} + else if (Force>3 && Force<6) {MOD_FOR=-2;} + else if (Force>5 && Force<9) {MOD_FOR=-1;} + else if (Force>12 && Force<16) {MOD_FOR=1;} + else if (Force>15 && Force<18) {MOD_FOR=2;} + else if (Force>17) {MOD_FOR=3;} + else {MOD_FOR=0;} + setAttrs({ + MOD_FOR:MOD_FOR }); }); - on("change:dexterite", function() { - getAttrs(["dexterite"], function(values) { - var Dexterite=parseInt(values.dexterite); - var MOD_DEX=0; - if (Dexterite <4) {MOD_DEX=-3;} - else if (Dexterite>3 && Dexterite<6) {MOD_DEX=-2;} - else if (Dexterite>5 && Dexterite<9) {MOD_DEX=-1;} - else if (Dexterite>12 && Dexterite<16) {MOD_DEX=1;} - else if (Dexterite>15 && Dexterite<18) {MOD_DEX=2;} - else if (Dexterite>17) {MOD_DEX=3;} - else {MOD_DEX=0;} - setAttrs({ - MOD_DEX:MOD_DEX - }); + on("change:dexterite", function(eventinfo) { + var Dexterite=parseInt(eventinfo.newValue) || 0; + var MOD_DEX=0; + if (Dexterite <4) {MOD_DEX=-3;} + else if (Dexterite>3 && Dexterite<6) {MOD_DEX=-2;} + else if (Dexterite>5 && Dexterite<9) {MOD_DEX=-1;} + else if (Dexterite>12 && Dexterite<16) {MOD_DEX=1;} + else if (Dexterite>15 && Dexterite<18) {MOD_DEX=2;} + else if (Dexterite>17) {MOD_DEX=3;} + else {MOD_DEX=0;} + setAttrs({ + MOD_DEX:MOD_DEX }); }); - on("change:constitution", function() { - getAttrs(["constitution"], function(values) { - var Constitution=parseInt(values.constitution); - var MOD_CON=0; - if (Constitution <4) {MOD_CON=-3;} - else if (Constitution>3 && Constitution<6) {MOD_CON=-2;} - else if (Constitution>5 && Constitution<9) {MOD_CON=-1;} - else if (Constitution>12 && Constitution<16) {MOD_CON=1;} - else if (Constitution>15 && Constitution<18) {MOD_CON=2;} - else if (Constitution>17) {MOD_CON=3;} - else {MOD_CON=0;} - setAttrs({ - MOD_CON:MOD_CON - }); + on("change:constitution", function(eventinfo) { + var Constitution=parseInt(eventinfo.newValue) || 0; + var MOD_CON=0; + if (Constitution <4) {MOD_CON=-3;} + else if (Constitution>3 && Constitution<6) {MOD_CON=-2;} + else if (Constitution>5 && Constitution<9) {MOD_CON=-1;} + else if (Constitution>12 && Constitution<16) {MOD_CON=1;} + else if (Constitution>15 && Constitution<18) {MOD_CON=2;} + else if (Constitution>17) {MOD_CON=3;} + else {MOD_CON=0;} + setAttrs({ + MOD_CON:MOD_CON }); }); - on("change:intelligence", function() { - getAttrs(["intelligence"], function(values) { - var Intelligence=parseInt(values.intelligence); - var MOD_INT=0; - if (Intelligence>12 && Intelligence<16) {MOD_INT=1;} - else if (Intelligence>15 && Intelligence<18) {MOD_INT=2;} - else if (Intelligence>17) {MOD_INT=3;} - else {MOD_INT=0;} - setAttrs({ - MOD_INT:MOD_INT - }); - }); + on("change:intelligence", function(eventinfo) { + var Intelligence=parseInt(eventinfo.newValue) || 0; + var MOD_INT=0; + if (Intelligence>12 && Intelligence<16) {MOD_INT=1;} + else if (Intelligence>15 && Intelligence<18) {MOD_INT=2;} + else if (Intelligence>17) {MOD_INT=3;} + else {MOD_INT=0;} + setAttrs({ + MOD_INT:MOD_INT + }); }); - on("change:sagesse", function() { - getAttrs(["sagesse"], function(values) { - var Sagesse=parseInt(values.sagesse); - var MOD_SAG=0; - if (Sagesse <4) {MOD_SAG=-3;} - else if (Sagesse>3 && Sagesse<6) {MOD_SAG=-2;} - else if (Sagesse>5 && Sagesse<9) {MOD_SAG=-1;} - else if (Sagesse>12 && Sagesse<16) {MOD_SAG=1;} - else if (Sagesse>15 && Sagesse<18) {MOD_SAG=2;} - else if (Sagesse>17) {MOD_SAG=3;} - else {MOD_SAG=0;} - setAttrs({ - MOD_SAG:MOD_SAG - }); - }); + on("change:sagesse", function(eventinfo) { + var Sagesse=parseInt(eventinfo.newValue) || 0; + var MOD_SAG=0; + if (Sagesse <4) {MOD_SAG=-3;} + else if (Sagesse>3 && Sagesse<6) {MOD_SAG=-2;} + else if (Sagesse>5 && Sagesse<9) {MOD_SAG=-1;} + else if (Sagesse>12 && Sagesse<16) {MOD_SAG=1;} + else if (Sagesse>15 && Sagesse<18) {MOD_SAG=2;} + else if (Sagesse>17) {MOD_SAG=3;} + else {MOD_SAG=0;} + setAttrs({ + MOD_SAG:MOD_SAG + }); }); - on("change:charisme", function() { - getAttrs(["charisme"], function(values) { - var Charisme=parseInt(values.charisme); - var MOD_CHA=0; - var MaxCompagnons=0; - var MoralCompagnons=0; - if (Charisme <4) { - MOD_CHA=2; - MaxCompagnons=1; - MoralCompagnons=4; - } - else if (Charisme>3 && Charisme<6) { - MOD_CHA=1; - MaxCompagnons=2; - MoralCompagnons=5; - } - else if (Charisme>5 && Charisme<9) { - MOD_CHA=1; - MaxCompagnons=3; - MoralCompagnons=6; - } - else if (Charisme>12 && Charisme<16) { - MOD_CHA=-1; - MaxCompagnons=5; - MoralCompagnons=8; - } - else if (Charisme>15 && Charisme<18) { - MOD_CHA=-1; - MaxCompagnons=6; - MoralCompagnons=9; - } - else if (Charisme>17) { - MOD_CHA=-2; - MaxCompagnons=7; - MoralCompagnons=10; - } - else { - MOD_CHA=0; - MaxCompagnons=4; - MoralCompagnons=7; - } - setAttrs({ - MOD_CHA:MOD_CHA, - MaxCompagnons:MaxCompagnons, - MoralCompagnons:MoralCompagnons - }); + on("change:charisme", function(eventinfo) { + var Charisme=parseInt(eventinfo.newValue) || 0; + var MOD_CHA=0; + var MaxCompagnons=0; + var MoralCompagnons=0; + if (Charisme <4) { + MOD_CHA=2; + MaxCompagnons=1; + MoralCompagnons=4; + } + else if (Charisme>3 && Charisme<6) { + MOD_CHA=1; + MaxCompagnons=2; + MoralCompagnons=5; + } + else if (Charisme>5 && Charisme<9) { + MOD_CHA=1; + MaxCompagnons=3; + MoralCompagnons=6; + } + else if (Charisme>12 && Charisme<16) { + MOD_CHA=-1; + MaxCompagnons=5; + MoralCompagnons=8; + } + else if (Charisme>15 && Charisme<18) { + MOD_CHA=-1; + MaxCompagnons=6; + MoralCompagnons=9; + } + else if (Charisme>17) { + MOD_CHA=-2; + MaxCompagnons=7; + MoralCompagnons=10; + } + else { + MOD_CHA=0; + MaxCompagnons=4; + MoralCompagnons=7; + } + setAttrs({ + MOD_CHA:MOD_CHA, + MaxCompagnons:MaxCompagnons, + MoralCompagnons:MoralCompagnons }); }); diff --git a/PortesMonstresTresors/pmt.htm b/PortesMonstresTresors/pmt.htm index a883406..c6ca502 100644 --- a/PortesMonstresTresors/pmt.htm +++ b/PortesMonstresTresors/pmt.htm @@ -178,134 +178,122 @@ }); }); // Caractéristiques et modificateurs - on("change:force", function() { - getAttrs(["force"], function(values) { - var Force=parseInt(values.force); - var MOD_FOR=0; - if (Force <4) {MOD_FOR=-3;} - else if (Force>3 && Force<6) {MOD_FOR=-2;} - else if (Force>5 && Force<9) {MOD_FOR=-1;} - else if (Force>12 && Force<16) {MOD_FOR=1;} - else if (Force>15 && Force<18) {MOD_FOR=2;} - else if (Force>17) {MOD_FOR=3;} - else {MOD_FOR=0;} - setAttrs({ - MOD_FOR:MOD_FOR - }); + on("change:force", function(eventinfo) { + var Force=parseInt(eventinfo.newValue) || 0; + var MOD_FOR=0; + if (Force <4) {MOD_FOR=-3;} + else if (Force>3 && Force<6) {MOD_FOR=-2;} + else if (Force>5 && Force<9) {MOD_FOR=-1;} + else if (Force>12 && Force<16) {MOD_FOR=1;} + else if (Force>15 && Force<18) {MOD_FOR=2;} + else if (Force>17) {MOD_FOR=3;} + else {MOD_FOR=0;} + setAttrs({ + MOD_FOR:MOD_FOR }); }); - on("change:dexterite", function() { - getAttrs(["dexterite"], function(values) { - var Dexterite=parseInt(values.dexterite); - var MOD_DEX=0; - if (Dexterite <4) {MOD_DEX=-3;} - else if (Dexterite>3 && Dexterite<6) {MOD_DEX=-2;} - else if (Dexterite>5 && Dexterite<9) {MOD_DEX=-1;} - else if (Dexterite>12 && Dexterite<16) {MOD_DEX=1;} - else if (Dexterite>15 && Dexterite<18) {MOD_DEX=2;} - else if (Dexterite>17) {MOD_DEX=3;} - else {MOD_DEX=0;} - setAttrs({ - MOD_DEX:MOD_DEX - }); + on("change:dexterite", function(eventinfo) { + var Dexterite=parseInt(eventinfo.newValue) || 0; + var MOD_DEX=0; + if (Dexterite <4) {MOD_DEX=-3;} + else if (Dexterite>3 && Dexterite<6) {MOD_DEX=-2;} + else if (Dexterite>5 && Dexterite<9) {MOD_DEX=-1;} + else if (Dexterite>12 && Dexterite<16) {MOD_DEX=1;} + else if (Dexterite>15 && Dexterite<18) {MOD_DEX=2;} + else if (Dexterite>17) {MOD_DEX=3;} + else {MOD_DEX=0;} + setAttrs({ + MOD_DEX:MOD_DEX }); }); - on("change:constitution", function() { - getAttrs(["constitution"], function(values) { - var Constitution=parseInt(values.constitution); - var MOD_CON=0; - if (Constitution <4) {MOD_CON=-3;} - else if (Constitution>3 && Constitution<6) {MOD_CON=-2;} - else if (Constitution>5 && Constitution<9) {MOD_CON=-1;} - else if (Constitution>12 && Constitution<16) {MOD_CON=1;} - else if (Constitution>15 && Constitution<18) {MOD_CON=2;} - else if (Constitution>17) {MOD_CON=3;} - else {MOD_CON=0;} - setAttrs({ - MOD_CON:MOD_CON - }); + on("change:constitution", function(eventinfo) { + var Constitution=parseInt(eventinfo.newValue) || 0; + var MOD_CON=0; + if (Constitution <4) {MOD_CON=-3;} + else if (Constitution>3 && Constitution<6) {MOD_CON=-2;} + else if (Constitution>5 && Constitution<9) {MOD_CON=-1;} + else if (Constitution>12 && Constitution<16) {MOD_CON=1;} + else if (Constitution>15 && Constitution<18) {MOD_CON=2;} + else if (Constitution>17) {MOD_CON=3;} + else {MOD_CON=0;} + setAttrs({ + MOD_CON:MOD_CON }); }); - on("change:intelligence", function() { - getAttrs(["intelligence"], function(values) { - var Intelligence=parseInt(values.intelligence); - var MOD_INT=0; - if (Intelligence>12 && Intelligence<16) {MOD_INT=1;} - else if (Intelligence>15 && Intelligence<18) {MOD_INT=2;} - else if (Intelligence>17) {MOD_INT=3;} - else {MOD_INT=0;} - setAttrs({ - MOD_INT:MOD_INT - }); - }); + on("change:intelligence", function(eventinfo) { + var Intelligence=parseInt(eventinfo.newValue) || 0; + var MOD_INT=0; + if (Intelligence>12 && Intelligence<16) {MOD_INT=1;} + else if (Intelligence>15 && Intelligence<18) {MOD_INT=2;} + else if (Intelligence>17) {MOD_INT=3;} + else {MOD_INT=0;} + setAttrs({ + MOD_INT:MOD_INT + }); }); - on("change:sagesse", function() { - getAttrs(["sagesse"], function(values) { - var Sagesse=parseInt(values.sagesse); - var MOD_SAG=0; - if (Sagesse <4) {MOD_SAG=-3;} - else if (Sagesse>3 && Sagesse<6) {MOD_SAG=-2;} - else if (Sagesse>5 && Sagesse<9) {MOD_SAG=-1;} - else if (Sagesse>12 && Sagesse<16) {MOD_SAG=1;} - else if (Sagesse>15 && Sagesse<18) {MOD_SAG=2;} - else if (Sagesse>17) {MOD_SAG=3;} - else {MOD_SAG=0;} - setAttrs({ - MOD_SAG:MOD_SAG - }); - }); + on("change:sagesse", function(eventinfo) { + var Sagesse=parseInt(eventinfo.newValue) || 0; + var MOD_SAG=0; + if (Sagesse <4) {MOD_SAG=-3;} + else if (Sagesse>3 && Sagesse<6) {MOD_SAG=-2;} + else if (Sagesse>5 && Sagesse<9) {MOD_SAG=-1;} + else if (Sagesse>12 && Sagesse<16) {MOD_SAG=1;} + else if (Sagesse>15 && Sagesse<18) {MOD_SAG=2;} + else if (Sagesse>17) {MOD_SAG=3;} + else {MOD_SAG=0;} + setAttrs({ + MOD_SAG:MOD_SAG + }); }); - on("change:charisme", function() { - getAttrs(["charisme"], function(values) { - var Charisme=parseInt(values.charisme); - var MOD_CHA=0; - var MaxCompagnons=0; - var MoralCompagnons=0; - if (Charisme <4) { - MOD_CHA=2; - MaxCompagnons=1; - MoralCompagnons=4; - } - else if (Charisme>3 && Charisme<6) { - MOD_CHA=1; - MaxCompagnons=2; - MoralCompagnons=5; - } - else if (Charisme>5 && Charisme<9) { - MOD_CHA=1; - MaxCompagnons=3; - MoralCompagnons=6; - } - else if (Charisme>12 && Charisme<16) { - MOD_CHA=-1; - MaxCompagnons=5; - MoralCompagnons=8; - } - else if (Charisme>15 && Charisme<18) { - MOD_CHA=-1; - MaxCompagnons=6; - MoralCompagnons=9; - } - else if (Charisme>17) { - MOD_CHA=-2; - MaxCompagnons=7; - MoralCompagnons=10; - } - else { - MOD_CHA=0; - MaxCompagnons=4; - MoralCompagnons=7; - } - setAttrs({ - MOD_CHA:MOD_CHA, - MaxCompagnons:MaxCompagnons, - MoralCompagnons:MoralCompagnons - }); + on("change:charisme", function(eventinfo) { + var Charisme=parseInt(eventinfo.newValue) || 0; + var MOD_CHA=0; + var MaxCompagnons=0; + var MoralCompagnons=0; + if (Charisme <4) { + MOD_CHA=2; + MaxCompagnons=1; + MoralCompagnons=4; + } + else if (Charisme>3 && Charisme<6) { + MOD_CHA=1; + MaxCompagnons=2; + MoralCompagnons=5; + } + else if (Charisme>5 && Charisme<9) { + MOD_CHA=1; + MaxCompagnons=3; + MoralCompagnons=6; + } + else if (Charisme>12 && Charisme<16) { + MOD_CHA=-1; + MaxCompagnons=5; + MoralCompagnons=8; + } + else if (Charisme>15 && Charisme<18) { + MOD_CHA=-1; + MaxCompagnons=6; + MoralCompagnons=9; + } + else if (Charisme>17) { + MOD_CHA=-2; + MaxCompagnons=7; + MoralCompagnons=10; + } + else { + MOD_CHA=0; + MaxCompagnons=4; + MoralCompagnons=7; + } + setAttrs({ + MOD_CHA:MOD_CHA, + MaxCompagnons:MaxCompagnons, + MoralCompagnons:MoralCompagnons }); }); -v4.4 - Options : +v4.5 - Options : CA descendante CA ascendante diff --git a/PortesMonstresTresors/sheet.json b/PortesMonstresTresors/sheet.json index 0287eda..5ab4aae 100644 --- a/PortesMonstresTresors/sheet.json +++ b/PortesMonstresTresors/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "pmt_v4.jpg", - "instructions": "Feuille de Personnage pour PMT v2 (Portes, Monstres et Trésors), un rétro-clone de D&D B/X (adaptation de Labyrinth Lord par Arasmo). Les PDFs du jeu sont disponibles gratuitement sur le [Scriptorium](https://le-scriptorium.fr/jeux-de-role/portes-monstres-tresors/). Un script API est disponible pour accélérer la crétion de personnage. Voir le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/PortesMonstresTresors/ReadMe.md). v4.4 (17/02/2017)." + "instructions": "Feuille de Personnage pour PMT v2 (Portes, Monstres et Trésors), un rétro-clone de D&D B/X (adaptation de Labyrinth Lord par Arasmo). Les PDFs du jeu sont disponibles gratuitement sur le [Scriptorium](https://le-scriptorium.fr/jeux-de-role/portes-monstres-tresors/). Un script API est disponible pour accélérer la crétion de personnage. Voir le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/PortesMonstresTresors/ReadMe.md). v4.5 (17/09/2017)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/SavageWorldsFrench/ReadMe.md b/SavageWorldsFrench/ReadMe.md index 5a2ad4b..9a66eec 100644 --- a/SavageWorldsFrench/ReadMe.md +++ b/SavageWorldsFrench/ReadMe.md @@ -4,7 +4,7 @@ Feuille de personnage (FdP) avec jets intégrés pour **Savage Worlds**, **Beast Basée sur les traductions éditées par [Black Book Editions](http://www.black-book-editions.fr/catalogue.php?id=58). # Version courante -3.0 Captures d'écran : +3.1 Captures d'écran : [Style Savage Worlds](sawofr_style_sawo.jpg) [Style Beasts & Barbarians](sawofr_style_bnb.jpg) [Style Deadlands](sawofr_style_deadlands.jpg) @@ -132,6 +132,11 @@ NB : décrémenter les PP automatiquement au lancement d'un pouvoir nécessitera # Notes de version +## v3.1 (2017-09-17) + +* Correction de l'utilisation de la compétence Arcane pour les jets d'arme, en mode "Succès+Relance" +* Optimisation technique + ## v3.0 (2017-08-15) * Nouveaux choix de styles visuels pour **Beasts & Barbarians** et **Lankhmar** diff --git a/SavageWorldsFrench/sawofr.html b/SavageWorldsFrench/sawofr.html index c40f36b..2080921 100644 --- a/SavageWorldsFrench/sawofr.html +++ b/SavageWorldsFrench/sawofr.html @@ -20,173 +20,157 @@ }); }); // === JOKER / PNJ / EXTRA - on("change:pnjtype", function(){ - getAttrs(["pnjtype"], function(values) { - var pjtype = parseInt(values.pnjtype) || 0; - var ispnj = 1; - var isextra = 0; - var possessions = 1; - var disposs = 1; - var tpletat = 1; - var joker = "1d6"; - var nbbless = 3; - var logo=1; - var lib=""; - switch(pjtype) { - case 0: - ispnj = 0; - isextra = 0; - possessions = 1; - disposs = 1; - tpletat = 1; - joker = "1d6"; - nbbless = 3; - logo = 1; - lib = "Personnage"; - break; - case 1: //PNJ Joker - ispnj = 1; - isextra = 0; - possessions = 1; - disposs = 0; - tpletat = 0; - joker = "1d6"; - nbbless = 3; - logo = 0; - lib = "Joker (PNJ)"; - break; - case 2: //Sous-fifre - ispnj = 1; - isextra = 0; - possessions = 1; - disposs = 0; - tpletat = 0; - joker = "0d4"; - nbbless = 3; - logo = 0; - lib = "Sous-fifre (PNJ)"; - break; - case 3: //Bras droit - ispnj = 1; - isextra = 0; - possessions = 1; - disposs = 0; - tpletat = 0; - joker = "1d6"; - nbbless = 0; - logo = 0; - lib = "Bras droit (PNJ)"; - break; - case 4: //Extra - ispnj = 1; - isextra = 1; - possessions = 0; - disposs = 0; - tpletat = 0; - joker = "0d4"; - nbbless = 0; - logo = 0; - lib = "Extra (PNJ)"; - break; - default: //Personnalisé - ispnj = 1; - isextra = 0; - possessions = 1; - disposs = 0; - tpletat = 0; - joker = "1d6"; - nbbless = 3; - logo = 0; - lib = "PNJ personnalisé"; - } - setAttrs({ - "pnj": ispnj, - "extra": isextra, - "chkPossessions": possessions, - "dispPossessions": disposs, - "templateetat": tpletat, - "joker_de": joker, - "confBlessures": nbbless, - "sheetLogo": logo, - "pnjtypelib": lib - }); + on("change:pnjtype", function(eventinfo){ + var pjtype = parseInt(eventinfo.newValue) || 0; + var ispnj = 1; + var isextra = 0; + var possessions = 1; + var disposs = 1; + var tpletat = 1; + var joker = "1d6"; + var nbbless = 3; + var logo=1; + var lib=""; + switch(pjtype) { + case 0: + ispnj = 0; + isextra = 0; + possessions = 1; + disposs = 1; + tpletat = 1; + joker = "1d6"; + nbbless = 3; + logo = 1; + lib = "Personnage"; + break; + case 1: //PNJ Joker + ispnj = 1; + isextra = 0; + possessions = 1; + disposs = 0; + tpletat = 0; + joker = "1d6"; + nbbless = 3; + logo = 0; + lib = "Joker (PNJ)"; + break; + case 2: //Sous-fifre + ispnj = 1; + isextra = 0; + possessions = 1; + disposs = 0; + tpletat = 0; + joker = "0d4"; + nbbless = 3; + logo = 0; + lib = "Sous-fifre (PNJ)"; + break; + case 3: //Bras droit + ispnj = 1; + isextra = 0; + possessions = 1; + disposs = 0; + tpletat = 0; + joker = "1d6"; + nbbless = 0; + logo = 0; + lib = "Bras droit (PNJ)"; + break; + case 4: //Extra + ispnj = 1; + isextra = 1; + possessions = 0; + disposs = 0; + tpletat = 0; + joker = "0d4"; + nbbless = 0; + logo = 0; + lib = "Extra (PNJ)"; + break; + default: //Personnalisé + ispnj = 1; + isextra = 0; + possessions = 1; + disposs = 0; + tpletat = 0; + joker = "1d6"; + nbbless = 3; + logo = 0; + lib = "PNJ personnalisé"; + } + setAttrs({ + "pnj": ispnj, + "extra": isextra, + "chkPossessions": possessions, + "dispPossessions": disposs, + "templateetat": tpletat, + "joker_de": joker, + "confBlessures": nbbless, + "sheetLogo": logo, + "pnjtypelib": lib }); }); // === BLESSURES et Malus blessure // TODO conf blessures - on("change:confBlessures", function(){ - getAttrs(["confBlessures"], function(values) { - var conf = parseInt(values.confBlessures) || 0; - setAttrs({ - bless1: parseInt(+(conf>0)) || 0, - bless2: parseInt(+(conf>1)) || 0, - bless3: parseInt(+(conf>2)) || 0 - }); + on("change:confBlessures", function(eventinfo){ + var conf = parseInt(eventinfo.newValue) || 0; + setAttrs({ + bless1: parseInt(+(conf>0)) || 0, + bless2: parseInt(+(conf>1)) || 0, + bless3: parseInt(+(conf>2)) || 0 }); }); - on("change:blessures", function() { - getAttrs(["blessures"], function(values) { - var malusblessures = 0; - if (values.blessures > 3) { - malusblessures = 3; - } else { - malusblessures = values.blessures; - } - setAttrs({ - malusblessures: malusblessures - }); + on("change:blessures", function(eventinfo) { + var malusblessures = 0; + if (eventinfo.newValue > 3) { + malusblessures = 3; + } else { + malusblessures = eventinfo.newValue; + } + setAttrs({ + malusblessures: malusblessures }); }); // === FATIGUE et Malus blessure - on("change:fatigue", function() { - getAttrs(["fatigue"], function(values) { - var malusfatigue = 0; - if (values.fatigue > 2) { - malusfatigue = 2; - } else { - malusfatigue = values.fatigue; - } - setAttrs({ - malusfatigue: malusfatigue - }); + on("change:fatigue", function(eventinfo) { + var malusfatigue = 0; + if (eventinfo.newValue > 2) { + malusfatigue = 2; + } else { + malusfatigue = eventinfo.newValue; + } + setAttrs({ + malusfatigue: malusfatigue }); }); // === ARMES FIXES - on("change:arme1_comp", function() { - getAttrs(["arme1_comp"], function(values) { - setAttrs({ - arme1_comp_rel: "@{relRollBast" + values.arme1_comp + "}", - arme1_comp_jet: "@{jetRollBast" + values.arme1_comp + "}", - arme1_comp_brut: "@{RollBast" + values.arme1_comp + "}" - }); + on("change:arme1_comp", function(eventinfo) { + setAttrs({ + arme1_comp_rel: "@{relRollBast" + eventinfo.newValue + "}", + arme1_comp_jet: "@{jetRollBast" + eventinfo.newValue + "}", + arme1_comp_brut: "@{RollBast" + eventinfo.newValue + "}" }); }); - on("change:arme2_comp", function() { - getAttrs(["arme2_comp"], function(values) { - setAttrs({ - arme2_comp_rel: "@{relRollBast" + values.arme2_comp + "}", - arme2_comp_jet: "@{jetRollBast" + values.arme2_comp + "}", - arme2_comp_brut: "@{RollBast" + values.arme2_comp + "}" - }); + on("change:arme2_comp", function(eventinfo) { + setAttrs({ + arme2_comp_rel: "@{relRollBast" + eventinfo.newValue + "}", + arme2_comp_jet: "@{jetRollBast" + eventinfo.newValue + "}", + arme2_comp_brut: "@{RollBast" + eventinfo.newValue + "}" }); }); - on("change:arme3_comp", function() { - getAttrs(["arme3_comp"], function(values) { - setAttrs({ - arme3_comp_rel: "@{relRollBast" + values.arme3_comp + "}", - arme3_comp_jet: "@{jetRollBast" + values.arme3_comp + "}", - arme3_comp_brut: "@{RollBast" + values.arme3_comp + "}" - }); + on("change:arme3_comp", function(eventinfo) { + setAttrs({ + arme3_comp_rel: "@{relRollBast" + eventinfo.newValue + "}", + arme3_comp_jet: "@{jetRollBast" + eventinfo.newValue + "}", + arme3_comp_brut: "@{RollBast" + eventinfo.newValue + "}" }); }); // === ARMES DYNAMIQUES - on("change:repeating_armes:armed_comp", function() { - getAttrs(["repeating_armes_armeD_comp"], function(values) { - setAttrs({ - repeating_armes_armeD_comp_rel: "@{relRollBast" + values.repeating_armes_armeD_comp + "}", - repeating_armes_armeD_comp_jet: "@{jetRollBast" + values.repeating_armes_armeD_comp + "}" - ,repeating_armes_armeD_comp_brut: "@{RollBast" + values.repeating_armes_armeD_comp + "}" - }); + on("change:repeating_armes:armed_comp", function(eventinfo) { + setAttrs({ + repeating_armes_armeD_comp_rel: "@{relRollBast" + eventinfo.newValue + "}", + repeating_armes_armeD_comp_jet: "@{jetRollBast" + eventinfo.newValue + "}" + ,repeating_armes_armeD_comp_brut: "@{RollBast" + eventinfo.newValue + "}" }); }); // === CARACS DÉRIVÉES @@ -217,42 +201,38 @@ }); }); // Affichage / Masquage toutes compétences - on("change:chkAllComp", function() { - getAttrs(["chkAllComp"], function(values) { - setAttrs({ - chkArcane: values.chkAllComp, - chkCombat: values.chkAllComp, - chkConduite: values.chkAllComp, - chkConnaissance: values.chkAllComp, - chkCrochetage: values.chkAllComp, - chkDiscretion: values.chkAllComp, - chkEquitation: values.chkAllComp, - chkEscalade: values.chkAllComp, - chkIntimidation: values.chkAllComp, - chkJeu: values.chkAllComp, - chkLancer: values.chkAllComp, - chkNatation: values.chkAllComp, - chkNavigation: values.chkAllComp, - chkPerception: values.chkAllComp, - chkPersuasion: values.chkAllComp, - chkPilotage: values.chkAllComp, - chkPistage: values.chkAllComp, - chkRecherche: values.chkAllComp, - chkReparation: values.chkAllComp, - chkReseaux: values.chkAllComp, - chkSarcasme: values.chkAllComp, - chkSoins: values.chkAllComp, - chkSurvie: values.chkAllComp, - chkTir: values.chkAllComp - }); + on("change:chkAllComp", function(eventinfo) { + setAttrs({ + chkArcane: eventinfo.newValue, + chkCombat: eventinfo.newValue, + chkConduite: eventinfo.newValue, + chkConnaissance: eventinfo.newValue, + chkCrochetage: eventinfo.newValue, + chkDiscretion: eventinfo.newValue, + chkEquitation: eventinfo.newValue, + chkEscalade: eventinfo.newValue, + chkIntimidation: eventinfo.newValue, + chkJeu: eventinfo.newValue, + chkLancer: eventinfo.newValue, + chkNatation: eventinfo.newValue, + chkNavigation: eventinfo.newValue, + chkPerception: eventinfo.newValue, + chkPersuasion: eventinfo.newValue, + chkPilotage: eventinfo.newValue, + chkPistage: eventinfo.newValue, + chkRecherche: eventinfo.newValue, + chkReparation: eventinfo.newValue, + chkReseaux: eventinfo.newValue, + chkSarcasme: eventinfo.newValue, + chkSoins: eventinfo.newValue, + chkSurvie: eventinfo.newValue, + chkTir: eventinfo.newValue }); }); // === Inventaire et encombrement - on("change:force_de", function() { - getAttrs(["force_de"], function(values) { - setAttrs({ - encombmax: parseInt(values.force_de)*2.5 - }); + on("change:force_de", function(eventinfo) { + setAttrs({ + encombmax: parseInt(eventinfo.newValue)*2.5 }); }); on("change:repeating_equipements:equipqte change:repeating_equipements:equippdsunit", function() { @@ -291,29 +271,27 @@ }); }); // === Attaques - on("change:atkcible", function () { - getAttrs(["atkcible"], function(values){ - var cibleparade = "", - cibleresistance = "", - ciblearcane = "", - atknom = ""; - if ( values.atkcible == 1) { - cibleparade = "@{target|parade}"; - cibleresistance = "@{target|resistance}"; - ciblearcane = "?{Difficulté|4}"; - atknom = "@{target|character_name}"; - } else { - cibleparade = "?{Parade|4}"; - cibleresistance = "?{Résistance|4}"; - ciblearcane = "?{Difficulté|4}"; - atknom = "-"; - } - setAttrs({ - cibleparade: cibleparade, - cibleresistance: cibleresistance, - ciblearcane: ciblearcane, - atknom: atknom - }); + on("change:atkcible", function (eventinfo) { + var cibleparade = "", + cibleresistance = "", + ciblearcane = "", + atknom = ""; + if (eventinfo.newValue == 1) { + cibleparade = "@{target|parade}"; + cibleresistance = "@{target|resistance}"; + ciblearcane = "?{Difficulté|4}"; + atknom = "@{target|character_name}"; + } else { + cibleparade = "?{Parade|4}"; + cibleresistance = "?{Résistance|4}"; + ciblearcane = "?{Difficulté|4}"; + atknom = "-"; + } + setAttrs({ + cibleparade: cibleparade, + cibleresistance: cibleresistance, + ciblearcane: ciblearcane, + atknom: atknom }); }); @@ -366,7 +344,7 @@ - + @@ -497,7 +475,7 @@ Feuille Configuration - v3.0 (15/08/2017) + v3.1 (17/09/2017) diff --git a/SavageWorldsFrench/sheet.json b/SavageWorldsFrench/sheet.json index c3d9c72..52a9769 100644 --- a/SavageWorldsFrench/sheet.json +++ b/SavageWorldsFrench/sheet.json @@ -4,6 +4,6 @@ ,"authors": "Natha" ,"roll20userid": "75857" ,"preview": "sawofr.jpg" - ,"instructions": "Feuille de Personnage VF pour Savage Worlds, Beasts & Barbarians, Lankhmar et Deadlands Reloaded. Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/SavageWorldsFrench/ReadMe.md). v3.0 (15/08/2017)." + ,"instructions": "Feuille de Personnage VF pour Savage Worlds, Beasts & Barbarians, Lankhmar et Deadlands Reloaded. Consultez le [readme](https://github.com/Roll20/roll20-character-sheets/blob/master/SavageWorldsFrench/ReadMe.md). v3.1 (17/09/2017)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/SavageWorldsFrench/stmpnk.htm b/SavageWorldsFrench/stmpnk.htm index 9a1cd0c..d3dc7e2 100644 --- a/SavageWorldsFrench/stmpnk.htm +++ b/SavageWorldsFrench/stmpnk.htm @@ -277,7 +277,7 @@ - + diff --git a/Sig/ReadMe.md b/Sig/ReadMe.md index a4ddac8..42ecb06 100644 --- a/Sig/ReadMe.md +++ b/Sig/ReadMe.md @@ -11,13 +11,17 @@ Each of the planes is also home to unique peoples, from the Giants of the Elemen Visit the Elemental Plane of Flame to test yourself in scorched wastelands of the Crucible. Seek answers to hidden secrets in the Umbral Delta of the Conceptual Plane of Shadow. Defend yourself in The Final Court, where the Seven Magistrates provide final remedy to any injustice. # Current version -1.0 [Screenshot](sig.jpg) +1.1 [Screenshot](sig.jpg) Click to enlarge: [![How to use the sheet](sig_howto.jpg)](sig_howto.jpg) # Release notes +## v1.1 (2017-09-17) + +Technical optimisation. + ## v1.0 (2017-06-04) Creation of the sheet. diff --git a/Sig/sheet.json b/Sig/sheet.json index 016dd68..0021e74 100644 --- a/Sig/sheet.json +++ b/Sig/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "sig.jpg", - "instructions": "Character sheet for [Sig: The City Between](http://www.genesisoflegend.com/products/sig/). [Readme](https://github.com/Roll20/roll20-character-sheets/blob/master/SIG/ReadMe.md). v1.0 (2017-06-04)." + "instructions": "Character sheet for [Sig: The City Between](http://www.genesisoflegend.com/products/sig/). [Readme](https://github.com/Roll20/roll20-character-sheets/blob/master/SIG/ReadMe.md). v1.1 (2017-09-17)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/Sig/sig.htm b/Sig/sig.htm index 3920260..0b9cfca 100644 --- a/Sig/sig.htm +++ b/Sig/sig.htm @@ -1,69 +1,61 @@ diff --git a/Swords_&_Wizardry/ReadMe.md b/Swords_&_Wizardry/ReadMe.md index e3078f8..a653595 100644 --- a/Swords_&_Wizardry/ReadMe.md +++ b/Swords_&_Wizardry/ReadMe.md @@ -4,13 +4,17 @@ Character sheet for Swords & Wizardry, in english and french. Initially created by Jacob Vann and overhauled by [Natha](https://github.com/NathaTerrien/roll20-wip/blob/master/README.md) (design, translation data, automated calcultations and rolls/roll template). # Current version -2.1, Screenshots: [english](SWSheet.png), [french](SWSheet_fr.png) +2.2, Screenshots: [english](SWSheet.png), [french](SWSheet_fr.png) The sheet and its automated calculations (modifiers etc.) are based on the Complete version of the rules. Every calculation can be overriden by manual input, if house rules are used. But modifying certain fields will fire again the associated automated calcultion. For example, modifying DEX will compute again the AC modifier, Total AC etc. and any custom value previously entered has to be set again. # Release notes +## v2.2 (2017-09-17) + +* Technical optimisation + ## v2.1 (2017-02-15) * Layout bug fix: Min/Max spell label was too long, and the corresponding field was hidden diff --git a/Swords_&_Wizardry/SWSheet.html b/Swords_&_Wizardry/SWSheet.html index 37064c9..1d0cdc3 100644 --- a/Swords_&_Wizardry/SWSheet.html +++ b/Swords_&_Wizardry/SWSheet.html @@ -1,66 +1,64 @@ diff --git a/WhiteLies/ReadMe.md b/WhiteLies/ReadMe.md index c009f81..630cbb0 100644 --- a/WhiteLies/ReadMe.md +++ b/WhiteLies/ReadMe.md @@ -5,13 +5,17 @@ Based on Swords & Wizardry WhiteBox, White Lies brings all the simple elegance o Character sheet for White Lies, in [english](http://dwdstudios.com/whitelies) and [french](http://legrumph.org/Terrier/?Chibi/White-Lies). # Current version -1.0 [Screenshot](whitelies.png) +1.1 [Screenshot](whitelies.png) The sheet has a few integrated rolls (with chat roll templates): attributes, initiative (which will add a selected token to the turn tracker, if opened), Hit Dice and Attacks+Damage. Attribute modifiers are automatically calculted. # Release notes +## v1.1 (2017-09-17) + +Technical optimisation. + ## v1.0 (2016-10-30) Creation of the sheet. diff --git a/WhiteLies/sheet.json b/WhiteLies/sheet.json index 0644712..f6d329f 100644 --- a/WhiteLies/sheet.json +++ b/WhiteLies/sheet.json @@ -4,6 +4,6 @@ "authors": "Natha", "roll20userid": "75857", "preview": "whitelies.png", - "instructions": "Character sheet for White Lies, in [english](http://dwdstudios.com/whitelies) and [french](http://legrumph.org/Terrier/?Chibi/White-Lies). Based on Swords and Wizardry WhiteBox, White Lies brings all the simple elegance of WhiteBox out of the dungeon and into the realm of espionage and paramilitary action and adventure! v1.0 (2016-10-30). [ReadMe](https://github.com/Roll20/roll20-character-sheets/blob/master/WhiteLies/ReadMe.md)." + "instructions": "Character sheet for White Lies, in [english](http://dwdstudios.com/whitelies) and [french](http://legrumph.org/Terrier/?Chibi/White-Lies). Based on Swords and Wizardry WhiteBox, White Lies brings all the simple elegance of WhiteBox out of the dungeon and into the realm of espionage and paramilitary action and adventure! v1.1 (2017-09-17). [ReadMe](https://github.com/Roll20/roll20-character-sheets/blob/master/WhiteLies/ReadMe.md)." ,"tipeee":"https://www.tipeee.com/natharoll20" } diff --git a/WhiteLies/whitelies.htm b/WhiteLies/whitelies.htm index 80d420d..22886bf 100644 --- a/WhiteLies/whitelies.htm +++ b/WhiteLies/whitelies.htm @@ -1,94 +1,82 @@