Stats and how they are raised

I am working on a game at the moment which has four ‘main’ stats. Physical, Mental, Spirit and Skill.

I start each at 1% as everyone has a bit in each stat.

Then through the game you increase your stats via your actions.

My question is what is the best way to do it, how much do you let actions raise stats?

My initial thought is actions that require a sole stat raise it by 10% (for example in my demo doing physical training results in a 10% increase to Physical) and then actions that require two stats raise them by 5% (for example in the same demo doing Physical and Mental training results in a 5% increase to both Physical and Mental) I throw in an extra 1% to each stat if the pair compliment each other (for example training in Physical and Skill results in a 6% increase to both).

Does that seem fair to you? How do you deal with the stat increases? Opinions needed!

It sounds fair to me. But whatever you do, you should have a rough idea of what the numbers would mean.

For Samurai, my stats are pretty simple. There are only three of them. They are not very detailed at all. For example, I lump all possible weapon proficiencies into a lump “Art of the Sword” skill. I personally feels that this fits the feeling of zen I am hoping to imbue (and don’t I sound prententious!) I think what you’re doing is pretty similar to me, but you said “main” so maybe your game has more statistical depth than mine.

Anyway, I also use the 100% scale. At the start of Samurai, I have the player choose an area of talent (or don’t) which amounts in a 10% increase. Then in the next chapter, the player goes through training, during which stats would increase by a small amount with each passing year. By the end of the training, all of the stat increases would have added up to form a large percentage increase. How large the increase is depends on how they train with.

After that, there will be an opportunity for the player to undergo a period of self improvement where the player can raise their skill by a 10% increase.

The thing though is that I tailored my stat building according to the narrative context I have already established.

As ScarletGeisha stated, it has to do with scale. A 1-100 scale is typical since you can then base skill checks on them. For example, performing an acrobatic feat may require a 70% or greater Physical attribute. You then set your check:

*if physical >= 70 succeed! *else fail

If you set a stat to 1%, what can be accomplished with that? What is the lowest any stat can be and still provide some utility? Those are questions I’d answer when handling scale.

Also for skill-ups, it may be useful to use fairmath:

By ‘Main’ stats I meant those are the four stats that represent the main characters abilities. There will also be hidden stats based on the monsters you will face (for example vampire_knowledge) that shows how much you know about that monster I hope to make it so you can have a better chance against monsters you know more about.

I’ve recently had to rehash my entire system for “Vendetta: Rise of a Gangster” (nine main character Attributes, plus assorted other bits of recorded info & various ratings) to better suit where the game is heading and what’s now possible for the main character to attempt. For this reason I’d completely agree with Jim’s suggestion that you need to define in advance precisely what “1%” will actually mean in the game–if anything.

For example, under my new, rehashed system, the absolute minimum any of the nine different possible Character Background types will start with, in any of the nine Attributes, is 10% (the highest being 50%), as this gives me a meaningful range to work with from the very start–while also ensuring that each of the nine Character Background types are actually different enough to provide extra replay value.

I guess what I’m trying to say is that it’s worth designing your intended stats system as much as possible in advance, and then just amend it slightly as you go. But do have a very good idea in mind of what you’re trying to achieve before you actually start scripting, as that could save you from a major “rehash” headache some ways down the road . . . :slight_smile:

Thanks for the advice.

In my game 100% was going to be the highest possible for each of the four stats. so I assumed I should start at 1% then have it build up over the course of the game.

Now I think I should start Physical, Mental and Skill all at 50% with spirit at 0% then add and subtract % over the course of the character creation and training parts. I probablly will leave Spirit at 0% as in the game it refers to your characters resistance to the supernatural (and depending on your chosen ‘focus’ it later affects how powerful your supernatural side is)

Another stat question regarding a stat chart.

Is it possible to have it change mid-game?

At the moment I have a gun and ammo option in the stat chart, but at the beginning of the pilot the character is fifteen and won’t have a gun.

Can I do anything so the gun/ammo part only appears from the start of episode one?

*if commands work fine in the stat chart. Just make a ‘has_gun’ stat, default it to false, and then change it to true once they have it.

(In fact, virtually every command works fine in the stats sheet. It’s just that some commands make things a bit buggy.)

How would I could that I’ve been trying and keep getting errors.

Error:

line 5:invalid line; this line should start with ‘percent’, ‘text’ or ‘opposed pair’

Here is my choicescript-stats screen

` Character Stats

*stat_chart

*if srt
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
text Health
text Speciality
text Gun
text Ammo
text Partner
percent Rapport

*else
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
text Health`

and the mygame.js

stats = { name: "" ,surname: "" ,gender: "" ,specialty: "" ,gun: "unarmed" ,physical: 10 ,mental: 10 ,unarmed: 0 ,melee: 0 ,firearms: 0 ,stealth: 0 ,awareness: 0 ,health: 100 ,spirit: 0 ,ammo: 0 ,partner: "None" ,rapport: 0 ,monster: "unknown" ,bully_name: "" ,bully_gender: "" ,srt: false ,trainer: "" ,trainer_gender: "" ,vampirefact: 0 ,werewolffact: 0 ,lycanthropefact: 0 ,zombiefact: 0 ,ghostfact: 0 ,wraithfact: 0 ,ghoulfact: 0 ,utvarafact: 0 ,faeryfact: 0 ,golemfact: 0 ,gargoylefact: 0

Put the *if and *else statements before you call the statchart.
You will have 2 statcharts but only 1 will show

Eg:
*if (srt)
*statchart
*else
*statchart

I’ve changed the stats screen to

`Character Stats

*if (srt)
*stat_chart
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
text Health
text Speciality
text Gun
text Ammo
text Partner
percent Rapport

*else
*stat_chart
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
text Health`

and now getting this error

line 4: invalid indent, expected at least one line in ‘if’ true block?

After the *if, the next line should be indented 2 spaces.
*if (srt)
__*stat_chart
____text etc.
*else
__*stat_chart
____text etc.

ok got it kind of to work the extra bit appears but now got a new error

line 23: It is illegal to fall into an *else statement; you must *goto or *finish before the end of the indented block.

Here is the current choicescript screen

`Character Stats

*if (srt)
*stat_chart
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
percent Health
text Speciality
text Gun
text Ammo
text Partner
percent Rapport

*else
*stat_chart
text Name
text Surname
text Gender
percent Physical
percent Mental
percent Spirit
text Unarmed
text Melee
text firearms
text Stealth
text Awareness
percent Health`

Good point! After the first stat_chart, has displayed your rapport, the next line it sees is *else, which doesn’t make sense to the game.

To change this, replace *else with *if (srt = false)

That should solve the problem.

Thanks @andymwhy thats fixed it!