diff --git a/.github/workflows/deploy-npm.yml b/.github/workflows/deploy-npm.yml new file mode 100644 index 0000000..826acc0 --- /dev/null +++ b/.github/workflows/deploy-npm.yml @@ -0,0 +1,14 @@ +# This workflow will call org-level reusable workflows for deploying an NPM package to npmjs.com. + +name: Deploy NPM + +on: + workflow_dispatch: + release: + types: [created] + +jobs: + call-npm-publish: + uses: massif-press/.github/.github/workflows/npm-publish.yml@master + secrets: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/lcp-version-bump.yml b/.github/workflows/lcp-version-bump.yml new file mode 100644 index 0000000..8feb2d3 --- /dev/null +++ b/.github/workflows/lcp-version-bump.yml @@ -0,0 +1,22 @@ +# This workflow calls an org-level reusable workflow for incrementing LCP and NPM package versions. + +name: LCP Version Bump + +on: + workflow_dispatch: + inputs: + version_level: + description: 'Version level to bump' + required: true + default: 'patch' + type: choice + options: + - patch + - minor + - major + +jobs: + call-bump-version-tag: + uses: massif-press/.github/.github/workflows/bump-version-tag.yml@master + with: + version_level: ${{ inputs.version_level }} \ No newline at end of file diff --git a/README.md b/README.md index fa5ca1d..bc1770f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # !! IMPORTANT !! -The `lancer-data` package is no longer the current source of COMP/CON data, and is now available under `@Massif/lancer-data`. The `lancer-data` package will no longer be updated, and will be removed in the future. Please update your dependencies accordingly. +The `lancer-data` npm package is now available under `@massif/lancer-data`. The `lancer-data` package will no longer be updated, and will be removed in the future. Please update your dependencies accordingly. It is published from this repo, so everything else will stay the same otherwise. # About diff --git a/lib/actions.json b/lib/actions.json index 7f2833a..ece3627 100644 --- a/lib/actions.json +++ b/lib/actions.json @@ -414,7 +414,7 @@ }, { "id": "act_get_a_damn_drink", - "name": "Get A Damn Drink", + "name": "Get a Damn Drink", "activation": "Downtime", "terse": "Blow off some steam and generally get into trouble.", "detail": "When you GET A DAMN DRINK, you blow off some steam, carouse, and generally get into trouble. You might be trying to make connections, collect gossip, forge a reputation, or even just to forget what happened on the last mission. There’s usually trouble.
State your intention and roll:
On 9 or less, decide whether you had good time or not; either way, you wake up in a gutter somewhere with only one remaining:
• Your dignity.
• All of your possessions.
• Your memory.
On 10–19, gain one as RESERVES and lose one:
• A good reputation.
• A friend or connection.
• A useful item or piece of information.
• A convenient opportunity.
On 20+, gain two from the 10–19 list as RESERVES and don’t lose anything.
You can only make this action where there’s actually a drink to get (e.g., in a town, station, city, or some other populated area), or some other kind of entertainment." @@ -449,14 +449,14 @@ }, { "id": "act_power_at_a_cost", - "name": "Power At A Cost", + "name": "Power at a Cost", "activation": "Downtime", "terse": "Gain rewards, opportunities, or resources.", "detail": "When you seek POWER AT A COST, you’re trying to get your hands on something.
Name what you want. You can definitely get it, but depending on the outlandishness of the request, the GM chooses one or two:
• It’s going to take a lot more time than you thought.
• It’s going to be really damn risky.
• You’ll have to have to give something up or leave something behind (e.g., wealth, resources, allies).
• You’re going to piss off someone or something important and powerful.
• Things are going to go wildly off-plan.
• You’ll need more information to proceed safely.
• It’s going to fall apart damn soon.
• You’ll need more resources, but you know where to find them.
• You can get something almost right: a lesser version, or less of it.
This is a straightforward way to acquire RESERVES, opportunities, and additional resources. You might want something directly useful for a mission; some‐ thing more abstract, like time, safety, information, allies, or support; something practical, like a base of operations, materials, shelter, or food; or, even something as simple as a damn pack of cigarettes.
You can also use POWER AT A COST during missions for similar effects. Other downtime actions generally can’t be used during missions, but your group can adapt them if desired." }, { "id": "act_scrounge_and_barter", - "name": "Scrounge And Barter", + "name": "Scrounge and Barter", "activation": "Downtime", "terse": "Try and get your hands on some gear or asset.", "detail": "When you SCROUNGE AND BARTER, you try to get your hands on some gear or an asset by dredging the scrapyard, chasing down rumors, bartering in the local market, or hunting around.
You might want some better pilot gear, a vehicle, narcotics, goods, or other sundries. It needs to be something physical, but doesn’t necessarily have to be on the gear list. If you get it, you can take it on the next mission as RESERVES.
Name what you want and roll:
On 9 or less, you get what you want, but choose one:
• It was stolen, probably from someone who’s looking for it.
• It’s degraded, old, filthy, or malfunctioning.
• Someone else has it right now and won’t give it up without force or convincing.
On 10–19, you get what you want, but choose the price you need to pay:
• Time.
• Dignity.
• Reputation.
• Health, comfort, and wellness. On 20+, you get what you’re looking for, no problem." diff --git a/lib/frames.json b/lib/frames.json index e2b38b2..a5bb652 100644 --- a/lib/frames.json +++ b/lib/frames.json @@ -397,7 +397,7 @@ } ], "core_system": { - "name": "M35 Mjolnir cannon", + "name": "M35 Mjolnir Cannon", "description": "IPS-N’s M35 Mjolnir cannon is a carryover from Northstar’s Watchman line of defensive weapons, reworked for frontline combat. The Mjolnir is a hard-mounted, multi-barrel auxiliary cannon that uses magnetic acceleration to fire stacks of airburst projectiles at its target. It’s an impulse weapon, tied to the pilot’s second-tier neural processes with mediation from a COMP/CON or NHP; even in death, a pilot’s Mjolnir will continue to identify and attack hostile targets until reaching total systemic failure. For this reason, the Mjolnir is often referred to as a deadgun – one of many such weapons to be found among CQB-oriented pilots.", "active_name": "Thunder God", "active_effect": "You start to spin your M35 Mjolnir up, beginning with no chambered rounds. For the rest of the scene, you load two rounds into chambers at the end of any of your turns in which you haven’t fired the M35 Mjolnir . It can hold a maximum of six rounds.
When you fire the M35 Mjolnir, all chambers fire simultaneously, dealing 4 kinetic damage per loaded round. If you fire four or more rounds at once, the attack gains AP and, on a hit, your target becomes Shredded until the end of their next turn.", @@ -572,7 +572,7 @@ "id": "mf_deaths_head", "license_level": 2, "source": "SSC", - "name": "Death’S Head", + "name": "Death’s Head", "mechtype": ["Artillery"], "y_pos": 40, "description": "The Death’s Head is Smith-Shimano’s answer to the need for a chassis solution to long-range, low-splash strike actions. Sacrificing raw hull strength for peerless stability and alacrity, the Death’s Head is a maneuverable fire-support platform able to avoid incoming fire while maintaining a near-perfect lock on its targets. Its unique hexapedal form allows for rapid, low-profile movement in all directions.
As an aggressive and line-focused chassis, the Death’s Head is one of the most popular models for Union Navy and Union Department of Justice and Human Rights officers. It is a combat chassis through and through; as the Death’s Head is a chassis produced under SSC’s BELLA CIAO line, there is no civilian analog.", diff --git a/lib/glossary.json b/lib/glossary.json index 983c14f..2870c8a 100644 --- a/lib/glossary.json +++ b/lib/glossary.json @@ -120,11 +120,11 @@ "description": "When characters end their turn in dangerous terrain or move into it for the first time in a round, they must make an ENGINEERING check. On a failure, they take 5 damage – kinetic, energy, explosive, or burn, depending on the hazard. Each character only needs to make one such check per round." }, { - "name": "Lifting And Dragging", + "name": "Lifting and Dragging", "description": "Mechs can drag characters or objects up to twice their SIZE but are SLOWED while doing so. They can also lift characters or objects of equal or lesser SIZE overhead but are IMMOBILIZED while doing so. While dragging or lifting, characters can’t take reactions. The same rules apply to pilots and other characters on foot, but they can’t drag or lift anything above SIZE 1/2.

