From no-reply_wiki at metalforge.org Fri Nov 7 20:16:34 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Fri, 07 Nov 2008 20:16:34 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added:
world:scorn:beginners
Message-ID: <1226110594.200928.18814.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/07 20:16
User :
Edit Summary: created
===== Beginners house =====
The beginner's house is a great introductory building to learn how to play crossfire
FIXME Please add more info!
IP-Address : 24.56.192.179
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/world:scorn:beginners
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Fri Nov 7 20:20:01 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Fri, 07 Nov 2008 20:20:01 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added:
world:scorn:dragon_guild
Message-ID: <1226110801.320757.18821.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/07 20:19
User :
Edit Summary: created
**Dragon Guild**
The dragon guild is east of the library in Scorn, and is only useful to the fire hatchling character.
FIXME More info needed for this page
IP-Address : 24.56.192.179
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/world:scorn:dragon_guild
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sat Nov 8 08:39:53 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sat, 08 Nov 2008 08:39:53 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added: world:wolfsburg
Message-ID: <1226155193.636116.20759.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/08 08:39
User :
Edit Summary: created
====== Wolfsburg ======
Wolfsburg is isolated from th rest of [[bigworld]], as it is an island south of the mainland.
===== Buildings in Wolfsburg =====
* One Eyed Mike's Shop
FIXME More info please!
IP-Address : 24.56.192.179
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/world:wolfsburg
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sat Nov 8 08:45:21 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sat, 08 Nov 2008 08:45:21 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: world:wolfsburg
Message-ID: <1226155521.387767.20774.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/08 08:45
User :
Edit Summary:
@@ -1,10 +1,10 @@
====== Wolfsburg ======
- Wolfsburg is isolated from th rest of [[bigworld]], as it is an island south of the mainland.
+ Wolfsburg is isolated from th rest of bigworld, as it is an island south of the mainland.
===== Buildings in Wolfsburg =====
* One Eyed Mike's Shop
FIXME More info please!
IP-Address : 24.56.192.179
Old Revision: http://wiki.metalforge.net/doku.php/world:wolfsburg?rev=1226155189
New Revision: http://wiki.metalforge.net/doku.php/world:wolfsburg
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Mon Nov 10 10:40:24 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Mon, 10 Nov 2008 10:40:24 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
user:techolous:todo
Message-ID: <1226335224.789549.1890.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/10 10:40
User : ryo
Edit Summary: update :p
@@ -3,13 +3,14 @@
back to the [[:dev_todo|main todo]]
===== The List =====
+
==== Pending ====
* Take care of obsolete "color_fg" and "color_bg" fields in arches
* Monochrome bitmaps have not been used in crossfire for a long time
- * Change "color_fg" to "magicmap" where applicable
- * Remove "color_bg" from all arches
+ * Change "color_fg" to "magicmap" where applicable done :) --- //[[nicolas.weeger at laposte.net|Ryo Saeba]] 2008/11/10 10:39//
+ * Remove "color_bg" from all arches done too :)
* Figure out how the F*** you use the quest system
* looks like it may end up geting reworked
* Work on the [[:Beginer's Atlas]] page
* Finish mapping projects
@@ -21,5 +22,4 @@
* Help convert maps to use quest system
* After I know how to use the [[dev_todo:quest system]]
* Connected objects, triggered based on time of day
* Put something together for map entrances too?
-
IP-Address : 82.236.87.204
Old Revision: http://wiki.metalforge.net/doku.php/user:techolous:todo?rev=1150921590
New Revision: http://wiki.metalforge.net/doku.php/user:techolous:todo
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Mon Nov 10 10:39:25 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Mon, 10 Nov 2008 10:39:25 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: dev:objects
Message-ID: <1226335165.633010.1881.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/10 10:39
User : ryo
Edit Summary: remove obsolete field
@@ -1488,11 +1488,8 @@
When hit_map() hits the transport, we examine look for all players in the transport and damage them as appropriate. Note that items are not damaged.
As of this writing, transports are non living creatures, and thus can't be damaged.
-
-
-
====== Flags & specifications: (usage: flag value) ======
Note: the flags are case sensitive.
@@ -1569,10 +1566,8 @@
| blocksview <1> | set if O blocks line of sight. For multi-tile objects, this flag may be set uniquely for each part. |
| undead <1> | set if O is undead |
| scared <1> | internal (O is running away from players right now) |
| unaggressive <1> | internal (not used yet) FIXME isn't is used |
- | color_fg | foreground color of O. Remember to set face/anim first! |
- | color_bg | background -"- - "" - |
| reflect_missile <1> | set if O throws back missiles |
| reflect_spell <1> | set if O throws back spells (some) |
| no_magic <1> | set if O totally resists magic (*use with care*) FIXME is this true to any item? |
| tear_down <1> | set if O can be torn down (using animations and hp) |
@@ -1580,9 +1575,8 @@
| pass_thru <1> | set if O can be passed thru by objects |
| can_pass_thru <1> | set if O can pass thru objects |
| pick_up | which items monster will pick up (see pickup (above)) |
| is_buildable <1> | set if items can be built on top of this O |
-
====== Treasures and abilities ======
The treasures are kept in LIBDIR/treasures. Their format is:
IP-Address : 82.236.87.204
Old Revision: http://wiki.metalforge.net/doku.php/dev:objects?rev=1203017661
New Revision: http://wiki.metalforge.net/doku.php/dev:objects
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Thu Nov 13 20:10:34 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Thu, 13 Nov 2008 20:10:34 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: cfdialog
Message-ID: <1226628634.198628.21921.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/13 20:10
User :
Edit Summary: Minor formatting; Add note about case insensitivity change.
@@ -28,14 +28,16 @@
* **Postconditions** are the status changes to apply to the player's conditions after the rule has been triggered. Their format is similar to preconditions. A value of "*" means that the condition will not be touched.
* A **prefunction** is an optional callback function that will be called when a rule's preconditions are all matched, but before the rule is validated. The callback can do additional tests, and should return 1 to allow the rule to be selected, 0 to block the rule. The function arguments are the player and the actual rule being tested.
+
* A **postfunction** is an optional callback that is called when a rule has been applied, and after the message is said. It can do additional custom .processing. The function arguments are the player and the actual rule having been used.
Once you have defined your rules, you have to assemble them into a dialog. Each dialog involves somebody who triggers it, somebody who answers, and has a unique name so it cannot be confused with other dialogs.
Typically, the "one who triggers" will be the player, and the "one who answers" is an NPC the player was taking to. You are free to chose whatever you want for the dialog name, as long as it contains no space or special characters, and is not used by another dialog. You can then add the rules you created to the dialog. Rules are parsed in a given order, so you must add the most generic answer last.
+ Like the @match system, CFDialog converts both match strings and the things the player says to lowercase before checking for a match.
==== A simple example ====
I want to create a dialog for an old man. If I say "hello" or "hi" for the first time, grandpa will greet me. If I say it for the second time, he'll grumble (because he's like that, you know :)). I also need a generic answer if I say whatever else.
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/cfdialog?rev=1199249059
New Revision: http://wiki.metalforge.net/doku.php/cfdialog
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Thu Nov 13 21:13:33 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Thu, 13 Nov 2008 21:13:33 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: cfdialog
Message-ID: <1226632413.789652.22136.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/13 21:13
User :
Edit Summary: Document CFDialog derivative script npc_dialog.py and in-game examples.
@@ -1,15 +1,15 @@
====== CFDialog Helper Classes ======
- ==== What is this about ? ====
+ ===== What is this about ? =====
+
This is a small set of [[cfpython|Python]] utility classes, to help you creating
complex dialogs. It is made for those who do not want to
bother about complex programming, but just want to make a few
dialogs that are better than the @match system used in the
server.
-
- ==== How to use this. ====
+ ===== How to use this. =====
First, you need to import DialogRule and Dialog classes. Add the
following line at the beginning of your script:
@@ -37,9 +37,9 @@
Typically, the "one who triggers" will be the player, and the "one who answers" is an NPC the player was taking to. You are free to chose whatever you want for the dialog name, as long as it contains no space or special characters, and is not used by another dialog. You can then add the rules you created to the dialog. Rules are parsed in a given order, so you must add the most generic answer last.
Like the @match system, CFDialog converts both match strings and the things the player says to lowercase before checking for a match.
- ==== A simple example ====
+ ===== A simple example =====
I want to create a dialog for an old man. If I say "hello" or "hi" for the first time, grandpa will greet me. If I say it for the second time, he'll grumble (because he's like that, you know :)). I also need a generic answer if I say whatever else.
To illustrate the setup and use of this plugin, a previously inanimate NPC in Goths Tavern will be modified. The order of the following steps is not important, but they will take you through every step required to get an NPC that uses the plugin.
@@ -121,4 +121,82 @@
* The conversation state is stored in your player file. For example:
$ grep -ri test_grandpa var
var/crossfire/players/Player/Player.pl:dialog_test_grandpa_01 hello:1
+
+ ====== Derivative CFDialog Scripts ======
+
+ CFDialog Helper Classes provide basic functionality that can be used in scripts. Some CFDialog derivatives are:
+
+ =====NPC Dialog=====
+
+ This is a simple script that make use of CFDialog.py and receives parameters from a [[http://www.json.org/|JSON]] inside the event message. Alternatively, the JSON parameters, if >= 4096 characters, can be stored in a separate file. Use the 'name' script parameter to specify relative location to the dialog file.
+
+ ====Map Example====
+
+ An example of a map file entry is:
+
+ arch guildmaster
+ name Sigmund
+ msg
+
+ endmsg
+ x 11
+ y 7
+ resist_physical 100
+ resist_magic 100
+ weight 50000000
+ friendly 1
+ stand_still 1
+ arch event_say
+ name start/sigmund.msg
+ title Python
+ slaying /python/misc/npc_dialog.py
+ end
+ end
+
+ ====Dialog Example====
+
+ An example of a JSON dialog similar to the one described [[cfdialog#A simple example|above]] is:
+
+ {
+ "location" : "test_grandpa_01",
+ "rules": [
+ {
+ "match" : "hello|hi",
+ "pre" : [["hello","0"]],
+ "post" : [["hello","1"]],
+ "msg" : ["Hello, lad!","Hi, young fellow!","Howdy!"]
+ },
+ {
+ "match": "hello|hi",
+ "pre" :[["hello","1"]],
+ "post" :[["hello", "*"]],
+ "msg" : ["I've heard, you know, I'm not deaf *grmbl*"]
+ },
+ {
+ "match" : "*",
+ "pre" : [["hello","*"]],
+ "post" : [["hello", "*"]],
+ "msg" : ["What ?", "Huh ?", "What do you want ?"]
+ }
+ ]}
+
+ **match** is what CFDialog describes as a //keyword//, and corresponds with what the player/character says that the dialog will respond to.
+
+ **pre** is a list of CFDialog //preconditions// that identifies flags that must be set to a particular value in order to trigger a response if a match is detected.
+
+ **post** is a list of CFDialog //postconditions// that specify flags that are to be set if a response is triggered.
+
+ Above, the first rule is applied if the player/character says ''hello'' or ''hi'' and if the __//hello//__ flag is set to __//0//__ (default). When the rule is applied, the __//hello//__ flag is then set to __//1//__.
+
+ The double square braces ([[]]) around **pre** and **post** are required. **pre** and **post** are arrays of arrays. Each item in **pre** and **post** is an array of [variable,value].
+
+ **msg** defines one or more responses that will be given if the rule triggers. When more than one **msg** value is set up, the NPC randomly selects which one to say each time the rule is applied.
+
+ ====Related Resources====
+
+ * [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/misc/npc_dialog.py?view=log|npc_dialog.py]] in SVN.
+ * Some actual in-game dialogs supported by npc_dialog.py are:
+ - Mork and Gork mini-quest in Scorn
+ - Sigmund in Newbies House
+
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/cfdialog?rev=1226628630
New Revision: http://wiki.metalforge.net/doku.php/cfdialog
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Thu Nov 13 21:24:25 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Thu, 13 Nov 2008 21:24:25 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: cfdialog
Message-ID: <1226633065.648004.22158.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/13 21:24
User :
Edit Summary: Add link to CFDialog.py.
@@ -121,8 +121,12 @@
* The conversation state is stored in your player file. For example:
$ grep -ri test_grandpa var
var/crossfire/players/Player/Player.pl:dialog_test_grandpa_01 hello:1
+
+ =====Related Resources=====
+
+ * [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/CFDialog.py?view=log|CFDialog.py]] in SVN.
====== Derivative CFDialog Scripts ======
CFDialog Helper Classes provide basic functionality that can be used in scripts. Some CFDialog derivatives are:
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/cfdialog?rev=1226632409
New Revision: http://wiki.metalforge.net/doku.php/cfdialog
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sat Nov 15 03:22:54 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sat, 15 Nov 2008 03:22:54 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: cfdialog
Message-ID: <1226740974.829830.26544.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/15 03:22
User :
Edit Summary: Update to match current SVN revisions of CFDialog.py and npc_dialog.py.
@@ -7,43 +7,43 @@
bother about complex programming, but just want to make a few
dialogs that are better than the @match system used in the
server.
- ===== How to use this. =====
+ =====What is CFDialog?=====
- First, you need to import DialogRule and Dialog classes. Add the
- following line at the beginning of your script:
+ This is a small set of utility classes, to help you create complex dialogs. It is made for those who do not want to bother about complex programming, but just want to make a few dialogs that are better than the @match system used in the server.
- ''from CFDialog import DialogRule, Dialog''
+ =====How to use CFDialog=====
- Then, you can go to the dialogs themselves. A dialog is made of
- several rules. Each rule is made of keywords, preconditions,
- postconditions, answers and pre/postfunction.
+ First, create a script that imports the DialogRule and Dialog classes. Add the following line at the beginning of your script:
- * **Keywords** are what the rule will be an answer to. For example, if you want a rule to be triggered when the player will say "hi", then "hi" is the keyword to use. You can associate more than a keyword to a rule by concatenating them with the "|" character. Finally, "*" is a special keyword that means: "match everything". "*" is useful to provide generic answers.
+ from CFDialog import DialogRule, Dialog
- * **Answers** are what will be said when the rule is triggered. This is what the NPC replies to the player. Answers are stored in a list. When there is more than one answer in that list, one will be selected at random.
- * Insert newlines in an answer with **\n**.
+ Next, build the dialog by creating a sequence of several rules made up of keywords, answers, preconditions, and postconditions. Optionally, define prefunctions or postfunctions to enhance the capabilities of the rule.
- * **Preconditions** are flags that must match for the rule to be triggered. Each precondition has a name and a value. The default value of a precondition is "0". The flags are stored into each player, and will survive between gaming sessions. They are useful to set the point in a dialog reached by a player - you can see those as an "NPC memory". All conditions must have a name and a value. The ":" and ";" characters are forbidden. For a rule to be triggered, all the player's flags should match the preconditions. If you give "*" as the value for a precondition, it means that there is no need to match it. A precondition is a list in the form: [key, value]. All preconditions are stored in a list. Note that you can use any string you want for the condition values, provided it doesn't contain ";" or ":".
+ * **Keywords** are what the rule answers to. For example, if you want a rule to trigger when the player says ''hi'', then ''//hi//'' must appear in the keyword list. One or more keywords are specified in a string list in the form **["keyword1", "keyword2" ...]**. A ''*'' character is a special keyword that means: "match everything", and is useful to create rules that provide generic answers no matter what the player character says.
+ * **NOTE:** Like the @match system, CFDialog converts both keywords and the things the player says to lowercase before checking for a match, so it is never necessary to include multiple keywords that only differ in case.
- * **Postconditions** are the status changes to apply to the player's conditions after the rule has been triggered. Their format is similar to preconditions. A value of "*" means that the condition will not be touched.
+ * **Answers** are what the rule will respond, or say, to the player when it is triggered. This is what the NPC replies to the player. Answers are stored in a list of one or more strings in the form **["Answer1", "Answer2" ...]**. When there is more than one answer in that list, each time the rule is triggered, a single random reply will be selected from the list.
+ *NOTE: Answers may contain line breaks. To insert one, use "\n".
- * A **prefunction** is an optional callback function that will be called when a rule's preconditions are all matched, but before the rule is validated. The callback can do additional tests, and should return 1 to allow the rule to be selected, 0 to block the rule. The function arguments are the player and the actual rule being tested.
+ * **Preconditions** are flags that must match specific values in order for a rule to be triggered. These flags persist across gaming sessions and are useful for tracking the state of a conversation with an NPC. Because of this, it is possible for the same word to elicit different NPC responses depending on how flags have been set. If dialogs are set to use identical locations, the flags and preconditions can be used by other NPC dialogs so that other NPCs can detect that the player heard specific information from another NPC. The flags can also be used to help an individual NPC remember what he has said to the player in the past. Flag settings are stored in the player file, so they persist as long as the character exists in the game. Each rule contains a list of one or more preconditions, and each of the individual preconditions is itself a list of a flag name and one or more values in the following format: **[["flag1", "value1", "value2" ...], ["flag2", "value3"] ...]** where **...** indicates that the pattern may be repeated. The flag name is always the first item in a precondition list. ":" and ";" characters are forbidden in the flag names and values. For a rule to be triggered, all its preconditions must be satisfied by settings in the player file. To satisfy a precondition, one of the its values must match the identified flag setting in the player file. The default value of any precondition that has not been specifically set in the player file is "0". If one of the precondition values is set to "*", a match is not required.
- * A **postfunction** is an optional callback that is called when a rule has been applied, and after the message is said. It can do additional custom .processing. The function arguments are the player and the actual rule having been used.
+ * **Postconditions** are state changes to apply to the player file flags after the rule triggers. The postcondition is a nested list that has the same format as the precondition list except that each postcondition list only contains one value. This is because the other main difference is that whereas a precondition checks a player file to see if a flag has a certain value, the postcondition causes a value to be stored into the player file, and it does not make sense to store more than one value into a single flag. A value of "*" means that the player file flag will not be changed.
- Once you have defined your rules, you have to assemble them into a dialog. Each dialog involves somebody who triggers it, somebody who answers, and has a unique name so it cannot be confused with other dialogs.
+ * **Prefunctions** are an optional callback function that will be called when a rule's preconditions are all matched, but before the rule is validated. The callback can do additional tests, and should return 1 to allow the rule to be selected, or 0 to block the rule. The function arguments are the player and the actual rule being tested.
- Typically, the "one who triggers" will be the player, and the "one who answers" is an NPC the player was taking to. You are free to chose whatever you want for the dialog name, as long as it contains no space or special characters, and is not used by another dialog. You can then add the rules you created to the dialog. Rules are parsed in a given order, so you must add the most generic answer last.
+ * **Postfunctions** are an optional callback that is called when a rule has been applied, and after the message is said. It can do additional custom processing. The function arguments are the player and the actual rule having been used.
- Like the @match system, CFDialog converts both match strings and the things the player says to lowercase before checking for a match.
+ Once the rules are all defined, assemble them into a dialog. Each dialog involves somebody who triggers it, somebody who answers, and also a unique name so it cannot be confused with other dialogs.
+
+ Typically, the "one who triggers" will be the player, and the "one who answers" is an NPC the player was taking to. You are free to choose whatever you want for the dialog name, as long as it contains no whitespace or special characters, and as long as it is not used by another dialog. You can then add the rules you created to the dialog. Rules are parsed in a given order, so you must add the most generic answer last.
===== A simple example =====
- I want to create a dialog for an old man. If I say "hello" or "hi" for the first time, grandpa will greet me. If I say it for the second time, he'll grumble (because he's like that, you know :)). I also need a generic answer if I say whatever else.
+ If I want to create a dialog for an old man, I might want him to respond to "hello" or "hi" differently the first time the player meets the NPC, and differently for subsequent encounters. In this example, grandpa greets the player cordially the first time, but grumbles subequent times (because he's like that, you know :)). This example grandpa also has a generic answer for what ever else is said to him. In the example, the player is stored in 'player', and the old man in 'grandpa', and the player said is in 'message'.
- To illustrate the setup and use of this plugin, a previously inanimate NPC in Goths Tavern will be modified. The order of the following steps is not important, but they will take you through every step required to get an NPC that uses the plugin.
+ To illustrate the setup and make use of this plugin, a previously inanimate NPC in Goths Tavern will be modified. The order of the following steps is not important, but they will take you through every step required to get an NPC that uses the plugin.
* Edit the map file in scorn/taverns/goths as follows.
Index: goths
@@ -75,58 +75,66 @@
#
player=Crossfire.WhoIsActivator()
grandpa=Crossfire.WhoAmI()
message=Crossfire.WhatIsMessage()
+
# Dialog creation:
speech = Dialog(player, grandpa, "test_grandpa_01")
- #
+
# The first rule is the "hello" answer, so we place it at index 0 of the
- # rules list. The precondition is that we never said hello before.
- # The postcondition is to mark "hello" as "1", to remember we already
- # greeted grandpa.
+ # rules list. The precondition is that we never said hello before. The
+ # postcondition saves a value of "1" into a player file flag named "hello"
+ # so grandpa remembers he has already met this player before.
+
prer = [["hello","0"]]
postr = [["hello", "1"]]
rmsg = ["Hello, lad!","Hi, young fellow!","Howdy!"]
- speech.addRule(DialogRule("hello|hi", prer, rmsg, postr),0)
- #
- # The second rule is the answer to an hello if we already said it before.
- # Notice that we used "*" for the postcondition value, meaning that we
- # are leaving it as it is.
+ speech.addRule(DialogRule(["hello","hi"], prer, rmsg, postr),0)
+
+ # The second rule is the answer to a greeting if he as already met the player
+ # before. Notice that "*" is used for the postcondition value, meaning that
+ # the flag will remain set as it was prior to the rule triggering.
+
prer = [["hello","1"]]
postr = [["hello", "*"]]
rmsg = ["I've heard, you know, I'm not deaf *grmbl*"]
- speech.addRule(DialogRule("hello|hi", prer, rmsg, postr),1)
- #
- # And finally, the generic answer. This is the last rule of the list.
- # We don't need to match any condition, and we don't need to change them,
+ speech.addRule(DialogRule(["hello","hi"], prer, rmsg, postr),1)
+
+ # Finally, the generic answer is written. This is the last rule of the list.
+ # We don't need to match any condition, and don't need to change any flags,
# so we use "*" in both cases this time.
+
prer = [["hello","*"]]
postr = [["hello", "*"]]
rmsg = ["What ?", "Huh ?", "What do you want ?"]
- speech.addRule(DialogRule("*", prer, rmsg, postr),2)
- #
+ speech.addRule(DialogRule(["*"], prer, rmsg, postr),2)
+
# We only have to let the old man speak now:
speech.speak(message)
- * In this example, the player is stored in 'player', and the old man in 'grandpa'. What the player said is in 'message'.
+ * In this example, the player is stored in 'player', and the old man in 'grandpa'. What the player said is in 'message'.
- * Start the crossfire server, login, then enter Goths tavern and walk up to the man now named "grandpa" in the left-hand room. He is in the top left-hand corner of the room.
+ * Start the crossfire server, login, then enter Goths tavern and walk up to the man now named "grandpa" in the left-hand room. He is in the top left-hand corner of the room.
- * Say hello two times.
+ * Say hello two times.
Player says: hello
grandpa says: Hello, lad!
Player says: hello
grandpa says: I've heard, you know, I'm not deaf *grmbl*
- * The conversation state is stored in your player file. For example:
+ * The conversation state is stored in your player file. For example:
$ grep -ri test_grandpa var
var/crossfire/players/Player/Player.pl:dialog_test_grandpa_01 hello:1
+
+ =====A more complex example=====
+
+ A **/python/misc/npc_dialog.py** script has been written that uses CFDialog, but allows the dialog data to be written in a slightly different format. **/scorn/kar/gork.msg** is an example that uses multiple keywords and multiple precondition values. Whereas the above example has a linear and predicable conversation paths, note how a conversation with Gork can fork, merge, and loop back on itself. The example also illustrates how CFDialog can allow dialogs to affect how other NPCs react to a player. **/scorn/kar/mork.msg** is a completely different dialog, but it is part of a quest that requires the player to interact with both NPCs in a specific way before the quest prize can be obtained. With the @match system, once the player knew the key words, he could short-circuit the conversation the map designer intended to occur. CFDialog constrains the player to follow the proper conversation thread to qualify to receive the quest reward.
=====Related Resources=====
- * [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/CFDialog.py?view=log|CFDialog.py]] in SVN.
+ * [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/CFDialog.py?view=log|CFDialog.py]] in SVN.
====== Derivative CFDialog Scripts ======
CFDialog Helper Classes provide basic functionality that can be used in scripts. Some CFDialog derivatives are:
@@ -165,42 +173,46 @@
{
"location" : "test_grandpa_01",
"rules": [
{
- "match" : "hello|hi",
+ "match" : ["hello","hi"],
"pre" : [["hello","0"]],
"post" : [["hello","1"]],
"msg" : ["Hello, lad!","Hi, young fellow!","Howdy!"]
},
{
- "match": "hello|hi",
+ "match": ["hello","hi"],
"pre" :[["hello","1"]],
"post" :[["hello", "*"]],
"msg" : ["I've heard, you know, I'm not deaf *grmbl*"]
},
{
- "match" : "*",
+ "match" : ["*"],
"pre" : [["hello","*"]],
"post" : [["hello", "*"]],
"msg" : ["What ?", "Huh ?", "What do you want ?"]
}
]}
- **match** is what CFDialog describes as a //keyword//, and corresponds with what the player/character says that the dialog will respond to.
+ For detailed descriptions of the match, pre, post, and msg formats, see the above CFDialog.py documentation.
+
+ **match** is a list of keyword strings, and corresponds to what the player says that the dialog will respond to.
+
+ In the above example, the first rule is applied if the player/character says "hello" or "hi" and if the "hello" flag is set to "0" (default). When the rule is applied, the "hello" flag is then set to "1".
- **pre** is a list of CFDialog //preconditions// that identifies flags that must be set to a particular value in order to trigger a response if a match is detected.
+ **pre** is a list of preconditions that identifies flags that must be set to a particular value in order to trigger a response if a match is detected.
- **post** is a list of CFDialog //postconditions// that specify flags that are to be set if a response is triggered.
+ **post** is a list of postconditions that specify flags that are to be set if a response is triggered.
- Above, the first rule is applied if the player/character says ''hello'' or ''hi'' and if the __//hello//__ flag is set to __//0//__ (default). When the rule is applied, the __//hello//__ flag is then set to __//1//__.
+ All of the rule values are lists, and must be enclosed by square braces, but pre and post are lists of lists, so the double square braces ([[]]) are required.
- The double square braces ([[]]) around **pre** and **post** are required. **pre** and **post** are arrays of arrays. Each item in **pre** and **post** is an array of [variable,value].
+ **msg** defines one or more responses that will be given if the rule triggers. When more than one "msg" value is set up, the NPC randomly selects which one to say each time the rule is applied.
- **msg** defines one or more responses that will be given if the rule triggers. When more than one **msg** value is set up, the NPC randomly selects which one to say each time the rule is applied.
+ A relatively complex example of an npc_dialog.py dialog is given in the Gork treasure room quest. See **/scorn/kar/gork.msg** in particular as it demonstrates how multiple precondition flag values may be exploited to produce non-linear and variable-path conversations that are less likely to frustrate a player. Refer also to **/scorn/kar/mork.msg** to see how more than one dialog can reference the same dialog flags.
====Related Resources====
* [[http://crossfire.svn.sourceforge.net/viewvc/crossfire/maps/trunk/python/misc/npc_dialog.py?view=log|npc_dialog.py]] in SVN.
* Some actual in-game dialogs supported by npc_dialog.py are:
- Mork and Gork mini-quest in Scorn
- Sigmund in Newbies House
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/cfdialog?rev=1226633062
New Revision: http://wiki.metalforge.net/doku.php/cfdialog
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sun Nov 16 16:01:16 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sun, 16 Nov 2008 16:01:16 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
backstory_development
Message-ID: <1226872876.491913.6098.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/16 16:01
User : lalomartins
Edit Summary: Anthropology of Bigworld religions
@@ -192,4 +192,45 @@
Finished is the story :)
[from a story in IRC, dated 11/02/2008, 18:30 -0500 UTC]
+
+ =====Anthropology of Bigworld religions=====
+ Saving a discussion from IRC, 2008-11-17
+ * gros left the room (quit: Read error: 104 (Connection reset by peer)).
+ * lalo: I should rename one of my unfinished gods to ?peer?
+ * Ryo_: I would suggest, though, adding lore to existing gods before adding new gods, maybe :)
+ * lalo: nah
+ * lalo: the reason I started the whole ?new gods? thing years ago was that the pantheon feels awfully... incomplete to me
+ * lalo: I figured if that was fixed, then it would be less awkward to add lore
+ * lalo: I tried my hand at some religious lore too, at about the same time or a little later, but it didn't feel right... gros hated it :-P
+ * Ryo_: :p
+ * lalo: as I see it, Gaea, Devourers, Ruggilli, Sorig, Ixalovh and Valkyrie are from the old human pantheon. Gorokh and Valriel may also be originally worshipped by humans but from a different region. The others came from contact with the respective races and got incorporated into the ?modern? pantheon by sincretism, although I still believe nobody in the game-world sees Gorokh and Valriel as existing in the same pantheon as the others
+ * Rednaxela: Well, in some ways in the game-world, I think that Ruggilli/Ixalovh are in their own class just like Gorokh/Valriel, and similarly Gaea/Devourers are a bit set on their own. One could almost call Mostrai/Lythander/Gnarg a group of it's own as well as they're aligned to relatively specific races.
+ * gros [n=lauwenma at unaffiliated/gros] entered the room.
+ * lalo: Mostrai/Lythander/Gnarg are definitely different
+ * lalo: Rugilli/Ixalovh and Gaea/Devourers I can see as the kind of ?different? you would still find inside a pantheon
+ * lalo: Gaea/Devourers are ?special? more or less to the same extent that Poseidon and Hades were, or, say, Hel
+ * gros: From what I have heard:
+ * gros: Valriel was the Goddess of Justice in Khelens. It later incorporated elements of various pre-existing bigworld angelic cults.
+ * lalo: oh, that's a story I could stand by
+ * gros: Gorokh is probably an old deity dating from the ancient Haemdel civilization; incorporated in the imperial pantheon as a nemesis of Valriel, later associated with demonic cults of Bigworld, and mostly a synthesis of evilness in most of its forms.
+ * gros: Ruggilli, Sorig, Ixalovh are all coming from primitive elementalistic cults of the forces of nature. Probably druidic-like, maybe from the tribes that inhabited the Southern Khelens. Incorporated in the Pantheon as a cheap mean of ensuring population control, since they are not really "good" or "bad", but may be both, depending on their action.
+ * lalo: something, I'm not sure what but probably the fanatic guy mini-quest (used to be in scorn, I believe moved recently with much of mikee's stuff) got me the idea that many Valriel-ists believe Valriel to be the only true god
+ * gros: Mostrai/Lythander/Gnarg are obviously racial personifications of some of the major races. It is quite probable that those races have had larger pantheons as well, but the humans only borrowed the most widespread/known ones.
+ * lalo: or maybe Lythander is really plural in Elven language much like Devourers and the elves just don't bother to tell the lowly humans they're getting it all wrong :-P
+ * gros: Mostrai probably came from Dwarves of Fargo, though this is questionable; Gnarg takes his roots from the shamanic practices of the goblin tribes of Bigworld. Lythander seems to be a late synchretism of various primitive nature-related spirits worshipped by bigworld elves before the arrival of humans.
+ * ***Rednaxela thinks this should perhaps be recorded in the wiki articles on the gods or somewhere? :)
+ * gros: Gaia and Devourers are more difficult to trace. Gaia seems to be the result of a syncretism between imperial divinities of nature and fertility, the Mother of All of the Fendrakhis, and various Bigworld nature spirits. Its cult is widespread, yet subject to a lot of regional variants, so it is unclear where it exactly came from; the lack of a "center of faith" for Gaians is telling about a pluricultural origin.
+ * gros: Devourers are not well known. It reminds the old Songor beliefs of the ghosts haunting the fringes of our world, hiding in shadows, and making things and people become old.
+ * gros: This is consistent with the dwarven belief in "Red-Iron-Makers": spirits gnawing the life of iron and other metals, oxyding them.
+ * lalo: I have images of Devourers being a secret, fringe cult in Khelens
+ * gros: That's why a lot of dwarves carry gold with them - gold is the only effective defense against the Red-Iron Makers.
+ * gros: Devourers would also come from forbidden cults with mysteries in imperial Khelens:
+ * lalo: I also kind of imagine the modern Devourers cult is a re-creation, old but not as old as going back to Khelens
+ * gros: those required long initiation, secret rituals of passage, and involved sacrifices. They probably again relate to more ancient cults that saw nature as a savage, dangerous thing that's always asking for blood.
+ * lalo: maybe the old cult was finally extinguished, but some time later some kids found reference to it, and unable to figure out how it worked or the name of the individual gods/spirits/whatever the old cult worshipped, they started calling themselves ?worshippers of the Devourers?
+ * gros: The current Devourers cult is probably a syncretism between the old imperial cult, the local primitive views on the "cycle of death", and the fears and mysticism that surrounded Scorn during the early dragons wars.
+ * gros: Ragnor, sorry for the lateness of rely - that's definitely nice.
+ * gros: Traces of the older or less known cults can be found in various blessed weapons names, like Ilrya.
+ * lalo: there's the weird detail that followers of Devourers are actually undead themselves... maybe the current cult was started by undead as either a ploy to get followers, or a legitimate cultural rejection of the gods of the ?living?
+ * gros: My theory is that they consider death as part of the natural cycle of existence, and accept it so much that they become undead, in a way.
IP-Address : 116.76.40.169
Old Revision: http://wiki.metalforge.net/doku.php/backstory_development?rev=1211235832
New Revision: http://wiki.metalforge.net/doku.php/backstory_development
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Tue Nov 18 23:58:44 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Tue, 18 Nov 2008 23:58:44 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
crossfire_traffic
Message-ID: <1227074324.303278.20721.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/18 23:58
User : leaf
Edit Summary: Update traffic summary with Trunk related changes
@@ -5,17 +5,36 @@
===== Changes to be merged =====
Please put most recent on bottom for month.
Unless specified otherwise, changes are in both trunk and branch.
+
+ ==== November 2008 ====
+ * (trunk) New lake graphics
+ * (trunk) Increase chance and amount of silver coins dropped by lower level monsters such as orcs, goblins, gnolls, ogres so that low level players have easier access to "cash"
+ * (trunk) Payment altars ("200 gp for a day pass) and conversion tables ("10 gp for a pile of salt") now accept any coin for payment (and will make change, if/when necessary)
+ * (trunk) Improved dialog with NPC's Mork and Gork
+
+ ==== October 2008 ====
+ * (trunk) All maps had their map level difficulty adjusted to something slightly more realistic. This should result in better treasure & harder traps in many maps
+ * (trunk) Nearly all maps now have unique and updated names (titles)
+ * (trunk) Bug fixes with some maps in regards to exit/entrance alignment
+ * (trunk) Shop headers added to store maps that didn't have them before
+ * (trunk) Numerous cosmetic updates (wall & fence updates, missing floor tiles added) on numerous maps
+ * (trunk) Resistances and attacktypes for multiple monsters (Mudman, Chaos Lair, Snake Pit, Valley of the Three Sisters) reverted back to their intended setting and values
+
+ ==== September 2008 ====
+ * (trunk) Elemental Houses in Darcap (darcap/darcap/airhouse, darcap/darcap/earthhouse, darcap/darcap/firehouse, darcap/darcap/waterhouse) were redesigned
+ * (trunk) Numerous cosmetic updates (wall & fence updates, missing floor tiles added) on numerous maps
+ * (trunk) Resistances and attacktypes for multiple monsters (Mudman, Chaos Lair, Snake Pit, Valley of the Three Sisters) reverted back to their intended setting and values
==== August 2008 ====
* (trunk) new maps called Fun Zone added to Darcap Circus
* (trunk) Darcap Circus now part of the world map instead of a "mini-map"
* (trunk) ship routes updated in Scorn and Navar - ships only travel to the closest city now
* bugfix: nine ring sword can now appear in shops
* snapshot release of the Windows GTK Client based on trunk code base
* (trunk) updated and modified maps in the Pygmy Forest
- * (trunk) new maps, Saramok Quest
+ * (trunk) new maps, Saromok Quest
==== July 2008 ====
* bugfix: alchemy experience should now be tracked correctly
* bugfix: party passwords can now be 8 or more characters long
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic?rev=1219885647
New Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:10:48 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:10:48 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
crossfire_traffic
Message-ID: <1227075048.998070.21792.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:10
User : leaf
Edit Summary: Make links to trunk and branch definition pages
@@ -4,9 +4,9 @@
===== Changes to be merged =====
Please put most recent on bottom for month.
- Unless specified otherwise, changes are in both trunk and branch.
+ Unless specified otherwise, changes are in both [[trunk]] and [[branch]].
==== November 2008 ====
* (trunk) New lake graphics
* (trunk) Increase chance and amount of silver coins dropped by lower level monsters such as orcs, goblins, gnolls, ogres so that low level players have easier access to "cash"
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic?rev=1227074974
New Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:09:37 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:09:37 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
crossfire_traffic
Message-ID: <1227074977.904803.21783.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:09
User : leaf
Edit Summary: Update traffic summary with Branch related changes
@@ -9,10 +9,15 @@
==== November 2008 ====
* (trunk) New lake graphics
* (trunk) Increase chance and amount of silver coins dropped by lower level monsters such as orcs, goblins, gnolls, ogres so that low level players have easier access to "cash"
- * (trunk) Payment altars ("200 gp for a day pass) and conversion tables ("10 gp for a pile of salt") now accept any coin for payment (and will make change, if/when necessary)
+ * Payment altars ("200 gp for a day pass) and conversion tables ("10 gp for a pile of salt") now accept any coin for payment (and will make change, if/when necessary)
+ * (branch) All maps had their map level difficulty adjusted to something slightly more realistic. This should result in better treasure & harder traps in many maps
+ * (branch) Nearly all maps now have unique and updated names (titles)
+ * (branch) Bug fixes with some maps in regards to exit/entrance alignment
+ * (branch) Shop headers added to store maps that didn't have them before
* (trunk) Improved dialog with NPC's Mork and Gork
+ * (branch) Numerous cosmetic updates (wall & fence updates, missing floor tiles added) on numerous maps
==== October 2008 ====
* (trunk) All maps had their map level difficulty adjusted to something slightly more realistic. This should result in better treasure & harder traps in many maps
* (trunk) Nearly all maps now have unique and updated names (titles)
@@ -30,8 +35,9 @@
* (trunk) new maps called Fun Zone added to Darcap Circus
* (trunk) Darcap Circus now part of the world map instead of a "mini-map"
* (trunk) ship routes updated in Scorn and Navar - ships only travel to the closest city now
* bugfix: nine ring sword can now appear in shops
+ * bugfix: can no longer insert a container in a container resulting in 0 weight
* snapshot release of the Windows GTK Client based on trunk code base
* (trunk) updated and modified maps in the Pygmy Forest
* (trunk) new maps, Saromok Quest
@@ -41,8 +47,12 @@
* cosmetic changes - missing floor tiles added in places that they were missing
* bugfix: players can once again build talking books, listening books and signs
* (trunk) new terrain features for the Scorn Arena
* (trunk) now possible to get more then just fingers as trophies for arena battles
+ * Keywords used for NPC dialog is now case insensitive
+ * Scorn Armour Shop can now make different colored Dragon Mail Armour (depending on the color of scales used)
+ * New content for Resir's House in Scorn
+ * New map set - Pygmy Forest
==== June 2008 ====
* cosmetic changes - missing floor tiles added in places that they were missing
* bargaining skill now works in many of the pupland maps
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic?rev=1227074322
New Revision: http://wiki.metalforge.net/doku.php/crossfire_traffic
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:20:17 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:20:17 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added: stable
Message-ID: <1227075617.953998.21815.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:20
User : leaf
Edit Summary: Created new page for Stable
====== Stable ======
Many times you will see or read references to "stable" - what does this mean?
Stable is the same as [[branch]] and is linked to the same Subversion (svn) directories as arch|maps|server|client /branches/1.x/
At some point, stable could have it's own release cycle. At that time, this page would be updated to reflect that.
IP-Address : 216.243.156.5
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/stable
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:21:13 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:21:13 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added: latest
Message-ID: <1227075673.382118.21818.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:21
User : leaf
Edit Summary: Created new page for Latest
====== Latest ======
Many times you will see or read references to "latest" - what does this mean?
Latest is the same as [[trunk]] and is linked to the same Subversion (svn) directories as arch|maps|server|client /trunk/
At some point, latest could have it's own release cycle. At that time, this page would be updated to reflect that.
IP-Address : 216.243.156.5
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/latest
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:27:30 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:27:30 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added: tags
Message-ID: <1227076050.941876.21827.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:27
User : leaf
Edit Summary: Created new page for Tags
====== Tags ======
Many times you will see or read references to "Tags" - what does this mean?
Tags is an official snapshot release of the archetypes, client, maps and server based on branches/1.x (aka stable)
Tags also have a release version, such as v1.11.0, and are made approximately once a calendar year. This is the code base that many of the Linux packages (.rpm, .deb, et al.) use in their release cycle.
See also [[trunk]], [[branch]], [[latest]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/tags
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:29:10 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:29:10 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: tags
Message-ID: <1227076150.140928.21830.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:29
User : leaf
Edit Summary: Inter-wiki linking
@@ -5,5 +5,5 @@
Tags is an official snapshot release of the archetypes, client, maps and server based on branches/1.x (aka stable)
Tags also have a release version, such as v1.11.0, and are made approximately once a calendar year. This is the code base that many of the Linux packages (.rpm, .deb, et al.) use in their release cycle.
- See also [[trunk]], [[branch]], [[latest]] and [[stable]]
+ See also [[trunk]], [[branch]], [[latest]], [[tags]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/tags?rev=1227076049
New Revision: http://wiki.metalforge.net/doku.php/tags
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:30:31 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:30:31 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: latest
Message-ID: <1227076231.056735.21845.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:30
User : leaf
Edit Summary: Inter-wiki linking
@@ -4,4 +4,6 @@
Latest is the same as [[trunk]] and is linked to the same Subversion (svn) directories as arch|maps|server|client /trunk/
At some point, latest could have it's own release cycle. At that time, this page would be updated to reflect that.
+
+ See also [[trunk]], [[branch]], [[latest]], [[tags]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/latest?rev=1227075671
New Revision: http://wiki.metalforge.net/doku.php/latest
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:30:09 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:30:09 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: trunk
Message-ID: <1227076209.671193.21842.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:30
User : leaf
Edit Summary: Inter-wiki linking
@@ -11,5 +11,5 @@
One should also be aware that Trunk is not as well tested (to name a few) for stability, game balance, bug fixes and compiling on non-Linux platforms.
Use trunk with caution unless you intend to take part in testing, bug reporting, development, etc.
- See also, [[Branch]]
+ See also [[trunk]], [[branch]], [[latest]], [[tags]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/trunk?rev=1218573241
New Revision: http://wiki.metalforge.net/doku.php/trunk
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:29:35 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:29:35 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: branch
Message-ID: <1227076175.129974.21833.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:29
User : leaf
Edit Summary: Inter-wiki linking
@@ -13,6 +13,6 @@
One should also be aware that Branch has been more tested to run and compile on other platforms - but there may still be challenges and difficulties with your compile. Development primarily takes place with and under Linux.
Use branch if you are interested in the "more stable" release of Crossfire.
- See also, [[Trunk]]
+ See also [[trunk]], [[branch]], [[latest]], [[tags]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/branch?rev=1218573219
New Revision: http://wiki.metalforge.net/doku.php/branch
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 00:31:13 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 00:31:13 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: stable
Message-ID: <1227076273.650087.21848.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 00:31
User : leaf
Edit Summary: Inter-wiki linking
@@ -4,4 +4,6 @@
Stable is the same as [[branch]] and is linked to the same Subversion (svn) directories as arch|maps|server|client /branches/1.x/
At some point, stable could have it's own release cycle. At that time, this page would be updated to reflect that.
+
+ See also [[trunk]], [[branch]], [[latest]], [[tags]] and [[stable]]
IP-Address : 216.243.156.5
Old Revision: http://wiki.metalforge.net/doku.php/stable?rev=1227075615
New Revision: http://wiki.metalforge.net/doku.php/stable
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 19 17:50:55 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 19 Nov 2008 17:50:55 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: spells:summoning
Message-ID: <1227138655.457879.24942.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/19 17:50
User : leaf
Edit Summary: More information for create missile spell
@@ -22,9 +22,9 @@
=== Create Missile ===
^ Level: | 1 ^ SP: | 5 ^ Path: | Creation |
^ Attack Types: | N/A |^ Sources: | books ||
- ^ Notes: | Creates arrows which are fired at a target. |||||
+ ^ Notes: | Creates arrows which can be used with a bow. To create crossbow bolts, wield a crossbow when casting the spell. At high levels in summoning, it is possible to create arrows (or bolts) with a specific magical bonus by using the following syntax: '''cast create missile N'' where N is +0, +1, +2, +3 or +4. |||||
=== Summon Fog ===
^ Level: | 2 ^ SP: | 5 ^ Path: | Creation |
^ Attack Types: | N/A |^ Sources: | books, rods, wands ||
IP-Address : 65.193.16.100
Old Revision: http://wiki.metalforge.net/doku.php/spells:summoning?rev=1210376275
New Revision: http://wiki.metalforge.net/doku.php/spells:summoning
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 10:13:31 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 10:13:31 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227716012.006492.31240.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 10:13
User :
Edit Summary: Add a WIP Client Pre-Release Guide useful for making test releases.
@@ -21,5 +21,194 @@
====make====
* [[http://www.gnu.org/software/automake/manual/autoconf/Portable-Make.html#Portable-Make|Automake Manual Chapter]]
====Portable C/C++====
* [[http://www.gnu.org/software/automake/manual/autoconf/Portable-C-and-C_002b_002b.html#Portable-C-and-C_002b_002b|Automake Manual Chapter]]
+
+ ======Pre-Release Guide (WIP)======
+
+ =====Pre-Release Preparation=====
+
+ The directions use SVN trunk as the example release. The instructions presume you start in the top level SVN directory (the one that contains the arch, client, maps, server) for each phase (arch, client, maps, server)
+
+ ====Set Up a Pre-Release Workspace====
+
+ Change the following directory to suit:
+
+ export RELDIR=/home/data/svn/crossfire/prerelease
+ mkdir -p ${RELDIR}
+ cd ${RELDIR}
+ mkdir -p RPM-SRC RPM-TOP/BUILDmkdir RPMS
+
+ Place these scripts in the pre-release workspace.
+
+ ===Scripts to Support Pre-Releasing===
+
+ This example will presume the use of //trunk// sources. Feel free to deviate from these instructions to reduce the size of the workspace and the amount of data that must be downloaded.
+
+ Create a shell script called **svn-co.sh** that contains the following:
+
+ ==svn-co.sh==
+
+ #!/bin/bash
+ #
+ for dir in arch client maps server sounds
+ do
+ svn co https://crossfire.svn.sourceforge.net/svnroot/crossfire/${dir}/trunk trunk/${dir}
+ done
+ echo
+
+ ==svn-up.sh==
+
+ Create another shell script called **svn-up.sh** as follows:
+
+ #!/bin/bash
+ #
+ for co in trunk
+ do
+ for dir in arch client maps server sounds
+ do
+ WORKING=${co}/${dir}
+ if [ -d ${CWD}/${WORKING} ]
+ then
+ echo; echo ${WORKING}; echo
+ cd ${CWD}/${WORKING}
+ svn update
+ cd ${CWD}
+ done
+ done
+ echo
+
+ ==config.sh==
+
+ Create yet another shell script called **config.sh** as follows:
+
+ #!/bin/bash
+ #
+ export CFLAGS="-ggdb -g -O0"
+ PWD=`pwd`
+ if [ "${PWD/client/}" != "${PWD}" ]
+ then
+ autoreconf
+ ./configure --prefix=${RELDIR} --enable-cfgtk2
+ else
+ bash autogen.sh --prefix=${RELDIR} ${*}
+ fi
+ echo
+
+ ====SVN Checkout====
+
+ * Checkout a copy of the relevent portions of the repository. The rest of this procedure assumes use of the above documented svn-co.sh script, and assumes that trunk is used to build pre-releases in preparation for a real release.
+
+ bash svn-co.sh
+
+ * Set up an environment variable that contains the revision information for the SVN Checkout.
+
+ RELREV=`svnversion arch`
+
+ =====Pre-Release Procedure=====
+
+ ====Arch & Maps====
+
+ The process for both the arch and maps directory is the same - the only difference is the name of the files/paths.
+
+ * Make an archive of arch directory. Note we want the arch directory called 'arch' in the archive, hence the symlink. Gnu tar is used:
+
+ cd ${RELDIR}/arch
+ ln -s trunk arch
+ gtar -chvz --exclude=.svn \
+ -f ${RELDIR}/crossfire-2.0.0-r${RELREV}.arch.tar.gz arch
+
+ * Make an archive of the maps directory. Again, note the naming of paths in the archive is achieved with a symlink:
+
+ cd ${RELDIR}/maps
+ ln -s trunk maps
+ gtar -chvz --exclude=.svn \
+ -f ${RELDIR}/crossfire-2.0.0-r${RELREV}.maps.tar.gz maps
+
+ * Make a bzip2 copy of the maps because it saves considerable space. This may take a little while depending on speed of your system.
+
+ cd ${RELDIR}
+ gunzip -c crossfire-2.0.0-r${RELREV}.maps.tar.gz \
+ | bzip2 -c9 > crossfire-2.0.0-r${RELREV}.maps.tar.bz2
+
+ * Pre-release of arch and maps is now complete.
+
+ ====Client====
+
+ * Update various files with the new version number. Change the "dev" portion of the 2.0.dev settings to match the actual revision of the checkout.
+
+ cd ${RELDIR}/client/trunk
+ ex +/AC_INIT.*2.0.dev +s at dev@r${RELREV}@ +:wq configure.ac
+ ex +/%define.*2.0.dev +s at dev@r${RELREV}@ \
+ +/%define.basedir +s@/export/home/crossfire@${RELDIR}@ \
+ +/%define._source +s@/Crossfire@@ +:wq crossfire-client.spec
+
+ * Reconfigure the client.
+
+ bash ${RELDIR}/config.sh
+
+ * Verify the ./configure report indicates ''yes'' for all Build and Scripting options before proceeding to the next step.
+
+ * Create a crossfire-client-2.0.r${RELREV}.tar.gz.
+
+ make dist
+ mv crossfire-client-2.0.r${RELREV}* ${RELDIR}
+
+ * Unpack the archive, and verify it works:
+
+ cd ${RELDIR}
+ gtar xvfz crossfire-client-2.0.r${RELREV}.tar.gz
+ cd crossfire-client-2.0.r${RELREV}
+ ./configure --prefix=${RELDIR} --enable-cfgtk2
+ make -s
+
+ * Make sure there are no errors.
+
+ make install
+
+ * run cfclient, gcfclient, gcfclient2 and make sure they are not braindead - being able to connect to a server and log in is usually what I do
+
+ cd ${RELDIR}/bin
+ ./cfclient
+ ./gcfclient
+ ./gcfclient2
+ cd ${RELDIR}
+
+ * Make sounds archive
+
+ cd ${RELDIR}/sounds
+ ln -s trunk sounds
+ gtar -chvz --exclude=.svn \
+ -f ../crossfire-client-sounds-2.0.r${RELREV}.tar.gz sounds
+
+ * Make an image archive for the client. Needed for RPM building. Need a server tree with a properly linked arch tree.
+
+ cd ../server
+ ln -s trunk server
+ cd server
+ bash ../../config.sh
+ make
+ cd lib
+ ln -s ../../../arch/trunk arch
+ adm/collect_images.pl -archive
+ cd ..
+ mv crossfire-images.tar ../../crossfire-client-images-2.0.r${RELREV}.tar
+ gzip -v9 crossfire-client-images-2.0.r${RELREV}.tar
+
+ ===Client RPM Files===
+
+ * The client archives above must be built prior to creating RPMs.
+ * Make crossfire-client.spec is up to date. Not that it is likely some of the paths near the top of the file may need to be changed depending on your filesystem layout.
+
+ cd ${RELDIR}/client/trunk
+ ex +/%define.*2.0.dev +s at dev@r${RELREV}@ \
+ +/%define.basedir +s@/export/home/crossfire@${RELDIR}@ \
+ +/%define._source +s@/Crossfire@@ +:wq crossfire-client.spec
+
+ * Build the RPMs:
+
+ cd ${RELDIR}
+ rpmbuild -ba client/trunk/crossfire-client.spec
+
+ * If there are errors, rpmbuild will tell you.
+ * RPMs will be put in _rpmdir/
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1201646417
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 10:16:30 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 10:16:30 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227716190.267424.31249.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 10:16
User :
Edit Summary: Fix client names in WIP Pre-Release Guide.
@@ -167,11 +167,11 @@
* run cfclient, gcfclient, gcfclient2 and make sure they are not braindead - being able to connect to a server and log in is usually what I do
cd ${RELDIR}/bin
- ./cfclient
- ./gcfclient
- ./gcfclient2
+ ./crossfire-client-x11
+ ./crossfire-client-gtk
+ ./crossfire-client-gtk2
cd ${RELDIR}
* Make sounds archive
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1227716008
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 10:18:03 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 10:18:03 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227716283.820126.31255.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 10:18
User :
Edit Summary: More WIP Client Pre-Release client testing fixes.
@@ -164,9 +164,9 @@
* Make sure there are no errors.
make install
- * run cfclient, gcfclient, gcfclient2 and make sure they are not braindead - being able to connect to a server and log in is usually what I do
+ * Run each of the clients and verify they are not brain dead - able to connect to a server and log in.
cd ${RELDIR}/bin
./crossfire-client-x11
./crossfire-client-gtk
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1227716188
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 10:30:13 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 10:30:13 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227717013.936167.31276.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 10:30
User :
Edit Summary: Fix up the crossfire-client.spec edits to work with current SVN.
@@ -199,11 +199,13 @@
* The client archives above must be built prior to creating RPMs.
* Make crossfire-client.spec is up to date. Not that it is likely some of the paths near the top of the file may need to be changed depending on your filesystem layout.
cd ${RELDIR}/client/trunk
- ex +/%define.*2.0.dev +s at dev@r${RELREV}@ \
- +/%define.basedir +s@/export/home/crossfire@${RELDIR}@ \
- +/%define._source +s@/Crossfire@@ +:wq crossfire-client.spec
+ ex +/%define.*2.0.dev +s at dev@r${RELREV}@ +:wq crossfire-client.spec
+ ex +/%define._sourcedir +s@/export/home/crossfire/Crossfire@${RELDIR}@ \
+ +/%define._srcrpmdir +s@/export/home/crossfire@${RELDIR}@ \
+ +/%define._rpmdir +s@/export/home/crossfire@${RELDIR}@ \
+ +/%define._topdir +s@/export/home/crossfire@${RELDIR}@ +:wq crossfire-client.spec
* Build the RPMs:
cd ${RELDIR}
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1227716279
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 14:46:40 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 14:46:40 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227732400.740456.32258.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 14:46
User :
Edit Summary: Minor fixes/updates to scripts.
@@ -47,13 +47,20 @@
Create a shell script called **svn-co.sh** that contains the following:
==svn-co.sh==
- #!/bin/bash
- #
- for dir in arch client maps server sounds
+ CMD=""
+ CWD=$(pwd)
+ URL="https://crossfire.svn.sourceforge.net/svnroot/crossfire"
+ for file in arch client maps server sounds
do
- svn co https://crossfire.svn.sourceforge.net/svnroot/crossfire/${dir}/trunk trunk/${dir}
+ DIR="${file}/trunk/"
+ if [ ! -d "${DIR}" ]
+ then
+ echo -e "\n${DIR}\n"
+ CMD="svn co ${*} ${URL}/${DIR} ${DIR}"
+ ${CMD}
+ fi
done
echo
==svn-up.sh==
@@ -61,19 +68,21 @@
Create another shell script called **svn-up.sh** as follows:
#!/bin/bash
#
- for co in trunk
+ CWD=$(pwd)
+ for co in arch client maps server sounds
do
- for dir in arch client maps server sounds
+ for dir in trunk
do
WORKING=${co}/${dir}
if [ -d ${CWD}/${WORKING} ]
then
echo; echo ${WORKING}; echo
cd ${CWD}/${WORKING}
svn update
cd ${CWD}
+ fi
done
done
echo
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1227717008
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Wed Nov 26 16:04:45 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Wed, 26 Nov 2008 16:04:45 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien
Message-ID: <1227737085.849938.997.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/26 16:04
User :
Edit Summary: Fix config.sh... autoreconf requires some other commands first.
@@ -95,12 +95,15 @@
export CFLAGS="-ggdb -g -O0"
PWD=`pwd`
if [ "${PWD/client/}" != "${PWD}" ]
then
+ aclocal -I macros --install
+ autoheader
+ automake -a -c
autoreconf
- ./configure --prefix=${RELDIR} --enable-cfgtk2
+ ./configure --prefix=/home/data/svn/crossfire/prerelease --enable-cfgtk2
else
- bash autogen.sh --prefix=${RELDIR} ${*}
+ bash autogen.sh --prefix=/home/data/svn/crossfire/prerelease ${*}
fi
echo
====SVN Checkout====
IP-Address : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1227732398
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sat Nov 29 05:34:28 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sat, 29 Nov 2008 05:34:28 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page added: dev:server_design
Message-ID: <1227958468.230320.13373.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/29 05:34
User : ryo
Edit Summary: basic items
====== Server redesign goals ======
===== Player-wise =====
* fun game!
* stable
* protocol compatible with clients
* multilanguage
===== Content-wise =====
* compatible with Crossfire's current content (maps, archetypes, ...), though some breakage is allowed if needed
* dynamic archetype recollection - no need to restart the server
* easy to extend (plugins, scripts), keeping compatibility with current CF's system
* soft-coded rules - put the most things in configuration or easy to isolate/swap modules
===== Technical-wise =====
* crossplatform
* unit tests
* avoid lock ups (massive spells and such)
* documentation (design stuff, things like 'how is a class prevented to use weapons: through the use of a force' etc.)
* modular code, to easily expand/change stuff
* build system that doesn't require a lot of manual tweaking
IP-Address : 82.236.87.204
Old Revision: none
New Revision: http://wiki.metalforge.net/doku.php/dev:server_design
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
From no-reply_wiki at metalforge.org Sat Nov 29 05:35:53 2008
From: no-reply_wiki at metalforge.org (no-reply_wiki at metalforge.org)
Date: Sat, 29 Nov 2008 05:35:53 -0600
Subject: [Crossfire-wiki] [Crossfire DokuWiki] page changed:
dev:server_design
Message-ID: <1227958553.836599.13382.nullmailer@wiki.metalforge.net>
A page in your DokuWiki was added or changed. Here are the details:
Date : 2008/11/29 05:35
User : ryo
Edit Summary: addition
@@ -1,5 +1,7 @@
====== Server redesign goals ======
+
+ Put down your goals here, till let's say the 15th of december :)
===== Player-wise =====
* fun game!
* stable
@@ -19,4 +21,6 @@
* documentation (design stuff, things like 'how is a class prevented to use weapons: through the use of a force' etc.)
* modular code, to easily expand/change stuff
* build system that doesn't require a lot of manual tweaking
+ ====== Design ======
+ This will be written after the 15th of december, when we'll have goals decided :)
IP-Address : 82.236.87.204
Old Revision: http://wiki.metalforge.net/doku.php/dev:server_design?rev=1227958465
New Revision: http://wiki.metalforge.net/doku.php/dev:server_design
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/