PDA

View Full Version : Warhammer Fantasy RPG 4 ed



iiivsion
April 15th, 2020, 22:44
Hi,

branching that thread from 2nd ed to have a place to officially talk about a new approach to 4 ed (other than the "won't happen" post).

Common sense seems to most likely branching from Pauls WFRPG 2nd ed for the following reasons:
- 2ed offers far more functionality than 1st ed
- 3rd ed is well versed, but 4 is much more compatible to ed 2 than ed 3.
- Paul has offered to officially branch from the 2nd ed code as long as we refer to his base and publish here under same open licence and adhere to all official IP regulations.
- do not reuse stuff from a retracted 4 ed alpha since IP is not clear.

I personally am still in learning details from 2ed to 4ed and will need some while to adapt. I even master rounds with first edition (though second is functionally better).

So, anyone to draft a first rough version is welcome.

Valyar
April 16th, 2020, 04:33
What do you mean to "draft a first rough version"? To draft the features of the ruleset or to actually start working on the code?

iiivsion
April 16th, 2020, 17:38
Whatever brings us one step closer. If one could write down the needed changes would be a good start.

My first rough overview would be
- to change the script for attack rolls to calculate damage by successes instead of damage roll (though I do not 100% like the new opposed fighting test, I would keep the old script at hand to switch between both by option switch).
- add Fellowship (again)
- change list of skills and perhaps data type of skills (only if totally neccessary, I would try to keep as much datatypes stable as possible)
- to change how the skills work (taken and Mastery/Skill Levels removed, percentage value calculation changed) - here is the first part where I do have to read more of the 4 ed skill rules
- add a field for the "new" Weapon Damage Value (leave the old fields intact for optional damage die roll).

Mojosta
April 18th, 2020, 00:48
2e has fellowship but you will have to add dexterity and initiative to the attributes.

Skills will be a change like you said from buttons to being able to improve a single percentage at a time. (You can already do this in the xp tab, of the character sheet, for your attributes.

The exp spending system should actually work out well for 4e from the 2e system.
May want a way to highlight attributes you can advance via your career.

ShakyLuigi
April 18th, 2020, 10:55
I started two weeks ago trying to create an extenstion for MoreCore with the WFRPG 4th edition in mind. So far I have added all the characteristics and Basic skills with Base, Advances and Total values.
I have also finished the scripts that adds all of it together in a correct manner.

You can see how far (or short) I've gotten in the picture below (with much help from damned).

I have no experience in coding or xml besides what I've made here. But if it helps anyone, then I'm happy.

33919

damned
April 18th, 2020, 11:04
Looking good Shaky!

WyrdGM
April 22nd, 2020, 01:46
I got busy at work so have not had a ton of time to dig in, but I have been doing modifications to the roller that came with MoreCore to make a 4E roller for my group. It is contained and works with the Core ruleset.
When I am at my computer I will upload it if people want.

dmbrown
April 22nd, 2020, 03:19
Cool! So this could be incorporated into the branch of 2e to create a 4e version?

WyrdGM
April 22nd, 2020, 03:50
Cool! So this could be incorporated into the branch of 2e to create a 4e version?

Sure, I suppose, but with caveats.
1. I used MoreCore Diceroller as a basis. Right now I am learning lua, and the system. Someone else worked on that, and I don't know how permissions work for using someone else's extensions.
2. I still have some work to do on it. I want to give it an option for Quick Success Levels versus Standard Success Levels, etc
3. It is currently activated by typing /wfrp skill_percentage in the chat window
4. Modifiers, instead of modifying the die roll, modify the skill. I wanted this so that when I hook it up to sheets, it can just roll to the skill and add the mods.

I am unsure how everyone else is attaching their files standard, but this seems to at least have worked for me this time.
34181

Here is an image of it being used
34182

dmbrown
April 22nd, 2020, 04:52
Thanks. You’d have to ask permission and if it is Morecore than it is Damned.

We’re trying to put together a community ruleset for 4ed. I don’t know lua, but I am trying to learn a little. I could help out with graphics.

Who knows if we’re able to put together a nice ruleset maybe Smiteworks could approach Cubicle 7 and Games Workshop and try for an official one.

Pepor
April 22nd, 2020, 07:37
It looks promising!

ShakyLuigi
April 22nd, 2020, 13:25
Sure, I suppose, but with caveats.
1. I used MoreCore Diceroller as a basis. Right now I am learning lua, and the system. Someone else worked on that, and I don't know how permissions work for using someone else's extensions.
2. I still have some work to do on it. I want to give it an option for Quick Success Levels versus Standard Success Levels, etc
3. It is currently activated by typing /wfrp skill_percentage in the chat window
4. Modifiers, instead of modifying the die roll, modify the skill. I wanted this so that when I hook it up to sheets, it can just roll to the skill and add the mods.

I am unsure how everyone else is attaching their files standard, but this seems to at least have worked for me this time.
34181

Here is an image of it being used
34182

I am trying to build an extentsion for 4E in MoreCore. Could I try implementing this diceroll in this extenstion?

damned
April 22nd, 2020, 14:11
I am trying to build an extentsion for 4E in MoreCore. Could I try implementing this diceroll in this extenstion?

That looks a lot like the blackcrusade roll in MoreCore.

ShakyLuigi
April 22nd, 2020, 14:20
Well, he did say he used the MoreCore Diceroller as a basis, so it would make sense it looks like it.

WyrdGM
April 22nd, 2020, 16:45
It is the blackcrusade roll with some extra things built in, and some modifiers changed. I did use MoreCore for it. Like I said, still learning lua, so did not feel confident building one from scratch yet. These are my test examples. And it should be able to be imported into MoreCore without much issue at all.

iiivsion
April 26th, 2020, 03:19
I am also testing the possible ways:
- CoreRPG (lacks the diceroller), but with an extension could be pretty slim and quick
- MoreCore (works fine out of the box for all the basic stuff), have to say it has really good potential. With the blackcrusade diceroller you could start vanilla right out of the box... Create Attribute and Skills as diceroll based on the blackcrusade dice and p1-Parameter.
- Paul Pratts 2nd edition which is build on CoreRPG is also really good, feature rich and bug free and: Weapons and Armor and Carreers are just great... hard decision which way to go, especially since it is really important to keep the code maintenance at a minimum level for future releases...

dmbrown
April 26th, 2020, 17:55
I would go with branching Paul’s, which you mentioned he was ok with if he was given props and that it was posted back here. I looked through the 2ed forum and you can see here https://www.fantasygrounds.com/forums/showthread.php?34764-Warhammer-Fantasy-RPG-2-ed&p=475062&viewfull=1#post475062 item #6 that he added that because of a request a ways back for 4ed style combat. While it is not automated it is a good start and is built into the system. Maybe that could be taken as well as item #5 to add the fails and crits and expanded on?

ShakyLuigi
May 2nd, 2020, 17:53
Not sure if anyone else is doing something with this now, but I've tried to move forward with the extension I've started.

34779
34780

- Added Fate/Fortune and Resolve and Resilience frames.
- Added an experience frame.
- Added character info frame.
- Added ambitions frame.
- Made a script that calculates wounds based on characteristics (still missing to adjust for the Hardy talent, and Halflings Small talent)

Technically I think it is playable at this moment, though it needs some heavy work on the design.

Also, there is no automation with the dice rolls. I've tried to figure out how to make an object or square clickable for a dice roll, but that is way beyond what I understand.

I also need to figure out how to add advanced skills, including choosing which characterisic is relevant. I'm thinking a solution where you can add a line, where you write in the appropate skill, and choosing the characteristic. But how to make a dynamic list like that is also beyond what I understand right now.

Magic and prayers are missing atm. but I think this can be solved the same way as advanced skills. If I'm able to solve that. I've spent so many hours just trying to figure that out, and I don't feel any closer.

So, yeah, baby steps. If anyone knows how to solve the advanced skill and dice roll mechanics, I'd be really appreciative if they explained me how. Not afraid to put in the time to do the work, but the how is very puzzling for me.

ShakyLuigi
May 13th, 2020, 20:21
Just a quick update. I'm back working full time, so I don't have that much spare time mucking about with this.
But I have since last time:

- Added a corruption/mutation frame where it has a cell that calculates max corruption.
- Added an equipped armor and weapon with damage and armor (and total soak including Toughness and Willpower bonus). This is very simplified, but enough for simple use of the rules.
- I actually made a combobox with species, and added Hafling as a variable in the wounds total calculations.

So, not a whole lot since the last update, but I spent so much time on the combobox and wounds. "How hard can it be?", I thought. Very hard was the answer apparantly.

The rest with items, money and talents can basically be done in MoreCore natively.

All I am missing is the advanced skills, magic and prayers.
And of course dice rolls. But WyrdGM asked for my character sheet files to try and implement a few things. I of course gave them to him in the hopes his trying to add dice rolls.
Never thought of asking. Huh.

Tel Arin
May 19th, 2020, 22:37
The extension seems empty when i download it. I would like to test the extension

WyrdGM
May 19th, 2020, 22:53
I am also working full time, but I am still forging ahead with things. It has been a bit slow, but I should have time soon.

MiniCalvo
May 20th, 2020, 01:36
Very good, I would also like to try this extension, but it is empty.
Could you please upload the extension to test it?
Thank you and sorry for the inconvenience.

Altonath
May 23rd, 2020, 15:45
Hey! Nice job I'm very interested in triying the extension but like they said it looks like it's empty. Thank you WyrdGM!

WyrdGM
May 26th, 2020, 22:20
Hey! Nice job I'm very interested in triying the extension but like they said it looks like it's empty. Thank you WyrdGM!

My stuff is not ready. It's in a cowboy code state right now.
Work took over, so I had not been doing a ton. I hope to have some stuff maybe consumable by this weekend, but don't hold me to it.

My own group was also sad it took me so long. So much that one of the players went and bought Foundry. And while it definitely looks better than what I will be putting out, maybe I can at least do some cool things. Because I still like FG, and I already invested a bunch of time and effort into this. Maybe, though, I will put it on github soon, and then plenty of people can play. Have not decided yet.

https://imgur.com/a/km1g0G1

I am currently working on a dynamic skill list so I can predefine the basic skills, and then add in advanced skills. So far, this is where I keep hitting my biggest roadblock. I am tempted to fall back, create a static list, and then have a separate area for custom skills later.

In addition, I do want to figure out how to remove the Class, Level, Hero Points from the very top of the sheet, and just leave the Name, but my efforts have been stymied.

ShakyLuigi
May 27th, 2020, 18:07
I like the changes you've made to the extension I sent you. It really looks nice Wyrd!

Meanwhile, I've finally managed to find a solution to the advanced skill list, and have added that last sunday.
I prefer having two seperate lists, one for the basic skills everyone has, and one for the advanced.
But you can use this solution for adding a list of basic skills in the same list, and then just adding the advanced skills ad hoc in game.

36160
36161

I imagine I can use the same solution to add spells and prayers, and at that point it is a usable character sheet. Although without dicerolling, but it has everything to keep track of characters.

WyrdGM
May 27th, 2020, 18:37
I like the changes you've made to the extension I sent you. It really looks nice Wyrd!

Meanwhile, I've finally managed to find a solution to the advanced skill list, and have added that last sunday.
I prefer having two seperate lists, one for the basic skills everyone has, and one for the advanced.
But you can use this solution for adding a list of basic skills in the same list, and then just adding the advanced skills ad hoc in game.

36160
36161

I imagine I can use the same solution to add spells and prayers, and at that point it is a usable character sheet. Although without dicerolling, but it has everything to keep track of characters.

Yeah, I loved what you did with some things, and adapted it, though I changed some under the hood. The look you made was great. I have some auto updates and rolls built into mine. I hope to build them out more.
Currently, it's a single roll I have from the previous one I modified, but now that I know a bit more, I want to feed it things like [ATK] [DEF] [SKL] etc to have it do secondary read outs for the roll as well.

For example, you'd roll /wfrp 45 ATK (And maybe weapon mods codes?)
Then it would roll, determine SL, crits, hit loc, critical effect, etc
But if you did SKL it would avoid the hit location, crit effect (But would still advise that a crit was done)

iiivsion
June 8th, 2020, 21:33
Yeah, I loved what you did with some things, and adapted it, though I changed some under the hood. The look you made was great. I have some auto updates and rolls built into mine. I hope to build them out more.
Currently, it's a single roll I have from the previous one I modified, but now that I know a bit more, I want to feed it things like [ATK] [DEF] [SKL] etc to have it do secondary read outs for the roll as well.

For example, you'd roll /wfrp 45 ATK (And maybe weapon mods codes?)
Then it would roll, determine SL, crits, hit loc, critical effect, etc
But if you did SKL it would avoid the hit location, crit effect (But would still advise that a crit was done)

Hi, I wasn't around for a while. Looks very promising. From the screens I would guess you made an character and rolls extension for morecore? Would you mind to pm me your extension? If I could be of help with rolls/scripts or other mechanics, please tell me what you want to accomplish. Also, damned seems to be glad to include new dicerolls into morecore to be available for all users. Are you testing your extension also against FGU?

WyrdGM
June 8th, 2020, 21:45
Hi, I wasn't around for a while. Looks very promising. From the screens I would guess you made an character and rolls extension for morecore? Would you mind to pm me your extension? If I could be of help with rolls/scripts or other mechanics, please tell me what you want to accomplish. Also, damned seems to be glad to include new dicerolls into morecore to be available for all users. Are you testing your extension also against FGU?

Sorry, I am afraid not yet. I planned on doing this, then have been working 12+ hour days for the past couple weeks. I'll work on wrapping some together soon so people can play with it.
It is for morecore at the moment. leveraging what is already there with my limited time right now.
I have not tested FGU, as I only have classic.

iiivsion
June 9th, 2020, 03:05
Thank you :-)
As I have the same problem with my job, please do in no way feel pushed by me. I am struggling keeping my Warhammer 1e campaign going at the moment...

