@massif/lancer-data 3.1.4 → 3.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,28 +33,50 @@ Your content package is contained in a single-level folder that, at minimum, con
33
33
  }
34
34
  ```
35
35
 
36
+ A working, but content-less, folder structure would look like this:
37
+
38
+ ```
39
+ my homebrew folder
40
+ │ lcp_manifest.json
41
+ ```
42
+
43
+ additional data will be included in the folder on the same level as the `info.json` file. _Content folders should not have any depth_.
44
+
36
45
  Optionally, you can include the following fields in your manifest:
37
46
 
38
47
  ```json
39
48
  "item_prefix": "example_prefix_",
40
49
  "image_url": "URL to a thumbnail image",
41
50
  "website": "Website URL to my LCP's source"
51
+ "dependencies": LcpDependency[] // see below
42
52
  ```
43
53
 
44
- the `active` property is what COMP/CON uses to determine what installed packages are loaded. It's best to keep this as `false`.
54
+ #### LCP Dependencies
45
55
 
46
- A working, but content-less, folder structure would look like this:
56
+ LCPs can declare dependencies: other LCPs required for it to function. These dependencies are declared in the `dependencies` field of the LCP manifest, and are an array of `LcpDependency` objects:
47
57
 
48
- ```
49
- my homebrew folder
50
- │ lcp_manifest.json
58
+ ```ts
59
+ {
60
+ "name": string, // name of the dependency
61
+ "version": string, // version of the dependency
62
+ "link"?: string // link to the dependency's website
63
+ }
51
64
  ```
52
65
 
