diff --git a/fonts/AppleGaramond.ttf b/fonts/AppleGaramond.ttf new file mode 100644 index 0000000..9681b1f Binary files /dev/null and b/fonts/AppleGaramond.ttf differ diff --git a/img/icons/.directory b/img/icons/.directory new file mode 100644 index 0000000..de7028d --- /dev/null +++ b/img/icons/.directory @@ -0,0 +1,7 @@ +[Dolphin] +SortOrder=1 +SortRole=modificationtime +Timestamp=2021,1,19,23,13,52 +Version=4 +ViewMode=1 +VisibleRoles=Details_text,Details_size,Details_modificationtime,Details_creationtime,CustomizedDetails diff --git a/img/icons/athletics.svg b/img/icons/athletics.svg new file mode 100644 index 0000000..afe875f --- /dev/null +++ b/img/icons/athletics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/awareness.svg b/img/icons/awareness.svg new file mode 100644 index 0000000..f168067 --- /dev/null +++ b/img/icons/awareness.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/biosci.svg b/img/icons/biosci.svg new file mode 100644 index 0000000..0416e06 --- /dev/null +++ b/img/icons/biosci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/bleeding.svg b/img/icons/bleeding.svg new file mode 100644 index 0000000..b75e827 --- /dev/null +++ b/img/icons/bleeding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/bolstered.svg b/img/icons/bolstered.svg new file mode 100644 index 0000000..4baf190 --- /dev/null +++ b/img/icons/bolstered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/bureaucrat.svg b/img/icons/bureaucrat.svg new file mode 100644 index 0000000..01c6f78 --- /dev/null +++ b/img/icons/bureaucrat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/compops.svg b/img/icons/compops.svg new file mode 100644 index 0000000..be9b9ac --- /dev/null +++ b/img/icons/compops.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/concealment.svg b/img/icons/concealment.svg new file mode 100644 index 0000000..b28de74 --- /dev/null +++ b/img/icons/concealment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/conspiracy.svg b/img/icons/conspiracy.svg new file mode 100644 index 0000000..8782d14 --- /dev/null +++ b/img/icons/conspiracy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/cover.svg b/img/icons/cover.svg new file mode 100644 index 0000000..d5fda4e --- /dev/null +++ b/img/icons/cover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/crafting.svg b/img/icons/crafting.svg new file mode 100644 index 0000000..3b178a6 --- /dev/null +++ b/img/icons/crafting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/dazed.svg b/img/icons/dazed.svg new file mode 100644 index 0000000..7fc79c9 --- /dev/null +++ b/img/icons/dazed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/deception.svg b/img/icons/deception.svg new file mode 100644 index 0000000..122d859 --- /dev/null +++ b/img/icons/deception.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/desire.svg b/img/icons/desire.svg new file mode 100644 index 0000000..a15169d --- /dev/null +++ b/img/icons/desire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/empathy.svg b/img/icons/empathy.svg new file mode 100644 index 0000000..c65b325 --- /dev/null +++ b/img/icons/empathy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/encumbered.svg b/img/icons/encumbered.svg new file mode 100644 index 0000000..c5b7056 --- /dev/null +++ b/img/icons/encumbered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/engineer.svg b/img/icons/engineer.svg new file mode 100644 index 0000000..1839111 --- /dev/null +++ b/img/icons/engineer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/fatigue.svg b/img/icons/fatigue.svg new file mode 100644 index 0000000..01b565b --- /dev/null +++ b/img/icons/fatigue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/fear.svg b/img/icons/fear.svg new file mode 100644 index 0000000..87bc999 --- /dev/null +++ b/img/icons/fear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/fixated.svg b/img/icons/fixated.svg new file mode 100644 index 0000000..9e44cb4 --- /dev/null +++ b/img/icons/fixated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/geneline.svg b/img/icons/geneline.svg new file mode 100644 index 0000000..83bd54a --- /dev/null +++ b/img/icons/geneline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/guns.svg b/img/icons/guns.svg new file mode 100644 index 0000000..1a8e021 --- /dev/null +++ b/img/icons/guns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/investigate.svg b/img/icons/investigate.svg new file mode 100644 index 0000000..0581094 --- /dev/null +++ b/img/icons/investigate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/libarts.svg b/img/icons/libarts.svg new file mode 100644 index 0000000..dab3afd --- /dev/null +++ b/img/icons/libarts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/lingering-injury.svg b/img/icons/lingering-injury.svg new file mode 100644 index 0000000..67eaa70 --- /dev/null +++ b/img/icons/lingering-injury.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/mechanic.svg b/img/icons/mechanic.svg new file mode 100644 index 0000000..7a0d6fc --- /dev/null +++ b/img/icons/mechanic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/medic.svg b/img/icons/medic.svg new file mode 100644 index 0000000..8823125 --- /dev/null +++ b/img/icons/medic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/melee.svg b/img/icons/melee.svg new file mode 100644 index 0000000..7340aa2 --- /dev/null +++ b/img/icons/melee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/naturalist.svg b/img/icons/naturalist.svg new file mode 100644 index 0000000..79b79ee --- /dev/null +++ b/img/icons/naturalist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/ordnance.svg b/img/icons/ordnance.svg new file mode 100644 index 0000000..5ab06ce --- /dev/null +++ b/img/icons/ordnance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/persuade.svg b/img/icons/persuade.svg new file mode 100644 index 0000000..96fab48 --- /dev/null +++ b/img/icons/persuade.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/physci.svg b/img/icons/physci.svg new file mode 100644 index 0000000..0941f58 --- /dev/null +++ b/img/icons/physci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/program.svg b/img/icons/program.svg new file mode 100644 index 0000000..ec6f5c9 --- /dev/null +++ b/img/icons/program.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/socialize.svg b/img/icons/socialize.svg new file mode 100644 index 0000000..0121713 --- /dev/null +++ b/img/icons/socialize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/spin.svg b/img/icons/spin.svg new file mode 100644 index 0000000..d390f4e --- /dev/null +++ b/img/icons/spin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/stealth.svg b/img/icons/stealth.svg new file mode 100644 index 0000000..d5fda4e --- /dev/null +++ b/img/icons/stealth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/stun.svg b/img/icons/stun.svg new file mode 100644 index 0000000..c7c0f10 --- /dev/null +++ b/img/icons/stun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/subculture.svg b/img/icons/subculture.svg new file mode 100644 index 0000000..92fa452 --- /dev/null +++ b/img/icons/subculture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/thievery.svg b/img/icons/thievery.svg new file mode 100644 index 0000000..b38334b --- /dev/null +++ b/img/icons/thievery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/icons/vehicle.svg b/img/icons/vehicle.svg new file mode 100644 index 0000000..b526a2e --- /dev/null +++ b/img/icons/vehicle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/scene/ship_fleet.webp b/img/scene/ship_fleet.webp new file mode 100644 index 0000000..096065e Binary files /dev/null and b/img/scene/ship_fleet.webp differ diff --git a/module/actor-sheet.js b/module/actor-sheet.js index e2651dd..81f3aeb 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -26,6 +26,15 @@ export class SoSActorSheet extends ActorSheet { let data = super.getData(); data.data.edgecard = this.actor.getEdgesCard(); + data.data.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.subculture = this.actor.data.items.find( item => item.type == 'subculture'); + data.data.geneline = this.actor.data.items.find( item => item.type == 'geneline'); data.data.editStatSkill = this.options.editStatSkill; console.log("stats", data); //data.stats = duplicate(this.actor.stats); @@ -74,6 +83,12 @@ export class SoSActorSheet extends ActorSheet { this.options.editStatSkill = !this.options.editStatSkill; this.render(true); }); + html.find('.item-link a').click((event) => { + const itemId = $(event.currentTarget).data("item-id"); + const item = this.actor.getOwnedItem(itemId); + item.sheet.render(true); + }); + } /* -------------------------------------------- */ diff --git a/module/actor.js b/module/actor.js index f6b2db4..ebbf5b2 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1,5 +1,6 @@ import { SoSCardDeck } from "./sos-card-deck.js"; import { SoSUtility } from "./sos-utility.js"; +import { SoSFlipDialog } from "./sos-flip-dialog.js"; /* -------------------------------------------- */ @@ -57,7 +58,7 @@ export class SoSActor extends Actor { /* -------------------------------------------- */ resetDeck( ) { this.cardDeck.shuffleDeck(); - this.cardDeck.drawEdge(); + this.cardDeck.drawEdge( this.data.data.scores.edge.value ); this.saveDeck(); } @@ -134,9 +135,19 @@ export class SoSActor extends Actor { } /* -------------------------------------------- */ - rollStat( statKey ) { - console.log("STAT", this); - let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) ); + async rollStat( statKey ) { + + let flipData = { + mode: 'stat', + stat: duplicate(this.data.data.stats[statKey]), + actor: this, + modifierList: SoSUtility.fillRange(-10, +10) + } + let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html', flipData); + new SoSFlipDialog(flipData, html).render(true); + + //console.log("STAT", this); + //let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) ); } } diff --git a/module/sos-card-deck.js b/module/sos-card-deck.js index f54998c..1cc5d45 100644 --- a/module/sos-card-deck.js +++ b/module/sos-card-deck.js @@ -53,27 +53,53 @@ export class SoSCardDeck { } /* -------------------------------------------- */ - drawEdge() { - this.data.cardEdge.push( this.data.deck.pop() ); - this.data.cardEdge.push( this.data.deck.pop() ); - - console.log("DRAW EDGE", this.data.cardEdge); + drawEdge( edgeNumber ) { + for (let i=0; i"; + } + /* -------------------------------------------- */ + getEdgeHTML( ) { + let html = ""; + for (let edge of this.data.cardEdge) { + html += `` + } + + return html; + } + + /* -------------------------------------------- */ + getDiscardTopHTML( ) { + let html = ""; + console.log( "DISCARD: ", this.data.discard ); + if ( this.data.discard.length > 0) { + let card = this.data.discard[this.data.discard.length-1]; + html = ``; + } + return html; + } } \ No newline at end of file diff --git a/module/sos-flip-dialog.js b/module/sos-flip-dialog.js new file mode 100644 index 0000000..9f56616 --- /dev/null +++ b/module/sos-flip-dialog.js @@ -0,0 +1,63 @@ + +export class SoSFlipDialog extends Dialog { + + /* -------------------------------------------- */ + constructor(flipData, html) { + let conf = { + title: 'Flip Dialog', + content: html, + buttons: { + 'flip-close': { label: 'Flip and Close', callback: html => this.onFlipClose() } + }, + default: 'flip' + }; + super(conf, { classes: ["sosdialog"], width: 800, height: 800 }); + + this.flipData = flipData; + } + + /* -------------------------------------------- */ + onFlipClose( ) { + + } + + /* -------------------------------------------- */ + async updateFlip( flipData ) { + console.log("UPDATE !!!", flipData); + $('.view-deck').remove(); + $("#view-deck").append(await flipData.actor.cardDeck.getDeckHTML()); + + $('.view-discard').remove(); + $("#view-discard").append(await flipData.actor.cardDeck.getDiscardTopHTML()); + + $('.view-edge').remove(); + $("#view-edge").append(await flipData.actor.cardDeck.getEdgeHTML()); + } + + /* -------------------------------------------- */ + activateListeners(html) { + super.activateListeners(html); + + this.bringToTop(); + + var dialog = this; + + function onLoad() { + let flipData = dialog.flipData; + //RdDItemSort.setCoutReveReel(rollData.selectedSort); + //$("#diffLibre").val(Misc.toInt(rollData.diffLibre)); + //$("#diffConditions").val(Misc.toInt(rollData.diffConditions)); + dialog.updateFlip(flipData); + } + + // Setup everything onload + $(function () { onLoad(); }); + + html.find('#do-flip-deck').click((event) => { + dialog.flipData.actor.cardDeck.doFlipFromDeck(); + dialog.updateFlip( dialog.flipData); + }); + + + } +} \ No newline at end of file diff --git a/module/sos-utility.js b/module/sos-utility.js index 417f8b2..d7fe0aa 100644 --- a/module/sos-utility.js +++ b/module/sos-utility.js @@ -8,9 +8,18 @@ export class SoSUtility { 'systems/foundryvtt-shadows-over-sol/templates/actor-sheet.html', 'systems/foundryvtt-shadows-over-sol/templates/editor-notes-gm.html', 'systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html', + 'systems/foundryvtt-shadows-over-sol/templates/stat-name-list.html', + 'systems/foundryvtt-shadows-over-sol/templates/item-sheet.html', - 'systems/foundryvtt-shadows-over-sol/templates/stat-name-list.html' + 'systems/foundryvtt-shadows-over-sol/templates/item-geneline-sheet.html', + 'systems/foundryvtt-shadows-over-sol/templates/item-subculture-sheet.html', + + 'systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html' ] - return loadTemplates(templatePaths); + return loadTemplates(templatePaths); + } + + static fillRange (start, end) { + return Array(end - start + 1).fill().map((item, index) => start + index); } } \ No newline at end of file diff --git a/packs/skills.db b/packs/skills.db new file mode 100644 index 0000000..4e90ac2 --- /dev/null +++ b/packs/skills.db @@ -0,0 +1,24 @@ +{"name":"Phy-Sci","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Phy-sci covers knowledge of the physical sciences—from physics and chemistry, to geology and meteorology. Use it to understand orbital mechanics, test new chemical compounds, carbon date archeological relics or recognize different strata of rock. It does not cover basic mathematics or ecology: for those, use the Lib-Arts or Bio-Sci skills.

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/physci.svg","effects":[],"_id":"0xlCQMyGIQJWPBM1"} +{"name":"Lib-Arts","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Lib-arts is a broad skill covering a character’s degree of education in the liberal arts and social sciences. It includes knowledge of history, geography, mathematics, the fine arts, economics and sociology. It does not cover applied cultural knowledge or artistic expression: for those, use Socialize or Crafts, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/libarts.svg","effects":[],"_id":"1aInzWMPrFMlEObG"} +{"name":"Guns","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The guns skill covers firing, maintaining and operating any number of personal firearms and other projectile weapons, from lasers and slug throwers to archaic bows and arrows. The skill does not cover thrown weapons—for that, use Athletics—nor does it cover artillery or ship-based mounted projectiles—for those, use Ordnance.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/guns.svg","effects":[],"_id":"3zsZyq0HBY5BaNKH"} +{"name":"Athletics","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The athletics skill covers any number of athletic activities—from climbing to jumping and from racing to tumbling. This skill includes both aerobic and anaerobic activities, as well as feats of strength—such as bending bars or power lifting—and throwing weapons in a threatening manner.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/athletics.svg","effects":[],"_id":"4IeZqapkj7KzF2Tp"} +{"name":"Bio-Sci","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

This skill covers knowledge of the biological sciences, from genetic engineering and genetics to physiological changes brought on by exposure to radiation or zero-G. This is the skill to use when diagnosing rare medical issues, understanding novel lifeforms or experimenting in laboratory conditions. It is not the skill to use for applied medicine or for field biology, such as recognizing local fauna. For those, use the Medic or Naturalist skills, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/biosci.svg","effects":[],"_id":"7yDUSYom17JLGCbx"} +{"name":"Engineer","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

This skill is used to understand, design and modify electronic hardware, machinery and other complex contraptions. Engineer is useful when rerouting power on a ship, making street modifications to firearms or designing a custom hab complex. It does not cover the design of software—use program for that—nor does it cover applied  maintenance and assembly—for that, use mechanic.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/engineer.svg","effects":[],"_id":"ACTRMXOf784REMqH"} +{"name":"Awareness","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Awareness is more than general perception; it is a skilled alertness regarding one’s surroundings. Awareness covers noticing someone is sneaking up on you. It also covers spotting someone in a crowd of people and noticing a strange smell when entering a hab. It does not include more ponderous activities like reading a person’s body language or investigating a murder; these are covered by Empathy and Investigation, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/awareness.svg","effects":[],"_id":"HIODXqFFUk7PQrsZ"} +{"name":"Ordnance","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The ordnance skill is used to plant and disarm bombs, mines and other explosives, as well as to operate heavy vehicular or stationary weaponry. Use it to fire a ship’s weapons, plant an explosive charge or call in aerial support. It does not cover personal firearms, nor does it cover throwing grenades; for those, use guns and athletics, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/ordnance.svg","effects":[],"_id":"HjtmNvNdyhnyqJ0U"} +{"name":"Stealth","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The stealth skill covers hiding and generally sneaking around. It includes any aspect of remaining hidden, from fitting into small hiding spaces to tailing people without them noticing and from setting ambushes to sneaking by guards. It does not include sleight of hand or shoplifting; for those, use the Deception or Thievery skills.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/stealth.svg","effects":[],"_id":"Mt1OJM2QkoDMtpxa"} +{"name":"Vehicles","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

This skill is used to operate any vehicle— whether in two or three dimensions—as well as to pilot a vac suit around with thrusters. It includes the operation of spaceships, boats, groundcars, mag-trains, helicopters and submarines. It does not include the design or maintenance of such vehicles; for those, use the Engineer or Mechanic skills, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/vehicle.svg","effects":[],"_id":"NIKML7x7Nk3lufVq"} +{"name":"Investigate","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Investigation is the art of looking into an unknown matter and trying to make sense of what is found, often by piecing together seemingly disparate clues. The investigate skill covers searching a particular area for clues, as well as other aspects of investigation—such as questioning witnesses, checking the right sites on the net and asking the right questions.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/investigate.svg","effects":[],"_id":"QfkDTRNSEl9Pxgwd"} +{"name":"Program","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The program skill is used to design, modify and create software. It is also used in computer hacking, cracking and attempting to get software to operate outside its normal design parameters. It does not cover understanding graphical user interfaces, searching the net, speed typing or basic software functionality; for those, use the Comp-Ops skill.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/program.svg","effects":[],"_id":"TEwQ9HA86Uckahbr"} +{"name":"Craft","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The crafts skill covers the creation of art, crafts and simple devices with few-to-no moving parts. It can be used to create a realistic 3D rendering of a specific person, carve a makeshift spear out of a plank of wood, cook a tasty meal or paint a masterpiece. It does not cover the creation of more complex mechanical or electrical devices, nor does it cover their repair and upkeep; for those, use the Engineer or Mechanic skills.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/crafting.svg","effects":[],"_id":"W1rTEdm0CCZZwDCg"} +{"name":"Conspiracy","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Conspiracy is the skill of knowing information others want suppressed or at least knowing where to look to find such information. It also includes the ability to sift through the resulting conspiracy theories, separating the dross from the kernels of truth. Conspiracy is the skill of finding things that don’t want to be found.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/conspiracy.svg","effects":[],"_id":"XCoRrznhqaUHiiPI"} +{"name":"Melee","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Melee is the skill used for hand-to-hand combat, street fighting, wrestling, fencing, boxing and any other activity mimicking close combat. Despite the prevalence of guns and other advanced weaponry, simple fistfights remain the most common type of violence in the solar system.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/melee.svg","effects":[],"_id":"XqmSwOdflpM8ocfz"} +{"name":"Medic","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

This is the skill of applied medical knowledge. It’s used to treat injuries and other medical conditions, take practical diagnoses, treat poisons, perform surgery, apply first aid and dress wounds. It does not cover the academic or research aspects of biological knowledge; for those, use Bio-Sci.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/medic.svg","effects":[],"_id":"Yx5D41bOiWdSYqJg"} +{"name":"Persuade","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The persuade skill covers a variety of tactics to get other people to see things your way or to otherwise comply with your requests. It covers sweet-talking, formal diplomacy, browbeating, fast-talking and intimidation. It covers knowing useful techniques in argument, as well as knowing the right social approach to use— from solid reasoning to subtle psychological tricks to seem more commanding. It does not include haggling and deal-making, nor does it include seduction and putting people at ease; for those, use Broker or Socialize, respectively.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/persuade.svg","effects":[],"_id":"b43edlbX4VprPk5p"} +{"name":"Mechanic","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Mechanic is an applied skill covering the upkeep, repair and assembly of pretty much any mechanical system. Use it for repairing vehicular damage after a battle, maintenance to a ship’s systems or assembling a new piece of cyberware. It does not include designing, repurposing or giving new functionality to mechanical systems; for those, use engineer.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/mechanic.svg","effects":[],"_id":"dJ7ZdimLGygBcC0M"} +{"name":"Deception","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The deception skill includes telling convincing lies, giving off inaccurate body language, pulling the wool over the eyes of others and disguising oneself as someone else. Additionally, deception is useful in gambling, acting and other activities that require making oneself difficult to read or which involve deceiving others.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/deception.svg","effects":[],"_id":"fBA0UG5lh8jlTbih"} +{"name":"Bureaucrat","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Any sufficiently large organization has its ins and outs, its movers, its shakers and its paperwork. Those skilled in bureaucrat are adept in getting a feel for how this structure works in practice and in using it to their advantage. Additionally, the bureaucrat skill covers finding the right buyers or sellers, finding those who offer potentially questionable services and bartering the best deal once the right people are found.

\n

Aspects of the skill include insight into what things are worth to people and knowing when to compromise on a price and when to walk away. The skill does not cover more generalized readings of a person’s body language, nor does it cover the ability to convince or browbeat others into seeing things your way. For those actions, use the Empathy or Persuade skills.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/bureaucrat.svg","effects":[],"_id":"fttVTKT7frVIJi1c"} +{"name":"Thievery","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Under the auspice of the Thievery, skill falls many simple but questionable proficiencies. It includes the ability to pick locks, larceny, breaking and entering, disabling simple security devices and picking pockets. It does not include con artistry or sleight of hand—for those, use Deception—nor does it include remaining hidden—for that, use Stealth.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/thievery.svg","effects":[],"_id":"nAWkjdIqV1iVzeUe"} +{"name":"Comp-ops","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Comp-ops is the skill for making basic use of computer software. It’s used to filter through the net, to get an understanding of any given graphical user interface, to know common terminal commands and to make use of advanced software features. It does not cover hacking, advanced scripting or forcing computer systems to do things they were not designed to do. Those activities use the program skill.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/compops.svg","effects":[],"_id":"pE9NDIA1iEZyo00G"} +{"name":"Socialize","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

The socialize skill is all about being an enjoyable person and getting other people to like you. Those adept in socializing are the ones other people want to talk to or be around. Use this skill to get a feel for the word on the street, pick up rumors or recent memes, put one’s rivals at ease, make a play at seduction or distract others with small talk or other pleasantries. Additionally this skill covers knowledge of the appropriate customs, slang, mores and etiquette. This skill does not cover convincing others to see things your way or for gaining deep insight into what people are feeling. For those, use the Persuade or Empathy skills, respectively.

\n

 

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/socialize.svg","effects":[],"_id":"rRA5onrX2LOVTkDe"} +{"name":"Empathy","permission":{"default":0,"pJLHbu8WlBVyfXG4":3},"type":"skill","data":{"value":0,"xp":0,"description":"

Empathy is the skill used to read a person’s body language and tone of voice. It’s used to get an idea of a person’s emotional state or to give some insight into their motivations. Empathy is not a lie-detector; it might give let one know that another person seems nervous, but it wouldn’t tell you they’re nervous because of a specific lie or half-truth.

\n

 

"},"flags":{},"img":"systems/foundryvtt-shadows-over-sol/img/icons/empathy.svg","effects":[],"_id":"ukWyqxOnKGRp7Owm"} diff --git a/styles/simple.css b/styles/simple.css index 1d796d1..e0923ec 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -1,7 +1,7 @@ /* ==================== (A) Fonts ==================== */ @font-face { font-family: "Garamond"; - src: url('../fonts/garamond.ttf') format("truetype"); + src: url('../fonts/AppleGaramond.ttf') format("truetype"); } @font-face { font-family: "Neuropol"; @@ -11,7 +11,7 @@ :root { /* =================== 1. ACTOR SHEET FONT STYLES =========== */ --window-header-title-font-family: Neuropol; - --window-header-title-font-size: 1.5rem; + --window-header-title-font-size: 1.2rem; --window-header-title-font-weight: normal; --window-header-title-color: #f5f5f5; @@ -51,12 +51,16 @@ .window-app { font-family: Garamond; text-align: justify; - font-size: 16px; + font-size: 1.0rem; letter-spacing: 1px; } /* Fonts */ -.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {font-family: "Neuropol"} /* For title, sidebar character and scene */ +.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { + font-family: "Neuropol"; + font-size: 0.9rem; +} /* For title, sidebar character and scene */ + .sheet nav.sheet-tabs {font-family: "Garamond";} /* For nav and title */ .window-app input, .foundryvtt-shadows-over-sol .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle { font-family: "Garamond"; /* For sheet parts */ @@ -86,6 +90,13 @@ table {border: 1px solid #7a7971;} +.sosdialog { + width: 600px; + height: 430px; + z-index: 9999; + display: block; +} + .grid, .grid-2col { display: grid; grid-column: span 2 / span 2; @@ -223,6 +234,11 @@ table {border: 1px solid #7a7971;} object-fit: cover; object-position: 50% 0; } +.flip-card { + height: 128px; + width: 90px; + margin-right: 5px; +} .card-img { height: 128px; @@ -289,12 +305,6 @@ table {border: 1px solid #7a7971;} height: 100%; } -.editor { - border: 2; - height: 300px; - padding: 0 3px; -} - .medium-editor { border: 2; height: 240px; @@ -303,7 +313,7 @@ table {border: 1px solid #7a7971;} .small-editor { border: 2; - height: 150px; + height: 100px; padding: 0 3px; } @@ -376,55 +386,6 @@ table {border: 1px solid #7a7971;} text-align: right; } -.rdddialog .dialog-roll-sort s{ - width: 600px; - height: 430px; - z-index: 9999; - display: block; -} -.rdd-roll-part{ - align-items: center; - border-radius: 6px; padding: 3px; - background:linear-gradient(30deg, rgba(191, 149, 63, 0.3), rgba(252, 246, 186, 0.3), rgba(179, 135, 40, 0.3), rgba(251, 245, 183, 0.3), rgba(170, 119, 28, 0.3)); -} -.rdd-roll-sign{ - border-radius: 6px; padding: 3px; - background:linear-gradient(30deg, rgba(61, 55, 93, 0.3), rgba(178, 179, 196, 0.3), rgba(59, 62, 63, 0.6), rgba(206, 204, 199, 0.3), rgba(61, 46, 49, 0.3)); -} -.rdd-roll-norm{ - border-radius: 6px; padding: 3px; - background:linear-gradient(30deg, rgba(7, 76, 0, 0.3), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.1), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.3)); -} -.rdd-roll-echec{ - border-radius: 6px; padding: 3px; - background-image: linear-gradient(150deg, rgba(255, 0, 0, 0.3), rgba(255, 200, 128, 0.05),rgba(255, 200, 128, 0.1), rgba(255,10,0,0.3)); -} -.rdd-roll-epart{ - border-radius: 6px; padding: 3px; - background:linear-gradient(150deg, rgba(100, 45, 124, 0.6), rgba(216, 157, 192, 0.3), rgba(177, 157, 216, 0.5), rgba(107, 62, 121, 0.3), rgba(100, 45, 124, 0.6)); -} -.rdd-roll-etotal{ - border-radius: 6px; padding: 3px; - background:linear-gradient(150deg, rgba(0, 0, 0, 0.7), rgba(100, 45, 124, 0.4), rgba(82, 17, 131, 0.3),rgba(100, 45, 124, 0.4), rgba(0, 0, 0, 0.7)); -} -.rdd-diviseur{ - border-radius: 6px; padding: 3px; - background:linear-gradient(30deg, rgba(61, 55, 93, 0.2), rgba(178, 179, 196, 0.1), rgba(59, 62, 63, 0.2), rgba(206, 204, 199, 0.1), rgba(61, 46, 49, 0.2)); -} - -.table-resolution-carac { - background-color: yellow; -} - -.table-resolution-target { - font-weight: bold; - background-color: lightblue; -} - -#tableProbaReussite{ - font-size: 0.8rem; - padding: 5px; -} /* ======================================== */ /* Sheet */ @@ -638,32 +599,29 @@ ul, li { margin-left: 4rem; } -.sheet-competence-img { +.sheet-skill-img { width: 24px; height: 24px; flex-grow: 0; margin-right: 0.25rem; } -.competence-column { +.skill-column { flex-direction: column; align-content: flex-start; justify-content: flex-start; flex-grow: 0; flex-basis: 1; } -.competence-header { +.skill-header { align-content: flex-start; justify-content: flex-start; font-weight: bold; flex-grow: 0; } -.arme-label, -.generic-label, -.competence-label, -.astrologie-label, -.tache-label, -.subacteur-label, -.description-label { + +.skill-label, +.generic-label { + font-weight: bold; flex-grow: 2; } .attribut-value, @@ -674,7 +632,7 @@ ul, li { margin-left: 4px; } .sante-value, -.competence-value { +.skill-value { flex-grow: 0; flex-basis: 2rem; margin-right: 0.25rem; @@ -682,11 +640,11 @@ ul, li { } .description-value { flex-grow: 0; - flex-basis: 4rem; + flex-basis: 10rem; margin-right: 0.25rem; margin-left: 0.25rem; } -.competence-xp { +.skill-xp { flex-grow: 0; flex-basis: 2rem; margin-right: 0.25rem; @@ -773,7 +731,7 @@ ul, li { .control-icon.tokenhudicon.right { margin-left: 8px; } -.rdd-hud-menu label { +.sos-hud-menu label { font-size: 0.75rem; } #token-hud .status-effects.active{ @@ -832,7 +790,7 @@ ul, li { font-size: 1rem; background: rgb(105,85,65) url("../img/ui/sidebar-bg.webp") no-repeat right bottom; background-position: 100%; - color: rgba(220,220,220,0.75); + color: rgba(19, 15, 15, 0.75); } #sidebar-tabs > .collapse, #chat-controls .chat-control-icon { @@ -1075,7 +1033,7 @@ ul, li { #pause { font-family: Neuropol; - font-size: 2rem; + font-size: 1.3rem; } #pause > h3 { diff --git a/system.json b/system.json index 603926a..d7f2b00 100644 --- a/system.json +++ b/system.json @@ -2,17 +2,26 @@ "name": "foundryvtt-shadows-over-sol", "title": "Shadows over Sol", "description": "Shadows over Sol for FoundryVTT", - "version": "0.0.5", + "version": "0.0.8", "manifestPlusVersion": "1.0.0", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.7.9", - "templateVersion": 5, + "templateVersion": 8, "author": "LeRatierBretonnien", "esmodules": [ "module/sos-main.js" ], "styles": ["styles/simple.css"], "media": [ ], "packs": [ + { + "name": "skills", + "label": "Skills", + "system": "foundryvtt-shadows-over-sol", + "module": "foundryvtt-shadows-over-sol", + "path": "./packs/skills.db", + "entity": "Item", + "tags" : [ "skill", "skills" ] + } ], "library": false, "languages": [ diff --git a/template.json b/template.json index a67cf00..619d1ca 100644 --- a/template.json +++ b/template.json @@ -71,6 +71,12 @@ "internals": { "deck": {} }, + "wounds": { + "light": 0, + "moderate": 0, + "severe": 0, + "critical": 0 + }, "scores": { "edge": { "label": "SCORES.Edge", @@ -133,7 +139,7 @@ } }, "Item": { - "types": ["gear", "weapon", "armor", "container", "skill" ], + "types": ["gear", "weapon", "armor", "container", "skill", "language", "weakness", "geneline", "subculture", "consequence" ], "templates": { "commongear": { "big": 0, @@ -151,6 +157,27 @@ "defensive": 0 } }, + "consequence": { + "severity": "", + "description": "" + }, + "language": { + "description": "" + }, + "weakness": { + "subtitle": "", + "description": "" + }, + "geneline": { + "experiences": "", + "edge": "", + "weakness": "", + "description": "" + }, + "subculture": { + "experiences": "", + "description": "" + }, "skill": { "value": 0, "xp": 0, diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 8e69968..2b5c7c6 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -57,7 +57,7 @@