League-of-Foundry-Developers / torch

Simple torch module for Foundry VTT
10 stars 16 forks source link

DCC #37

Closed marcusadmortati closed 1 year ago

marcusadmortati commented 1 year ago

The mod is excellent! Would it be possible to include DCC (Dungeon Crawl Classics) in the list of systems configured?

lupestro commented 1 year ago

For better or worse, this module lives by the literal names of light sources. I don't want to offer someone support for something and then find it doesn't work because of an apostrophe. This has limited what systems I offer light sources for out of the box:

(I've had to supply aliases for slight naming differences from ddb-importer for dnd5e because it is so widely used.)

I'd love to support coc7, wod, cod, shadowrun5e, starwarsffg, and many other games I've played and enjoyed directly, but they are mostly used by the game-masters entering data from the books to run their game, so naming is unlikely to match precisely. For these, user-supplied light sources make sure they're only precisely matching two names they typed themselves. (Fortunately, this isn't taxing because few systems have more than six or eight simple light sources.)

Games where gear isn't a major part of play (like pbta) are a whole other category, are better off with our fallback approach of a single "self" light source with bright/dim radii configured for all users and all other light properties determined by the prototype token properties.

If DCC ships with a compendium containing light sources, by all means send me the JSON with the sources in it, using the names in the compendium. I'd love to have it join the party and I'll credit you with the contribution.

marcusadmortati commented 1 year ago

The DCC has in its compendium the torch and the flashlight as items, not as light sources...

lupestro commented 1 year ago

@marcusadmortati Ah, so the system comes with a compendium of items and the light sources are in it. That sounds like it's an excellent candidate to include. You want to create a custom JSON you can put into your game through the config to try it out, kick the tires, and then pass it back to me to get into the set delivered with the module? (I'll credit you with the contribution in the changelog, of course.)

marcusadmortati commented 1 year ago

Right! I'll try here, coding is far from my skill.

marcusadmortati commented 1 year ago

I believe what you are asking for is this. I apologize in advance for any errors, I have no coding skills.

{ "dcc": { "system": "dcc", "topology": "standard", "quantity" : "quantity", "aliases": { "Torch, each": "Torch, each",

}
"sources": {
  "Torch, each": {
    "name": "Torch, each",
    "type": "equipment",
    "consumable": true,
    "states": 2,
    "light": [
      { 
        "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
        "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false } 
      }
    ]
  }
}

}, ... }

lupestro commented 1 year ago

When I bring up a fresh DCC world, I see two compendia: User Guide and DCC Macros. Where are your items coming from?

marcusadmortati commented 1 year ago

No, it comes from the DCC Core Book Compendium. image

lupestro commented 1 year ago

