Coder Social home page Coder Social logo

foundryvtt / black-flag Goto Github PK

View Code? Open in Web Editor NEW
10.0 7.0 5.0 25.74 MB

The official repository for Kobold Press's "Black Flag" game system implementation in Foundry Virtual Tabletop.

License: MIT License

JavaScript 56.85% Handlebars 34.13% CSS 9.02%
foundryvtt ttrpg black-flag

black-flag's Introduction

Foundry Virtual Tabletop

This repository serves as the catchpen for tracking planned features, feature requests, bugs and other issues for the Foundry Virtual Tabletop software.

Foundry Virtual Tabletop provides an innovative online role-playing experience. The software supports Windows, Mac, and Linux and allows you to self-host a game server that players connect to for free directly through a web browser.

Issue Tracker

Our issue tracker provides a simple overview and project management tools for outlining planned work for the core software, and allows our users to easily keep up to date on how development is proceeding. More detailed than a simple roadmap, users can filter specific types of issues through GitHub labels, or use our project views to see work effort on particular milestones.

The Foundry VTT Development team makes use of GitHub Projects to organize and scope the planned work we intend to do for each phase of a new software version. Through use of specific filters and project boards our users can easily keep up to date:

Our Project Boards are generally the best way to see everything we're planning to do at the scale of a full software version. If you want to see everything we are planning across the whole version of the software this is where to look.

We use Milestones to compartmentalize the section of a version we we are actively working on. Each milestone displays what work was done in a particular release, rather than a whole version.

Labels are an efficient way to check whether or not someone has already filed a bug report or feature request you may wish to file. In addition, they can be used to browse for issues related to particular parts of the software.

Other Important Links

Our Release Notes page houses the patch notes for our software releases, and often feature short highlight sections to deatil the major features a release includes.

We maintain an active presence on our official community Discord server to engage with our community and receive active feedback!

black-flag's People

Contributors

akrigline avatar anathemamask avatar cswendrowski avatar drental avatar endlesnights avatar mattexdee avatar stwlam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

black-flag's Issues

Document Caches do not populate the first time you load into a new world

Core v10.291
system commit 0e11047

Reproduction Steps:
0. Have black-flag system and black-flag-content module installed

  1. Create a new world with the black-flag system
  2. Create a new character
  3. Observe "Lineage", "Heritage", etc dropdowns.

Expected: These should be populated
Actual: The dropdowns are empty

Looking at CONFIG.SYSTEM I see the Maps exist, but are empty.


This does not happen if you return to setup and then come back.
Is it possible that Foundry Core does not have the content module active when init for the system prepares the document caches?

This does not reproduce if you remove all actors from the world, reload (or return to setup and come back), and then create a new character.

Actor creation fails in Foundry v11

When starting a new Black Flag world and creating an actor you get the following error:

BlackFlagActor validation errors:
system:
traits: must be an Array
traitChoices: must be an Array
fetch @ foundry.js:68000

Actor Traits Unselecting

Foundry v10.291
BF v0.0.3

Creating a new actor with the Human Lineage and Stone Heritage, there is a conflict with Tool Proficiency and Additional Proficiencies. If I select Mason Tools, the red box changes to a green check. I then select the additional languages in Additional Proficiencies and the Tool Proficiency unchecks back to a red box. When I go to correct that issue, the Additional Proficiencies unchecks itself after Tool Proficiencies are selected. It's a constant back and forth issue.

Create Spell Item Schema

Playtest Packet 2 describes "Spell"s which would be best implemented as an Item type. I'm going to bring some knowledge from the 5e system and make note of what shortcomings were felt by people who wanted to extend the spellcasting system

Compiling as much knowledge up front as I can about this topic because it will be a doozy.

Descriptive Text

description: HTML;
spellCircle: 'arcane' | 'divine' | 'primal' | 'wyrd'; // this selection should be extensible by modules
spellRing: number; (0 can represent cantrips, max of 9 should not be assumed, often this is expanded beyond 9)
spellSchool: 'one of the options'; // this should be extensible by modules

Origin

Something we were lacking in 5e was a way to mark where the spell came from.
E.g. a Cleric/Druid might prepare different spells for each class, but there should be a way to differentiate them.
Similarly, some items might have spells embedded in them, and ideally the system supports annotating this.

Components

5e ended up making these extensible by modules and turning them into checkboxes in the item sheet.

Target -- common item concept

A little convoluted and probably generalizable with other combat items.

Spells can affect specifically some kinds of things (all creatures, allies, enemies; sometimes also objects sometimes not objects, sometimes 'magical effects', only the caster, n creatures/allies/etcetcetc)

Then, they can affect a kind of area (within a cone/sphere/box/line, a specific selection of creatures within range)