53
- additional data will be included in the folder on the same level as the `info.json` file. _Content folders should not have any depth_.
66
+ The `name` field must **exactly match** the `name` field of the dependency's manifest.
67
+
68
+ The `version` field must be a [semver](https://semver.org/) version string, and must match the dependency's version. COMP/CON defaults to "this version or later", for example, if the user has already installed dependency version `2.0.0` and the dependency required is `1.0.1`, COMP/CON will accept it. COMP/CON will not accept a dependency of `0.5.0` or `1.0.0`. However, there are two special characters that can modify this behavior:
69
+
70
+ - `*` will accept any version of the dependency, as long as the name matches.
71
+ - `=X.X.X` will only accept the exact version of the dependency (X.X.X), and will not accept any other version. For example, if the version string is `=1.0.0`, COMP/CON will only accept version `1.0.0` of the dependency, not `1.0.1`, or `2.0.0`.
72
+
73
+ The `link` field is optional, and if provided will be displayed in the Content Pack Manager to help users find and download the required content packs. While this is not a required field, it's strongly recommended to include it.
74
+
75
+ COMP/CON will automatically sort and load LCPs in order based on required dependencies, and will not load an LCP if it has an unsatisfied dependency. The user will be notified of any missing dependencies in the Content Pack Manager.
54
76
 
55
77
  ### Troubleshooting
56
78
 
57
- Most of the time, issues related to LCPs come from malformed LCP data. To that end, a tool has been developed for VSCode to ensure correct data format, available [here](https://marketplace.visualstudio.com/items?itemName=massif-press.comp-con-content-authoring)
79
+ Most of the time, issues related to LCPs come from malformed LCP data.
58
80
 
59
81
  Further questions can be answered in the #comp-con-homebrew channel in the LANCER Discord.
60
82
 
@@ -65,7 +87,7 @@ If you'd like to submit your content pack for inclusion within COMP/CON, there a
65
87
  - Compatible with the new item regime, as described by this document.
66
88
  - Downloadable through an itch.io page (free or paid)
67
89
  - Nominated by the community as a good asset, even for people that aren't on the Discord or otherwise tied in to the greater Lancer community (ie: has been playtested, doesn't require other assets, only references already-published material, etc)
68
- - Does not contain any questionable or illegal content, or any content not owned by the author.
90
+ - Does not contain any questionable or illegal content, nor any content not owned by the author.
69
91
  - Passes a final content and code pass
70
92
 
71
93
  If these standards are acceptable, please contact me at @Beeftime#0558 in [the official LANCER Discord](https://discord.gg/Qu3C4te), ideally within the #comp-con-homebrew channel.
@@ -387,7 +409,7 @@ Weapon mods are handled separately in C/C than in Lancer (where they're just tag
387
409
  "allowed_sizes"?: WeaponSize[], // weapon sizes the mod CAN be applied to
388
410
  "restricted_types"?: WeaponType[], // weapon types the mod CAN NOT be applied to
389
411
  "restricted_sizes"?: WeaponSize[], // weapon sizes the mod CAN NOT be applied to
390
- "added_tags"?: ITagData[] // tags propogated to the weapon the mod is installed on
412
+ "added_tags"?: ITagData[] // tags propagated to the weapon the mod is installed on
391
413
  "added_damage"?: IDamageData[] // damage added to the weapon the mod is installed on, see note
392
414
  "added_range"?: IRangeData[] // damage added to the weapon the mod is installed on, see note
393
415
  "actions"?: IActionData[],
@@ -421,7 +443,7 @@ This is currently unsupported in the LANCER Core Book (or any Massif material at
421
443
  "license_level": number, // set to 0 to be available to all Pilots
422
444
  "effect": string, // v-html
423
445
  "tags": ITagData[], // tags related to the mod itself
424
- "added_tags": ITagData[] // tags propogated to the system the mod is installed on
446
+ "added_tags": ITagData[] // tags propagated to the system the mod is installed on
425
447
  "actions"?: IActionData[],
426
448
  "bonuses"?: IBonusData[], // these bonuses are applied to the pilot, not parent system
427
449
  "synergies"?: ISynergyData[],
@@ -758,7 +780,7 @@ Weapons are essentially mounted systems that furnish the "Skirmish" and "Barrage
758
780
 
759
781
  ## Weapon Effects
760
782
 
761
- Effects are eqipment abilities that **do not** grant the player a new Action but **do** add or modify gameplay mechanics. The field should be used for "usage notes" (for lack of a better term) that have game-mechanical properties that cannot be modeled with Actions or Deployables, or may include representation elsewhere but involve player notes/choices that can't be modeled there (like the Hydra's Ghast Nexus), or any other sort of mechanically important detail that is unsuited for inclusion (like the rules for the Pegasus' Mimic Gun). An item takes only one effect.
783
+ Effects are equipment abilities that **do not** grant the player a new Action but **do** add or modify gameplay mechanics. The field should be used for "usage notes" (for lack of a better term) that have game-mechanical properties that cannot be modeled with Actions or Deployables, or may include representation elsewhere but involve player notes/choices that can't be modeled there (like the Hydra's Ghast Nexus), or any other sort of mechanically important detail that is unsuited for inclusion (like the rules for the Pegasus' Mimic Gun). An item takes only one effect.
762
784
 
763
785
  On Attack/Hit/Crit effects (like the Blackbeard's Chain Axe), are modeled in separate fields. A weapon may be given any combination of `on_attack`, `on_hit`, `on_crit`, and `effect` fields.
764
786
 
@@ -1031,7 +1053,7 @@ Synergies are used to convey hint text regarding talent rank or equipment intera
1031
1053
  ```
1032
1054
 
1033
1055
  The `ISynergyData` object contains two mandatory and three optional fields. Location and detail - are mandatory and contain the display location for the synergy hint (see below) and the text (`detail`) of the synergy hint. `weapon_types` and `weapon_sizes` are optional filters for displaying synergies on weapons, and take `WeaponType` and `WeaponSize` enum values, respectively. Omitting these fields on weapons will cause them to be set to `any` -- useful if you are looking for a synergy hint on eg. a Melee weapon of any size, or a Superheavy weapon of any type.
1034
- Similarly `system_types` will filter system synergy hints to a specific type (eg. `Drone`) and will appear on all Systems if ommitted (set to `any`).
1056
+ Similarly `system_types` will filter system synergy hints to a specific type (eg. `Drone`) and will appear on all Systems if omitted (set to `any`).
1035
1057
 
1036
1058
  ```ts
1037
1059
  {
package/lib/tables.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "pilot_names": [],
3
3
  "callsigns": [],
4
- "mech_names": [],
5
- "team_names": [],
4
+ "mech_names": [],
5
+ "team_names": [],
6
6
  "quirks": [
7
7
  "Part (or all) of your body was too damaged to be cloned perfectly and a significant percentage of your clone body has been replaced with cybernetics. These high-quality prostheses aren’t obviously synthetic to casual observers. You don’t know the extent of the damage.",
8
8
  "Your clone has been fitted with a necessary but visible cybernetic augmentation – an arm, leg, eyes, or similar. It is a conspicuous prosthetic.",
@@ -25,4 +25,4 @@
25
25
  "Knowingly or unknowingly, your clone body has been implanted with a mental trigger that places you in a receptive state when heard or activated, causing you to either follow a pre-programmed course of action or to follow instructions given by the person who activated you. These commands must be simple (e.g., kill, lie, etc.), and the GM determines who (PC or NPC) gave them. You might be able to overcome this effect in time.",
26
26
  "You come back with total amnesia regarding the time before your death, meaning you must be retrained and prepared from scratch. You lose all previous triggers and assign new ones up to your current level. Additionally, you may rewrite some incidental facts of your backstory."
27
27
  ]
28
- }
28
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massif/lancer-data",
3
- "version": "3.1.4",
3
+ "version": "3.1.6",
4
4
  "description": "Data for the LANCER TTRPG",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/scripts/test.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as fs from 'fs';
1
+ const fs = require('fs');
2
2
  var currentDir = process.cwd();
3
3
  var files = fs.readdirSync('./lib');
4
4
  let contents = ""