Fix merge
This commit is contained in:
commit
22f092bd02
@ -23,62 +23,77 @@ export class SoSActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getData() {
|
||||
let data = super.getData();
|
||||
|
||||
const objectData = SoSUtility.data(this.object);
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: objectData.id,
|
||||
type: objectData.type,
|
||||
img: objectData.img,
|
||||
name: objectData.name,
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
data: foundry.utils.deepClone(this.object.data),
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
owner: this.document.isOwner
|
||||
};
|
||||
|
||||
this.actor.checkDeck();
|
||||
|
||||
data.data.edgecard = this.actor.getEdgesCard();
|
||||
data.data.deckSize = this.actor.getDeckSize();
|
||||
formData.edgecard = this.actor.getEdgesCard();
|
||||
formData.deckSize = this.actor.getDeckSize();
|
||||
|
||||
data.data.skills = this.actor.data.items.filter( item => item.type == 'skill').sort( (a, b) => {
|
||||
formData.skills = this.actor.data.items.filter( item => item.type == 'skill').sort( (a, b) => {
|
||||
if ( a.name > b.name ) return 1;
|
||||
return -1;
|
||||
});
|
||||
|
||||
data.data.skill1 = data.data.skills.slice(0, Math.ceil(data.data.skills.length/2) )
|
||||
data.data.skill2 = data.data.skills.slice(Math.ceil(data.data.skills.length/2), data.data.skills.length )
|
||||
data.data.consequences = this.actor.data.items.filter( item => item.type == 'consequence').sort( (a, b) => {
|
||||
|
||||
formData.skill1 = formData.skills.slice(0, Math.ceil(formData.skills.length/2) )
|
||||
formData.skill2 = formData.skills.slice(Math.ceil(formData.skills.length/2), formData.skills.length )
|
||||
formData.consequences = this.actor.data.items.filter( item => item.type == 'consequence').sort( (a, b) => {
|
||||
if ( a.name > b.name ) return 1;
|
||||
return -1;
|
||||
});
|
||||
data.data.gears = this.actor.data.items.filter( item => item.type == 'gear').concat( this.actor.data.items.filter( item => item.type == 'container') );
|
||||
formData.gears = this.actor.data.items.filter( item => item.type == 'gear').concat( this.actor.data.items.filter( item => item.type == 'container') );
|
||||
|
||||
// Build the gear tree
|
||||
data.data.gearsRoot = data.data.gears.filter(item => item.data.containerid == "");
|
||||
for ( let container of data.data.gearsRoot) {
|
||||
formData.gearsRoot = formData.gears.filter(item => item.data.data.containerid == "");
|
||||
for ( let container of formData.gearsRoot) {
|
||||
if ( container.type == 'container') {
|
||||
container.data.contains = []
|
||||
container.data.containerEnc = 0;
|
||||
for (let gear of data.data.gears) {
|
||||
if ( gear.data.containerid == container._id) {
|
||||
container.data.contains.push( gear );
|
||||
if ( !gear.data.neg && !gear.data.software ) {
|
||||
container.data.containerEnc += (gear.big > 0) ? gear.big : 1;
|
||||
for (let gear of formData.gears) {
|
||||
console.log("GEAR", gear, container)
|
||||
if ( gear.data.data.containerid == container.id) {
|
||||
container.data.contains.push( gear )
|
||||
if ( !gear.data.data.neg && !gear.data.data.software ) {
|
||||
container.data.containerEnc += (gear.data.data.big > 0) ? gear.data.data.big : 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data.data.weapons = this.actor.data.items.filter( item => item.type == 'weapon');
|
||||
data.data.armors = this.actor.data.items.filter( item => item.type == 'armor');
|
||||
data.data.totalEncumbrance = SoSUtility.computeEncumbrance(this.actor.data.items);
|
||||
data.data.wounds = duplicate(this.actor.data.data.wounds);
|
||||
data.data.isGM = game.user.isGM;
|
||||
data.data.currentWounds = this.actor.computeCurrentWounds();
|
||||
data.data.totalWounds = this.actor.data.data.scores.wound.value;
|
||||
formData.weapons = this.actor.data.items.filter( item => item.type == 'weapon');
|
||||
formData.armors = this.actor.data.items.filter( item => item.type == 'armor');
|
||||
formData.totalEncumbrance = SoSUtility.computeEncumbrance(this.actor.data.items);
|
||||
formData.wounds = duplicate(this.actor.data.data.wounds);
|
||||
formData.isGM = game.user.isGM;
|
||||
formData.currentWounds = this.actor.computeCurrentWounds();
|
||||
formData.totalWounds = this.actor.data.data.scores.wound.value;
|
||||
|
||||
data.data.subcultureList = this.actor.data.items.filter( item => item.type == 'subculture');
|
||||
if ( data.data.subculture != "" ) { // background.subculture contains the main subculture ID
|
||||
data.data.mainSubculture = data.data.subcultureList.find( subc => subc._id == data.data.subculture);
|
||||
formData.subcultureList = this.actor.data.items.filter( item => item.type == 'subculture');
|
||||
if ( formData.subculture != "" ) { // background.subculture contains the main subculture ID
|
||||
formData.mainSubculture = formData.subcultureList.find( subc => subc._id == data.data.subculture);
|
||||
}
|
||||
data.data.languageList = this.actor.data.items.filter( item => item.type == 'language');
|
||||
data.data.weaknessList = this.actor.data.items.filter( item => item.type == 'weakness');
|
||||
data.data.geneline = this.actor.data.items.find( item => item.type == 'geneline');
|
||||
data.data.editStatSkill = this.options.editStatSkill;
|
||||
//console.log("stats", data);
|
||||
formData.languageList = this.actor.data.items.filter( item => item.type == 'language');
|
||||
formData.weaknessList = this.actor.data.items.filter( item => item.type == 'weakness');
|
||||
formData.geneline = this.actor.data.items.find( item => item.type == 'geneline');
|
||||
formData.editStatSkill = this.options.editStatSkill;
|
||||
|
||||
return data;
|
||||
console.log("stats", formData);
|
||||
return formData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -94,7 +109,7 @@ export class SoSActorSheet extends ActorSheet {
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
const item = this.actor.getOwnedItem(li.data("item-id"));
|
||||
const item = this.actor.items.get(li.data("item-id"));
|
||||
item.sheet.render(true);
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
@ -120,12 +135,12 @@ export class SoSActorSheet extends ActorSheet {
|
||||
});
|
||||
html.find('.skill-label a').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const skill = this.actor.getOwnedItem(li.data("item-id"));
|
||||
const skill = this.actor.items.get(li.data("item-id"));
|
||||
this.actor.rollSkill(skill);
|
||||
});
|
||||
html.find('.weapon-label a').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const weapon = this.actor.getOwnedItem(li.data("item-id"));
|
||||
const weapon = this.actor.items.get(li.data("item-id"));
|
||||
this.actor.rollWeapon(weapon);
|
||||
});
|
||||
html.find('.skill-value').change((event) => {
|
||||
@ -161,9 +176,9 @@ export class SoSActorSheet extends ActorSheet {
|
||||
});
|
||||
html.find('.consequence-severity').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const item = this.actor.getOwnedItem(li.data("item-id"));
|
||||
const item = this.actor.items.get(li.data("item-id"));
|
||||
let severity = $(event.currentTarget).val();
|
||||
this.actor.updateOwnedItem( { _id: item._id, 'data.severity': severity});
|
||||
this.actor.updateEmbeddedDocuments( "Item", [ { _id: item.id, 'data.severity': severity} ] );
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
|
@ -34,17 +34,19 @@ export class SoSActor extends Actor {
|
||||
return actor;
|
||||
}
|
||||
|
||||
data.items = [];
|
||||
let items = [];
|
||||
let compendiumName = "foundryvtt-shadows-over-sol.skills";
|
||||
if ( compendiumName ) {
|
||||
let skills = await SoSUtility.loadCompendium(compendiumName);
|
||||
data.items = data.items.concat( skills );
|
||||
items = skills.map(i => i.toObject());
|
||||
}
|
||||
compendiumName = "foundryvtt-shadows-over-sol.consequences";
|
||||
if ( compendiumName ) {
|
||||
let consequences = await SoSUtility.loadCompendium(compendiumName)
|
||||
data.items = data.items.concat(consequences);
|
||||
items = items.concat( consequences.map(i => i.toObject()) );
|
||||
}
|
||||
data.items = items;
|
||||
console.log(data);
|
||||
|
||||
return super.create(data, options);
|
||||
}
|
||||
@ -167,19 +169,19 @@ export class SoSActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async wornObject( itemID) {
|
||||
let item = this.getOwnedItem(itemID);
|
||||
let item = this.items.get(itemID);
|
||||
if (item && item.data.data) {
|
||||
let update = { _id: item._id, "data.worn": !item.data.data.worn };
|
||||
await this.updateEmbeddedEntity("OwnedItem", update);
|
||||
let update = { _id: item.id, "data.worn": !item.data.data.worn };
|
||||
await this.updateEmbeddedDocuments("Item", [update]);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async equipObject(itemID) {
|
||||
let item = this.getOwnedItem(itemID);
|
||||
let item = this.items.get(itemID)
|
||||
if (item && item.data.data) {
|
||||
let update = { _id: item._id, "data.equiped": !item.data.data.equiped };
|
||||
await this.updateEmbeddedEntity("OwnedItem", update);
|
||||
let update = { _id: item.id, "data.equiped": !item.data.data.equiped };
|
||||
await this.updateEmbeddedDocuments("Item", [update]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -220,16 +222,16 @@ export class SoSActor extends Actor {
|
||||
async updateSkill(skillName, value) {
|
||||
let skill = this.data.items.find( item => item.name == skillName);
|
||||
if (skill) {
|
||||
const update = { _id: skill._id, 'data.value': value };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
const update = { _id: skill.id, 'data.value': value };
|
||||
const updated = await this.updateEmbeddedDocuments("Item", [ update] ); // Updates one EmbeddedEntity
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async updateSkillExperience(skillName, value) {
|
||||
let skill = this.data.items.find( item => item.name == skillName);
|
||||
if (skill) {
|
||||
const update = { _id: skill._id, 'data.xp': value };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
const update = { _id: skill.id, 'data.xp': value };
|
||||
const updated = await this.updateEmbeddedDocuments("Item", [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
}
|
||||
|
||||
@ -374,21 +376,22 @@ export class SoSActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async addObjectToContainer( itemId, containerId ) {
|
||||
let container = this.data.items.find( item => item._id == containerId && item.type == 'container');
|
||||
let object = this.data.items.find( item => item._id == itemId );
|
||||
let container = this.data.items.find( item => item.id == containerId && item.type == 'container')
|
||||
let object = this.data.items.find( item => item.id == itemId )
|
||||
console.log("Found", container, object)
|
||||
if ( container ) {
|
||||
if ( object.type == 'container') {
|
||||
ui.notifications.warn("Only 1 level of container... sorry");
|
||||
return
|
||||
}
|
||||
let alreadyInside = this.data.items.filter( item => item.data.containerid && item.data.containerid == containerId);
|
||||
if ( alreadyInside.length >= container.data.container ) {
|
||||
let alreadyInside = this.data.items.filter( item => item.data.data.containerid && item.data.data.containerid == containerId);
|
||||
if ( alreadyInside.length >= container.data.data.container ) {
|
||||
ui.notifications.warn("Container is already full !");
|
||||
} else {
|
||||
await this.updateOwnedItem( { _id: object._id, 'data.containerid':containerId });
|
||||
await this.updateEmbeddedDocuments( "Item", [{ _id: object.id, 'data.containerid':containerId }]);
|
||||
}
|
||||
} else if ( object && object.data.containerid) { // remove from container
|
||||
await this.updateOwnedItem( { _id: object._id, 'data.containerid':"" });
|
||||
} else if ( object && object.data.data.containerid) { // remove from container
|
||||
await this.updateEmbeddedDocuments( "Item", [{ _id: object.id, 'data.containerid':"" }]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -413,18 +416,18 @@ export class SoSActor extends Actor {
|
||||
currentWounds.value = sumWound;
|
||||
if ( sumWound >= this.data.data.scores.wound.value) {
|
||||
let bleeding = this.data.items.find( item => item.type == 'consequence' && item.name == 'Bleeding');
|
||||
let newSeverity = SoSUtility.increaseConsequenceSeverity( bleeding.severity );
|
||||
await this.updateOwnedItem( { _id: bleeding._id, 'data.severity': newSeverity});
|
||||
let newSeverity = SoSUtility.increaseConsequenceSeverity( bleeding.data.severity );
|
||||
await this.updateEmbeddedDocuments( "Item", [ { _id: bleeding.id, 'data.severity': newSeverity} ] );
|
||||
flipData.isBleeding = newSeverity;
|
||||
}
|
||||
// Stun consequence
|
||||
if ( flipData.nbStun > 0) {
|
||||
let stun = this.data.items.find( item => item.type == 'consequence' && item.name == 'Stun');
|
||||
let newSeverity = stun.severity;
|
||||
let newSeverity = stun.data.severity;
|
||||
for(let i=0; i<flipData.nbStun; i++) {
|
||||
newSeverity = SoSUtility.increaseConsequenceSeverity( newSeverity );
|
||||
}
|
||||
await this.updateOwnedItem( { _id: stun._id, 'data.severity': newSeverity});
|
||||
await this.updateEmbeddedDocuments( "Item", [ { _id: stun.id, 'data.severity': newSeverity} ] );
|
||||
flipData.isStun = newSeverity;
|
||||
}
|
||||
await this.update( { 'data.scores.currentwounds': currentWounds, 'data.wounds': wounds } );
|
||||
|
@ -43,15 +43,30 @@ export class SoSItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
let data = super.getData();
|
||||
data.isGM = game.user.isGM;
|
||||
if ( data.item.type == 'skillexperience') {
|
||||
data.skillList = await SoSUtility.loadCompendiumNames("foundryvtt-shadows-over-sol.skills");
|
||||
const objectData = SoSUtility.data(this.object);
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: objectData.id,
|
||||
type: objectData.type,
|
||||
img: objectData.img,
|
||||
name: objectData.name,
|
||||
editable: this.isEditable,
|
||||
cssClass: this.isEditable ? "editable" : "locked",
|
||||
data: foundry.utils.deepClone(this.object.data),
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
options: this.options,
|
||||
owner: this.document.isOwner
|
||||
};
|
||||
|
||||
formData.isGM = game.user.isGM;
|
||||
if ( objectData.type == 'skillexperience') {
|
||||
formData.skillList = await SoSUtility.loadCompendiumNames("foundryvtt-shadows-over-sol.skills");
|
||||
}
|
||||
if ( data.item.type == 'skill' && this.object.options?.actor) {
|
||||
data.skillExperienceList = this.object.options.actor.getSkillExperience( data.item.name );
|
||||
if ( objectData.type == 'skill' && this.object.options?.actor) {
|
||||
formData.skillExperienceList = this.object.options.actor.getSkillExperience( data.item.name );
|
||||
}
|
||||
return data;
|
||||
return formData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -38,7 +38,7 @@ export class SoSCardDeck {
|
||||
this.cleanCardList();
|
||||
// Randomize deck
|
||||
while (this.data.deck.length != NB_POKER_CARD) {
|
||||
let idx = new Roll("1d54").roll().total;
|
||||
let idx = new Roll("1d54").roll( {async:false} ).total;
|
||||
if (!this.data.cardState[idx - 1]) {
|
||||
if (idx == 53) { // Red Joker
|
||||
this.data.deck.push( { cardName: 'jr' } );
|
||||
@ -58,21 +58,22 @@ export class SoSCardDeck {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
resetDeck() {
|
||||
let newdeck = duplicate(this.data.deck).concat( duplicate (this.data.discard));
|
||||
this.data.discard = []; // Reinit discard pile
|
||||
this.data.deck = [];
|
||||
let decklen = newdeck.length;
|
||||
let cardState = [];
|
||||
let newdeck = duplicate(this.data.deck).concat( duplicate (this.data.discard) )
|
||||
this.data.discard = [] // Reinit discard pile
|
||||
this.data.deck = []
|
||||
let decklen = newdeck.length
|
||||
let cardState = []
|
||||
for (let i = 0; i <decklen; i++) {
|
||||
cardState[i] = false;
|
||||
cardState[i] = false
|
||||
}
|
||||
// Randomize deck
|
||||
while (this.data.deck.length != decklen) {
|
||||
let idx = new Roll("1d"+decklen).roll().total;
|
||||
if (!cardState[idx - 1]) {
|
||||
this.data.deck.push( newdeck[idx-1] );
|
||||
}
|
||||
cardState[idx - 1] = true;
|
||||
let idx = new Roll("1d"+decklen).roll({async : false}).total
|
||||
//console.log("Deck stuff", this.data.deck.length, decklen, idx)
|
||||
if (!cardState[idx-1]) {
|
||||
this.data.deck.push( newdeck[idx-1] )
|
||||
}
|
||||
cardState[idx-1] = true
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,8 +56,8 @@ Hooks.once("init", async function () {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Define custom Entity classes
|
||||
CONFIG.Actor.entityClass = SoSActor;
|
||||
CONFIG.Combat.entityClass = SoSCombat;
|
||||
CONFIG.Actor.documentClass = SoSActor;
|
||||
CONFIG.Combat.documentClass = SoSCombat;
|
||||
CONFIG.SoS = {
|
||||
}
|
||||
|
||||
@ -83,12 +83,35 @@ Hooks.once("init", async function () {
|
||||
function welcomeMessage() {
|
||||
//ChatUtility.removeMyChatMessageContaining('<div id="welcome-message-sos">');
|
||||
ChatMessage.create({
|
||||
user: game.user._id,
|
||||
whisper: [game.user._id],
|
||||
user: game.user.id,
|
||||
whisper: [game.user.id],
|
||||
content: `<div id="welcome-message-sos"><span class="rdd-roll-part">Welcome !</div>
|
||||
` });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// Register world usage statistics
|
||||
function registerUsageCount( registerKey ) {
|
||||
if ( game.user.isGM ) {
|
||||
game.settings.register(registerKey, "world-key", {
|
||||
name: "Unique world key",
|
||||
scope: "world",
|
||||
config: false,
|
||||
type: String
|
||||
});
|
||||
|
||||
let worldKey = game.settings.get(registerKey, "world-key")
|
||||
if ( worldKey == undefined || worldKey == "" ) {
|
||||
worldKey = randomID(32)
|
||||
game.settings.set(registerKey, "world-key", worldKey )
|
||||
}
|
||||
// Simple API counter
|
||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.data.version}"`
|
||||
$.ajax(regURL)
|
||||
/* -------------------------------------------- */
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
/* -------------------------------------------- */
|
||||
@ -102,9 +125,8 @@ Hooks.once("ready", function () {
|
||||
user: game.user._id
|
||||
});
|
||||
}
|
||||
registerUsageCount("foundryvtt-shadows-over-sol")
|
||||
|
||||
//gearConverter.importgear();
|
||||
|
||||
welcomeMessage();
|
||||
|
||||
});
|
||||
|
@ -8,7 +8,7 @@ const severity2malus = { "none": 0, "light": -1, "moderate": -2, "severe": -3, "
|
||||
const severity2bonus = { "none": 0, "light": 1, "moderate": 2, "severe": 3, "critical": 4};
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class SoSUtility extends Entity {
|
||||
export class SoSUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async preloadHandlebarsTemplates() {
|
||||
@ -55,6 +55,32 @@ export class SoSUtility extends Entity {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static data(it) {
|
||||
if (it instanceof Actor || it instanceof Item || it instanceof Combatant) {
|
||||
return it.data;
|
||||
}
|
||||
return it;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static templateData(it) {
|
||||
return SoSUtility.data(it)?.data ?? {}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendiumData(compendium) {
|
||||
const pack = game.packs.get(compendium);
|
||||
return await pack?.getDocuments() ?? [];
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendium(compendium, filter = item => true) {
|
||||
let compendiumData = await SoSUtility.loadCompendiumData(compendium);
|
||||
return compendiumData.filter(filter);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendiumNames(compendium) {
|
||||
const pack = game.packs.get(compendium);
|
||||
@ -64,13 +90,13 @@ export class SoSUtility extends Entity {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async loadCompendium(compendium, filter = item => true) {
|
||||
/*static async loadCompendium(compendium, filter = item => true) {
|
||||
let compendiumItems = await SoSUtility.loadCompendiumNames(compendium);
|
||||
|
||||
const pack = game.packs.get(compendium);
|
||||
let list = [];
|
||||
for (let compendiumItem of compendiumItems) {
|
||||
await pack.getEntity(compendiumItem._id).then(it => {
|
||||
await pack.getEntity(compendiumItem.id).then(it => {
|
||||
const item = it.data;
|
||||
if (filter(item)) {
|
||||
list.push(item);
|
||||
@ -78,7 +104,7 @@ export class SoSUtility extends Entity {
|
||||
});
|
||||
};
|
||||
return list;
|
||||
}
|
||||
}*/
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static updateCombat(combat, round, diff, id) {
|
||||
@ -230,7 +256,7 @@ export class SoSUtility extends Entity {
|
||||
label: "Yes, delete it",
|
||||
callback: () => {
|
||||
console.log("Delete : ", itemId);
|
||||
actorSheet.actor.deleteOwnedItem(itemId);
|
||||
actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
|
||||
li.slideUp(200, () => actorSheet.render(false));
|
||||
}
|
||||
},
|
||||
|
@ -812,6 +812,7 @@ ul, li {
|
||||
/* Sidebar CSS */
|
||||
#sidebar {
|
||||
font-size: 1rem;
|
||||
width: min-content;
|
||||
background: rgb(105,85,65) url("../img/ui/sidebar-bg.webp") no-repeat right bottom;
|
||||
background-position: 100%;
|
||||
color: rgba(19, 15, 15, 0.75);
|
||||
|
195
system.json
195
system.json
@ -2,101 +2,21 @@
|
||||
"name": "foundryvtt-shadows-over-sol",
|
||||
"title": "Shadows over Sol",
|
||||
"description": "Shadows over Sol for FoundryVTT",
|
||||
"version": "1.0.1",
|
||||
"manifestPlusVersion": "1.0.1",
|
||||
"minimumCoreVersion": "0.7.5",
|
||||
"compatibleCoreVersion": "0.7.9",
|
||||
"templateVersion": 23,
|
||||
"author": "LeRatierBretonnien",
|
||||
"esmodules": [ "module/sos-main.js" ],
|
||||
"styles": ["styles/simple.css"],
|
||||
"background" : "img/ui/background01.webp",
|
||||
"media": [
|
||||
"authors": [],
|
||||
"url": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/",
|
||||
"license": "LICENSE.txt",
|
||||
"flags": {},
|
||||
"version": "2.0.5",
|
||||
"minimumCoreVersion": "0.8.0",
|
||||
"compatibleCoreVersion": "9",
|
||||
"scripts": [],
|
||||
"esmodules": [
|
||||
"module/sos-main.js"
|
||||
],
|
||||
"packs": [
|
||||
{
|
||||
"name": "skills",
|
||||
"label": "Skills",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/skills.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "skill", "skills" ]
|
||||
},
|
||||
{
|
||||
"name": "consequences",
|
||||
"label": "Consequences",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/consequences.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "consequence", "Consequences" ]
|
||||
},
|
||||
{
|
||||
"name": "gears",
|
||||
"label": "Gears",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/gears.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "gear", "weapon", "armor" ]
|
||||
},
|
||||
{
|
||||
"name": "injuries",
|
||||
"label": "Injuries",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/injuries.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "injury" ]
|
||||
},
|
||||
{
|
||||
"name": "weaknesses",
|
||||
"label": "Weaknesses",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/weaknesses.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "weakness" ]
|
||||
},
|
||||
{
|
||||
"name": "languages",
|
||||
"label": "Languages",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/languages.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "language" ]
|
||||
},
|
||||
{
|
||||
"name": "combat-actions",
|
||||
"label": "Combat Actions",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/combat-actions.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "actions", "combat", "attack" ]
|
||||
},
|
||||
{
|
||||
"name": "genelines",
|
||||
"label": "Genelines",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/genelines.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "genelines", "genetic" ]
|
||||
},
|
||||
{
|
||||
"name": "subcultures",
|
||||
"label": "Subcultures",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"module": "foundryvtt-shadows-over-sol",
|
||||
"path": "./packs/subcultures.db",
|
||||
"entity": "Item",
|
||||
"tags" : [ "subcultures", "cultures" ]
|
||||
}
|
||||
"styles": [
|
||||
"styles/simple.css"
|
||||
],
|
||||
"library": false,
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
@ -104,13 +24,86 @@
|
||||
"path": "lang/en.json"
|
||||
}
|
||||
],
|
||||
"gridDistance": 5,
|
||||
"gridUnits": "ft",
|
||||
"primaryTokenAttribute": "",
|
||||
"secondaryTokenAttribute": "",
|
||||
"packs": [
|
||||
{
|
||||
"name": "skills",
|
||||
"label": "Skills",
|
||||
"path": "./packs/skills.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "consequences",
|
||||
"label": "Consequences",
|
||||
"path": "./packs/consequences.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "gears",
|
||||
"label": "Gears",
|
||||
"path": "./packs/gears.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "injuries",
|
||||
"label": "Injuries",
|
||||
"path": "./packs/injuries.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "weaknesses",
|
||||
"label": "Weaknesses",
|
||||
"path": "./packs/weaknesses.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "languages",
|
||||
"label": "Languages",
|
||||
"path": "./packs/languages.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "combat-actions",
|
||||
"label": "Combat Actions",
|
||||
"path": "./packs/combat-actions.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "genelines",
|
||||
"label": "Genelines",
|
||||
"path": "./packs/genelines.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
},
|
||||
{
|
||||
"name": "subcultures",
|
||||
"label": "Subcultures",
|
||||
"path": "./packs/subcultures.db",
|
||||
"entity": "Item",
|
||||
"system": "foundryvtt-shadows-over-sol",
|
||||
"private": false
|
||||
}
|
||||
],
|
||||
"system": [],
|
||||
"dependencies": [],
|
||||
"socket": true,
|
||||
"url": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/",
|
||||
"manifest": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/-/raw/master/system.json",
|
||||
"download": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/-/archive/master/foundryvtt-shadows-over-sol.zip",
|
||||
"license": "LICENSE.txt"
|
||||
}
|
||||
"manifest": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/-/raw/dev_0.8/system.json",
|
||||
"download": "https://gitlab.com/LeRatierBretonnien/foundryvtt-shadows-over-sol/-/archive/dev_0.8/foundryvtt-shadows-over-sol.zip",
|
||||
"protected": false,
|
||||
"gridDistance": 5,
|
||||
"gridUnits": "ft"
|
||||
}
|
@ -5,8 +5,8 @@
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields">
|
||||
<div class="flexrow">
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
|
||||
<h1 class="charname"><input name="name" type="text" value="{{actor.name}}" placeholder="Name"/></h1>
|
||||
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{data.name}}" />
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
@ -28,8 +28,8 @@
|
||||
<div class="grid grid-2col">
|
||||
<div class="flex-group-left flexcol">
|
||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if data.editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if data.editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="stat flexrow" >
|
||||
<span class="stat-label flexrow tooltip tooltip-nobottom" name="statlabel">Stat name</span>
|
||||
@ -37,7 +37,7 @@
|
||||
<span class="stat-label flexrow tooltip tooltip-nobottom" name="statlabel">XP</span>
|
||||
</li>
|
||||
|
||||
{{#each data.stats as |stat key|}}
|
||||
{{#each data.data.stats as |stat key|}}
|
||||
{{#if stat.isLevelUp}}
|
||||
<li class="stat flexrow xp-level-up" data-attribute="{{key}}">
|
||||
<span class="stat-label flexrow tooltip tooltip-nobottom" name="data.stats.{{key}}.label">
|
||||
@ -48,12 +48,12 @@
|
||||
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
||||
{{/if}}
|
||||
<span class="stat-label flexrow tooltip tooltip-nobottom" name="data.stat.{{key}}.label"><a name={{key}}>{{localize stat.label}}</a></span>
|
||||
<select class="stat-value flexrow" type="text" name="data.stats.{{key}}.value" value="{{stat.value}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}>
|
||||
<select class="stat-value flexrow" type="text" name="data.stats.{{key}}.value" value="{{stat.value}}" data-dtype="Number" {{#unless @root.editStatSkill}}disabled{{/unless}}>
|
||||
{{#select stat.value}}
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
<input class="stat-xp flexrow" type="text" name="data.stats.{{key}}.xp" value="{{stat.xp}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}} />
|
||||
<input class="stat-xp flexrow" type="text" name="data.stats.{{key}}.xp" value="{{stat.xp}}" data-dtype="Number" {{#unless @root.editStatSkill}}disabled{{/unless}} />
|
||||
<span class="flexrow"><img class="cardsuit-img" src="systems/foundryvtt-shadows-over-sol/img/cards/{{stat.cardsuit}}.webp" /></span>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -66,14 +66,14 @@
|
||||
<span class="generic-label flexrow tooltip tooltip-nobottom" name="statlabel">Value</span>
|
||||
<span class="generic-label flexrow tooltip tooltip-nobottom" name="statlabel">Bonus/Malus</span>
|
||||
</li>
|
||||
{{#each data.scores as |score key|}}
|
||||
{{#each data.data.scores as |score key|}}
|
||||
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="generic-label flexrow tooltip tooltip-nobottom" name="data.scores.{{key}}.label">{{localize score.label}}</span>
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.value" value="{{score.value}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}} />
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.value" value="{{score.value}}" data-dtype="Number" {{#unless @root.editStatSkill}}disabled{{/unless}} />
|
||||
{{#if (eq key 'defense')}}
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.critical" value="{{score.critical}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}} />
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.critical" value="{{score.critical}}" data-dtype="Number" {{#unless @root.editStatSkill}}disabled{{/unless}} />
|
||||
{{/if}}
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.bonusmalus" value="{{score.bonusmalus}}" data-dtype="Number" {{#unless @root.data.editStatSkill}}disabled{{/unless}} />
|
||||
<input class="stat-value flexrow" type="text" name="data.scores.{{key}}.bonusmalus" value="{{score.bonusmalus}}" data-dtype="Number" {{#unless @root.editStatSkill}}disabled{{/unless}} />
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
@ -81,7 +81,7 @@
|
||||
</div>
|
||||
|
||||
<div class="flexcol">
|
||||
<h3 class="edge-name">Current deck size : {{data.deckSize}} cards</h3>
|
||||
<h3 class="edge-name">Current deck size : {{deckSize}} cards</h3>
|
||||
<div class="flexrow">
|
||||
<span class="edge-name"><a class="card-button reset-deck-full">Reset full deck and edges</a></span>
|
||||
<span class="edge-name"><a class="card-button draw-new-edge">Draw a new Edge card</a></span>
|
||||
@ -90,7 +90,7 @@
|
||||
<span class="edge-name">
|
||||
<h3 class="edge-name">Edge cards : </h3>
|
||||
<div class="flexrow">
|
||||
{{#each data.edgecard as |card key|}}
|
||||
{{#each edgecard as |card key|}}
|
||||
<div class="flexcol">
|
||||
<img class="card-img" src="{{card.path}}" data-edit="img" title="{{card.cardName}}" />
|
||||
<span class="edge-name"><a class="card-button discard-card" data-discard="{{card.cardName}}">Discard</a></span>
|
||||
@ -106,8 +106,8 @@
|
||||
<div class="tab skills" data-group="primary" data-tab="skills">
|
||||
<div class="flexrow">
|
||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if data.editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if data.editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
</div>
|
||||
|
||||
<span class="generic-label">Skills</span>
|
||||
@ -115,11 +115,11 @@
|
||||
|
||||
<div class="flex-group-left flexcol skill-column">
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each data.skill1 as |skill key|}}
|
||||
{{#each skill1 as |skill key|}}
|
||||
{{#if skill.data.isLevelUp}}
|
||||
<li class="item flexrow xp-level-up" data-item-id="{{skill._id}}">
|
||||
<li class="item flexrow xp-level-up" data-item-id="{{skill.id}}">
|
||||
{{else}}
|
||||
<li class="item flexrow list-item" data-item-id="{{skill._id}}">
|
||||
<li class="item flexrow list-item" data-item-id="{{skill.id}}">
|
||||
{{/if}}
|
||||
<img class="sheet-skill-img" src="{{skill.img}}"/>
|
||||
{{#if skill.data.isLevelUp}}
|
||||
@ -130,8 +130,8 @@
|
||||
{{else}}
|
||||
<span class="skill-label"><a>{{skill.name}}</a></span>
|
||||
{{/if}}
|
||||
<input class="skill-value" type="text" skillname="{{skill.name}}" value="{{numberFormat skill.data.value decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-xp" type="text" skillname="{{skill.name}}" value="{{skill.data.xp}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-value" type="text" skillname="{{skill.name}}" value="{{numberFormat skill.data.data.value decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-xp" type="text" skillname="{{skill.name}}" value="{{skill.data.data.xp}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
<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>
|
||||
@ -143,11 +143,11 @@
|
||||
|
||||
<div class="flex-group-left flexcol skill-column">
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each data.skill2 as |skill key|}}
|
||||
{{#each skill2 as |skill key|}}
|
||||
{{#if skill.data.isLevelUp}}
|
||||
<li class="item flexrow xp-level-up" data-item-id="{{skill._id}}">
|
||||
<li class="item flexrow xp-level-up" data-item-id="{{skill.id}}">
|
||||
{{else}}
|
||||
<li class="item flexrow list-item" data-item-id="{{skill._id}}">
|
||||
<li class="item flexrow list-item" data-item-id="{{skill.id}}">
|
||||
{{/if}}
|
||||
<img class="sheet-skill-img" src="{{skill.img}}"/>
|
||||
{{#if skill.data.isLevelUp}}
|
||||
@ -158,8 +158,8 @@
|
||||
{{else}}
|
||||
<span class="skill-label"><a>{{skill.name}}</a></span>
|
||||
{{/if}}
|
||||
<input class="skill-value" type="text" skillname="{{skill.name}}" value="{{numberFormat skill.data.value decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-xp" type="text" skillname="{{skill.name}}" value="{{skill.data.xp}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-value" type="text" skillname="{{skill.name}}" value="{{numberFormat skill.data.data.value decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="skill-xp" type="text" skillname="{{skill.name}}" value="{{skill.data.data.xp}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
<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>
|
||||
@ -174,24 +174,24 @@
|
||||
{{!-- Consequences Tab --}}
|
||||
<div class="tab consequences" data-group="primary" data-tab="consequences">
|
||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if data.editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if data.editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
src="systems/foundryvtt-shadows-over-sol/img/icons/{{#if editStatSkill}}unlocked.svg{{else}}locked.svg{{/if}}" alt="lock/unlock"
|
||||
>{{#if editStatSkill}}Lock{{else}}Unlock{{/if}}</a></span>
|
||||
<h4>Wounds & Conséquences</h4>
|
||||
<div class="grid grid-2col">
|
||||
<div class="flex-group-left flexcol skill-column">
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="item flexrow list-item" data-wound-name="light"><h4>Wounds : </h4></li>
|
||||
<li class="item flexrow list-item" data-wound-name="light"><span class="skill-label">Light :</span>
|
||||
<input class="wound-value" type="text" woundname="light" value="{{numberFormat data.wounds.light decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="wound-value" type="text" woundname="light" value="{{numberFormat data.data.wounds.light decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
</li>
|
||||
<li class="item flexrow list-item" data-wound-name="moderate"><span class="skill-label">Moderate :</span>
|
||||
<input class="wound-value" type="text" woundname="moderate" value="{{numberFormat data.wounds.moderate decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="wound-value" type="text" woundname="moderate" value="{{numberFormat data.data.wounds.moderate decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
</li>
|
||||
<li class="item flexrow list-item" data-wound-name="severe"><span class="skill-label">Severe :</span>
|
||||
<input class="wound-value" type="text" woundname="severe" value="{{numberFormat data.wounds.severe decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="wound-value" type="text" woundname="severe" value="{{numberFormat data.data.wounds.severe decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
</li>
|
||||
<li class="item flexrow list-item" data-wound-name="critical"><span class="skill-label">Critical :</span>
|
||||
<input class="wound-value" type="text" woundname="critical" value="{{numberFormat data.wounds.critical decimals=0}}" data-dtype="number" {{#unless @root.data.editStatSkill}}disabled{{/unless}}/>
|
||||
<input class="wound-value" type="text" woundname="critical" value="{{numberFormat data.data.wounds.critical decimals=0}}" data-dtype="number" {{#unless @root.editStatSkill}}disabled{{/unless}}/>
|
||||
</li>
|
||||
<li class="item flexrow list-item" data-wound-name="critical"><span class="skill-label">Total :</span>
|
||||
<span class="skill-label">{{data.currentWounds}} / {{data.totalWounds}}</span>
|
||||
@ -200,12 +200,12 @@
|
||||
</div>
|
||||
<div class="flex-group-left flexcol skill-column">
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each data.consequences as |conseq key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{conseq._id}}">
|
||||
{{#each consequences as |conseq key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{conseq.id}}">
|
||||
<img class="sheet-skill-img" src="{{conseq.img}}"/>
|
||||
<span class="conseq-label">{{conseq.name}}</span>
|
||||
<select class="consequence-severity" type="text" name="conseq.data.severity" value="{{conseq.data.severity}}" data-dtype="String">
|
||||
{{#select conseq.data.severity}}
|
||||
<select class="consequence-severity" type="text" name="conseq.data.data.severity" value="{{conseq.data.data.severity}}" data-dtype="String">
|
||||
{{#select conseq.data.data.severity}}
|
||||
<option value="none">None</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="moderate">Moderate</option>
|
||||
@ -227,16 +227,16 @@
|
||||
{{!-- Gears Tab --}}
|
||||
<div class="tab gears" data-group="primary" data-tab="gears">
|
||||
<div>
|
||||
<h4>Total Encumbrance : {{data.totalEncumbrance}} / {{data.stats.strength.value}}</h4>
|
||||
<h4>Total Encumbrance : {{totalEncumbrance}} / {{data.data.stats.strength.value}}</h4>
|
||||
</div>
|
||||
<div><h4>Weapons</h4></div>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.weapons as |weapon key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{weapon._id}}">
|
||||
{{#each weapons as |weapon key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{weapon.id}}">
|
||||
<img class="sheet-skill-img" src="{{weapon.img}}"/>
|
||||
<span class="weapon-label"><a>{{weapon.name}}</a></span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-equip" title="Equipped">{{#if weapon.data.equiped}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-equip" title="Equipped">{{#if weapon.data.data.equiped}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<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>
|
||||
@ -245,37 +245,37 @@
|
||||
</ul>
|
||||
<div><h4>Armors</h4></div>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.armors as |armor key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{armor._id}}">
|
||||
{{#each armors as |armor key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{armor.id}}">
|
||||
<img class="sheet-skill-img" src="{{armor.img}}"/>
|
||||
<span class="armor-label">{{armor.name}}</span>
|
||||
<span class="armor-label">{{armor.data.name}}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-worn" title="Worn">{{#if armor.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-worn" title="Worn">{{#if armor.data.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<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>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
<div><h4>Equipment/Gears</h4></div>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.gearsRoot as |gear key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{gear._id}}">
|
||||
{{#each gearsRoot as |gear key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{gear.id}}">
|
||||
<img class="sheet-skill-img" src="{{gear.img}}"/>
|
||||
<span class="conseq-label">{{gear.name}}</span>
|
||||
<span class="conseq-label">{{gear.data.name}}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-equip" title="Worn">{{#if armor.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-equip" title="Worn">{{#if gear.data.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<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>
|
||||
<ul class="item-list alternate-list list-item-margin1">
|
||||
{{#each data.contains as |subgear key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{subgear._id}}">
|
||||
<li class="item flexrow list-item" data-item-id="{{subgear.id}}">
|
||||
<img class="sheet-skill-img" src="{{subgear.img}}"/>
|
||||
<span class="conseq-label">{{subgear.name}}</span>
|
||||
<span class="conseq-label">{{subgear.data.name}}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-equip" title="Worn">{{#if armor.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<a class="item-control item-equip" title="Worn">{{#if subgear.data.data.worn}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
|
||||
<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>
|
||||
@ -292,13 +292,13 @@
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow list-item">
|
||||
<label class="description-label generic-label">Geneline : </label>
|
||||
<label class="description-label generic-label item-link"><a data-item-id="{{data.geneline._id}}">{{data.geneline.name}}</a></label>
|
||||
<label class="description-label generic-label item-link"><a data-item-id="{{data.geneline.id}}">{{data.geneline.name}}</a></label>
|
||||
</li>
|
||||
<li class="item flexrow list-item">
|
||||
<label class="description-label generic-label">Main Subculture :</label>
|
||||
<select class="stat-value flexrow" type="text" name="data.subculture" value="{{data.subculture}}" data-dtype="String">
|
||||
{{#select data.subculture}}
|
||||
{{#each data.subcultureList as |subculture key|}}
|
||||
{{#select subculture}}
|
||||
{{#each subcultureList as |subculture key|}}
|
||||
<option value="{{subculture.name}}">{{subculture.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
@ -339,8 +339,8 @@
|
||||
<div class="flex-group-left flexcol genelang-column">
|
||||
<span class="description-label">Familiar Subcultures</span>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.subcultureList as |subculture key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{subculture._id}}">
|
||||
{{#each subcultureList as |subculture key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{subculture.id}}">
|
||||
<img class="sheet-skill-img" src="{{subculture.img}}"/>
|
||||
<span class="conseq-label genelang-label">{{subculture.name}}</span>
|
||||
<div class="item-controls">
|
||||
@ -354,8 +354,8 @@
|
||||
<div class="flex-group-left flexcol genelang-column">
|
||||
<span class="description-label">Known Languages</span>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.languageList as |language key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{language._id}}">
|
||||
{{#each languageList as |language key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{language.id}}">
|
||||
<img class="sheet-skill-img" src="{{language.img}}"/>
|
||||
<span class="conseq-label">{{language.name}}</span>
|
||||
<div class="item-controls">
|
||||
@ -369,8 +369,8 @@
|
||||
<div class="flex-group-left flexcol genelang-column">
|
||||
<span class="description-label">Weaknesses</span>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each data.weaknessList as |weakness key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{weakness._id}}">
|
||||
{{#each weaknessList as |weakness key|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{weakness.id}}">
|
||||
<img class="sheet-skill-img" src="{{weakness.img}}"/>
|
||||
<span class="conseq-label">{{weakness.name}}</span>
|
||||
<div class="item-controls">
|
||||
@ -390,12 +390,12 @@
|
||||
<hr>
|
||||
<h3>Biography : </h3>
|
||||
<div class="form-group editor">
|
||||
{{editor content=data.history target="data.history" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.history target="data.history" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<hr>
|
||||
<h3>Notes : </h3>
|
||||
<div class="form-group editor">
|
||||
{{editor content=data.notes target="data.notes" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.notes target="data.notes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<hr>
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/editor-notes-gm.html"}}
|
||||
|
@ -1,14 +1,15 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{#with data}}
|
||||
<div class="tab" data-group="primary">
|
||||
|
||||
<div class="flexrow">
|
||||
@ -35,6 +36,8 @@
|
||||
<label class="generic-label">Is VAC ?</label>
|
||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.vac" {{checked data.vac}}/></label>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}}
|
||||
</div>
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
{{#with data}}
|
||||
<div class="flexrow">
|
||||
<label class="generic-label">Big</label>
|
||||
<input type="text" name="data.big" value="{{data.big}}" data-dtype="Number"/>
|
||||
@ -42,10 +43,11 @@
|
||||
<label class="generic-label">Worn ?</label>
|
||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.worn" {{checked data.worn}}/></label>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Description</label>
|
||||
<div class="form-group medium-editor">
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@ -13,8 +13,8 @@
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Severity</label>
|
||||
<div class="form-group small-editor">
|
||||
<select class="stat-value flexrow" type="text" name="data.severity" value="{{data.severity}}" data-dtype="String">
|
||||
{{#select data.severity}}
|
||||
<select class="stat-value flexrow" type="text" name="data.severity" value="{{data.data.severity}}" data-dtype="String">
|
||||
{{#select data.data.severity}}
|
||||
<option value="none">None</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="moderate">Moderate</option>
|
||||
@ -27,7 +27,7 @@
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Description</label>
|
||||
<div class="form-group medium-editor">
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
<div class="flexrow">
|
||||
<label class="generic-label">Container</label>
|
||||
<input type="text" name="data.container" value="{{data.container}}" data-dtype="Number"/>
|
||||
<input type="text" name="data.container" value="{{data.data.container}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}}
|
||||
</div>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{#with data}}
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
<div class="flexcol">
|
||||
@ -35,6 +36,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,13 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{#with data}}
|
||||
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Card</label>
|
||||
@ -20,6 +21,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Description</label>
|
||||
<div class="form-group medium-editor">
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.ata.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,14 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{#with data}}
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Vector</label>
|
||||
<input type="text" name="data.vector" value="{{data.vector}}" data-dtype="String"/>
|
||||
@ -28,6 +28,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/with}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
<ul>
|
||||
<li class="flexrow"><label class="generic-label">Value</label><input type="text" name="data.value" value="{{data.value}}" data-dtype="Number"/></li>
|
||||
<li class="flexrow"><label class="generic-label">Value</label><input type="text" name="data.data.value" value="{{data.data.value}}" data-dtype="Number"/></li>
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="stat flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="generic-label flexrow tooltip tooltip-nobottom" name="">Experiences list : </span>
|
||||
@ -27,7 +27,7 @@
|
||||
{{/each}}
|
||||
</ul>
|
||||
<label class="generic-label">Description</label>
|
||||
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
{{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
@ -1,14 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{#with data}}
|
||||
<div class="tab" data-group="primary">
|
||||
<div class="flexcol">
|
||||
<label class="generic-label">Type</label>
|
||||
@ -29,6 +29,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,13 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{#with data}}
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
<div class="flexcol">
|
||||
@ -23,6 +24,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<section class="sheet-body">
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
|
||||
{{#with data}}
|
||||
<div class="flexrow">
|
||||
<label class="generic-label">Cruise</label>
|
||||
<input type="text" name="data.cruise" value="{{data.cruise}}" data-dtype="Number"/>
|
||||
@ -35,6 +35,8 @@
|
||||
<label class="generic-label">Structure</label>
|
||||
<input type="text" name="data.structure" value="{{data.structure}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}}
|
||||
</div>
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{#with data}}
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
<div class="flexcol">
|
||||
@ -30,6 +31,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,13 +1,14 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
|
||||
<img class="profile-img" src="{{data.img}}" data-edit="img" title="{{data.name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
|
||||
<h1 class="charname"><input name="name" type="text" value="{{data.name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{#with data}}
|
||||
|
||||
<div class="tab" data-group="primary">
|
||||
|
||||
@ -82,7 +83,8 @@
|
||||
<label class="generic-label">Spread ?</label>
|
||||
<label class="attribute-value checkbox"><input type="checkbox" name="data.spread" {{checked data.spread}}/></label>
|
||||
</div>
|
||||
|
||||
{{/with}}
|
||||
|
||||
{{>"systems/foundryvtt-shadows-over-sol/templates/item-commongear-sheet.html"}}
|
||||
</div>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user