diff --git a/Shadowrun3e/shadowrun3e.html b/Shadowrun3e/shadowrun3e.html
index 0e19791a2b..d44ae15fbf 100644
--- a/Shadowrun3e/shadowrun3e.html
+++ b/Shadowrun3e/shadowrun3e.html
@@ -1674,22 +1674,16 @@
name=attr_deck-reaction-final>
-
Combat TN
-
Attack>
-
Resist
Medic
@@ -5375,47 +5369,65 @@ on('clicked:matrixattack', (info) => {
});
on('clicked:matrixmaneuvers', (info) => {
- atts=["character_name", "deck-evasion-final", "deckcloak-rating-final"
+ atts=["character_name", "deck-evasion-final", "deck-sensors-final", "decklockon-rating-final", "deckcloak-rating-final", "wp-matrix", "decking"];
getAttrs(atts, function(myval) {
- var payload;
- if ( info["originalRollId"] != undefined ) {
- payload=rollEscape.unescape(info["originalRollId"]);
- }
- if (payload != null ) console.log('payload');
- console.log(payload);
- const mytitle=info["htmlAttributes"]["title"]
const myid=info["htmlAttributes"]["id"]
- var myutil="@{deckcloak-rating-final}";
- var myatt="deck-evasion-final";
- if ( mytitle == "Evade Detection" ) myatt = "deck-sensors-final";
- if ( mytitle == "Parry Attack" ) myutil = "@{decklockon-rating-final}";
- if ( mytitle == "Sensor Test" ) myutil = "@{decklockon-rating-final}";
- var calcTN="@{target|" + lang["target"] +"|" + myatt + "} + @{wp-matrix} +?{" + lang["miscellaneous-modifiers"] + "|0} - " + myutil;
- var calcDice="@{decking} + ?{" + lang["hacking-pool-dice"] + "}"
- var myroll="&{template:matrix}{{myname=@{character_name}}}{{target=@{target|" + lang["target"] +"|token_name}}}{{hackingpool=[[?{" + lang["hacking-pool-dice"] + "|0}]]}}"
- if (payload == null) myroll+="{{senddata2=[[0]]}}{{winner=[[0]]}}";
- else myroll+="{{testresult=[[0]]}}";
- myroll+="{{rolldice=[[" + calcDice + "]]}}{{targetnumber=[[" + calcTN + "]]}}";
- myroll+="{{action=" + mytitle + "}}"
- myroll+="{{targetname=@{target|" + lang["target"] + "|character_name}}"
- myroll+="{{roll= [[ [[" + calcDice + "]]d6>[[ {2,(" + calcTN + ")}kh1]]!! ]] }}"
- myroll+="{{detect=[Detect](~@{target|" + lang["target"] +"|token_name}|detection)}}"
- var payload={};
- startRoll(myroll, (results) => {
- updatepoolused("hackingpool", results.results.hackingpool.result);
- if ( payload == null) {
- payload={successes: results.results.roll.result, attacker: };
- finishRoll( results.rollId,
- {
- senddata2: rollEscape.escape(payload),
- });
- } else {
- finishRoll( results.rollId,
- const delta = payload["successes"] -
- {
- testresult: rollEscape.escape(payload),
- });
- }
+ var mytitle=info["htmlAttributes"]["title"]
+ const evasion=myval["deck-evasion-final"];
+ const sensors=myval["deck-sensors-final"];
+ const cloak=myval["deckcloak-rating-final"];
+ const lockon=myval["decklockon-rating-final"];
+ const wpmatrix=myval["wp-matrix"];
+ const decking=myval["decking"];
+ if ( info["originalRollId"] != undefined ) var payload=rollEscape.unescape(info["originalRollId"]);
+ var calcDice=evasion + " + ?{" + lang["hacking-pool-dice"] + "}";
+ var calcTN="@{target|" + lang["target"] +"|deck-sensors-final} + " + wpmatrix + " +?{" + lang["miscellaneous-modifiers"] + "|0} - " + cloak;
+ if (payload != null ) {
+ console.log('payload');
+ console.log(payload);
+ mytitle=payload["attacktype"];
+ calcDice=sensors + " + ?{" + lang["hacking-pool-dice"] + "}";
+ calcTN="@{target|" + lang["target"] +"|deck-evasion-final} + " + wpmatrix + " +?{" + lang["miscellaneous-modifiers"] + "|0} - " + lockon;
+ }
+ var myroll="&{template:matrix}";
+ if (payload == null) myroll+="{{senddata2=[[0]]}}";
+ else myroll+="{{testresult=[[0]]}}{{winner=[[0]]}}";
+ myroll+="{{mytoken=[[0[@{selected|token_name}]]]}}";
+ myroll+="{{myname=@{selected|token_name}}}";
+ myroll+="{{target=@{target|" + lang["target"] +"|token_name}}}{{hackingpool=[[?{" + lang["hacking-pool-dice"] + "|0}]]}}";
+ myroll+="{{rolldice=[[" + calcDice + "]]}}{{targetnumber=[[" + calcTN + "]]}}";
+ myroll+="{{action=" + mytitle + "}}";
+ myroll+="{{targetname=@{target|" + lang["target"] + "|character_name}}}";
+ myroll+="{{roll= [[ [[" + calcDice + "]]d6>[[ {2,(" + calcTN + ")}kh1]]!! ]] }}";
+ console.log(myroll);
+ startRoll(myroll, (results) => {
+ const mytoken=results.results.mytoken.expression.match(/\[(.*)\]/)[1];
+ updatepoolused("hackingpool", results.results.hackingpool.result);
+ if ( payload == null) {
+ payload={
+ successes: results.results.roll.result,
+ attacker: mytoken,
+ attacktype: mytitle + " Oppose"
+ };
+ finishRoll( results.rollId,
+ {
+ senddata2: rollEscape.escape(payload),
+ });
+ } else {
+ console.log('payload success is ' + payload["successes"]);
+ var delta = payload["successes"] - results.results.roll.result;
+ console.log('delta is ' + delta);
+ const mywinner=(delta > 0)? payload["attacker"]: (delta < 0)? mytoken : "none";
+ console.log('winner is ' + mywinner);
+ delta=(delta < 0)? (delta * -1) : delta;
+ console.log('delta is ' + delta);
+ finishRoll( results.rollId,
+ {
+ testresult: delta,
+ winner: mywinner,
+ });
+ }
+ });
});
});
on('clicked:adeptpower', (info) => {
@@ -7676,9 +7688,15 @@ on(utilsizechange, function(info) {
on("change:matrixsecurityrating", function() {
console.log('change of sec rating');
+ const atlist=["deck-bod-max", "deck-evasion-max", "deck-masking-max", "deck-sensors-max", "deck-mpcp-max", "deck-detection-max", "decking"];
getAttrs(["matrixsecurityrating"], function(myval) {
+ sets={};
let sr = parseInt(myval["matrixsecurityrating"]);
- setAttrs({"deck-bod-max":sr, "deck-evasion-max":sr, "deck-masking-max":sr, "deck-sensors-max":sr, "deck-mpcp-max":sr, "deck-detection-max":sr});
+ atlist.forEach(at=> {
+ sets[at]=sr;
+ });
+ console.log(sets);
+ setAttrs(sets);
});
});
@@ -9627,7 +9645,7 @@ powers: ["Accident", "Divination", "Guard", "Materialization", "Search"]
{{#sensor}}
Sensor Test {{sensor}}
{{/sensor}}
{{#blackic}}
[{{blackic}} Resist](~selected|resistroll||{{computed::payload}})
{{/blackic}}
{{#notes}}
{{notes}}
{{/notes}}
- {{#notes2}}
{{notes2}}
{{/notes2}}
+ {{#winner}}
Winner {{computed::winner}} : {{computed::testresult}}
{{/winner}}
{{#detect}}
{{target}}: {{detect}}
{{/detect}}
{{#clickme}}
{{clickme}}
{{/clickme}}
{{#matrixdmg}}
{{matrixdmg}} {{computed::roll}}{{/matrixdmg}}
diff --git a/Shadowrun3e/translation.json b/Shadowrun3e/translation.json
index 8a9b4109fe..8f9c20e446 100644
--- a/Shadowrun3e/translation.json
+++ b/Shadowrun3e/translation.json
@@ -21,6 +21,7 @@
"age": "Age",
"height": "Height",
"weight": "Weight",
+ "winner": "Winner",
"spirit-type": "Spirit Type",
"watcher": "Watcher",
"air-elemental": "Air Elemental",