StendhalRPProposal: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>MiguelAngelBlanchLardin
imported>Hendrik Brummermann
added navigation
 
(94 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Navigation for Stendhal Top|Developing}}
This document explain what it is going to be our new RP system for Stendhal 0.60
{{Navigation for Stendhal Developers}}


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.


{{Likely Outdated}}
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:<br>

{{Future Concept}}

{{Ideas for Stendhal}}

This document explain what could be the new RP system for Stendhal's future.

I have placed a cleaned irc log on the discussion page for this article, so the things that was said won't be lost in all irc logs:<br>
[[Talk:StendhalRPProposal|Stendhal RP proposal discussion]]<br>
[[Talk:StendhalRPProposal|Stendhal RP proposal discussion]]<br>
<br>
<br>
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.


=Attributes=
=Attributes=
The first thing that our RP needs to define are 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.
Previous version lacked of any kind of character personalization which led to a poor RP experience.
Our new RP will be based on the following set of attributes:
Our new RP will be based on the following set of attributes:


Line 16: Line 25:
Strengh is used to determine:
Strengh is used to determine:
* Attack and damage done.
* Attack and damage done.
* Weight can be carried.
* Weight that can be carried.
* Damage that can be absorb with the shield.
* Damage that can be absorbed with the shield.


==DEX==
==DEX==
Dexterity is used to determine:
Dexterity is used to determine:
* Attack rate
* Attack rate
* Handle of the weapons
* Handling of the weapons


==AGI==
==AGI==
Agility is used to determine:
Agility is used to determine:
* How fast we can move.
* How fast we can move.
* How good are we at dodging.
* How good we are at dodging.


==CON==
==CON==
Constitution is used to determine:
Constitution is used to determine:
* Amount of HP points.
* Amount of HP points.
* How fast you can restore HP points
* How fast we can restore HP points
* How fast we restore MP points.
* How fast we can restore MP points.


==WIS==
==WIS==
Wisdom define how in joined you are with your deity.
Wisdom defines how united you are with your deity.
* Define how much faith you have.
* Defines how much faith you have.
* How strong your prayers are.
* How strong your prayers are.


Line 47: Line 56:


==KAR==
==KAR==
Karma determine most of the RP.
Karma determines most of the RP.
Good actions give positive karma and bad actions give negative karma.
Good actions give positive karma and bad actions give negative karma.
Karma is initially 0 except if modified by race.
Karma is initially 0 except if modified by race.
Line 76: Line 85:


= Minor attributes =
= Minor attributes =
There are also other attributes that are important but that don't decide to such extreme our player *look*.
There are also other attributes that are important but that don't decide to such extreme our player's *look*.


== Race ==
== Race ==
Line 86: Line 95:


This will decide the base outfit and the place where you enter world.
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.
Also of course, Dwarves are not hostile against dwarves, and so on.


== Gender ==
== Gender ==
Line 113: Line 122:
Human race will have 1 at every race factor.
Human race will have 1 at every race factor.


{|border="1" cellpadding="5" cellspacing="0" style="text-align:center"
Table with factors:
|+'''Race Factors'''
! !!Race_STR !!Race_DEX !!Race_AGI !!Race_CON !!Race_INT !!Race_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
|}


<pre>
|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
</pre>


===Class factor===
===Class factor===
Each player can choose one and only one class at creation time ( or later ), but just once.
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:
That class will affect how attributes are considered:
* Warriors has better CON and STR.
* Warriors have better CON and STR.
* Rangers has better CON and AGI
* Rangers have better CON and AGI
* Archers has better AGI and DEX
* Archers have better AGI and DEX
* ...
* ...


{|border="1" cellpadding="5" cellspacing="0" style="text-align:center"
Table with factors:
|+'''Class Factors'''

! !!Class_STR !!Class_DEX !!Class_AGI !!Class_CON !!Class_INT !!Class_WIS
<pre>
|-
|STR |DEX |AGI |CON |INT |WIS
!None
None |1 |1 |1 |1 |1 |1
Berseker|2.2 |0.7 |0.5 |1 |0.5 |1.1
|1 ||1 ||1 ||1 ||1 ||1
|-
Warrior |1.5 |1.2 |1.2 |1.1 |0.4 |0.6
!Berseker
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
|2.2 ||0.7 ||0.5 ||1 ||0.5 ||1.1
|-
Mage |0.5 |1.6 |0.5 |0.7 |2 |0.7
!Warrior
Priest |0.7 |1.3 |0.5 |0.8 |0.7 |2
|1.5 ||1.2 ||1.2 ||1.1 ||0.4 ||0.6
</pre>
|-
!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==
==HP==
It is the amount of health points we have.
It is the amount of health points we have.


HP=m·(CON Race factor)·(Class factor)·(Level/k+1)·CON
HP=m · CON · Race_CON · Class_CON ·(Level/k+1)·CON
Where m=k=10
Where m=k=10
Line 154: Line 184:
It is the amount of magic points we have.
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)
MP=m · (INT · Race_INT · Class_INT + WIS · Race_WIS · Class_WIS)/2 · (Level/k+1)·((INT + WIS)/2)
Where m=3, k=10
Where m=3, k=10
Line 161: Line 191:
It is the maximum amount of weight (in whatever unit) a player can carry without having a penalty at AGI and DEX.
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)
Weight=m·(STR · Race_STR · Class_STR) · (Level/k+1) · ((STR + CON + AGI)/3)
Where k=10 and m is used to adjust the units to something that makes sense.
Where k=10 and m is used to adjust the units to something that makes sense.
Line 169: Line 199:
It is how fast this player moves, in tiles per second.
It is how fast this player moves, in tiles per second.


