When specific level, relevant skills and stats are reached by character, tier goes up. Together with wage/accommodations. And wage/accommodations stay put until the next tier. That was your plan. It's simple enough, checking level, stats and skills every turn.
Although, there should be more checks than just level and stats - maybe something like fame. Otherwise it will be too easy.
I wanted to do it on per general occupation basis (Service/SIW/Warriors/Managers). Problem is that you cannot interpolate tier reliably even if you bind corresponding skills/stats to those occupation and get a mean. Warriors fighting in the arena or guarding will always be at disadvantage compared explorers. It's even worse for Service chars.
So it should prolly be done on per Job basis. There should be "Current Job" and "Best Job". Best Job should be a target for every char and reevaluated every 25 days or so using raw stats (no items/temp modification) and base class(es). Current job is important only for free chars as you'll be hiring them for specific duties and they have a right to disagree doing stuff they don't like/want. It doesn't mean that they will not help cleaning or doing other tasks within their general occupations, but you cannot set them to focus on those tasks. SimPy will handle this.
We'll bind skills/stats on per Job basis, I took a look and some of that is done already. Jobs will also get new methods to calculate effectiveness and relative strength (for Best Job). I will also add this to interactions once the system is ready.
Tiers themselves will be calculated based of level, base class(es), stats and skills (we'll also have to make those bindings, prolly directly in JSON). They will be responsible for something akin to social status, to quickly figure out what chars expectations are, and stuff like wages, upkeep and etc.
For example, any action has difficultly. Performance = tier level/difficulty level. If character has 100 cleaning and 2 tier, but the difficulty of cleaning task is 10, then her cleaning becomes 100 * (2/10) = 20. Same for stats.
You still can overcome the penalty by having huge skills and stats, but tiers make it much easier.
Yeap, I arrived to a very similar conclusion yesterday. I am thinking we're gonna keep Job classes to keep present job assignment system in tact. They will also hold stats/skills required for them. So basically what I wrote about above. Each job (or most jobs) will have methods to figure out expected performance and actual performance, prolly on a scale of 0 - 200. Expected will be base, actual will also count data from actual job events.
I am still getting all of this straight in my head and making notes. If you need something coded in, let me know tonight cause I am leaving tomorrow and will be back on Monday if all goes well. I'll have my laptop but no idea what kind of internet connection will be available.