StendhalRefactoringRP: Difference between revisions
imported>Danter |
imported>Kymara |
||
| (194 intermediate revisions by 10 users not shown) | |||
| Line 1: | Line 1: | ||
{{Navigation for Stendhal Top|Developing}} |
|||
{{Navigation for Stendhal Developers}} |
|||
{{Likely Outdated}} |
|||
{{Ideas for Stendhal}} |
|||
We need a rebalance of the RP system so it is playable and fun for both newbiews and high levels. |
We need a rebalance of the RP system so it is playable and fun for both newbiews and high levels. |
||
We have to talk about several things here: |
We have to talk about several things here: |
||
| Line 10: | Line 16: | ||
* range |
* range |
||
* shield |
* shield |
||
ChadF also suggested another type of weapon skill system that you can review [[Ideas:chad3f|here]] |
|||
<br> |
|||
<br> |
|||
We want to avoid the situation of having to add items to monsters for them in order to combat, so we need to find a way of making compatible both systems ( the above one with the actual ATK/DEF one ). |
We want to avoid the situation of having to add items to monsters for them in order to combat, so we need to find a way of making compatible both systems ( the above one with the actual ATK/DEF one ). |
||
We need to design the system to avoid campers:<br> |
We need to design the system to avoid campers:<br> |
||
[[File:Stendhal 0.39 campers.jpg]] |
|||
http://arianne.sourceforge.net/wiki_images/stendhal_0.39_campers.jpg |
|||
<br><small>Image: Campers training in Stendhal 0.39</small> |
<br><small>Image: Campers training in Stendhal 0.39</small> |
||
| Line 27: | Line 36: | ||
To level up you need to gain XP by killing monsters and/or solving quests.<br> |
To level up you need to gain XP by killing monsters and/or solving quests.<br> |
||
On level up you gain HP. |
On level up you gain HP. |
||
==Resting== |
|||
(Idea suggested by ''Nirvana'') |
|||
It would be nice a player's ''sit'' command to heal. The player sits down, and she heals like 1 point every 10 seconds or something. |
|||
==Combat== |
==Combat== |
||
| Line 32: | Line 45: | ||
Combat right now works as follows: |
Combat right now works as follows: |
||
# We compute the ''risk'' to hit the target, using their ATK and DEF attributes- |
# We compute the ''risk'' to hit the target, using their ATK and DEF attributes- |
||
# If risk>0 then we compute if the target blocks the attack, or how much damage the target |
# If risk>0 then we compute if the target blocks the attack, or how much damage the target received. |
||
The formula looks like: |
The formula looks like: |
||
<pre> |
<pre> |
||
risk_to_hit = |
risk_to_hit = 20 * source[ATK] - roll[1D20] * target[DEF] |
||
if risk_to_hit > 0: |
if risk_to_hit > 0: |
||
max_defence = √(target[DEF] * (10 + target[ARMOR])) * (10 + 0.03 * (target[LEVEL] + 5)); |
|||
max_attack = source[ATK] * (1 + source[WEAPON])* (1 + 0.03 * (source[LEVEL + 5)) * speed_effect; |
|||
where: speed_effect = 1.0 - 0.5 * speed_part * level_part^2; |
|||
defender_part = 0.6 * (roll[1D100] / 100) * target[DEF]^2 + 4 * target[DEF] * shield + 2 * target[DEF] * |
|||
where: speed_part = 8 / (source[ATTACK_RATE] + 3.0); |
|||
armor + target[DEF]* helmet + target[DEF] * legs + target[DEF] * boots |
|||
level_part = 1.0 - (target[LEVEL] + 5) / (1.2 * (source[LEVEL] + 5)); |
|||
damage = ( |
damage = (8 * max_attack * random[0..1] - max_defence * random[0..1]) / max_defence; |
||
</pre> |
</pre> |
||
There's also small karma effect for both the hitting chance and damage. |
|||
See that it is very important the ATK and DEF value, but that you can also get big improvements using weapons, armors, shields, etc... |
See that it is very important the ATK and DEF value, but that you can also get big improvements using weapons, armors, shields, etc... |
||
The |
The benefits you get from your items and skills are directly proportional to your level. The <code>speed_part</code> is responsible for making slow weapons more effective against strong enemies, and fast weapons better against weak enemies. |
||
Creatures are balanced without items, and have constant item DEF of 0 and item ATK 5. |
|||
The formula is nicer than previous one because it gives a good range of damages and it adds lineal damage increase for using weapons and lineal damage absortion for using armors. Now the point is to give values to monsters that will always lack of equipment ( to simplify everything ). |
|||
===Range Combat=== |
===Range Combat=== |
||
Damage from ranged attacks is based on the above formula, but: |
|||
* We have a |
* We have a maximum range |
||
* Weapon is |
* Weapon is most effective on middle range |
||
* |
* Item ATK is the sum of the bow and arrow ATK values |
||
So a nice formula would be: |
|||
<pre> |
<pre> |
||
ranged_damage = distance_modifier * normal_damage |
|||
range_damage = damage * ( actual_distance / max range of weapon ) |
|||
where: |
|||
if range = 0 |
|||
if actual_distance < min_range: |
|||
distance_modifier = 0.8 |
|||
else |
|||
if actual_distance > max_range: |
|||
distance_modifier = 4 * (distance / out_of_range - distance^2 / out_of_range^2) |
|||
range_damage = 0 |
|||
where: |
|||
out_of_range = max_range + 1, |
|||
</pre> |
</pre> |
||
Thus <code>ranged_damage</code> reaches the normal maximum damage at middle range, and drops to 0 at maximum range + 1. The point blank case is treated specially to avoid archers being completely helpless at melee. |
|||
==Tactics slider== |
|||
Here is some improved formulas for ranged combat, they also use arrow damage. |
|||
As a more or less easy to implement feature I (Zuse) suggest tactics sliders. A single (or more) slider(s) which can be adjusted by the player during the game. |
|||
For example: |
|||
=== Slink---Normal---Run: === |
|||
<pre> |
|||
attacker_part = 0.8 * (roll[1D100] / 100) * source[ATK]^2 + 4 * source[ATK] * (weapon + arrow) |
|||
maxdamage = 0.8 * source[ATK]^2 + 4 * (weapon + arrow) |
|||
This slider will allow the players to adjust the speed of movement. With the following consequences; |
|||
range_damage = damage * ( 1 - (actual_distance / max_range) ) + ( damage - damage * ( 1 - (min_range / max_range) ) ) * |
|||
( 1 - (actual_distance / max_range) ) |
|||
*Slink: Players are aware of dangerous situations, they will therefore expect to be attacked suddenly (adrenalin-kick ;) ) and they slink to make no noise. |
|||
</pre> |
|||
-> +10 %DEF -50% Movement speed, Creatures will start to attack/note players only if there is a very close distance (e.g. 2 tiles) between them. |
|||
*Normal: Just normal ;) |
|||
*Run: Players like to get fast from A to B (they might like to flee away). The do not take care of noise and surrounding. A attack will surprise them. |
|||
-> -10% DEF +50% Movement speed, Creatures will hear the "noisy" player and trying to attack/note the player from much farer (20-30 tiles) distances then normal. |
|||
=== Aggress---Normal---Defence: === |
|||
This slider will allow players to adjust whether they like to attack creatures or defences themselves. |
|||
*Aggress: The player tries to slaughter the creature as fast as possible, he/she is using fancy hero-tricks, however this open weak points in the defence. Doesn't matter for real a hero which starts to become bloodthirstiness. The little scratches and wounds will be acceptable for a real hero as along as he/she is the winner of this massacre. |
|||
-> +15% ATK -15% DEF |
|||
*Normal: Again just normal ;) |
|||
*Defence: The player is under heavy attack and run out of potion. Help is coming soon from his party. Therefore, it becomes a question of time. "Ditch a hole and stick your head inside" is now the slogan :). |
|||
-> -15% ATK +15% DEF |
|||
These sliders will make it possible to run different strategies for parties and for longer campaigns. In addition the level of a player is not directly related to the DEF and ATK settings, which make it more interesting because other players do not know about the actual settings. This can help weak players to protect them better and strong players get faster rid of (boring) weak creatures. |
|||
==Magic== |
==Magic== |
||
{{TODO| update/replace with [[Ideas_for_Stendhal/Magic]] which is the current working document for magic ideas}} |
|||
Magic will be mana based, with each spell costing mana. |
Magic will be mana based, with each spell costing mana. |
||
Also you can have written spells that don't cost mana, but that vanish after they have been used. |
Also you can have written spells that don't cost mana, but that vanish after they have been used. |
||
| Line 124: | Line 166: | ||
[[StendhalRefactoringClassBasics| Class Basics]]<br> |
[[StendhalRefactoringClassBasics| Class Basics]]<br> |
||
==Quests== |
|||
That's the point of the game. |
|||
We can do something different. |
|||
We must do something different. |
|||
The idea is to suggest players quests that make them do something interesting instead of just doing the camper!. |
|||
=== Plots ideas === |
|||
[http://www.gamedev.net/reference/articles/article255.asp Several plots ideas] |
|||
===Modified sheep quest=== |
|||
Summary: Nishiya gives you a sheep (weight 0) to grow.<br> |
|||
Reward: The first full grown sheep gives you the exp. for level 2<br> |
|||
Difficulty: very easy, you don't even have to meet an enemies<br> |
|||
Note: You can do the quest as often as you like, but you'll get the xp only once<br> |
|||
===Grab some rare herbs from the plains=== |
|||
Summary: Carmen asks you to grab her some herbs from the plains<br> |
|||
Reward: Some coins, some xp, maybe a necklace that heals you a hp each second<br> |
|||
Difficulty: easy<br> |
|||
Note: You can do the quest as often as you like, but you'll get the reward (necklace) only once<br> |
|||
===Get the childs toy=== |
|||
Summary: The smith' child has lost its toy and it looks like a wolf from the forest stole it (original eh?). Bring it back.<br> |
|||
Reward: Some coins, some xp, maybe the smith can give you a special weapon (with your name?)<br> |
|||
Difficulty: normal, kill some wolfes and eventually one drops the toy<br> |
|||
Note: You can do the quest only once. Make sure the wolfes drops toys only when someone with the quest is near. Remove additional toys.<br> |
|||
===The Pied Piper=== |
|||
(after a german tale: read this first ([http://www.hameln.de/tourismus/rattenfaenger/sage.htm click]). It is translated in some european languages) |
|||
* Part 1 |
|||
Summary: The city has a rat problem. You can enter each house and kill some rats. The major tells you they are waiting for a rat catcher (and he tells the exact time)<br> |
|||
Reward: none<br> |
|||
Difficulty: none<br> |
|||
Note: This is just to introduce the problem. Make sure the rats are very easy (atk=def=1) and give nearly no xp,atk_xp,def_xp<br> |
|||
* Part 1b |
|||
Summary: The pied piper arrives. You can see how he dances and all the rats leaves the houses and gather around him. He leads them in some dungeon (it is complicated, but it would look cool).<br> |
|||
Note: Make sure the players cannot block the path to the dungeon.<br> |
|||
* Part 1c |
|||
Summary: The pied piper returns to get his reward. The city refuses to pay and so he dances again to get all the children. They go down the same dungeon.<br> |
|||
Note: Make sure the players cannot block the path to the dungeon.<br> |
|||
* Part 2 |
|||
Summary: Get the children back.<br> |
|||
Reward: don't know. something cool<br> |
|||
Difficulty: normal<br> |
|||
Note: This is a quest for several players, so the enemies shouldn't be too easy. The kids are in some kind of underground town. The pied piper is gone.<br> |
|||
This quest can be restarted each 2 days or so. Block the dungeon entrance some hours before the quest restarts.<br> |
|||
If some people don't like the idea of 'stolen' kids (it's a tale after all), the rat catcher gets sheeps in his 2nd run.<br> |
|||
=== Introduce new players === |
|||
'''Participants:''' |
|||
* Nothing yet |
|||
'''Steps:''' |
|||
* Nothing yet |
|||
'''Reward:''' |
|||
* XP: |
|||
* Items: |
|||
** none |
|||
=== Help Ceril find a old book === |
|||
'''Participants:''' |
|||
* Ceril, the most famous librarian at Semos |
|||
* Jinath, the witch that lives near the imperial path near Or'ril castle |
|||
'''Steps:''' |
|||
# Talk with Ceril about the quest |
|||
# Ask Jinath the book |
|||
# Jinath will ask you for a herbs |
|||
# Give Jinath herbs |
|||
# Take book to Ceril |
|||
'''Reward:''' |
|||
* XP: |
|||
* Items: |
|||
** Ank |
|||
==== Help Jinath find some rare herbs ==== |
|||
'''Participants:''' |
|||
* Jinath, the witch that lives near the imperial path near Or'ril castle |
|||
'''Steps:''' |
|||
# Talk with Jinath about the herbs |
|||
# Go to Or'ril north plains |
|||
# Grab some herbs of the type Jinath said |
|||
# Take them to her. |
|||
'''Reward:''' |
|||
* XP: |
|||
* Items: |
|||
** Book |
|||
===Dungeon portal runes=== |
|||
'''Story:''' |
|||
Ceril has the mission to watch the runes if ever they would become odd. He asks you to go down in the dungeon lvl -2 to check the portal runes, cause they like to change all the time.<br> |
|||
'''Participants:''' |
|||
* Ceril, the most famous librarian at Semos |
|||
'''Steps:''' |
|||
# Talk with Ceril about the quest, and get a piece of paper from him to draw on |
|||
# Go down to semos dungeon lvl -2 and make sure you see all runes |
|||
# Draw the runes on the piece of paper (Use: Piece of paper near runes) |
|||
# Go back to ceril and give him your drawing of the runes |
|||
'''Reward:''' |
|||
* XP |
|||
* Gold |
|||
Note: You can do this quest again, but there is a delay before he gives you the quest again... maybe 10 minutes or so.<br> |
|||
=== Ieo has lost his magical recipes tome === |
|||
'''Participants:''' |
|||
* Ieo, a confused sorcerer that is actually investigating at Semos Library |
|||
* Wilros, an ancient that does nothing but give walks around Semos. He lives at Semos village. |
|||
'''Steps:''' |
|||
# Talk with Ieo about the Tome |
|||
# Go to Semos village and talk with Wilros |
|||
# Wilros will ask for a magical potion and some money |
|||
# Go to Herbolary and buy the potion |
|||
# Give Wilros the potion and the money |
|||
# Take tome to Ieo |
|||
'''Reward:''' |
|||
* XP: |
|||
* Items: |
|||
** Potion |
|||
** Hammer |
|||
=== Give Wilros his medicine === |
|||
Wilros is an old man that lives in Semos village. |
|||
=== Ilula is looking for ancient table with glyphs === |
|||
Ilula is a young investigator running her first investigation |
|||
=== Get corpses to Petety === |
|||
Petety is the tanner that works in Semos city |
|||
* Get bear corpses to Petety |
|||
* Get wolf corpses to Petety |
|||
* Get rat corpses to Petety |
|||
'''Reward:''' |
|||
* Some Gold depending on the corpse. |
|||
=== Find herbs for Lilih === |
|||
Lilih is the druid that run the herbolary at Semos |
|||
=== Give some items to Xodero, the blacksmith === |
|||
Xodero is the blacksmith that works in semos, and he needs tools and resources to create new weapons and armors. |
|||
* Give some steel to Xodero |
|||
* Give some wood to Xodero |
|||
* Give some tools to Xodero |
|||
* Xodero is expecting a forge and a hammer |
|||
=== Find Nenis lost toy=== |
|||
Nenis, who is Xodero's son, is at the blacksmith that runs at Semos |
|||
=== Diogenes may sell key for a dungeon for a good amount of money === |
|||
Diogenes just walk around Semos main square |
|||
=== Give Carmen some healing herbs === |
|||
Carmen is the first NPC that you see when logging into the game. Carmen is at Semos |
|||
===Proposed Quests For North Semos=== |
|||
THIS IS BEING WORKED ON! |
|||
Here are some proposed quests for the map Im ([[StephenIerodiaconou|steve]]) making north of semos (semos_north_plains). The map has a number of features added to support quests. I imagine most of them to be simple for newbies who arrive in Semos and need some easy XP. |
|||
====Stolen Vegetables==== |
|||
====Save childs ball for rat infested field==== |
|||
====Stables==== |
|||
====Catacombs Quest (entrance via a grave in the graveyard)==== |
|||
| Line 319: | Line 174: | ||
[[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]] |
|||
Latest revision as of 15:59, 2 January 2012
Note: The content on this page is very old and is likely outdated. You may want to check on the irc channel #arianne.
Ideas for Stendhal
- RP Proposal with Skills
- RP Refactoring
- Character Classes
- Items
- Magic
- Effects
- Pets and sheep
- Alchemy and Crafting
- Upgrading weapons
- Temp. stats increase
- Containers
- Item Deterioration
- Player vs. Player Challenges
Mostly implemented
Related pages
We need a rebalance of the RP system so it is playable and fun for both newbiews and high levels. We have to talk about several things here:
Skill system
The whole system will be skill based, so if you use sword, you will get better and better hits with the sword, but if you change to axes you will have to learn to use it again, as you did with swords. At least we have the next set of skills:
- sword
- axe
- club/staff
- range
- shield
ChadF also suggested another type of weapon skill system that you can review here
We want to avoid the situation of having to add items to monsters for them in order to combat, so we need to find a way of making compatible both systems ( the above one with the actual ATK/DEF one ).
We need to design the system to avoid campers:
Image: Campers training in Stendhal 0.39
There are several valid approach for this problem, and IMHO we should try from less severe to most severe first.
- Blood solution
You only improve your skill when you damage/are damaged the creature - Don't get XP points nor skill points from weak creatures
- Kick idle players
No action in X minutes means that you are logged out
We want to disallow first camping to increase skills, you gain skills by playing not by camping. Later we will fix camping by not respawing monsters if player is waiting for the monster. The whole point is to have player create value: fun.
Leveling up
To level up you need to gain XP by killing monsters and/or solving quests.
On level up you gain HP.
Resting
(Idea suggested by Nirvana) It would be nice a player's sit command to heal. The player sits down, and she heals like 1 point every 10 seconds or something.
Combat
Melee Combat
Combat right now works as follows:
- We compute the risk to hit the target, using their ATK and DEF attributes-
- If risk>0 then we compute if the target blocks the attack, or how much damage the target received.
The formula looks like:
risk_to_hit = 20 * source[ATK] - roll[1D20] * target[DEF]
if risk_to_hit > 0:
max_defence = √(target[DEF] * (10 + target[ARMOR])) * (10 + 0.03 * (target[LEVEL] + 5));
max_attack = source[ATK] * (1 + source[WEAPON])* (1 + 0.03 * (source[LEVEL + 5)) * speed_effect;
where: speed_effect = 1.0 - 0.5 * speed_part * level_part^2;
where: speed_part = 8 / (source[ATTACK_RATE] + 3.0);
level_part = 1.0 - (target[LEVEL] + 5) / (1.2 * (source[LEVEL] + 5));
damage = (8 * max_attack * random[0..1] - max_defence * random[0..1]) / max_defence;
There's also small karma effect for both the hitting chance and damage.
See that it is very important the ATK and DEF value, but that you can also get big improvements using weapons, armors, shields, etc...
The benefits you get from your items and skills are directly proportional to your level. The speed_part is responsible for making slow weapons more effective against strong enemies, and fast weapons better against weak enemies.
Creatures are balanced without items, and have constant item DEF of 0 and item ATK 5.
Range Combat
Damage from ranged attacks is based on the above formula, but:
- We have a maximum range
- Weapon is most effective on middle range
- Item ATK is the sum of the bow and arrow ATK values
ranged_damage = distance_modifier * normal_damage
where:
if range = 0
distance_modifier = 0.8
else
distance_modifier = 4 * (distance / out_of_range - distance^2 / out_of_range^2)
where:
out_of_range = max_range + 1,
Thus ranged_damage reaches the normal maximum damage at middle range, and drops to 0 at maximum range + 1. The point blank case is treated specially to avoid archers being completely helpless at melee.
Tactics slider
As a more or less easy to implement feature I (Zuse) suggest tactics sliders. A single (or more) slider(s) which can be adjusted by the player during the game. For example:
Slink---Normal---Run:
This slider will allow the players to adjust the speed of movement. With the following consequences;
- Slink: Players are aware of dangerous situations, they will therefore expect to be attacked suddenly (adrenalin-kick ;) ) and they slink to make no noise.
-> +10 %DEF -50% Movement speed, Creatures will start to attack/note players only if there is a very close distance (e.g. 2 tiles) between them.
- Normal: Just normal ;)
- Run: Players like to get fast from A to B (they might like to flee away). The do not take care of noise and surrounding. A attack will surprise them.
-> -10% DEF +50% Movement speed, Creatures will hear the "noisy" player and trying to attack/note the player from much farer (20-30 tiles) distances then normal.
Aggress---Normal---Defence:
This slider will allow players to adjust whether they like to attack creatures or defences themselves.
- Aggress: The player tries to slaughter the creature as fast as possible, he/she is using fancy hero-tricks, however this open weak points in the defence. Doesn't matter for real a hero which starts to become bloodthirstiness. The little scratches and wounds will be acceptable for a real hero as along as he/she is the winner of this massacre.
-> +15% ATK -15% DEF
- Normal: Again just normal ;)
- Defence: The player is under heavy attack and run out of potion. Help is coming soon from his party. Therefore, it becomes a question of time. "Ditch a hole and stick your head inside" is now the slogan :).
-> -15% ATK +15% DEF
These sliders will make it possible to run different strategies for parties and for longer campaigns. In addition the level of a player is not directly related to the DEF and ATK settings, which make it more interesting because other players do not know about the actual settings. This can help weak players to protect them better and strong players get faster rid of (boring) weak creatures.
Magic
TODO: update/replace with Ideas_for_Stendhal/Magic which is the current working document for magic ideas
Magic will be mana based, with each spell costing mana. Also you can have written spells that don't cost mana, but that vanish after they have been used.
We will mainly have 6 elements in Stendhal, maybe 8 later, and those are Fire, Water/Ice, Earth, Wind, Holy and Dark.
The 2 that might be added later is Physical and Mental magic, that focuses on protecting against and strenghtening charm and poison attacks. For now poison will just be treated as a normal attack, and not be affected by any magic resistances.
For the Element there will be some properties:
- Fire strong vs Water
- Water strong vs Earth
- Earth strong vs Wind
- Wind strong vs Fire
- Dark strong vs Holy
- Holy strong vs Dark
The Holy and Dark elements will also be used in healings, depending on if the target is a good or an evil creature the dark and holy elements will heal or damage the target.
Here is some speculative formulas for how magic might be working
risk_to_hit = 2 * source[INT] - target[INT] + target[DEF]/2 + roll[1D20] -10
if risk_to_hit > 0:
attacker part = 0,8 * ((roll[1D100]/100) * source[MATK]^2) * (ELEMENT * 0,2) + 4 * source[MATK] * (ELEMENT*0,2)
maxdamage = source[MATK]^2 + 4 * (ELEMENT)
defender_part = 0.6 * (roll[1D100] / 100) * target[DEF]^2 + 2 * target[DEF] * shield + target[DEF] *
armor + 0,5 * target[DEF]* helmet + 0,5* target[DEF] * legs + 0,5 * target[DEF] * boots
damage = ( ( ((attacker_part - defender_part) / maxdamage) * (maxdamage / source[MATK]) ) *
(1 + (target[WEAK] * 0,01)) ) * (1 - target[STRONG] * 0,01)
ELEMENT = The elemental power of the skill that is used (Equivelant to the ATK the equipped weapon has, but for magic).
WEAK = The element that is weak to the skill that is used. (beeing strong in one element makes you weak to another)
STRONG = Is the target strong against the element casted upon him?
These Formulas is based on that all creatures have an elemental resistance to all the elements in the game:
- An elemental resistance below 0 means that you gain extra damage from that element -100 means you recive the double damage.
- An elemental resistance of 0 means that there is no change in damage from that element, or the element that is strong against it.
- An elemental resistance of 100 means that the target is immune to that form of damage, but also weak against the element strong against it.
- An elemental resistance of 100+ means that you absorbs some of that element (ie you get healed) having 200 means that instead of getting damaged you get healed the entire damage cast upon you, but you are also very weak against the oposing element.
Check over at the class section for spells that might be added
Class Basics
Back to stendhal refactoring page
Back to Stendhal main wiki page