I do not have purchased FGU yet (still waiting for Steam availability to update my Ultimate FGC), but my Demo or Beta-FGU-Version (not really sure what I downloaded some time ago) allows me to load and test modules as long as I do not try to connect players. So I can at least run a basic test on FGU then. I do this every now and then with all campaign and modules to prevent developing in some unsupported or problematic fashion.

ShakyLuigi
June 10th, 2020, 19:46
Everything I made I did in FGU. I have the full version. So the basics should work there. I could test the things that Wyrd has added and changed if there are things that are uncertain would function there.

iiivsion
August 30th, 2020, 00:36
ShakyLuigi, WyrdGM: Could you please provide the extension in some way? Are you still testing it/developing it or in need for some automation? At the moment I am updating my Enemy Within campaign to the new 4th Edition version, it would be nice to check if I could also use the modules with morecore...

ShakyLuigi
August 31st, 2020, 19:48
I think I've gotten as far as I can get with this project. I just keep hitting challenges I can't solve within a reasonable time.
I'll see if I can manage to post the extension I've made so far on this thread within a short time. I just need to clean up the files a bit as I have quite a bit of "junk" files as reference at the moment.

iiivsion
September 1st, 2020, 20:39
Hi Luigi, thanks. Would be very nice.

I started some time ago with Warhammer 1st Ed campaigns and am moving all my campaigns now to Warhammer 2ed and have a development branch which maybe someday work also completely for 4th (still missing the Numbers in the skills and some fields).

In the end, I also tried to use CoreRPG and MoreCore as Basis. By now I would say I do not need all of the fields and automation offered by 2nd (which is really great). But for my style of prepping adventures I am into much more lightweight NPC-sheets. I even wrote an extension to 2nd to reduce the NPC data and inserted the "notes" field from CoreRPG and MoreCore again. Even after many hours of platesting, I am not fully sure if I would go rather with MoreCore and begin from scratch to program the few things I need or if I stick with 2nd, maybe "extend" it to be a little more lightwight on some objects.

Best Regards

