igroglaz / Tangaria

Tangaria – free open-source multiplayer roguelike game based loosely on Tolkien’s lore and powered by PWMAngband. ~~~~~~~~~~~~~~~~~~~~~~~~~
https://tangaria.com
39 stars 6 forks source link

RPG account progress (restrictions for certain race/class combinations) #48

Open igroglaz opened 3 years ago

igroglaz commented 3 years ago

Right now there is a possibility to create any race/class combination. Actually I like current system and this feature isn't critical, but maybe in future there would be need to limit access for certain races to certain classes for the game balance sake, so I wanna add this issue in case I won't forget it in future :)

===

Actually this is very useful thing for variants. I also like idea to have a crappy troll mage. But this 'tool' could be used for restricting some too powerful race/class combinations in Tangaria. Eg I wanna to design race with speed bonuses on certain lvls (in exchange to some vulnerabilities). But even with this vulnerabilities - this race would be too imba if it would be able to become rogue class - too big bonuses it would get from 'both ends'.

It would be great to have this feature one day 🐻

====

Just an example of apply of this idea: I'm thinking about race with antimagic. Without restriction to such combination it will break balance if player would choose such race + unbeliever

===

I thought about adding 'adventurer' class which will be available only for some of traditional V races (human, hobbit...). Adventurer - it's some one like Bilbo, who went to see adventures and only after a while found out his purpose (talents). This class could have access to quite wide range of different books, but will have clumsy stats.

Such restriction could help with setting it up this class properly.

===

THIS: Also having such restriction will make game more newbie friendly, eg if player choose hydra race - he should play as monk. no point to try play other classes if you are hydra... so haveing a lot of other classes in the list for hydra is just confusing new players.

===

example: even the most idiotic half-troll can be a mage -- a crappy mage but still a mage

This feature needed not to restrict crappy combos, but to make balanced powerful ones. It should be used on extra powerful exotic races... eg all V races won't have any limits in T, but new races like Enlightened or Cambion (maiars) - will have it. So Cambion will be balanced for 'fighters' classes, while Enlightened will be balanced for 'magic' ones. Atm I balance all exotic races for fighters so at least it won't be ezpz to faceroll with them through the game - that's why it's almost impossible to play with them with magic classes. So.. Without this limits it's impossible to rebalance powerful races for magic classes :(

igroglaz commented 3 years ago

actually there is a better implementation for 'restriction' idea: achievement's system

the thing is that when a new player starts to play the game - he could only play with warrior class and one of 'common' races. When player will get his first character to lvl 10 (and will RIP) - new class/races will be accessible for him. This information could be stored in 'account' file, so after server reset this system will preserve player's progress. In 'account' file there could be simple integer number which will define progress. eg:

player started as human warrior. he got till lvl 10 and in 'account' file 1 point was added. now player started to play with dragon monk. he get to lvl 20 with it; another point was added to 'account' file (so now it storages account name, password and number '2'). etc

igroglaz commented 3 years ago

so we need: 1) understand and rework character creation menu - add there condition for certain race-class combos based at 'account' file score integer field. all this stuff could be hardcoded for the start 2) upon character death - add possibility to write account score to 'account' file (or to other file..)

igroglaz commented 3 years ago

after player's death we need to to store to the separate file the minimalist "history" of the player (login, race, class, level)... and read from there when creating a character

igroglaz commented 2 years ago

Ok. Now I know what we need to implement account score progress:

1) lib\user\save\account file now we have there login and password. we need to add there 3rd row - score for this particular account. let it be simple int value

2) after each character made something OR died - calculate his score. Traditional Angband score formula: player->max_exp + (100 * player->max_depth)) (source: http://angband.oook.cz/forum/showthread.php?t=7983 )

But I suppose we better go into assigning 'achievements' - eg when you create 1stcharacter - you can create only warrior. After you will kill Baba Yaga with this character - you will be able to create Archer or Mage... when you will kill Solovei - you will have new class/race opened.

So, back to 2).. we have two ways to fix player's score - when player did something (eg killed boss) or when character died (get info from the dump). Not sure which one is better for now

3) add check to character creation menu - do not show races/classes which are not assigned.. or may be show them, but in 'greyish' color and note that they will be 'opened' when player get certain points of account progress.