And lastly, they have a range for when the origin of that kind of area begins (self, n ft)

target: {
  creatures: {
    number: number;
    type: 'allies' | 'any' | 'enemies' | 'self';
    alsoAffectsObjects: boolean;
  },
  area: {
    type: 'target' | 'cone' | 'sphere' | etc
  },
  range: {
    value: number;
    unit: 'ft' | 'mile' | etc; // remember metric is probably a thing
  }
}

Attacks or Saves -- common item concept

Complicated, there's probably different 'kinds' of attack rolls (weapon attack, spell attack at minimum), saves can target specific attributes, saves can be based on a specific ability score for the character.

Damage -- common item concept

Complicated, but worth building in the idea of damage types and damage groups early

Duration -- common item concept

duration: {
  type: 'instantaneous' | 'time' | 'other'

  // if time is the type
  timeValue?: number;
  timeUnit?: 'minutes' | 'hours' | 'days'; // etc.

  // if 'other' is the type
  // stuff like "until the start of your next turn" or "until the end of their next turn", etc...
  // unsure how to represent this, an enum?
}

Casting Time -- aka "Usage Time", common concept

For spells this is pretty clearly one of:

  • Action
  • Bonus Action
  • Reaction
  • Ritual
    But some features or items take 'minutes'/'hours'/etc, so we could generalize this as "usage time"
usageTime: {
  type: 'ritual' | 'action' | 'bonus action' | 'reaction' | 'special' | 'time'

  // if time is the type
  timeValue?: number;
  timeUnit?: 'minutes' | 'hours' | 'days'; // etc.
}

Trying to install Black Flag in Foundry VTT fails

I am trying to install the Black Flag system in Foundry and it gives me the following error in the console:

tup.js:292 Error: Unable to load valid system manifest data from "https://github.com/foundryvtt/black-flag/blob/main/system.json"
The requested manifest at "https://github.com/foundryvtt/black-flag/blob/main/system.json" did not provide system manifest data.
    at Module.installPackage (file:///home/foundry/resources/app/dist/packages/views.mjs:1:1634)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async SetupView.handlePost (file:///home/foundry/resources/app/dist/server/views/setup.mjs:1:1980)

Items can't be created

When I try to create a Background I get an error message instead:
image

Error: BlackFlagItem Model Validation Errors
[BlackFlagItem.system]: Model Validation Errors
[BackgroundTypeDataModel.description]: may not be undefined
[BackgroundTypeDataModel.color]: may not be undefined
[BackgroundTypeDataModel.equipment]: may not be undefined
    at SchemaField._validateType (commons.js:4098:15)
    at SchemaField.validate (commons.js:3824:37)
    at BlackFlagItem.validate (commons.js:5492:35)
    at new DataModel (commons.js:5269:26)
    at new Document (commons.js:5811:3)
    at new BaseItem (commons.js:8590:3)
    at new ClientDocumentMixin (foundry.js:13053:5)
    at new Item (foundry.js:19553:1)
    at new BlackFlagItem (item.mjs:1:16)
    at ClientDatabaseBackend._preCreateDocumentArray (foundry.js:12525:15)
onError @ foundry.js:747
_preCreateDocumentArray @ foundry.js:12527
_createDocuments @ foundry.js:12459
create @ commons.js:6738
await in create (async)
createDocuments @ commons.js:6110
create @ commons.js:6233
callback @ foundry.js:13608
button.callback @ foundry.js:56516
submit @ foundry.js:56403
_onClickButton @ foundry.js:56332
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2
foundry.js:59187 BlackFlagItem Model Validation Errors
[BlackFlagItem.system]: Model Validation Errors
[BackgroundTypeDataModel.description]: may not be undefined
[BackgroundTypeDataModel.color]: may not be undefined
[BackgroundTypeDataModel.equipment]: may not be undefined
fetch @ foundry.js:59187
notify @ foundry.js:59114
error @ foundry.js:59150
onError @ foundry.js:748
_preCreateDocumentArray @ foundry.js:12527
_createDocuments @ foundry.js:12459
create @ commons.js:6738
await in create (async)
createDocuments @ commons.js:6110
create @ commons.js:6233
callback @ foundry.js:13608
button.callback @ foundry.js:56516
submit @ foundry.js:56403
_onClickButton @ foundry.js:56332
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2

image

I have no modules active and am of course using the most current version of the System. I can work through what I need by copying items and will look into it again later.

Convert HP max to be a derived field

The gaining of max HP is pretty heavily tied to character creation choice selections, in particular your class and some talents.

It would be ideal to convert this into a derived field with an optional override_max to take the burden off of the user when creating and leveling up the character.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.