removed alert stats from decking tab, it is not needed. Fixed calculation of deck attributes for Host/Grid/IC
This commit is contained in:
+139
-79
@@ -1538,9 +1538,8 @@
|
||||
<div>Hot ASIST</div>
|
||||
<div>Reality Filter</div>
|
||||
<div>IC Suppressed</div>
|
||||
<div class="text-mid">Target Status</div>
|
||||
<div class="text-mid">Icon Status</div>
|
||||
<div class="text-mid">Host/Grid Rating</div>
|
||||
<div class="text-mid">Alert Status</div>
|
||||
<div><input checked="checked" type="checkbox" name="attr_deck-dni" value=1></div>
|
||||
<div><input type="checkbox" name="attr_deck-asist" value=1> </div>
|
||||
<div><input type="checkbox" name="attr_deck-realityfilter" value=1></div>
|
||||
@@ -1556,11 +1555,6 @@
|
||||
<option>Orange</option>
|
||||
<option>Red</option>
|
||||
</select>
|
||||
<select name="attr_deck-alertstatus" class= "mediumselect2">
|
||||
<option value=0 SELECTED>None</option>
|
||||
<option value=4>Passive</option>
|
||||
<option value=5>Active</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="matrix-show-frame">
|
||||
@@ -1570,7 +1564,6 @@
|
||||
<div>IC Suppressed</div>
|
||||
<div class="text-mid">Icon Status</div>
|
||||
<div class="text-mid">Host/Grid Rating</div>
|
||||
<div class="text-mid">Alert Status</div>
|
||||
<div><input type="number" name="attr_decking" min=0 value=0> </div>
|
||||
<div><input type="number" name="attr_deck-utilitypayload" min=0 value=0></div>
|
||||
<div><input type="number" name="attr_deck-icsuppressed" min=0 value=0></div>
|
||||
@@ -1585,11 +1578,6 @@
|
||||
<option>Orange</option>
|
||||
<option>Red</option>
|
||||
</select>
|
||||
<select name="attr_deck-alertstatus" class= "mediumselect2">
|
||||
<option value=0 SELECTED>None</option>
|
||||
<option value=4>Passive</option>
|
||||
<option value=5>Active</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2745,7 +2733,7 @@
|
||||
<div class="text-mid" title="number or clips, belts or individual rounds"><b>Reloads</div>
|
||||
<div class="text-mid"><b>Ammo Type</div>
|
||||
<div class="text-mid"><b>Notes:</div>
|
||||
<select name="attr_skill" class="mediumselect3"
|
||||
<select name="attr_skill" class="mediumselect2"
|
||||
title="choose weapon active skill, use Other if there is no match and put skill level in Specialized box">
|
||||
<option SELECTED value="@{pistols}">Pistol</option>
|
||||
<option value="@{assaultrifles}">Assualt Rifle</option>
|
||||
@@ -2768,38 +2756,44 @@
|
||||
<div><input type="number" name="attr_tnmods" value=0></div>
|
||||
<div><input type="number" name="attr_recoilcomp" title="Gas vents and other recoil accesories"
|
||||
value=0></div>
|
||||
<select class="mediumselect3" name="attr_gyro">
|
||||
<select class="mediumselect2" name="attr_gyro">
|
||||
<option value="0" SELECTED>None</option>
|
||||
<option value="5">Regular</option>
|
||||
<option value="6">Deluxe</option>
|
||||
</select>
|
||||
<select class="mediumselect3" name="attr_targeting">
|
||||
<select class="mediumselect2" name="attr_targeting">
|
||||
<option value="0" SELECTED>None</option>
|
||||
<option value="-2">Smartlink</option>
|
||||
<option value="-1">LaserSight</option>
|
||||
<option value="-1">Smart Goggles</option>
|
||||
</select>
|
||||
<select name="attr_reloadmethod" class="mediumselect3">
|
||||
<select name="attr_reloadmethod" class="mediumselect2">
|
||||
<option>clip</option>
|
||||
<option>break</option>
|
||||
<option>magazine</option>
|
||||
<option>speed loader</option>
|
||||
<option>cylinder</option>
|
||||
<option>belt</option>
|
||||
<select>
|
||||
<div><input type="number" name="attr_reloads" value=0></div>
|
||||
<div><input type="text" list="ammotype" value="Regular" class="myweapontxt2"
|
||||
name="attr_ammotype"></div>
|
||||
<datalist class="mediumselect3" id="ammotype">
|
||||
<option>Regular</option>
|
||||
<option>ADPS</option>
|
||||
<option>Explosive</option>
|
||||
<option>Flechette</option>
|
||||
<option>Gel</option>
|
||||
<option>Tracer</option>
|
||||
<option>Explosive EX</option>
|
||||
</datalist>
|
||||
<textarea name="attr_notes" style='width:150px;height:22px;'></textarea>
|
||||
</select>
|
||||
<div><input type="number" name="attr_reloads" value=0></div>
|
||||
<select name="attr_ammotype" class="mediumselect2">
|
||||
<option value="regular">Regular</option>
|
||||
<option value="adps">ADPS</option>
|
||||
<option value="explosive">Explosive</option>
|
||||
<option value="explosive2">Explosive EX</option>
|
||||
<option value="flechette">Flechette</option>
|
||||
<option value="gel">Gel</option>
|
||||
<option value="tracer">Tracer</option>
|
||||
<option value="av">Anti-Vehicl</option>
|
||||
<option value="capsule">Capsule</option>
|
||||
<option value="glazer">Glazer</option>
|
||||
<option value="hic">Hi-C</option>
|
||||
<option value="hpoint">Hollow Point</option>
|
||||
<option value="incendiary">Incendiary</option>
|
||||
<option value="mercury">Mercury</option>
|
||||
<option value="tracker">Tracker</option>
|
||||
</select>
|
||||
<textarea name="attr_notes" style='width:150px;height:22px;'></textarea>
|
||||
</span>
|
||||
</div>
|
||||
<div class="table-bottom" />
|
||||
@@ -2836,7 +2830,7 @@
|
||||
</div>
|
||||
<div class="melee-table-row">
|
||||
<div class="text-mid"><input type="checkbox" name="attr_unarmed-equipped" checked></div>
|
||||
<input class="myweapontxt" type="text" name="attr_unarmed-name" value="Unarmed Combat">
|
||||
<input class="myweapontxt" type="text" name="attr_unarmed-name" value="Unarmed Combat" disabled>
|
||||
<select class="mediumselect2" name="attr_unarmedskill">
|
||||
<option value="@{unarmed}" selected>Unarmed</option>
|
||||
</select>
|
||||
@@ -2850,7 +2844,7 @@
|
||||
<input type="number" name="attr_unarmed-miscmods" value=0 \>
|
||||
<div><button class="attack-dice" id="unarmedattack" type="action" name="act_melee"
|
||||
title="Melee Attack"></button></div>
|
||||
<input name="attr_notes" type=""text></input>
|
||||
<input name="attr_notes" type="text"></input>
|
||||
</div>
|
||||
<div class="table-bottom" />
|
||||
<fieldset class="repeating_meleeweapons">
|
||||
@@ -4078,20 +4072,26 @@
|
||||
<option>speed loader</option>
|
||||
<option>cylinder</option>
|
||||
<option>belt</option>
|
||||
<select>
|
||||
<div><input type="number" name="attr_reloads" value=0></div>
|
||||
<div><input type="text" list="ammotype" value="Regular" class="myweapontxt2"
|
||||
name="attr_ammotype"></div>
|
||||
<datalist class="mediumselect3" id="ammotype">
|
||||
<option>Regular</option>
|
||||
<option>ADPS</option>
|
||||
<option>Explosive</option>
|
||||
<option>Flechette</option>
|
||||
<option>Gel</option>
|
||||
<option>Tracer</option>
|
||||
<option>Explosive EX</option>
|
||||
</datalist>
|
||||
<textarea name="attr_notes" style='width:150px;height:22px;'></textarea>
|
||||
</select>
|
||||
<div><input type="number" name="attr_reloads" value=0></div>
|
||||
<select name="attr_ammotype" class="mediumselect3">
|
||||
<option value="regular">Regular</option>
|
||||
<option value="adps">ADPS</option>
|
||||
<option value="explosive">Explosive</option>
|
||||
<option value="explosive2">Explosive EX</option>
|
||||
<option value="flechette">Flechette</option>
|
||||
<option value="gel">Gel</option>
|
||||
<option value="tracer">Tracer</option>
|
||||
<option value="av">Anti-Vehicl</option>
|
||||
<option value="capsule">Capsule</option>
|
||||
<option value="glazer">Glazer</option>
|
||||
<option value="hic">Hi-C<option>
|
||||
<option value="hpoint">Hollow Point</option>
|
||||
<option value="incendiary">Incendiary</option>
|
||||
<option value="mercury">Mercury</option>
|
||||
<option value="tracker">Tracker</option>
|
||||
</select>
|
||||
textarea name="attr_notes" style='width:150px;height:22px;'></textarea>
|
||||
</span>
|
||||
</div>
|
||||
<div class="table-bottom" />
|
||||
@@ -4612,21 +4612,24 @@ buttonlist.forEach(button => {
|
||||
const myrating=myrepeat.concat("rating-final");
|
||||
atts.push(myutil, myrating);
|
||||
if ( myid == "matrixrepeatingexec" ) utiltarget=myrepeat.concat("target");
|
||||
atts.push(utiltarget);
|
||||
if ( myid == "matrixrepeatingexec" ) console.log('utiltarget: ' + utiltarget);
|
||||
console.log(atts);
|
||||
getAttrs(atts, function(myval) {
|
||||
console.log(myval);
|
||||
const myutilvalue=myval[myutil];
|
||||
const myratingvalue=myval[myrating];
|
||||
const myutiltarget=myval[utiltarget];
|
||||
if ( myid == "matrixrepeatingattack" ) {
|
||||
action = "{{action=" + myutilvalue + " Attack}}";
|
||||
target = "{{target=@{target|Target|token_name}}}";
|
||||
calcTN="@{deck-tn} + @{wound_pen} + @{stun_pen} +@{matrix-penalty} +?{Miscellaneous Modifiers|0}";
|
||||
calcDice="@{decking} + ?{Hacking Pool Dice}";
|
||||
} else if ( myid == "matrixrepeatingexec" ) {
|
||||
console.log('utiltarget ' + myutiltarget);
|
||||
action="{{action=System Operation with " + myutilvalue + " Utility}}";
|
||||
target = "{{target=@{" + utiltarget + "}}}";
|
||||
calcTN="@{" + utiltarget + "} + floor(@{deck-alertstatus}/2) + @{wound_pen} + @{stun_pen} +@{matrix-penalty} - " + myratingvalue;
|
||||
target = "{{target=@{target|Target|token_name}}}";
|
||||
calcTN= myutiltarget + " + floor(@{target|Target|matrixalert}/2) + @{wound_pen} + @{stun_pen} +@{matrix-penalty} - " + myratingvalue;
|
||||
calcDice="@{decking} + ?{Hacking Pool Dice}";
|
||||
} else {
|
||||
action="{{action=" + myutilvalue + " Test}}";
|
||||
@@ -4734,12 +4737,29 @@ buttonlist.forEach(button => {
|
||||
});
|
||||
|
||||
on('clicked:matrixresist', (info) => {
|
||||
console.log(info);
|
||||
const myid=info["htmlAttributes"]["id"];
|
||||
const mytitle=info["htmlAttributes"]["title"];
|
||||
var calcTN="?{Power of Attack?|0} - @{deckarmor-rating-final}";
|
||||
var calcDice="@{deck-bod-final} + ?{Hacking Pool Dice|0}";
|
||||
var payload, myid;
|
||||
if ( info["htmlAttributes"]["id"] != undefined) {
|
||||
myid=info["htmlAttributes"]["id"];
|
||||
} else if ( info["originalRollId"] != undefined ) {
|
||||
payload=rollEscape.unescape(info["originalRollId"]);
|
||||
}
|
||||
var calcTN;
|
||||
var calcDice;
|
||||
var myroll="&{template:matrix}";
|
||||
console.log(info);
|
||||
if ( payload ) {
|
||||
console.log(payload);
|
||||
power=payload["power"];
|
||||
attribute=payload["attribute"];
|
||||
attacktype=payload["attacktype"];
|
||||
console.log ('power ' + power + ' att ' + attribute + ' attacktype ' + attacktype);
|
||||
calcDice="@{" + attribute + "} + ?{Hacking Pool Dice|0}";
|
||||
calcTN="?{Power of Attack?|" + power + "}";
|
||||
if ( attacktype == "cybercombat" ) calcTN+= " - @{deckarmor-rating-final}";
|
||||
} else {
|
||||
calcTN="?{Power of Attack?|0} - @{deckarmor-rating-final}";
|
||||
calcDice="@{deck-bod-final} + ?{Hacking Pool Dice|0}";
|
||||
}
|
||||
myroll+="{{action=Damage Resistance Test}}";
|
||||
myroll+="{{rolldice=[[" + calcDice + "]]}}";
|
||||
myroll+="{{targetnumber=[[" + calcTN + "]]}}";
|
||||
@@ -4753,6 +4773,10 @@ buttonlist.forEach(button => {
|
||||
});
|
||||
});
|
||||
|
||||
const iclist = {
|
||||
proactive: ["Crippler", "Ripper", "Killer", "Blaster", "Sparky", "Scout", "Black Ic", "Cerebropathic", "Psychotropic", "Trace"],
|
||||
reactive: ["Probe", "Scramble", "Tar Baby", "Tar pit", "Data Bomb", "Pavlov"]
|
||||
};
|
||||
|
||||
on('clicked:matrixattack', (info) => {
|
||||
const myid=info["htmlAttributes"]["id"]
|
||||
@@ -4768,7 +4792,8 @@ on('clicked:matrixattack', (info) => {
|
||||
myroll+= myaction;
|
||||
myroll+="{{rolldice=[[" + calcDice + "]]}}"
|
||||
myroll+="{{targetnumber=[[" + calcTN + "]]}}";
|
||||
myroll+="{{utilitylevel=@{" + myid + "-rating-final}}}"
|
||||
myroll+="{{utilitylevel=[[@{" + myid + "-rating-final}]]}}"
|
||||
myroll+="{{senddata=[[0]]}}";
|
||||
myroll+="{{iconstatus=[[@{target|Target|iconstatuscode}]]}}";
|
||||
if ( systemrating == "UNKNOWN" ) myroll+="{{systemrating=[[@{target|Host|matrixsecuritynumber}]]}}";
|
||||
else myroll+="{{systemrating=[[" + matrixtn[systemrating]["secrating"] + "]]}}";
|
||||
@@ -4785,10 +4810,14 @@ on('clicked:matrixattack', (info) => {
|
||||
finaltn += myhosttn;
|
||||
const finaldice = (results.results.roll.dice.filter(mydice=> mydice >= finaltn )).length;
|
||||
updatepoolused("hackingpool", results.results.hackingpool.result);
|
||||
console.log('final tn ' + finaltn);
|
||||
console.log('final foll ' + finaldice);
|
||||
let payload= {
|
||||
power: results.results.utilitylevel.result,
|
||||
attacktype: "cybercombat",
|
||||
attribute: "deck-bod-final"
|
||||
}
|
||||
finishRoll( results.rollId,
|
||||
{
|
||||
senddata: rollEscape.escape(payload),
|
||||
targetnumber: finaltn,
|
||||
roll: finaldice,
|
||||
});
|
||||
@@ -5221,21 +5250,22 @@ on('clicked:matrixattack', (info) => {
|
||||
|
||||
const ammomods = {
|
||||
regular: { armor: "ballistic", av: 0, power: 0, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
adps: { armor: "ballistic * 0.5", av: 0, power: 0, dmg: 0, recoil: 1, barrier: 0.5, knockdown: 1 },
|
||||
adps: { armor: "Math.floor(ballistic * 0.5)", av: 0, power: 0, dmg: 0, recoil: 1, barrier: 0.5, knockdown: 1 },
|
||||
explosive: { armor: "ballistic", av: 0, power: 1, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
explosive2: { armor: "ballistic", av: 0, power: 2, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
flechette: { armor: "return (Math.max(ballistic, (impact * 2)))", av: -0.5, power: 0, dmg: "if ( ballistic + impact ==0 ) return 1; else return 0;", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
gel: { armor: "impact", av: 0, power: -2, dmg: "stun", recoil: 1, barrier: 1, knockdown: 2 },
|
||||
flechette: { armor: "(Math.max(ballistic, (impact * 2)))", av: -0.5, power: 0, dmg: "((ballistic + impact) ==0)? 1 : 0;", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
gel: { armor: "impact", av: 0, power: -2, dmg: 0, recoil: 1, barrier: 1, knockdown: 2 },
|
||||
tracer: { armor: "ballistic", av: 0, power: "-(Math.floor(rounds/3))", dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
av: { armor: "ballistic * 0.5", av: 1, power: 0, dmg: 0, recoil: 1, barrier: 0.5, knockdown: 1 },
|
||||
capsule: { armor: "impact", av: 0, power: -2, dmg: "stun", recoil: 1, barrier: 1, knockdown: 1 },
|
||||
glazer: { armor: "Math.max((ballistic * 2), (impact * 2))", av: -0.5, power: 2, dmg: "if(ballistic + impact)==0 return 1 else return 0", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
hic: { armor: "Math.max(ballistic,impact)", av: 0, power: "if ((range=='extreme')||(range=='long')) return -1 else return 0", dmg: 0, recoil: 2, barrier: 1, knockdown: 1 },
|
||||
hp: { armor: "ballistic + impact", av: 0, power: "if(ballistic + impact)==0 return 3 else return 1", dmg: 0, recoil: 2, barrier: 1, knockdown: 1 },
|
||||
av: { armor: "Math.floor(ballistic * 0.5)", av: 1, power: 0, dmg: 0, recoil: 1, barrier: 0.5, knockdown: 1 },
|
||||
capsule: { armor: "impact", av: 0, power: -2, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
glazer: { armor: "Math.max((ballistic * 2), (impact * 2))", av: -0.5, power: 2, dmg: "((ballistic + impact) ==0)? 1 : 0;", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
hic: { armor: "Math.max(ballistic,impact)", av: 0, power: "(range==6)? -1 : (range==9)? -1", dmg: 0, recoil: 2, barrier: 1, knockdown: 1 },
|
||||
hpoint: { armor: "ballistic + impact", av: 0, power: "((ballistic + impact ==0)? 3 : 1", dmg: 0, recoil: 2, barrier: 1, knockdown: 1 },
|
||||
incendiary: { armor: "ballistic", av: 0, power: 0, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 },
|
||||
mercury: { armor: "Math.max((ballistic * 2), (impact * 2))", av: -0.5, power: 0, dmg: "if(ballistic + impact)==0 return 1 else return 0", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
mercury: { armor: "Math.max((ballistic * 2), (impact * 2))", av: -0.5, power: 0, dmg: "((ballistic + impact) ==0)? 1 : 0;", recoil: 1, barrier: 2, knockdown: 1 },
|
||||
tracker: { armor: "ballistic", av: 0, power: 0, dmg: 0, recoil: 1, barrier: 1, knockdown: 1 }
|
||||
}
|
||||
|
||||
const resistdmg = function (myid, mods) {
|
||||
atts=["ballistic", "impact", "dermal-armor"];
|
||||
getAttrs(atts, function (myval) {
|
||||
@@ -5255,9 +5285,12 @@ on('clicked:matrixattack', (info) => {
|
||||
const ammo=mods["ammotype"].toLowerCase();
|
||||
weapondmg = mods["wdmg"];
|
||||
dodge = mods["dodge"];
|
||||
var armorval = eval(ammomods[ammo]["armor"]);
|
||||
const range = mods["range"];
|
||||
const armorval = eval(ammomods[ammo]["armor"]);
|
||||
const powermod = eval(ammomods[ammo]["power"]);
|
||||
dmgcode = damagetable[weapondmg] + eval(ammomods[ammo]["dmg"]);
|
||||
const dmgmod = eval(ammomods[ammo]["dmg"]);
|
||||
dmgcode = damagetable[weapondmg] + dmgmod;
|
||||
console.log ('armorval ' + armorval + ' powermod ' + powermod + ' dmgmod ' + dmgmod + ' range ' + range);
|
||||
myroll +="{{Power=?{Attack Power|" + mods.power + "}}}";
|
||||
myroll+="{{wpndmg=" + weapondmg + "}}";
|
||||
myroll +="{{attacktest=[[" + mods["attacktest"] + "]]}}";
|
||||
@@ -5799,7 +5832,7 @@ on('clicked:matrixattack', (info) => {
|
||||
const myweapon= myval[myrepeat.concat("name")];
|
||||
const combatused=parseInt(myval["combatpool-used"]);
|
||||
const controlused=parseInt(myval["controlpool-used"]);
|
||||
const wdmg= myval[myrepeat.concat("damage")];
|
||||
var wdmg= myval[myrepeat.concat("damage")];
|
||||
const ammoremain= myval[myrepeat.concat("ammoremain")];
|
||||
const ammotype= myval[myrepeat.concat("ammotype")];
|
||||
const targetaim= myval[myrepeat.concat("targeting")];
|
||||
@@ -5808,6 +5841,10 @@ on('clicked:matrixattack', (info) => {
|
||||
if ( myval["gyro-on"] == 0 ) gyro=0;
|
||||
const firemode= myval[myrepeat.concat("firemode")];
|
||||
var dmgnumber= damagetable[wdmg];
|
||||
if (( ammotype == "gel" || ammotype == "capsule" ) && dmgnumber < 10 ) {
|
||||
dmgnumber += 9;
|
||||
wdmg=damagetable[dmgnumber];
|
||||
}
|
||||
if (dmgnumber >= 10) dmgmax=13;
|
||||
var wpower= myval[myrepeat.concat("power")];
|
||||
var ammoleft=myval[myrepeat.concat("ammoremain")];
|
||||
@@ -5859,7 +5896,7 @@ on('clicked:matrixattack', (info) => {
|
||||
|
||||
|
||||
var roll="&{template:attack}{{myname=@{character_name}}}{{target=@{target|Target|token_name}}}";
|
||||
roll += "{{rounds=[[" + rounds + "]]}}{{range=@{ask-range}}}";
|
||||
roll += "{{rounds=[[" + rounds + "]]}}{{range=[[@{ask-range}]]}}";
|
||||
roll += "{{targetnumber=" + calcTN + " }}{{rolldice=" + calcDice + "}}";
|
||||
roll += "{{weaponname=" + myweapon + "}}{{weapondamage=" + wdmg + "}}{{weaponpower=[[" + wpower + "]]}}";
|
||||
roll += "{{" + pool + "=[[?{" + poolname + " Pool Dice}]]}}{{weaponname=" + myweapon + "}}{{ammotype=" + ammotype + "}}";
|
||||
@@ -5887,6 +5924,7 @@ on('clicked:matrixattack', (info) => {
|
||||
let payload= {
|
||||
attacker: myname,
|
||||
armortype: "ballistic",
|
||||
range: results.results.range.result,
|
||||
wdmg: wdmg,
|
||||
rounds: results.results.rounds.result,
|
||||
dodge: 0,
|
||||
@@ -6560,6 +6598,7 @@ on('clicked:matrixattack', (info) => {
|
||||
pgetatts.push(p.concat("-mods"));
|
||||
});
|
||||
on(pchangelist, function() {
|
||||
console.log('deck-mpcp change');
|
||||
getAttrs(pgetatts, function(myval) {
|
||||
sets={};
|
||||
console.log(myval);
|
||||
@@ -6615,9 +6654,10 @@ on(utilsizechange, function(info) {
|
||||
|
||||
|
||||
on("change:matrixsecurityrating", function() {
|
||||
console.log('change of sec rating');
|
||||
getAttrs(["matrixsecurityrating"], function(myval) {
|
||||
let sr = parseInt(myval["matrixsecurityrating"]);
|
||||
setAttrs({"deck-bod-final":sr, "deck-evasion-final":sr, "deck-masking-final":sr, "deck-sensors-final":sr, "deck-mpcp-final":sr, "deck-detection-final":sr});
|
||||
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});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6779,23 +6819,38 @@ on("change:deckattacklevel", function() {
|
||||
gets.push(myrepeat.concat("matrix-iconstatus"));
|
||||
getAttrs(gets, function (myval) {
|
||||
var myatt="@{target|Target|deck-evasion-final}";
|
||||
const name=myval[myrepeat.concat("icname")];
|
||||
const ictype=myval[myrepeat.concat("ictype")];
|
||||
console.log('ictype ' + ictype);
|
||||
const penalty=parseInt(myval[myrepeat.concat("ic-penalty")]);
|
||||
const targeticon=myval[myrepeat.concat("matrix-iconstatus")];
|
||||
var icmode="proactive";
|
||||
if ( iclist["reactive"].includes(ictype)) {
|
||||
icmode="reactive";
|
||||
}
|
||||
const code=myval["matrixcode"].toUpperCase();
|
||||
const rating=parseInt(myval[myrepeat.concat("icrating")]);
|
||||
var ictest=myval[myrepeat.concat("ictargettest")];
|
||||
console.log('test ' + ictest);
|
||||
const name=myval[myrepeat.concat("icname")];
|
||||
const ictype=myval[myrepeat.concat("ictype")];
|
||||
const penalty=parseInt(myval[myrepeat.concat("ic-penalty")]);
|
||||
const targeticon=myval[myrepeat.concat("matrix-iconstatus")];
|
||||
var targetatt="bod";
|
||||
if ( (icmode="proactive") && (ictest.includes("target")) ) targetatt=ictest.split("-")[1];
|
||||
const attacktn =matrixtn[code][targeticon];
|
||||
console.log('test2 ' + attacktn);
|
||||
if ( ictest=="Attack" ) ictest=attacktn;
|
||||
if ( icmode=="proactive" ) ictest=attacktn;
|
||||
if ( ictype == "Probe" ) {
|
||||
console.log('probe!');
|
||||
ictest="@{target|decker|deck-detection-final}";
|
||||
}
|
||||
const payload = {
|
||||
power: rating,
|
||||
attribute: "deck-" + targetatt + "-final",
|
||||
attacktype: ictype
|
||||
};
|
||||
var target="{{target=@{target|Target|token_name}}}";
|
||||
if ( mytitle == "Evade Detection" ) myatt = "@{target|Target|deck-sensors-final}";
|
||||
if ( mytitle == "IC Resist" ) myatt = "?{Power of Attack?|2}";
|
||||
if ( mytitle == "IC Resist" ) target = "{{target=" + name + "}}";
|
||||
if ( mytitle == "IC Execute" ) {
|
||||
myatt = ictest;
|
||||
console.log('myatt ' + myatt);
|
||||
target="{{target=@{target|decker|token_name}}}";
|
||||
}
|
||||
var calcTN= myatt + " +?{Miscellaneous Modifiers|0} + " + penalty;
|
||||
@@ -6804,12 +6859,16 @@ on("change:deckattacklevel", function() {
|
||||
if (( ictype == "Tar Baby") || (ictype == "Tar pit")) calcDice=rating;
|
||||
var myroll="&{template:matrix}{{myname=" + name + "}}";
|
||||
myroll+=target;
|
||||
myroll+="{{senddata=[[0]]}}";
|
||||
myroll+="{{rolldice=[[" + calcDice + "]]}}{{targetnumber=[[" + calcTN + "]]}}";
|
||||
myroll+="{{action=" + mytitle + "}}"
|
||||
myroll+="{{roll= [[ [[" + calcDice + "]]d6>[[ {2,(" + calcTN + ")}kh1]]!! ]] }}"
|
||||
console.log(myroll);
|
||||
startRoll(myroll, (results) => {
|
||||
finishRoll( results.rollId);
|
||||
finishRoll( results.rollId,
|
||||
{
|
||||
senddata: rollEscape.escape(payload),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8476,6 +8535,7 @@ powers: ["Accident", "Divination", "Guard", "Materialization", "Search"]
|
||||
{{#hackingpool}}<div class="rtrow"><b>Hacking Pool Dice:</b> {{hackingpool}}</div>{{/hackingpool}}
|
||||
{{#description}}<div class="rtrow">{{description}}</div>{{/description}}
|
||||
<div class="sheet-rtrow"><b>{{action}}:</b> {{computed::roll}}</div>
|
||||
{{#senddata}}<div class="sheet-rtrow"><b>{{target}}:</b> [Resist](~selected|matrixresist||{{computed::senddata}})</div>{{/senddata}}
|
||||
{{#notes}}<div class="sheet-rtrow"> {{notes}}</div>{{/notes}}
|
||||
{{#notes2}}<div class="sheet-rtrow"> {{notes2}}</div>{{/notes2}}
|
||||
{{#detect}}<div class="sheet-rtrow"><b>{{target}}:</b> {{detect}}</div>{{/detect}}
|
||||
|
||||
Reference in New Issue
Block a user