Advertisement Create a free account

Forbidden Lands sheet beta

1552381614

Edited 1552581544
Vince
Pro
Sheet Author
I know this has been requested more than a few times... I started working on something in November but handed over my code to Tristram W.  who was interested in finishing the sheet... However, since I haven't heard anything in over 2 months, I've continued the sheet and would appreciate some feedback. This is still in beta, so some things (weight calc, roll templates(currently uses default), localization, and misc.) I still need to add. Originally I tried to modify the MY0 alternate sheet, but I've since scraped that idea and just created a new one, but there are some similar features. Includes a Stronghold tab ( Tristram W.  added this section and more) Please have a look.  I'm open to suggestions.  Post any bugs.  I've never played FL, so it's very likely I may be overlooking some obvious components/mechanics as well. ;-P TIA Beta game :  https://app.roll20.net/join/4295391/ONxtxA Current Beta Code (while most of this code base will stay, nothing is set in stone yet.  Use at your own risk) html:  https://gist.github.com/vince-roll20/e64ae375dce06b9087f2cf040f9e2556 css:  https://gist.github.com/vince-roll20/b4c5f8e4c968ae3e43948390b33cf2bd
1552389854
Finderski
Pro
Sheet Author
I've not had a ton of time to mess around with the sheet yet (and I haven't played the game...only read the rules--mostly)...I'll get you some concrete recommendations shortly (I hope). There are a couple of things I'd recommend, though:  Mount's gear currently uses a double quote instead of an apostrophe Experience--while I know the paper sheet uses a radio-like button, I'd recommend not using them on the sheet because some things cost A LOT of experience to raise and I don't believe there are enough radio buttons, especially if you need to save them up to advance some things. Nice job with the wounds for the base attributes Skill rolls...things get complicated here. It may be easier to use a /r type command, because modifiers an cause a skill die to be negative and you need to roll those negative dice and those results may have consequences, too. you may already be handling this (I don't know...like I said, I haven't messed around with it much) in a much more elegant way than I'm seeing currently. I can think of some ways this might be accomplished with roll templates...I'd have to think about it. Overall, it's looking good.
1552424346

Edited 1552424750
Very nice, started working on my own, but you've obviously come further. Is there a github repo? I could do a pull request with some suggestions, including i18n (I need it to be in Swedish)  Things that would be nice to add (that I can take a stab at): Use the API-script for Forbidden Lands rolls if available Internationalization to Swedish Resource Die roller including automatic lowering of Resource Die through a Sheet Worker (probably) XP Unspent / XP Total counter (numeric rather than radio button, as Finderski suggested) Automatic Gear Count /Encumbrance (Sheet Worker again?) I'm not super experienced with the character sheet's (though I've dabbled), but I'm an experienced web developer, so I would love to help. Also, I have a roll20 Forbidden Lands game coming up next week and already played it IRL a few sessions. It's a lovely game!
1552434915

