PDA

View Full Version : Warhammer FRPG 4th Edition Community Ruleset



ShakyLuigi
October 26th, 2021, 19:45
Woohoo!

Version 2.0 out now!

-Version 2.0 removed-

Remember to do backups of any ongoing games you are doing, because I have changed alot and the character sheets may not translate well into the new version.

I've improved alot of things and added more of the system now.

- Changed the overal layout of the character sheet. Everything is now available on two sheets. This was a request from my own group of players
- Added an allies and foes windowlist where the player can add notes about NPC's they meet during the adventures.
- Added windows for coins and apparell.
- Added window for encumbrance.
- Added a list for languages, which I have tested with the extension in the link below. You just have to add the WRFP4 ruleset in the extenstion file. I blatently stole the solution for the language from frostbyte000jm.

https://www.fantasygrounds.com/forums/showthread.php?63345-Golarion-Languages-and-Fonts-for-FGU&p=559235&viewfull=1#post559235

- Fixed a whole bunch of errors and bad scripting with weapons, skills, wounds and soak.
- Fleshed out the character sheet with more info.
- Made a very basic NPC sheet, which is good enough to keep track of the stats of NPC's, but is not finished.

The next big thing I think is the combat tracker and finishing the NPC sheet.

Please post any errors or wrong results/scripting if (when) you find them.

Happy gaming!

15.12.2021 V. 2.1
Removed
See post 8 for changelog.

18.12.2021 V. 2.2
Removed
See post 9 for changelog.

24.08.2022 V. 3.0
Removed
See post 33 for changelog.

2.10.2022 V. 3.1
Removed
See post 39 for changelog.

27.10.2022 V. 3.2
Removed
See post 45 for changelog.

The ruleset is in the Forge now, so get it there :) https://forge.fantasygrounds.com/shop/items/902/view

vegaserik
October 26th, 2021, 20:57
Woohoo!

Version 2.0 out now!

49679

Remember to do backups of any ongoing games you are doing, because I have changed alot and the character sheets may not translate well into the new version.

I've improved alot of things and added more of the system now.

- Changed the overal layout of the character sheet. Everything is now available on two sheets. This was a request from my own group of players
- Added an allies and foes windowlist where the player can add notes about NPC's they meet during the adventures.
- Added windows for coins and apparell.
- Added window for encumbrance.
- Added a list for languages, which I have tested with the extension in the link below. You just have to add the WRFP4 ruleset in the extenstion file. I blatently stole the solution for the language from frostbyte000jm.

https://www.fantasygrounds.com/forums/showthread.php?63345-Golarion-Languages-and-Fonts-for-FGU&p=559235&viewfull=1#post559235

- Fixed a whole bunch of errors and bad scripting with weapons, skills, wounds and soak.
- Fleshed out the character sheet with more info.
- Made a very basic NPC sheet, which is good enough to keep track of the stats of NPC's, but is not finished.

The next big thing I think is the combat tracker and finishing the NPC sheet.

Please post any errors or wrong results/scripting if (when) you find them.

Happy gaming!

Nice! Looking forward to checking this out. Warhammer has a Humble Bundle out which has a bunch of 2e and 4e pdf's that are just perfect to use in FGU.

Kalikisan
October 29th, 2021, 20:15
ShakyLuigi nicely done. I set out to make a Sword Chronicle build and succeeded in some ways (enough to be playable for my players) but in the end I halted work because it was truly a lot to do on my own and my family life suffered. I was following this effort through all the threads nicely done. Great job sticking with it!

NuclearNebula
October 30th, 2021, 01:27
Woohoo!


Please post any errors or wrong results/scripting if (when) you find them.

Happy gaming!

Character Sheet has Charm Animal as a Fel based skill. It should be WP.
Thanks for putting this together.

Blue Haven
October 30th, 2021, 13:14
Thank you :) Looking good :)

ShakyLuigi
November 29th, 2021, 18:50
I am in need of a little help.

I am trying to add an attack roll for NPC's.

Basically I am using the same script for the roll as I do with PC-attacks.
The roll works, but it should add a value called "advantage" to the roll. It functions perfectly for a PC, but not for the NPC.

For both sheets I've created a weapon list which you can populate with weapons. And for each weapon there is a number field where you can roll attack.
They are identical in build and function.

To get the value for "advantage" I have this code:


local adv= DB.getValue(ActorManager.getCreatureNode(rSource), "advantage_field", 0);

But I have noticed a difference for "rSource" for NPC and PC. I did a debug of rSource and this came up:

PC:

s'rSource' | { s'sType' = s'charsheet', s'sCreatureNode' = s'charsheet.id-00001', s'sName' = s'' }

NPC:

s'rSource' | { s'sType' = s'npc', s'sCreatureNode' = s'npc.id-00001.npcweaponlist.id-00001', s'sName' = s'' }


As far as I can see there is no difference in the build of PC vs. NPC, but the NPC rSource has the added "npcweaponlist.id-00001".
Is this the problem? Is it not possible to use the same script for PC and NPC when rolling attack? Have I changed something that I am not aware of?

Trenloe
November 29th, 2021, 19:06
Is this the problem?
Yes, that will be the problem as ActorManager.getCreatureNode is expecting the base creature node.


Is it not possible to use the same script for PC and NPC when rolling attack? Have I changed something that I am not aware of?
You'll need to check in your attack script how it is constructing the rSource record and cater for PC and NPC appropriately.

ShakyLuigi
December 15th, 2021, 14:54
Thanks for the help Trenloe.
It helped me to find out what I had to change.

Version 2.1 is out!

Changelog:

1. Added a weaponlist and advantage field for NPC's.
2. Fixed update on base weaponskill for weapons in character sheet.
3. Updated the attack roll, so it always has at least 1 dmg (no negative dmg given).
4. Updated the advanced skill table, when changing the characteristics the base will update.
5. Fixed a few link problems with the spell table and spelllist. Now the data will be placed correctly.
6. Minor changes on the looks for spell- and prayerlists.



50333

