I’ve combed through the wiki, but haven’t been able to find an answer to this:
Is there a way to create a variable that is broken down into percentages, those percentages being two other variables?
Specifically, I’ve created a stat “persuasion” but want to break it down into an opposed pair (intimidate/charm) to add flavor to the text. Is there a way to do this or will I have to track it all separately?
It sounds like you want to be able to have three stats, all of them testable and *set-able, but two of them acting as opposed pairs, when then are used to calculate the third stat.
By opposed pairs, do you mean the sum of them will always be 100? (assuming you are using fairmath)? Or do you have some other, fancier ratio in mind?
My off-the-cuff sense is that you could simply make it so that whenever you gain intimidate, subtract from charm and vice versa (or whatever mathematical relationship you want them to have). A simple subroutine would make that pretty straightforward.
And then you could simply *set persuasion (intimidate + charm) after any such change. (assuming you want persuasion to be the sum of the pair)
You’ll have to make sure they never go below zero, though.
That’s why I wanted to do it in the reverse, really.
Persuasion will be a skill the MC can choose at the beginning, then build on it (so it’d be a 0-100 scale, but yes, using fairmath). So they’ll have “persuasion” before they ever get any intimidating or charming points. Instead of being a sum of intimidating + charming, it would instead be that persuasion is broken down into intimidating + charming.
@Szaal
I get what you’re saying. Maybe I can just have two separate stats on the stat chart: one for persuasion and one for persuasion “method” (with intimidate/charm on a percentage scale). I’ll try it like that.
The intimidate/charm is really just for flavor–pass a persuasion check and, unless we specifically offer the choice between intimidate or charm, you get text reflecting whichever is higher.
In a lot of games where persuasion is used, you have to basically choose whether you intimidate people or charm them. It’s always bugged me. The two are just different methods of getting people to do what you want, yeah? And if you’re good at it, then you should be able to do both, depending on the situation.
So instead of being forced to always go with intimidate so you can pass a persuasion check, you can do whatever rows your boat and your persuasion skill goes up. The reason I want to keep track of which is used more is for when we have a “minor” persuasion that there’s no option for, in which case the persuasion check can be passed and the resulting dialogue/text will be affected by whether the MC has a higher intimidate vs charming. Ex…
“I want that cupcake.”
“No.”
persuasion check passed, charming
“Please?” you ask with puppy dog eyes, smiling when the doofus hands over his cupcake.
persuasion check passed, intimidate
“Either give me that cupcake or you’re gonna be breathing out of a straw the rest of your life,” you threaten, smirking when the doofus hands you the cupcake.
Well, it looks like you got it figured out, but I’ll chime in if I may.
Tô me, it looks like persuasion is a skill and intimidation (buly?) and charming are personality traits. If so, it’s not that difficult. In fact a lot of games do just that. Traits mostly yields flavour text and skills are used in success-failure checks.
You could keep two variables, one for the skill and the other to be used as an opossed pair.
You can actually use opposed_pair, unless you want each trait in its own line.
Character creation will provide the base for the persuasion skill. It will be increased through choices (and training/practice), and the choices will be charm or intimidate, so when charm or intimidate increase, so does persuasion.
Charm and intimidate will be tracked as a percentage of the persuasion skill. So, say you start out with a 25 in persuasion and your first choice that checks your skill is to talk a vendor down in price on an item. If you choose to bully or charm him, then you would get +1 intimidate or +1 charm, and +1 persuasion (so 26 persuasion, 1 intimidation or charm): if you choose the intimidating option, then your intimidation (at that point) would be 100% (effectively, 26, but only temporarily) and your charm would be 0%. As soon as you hit another choice that affects the stats that way (sometimes it will just be a persuasion check and you won’t get an increase on persuasion), and you choose the charming option, then your intimidate/charm would be 50%/50% (effectively 13/13, if there was no persuasion increase).
Hell, now that I’m explaining it in a more detailed way, I think I’m making it too complicated. it might be easier just to track persuasion and the charm/intimidate separately and have the percentages go up and down as choices are made, without even considering the persuasion points, especially when the charm/intimidate is only there for flavor.
With the way how you track it down so 50/50 of 26 is 13/13, the only thing I fear is that you have PERSUASION on 26 but the game would somehow check it as 13, effectively worsening your persuasion if you don’t focus on one of guardian/renegade choice.
Yeah, I get what you’re saying. The funny part is that was the reason I wanted to do it this way, so the player wouldn’t have to focus on one or the other.
In some games, if you don’t focus solely on paragon or renegade, you can’t pass a persuasion check. I want persuade to include them both (if you’re good at persuading people, you can switch between the two with ease, instead of focusing on only one–that always drove me crazy in Mass Effect games). But I wanted to keep track of which is the most used, so when I put a minor persuasion check in (without adding a choice for dialogue), I can change the dialogue to match what is most used (or, if one isn’t significantly stronger than the other, make the text more vague about what was said/done for them to pass it).
@cup_half_empty Thank you! I will go ahead and set it up that way instead of trying to make things difficult. This is the first time I’ve tried coding with CoG, so there’s a learning curve. Seems fairly straightforward, most of the time, though.