let player = new Sheet();
player.increaseSkillLevel('Fighting'); // value of player.skills.Fighting is now 1
player._modifySkill('Physique', +3); // player.skills.Physique = 3
player.setHealth(); // set max health after changing Physique
console.log(player.rollAttack()); // {4df, movement, strength, selfDamage?}
console.log(player.rollDefense()); // {4df, movement, strength}
player.changeHealth(-1);
This Sheet
class is a helper for character sheets. It tracks, and changes, health and skills as well as giving you the ability to make (heavily opionated) attack and defense rolls for the player.
It's made public purely because there's so little of these examples around.
Investigation is not implemented as it's a skill that interacts with "the game" and not "the player"
As per FUDGE system, character leveling experience does not exist - skills are awarded levels based on stuff (books, training, etc)
Health does not follow FUDGE standarts (it can*), instead it uses a formula with each skill (focusing on Physique, ignoring Investigation)
Attacking and Defending is not implemented, though the results of the rollAttack
and rollDefense
are pretty close.
- Health: ( ( ( ((Fighting+0.1) * 1.25) * ((Athletics+0.1) * 1.25) ) + 10 ) * Physique )
- Strength: 4df + Fighting + 2df?
- Movement/Agility: 4df + Athletics
(Sheet.rollAttack()
)
Roll 4dF to hit/miss/critical/crit-fail.
Results:
- -4 = crit-fail (self damage with the positive results of 3dF)
- -3 = fail (self damage with the positive results of 2dF)
-
-3 = might hit, depending on the defense roll
- 4 = critical hit, check the ahead (but you can go ahead and roll 2dF)
Roll for 4dF + Athletics to match agains the Athletic roll of target (> -3 condition)
Roll 4dF, add Fighting skill and add the positive result of the critical hit roll
(Sheet.rollDefense()
)
Roll for movement (Athletics)
Roll for Strength
Results:
- if Attacker rolled a critical-/fail apply
dice.selfDamage
to player; - if Attacker
dice.movement
is bigger than defenderdice.movement
, then the defender takesattacker.dice.strength - defender.dice.strength
- Otherwise a miss happens
You can use fudge health by calling Sheet.health
as it will return the current player health in percentage form; Just correlate that
with a "100 = Healthy", "90 = Hurt", etc..