ShakyLuigi
September 20th, 2020, 13:25
Okey, this took a lot longer than it should have, but work and other private matters came in the way.

I've tried to remove all of the junk files that I've used underways, but there are probably more things to remove.

This extension is by no means finished, but I feel I've reached the limits of my abilities, and if someone wishes to carry on the work they are more than welcome to.
All I ask is if this is used as a basis for an extension, that I am credited for the work that I did. Otherwise feel free to do what you want.
If there are things I can help with, questions to how I was thinking or other clarifications, feel free to ask. I will help to the best of my abilities.

Tel Arin
September 21st, 2020, 00:27
Okey, this took a lot longer than it should have, but work and other private matters came in the way.

I've tried to remove all of the junk files that I've used underways, but there are probably more things to remove.

This extension is by no means finished, but I feel I've reached the limits of my abilities, and if someone wishes to carry on the work they are more than welcome to.
All I ask is if this is used as a basis for an extension, that I am credited for the work that I did. Otherwise feel free to do what you want.
If there are things I can help with, questions to how I was thinking or other clarifications, feel free to ask. I will help to the best of my abilities.

I can't run it in the more core ruleset (FGU & FGC).

Thanks in advance!

Pepor
September 21st, 2020, 06:41
I cannot run it either unless I decompress the extension into a folder. Even though, I am getting different kind of errors once it works.

Trenloe
September 21st, 2020, 14:06
The extension have been compressed with RAR compression. It needs to be ZIP compression.

iiivsion
September 21st, 2020, 22:05
Hi, it works nicely for me. Thank you very much for uploading. I unrared/rezipped it so others could run it "out of the box". -> see two posts below

Pepor
September 22nd, 2020, 07:50
Hi, it works nicely for me. Thank you very much for uploading. I unrared/rezipped it so others could run it "out of the box".

39558

Sorry, but I have to tell you that you rezipped it wrong. You rezipped the folder. In order to make it work, you have to compress the content of the folder.

Anyway, I am getting different kind of error the first time I create a character or I click on the Main tab.

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=39562&d=1600757390


https://www.fantasygrounds.com/forums/attachment.php?attachmentid=39563&d=1600757404


39562
39563

iiivsion
September 23rd, 2020, 21:04
[QUOTE=iiivsion;543789]Hi, it works nicely for me. Thank you very much for uploading. I unrared/rezipped it so others could run it "out of the box".
now zipped the right way ->
39622

ShakyLuigi
September 26th, 2020, 12:11
Sorry, but I have to tell you that you rezipped it wrong. You rezipped the folder. In order to make it work, you have to compress the content of the folder.

Anyway, I am getting different kind of error the first time I create a character or I click on the Main tab.

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=39562&d=1600757390


https://www.fantasygrounds.com/forums/attachment.php?attachmentid=39563&d=1600757404


39562
39563

I had a quick look in the code trying to figure out the errors.
The errors on line 403 and 451 is because it is trying to calculate "Wounds" and "Defence" and trying to grab the value from "Toughness". This value is empty when creating a new character, and therefore you get an error.
Should function normally when you add some values.

The last error is probably some sort of remainder from a code I used from D&D 3rd edt. I think.

I hope this is of some use. As I said, I have never coded anything before in my life, so there is bound to be alot of errors in this.

ShakyLuigi
October 24th, 2020, 18:29
Okey, if anyone is still interested, I've made a few minor updates.
I've actually been able to add some rolls to the characteristics. Though no fancy things like calculating successes or labeling the roll correct.
A simple D100 roll for each characteristics. So thanks to Trenloe for the simple lesson for "MyTestAction" in the Workshop, which I didn't understand at all, but was able to implement.

And I've changed the advanced skills frame, so now it actually calculates the total for the advanced skills. And it also rolls.
It's not pretty, but it's at least progress.

I've also tried to zip it correctly this time.

40478

iiivsion
October 24th, 2020, 22:25
Works pretty well for me in FGU :-) Ok, sure, still a way to got, but to run a game it is usable by now. If you have some specific questions on how to do some things I could probably have a look into things.

ShakyLuigi
October 25th, 2020, 08:59
That would be great. I think the most useful thing to add now, would be the dice rolls and having it calculate the number of successes or fails.
I know how it should be, but I have no idea how to create a roll action.
The roll works now, with just a plain 1d100 roll. I would like to add a modifier contextually i.e. if I roll Strength roll, it should get the total strength and then compare it with the die result and giving the result.

ShakyLuigi
October 29th, 2020, 20:51
Just made a few things a bit more nicer looking.
Added a better way of keeping track of spells. Not happy with how it looks, but it works.

40592

goodmanje
November 1st, 2020, 13:58
Meanwhile Roll20 offers a Warhammer Fantasy 4th Edition Bundle..
https://marketplace.roll20.net/browse/bundle/8289/warhammer-fantasy-roleplay-4th-edition-bundle

No, it's not Fantasy grounds but maybe Smiteworks can work with Cubicle 7 to create a fully licensed product for FG..... maybe not. Who knows?

dmbrown
November 1st, 2020, 14:32
Well Roll20 isn’t the only one, as Foundry has it as well. The duo that created the Foundry version had started one in FG, but jumped over to Foundry, so FG almost had a ruleset.

https://www.cubicle7games.com/foundry-friday/

ShakyLuigi
November 3rd, 2020, 19:23
It would be awesome if someone professional could create a functioning WRFP4 ruleset for Fantasygrounds.
Until then, I hope this can help make the wait a little easier.

I've streamlined the magic list.
Added a armor and weapons list.
Cleaned up the MoreCore tab so it is a bit more presentable.
Added the fields Physcology and Mutations.

And that's it. I think I've added everything that's needed to play the game with a functioning character sheet.
The inventory list works as is, and the Abilities tab can be used for Talents.

I'm happy with the result. Especially considering I've never written a single line of code before, or even played a single game on the FantasyGrounds software.
With that said, what I would really wish to add now, are the dice rolls for each skill and characterstics.
But that is way beyond what I can do. So if anyone has any help they can give, maybe sit down and explain to me how actions work, I could do something about it.


40715

Pepor
November 4th, 2020, 06:00
It would be awesome if someone professional could create a functioning WRFP4 ruleset for Fantasygrounds.
Until then, I hope this can help make the wait a little easier.

I've streamlined the magic list.
Added a armor and weapons list.
Cleaned up the MoreCore tab so it is a bit more presentable.
Added the fields Physcology and Mutations.

And that's it. I think I've added everything that's needed to play the game with a functioning character sheet.
The inventory list works as is, and the Abilities tab can be used for Talents.

I'm happy with the result. Especially considering I've never written a single line of code before, or even played a single game on the FantasyGrounds software.
With that said, what I would really wish to add now, are the dice rolls for each skill and characterstics.
But that is way beyond what I can do. So if anyone has any help they can give, maybe sit down and explain to me how actions work, I could do something about it.


40715

Nice job. Thanks!