Edited 1552435020
Andreas J.
Sheet Author
Jens A. said: I could do a pull request with some suggestions, including i18n Depending on the size of the sheet, you might wanna see if running the sheet trough my automation script would reduce the workload while creating the internationalization tags. It's crude, but still have saved some time with the latest sheet it added tags to. If non of you use linux, drop me a line and I can run a sheet through it. I'm not a Pro atm so you'd have to generate the translation.json yourselves. Edit: Oh hi Vince :)
1552449662
Vince
Pro
Sheet Author
Finderski said: I've not had a ton of time to mess around with the sheet yet (and I haven't played the game...only read the rules--mostly)...I'll get you some concrete recommendations shortly (I hope). There are a couple of things I'd recommend, though:  Mount's gear currently uses a double quote instead of an apostrophe Experience--while I know the paper sheet uses a radio-like button, I'd recommend not using them on the sheet because some things cost A LOT of experience to raise and I don't believe there are enough radio buttons, especially if you need to save them up to advance some things. Nice job with the wounds for the base attributes Skill rolls...things get complicated here. It may be easier to use a /r type command, because modifiers an cause a skill die to be negative and you need to roll those negative dice and those results may have consequences, too. you may already be handling this (I don't know...like I said, I haven't messed around with it much) in a much more elegant way than I'm seeing currently. I can think of some ways this might be accomplished with roll templates...I'd have to think about it. Overall, it's looking good. Mount's gear ; LOL I did quick find/replace of single quote to doubles for consistency last night.  I didn't even think about any contractions. ;-)  Fix coming. Experience ; I wasn't sure about the XP.  The official sheet uses 20 and a form-fillable one has 10 slots.  Looking at the player's rules; you get XP at the end of each session based on 10 different questions at 1xp for each question, with the caveat that the GM ultimately deciding how much is granted.  Nothing says you must spend XP so I assume XP rise above these numbers.  As much as I like my little checkboxes, a numerical field is probably a better decision. Skill rolls ; I haven't played a game with negative rolls, so this is new territory for me. The base rolls for skills as well as the Advanced Roll section I have taken directly from the MY0 sheet with very little adjustment.  I'm open to any suggestions .  I believe there are some API dice scripts for MY0 and maybe even Forbidden Lands. I think we might be able to include options to use those scripts for Pro users as well.  Thanks for your input/help Fiinderski.
1552450041
Vince
Pro
Sheet Author
Jens A. said: Very nice, started working on my own, but you've obviously come further. Is there a github repo? I could do a pull request with some suggestions, including i18n (I need it to be in Swedish)  Things that would be nice to add (that I can take a stab at): Use the API-script for Forbidden Lands rolls if available Internationalization to Swedish Resource Die roller including automatic lowering of Resource Die through a Sheet Worker (probably) XP Unspent / XP Total counter (numeric rather than radio button, as Finderski suggested) Automatic Gear Count /Encumbrance (Sheet Worker again?) I'm not super experienced with the character sheet's (though I've dabbled), but I'm an experienced web developer, so I would love to help. Also, I have a roll20 Forbidden Lands game coming up next week and already played it IRL a few sessions. It's a lovely game! API-script ; I'll definitely look into adding this as an option for Pro users. Internalization ; getting the sheet's i18n data in place and creating a translation.json is already on my list.  I will make the json available to you ASAP so you can work up the Swedish translation.  Thank you. Automatic Resource Die roller ; should be doable via sheetworker. XP ; will change to a numeric field instead of slots Gear/Encumbrance ; also on my short list. Thank you for your suggestions Jens. I'll start on the localization code as soon as I think I'm fairly close on my release code.
1552450191
Vince
Pro
Sheet Author
Andreas J. said: Jens A. said: I could do a pull request with some suggestions, including i18n Depending on the size of the sheet, you might wanna see if running the sheet trough my automation script would reduce the workload while creating the internationalization tags. It's crude, but still have saved some time with the latest sheet it added tags to. If non of you use linux, drop me a line and I can run a sheet through it. I'm not a Pro atm so you'd have to generate the translation.json yourselves. Edit: Oh hi Vince :) I'm definitely going to use your script Andreas.  It saved me hours on the Cyberpunk 2020 sheet.  I have a linux mint machine in my house and I'll have a go.  I'm not a native linux geek however, so I may need some ELI5 directions. ;-)
1552559789
Vince said: Andreas J. said: Jens A. said: I could do a pull request with some suggestions, including i18n Depending on the size of the sheet, you might wanna see if running the sheet trough my automation script would reduce the workload while creating the internationalization tags. It's crude, but still have saved some time with the latest sheet it added tags to. If non of you use linux, drop me a line and I can run a sheet through it. I'm not a Pro atm so you'd have to generate the translation.json yourselves. Edit: Oh hi Vince :) I'm definitely going to use your script Andreas.  It saved me hours on the Cyberpunk 2020 sheet.  I have a linux mint machine in my house and I'll have a go.  I'm not a native linux geek however, so I may need some ELI5 directions. ;-) Any news, Vince? Looking forward to using this sheet next week, would that be possible?
1552566369
Wes
Pro
Sheet Author
@Vince, I have a partially built roll template that uses a interface from the character sheet to build your rolls using the characters attributes. It uses action buttons to populate the dice to be rolled. I can show it to you later today if you are interested. Wes
1552582332

