StendhalRPProposal: Difference between revisions
imported>Oslsachem m corrected typo |
imported>Oslsachem m corrected typo |
(No difference)
| |
Revision as of 16:17, 15 September 2007
This document explain what it is going to be our new RP system for Stendhal 0.60
We have a small timeframe to develop this system but we need to make sure it works and we need to make sure that problems that had arose from older versions are now not present.
I have placed a cleaned irc log on the discussion page for this article, so the things that was said wont be lost in all irc logs:
Stendhal RP proposal discussion
Attributes
The first thing that our RP needs to define are Attributes.
Previous version lacks of any kind of character personalization which lead to a poor RP experience. Our new RP will be based on the following set of attributes:
STR
Strengh is used to determine:
- Attack and damage done.
- Weight can be carried.
- Damage that can be absorb with the shield.
DEX
Dexterity is used to determine:
- Attack rate
- Handle of the weapons
AGI
Agility is used to determine:
- How fast we can move.
- How good are we at dodging.
CON
Constitution is used to determine:
- Amount of HP points.
- How fast you can restore HP points
- How fast we restore MP points.
WIS
Wisdom define how in joined you are with your deity.
- Define how much faith you have.
- How strong your prayers are.
INT
Wisdom and Inteligence is used to determine:
- Amount of Mana points.
- Strengh of the spell.
- How fast we can learn.
KAR
Karma determine most of the RP. Good actions give positive karma and bad actions give negative karma. Karma is initially 0 except if modified by race.
- You gain karma with good actions
- You lose karma with bad actions
- It may be used mainly by magic and NPC reactions.
What it is a good or a bad action will be defined by Quests and NPC.
Asserts
- The more you have, the better you are. Except Karma.
- To increase an attribute you need to spend character points.
- To increase from Level N to Level N+1 of the attribute you need to spend N character points.
- Default amount of character points is 10 except when modified by race.
- Players get character points for doing quests and leveling up.
- Players can spend character points at any time.
- There is no increase in stats until attribute is fully level up.
- There are racial modifier to attributes, skills, and stats.
Level up
When you level up by gaining XP, you can spend some points in improving the attributes. The higher the attribute the more points it cost to be incremented.
Asserts
- Players level up by earning XP.
- When you reach level N you are rewarded N Character points.
- When you level up, although attributes don't change, you get a bit better.
Minor attributes
There are also other attributes that are important but that don't decide to such extreme our player *look*.
Race
Player should be able to choose to be:
- Dwarf
- Elf
- Human
- Orc
This will decide the base outfit and the place where you enter world. Also of course, Dwarves are not hostile agains dwarves, and so on.
Gender
There are lots of hermaphrodite beings on Stendhal :)
- Man
- Woman
Once it is set you can't change it. So this decision will limit your available outfits. Of course unless you master disguise skill. :)
Age
It may have an effect on skills and attributes, as well as outfit.
- Child
- Young
- Middle
- Old
- Ancient
Perhaps we can do this as the younger your character, the less points you have to spend in game but the more your are prone to gain, while if you play an old character, you will get lots of points but you will gain very little.
Stats
Concepts
Race factor
Each attribute will have a Race factor about how this race is better at that that humans. Human race will have 1 at every race factor.
Table with factors:
|STR |DEX |AGI |CON |INT |WIS Human |1 |1 |1 |1 |1 |1 Orc |1.4 |0.8 |1.1 |1.2 |0.3 |0.8 Elf |0.7 |1.3 |1.3 |0.7 |1.2 |0.9 Dwarf |1.5 |0.7 |0.7 |1.4 |0.7 |0.9
Class factor
Each player can choose one and only one class at creation time ( or later ), but just once. That class will affect how attributes are considered:
- Warriors has better CON and STR.
- Rangers has better CON and AGI
- Archers has better AGI and DEX
- ...
Table with factors:
|STR |DEX |AGI |CON |INT |WIS None |1 |1 |1 |1 |1 |1 Berseker|2.2 |0.7 |0.5 |1 |0.5 |1.1 Warrior |1.5 |1.2 |1.2 |1.1 |0.4 |0.6 Ranger |0.8 |1.4 |1.4 |0.9 |0.6 |0.9 Archer |0.6 |1.8 |1.5 |0.8 |0.7 |0,6 Mage |0.5 |1.6 |0.5 |0.7 |2 |0.7 Priest |0.7 |1.3 |0.5 |0.8 |0.7 |2
HP
It is the amount of health points we have.
HP=m·(CON Race factor)·(Class factor)·(Level/k+1)·CON
Where m=k=10
MP
It is the amount of magic points we have.
MP=m·(INT Race factor+WIS Race factor)/2·(Class factor)·(Level/k+1)·((INT+WIS)/2)
Where m=3, k=10
Max weight carried
It is the maximum amount of weight (in whatever unit) a player can carry without having a penalty at AGI and DEX.
Weight=m·(STR · Race factor)·(Class factor)·(Level/k+1)·((STR+CON+AGI)/3)
Where k=10 and m is used to adjust the units to something that makes sense. A common human lvl 0 with STR=CON=AGI=10 should be able to carry around 50 Kg.
Speed
It is how fast this player moves, in tiles per second.
speed=m·(Race factor)·(Class factor)·(Level/k+1)·AGI
Where k=10 and m is again used to adjust the value. A common human lvl 0 with AGI=10 should walk around 0.5-0.7 tiles per second.
Combat
Previous to describe how combat works, let's see how items works.
Items
Types of damage
There are several types of damage, and each weapon is useful for one of them and each armor is special to protect against some of them.
- Slash
- Bash
- Stab
- Magical
- Each of the magic schools we have. TODO
- Elemental
- Fire
- Cold
- Acid
- Disease
- Poison
Resistence factor to damage:
|Slash |Bash |Stab |Magic |Fire |Cold |Acid |Dis |Poison Human |0 |0 |0 |0 |0 |0 |0 |0 |0 Orc |0.1 |0 |0 |0 |0 |0 |0 |0.1 |0.1 Elf |0 |0 |0 |0.1 |0 |0 |0 |0.1 |0 Dwarf |0 |0.1 |0 |0.4 |0 |0 |0 |0 |0
This represent how much damage is absorbed. 0.1 stands for 10% is absorbed.
Weapon
It has the next set of attributes:
Weight
Determine mainly relating to STR and DEX how fast the weapon can be used. The more weight, the slower.
Damage done
It is done as an array that determine how much damage is done for each type of damage. The damage needs to be coded correctly on the array so that usually:
slash < bash < stab
The damage is later scaled based on player attributes.
For example:
DamageDone={ "cut"=10, "elemental_poison"=5 }
Damage protects
It is also done as an array and show the types of damage this weapon protect against. It can be possible that weapon protects agains nothing.
For example:
DamageProtect={ "elemental_poison"=10 }
Resistence
It is a value between 100 and 0 to indicate how broken is the weapon. Different types of damage can break more the weapon than others. This is here for completion and it is not prone to feature on the first versions of the new RP.
Skill
It tells which skill the weapon uses. By now just one skill per weapon. Skill will be used to know how good are you at handling the weapon.
Throwable and Range
Determine is weapon is throwable and how much range it has. Real range will be scaled based on attributes.
Dificulty
This is how dificult is to handle the weapon. The more difficult, the more skill you need to properly handle it.
Armor, Shield, Legs and boots
They share mostly the same type of structure.
Weight
The more weight, the slower.
Damage protects
It is also done as an array and show the types of damage this armor protect against. It can be possible that armor protects agains nothing.
For example:
DamageProtect={ cut="30", "club"="10", "elemental_poison"=10 }
Resistence
It is a value between 100 and 0 to indicate how broken is the armor. Different types of damage can break more the armor than others. This is here for completion and it is not prone to feature on the first versions of the new RP.
Skill
It tells which skill the armor uses. By now just one skill per armor. Skill will be used to know how good are you at handling the armor.
Asserts
- All attributes but karma are involved at combat.
- The more weight the less attack rate. This show in several things:
- The more weight the weapon has, the less attack rate player has.
- The more weight the armor set has, the less ability the player has to dodge.
- The more weight the shield has, the less often it can be used.
Inners
We can split combat sequence in the next set of states.
Check attack rate to see if we can attack
This will determine how often we can attack.
Attack rate= k · 1 / ( DEX · STR / Weapon weight )
The lower the better.
Decide if hit is done
Doing a hit is simple if the weapon suits us, and we don't try a hard type of damage.
Hit = a ( Attacker.DEX )
b ( Weapon Skill )
c ( STR/Weapon weight )
d ( facing )
Profile
The bigger the better.
Profile indicate how offensive player is as:
- 0 means totally defensive
- 1 means totally agressive
Check dodge rate to see if we can dodge
This determine how often you can dodge. The more armor weight the less you can move.
Dodge rate= k · 1 / ( AGI · STR/Armor weight )
The lower the better.
Decide if player dodge attack
Dodge = a ( Defender.AGI )
b ( STR/Armor weight )
c ( facing )
( 1 - Profile )
The bigger the better. To dodge the hit, you need to roll against hit.
Decide how much damage is casted and which types
Weapons can do several types of damage, some of them are exclusive and some other are additive.
Damage = a · STR · Skill used · Weapon Damage type · Hit
We will have several damage values, one for each of the damages that the weapon does. Each of the values are applied independently.
Decide if hit is blocked by shield
If the hit can'tbe dodge, then it time to decide if shield block it.
Shield rate = k · 1 / ( DEX · STR / Shield weight )
If we can use shield, then:
Shield absorbs = STR · Shield skill · DEX · Shield type of damage protection · ( 1 - Profile )
The more agressive, the less useful the shield is.
Decide how much damage is absorbed by armor
As armor is a passive entity, you can't apply really any attribute to it.
Armor absorbs = Armor skill · Armor type of damage protection
Apply damage
Finally
HP = HP - damage · ( 1 - race resistence to type of damage ) if HP == 0 then defender is dead.
Considerations
As you can see it can work directly with magic, magical resistences,poison, illness, ...
Magic
There are somethings written at Danter's documents.
Also on IRC we have been talking about Magic system. Nothing clear ( for me ) yet, but I know magic will be as spell and as scrolls.
Classes
We may short it using a Profession tree.
- Archer
- Mage
- Priest
- Druid
- Warrior
- Scout
- Thief
- Bard
- Barbarian
Each of these *classes* will expand on more and more making graph. Also we should have alignments there for:
- Good ( Positive karma )
- Neutral ( 0 karma )
- Evil ( Negative karma )
If you want to develop a skill you need to have the right karma or you won't be able to progress at the skill.
I have though about the next set of skills:
- spell caster
- invocation
- healing
- items incantatory
- scrolls writer
- potions maker
- infravision
- transfiguration
- animal talking
- trapper
- trap discovery
- follow trails
- walk in shadows
- silence
- invisible
- steal
- open lock
- sing
- aiming
- faith
- sword skill
- axe skill
- club skill
- shield skill
- armor skill
Back to Stendhal refactoring page
Back to Stendhal main wiki page