edzillion / blood-n-guts

Other
4 stars 16 forks source link

Support for GURPS #195

Open Volksters opened 3 years ago

Volksters commented 3 years ago

Would like to chime in that GURPS system to be supported. Thanks!

edzillion commented 3 years ago

I tried implementing GURPS and hit some issues. It seems that it is designed in a non-standard way:

All other systems I have tested store actor data in this location data.actor and updates are then structured like data.actorData but GURPS does not. This is an example update object (as passed to updateActor hook):

CP: (2) […]
CPmax: (2) […]
ER: (2) […]
ERmax: (2) […]
FP: (2) […]
FPmax: (2) […]
HP: (2) […]
HPmax: (2) […]
_id: "sdfmT8Udou1MS0Gv"
gmod: (8) […]

And the data seems wrong. (e.g changes.HP is an array with the values -1, 1).

Perhaps it is not yet ready? Should I post this observation on the repo?

Exxar commented 3 years ago

Hi, I'm not the dev behind this GURPS sytem, but I may be able to help since I contribute to it from time to time.

What exactly are you looking for? The system stores data in actor.data.data and there are many fields in there, many themselves objects with further fields. For example, if you were to update the hit points of a character to their current value minus some damage taken, you'd call actor.update({ 'data.HP.value': actor.data.data.HP.value - damage}).

Assuming you need to determine when a character is on half hit points or lower to trigger the bleeding effect, you'd need to check if (actor.data.data.HP.value / actor.data.data.HP.max < 0.5).

Does that help?

edzillion commented 3 years ago

Yeah that helps, can you tell me @Exxar what is the system name for the GURPS system you are referencing? I am getting mixed up between gurps4e and another one.

Assuming you need to determine when a character is on half hit points or lower to trigger the bleeding effect, you'd need to check if (actor.data.data.HP.value / actor.data.data.HP.max < 0.5).

I was told that in GURPS one has to be -5 before they're dead. Does that effect the above?

Exxar commented 3 years ago

This is the system in question (it is not listed in the official foundry directory): https://github.com/crnormand/gurps

So in GURPS most characters have 10-20 HP, and this doesn't change with levels / power progression unlike in D&D for example (there are also no levels in GURPS to speak of, it is a pure point buy system). When you get to 0 HP you risk falling unconscious every combat turn, but HP go fully into the negative in GURPS and the first time you risk death (if you fail a Health check) is at -1xHP, so if you have 13 HP that would be at -13 HP. You automatically die without a roll only at -5xHP.

So it is a good question when blood splatters should be triggered. I don't know what your usual method has been for other systems, but personally I would suggest at less than 30% HP left. The reason for this is that there is a state in GURPS called "Reeling", and you enter this state once you're below 30% of your HP. This is generally considered to be "very badly hurt" since your move gets halved and your dodge score as well (GURPS has the concept of active defenses so if an opponent hits you with an attack you have an opportunity to use an active defense to thwart that, and dodge is for example the only active defense you can use against firearm attacks, so in gunfighting games you're screwed when reeling).

This is of course moot if your module allows configuring such thresholds, but I haven't taken a look at it.