Ah, okay, I see, it's a Goodman Games premium module. Got it. So that's a bullet-two item and still a good candidate. Unfortunately hard for me to test here without shelling out for the module. :(

What other light sources are there in those items? I see a Lantern. Are there candles as well? Do the rules give the bright/dim distances for each? Any cones, etc.? Can you post JSON with the whole list and verify everything goes on and off using it as an "Additional Light Sources" file? (By the way, you won't need an alias for anything you're doing so far, so you can omit that section.)

It's looking good so far.

marcusadmortati commented 1 year ago

Only torch and lantern. They are only listed as equipment, they do not have light parameters. In the system (book), both flashlight and torch use 15' bright, 30 dim and 360º as parameters.

lupestro commented 1 year ago

So they have a flashlight as well as a lantern and a torch? But no item for the flashlight? What do they say about the lantern?

marcusadmortati commented 1 year ago

My mistake, just a torch and a lantern.

lupestro commented 1 year ago

I would presume the flashlight is just MCC, right? And Goodman offers no licensed VTT material for MCC, so MCC stuff is going to be strictly a GM-supplied JSON. (The devil's always in the details, but it sounds like, once we have the light stats for the Lantern and it's tested, we've got just about everything we need to include it.)

marcusadmortati commented 1 year ago

That is the question, in the licro itself there are no such parameters. What I'm going to pass on here are the values that the community uses.

Lantern: 15' bright, 30 dim; Torch, each: 15' bright, 30 dim.

There is no official support for MCC yet.

marcusadmortati commented 1 year ago

Just as the parameters of the torches and lanterns are supported by the common sense of the DM's, we can arbitrate the MCC lantern...

marcusadmortati commented 1 year ago

The advantage of the lantern is the time it stays on.

lupestro commented 1 year ago

Okay, so both are comparable in illumination to a PF1 lamp. I presume Lantern should be consumable: false, another advantage. Make the JSON for those, test it, and I'll incorporate it.

marcusadmortati commented 1 year ago

I will try to do it.

marcusadmortati commented 1 year ago

Done. You will probably find errors...

{ "dcc": { "system": "dcc", "topology": "standard", "quantity" : "quantity", "aliases": { "Torch, each": "Torch, each", "Oil": "Oil"

}
"sources": {
  "Torch, each": {
    "name": "Torch, each",
    "type": "equipment",
    "consumable": true,
    "states": 2,
    "light": [
      { 
        "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
        "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false } 
    "Oil": {
    "name": "Oil",
    "type": "equipment",
    "consumable": true,
    "states": 2,
    "light": [
      { 
        "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
        "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false }  

      }
    ]
  }
}

}, ... }

lupestro commented 1 year ago

The use of consumable oil as a stand-in for the lantern that consumes it is kind of interesting. I hadn't thought of doing that. The name "Oil" will show up in your light sources rather than the lantern, which is a little strange, but it just might work.

My only misgiving besides the naming: Do you really want to consume a flask of oil every time you light the lantern? Oil usually lasts a lot longer than that - for hours. Remember that this would be going to everyone everywhere who uses dcc and Torch together, so there's more than personal preference / house rules involved. It might be better to use the Lantern but not make it consumable and then let the users keep track of how many hours of oil they're using if it matters in their game. That is essentially what I've done for all the other systems.

In any case, I cleaned up the braces on your JSON and removed the unnecessary aliases. See how the following works for you as a configured "Additional light source". Try using both the torch and the lantern. If they're both behaving, it looks like we have a winner. (Remember, I didn't shell out the $25 for the DCC core rules, so I don't have the compendium and thus can't test it myself.)

{
  "dcc": {
    "system": "dcc",
    "topology": "standard",
    "quantity" : "quantity",
    "sources": {
      "Torch, each": {
        "name": "Torch, each",
        "type": "equipment",
        "consumable": true,
        "states": 2,
        "light": [
          { 
            "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
            "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false } 
          }
        ]
      },
      "Oil": {
        "name": "Oil",
        "type": "equipment",
        "consumable": true,
        "states": 2,
        "light": [
          { 
            "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
            "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false }              
          }
        ]
      }
    }
  }
}
marcusadmortati commented 1 year ago

I'll try!

marcusadmortati commented 1 year ago

Worked!

Correction: the name of oil is Oil, 1 flask***

lupestro commented 1 year ago

I think I am going to do the Lantern with consumable: false rather than the "Oil, 1 flask". It's consistent with the approach taken on other systems. Try this, and if it works, we have something I can publish:

{
  "dcc": {
    "system": "dcc",
    "topology": "standard",
    "quantity" : "quantity",
    "aliases": {
      "Lantern": "Oil"
    },
    "sources": {
      "Torch, each": {
        "name": "Torch, each",
        "type": "equipment",
        "consumable": true,
        "states": 2,
        "light": [
          { 
            "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
            "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false } 
          }
        ]
      },
      "Lantern": {
        "name": "Lantern",
        "type": "equipment",
        "consumable": false,
        "states": 2,
        "light": [
          { 
            "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.5,
            "animation": { "type": "torch", "speed": 5, "intensity": 2, "reverse": false }              
          }
        ]
      }
    }
  },
}

Sound like a plan?

marcusadmortati commented 1 year ago

It didn't work, the previous one did.

lupestro commented 1 year ago

Do you have the lantern itself in your equipment, or just the oil? And is the name literally "Lantern" or something more? (It's frustrating not being able to try things out myself to see what's going on...)

marcusadmortati commented 1 year ago

Oil>Oil, 1 flask*** Lantern> Lantern

marcusadmortati commented 1 year ago

I made some adjustments to alpha and intensity in the previous version, it's working. Only instead of the "Torch" animation, it lights up with the "Flickering Light".

marcusadmortati commented 1 year ago

The one that works is this one, with the adjustments I made, in intensity and alpha.

{ "dcc": { "system": "dcc", "topology": "standard", "quantity" : "quantity", "sources": { "Torch, each": { "name": "Torch, each", "type": "equipment", "consumable": true, "states": 2, "light": [ { "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.2, "animation": { "type": "torch", "speed": 5, "intensity": 5, "reverse": false } } ] }, "Oil, 1 flask": { "name": "Oil, 1 flask", "type": "equipment", "consumable": true, "states": 2, "light": [ { "bright": 15, "dim": 30, "angle": 360, "color": "#ff9329", "alpha": 0.2, "animation": { "type": "torch", "speed": 5, "intensity": 5, "reverse": false }
} ] } } } }

lupestro commented 1 year ago

To switch light sources, right click on the one button and it gives you a context menu. I picked up your alpha and intensity changes. Looks like type is still "torch" but it looks good. I finally repro'd by supplying custom items with the right names to stand in for the ones in the compendium.

marcusadmortati commented 1 year ago

Great! Working here! Excellent job! The interesting thing is that you managed to make a mod change the item's quantities, something that no mod could do in DCC, which is very interesting for any other mod to change the amount of consumables such as arrows and rations.

lupestro commented 1 year ago

Happily, DCC handles quantity in exactly the same way as many other systems, so it's just updating the embeddedItem.system.quantity. I'll get a release out. Thanks! You may not be a coder, but now you can say you're a module developer. :)

marcusadmortati commented 1 year ago

It wouldn't be possible without you! Thanks! :)

lupestro commented 1 year ago

It's up! Thanks for working with me on it.