ShakyLuigi
December 18th, 2021, 16:00
Just a quick fix.
I discovered that critical and fumble rolls didn't function correctly.
This version should fix it.

V2.2
50449

blokkaroach
December 23rd, 2021, 21:13
Hi. I am looking at converting the core rules for 4th ed atm. Have loaded in your rule set, but noticed that there is no sidebar for class/career. Wondering if I am blind, or if that is still in progress? If so, is this something you are still actively working on?

ShakyLuigi
December 25th, 2021, 11:18
Hi blokkaroach

I hadn't anything specifically planned for class/career. With the new update of FG and the inclusion of the Reference Builder I was thinking one could use that for creating the list of careers. But hey, I am open for suggestions. What were you specifically thinking about when asking for this? Could you give a quick description?

The next things I want to work with are:

- Making sure the combat tracker functions properly with basic information.
- Checking what I could possible automate with talents and effects.
- General polish of NPC and PC sheets.

blokkaroach
December 25th, 2021, 22:35
I was thinking something similar to the 5e class lists. Each Class as an overview and each career as a subclass, like a warlock pact or any other class specialization. Something that could be dragged and dropped onto the character sheet and set up to allow for mutli classing etc, with as much automation as core will allow. Which I will be honest I have no idea about. I covert stuff and make it pretty and functional, but don't mess with the mechanical side of it all :)

blokkaroach
December 27th, 2021, 01:53
I was thinking about how to do it yesterday and wanted to try something. I did a mock up using 5E (Obviously not super compatible, but wanted to get a feel for it.) I tries with the over class then the careers as specializations, but wasn't a fan of that, so did it again with the careers as the class, seems to work much better. I will link the mod I made here. Only did the Apothecary career, as a test and just left it as level 1-4 for the different specs (I think that might work anyway as a way to do it).

Let me know what you think? Either way I am going to keep plugging away at the conversion. At the moment it is just as a gift to a friend. That being said I would be happy to convert the whole lot as an official conversion. Warhammer is awesome and the fact it isn't official on FG is a big hole as far as I am concerned. Id love to see both Warhammer and 40k officially on the platform.

vegaserik
December 27th, 2021, 04:45
There isn't anything to automate in wfrp compared to 5e is there? You have to buy everything so everyone would advance differently. Where 5e you get the stuff per level automatically with a few choices here and there. I wouldn't mind a tab on the character sheet for the career so you can keep track of what you've taken, and a spot on the sidebar to enter the career's info, but I'd rather get the combat tracker and anything for play working 100% first and the sheets polished up like in his list above. Character creation is harder to do on FG when it's like wfrp where you have choices to make. In 5e every fighter gets the same abilities at 1st automatically so a drag and drop makes sense.

I've been putting the Starter Set adventure in for playing a one-shot myself, so I've been contemplating on how to do careers. I don't know what approach would be the best if I were to play a campaign right now, I'd simply use a note for each character to keep track of what they've spent on their career. Not very fancy but it'd get the job done. All I know is it takes alot of work to get something like this working and working well. I appreciate everything ShakyLuigi has done for wfrp 4e very much!

All it takes to get it official is someone to approach Cubicle 7 saying they want to do it and probably show that they can. Most of the developers of the various systems are contracted with the various rpg companies to do this. It takes a big commitment. I've been on this with a small company and converted a couple of products for them to put on the Forge and the level of polish you need is pretty high. I wish they would teach a class on how to do rulesets lol there's so few people that know how!

blokkaroach
December 27th, 2021, 05:00
No. nothing to Automate. The mod I dropped I think does pretty much what you said. Gives a "Careers" tab and a way to easily track you careers. If I can look at my sheet and See "Apothecary 4" "Engineer 4" then I know where I am and the Career Path (Features) just give me a reference on the character sheet so I know what skill, talents and Trappings I have.

ShakyLuigi
January 8th, 2022, 13:07
I've been trying the new Reference Builder that has been added to Fantasygrounds, and I have made a test for a career overview.
The advantage with this, is that you make it one time, and then you can export everything for later use as a mod.

50846

Now, i can see the advantage of making a special career tab on the side, with referenceses to talents and skills and other stuff.
But I think for this to be advantageous I would have to allready preload all the information that is in the books. And I probably can't do that.

So right now, I think the Reference Builder is the best bet for building all the careers, as anyone can make them as they please, and it is possible to export as a module.
What I maybe could do, is adding somewhere on the charactersheet which can hold the career references.

ShakyLuigi
January 19th, 2022, 07:14
Just wanted to let people know that there won't be an update for a while now.

I am going to run the first book of the Enemy Within campaign with my friends and test the ruleset.
We made the characters yesterday, and, wow, there were a whole lot of small bugs, design flaws and missing basic functionality that needs to be added.

But hey, I am getting it thoroughly playtested now!

Happy gaming!

damned
January 19th, 2022, 07:48
Just wanted to let people know that there won't be an update for a while now.

I am going to run the first book of the Enemy Within campaign with my friends and test the ruleset.
We made the characters yesterday, and, wow, there were a whole lot of small bugs, design flaws and missing basic functionality that needs to be added.

But hey, I am getting it thoroughly playtested now!

Happy gaming!

playtesting is always eye opening!

Zar
February 1st, 2022, 17:58
Any updates on the progress of the project are very appreciated :)

ShakyLuigi
February 2nd, 2022, 16:05
So far I've discovered and/or corrected the following things.

- Minor issues concerning spelling, bad scripting, poor layout etc.
- Changed the layout of the character sheet.
- Removed the tabs on the side, and replaced them with two on the top. This will keep people from using the sheets that are not supposed to be used.
- Moved weapons list into the tab system for Magic and Prayes. Saves a lot of space, and is a bit more intuitive.
- Added Talents list on the NPC sheet. Added more space and other things on this sheets also, but it is a WIP.
- There is something wonky with my advantage and modify values in the scripts, and I have to look into that.
- Wrong damage on a couple of weapons.
- I want to find out if I can automate some of the talents, particuarly the things that affect health and base characteristics.

