Adding rollable dmg for ships

This commit is contained in:
Miguel Peres
2021-03-08 10:29:13 -03:00
parent 629ca402bb
commit 270a243d8f
5 changed files with 117 additions and 2 deletions
+17 -1
View File
@@ -6841,7 +6841,7 @@ div.sheet-charmancer div.sheet-licensedsheet-flag:not(:empty) ~ * .sheet-summary
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .sheet-table-header {
grid-template-columns: 45px 1fr 60px 30px 50px 70px;
grid-gap: 2px;
max-width: calc(50% - 10px);
max-width: calc(50% - 30px);
}
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .sheet-table-header span {
font-size: 11px;
@@ -6853,6 +6853,22 @@ div.sheet-charmancer div.sheet-licensedsheet-flag:not(:empty) ~ * .sheet-summary
}
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .repcontainer .repitem {
border-top: 2px solid #e2c285;
margin-right: 20px;
}
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .repcontainer .repitem button[type=roll] {
position: absolute;
top: 4px;
right: -20px;
background: none;
border: none;
color: black;
box-shadow: none;
margin: 0;
padding: 0;
font-weight: bold;
}
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .repcontainer .repitem button[type=roll]:hover {
color: #00ba73;
}
.charsheet .sheet-pc .sheet-pc-ship .sheet-weapon-systems .repcontainer .repitem .sheet-table-body {
grid-template-columns: 45px 1fr 60px 30px 50px 70px;
+42
View File
@@ -4523,6 +4523,9 @@
<div class="sheet-damage-type"><span data-i18n="pc-ship-damage-type"></span></div>
</div>
<fieldset class="repeating_weapon-systems">
<input type="hidden" name="attr_rollbase" value="@{wtype}&{template:atk} {{mod=@{tohit}}} {{rname=[@{weapon}](~repeating_weapon-systems_atkdmg)}} {{rnamec=[@{weapon}](~repeating_weapon-systems_atkdmgc)}} {{r1=[[@{d20} + @{tohit}]]}} {{normal=1}} {{r2=[[0d20]]}} {{range=@{range}}} {{desc=@{special}}} ammo=@{ammo} @{charname_output} {{licensedsheet=@{licensedsheet}}}"/>
<input type="hidden" name="attr_atkdmg" value=""/>
<input type="hidden" name="attr_atkdmgc" value=""/>
<div class="sheet-grid-container table-body">
<div class="sheet-gunner">
<input type="text" name="attr_gunner"/>
@@ -4556,6 +4559,9 @@
<input type="checkbox" name="attr_recharge" value="1"/>
</label>
</div>
<button class="hidden" type="roll" value="@{atkdmg}" name="roll_atkdmg"></button>
<button class="hidden" type="roll" value="@{atkdmgc}" name="roll_atkdmgc"></button>
<button type="roll" value="@{rollbase}" name="roll_attack"> </button>
</fieldset>
<div><span data-i18n="weapon-systems-info"></span></div>
</div>
@@ -18692,6 +18698,42 @@ classRelatedAttrs.forEach(attr => {
});
});
/*
@{wtype}&{template:dmg} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[1d10]]}} {{dmg1type=}} @{dmg2flag} {{dmg2=[[0]]}} {{dmg2type=}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} {{spelllevel=@{spelllevel}}} {{innate=@{spell_innate}}} {{globaldamage=[[0]]}} {{globaldamagetype=@{global_damage_mod_type}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}
on("change:repeating_tool:toolname change:repeating_tool:toolbonus_base change:repeating_tool:toolattr_base
*/
var calcShipAtkdmgc = function(damage) {
let damagec = damage + '';
for(let i=20; i>=1; i--) {
damagec = damagec.replace(`${i}d`, `${i*2}d`);
damagec = damagec.replace(`${i}D`, `${i*2}D`);
}
return damagec;
};
var addShipDamageType = function(damage, type) {
if(!damage || !type) return damage;
return `${damage} [${type}]`;
}
on("change:repeating_weapon-systems", eventinfo => {
if(!eventinfo.sourceType || eventinfo.sourceType != 'player' || eventinfo.sourceAttribute.includes('atkdmg')) return;
const id = SheetUtils.getUID(eventinfo.triggerName);
const pre = `repeating_weapon-systems_${id}`;
const weaponAttributes = ['gunner', 'weapon', 'range', 'tohit', 'damage', 'dmgtype', 'special', 'ammo', 'recharge'].map(attr => { return `${pre}_${attr}`; });
getAttrs(weaponAttributes, values => {
if(values[`${pre}_damage`]) {
const damage = addShipDamageType(values[`${pre}_damage`], values[`${pre}_dmgtype`]);
const damagec = addShipDamageType(calcShipAtkdmgc(values[`${pre}_damage`]), values[`${pre}_dmgtype`]);
const atkdmg = `@{wtype}&{template:dmg} {{rname=@{weapon}}} {{attack=1}} {{range=@{range}}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[${damage}]]}} {{dmg1type=${values[`${pre}_dmgtype`]}}} {{desc=@{special}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}`;
const atkdmgc = `@{wtype}&{template:dmg} {{rname=@{weapon}}} {{attack=1}} {{range=@{range}}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[${damagec}]]}} {{dmg1type=${values[`${pre}_dmgtype`]}}} {{desc=@{special}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}`;
const update = {
[`${pre}_atkdmg`]: atkdmg,
[`${pre}_atkdmgc`]: atkdmgc,
}
setAttrs(update, {silent: true});
}
});
});
//# sourceURL=espergenesis.js
+16 -1
View File
@@ -6795,7 +6795,7 @@ div.sheet-charmancer
.sheet-table-header
grid-template-columns: 45px 1fr 60px 30px 50px 70px
grid-gap: 2px
max-width: calc(50% - 10px)
max-width: calc(50% - 30px)
span
font-size: 11px
@@ -6806,6 +6806,21 @@ div.sheet-charmancer
.repitem
border-top: 2px solid #e2c285
margin-right: 20px
button[type='roll']
position: absolute
top: 4px
right: -20px
background: none
border: none
color: black
box-shadow: none
margin: 0
padding: 0
font-weight: bold
&:hover
color: #00ba73
.sheet-table-body
grid-template-columns: 45px 1fr 60px 30px 50px 70px
+36
View File
@@ -3652,6 +3652,42 @@ classRelatedAttrs.forEach(attr => {
});
});
/*
@{wtype}&{template:dmg} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[1d10]]}} {{dmg1type=}} @{dmg2flag} {{dmg2=[[0]]}} {{dmg2type=}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} {{spelllevel=@{spelllevel}}} {{innate=@{spell_innate}}} {{globaldamage=[[0]]}} {{globaldamagetype=@{global_damage_mod_type}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}
on("change:repeating_tool:toolname change:repeating_tool:toolbonus_base change:repeating_tool:toolattr_base
*/
var calcShipAtkdmgc = function(damage) {
let damagec = damage + '';
for(let i=20; i>=1; i--) {
damagec = damagec.replace(`${i}d`, `${i*2}d`);
damagec = damagec.replace(`${i}D`, `${i*2}D`);
}
return damagec;
};
var addShipDamageType = function(damage, type) {
if(!damage || !type) return damage;
return `${damage} [${type}]`;
}
on("change:repeating_weapon-systems", eventinfo => {
if(!eventinfo.sourceType || eventinfo.sourceType != 'player' || eventinfo.sourceAttribute.includes('atkdmg')) return;
const id = SheetUtils.getUID(eventinfo.triggerName);
const pre = `repeating_weapon-systems_${id}`;
const weaponAttributes = ['gunner', 'weapon', 'range', 'tohit', 'damage', 'dmgtype', 'special', 'ammo', 'recharge'].map(attr => { return `${pre}_${attr}`; });
getAttrs(weaponAttributes, values => {
if(values[`${pre}_damage`]) {
const damage = addShipDamageType(values[`${pre}_damage`], values[`${pre}_dmgtype`]);
const damagec = addShipDamageType(calcShipAtkdmgc(values[`${pre}_damage`]), values[`${pre}_dmgtype`]);
const atkdmg = `@{wtype}&{template:dmg} {{rname=@{weapon}}} {{attack=1}} {{range=@{range}}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[${damage}]]}} {{dmg1type=${values[`${pre}_dmgtype`]}}} {{desc=@{special}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}`;
const atkdmgc = `@{wtype}&{template:dmg} {{rname=@{weapon}}} {{attack=1}} {{range=@{range}}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[${damagec}]]}} {{dmg1type=${values[`${pre}_dmgtype`]}}} {{desc=@{special}}} @{charname_output} {{licensedsheet=@{licensedsheet}}}`;
const update = {
[`${pre}_atkdmg`]: atkdmg,
[`${pre}_atkdmgc`]: atkdmgc,
}
setAttrs(update, {silent: true});
}
});
});
//# sourceURL=espergenesis.js
+6
View File
@@ -276,6 +276,9 @@ mixin armorClassOrManeuverEntry(name)
span(data-i18n='pc-ship-damage-type')
+repeatingSection('weapon-systems')
input(type='hidden' name='attr_rollbase' value!='@{wtype}&{template:atk} {{mod=@{tohit}}} {{rname=[@{weapon}](~repeating_weapon-systems_atkdmg)}} {{rnamec=[@{weapon}](~repeating_weapon-systems_atkdmgc)}} {{r1=[[@{d20} + @{tohit}]]}} {{normal=1}} {{r2=[[0d20]]}} {{range=@{range}}} {{desc=@{special}}} ammo=@{ammo} @{charname_output} {{licensedsheet=@{licensedsheet}}}')
input(type='hidden' name='attr_atkdmg' value!='')
input(type='hidden' name='attr_atkdmgc' value!='')
.sheet-grid-container.table-body
.sheet-gunner
input(type='text' name='attr_gunner')
@@ -301,6 +304,9 @@ mixin armorClassOrManeuverEntry(name)
input(type='checkbox' name='attr_recharge' value='3')
input(type='checkbox' name='attr_recharge' value='2')
input(type='checkbox' name='attr_recharge' value='1')
button.hidden(type='roll' value!='@{atkdmg}' name='roll_atkdmg')
button.hidden(type='roll' value!='@{atkdmgc}' name='roll_atkdmgc')
button(type='roll' value!='@{rollbase}' name='roll_attack')
div
span(data-i18n='weapon-systems-info')