Compare commits

...

3 Commits

Author SHA1 Message Date
9a20a96cec Start vehicle automation 2022-09-16 17:36:58 +02:00
ae697b0bb8 WIP for vehicle sheets 2022-09-09 08:33:28 +02:00
ecf5a38eb0 WIP for vehicle sheets 2022-09-08 21:26:45 +02:00
21 changed files with 660 additions and 250 deletions

View File

@ -1,6 +1,6 @@
[Dolphin]
SortRole=creationtime
Timestamp=2021,4,13,9,23,48.267
SortRole=modificationtime
Timestamp=2022,9,8,20,43,38.73
Version=4
ViewMode=1
VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -9,8 +9,21 @@ const __subkey2title = {
"melee-dmg": "Melee Damage", "melee-atk": "Melee Attack", "ranged-atk": "Ranged Attack",
"ranged-dmg": "Ranged Damage", "dmg-res": "Damare Resistance"
}
const __statBuild = [
{ modules: ["vehiclehull"], field: "hr", itemfield: "hr" },
{ modules: ["vehiclehull", "vehiclemodule"], field: "hr", itemfield: "size", subfield: "size" },
//{ modules: ["vehiclehull"], field: "pc", itemfield: "vms", subfield: "avgnrg" },
//{ modules: ["powercoremodule"], field: "pc", itemfield: "nrg", subfield: "avgnrg" },
{ modules: ["vehiclehull", "mobilitymodule"], itemfield: "man", field: "man" },
{ modules: ["powercoremodule"], field: "pc", itemfield: "pc", },
{ modules: ["mobilitymodule"], field: "mr", itemfield: "mr", },
{ modules: ["propulsionmodule"], field: "ad", itemfield: "ad", },
{ modules: ["combatmodule"], field: "fc", itemfield: "fc", },
]
const __isVehicleUnique = { vehiclehull:1, powercoremodule:1, mobilitymodule: 1, propulsionmodule: 1, combatmodule: 1}
const __speed2Num = { fullstop: 0, crawling: 1, slow: 2, average: 3, fast: 4, extfast: 5 }
const __num2speed = ["fullstop", "crawling", "slow", "average", "fast", "extfast"]
/* -------------------------------------------- */
/* -------------------------------------------- */
/**
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
@ -71,7 +84,9 @@ export class PegasusActor extends Actor {
this.system.encCapacity = this.getEncumbranceCapacity()
this.buildContainerTree()
}
if (this.type == 'vehicle') {
this.computeVehicleStats();
}
super.prepareDerivedData();
}
@ -106,6 +121,42 @@ export class PegasusActor extends Actor {
let comp = this.items.filter(item => item.type == 'effect');
return comp;
}
/* -------------------------------------------- */
getCombatModules() {
let comp = this.items.filter(item => item.type == 'combatmodule');
return comp;
}
/* -------------------------------------------- */
getVehicleHull() {
let comp = this.items.filter(item => item.type == 'vehiclehull');
return comp;
}
/* -------------------------------------------- */
getPowercoreModules() {
let comp = this.items.filter(item => item.type == 'powercoremodule');
return comp;
}
/* -------------------------------------------- */
getMobilityModules() {
let comp = this.items.filter(item => item.type == 'mobilitymodule');
return comp;
}
/* -------------------------------------------- */
getPropulsionModules() {
let comp = this.items.filter(item => item.type == 'propulsionmodule');
return comp;
}
/* -------------------------------------------- */
getVehicleModules() {
let comp = this.items.filter(item => item.type == 'vehiclemodule');
return comp;
}
/* -------------------------------------------- */
getVehicleWeaponModules() {
let comp = this.items.filter(item => item.type == 'vehicleweaponmodule');
return comp;
}
/* -------------------------------------------- */
getPowers() {
let comp = this.items.filter(item => item.type == 'power');
@ -577,6 +628,7 @@ export class PegasusActor extends Actor {
/* -------------------------------------------- */
async preprocessItem(event, item, onDrop = false) {
// Pre-filter effects
if (item.type == 'effect') {
if (this.checkMentalDisruption() && item.system.type == "mental" && item.system.genre == "positive") {
@ -624,7 +676,7 @@ export class PegasusActor extends Actor {
return false
}
}
if (item.type == "power" && item.system.purchasedtext.length > 0 ) {
if (item.type == "power" && item.system.purchasedtext.length > 0) {
ChatMessage.create({ content: `Power ${item.name} puchased : ${item.system.purchasedtext}` })
}
let dropID = $(event.target).parents(".item").attr("data-item-id") // Only relevant if container drop
@ -713,8 +765,8 @@ export class PegasusActor extends Actor {
if (spec) {
let powers = []
for (let power of spec.system.powers) {
if ( power.data ) {
power.system = power.data
if (power.data) {
power.system = power.data
}
power.system.specId = specId
powers.push(power)
@ -861,10 +913,18 @@ export class PegasusActor extends Actor {
/* -------------------------------------------- */
incDecNRG(value) {
let nrg = duplicate(this.system.nrg)
nrg.value += value
if (nrg.value >= 0 && nrg.value <= nrg.max) {
this.update({ 'data.nrg': nrg })
if (this.type == "character") {
let nrg = duplicate(this.system.nrg)
nrg.value += value
if (nrg.value >= 0 && nrg.value <= nrg.max) {
this.update({ 'data.nrg': nrg })
}
} else {
let pc = duplicate(this.system.statistics.pc)
pc.curnrg += value
if (pc.curnrg >= 0) {
this.update({ 'system.statistics.pc': pc })
}
}
}
@ -932,7 +992,7 @@ export class PegasusActor extends Actor {
if (status == "activated") {
// Add effects linked to the perk
let effects = []
for (let effect of item.system.effectsgained) {
for (let effect of item.system.effectsgained) {
if (effect.data) {
effect.system = effect.data
}
@ -1099,11 +1159,10 @@ export class PegasusActor extends Actor {
}
}
/* -------------------------------------------- */
async computeNRGHealth() {
if (this.type == "vehicle") {
return
}
if (this.isOwner || game.user.isGM) {
let updates = {}
let phyDiceValue = PegasusUtility.getDiceValue(this.system.statistics.phy.value) + this.system.secondary.health.bonus + this.system.statistics.phy.mod;
@ -1694,4 +1753,141 @@ export class PegasusActor extends Actor {
ui.notifications.warn("Power not found !", powerId);
}
}
/* -------------------------------------------- */
/* VEHICLE STUFF */
manageCurrentSpeed(speed) {
if (speed == "fullstop") {
this.update({ 'system.secondary.moverange': "nomovement" })
}
if (speed == "crawling") {
this.update({ 'system.secondary.moverange': "threatzone" })
}
if (speed == "slow") {
this.update({ 'system.secondary.moverange': "close" })
}
if (speed == "average") {
this.update({ 'system.secondary.moverange': "medium" })
}
if (speed == "fast") {
this.update({ 'system.secondary.moverange': "long" })
}
if (speed == "extfast") {
this.update({ 'system.secondary.moverange': "extreme" })
}
}
/* -------------------------------------------- */
modifyVehicleStun(incDec) {
let stun = this.system.stun.value + incDec
this.update({ 'stun.value': stun })
}
/* -------------------------------------------- */
addTopSpeedBonus( topspeed, bonus) {
let num = __speed2Num[topspeed] + Number(bonus)
num = Math.max(0, num)
num = Math.min(num, __num2speed.length-1)
return __num2speed[num]
}
/* -------------------------------------------- */
async computeVehicleStats() {
if (this.type == "vehicle") {
for (let statDef of __statBuild) {
let sum = 0
let list = []
for (let moduleType of statDef.modules) {
list = list.concat(this.items.filter(item => item.type == moduleType))
}
if (list && list.length > 0) {
sum = list.reduce((value, item2) => value + Number(item2.system[statDef.itemfield]), 0)
}
//console.log("Processing", statDef.field, this.system.statistics[statDef.field].level, list, sum)
if (statDef.subfield){
if (sum != Number(this.system.statistics[statDef.field][statDef.subfield])) {
//console.log("Update", statDef.field, statDef.subfield, sum, this.system.statistics[statDef.field][statDef.subfield])
this.update({ [`system.statistics.${statDef.field}.${statDef.subfield}`]: sum } )
}
} else {
if (sum != Number(this.system.statistics[statDef.field].level)) {
this.update({ [`system.statistics.${statDef.field}.level`]: sum, [`system.statistics.${statDef.field}.currentlevel`]: sum })
}
}
}
// Top speed management
let mobility = this.items.find( item => item.type == "mobilitymodule")
let arcs = duplicate(this.system.arcs)
if (mobility) {
let propulsion = this.items.find( item => item.type == "propulsionmodule")
let bonus = (propulsion) ? propulsion.system.topspeed : 0
arcs.frontarc.topspeed = this.addTopSpeedBonus(mobility.system.ts_f, bonus)
arcs.rightarc.topspeed = mobility.system.ts_s
arcs.leftarc.topspeed = mobility.system.ts_s
arcs.toparc.topspeed = mobility.system.ts_s
arcs.bottomarc.topspeed = mobility.system.ts_s
arcs.reararc.topspeed = mobility.system.ts_r
} else {
arcs.frontarc.topspeed = "fullstop"
arcs.rightarc.topspeed = "fullstop"
arcs.leftarc.topspeed = "fullstop"
arcs.toparc.topspeed = "fullstop"
arcs.bottomarc.topspeed = "fullstop"
arcs.reararc.topspeed = "fullstop"
}
for (let key in this.system.arcs) {
if (this.system.arcs[key].topspeed != arcs[key].topspeed) {
this.update( { 'system.arcs': arcs})
}
}
// VMS management
let hull = this.items.find( item => item.type == "vehiclehull")
let modules = duplicate(this.system.modules)
if (hull ) {
modules.totalvms = Number(hull.system.vms)
} else {
modules.totalvms = 0
}
let spaceList = this.items.filter(item => item.type == "vehiclemodule") || []
spaceList = spaceList.concat(this.items.filter(item => item.type == "vehicleweaponmodule") || [])
let space = 0
if (spaceList && spaceList.length> 0) {
space = spaceList.reduce((value, item2) => value + Number(item2.system.space), 0)
}
modules.usedvms = space
if ( modules.totalvms != this.system.modules.totalvms || modules.usedvms != this.system.modules.usedvms) {
this.update( {'system.modules': modules})
}
if (modules.usedvms > modules.totalvms ) {
ui.notifications.warn("Warning! No more space available in cargo !!")
}
}
// Manage top speed
}
/* -------------------------------------------- */
async preprocessItemVehicle(event, item, onDrop = false) {
//console.log(">>>>> item", item.type, __isVehicleUnique[item.type])
if ( __isVehicleUnique[item.type] ) {
let toDelList = []
for (let toDel of this.items) {
if ( toDel.type == item.type) {
toDelList.push( toDel.id )
}
}
//console.log("TODEL : ", toDelList)
if ( toDelList.length > 0 ) {
await this.deleteEmbeddedDocuments('Item', toDelList)
}
}
return true
}
}

View File

@ -399,7 +399,7 @@ export class PegasusUtility {
this.rollPegasus(rollData)
character.modifyHeroLevelRemaining(-1)
} else {
ui.notifications.warn(`No more Hero Level for ${actor.name} ! Unable to reroll.`)
ui.notifications.warn(`No more Hero Level for ${character.name} ! Unable to reroll.`)
}
}
}

View File

@ -43,6 +43,13 @@ export class PegasusVehicleSheet extends ActorSheet {
optionsLevel: PegasusUtility.getOptionsLevel(),
subActors: duplicate(this.actor.getSubActors()),
effects: duplicate(this.actor.getEffects()),
combatModules: duplicate(this.actor.getCombatModules()),
powerCoreModules: duplicate(this.actor.getPowercoreModules()),
vehicleHull: duplicate(this.actor.getVehicleHull()),
mobilityModules: duplicate(this.actor.getMobilityModules()),
propulsionModules: duplicate(this.actor.getPropulsionModules()),
vehicleModules: duplicate(this.actor.getVehicleModules()),
vehicleWeaponModules: duplicate(this.actor.getVehicleWeaponModules()),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
@ -106,15 +113,9 @@ export class PegasusVehicleSheet extends ActorSheet {
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
})
html.find('.spec-group-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.specPowerActivate( itemId)
});
html.find('.spec-group-deactivate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.specPowerDeactivate( itemId)
html.find('.current-speed-change').click(ev => {
let speed = ev.currentTarget.value
this.actor.manageCurrentSpeed(speed)
});
html.find('.equip-activate').click(ev => {
@ -133,32 +134,6 @@ export class PegasusVehicleSheet extends ActorSheet {
let itemId = li.data("item-id");
this.actor.perkEffectUsed( itemId)
});
html.find('.perk-status').change(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.updatePerkStatus( itemId, ev.currentTarget.value)
this.render()
});
html.find('.power-cost-spent').change(ev => {
const li = $(ev.currentTarget).parents(".item");
let itemId = li.data("item-id");
this.actor.updatePowerSpentCost( itemId, ev.currentTarget.value)
});
html.find('.power-dmg-roll').click(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
this.actor.powerDmgRoll( itemId )
})
html.find('.perk-used').change(ev => {
const li = $(ev.currentTarget).parents(".item")
let itemId = li.data("item-id")
let index = Number($(ev.currentTarget).data("use-index") )
this.actor.updatePerkUsed( itemId, index, ev.currentTarget.checked )
});
html.find('.subactor-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
@ -181,10 +156,10 @@ export class PegasusVehicleSheet extends ActorSheet {
const li = $(event.currentTarget).parents(".item");
this.actor.incDecQuantity( li.data("item-id"), +1 );
} )
html.find('.current-nrg-minus').click(event => {
html.find('.vehicle-current-nrg-minus').click(event => {
this.actor.incDecNRG( -1 );
} )
html.find('.current-nrg-plus').click(event => {
html.find('.vehicle-current-nrg-plus').click(event => {
this.actor.incDecNRG( 1 );
} )
@ -197,11 +172,11 @@ export class PegasusVehicleSheet extends ActorSheet {
this.actor.incDecAmmo( li.data("item-id"), +1 )
} );
html.find('.stun-minus').click(event => {
this.actor.modifyStun( -1 )
html.find('.vehicle-stun-minus').click(event => {
this.actor.modifyVehicleStun( -1 )
} )
html.find('.stun-plus').click(event => {
this.actor.modifyStun( 1 )
html.find('.vehicle-stun-plus').click(event => {
this.actor.modifyVehicleStun( 1 )
} )
@ -250,16 +225,6 @@ export class PegasusVehicleSheet extends ActorSheet {
this.rollIDR( li.data("item-id"), diceValue)
})
html.find('.roll-spec').click((event) => {
const li = $(event.currentTarget).parents(".item");
const specId = li.data("item-id");
this.actor.rollSpec(specId);
});
html.find('.power-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const powerId = li.data("item-id");
this.actor.rollPower(powerId);
});
html.find('.weapon-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weaponId = li.data("item-id");
@ -297,35 +262,12 @@ export class PegasusVehicleSheet extends ActorSheet {
this.actor.equipItem( li.data("item-id") );
this.render(true);
});
html.find('.power-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.activatePower( li.data("item-id") );
this.render(true);
});
html.find('.vice-virtue-activate').click(ev => {
const li = $(ev.currentTarget).parents(".item")
this.actor.activateViceOrVirtue( li.data("item-id") )
this.render(true);
})
html.find('.change-worstfear').change(ev => {
this.actor.manageWorstFear( ev.currentTarget.checked )
});
html.find('.change-desires').change(ev => {
this.actor.manageDesires( ev.currentTarget.checked )
});
html.find('.update-field').change(ev => {
const fieldName = $(ev.currentTarget).data("field-name");
let value = Number(ev.currentTarget.value);
this.actor.update( { [`${fieldName}`]: value } );
});
html.find('.perk-active').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.activatePerk( li.data("item-id") );
this.render(true);
});
}
/* -------------------------------------------- */
@ -344,7 +286,7 @@ export class PegasusVehicleSheet extends ActorSheet {
if (item == undefined) {
item = this.actor.items.get( dragData.uuid )
}
let ret = await this.actor.preprocessItem( event, item, true )
let ret = await this.actor.preprocessItemVehicle( event, item, true )
if ( ret ) {
super._onDropItem(event, dragData)
}

View File

@ -1235,8 +1235,7 @@ ul, li {
/*************************************************************/
#pause
{
font-size: 2rem;
{ font-size: 2rem;
}
#pause > h3
{
@ -1285,6 +1284,8 @@ Focus FOC: #ff0084
background-color: black;
background: black;
}
.color-class-fc,
.color-class-man,
.color-class-agi,
.color-class-ranged-attack {
background-color: #02a41d;
@ -1303,10 +1304,12 @@ Focus FOC: #ff0084
.color-class-meleedmg {
background-color: #5f3d00;
}
.color-class-hr,
.color-class-phy,
.color-class-dmgres {
background-color: #990304;
}
.color-class-ad,
.color-class-mr {
background-color: #050505;
}
@ -1325,6 +1328,7 @@ Focus FOC: #ff0084
.color-class-ranged-damage {
background-color: #f9c801;
}
.color-class-pc,
.color-class-foc {
background-color: #ff0084;
}
@ -1377,8 +1381,8 @@ Focus FOC: #ff0084
min-height: 36px;
}
.item-stat-roll-vehicle {
max-height: 96px;
min-height: 90px;
max-height: 102px;
min-height: 102px;
}
.item-stat-roll select, .item-stat-roll input {
margin-top: 4px;

View File

@ -1,6 +1,6 @@
{
"description": "Pegasus RPG system for FoundryVTT",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-pegasus-rpg/archive/fvtt-pegasus-rpg-v10.0.4.zip",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-pegasus-rpg/archive/fvtt-pegasus-rpg-v10.0.8.zip",
"esmodules": [
"modules/pegasus-main.js"
],
@ -10,7 +10,8 @@
{
"lang": "en",
"name": "English",
"path": "lang/en.json"
"path": "lang/en.json",
"flags": {}
}
],
"authors": [
@ -19,11 +20,8 @@
"flags": {}
}
],
"library": false,
"license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-pegasus-rpg/raw/branch/master/system.json",
"manifestPlusVersion": "1.0.0",
"media": [],
"compatibility": {
"minimum": "10",
"verified": "10.284",
@ -35,241 +33,217 @@
"type": "Item",
"label": "Specialisations",
"name": "specialisations",
"path": "./packs/specialisations.db",
"path": "packs/specialisations.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"specialisation"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Racial Abilities",
"name": "racial-abilities",
"path": "./packs/racial-abilities.db",
"path": "packs/racial-abilities.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"ability"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Perks",
"name": "perk",
"path": "./packs/perk.db",
"path": "packs/perk.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"perk"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Powers",
"name": "powers",
"path": "./packs/powers.db",
"path": "packs/powers.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"power"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Race",
"name": "race",
"path": "./packs/race.db",
"path": "packs/race.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"race"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Role",
"name": "role",
"path": "./packs/role.db",
"path": "packs/role.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"role"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Effects",
"name": "effects",
"path": "./packs/effects.db",
"path": "packs/effects.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"effect"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Armour",
"name": "armour",
"path": "./packs/armour.db",
"path": "packs/armour.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"armour"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Equipment",
"name": "equipment",
"path": "./packs/equipment.db",
"path": "packs/equipment.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"equipment"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Shields",
"name": "shields",
"path": "./packs/shields.db",
"path": "packs/shields.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"shield"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Melee Weapons",
"name": "melee-weapons",
"path": "./packs/melee-weapons.db",
"path": "packs/melee-weapons.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"weapon", "melee"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Ranged Weapons",
"name": "ranged-weapons",
"path": "./packs/ranged-weapons.db",
"path": "packs/ranged-weapons.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"weapon", "ranged"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Currency",
"name": "currency",
"path": "./packs/currency.db",
"path": "packs/currency.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"currency", "money"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Macros",
"name": "macro-commands",
"path": "./packs/macro-commands.db",
"path": "packs/macro-commands.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"macro", "command"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Weapon modules",
"name": "vm-vehicle-weapons-modules",
"path": "./packs/vm-vehicle-weapons-modules.db",
"path": "packs/vm-vehicle-weapons-modules.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"weapon", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Propulsion modules",
"name": "vm-vehicle-propulsion-modules",
"path": "./packs/vm-vehicle-propulsion-modules.db",
"path": "packs/vm-vehicle-propulsion-modules.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"propulsion", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Power core modules",
"name": "vm-vehicle-power-core-module",
"path": "./packs/vm-vehicle-power-core-module.db",
"path": "packs/vm-vehicle-power-core-module.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"propulsion", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Modules",
"name": "vm-vehicle-modules",
"path": "./packs/vm-vehicle-modules.db",
"path": "packs/vm-vehicle-modules.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"module", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Mobility module",
"name": "vm-vehicle-mobility-module",
"path": "./packs/vm-vehicle-mobility-module.db",
"path": "packs/vm-vehicle-mobility-module.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"mobility", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Hull module",
"name": "vm-vehicle-hulls",
"path": "./packs/vm-vehicle-hulls.db",
"path": "packs/vm-vehicle-hulls.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"hull", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vehicle - Combat module",
"name": "vm-vehicle-combat-module",
"path": "./packs/vm-vehicle-combat-module.db",
"path": "packs/vm-vehicle-combat-module.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"combat", "vehicle"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Vices",
"name": "vices",
"path": "./packs/vices.db",
"path": "packs/vices.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"vice"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "Virtues",
"name": "virtues",
"path": "./packs/virtues.db",
"path": "packs/virtues.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"virtue"
]
"private": false,
"flags": {}
},
{
"type": "Item",
"label": "ZZ-Admin-FX",
"name": "zz-adminfx-zz",
"path": "./packs/zz-adminfx-zz.db",
"path": "packs/zz-adminfx-zz.db",
"system": "fvtt-pegasus-rpg",
"tags": [
"fx"
]
"private": false,
"flags": {}
}
],
"primaryTokenAttribute": "secondary.health",
@ -278,9 +252,8 @@
"styles": [
"styles/simple.css"
],
"templateVersion": 112,
"title": "Pegasus RPG",
"url": "https://www.uberwald.me/data/files/fvtt-pegasus-rpg",
"version": "10.0.4",
"background" : "systems/fvtt-pegasus-rpg/images/ui/pegasus_welcome_page.webp"
}
"version": "10.0.8",
"background": "systems/fvtt-pegasus-rpg/images/ui/pegasus_welcome_page.webp"
}

View File

@ -10,6 +10,7 @@
"name": "",
"age": 0,
"size": "",
"sizenum": 0,
"weight": "",
"hair": "",
"sex": "",
@ -214,6 +215,7 @@
"dicevalue": "",
"level": 0,
"currentlevel": 0,
"turningarc45": 0,
"col": 1
},
"hr": {
@ -264,7 +266,7 @@
"activatedmoduleenergy": 0,
"vdp": 0,
"vehiculevalue": 0,
"availablevms": 0,
"totalvms": 0,
"vmsused": 0,
"totalcost": 0
},
@ -674,6 +676,7 @@
"range": "",
"idr": "",
"cost": 0,
"size": 0,
"space": 0
},
"vehicleweaponmodule": {

View File

@ -848,8 +848,8 @@
<input type="text" class="" name="system.biodata.age" value="{{data.biodata.age}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Height</label>
<input type="text" class="" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="String" />
<label class="generic-label">Height/Weight</label>
<input type="text" class="" name="system.biodata.weight" value="{{data.biodata.weight}}" data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Eyes</label>
@ -864,9 +864,9 @@
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Weight</label>
<input type="text" class="" name="system.biodata.weight" value="{{data.biodata.weight}}"
data-dtype="String" />
<label class="generic-label">Size</label>
<input type="text" class="" name="system.biodata.sizenum" value="{{data.biodata.sizenum}}"
data-dtype="Number" />
</li>
<li class="flexrow item">
<label class="generic-label">Sex</label>
@ -986,6 +986,14 @@
<label class="attribute-value checkbox"><input type="checkbox" class="change-desires"
name="system.biodata.desiresactive" {{checked data.biodata.desiresactive}} /> Active ?</label>
</li>
<li class="flexrow">
<label class="short-label">Morality : </label>
<input type="text" class="" name="system.biodata.morality" value="{{data.biodata.morality}}" data-dtype="Number" />
</li>
<li class="flexrow">
<label class="short-label">Morality threshold : </label>
<input type="text" class="" name="system.biodata.moralitythreshold" value="{{data.biodata.moralitythreshold}}" disabled data-dtype="Number" />
</li>
</ul>
<h3>Catchphrase : </h3>
@ -1026,14 +1034,6 @@
<label class="short-label">Bonus selection : </label>
<input type="text" class="" name="system.biodata.bonusselection" value="{{data.biodata.bonusselection}}" data-dtype="String" />
</li>
<li class="flexrow">
<label class="short-label">Morality : </label>
<input type="text" class="" name="system.biodata.morality" value="{{data.biodata.morality}}" data-dtype="Number" />
</li>
<li class="flexrow">
<label class="short-label">Morality threshold : </label>
<input type="text" class="" name="system.biodata.moralitythreshold" value="{{data.biodata.moralitythreshold}}" disabled data-dtype="Number" />
</li>
<li class="flexrow">
<label class="short-label">Hero Level (max) : </label>
<select class="status-small-label color-class-common" type="text" name="system.biodata.maxlevelremaining" value="{{data.biodata.maxlevelremaining}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>

View File

@ -124,7 +124,7 @@
<input type="text" class="padd-right" name="system.deactivatedtext" value="{{data.deactivatedtext}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="generic-label">Power Level Cost</label>
<li class="flexrow"><label class="generic-label">PPP Used to Purchase</label>
<input type="text" class="input-numeric-short padd-right" name="system.powerlevelcost" value="{{data.powerlevelcost}}"
data-dtype="Number" />
</li>

View File

@ -29,7 +29,7 @@
<input type="text" class="" name="system.ad" value="{{data.ad}}" data-dtype="Number"/>
</li>
<li class="flexrow"><label class="generic-label">Top Speed (TS)</label>
<li class="flexrow"><label class="generic-label">Top Speed (TS) bonus</label>
<input type="text" class="" name="system.topspeed" value="{{data.topspeed}}" data-dtype="Number"/>
</li>

View File

@ -50,7 +50,7 @@
<label class="attribute-value checkbox"><input type="checkbox" name="system.activated" {{checked data.activated}}/></label>
</li>
<li class="flexrow"><label class="generic-label">NRG</label>
<li class="flexrow"><label class="generic-label">NRG Cost</label>
<input type="text" class="" name="system.nrg" value="{{data.nrg}}" data-dtype="Number"/>
</li>

View File

@ -1,4 +1,4 @@
<option value="none">None</option>
<option value="fullstop">Full stop</option>
<option value="crawling">Crawling</option>
<option value="slow">Slow</option>
<option value="average">Average</option>

View File

@ -19,7 +19,7 @@
<span class="item-name-label-long">&nbsp;</span>
<span class="item-field-label-long">
<select type="text" name="system.arcs.{{idx}}.topspeed" value="{{arc.topspeed}}" data-dtype="String">
<select type="text" name="system.arcs.{{idx}}.topspeed" value="{{arc.topspeed}}" data-dtype="String" disabled>
{{#select arc.topspeed}}
{{> systems/fvtt-pegasus-rpg/templates/partial-options-vehicle-speed.html}}
{{/select}}

View File

@ -2,27 +2,79 @@
<div class="flexcol">
<div class="flexrow">
<span class="stat-icon">
<img class="stat-icon" src="systems/fvtt-pegasus-rpg/images/icons/{{stat.abbrev}}.webp">
<img class="stat-icon" src="systems/fvtt-pegasus-rpg/images/icons/icon_vehicle_{{stat.abbrev}}.webp">
</span>
<span class="stat-label stat-margin" name="{{key}}">
<h4 class="stat-text-white stat-margin"><a class="roll-stat stat-margin"
data-stat-key="{{key}}">{{stat.abbrev}}</a></h4>
data-stat-key="{{key}}">{{upper stat.abbrev}}</a></h4>
</span>
<select class="status-small-label color-class-common" type="text" name="system.statistics.{{key}}.level"
value="{{stat.level}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
value="{{stat.level}}" data-dtype="Number" disabled>
{{#select stat.level}}
{{{@root.optionsDiceList}}}
{{/select}}
</select>
</div>
<div class="flexrow">
<div class="flexrow stat-text-white">
<span class="stat-label stat-margin" name="{{key}}">Current level</span>
<select class="status-small-label color-class-common" type="text" name="system.statistics.{{key}}.currentlevel"
value="{{stat.currentlevel}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.currentlevel}}
{{{@root.optionsLevel}}}
{{{@root.optionsDiceList}}}
{{/select}}
</select>
</div>
{{#if (eq key "man")}}
<div class="flexrow stat-text-white">
<span class="stat-label stat-margin" name="{{key}}">45° Turning Arcs</span>
<select class="status-small-label color-class-common" type="text" name="system.statistics.{{key}}.turningarc45"
value="{{stat.turningarc45}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.turningarc45}}
{{{@root.optionsDiceList}}}
{{/select}}
</select>
</div>
{{/if}}
{{#if (eq key "hr")}}
<div class="flexrow stat-text-white">
<span class="stat-label stat-margin" name="{{key}}">Size</span>
<input type="text" class="input-numeric-short" name="system.statistics.{{key}}.size" value="{{stat.size}}" data-dtype="Number" />
</div>
{{/if}}
{{#if (eq key "pc")}}
<div class="flexrow stat-text-white">
<span class="stat-label stat-margin" name="{{key}}">Av NRG</span>
<input type="text" class="input-numeric-short" name="system.statistics.{{key}}.avgnrg" value="{{stat.avgnrg}}" data-dtype="Number" />
<span class="stat-label stat-margin" name="{{key}}">Cur NRG</span>
<input type="text" class="input-numeric-short" name="system.statistics.{{key}}.curnrg" value="{{stat.curnrg}}" data-dtype="Number" />
<span class="padd-right status-small-label no-grow">
<a class="vehicle-current-nrg-plus plus-minus-button">+</a>
<a class="vehicle-current-nrg-minus plus-minus-button">&nbsp;-</a>
</span>
</div>
{{/if}}
{{#if (eq key "ad")}}
<div class="flexrow stat-text-white">
<span class="stat-label stat-margin" name="{{key}}">Acc Mode</span>
<select class="status-small-label color-class-common" type="text" name="system.statistics.{{key}}.accmode"
value="{{stat.accmode}}" data-dtype="String" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.accmode}}
<option value="acc">ACC</option>
<option value="dec">DEC</option>
{{/select}}
</select>
<span class="stat-label stat-margin" name="{{key}}">Curr. speed</span>
<select class="status-small-label color-class-common current-speed-change" type="text" name="system.statistics.{{key}}.currentspeed"
value="{{stat.currentspeed}}" data-dtype="String" {{#unless @root.editScore}}disabled{{/unless}}>
{{#select stat.currentspeed}}
{{> systems/fvtt-pegasus-rpg/templates/partial-options-vehicle-speed.html}}
{{/select}}
</select>
</div>
{{/if}}
</div>
</li>

View File

@ -124,8 +124,8 @@
<span class="flexrow">
<h3>Stun</h3>
<span class="status-small-label no-grow">
<a class="stun-plus plus-minus-button">+</a>
<a class="stun-minus plus-minus-button">&nbsp;-</a>
<a class="vehicle-stun-plus plus-minus-button">+</a>
<a class="vehicle-stun-minus plus-minus-button">&nbsp;-</a>
</span>
</span>
<ul class="stat-list alternate-list">
@ -139,6 +139,7 @@
</li>
</ul>
</div>
</div>
<div class="flexrow">
@ -248,40 +249,281 @@
</div>
</div>
{{!-- Other Tab --}}
{{!-- Modules Tab --}}
<div class="tab items" data-group="primary" data-tab="modules">
<div class="stat-item">
<span class="flexrow">
<h3>VMS</h3>
</span>
<ul class="stat-list alternate-list">
<li class="item stat flexrow list-item">
<span class="generic-label small-label">Total</span>
<input type="text" class="" name="system.modules.totalvms" value="{{data.modules.totalvms}}"
data-dtype="Number" disabled />
<span class="generic-label small-label">Used</span>
<input type="text" class="" name="system.modules.vmsused" value="{{data.modules.vmsused}}"
data-dtype="Number" disabled />
</li>
</ul>
</div>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Specialisations</label></h3>
<span class="item-name-label-header-long">
<h3><label class="items-title-text">STEP 1 - HULL TYPE</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Stat</label>
<label class="short-label">Size</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Hull Type</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Dice</label>
<label class="short-label">HR</label>
</span>
<span class="item-field-label-long">
<label class="short-label">Powergroup</label>
<span class="item-field-label-short">
<label class="short-label">MAN</label>
</span>
<span class="item-field-label-short">
<label class="short-label">VMS</label>
</span>
</li>
{{#each specs as |spec key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{spec._id}}">
{{#each vehicleHull as |hull key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{hull._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{spec.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{spec.name}}</a></span>
<span class="item-field-label-short">{{upper spec.system.statistic}}</span>
<span class="item-field-label-short">{{spec.system.dice}}</span>
{{#if spec.system.ispowergroup}}
{{#if spec.system.powersactivated}}
<span class="item-field-label-long"><a class="spec-group-deactivate">Deactivate</a></span>
{{else}}
<span class="item-field-label-long"><a class="spec-group-activate">Activate</a></span>
{{/if}}
{{else}}
<span class="item-field-label-long">&nbsp;-&nbsp;</span>
{{/if}}
src="{{hull.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{hull.name}}</a></span>
<span class="item-field-label-medium">{{hull.system.hulltype}}</span>
<span class="item-field-label-short">{{hull.system.hr}}</span>
<span class="item-field-label-short">{{hull.system.man}}</span>
<span class="item-field-label-short">{{hull.system.vms}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">STEP 2 - POWER CORE MODULE</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Power Core Type</label>
</span>
<span class="item-field-label-sjort">
<label class="short-label">PC</label>
</span>
<span class="item-field-label-short">
<label class="short-label">NRG</label>
</span>
</li>
{{#each powerCoreModules as |powercore key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{powercore._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{powercore.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{powercore.name}}</a></span>
<span class="item-field-label-medium">{{powercore.system.coretype}}</span>
<span class="item-field-label-short">{{powercore.system.pc}}</span>
<span class="item-field-label-short">{{powercore.system.nrg}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">STEP 3 - MOBILITY MODULE</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Vehicle Category</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Quality</label>
</span>
<span class="item-field-label-short">
<label class="short-label">MR</label>
</span>
<span class="item-field-label-short">
<label class="short-label">TS:F</label>
</span>
<span class="item-field-label-short">
<label class="short-label">TS:S</label>
</span>
<span class="item-field-label-short">
<label class="short-label">TS:R</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">MAN Adj.</label>
</span>
</li>
{{#each mobilityModules as |mobility key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{mobility._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{mobility.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{mobility.name}}</a></span>
<span class="item-field-label-long">{{mobility.system.vehiclecategory}}</span>
<span class="item-field-label-medium">{{mobility.system.quality}}</span>
<span class="item-field-label-short">{{mobility.system.mr}}</span>
<span class="item-field-label-short">{{mobility.system.ts_f}}</span>
<span class="item-field-label-short">{{mobility.system.ts_s}}</span>
<span class="item-field-label-short">{{mobility.system.ts_r}}</span>
<span class="item-field-label-medium">{{mobility.system.man}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">STEP 4 - PROPULSION MODULE</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Quality</label>
</span>
<span class="item-field-label-short">
<label class="short-label">A/D</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">TS:F Adj.</label>
</span>
</li>
{{#each propulsionModules as |propulsion key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{propulsion._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{propulsion.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{propulsion.name}}</a></span>
<span class="item-field-label-medium">{{propulsion.system.quality}}</span>
<span class="item-field-label-short">{{propulsion.system.ad}}</span>
<span class="item-field-label-short">{{propulsion.system.topspeed}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">STEP 5 - COMBAT MODULE</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Quality</label>
</span>
<span class="item-field-label-short">
<label class="short-label">FC</label>
</span>
</li>
{{#each combatModules as |combat key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{combat._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{combat.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{combat.name}}</a></span>
<span class="item-field-label-medium">{{combat.system.quality}}</span>
<span class="item-field-label-short">{{combat.system.fc}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">VEHICLES MODULES</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Category</label>
</span>
<span class="item-field-label-long">
<label class="short-label">Location</label>
</span>
<span class="item-field-label-long">
<label class="short-label">Security</label>
</span>
<span class="item-field-label-short">
<label class="short-label">NRG</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Range</label>
</span>
<span class="item-field-label-short">
<label class="short-label">IDR</label>
</span>
</li>
{{#each vehicleModules as |vehiclemod key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{vehiclemod._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{vehiclemod.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{vehiclemod.name}}</a></span>
<span class="item-field-label-long">{{vehiclemod.system.category}}</span>
<span class="item-field-label-long">{{vehiclemod.system.location}}</span>
<span class="item-field-label-long">{{vehiclemod.system.security}}</span>
<span class="item-field-label-short">{{vehiclemod.system.nrg}}</span>
<span class="item-field-label-medium">{{vehiclemod.system.range}}</span>
<span class="item-field-label-short">{{vehiclemod.system.idr}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
<ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long">
<h3><label class="items-title-text">VEHICLES WEAPONS</label></h3>
</span>
<span class="item-field-label-long">
<label class="short-label">Site</label>
</span>
<span class="item-field-label-long">
<label class="short-label">Location</label>
</span>
<span class="item-field-label-short">
<label class="short-label">DMG</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">AoE</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Turret</label>
</span>
<span class="item-field-label-short">
<label class="short-label">NRG</label>
</span>
<span class="item-field-label-short">
<label class="short-label">IDR</label>
</span>
</li>
{{#each vehicleWeaponModules as |weapon key|}}
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{weapon._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{weapon.img}}" /></a>
<span class="item-name-label"><a class="roll-spec">{{weapon.name}}</a></span>
<span class="item-field-label-long">{{weapon.system.site}}</span>
<span class="item-field-label-long">{{weapon.system.location}}</span>
<span class="item-field-label-short">{{weapon.system.dmg}}</span>
<span class="item-field-label-medium">{{weapon.system.aoe}}</span>
<span class="item-field-label-medium">{{weapon.system.turrent}}</span>
<span class="item-field-label-short">{{weapon.system.nrg}}</span>
<span class="item-field-label-short">{{weapon.system.idr}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
@ -289,9 +531,7 @@
</li>
{{/each}}
</ul>
</div>
</div>
</div>