That's where I am right now.
But again, don't expect any updates on the ruleset for quite some time now. We are heading into the busiest time of the year for me at work now. So I am immensely busy the next couple of months now.

Happy gaming!

ShakyLuigi
March 11th, 2022, 17:43
Quick status update:

We are halfway through the first book now (I will try to upload an update of the ruleset when we've finished the first book)

Since last time this is the status of the ruleset:

I've "fixed" the combat tracker, so it has an overview of max wounds, current wounds, advantages and of course initiative (thanks for the videos on youtube damned. Those are a lifesaver!)
The most asked for request from my players so far is some way of managing leveling and xp cost. So I am trying to work that out now.
So far I've gotten to managing the cost and calculating for weapongroups. The next step is trying to make it functional in play. And adding characterisics and skills of course. But weapons are the easiest, and besides, I am not happy with the weapon tab as it is now. Hopefuly this will solve this :)

Happy gaming!

ShakyLuigi
April 24th, 2022, 17:22
Just wanted to give a lifesign and show something I'm working on now

52518

I tried using the reference builder for the careers, but it became to much of a hazzle for my players, so I went ahead with blokkaroach's suggestion and added a career tab on the side.
This will (hopefully) only be GM editable and can be added to the character sheet.
I've also added the function to populate the talent list for each career level from the main talent list into the career sheet.
And then the player can easily add the talents they buy from this list.

So all in all, I was wrong, this was actually a very good suggestion.
Need to add the trappings as well.

We are about halfway through the Enemy in Shadows book, and I hope to have a big update on the ruleset fairly quickly after we finish it (whenever that might be).

Happy gaming!

dmbrown
April 24th, 2022, 20:26
You should approach Cubicle 7 when you think you have the ruleset at a good point.

blokkaroach
April 24th, 2022, 22:50
Glad to hear it was a good suggestion :) I was only talking form the side of a converter, so know nothing of the req's for building a ruleset. Are you converting the books as well while you are doing this?

ShakyLuigi
April 25th, 2022, 13:02
No, I'm just making an empty ruleset for use with 4th edt. All of the data has to be typed in by the user.
I am pretty sure that if I added all the data from the books I would quickly get an email to stop by 7Cubicle and Games Workshop.
Although, I've discovered how I can add the possibility to export each data list. Which means when you've populated the Talents list, you can export it and use it for a different campaign with the same ruleset.
So hopefully, most of the data punching will be a one time thing for everyone.

ColinBuckler
April 26th, 2022, 09:37
Cubicle 7 sells rulesets for WFRP 4e for Foundry VTT - they may be responsive if you approach them to include your ruleset for another well established VTT.

I would try them - you never know.

ShakyLuigi
June 13th, 2022, 21:34
In need for some coding help again.

I have a windowlist which is populated with items.
When I add or change the items in the list, it goes through it and sums the appropiate values and sets them where they are supposed to go.
All is well.

But, after closing FG and then opening the character sheet all the values are zero.

So, I tried adding an onInit() function


function onInit()
local nodeWin = window.getDatabaseNode();
soak(nodeWin);

super.onInit();
end

But this does nothing. I have to change a value in the for the soak function to run (using onValueChanged).


function onValueChanged()
local nodeWin = window.getDatabaseNode();
soak(nodeWin);

end

I also tried to add something I've used before, an onDelete function


function onDelete()
local nodeWin = window.getDatabaseNode();
soak(nodeWin);

end

When deleting a list item, I need it to go through the script and update all the values.

The soak function is a bit long, but it is basically repeated for each value so I'll just show a small portion of it:


for k,v in pairs(a_list.getChildren()) do

if v.getChild("location").getValue() == "Quick Armour" then

q_armour = 0;
q_armour = q_armour + v.getChild("ap_value").getValue();

end
soak = q_armour + nTB
nodeWin.getParent().getParent().getChild("tot_soak").setValue(soak);

end

As I've said, when changing the "location" value, it functions perfectly. I just need to make it run on start (onInit), and when deleting (onDelete).

Does it have something to do with the fact that the code is in a combobox in the windowlist? So when I delete the item, the code does not exist anymore?

ShakyLuigi
June 20th, 2022, 21:34
Okey, I've gotten a few steps closer.

I figured out how to get onInit to function. And onValueChanged is still active. So that's good.

But I am no closer in getting the delete function to work.
Still I think I found the solution in this thread:

https://www.fantasygrounds.com/forums/showthread.php?55346-Registering-an-event-handler-for-a-deleted-list-item

And it seems I need to add a Handler like he did.
But I don't understand at all how handlers work. I think I am looking right at the solution, and I have no idea what I'm looking at.

What is a handler? How would I make a handler start? How does it function? Where would i put it?

I tried looking at the developer guide as well, but honestly I don't understand nothing about what it is written there.

vankar
July 23rd, 2022, 13:43
with the new fgu update the dice rolls from the character sheet don't work :(

ShakyLuigi
July 23rd, 2022, 17:57
with the new fgu update the dice rolls from the character sheet don't work :(

I am on vacation right for the next two weeks, but I'll have a look at it if I get the chance.

vankar
July 26th, 2022, 10:25
Thank you :)

vankar
August 22nd, 2022, 12:33
the latest patch of unity broke the combat tracker too

ShakyLuigi
August 24th, 2022, 19:28
Sorry for the slow update here, but this is a big one.

Here it is, v. 3.0!

54097

Please keep copies of your old campaigns somewhere, as I can't guarantee that information won't be lost.

Changes (those I remember):

- Updated most of the layout of the character sheets.
- Added inventory with separate armour and weapon columns which is all added in a master inventory list (with encumbrance autosum).
- Armour can be sorted based on location, autosum.
- Made Career tabs.
- Made Race tabs.
- Updated the NPC frame.
- Adjustments to the combat and skill rolls.
- Fixed the modifier so it calulcates correctly.
- Added weapongroups that can be trained.
- Updated the Weapons tab to add the skills correctly.
- Updated the Items tab to be more in accordance with WH.

And a lot more under the hood with skill and weapon rolls and other tweaks.