iiivsion
November 18th, 2020, 23:01
Sorry it took me so long. I tested it and it is a great start. I even used it for one evening of my Enemy in Shadows Campaign I am running at the moment. So I would say, to manage you module, chars and run a game it is fully usable (as long as you do not insist on using full combat tracker, which I don't).
Some next nice to haves would be
- Advanced Skills as a list instead of single lines (don't get me wrong, I also have no idea how this is done, just stating what my players said would be their greatest new features :-).
- Doubleclick on Skill Values should also launch a d100 roll
- Roll telling your successes (I already read that code in Warhammer 2nd edition, but there is a trick involved to push the expected Value into the roll mechanic which was like higher magic to me, not sure if it can be done easily with morecore)
- Like in MoreCore, if the "weapon damage roll text" could be rollable would also be neat. Perhaps under Weapon add the original "Attack" Line from morecore baserules again as "Current Weapon". You could then write >>Sword Damage 1d10+4<< in that line and it will even appear in Combat Tracker and you could double click to roll damage. It is a mighty magic line which can do some neat stuff.

That all is absolutely nice to have. Thank you very much to ShakyLuigi and Wyrd for the great job!

As for Roll20 and Foundry VTT official Warhammer 4th edition content:
@Smiteworks: Did 7cubicles contact you on this? It would be gread if I could use the official adventures out of the box instead of typing my own version of the campaign summery as a module for my group. I understand may be they are missing some developers doing the "base" ruleset; but giving a signal to properly support it once in the future could help unite the different workstreams here...

ShakyLuigi
November 19th, 2020, 17:29
Sorry it took me so long. I tested it and it is a great start. I even used it for one evening of my Enemy in Shadows Campaign I am running at the moment. So I would say, to manage you module, chars and run a game it is fully usable (as long as you do not insist on using full combat tracker, which I don't).
Some next nice to haves would be
- Advanced Skills as a list instead of single lines (don't get me wrong, I also have no idea how this is done, just stating what my players said would be their greatest new features :-).
- Doubleclick on Skill Values should also launch a d100 roll
- Roll telling your successes (I already read that code in Warhammer 2nd edition, but there is a trick involved to push the expected Value into the roll mechanic which was like higher magic to me, not sure if it can be done easily with morecore)
- Like in MoreCore, if the "weapon damage roll text" could be rollable would also be neat. Perhaps under Weapon add the original "Attack" Line from morecore baserules again as "Current Weapon". You could then write >>Sword Damage 1d10+4<< in that line and it will even appear in Combat Tracker and you could double click to roll damage. It is a mighty magic line which can do some neat stuff.

That all is absolutely nice to have. Thank you very much to ShakyLuigi and Wyrd for the great job!

As for Roll20 and Foundry VTT official Warhammer 4th edition content:
@Smiteworks: Did 7cubicles contact you on this? It would be gread if I could use the official adventures out of the box instead of typing my own version of the campaign summery as a module for my group. I understand may be they are missing some developers doing the "base" ruleset; but giving a signal to properly support it once in the future could help unite the different workstreams here...

Thanks a lot for the feedback! It's nice to have ones work appreciated.
And I really don't want to be that kind of guy, but I spent so many workhours (probably days) into this charactersheet I want to mention: That is all me.

I will have a look at the things you mentioned, though I imagine a few of those things will be quite challenging.
Right now I've just added the Characteristic frame in the NPC sheet, so it's easier to keep track of any NPC's you create. Just have to make it pretty :D

damned
November 19th, 2020, 21:31
Hi ShakyLuigi

Id avoid the Attack Line.
It will go away sometime.
Just create it as a Damage Roll, /dbdamage or /damagedr or /damagedr4 etc

ShakyLuigi
December 3rd, 2020, 07:56
Beyond doubt, this update is by far the most challenging and time consuming for me.
But with good help from the good friends at this forum, I am happy to share with you another update to the extension:

- Added dice rolling to all skills all well (advanced skills have not this feature yet)
- Added results calculation in the chat for each roll for Characteristic and skill rolls.
- Added a simple frame in the NPC sheet to keep track of the NPC characteristics (not been made pretty yet).

41618

Big thanks to Paul Pratt for letting me use his roll from his WH 2nd edt. ruleset. Without that, I don't think I ever would have managed to build a roll like that myself.
Also thanks to frostbyte000jm for the coding videos he made. That helped me IMMENSELY with understanding how LUA works in FG.
And thanks to damned for starting me off with his MoreCore videos, and general guidance.

Speaking of damned, how would i create a Damage Roll? I still am lacking a bit of basic understanding of LUA.

damned
December 3rd, 2020, 09:41
is there damage reduction by armour or other things?

ShakyLuigi
December 3rd, 2020, 09:47
is there damage reduction by armour or other things?

Yes, there is. From at least two sources.

Pepor
December 3rd, 2020, 09:59
I am only able to make Characteristics rolls, but not Skill rolls. Is there a way to do it? I may be missing something...

Thanks in advance.

damned
December 3rd, 2020, 09:59
Look at the /damagedr and /damagedr4 rolls.
One damage is reduced by defense and the other by c4 fields
See how they are put together - you might be able to use one exactly as is and apply the 2 DR sources to Defense or C4 or you might customise the roll to look at 2 sources.
Create a new roll called /damagewh4 and Ill include it in the base MoreCore

ShakyLuigi
December 3rd, 2020, 10:47
I am only able to make Characteristics rolls, but not Skill rolls. Is there a way to do it? I may be missing something...

Thanks in advance.

It should just be double cliking the Skill, or dragging it to the chat.
I don't really see any problem here.

Maybe I uploaded the wrong file.
Try this one.

41619

Pepor
December 3rd, 2020, 13:03
It should just be double cliking the Skill, or dragging it to the chat.
I don't really see any problem here.

Maybe I uploaded the wrong file.
Try this one.

41619

I have just checked it but I still can't. I also get a console error as soon as I open a created character sheet for the first time. I also get another error when I type any number in the T Characteristic.

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=41620&d=1607000633

41620

ShakyLuigi
December 3rd, 2020, 13:54
I have just checked it but I still can't. I also get a console error as soon as I open a created character sheet for the first time. I also get another error when I type any number in the T Characteristic.

41620

Well, I am pretty sure the first error is because the T (Toughness) characteristic is empy when making a new sheet. So the code is trying to get a NIL value, which doesn't work.
It wasn't gamebreaking error, so I haven't looked into to it yet.
All those other yellow errors is because how I've anchored the objects and frames in the character sheet. Again, shouldn't be gamebreaking, but I think I have to have a look at it and make it a little prettier.

I think I found the second error you mentioned. It has something to do with an idea I had about calulcationg corruption. But it isn't used at this moment, so shouldn't effect anything else.

I just thought of something.
I've made everything in FG Unity. Are you using Classic FG? May that have something to do with it? Can someone confirm/disconfirm this?
Still it would be odd that everything works fine with the Charactersitcs, but not with Skills since they both go through basicaly the same process.

Could you perhaps attach the console log after you've rolled one characteristic and one skill? It may help me in troubleshooting.

Pepor
December 3rd, 2020, 14:06
Well, I am pretty sure the first error is because the T (Toughness) characteristic is empy when making a new sheet. So the code is trying to get a NIL value, which doesn't work.
It wasn't gamebreaking error, so I haven't looked into to it yet.
All those other yellow errors is because how I've anchored the objects and frames in the character sheet. Again, shouldn't be gamebreaking, but I think I have to have a look at it and make it a little prettier.

I think I found the second error you mentioned. It has something to do with an idea I had about calulcationg corruption. But it isn't used at this moment, so shouldn't effect anything else.

I just thought of something.
I've made everything in FG Unity. Are you using Classic FG? May that have something to do with it? Can someone confirm/disconfirm this?
Still it would be odd that everything works fine with the Charactersitcs, but not with Skills since they both go through basicaly the same process.

Could you perhaps attach the console log after you've rolled one characteristic and one skill? It may help me in troubleshooting.

It happens in both Classic and Unity.

Here you have the Console Log.

41621

ShakyLuigi
December 3rd, 2020, 17:59
Try this one.
I think I kept on uploading the wrong file.

41631

Pepor
December 3rd, 2020, 18:37
Try this one.
I think I kept on uploading the wrong file.

41631

It does work now. Thanks!

But, the Success Level calculation is not working as expected. For instance, if you roll a 29 against a skill of 41, the chat shows a SL 1, instead of 2. I have tried with any other rolls, and sometimes it calculates well, some other times it doesn't.

Anyway, you have done a splendid work so far. Thanks again!

MMOaddicted
December 5th, 2020, 06:41
Does anyone have any info about possible official ruleset? I bought foundry for it and it's uhh it's rough to transition, *very* rough. Like I'm not capable of dming there so I'm delaying the campaign rough.

I know you folks are working on it, but I'd just like to know if there is any hope for it becoming official and paid content so I can pay you and use everything needed. Have you had any response from smiteworks? Cubicle 7?

Marcus Siew
December 5th, 2020, 07:39
I gotten Foundry WFRP4E as well, pretty well done and executed. Not sure what problems u facing.

I emailed C7 on FG Offical support but the answer is nothing at the moment but things might change in the future.

ShakyLuigi
December 5th, 2020, 12:53
It does work now. Thanks!

But, the Success Level calculation is not working as expected. For instance, if you roll a 29 against a skill of 41, the chat shows a SL 1, instead of 2. I have tried with any other rolls, and sometimes it calculates well, some other times it doesn't.

Anyway, you have done a splendid work so far. Thanks again!

Thanks for noticing!
It's been fixed.
But I am in the middle of a few major changes, so I have to wait to add this bug-fix for the next update (beginning to feel like a real developer with this kind of language :D).

Zisse
December 6th, 2020, 13:35
WFRP4 is the reason, why I bought foundry as well. Publisher support with ready made modules is key. That and the pricing model was the original reason for me to choose FG for DnD. Since I am originally coming from WFRP, I will run foundry a lot more in the future. Will keep using FG for DnD.

ShakyLuigi
December 6th, 2020, 20:53
I am trying to add a strength modifier to the attack roll.
And I am trying to do use the code that I've learned so far, but I can't make it function and I don't know why.

I have made this code to calculate the total strength (where abilities.ts is total strength).
I can also use the same method to add the total strength to other skills.


function updateS(nodeWin)
local nIS = nodeWin.getChild("is").getValue();
local nAS = nodeWin.getChild("as").getValue();

local nTS = (nIS+nAS);
Debug.console("nTS: ", nTS);
nodeWin.getChild("abilities.ts").setValue(nTS);

end


But if I use the same method within the dice roll (as shown below), I get this error: [ERROR] Script execution error: [string "scripts/wh4_damagedr.lua"]:106: attempt to index global 'nodeWin' (a nil value)



function rollDamage(rollValue,successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local nStrength = nodeWin.getChild("abilities.ts").getValue();
local lRollValue = rollValue;


if lRollValue <= lSuccessValue then
value = math.floor(lSuccessValue/10)-math.floor(lRollValue/10)+nStrength;
desc = string.format("Dmg: %d", value)
else
desc = "";
end
return desc;
end

Why does it work fine in one LUA file, but not in another? Does it have something to do with that the roll goes through the LUA file shown below first?
Because the roll and strength is done in two different windows? I am a bit lost here.


function action(draginfo)
local rActor = ActorManager.getActor("pc", window.getDatabaseNode());
AttackRoll.performRoll(draginfo, rActor, stat[1]);
return true;
end

function onDragStart(button, x, y, draginfo)
return action(draginfo);
end

function onDoubleClick(x,y)
return action();
end

damned
December 6th, 2020, 21:28
immediately after function updateS(nodeWin)
add the following line

local nodeWin = window.getDatabaseNode();


Actually - updateS is expecting you to pass nodeWin to it
What is calling updateS? Can you post that code too?

ShakyLuigi
December 7th, 2020, 09:34
I have been using "updateS" to update a value on the character sheet.
I've been using this solution for most values in the character sheet.
It's the same method you've shown in your video :D.

https://www.youtube.com/watch?v=RiBkE32tgv8&list=PLsgd1zJLdiKW3HysWZRsX4cqFlcerBvW3&index=6



<totalchar name="ts" source="abilities.ts">
<anchored to="as" position="insidetopleft" offset="0,28" width="18" />
<tooltip text="Strength Skill" />
<target>ts</target>
<statname>Strength Skill</statname>
<stat>ts</stat>
<script>
function onInit()
local nodeWin =window.getDatabaseNode();
CharacterUpdate.updateS(nodeWin);
end
</script>
</totalchar>

So "function:updateS" updates "abilities.ts".
And the value in "abilities.ts" I can use to update other skills ex. Climb (which is "skills.cli" shown in the code below).


function updateCLIMB(nodeWin)
local nCLM = nodeWin.getChild("climb_adv").getValue();
local nS = nodeWin.getChild("abilities.ts").getValue();

local nCLMT = (nCLM+nS);
Debug.console("nCLMT: ", nCLMT);
nodeWin.getChild("skills.cli").setValue(nCLMT);

end

But now I want to take the "abilities.ts" and use it in the roll, and I thought I could use the same method as shown in the Climb code above.

damned
December 7th, 2020, 11:25
See in that video here:

https://youtu.be/RiBkE32tgv8?list=PLsgd1zJLdiKW3HysWZRsX4cqFlcerBvW 3&t=260

Change

<totalchar name="ts" source="abilities.ts">
<anchored to="as" position="insidetopleft" offset="0,28" width="18" />
<tooltip text="Strength Skill" />
<target>ts</target>
<statname>Strength Skill</statname>
<stat>ts</stat>
<script>
function onInit()
local nodeWin =window.getDatabaseNode();
CharacterUpdate.updateS(nodeWin);
end
</script>
</totalchar>

to


<totalchar name="ts" source="abilities.ts">
<anchored to="as" position="insidetopleft" offset="0,28" width="18" />
<tooltip text="Strength Skill" />
<target>ts</target>
<statname>Strength Skill</statname>
<stat>ts</stat>
<script>
function onInit()
local nodeWin =window.getDatabaseNode();
Debug.chat("nodeWin1: ", nodeWin);
CharacterUpdate.updateS(nodeWin);
end
</script>
</totalchar>

and


function updateS(nodeWin)
local nIS = nodeWin.getChild("is").getValue();
local nAS = nodeWin.getChild("as").getValue();

local nTS = (nIS+nAS);
Debug.console("nTS: ", nTS);
nodeWin.getChild("abilities.ts").setValue(nTS);

end

to


function updateS(nodeWin)
Debug.chat("nodeWin2: ", nodeWin);
local nIS = nodeWin.getChild("is").getValue();
local nAS = nodeWin.getChild("as").getValue();

local nTS = (nIS+nAS);
Debug.console("nTS: ", nTS);
nodeWin.getChild("abilities.ts").setValue(nTS);

end

and see what nodeWin1 and nodeWin2 do.


and see if it outputs
then in

ShakyLuigi
December 7th, 2020, 12:51
Yep, that did something:



s'nodeWin1:' | databasenode = { charsheet.id-00002 }
s'nodeWin2: ' | databasenode = { charsheet.id-00002 }

damned
December 7th, 2020, 13:28
But the error persists?

What is Line 106 in this file?
scripts/wh4_damagedr.lua

actually post the whole script/function containing that line and mark which line is 106

ShakyLuigi
December 7th, 2020, 14:40
Here it is.
I've marked the line with "Line 106" and made it bold.


--
-- Please see the license.html file included with this distribution for
-- attribution and copyright information.
--

function onInit()
-- Register the new action we're creating. We'll allow use of the modifier stack for this action type.
--GameSystem.actions["abilities"] = { bUseModStack = true };
ActionsManager.registerModHandler("attack", modRoll);

-- Register the result handler - called after the dice have stopped rolling
ActionsManager.registerResultHandler("attack", onRoll);

-- Used for testing - register a chat window slash handler to start the action
Comm.registerSlashHandler("test", processRoll);
end

--function processRoll(draginfo, rActor, sAbilitiesStat, bSecretRoll)
-- -- Start the action!
-- performRoll(draginfo, rActor, bSecretRoll);
--end

function getRoll(rActor, sAbilitiesStat, bSecretRoll, nodeWin)
-- Initialise a blank rRoll record
local rRoll = {};

-- Add the 4 minimum parameters needed:
-- the action type.
rRoll.sType = "attack";
-- the dice to roll.
rRoll.aDice = { "d100"};
-- A modifier to apply to the roll.
rRoll.nMod = 0;
-- The description to show in the chat window
rRoll.sAbilities = sAbilitiesStat;
rRoll.bSecret = bSecretRoll;
--rRoll.nStrength = nodeWin.getChild("abilities.ts").getValue();
rRoll.nTarget = DB.getValue(ActorManager.getCreatureNode(rActor), "abilities." .. sAbilitiesStat, 0);
local sAbilitiesEffect = DataCommon.skills_ltos[sAbilitiesStat];
if sAbilitiesEffect then
rRoll.sDesc = sAbilitiesEffect;
--Debug.console("sAbilitiesEffect:" , sAbilitiesEffect)
end

return rRoll;
end

--function getStrength(nodeWin)
-- local nS = nodeWin.getChild("abilities.nSTR").getValue();
-- local value = math.floor(nS/10);
--
-- return value;
--end

function onRoll(rSource, rTarget, rRoll)
-- Create the base message based off the source and the final rRoll record (includes dice results).
local rMessage = ActionsManager.createActionMessage(rSource, rRoll);
local nTotal = ActionsManager.total(rRoll);

rMessage.text = rMessage.text .. "Attack: " .. "[".. rRoll.nTarget .."]" .. "\n"..
"Result: " .. rollOutcome(nTotal, rRoll.nTarget) .. "\n" .. rollDamage(nTotal, rRoll.nTarget)
.. rollHitlocation(nTotal, rRoll.nTarget).."\n"..rollCritical(nTotal, rRoll.nTarget);
-- Display the message in chat.
Comm.deliverChatMessage(rMessage);
Debug.console("rRoll:" , rRoll)
end

function modRoll(rSource, rTarget, rRoll)
local aAddDesc = {};
local aAddDice = {};
local nAddMod = 0;


if rSource then

local nBonusStat, nBonusEffects = ActorManager2.getAbilitiesEffectsBonus(rSource, sAbilities);
if nBonusEffects > 0 then
bEffects = true;
nAddMod = nAddMod + nBonusStat;
end
end

end


function rollOutcome(rollValue, successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
value = math.floor(lSuccessValue/10)-math.floor(lRollValue/10);
desc = string.format("HIT!" .." [SL %d]", value);
else
value = math.floor(lRollValue/10)-math.floor(lSuccessValue/10)
desc = string.format("MISS!" .. " [SL -%d]", value);
end
return desc;
end

function rollDamage(rollValue,successValue, nodeWin)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
Line 106 local nStrength = nodeWin.getChild("abilities.ts").getValue();
Debug.console("nStrength:" , nStrength)
--local nS = 5;
--local nS = nodeWin.getChild("abilities.ts").getValue();

local lRollValue = rollValue;


if lRollValue <= lSuccessValue then
value = math.floor(lSuccessValue/10)-math.floor(lRollValue/10)+nStrength;
desc = string.format("Dmg: %d", value)
else
desc = "";
end
return desc;
end

function rollHitlocation(rollValue,successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
local nX = math.floor(lRollValue/10);
local nY = (lRollValue-(nX*10))*10;
value = (nX+nY)
if value >0 and value < 10 then
desc = string.format(" Head", value)
elseif value >=10 and value <25 then
desc = string.format(" Left Arm", value)
elseif value >=25 and value <45 then
desc = string.format(" Right Arm", value)
elseif value >=45 and value <80 then
desc = string.format(" Body", value)
elseif value >=80 and value <90 then
desc = string.format(" Left Leg", value)
elseif value >=90 then
desc = string.format(" Right Leg", value)
end
else
desc = "";
end
return desc;
end

function rollCritical(rollValue,successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
local nX = (math.floor(lRollValue/10))*10;
local nY = math.floor(lRollValue/10);
value = (lRollValue-nX)
if value == nY then
desc = string.format("CRITICAL!!!",value)
else
desc = "";
end
end
return desc;
end

-- Start the action process
function performRoll(draginfo, rActor, sAbilitiesStat, bSecretRoll)
local rRoll = getRoll(rActor, sAbilitiesStat, bSecretRoll);

ActionsManager.performAction(draginfo, rActor, rRoll);
-- Debug.console("rActor:", rActor)
end

goodmanje
December 7th, 2020, 16:40
WFRP4 is the reason, why I bought foundry as well. Publisher support with ready made modules is key. That and the pricing model was the original reason for me to choose FG for DnD. Since I am originally coming from WFRP, I will run foundry a lot more in the future. Will keep using FG for DnD.

I also bought Foundry for WFRP. It sucks but it’s usable and has official content.....

damned
December 7th, 2020, 21:49
Put the Debug.chat("nodeWin3: ", nodeWin); before line 106
If it doesnt report the same as the others then whatever is calling/passing to rollDamage isnt passing nodeWin.

ShakyLuigi
December 8th, 2020, 18:37
Yeah, there is something wrong there.


s'nodeWin3: ' | nil

I'll try to recap, and put all the code in a logical order.
This is the order of things in this roll.

First the template:


<template name="weapondmg">
<simplenumber>
<frame mergerule="replace" name="bwframe" offset="3,3,3,4" />
<script file="common/scripts/attackroll.lua" />
</simplenumber>
</template>

The template calls the LUA.file attackroll.lua shown below.


function action(draginfo)
local rActor = ActorManager.getActor("pc", window.getDatabaseNode());
AttackRoll.performRoll(draginfo, rActor, stat[1]);
return true;
--Debug.console("rActor:" , rActor);
end

function onDragStart(button, x, y, draginfo)
return action(draginfo);
end

function onDoubleClick(x,y)
return action();
end

And that goes to the AttackRoll.performRoll shown below:


function onInit()
-- Register the new action we're creating. We'll allow use of the modifier stack for this action type.
--GameSystem.actions["abilities"] = { bUseModStack = true };
ActionsManager.registerModHandler("attack", modRoll);

-- Register the result handler - called after the dice have stopped rolling
ActionsManager.registerResultHandler("attack", onRoll);

-- Used for testing - register a chat window slash handler to start the action
Comm.registerSlashHandler("test", processRoll);
end

--function processRoll(draginfo, rActor, sAbilitiesStat, bSecretRoll)
-- -- Start the action!
-- performRoll(draginfo, rActor, bSecretRoll);
--end

function getRoll(rActor, sAbilitiesStat, bSecretRoll, nodeWin)
-- Initialise a blank rRoll record
local rRoll = {};

-- Add the 4 minimum parameters needed:
-- the action type.
rRoll.sType = "attack";
-- the dice to roll.
rRoll.aDice = { "d100"};
-- A modifier to apply to the roll.
rRoll.nMod = 0;
-- The description to show in the chat window
rRoll.sAbilities = sAbilitiesStat;
rRoll.bSecret = bSecretRoll;
--rRoll.nStrength = nodeWin.getChild("abilities.ts").getValue();
rRoll.nTarget = DB.getValue(ActorManager.getCreatureNode(rActor), "abilities." .. sAbilitiesStat, 0);
local sAbilitiesEffect = DataCommon.skills_ltos[sAbilitiesStat];
if sAbilitiesEffect then
rRoll.sDesc = sAbilitiesEffect;
--Debug.console("sAbilitiesEffect:" , sAbilitiesEffect)
end

return rRoll;
end

--function getStrength(nodeWin)
-- local nS = nodeWin.getChild("abilities.nSTR").getValue();
-- local value = math.floor(nS/10);
--
-- return value;
--end

function onRoll(rSource, rTarget, rRoll)
-- Create the base message based off the source and the final rRoll record (includes dice results).
local rMessage = ActionsManager.createActionMessage(rSource, rRoll);
local nTotal = ActionsManager.total(rRoll);

rMessage.text = rMessage.text .. "Attack: " .. "[".. rRoll.nTarget .."]" .. "\n"..
"Result: " .. rollOutcome(nTotal, rRoll.nTarget) .. "\n" .. rollDamage(nTotal, rRoll.nTarget)
.. rollHitlocation(nTotal, rRoll.nTarget).."\n"..rollCritical(nTotal, rRoll.nTarget);
-- Display the message in chat.
Comm.deliverChatMessage(rMessage);
Debug.console("rRoll:" , rRoll)
end

function modRoll(rSource, rTarget, rRoll)
local aAddDesc = {};
local aAddDice = {};
local nAddMod = 0;


if rSource then

local nBonusStat, nBonusEffects = ActorManager2.getAbilitiesEffectsBonus(rSource, sAbilities);
if nBonusEffects > 0 then
bEffects = true;
nAddMod = nAddMod + nBonusStat;
end
end

end


function rollOutcome(rollValue, successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
value = math.floor(lSuccessValue/10)-math.floor(lRollValue/10);
desc = string.format("HIT!" .." [SL %d]", value);
else
value = math.floor(lRollValue/10)-math.floor(lSuccessValue/10)
desc = string.format("MISS!" .. " [SL -%d]", value);
end
return desc;
end

function rollDamage(rollValue,successValue, nodeWin)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
Debug.chat("nodeWin3: " , nodeWin)
local nStrength = nodeWin.getChild("abilities.ts").getValue();
--Debug.chat("nStrength: ". nStrength)
--Debug.console("nStrength:" , nStrength)
--local nS = 5;
--local nS = nodeWin.getChild("abilities.ts").getValue();

local lRollValue = rollValue;


if lRollValue <= lSuccessValue then
value = math.floor(lSuccessValue/10)-math.floor(lRollValue/10)+nStrength;
desc = string.format("Dmg: %d", value)
else
desc = "";
end
return desc;
end

function rollHitlocation(rollValue,successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
local nX = math.floor(lRollValue/10);
local nY = (lRollValue-(nX*10))*10;
value = (nX+nY)
if value >0 and value < 10 then
desc = string.format(" Head", value)
elseif value >=10 and value <25 then
desc = string.format(" Left Arm", value)
elseif value >=25 and value <45 then
desc = string.format(" Right Arm", value)
elseif value >=45 and value <80 then
desc = string.format(" Body", value)
elseif value >=80 and value <90 then
desc = string.format(" Left Leg", value)
elseif value >=90 then
desc = string.format(" Right Leg", value)
end
else
desc = "";
end
return desc;
end

function rollCritical(rollValue,successValue)
local desc = "";
local value = 0;
local lSuccessValue = tonumber(successValue);
local lRollValue = rollValue;

if lRollValue <= lSuccessValue then
local nX = (math.floor(lRollValue/10))*10;
local nY = math.floor(lRollValue/10);
value = (lRollValue-nX)
if value == nY then
desc = string.format("CRITICAL!!!",value)
else
desc = "";
end
end
return desc;
end

-- Start the action process
function performRoll(draginfo, rActor, sAbilitiesStat, bSecretRoll)
local rRoll = getRoll(rActor, sAbilitiesStat, bSecretRoll);

ActionsManager.performAction(draginfo, rActor, rRoll);
-- Debug.console("rActor:", rActor)
end

And I want to add the value in this source to the damageroll.


<totalchar name="ts" source="abilities.ts">
<anchored to="as" position="insidetopleft" offset="0,28" width="18" />
<tooltip text="Strength Skill" />
<target>ts</target>
<statname>Strength Skill</statname>
<stat>ts</stat>
<script>
function onInit()
local nodeWin =window.getDatabaseNode();
CharacterUpdate.updateS(nodeWin);
end
</script>
</totalchar>

I really appreciate you taking the time to help me, and I understand this might be a needle in a haystack search.
I just can't seem to find the way to add this one little variable. It may be I have to find a completely different way to do this.

ShakyLuigi
December 11th, 2020, 19:03
Thanks for all the help. It made me think how things worked, and I finally figured out a way to fix the roll.

So now we have an attack roll which:
- Calculates HIT/Miss
- Number of SL
- Total dmg with str and SL
- Hit location
- CRITICAL hit message

Even though I found a way to do it, it's not nearly as refined as other rolls I've seen. But brute force has it charm (I hope).

I need to change a lot of things to make it functional in a way I would like, but I am putting out a rough version here.
At least you can have one place to put in the equipped weapon and roll for attack (no CT functions)
You manually have to put in the total WS, and dmg of the weapon, but doubleclicking the left square will roll an attack with the str modifier.

41909

41908

TomtheBu
January 28th, 2021, 18:55
Hi ShakyLuigi

Thank you for this great Warhammer extension. Apperently I have a few little problems. The first affects the attack rolls. The rolls with a weapon always fail. The first field I use WS score and the second Field for the Damage score. The attack shows [0] and the # of SL is always negative. Am I missing something?

The other issue I have is with the advanced skills. When I try to roll a skill test, a script execution error shows up and tells me something about a nil value...

I use the latest version of MoreCore and the lastest update of FGU.

Thanx in advance for help :)

ShakyLuigi
January 28th, 2021, 20:08
Hi ShakyLuigi

Thank you for this great Warhammer extension. Apperently I have a few little problems. The first affects the attack rolls. The rolls with a weapon always fail. The first field I use WS score and the second Field for the Damage score. The attack shows [0] and the # of SL is always negative. Am I missing something?

The other issue I have is with the advanced skills. When I try to roll a skill test, a script execution error shows up and tells me something about a nil value...

I use the latest version of MoreCore and the lastest update of FGU.

Thanx in advance for help :)

Hi Tom.

Thank you for the feedback!

I am aware that the current version has a few (many) errors and bugs, and is in need of an update. It didn't really work as I thought it would.
Currently I am playtesting the extenstion with my friends, and have heavily changed the attack rolls (among other things).
I am trying to test as many things, and try to get rid of as many of the game-breaking functions as I can before updating.

Hopefully it won't take to much time, and I hope the version that is out now can hold you over until I come with a proper update.

TomtheBu
January 29th, 2021, 12:44
Thank you for the fast response. I love the 4th edition of Warhammer RPG and I am planning a more or less frequent Warhammer Campaign somewhere in summer or autumn this year, so I am absolutely not in a hurry. I just became curious about your extension and wanted to check if it's the right thing for me. I appreciate your hard work on this extension which I really like and wish you great success with it and that it will fit your purpose. I stay tuned on this thread and looking forward to read about the upcoming changes and updates.

ShakyLuigi
March 18th, 2021, 10:36
For everyone who's interested, I have not left this project.
I've been playing a campaign with friends to test out the extension, and fix the problems we discover. We are getting to the end in a couple of weeks. I hope.

The next update is going to be a much bigger one. After discovering that this exists: https://www.rulesetwizard.com/ I decided to recreate everything in a stand alone ruleset using this software.

And if anyone wants to create their own ruleset I recommend using the rulesetwizard. It has streamlined the process sooo much. So thanks to the creator for that. He has his own thread here on the FG forums, if you want to check it out: https://www.fantasygrounds.com/forums/showthread.php?61387-Ruleset-Wizard-The-new-Ruleset-development-environment&highlight=wizard

I have nothing to do with the wizard. I just bought it, tested it, and loved it. Fair warning though, it really does help to have a basic understanding of how FG uses XML and Lua for advanced stuff, but you can get pretty far with just the tutorial videos.

Anyway, the next update will be it's own ruleset. Here is a list of things I have to do:

- Skill list basic and advanced/grouped - DONE
- Add more of the flavor from the character sheet (motivations/ambitions, disease, backgrounds etc.).
- Fix the attack roll so it is in line with the rules (particuarly the CRIT/FUMBLE and miss rules).
- Have the damaged calculated correctly based on the weapon group (e.g str. bonus). - DONE
- Improve the simple armor frame and rules.
- Add the "advanced" armor frame and rules.
- Have a dynamic list for Magic and for Prayers.
- Make a drag and drop list for prepared magic, prayers and talents (so the GM can add everything in beforehand, and the player can just drag and drop the relevant info in their character sheet).
- Add CT features (very simple, just so it's easy to keep track of e.g. initative, defence, advantages, wounds)
- Create a basic NPC frame adjusted to the WH 4th edt rules.
- Languages
- Inventory and money

I am going to post a ruleset before I've finished all of the things listed here, but I need to at least finish the magic/prayers/talents and simple armor frame.

Pepor
March 18th, 2021, 13:20
Those are good news! Thanks!

dmbrown
March 19th, 2021, 01:11
You should submit it to Cubicle7 when it is ready maybe they’ll let you do an official version. That is what was done with the official Foundry version. The guy had created a version for his group and then approached Cubicle 7.

Zisse
March 19th, 2021, 09:30
The ruleset is one thing. The main thing to negotiate was all the content. For those that want to play the published adventures you need them converted to the platform. Foundry and D20 have that content already.
I cannot judge the business case for official WFRP 4 modules on FG. How many hours does a proficient module converter need for one adventure? How big is the market?

dmbrown
March 19th, 2021, 15:28
I can’t say for Roll20, but for Foundry there is only one guy that built the rulesets and converted the content. I don’t know about the demand for an FG version, but Cubicle7 ran out of keys for WFRP and had to wait to get more from Foundry, so there was a demand.

I have the Foundry version as it is the only way to play WFRP 4e and it is very well done, but it is not FG. We play 5e now in FG and will play Savage Worlds in the future. While both of those are available on Foundry they can’t compare to FG’s versions. One of the players in my group has offered to GM WFRP, but is having a hard time with Foundry as he is use to FG.

The conversion process takes time and if I had to guess would say it might take something like 40 hours to convert an adventure.

MMOaddicted
March 19th, 2021, 17:53
Approach them with a product and they'll be pretty open with their license as long as you upkeep it and keep it relatively polished. C7 is very into expanding into VTTs. On a features level Foundry doesn't yet match FG and is very unpolished in comparison. They however lead the way when it comes to available rulesets. I'd be willing to buy it on FG despite owning everything on foundry XD.

ShakyLuigi
March 30th, 2021, 17:45
The first version of the ruleset is ready.
This is a stand alone ruleset, and does not need anything else. That means that anything you've done in my previous edt. (which was an extension) must be

It should be fully playable where all skills and weaponroll functions as it supposed to.

45291

Further, I've managed to add Magic/Prayers/Talents in their own lists, which can be populated by the GM before play.
That means drag and drop for these elements!

There are more things to come, but I figured having a working ruleset out there, so people can find the bugs and mistakes is an advantage for me at this point.
Several fields are not in use as of yet, but are still there as this is a WIP.

Happy gaming!

- Skill list basic and advanced/grouped - DONE
- Add more of the flavor from the character sheet (motivations/ambitions, disease, backgrounds etc.).
- Fix the attack roll so it is in line with the rules (particuarly the CRIT/FUMBLE and miss rules). DONE
- Have the damaged calculated correctly based on the weapon group (e.g str. bonus). - DONE
- Improve the simple armor frame and rules. DONE
- Add the "advanced" armor frame and rules.
- Have a dynamic list for Magic and for Prayers. DONE
- Make a drag and drop list for prepared magic, prayers and talents (so the GM can add everything in beforehand, and the player can just drag and drop the relevant info in their character sheet). DONE
- Add CT features (very simple, just so it's easy to keep track of e.g. initative, defence, advantages, wounds)
- Create a basic NPC frame adjusted to the WH 4th edt rules.
- Languages
- Inventory and money

Boskipiard
March 31st, 2021, 16:31
Thanks for that mate, really appreciate your work

Ezyrider
April 30th, 2021, 12:27
Hi Shaky Luigi

I just tried to unpack your .pk file and I got all the folders and files, and I loaded it directly into FGU but I didnt see WFRP 4th in the Game Systems list.

Shouldnt there be a .ext file to be copied into the extensions folder?

Again thanks for your time and dedication to get this off the ground!

damned
April 30th, 2021, 12:30
Welcome Ezyrider

Dont unpack it. Place the PAK in the /rulesets folder.

Ezyrider
April 30th, 2021, 12:31
Great thanks!

Blue Haven
May 2nd, 2021, 16:00
Thank you for your work :)
I will give it a try :)
Big Hugs

Malaith
May 12th, 2021, 05:05
Amazing work! Thanks so much! :)

Is there a theme for warhammer?

lordmalachdrim
June 18th, 2021, 21:09
Looking good so far.

vegaserik
July 15th, 2021, 20:03
Curious as to how this is coming along. I'd love to see an update.

ShakyLuigi
August 2nd, 2021, 17:34
It's nice to hear that people are enjoying this! And I would love to give an update to the ruleset, but the last couple of months, work has been a bit overwhelming.
I think things are going to get a bit easier and calmer after August, though when that happens I am going to prioritize family and friends as they have been ignored (both because of work and Covid measures) too much lately.

I haven't forgotten this, and if there comes a time when I don't want to work on this anymore I will make a very clear statement here, so people don't have to wonder about what is happening.

Happy gaming everyone, and stay safe!

ShakyLuigi
October 23rd, 2021, 09:29
Hi everyone.

I've started working on this again, and have updated quite a few things.

But I need some help with a hurdle I've encountered.

I've attached two pictures showing Characteristics and Weapons.
Characteristics are static blocks with values you can change during the game (like leveling and such).
Weapons is a window list where you add and remove weapons .

Now, the red value is supposed to be in the blue values. No problem.
But when I update the red value, the blue value is not updated. I can't find a way to add the blue values in the red value's script.

Any tips for doing this? Or maybe some more information?

49598
49599

damned
October 23rd, 2021, 11:52
You either do an onValueChanged() on the Red value or you put some DB.addHandler() in the mix.

vegaserik
October 23rd, 2021, 12:37
hi everyone.

I've started working on this again, and have updated quite a few things.

But i need some help with a hurdle i've encountered.

I've attached two pictures showing characteristics and weapons.
Characteristics are static blocks with values you can change during the game (like leveling and such).
Weapons is a window list where you add and remove weapons .

Now, the red value is supposed to be in the blue values. No problem.
But when i update the red value, the blue value is not updated. I can't find a way to add the blue values in the red value's script.

Any tips for doing this? Or maybe some more information?

49598
49599

sweet!

Pepor
October 23rd, 2021, 15:27
Cool! Thanks!

ShakyLuigi
October 24th, 2021, 10:15
You either do an onValueChanged() on the Red value or you put some DB.addHandler() in the mix.

Thank you for the tip.

I dug a little bit more so I can explain the challenge a bit better.
I'm used to using onValueChanged() in my scripts. But I can't find a proper way to find the path to each "strength_bonus" to use with onValueChanged().

The trouble here is that the value of strength bonus is in each line of the list.
I think that the path (for my setup) would be

nodeWin.getChild("weaponlist").getChild("id-0000X").getChild("strength_bonus")();

Now, each line of the list has an id, which I need to go through.

I.E. I have three weapons in the list, that means I have to go through id-00001, id-00002 and id-00003 and find the "strength_bonus" in each and update that.

damned
October 24th, 2021, 11:26
You will need to use a

for loop

You will do something like

for k, v in pairs

You will need to post more code so we can try and suggest the right syntax to use

ShakyLuigi
October 24th, 2021, 11:39
Okey, I will try to post what I've found


function sbonus()
local nodeWin = window.getDatabaseNode();
local nS = nodeWin.getChild("totS").getValue();

local nSB = math.floor(nS/10)

local test = nodeWin.getChild("weaponlist");

for _,v in pairs(test.getChildren()) do
v.strength_bonus.setValue(nSB);
end

end

Does this make any sense? It certainly doesn't work.

I think the path is nodeWin.weaponlist.id-0000X.strength_bonus.

where x = the listnumber in the weaponlist.

damned
October 24th, 2021, 12:21
I km not near my computer but first start with debug statements

Debug.chat(nodeWin)
Debug.chat(nS)
Debug.chat(test)
Debug.chat(v)

damned
October 24th, 2021, 15:14
Assuming test is valid then this should work:



for k,v in pairs (test.getChildren())
v.getChild("strength_bonus").setValue(nSB));
end

ShakyLuigi
October 25th, 2021, 09:34
Assuming test is valid then this should work:



for k,v in pairs (test.getChildren())
v.getChild("strength_bonus").setValue(nSB));
end


Thank you! I will try this when I get home from work, and get back to you.

ShakyLuigi
October 25th, 2021, 18:11
Haha! That worked perfectly! Thank you very much damned!

One step closer :D

damned
October 27th, 2021, 03:53
Continued here:
https://www.fantasygrounds.com/forums/showthread.php?71099-Warhammer-FRPG-4th-Edition-Community-Ruleset

goodmanje
December 7th, 2021, 01:58
I ended up just buying Foundry.... They have an official ruleset that works well. I'd much rather play in FG but I don't think there is any interest in making an official ruleset.