Merge remote-tracking branch 'TheLastScrub/v10_updates_and_improvements' into jalenml-toggle-lethality

This commit is contained in:
jalensailin
2022-09-04 23:26:42 -04:00
26 changed files with 774 additions and 413 deletions
+5
View File
@@ -1,5 +1,10 @@
## Release/Patch Notes
### Version 1.0.7 - ??? [BREAKING CHANGE: THIS VERSION FORWARD COMPATIBLE WITH FOUNDRY V10 OR HIGHER ONLY!]
* Enhancement - Update to new data model for Foundry V10
* Enhancement [GitHub #56] - Added an actor sheet for Vehicles
### Version 1.0.6 - 2022-05-26
* Enhancement - IgorAK25 has submitted a Portuguese translation for the system.
+8 -1
View File
@@ -625,7 +625,7 @@ div.motivation-editor-container div.editor{
}
.deltagreen .editor-host .editor {
min-height: 35px;
min-height: 50px;
}
.deltagreen .editor-host .tox {
@@ -905,4 +905,11 @@ input.item-sheet-short-input{
.yellow-king textarea:focus, .yellow-king input:focus{
color: #a0912f;
}
.top-div-border{
border-top: 1px solid #AAA;
margin-bottom: 10px;
padding-bottom: 10px;
padding-top: 10px;
}
+6 -1
View File
@@ -238,5 +238,10 @@
"DG.ImpossibleLanscapes.CorruptionFirstHalf": "Corrup",
"DG.ImpossibleLanscapes.CorruptionSecondHalf": "tion",
"DG.ImpossibleLanscapes.Gift": "Gift",
"DG.ImpossibleLanscapes.Insight": "Insight"
"DG.ImpossibleLanscapes.Insight": "Insight",
"DG.VehicleSheet.NotesTabName": "Notes",
"DG.VehicleSheet.GearTabName": "Gear",
"DG.VehicleSheet.NotesLabel": "NOTES",
"DG.VehicleSheet.DescriptionPlaceHolder": "Vehicle Description"
}
+6 -1
View File
@@ -244,5 +244,10 @@
"DG.ImpossibleLanscapes.CorruptionFirstHalf": "Corrup",
"DG.ImpossibleLanscapes.CorruptionSecondHalf": "tion",
"DG.ImpossibleLanscapes.Gift": "Gift",
"DG.ImpossibleLanscapes.Insight": "Insight"
"DG.ImpossibleLanscapes.Insight": "Insight",
"DG.VehicleSheet.NotesTabName": "Notes",
"DG.VehicleSheet.GearTabName": "Gear",
"DG.VehicleSheet.NotesLabel": "NOTES",
"DG.VehicleSheet.DescriptionPlaceHolder": "Vehicle Description"
}
+6 -1
View File
@@ -238,5 +238,10 @@
"DG.ImpossibleLanscapes.CorruptionFirstHalf": "Corrup",
"DG.ImpossibleLanscapes.CorruptionSecondHalf": "tion",
"DG.ImpossibleLanscapes.Gift": "Gift",
"DG.ImpossibleLanscapes.Insight": "Insight"
"DG.ImpossibleLanscapes.Insight": "Insight",
"DG.VehicleSheet.NotesTabName": "Notes",
"DG.VehicleSheet.GearTabName": "Gear",
"DG.VehicleSheet.NotesLabel": "NOTES",
"DG.VehicleSheet.DescriptionPlaceHolder": "Vehicle Description"
}
+6 -1
View File
@@ -238,5 +238,10 @@
"DG.ImpossibleLanscapes.CorruptionFirstHalf": "腐",
"DG.ImpossibleLanscapes.CorruptionSecondHalf": "敗",
"DG.ImpossibleLanscapes.Gift": "ギフト",
"DG.ImpossibleLanscapes.Insight": "インサイト"
"DG.ImpossibleLanscapes.Insight": "インサイト",
"DG.VehicleSheet.NotesTabName": "ノート",
"DG.VehicleSheet.GearTabName": "装備",
"DG.VehicleSheet.NotesLabel": "ノート",
"DG.VehicleSheet.DescriptionPlaceHolder": ""
}
+123 -77
View File
@@ -22,7 +22,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
get template() {
if(this.actor !== null){
if(this.actor.data.type === 'agent'){
if(this.actor.type === 'agent'){
if ( !game.user.isGM && this.actor.limited ) {
return "systems/deltagreen/templates/actor/limited-sheet.html";
}
@@ -31,12 +31,15 @@ export class DeltaGreenActorSheet extends ActorSheet {
return `systems/deltagreen/templates/actor/actor-sheet.html`;
}
}
else if(this.actor.data.type === 'unnatural'){
else if(this.actor.type === 'unnatural'){
return `systems/deltagreen/templates/actor/unnatural-sheet.html`;
}
else if(this.actor.data.type === 'npc'){
else if(this.actor.type === 'npc'){
return `systems/deltagreen/templates/actor/npc-sheet.html`;
}
else if(this.actor.type === 'vehicle'){
return `systems/deltagreen/templates/actor/vehicle-sheet.html`;
}
else{
return "systems/deltagreen/templates/actor/limited-sheet.html";
}
@@ -47,13 +50,27 @@ export class DeltaGreenActorSheet extends ActorSheet {
}
/** @override */
getData() {
async getData() {
const data = super.getData();
// Prepare items.
if (this.actor.data.type == 'agent') {
if (this.actor.type == 'agent') {
this._prepareCharacterItems(data);
}
switch (this.actor.type) {
case "agent":
data.enrichedDescription = await TextEditor.enrichHTML(this.object.system.physicalDescription, {async: true});
break;
case "vehicle":
data.enrichedDescription = await TextEditor.enrichHTML(this.object.system.description, {async: true});
break;
case "npc":
case "unnatural":
data.enrichedDescription = await TextEditor.enrichHTML(this.object.system.notes, {async: true});
break;
default:
}
return data;
}
@@ -75,7 +92,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
// Iterate through items, allocating to containers
// let totalWeight = 0;
for (let i of sheetData.items) {
let item = i.data;
let item = i;
i.img = i.img || DEFAULT_TOKEN;
// Append to armor.
if (i.type === 'armor') {
@@ -208,9 +225,9 @@ export class DeltaGreenActorSheet extends ActorSheet {
event.preventDefault();
let currentBreakingPoint = 0;
currentBreakingPoint = this.actor.data.data.sanity.value - this.actor.data.data.statistics.pow.value;
currentBreakingPoint = this.actor.system.sanity.value - this.actor.system.statistics.pow.value;
let updatedData = duplicate(this.actor.data.data);
let updatedData = duplicate(this.actor.system);
updatedData.sanity.currentBreakingPoint = currentBreakingPoint;
this.actor.update({"data": updatedData});
});
@@ -227,8 +244,8 @@ export class DeltaGreenActorSheet extends ActorSheet {
event.preventDefault();
let targetskill = event.target.getAttribute("data-typedskill");
let existingLabel = this.actor.data.data.typedSkills[targetskill].label;
let existingGroup = this.actor.data.data.typedSkills[targetskill].group;
let existingLabel = this.actor.system.typedSkills[targetskill].label;
let existingGroup = this.actor.system.typedSkills[targetskill].group;
//this.actor.update({[`data.typedSkills.${targetskill}.label`]: 'test'});
@@ -242,7 +259,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
let targetskill = event.target.getAttribute("data-typedskill");
// many bothans died to bring us this information on how to delete a property on an entity
this.actor.update({[`data.typedSkills.-=${targetskill}`]: null});
this.actor.update({[`system.typedSkills.-=${targetskill}`]: null});
});
@@ -250,30 +267,34 @@ export class DeltaGreenActorSheet extends ActorSheet {
event.preventDefault();
const failures = Object.entries(this.actor.data.data.skills).filter((skill) => skill[1].failure);
if (failures.length === 0) {
const failedSkills = Object.entries(this.actor.system.skills).filter((skill) => skill[1].failure);
const failedTypedSkills = Object.entries(this.actor.system.typedSkills).filter((skill) => skill[1].failure);
if (failedSkills.length === 0 && failedTypedSkills.length === 0) {
ui.notifications.warn('No Skills to Increase')
return;
}
let htmlContent = "";
let failedSkillNames = "";
failures.forEach(([skill], value) => {
failedSkills.forEach(([skill], value) => {
if (value === 0) {
failedSkillNames += (game.i18n.localize("DG.Skills." + skill));
} else {
failedSkillNames += `, ${(game.i18n.localize("DG.Skills." + skill))}`;
}
})
failedTypedSkills.forEach(([skillName, skillData], value) => {
if (value === 0 && failedSkillNames === "") {
failedSkillNames += `${game.i18n.localize("DG.TypeSkills." + skillData.group.split(" ").join(""))} (${skillData.label})`;
} else {
failedSkillNames += `, ${game.i18n.localize("DG.TypeSkills." + skillData.group.split(" ").join(""))} (${skillData.label})`;
}
})
const baseRollFormula = game.settings.get("deltagreen", "skillImprovementFormula");
htmlContent += `<div>`;
htmlContent += ` <label>${game.i18n.localize("DG.Skills.ApplySkillImprovementsDialogLabel")}</label>`;
htmlContent += ` <select name="roll-formula" />`;
htmlContent += ` <option${game.settings.get("deltagreen", "skillImprovementFormula") === "1" ? " selected" : ""} value = "1">Flat +1%</option>`;
htmlContent += ` <option${game.settings.get("deltagreen", "skillImprovementFormula") === "1d3" ? " selected" : ""} value = "1d3">+1D3%</option>`;
htmlContent += ` <option${game.settings.get("deltagreen", "skillImprovementFormula") === "1d4" ? " selected" : ""} value = "1d4">+1D4%</option>`;
htmlContent += ` <option${game.settings.get("deltagreen", "skillImprovementFormula") === "1d4-1" ? " selected" : ""} value = "1d4-1">+1D4-1%</option>`;
htmlContent += ` </select>`;
htmlContent += ` <label>${game.i18n.localize("DG.Skills.ApplySkillImprovementsDialogLabel")} <b>+${baseRollFormula}%</b></label>`;
htmlContent += ` <hr>`;
htmlContent += ` <span> ${game.i18n.localize("DG.Skills.ApplySkillImprovementsDialogEffectsFollowing")} <b>${failedSkillNames}</b> </span>`;
htmlContent += `</div>`;
@@ -286,8 +307,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
apply:{
label: game.i18n.translations.DG?.Skills?.Apply ?? "Apply",
callback: btn =>{
const baseRollForumla = btn.find("[name='roll-formula']").val();
this._applySkillImprovements(baseRollForumla, failures);
this._applySkillImprovements(baseRollFormula, failedSkills, failedTypedSkills);
},
}
}
@@ -457,7 +477,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
}
_addNewTypedSkill(newSkillLabel, newSkillGroup){
let updatedData = duplicate(this.actor.data.data);
let updatedData = duplicate(this.actor.system);
let typedSkills = updatedData.typedSkills;
let d = new Date();
@@ -474,7 +494,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
_updateTypedSkill(targetSkill, newSkillLabel, newSkillGroup){
if(newSkillLabel !== null && newSkillLabel !== "" && newSkillGroup !== null & newSkillGroup !== ""){
let updatedData = duplicate(this.actor.data.data);
let updatedData = duplicate(this.actor.system);
updatedData.typedSkills[targetSkill].label = newSkillLabel;
updatedData.typedSkills[targetSkill].group = newSkillGroup;
@@ -490,40 +510,39 @@ export class DeltaGreenActorSheet extends ActorSheet {
* @private
*/
_onItemCreate(event) {
event.preventDefault();
const header = event.currentTarget;
// Get the type of item to create.
const type = header.dataset.type;
// Grab any data associated with this control.
const data = duplicate(header.dataset);
// Initialize a default name.
//const name = `New ${type.capitalize()}`;
const name = game.i18n.localize("DG.ItemTypes.NewPrefix") + game.i18n.localize("DG.ItemTypes." + type)
// Prepare the item object.
const itemData = {
name: name,
type: type,
data: data
system: {}
};
// Remove the type from the dataset since it's in the itemData.type prop.
delete itemData.data["type"];
if(type == "weapon"){
itemData.data.skill = "firearms"; //default skill to firearms, since that will be most common
itemData.data.expense = "Standard";
itemData.system.skill = "firearms"; //default skill to firearms, since that will be most common
itemData.system.expense = "Standard";
}
else if(type == "armor"){
itemData.data.armor = 3;
itemData.data.expense = "Standard";
itemData.system.armor = 3;
itemData.system.expense = "Standard";
}
else if(type == "bond"){
itemData.data.score = this.object.data.data.statistics.cha.value; // Can vary, but at character creation starting bond score is usually agent's charisma
itemData.system.score = this.object.system.statistics.cha.value; // Can vary, but at character creation starting bond score is usually agent's charisma
itemData.img = "icons/svg/mystery-man.svg"
}
// Finally, create the item!
//return this.actor.createOwnedItem(itemData);
// create the item
return this.actor.createEmbeddedDocuments("Item", [itemData]);
}
@@ -567,40 +586,40 @@ export class DeltaGreenActorSheet extends ActorSheet {
// otherwise roll a regular skill test
if(targetVal === "dex"){
label = game.i18n.localize("DG.Attributes.dex").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.dex.x5;
targetVal = this.actor.system.statistics.dex.x5;
}
else if(targetVal === "int"){
label = game.i18n.localize("DG.Attributes.int").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.int.x5;
targetVal = this.actor.system.statistics.int.x5;
}
else if(targetVal === "str"){
label = game.i18n.localize("DG.Attributes.str").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.str.x5;
targetVal = this.actor.system.statistics.str.x5;
}
else if(targetVal === "con"){
label = game.i18n.localize("DG.Attributes.con").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.con.x5;
targetVal = this.actor.system.statistics.con.x5;
}
else if(targetVal === "pow"){
label = game.i18n.localize("DG.Attributes.pow").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.pow.x5;
targetVal = this.actor.system.statistics.pow.x5;
}
else if(targetVal === "cha"){
label = game.i18n.localize("DG.Attributes.cha").toUpperCase() + "x5";
targetVal = this.actor.data.data.statistics.cha.x5;
targetVal = this.actor.system.statistics.cha.x5;
}
else{
label = game.i18n.localize("DG.Skills." + targetVal).toUpperCase() + "x5";
targetVal = this.actor.data.data.skills[targetVal].proficiency;
label = game.i18n.localize("DG.Skills." + targetVal).toUpperCase();
targetVal = this.actor.system.skills[targetVal].proficiency;
}
}
else if(dataset.target === "statistic.x5"){
let stat = this.actor.data.data.statistics[key];
let stat = this.actor.system.statistics[key];
targetVal = stat.x5;
label = game.i18n.localize("DG.Attributes." + key).toUpperCase();
label = game.i18n.localize("DG.Attributes." + key).toUpperCase() + "x5";
}
else if(rollType === "sanity"){
targetVal = this.actor.data.data.sanity.value;
targetVal = this.actor.system.sanity.value;
label = game.i18n.localize("DG.Attributes.SAN").toUpperCase();
}
else if(rollType === "damage"){
@@ -620,7 +639,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
let skillType = dataset.skill ? dataset.skill : '';
if(this.actor.type === 'agent' && (skillType === 'unarmed_combat' || skillType === 'melee_weapons')){
diceFormula += this.actor.data.data.statistics.str.meleeDamageBonusFormula;
diceFormula += this.actor.system.statistics.str.meleeDamageBonusFormula;
}
if(requestedModifyRoll){
@@ -652,13 +671,13 @@ export class DeltaGreenActorSheet extends ActorSheet {
let currentBreakingPoint = 0;
currentBreakingPoint = this.actor.data.data.sanity.value - this.actor.data.data.statistics.pow.value;
currentBreakingPoint = this.actor.system.sanity.value - this.actor.system.statistics.pow.value;
if(currentBreakingPoint < 0){
currentBreakingPoint = 0;
}
let updatedData = duplicate(this.actor.data.data);
let updatedData = duplicate(this.actor.system);
updatedData.sanity.currentBreakingPoint = currentBreakingPoint;
@@ -673,7 +692,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
try{
//const item = this.actor.getOwnedItem(dataset.id);
const item = this.actor.items.get(dataset.id);
var isEquipped = item.data.data.equipped;
var isEquipped = item.system.equipped;
isEquipped = !isEquipped;
item.update({data:{equipped: isEquipped}});
}
@@ -682,21 +701,22 @@ export class DeltaGreenActorSheet extends ActorSheet {
}
}
_applySkillImprovements(baseRollFormula, failures) {
const actorData = this.actor.data.data;
_applySkillImprovements(baseRollFormula, failedSkills, failedTypedSkills) {
const actorData = this.actor.system;
const resultList = [];
let rollFormula;
// Define the amount of dice being rolled, if any.
switch (baseRollFormula) {
case "1":
rollFormula = 1;
break;
case "1d3":
rollFormula = `${failures.length}d3`;
rollFormula = `${failedSkills.length + failedTypedSkills.length}d3`;
break;
case "1d4":
case "1d4-1":
rollFormula = `${failures.length}d4`;
rollFormula = `${failedSkills.length + failedTypedSkills.length}d4`;
break;
default:
}
@@ -705,38 +725,64 @@ export class DeltaGreenActorSheet extends ActorSheet {
if (rollFormula !== 1) {
roll = new Roll(rollFormula, actorData);
roll.evaluate({async: true});
// Put the results into a list.
roll.terms[0].results.forEach((result) => resultList.push(baseRollFormula === "1d4-1" ? result.result - 1 : result.result));
}
let updatedSkills = "";
// This will be end up being a list of skills and how much each were improved by. It gets modified in the following loops.
let improvedSkillList = "";
failures.forEach(([skill], value) => {
failedSkills.forEach(([skill], value) => {
const updatedData = duplicate(actorData);
updatedData.skills[skill].proficiency += resultList[value] ?? 1;
updatedData.skills[skill].proficiency += resultList[value] ?? 1; // Increase proficiency by die result or by 1 if there is no dice roll.
updatedData.skills[skill].failure = false;
this.actor.update({"data": updatedData});
this.actor.update({"system": updatedData});
// So we can record the skills and how much they were increased by in chat.
if (updatedSkills === "") {
updatedSkills += `${game.i18n.localize("DG.Skills." + skill)}: +${resultList[value] ?? 1}%`;
// So we can record the regular skills improved and how much they were increased by in chat.
// The if statement tells us whether to add a comma before the term or not.
if (value === 0) {
improvedSkillList += `${game.i18n.localize("DG.Skills." + skill)}: <b>+${resultList[value] ?? 1}%</b>`;
} else {
updatedSkills += `, ${game.i18n.localize("DG.Skills." + skill)}: +${resultList[value] ?? 1}%`;
improvedSkillList += `, ${game.i18n.localize("DG.Skills." + skill)}: <b>+${resultList[value] ?? 1}%</b>`;
}
})
failedTypedSkills.forEach(([skillName, skillData], value) => {
const updatedData = duplicate(actorData);
// We must increase value in the following line by the length of failedSkills, so that we index the entire resultList.
// Otherwise we would be adding the same die results to regular skills and typed skills.
updatedData.typedSkills[skillName].proficiency += resultList[value + failedSkills.length] ?? 1;
updatedData.typedSkills[skillName].failure = false;
this.actor.update({"system": updatedData});
// So we can record the typed skills improved and how much they were increased by in chat.
// The if statement tells us whether to add a comma before the term or not.
if (value === 0 && improvedSkillList === "") {
improvedSkillList += `${game.i18n.localize("DG.TypeSkills." + skillData.group.split(" ").join(""))} (${skillData.label}): <b>+${resultList[value + failedSkills.length] ?? 1}%</b>`;
} else {
improvedSkillList += `, ${game.i18n.localize("DG.TypeSkills." + skillData.group.split(" ").join(""))} (${skillData.label}): <b>+${resultList[value + failedSkills.length] ?? 1}%</b>`;
}
})
let html;
html = `<div class="dice-roll">`
html += ` <div>${improvedSkillList}</div>`
html += `</div>`
const chatData = {
speaker: ChatMessage.getSpeaker({actor: this.actor, token: this.token, alias: this.actor.data.name}),
content: updatedSkills,
flavor: `${game.i18n.localize("DG.Skills.ApplySkillImprovementsChatFlavor")} +${baseRollFormula}%:`,
speaker: ChatMessage.getSpeaker({actor: this.actor, token: this.token, alias: this.actor.name}),
content: html,
flavor: `${game.i18n.localize("DG.Skills.ApplySkillImprovementsChatFlavor")} <b>+${baseRollFormula}%</b>:`,
type: baseRollFormula === "1" ? 0 : 5, // 0 = CHAT_MESSAGE_TYPES.OTHER, 5 = CHAT_MESSAGE_TYPES.ROLL
roll: baseRollFormula === "1" ? null : roll, // If adding flat +1, there is no roll.
rolls: baseRollFormula === "1" ? [] : [roll], // If adding flat +1, there is no roll.
rollMode: game.settings.get("core", "rollMode")
};
// play the dice rolling sound, like a regular in-chat roll
if (roll) AudioHelper.play({src: "sounds/dice.wav", volume: 0.8, autoplay: true, loop: false}, true);
ChatMessage.create(chatData, {});
// play the dice rolling sound, like a regular in-chat roll
if (roll) AudioHelper.play({src: "sounds/dice.wav", volume: 0.8, autoplay: true, loop: false}, true);
ChatMessage.create(chatData, {});
}
_onDragStart(event) {
@@ -744,7 +790,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
if ( event.target.classList.contains("entity-link") ) return;
// Create drag data
const dragData = {
let dragData = {
actorId: this.actor.id,
sceneId: this.actor.isToken ? canvas.scene?.id : null,
tokenId: this.actor.isToken ? this.actor.token.id : null
@@ -754,14 +800,14 @@ export class DeltaGreenActorSheet extends ActorSheet {
if ( li.dataset.itemId ) {
const item = this.actor.items.get(li.dataset.itemId);
dragData.type = "Item";
dragData.data = item.data;
dragData = item;
}
// Active Effect
if ( li.dataset.effectId ) {
const effect = this.actor.effects.get(li.dataset.effectId);
dragData.type = "ActiveEffect";
dragData.data = effect.data;
dragData = effect;
}
// Set data transfer
+108 -54
View File
@@ -10,8 +10,8 @@ export class DeltaGreenActor extends Actor {
prepareData() {
super.prepareData();
const actorData = this.data;
const data = actorData.data;
const actorData = this;
const system = actorData.system;
const flags = actorData.flags;
//console.log('actor.js prepareData');
@@ -28,55 +28,76 @@ export class DeltaGreenActor extends Actor {
else if(actorData.type === 'npc'){
this._prepareNpcData(this);
}
else if(actorData.type === 'vehicle'){
this._prepareVehicleData(this);
}
}
/**
*
* @param {*} agent
*/
_prepareVehicleData(actor){
let actorData = actor;
// calculate total armor rating
let protection = 0;
for (let i of actor.items) {
if (i.type === 'armor') {
if(i.system.equipped === true){
protection += i.system.protection;
}
}
}
actorData.system.health.protection = protection;
console.log(actor);
}
_prepareNpcData(actor){
let actorData = actor.data;
const data = actorData.data;
const { system } = actor;
// Loop through ability scores, and add their modifiers to our sheet output.
for (let [key, statistic] of Object.entries(data.statistics)) {
for (let [key, statistic] of Object.entries(system.statistics)) {
// the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile
statistic.x5 = statistic.value * 5;
}
// initialize sanity, don't set these afterwards, as they need to be manually edited
if(actorData.data.sanity.value >= 100){
actorData.data.sanity.value = actorData.data.statistics.pow.x5
actorData.data.sanity.currentBreakingPoint = actorData.data.sanity.value - actorData.data.statistics.pow.value;
if(system.sanity.value >= 100){
system.sanity.value = system.statistics.pow.x5
system.sanity.currentBreakingPoint = system.sanity.value - system.statistics.pow.value;
};
actorData.data.sanity.max = 99 - actorData.data.skills.unnatural.proficiency;
system.sanity.max = 99 - system.skills.unnatural.proficiency;
actorData.data.skills.ritual = {
system.skills.ritual = {
label: "Ritual",
proficiency: 99 - actorData.data.sanity.value,
proficiency: 99 - system.sanity.value,
cannotBeImprovedByFailure: true,
failure: false
};
if(actorData.data.skills.ritual.proficiency > 99){
actorData.data.skills.ritual.proficiency = 99
if(system.skills.ritual.proficiency > 99){
system.skills.ritual.proficiency = 99
}
else if(actorData.data.skills.ritual.proficiency < 1){
actorData.data.skills.ritual.proficiency = 1
else if(system.skills.ritual.proficiency < 1){
system.skills.ritual.proficiency = 1
}
// calculate total armor rating
let protection = 0;
for (let i of actor.items) {
if (i.type === 'armor') {
if(i.data.data.equipped === true){
protection += i.data.data.protection;
if(i.system.equipped === true){
protection += i.system.protection;
}
}
}
actorData.data.health.protection = protection;
system.health.protection = protection;
console.log(actor);
}
@@ -86,11 +107,10 @@ export class DeltaGreenActor extends Actor {
* @param {*} agent
*/
_prepareUnnaturalData(actor){
let actorData = actor.data;
const data = actorData.data;
const { system } = actor;
// Loop through ability scores, and add their modifiers to our sheet output.
for (let [key, statistic] of Object.entries(data.statistics)) {
for (let [key, statistic] of Object.entries(system.statistics)) {
// the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile
statistic.x5 = statistic.value * 5;
}
@@ -99,13 +119,13 @@ export class DeltaGreenActor extends Actor {
let protection = 0;
for (let i of actor.items) {
if (i.type === 'armor') {
if(i.data.data.equipped === true){
protection += i.data.data.protection;
if(i.system.equipped === true){
protection += i.system.protection;
}
}
}
actorData.data.health.protection = protection;
system.health.protection = protection;
console.log(actor);
}
@@ -115,37 +135,36 @@ export class DeltaGreenActor extends Actor {
*/
_prepareAgentData(agent) {
let actorData = agent.data;
const data = actorData.data;
const { system } = agent;
// Make modifications to data here. For example:
// Loop through ability scores, and add their modifiers to our sheet output.
for (let [key, statistic] of Object.entries(data.statistics)) {
for (let [key, statistic] of Object.entries(system.statistics)) {
// the x5 is just whatever the raw statistic is x 5 to turn it into a d100 percentile
statistic.x5 = statistic.value * 5;
}
// The ritual skill is from the Handler's Guide, it is for activating a ritual and is always equal to 99 - current sanity.
// The rules can be found on page 166, under 'Ritual Activation'.
actorData.data.skills.ritual = {
system.skills.ritual = {
label: "Ritual",
proficiency: 99 - actorData.data.sanity.value,
proficiency: 99 - system.sanity.value,
cannotBeImprovedByFailure: true,
failure: false
};
if(actorData.data.skills.ritual.proficiency > 99){
actorData.data.skills.ritual.proficiency = 99
if(system.skills.ritual.proficiency > 99){
system.skills.ritual.proficiency = 99
}
else if(actorData.data.skills.ritual.proficiency < 1){
actorData.data.skills.ritual.proficiency = 1
else if(system.skills.ritual.proficiency < 1){
system.skills.ritual.proficiency = 1
}
// The unnatural skill is sort of special
// It cannot be improved via failure, so add in a special property to reflect this
// Mostly to make it easy to deactivate the failure checkbox in the GUI
for (let [key, skill] of Object.entries(data.skills)){
for (let [key, skill] of Object.entries(system.skills)){
if(key === 'unnatural'){
skill.cannotBeImprovedByFailure = true;
}
@@ -168,52 +187,52 @@ export class DeltaGreenActor extends Actor {
}
}
actorData.data.wp.max = actorData.data.statistics.pow.value;
system.wp.max = system.statistics.pow.value;
actorData.data.health.max = Math.ceil((actorData.data.statistics.con.value + actorData.data.statistics.str.value) / 2);
system.health.max = Math.ceil((system.statistics.con.value + system.statistics.str.value) / 2);
// initialize sanity, don't set these afterwards, as they need to be manually edited
if(actorData.data.sanity.value >= 100){
actorData.data.sanity.value = actorData.data.statistics.pow.x5
actorData.data.sanity.currentBreakingPoint = actorData.data.sanity.value - actorData.data.statistics.pow.value;
if(system.sanity.value >= 100){
system.sanity.value = system.statistics.pow.x5
system.sanity.currentBreakingPoint = system.sanity.value - system.statistics.pow.value;
};
actorData.data.sanity.max = 99 - actorData.data.skills.unnatural.proficiency;
system.sanity.max = 99 - system.skills.unnatural.proficiency;
// Sanity Loss Adaptations Logic
let adaptations = actorData.data.sanity.adaptations;
let adaptations = system.sanity.adaptations;
if (adaptations.violence.incident1 && adaptations.violence.incident2 && adaptations.violence.incident3){
actorData.data.sanity.adaptations.violence.isAdapted = true;
system.sanity.adaptations.violence.isAdapted = true;
}
else{
actorData.data.sanity.adaptations.violence.isAdapted = false;
system.sanity.adaptations.violence.isAdapted = false;
}
if (adaptations.helplessness.incident1 && adaptations.helplessness.incident2 && adaptations.helplessness.incident3){
actorData.data.sanity.adaptations.helplessness.isAdapted = true;
system.sanity.adaptations.helplessness.isAdapted = true;
}
else{
actorData.data.sanity.adaptations.helplessness.isAdapted = false;
system.sanity.adaptations.helplessness.isAdapted = false;
}
// calculate total armor rating
let protection = 0;
for (let i of agent.items) {
if (i.type === 'armor') {
if(i.data.data.equipped === true){
protection += i.data.data.protection;
if(i.system.equipped === true){
protection += i.system.protection;
}
}
}
actorData.data.health.protection = protection;
system.health.protection = protection;
// Damage Bonus/Malus From Strength in Hand-to-hand Combat (melee/unarmed)
let bonus = 0;
let sbonus = "";
let strength = actorData.data.statistics.str;
let strength = system.statistics.str;
if(strength.value < 5){
sbonus = "-2";
@@ -232,8 +251,8 @@ export class DeltaGreenActor extends Actor {
bonus = 2;
}
actorData.data.statistics.str.meleeDamageBonus = bonus;
actorData.data.statistics.str.meleeDamageBonusFormula = sbonus;
system.statistics.str.meleeDamageBonus = bonus;
system.statistics.str.meleeDamageBonusFormula = sbonus;
console.log(agent);
}
@@ -254,7 +273,7 @@ export class DeltaGreenActor extends Actor {
let alreadyAdded = false;
for(let item of this.data.items){
for(let item of this.items){
let flag = await item.getFlag('deltagreen', 'SystemName');
@@ -275,7 +294,7 @@ export class DeltaGreenActor extends Actor {
let _temp = await handToHandPack.getDocument(idx._id);
if(_temp.name === 'Unarmed Attack'){
toAdd.push(_temp.data);
toAdd.push(_temp);
}
}
@@ -293,6 +312,41 @@ export class DeltaGreenActor extends Actor {
console.log('Error adding unarmed strike item to Actor.')
console.log(ex);
}
}
}
async AddBaseVehicleItemsIfMissing(){
try{
let flag = await this.getFlag('deltagreen', 'DefaultVehicleArmorAdded');
if(flag !== null && flag !== undefined && flag !== true){
console.log('found a flag');
console.log(flag);
}
else{
// mark the actor so that we don't accidently do this again later, or if we want to fix/change something on it in the future
this.setFlag('deltagreen', 'DefaultVehicleArmorAdded', true);
let toAdd = []; // createEmbeddedDocument expects an array
let armor = await Item.create({type:"armor", name:"Vehicle Frame"});
// this is the current default, but set it anyways in case it gets changed later.
armor.system.protection = 3;
toAdd.push(armor);
// create the item on the actor
let newItems = await this.createEmbeddedDocuments("Item", toAdd);
for(let item of newItems){
await item.setFlag('deltagreen','AutoAdded', true);
}
}
}
catch(ex){
console.log(ex);
}
}
}
+28 -19
View File
@@ -103,6 +103,8 @@ Hooks.once('init', async function() {
}
});
// Is this used anywhere?
Handlebars.registerHelper('getActorSkillProp', function(actorData, skillName, prop) {
try{
if(skillName != "" && prop != ""){
@@ -295,24 +297,31 @@ Hooks.on('createActor', async function(actor, options, userId){
// can put logic specific to a particular user session below
if (userId != game.user.id) { return; };
if(actor != null && actor.data != null && actor.data.type === 'agent'){
// update the default type skill of Art - Painting's labels to try to be localized
// since I really backed myself into a corner on this with my implementation of it...
console.log('createActor Hook');
if(actor != null){
let artLabel = game.i18n.translations.DG?.TypeSkills?.Art ?? "Art";
let paintingLabel = game.i18n.translations.DG?.TypeSkills?.Subskills?.Painting ?? "Painting";
if(actor.type === 'agent'){
// update the default type skill of Art - Painting's labels to try to be localized
// since I really backed myself into a corner on this with my implementation of it...
console.log('createActor Hook');
let updatedData = duplicate(actor.data.data);
updatedData.typedSkills.tskill_01.group = artLabel;
updatedData.typedSkills.tskill_01.label = paintingLabel;
let artLabel = game.i18n.translations.DG?.TypeSkills?.Art ?? "Art";
let paintingLabel = game.i18n.translations.DG?.TypeSkills?.Subskills?.Painting ?? "Painting";
let updatedData = duplicate(actor.system);
updatedData.typedSkills.tskill_01.group = artLabel;
updatedData.typedSkills.tskill_01.label = paintingLabel;
actor.update({"data": updatedData});
// throw on an unarmed strike item for convenience
actor.AddUnarmedAttackItemIfMissing();
}
else if(actor.type === 'unnatural'){
actor.update({"data": updatedData});
// throw on an unarmed strike item for convenience
actor.AddUnarmedAttackItemIfMissing();
}
else if(actor.data.type === 'unnatural'){
}
else if(actor.type === 'vehicle'){
actor.AddBaseVehicleItemsIfMissing();
}
}
@@ -336,7 +345,7 @@ Hooks.on('createActor', async function(actor, options, userId){
async function createDeltaGreenMacro(data, slot) {
if (data.type !== "Item") return;
if (!("data" in data)) return ui.notifications.warn("You can only create macro buttons for owned Items");
const item = data.data;
const item = data.system;
// Create the macro command
let command = '// Uncomment line below to also roll skill check if desired.'
@@ -390,9 +399,9 @@ function rollItemSkillCheckMacro(itemName) {
const item = actor ? actor.items.find(i => i.name === itemName) : null;
if (!item) return ui.notifications.warn(`Your controlled Actor does not have an item named ${itemName}`);
let skillName = item.data.data.skill.toString();
let skillName = item.system.skill.toString();
let skill = actor.data.data.skills[skillName];
let skill = actor.system.skills[skillName];
let translatedSkillLabel = "";
try{
@@ -413,7 +422,7 @@ function rollSkillMacro(skillName) {
if(!actor) return ui.notifications.warn('Must have an Actor selected first.');
let skill = actor.data.data.skills[skillName];
let skill = actor.system.skills[skillName];
if(!skill) return ui.notifications.warn('Bad skill name passed to macro.');
+3 -2
View File
@@ -19,14 +19,15 @@ export class DeltaGreenItemSheet extends ItemSheet {
const path = "systems/deltagreen/templates/item";
// unique item sheet by type, like `weapon-sheet.html`.
return `${path}/item-${this.item.data.type}-sheet.html`;
return `${path}/item-${this.item.type}-sheet.html`;
}
/* -------------------------------------------- */
/** @override */
getData() {
async getData() {
const data = super.getData();
data.enrichedDescription = await TextEditor.enrichHTML(this.object.system.description, {async: true});
return data;
}
+11 -11
View File
@@ -12,9 +12,9 @@ export class DeltaGreenItem extends Item {
super.prepareData();
// Get the Item's data
const itemData = this.data;
const actorData = this.actor ? this.actor.data : {};
const data = itemData.data;
const itemData = this;
const actorData = this.actor || {};
const system = itemData.system;
}
/**
@@ -25,21 +25,21 @@ export class DeltaGreenItem extends Item {
async roll() {
// Basic template rendering data
const token = this.actor.token;
const item = this.data;
const actorData = this.actor ? this.actor.data.data : {};
const itemData = item.data;
const itemData = this;
const actorSystemData = this.actor.system || {};
const { system } = itemData;
if(item.data.isLethal){
sendLethalityTestToChat(this.actor, item.name, item.data.lethality, game.settings.get("core", "rollMode"))
if(system.isLethal){
sendLethalityTestToChat(this.actor, item.name, system.lethality, game.settings.get("core", "rollMode"))
}
else{
// regular damage roll
let diceFormula = item.data.damage;
let skillType = item.data.skill;
let diceFormula = system.damage;
let skillType = system.skill;
if(skillType === 'unarmed_combat' || skillType === 'melee_weapons'){
diceFormula += this.actor.data.data.statistics.str.meleeDamageBonusFormula;
diceFormula += actorSystemData.statistics.str.meleeDamageBonusFormula;
}
sendDamageRollToChat(this.actor, item.name, diceFormula);
+3 -3
View File
@@ -2,7 +2,7 @@ import {localizeWithFallback} from "../other/utility-functions.js"
export async function sendPercentileTestToChat(actor, skill, target, rollMode){
//let roll = new Roll('1D100', actor.data.data).evaluate(false);
let roll = new Roll('1D100', actor.data.data)
let roll = new Roll('1D100', actor.system)
await roll.evaluate({async: true});
@@ -140,7 +140,7 @@ export function skillCheckResultIsCritical(rollResult){
export async function sendLethalityTestToChat(actor, weaponName, target, rollMode){
//let roll = new Roll('1D100', actor.data.data).evaluate(false);
let roll = new Roll('1D100', actor.data.data);
let roll = new Roll('1D100', actor.system);
await roll.evaluate({async: true});
@@ -244,7 +244,7 @@ export async function sendDamageRollToChat(actor, label, diceFormula, rollMode){
//diceFormula += actor.data.data.statistics.str.meleeDamageBonusFormula;
let roll = new Roll(diceFormula, actor.data.data);
let roll = new Roll(diceFormula, actor.system);
await roll.evaluate({async: true});
+2 -1
View File
@@ -11,6 +11,7 @@ export const preloadHandlebarsTemplates = async function() {
"systems/deltagreen/templates/actor/unnatural-sheet.html",
"systems/deltagreen/templates/actor/npc-sheet.html",
"systems/deltagreen/templates/actor/cv-partial.html",
"systems/deltagreen/templates/dialog/modify-percentile-roll.html"
"systems/deltagreen/templates/dialog/modify-percentile-roll.html",
"systems/deltagreen/templates/actor/vehicle-sheet.html"
]);
};
+39 -41
View File
@@ -1,16 +1,13 @@
{
"name": "deltagreen",
"id": "deltagreen",
"title": "Delta Green (Unofficial)",
"description": "Fan-made Foundry VTT system for Delta Green: The Role Playing Game for Foundry VTT. Based on the rules in the Agent's Handbook (https://www.drivethrurpg.com/product/181674/Delta-Green-Agents-Handbook) [*NOT* Call of Cthulu]. Made with the permission of but neither affiliated with nor endorsed by Arc Dream Publishing or the Delta Green Partnership.",
"author": "TheLastScrub (https://github.com/TheLastScrub)",
"authors": [],
"url": "https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial",
"license": "LICENSE.txt",
"flags": {},
"version": "1.0.6",
"minimumCoreVersion": "0.8.6",
"compatibleCoreVersion": "9",
"scripts": [],
"compatibility": {
"minimum": "0.8.6"
},
"esmodules": [
"module/deltagreen.js"
],
@@ -22,27 +19,32 @@
{
"lang": "en",
"name": "English",
"path": "lang/en.json"
"path": "lang/en.json",
"flags": {}
},
{
"lang": "ja",
"name": "日本語",
"path": "lang/ja.json"
"path": "lang/ja.json",
"flags": {}
},
{
"lang": "es",
"name": "Español",
"path": "lang/es.json"
"path": "lang/es.json",
"flags": {}
},
{
"lang": "ca",
"name": "Català",
"path": "lang/ca.json"
"path": "lang/ca.json",
"flags": {}
},
{
"lang": "pt",
"name": "Português (Brasil)",
"path": "lang/pt.json"
"path": "lang/pt.json",
"flags": {}
}
],
"packs": [
@@ -50,65 +52,61 @@
"name": "firearms",
"label": "Firearms",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/firearms.db",
"entity": "Item",
"private": false
"path": "packs/firearms.db",
"private": false,
"type": "Item",
"flags": {}
},
{
"name": "armor",
"label": "Armor",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/armor.db",
"entity": "Item",
"private": false
"path": "packs/armor.db",
"private": false,
"type": "Item",
"flags": {}
},
{
"name": "hand-to-hand-weapons",
"label": "Hand-to-Hand Weapons",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/hand-to-hand-weapons.db",
"entity": "Item",
"private": false
"path": "packs/hand-to-hand-weapons.db",
"private": false,
"type": "Item",
"flags": {}
},
{
"name": "agent-pregens",
"label": "Agent Pregens",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/pregens.db",
"entity": "Actor",
"private": false
"path": "packs/pregens.db",
"private": false,
"type": "Actor",
"flags": {}
},
{
"name": "operation-code-name-generator-tables",
"label": "Operation Code Name Generator Tables",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/operation-code-name-generator.db",
"entity": "RollTable",
"private": false
"path": "packs/operation-code-name-generator.db",
"private": false,
"type": "RollTable",
"flags": {}
},
{
"name": "operation-code-name-generator-macro",
"label": "Operation Code Name Generator Macro",
"system": "deltagreen",
"module": "deltagreen",
"path": "./packs/operation-code-name-generator-macro.db",
"entity": "Macro",
"private": false
"path": "packs/operation-code-name-generator-macro.db",
"private": false,
"type": "Macro",
"flags": {}
}
],
"system": [],
"dependencies": [],
"socket": false,
"manifest": "https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial/raw/master/system.json",
"download": "https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial/archive/v1.0.6.zip",
"protected": false,
"gridDistance": 1,
"gridUnits": "m",
"primaryTokenAttribute": "health",
"secondaryTokenAttribute": "wp"
}
}
+15 -1
View File
@@ -3,7 +3,8 @@
"types": [
"agent",
"unnatural",
"npc"
"npc",
"vehicle"
],
"templates": {
"base": {
@@ -461,6 +462,19 @@
"shortDescription": "",
"showUntrainedSkills": true
},
"vehicle":{
"name": "",
"description": "",
"shortDescription": "",
"health": {
"value": 10,
"min": 0,
"max": 10
},
"speed": "",
"expense": "Standard",
"passengers": []
},
"agent": {
"templates": [
"base",
+54 -54
View File
@@ -13,7 +13,7 @@
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" title="{{localize 'DG.AgentNameFieldTooltip' }}"/></h1>
</div>
<div class="">
<h2 class="profession"><input name="data.biography.profession" type="text" value="{{actor.data.data.biography.profession}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
<h2 class="profession"><input name="system.biography.profession" type="text" value="{{actor.system.biography.profession}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
</div>
</div>
</div>
@@ -22,51 +22,51 @@
{{!-- HP --}}
<div class="resource-outer-grid-1col">
<label for="actor.data.data.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP' }} (<span>{{actor.data.data.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<label for="actor.system.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP' }} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.health.value" value="{{actor.data.data.health.value}}" data-dtype="Number"/>
<input type="text" name="system.health.value" value="{{actor.system.health.value}}" data-dtype="Number"/>
<span> / </span>
<!-- <span title="{{localize 'DG.Tooltip.MaximumHP'}}" class="max-attribute-value-label">{{numberFormat data.health.max decimals=0 sign=false}}</span> -->
<!-- <span title="{{localize 'DG.Tooltip.MaximumHP'}}" class="max-attribute-value-label">{{numberFormat system.health.max decimals=0 sign=false}}</span> -->
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumHP'}}">
<div>{{numberFormat actor.data.data.health.max decimals=0 sign=false}}</div>
<div>{{numberFormat actor.system.health.max decimals=0 sign=false}}</div>
</div>
</div>
</div>
{{!-- WP --}}
<div class="resource-outer-grid-1col">
<label for="data.wp.value" class="resource-label" title="{{localize 'DG.Tooltip.WP'}}">{{localize 'DG.Attributes.WP' }}</label>
<label for="system.wp.value" class="resource-label" title="{{localize 'DG.Tooltip.WP'}}">{{localize 'DG.Attributes.WP' }}</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.wp.value" value="{{actor.data.data.wp.value}}" data-dtype="Number"/>
<input type="text" name="system.wp.value" value="{{actor.system.wp.value}}" data-dtype="Number"/>
<span> / </span>
<!-- <span class="max-attribute-value-label" title="{{localize 'DG.Tooltip.MaximumWP'}}">{{numberFormat data.wp.max decimals=0 sign=false}}</span> -->
<!-- <span class="max-attribute-value-label" title="{{localize 'DG.Tooltip.MaximumWP'}}">{{numberFormat system.wp.max decimals=0 sign=false}}</span> -->
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumWP'}}">
<div>{{numberFormat actor.data.data.wp.max decimals=0 sign=false}}</div>
<div>{{numberFormat actor.system.wp.max decimals=0 sign=false}}</div>
</div>
</div>
</div>
{{!-- Sanity --}}
<div class="resource-outer-grid-1col">
<label for="data.san.value" class="resource-label rollable"
<label for="system.san.value" class="resource-label rollable"
data-rolltype="sanity" data-roll="d100" data-target="sanity" data-label="SAN" title="{{localize 'DG.Tooltip.SanityLabel'}}"
>{{localize 'DG.Attributes.SAN' }} <i class="fas fa-dice"></i></label>
<div class="resource-inner-grid-3col">
{{#if (keepSanityPrivate)}}
<input type="text" value="??" disabled title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{data.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<input type="text" value="??" disabled title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{system.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<span> / </span>
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumSanity'}}">
<div>{{numberFormat actor.data.data.sanity.max decimals=0 sign=false}}</div>
<div>{{numberFormat actor.system.sanity.max decimals=0 sign=false}}</div>
</div>
{{/if}}
{{#unless (keepSanityPrivate)}}
<input type="text" name="data.sanity.value" value="{{actor.data.data.sanity.value}}" data-dtype="Number" title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{data.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<input type="text" name="system.sanity.value" value="{{actor.system.sanity.value}}" data-dtype="Number" title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{system.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<span> / </span>
<div class="max-resource-value" title="{{localize 'DG.Tooltip.MaximumSanity'}}">
<div>{{numberFormat actor.data.data.sanity.max decimals=0 sign=false}}</div>
<div>{{numberFormat actor.system.sanity.max decimals=0 sign=false}}</div>
</div>
{{/unless}}
@@ -94,10 +94,10 @@
<div class="tab skills" data-group="primary" data-tab="skills">
<div class="grid grid-3col">
{{#each actor.data.data.skills as |skill key|}}
{{#each actor.system.skills as |skill key|}}
<div class="flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="data.skills.{{key}}.value"
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="system.skills.{{key}}.value"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
{{#unless skill.proficiency}}title="{{localize 'DG.Tooltip.CannotRollSkillLabel'}}"{{/unless}}
>
@@ -107,15 +107,15 @@
{{#if_eq key 'ritual' }}
{{#if (keepSanityPrivate)}}
<input class="percentile-skill-input" type="text" name="data.skills.{{key}}.proficiency" value="??" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="data.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
<input class="percentile-skill-input" type="text" name="system.skills.{{key}}.proficiency" value="??" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="system.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
title="{{localize 'DG.Tooltip.SkillFailCheckbox'}}"
/>
{{/if}}
{{#unless (keepSanityPrivate)}}
<input class="percentile-skill-input" type="text" name="data.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="data.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
<input class="percentile-skill-input" type="text" name="system.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="system.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
title="{{localize 'DG.Tooltip.SkillFailCheckbox'}}"
/>
{{/unless}}
@@ -123,8 +123,8 @@
{{/if_eq}}
{{#if_not_eq key 'ritual' }}
<input class="percentile-skill-input" type="text" name="data.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="data.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
<input class="percentile-skill-input" type="text" name="system.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input type="checkbox" name="system.skills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}}
title="{{localize 'DG.Tooltip.SkillFailCheckbox'}}"
/>
{{/if_not_eq}}
@@ -139,7 +139,7 @@
<a class="item-control apply-skill-improvements">{{localize 'DG.Skills.ApplySkillImprovements'}}<i class="fas fa-plus"></i></a>
</div>
<div class="grid-2col">
{{#each actor.data.data.typedSkills as |skill key|}}
{{#each actor.system.typedSkills as |skill key|}}
<div class="item flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{skill.label}}"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
@@ -147,8 +147,8 @@
>
{{skill.group}} ({{skill.label}})
</label>
<input class="percentile-skill-input" type="text" name="data.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<input type="checkbox" name="data.typedSkills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}} />
<input class="percentile-skill-input" type="text" name="system.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<input type="checkbox" name="system.typedSkills.{{key}}.failure" {{checked skill.failure}} data-dtype="Boolean" {{#if skill.cannotBeImprovedByFailure}} disabled {{/if}} />
<div class="item-controls">
<a class="item-control typed-skill-edit" title="Edit Skill"><i class="fas fa-edit" data-typedskill="{{key}}" ></i></a>
<a class="item-control typed-skill-delete" title="Delete Skill"><i class="fas fa-trash" data-typedskill="{{key}}" ></i></a>
@@ -162,16 +162,16 @@
{{!-- Physical Statistics like STR, CON, etc. --}}
<div class="tab physical" data-group="primary" data-tab="physical">
<div class="grid grid-3col">
{{#each actor.data.data.statistics as |statistic key|}}
{{#each actor.system.statistics as |statistic key|}}
<div class="flex-group-center">
<div class="">
<div class="physical-stats-outer-grid-3col">
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" title="{{localize 'DG.Tooltip.x5AttributeLabel'}}" for="data.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="data.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<span >({{numberFormat statistic.x5 decimals=0 sign=false}}%)</span>
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" title="{{localize 'DG.Tooltip.x5AttributeLabel'}}" for="system.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="system.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<span class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" title="{{localize 'DG.Tooltip.x5AttributeLabel'}}">({{numberFormat statistic.x5 decimals=0 sign=false}}%)</span>
</div >
<div >
<input type="text" name="data.statistics.{{key}}.distinguishing_feature" value="{{statistic.distinguishing_feature}}" data-dtype="String" title="{{localize 'DG.Tooltip.DistinguishingFeature'}}" />
<input type="text" name="system.statistics.{{key}}.distinguishing_feature" value="{{statistic.distinguishing_feature}}" data-dtype="String" title="{{localize 'DG.Tooltip.DistinguishingFeature'}}" />
</div>
</div>
</div>
@@ -182,13 +182,13 @@
<label class="bolded-label first-aid-label"
title="{{localize 'DG.Tooltip.FirstAidAttempted'}}"
>{{localize 'DG.Physical.FirstAidLabel'}}</label>
<input class="labeled-resource-checkbox" type="checkbox" name="data.physical.firstAidAttempted" {{checked actor.data.data.physical.firstAidAttempted}} data-dtype="Boolean" title="{{localize 'DG.Tooltip.FirstAidAttempted'}}" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.physical.firstAidAttempted" {{checked actor.system.physical.firstAidAttempted}} data-dtype="Boolean" title="{{localize 'DG.Tooltip.FirstAidAttempted'}}" />
</div>
<div>
<label class="bolded-label">{{localize 'DG.Physical.Wounds'}}</label>
<!--<input class="fill-remaining-space" type="text" name="data.physical.wounds" value="{{data.physical.wounds}}" data-dtype="String" /> -->
<!--<input class="fill-remaining-space" type="text" name="system.physical.wounds" value="{{system.physical.wounds}}" data-dtype="String" /> -->
<!-- This seems to save values, but not retrieve them... -->
<textarea class="wounds" rows="10" cols="10" name="data.physical.wounds">{{actor.data.data.physical.wounds}}</textarea>
<textarea class="wounds" rows="10" cols="10" name="system.physical.wounds">{{actor.system.physical.wounds}}</textarea>
</div>
</div>
</div>
@@ -198,7 +198,7 @@
<div class="">
<div class="breaking-point-grid-3col">
<label class="bolded-label">{{localize 'DG.Mental.BreakingPoint'}}</label>
<input class="centered-input-value" title="{{localize 'DG.Tooltip.BreakPoint'}}" type="text" name="data.sanity.currentBreakingPoint" value="{{actor.data.data.sanity.currentBreakingPoint}}" data-dtype="Number"/>
<input class="centered-input-value" title="{{localize 'DG.Tooltip.BreakPoint'}}" type="text" name="system.sanity.currentBreakingPoint" value="{{actor.system.sanity.currentBreakingPoint}}" data-dtype="Number"/>
<a class="btn-tiny btn-reset-breaking-point" title="Reset breaking point to be current SAN - WP.">{{localize 'DG.Mental.Reset'}}</a>
</div>
@@ -207,27 +207,27 @@
<div class="adaptation-grid-5col">
<Label>{{localize 'DG.Mental.Violence'}}</Label>
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.violence.incident1" {{checked actor.data.data.sanity.adaptations.violence.incident1}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.violence.incident2" {{checked actor.data.data.sanity.adaptations.violence.incident2}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.violence.incident3" {{checked actor.data.data.sanity.adaptations.violence.incident3}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.violence.incident1" {{checked actor.system.sanity.adaptations.violence.incident1}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.violence.incident2" {{checked actor.system.sanity.adaptations.violence.incident2}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.violence.incident3" {{checked actor.system.sanity.adaptations.violence.incident3}} data-dtype="Boolean" />
<label class="adapted-label"
title="{{localize 'DG.Tooltip.AdaptedToViolence'}}"
>
{{#if actor.data.data.sanity.adaptations.violence.isAdapted}}
{{#if actor.system.sanity.adaptations.violence.isAdapted}}
{{localize 'DG.Mental.AdaptedToViolence'}}
{{/if}}
</label>
<label>{{localize 'DG.Mental.Helplessness'}}</label>
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.helplessness.incident1" {{checked actor.data.data.sanity.adaptations.helplessness.incident1}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.helplessness.incident2" {{checked actor.data.data.sanity.adaptations.helplessness.incident2}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="data.sanity.adaptations.helplessness.incident3" {{checked actor.data.data.sanity.adaptations.helplessness.incident3}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.helplessness.incident1" {{checked actor.system.sanity.adaptations.helplessness.incident1}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.helplessness.incident2" {{checked actor.system.sanity.adaptations.helplessness.incident2}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.sanity.adaptations.helplessness.incident3" {{checked actor.system.sanity.adaptations.helplessness.incident3}} data-dtype="Boolean" />
<label class="adapted-label"
title="{{localize 'DG.Tooltip.AdaptedToHelplessness'}}"
>
{{#if actor.data.data.sanity.adaptations.helplessness.isAdapted}}
{{#if actor.system.sanity.adaptations.helplessness.isAdapted}}
{{localize 'DG.Mental.AdaptedToHelplessness'}}
{{/if}}
</label>
@@ -252,15 +252,15 @@
<li class="item flexrow" data-item-id="{{item.id}}">
<h4 class="item-name"
{{#if item.data.data.crossedOut}}
{{#if item.system.crossedOut}}
style="text-decoration: line-through;"
{{/if}}
>
{{item.name}}
</h4>
{{#if item.data.data.crossedOut}}
<h4 class="item-name">{{item.data.data.disorder}}</h4>
{{#if item.system.crossedOut}}
<h4 class="item-name">{{item.system.disorder}}</h4>
{{/if}}
<div class="item-controls">
@@ -306,9 +306,9 @@
class="item-name rollable"
data-roll="d100"
data-rolltype="weaponskill"
data-target="{{item.data.data.skill}}"
data-label="{{localizeWeaponSkill item.data.data.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.data.data.skill}})"
data-target="{{item.system.skill}}"
data-label="{{localizeWeaponSkill item.system.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
>
{{item.name}}
</h4>
@@ -343,7 +343,7 @@
</span>
<span class="centered-item-property">{{item.data.data.armorPiercing}}</span>
<span class="centered-item-property">{{item.system.armorPiercing}}</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
@@ -379,10 +379,10 @@
<li class="item flexrow" data-item-id="{{item.id}}">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></div>
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span class="centered-item-property">{{item.data.data.protection}}</span>
<span class="centered-item-property">{{item.system.protection}}</span>
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}">
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
@@ -428,7 +428,7 @@
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}" >
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
@@ -476,8 +476,8 @@
<li class="item flexrow" data-item-id="{{item.id}}">
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span>{{item.data.data.relationship}}</span>
<span>{{item.data.data.score}}</span>
<span>{{item.system.relationship}}</span>
<span>{{item.system.score}}</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
+10 -10
View File
@@ -1,24 +1,24 @@
<div class="bio-grid-5col bio-grid-top-border">
<span>{{localize 'DG.CV.Sex'}}</span>
<input class="fill-remaining-space" type="text" name="data.biography.sex" value="{{actor.data.data.biography.sex}}" data-dtype="String" placeholder="{{localize 'DG.CV.SexPlaceholder'}}" />
<input class="fill-remaining-space" type="text" name="system.biography.sex" value="{{actor.system.biography.sex}}" data-dtype="String" placeholder="{{localize 'DG.CV.SexPlaceholder'}}" />
<span></span>
<span class="bio-grid-label">{{localize 'DG.CV.AgeAndDoB'}}</span>
<input class="fill-remaining-space" type="text" name="data.biography.age" value="{{actor.data.data.biography.age}}" data-dtype="String" placeholder="{{localize 'DG.CV.AgeAndDoBPlaceholder'}}" />
<input class="fill-remaining-space" type="text" name="system.biography.age" value="{{actor.system.biography.age}}" data-dtype="String" placeholder="{{localize 'DG.CV.AgeAndDoBPlaceholder'}}" />
</div>
<div class="bio-grid-2col">
<span>{{localize 'DG.CV.Employer'}}</span>
<input class="fill-remaining-space" type="text" name="data.biography.employer" value="{{actor.data.data.biography.employer}}" data-dtype="String" placeholder="{{localize 'DG.CV.EmployerPlaceholder'}}" />
<input class="fill-remaining-space" type="text" name="system.biography.employer" value="{{actor.system.biography.employer}}" data-dtype="String" placeholder="{{localize 'DG.CV.EmployerPlaceholder'}}" />
<span>{{localize 'DG.CV.Nationality'}}</span>
<input class="fill-remaining-space" type="text" name="data.biography.nationality" value="{{actor.data.data.biography.nationality}}" data-dtype="String" placeholder="{{localize 'DG.CV.NationalityPlaceholder'}}" />
<input class="fill-remaining-space" type="text" name="system.biography.nationality" value="{{actor.system.biography.nationality}}" data-dtype="String" placeholder="{{localize 'DG.CV.NationalityPlaceholder'}}" />
</div>
<div class="bio-grid-2col">
<span>{{localize 'DG.CV.Education'}}</span>
<input class="fill-remaining-space" type="text" name="data.biography.education" value="{{actor.data.data.biography.education}}" data-dtype="String" placeholder="{{localize 'DG.CV.EducationPlaceholder'}}" />
<input class="fill-remaining-space" type="text" name="system.biography.education" value="{{actor.system.biography.education}}" data-dtype="String" placeholder="{{localize 'DG.CV.EducationPlaceholder'}}" />
</div>
{{#if (playerHasGamemasterPrivileges)}}
@@ -27,20 +27,20 @@
<span class="yellow-king yellow-king-rotate2">{{localize 'DG.ImpossibleLanscapes.IHaveSeenThe'}}</span>
<span></span>
<span class="yellow-king yellow-sign">{{localize 'DG.ImpossibleLanscapes.YellowSign'}}</span>
<input type="checkbox" name="data.corruption.haveSeenTheYellowSign" {{checked actor.data.data.corruption.haveSeenTheYellowSign}} data-dtype="Boolean" />
<input type="checkbox" name="system.corruption.haveSeenTheYellowSign" {{checked actor.system.corruption.haveSeenTheYellowSign}} data-dtype="Boolean" />
<span></span>
<span class="yellow-king yellow-king-rotate1">{{localize 'DG.ImpossibleLanscapes.CorruptionFirstHalf'}}</span>
<span class="yellow-king yellow-king-rotate4">{{localize 'DG.ImpossibleLanscapes.CorruptionSecondHalf'}}</span>
<span></span>
<input class="yellow-king" type="number" placeholder="0" name="data.corruption.value" value="{{actor.data.data.corruption.value}}" />
<input class="yellow-king" type="number" placeholder="0" name="system.corruption.value" value="{{actor.system.corruption.value}}" />
</div>
<div class="yellow-king yellow-king-grid-5col">
<span class="yellow-king-label">{{localize 'DG.ImpossibleLanscapes.Gift'}}</span>
<input class="fill-remaining-space" type="text" name="data.corruption.gift" value="{{actor.data.data.corruption.gift}}" data-dtype="String" />
<input class="fill-remaining-space" type="text" name="system.corruption.gift" value="{{actor.system.corruption.gift}}" data-dtype="String" />
<span></span>
<span class="yellow-king-label">{{localize 'DG.ImpossibleLanscapes.Insight'}}</span>
<input class="fill-remaining-space" type="text" name="data.corruption.insight" value="{{actor.data.data.corruption.insight}}" data-dtype="String" />
<input class="fill-remaining-space" type="text" name="system.corruption.insight" value="{{actor.system.corruption.insight}}" data-dtype="String" />
</div>
{{/if}}
@@ -50,5 +50,5 @@
</div>
<div class="editor-host">
{{editor content=actor.data.data.physicalDescription target="data.physicalDescription" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.physicalDescription" button=true owner=owner editable=editable}}
</div>
+1 -1
View File
@@ -13,7 +13,7 @@
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" title="{{localize 'DG.AgentNameFieldTooltip' }}"/></h1>
</div>
<div>
<h2 class="profession"><input name="data.biography.profession" type="text" value="{{data.data.biography.profession}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
<h2 class="profession"><input name="system.biography.profession" type="text" value="{{actor.system.biography.profession}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
</div>
</div>
</div>
+38 -39
View File
@@ -1,5 +1,4 @@
<form class="{{cssClass}} {{getFontFamilySystemSettingClass}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
@@ -13,7 +12,7 @@
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" /></h1>
</div>
<div class="">
<h2 class="profession"><input name="data.shortDescription" type="text" value="{{actor.data.data.shortDescription}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
<h2 class="profession"><input name="system.shortDescription" type="text" value="{{actor.system.shortDescription}}" placeholder="{{localize 'DG.FallbackText.ProfessionAndOrRank'}}"/></h1>
</div>
</div>
</div>
@@ -22,33 +21,33 @@
{{!-- HP --}}
<div class="resource-outer-grid-1col">
<label for="actor.data.data.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP'}} (<span>{{actor.data.data.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<label for="actor.system.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP'}} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.health.value" value="{{actor.data.data.health.value}}" data-dtype="Number"/>
<input type="text" name="system.health.value" value="{{actor.system.health.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="data.health.max" value="{{actor.data.data.health.max}}" data-dtype="Number"/>
<input type="text" name="system.health.max" value="{{actor.system.health.max}}" data-dtype="Number"/>
</div>
</div>
{{!-- WP --}}
<div class="resource-outer-grid-1col">
<label for="data.wp.value" class="resource-label" title="{{localize 'DG.Tooltip.WP'}}">{{localize 'DG.Attributes.WP' }}</label>
<label for="system.wp.value" class="resource-label" title="{{localize 'DG.Tooltip.WP'}}">{{localize 'DG.Attributes.WP' }}</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.wp.value" value="{{actor.data.data.wp.value}}" data-dtype="Number"/>
<input type="text" name="system.wp.value" value="{{actor.system.wp.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="data.wp.max" value="{{actor.data.data.wp.max}}" data-dtype="Number"/>
<input type="text" name="system.wp.max" value="{{actor.system.wp.max}}" data-dtype="Number"/>
</div>
</div>
{{!-- Sanity --}}
<div class="resource-outer-grid-1col">
<label for="data.wp.value" class="resource-label rollable"
<label for="system.wp.value" class="resource-label rollable"
data-rolltype="sanity" data-roll="d100" data-target="sanity" data-label="SAN" title="{{localize 'DG.Tooltip.SanityLabel'}}"
>{{localize 'DG.Attributes.SAN' }}</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.sanity.value" value="{{actor.data.data.sanity.value}}" data-dtype="Number" title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{actor.data.data.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<input type="text" name="system.sanity.value" value="{{actor.system.sanity.value}}" data-dtype="Number" title="{{localize 'DG.Tooltip.CurrentSanityPartOne'}}{{actor.system.sanity.currentBreakingPoint}}{{localize 'DG.Tooltip.CurrentSanityPartTwo'}}" />
<span> {{localize 'DG.NPCSheet.BreakPointAbbreviation'}}: </span>
<input type="text" name="data.sanity.currentBreakingPoint" value="{{actor.data.data.sanity.currentBreakingPoint}}" data-dtype="Number" title="{{localize 'DG.Tooltip.BreakPoint'}}" />
<input type="text" name="system.sanity.currentBreakingPoint" value="{{actor.system.sanity.currentBreakingPoint}}" data-dtype="Number" title="{{localize 'DG.Tooltip.BreakPoint'}}" />
</div>
</div>
</div>
@@ -58,15 +57,15 @@
{{!-- Physical Statistics like STR, CON, etc. --}}
<div class="">
<div class="grid grid-3col">
{{#each actor.data.data.statistics as |statistic key|}}
{{#each actor.system.statistics as |statistic key|}}
<div class="flex-group-center">
<div class="">
<div class="physical-stats-outer-grid-3col">
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" title="{{localize 'DG.Tooltip.x5AttributeLabel'}}" for="data.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="data.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" title="{{localize 'DG.Tooltip.x5AttributeLabel'}}" for="system.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="system.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<span >({{numberFormat statistic.x5 decimals=0 sign=false}}%)</span>
</div >
{{!-- <div> <input type="text" name="data.statistics.{{key}}.distinguishing_feature" value="{{statistic.distinguishing_feature}}" data-dtype="String" title="{{localize 'DG.Tooltip.DistinguishingFeature'}}" /> </div> --}}
{{!-- <div> <input type="text" name="system.statistics.{{key}}.distinguishing_feature" value="{{statistic.distinguishing_feature}}" data-dtype="String" title="{{localize 'DG.Tooltip.DistinguishingFeature'}}" /> </div> --}}
</div>
</div>
{{/each}}
@@ -90,22 +89,22 @@
<div class="tab skills" data-group="primary" data-tab="skills">
{{!-- Checkbox to hide/show skills that are at zero --}}
<div>
<span class="resource-label" for="data.showUntrainedSkills">{{localize 'DG.UnnaturalSheet.HideUntrainedSkillsLabel'}}:</label>
<input class="labeled-resource-checkbox" type="checkbox" name="data.showUntrainedSkills" {{checked data.data.showUntrainedSkills}} data-dtype="Boolean" />
<span class="resource-label" for="system.showUntrainedSkills">{{localize 'DG.UnnaturalSheet.HideUntrainedSkillsLabel'}}:</label>
<input class="labeled-resource-checkbox" type="checkbox" name="system.showUntrainedSkills" {{checked actor.system.showUntrainedSkills}} data-dtype="Boolean" />
</div>
<div class="grid grid-3col">
{{#each actor.data.data.skills as |skill key|}}
{{#each actor.system.skills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.data.data.showUntrainedSkills skill.proficiency)}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.system.showUntrainedSkills skill.proficiency)}}
<div class="flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="data.skills.{{key}}.value"
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="system.skills.{{key}}.value"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
{{#unless skill.proficiency}}title="{{localize 'DG.Tooltip.CannotRollSkillLabel'}}"{{/unless}}
>
{{ localize (concat "DG.Skills." key) }}
</label>
<input class="percentile-skill-input" type="text" name="data.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input class="percentile-skill-input" type="text" name="system.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
</div>
{{/if}}
@@ -118,8 +117,8 @@
<a class="item-control typed-skill-add"><i class="fas fa-plus"></i>{{localize 'DG.Skills.AddTypedOrCustomSkill'}}</a>
</div>
<div class="grid-2col">
{{#each actor.data.data.typedSkills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.data.data.showUntrainedSkills skill.proficiency)}}
{{#each actor.system.typedSkills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.system.showUntrainedSkills skill.proficiency)}}
<div class="item flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{skill.label}}"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
@@ -127,7 +126,7 @@
>
{{skill.group}} ({{skill.label}})
</label>
<input class="percentile-skill-input" type="text" name="data.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<input class="percentile-skill-input" type="text" name="system.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<div class="item-controls">
<a class="item-control typed-skill-delete" title="Delete Skill"><i class="fas fa-trash" data-typedskill="{{key}}" ></i></a>
@@ -143,7 +142,7 @@
</div>
<div class="unnatural-notes-section">
<div class="editor-host">
{{editor content=actor.data.data.notes target="data.notes" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.notes" button=true owner=owner editable=editable}}
</div>
</div>
@@ -180,32 +179,32 @@
class="item-name rollable"
data-roll="d100"
data-rolltype="weaponskill"
data-target="{{item.data.data.skill}}"
data-label="{{localizeWeaponSkill item.data.data.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.data.data.skill}})"
data-target="{{item.system.skill}}"
data-label="{{localizeWeaponSkill item.system.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
>
{{item.name}}
</h4>
{{#unless item.data.data.isLethal}}
{{#unless item.system.isLethal}}
<span class="rollable centered-item-property"
data-rolltype="damage"
data-target="damage"
data-label="{{toUpperCase item.name}}"
data-roll="{{toUpperCase item.data.data.damage}}"
data-skill="{{item.data.data.skill}}"
data-roll="{{toUpperCase item.system.damage}}"
data-skill="{{item.system.skill}}"
>
{{toUpperCase item.data.data.damage}}</span>
{{toUpperCase item.system.damage}}</span>
{{/unless}}
{{#if item.data.data.isLethal}}
<span class="rollable centered-item-property" data-rolltype="lethality" data-target="{{item.data.data.lethality}}" data-label="{{item.name}}" data-roll="d100"
{{#if item.system.isLethal}}
<span class="rollable centered-item-property" data-rolltype="lethality" data-target="{{item.system.lethality}}" data-label="{{item.name}}" data-roll="d100"
title="{{localize 'DG.ItemWindow.Weapons.LethalityTooltip'}}"
>{{formatLethality item.data.data.lethality}}</span>
>{{formatLethality item.system.lethality}}</span>
{{/if}}
<span class="centered-item-property">{{item.data.data.armorPiercing}}</span>
<span class="centered-item-property">{{item.system.armorPiercing}}</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
@@ -241,10 +240,10 @@
<li class="item flexrow" data-item-id="{{item.id}}">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></div>
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span class="centered-item-property">{{item.data.data.protection}}</span>
<span class="centered-item-property">{{item.system.protection}}</span>
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}">
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
@@ -291,7 +290,7 @@
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}" >
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
+37 -38
View File
@@ -1,5 +1,4 @@
<form class="{{cssClass}} {{getFontFamilySystemSettingClass}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
@@ -13,7 +12,7 @@
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" /></h1>
</div>
<div class="">
<h2 class="profession"><input name="data.shortDescription" type="text" value="{{actor.data.data.shortDescription}}" placeholder="{{localize 'DG.UnnaturalSheet.ShortDescriptionFallbackText'}}"/></h1>
<h2 class="profession"><input name="system.shortDescription" type="text" value="{{actor.system.shortDescription}}" placeholder="{{localize 'DG.UnnaturalSheet.ShortDescriptionFallbackText'}}"/></h1>
</div>
</div>
</div>
@@ -22,31 +21,31 @@
{{!-- HP --}}
<div class="resource-outer-grid-1col">
<label for="actor.data.data.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP'}} (<span>{{actor.data.data.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<label for="actor.system.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP'}} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.health.value" value="{{actor.data.data.health.value}}" data-dtype="Number"/>
<input type="text" name="system.health.value" value="{{actor.system.health.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="data.health.max" value="{{actor.data.data.health.max}}" data-dtype="Number"/>
<input type="text" name="system.health.max" value="{{actor.system.health.max}}" data-dtype="Number"/>
</div>
</div>
{{!-- WP --}}
<div class="resource-outer-grid-1col">
<label for="data.wp.value" class="resource-label">{{localize 'DG.Attributes.WP' }}</label>
<label for="system.wp.value" class="resource-label">{{localize 'DG.Attributes.WP' }}</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.wp.value" value="{{actor.data.data.wp.value}}" data-dtype="Number"/>
<input type="text" name="system.wp.value" value="{{actor.system.wp.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="data.wp.max" value="{{actor.data.data.wp.max}}" data-dtype="Number"/>
<input type="text" name="system.wp.max" value="{{actor.system.wp.max}}" data-dtype="Number"/>
</div>
</div>
{{!-- Sanity Damage --}}
<div class="resource-outer-grid-1col">
<label for="data.wp.value" class="resource-label">Sanity Damage</label>
<label for="system.wp.value" class="resource-label">Sanity Damage</label>
<div class="resource-inner-grid-3col">
<input type="text" name="data.sanity.successLoss" value="{{actor.data.data.sanity.successLoss}}" />
<input type="text" name="system.sanity.successLoss" value="{{actor.system.sanity.successLoss}}" />
<span> / </span>
<input type="text" name="data.sanity.failedLoss" value="{{actor.data.data.sanity.failedLoss}}" />
<input type="text" name="system.sanity.failedLoss" value="{{actor.system.sanity.failedLoss}}" />
</div>
</div>
</div>
@@ -56,12 +55,12 @@
{{!-- Physical Statistics like STR, CON, etc. --}}
<div class="">
<div class="grid grid-3col">
{{#each actor.data.data.statistics as |statistic key|}}
{{#each actor.system.statistics as |statistic key|}}
<div class="flex-group-center">
<div class="">
<div class="physical-stats-outer-grid-3col">
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" for="data.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="data.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<label class="rollable" data-rolltype="statistic.x5" data-roll="d100" data-target="statistic.x5" data-label="{{key}}" for="system.statistics.{{key}}.value" class="resource-label">{{localize (concat 'DG.Attributes.' key)}}</label>
<input type="text" name="system.statistics.{{key}}.value" value="{{statistic.value}}" data-dtype="Number"/>
<span >({{numberFormat statistic.x5 decimals=0 sign=false}}%)</span>
</div >
</div>
@@ -87,22 +86,22 @@
<div class="tab skills" data-group="primary" data-tab="skills">
{{!-- Checkbox to hide/show skills that are at zero --}}
<div>
<span class="resource-label" for="data.showUntrainedSkills">{{localize 'DG.UnnaturalSheet.HideUntrainedSkillsLabel'}}:</label>
<input class="labeled-resource-checkbox" type="checkbox" name="data.showUntrainedSkills" {{checked data.data.showUntrainedSkills}} data-dtype="Boolean" />
<span class="resource-label" for="system.showUntrainedSkills">{{localize 'DG.UnnaturalSheet.HideUntrainedSkillsLabel'}}:</label>
<input class="labeled-resource-checkbox" type="checkbox" name="system.showUntrainedSkills" {{checked actor.system.showUntrainedSkills}} data-dtype="Boolean" />
</div>
<div class="grid grid-3col">
{{#each actor.data.data.skills as |skill key|}}
{{#each actor.system.skills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.data.data.showUntrainedSkills skill.proficiency)}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.system.showUntrainedSkills skill.proficiency)}}
<div class="flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="data.skills.{{key}}.value"
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{localize (concat 'DG.Skills.' key)}}" for="system.skills.{{key}}.value"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
{{#unless skill.proficiency}}title="{{localize 'DG.Tooltip.CannotRollSkillLabel'}}"{{/unless}}
>
{{ localize (concat "DG.Skills." key) }}
</label>
<input class="percentile-skill-input" type="text" name="data.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
<input class="percentile-skill-input" type="text" name="system.skills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number" {{#if skill.isCalculatedValue}} disabled {{/if}}/>
</div>
{{/if}}
@@ -115,8 +114,8 @@
<a class="item-control typed-skill-add"><i class="fas fa-plus"></i>{{localize 'DG.Skills.AddTypedOrCustomSkill'}}</a>
</div>
<div class="grid-2col">
{{#each actor.data.data.typedSkills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.data.data.showUntrainedSkills skill.proficiency)}}
{{#each actor.system.typedSkills as |skill key|}}
{{#if (hideSkillBasedOnProficiencyAndUserChoice ../actor.system.showUntrainedSkills skill.proficiency)}}
<div class="item flexrow flex-group-center">
<label class="{{if_gt skill.proficiency 0 'rollable' 'not-rollable'}} skill-label" data-rolltype="skill" data-roll="d100" data-target="{{skill.proficiency}}" data-label="{{skill.label}}"
{{#if skill.proficiency}}title="{{localize 'DG.Tooltip.SkillLabel'}}"{{/if}}
@@ -124,7 +123,7 @@
>
{{skill.group}} ({{skill.label}})
</label>
<input class="percentile-skill-input" type="text" name="data.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<input class="percentile-skill-input" type="text" name="system.typedSkills.{{key}}.proficiency" value="{{skill.proficiency}}" data-dtype="Number"/>
<div class="item-controls">
<a class="item-control typed-skill-delete" title="Delete Skill"><i class="fas fa-trash" data-typedskill="{{key}}" ></i></a>
@@ -140,7 +139,7 @@
</div>
<div class="unnatural-notes-section">
<div class="editor-host">
{{editor content=actor.data.data.notes target="data.notes" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.notes" button=true owner=owner editable=editable}}
</div>
</div>
@@ -177,32 +176,32 @@
class="item-name rollable"
data-roll="d100"
data-rolltype="weaponskill"
data-target="{{item.data.data.skill}}"
data-label="{{localizeWeaponSkill item.data.data.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.data.data.skill}})"
data-target="{{item.system.skill}}"
data-label="{{localizeWeaponSkill item.system.skill}}"
title="{{localize 'DG.Tooltip.SkillLabel'}} ({{localizeWeaponSkill item.system.skill}})"
>
{{item.name}}
</h4>
{{#unless item.data.data.isLethal}}
{{#unless item.system.isLethal}}
<span class="rollable centered-item-property"
data-rolltype="damage"
data-target="damage"
data-label="{{toUpperCase item.name}}"
data-roll="{{toUpperCase item.data.data.damage}}"
data-skill="{{item.data.data.skill}}"
data-roll="{{toUpperCase item.system.damage}}"
data-skill="{{item.system.skill}}"
>
{{toUpperCase item.data.data.damage}}</span>
{{toUpperCase item.system.damage}}</span>
{{/unless}}
{{#if item.data.data.isLethal}}
<span class="rollable centered-item-property" data-rolltype="lethality" data-target="{{item.data.data.lethality}}" data-label="{{item.name}}" data-roll="d100"
{{#if item.system.isLethal}}
<span class="rollable centered-item-property" data-rolltype="lethality" data-target="{{item.system.lethality}}" data-label="{{item.name}}" data-roll="d100"
title="{{localize 'DG.ItemWindow.Weapons.LethalityTooltip'}}"
>{{formatLethality item.data.data.lethality}}</span>
>{{formatLethality item.system.lethality}}</span>
{{/if}}
<span class="centered-item-property">{{item.data.data.armorPiercing}}</span>
<span class="centered-item-property">{{item.system.armorPiercing}}</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
@@ -238,10 +237,10 @@
<li class="item flexrow" data-item-id="{{item.id}}">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></div>
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span class="centered-item-property">{{item.data.data.protection}}</span>
<span class="centered-item-property">{{item.system.protection}}</span>
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}">
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
@@ -288,7 +287,7 @@
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}" >
{{#if item.data.data.equipped}}
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
+208
View File
@@ -0,0 +1,208 @@
<form class="{{cssClass}} {{getFontFamilySystemSettingClass}} flexcol" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-fields">
{{!-- Name, Portrait --}}
<div class="flexrow">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="150" width="100"/>
<div>
<div>
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" /></h1>
</div>
<div class="">
<h2 class="profession"><input name="system.shortDescription" type="text" value="{{actor.system.shortDescription}}" placeholder="{{localize 'DG.VehicleSheet.DescriptionPlaceHolder'}}" /></h1>
</div>
</div>
</div>
<div class="resources grid grid-3col">
{{!-- HP --}}
<div class="resource-outer-grid-1col">
<label for="actor.system.health.value" class="resource-label" title="{{localize 'DG.Tooltip.HP'}}">{{localize 'DG.Attributes.HP'}} (<span>{{actor.system.health.protection}} <i class="fas fa-shield-alt"></i></span>)</label>
<div class="resource-inner-grid-3col">
<input type="text" name="system.health.value" value="{{actor.system.health.value}}" data-dtype="Number"/>
<span> / </span>
<input type="text" name="system.health.max" value="{{actor.system.health.max}}" data-dtype="Number"/>
</div>
</div>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="notes">{{localize 'DG.VehicleSheet.NotesTabName'}}</a>
<a class="item" data-tab="gear">{{localize 'DG.VehicleSheet.GearTabName'}}</a>
<a class="item fas fa-question-circle" data-tab="about"></a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Descriptions (Notes) --}}
<div class="tab skills top-div-border" data-group="primary" data-tab="notes">
<div>
<span class="resource-label">{{localize 'DG.VehicleSheet.NotesLabel'}}</span>
</div>
<div class="unnatural-notes-section">
<div class="editor-host">
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</div>
</div>
{{!-- GEAR --}}
<div class="tab items" data-group="primary" data-tab="gear">
<div>
<div class="gear-section-header">
<span>{{localize 'DG.Gear.Armor'}}</span>
</div>
<ol class="items-list">
<li class="item flexrow item-header">
<div class="item-image"></div>
<div class="item-name">{{localize 'DG.Gear.Name'}}</div>
<span class="centered-item-property">{{localize 'DG.Gear.ArmorRating'}}</span>
<span class="centered-item-property">{{localize 'DG.Gear.Equipped'}}</span>
<div class="item-controls">
<a class="item-control item-create" title="Create item" data-type="armor"><i class="fas fa-plus"></i> {{localize 'DG.Generic.AddButtonLabel'}}</a>
</div>
</li>
{{#each actor.items as |item id|}}
{{#if_eq item.type 'armor'}}
<li class="item flexrow" data-item-id="{{item.id}}">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></div>
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span class="centered-item-property">{{item.system.protection}}</span>
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}">
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
{{/if}}
</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/if_eq}}
{{/each}}
</ol>
</div>
<div>
<div class="gear-section-header">
<span>{{localize 'DG.Gear.OtherGear'}}</span>
</div>
<ol class="items-list">
<li class="item flexrow item-header">
<div class="item-image"></div>
<div class="item-name">{{localize 'DG.Gear.Name'}}</div>
<div class="item-name"></div>
<span class="centered-item-property">{{localize 'DG.Gear.Equipped'}}</span>
<div class="item-controls">
<a class="item-control item-create" title="Create item" data-type="gear"><i class="fas fa-plus"></i> {{localize 'DG.Generic.AddButtonLabel'}}</a>
</div>
</li>
{{#each actor.items as |item id|}}
{{#if_eq item.type 'gear'}}
<li class="item flexrow" data-item-id="{{item.id}}">
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/></div>
<h4 style="word-wrap: break-word;" class="item-name">{{item.name}}</h4>
<span></span> <!-- This is just here to get things to align nicely with the other sections-->
<span class="equipped-item centered-item-property" data-id="{{item.id}}" title="{{localize 'DG.Tooltip.ToggleEquippedState'}}" >
{{#if item.system.equipped}}
<span class="fas fa-check"></span>
{{else}}
<span class="fas fa-times"></span>
{{/if}}
</span>
<div class="item-controls">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/if_eq}}
{{/each}}
</ol>
</div>
</div>
{{!-- About Tab --}}
<div class="tab about" data-group="primary" data-tab="about">
<div class="about-section-header">
</div>
<div class="flex horizontal-flex-column">
<div>
<a class="fas fa-question-circle"
title="{{localize 'DG.About.OnlineHelpTooltip'}}"
href="https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial/blob/master/documentation/home.md">
{{localize 'DG.About.OnlineHelp'}}
</a>
</div>
<div>
<a class="fas fa-bug"
title="{{localize 'DG.About.OnlineBugTrackerTooltip'}}"
href="https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial/issues">
{{localize 'DG.About.OnlineBugTracker'}}
</a>
</div>
<div>
<a class="fas fa-plus-circle"
title="CHANGELOG (ONLINE)"
href="https://github.com/TheLastScrub/delta-green-foundry-vtt-system-unofficial/blob/master/CHANGELOG.md">
CHANGELOG (ONLINE)
</a>
</div>
<br>
<div>
<span style="font-weight: bold;">This is an <span style="font-style: italic">unofficial</span> fan work, it is not affiliated with or endorsed by Shaney Ivey or Arc Dream Publishing.</span>
</div>
<br>
<div>
<span style="font-weight: bold;">Delta Green Community License (NONCOMMERCIAL)</span>
<p>
Published by arrangement with the Delta Green Partnership.
The intellectual property known as Delta Green is a trademark and copyright owned by the Delta Green Partnership, who has licensed its use here.
</p>
<p>
The contents of this system are licensed per the terms of the included <a href="systems/deltagreen/LICENSE.txt">license</a> file, excepting those elements that are components of the Delta Green intellectual property.
</p>
<p>
Some content may additionally also be covered under the terms of the <a href="systems/deltagreen/OGL-v1.0a.txt">Open Game License</a> (Copyright 2000 Wizards of the Coast, Inc.).
</p>
</div>
</div>
</div>
</section>
</form>
+9 -9
View File
@@ -10,23 +10,23 @@
<input name="name" type="text" value="{{item.name}}" placeholder="{{localize 'DG.ItemWindow.Armor.NamePlaceholder'}}"/></h1>
<span class="resource-label">{{localize 'DG.ItemWindow.Armor.Expense'}}:</span>
<select name="data.expense" >
<option {{#if_eq data.data.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq data.data.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq data.data.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq data.data.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq data.data.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
<select name="system.expense" >
<option {{#if_eq item.system.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq item.system.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq item.system.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq item.system.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq item.system.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
</select>
<span class="resource-label">{{localize 'DG.ItemWindow.Armor.Equipped'}}:</span>
<input class="labeled-resource-checkbox" type="checkbox" name="data.equipped" {{checked data.data.equipped}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.equipped" {{checked item.system.equipped}} data-dtype="Boolean" />
</div>
</div>
<div class="armor-sheet-secondary-grid-2col">
<span class="resource-label">{{localize 'DG.ItemWindow.Armor.ArmorRating'}}:</span>
<input class="item-sheet-short-input" type="text" name="data.protection" value="{{data.data.protection}}" data-dtype="Number"/>
<input class="item-sheet-short-input" type="text" name="system.protection" value="{{item.system.protection}}" data-dtype="Number"/>
</div>
</header>
@@ -41,7 +41,7 @@
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</section>
</form>
+3 -3
View File
@@ -9,12 +9,12 @@
<!-- <label class="resource-label">{{localize 'DG.Bonds.Score'}}</label> -->
<span class="resource-label">{{localize 'DG.Bonds.Score'}}:</span>
<input type="text" name="data.score" value="{{data.data.score}}" data-dtype="Number"
<input type="text" name="system.score" value="{{item.system.score}}" data-dtype="Number"
title="{{localize 'DG.ItemWindow.Bonds.ScoreTooltip'}}"
/>
<span class="resource-label">{{localize 'DG.Bonds.Relationship'}}:</span>
<input type="text" name="data.relationship" value="{{data.data.relationship}}" data-dtype="String" />
<input type="text" name="system.relationship" value="{{item.system.relationship}}" data-dtype="String" />
</div>
</div>
@@ -30,7 +30,7 @@
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</section>
</form>
+8 -8
View File
@@ -11,16 +11,16 @@
<span class="resource-label">{{localize 'DG.ItemWindow.Gear.Expense'}}:</span>
<select name="data.expense" >
<option {{#if_eq data.data.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq data.data.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq data.data.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq data.data.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq data.data.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
<select name="system.expense" >
<option {{#if_eq item.system.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq item.system.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq item.system.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq item.system.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq item.system.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
</select>
<span class="resource-label">{{localize 'DG.ItemWindow.Gear.Equipped'}}:</span>
<input class="labeled-resource-checkbox" type="checkbox" name="data.equipped" {{checked data.data.equipped}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.equipped" {{checked item.system.equipped}} data-dtype="Boolean" />
</div>
</div>
@@ -38,7 +38,7 @@
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</section>
+6 -6
View File
@@ -13,7 +13,7 @@
<div class="motivation-sheet-horizontal-grid-2col">
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.IsDisorder'}}:</span>
<input type="checkbox" name="data.crossedOut" {{checked data.data.crossedOut}} data-dtype="Boolean"
<input type="checkbox" name="system.crossedOut" {{checked item.system.crossedOut}} data-dtype="Boolean"
title="{{localize 'DG.ItemWindow.Motivations.IsDisorderTooltip'}}"
/>
@@ -25,7 +25,7 @@
title="{{localize 'DG.ItemWindow.Motivations.MotivationNameTooltip'}}"
{{!-- If a motivation has been crossed off after a breaking point, do a strikeout on it and disable it. --}}
{{#if data.data.crossedOut}}
{{#if item.system.crossedOut}}
style="text-decoration: line-through;"
disabled
{{/if}}
@@ -33,17 +33,17 @@
{{!-- Only Show the Disorders Section if Motivation Lost Checked --}}
{{#if data.data.crossedOut}}
{{#if item.system.crossedOut}}
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.Disorder'}}:</span>
<input type="text" name="data.disorder" value="{{data.data.disorder}}" data-dtype="String"
<input type="text" name="system.disorder" value="{{item.system.disorder}}" data-dtype="String"
title="{{localize 'DG.ItemWindow.Motivations.DisorderNameTooltip'}}"
/>
<span class="resource-label">{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCured'}}: </span>
<input class="labeled-resource-checkbox" type="checkbox" name="data.disorderCured" {{checked data.data.disorderCured}} data-dtype="Boolean"
<input class="labeled-resource-checkbox" type="checkbox" name="system.disorderCured" {{checked item.system.disorderCured}} data-dtype="Boolean"
title="{{localize 'DG.ItemWindow.Motivations.DisorderHasBeenCuredTooltip'}}"
/>
@@ -54,7 +54,7 @@
</div>
<div class="tab attributes" data-group="primary" data-tab="description">
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</section>
+31 -31
View File
@@ -10,16 +10,16 @@
<input name="name" type="text" value="{{item.name}}" placeholder="{{localize 'DG.ItemWindow.Weapons.NamePlaceholder'}}"/>
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Expense'}}:</span>
<select name="data.expense" >
<option {{#if_eq data.data.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq data.data.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq data.data.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq data.data.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq data.data.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
<select name="system.expense" >
<option {{#if_eq item.system.expense 'Incidental'}}selected{{/if_eq}} value="Incidental">{{localize 'DG.Gear.Expense.Incidental'}}</option>
<option {{#if_eq item.system.expense 'Standard'}}selected{{/if_eq}} value="Standard">{{localize 'DG.Gear.Expense.Standard'}}</option>
<option {{#if_eq item.system.expense 'Unusual'}}selected{{/if_eq}} value="Unusual">{{localize 'DG.Gear.Expense.Unusual'}}</option>
<option {{#if_eq item.system.expense 'Major'}}selected{{/if_eq}} value="Major">{{localize 'DG.Gear.Expense.Major'}}</option>
<option {{#if_eq item.system.expense 'Extreme'}}selected{{/if_eq}} value="Extreme">{{localize 'DG.Gear.Expense.Extreme'}}</option>
</select>
<span class="resource-label">{{localize 'DG.ItemWindow.Gear.Equipped'}}:</span>
<input class="labeled-resource-checkbox" type="checkbox" name="data.equipped" {{checked data.data.equipped}} data-dtype="Boolean" />
<input class="labeled-resource-checkbox" type="checkbox" name="system.equipped" {{checked item.system.equipped}} data-dtype="Boolean" />
</div>
</div>
@@ -29,57 +29,57 @@
<div class="weapon-sheet-horizontal-grid-left-2col">
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Skill'}}:</span>
<select name="data.skill" >
<option {{#if_eq data.data.skill 'firearms'}}selected{{/if_eq}} value="firearms">{{localize 'DG.Skills.firearms'}}</option>
<option {{#if_eq data.data.skill 'melee_weapons'}}selected{{/if_eq}} value="melee_weapons">{{localize 'DG.Skills.melee_weapons'}}</option>
<option {{#if_eq data.data.skill 'unarmed_combat'}}selected{{/if_eq}} value="unarmed_combat">{{localize 'DG.Skills.unarmed_combat'}}</option>
<option {{#if_eq data.data.skill 'heavy_weapons'}}selected{{/if_eq}} value="heavy_weapons">{{localize 'DG.Skills.heavy_weapons'}}</option>
<option {{#if_eq data.data.skill 'athletics'}}selected{{/if_eq}} value="athletics">{{localize 'DG.Skills.athletics'}}</option>
<option {{#if_eq data.data.skill 'demolitions'}}selected{{/if_eq}} value="demolitions">{{localize 'DG.Skills.demolitions'}}</option>
<option {{#if_eq data.data.skill 'artillery'}}selected{{/if_eq}} value="artillery">{{localize 'DG.Skills.artillery'}}</option>
<option {{#if_eq data.data.skill 'str'}}selected{{/if_eq}} value="str">{{localize 'DG.Attributes.str'}}x5</option>
<option {{#if_eq data.data.skill 'con'}}selected{{/if_eq}} value="con">{{localize 'DG.Attributes.con'}}x5</option>
<option {{#if_eq data.data.skill 'dex'}}selected{{/if_eq}} value="dex">{{localize 'DG.Attributes.dex'}}x5</option>
<option {{#if_eq data.data.skill 'int'}}selected{{/if_eq}} value="int">{{localize 'DG.Attributes.int'}}x5</option>
<option {{#if_eq data.data.skill 'pow'}}selected{{/if_eq}} value="pow">{{localize 'DG.Attributes.pow'}}x5</option>
<option {{#if_eq data.data.skill 'cha'}}selected{{/if_eq}} value="cha">{{localize 'DG.Attributes.cha'}}x5</option>
<select name="system.skill" >
<option {{#if_eq item.system.skill 'firearms'}}selected{{/if_eq}} value="firearms">{{localize 'DG.Skills.firearms'}}</option>
<option {{#if_eq item.system.skill 'melee_weapons'}}selected{{/if_eq}} value="melee_weapons">{{localize 'DG.Skills.melee_weapons'}}</option>
<option {{#if_eq item.system.skill 'unarmed_combat'}}selected{{/if_eq}} value="unarmed_combat">{{localize 'DG.Skills.unarmed_combat'}}</option>
<option {{#if_eq item.system.skill 'heavy_weapons'}}selected{{/if_eq}} value="heavy_weapons">{{localize 'DG.Skills.heavy_weapons'}}</option>
<option {{#if_eq item.system.skill 'athletics'}}selected{{/if_eq}} value="athletics">{{localize 'DG.Skills.athletics'}}</option>
<option {{#if_eq item.system.skill 'demolitions'}}selected{{/if_eq}} value="demolitions">{{localize 'DG.Skills.demolitions'}}</option>
<option {{#if_eq item.system.skill 'artillery'}}selected{{/if_eq}} value="artillery">{{localize 'DG.Skills.artillery'}}</option>
<option {{#if_eq item.system.skill 'str'}}selected{{/if_eq}} value="str">{{localize 'DG.Attributes.str'}}x5</option>
<option {{#if_eq item.system.skill 'con'}}selected{{/if_eq}} value="con">{{localize 'DG.Attributes.con'}}x5</option>
<option {{#if_eq item.system.skill 'dex'}}selected{{/if_eq}} value="dex">{{localize 'DG.Attributes.dex'}}x5</option>
<option {{#if_eq item.system.skill 'int'}}selected{{/if_eq}} value="int">{{localize 'DG.Attributes.int'}}x5</option>
<option {{#if_eq item.system.skill 'pow'}}selected{{/if_eq}} value="pow">{{localize 'DG.Attributes.pow'}}x5</option>
<option {{#if_eq item.system.skill 'cha'}}selected{{/if_eq}} value="cha">{{localize 'DG.Attributes.cha'}}x5</option>
</select>
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.IsLethality'}}:</span>
<input class="labeled-resource-checkbox" type="checkbox" name="data.isLethal" {{checked data.data.isLethal}} data-dtype="Boolean"
<input class="labeled-resource-checkbox" type="checkbox" name="system.isLethal" {{checked item.system.isLethal}} data-dtype="Boolean"
title="{{localize 'DG.ItemWindow.Weapons.IsLethalityTooltip'}}"
/>
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.KillRadius'}}:</span>
<input type="text" name="data.killRadius" value="{{data.data.killRadius}}" data-dtype="String"/>
<input type="text" name="system.killRadius" value="{{item.system.killRadius}}" data-dtype="String"/>
</div>
<div class="weapon-sheet-horizontal-grid-right-2col">
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Range'}}:</span>
<input type="text" name="data.range" value="{{data.data.range}}" data-dtype="String"/>
<input type="text" name="system.range" value="{{item.system.range}}" data-dtype="String"/>
{{!-- If a weapon is 'Lethal', need to show the d100% Lethality input, otherwise only show the regular Damage formula (e.g. 1D6, 1D4+2, etc...) --}}
{{#unless data.data.isLethal}}
{{#unless item.system.isLethal}}
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Damage'}}:</span>
<input type="text" name="data.damage" value="{{data.data.damage}}" data-dtype="String"/>
<input type="text" name="system.damage" value="{{item.system.damage}}" data-dtype="String"/>
{{/unless}}
{{#if data.data.isLethal}}
{{#if item.system.isLethal}}
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Lethality'}} %:</span>
<input class="" type="text" name="data.lethality" value="{{data.data.lethality}}" data-dtype="Number"
<input class="" type="text" name="system.lethality" value="{{item.system.lethality}}" data-dtype="Number"
title="{{localize 'DG.ItemWindow.Weapons.LethalityTooltip'}}"
/>
{{/if}}
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.ArmorPiercing'}}:</span>
<input type="text" name="data.armorPiercing" value="{{data.data.armorPiercing}}" data-dtype="Number"/>
<input type="text" name="system.armorPiercing" value="{{item.system.armorPiercing}}" data-dtype="Number"/>
</div>
@@ -87,7 +87,7 @@
<div class="weapon-sheet-secondary-grid-2col">
<span class="resource-label">{{localize 'DG.ItemWindow.Weapons.Ammo'}}:</span>
<input type="text" name="data.ammo" value="{{data.data.ammo}}" data-dtype="String"/>
<input type="text" name="system.ammo" value="{{item.system.ammo}}" data-dtype="String"/>
</div>
</header>
@@ -103,7 +103,7 @@
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
{{editor enrichedDescription target="system.description" button=true owner=owner editable=editable}}
</div>
</section>
</form>