There are probably going to be a lot of bugs now, and I appreciate you letting me know when something breaks or doesn't work at all.

I will try to update in smaller portions going from here, but right now all hell broke lose at my work and there is going to be little spare time for me in the near future.
But if I do get some extra time (and have the energy) I want to tweak this ruleset more.

I did not see the trouble with the combat tracker, or any with the skill/combat rolls when I tested it here.
Could you add some more information as to what is broken? Unless this update fixed it.

Happy gaming!

damned
August 25th, 2022, 04:18
Go Shaky!

TomtheBu
September 3rd, 2022, 12:59
Hi Shaky, very nice ruleset!!
Just a few things are unclear: Is it possible to enter trappings in the career sheet? The trapping fields have no edit possibilities and I also look for a place to enter skill descriptions. Maybe itīs possible to have an extra record entry for this?

Do you plan to enable opposed attack rolls in the ct? This would be awsome.

Your ruleset has a lot of potential IMO.

Greetings and thanks in advance :)

ShakyLuigi
September 6th, 2022, 21:03
Hi Shaky, very nice ruleset!!
Just a few things are unclear: Is it possible to enter trappings in the career sheet? The trapping fields have no edit possibilities and I also look for a place to enter skill descriptions. Maybe itīs possible to have an extra record entry for this?

Do you plan to enable opposed attack rolls in the ct? This would be awsome.

Your ruleset has a lot of potential IMO.

Greetings and thanks in advance :)

Thanks!

I see that the add button is bugging, so I have to fix that.
But in the mean time, it should be possible to right click and select "Create Item" in the radial menu.
This will give you a new item you can edit.

And opposing rolls is something I really would like to do, but it is probably at least on my top three hardest things to code.
At least with my skill set.

And with skill descriptions, are you thinking about the Advanced Skills, or all the skills?
I think it might clutter things a bit if I add description for skills.

damned
September 7th, 2022, 10:15
Hey Shaky my approach to coding opposed rolls is either:

if you must have actual dice rolls then you roll the targets opposed roll first and store that in db field, then you make the attacking roll and compare against the opposed roll result and then reset the value to 0

otherwise just use math.random(#) to adjust the target value by a roll (equivalent) amount.

TomtheBu
September 7th, 2022, 17:48
Hi Shaky,

I mean the trapping fields in the career sheet, not the character sheet. Right clickling opens no radial menu to enter or create an item.

The skill descriptions would be a nice to have but not a must. It would be nice to have a place to look up specializations and the different uses of skills.

And of course opposed tests would be a great gain to the ruleset :)

ShakyLuigi
October 2nd, 2022, 12:52
A small update this time.

I've fixed the items in the career sheet.
Also added some graphics here and there, just to test a few things. Critique is much welcome.

With the career sheet, I think I might make it smaller with tabs for each level. I think that would create a better overview of the careers.

54565

ShakyLuigi
October 2nd, 2022, 17:43
I've discoverd a major annoyance in my ruleset when creating a character.

When adding a race this script runs:


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

end

The script is much longer, but this is all that is needed to explain the problem.
When creating a character sheet, the tab that contains "totS" hasn't been open yet.
Therefore I get an error message reading:

Script execution error: [string "species_name"]:4 attempt to index a nil value

I understand the cause: since the tab containing "totS" hasn't been opened yet, there is no value to get. Therefore the nil value.

What can I do to get the script to ignore all errors involving a nil value?
Can I make it say "if nil value then nS = 0"?

Trenloe
October 3rd, 2022, 01:04
What can I do to get the script to ignore all errors involving a nil value?
There are a few options:

1) Test for the nil value first. or use slightly different code.

You can test for not nil values with something like the following, only doing the code if the object exists:


function onValueChanged()
local nodeWin =window.getDatabaseNode();
local nodetotS = nodeWin.getChild("totS");
local nS = "";
if notetotS then
nS = notetotS.getValue();
end
...
end

2) However, in this instance, if totS is always going to be in the database for correct operations, use the node.createChild API call - this will use the child node if there already or create it if not - https://fantasygroundsunity.atlassian.net/wiki/spaces/FGCP/pages/996644722/databasenode#createChild You'll need to add an extra argument of "type" so it knows what type of child to create. I don't know if this makes sense in your code, so it may not be an option in this case.

3) Another way is to use the DB global package getValue function as this allows the default value to be returned if the function can't find a valid value: https://fantasygroundsunity.atlassian.net/wiki/spaces/FGCP/pages/996644582/DB#getValue

So, in this case, you could use something like:


function onValueChanged()
local nodeWin =window.getDatabaseNode();
local nS = DB.getValue(nodeWin, "totS', "");
if nS ~= "" then
-- do stuff
end
...
end

ShakyLuigi
October 3rd, 2022, 21:38
Thanks a lot Trenloe!

Good thing you gave me so many choices, because I needed to use both solution 1 and 2 in different places to get everything to work.
But now it seems to function.

That removed 6 Error messages in one go :D

Trenloe
October 3rd, 2022, 22:06
Thanks a lot Trenloe!

Good thing you gave me so many choices, because I needed to use both solution 1 and 2 in different places to get everything to work.
But now it seems to function.

That removed 6 Error messages in one go :D
Woo hoo! Nice one. Happy to help. :)

daddyogreman
October 26th, 2022, 23:58
Hey this is awesome! Just about to join a WFRP campaign and came across this. You should slap this bad boy in the forge!

ShakyLuigi
October 27th, 2022, 19:43
Small update this time.

- Fixed a whole bunch of error messages when creating a character.
- Fixed the error for creating new items in the trappings list.
- Small graphic changes.

54876

Thanks daddyogreman! I would love to get some feedback on what works and doesn't if your group ends up using the ruleset!

I have actually thought about adding this to the Forge.
Not sure if it is allowed though. I am not adding anything that is copyrighted by Games Workshop or Cubicle 7, but the gaming system is not mine.
I have tried to see if there are any limitations in the Forge Rules, but haven't seen any. Haven't found anything that says I'm allowed either.

Is there someone more knowledgable than me that could answer this?