speed=m·(Race factor)·(Class factor)·(Level/k+1)·AGI
speed=m · Race_AGI · Class_AGI · (Level/k+1) · AGI
Where k=10 and m is again used to adjust the value.
Where k=10 and m is again used to adjust the value.
Line 192: Line 222:
** Poison
** Poison


Resistence factor to damage:



<pre>
{|border="1" cellpadding="5" cellspacing="0" style="text-align:center"
|Slash |Bash |Stab |Magic |Fire |Cold |Acid |Dis |Poison
|+'''Resistence factor to damage'''
Human |0 |0 |0 |0 |0 |0 |0 |0 |0
! !!Slash !!Bash !!Stab !!Magic !!Fire !!Cold !!Acid !!Dis !!Poison
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
!Human
Dwarf |0 |0.1 |0 |0.4 |0 |0 |0 |0 |0
|0 ||0 ||0 ||0 ||0 ||0 ||0 ||0 ||0
</pre>
|-
!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.
This represent how much damage is absorbed.
Line 215: Line 254:
The damage needs to be coded correctly on the array so that usually:
The damage needs to be coded correctly on the array so that usually:


cut < club < clavar
slash < bash < stab


The damage is later scaled based on player attributes.
The damage is later scaled based on player attributes.
Line 285: Line 324:
This will determine how often we can attack.
This will determine how often we can attack.


Attack rate= k · 1 / ( DEX · STR / Weapon weight )
Attack rate= k · 1 / ( DEX · STR / Weapon_weight )


The lower the better.
The lower the better.
Line 292: Line 331:
Doing a hit is simple if the weapon suits us, and we don't try a hard type of damage.
Doing a hit is simple if the weapon suits us, and we don't try a hard type of damage.


Hit=a ( Attacker.DEX )
Hit = a ( Attacker.DEX )
b ( Weapon Skill )
b ( Weapon Skill )
c ( STR/Weapon weight )
c ( STR/Weapon_weight )
d ( facing )
d ( facing )
Profile
Profile


The bigger the better.
The bigger the better.
Line 308: Line 347:
The more armor weight the less you can move.
The more armor weight the less you can move.
Dodge rate= k · 1 / ( AGI · STR/Armor weight )
Dodge rate= k · 1 / ( AGI · STR/Armor_weight )
The lower the better.
The lower the better.
Line 314: Line 353:
===Decide if player dodge attack===
===Decide if player dodge attack===
Dodge=a ( Defender.AGI )
Dodge = a ( Defender.AGI )
b ( STR/Armor weight )
b ( STR/Armor_weight )
c ( facing )
c ( facing )
( 1 - Profile )
( 1 - Profile )


The bigger the better.
The bigger the better.
Line 323: Line 362:


===Decide how much damage is casted and which types===
===Decide how much damage is casted and which types===
Weapons can done several types of damage, some of them are exclusives and some other are additives.
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
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.
We will have several damage values, one for each of the damages that the weapon does.
Each of the values are applied independly.
Each of the values are applied independently.


===Decide if hit is blocked by shield===
===Decide if hit is blocked by shield===
If the hit can'tbe dodge, then it time to decide if shield block it.
If the hit can't be dodged, then it's time to decide if the shield blocks it.


Shield rate = k · 1 / ( DEX · STR / Shield weight )
Shield_rate = k · 1 / ( DEX · STR / Shield_weight )
If we can use shield, then:
If we can use the shield, then:


Shield absorbs = STR · Shield skill · DEX · Shield type of damage protection · ( 1 - Profile )
Shield_absorption = STR · Shield_skill · DEX · Shield_type_of_damage_protection · ( 1 - Profile )
The more agressive, the less useful the shield is.
The more agressive, the less useful the shield is.

===Decide how much damage is absorbed by armor===
===Decide how much damage is absorbed by armor===
As armor is a passive entity, you can't apply really any attribute to it.
As armor is a passive entity, you can't apply really any attribute to it.


Armor_absorption = Armor_skill · Armor_type_of_damage_protection
Armor absorbs = Armor skill · Armor type of damage protection
===Apply damage===
===Apply damage===
Finally
Finally
HP = HP - damage · ( 1 - race resistence to type of damage )
HP = HP - damage · ( 1 - Race_resistence_to_type_of_damage )
if HP == 0 then defender is dead.
if HP == 0 then defender is dead.
Line 357: Line 396:


= Magic =
= Magic =
There are somethings written at Danter's documents.
There are some things written in Danter's documents.


Also on IRC we have been talking about Magic system.
Also on IRC we have been talking about Magic system.
Line 415: Line 454:
[[StendhalRefactoring| Back to Stendhal refactoring page]] <br>
[[StendhalRefactoring| Back to Stendhal refactoring page]] <br>
[[Stendhal | Back to Stendhal main wiki page]] <br>
[[Stendhal | Back to Stendhal main wiki page]] <br>

[[Category:Development]]