Edited 1552602041
Vince
Pro
Sheet Author
@Jens I'll post the beta code at the top of the thread(done) if you would like to use it for a custom game.  I have a prior commitment this weekend that involves building and then sleeping in snow quinzees (scouts)...  I really don't want to push out a half-baked sheet.  I believe you could use the current beta to run a game.  Auto-calc for gear weight total isn't implemented yet  [need to add carried coin weight still] and roll templates are still defaults.  Those should not be game breakers IMO.  Once I add those features, you should be able to simply change from a custom sheet to the released version.  Sheet macros will be updated to use new roll templates, but all other attribute data will still be intact.   @Wes I'm definitely interested.  I'm in/out with work today and tomorrow, so I'm not sure about a schedule though...   Maybe a PM with some code and a quick explanation(EIL5)?  :-P  Thanks Wes. I should have some more free time tomorrow afternoon/evening.
1552601490
Vince
Pro
Sheet Author
Couple of beta updates; - changed Experience and Willpower to input fields vs radio. - Added auto-calculation of gear and mount's gear (still need to include carried coin weight)
1552603823
GiGs
Pro
Sheet Author
Hi Vince, unless I'm missing something you have a bit of redundancy in the sheet workers. You could change them to  const repeatingSum = (destination, section, fields, multiplier = 1) => { if (!Array.isArray(fields)) fields = [fields]; getSectionIDs(`repeating_${section}`, idArray => { const attrArray = idArray.reduce( (m,id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))],[]); getAttrs(attrArray, v => { console.log("===== values of v: "+ JSON.stringify(v) +" ====="); // getValue: if not a number, returns 1 if it is 'on' (checkbox), otherwise returns 0.. const getValue = (section, id,field) => parseFloat(v[`repeating_${section}_${id}_${field}`], 10) || (v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : 0); const sumTotal = idArray.reduce((total, id) => total + fields.reduce((subtotal,field) => subtotal * getValue(section, id,field),1),0); setAttrs({[destination]: sumTotal * multiplier}); }); }); }; on('change:repeating_gear remove:repeating_gear sheet_opened', function() { repeatingSum("character_encumbrance_total","gear",["gear_weight","gear_qty","gear_carried"]); console.log("===== gear changed ====="); }); on('change:repeating_mount remove:repeating_mount sheet_opened', function() { repeatingSum("mount_encumbrance_total","mount",["mount_gear_weight","mount_gear_qty","mount_gear_carried"]); console.log("===== mount's gear changed ====="); }); The whole point of the repeatingSum function is that you only need one copy of it. I'm glad you're getting some use out of it, anyway!
1552615333

Edited 1552615462
Vince
Pro
Sheet Author
GiGs said: Hi Vince, unless I'm missing something you have a bit of redundancy in the sheet workers. You could change them to  const repeatingSum = (destination, section, fields, multiplier = 1) => { if (!Array.isArray(fields)) fields = [fields]; getSectionIDs(`repeating_${section}`, idArray => { const attrArray = idArray.reduce( (m,id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))],[]); getAttrs(attrArray, v => { console.log("===== values of v: "+ JSON.stringify(v) +" ====="); // getValue: if not a number, returns 1 if it is 'on' (checkbox), otherwise returns 0.. const getValue = (section, id,field) => parseFloat(v[`repeating_${section}_${id}_${field}`], 10) || (v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : 0); const sumTotal = idArray.reduce((total, id) => total + fields.reduce((subtotal,field) => subtotal * getValue(section, id,field),1),0); setAttrs({[destination]: sumTotal * multiplier}); }); }); }; on('change:repeating_gear remove:repeating_gear sheet_opened', function() { repeatingSum("character_encumbrance_total","gear",["gear_weight","gear_qty","gear_carried"]); console.log("===== gear changed ====="); }); on('change:repeating_mount remove:repeating_mount sheet_opened', function() { repeatingSum("mount_encumbrance_total","mount",["mount_gear_weight","mount_gear_qty","mount_gear_carried"]); console.log("===== mount's gear changed ====="); }); The whole point of the repeatingSum function is that you only need one copy of it. I'm glad you're getting some use out of it, anyway! Are you sure GiGs?  lol I see, no need to create a new sum function for the different totals.  repeatingSum only does one thing and you just provide it with attribute data... That makes much more sense.  I'll make the adjustments.  I've used TAS to do similar functions, but your specefic examples on the wiki were much less confusing for me.  Much appreciated.
1552617225
GiGs
Pro
Sheet Author
You're not alone. I mainly wrote this because I dont understand how to use TAS, haha.