Character sheet

This commit is contained in:
Peter Varaksin 2020-04-23 19:11:04 +03:00
parent bffd6bda85
commit e43d18b974
22 changed files with 678 additions and 253 deletions

View file

@ -9,8 +9,8 @@ export class BladesActorSheet extends ActorSheet {
return mergeObject(super.defaultOptions, {
classes: ["blades-in-the-dark", "sheet", "actor"],
template: "systems/blades-in-the-dark/templates/actor-sheet.html",
width: 800,
height: 1000
width: 700,
height: 970
});
}
@ -19,12 +19,13 @@ export class BladesActorSheet extends ActorSheet {
/** @override */
getData() {
const data = super.getData();
data.dtypes = ["String", "Number", "Boolean", "Radio"];
// Calculate Load
let loadout = 0;
data.items.forEach(i => {loadout += (i.type === "item") ? parseInt(i.data.load) : 0});
data.data.loadout = loadout;
console.log("DATA");
console.log(data);
// for ( let attr of Object.values(data.data) ) {
// attr.isCheckbox = attr.dtype === "Boolean";
// }
return data;
}
@ -65,7 +66,6 @@ export class BladesActorSheet extends ActorSheet {
/** @override */
_updateObject(event, formData) {
console.log(formData);
// Handle the free-form attributes list
// const formAttrs = expandObject(formData).data.attributes || {};
// const attributes = Object.values(formAttrs).reduce((obj, v) => {

View file

@ -6,6 +6,7 @@
// Import Modules
import { preloadHandlebarsTemplates } from "./templates.js";
import { BladesItem } from "./item.js";
import { BladesItemSheet } from "./item-sheet.js";
import { BladesActorSheet } from "./actor-sheet.js";
@ -20,16 +21,13 @@ Hooks.once("init", async function() {
* Set an initiative formula for the system
* @type {String}
*/
CONFIG.Combat.initiative = {
formula: "1d20",
decimals: 2
};
CONFIG.Item.entityClass = BladesItem;
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("bitd", BladesActorSheet, { makeDefault: true });
Actors.registerSheet("blades", BladesActorSheet, { types: ["character"], makeDefault: true });
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("bitd", BladesItemSheet, {makeDefault: true});
Items.registerSheet("blades", BladesItemSheet, {makeDefault: true});
preloadHandlebarsTemplates();

View file

@ -19,7 +19,14 @@ export class BladesItemSheet extends ItemSheet {
/** @override */
get template() {
const path = "systems/blades-in-the-dark/templates/items";
return `${path}/${this.item.data.type}.html`;
let simple_item_types = ["background", "heritage", "vice"];
let template_name = `${this.item.data.type}`;
if (simple_item_types.indexOf(this.item.data.type) >= 0) {
template_name = "simple";
}
return `${path}/${template_name}.html`;
}
/* -------------------------------------------- */
@ -40,7 +47,7 @@ export class BladesItemSheet extends ItemSheet {
if (!this.options.editable) return;
// Add or Remove Attribute
html.find(".attributes").on("click", ".attribute-control", this._onClickAttributeControl.bind(this));
// html.find(".attributes").on("click", ".attribute-control", this._onClickAttributeControl.bind(this));
}
/* -------------------------------------------- */
@ -74,34 +81,5 @@ export class BladesItemSheet extends ItemSheet {
await this._onSubmit(event);
}
}
/* -------------------------------------------- */
/** @override */
_updateObject(event, formData) {
// Handle the free-form attributes list
const formAttrs = expandObject(formData).data.attributes || {};
const attributes = Object.values(formAttrs).reduce((obj, v) => {
let k = v["key"].trim();
if ( /[\s\.]/.test(k) ) return ui.notifications.error("Attribute keys may not contain spaces or periods");
delete v["key"];
obj[k] = v;
return obj;
}, {});
// Remove attributes which are no longer used
for ( let k of Object.keys(this.object.data.data.attributes) ) {
if ( !attributes.hasOwnProperty(k) ) attributes[`-=${k}`] = null;
}
// Re-combine formData
formData = Object.entries(formData).filter(e => !e[0].startsWith("data.attributes")).reduce((obj, e) => {
obj[e[0]] = e[1];
return obj;
}, {_id: this.object._id, "data.attributes": attributes});
// Update the Item
return this.object.update(formData);
}
}

6
module/item.js Normal file
View file

@ -0,0 +1,6 @@
/**
* Extend the basic Item
* @extends {Item}
*/
export class BladesItem extends Item {
}

View file

@ -9,6 +9,7 @@ export const preloadHandlebarsTemplates = async function() {
const templatePaths = [
// Actor Sheet Partials
"systems/blades-in-the-dark/templates/parts/coins.html",
"systems/blades-in-the-dark/templates/parts/attributes.html"
];

55
packs/abilities.db Normal file
View file

@ -0,0 +1,55 @@
{"_id":"0IDmKmW3AiaNEBpE","name":"Survivor","permission":{"default":0},"type":"ability","data":{"description":"From hard won experience or occult ritual, you are immune to the poisonous miasma of the deathlands and are able to subsist on the strange flora and fauna there. You get +1 stress box.","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":500001,"flags":{}}
{"_id":"1G5jzLtr2Xy5K5I2","name":"Cloak & Dagger","permission":{"default":0},"type":"ability","data":{"description":"When you use a disguise or other form of covert misdirection, you get +1d to rolls to confuse or deflect suspicion. When you throw off your disguise, the resulting surprise gives you the initiative in the situation.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":200001,"flags":{}}
{"_id":"26BF64gJyZVZeQFZ","name":"Analyst","permission":{"default":0},"type":"ability","data":{"description":"During downtime, you get two ticks to distribute among any long term project clocks that involve investigation or learning a new formula or design plan.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":200001,"flags":{}}
{"_id":"3BitFvLHGQbuaezR","name":"Ambush","permission":{"default":0},"type":"ability","data":{"description":"When you attack from hiding or spring a trap, you get +1d.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":200001,"flags":{}}
{"_id":"3VQkC6YZfnO7nFRm","name":"Mastermind","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to protect a teammate, or to push yourself when you gather information or work on a long-term project.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":700001,"flags":{}}
{"_id":"3Yf2yt4zUSvnLbzA","name":"Physicker","permission":{"default":0},"type":"ability","data":{"description":"You can Tinker with bones, blood, and bodily humours to treat wounds or stabilize the dying. You may study a malady or corpse. Everyone in your crew gets +1d to their healing treatment rolls.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":600001,"flags":{}}
{"_id":"4CjjbD1wYdB3xV9g","name":"Sharpshooter","permission":{"default":0},"type":"ability","data":{"description":"You can push yourself to do one of the following: make a ranged attack at extreme distance beyond whats normal for the weapon—unleash a barrage of rapid fire to suppress the enemy.","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":100001,"flags":{}}
{"_id":"4kNuvKoOQQzM5jLl","name":"Ghost Hunter","permission":{"default":0},"type":"ability","data":{"description":"Your hunting pet is imbued with spirit energy. It gains potency when tracking or fighting the supernatural, and gains an arcane ability: ghost-form, mind-link, or arrow-swift. Take this ability again to choose an additional arcane ability for your pet.","class":"Hound","price":"2"},"folder":"PaUiEAoDgddaXGEi","sort":300001,"flags":{}}
{"_id":"56t1bRDXIxGDJhKd","name":"Venomous","permission":{"default":0},"type":"ability","data":{"description":"Choose a drug or poison (from your bandolier stock) to which you have become immune. You can push yourself to secrete it through your skin or saliva or exhale it as a vapor.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":800001,"flags":{}}
{"_id":"5UwC3EZPaWrw3szD","name":"Tempest","permission":{"default":0},"type":"ability","data":{"description":"You can push yourself to do one of the following: unleash a stroke of lightning as a weapon - summon a storm in your immediate vicinity (torrential rain, roaring winds, heavy fog, chilling frost/snow, etc.).","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":700001,"flags":{}}
{"_id":"7hooG3QMZrhGlD35","name":"Leader","permission":{"default":0},"type":"ability","data":{"description":"When you Command a cohort in combat, they continue to fight when they would otherwise break (they're not taken out when they suffer level 3 harm). They gain +1 effect and 1 armor.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":400000,"flags":{}}
{"_id":"97TVuvrGMilTIMKO","name":"Strange Methods","permission":{"default":0},"type":"ability","data":{"description":"When you invent or craft a creation with arcane features, take +1 result level to your roll. You begin with one arcane design already known.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":600001,"flags":{}}
{"_id":"BW4k9Qr3AGw6sEut","name":"Iron Will","permission":{"default":0},"type":"ability","data":{"description":"You're immune to the terror that some supernatural entities inflict on sight. Take +1d to resistance rolls with Resolve.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":300001,"flags":{}}
{"_id":"CskYi6efFy3OKS0D","name":"Like Looking into a Mirror","permission":{"default":0},"type":"ability","data":{"description":"You can always tell when someone is lying to you.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":400001,"flags":{}}
{"_id":"DPRnFPkObGyvgzGW","name":"Scout","permission":{"default":0},"type":"ability","data":{"description":"When you gather info to locate a target, you get +1 effect. When you hide in a prepared position or use camouflage, you get +1dto rolls to avoid detection.","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":400001,"flags":{}}
{"_id":"FLECQ52FEPuV9lPl","name":"Mule","permission":{"default":0},"type":"ability","data":{"description":"Your load limits are higher. Light: 5. Normal: 7. Heavy: 8.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":500000,"flags":{}}
{"_id":"Fa3urOZnQj2dhups","name":"Not to be Trifled With","permission":{"default":0},"type":"ability","data":{"description":"You can push yourself to do one of the following: perform a feat of physical force that verges on the superhuman—engage a small gang on equal footing in close combat.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":600000,"flags":{}}
{"_id":"GFcTs25hSqVfPccB","name":"Savage","permission":{"default":0},"type":"ability","data":{"description":"When you unleash physical violence, it's especially frightening. When you Command a frightened target, take +1d.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":700000,"flags":{}}
{"_id":"GGik6vATDVw1ZkZX","name":"Saboteur","permission":{"default":0},"type":"ability","data":{"description":"When you Wreck, the work is much quieter than it should be and the damage is hidden from casual inspection.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":700001,"flags":{}}
{"_id":"K327OtKAa3T8NweW","name":"Ghost Voice","permission":{"default":0},"type":"ability","data":{"description":"You know the secret method to interact with a ghost or demon as if it was a normal human, regardless of how wild or feral it appears. You gain potency when communicating with the supernatural.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":300001,"flags":{}}
{"_id":"KhryFnEwDPtPCuEY","name":"Ghost Ward","permission":{"default":0},"type":"ability","data":{"description":"You know how to Wreck an area with arcane substances and methods so it is either anathema or enticing to spirits (your choice).","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":500001,"flags":{}}
{"_id":"KzghACWjB35yp9Ox","name":"Fortitude","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to resist a consequence of fatigue, weakness, or chemical effects, or to push yourself when working with technical skill or handling alchemicals.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":400001,"flags":{}}
{"_id":"LL4ALumWoSfHBuEC","name":"Battleborn","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to reduce harm from an attack in combat or to push yourself during a fight.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":100000,"flags":{}}
{"_id":"OIAtGUPHlE5wfHZo","name":"Vigorous","permission":{"default":0},"type":"ability","data":{"description":"You recover from harm faster. Permanently fill in one of your healing clock segments. Take +1d to healing treatment rolls.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":800000,"flags":{}}
{"_id":"RNMcZRcMABGjvFwr","name":"A Little Something on the Side","permission":{"default":0},"type":"ability","data":{"description":"At the end of each downtime phase, you earn +2 stash.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":500001,"flags":{}}
{"_id":"TDhvP6fV6PnTSrvC","name":"Calculating","permission":{"default":0},"type":"ability","data":{"description":"Due to your careful planning, during downtime, you may give yourself or another crew member +1 downtime action.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":200001,"flags":{}}
{"_id":"TTxVIEqlbXvQpFuq","name":"Functioning Vice","permission":{"default":0},"type":"ability","data":{"description":"When you indulge your vice, you may adjust the dice outcome by 1 or 2 (up or down). An ally who joins in your vice may do the same.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":400001,"flags":{}}
{"_id":"UI8WWOJiSFr3Sn9C","name":"Artificer","permission":{"default":0},"type":"ability","data":{"description":"When you invent or craft a creation with spark-craftfeatures, take +1 result level to your roll. You begin with one special design already known.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":300001,"flags":{}}
{"_id":"YYyzA49gE764951G","name":"The Devil's Footsteps","permission":{"default":0},"type":"ability","data":{"description":"When you push yourself, choose one of the following additional benefits: perform a feat of athletics that verges on the superhuman—maneuver to confuse your enemies so they mistakenly attack each other.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":400001,"flags":{}}
{"_id":"YeRIdgN6dt54tSAK","name":"Ghost Contract","permission":{"default":0},"type":"ability","data":{"description":"When you shake on a deal, you and your partner - human or otherwise - both bear a mark of your oath. If either breaks the contract, they take level 3 harm, \"Cursed\".","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":500001,"flags":{}}
{"_id":"Z8LYDGPeRdUnjtLN","name":"Ritual","permission":{"default":0},"type":"ability","data":{"description":"You can Study an occult ritual (or create a new one) to summon a supernatural effect or being. You know the arcane methods to perform ritual sorcery. You begin with one ritual already learned.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":500001,"flags":{}}
{"_id":"bCRW1vrqROytbqWb","name":"Ghost Mind","permission":{"default":0},"type":"ability","data":{"description":"You're always aware of supernatural entities in your presence. Take +1d when you gather info about the supernatural.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":200001,"flags":{}}
{"_id":"bqQNAewUffuNUfbV","name":"Rook's Gambit","permission":{"default":0},"type":"ability","data":{"description":"Take 2 Stress to roll your best action rating while performing a different action. Say how you adapt your skill to this use.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":100001,"flags":{}}
{"_id":"cyYStjHgqaxobB1y","name":"Subterfuge","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to resist a consequence from suspicion or persuasion, or to push yourself for subterfuge.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":700001,"flags":{}}
{"_id":"e46lMfe6ayO3qDF5","name":"Foresight","permission":{"default":0},"type":"ability","data":{"description":"Two times per score you can assist a teammate without paying stress. Tell us how you prepared for this.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":100001,"flags":{}}
{"_id":"eVTVGgTOhaqSpCca","name":"Vengeful","permission":{"default":0},"type":"ability","data":{"description":"You gain an additional xp trigger: You got payback against someone who harmed you or someone you care about. If your crew helped you get payback, also mark crew xp.","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":700001,"flags":{}}
{"_id":"ehNEPCtVCr4hbqBm","name":"Focused","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to resist a consequence of surprise or mental harm (fear, confusion, losing track of someone) or to push yourself for ranged combat or tracking.","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":200001,"flags":{}}
{"_id":"h0F1Xsoijv0LlMSd","name":"Jail Bird","permission":{"default":0},"type":"ability","data":{"description":"When incarcerated, your wanted level counts as 1 less, your Tier as 1 more, and you gain +1 faction status with a faction you help on the inside (in addition to your incarceration roll).","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":600001,"flags":{}}
{"_id":"iRMpss4mzoC4WNFp","name":"Compel","permission":{"default":0},"type":"ability","data":{"description":"You can Attune to the ghost field to force a nearby ghost to appear and obey a command you give it. You are not supernaturally terrified by a ghost you summon or compel (though your allies may be).","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":100001,"flags":{}}
{"_id":"j20q54yIvqlg51Z5","name":"Shadow","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to resist a consequence from detection or security measures, or to push yourself for a feat of athletics or stealth.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":800001,"flags":{}}
{"_id":"mkI2szl2Ea1v2zGS","name":"Bodyguard","permission":{"default":0},"type":"ability","data":{"description":"When you protect a teammate, take +1d to your resistance roll. When you gather info to anticipate possible threats in the current situation, you get +1 effect.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":200000,"flags":{}}
{"_id":"n47JqyJJwXX3Q0Ua","name":"Connected","permission":{"default":0},"type":"ability","data":{"description":"During downtime, you get +1 result level when you acquire an asset or reduce heat.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":300001,"flags":{}}
{"_id":"npFfvkY95OWza0Mo","name":"Warded","permission":{"default":0},"type":"ability","data":{"description":"You may expend your special armor to resist a supernatural consequence, or to push yourself when you deal with arcane forces.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":800001,"flags":{}}
{"_id":"omm65Xz4wqJVE0Th","name":"Infiltrator","permission":{"default":0},"type":"ability","data":{"description":"You are not affected by quality or Tier when you bypass security measures.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":100001,"flags":{}}
{"_id":"owJ82qqEbO4u8wGv","name":"Occultist","permission":{"default":0},"type":"ability","data":{"description":"You know the secret ways to Consort with ancient powers, forgotten gods or demons. Once you've consorted with one, you get +1d to command cultists who worship it.","class":"Whisper","price":"1"},"folder":"5Sb9YUatUQwtpdMZ","sort":400001,"flags":{}}
{"_id":"qw5Nzte5I60PiBbh","name":"Expertise","permission":{"default":0},"type":"ability","data":{"description":"Choose one of your action ratings. When you lead a group action using that action, you can suffer only 1 stress at most regardless of the number of failed rolls.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":500001,"flags":{}}
{"_id":"r6dry3SxyDBP84bD","name":"Ghost Veil","permission":{"default":0},"type":"ability","data":{"description":"You may shift partially into the ghost field, becoming shadowy and insubstantial for a few moments. Take 2 stress when you shift, plus 1 stress for each extra feature: It lasts for a few minutes rather than moments - you are invisible rather than shadowy - you may float through the air like a ghost.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":600001,"flags":{}}
{"_id":"rNafmXeBlQ9eDpF9","name":"Reflexes","permission":{"default":0},"type":"ability","data":{"description":"When there's a question about who acts first, the answer is you (two characters with Reflexes act simultaneously).","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":700001,"flags":{}}
{"_id":"sOennuura7lMn9qm","name":"Tough as Nails","permission":{"default":0},"type":"ability","data":{"description":"Penalties from harm are one level less severe (though level 4 harm is still fatal).","class":"Hound","price":"1"},"folder":"PaUiEAoDgddaXGEi","sort":600001,"flags":{}}
{"_id":"uaLo32nPUpKp3Yqf","name":"Ghost Fighter","permission":{"default":0},"type":"ability","data":{"description":"You may imbue your hands, melee weapons, or tools with spirit energy. You gain potency in combat vs. the supernatural. You may grapple with spirits to restrain and capture them.","class":"Cutter","price":"1"},"folder":"cJPDzs27jPdqAVDV","sort":300000,"flags":{}}
{"_id":"ubiQP80zuYu0jkBt","name":"Daredevil","permission":{"default":0},"type":"ability","data":{"description":"When you roll a desperate action, you get +1d to your roll if you also take -1d to any resistance rolls against consequences from your action.","class":"Lurk","price":"1"},"folder":"7gkE4yoqYZiTi9EB","sort":300001,"flags":{}}
{"_id":"v53AgGx9HbOAmBbM","name":"Alchemist","permission":{"default":0},"type":"ability","data":{"description":"When you invent or craft a creation with alchemicalfeatures, take +1 result level to your roll. You begin with one special formula already known.","class":"Leech","price":"1"},"folder":"EorKoKOCKsvC93ZA","sort":100001,"flags":{}}
{"_id":"vbIWDdNIEa6dpP7D","name":"Weaving the Web","permission":{"default":0},"type":"ability","data":{"description":"You gain +1d to Consort when you gather information on a target for a score. You get +1d to the engagement roll for that operation.","class":"Spider","price":"1"},"folder":"io6Cdw11wDXIixI3","sort":800001,"flags":{}}
{"_id":"vqMYvzn0jw6Iwy9U","name":"Trust in Me","permission":{"default":0},"type":"ability","data":{"description":"You get +1d vs. a target with whom you have an intimate relationship.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":800001,"flags":{}}
{"_id":"zCgcGLgPPOKGOXck","name":"Mesmerism","permission":{"default":0},"type":"ability","data":{"description":"When you Sway someone, you may cause them to forget that it's happened until they next interact with you.","class":"Slide","price":"1"},"folder":"537uDqf28OmWJoAM","sort":600001,"flags":{}}

View file

@ -1,8 +1,7 @@
{"_id":"8jExf4Zqad6e3bvn","name":"Leech","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":400000,"flags":{}}
{"_id":"CAHfNrPDJZKVNMrH","name":"Lurk","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":500000,"flags":{}}
{"_id":"JGxBjlbooxuUHe4E","name":"Hound","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]}},"folder":"Q5shG4toM5PkRSnX","sort":100000,"flags":{}}
{"_id":"OKRtWdhpwIAdX3RS","name":"Itemko","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":0,"description":""},"folder":"3Rl8reBeGom1vbie","sort":100000,"flags":{}}
{"_id":"P6LMZBrG5U9eCjhX","name":"Spider","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":700000,"flags":{}}
{"_id":"YUGDdyADj0PTBVcP","name":"Slide","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":600000,"flags":{}}
{"_id":"tEob41rtEbHcswNM","name":"Cutter","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":300000,"flags":{}}
{"_id":"zOg14xy8ZEku6bNq","name":"Whisper","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":200000,"flags":{}}
{"_id":"8jExf4Zqad6e3bvn","name":"Leech","permission":{"default":0},"type":"class","data":{"description":"A saboteur and technician","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":400000,"flags":{}}
{"_id":"CAHfNrPDJZKVNMrH","name":"Lurk","permission":{"default":0},"type":"class","data":{"description":"A stealthy infiltrator and burglar","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":500000,"flags":{}}
{"_id":"JGxBjlbooxuUHe4E","name":"Hound","permission":{"default":0},"type":"class","data":{"description":"A deadly sharpshooter and tracker","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]}},"sort":100000,"flags":{}}
{"_id":"P6LMZBrG5U9eCjhX","name":"Spider","permission":{"default":0},"type":"class","data":{"description":"A devious mastermind","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":700000,"flags":{}}
{"_id":"YUGDdyADj0PTBVcP","name":"Slide","permission":{"default":0},"type":"class","data":{"description":"A subtle manipulator and spy","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":600000,"flags":{}}
{"_id":"tEob41rtEbHcswNM","name":"Cutter","permission":{"default":0},"type":"class","data":{"description":"A dangerous & intimidating fighter","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":300000,"flags":{}}
{"_id":"zOg14xy8ZEku6bNq","name":"Whisper","permission":{"default":0},"type":"class","data":{"description":"An Arcane adept and channeler","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"sort":200000,"flags":{}}

View file

@ -3,4 +3,4 @@
{"_id":"TiL4AssY9Ryty6f9","name":"The Dagger Isles","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":200000,"flags":{}}
{"_id":"Tk61Y7K84GgQpqPz","name":"Skovlan","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":500000,"flags":{}}
{"_id":"WRzLNozCfzFLg0d6","name":"Tycheros","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":600000,"flags":{}}
{"_id":"fKEJOkqoAwinyzrm","name":"Akoros","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":100000,"flags":{}}
{"_id":"fKEJOkqoAwinyzrm","name":"Akoros","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":100000,"flags":{}}

View file

@ -1,28 +1,16 @@
{"_id":"0GbyUKjjMof6D8fb","name":"Faith","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":100000,"flags":{}}
{"_id":"43dWmFJgAeqcsOJl","name":"Pleasure","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":500000,"flags":{}}
{"_id":"7q2RhjaBzYBoWmMa","name":"Law","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":300000,"flags":{}}
{"_id":"7zLXN88TgLkP0JlK","name":"Noble","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":600000,"flags":{}}
{"_id":"8bDf9RzcGeNz48Kp","name":"Underworld","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":700000,"flags":{}}
{"_id":"8jExf4Zqad6e3bvn","name":"Leech","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":400000,"flags":{}}
{"_id":"ANBgWHbSQVgUQecV","name":"Iruvia","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":300000,"flags":{}}
{"_id":"CAHfNrPDJZKVNMrH","name":"Lurk","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":500000,"flags":{}}
{"_id":"JGxBjlbooxuUHe4E","name":"Hound","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]}},"folder":"Q5shG4toM5PkRSnX","sort":100000,"flags":{}}
{"_id":"Lp7ezgXB3USzviHa","name":"Obligation","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":400000,"flags":{}}
{"_id":"OKRtWdhpwIAdX3RS","name":"Itemko","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":0,"description":""},"folder":"3Rl8reBeGom1vbie","sort":100000,"flags":{}}
{"_id":"P6LMZBrG5U9eCjhX","name":"Spider","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":700000,"flags":{}}
{"_id":"PJ4m6YEsMEzfgAqy","name":"Weird","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":700000,"flags":{}}
{"_id":"RrvbKXClyyNBYFBB","name":"Severos","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":400000,"flags":{}}
{"_id":"S1CvKYfGwHFq9yxR","name":"Trade","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":400000,"flags":{}}
{"_id":"TiL4AssY9Ryty6f9","name":"The Dagger Isles","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":200000,"flags":{}}
{"_id":"Tk61Y7K84GgQpqPz","name":"Skovlan","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":500000,"flags":{}}
{"_id":"VNt88GVp0Td0Q8H6","name":"Luxury","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":300000,"flags":{}}
{"_id":"WRzLNozCfzFLg0d6","name":"Tycheros","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":600000,"flags":{}}
{"_id":"Y0aq94hQO9LyMJN9","name":"Stupor","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":600000,"flags":{}}
{"_id":"YUGDdyADj0PTBVcP","name":"Slide","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":600000,"flags":{}}
{"_id":"ZplBgIXHxWLUXX1o","name":"Academic","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":100000,"flags":{}}
{"_id":"ex7Mqv42SKZrfUL0","name":"Military","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":500000,"flags":{}}
{"_id":"fKEJOkqoAwinyzrm","name":"Akoros","permission":{"default":0},"type":"heritage","data":{"description":""},"folder":"2TX8ibE6E4CDUGYX","sort":100000,"flags":{}}
{"_id":"qGkgWsdxcnl0cFhm","name":"Labor","permission":{"default":0},"type":"background","data":{"description":""},"folder":"YkuVHwuSV9IfsxU0","sort":200000,"flags":{}}
{"_id":"tEob41rtEbHcswNM","name":"Cutter","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":300000,"flags":{}}
{"_id":"ueBoUHFBMHlCowB0","name":"Gambling","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":200000,"flags":{}}
{"_id":"zOg14xy8ZEku6bNq","name":"Whisper","permission":{"default":0},"type":"class","data":{"description":"","base_skills":{"hunt":[0],"study":[0],"survey":[0],"tinker":[0],"finesse":[0],"prowl":[0],"skirmish":[0],"wreck":[0],"attune":[0],"command":[0],"consort":[0],"sway":[0]},"class_items":[]},"folder":"Q5shG4toM5PkRSnX","sort":200000,"flags":{}}
{"_id":"05ZtdYxXWEPmLlxH","name":"Demolition Tools","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"2","description":"","items":[]},"sort":1400000,"flags":{}}
{"_id":"8kgtZo4ddpRAJH7l","name":"+ Heavy","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"3","description":"","items":[]},"sort":800000,"flags":{}}
{"_id":"9BztJARntO1uFSYY","name":"Throwing Knives","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":200000,"flags":{}}
{"_id":"K9onsW8mnJiFrWAZ","name":"A Blade or Two","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":100000,"flags":{}}
{"_id":"MOZAojcYM92lrDcK","name":"A Large Weapon","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"2","description":"","items":[]},"sort":500000,"flags":{}}
{"_id":"OEspgCofoCwHOcm9","name":"An Unusual Weapon","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":600000,"flags":{}}
{"_id":"RM4Qs7KnUDUWXOiz","name":"Subterfuge Supplies","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":1300000,"flags":{}}
{"_id":"SaRZapoF6ja5s7Qo","name":"Lantern","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":1600000,"flags":{}}
{"_id":"YLPAWyYPQZuuHL18","name":"Arcane Implements","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":1100000,"flags":{}}
{"_id":"cIa0ZZUXpOcqPtKy","name":"Climbing Gear","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"2","description":"","items":[]},"sort":1000000,"flags":{}}
{"_id":"gCFkqHGH9KGiGcGn","name":"Burglary Gear","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":900000,"flags":{}}
{"_id":"iUytqBYn6e0slC75","name":"A Pistol","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":300000,"flags":{}}
{"_id":"ukmU5W2Ya9EJr4J0","name":"Armor","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"2","description":"","items":[]},"sort":700000,"flags":{}}
{"_id":"vLpzNwzhGlBfxw2v","name":"Documents","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":1200000,"flags":{}}
{"_id":"y1tNdNOesmsYbJkv","name":"Tinkering Tools","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":1500000,"flags":{}}
{"_id":"y9WkdMK6v8GxweL5","name":"A 2nd Pistol","permission":{"default":0},"type":"item","data":{"class_restriction":"","load":"1","description":"","items":[]},"sort":400000,"flags":{}}

View file

@ -1,7 +1,7 @@
{"_id":"0GbyUKjjMof6D8fb","name":"Faith","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":100000,"flags":{}}
{"_id":"43dWmFJgAeqcsOJl","name":"Pleasure","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":500000,"flags":{}}
{"_id":"Lp7ezgXB3USzviHa","name":"Obligation","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":400000,"flags":{}}
{"_id":"PJ4m6YEsMEzfgAqy","name":"Weird","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":700000,"flags":{}}
{"_id":"VNt88GVp0Td0Q8H6","name":"Luxury","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":300000,"flags":{}}
{"_id":"Y0aq94hQO9LyMJN9","name":"Stupor","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":600000,"flags":{}}
{"_id":"ueBoUHFBMHlCowB0","name":"Gambling","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":200000,"flags":{}}
{"_id":"43dWmFJgAeqcsOJl","name":"Pleasure","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":500000,"flags":{}}
{"_id":"0GbyUKjjMof6D8fb","name":"Faith","permission":{"default":0},"type":"vice","data":{"description":""},"folder":"Jz1yD35kaDA2NZtZ","sort":100000,"flags":{}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -7,6 +7,9 @@
/*
* Custom Radio
*/
/*
* Custom Radio Squared
*/
/*
* Checkboxes underscored.
*/
@ -16,31 +19,76 @@
/*
* General Styles
*/
* {
* {
font-family: Georgia, "Bitstream Charter", "Times New Roman", serif;
}
* ul {
list-style: none;
}
* form.actor-sheet {
padding: 20px;
}
* textarea {
margin-top: 10px;
}
* td {
padding: 10px;
}
* .section {
margin-bottom: 10px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
* .section > * {
margin-right: 10px;
}
* .section > *:last-child {
margin-right: 0px;
}
* .section .grow-one {
flex-grow: 1;
}
* .section .grow-two {
flex-grow: 2;
}
* .section.experience {
margin-bottom: 0px;
justify-content: center;
}
* .editor,
* .editor-content {
min-height: 280px;
}
* .flex-horizontal {
display: flex;
flex-direction: row;
justify-content: space-between;
}
* .flex-vertical {
display: flex;
flex-direction: column;
}
* .black-label {
background-color: black;
color: white;
font-size: 35px;
font-size: 21px;
text-align: center;
padding: 0px 5px;
height: 50px !important;
height: 30px !important;
text-transform: capitalize;
}
* .label-stripe {
text-transform: uppercase;
background-color: #888;
margin-bottom: 10px;
position: relative;
}
* #stress-trauma {
border-top: 3px solid black;
display: flex;
flex-direction: row;
margin-bottom: 0px;
/* Trauma */
}
* #stress-trauma > * {
@ -54,8 +102,8 @@
/* Hide the browser's default checkbox */
}
* #stress-trauma #character-stress label {
height: 100px;
width: 32px;
height: 50px;
width: 17px;
background-image: url("assets/teeth/stresstooth-red.png");
background-repeat: no-repeat;
background-size: contain;
@ -86,8 +134,8 @@
flex-direction: column;
}
* #stress-trauma #character-trauma-container #character-trauma label {
height: 100px;
width: 32px;
height: 50px;
width: 17px;
background-image: url("assets/teeth/shorttooth-red.png");
background-repeat: no-repeat;
background-size: contain;
@ -124,7 +172,7 @@
}
* #stress-trauma #trauma-list label {
cursor: pointer;
font-size: 22px;
font-size: 19px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
@ -142,6 +190,49 @@
text-decoration: none;
font-weight: bold;
}
* #abilities #character-experience {
display: flex;
/* Hide the browser's default checkbox */
position: absolute;
top: 0px;
right: 0px;
}
* #abilities #character-experience label {
height: 30px;
width: 10px;
background-image: url("assets/teeth/stresstooth-red.png");
background-repeat: no-repeat;
background-size: contain;
margin-right: 5px;
}
* #abilities #character-experience label:last-of-type {
margin-right: 0px;
}
* #abilities #character-experience label[for$="-0"] {
width: auto;
height: auto;
background-image: none !important;
background: black !important;
margin-right: 0px;
}
* #abilities #character-experience input {
display: none;
}
* #abilities #character-experience input:checked ~ label {
background-image: url("assets/teeth/stresstooth-halfgrey.png");
}
* #abilities #character-experience input:checked + label {
background-image: url("assets/teeth/stresstooth-red.png");
}
* #abilities .item-name {
width: 70px;
}
* #abilities .item-body {
width: auto;
}
* #abilities .item-description {
width: 200px;
}
* #harm-armor {
display: flex;
}
@ -211,49 +302,59 @@
* #harm-armor #character-health-clock *:nth-child(9) {
transform: rotate(270deg) skewY(180deg);
}
* #harm-armor #character-armor-uses {
display: flex;
flex-direction: column;
}
* #harm-armor #character-armor-uses div {
display: flex;
flex-direction: row;
justify-content: space-between;
}
* #attributes {
display: flex;
flex-direction: column;
}
* #attributes .stripe {
background-color: black;
color: white;
font-size: 17px;
padding-left: 5px;
}
* #attributes .attributes-exp {
position: relative;
margin-bottom: 10px;
}
* #attributes .attributes-exp .stripe-tooth-body {
display: flex;
/* Hide the browser's default checkbox */
position: absolute;
top: 0px;
right: 0px;
}
* #attributes .attributes-exp label {
height: 50px;
width: 17px;
* #attributes .attributes-exp .stripe-tooth-body label {
height: 30px;
width: 10px;
background-image: url("assets/teeth/xptooth-red.png");
background-repeat: no-repeat;
background-size: contain;
margin-right: 5px;
}
* #attributes .attributes-exp label:last-of-type {
* #attributes .attributes-exp .stripe-tooth-body label:last-of-type {
margin-right: 0px;
}
* #attributes .attributes-exp label[for$="-0"] {
* #attributes .attributes-exp .stripe-tooth-body label[for$="-0"] {
width: auto;
height: auto;
background-image: none !important;
background: black !important;
margin-right: 0px;
}
* #attributes .attributes-exp input {
* #attributes .attributes-exp .stripe-tooth-body input {
display: none;
}
* #attributes .attributes-exp input:checked ~ label {
* #attributes .attributes-exp .stripe-tooth-body input:checked ~ label {
background-image: url("assets/teeth/xptooth-white.png");
}
* #attributes .attributes-exp input:checked + label {
* #attributes .attributes-exp .stripe-tooth-body input:checked + label {
background-image: url("assets/teeth/xptooth-red.png");
}
* #attributes .attributes-exp {
border-top: 5px solid black;
}
* #attributes .attributes-container {
display: flex;
margin: 5px 0px;
@ -261,8 +362,8 @@
/* Hide the browser's default checkbox */
}
* #attributes .attributes-container label {
height: 20px;
width: 20px;
height: 15px;
width: 15px;
background-color: black;
vertical-align: middle;
border: 2px solid black;
@ -288,5 +389,72 @@
* #attributes .attributes-container * {
margin-right: 5px;
}
* .item {
justify-content: space-between;
}
* .item .item-body {
margin-bottom: 10px;
}
* .item .item-body * {
margin-right: 10px;
}
* .item .item-body .item-description {
font-style: italic;
text-align: justify;
}
* .item div {
flex-grow: 2;
}
* .item .item-control {
flex-grow: 1;
}
* .item .item-body,
* .item .item-class-label {
width: 100px;
}
* #name,
* #alias {
margin-bottom: 10px;
}
* .profile-img {
margin: 0px 30px;
}
* .coins {
display: flex;
/* Hide the browser's default checkbox */
flex-wrap: wrap;
}
* .coins label {
height: 15px;
width: 15px;
background-color: grey;
vertical-align: middle;
border: 1px solid black;
}
* .coins label[for$="-0"] {
margin-right: 0px;
}
* .coins input {
display: none;
}
* .coins input:checked ~ label {
background-color: white;
}
* .coins input:checked + label {
background-color: grey;
}
* .coins label {
margin-right: 3px;
margin-bottom: 3px;
}
* .coins label[for$="0"] {
border-width: 2px;
}
* .coins.coins-hands {
width: 36px;
}
* .coins.coins-stashed {
width: 190px;
}
/*# sourceMappingURL=style.css.map */

View file

@ -42,6 +42,20 @@
"system": "blades-in-the-dark",
"path": "./packs/backgrounds.db",
"entity": "Item"
},
{
"name": "Items",
"label": "Items",
"system": "blades-in-the-dark",
"path": "./packs/items.db",
"entity": "Item"
},
{
"name": "Abilities",
"label": "Abilities",
"system": "blades-in-the-dark",
"path": "./packs/abilities.db",
"entity": "Item"
}
]
}

View file

@ -10,6 +10,7 @@
"coins": [0],
"coins_stashed": [0],
"special_abilities": [],
"loadout": 0,
"harm": {
"light": {
"one": "",
@ -108,13 +109,18 @@
},
"Item": {
"types": ["item", "class", "ability", "heritage", "background", "vice"],
"templates": {
"default": {
"description": ""
}
},
"item": {
"templates": ["default"],
"class_restriction": "",
"load": 0,
"description": ""
"load": 0
},
"class": {
"description": "",
"templates": ["default"],
"base_skills": {
"hunt": [0],
"study": [0],
@ -132,17 +138,18 @@
"class_items": []
},
"ability": {
"templates": ["default"],
"class": "",
"description": ""
"price": 1
},
"heritage": {
"description": ""
"templates": ["default"]
},
"background": {
"description": ""
"templates": ["default"]
},
"vice": {
"description": ""
"templates": ["default"]
}
}
}

View file

@ -1,77 +1,85 @@
<form class="{{cssClass}}" autocomplete="off">
<form class="{{cssClass}} actor-sheet" autocomplete="off">
<div id="name-alias" class="section">
<div>
<div>
<div class="grow-two">
<div id="name">
<label for="character-name">Name</label>
<input type="text" id="character-name" name="name" value="{{actor.name}}">
</div>
<div class="section">
<div id="character-traits" class="flex-column">
{{#each actor.items as |item id|}}
{{#eq item.type "heritage"}}
<div class="item flexrow" data-item-id="{{item._id}}">
<div class="item-body">
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Heritage</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<h4 class="item-name">{{item.name}}</h4>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</div>
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "background"}}
<div class="item flexrow" data-item-id="{{item._id}}">
<div class="item-body">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<h4 class="item-name">{{item.name}}</h4>
{{#eq item.type "background"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Background</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "vice"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Vice</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "class"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-class-label">Class</div>
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
</div>
<div>
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
</div>
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" height="100" width="100"/>
<div>
<div>
<div class="grow-two">
<div id="alias">
<label for="character-alias">Alias</label>
<input type="text" id="character-alias" name="data.alias" value="{{data.alias}}">
</div>
<div class="section">
{{#each actor.items as |item id|}}
{{#eq item.type "vice"}}
<div class="item flexrow" data-item-id="{{item._id}}">
<div class="item-body">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<h4 class="item-name">{{item.name}}</h4>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
{{#each actor.items as |item id|}}
{{#eq item.type "class"}}
<div class="item flexrow" data-item-id="{{item._id}}">
<div class="item-body">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<h4 class="item-name">{{item.name}}</h4>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
{{> "systems/blades-in-the-dark/templates/parts/coins.html"}}
</div>
</div>
{{!-- Experience --}}
<div class="section experience">
</div>
{{!-- Stress and Trauma --}}
<div id="stress-trauma" class="section">
<div id="character-stress">
@ -229,21 +237,75 @@
</div>
{{!-- Attributes --}}
{{> "systems/blades-in-the-dark/templates/parts/attributes.html"}}
<div class="section">
{{!-- Owned Items Tab --}}
<!-- <div class="tab items" data-group="primary" data-tab="items"> -->
<ol class="items-list">
{{#each actor.items as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-body">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<h4 class="item-name">{{item.name}}</h4>
<div class="flex-vertical grow-two">
<div id="abilities" class="flex-vertical">
<div class="label-stripe">
<p>Abilities</p>
<div id="character-experience">
{{#multiboxes data.experience}}
<input type="radio" id="character-experience-1" name="data.experience" value="1" dtype="Radio">
<label for="character-experience-1"></label>
<input type="radio" id="character-experience-2" name="data.experience" value="2" dtype="Radio">
<label for="character-experience-2"></label>
<input type="radio" id="character-experience-3" name="data.experience" value="3" dtype="Radio">
<label for="character-experience-3"></label>
<input type="radio" id="character-experience-4" name="data.experience" value="4" dtype="Radio">
<label for="character-experience-4"></label>
<input type="radio" id="character-experience-5" name="data.experience" value="5" dtype="Radio">
<label for="character-experience-5"></label>
<input type="radio" id="character-experience-6" name="data.experience" value="6" dtype="Radio">
<label for="character-experience-6"></label>
<input type="radio" id="character-experience-7" name="data.experience" value="7" dtype="Radio">
<label for="character-experience-7"></label>
<input type="radio" id="character-experience-8" name="data.experience" value="8" dtype="Radio">
<label for="character-experience-8"></label>
<input type="radio" id="character-experience-9" name="data.experience" value="9" dtype="Radio">
<label for="character-experience-9"></label>
{{/multiboxes}}
</div>
</div>
<div id="abilities-list">
{{#each actor.items as |item id|}}
{{#eq item.type "ability"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<b><div class="item-name">{{item.name}}</div></b>
<div class="item-description">{{item.data.description}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
<!-- </div> -->
{{/eq}}
{{/each}}
</div>
</div>
{{!-- Owned Items Tab --}}
<div id="loadout" class="flex-vertical">
<div class="label-stripe">
<p>Loadout: {{data.loadout}}</p>
</div>
<div>
{{#each actor.items as |item id|}}
{{#eq item.type "item"}}
<div class="item flex-horizontal" data-item-id="{{item._id}}">
<div class="item-body flex-horizontal">
<img src="{{item.img}}" title="{{item.name}}" width="24" height="24"/>
<div class="item-name">{{item.name}}</div>
<div class="item-description">{{item.data.description}}</div>
</div>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
{{/eq}}
{{/each}}
</div>
</div>
</div>
{{!-- Attributes --}}
{{> "systems/blades-in-the-dark/templates/parts/attributes.html"}}
</div>
</form>

View file

@ -0,0 +1,15 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<textarea name="data.description">{{data.description}}</textarea>
</section>
<input id="ability-price" type="text" name="data.price" value="{{data.price}}" placeholder="Ability Price">
<input id="ability-class" type="text" name="data.class" value="{{data.class}}" placeholder="Ability Class">
</form>

View file

@ -6,12 +6,7 @@
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
<textarea name="data.description">{{data.description}}</textarea>
</section>
</form>

View file

@ -8,10 +8,8 @@
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Description Tab --}}
<div class="tab" data-group="primary" data-tab="description">
{{editor content=data.description target="data.description" button=true owner=owner editable=editable}}
</div>
<textarea name="data.description">{{data.description}}</textarea>
<input id="item-load" type="text" name="data.load" value="{{data.load}}">
<input id="item-class-restriction" type="text" name="data.class_restriction" value="{{data.class_restriction}}">
</section>
</form>

View file

@ -0,0 +1,13 @@
<form class="{{cssClass}}" autocomplete="off">
<header class="sheet-header">
<img class="profile-img" src="{{item.img}}" data-edit="img" title="{{item.name}}"/>
<div class="header-fields">
<h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeholder="Name"/></h1>
</div>
</header>
{{!-- Sheet Body --}}
<section class="sheet-body">
<textarea name="data.description">{{data.description}}</textarea>
</section>
</form>

View file

@ -1,23 +1,26 @@
<div id="attributes" class="section">
<div id="attributes-insight">
<div id="attributes" class="grow-one">
<div id="attributes-insight" class="attribute">
<div id="attributes-insight-title" class="attributes-exp">
{{#multiboxes data.attributes.insight.exp}}
<input type="radio" id="insight-exp-0" name="data.attributes.insight.exp" value="0" checked="checked">
<label class="black-label" for="insight-exp-0">Insight</label>
<input type="radio" id="insight-exp-1" name="data.attributes.insight.exp" value="1">
<label for="insight-exp-1"></label>
<input type="radio" id="insight-exp-2" name="data.attributes.insight.exp" value="2">
<label for="insight-exp-2"></label>
<input type="radio" id="insight-exp-3" name="data.attributes.insight.exp" value="3">
<label for="insight-exp-3"></label>
<input type="radio" id="insight-exp-4" name="data.attributes.insight.exp" value="4">
<label for="insight-exp-4"></label>
<input type="radio" id="insight-exp-5" name="data.attributes.insight.exp" value="5">
<label for="insight-exp-5"></label>
<input type="radio" id="insight-exp-6" name="data.attributes.insight.exp" value="6">
<label for="insight-exp-6"></label>
{{/multiboxes}}
<div class="stripe">
<label for="insight-exp-0">Insight</label>
</div>
<div class="stripe-tooth-body">
{{#multiboxes data.attributes.insight.exp}}
<input type="radio" id="insight-exp-0" name="data.attributes.insight.exp" value="0" checked="checked">
<input type="radio" id="insight-exp-1" name="data.attributes.insight.exp" value="1">
<label for="insight-exp-1"></label>
<input type="radio" id="insight-exp-2" name="data.attributes.insight.exp" value="2">
<label for="insight-exp-2"></label>
<input type="radio" id="insight-exp-3" name="data.attributes.insight.exp" value="3">
<label for="insight-exp-3"></label>
<input type="radio" id="insight-exp-4" name="data.attributes.insight.exp" value="4">
<label for="insight-exp-4"></label>
<input type="radio" id="insight-exp-5" name="data.attributes.insight.exp" value="5">
<label for="insight-exp-5"></label>
<input type="radio" id="insight-exp-6" name="data.attributes.insight.exp" value="6">
<label for="insight-exp-6"></label>
{{/multiboxes}}
</div>
</div>
{{!-- Skills --}}
@ -50,7 +53,7 @@
<label for="attributes-study-3"></label>
<input type="radio" id="attributes-study-4" name="data.attributes.insight.skills.study" value="4">
<label for="attributes-study-4"></label>
<div class="attribute-skill-label">study</div>
<div class="attribute-skill-label">Study</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -66,7 +69,7 @@
<label for="attributes-survey-3"></label>
<input type="radio" id="attributes-survey-4" name="data.attributes.insight.skills.survey" value="4">
<label for="attributes-survey-4"></label>
<div class="attribute-skill-label">survey</div>
<div class="attribute-skill-label">Survey</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -82,30 +85,34 @@
<label for="attributes-tinker-3"></label>
<input type="radio" id="attributes-tinker-4" name="data.attributes.insight.skills.tinker" value="4">
<label for="attributes-tinker-4"></label>
<div class="attribute-skill-label">tinker</div>
<div class="attribute-skill-label">Tinker</div>
{{/multiboxes}}
</div>
</div>
<div id="attributes-prowess">
<div id="attributes-prowess" class="attribute">
<div id="attributes-prowess-title" class="attributes-exp">
{{#multiboxes data.attributes.prowess.exp}}
<input type="radio" id="prowess-exp-0" name="data.attributes.prowess.exp" value="0" checked="checked">
<label class="black-label" for="prowess-exp-0">prowess</label>
<input type="radio" id="prowess-exp-1" name="data.attributes.prowess.exp" value="1">
<label for="prowess-exp-1"></label>
<input type="radio" id="prowess-exp-2" name="data.attributes.prowess.exp" value="2">
<label for="prowess-exp-2"></label>
<input type="radio" id="prowess-exp-3" name="data.attributes.prowess.exp" value="3">
<label for="prowess-exp-3"></label>
<input type="radio" id="prowess-exp-4" name="data.attributes.prowess.exp" value="4">
<label for="prowess-exp-4"></label>
<input type="radio" id="prowess-exp-5" name="data.attributes.prowess.exp" value="5">
<label for="prowess-exp-5"></label>
<input type="radio" id="prowess-exp-6" name="data.attributes.prowess.exp" value="6">
<label for="prowess-exp-6"></label>
{{/multiboxes}}
<div class="stripe">
<label for="prowess-exp-0">Prowess</label>
</div>
<div class="stripe-tooth-body">
{{#multiboxes data.attributes.prowess.exp}}
<input type="radio" id="prowess-exp-0" name="data.attributes.prowess.exp" value="0" checked="checked">
<input type="radio" id="prowess-exp-1" name="data.attributes.prowess.exp" value="1">
<label for="prowess-exp-1"></label>
<input type="radio" id="prowess-exp-2" name="data.attributes.prowess.exp" value="2">
<label for="prowess-exp-2"></label>
<input type="radio" id="prowess-exp-3" name="data.attributes.prowess.exp" value="3">
<label for="prowess-exp-3"></label>
<input type="radio" id="prowess-exp-4" name="data.attributes.prowess.exp" value="4">
<label for="prowess-exp-4"></label>
<input type="radio" id="prowess-exp-5" name="data.attributes.prowess.exp" value="5">
<label for="prowess-exp-5"></label>
<input type="radio" id="prowess-exp-6" name="data.attributes.prowess.exp" value="6">
<label for="prowess-exp-6"></label>
{{/multiboxes}}
</div>
</div>
{{!-- Skills --}}
@ -122,7 +129,7 @@
<label for="attributes-finesse-3"></label>
<input type="radio" id="attributes-finesse-4" name="data.attributes.prowess.skills.finesse" value="4">
<label for="attributes-finesse-4"></label>
<div class="attribute-skill-label">finesse</div>
<div class="attribute-skill-label">Finesse</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -138,7 +145,7 @@
<label for="attributes-prowl-3"></label>
<input type="radio" id="attributes-prowl-4" name="data.attributes.prowess.skills.prowl" value="4">
<label for="attributes-prowl-4"></label>
<div class="attribute-skill-label">prowl</div>
<div class="attribute-skill-label">Prowl</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -154,7 +161,7 @@
<label for="attributes-skirmish-3"></label>
<input type="radio" id="attributes-skirmish-4" name="data.attributes.prowess.skills.skirmish" value="4">
<label for="attributes-skirmish-4"></label>
<div class="attribute-skill-label">skirmish</div>
<div class="attribute-skill-label">Skirmish</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -170,33 +177,37 @@
<label for="attributes-wreck-3"></label>
<input type="radio" id="attributes-wreck-4" name="data.attributes.prowess.skills.wreck" value="4">
<label for="attributes-wreck-4"></label>
<div class="attribute-skill-label">wreck</div>
<div class="attribute-skill-label">Wreck</div>
{{/multiboxes}}
</div>
</div>
<div id="attributes-resolve">
<div id="attributes-resolve" class="attribute">
<div id="attributes-resolve-title" class="attributes-exp">
{{#multiboxes data.attributes.resolve.exp}}
<input type="radio" id="resolve-exp-0" name="data.attributes.resolve.exp" value="0" checked="checked">
<label class="black-label" for="resolve-exp-0">resolve</label>
<input type="radio" id="resolve-exp-1" name="data.attributes.resolve.exp" value="1">
<label for="resolve-exp-1"></label>
<input type="radio" id="resolve-exp-2" name="data.attributes.resolve.exp" value="2">
<label for="resolve-exp-2"></label>
<input type="radio" id="resolve-exp-3" name="data.attributes.resolve.exp" value="3">
<label for="resolve-exp-3"></label>
<input type="radio" id="resolve-exp-4" name="data.attributes.resolve.exp" value="4">
<label for="resolve-exp-4"></label>
<input type="radio" id="resolve-exp-5" name="data.attributes.resolve.exp" value="5">
<label for="resolve-exp-5"></label>
<input type="radio" id="resolve-exp-6" name="data.attributes.resolve.exp" value="6">
<label for="resolve-exp-6"></label>
{{/multiboxes}}
<div class="stripe">
<label for="resolve-exp-0">Resolve</label>
</div>
<div class="stripe-tooth-body">
{{#multiboxes data.attributes.resolve.exp}}
<input type="radio" id="resolve-exp-0" name="data.attributes.resolve.exp" value="0" checked="checked">
<input type="radio" id="resolve-exp-1" name="data.attributes.resolve.exp" value="1">
<label for="resolve-exp-1"></label>
<input type="radio" id="resolve-exp-2" name="data.attributes.resolve.exp" value="2">
<label for="resolve-exp-2"></label>
<input type="radio" id="resolve-exp-3" name="data.attributes.resolve.exp" value="3">
<label for="resolve-exp-3"></label>
<input type="radio" id="resolve-exp-4" name="data.attributes.resolve.exp" value="4">
<label for="resolve-exp-4"></label>
<input type="radio" id="resolve-exp-5" name="data.attributes.resolve.exp" value="5">
<label for="resolve-exp-5"></label>
<input type="radio" id="resolve-exp-6" name="data.attributes.resolve.exp" value="6">
<label for="resolve-exp-6"></label>
{{/multiboxes}}
</div>
</div>
{{!-- Skills --}}
<div class="attributes-container">
{{#multiboxes data.attributes.resolve.skills.attune}}
@ -211,7 +222,7 @@
<label for="attributes-attune-3"></label>
<input type="radio" id="attributes-attune-4" name="data.attributes.resolve.skills.attune" value="4">
<label for="attributes-attune-4"></label>
<div class="attribute-skill-label">attune</div>
<div class="attribute-skill-label">Attune</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -227,7 +238,7 @@
<label for="attributes-command-3"></label>
<input type="radio" id="attributes-command-4" name="data.attributes.resolve.skills.command" value="4">
<label for="attributes-command-4"></label>
<div class="attribute-skill-label">command</div>
<div class="attribute-skill-label">Command</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -243,7 +254,7 @@
<label for="attributes-consort-3"></label>
<input type="radio" id="attributes-consort-4" name="data.attributes.resolve.skills.consort" value="4">
<label for="attributes-consort-4"></label>
<div class="attribute-skill-label">consort</div>
<div class="attribute-skill-label">Consort</div>
{{/multiboxes}}
</div>
<div class="attributes-container">
@ -259,10 +270,9 @@
<label for="attributes-sway-3"></label>
<input type="radio" id="attributes-sway-4" name="data.attributes.resolve.skills.sway" value="4">
<label for="attributes-sway-4"></label>
<div class="attribute-skill-label">sway</div>
<div class="attribute-skill-label">Sway</div>
{{/multiboxes}}
</div>
</div>
</div>
</div>
</div>

118
templates/parts/coins.html Normal file
View file

@ -0,0 +1,118 @@
<div id="coins" class="flex-horizontal">
<div id="coins-hands">
<div class="stripe">
<label for="coins-hands-0">Coin</label>
</div>
<div class="coins coins-hands">
{{#multiboxes data.coins}}
<input type="radio" id="coins-hands-0" name="data.coins" value="0" checked="checked">
<input type="radio" id="coins-hands-1" name="data.coins" value="1">
<label for="coins-hands-1"></label>
<input type="radio" id="coins-hands-2" name="data.coins" value="2">
<label for="coins-hands-2"></label>
<input type="radio" id="coins-hands-3" name="data.coins" value="3">
<label for="coins-hands-3"></label>
<input type="radio" id="coins-hands-4" name="data.coins" value="4">
<label for="coins-hands-4"></label>
{{/multiboxes}}
</div>
</div>
<div id="coins-stashed">
<div class="stripe">
<label for="coins-stashed-0">Stash</label>
</div>
<div class="coins coins-stashed">
{{#multiboxes data.coins_stashed}}
<input type="radio" id="coins-stashed-0" name="data.coins_stashed" value="0" checked="checked">
<input type="radio" id="coins-stashed-1" name="data.coins_stashed" value="1">
<label for="coins-stashed-1"></label>
<input type="radio" id="coins-stashed-2" name="data.coins_stashed" value="2">
<label for="coins-stashed-2"></label>
<input type="radio" id="coins-stashed-3" name="data.coins_stashed" value="3">
<label for="coins-stashed-3"></label>
<input type="radio" id="coins-stashed-4" name="data.coins_stashed" value="4">
<label for="coins-stashed-4"></label>
<input type="radio" id="coins-stashed-5" name="data.coins_stashed" value="5">
<label for="coins-stashed-5"></label>
<input type="radio" id="coins-stashed-6" name="data.coins_stashed" value="6">
<label for="coins-stashed-6"></label>
<input type="radio" id="coins-stashed-7" name="data.coins_stashed" value="7">
<label for="coins-stashed-7"></label>
<input type="radio" id="coins-stashed-8" name="data.coins_stashed" value="8">
<label for="coins-stashed-8"></label>
<input type="radio" id="coins-stashed-9" name="data.coins_stashed" value="9">
<label for="coins-stashed-9"></label>
<input type="radio" id="coins-stashed-10" name="data.coins_stashed" value="10">
<label for="coins-stashed-10"></label>
<input type="radio" id="coins-stashed-11" name="data.coins_stashed" value="11">
<label for="coins-stashed-11"></label>
<input type="radio" id="coins-stashed-12" name="data.coins_stashed" value="12">
<label for="coins-stashed-12"></label>
<input type="radio" id="coins-stashed-13" name="data.coins_stashed" value="13">
<label for="coins-stashed-13"></label>
<input type="radio" id="coins-stashed-14" name="data.coins_stashed" value="14">
<label for="coins-stashed-14"></label>
<input type="radio" id="coins-stashed-15" name="data.coins_stashed" value="15">
<label for="coins-stashed-15"></label>
<input type="radio" id="coins-stashed-16" name="data.coins_stashed" value="16">
<label for="coins-stashed-16"></label>
<input type="radio" id="coins-stashed-17" name="data.coins_stashed" value="17">
<label for="coins-stashed-17"></label>
<input type="radio" id="coins-stashed-18" name="data.coins_stashed" value="18">
<label for="coins-stashed-18"></label>
<input type="radio" id="coins-stashed-19" name="data.coins_stashed" value="19">
<label for="coins-stashed-19"></label>
<input type="radio" id="coins-stashed-20" name="data.coins_stashed" value="20">
<label for="coins-stashed-20"></label>
<input type="radio" id="coins-stashed-21" name="data.coins_stashed" value="21">
<label for="coins-stashed-21"></label>
<input type="radio" id="coins-stashed-22" name="data.coins_stashed" value="22">
<label for="coins-stashed-22"></label>
<input type="radio" id="coins-stashed-23" name="data.coins_stashed" value="23">
<label for="coins-stashed-23"></label>
<input type="radio" id="coins-stashed-24" name="data.coins_stashed" value="24">
<label for="coins-stashed-24"></label>
<input type="radio" id="coins-stashed-25" name="data.coins_stashed" value="25">
<label for="coins-stashed-25"></label>
<input type="radio" id="coins-stashed-26" name="data.coins_stashed" value="26">
<label for="coins-stashed-26"></label>
<input type="radio" id="coins-stashed-27" name="data.coins_stashed" value="27">
<label for="coins-stashed-27"></label>
<input type="radio" id="coins-stashed-28" name="data.coins_stashed" value="28">
<label for="coins-stashed-28"></label>
<input type="radio" id="coins-stashed-29" name="data.coins_stashed" value="29">
<label for="coins-stashed-29"></label>
<input type="radio" id="coins-stashed-30" name="data.coins_stashed" value="30">
<label for="coins-stashed-30"></label>
<input type="radio" id="coins-stashed-31" name="data.coins_stashed" value="31">
<label for="coins-stashed-31"></label>
<input type="radio" id="coins-stashed-32" name="data.coins_stashed" value="32">
<label for="coins-stashed-32"></label>
<input type="radio" id="coins-stashed-33" name="data.coins_stashed" value="33">
<label for="coins-stashed-33"></label>
<input type="radio" id="coins-stashed-34" name="data.coins_stashed" value="34">
<label for="coins-stashed-34"></label>
<input type="radio" id="coins-stashed-35" name="data.coins_stashed" value="35">
<label for="coins-stashed-35"></label>
<input type="radio" id="coins-stashed-36" name="data.coins_stashed" value="36">
<label for="coins-stashed-36"></label>
<input type="radio" id="coins-stashed-37" name="data.coins_stashed" value="37">
<label for="coins-stashed-37"></label>
<input type="radio" id="coins-stashed-38" name="data.coins_stashed" value="38">
<label for="coins-stashed-38"></label>
<input type="radio" id="coins-stashed-39" name="data.coins_stashed" value="39">
<label for="coins-stashed-39"></label>
<input type="radio" id="coins-stashed-40" name="data.coins_stashed" value="40">
<label for="coins-stashed-40"></label>
{{/multiboxes}}
</div>
</div>
</div>