While flying, mechs cannot carry characters or objects with a total SIZE larger than SIZE 1/2 -- there's just not enough thrust." }, { - "name": "Jumping And Climbing", + "name": "Jumping and Climbing", "description": "Characters with legs can jump instead of their standard move. They may jump horizontally, moving half their speed in a straight line and ignoring obstructions at ground level that they could jump over (such as pits or gaps), or they may can jump vertically, moving 1 space adjacent and moving up by spaces equivalent to their SIZE. For example, a SIZE 1 mech could jump up to 1 space high, and 1 space over. Characters that jump and end the jump mid air automatically fall at the end of the move (see below).

Like moving through difficult terrain, characters climb at half their usual SPEED – each space moved is equivalent to moving 2 spaces normally. A successful HULL or AGILITY check might be required to climb particularly difficult surfaces without falling." }, { diff --git a/lib/mods.json b/lib/mods.json index 205e0ea..b347f7b 100644 --- a/lib/mods.json +++ b/lib/mods.json @@ -18,7 +18,7 @@ "sp": 2, "allowed_types": ["Melee"], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 2, "effect": "On a hit with the weapon this mod is applied to, expend a charge as a free action to activate its detonator and deal +1d6 explosive bonus damage.", "description": "One popular modification to the classic war pike involves replacing the long, armor-piercing pike head with a disposable, impact-triggered explosive charge. On penetration, the pike’s head is severed from the shaft – moments later, the embedded pike head detonates in a conical explosion from the point forward. Spare thermal charges are stable, and transported in external tube magazines.
IPS-N also makes thermal charges compatible with GMS’s range of blades, hammers, and picks.", @@ -45,7 +45,7 @@ "sp": 3, "allowed_types": ["Melee", "CQB", "Rifle", "Launcher", "Cannon", "Nexus"], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 3, "effect": "Your UNCLE-class COMP/CON has control of the weapon this mod is applied to and its associated systems.
1/turn, you can attack at +2 difficulty with UNCLE’s weapon as a free action. UNCLE can’t use weapons that have already been used this turn, and any weapon UNCLE attacks with can’t be used again until the start of your next turn.
UNCLE isn’t a full NHP, so cannot enter cascade.", "description": "IPS-N’s UNCLE COMP/CON system is the result of the DARKSTAR-2 program, a temporary project that sought to develop more advanced smart weapons. Early prototypes were hampered by a combination of high power-draw, unstable conditioning, and frustrating single-task orientation that eventually saw the project shuttered.
While IPS-N is no longer developing new iterations of UNCLE, they still have a stock of QA-approved legacy systems accessible to qualified pilots.
Pilots lucky enough to field test models swear by UNCLE’s task efficiency and parallel-track reasoning, though the outdated COMP/CONs are known for their somewhat unstable personalities.", @@ -69,7 +69,7 @@ "sp": 2, "allowed_types": ["CQB", "Cannon", "Rifle"], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 3, "effect": "When you attack with the weapon this mod is applied to, you may fire a throughbolt round instead of attacking normally. Draw a line 3 path from you, passing through terrain or other obstacles – any characters or objects in the path take 2 AP kinetic damage as the projectile punches through them and out the other side. Range, cover, and line of sight for the attack are then measured from the end of this path, continuing in the same direction.", "description": "Throughbolt rounds are a proprietary IPS-N anti-armor invention. When fired, the rounds ignite and project a superheated cone of plasma before them, creating an effect like a miniature lance that easily penetrates multiple targets – even through hard surfaces.", @@ -86,7 +86,7 @@ "sp": 2, "allowed_types": ["Melee"], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 3, "effect": "In addition to its usual damage, 1/round you may activate the wreath as a quick action when you hit a character with the weapon this mod is applied to to cause it to take 1d6 burn. If it already is suffering from burn, it can additionally only draw line of sight to adjacent spaces until the end of its next turn.", "actions": [ @@ -110,7 +110,7 @@ "sp": 2, "allowed_types": ["Launcher", "Cannon"], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 2, "effect": "the weapon this mod is applied to gains +5 range and the Ordnance tag.", "description": "Stabilizer mods enhance physical mounts and targeting software, ensuring weapons remain level, steady, and at an appropriate angle regardless of terrain or pilot maneuvers.", @@ -133,7 +133,7 @@ "sp": 2, "allowed_types": ["Melee", "CQB", "Rifle", "Launcher", "Cannon", "Nexus"], "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 2, "effect": "the weapon this mod is applied to gains Smart and Seeking.", "description": "Nanocomposite weapons take aggressive drone swarms and condense them into individual rounds, a coherent beam, or the edge of a blade.
Adapted projectile weapons fire shaped CONSUME/HIVE rounds that shatter on impact, releasing their payload of autonomous nanite maniples. Once freed, the maniples begin eating away at surrounding tissue or superstructure. They proceed until burnout or total target consumption, whichever occurs first. In flight, the maniples are able to hive-link and make slight adjustments to the trajectory of their round, ensuring positive impact.
Coherent beam weapons transport maniples directly, while conventional melee weapons are replaced by analogs composed entirely of nanobots.", @@ -153,7 +153,7 @@ "sp": 2, "allowed_types": ["Melee", "CQB", "Rifle", "Launcher", "Cannon", "Nexus"], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 2, "effect": "As long as you know the rough location of your target, the weapon this mod is applied to can attack through solid walls and obstructions, doesn’t require line of sight, and ignores all cover, but targets attacked this way count as Invisible.", "description": "As it was named following its first use during the civil hostilities on Luna de Oro, phase-ready ammunition is the “devil’s bullets”. Each round contains a nanoprocessor suite networked with its weapon of origin that calculates and translates the specific nature of that round’s superpositional relation with a projected future doppelgänger that manifests in the space immediately before its intended target. To put it simply, phase-ready rounds, when fired, exist in two places at once: exiting the barrel of the weapon they were fired from, and directly in front of the target, prior to impact. The prime round may never hit its target, but given it already exists at the moment of impact, the doppelgänger round will reliably reach its mark.", @@ -165,7 +165,7 @@ "sp": 4, "allowed_types": ["Melee", "CQB", "Rifle", "Launcher", "Cannon", "Nexus"], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 3, "effect": "This weapon gains Overkill, and its damage can’t be reduced in any way, including by other effects and systems (such as Resistance, Armor, etc).", "description": "Paracausal weapons are a headache for military planners; their precise A–Z function is often obscured, though they consistently produce the same “Z” output per “A” input.
The first reports of unregulated paracausal weaponry occurred during the civil engagements on Tian Shen. System-local forces received sealed magazines with directions to be loaded and fired as normal, although inspection of the magazines’ contents was prohibited on grounds that it would “damage the payload”. Helmet and gun cam footage do not betray the anomalous effects of this ordnance, though after-action reports uncovered a seemingly minor, though incredibly odd fact: every single trooper outfitted with this paracausal ammunition scored a 100% positive impact rate.
Union has scheduled all unregulated paracausal weapons and ammunition for retrieval, and the bureau is currently investigating Harrison Armory for its role in the development of the technology. Despite this, paracausal ammunition is still in use, as shipments and codes continue to leak to interested parties.", diff --git a/lib/skills.json b/lib/skills.json index fcc4c8a..2075498 100644 --- a/lib/skills.json +++ b/lib/skills.json @@ -1,14 +1,14 @@ [ { "id": "sk_act_unseen_or_unheard", - "name": "Act Unseen Or Unheard", + "name": "Act Unseen or Unheard", "description": "Get somewhere or do something without detection.", "detail": "Get somewhere or do something without being detected, but not necessarily with speed. Hide, sneak, or move quietly. Infiltrate a facility while avoiding security, patrols, or cameras. Perform a quick action or maneuver without being seen or heard, such as picking a pocket, unholstering your gun, or cheating at cards. Wear a disguise.", "family": "dex" }, { "id": "sk_apply_fists_to_faces", - "name": "Apply Fists To Faces", + "name": "Apply Fists to Faces", "description": "Fight in open, brutal unarmed combat.", "detail": "Punch someone in the face, or alternately fight in open, brutal unarmed combat, whether it’s a fist fight, martial arts duel, or a huge brawl. This is never subtle, never clean, and probably causes a lot of noise.", "family": "str" @@ -36,7 +36,7 @@ }, { "id": "sk_get_a_hold_of_something", - "name": "Get A Hold Of Something", + "name": "Get a Hold of Something", "description": "Acquire temporary or permanent allies, assets, or connections through wealth or social influence.", "detail": "Acquire useful allies, assets, or connections through wealth or social influence. This could be permanent (buying it or receiving it) or temporary (renting or borrowing help or supplies, etc), and might be harder or easier depending on how much you want to use it. This can’t be used for something that’s normally gated by license level (like mech parts) but could be used for aid, supplies, information, food materials, soldiers, or anything else that has more narrative impact. Typically this is acquired by buying it from a market or requisitioning it from a parent organization.", "family": "cha" @@ -50,14 +50,14 @@ }, { "id": "sk_hack_or_fix", - "name": "Hack Or Fix", + "name": "Hack or Fix", "description": "Repair a device or faulty system; alternatively, hack it wide open, or totally wreck, disable or sabotage it.", "detail": "Repair a device or faulty system. Alternately, hack it wide open, or totally wreck, disable or sabotage it. You can use this for hacking or safeguarding electronic systems, such as electronic door locks, computer systems, omninet webs, or NHP coffins.", "family": "int" }, { "id": "sk_invent_or_create", - "name": "Invent Or Create", + "name": "Invent or Create", "description": "Invent new devices, tools, or approaches to problems.", "detail": "Generally speaking, you need tools and supplies to invent or create something successfully. Use this with many downtime actions to work on projects. You can also use it in the spur of the moment to invent new devices, tools, or approaches to something (improvised explosives, gear, disguises, or some similar).", "family": "int" @@ -71,7 +71,7 @@ }, { "id": "sk_lead_or_inspire", - "name": "Lead Or Inspire", + "name": "Lead or Inspire", "description": "Give an inspiring speech, or motivate a group of people into action.", "detail": "Give an inspiring speech, or motivate a group of people into action. Administer or run an organization efficiently or effectively, such as a company, a ship’s crew, a group of colonists or a mining venture. Effectively command a platoon of soldiers in battle, or (perhaps) an entire army.", "family": "cha" @@ -92,7 +92,7 @@ }, { "id": "sk_read_a_situation", - "name": "Read A Situation", + "name": "Read a Situation", "description": "Look for subtext, motives, or threats in a situation or person.", "detail": "Look for subtext, motive, or threat in a situation or person, often social situations. Use your intuition to learn someone’s motivation, learn who is really in charge, or who is about to do something rash or stupid. Get a gut feeling about a situation or person. Sense if someone is lying to you.", "family": "int" @@ -148,7 +148,7 @@ }, { "id": "sk_word_on_the_street", - "name": "Word On The Street", + "name": "Word on the Street", "description": "Get gossip, news, or hearsay from the streets, or from a particular social scene.", "detail": "Get gossip, news, or hearsay from the streets. What you get depends on what ‘streets’ you are getting word from (high society, low society, hearsay, military chatter, etc). This probably takes a lot less time than investigating something in detail, but the information might be more qualitative or colored by opinion (sometimes that might be useful). You can always learn where the information came from or who to go to next.", "family": "cha" diff --git a/lib/statuses.json b/lib/statuses.json index 9572a64..a0c2977 100644 --- a/lib/statuses.json +++ b/lib/statuses.json @@ -8,7 +8,7 @@ "effects": "Characters are in the DANGER ZONE when half or more of their heat is filled in. They’re smoking hot, which enables some attacks, talents, and effects." }, { - "name": "Down And Out", + "name": "Down and Out", "icon": "downandout", "type": "Status", "terse": "Pilot is unconscious, any additional damage kills", diff --git a/lib/systems.json b/lib/systems.json index c6c3f3a..e5bebe3 100644 --- a/lib/systems.json +++ b/lib/systems.json @@ -406,7 +406,7 @@ } ], "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 1, "effect": "You may Ram targets larger than you, and when you Grapple or Ram larger targets, you count as the same Size as the largest opponent. When you Grapple or Ram opponents of the same Size or smaller, you count as at least one Size larger. Additionally, your lifting and dragging capacity is doubled.", "synergies": [ @@ -427,7 +427,7 @@ "name": "Reinforced Cabling", "sp": 2, "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 3, "actions": [ { @@ -458,7 +458,7 @@ } ], "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 3, "actions": [ { @@ -480,7 +480,7 @@ } ], "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 1, "actions": [ { @@ -506,7 +506,7 @@ } ], "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 2, "effect": "Expend a charge to deploy a Size 1 shield generator in a free, adjacent space, where it creates a burst 1 shield.", "deployables": [ @@ -553,7 +553,7 @@ } ], "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 3, "effect": "Expend a charge to deploy a portable bunker to a free, adjacent area 4 by 4 area. At the start of your next turn, it unfolds into a fortified emplacement.", "deployables": [ @@ -576,7 +576,7 @@ "name": "Cable Winch System", "sp": 1, "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 1, "actions": [ { @@ -602,7 +602,7 @@ } ], "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 1, "effect": "Expend a charge to deploy a restock drone to any free, adjacent space, where it primes at the end of your turn.", "deployables": [ @@ -637,7 +637,7 @@ } ], "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 2, "effect": "Extra mounts, straps, and hard points allow other characters to climb and ride your mech. Adjacent, non-Immobilized characters can climb onto your mech as a quick action. While riding, they occupy the same space as you, move when you move (even if they’re Slowed), and benefit from soft cover. If you or a rider are knocked Prone, Stunned, Immobilized, or destroyed, they land Prone in adjacent spaces. Riders can climb down as part of any movement away, but can only climb onto your mech as a quick action.
You can carry riders of a combined Size equal to your Size, minus Size 1/2 (e.g., if your mech is Size 1 you can carry one Size 1/2 character; if it is Size 2, you can carry a Size 1 character and a Size 1/2 character).", "description": "The Multiple User, Light Entanglement (MULE) Harness is a mass-produced version of a common battlefield modification that allows friendly soldiers to ride along on a chassis. Some systems are large enough to allow smaller chassis to accompany larger chassis; typically, these variants are employed in high altitude, low orbit insertions where reduced radar presence is required.", @@ -648,7 +648,7 @@ "name": "Whitewash Sealant Spray", "sp": 2, "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 2, "actions": [ { @@ -680,7 +680,7 @@ } ], "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 3, "actions": [ { @@ -701,7 +701,7 @@ } ], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 1, "effect": "Your mech’s extended limbs, additional armor, redundant motor systems, and other reinforcements allow you to ignore difficult terrain.", "synergies": [ @@ -727,7 +727,7 @@ } ], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 2, "effect": "You can Brace while Grappling. When you do so, any grapples currently affecting you end.
Additionally, when you Brace, you gain the following benefits until the end of your following turn:", "synergies": [ @@ -757,7 +757,7 @@ } ], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 3, "actions": [ { @@ -786,7 +786,7 @@ } ], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 1, "actions": [ { @@ -837,7 +837,7 @@ } ], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 2, "effect": "When you reload any weapon, your next attack with a Loading weapon gains this effect:
On hit: This attack deals +1d6 explosive bonus damage, and targets must succeed on a Hull save or be knocked Prone.", "description": "Packed into sealed, self-contained cylinders, IPS-N’s “Roland Rounds” are high-explosive anti-armor charges built for kinetic weapons of any mech-scale caliber. Loaded in place of inert kinetic ammunition, a Roland HE/AA shell increases the efficacy and destructive power of any weapon it is fired from.", @@ -853,7 +853,7 @@ } ], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 1, "effect": "When you Ram, you deal 2 kinetic damage on hit, and you deal 10 AP kinetic damage when you Ram objects and terrain.", "synergies": [ @@ -879,7 +879,7 @@ } ], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 3, "actions": [ { @@ -910,7 +910,7 @@ } ], "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 1, "effect": "Expend a charge to deploy a Webjaw snare to a free, adjacent space, where it arms at the end of your turn.", "deployables": [ @@ -937,7 +937,7 @@ } ], "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 2, "actions": [ { @@ -953,7 +953,7 @@ "name": "Charged Stake", "sp": 2, "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 3, "actions": [ { @@ -969,7 +969,7 @@ "name": "Ferrous Lash", "sp": 2, "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 1, "actions": [ { @@ -995,7 +995,7 @@ } ], "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 2, "effect": "Expend a charge to deploy an ICEOUT drone to a free space within Sensors and line of sight, where it hovers in place and generates a burst 1 field.", "deployables": [ @@ -1031,7 +1031,7 @@ } ], "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 2, "effect": "This heavy metal Perimeter Command Plate (PCP) can be flash-printed and deployed to a free 2x2 space within range 5. The PCP is flat, doesn’t obstruct movement, and lasts for the rest of the scene. If you create a new PCP, the old one disintegrates.", "deployables": [ @@ -1058,7 +1058,7 @@ } ], "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 3, "effect": "Tech attacks against you or adjacent allied characters receive +1 difficulty. Each subsequent tech attack against you or an adjacent allied character receives an additional +1 difficulty, to a maximum of +3 difficulty.
Your Black ICE definitions roll over – resetting to +1 difficulty – when it would increase to +4 difficulty or at the end of the scene. Allied characters lose this benefit when they break adjacency.", "description": "Black ICE modules are defensive systems packaged standard with the Black Witch fleets used by SSC's own internal security forces. They project a bubble of WHITECELL code that analyzes incoming hostile script and structures inoculants for friendly systems on the fly.", @@ -1087,7 +1087,7 @@ } ], "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 3, "actions": [ { @@ -1108,7 +1108,7 @@ } ], "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 1, "effect": "You treat all solid surfaces as flat ground for the purposes of movement; you can move across them normally instead of climbing, although you begin to fall if you are knocked Prone.", "synergies": [ @@ -1126,7 +1126,7 @@ "type": "Tech", "sp": 2, "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 1, "actions": [ { @@ -1148,7 +1148,7 @@ } ], "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 2, "actions": [ { @@ -1169,7 +1169,7 @@ } ], "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 3, "effect": "When you miss with a ranged attack roll, your next ranged attack roll gains +1 accuracy.", "synergies": [ @@ -1193,7 +1193,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 1, "actions": [ { @@ -1220,7 +1220,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 2, "effect": "Whenever you Boost or make a standard move, you project a holographic pattern around you, leaving dazzling afterimages that make it hard to discern your precise location: you count as Invisible the next time you’re attacked. You can only benefit from one instance of this effect at a time.", "synergies": [ @@ -1246,7 +1246,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 3, "actions": [ { @@ -1275,7 +1275,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 3, "actions": [ { @@ -1304,7 +1304,7 @@ } ], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 1, "actions": [ { @@ -1348,7 +1348,7 @@ } ], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 1, "effect": "When you Brace, you become Invisible until the end of your next turn and may immediately move spaces equal to your Speed.", "synergies": [ @@ -1374,7 +1374,7 @@ } ], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 3, "actions": [ { @@ -1395,7 +1395,7 @@ } ], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 1, "actions": [ { @@ -1424,7 +1424,7 @@ } ], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 3, "actions": [ { @@ -1447,7 +1447,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 2, "actions": [ { @@ -1474,7 +1474,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 2, "actions": [ { @@ -1498,7 +1498,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 3, "actions": [ { @@ -1520,7 +1520,7 @@ } ], "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 1, "effect": "This scout drone can be deployed to a space within Sensors and line of sight, where it emits a Burst 2 field with the following effects:You can recall and redeploy your scout drone as a quick action.", "deployables": [ @@ -1545,7 +1545,7 @@ "type": "Tech", "sp": 2, "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 1, "actions": [ { @@ -1568,7 +1568,7 @@ } ], "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 2, "actions": [ { @@ -1593,7 +1593,7 @@ } ], "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 3, "effect": "Your mech gains the AI tag and Simulacrum.", "actions": [ @@ -1617,7 +1617,7 @@ } ], "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 3, "actions": [ { @@ -1634,7 +1634,7 @@ "type": "Drone", "sp": 2, "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 1, "effect": "This hive drone can be deployed to a free space within Sensors and line of sight, where it releases a burst 2 greywash swarm with the following effects:The drone can be deployed to a different space or recalled as a quick action.", "deployables": [ @@ -1664,7 +1664,7 @@ } ], "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 1, "effect": "You gain +1 accuracy on tech attacks against adjacent characters.", "description": "HORUS-coded scanner swarms establish oculus-form nanite protocols around defined objects or areas, ensuring constant circulation and data capture. The nanites ingest and process full-spectrum information, relaying it back to their pilot/parent in return for an endorphic code-impulse that prompts continued scanning.", @@ -1680,7 +1680,7 @@ } ], "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 2, "actions": [ { @@ -1702,7 +1702,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 1, "actions": [ { @@ -1730,7 +1730,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 2, "actions": [ { @@ -1752,7 +1752,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 2, "actions": [ { @@ -1787,7 +1787,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 3, "actions": [ { @@ -1811,7 +1811,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 3, "actions": [ { @@ -1838,7 +1838,7 @@ } ], "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 1, "effect": "On activation, choose an allied character within SENSORS: until the end of your next turn, you gain the Battlefield Awareness reaction.", "actions": [ @@ -1864,7 +1864,7 @@ "type": "Drone", "sp": 2, "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 1, "effect": "The sentinel drone can be deployed to any free space within Sensors and line of sight, where it establishes a burst 2 security perimeter. Hostile characters within the affected area take 3 kinetic damage from the drone’s automatic fire before making any attack.
The sentinel drone can be redeployed to a new location or recalled as a quick action.", "deployables": [ @@ -1894,7 +1894,7 @@ } ], "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 2, "effect": "Any time you or any allied character adjacent to you is missed by a tech attack or succeed on a save against a hostile tech action, choose one of the following:", "description": "The //SCORPION program has a long history on the omninet despite its rather mundane operation (for HORUS-tagged code, at least). Traced back to pre-Deimos theorycode found on an obscure research paper discussing pre-NHP machine mind reflex-responses, //SCORPION evolved from a simple packet interpreter to a robust anti-incursion program, nimble enough to adapt to most any market-line system that receives its broadcast.", @@ -1910,7 +1910,7 @@ } ], "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 2, "actions": [ { @@ -1948,7 +1948,7 @@ } ], "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 3, "actions": [ { @@ -1979,7 +1979,7 @@ } ], "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 1, "actions": [ { @@ -2002,7 +2002,7 @@ "type": "Drone", "sp": 2, "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 2, "effect": "This large, armored tempest drone may be deployed to a free space within Sensors and line of sight.", "deployables": [ @@ -2037,7 +2037,7 @@ "type": "Drone", "sp": 2, "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 3, "effect": "This assassin drone may be deployed to any free, adjacent space.", "deployables": [ @@ -2076,7 +2076,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 1, "actions": [ { @@ -2104,7 +2104,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 2, "actions": [ { @@ -2131,7 +2131,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 3, "actions": [ { @@ -2156,7 +2156,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 3, "actions": [ { @@ -2185,7 +2185,7 @@ } ], "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 1, "actions": [ { @@ -2227,7 +2227,7 @@ } ], "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 1, "actions": [ { @@ -2250,7 +2250,7 @@ "type": "Tech", "sp": 2, "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 2, "actions": [ { @@ -2276,7 +2276,7 @@ "sp": 2, "tags": [], "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 2, "actions": [ { @@ -2298,7 +2298,7 @@ "name": "Interdiction Field", "sp": 3, "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 3, "actions": [ { @@ -2320,7 +2320,7 @@ } ], "source": "HORUS", - "license": "MINOTAUR", + "license": "Minotaur", "license_level": 3, "actions": [ { @@ -2349,7 +2349,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 1, "actions": [ { @@ -2370,7 +2370,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 2, "actions": [ { @@ -2399,7 +2399,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 3, "actions": [ { @@ -2436,7 +2436,7 @@ } ], "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 1, "actions": [ { @@ -2481,7 +2481,7 @@ } ], "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 1, "actions": [ { @@ -2507,7 +2507,7 @@ } ], "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 2, "effect": "Expend a charge to deploy this autoloader drone to any adjacent space.", "deployables": [ @@ -2529,7 +2529,7 @@ "name": "Flak Launcher", "sp": 2, "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 2, "actions": [ { @@ -2554,7 +2554,7 @@ } ], "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 3, "actions": [ { @@ -2579,7 +2579,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 1, "effect": "When you clear all heat or take stress, your mech’s cooling vents open and unleash a burst 1 explosion. Characters within the affected area take 2 heat and 2 burn.", "description": "With the right tweaks, it becomes possible to dump excess heat into the area directly surrounding a chassis. Explosive venting is an unsanctioned, unsafe method of sudden cooling that has nevertheless been adopted by many pilots.", @@ -2603,7 +2603,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 2, "actions": [ { @@ -2653,7 +2653,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 2, "actions": [ { @@ -2682,7 +2682,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 3, "actions": [ { @@ -2712,7 +2712,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 1, "actions": [ { @@ -2757,7 +2757,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 2, "actions": [ { @@ -2782,7 +2782,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 3, "actions": [ { @@ -2805,7 +2805,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 3, "actions": [ { @@ -2836,7 +2836,7 @@ } ], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 1, "effect": "This system charges as a quick action, readying a projected stasis point. While it is charged, you gain the Interdiction Point reaction. It can only hold one charge at a time, but charges last for the rest of the scene or until used.", "actions": [ @@ -2870,7 +2870,7 @@ } ], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 1, "actions": [ { @@ -2902,7 +2902,7 @@ } ], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 2, "effect": "Expend a charge to activate this stasis barrier, generating a line 4 barrier 4 spaces high in free spaces with at least one space adjacent to you.", "deployables": [ @@ -2940,7 +2940,7 @@ } ], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 3, "actions": [ { @@ -2965,7 +2965,7 @@ } ], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 1, "actions": [ { @@ -3003,7 +3003,7 @@ } ], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 2, "actions": [ { @@ -3035,7 +3035,7 @@ } ], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 2, "actions": [ { @@ -3065,7 +3065,7 @@ } ], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 3, "actions": [ { @@ -3087,7 +3087,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 1, "effect": "You may reroll overheating checks, but must keep the second result, even if it’s worse.", "description": "A necessary component of most mechs that rely on high energy output, reactor stabilizers add another layer of failsafes to vent heat, manage power flow, and shunt excessive output into weapons and systems as needed.", @@ -3107,7 +3107,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 2, "actions": [ { @@ -3140,7 +3140,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 3, "actions": [ { @@ -3162,7 +3162,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 1, "effect": "Weapons that deal any energy gain +5 RANGE if they are ranged or +1 THREAT if they are melee. When you take any structure damage, this system is destroyed and you take 1d6 AP explosive damage from the explosion. This damage can’t be prevented or reduced in any way.", "bonuses": [ @@ -3194,7 +3194,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 2, "effect": "When you start your turn in the Danger Zone, you gain Resistance to heat for the rest of the turn. This effect persists even if you leave the Danger Zone during your turn.", "description": "The Deep Well experimental heat-sink system is a part of the Armory’s VANGUARD line of equipment, available to licensed beta testers. Through a complex, delicate weave of heat exchangers, Deep Well recycles the heat generated by a mech into usable energy. The system works well, but the delicate nature of the exchange renders it highly volatile.", @@ -3222,7 +3222,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 3, "actions": [ { @@ -3251,7 +3251,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 3, "actions": [ { diff --git a/lib/weapons.json b/lib/weapons.json index 011ef32..5ffafdb 100644 --- a/lib/weapons.json +++ b/lib/weapons.json @@ -664,7 +664,7 @@ } ], "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 1, "on_crit": "Your target becomes Shredded until the end of the current turn.", "description": "A simple tactical-scale version of a logging tool, IPS-N’s chain axe is a serrated chainblade run off core power. The axe’s teeth are tungsten-tipped, hardened to chew through both hard and soft targets. Chain axes are effective weapons and utility tools that are often used by boarding parties to breach reinforced bulkheads.", @@ -688,7 +688,7 @@ } ], "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 2, "effect": "This weapon ignores ranged penalties from Engaged, and deals 3 Kinetic damage to Grappled or Biological targets, instead of 1.", "description": "The IPS-N Bristlecrown Flechette Launcher uses a hive-analogous mechanism to project a total soft-target kill zone in a dome around the user, proactively denying hostile infantry-tier actions.", @@ -718,7 +718,7 @@ } ], "source": "IPS-N", - "license": "BLACKBEARD", + "license": "Blackbeard", "license_level": 2, "description": "IPS-N’s nanocarbon sword is a new spin on an old classic. Embedded nanosensors along the blade capture a full spectrum of data and transfer it to omninet storage banks for after-action review. Meanwhile, onboard software interprets the live feedback and adjusts the molecular composition of the blade edge in real time.", "license_id": "mf_blackbeard" @@ -729,7 +729,7 @@ "mount": "Main", "type": "Cannon", "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 1, "profiles": [ { @@ -828,7 +828,7 @@ } ], "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 2, "on_hit": "The target must succeed on a Hull save or become Impaired until the end of their next turn.", "description": "Concussion missiles are fitted with overpressure-generating charges with low shatter and low incandescence – they’re meant to stun, deter, push back, and disorient, usually in tandem with a larger, more lethal attack.", @@ -840,7 +840,7 @@ "mount": "Superheavy", "type": "Cannon", "source": "IPS-N", - "license": "DRAKE", + "license": "Drake", "license_level": 3, "profiles": [ { @@ -936,7 +936,7 @@ } ], "source": "IPS-N", - "license": "LANCASTER", + "license": "Lancaster", "license_level": 3, "effect": "This weapon deals 10AP energy to objects, cover, terrain, and the environment.", "description": "Plasma cutters were tools first: simple blades built to toggle and sustain a plasma sheath, making it easier to cut metal. Repeated ad hoc use of cutters as personal defense weapons against pirate boarding parties convinced IPS-N of the need for a mil-spec variant of the civilian tool – the Cutter, now in its second generation. The Cutter MkII feeds directly from the mech’s power core, with a port to attach power packs in case of cord severance. Although the cutting edge can be shortened to a knife length, its most popular setting is the “cutlass”, a medium-length option perfect for balancing reach and maneuverability in close quarters.", @@ -970,7 +970,7 @@ } ], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 1, "description": "A war pike is a simple weapon – a long haft, topped with a dense, slim point, meant to puncture armor. Early designs were derivative of mining pylons, but the modern war pike is a sturdy, balanced, and reliable weapon that’s perfect for a charge.", "license_id": "mf_nelson" @@ -993,7 +993,7 @@ } ], "source": "IPS-N", - "license": "NELSON", + "license": "Nelson", "license_level": 3, "on_crit": "Your target must succeed on a Hull save or be knocked Prone.", "description": "IPS-N’s line of power knuckles are another popular purchase for pilots who prefer to fight up close. Taking the form of anything from shaped studs to hyperdense knuckles, or a series of magnetically accelerated micro-rams, power knuckles amplify the already incredible hitting power of a mech.", @@ -1030,7 +1030,7 @@ } ], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 1, "description": "The IPS-N hand cannon is a licensed version of GMS’s Type-I Pistol, adapted for a much heavier caliber. This modification requires the belt-fed system of the GMS build to be swapped for a cylinder or magazine-based system, depending on the specific model of hand cannon.", "license_id": "mf_raleigh" @@ -1066,7 +1066,7 @@ } ], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 2, "description": "As with many of IPS-N’s classic weapons, the bolt thrower is descended from a civilian mining tool. It fires self-propelled explosive bolts, perfect for use in micro- and null-gravity as well as in-atmosphere.", "license_id": "mf_raleigh" @@ -1095,7 +1095,7 @@ } ], "source": "IPS-N", - "license": "RALEIGH", + "license": "Raleigh", "license_level": 3, "description": "A kinetic hammer is a simple tool, but a brutal one. Made up of a supermassive head fused to a long haft, the hammer carries enough force to create massively traumatic pressure waves upon landing a successful blow.", "license_id": "mf_raleigh" @@ -1127,7 +1127,7 @@ } ], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 1, "description": "The Deck-Sweeper Automatic Shotgun is a belt-fed scattergun, a favorite of marine pilots aboard stations and capital ships. Its methodology is straightforward: charge, point, and fire. A single-barrel constriction allows for pneumatic absorption – dampening the effect of its incredible recoil – and its belt feeder is compatible with many types of shot-and-slug ammunition.", "license_id": "mf_tortuga" @@ -1156,7 +1156,7 @@ } ], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 2, "on_attack": "Creates a cloud of smoke and detritus in the attack cone, providing soft cover in the affected area that lasts until the end of your next turn.", "description": "The Daisy Cutter is an effective weapon – if outdated – that’s still favored by many marine pilots. Essentially, it’s a massive shotgun; the pilot loads a charge into the gun’s breech, drops a packed sabot down the barrel, aims, and fires a hellfire cloud of flechette darts, bearings, and ignited magnesium strips, guaranteed to clear any deck on which it’s been fired.", @@ -1185,7 +1185,7 @@ } ], "source": "IPS-N", - "license": "TORTUGA", + "license": "Tortuga", "license_level": 2, "on_crit": "Your target must succeed on a Hull save or become Stunned until the end of their next turn.", "description": "Modified originally from blast-mining equipment, the catalytic hammer (colloquially, the “pilebunker”) has since been refined into a formidable melee weapon. When fired, a charge propels the hammer – a solid cylinder with a spike on one end – through a short barrel, impacting with enormous kinetic force. Standard hammer heads are smooth to allow for easy extraction from targets, but they can be detached and replaced if retrieval is impossible. Any installation of a catalytic hammer necessitates superstructure reinforcement to allow for sufficient energy dispersal.", @@ -1209,7 +1209,7 @@ } ], "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 1, "on_attack": "You also attack all characters in a Line between you and your target. You take 1 heat for each target past the first.", "description": "The impact lance is a mil-spec variant of a common mining tool: the single-use chemical survey laser. IPS-N’s military variant mounts a series of impact lances on a mech’s brachial or thoracic carriages, leaving its manipulators free to field other weapons and systems. It can be wired directly into a chassis’ core, or charged with disposable chemical batteries.
The lance array fires for a microsecond, burning through its stored charge to produce an intense burst of light that stabs out in a tight, pulsed beam capable of searing through meters of hardened bulkhead.", @@ -1243,7 +1243,7 @@ } ], "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 2, "on_hit": "Targets must succeed on a Hull save or become Immobilized until the end of their next turn.", "description": "The Impaler’s noncombustible, sabot-jacketed two-stage macroflechettes can pierce even the heaviest armor. Once catapulted from its launcher, the sabot disengages on approach to its target and triggers a second stage – internal propulsion drives the macroflechette forward with incredible velocity. Over-penetration is certain against soft targets; IPS-N advises firing this weapon only when the area behind the target is clear of allies or noncombatants.", @@ -1279,7 +1279,7 @@ } ], "source": "IPS-N", - "license": "VLAD", + "license": "Vlad", "license_level": 3, "effect": "When attacking a character that is Prone, Immobilized, or Stunned, this weapon’s Overkill tag does an extra +1d6 bonus damage each time it activates. This can activate indefinitely if the new bonus die result is a 1, triggering Overkill again.", "description": "The combat drill is a brutal close-combat weapon, powered by a massive external catalyst pack. The bit is tipped with microplasmatic projectors designed to pre-treat the target and ensure drill penetration.", @@ -1303,7 +1303,7 @@ } ], "source": "SSC", - "license": "BLACK WITCH", + "license": "Black Witch", "license_level": 1, "on_hit": "All characters within the affected area must succeed on a Hull save or be pulled 1d3+1 spaces toward you, or as close as possible.", "description": "SSC’s magnetic cannon is a first from the Exotic Materials Group: an aperture-focused electromagnetic projection beam that uses intense pulses of magnetic energy to disrupt and damage hardware. Targets caught in the beam of a magnetic cannon suffer additional damage to their software as massive systemic stress is inflicted on sensitive components.", @@ -1339,7 +1339,7 @@ } ], "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 2, "description": "The Vulture Designated Marksman Rifle (DMR) is SSC’s core battle rifle. Reliable, available in dozens of configurations and calibers, and fed by box, drum, or belt, the Vulture is a popular armament across a wide range of mechs.", "license_id": "mf_deaths_head" @@ -1374,7 +1374,7 @@ } ], "source": "SSC", - "license": "DEATH’S HEAD", + "license": "Death’s Head", "license_level": 3, "description": "Railguns are simple, elegant weapons. With magnetically accelerated projectiles and no moving parts, they are effective in any theater and entirely self-contained within disposable units. This efficacy comes at a cost: railguns have massive power draw, making it necessary for wielders to carry core-charged auxiliary power translation packs.", "license_id": "mf_deaths_head" @@ -1402,7 +1402,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 1, "effect": "This weapon does not attack allied characters caught in its area of effect; instead, it shrouds them in a field of coruscating energy that throws off targeting systems, giving them soft cover until the end of their next turn.", "description": "“We made first contact maybe an hour after breaching the vault. I remember nothing of it. I’m told most of my squad was killed outright; all I remember is light – brilliant – and a lightness in my own being.
“I do believe that I died in that moment, and yet I’m here, and I can’t square these two realities. Something has gone wrong, something has gone wrong, something has gone–”", @@ -1438,7 +1438,7 @@ } ], "source": "SSC", - "license": "DUSK WING", + "license": "Dusk Wing", "license_level": 2, "on_crit": "Target becomes Impaired until the end of their next turn.", "description": "“Yes, they could die. We killed many of them – blew them away with burst launchers and cannons. I don’t think they mattered to it. Not like insects; not like that… there’s still a use for insects: as food, as necessary components in an ecosystem. Their deaths slowed us, but it didn’t command them to slow us. Even when we breached the last chamber and saw it, I don’t even think it recognized we were there.”", @@ -1468,7 +1468,7 @@ } ], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 2, "description": "Rail rifles are popular weapons for use in all theaters, but they are the only choice for pilots operating in atmospheres made up of highly combustible gases. They use a line of cascading electromagnets to accelerate small projectiles at tremendous speeds, firing without the need for combustion.
Like other rail weapons, rail rifles are quiet in comparison to their traditional counterparts, although massive power requirements make it difficult to mask their energy signatures.", "license_id": "mf_metalmark" @@ -1505,7 +1505,7 @@ } ], "source": "SSC", - "license": "METALMARK", + "license": "Metalmark", "license_level": 2, "description": "Shock knives are short, powered blades designed for integration with Shock Wreaths, a popular post-fab modification. The knives are custom-sculpted by SSC’s Terashima artisan enclave, each one bearing the unique hash-stamp of its designer. Part of SSC’s LUX-Iconic line – a civilian-accessible track of the BELLA CIAO line – each shock knife print code allows only a single use. If lost, pilots must submit an apology and request in writing explaining the circumstances of the loss in order to receive another code.", "license_id": "mf_metalmark" @@ -1533,7 +1533,7 @@ } ], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 1, "effect": "This weapon can attack two targets at a time.", "description": "“It was a duel. This is why they were made: to duel, and in that combat, to shake the pillars of the universe.” — “Notes for Young John”, Ministrations of the Master Teacher", @@ -1568,7 +1568,7 @@ } ], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 2, "description": "Gandiva missiles are a reliable mainstay from Smith-Shimano’s BELLA CIAO line. Like the heavier Pinaka, the Gandiva is equipped with jet-assisted midflight repositioning systems, enhancing target navigation in rapidly changing battlefield environments. The Gandiva’s delivery platform is administered by a hivemind COMP/CON drone AI, giving it the capacity to learn from each right-of-launch experience.", "sp": 1, @@ -1605,7 +1605,7 @@ } ], "source": "SSC", - "license": "MONARCH", + "license": "Monarch", "license_level": 3, "effect": "Attacks with this weapon create up to two blast 1 areas, which cannot overlap.
You may also delay the impact of attacks made with this weapon. Choose the target area(s), which become visible to all characters: the missiles land at the end of the next round, after all characters have acted, and deal 3d6 explosive damage instead of 2d6, but you become Slowed until the end of your next turn.", "description": "Pinaka missiles are massive, two-stage missiles typically mounted along a mech’s spine or carried, disassembled, to be launched from a brachial mount. The Pinaka was originally adapted from ship-to-ship missiles; as such, their second stage uses jet-assist repositioning for midflight orientation.", @@ -1634,7 +1634,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 1, "on_crit": "You may teleport 2 spaces in any direction after the attack resolves.", "description": ">//[Am I alone here?]
>//[[No. There is only an absence of you. It is very busy here, but you cannot see it]]
— DHIYED fragment tablet 1.3", @@ -1663,7 +1663,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 1, "description": "Intended for use as force multipliers in close-range engagements, Vijaya rockets are miniaturized rockets launched from a drum-fed launcher. On detonation, the rockets’ shaped charges project the blast forward, away from the user.", "license_id": "mf_mourning_cloak" @@ -1691,7 +1691,7 @@ } ], "source": "SSC", - "license": "MOURNING CLOAK", + "license": "Mourning Cloak", "license_level": 3, "on_crit": "Deal +1d6 bonus damage.", "description": "The variable sword is a Smith-Shimano hallmark: a length of razor-sharp molecular wire attached to a handle and locked in place by a magnetic field, variable swords are invisible to the naked eye until they cut into their target. Designed in the early days of interstellar travel, variable swords were meant to allow for the precise gathering of samples, while also reducing the overall burden on a mech’s core.", @@ -1723,7 +1723,7 @@ } ], "source": "SSC", - "license": "SWALLOWTAIL", + "license": "Swallowtail", "license_level": 2, "description": "The Oracle Indirect Light Machine Gun (designated O/LMG-I) packs a subsentient, high-volume DOWNPOUR static quad-barrel system into a single cylinder typically installed on the dorsal panel of a chassis. Paired with a firing system, the Oracle is capable of directing persistent defilade-ignorant kinetic fire at targets.", "sp": 1, @@ -1752,7 +1752,7 @@ } ], "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 3, "on_crit": "Pull your target to a free space adjacent to you, or as close as possible.", "description": "Using swarm-coding and legion directives, HORUS collectivists created a framework to organize a swarm of nanites into a whip-like weapon. Nanobot whips can retract into their base blister for stowing, detach in melee combat to restrain nearby enemies, and return to their base unit when summoned.", @@ -1789,7 +1789,7 @@ } ], "source": "HORUS", - "license": "BALOR", + "license": "Balor", "license_level": 3, "description": "SWARM/HIVE nanites are among the more insidious weapons produced by HORUS: dispatched in maniples – single “swarm” units carrying enough nanites to fill a square meter – SWARM/HIVE nanites combine the systemic invasion properties of BOOST/HIVE code with the aggressive consumption of a CONSUME/HIVE maniple. Launched from mounted blisters, SWARM/HIVE nanite maniples fall upon their targets as great clouds of teeth, infiltrating sensitive compartments and modules before consuming any organic and inorganic material they touch.", "license_id": "mf_balor" @@ -1821,7 +1821,7 @@ } ], "source": "HORUS", - "license": "GOBLIN", + "license": "Goblin", "license_level": 1, "effect": "Instead of using any kind of trigger mechanism, this weapon automatically scans for target locks, firing spinning, razor-sharp disks upon successful IDs. Gain the Autonomous Assault reaction, which is the only way you can attack with the Autopod", "actions": [ @@ -1856,7 +1856,7 @@ } ], "source": "HORUS", - "license": "GORGON", + "license": "Gorgon", "license_level": 3, "effect": "Gain the Snicker-Snack reaction, which is the only way you can attack with this weapon.", "actions": [ @@ -1897,7 +1897,7 @@ } ], "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 1, "on_attack": "Choose this weapon’s damage type.", "description": "Ghoul nexuses command some of the largest viable drones in modern combat. These drones are slightly smaller than an average human—metal cylinders bristling with hardpoints suitable for most infantry-level anti-mech weapons. Propelled by VTOL/hover-capable jet systems, Ghoul drones are fearsome, all-theater autonomous units that are difficult to track and take down.", @@ -1926,7 +1926,7 @@ } ], "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 2, "effect": "This weapon may be used to attack as normal, or deployed as a Drone", "deployables": [ @@ -1973,7 +1973,7 @@ } ], "source": "HORUS", - "license": "HYDRA", + "license": "Hydra", "license_level": 3, "on_attack": "You can make a second attack with this weapon at the start of your next turn as a protocol. This secondary attack can’t deal bonus damage, and doesn't trigger additional secondary attacks.
You may center this weapon’s attack on either yourself or any of your Drones within Sensors.", "actions": [ @@ -2014,7 +2014,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 1, "description": "“Burn, thou fiend, before the fire of the Eye of RA!”", "license_id": "mf_manticore" @@ -2043,7 +2043,7 @@ } ], "source": "HORUS", - "license": "MANTICORE", + "license": "Manticore", "license_level": 2, "on_hit": "You may also make a secondary attack against a different character within range 3 of the first target. You can continue making secondary attacks on hits, as long as there are new, valid targets within range; however, each attack generates 1 heat, and secondary attacks can’t deal bonus damage. Characters can’t be hit more than once with the same firing of this weapon.", "description": "“Fire be upon thee, APEP! Thy flesh is seared from thy bones; The Lord of the Duat will never enable thy shade to rise again!”", @@ -2078,7 +2078,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 1, "description": "“Smart weapon” is a broad term that describes any and all weapons capable of interacting with onboard systems in order to boost their combat efficacy. Smartguns are weapons that come pre-loaded with companion software and the necessary hardware in order to interact with targeting systems and host NHPs. A popular addition to many HORUS mechs, smart weapons make for reliable kinetic delivery systems.", "sp": 2, @@ -2106,7 +2106,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 2, "effect": "This horrifying weapon has no basic form; it constantly contorts itself into different shapes, mimicking the weapons of other combatants. It counts as all ranged weapon types simultaneously (e.g., CQB, Rifle, etc.), but it can’t take Mods or benefit from core bonuses, although it still benefits from talents as normal.
At the start of combat, roll 3d20 and note the results in order: X, Y, and Z. X is its starting base Range (before modifications from talents). At the start of each of your turns after the first, the mimic gun cycles to the next result, taking that as its base Range. After Z, it cycles back to X.
The mimic gun does kinetic equal to 1 + half of its current base Range.
You may provoke the mimic gun as a full action, rolling a new set of 3d20.", "actions": [ @@ -2139,7 +2139,7 @@ } ], "source": "HORUS", - "license": "PEGASUS", + "license": "Pegasus", "license_level": 3, "actions": [ { @@ -2159,7 +2159,7 @@ "mount": "Superheavy", "type": "Cannon", "source": "HA", - "license": "BARBAROSSA", + "license": "Barbarossa", "license_level": 3, "profiles": [ { @@ -2249,7 +2249,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 1, "description": "Between the thick arboreal environment of Hercynia, the swarm tactics of the Egregorians, and the ineffectual performance of slug ammunition, the need for wide-effect weapons was apparent. GMS quick developed the Krakatoa – a thermobaric flamethrower – and disseminated it to affiliates. The Krakatoa was quickly adopted by Union’s Marine Expeditionary Forces, seeing heavy use in the depths of the Hercynian continental jungles thanks to its stability, reliability, and stopping power.
Later reworked and adopted by the Armory following the resolution of the Hercynian Crisis, the Krakatoa has become a popular tool for the creation of area-of-denial firebreaks.", "license_id": "mf_genghis" @@ -2286,7 +2286,7 @@ } ], "source": "HA", - "license": "GENGHIS", + "license": "Genghis", "license_level": 3, "effect": "Can be fired as Cone 7 or Line 10", "on_attack": "White-hot flames continue to burn in 3 free spaces of your choice within the affected area, lasting for the rest of the scene. When characters start their turn in one of these spaces or enter one for the first time in a round, they take 1d6 energy damage.", @@ -2321,7 +2321,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 1, "description": "The stub cannon is a supercompact rotary cannon – short-range, but suitable for integration into hardpoints and manipulators.", "license_id": "mf_iskander" @@ -2345,7 +2345,7 @@ } ], "source": "HA", - "license": "ISKANDER", + "license": "Iskander", "license_level": 2, "on_attack": "Characters within the affected area must succeed on a Hull save or take 1d6 energy damage and be pulled as close to the center of the blast possible. This weapon cannot be modified or benefit from core bonuses.", "description": "“The complex negotiations of gravity and time, shattered in an instant by a machine that can pluck waves like a player strums the strings of a guitar.
We’ve weaponized the force that holds all things in its embrace. What could go wrong?”", @@ -2388,7 +2388,7 @@ } ], "source": "HA", - "license": "NAPOLEON", + "license": "Napoleon", "license_level": 3, "description": "The Displacer is the result of ongoing blinkspace exposure tests and refinement of standard interstellar travel methods. In terms of appearance, the Displacer could be mistaken for a conventional energy rifle, but it requires a massive secondary, dorsal-mounted reactor: when fired, the Displacer identifies a bubble of local space (size and location determined on an ad hoc basis by the user) and snaps it into blinkspace. The destination of the bubble is unknown, but the effect is dramatic: anything inside simply ceases to exist in this dimension, transported somewhere in the void of blinkspace. The Displacer makes no sound when fired, but the sudden and necessary venting of its power supply is tremendous; similarly, the heatwave of its backblast vent is deadly to any unshielded personnel exposed to it.", "license_id": "mf_napoleon" @@ -2416,7 +2416,7 @@ } ], "source": "HA", - "license": "SALADIN", + "license": "Saladin", "license_level": 1, "effect": "The final attack roll for this weapon can never be affected by difficulty.", "description": "Developed following costly urban and naval boarding engagements in the Interest War, Shatterhead Colony Missiles are now a standard part of the arsenal fielded by Armory interdiction teams. When they reach an optimal distance, Shatterheads break open in a burst of high-catalyst fuel to reveal a cluster of small thermobaric pellets that spread out and ignite, choking the affected area with flame. The effect overloads energy shielding and saturates cover, though only a small percent of the projectiles actually reach their target.", @@ -2451,7 +2451,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 1, "description": "Laser rifles contain a series of apertures and lenses that amplify and focus light into tight beams, sometimes visible, that heat the zone of impact for long enough to turn it into plasma. The SOL-Pattern Laser Rifle consistently outputs 3.5 petawatts, pulsed, but can also project a steady beam at lower power levels. The SOL is entirely self-contained but can be patched into a mech’s reactor core for emergency recharge.
Although some laser rifles double as communications and data-transfer devices, the SOL is strictly suitable for combat applications.", "license_id": "mf_sherman" @@ -2484,7 +2484,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 2, "description": "The Harrison Armory ANDROMEDA-Pattern Heavy Laser Rifle scales up the SOL by half, adding a second projector that can fire independently, synchronized, or in alternating patterns and wavelengths with the primary projector. The effect overwhelms most shields, but the power draw necessary makes this weapon impractical on platforms without the necessary heat reduction and dispersal to manage the incredible cost.", "license_id": "mf_sherman" @@ -2520,7 +2520,7 @@ } ], "source": "HA", - "license": "SHERMAN", + "license": "Sherman", "license_level": 3, "on_attack": "If you’re in the Danger Zone, create a cone 3 backblast of burning plasma in the opposite direction to the attack. Characters within the affected area must succeed on an Engineering save or take 4 burn and 2 heat. Until the start of your next turn, the affected area provides soft cover.", "description": "Tachyon lances are the weaponized results of joint IPS-N and Harrison Armory experiments into faster-than-light travel. Rendered obsolete by subsequent developments in blinkspace travel (and the difficulty of ensuring corporeal passenger survival), the Armory’s tachyon accelerators were mothballed until Think Tank engineers realized their potential application as weapons. Tachyon lances project tachyon particles – essentially subatomic localized objects – faster than light toward their targets. These particles are impossible to perceive optically, and because they travel faster than light, can’t be seen or evaded. Although the particles are tiny, they travel with colossal speed and energy. The damage a tachyon lance deals to its target – should it hit – is unparalleled.", @@ -2557,7 +2557,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 1, "on_hit": "Make a secondary attack against all characters within burst 1 of the target. These attacks can’t deal bonus damage, and don’t trigger the Annihilator’s heat cost or secondary attacks.", "description": "Harrison Armory is known to employ somewhat unconventional development methods: tactical solutions are theorized and designed in the field as often as they are in the lab, with the former often outperforming the latter. The Annihilator’s name comes from pilots’ slang for a jury-rigged weapon first improvised in the Bradbury Rebellion, when desperate resistance pilots found a way to shunt the incredible waste heat from their reactors into a directed blast.", @@ -2594,7 +2594,7 @@ } ], "source": "HA", - "license": "TOKUGAWA", + "license": "Tokugawa", "license_level": 2, "description": "The Torch is a potent weapon: a heavy crescent-bladed plasma cutter, powered straight from a chassis’ reactor. Torches generally project as axes, though their blades can be changed to a range of other shapes. A common weapon in CQB theaters, the torch has lately become a status symbol among officers, carried by many alongside a smaller auxiliary weapon.", "license_id": "mf_tokugawa" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0903d99 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,72 @@ +{ + "name": "@massif/lancer-data", + "version": "3.1.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@massif/lancer-data", + "version": "3.1.1", + "license": "GPL-3.0-or-later", + "devDependencies": { + "zip-lib": "^0.7.3" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/zip-lib": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/zip-lib/-/zip-lib-0.7.3.tgz", + "integrity": "sha512-hp40KYzTJvoaCRr2t6hztlPnVmHYqDUDiIn0hlfAFwVBs3/jwkLy8aZ7NVGHECeWH2Tv8WPwWyR6QuWYarIjJQ==", + "dev": true, + "dependencies": { + "yauzl": "^2.10.0", + "yazl": "^2.5.1" + }, + "engines": { + "node": ">=8" + } + } + } +} diff --git a/package.json b/package.json index b955ee0..4bab0f6 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Data for the LANCER TTRPG", "main": "index.js", "scripts": { - "build": "node ./scripts/build.js" + "build": "node ./scripts/build.js", + "test": "node ./scripts/test.js" }, "repository": { "type": "git", diff --git a/scripts/test.js b/scripts/test.js new file mode 100644 index 0000000..ad608b1 --- /dev/null +++ b/scripts/test.js @@ -0,0 +1,19 @@ +import * as fs from 'fs'; +var currentDir = process.cwd(); +var files = fs.readdirSync('./lib'); +let contents = "" +let valid = true + +files.forEach(filename => { + contents = fs.readFileSync(`./lib/${filename}`, 'utf-8') + try { + JSON.parse(contents) + } catch (e) { + console.error(`invalid JSON in ${filename}`); + valid = false; + } +}); + +if (!valid) { + throw "One or more JSON files are invalid." +} diff --git a/yarn.lock b/yarn.lock index 276180a..fa23dd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,24 +4,24 @@ buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" @@ -29,14 +29,14 @@ yauzl@^2.10.0: yazl@^2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" + resolved "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz" integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== dependencies: buffer-crc32 "~0.2.3" zip-lib@^0.7.3: version "0.7.3" - resolved "https://registry.yarnpkg.com/zip-lib/-/zip-lib-0.7.3.tgz#0f0c425569a79f7ef3641208bab53244ff23ff60" + resolved "https://registry.npmjs.org/zip-lib/-/zip-lib-0.7.3.tgz" integrity sha512-hp40KYzTJvoaCRr2t6hztlPnVmHYqDUDiIn0hlfAFwVBs3/jwkLy8aZ7NVGHECeWH2Tv8WPwWyR6QuWYarIjJQ== dependencies: yauzl "^2.10.0"