daddyogreman
October 27th, 2022, 21:37
Oh on a side note - you're titling the file WRFP 4th edt.pak when I think you're meaning WFRP 4th edt.pak.

And it'd just be me using it for a character sheet/automation, not the entire group. I'll tread lightly for the moment and keep a paper copy of my character sheet and bring dice, but I'll certainly be seeing that this ruleset can do! Thanks for all the work!

damned
October 27th, 2022, 22:05
Small update this time.

- Fixed a whole bunch of error messages when creating a character.
- Fixed the error for creating new items in the trappings list.
- Small graphic changes.

54876

Thanks daddyogreman! I would love to get some feedback on what works and doesn't if your group ends up using the ruleset!

I have actually thought about adding this to the Forge.
Not sure if it is allowed though. I am not adding anything that is copyrighted by Games Workshop or Cubicle 7, but the gaming system is not mine.
I have tried to see if there are any limitations in the Forge Rules, but haven't seen any. Haven't found anything that says I'm allowed either.

Is there someone more knowledgable than me that could answer this?

Game Mechanics are not copyrightable in the US
Make sure that your ruleset states it is Unofficial or Community etc
Dont represent it as a licensed/authorised version and dont include copyright material

vankar
October 29th, 2022, 10:33
Small update this time.

- Fixed a whole bunch of error messages when creating a character.
- Fixed the error for creating new items in the trappings list.
- Small graphic changes.

54876

Thanks daddyogreman! I would love to get some feedback on what works and doesn't if your group ends up using the ruleset!

I have actually thought about adding this to the Forge.
Not sure if it is allowed though. I am not adding anything that is copyrighted by Games Workshop or Cubicle 7, but the gaming system is not mine.
I have tried to see if there are any limitations in the Forge Rules, but haven't seen any. Haven't found anything that says I'm allowed either.

Is there someone more knowledgable than me that could answer this?

Thx for the work

with the last updated hardy is not editable

ShakyLuigi
October 30th, 2022, 12:40
Hehe, that is actually not a bug, but a feature.

If you add "Hardy" to the talents, and set the "Count" to 1, then it should sum it by itself!

I removed the edit option to keep my players from editing themselves, so I could force them to test out the function.

ShakyLuigi
November 2nd, 2022, 22:25
Well, i've slapped it on the Forge!

At the same time I fixed the combat tracker, so the relevant info is transfered correctly.

And that's about it for this time.

Happy gaming!

damned
November 3rd, 2022, 00:09
Well, i've slapped it on the Forge!

At the same time I fixed the combat tracker, so the relevant info is transfered correctly.

And that's about it for this time.

Happy gaming!

Added to the list!

https://www.fantasygrounds.com/forums/showthread.php?75706-40-Free-Rulesets-on-the-Forge

daddyogreman
November 3rd, 2022, 00:13
Well, i've slapped it on the Forge!

At the same time I fixed the combat tracker, so the relevant info is transfered correctly.

And that's about it for this time.

Happy gaming!

If you're interested in some assistance with this ruleset, I'd be happy to chip in as I can. If you've got a link to the repo, I can submit PR's against it. Looks like you put this ruleset in the vault on the forge. Would already like to add some contributions around item fields and the like.
Or better yet...join the Fantasy Grounds Unofficial Developers Guild discord server and we can put a channel in for this ruleset!
https://discord.gg/qpCeDvekKa

ShakyLuigi
January 8th, 2023, 14:06
Hey Shaky my approach to coding opposed rolls is either:

if you must have actual dice rolls then you roll the targets opposed roll first and store that in db field, then you make the attacking roll and compare against the opposed roll result and then reset the value to 0

