Merge branch 'master' of github.com:eressea/server

This commit is contained in:
Enno Rehling 2014-06-07 09:26:38 +02:00
commit 58fa2d4454
3 changed files with 372 additions and 12 deletions

View File

@ -1,16 +1,35 @@
# Introduction # Introduction
Eressea is a play-by-email strategy role-playing game that simulates a fantasy world. Unlike most video games, there are are no fancy graphics, but everything that happens is communicated by text. Eressea is a play-by-email strategy role-playing game that simulates a
fantasy world. Unlike most video games, there are are no fancy
graphics, but everything that happens is communicated by text.
As a player, you are in control of a number of characters, which are referred to as units, which combine to make a faction. Your faction competes with other factions over the resources of the world that you explore together. Sometimes this leads to war, and sometimes to friendship between factions, and eventually it all adds up to a rich history of the world, with its own heroes and legends. As a player, you are in control of a number of characters, which are
referred to as units, which combine to make a faction. Your faction
competes with other factions over the resources of the world that you
explore together. Sometimes this leads to war, and sometimes to
friendship between factions, and eventually it all adds up to a rich
history of the world, with its own heroes and legends.
Eressea is different from most games in many respects, but most of all in that there is no declared winner. There is not even a goal, other than to enjoy yourself, and set your own goals. Do you want to monopolize a natural resource? Become the strongest military force? Create a democratic government for the factions in your part of the world? Collect trophies from slain dragons? Map the entire globe? Those are all valid goals to set for yourself, but you might find your own. Eressea is different from most games in many respects, but most of all
in that there is no declared winner. There is not even a goal, other
than to enjoy yourself, and set your own goals. Do you want to
monopolize a natural resource? Become the strongest military force?
Create a democratic government for the factions in your part of the
world? Collect trophies from slain dragons? Map the entire globe?
Those are all valid goals to set for yourself, but you might find your
own.
### How to play ### How to play
Eressea is played in weekly turns. Every weekend, you receive a textual report containing your units, the part of the world that they can observe, and any events that happened since the last report. Eressea is played in weekly turns. Every weekend, you receive a
textual report containing your units, the part of the world that they
can observe, and any events that happened since the last report.
Based on that report, players send an email to the game's server that contains orders for all of their units. A week later, the server evaluates the orders from all players, updates the state of the world, and sends out new reports. Based on that report, players send an email to the game's server that
contains orders for all of their units. A week later, the server
evaluates the orders from all players, updates the state of the world,
and sends out new reports.
A (slightly simplified) report may look like this: A (slightly simplified) report may look like this:
@ -47,15 +66,42 @@ A (slightly simplified) report may look like this:
+ Osswid the Destroyer (wtmj), Vikings (atnf), 1 + Osswid the Destroyer (wtmj), Vikings (atnf), 1
dwarf, has: 1 iron. dwarf, has: 1 iron.
What you see here are two units, Osswid (wtmj) and the Fighters of Pelenth (r6b0). The fighters are our own unit, but Osswid belongs to the faction Vikings (atnf). Every unit, faction or other object in the game is identified by a four-letter code, and it is common to append it to the name in parentheses. The fort of Pelenth (opw4) is a building, and our fighters are inside, which causes them to be indented a little more, and gives them some benefits including additional protection in combat. What you see here are two units, Osswid (wtmj) and the Fighters of
Pelenth (r6b0). The fighters are our own unit, but Osswid belongs to
the faction Vikings (atnf). Every unit, faction or other object in the
game is identified by a four-letter code, and it is common to append
it to the name in parentheses. The fort of Pelenth (opw4) is a
building, and our fighters are inside, which causes them to be
indented a little more, and gives them some benefits including
additional protection in combat.
While Osswid is a single dwarf, our unit of fighters consists of several elves. Units can any number of men, which are always of the same race. Each unit can learn any number of skills, and our Fighters are skilled in melee combat at a respectable level 5. They own a sword and one platemail, which means that one of them will be well equipped when going into battle, while the other three will fight with their bare hands. The unit also has 500 pieces of silver, the currency of the game. While Osswid is a single dwarf, our unit of fighters consists of
several elves. Units can any number of men, which are always of the
same race. Each unit can learn any number of skills, and our Fighters
are skilled in melee combat at a respectable level 5. They own a sword
and one platemail, which means that one of them will be well equipped
when going into battle, while the other three will fight with their
bare hands. The unit also has 500 pieces of silver, the currency of
the game.
Since he isn't of our own faction, we cannot tell what skills Osswid has, but we can tell that he's unarmed. Since he isn't of our own faction, we cannot tell what skills Osswid
has, but we can tell that he's unarmed.
We see all this because one of our units is in the region, the highland of Vetkan (10,1). Regions do not have a four-letter identifier, but are instead identified by their coordinates on the map, which makes it easier to visualize the world. We see all this because one of our units is in the region, the
highland of Vetkan (10,1). Regions do not have a four-letter
identifier, but are instead identified by their coordinates on the
map, which makes it easier to visualize the world.
The region of Vetkan is surrounded by a number of other regions on six sides, since Eressea's Map uses a hexagonal grid. Every region has a terrain, and we can see highland, mountain, plain and forest regions in our vicinity. Each terrain has different qualities: For example, mountains are good for mining iron ore and quarries, while plains are fertile and forests produce lumber. Each region is inhabited by a peasant population, and you can see that Vetkan has a population of 1012. These peasants are the basis of the region's economy, and they own a combined 13,156 silver that we could try to acquire through taxation or other means. The region of Vetkan is surrounded by a number of other regions on six
sides, since Eressea's Map uses a hexagonal grid. Every region has a
terrain, and we can see highland, mountain, plain and forest regions
in our vicinity. Each terrain has different qualities: For example,
mountains are good for mining iron ore and quarries, while plains are
fertile and forests produce lumber. Each region is inhabited by a
peasant population, and you can see that Vetkan has a population of
1012. These peasants are the basis of the region's economy, and they
own a combined 13,156 silver that we could try to acquire through
taxation or other means.
Example orders for this faction may look like this: Example orders for this faction may look like this:
@ -74,6 +120,22 @@ Example orders for this faction may look like this:
MOVE E MOVE E
END END
Every set of orders begins with the faction's id and password, and is followed by orders for one or more units. A unit's orders begin with the word UNIT followed by the unit's id, and one or more orders. In this case, we are giving the unit an order to STUDY the perception skill, and to GIVE silver to three other units. STUDY is a standard action, and each unit can perform exactly one per turn. If you do not specify a standard action, then the unit will usually repeat the action from the previous week. GIVE is a free action, and all units can perform as many free actions in a week as they like. Every set of orders begins with the faction's id and password, and is
followed by orders for one or more units. A unit's orders begin with
the word UNIT followed by the unit's id, and one or more orders. In
this case, we are giving the unit an order to STUDY the perception
skill, and to GIVE silver to three other units. STUDY is a standard
action, and each unit can perform exactly one per turn. If you do not
specify a standard action, then the unit will usually repeat the
action from the previous week. GIVE is a free action, and all units
can perform as many free actions in a week as they like.
The MAKE TEMP order is special: It creates a new unit with a temporary id (in this case, we're calling them TEMP 1 and TEMP 2). The server will replace this with a unique id by the time it sends the next report, but until then, we can address the new unit by this temporary identifier, for example to give it the silver that it requires for recruiting new members. RECRUIT is another example of a free action, while MOVE is a standard action. The MAKE TEMP order is technically given by the unit whose orders preceded it, and the new unit's orders are finished with the END keyword. The MAKE TEMP order is special: It creates a new unit with a temporary
id (in this case, we're calling them TEMP 1 and TEMP 2). The server
will replace this with a unique id by the time it sends the next
report, but until then, we can address the new unit by this temporary
identifier, for example to give it the silver that it requires for
recruiting new members. RECRUIT is another example of a free action,
while MOVE is a standard action. The MAKE TEMP order is technically
given by the unit whose orders preceded it, and the new unit's orders
are finished with the END keyword.

31
doc/study.md Normal file
View File

@ -0,0 +1,31 @@
# Studying Skills
Every unit in Eressea can be upgraded by learning a number of skills.
Some examples of skills are mining, riding, archery, and shipcraft.
Some skills enable a unit to produce a good, such as mining, which
gives you access to iron and other metals. Other skills improve a
unit's combat qualities, like archery, melee, and constitution. With
enough time, all skills can be studied to higher levels, with no upper
limit, and usually give better benefits the more proficient a unit is.
To study a skill, a unit needs to give the STUDY order, followed by
the name of the skill:
UNIT 1234
STUDY mining
## Study duration
An unmodified skill takes about a week to learn, higher levels take
longer. The total time to advance a level is variable per unit, but on
average, learning up to a new level takes as many weeks' time, so for
example, starting from level 3 it should take approximately 4 weeks to
reach level 4 in a skill.
## Skill modifications
Skills can be modified for any number of reasons. Certain races have
natural modifications on skills, which give a bonus on the skill if it
has been trained to at least level 1. Some buildings provide their
inhabitants with a skill boost, and certain skills are modified by the
terrain that a unit is in.

View File

@ -1,6 +1,273 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<equipment> <equipment>
<!-- one equipment-set per player-race for the first unit in a faction -->
<set name="first_dwarf">
<item name="axe" amount="1"/>
<item name="chainmail" amount="1"/>
<skill name="melee" level="1"/>
</set>
<set name="first_elf">
<item name="fairyboot" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_orc">
<skill name="polearm" level="4"/>
<skill name="melee" level="4"/>
<skill name="crossbow" level="4"/>
<skill name="catapult" level="4"/>
<skill name="bow" level="4"/>
</set>
<set name="first_goblin">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_human">
<callback name="equip_newunits"/>
</set>
<set name="first_troll">
<skill name="building" level="1"/>
<skill name="perception" level="3"/>
<item name="stone" amount="50"/>
</set>
<set name="first_demon">
<skill name="stamina" level="15"/>
</set>
<set name="first_insect">
<item name="nestwarmth" amount="9"/>
</set>
<set name="first_halfling">
<skill name="trade" level="1"/>
<skill name="riding" level="2"/>
<item name="horse" amount="2"/>
<item name="cart" amount="1"/>
<item name="balm" amount="5"/>
<item name="spice" amount="5"/>
<item name="myrrh" amount="5"/>
<item name="jewel" amount="5"/>
<item name="oil" amount="5"/>
<item name="silk" amount="5"/>
<item name="incense" amount="5"/>
</set>
<set name="first_cat">
<item name="roi" amount="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_aquarian">
<skill name="sailing" level="1"/>
<callback name="equip_newunits"/>
</set>
<set name="first_centaur">
<callback name="equip_newunits"/>
</set>
<!-- equipment-sets for random encounters -->
<set name="random_desert">
<skill name="melee" level="d2"/>
<skill name="trade" level="d3"/>
<skill name="riding" level="d2+1"/>
<skill name="training" level="d2+1"/>
<item name="horse" amount="1"/>
<item name="sword" amount="1"/>
<item name="money" amount="d30+19"/>
</set>
<set name="random_swamp">
<skill name="stealth" level="d3+1"/>
<skill name="polearm" level="d3+1"/>
<item name="spear" amount="1"/>
<item name="money" amount="d20+9"/>
</set>
<set name="random_glacier">
<skill name="armorer" level="d2+1"/>
<skill name="melee" level="d2+1"/>
<item name="sword" amount="1"/>
<item name="money" amount="d20+19"/>
</set>
<set name="random_mountain">
<skill name="armorer" level="d2+1"/>
<skill name="melee" level="d2+1"/>
<skill name="trade" level="d3"/>
<item name="sword" amount="1"/>
<item name="money" amount="d40+59"/>
<subset chance="0.6">
<set name="item_plate"/>
</subset>
</set>
<set name="random_highland">
<skill name="melee" level="d2"/>
<item name="sword" amount="1"/>
<item name="money" amount="d10+19"/>
</set>
<set name="random_forest">
<skill name="stealth" level="d2"/>
<skill name="perception" level="d2+1"/>
<skill name="bow" level="d3+1"/>
<item name="bow" amount="1"/>
<item name="money" amount="d20+9"/>
<subset chance="0.2">
<set name="random_herbalist"/>
</subset>
</set>
<set name="random_herbalist">
<skill name="herbalism" level="d2"/>
</set>
<set name="random_villagers">
<item name="money" amount="d80+19"/>
<skill name="cartmaking" level="d2-1"/>
<skill name="mining" level="d2-1"/>
<skill name="quarrying" level="d2-1"/>
<skill name="forestry" level="d2-1"/>
<item name="horse" amount="2"/>
<item name="wagon" amount="d2-1"/>
<item name="money" amount="d30+10"/>
</set>
<set name="random_plain">
<item name="money" amount="d80+19"/>
<subset>
<set name="random_sword" chance="0.25"/>
<set name="random_spear" chance="0.25"/>
<set name="random_crossbow" chance="0.25"/>
<set name="random_bow" chance="0.25"/>
</subset>
<subset chance="0.4">
<set name="item_chain"/>
</subset>
<subset chance="0.3">
<set name="random_rider"/>
</subset>
</set>
<set name="random_spear">
<skill name="polearm" level="d3"/>
<item name="spear" amount="1"/>
</set>
<set name="random_sword">
<skill name="melee" level="d3"/>
<item name="sword" amount="1"/>
</set>
<set name="random_crossbow">
<skill name="crossbow" level="d3"/>
<item name="crossbow" amount="1"/>
</set>
<set name="random_bow">
<skill name="bow" level="d3"/>
<item name="bow" amount="1"/>
</set>
<set name="random_rider">
<item name="horse" amount="1"/>
<skill name="riding" level="d3"/>
</set>
<set name="recruited_dracoid">
<!-- dracoiden, von drachen rekrutiert -->
<skill name="polearm" level="d4+2"/>
<skill name="melee" level="d4+2"/>
<skill name="bow" level="d3+1"/>
<subset>
<!-- dracoiden haben immer eine von drei waffen -->
<set name="item_sword" chance="0.33"/>
<set name="item_spear" chance="0.33"/>
<set name="item_bow" chance="0.34"/>
</subset>
</set>
<set name="rising_undead">
<!-- untote, von den graebern auferstanden -->
<item name="rustysword" amount="1"/>
<item name="rustychainmail" amount="d2-1"/>
<subset chance="0.3">
<set name="item_rustyshield"/>
</subset>
</set>
<!-- single-item sets (that can be given a percentage-chance in a subset) -->
<set name="item_plate">
<item name="plate" amount="1"/>
</set>
<set name="item_spear">
<item name="spear" amount="1"/>
</set>
<set name="item_bow">
<item name="bow" amount="1"/>
</set>
<set name="item_sword">
<item name="sword" amount="1"/>
</set>
<set name="item_chain">
<item name="chainmail" amount="1"/>
</set>
<set name="item_log">
<item name="log" amount="1"/>
</set>
<set name="item_rustychain">
<item name="rustychainmail" amount="1"/>
</set>
<set name="dragon_spoils">
<item name="dragonblood" amount="4"/>
<item name="dragonhead" amount="1"/>
</set>
<set name="youngdragon_spoils">
<item name="dragonblood" amount="1"/>
</set>
<set name="wyrm_spoils">
<item name="dragonblood" amount="10"/>
<item name="dragonhead" amount="1"/>
</set>
<!-- sets that are used by the monster-spawning code -->
<set name="monster_dragon">
<skill name="magic" level="4"/>
<skill name="stealth" level="1"/>
<skill name="stamina" level="1"/>
<skill name="perception" level="d3"/>
<item name="money" amount="d500+99"/>
</set>
<set name="monster_braineater">
<skill name="stealth" level="1"/>
<skill name="perception" level="1"/>
</set>
<set name="monster_seaserpent">
<skill name="magic" level="4"/>
<skill name="stealth" level="2"/>
<skill name="stamina" level="1"/>
<skill name="perception" level="3"/>
</set>
<set name="new_orc_unit"> <set name="new_orc_unit">
<skill name="polearm" level="1"/> <skill name="polearm" level="1"/>
<skill name="melee" level="1"/> <skill name="melee" level="1"/>