otherwise just use math.random(#) to adjust the target value by a roll (equivalent) amount.

I am going to try and have a look at opposed rolls, as I feel that is the next logical step for this ruleset.

I've been trying to get my head around on how to build something like this, and I think I have a general idea how it basically should be.

1. Choose target.
2. Roll attack roll (starting with opposed attack rolls, as this is the easiest to understand). The attack roll will generate a value SL.
3. The target will defend themselves with an attack roll. This will also generate a value SL.
4. Compare SL values. The highest is the winner.
5. Calculate damage.

I got a little so far. I've managed to find the target as value in the combat tracker.

Step 2 is also fine. And I think I will be able to save the SL no problem. But then comes the next step.
I would like there to come up a prompt for the target (either NPC or PC), where the player (or GM, as is apprioate) add necessary information and roll the dice.
And then produce results in chat as normal.

Where would I start to look and learn how to create a prompt like this? Is it even possible?

bayne7400
January 8th, 2023, 21:27
You need to pass your first roll information into another roller.

local rRollProt = { sType = "armour", sDesc = "Protection Roll", aDice = aDice, nMod = nMod, nTotalDamage =nTotal, sDefender = sDefender};
ActionsManager.performAction(nil, nil, rRollProt);

This is located in my damage roll handler. Here I pass my roll result and the path for my defender node into my armour roll. it is found by:

local nodeDefender = ActorManager.getCTNode(rTarget)
local sDefender = DB.getPath(nodeDefender)

Once in my armour roller I do my operation to apply the damage reduction. Then I send it into my msgOOB.

ShakyLuigi
January 10th, 2023, 18:44
You need to pass your first roll information into another roller.

local rRollProt = { sType = "armour", sDesc = "Protection Roll", aDice = aDice, nMod = nMod, nTotalDamage =nTotal, sDefender = sDefender};
ActionsManager.performAction(nil, nil, rRollProt);

This is located in my damage roll handler. Here I pass my roll result and the path for my defender node into my armour roll. it is found by:

local nodeDefender = ActorManager.getCTNode(rTarget)
local sDefender = DB.getPath(nodeDefender)

Once in my armour roller I do my operation to apply the damage reduction. Then I send it into my msgOOB.

Okey, I think I have the general idea.

rRollProt has all of the necessary info to calculate an opposed roll. rRollProt is sent to a different script, let's say script B.
Now the info is saved in script B (is my guess). The defender rolls an opposed roll, running script B. Is this correctly understood?

If so, then here is my next question. How would I make sure that the correct "defender" is rolling an opposed combat roll?
Would I have to build the script, so that it checks who rolls against the rTarget that is saved in rRollProt?
Am I on the right track, or am I missing something?

ShakyLuigi
January 14th, 2023, 17:21
I'm having trouble wrapping my head around what you suggested.
Is there a ruleset or scripts I can have a look at to try and understand how one would do this?

bayne7400
January 14th, 2023, 23:29
Ok you understand what a roll handler is right? It is where you take the output of your roll, manipulate it and may or may not display the results in the chat box.

If you do then inside that handler you need to make your opposed roll. Inside your new rRoll (your table) , pass the first rolls information that you need. If it is a node like your Source or Target node pass it as a string..

Then inside the handler for your roll you just setup manipulate both roll data as required. Make any changes to the DB and pass the output into chat. If a Client is changing the DB outside of his character sheet you will need to use msgOOb to make any DB changes.


the local rRollProt above is just a table i used to setup a protection roll.

ShakyLuigi
January 15th, 2023, 13:19
Thanks for trying to help me. I have zero background from scripting or coding. I don't know any code-languages. My day job is quality assurance in a mayonaise factory. Just to give an impression of my level of understanding codes.
Trying to explain my problem, without really understanding everything is hard. But again, thanks for trying to help me.


I think I understand what a roll handler is. A script that gets info from a roll and you generate a result from it. You can also get other necassary info (like modification number, or damage from a weapon) to get the result you want.
Easy peasy.

But I know I am having trouble understanding DB commands.
I just don't get having PC A attacking NPC B, and then having B "invited" into the rollhandler in a new roll. The info is overwrited when I am doing a new roll.
In Warhammer, both parties roll an attack which generate level of successes. These two numbers are compared and the highest is the winner. If you are attacking and win you give damage. If you defend and win you gain an advantage. Not sure if this is relevant for the coding, but that's how it should work.

I tried creating a function where if you had a target, the rRoll and rTarget info would be transfered into a new script. And in that script I wanted the defender to roll and compare the info. But what happend there, the new roll overwrote the old info. Not sure how I would "save" the info for future use IE the defending party.

After writing this, I think the question would be: How can I have two rolls be handled in the same roll handler?

bayne7400
January 15th, 2023, 15:59
That's what the second roll handler is for. You pass the first roll info with the new roll into the second handler. Trenloe has a post in the workshop where he sets up rolls. Maybe start there. Not at home at the moment or I would go look for.it.

ShakyLuigi
January 16th, 2023, 11:31
Thanks. I found the thread and have been reading through it.

And then it hit me.
I am using the "Ruleset Wizard" to build the ruleset. And a lot of the roll info and handler is automated here, and I only have to write the script that evaluates the roll.
Perhaps there is a something that is lost in translation for me when you're trying to explain me how to script the handler? I never got the hang of creating a dice roll until I started using "Ruleset Wizard".

Otherwise, I found this link in Trenloes dice thread:

https://www.fantasygrounds.com/modguide/scripting.xcp

And I found the part about Handler Functions. Is that the right way to go?

bayne7400
January 16th, 2023, 13:18
Yes inside your rsw handler you will need to create another dice roll. The handler in rsw is the script file you send your info to.

ShakyLuigi
January 19th, 2023, 20:20
Okey let's see if I am getting closer to the solution.

I have my attack roll script:


function rollhandler(rSource, rTarget, rRoll)

local rMessage = ActionsManager.createActionMessage(rSource, rRoll);
local nTotal = ActionsManager.total(rRoll);
local nTarget = rRoll.skill
local nDMG = rRoll.dmg
local mod = rRoll.nMod
local adv= DB.getValue(ActorManager.getCreatureNode(rSource), "advantage_field", 0);
local target = rTarget.sName

if target then

local result = math.floor((nTarget)/10) - math.floor((nTotal)/10);
local oRoll = {SL = result, target = target}

opposedroll.opposedroll(oRoll)

Now, I've put in the relevant information in the oRoll, and I am sending this to the opposedroll script IF there is a target. If not, a regular attack roll without target is run.


But it is in the next script that I am getting nowhere.


function opposedroll(oRoll, nr)

target = oRoll.target

DB.addHandler( nodepath, event, callback )

end

I just don't get how to use the DB.addHandler to save the info for the defender roll. Or how to call the info for the defender roll.
If I just use the opposedroll.opposedroll to be run when rolling the dice, then everything is written over by the new info.

You've probably explained it to me, but I'm just not grasping the message.
I've tried reading Trenloe's thread, and tried to understand the developer guide, but it is way to advanced coding-language for me to understand.

bayne7400
January 19th, 2023, 21:32
Ok in your top bit of code you need to setup a new roll. I am not sure what die it uses (d100?). That goes in aDice but in a table
local nodeDefender = ActorManager.getCTNode(rTarget)
local sPath = DB.getPath(nodeDefender)
local rRollO = { sType = "opposed", sDesc = "Opposed Roll", aDice = aDice, nMod = nMod, nTotalDamage =nTotal, sDefender = sPath };
ActionsManager.performAction(nil, nil, rRollO );

in the onit on your script add
ActionsManager.registerResultHandler("opposed", opposedroll);

then

Function opposedroll (rSource, Target, rRoll)
Debug.chat(rRoll)

end

Debug that rRoll and I think you will understand what to do next.

ShakyLuigi
February 8th, 2023, 20:00
I'm sorry, I've been trying to understand this, but I just can't see the solution.
So far, I've written this in the attackroll that the attacker use.


function rollhandler(rSource, rTarget, rRoll)

local rMessage = ActionsManager.createActionMessage(rSource, rRoll);
local nTotal = ActionsManager.total(rRoll);
local nTarget = rRoll.skill
local nDMG = rRoll.dmg
local mod = rRoll.nMod
local adv= DB.getValue(ActorManager.getCreatureNode(rSource), "advantage_field", 0);
local target = rTarget.sName
local result = math.floor((nTarget)/10) - math.floor((nTotal)/10);

if target then

local nodeDefender = ActorManager.getCTNode(rTarget);
local sPath = DB.getPath(nodeDefender)
local rRollO = {sType ="opposed", sDesc ="Opposed Roll", aDice = d100, nMod = mod, nTotalDamage = nTotal, sDefender = sPath };
ActionsManager.performAction(nil, nil, rRollO);

No problem.

Then I write this code in the script where I have the defending roll:


function onInit()
ActionsManager.registerResultHandler("opposed", opposedroll);

end

function opposedroll(rSource, Target, rRoll)

Debug.chat("rRoll2", rRoll);

end

I debug the rRoll and get:


s'rRoll2' | { s'nMod' = #0, s'sDefender' = s'combattracker.list.id-00002', s'sType' = s'opposed', s'nTotalDamage' = #31, s'sDesc' = s'Opposed Roll' }

And I do not understand where to go from here.
If I use the function opposedroll when rolling for the defense, the new roll information overwrites the last one.

And I've been thinking while trying to make this work. I'm not sure I can do it this way.
The attack roll, and defend role is basically the same. It's the same script, you just use the weapon to defend.
If I have a separate script to defend, how would I have the player doubleclick the "attack button" and point it either to the defend script or attack script?

All I really need to use for a basic opposed roll in this game is the result value (I've highlighted it in the topmost code), and use that further.
And I need the "right" defender to defend.

Attacker rolls his sword attack and gets the result 7.
Defender rolls his sword attack and gets the result 4.

7>4, attacker wins and gives 3 damage.

I really appreciate you taking time to trying to teach me how to do this, but I'm having such a hard time trying to make this work.

damned
February 8th, 2023, 23:05
What is the actual mechanic - ignoring FG - what is the process you are trying to code?

ShakyLuigi
February 9th, 2023, 08:00
What is the actual mechanic - ignoring FG - what is the process you are trying to code?

The game mechanic is as follows (very basic).

Player X has a sword skill of 57 and wants to attack the goblin with his sword.

X rolls a d100 and gets a 25. The system only regards 10's when calculating number of success levels (SL).

This gives Player X 5 - 2 = 3 SL (remember only the 10's count at this point).

Now the Goblin will defend with his sword and sword skill at 37.
The Goblin rolls a d100 and gets a 42.

This gives the Goblin 3 - 4 = -1 SL.

Comparing the two rolls gives a success of 4 to Player X. Add 3 base damage from the sword and the Goblin takes 7 damage in total.

There are also elements of absorbing damage, other ways of increasing damage and number of SL's, but for now just getting the basic down would come a long way.



Just rolling the attack and outputting that in the chat, I've managed.

Player X rolls, gets a result.
The Goblin rolls and gets a result.

I as a DM, compare the rolls and tell the player the total damage he did to the goblin. Not that hard, but everything that can be automated would be fantastic.

ShakyLuigi
February 25th, 2023, 17:29
I figured it out!

I've only tested the very basics of it, and it needs a lot of finetuning, but the basics seems to work just fine.

What I did was add two nodes in the CT for each PC and NPC: attack_ticker and SL (invisible in the CT).
Now, when the PC targets and attacks a NPC, the script finds the NPC and gives attack_ticker the value one. In the SL node, it sets the roll value the PC did.

Then when the NPC rolls his attack, it first checks the attack_ticker. If the value is one there, a defence roll is performed (else it will do a regular attack), and it calculates the NPC SL and compares it with the PC SL, and declares a winner based on that. And ends with setting attack_ticker and SL with value zero.

But for this to work, I had to add the attacks of the NPC in the combat tracker, or else the defence roll couldn't locate the two nodes. I used damned's video here for that: https://www.youtube.com/watch?v=4diiT-sIZE8


Now I just have to add this to the PC script as well, take into account Fumbles and Crits and possible fix a thousand bugs and script errors. But it works :D


Thanks for the guidance, even though I ended up using a different solution the ONLY reason I thought of it was from these two lines you gave me bayne

local nodeDefender = ActorManager.getCTNode(rTarget)
local sPath = DB.getPath(nodeDefender)

So thanks for that!

Coots
April 19th, 2023, 14:47
I just wanted to check about an issue my players are having. I had one of my friends beg me to run a Warhammer Fantasy game for years. I got this mod and it looks fantastic but everyone minus myself see their character sheets with text not fitting properly. Also is there anyway I can change the font to being black instead of white? Some of my players are having a hard time seeing things they have written.

vegaserik
April 19th, 2023, 20:14
You have a theme that's changing the way it looks. Not sure about the font size cause mine comes out just fine.

ShakyLuigi
April 23rd, 2023, 14:32
Hope everything worked out for you Coots. I agree with vegaserik that this is caused by a theme or mod. The colour of the font is suppoed to be black everywhere.

On other news, I've finished the oppsoed rolls scripts for both PC's and NPC's! And a bunch of other smaller updates as well. So I am soon going to update the Ruleset in the Forge soon.
Just wondering if there are things I should considering before I upload it? I always worry that I will break peoples games. So any tips would be greatly appreciated.

Coots
April 24th, 2023, 20:52
Hope everything worked out for you Coots. I agree with vegaserik that this is caused by a theme or mod. The colour of the font is suppoed to be black everywhere.

On other news, I've finished the oppsoed rolls scripts for both PC's and NPC's! And a bunch of other smaller updates as well. So I am soon going to update the Ruleset in the Forge soon.
Just wondering if there are things I should considering before I upload it? I always worry that I will break peoples games. So any tips would be greatly appreciated.

Not really help but I cannot find it within Forge

damned
April 25th, 2023, 03:36
https://forge.fantasygrounds.com/shop/items/902/view it is listed at WFRPG

ShakyLuigi
May 1st, 2023, 15:11
Okey. I discovered a big bug in the attack code, so the upload was a bit delayed, but I have uploaded a new build in the Forge about five minutes ago!

There are many updates to this build, among those are:

- A few new graphics.
- Cleaned up the code.
- Fixed wrong calculations when using advantages.
- Added opposed rolls when fighting!
This will make it possible to attack targets, and having the targets defend themselves. It will only work on single targets, and it only works for combat rolls.
- Added prayer and magic skills under the appropiate tabs in the combat section.


And probably even more updates, but I can't remember everything. Probably should start writing down what I do.

Anyway, please let me know if something is wrong or buggy and I will try to fix it as fast as I can.

Happy Gaming!

Coots
May 1st, 2023, 19:45
Hello again its me! The sheets are messed up for my players again and there is no addons this time. 57232

vegaserik
May 1st, 2023, 21:52
Hello again its me! The sheets are messed up for my players again and there is no addons this time. 57232

Do they have anything that makes font size bigger running? Scaleui would make the whole thing bigger or smaller so that's not the issue. Mine doesn't do that and I have no ext's running for wfrp 4. I'm not sure why it would do that with the fonts.

Coots
May 1st, 2023, 22:21
I do not no.

ShakyLuigi
May 2nd, 2023, 07:47
It looks like there is a different font than what I have used in the ruleset. Not just the size. Not sure if that helps, but it seems there is something odd with the font.

Cacho Manteca
May 9th, 2023, 05:09
Small question. I tried your module and I was wondering if I need to manually insert every career, trappings, etc. or I am too dumb to know where to find them.

daddyogreman
May 9th, 2023, 05:11
Small question. I tried your module and I was wondering if I need to manually insert every career, trappings, etc. or I am too dumb to know where to find them.

This is just a rule set. Everything you're referring to is protected by copyright law. You have to manually enter everything unless an official rule set becomes available for purchase from the developers themselves.

Cacho Manteca
May 9th, 2023, 07:20
This is just a rule set. Everything you're referring to is protected by copyright law. You have to manually enter everything unless an official rule set becomes available for purchase from the developers themselves.

I see. One more question. Do you know where to find Warhammer maps that work with the vision mechanic? Or is that something that I also have to implement myself? I've downloaded Fantasy Grounds today just to try this mechanic and play online whenever meeting my friends in person is impossible.

ShakyLuigi
May 9th, 2023, 07:43
Sorry, I don't know of any maps. But I can recommend this software here:

https://www.dungeonalchemist.com/

I use that, along with other map making softwares, to create battle maps and such.
It's been a while since last time I made a map in dungeon alchemist, but I think that it can create the line of sight when exporting.
Maybe someone else can confirm.

daddyogreman
May 9th, 2023, 15:23
Sorry, I don't know of any maps. But I can recommend this software here:

https://www.dungeonalchemist.com/

I use that, along with other map making softwares, to create battle maps and such.
It's been a while since last time I made a map in dungeon alchemist, but I think that it can create the line of sight when exporting.
Maybe someone else can confirm.

Yup you can export LoS for Fantasy Grounds with Dungeon Alchemist. You could also try https://www.drivethrurpg.com/ and see if there's anything specific to Warhammer on there that may be for Fantasy Grounds. Unfortunately with these more rare rulesets you have to do a fair bit of the footwork yourself as opposed to running something like 5E where you have a plethora of resources to pick from.

elfurna
September 22nd, 2023, 17:11
Hi!

I suscribed recently for this ruleset and I find it amazing.

Good job!

ShakyLuigi
October 1st, 2023, 11:41
Hi!

I suscribed recently for this ruleset and I find it amazing.

Good job!

Thank you!

Hope you have lots of fun with it.
If you have any suggestions or troubles with the ruleset just drop a line here.

Cacho Manteca
October 23rd, 2023, 01:56
Hi! It's me once again.

I've been having some issues with the combat tracker. Whenever I attack my players with an NPC, they are able to defend from the attack roll. The ruleset prepares the defense roll automatically. But whenever they attack an NPC, the ruleset does not prepare a defense roll. Is this a bug of some kind or am I missing something?

Also, I don't understand the calculation behind the damage of the attack roll, the success level of it, and the defense roll's success level. The damage of the attack roll calculates the weapon damage + success level, but in the defense roll the damage is the difference between the success levels. Is this intended?

ShakyLuigi
October 29th, 2023, 13:54
I'll have a look at it, and get back to you.

ShakyLuigi
October 29th, 2023, 14:10
Okey, that went a bit faster than I thought.

It seems something has been lost with one of the updates of Fantasygrounds.
I have to try to figure out what that is. Meanwhile, if you use an attack roll for the NPC from the Combat Tracker, it should still give a defend roll automaticly.

When attacking the total Dmg is SL + Weapon dmg. If the defender lose the roll, it should show the total dmg value produced in the attack roll. If the defender wins the roll, there is no dmg.

Martin2301
December 30th, 2023, 06:17
Hi, Just asking is there a french translation of this ruleset ?

Thanks

ShakyLuigi
January 28th, 2024, 13:57
Hi, Just asking is there a french translation of this ruleset ?

Thanks

Hi,

Sorry, just an english version.

ShakyLuigi
January 28th, 2024, 13:59
I've uploaded a new version, that has some minor graphic tweaks.

And a fix where the NPC got double advantage on their attacks.

Pards
January 31st, 2024, 17:49
Hello,

Can ask you if itīs possible to add any option to modify the Iniciative for combat? The only way that i know, its modifiying the Init trait every time we have a combat,because Combat Reflexes Talent cannot be added in any place.

Sorry if my english itīs good enough, and thnx for read me

ShakyLuigi
February 3rd, 2024, 11:40
Thanks for the feedback!

I have gotten a few PM's also, with bugs and requests.

I've listed the things I will focus on for the next update (note: very busy at my dayjob for the next couple of weeks, so don't expect an update in the near future):

- Adv. is counted double when calculating dmg. for PC's
- Missing field for movement in PC and NPC char. sheet.
- Not possible to change initiative in combat tracker (alternative: automatic add bonus from trait in Combat Tracker)
- Missing field to add traits/flaws for weapons.
- No way to add effects that impact Combat rolls (or skill rolls, but that is secondary)
- Something wrong for player client when rolling opposed rolls.