Crossfire Server, Trunk  1.75.0
banksay.py
Go to the documentation of this file.
1 """
2 Created by: Joris Bontje <jbontje@suespammers.org>
3 
4 This module implements banking in Crossfire. It provides the 'say' event for
5 bank tellers.
6 """
7 
8 import random
9 
10 import Crossfire
11 import CFBank
12 import CFItemBroker
13 
14 activator = Crossfire.WhoIsActivator()
15 whoami = Crossfire.WhoAmI()
16 x = activator.X
17 y = activator.Y
18 
19 # Associate coin names with their corresponding values in silver.
20 CoinTypes = {
21  'SILVER': 1,
22  'GOLD': 10,
23  'PLATINUM': 50,
24  'JADE': 5000,
25  'AMBERIUM': 500000,
26  'IMPERIAL NOTE': 10000,
27  '10 IMPERIAL NOTE': 100000,
28  '100 IMPERIAL NOTE': 1000000,
29 }
30 
31 # Associate coin names with their corresponding archetypes.
32 ArchType = {
33  'SILVER': 'silvercoin',
34  'GOLD': 'goldcoin',
35  'PLATINUM': 'platinacoin',
36  'JADE': 'jadecoin',
37  'AMBERIUM': 'ambercoin',
38  'IMPERIAL NOTE': 'imperial',
39  '10 IMPERIAL NOTE': 'imperial10',
40  '100 IMPERIAL NOTE': 'imperial100',
41 }
42 
43 # Define several 'thank-you' messages which are chosen at random.
44 thanks_message = [
45  'Thank you for banking the Imperial Way.',
46  'Thank you for banking the Imperial Way.',
47  'Thank you, please come again.',
48  'Thank you, please come again.',
49  'Thank you for your patronage.',
50  'Thank you for your patronage.',
51  'Thank you, have a nice day.',
52  'Thank you, have a nice day.',
53  'Thank you. "Service" is our middle name.',
54  'Thank you. "Service" is our middle name.',
55  'Thank you. Hows about a big slobbery kiss?',
56 ]
57 
59  """Piece together several arguments to form a coin name."""
60  coinName = str.join(" ", argv)
61  # Remove the trailing 's' from the coin name.
62  if coinName[-1] == 's':
63  coinName = coinName[:-1]
64  return coinName
65 
66 def getExchangeRate(coinName):
67  """Return the exchange rate for the given type of coin."""
68  if coinName.upper() in CoinTypes:
69  return CoinTypes[coinName.upper()]
70  else:
71  return None
72 
73 def do_deposit(player, amount):
74  """Deposit the given amount for the player."""
75  with CFBank.open() as bank:
76  bank.deposit(player.Name, amount)
77  whoami.Say("%s credited to your account." \
78  % Crossfire.CostStringFromValue(amount))
79 
80 def cmd_help():
81  """Print a help message for the player."""
82  whoami.Say("The Bank of Skud can help you keep your money safe. In addition, you will be able to access your money from any bank in the world! What would you like to do?")
83 
84  Crossfire.AddReply("coins", "I'd like to know more about existing coins.")
85  Crossfire.AddReply("balance", "I want to check my balance.")
86  Crossfire.AddReply("deposit", "I'd like to deposit some money.")
87  Crossfire.AddReply("withdraw", "I'd like to withdraw some money.")
88  Crossfire.AddReply("convert", "I'd like to compute money conversions.")
89 
90 def cmd_balance(argv):
91  """Find out how much money the player has in his/her account."""
92  balance = 0
93  with CFBank.open() as bank:
94  balance = bank.getbalance(activator.Name)
95  if len(argv) >= 2:
96  # Give balance using the desired coin type.
97  coinName = getCoinNameFromArgs(argv[1:])
98  exchange_rate = getExchangeRate(coinName)
99  if exchange_rate is None:
100  whoami.Say("Hmm... I've never seen that kind of money.")
101  return
102  if balance != 0:
103  balance /= exchange_rate * 1.0
104  whoami.Say("You have %.3f %s in the bank." % (balance, coinName))
105  else:
106  whoami.Say("Sorry, you have no balance.")
107  else:
108  whoami.Say("You have %s in the bank." % \
109  Crossfire.CostStringFromValue(balance))
110 
111 def cmd_deposit(text):
112  """Deposit a certain amount of money."""
113  if len(text) >= 3:
114  coinName = getCoinNameFromArgs(text[2:])
115  exchange_rate = getExchangeRate(coinName)
116  amount = int(text[1])
117  if exchange_rate is None:
118  whoami.Say("Hmm... I've never seen that kind of money.")
119  return
120  if amount < 0:
121  whoami.Say("Regulations prohibit negative deposits.")
122  return
123 
124  # Make sure the player has enough cash on hand.
125  actualAmount = amount * exchange_rate
126  if activator.PayAmount(actualAmount):
127  do_deposit(activator, actualAmount)
128  else:
129  whoami.Say("But you don't have that much in your inventory!")
130  else:
131  whoami.Say("What would you like to deposit?")
132  Crossfire.AddReply("deposit <amount> <coin type>", "Some money.")
133 
134 def cmd_withdraw(argv):
135  """Withdraw money from the player's account."""
136  if len(argv) >= 3:
137  coinName = getCoinNameFromArgs(argv[2:])
138  exchange_rate = getExchangeRate(coinName)
139  amount = int(argv[1])
140  if exchange_rate is None:
141  whoami.Say("Hmm... I've never seen that kind of money.")
142  return
143  if amount <= 0:
144  whoami.Say("Sorry, you can't withdraw that amount.")
145  return
146 
147  # Make sure the player has sufficient funds.
148  with CFBank.open() as bank:
149  if bank.withdraw(activator.Name, amount * exchange_rate):
150  message = "%d %s withdrawn from your account. %s" \
151  % (amount, coinName, random.choice(thanks_message))
152 
153  # Drop the money and have the player pick it up.
154  withdrawal = activator.Map.CreateObject(
155  ArchType.get(coinName.upper()), x, y)
156  CFItemBroker.Item(withdrawal).add(amount)
157  activator.Take(withdrawal)
158  else:
159  message = "I'm sorry, you don't have enough money."
160  else:
161  message = "How much money would you like to withdraw?"
162  Crossfire.AddReply("withdraw <amount> <coin name>", "This much!")
163 
164  whoami.Say(message)
165 
166 def cmd_convert(argc):
167 
168  def attempt(argc):
169  if len(argc) < 4 or argc[3] != "to":
170  return False
171 
172  fromCoin = getCoinNameFromArgs(argc[2:3])
173  toCoin = getCoinNameFromArgs(argc[4:5])
174  if not toCoin or not fromCoin:
175  return False
176 
177  fromValue = getExchangeRate(fromCoin)
178  toValue = getExchangeRate(toCoin)
179 
180  fromAmount = int(argc[1])
181  amount = int(fromAmount * fromValue / toValue)
182  whoami.Say("{} {} coin{} would be {} {} coin{}".format(fromAmount, fromCoin, "s" if fromAmount > 1 else "", amount, toCoin, "s" if amount > 1 else ""))
183  return True
184 
185  if not attempt(argc):
186  whoami.Say("Sorry, I don't understand what you want to convert.\nTry something like \"4 platinum to silver\" please.")
187 
188 def cmd_coins(_):
189  whoami.Say("""The smallest coin available is the silver coin.
190 The gold coin is worth 10 silver coins, while the platinum coin is worth 50.
191 A jade coin is worth 5000 silver, and an amberium 500000.
192 
193 There also exist imperial notes, worth 10000 silver coins.
194 """)
195 
197  text = Crossfire.WhatIsMessage().split()
198  if text[0] == "learn":
199  cmd_help()
200  elif text[0] == "balance":
201  cmd_balance(text)
202  elif text[0] == "deposit":
203  cmd_deposit(text)
204  elif text[0] == "withdraw":
205  cmd_withdraw(text)
206  elif text[0] == "convert":
207  cmd_convert(text)
208  elif text[0] == "coins":
209  cmd_coins(text)
210  else:
211  whoami.Say("Hello, what can I help you with today?")
212  Crossfire.AddReply("learn", "I want to learn how to use the bank.")
213 
214 Crossfire.SetReturnValue(1)
215 try:
216  main_employee()
217 except ValueError:
218  whoami.Say("I don't know how much money that is.")
here
if you malloc the data for the make sure to free it when done There is also the newclient h file which is shared between the client and server This file contains the definition of the as well as many defined values for constants of varying you will need to grab these constant values for yourself Many of the constants in this file are used in the protocol to denote types Image Caching ~ Image caching has been implemented on the with necessary server support to handle it This section will briefly describe how image caching works on the protocol as well as how the current client does it the client checks for an option denoting the image caching is desired If we initialize all the images to a default value this means we don t need to put special checks into the drawing code to see if we have an image we just draw the default we know what filename to store it as we request the server to do image caching This is done by or ing the cache directive to the image mode we want C when the server finds an image number that it has not send to the it sends us a name command information us the number to name and there is no space between that the and the name Such formating is difficult here
Definition: protocol.txt:2139
receive.Message
Message
Definition: receive.py:26
building
*going from world map to inside a things get roughly times bigger *going from town to inside a building
Definition: scaling.txt:2
only
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure only
Definition: media-tags.txt:13
altars
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the altars
Definition: README.txt:102
version
non standard information is not specified or uptime this means how long since the executable has been started A particular host may have been running a server for quite a long but due to updates or the length of time the server instance has been up may be much shorter version
Definition: arch-handbook.txt:212
hall
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild hall
Definition: README.txt:10
testing
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my testing
Definition: README.txt:102
options
static struct Command_Line_Options options[]
Definition: init.cpp:384
format
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the format
Definition: README.txt:140
now
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works now
Definition: README.txt:94
it
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in it
Definition: README.txt:7
guild_questpoints_apply.points
points
Definition: guild_questpoints_apply.py:11
sunnista.got
def got
Definition: sunnista.py:87
player
Definition: player.h:105
python_init.scripts
scripts
Definition: python_init.py:11
CFFindPlayerOnSquare
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and buy add new pay dues administrate also the plain text format allows for ease of editing I m thinking about adding a CFFindPlayerOnSquare() and CFGetDate()
token
Definition: token.py:1
diamondslots.x
x
Definition: diamondslots.py:15
easy
Source except with the whole giant wilderness empty without dungeons but the towns are mostly fine Its hard to figure out how to go about putting in dungeons in the and monsters themselves too many breeds disease too easy
Definition: README.txt:10
houses
in no particular where with items from houses
Definition: TODO.txt:11
send.date
date
Definition: send.py:29
CFBank.open
def open()
Definition: CFBank.py:69
location
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit location(usually the world map)
entry
Definition: entry.py:1
convert
Definition: convert.py:1
ring_occidental_mages.rest
rest
Definition: ring_occidental_mages.py:16
if
if(!(yy_init))
Definition: loader.cpp:36428
server
if you malloc the data for the make sure to free it when done There is also the newclient h file which is shared between the client and server This file contains the definition of the as well as many defined values for constants of varying you will need to grab these constant values for yourself Many of the constants in this file are used in the protocol to denote types Image Caching ~ Image caching has been implemented on the with necessary server support to handle it This section will briefly describe how image caching works on the protocol as well as how the current client does it the client checks for an option denoting the image caching is desired If we initialize all the images to a default value this means we don t need to put special checks into the drawing code to see if we have an image we just draw the default we know what filename to store it as we request the server to do image caching This is done by or ing the cache directive to the image mode we want C when the server finds an image number that it has not send to the it sends us a name command information us the number to name and there is no space between that the and the name Such formating is difficult but the above example illustrates the data is sent The client then checks for the existence of the image locally It is up to the client to organize images and then splits them into sub directories based on the first letters in the above the file would be crossfire images CS CSword If the client does not have the image or otherwise needs a copy from the server
Definition: protocol.txt:2150
say
Definition: say.py:1
temples
in no particular where with items from temples
Definition: TODO.txt:11
there
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and there(especially DM toys) but the *basic *code stuff is all done IMHO. You can add guilds
fields
non standard information is not specified or uptime fields
Definition: arch-handbook.txt:204
basement
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is * basement
Definition: README.txt:97
banksay.do_deposit
def do_deposit(player, amount)
Definition: banksay.py:73
time
non standard information is not specified or uptime this means how long since the executable has been started A particular host may have been running a server for quite a long time
Definition: arch-handbook.txt:206
giveknowledge.knowledge
knowledge
DIALOGCHECK MINARGS 1 MAXARGS 1
Definition: giveknowledge.py:15
mad_mage_user.file
file
Definition: mad_mage_user.py:15
in
same as sound ncom command like but with extra the client want tick commands so it knows animation timing the client wants to be informed of pickup mode changes Mode will be sent when the player successfully logs in
Definition: protocol.txt:408
hall_of_fame.keys
keys
Definition: hall_of_fame.py:43
you
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your and press< Return > You can also use say if you feel like typing a little extra Other NPCs may not speak to you
Definition: survival-guide.txt:37
diamondslots.pay
pay
Definition: diamondslots.py:36
give
Definition: give.py:1
filelist
Definition: filelist.py:1
banksay.cmd_help
def cmd_help()
Definition: banksay.py:80
banksay.cmd_deposit
def cmd_deposit(text)
Definition: banksay.py:111
Install
Install Bug reporting Credits Install
Definition: README.txt:6
name
Plugin animator file specs[Config] name
Definition: animfiles.txt:4
maps
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the maps
Definition: README.txt:120
m
static event_registration m
Definition: citylife.cpp:422
quest
Definition: quest.py:1
autojail.who
who
Definition: autojail.py:3
main
main(int argc, char *argv)
Definition: land.c:277
files
the server will also quite happily load unpacked files as long as they have the right file which is convenient if you want to edit your maps and archetypes live It also contains a few files
Definition: server-directories.txt:53
guildoracle.guildhouse
guildhouse
Definition: guildoracle.py:50
members
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and buy add new members
Definition: README.txt:140
speaking
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in guilds py convertall py reads the lines from guilds py and runs line by through convert py Generally speaking
Definition: README.txt:14
same
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is same
Definition: README.txt:7
drop
void drop(object *op, object *tmp)
Definition: c_object.cpp:1168
guild_dues.dues
dues
Definition: guild_dues.py:344
Quests
Definition: Quests.h:19
things
other than new code I created new revised altered the treasures file and created new object types and a flag It therefore may be enjoyable to install this this patch does the following things
Definition: arch-handbook.txt:33
fire
void fire(object *op, int dir)
Definition: player.cpp:2413
this
Story behind my Island The human king of the mainland has explorers scout for new territory On one expedition to an the explorers found some flecks of gold in the river they settled next to Upon notification of this
Definition: lore.txt:7
bigchest.below
below
Definition: bigchest.py:12
board
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message board
Definition: README.txt:102
output
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure an example[/b][i] This is an old full of dirt and partially destroyed[hand] My dear as you two years i had to leave quickly Words have come to me of powerful magic scrolls discovered in an old temple by my uncle I have moved to study them I not forgot your knowledge in ancient languages I need your help for[print][b] Some parts of document are to damaged to be readable[/b][arcane] Arghis[color=Red] k h[color=dark slate blue] ark[color=#004000] fido[/color][hand] please come as fast as possible my friend[print][b] The bottom of letter seems deliberatly shredded What is but not limited book signs rules Media tags are made of with inside them the name of tag and optional parameters for the tag Unlike html or there is no notion of opening and closing tag A client not able to understand a tag is supposed to ignore it when server is communicating with and old client that does not understand a a specific extended it will issue a classical message output
Definition: media-tags.txt:36
levels
int64_t * levels
Definition: exp.cpp:26
say.price
dictionary price
Definition: say.py:147
board
Definition: board.py:1
well
Crossfire Protocol which is used between clients and servers to play Crossfire This documentation is intended primarily for client implementers This manual is the collective result of various authors compiled over the course of many most of the time several years after the actual code was written As such it will surely contain omit certain important and possibly make life miserable many working open source server and client implementations of this protocol are available Fixes and improvements to this documentation are welcome History the communications plan was set to be a text based system It was up to the server and client to parse these messages and determine what to do These messages were assumed to be line per message At a reasonably early stage of Eric Anderson wrote a then the data itself you could send many data and after the other end could decode these commands This works fairly well
Definition: protocol.txt:35
done
int done
Definition: readable.cpp:1566
stairs
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the stairs
Definition: README.txt:102
banksay.cmd_balance
def cmd_balance(argv)
Definition: banksay.py:90
scores
the server will also quite happily load unpacked files as long as they have the right file which is convenient if you want to edit your maps and archetypes live It also contains a few like which have hard coded names and are not identified by extension localdir Usually var crossfire Modern systems probably want var lib crossfire instead Contains data that the server does need to live apartment high scores
Definition: server-directories.txt:62
message
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your message
Definition: survival-guide.txt:34
Python
pluglist shows those as well as a short text describing each the list will simply appear empty The keyword for the Python plugin is Python plugout< keyword > Unloads a given identified by its _keyword_ So if you want to unload the Python you need to do plugout Python plugin< libname > Loads a given whose _filename_ is libname So in the case of Python
Definition: plugins.txt:20
t
in that case they will be relative to whatever the PWD of the crossfire server process is You probably shouldn t
Definition: server-directories.txt:28
banksay.getExchangeRate
def getExchangeRate(coinName)
Definition: banksay.py:66
spell
with a maximum of six This is not so if you are wearing plate you receive no benefit Armour is additive with all the supplementry forms of which means that it lasts until the next semi permanent spell effect is cast upon the character spell
Definition: tome-of-magic.txt:44
BigChest
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to BigChest
Definition: README.txt:98
them
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in guilds py convertall py reads the lines from guilds py and runs them
Definition: README.txt:12
intended
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is intended(fixed) *mainfloor
however
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure an example[/b][i] This is an old full of dirt and partially destroyed[hand] My dear as you two years i had to leave quickly Words have come to me of powerful magic scrolls discovered in an old temple by my uncle I have moved to study them I however
Definition: media-tags.txt:19
guildoracle
Definition: guildoracle.py:1
doors_galore.process
def process()
Definition: doors_galore.py:72
reset
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is reset(which is normal)
banksay.cmd_convert
def cmd_convert(argc)
Definition: banksay.py:166
instead
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be instead
Definition: survival-guide.txt:15
updated
it was updated by reverse engineering the client code accessing the metaserver It therefore describes the as is state rather than what was intended Communication between server and metaserver was not updated
Definition: arch-handbook.txt:126
convertall
Definition: convertall.py:1
replace
Definition: replace.py:1
cold
Player Stats effect how well a character can survie and interact inside the crossfire world This section discusses the various what they and how they effect the player s actions Also in this section are the stat modifiers that specific classes professions bring Player and sps the current and maximum the Current and Maximum The Current Sp can go somewhat negative When Sp is negative not all spells can be and a more negative Sp makes spell casting less likey to succeed can affect Damage and how the characters as well as how often the character can attack this affects the prices when buying and selling items if this drops the player will start losing hit points wd Cleric or Dwarf sm Elf wd Fireborn ft Human ra Mage C Monk se Ninja hi Priest C Quetzalcoatl mw Swashbuckler si Thief st Viking ba Warrior or Wizard C Wraith C Class Prof Str Dex Con Wis Cha Int Pow Net Skills Enclosed are codes used for the skills above The ones in and fighting should all be pretty self explanatory For the other a brief description is for a more detailed look at the skills doc file Skill remove use magic items phys no fire cold Fireborns are supposed to be fire spirits They re closely in tune with magic and are powerful and learn magic easily Being fire they are immune to fire and and vulnerable to cold They are vulnerable to ghosthit and drain because being mostly non anything which strikes directly at the spirit hits them harder race attacktype restrictions immunities prot vuln Quetzalcoatl physical no armour fire cold Quetzalcoatl s are now born knowing the spell of burning but because of their negative wisdom they have a very hard time learning new spells Their maximum natural wisdom is With the high intelligence they will typically have many spellpoints They can be very devastating at low level due to their low natural ac and can make mincemeat out of low level monsters at they really begin to have problems because they cannot use armour race attacktype restrictions immunities prot vuln Wraith cold
Definition: stats.txt:185
so
if you malloc the data for the make sure to free it when done There is also the newclient h file which is shared between the client and server This file contains the definition of the as well as many defined values for constants of varying you will need to grab these constant values for yourself Many of the constants in this file are used in the protocol to denote types Image Caching ~ Image caching has been implemented on the with necessary server support to handle it This section will briefly describe how image caching works on the protocol as well as how the current client does it the client checks for an option denoting the image caching is desired If so
Definition: protocol.txt:2119
of
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate of(compared to 200pl for access in Scorn). This is I think a good comprimise. The charging room should work the same way but be more expensive(?). Changing this in the maps took me some time so I didn 't get a chance to test all the connects yet however. I still wanted to get the maps and scripts in to CVS so they could be versioned. The other change was to the storage house. I basically removed the separate storage house and added member 'lounges' for all the different guild member ranks above the first(Initiate) - Ryo 's building system will get more use this way and players will have another reward for advancement. - a custom lounge. There are no links to the lounges from the main guild maps yet. Update 04-11-30 As soon as I write the DM command script and double check my names I will commit this to CVS. I 'm adding the scripts under/python naturally and will commit a folder called templates/guild - the guilds will still not be in the game unless the admin puts them in
install
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic install
Definition: README.txt:7
pshop.Date
Date
Definition: pshop.py:253
guild
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the guild
Definition: README.txt:7
navar-midane_apply.messages
list messages
Definition: navar-midane_apply.py:8
guilds
Definition: guilds.py:1
Also
Crossfire Protocol which is used between clients and servers to play Crossfire This documentation is intended primarily for client implementers This manual is the collective result of various authors compiled over the course of many most of the time several years after the actual code was written As such it will surely contain omit certain important and possibly make life miserable many working open source server and client implementations of this protocol are available Fixes and improvements to this documentation are welcome History the communications plan was set to be a text based system It was up to the server and client to parse these messages and determine what to do These messages were assumed to be line per message At a reasonably early stage of Eric Anderson wrote a then the data itself you could send many data and after the other end could decode these commands This works fairly but I think the creation of numerous sub packets has some performance hit Also
Definition: protocol.txt:36
work
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in guilds py convertall py reads the lines from guilds py and runs line by through convert py Generally configuring guilds py and the running convertall py is all that is needed If that doesn t work
Definition: README.txt:14
to
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure an example[/b][i] This is an old full of dirt and partially destroyed[hand] My dear as you two years i had to leave quickly Words have come to me of powerful magic scrolls discovered in an old temple by my uncle I have moved to study them I not forgot your knowledge in ancient languages I need your help for[print][b] Some parts of document are to damaged to be readable[/b][arcane] Arghis[color=Red] k h[color=dark slate blue] ark[color=#004000] fido[/color][hand] please come as fast as possible my friend[print][b] The bottom of letter seems deliberatly shredded What is but not limited to
Definition: media-tags.txt:30
is_valid_types_gen.found
found
Definition: is_valid_types_gen.py:39
that
Install Bug reporting Credits so make sure you have that
Definition: README.txt:6
secondfloor
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion * secondfloor
Definition: README.txt:78
region
Definition: map.h:274
explosion
static void explosion(object *op)
Definition: spell_effect.cpp:320
above
Magical Runes Runes are magical inscriptions on the dungeon which cast a spell or detonate when something steps on them Flying objects don t detonate runes Beware ! Runes are invisible most of the time They are only visible occasionally ! There are several runes which are there are some special runes which may only be called with the invoke and people may apply it to read it Maybe useful for mazes ! This rune will not nor is it ordinarily invisible Partial Visibility of they ll be visible only part of the time They have so the higher your the better hidden the runes you make are Examples of whichever way you re facing invoke magic rune transfer as above
Definition: runes-guide.txt:50
altar_valkyrie.altar
altar
Definition: altar_valkyrie.py:27
banksay.cmd_withdraw
def cmd_withdraw(argv)
Definition: banksay.py:134
coins
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold coins(for what?) *basement
used
this applies to both the lower and the upper limit Returned is the number of items actually used
Definition: protocol.txt:381
line
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in guilds py convertall py reads the lines from guilds py and runs line by line
Definition: README.txt:12
bigchest.check
check
Definition: bigchest.py:10
takeitem.paid
paid
Definition: takeitem.py:26
players
std::vector< archetype * > players
Definition: player.cpp:501
room
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single room
Definition: survival-guide.txt:13
banksay.cmd_coins
def cmd_coins(_)
Definition: banksay.py:188
floor
Magical Runes Runes are magical inscriptions on the dungeon floor
Definition: runes-guide.txt:3
given
Player Stats effect how well a character can survie and interact inside the crossfire world This section discusses the various what they and how they effect the player s actions Also in this section are the stat modifiers that specific classes professions bring Player and sps the current and maximum the Current and Maximum The Current Sp can go somewhat negative When Sp is negative not all spells can be and a more negative Sp makes spell casting less likey to succeed can affect Damage and how the characters as well as how often the character can attack this affects the prices when buying and selling items if this drops the player will start losing hit points wd Cleric or Dwarf sm Elf wd Fireborn ft Human ra Mage C Monk se Ninja hi Priest C Quetzalcoatl mw Swashbuckler si Thief st Viking ba Warrior or Wizard C Wraith C Class Prof Str Dex Con Wis Cha Int Pow Net Skills Enclosed are codes used for the skills above The ones in and fighting should all be pretty self explanatory For the other a brief description is given
Definition: stats.txt:127
guild_questpoints_apply
Definition: guild_questpoints_apply.py:1
CFItemBroker.Item
Definition: CFItemBroker.py:15
pixie
with a maximum of six This is not so if you are wearing plate you receive no benefit Armour is additive with all the supplementry forms of which means that it lasts until the next semi permanent spell effect is cast upon the character weak special and current protections and immunities dark elf priest killer panther all others pixie
Definition: tome-of-magic.txt:136
CFGetTime
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and buy add new pay dues administrate also the plain text format allows for ease of editing I m thinking about adding a CFGetTime() functions to the python plugin. Useful for mail system
are
non standard information is not specified or uptime this means how long since the executable has been started A particular host may have been running a server for quite a long but due to updates or the length of time the server instance has been up may be much shorter MN US< br > link< br >< a href="http: text_comment=Latest SVN 1.x branch, Eden Prairie, MN US archbase=Standard mapbase=Standard codebase=Standard num_players=3 in_bytes=142050710 out_bytes=-1550812829 uptime=909914 version=1.11.0 sc_version=1027 cs_version=1023 last_update=1214541369 END_SERVER_DATA ---- Multigod -------- This is a brief description of the MULTIGOD hack. It is preserved here for mostly historical reasons. Introduction ~~~~~~~~~~~~ The intention of this code is to enhance the enjoy-ability and playability of clerical characters in the new skills/exp scheme. This is done by giving players gods to worship who in turn effect clerical magic and powers. Included in this patch are several new spells which (hopefully) will allow the priest characters a better chance to gain xp at higher levels. Notably, the "holy orb" and "holy word" spells have been revamped. When MULTIPLE_GODS flag is defined in include/config.h, this code is enabled. This code (described below) encompasses 3 main parts: an array of gods that players/NPCs may worship, new clerical spells which rely on the worshiped god's attrib- utes in Gods[] array and, altars/praying--the interface between a worshiper and their god. b.t. thomas@astro.psu.edu Implementation Details ~~~~~~~~~~~~~~~~~~~~~~ This code is flexible and easy to configure (just edit the god archetypes). Part of the reason for creating this code was to allow server maintainers to develop their own "mythos". From my personal point of view, I hate having the old "Christian" aligned mythos, but if that's what you like, you can replicate it with this code too (see below). Properties of the Gods ~~~~~~~~~~~~~~~~~~~~~~ Here is a fuller description of Gods archetype values. ---- name - name of the god (required) other_arch - archetype that will be used for the summon holy servant spell. title - diametrically opposed god, leave blank if none exists attacktype - favored attack of this god, used in spells of summon avatar, holy word. Recipients of "holy possession" get this too. immune - Avatars/holy servants/recipient of "holy possession" gets this. protected - all of the above AND recipient of god's blessing and the priest of this god gets this. vulnerable - Avatar/servant/recipient of gods curse/priest of this god get this. path_attuned - priest of this god and recipient of "bless" gets this path_repelled - priest and recipient of "curse" gets this path_denied - priest and recipient of "curse" gets this slaying - comma delimited list of the races of creatures that are aligned with the god. "summon cult monsters" uses. this list to find creatures. Summon avatar/call servant code assigns this value to prevent them from attacking aligned races. Value is blank if no race(s) exists. race - comma delimited list of the races of creatures "holy word", "holy possession" spells will effect. Value entry is blank if no such race(s) exists. hp,dam,ac,wc - base stats for the summoned avatar. ---- IF MORE_PRIEST_GIFTS is defined (in gods.c) then ADDITIONAL gifts/limitations will be assigned to the priest: Flags ^^^^^ Now, the following flags, in addition to being used by the god (if planted on a map) are assigned to the worshiping priest: can_use_weapon, can_use_armour, is_undead, is_blind, reflect_missile, reflect_spell, make_invisible, stealth, can_see_in_dark, xrays NOTE: if can_use_armour/can_use_weapon flags are NOT present, then the priest will be forbidden the use of these items. Stats ^^^^^ The following stats are used: ---- luck - how lucky the god (and the priest) are. last_eat - how fast priest digestion is last_hp - how fast priest healing is last_sp - how fast priest mana regeneration is last_grace - how fast priest grace regeneration is ---- Designing New Gods ~~~~~~~~~~~~~~~~~~ To examine the gods properties, use the '-m8' flag (ie 'crossfire -m8'). Note some of the big differences here in terms of spell_paths, races, etc. Most of these entries were designed with roughly polar opposite gods. For designing new gods. You should make sure that worshiping a god will be "unique" in some way. But playbalance first! You must consider the balance between the following: . spellpaths . priest gifts . priest limitations . special spells . attacktypes . summoned monster lists . properties of the avatar and holy servant. Here are some hard and fast rules for designing gods: - Decide how the cleric will get experience. The god should be either a 'summoning', 'turning' *or* a 'wounding' god. If summoning/turning, make sure the aligned_race/enemy_race list(s) has enough creatures to summon/slay at low, medium and high levels. DONT give a god attuned to wounding AND turning||summoning (in fact, at minimum, one of these 3 paths should be repelled/denied). - make sure the summoned avatar is stronger than the servant (!) - examine the avatar/servant stats. If set inproperly, you will give wimpy/super values. For example, Avatars/servants with less than 50 hp (and a high ac/no armour) will vanish quickly. Shoot for stats like: ---- type | A V E R A G E S T A T S | hp | ac | wc | arm | dam | speed ----------|----------------------------------- servant | 50 | 5 | 5 | 20 | 5 | 0.15 avatar | 350 | -5 | -1 | 50 | 50 | 0.25 ---- Its difficult to give measurements on how to trade these off. To help guide your choices try to conserve the value of speed*dam and (armour+1)*hp. * avoid giving the potent attacktypes of death, weaponmagic and paralysis. * gods have a vulnerability for every immunity. Not all attacktypes are the same. Immunity to physical, magic and common attacktypes (like fire/cold/electric) are very potent. Similarly, vuln to these is a big negative. * SPELL paths. Carefull treatment is needed here. Give a path_denied/ or a couple path_repelled for every path_attuned. BUT note: not all paths are of equal use. (ex path_abjuration has a very large list of spells). The main clerical paths are restoration, abjuration, protection, turning, wounding and summoning. For balance, make 3-4 of these repelled/denied and 1 or 2 attuned. Be sure to check out the special spells list (below). Attuned paths like DEATH, WOUNDING and (especially) PROTECTION are very potent. Allow for some balance else where if you assign (one!) of these as a path_attuned. * If using the MORE_PRIEST_GIFTS define: priest limitations of no weapons and no armour are very negative, be sure to compensate with more than an attunded path. Of course, you may break these 'rules' to create your god. When you do that, you had better make up for the bonus elsewhere! Otherwise, you will create a 'mega-god' whose worship (by the player priests) will unbalance the game. Designing a good god takes a bit of work. Special Spells ~~~~~~~~~~~~~~ Here is a possibly *incomplete* list of the special spells that a god may grant use to a worshiper. Check the file spellist.h for the 0 bookchance clerical spells to find all of these. (This list was complete on 10/96). ---- INFO perceive self PROTECTION defense; immuntity to cold, fire, electricity, poison, slow, paralysis, draining, attack, and magic RESTORE remove damnation; reincarnation; raise dead; resurrection; regeneration WOUNDING cause critical wounds; retributive strike LIGHT daylight; nightfall DEATH face of death; finger of death SUMMONING insect plague CREATE wall of thorns ---- Ideas ~~~~~ * Allow sacrifices. This is an excellent way to give a cleric xp. Need to create enemy_race creatures w/ bodyparts we can sacrifice, and designate a pointer in Gods to the appropriate array of stuff we can sacrifice for xp. Experience ---------- Obsolete file kept for historical reasons. Introduction ~~~~~~~~~~~~ This patch represents a "developer 's" version of the exp/skills system. While I have now achieved all of the objectives in sections "B" and "C" of the coding proposal (see README.PROPOSAL) and have play-tested as much of the code as possible, I am sure some big bugs must remain. (One for sure is that exp gained when using rod/horn/wand is wrong.) Below this section I outline 1) coding philosophy, 2) gross description of how the code impinges/interacts within older code. 3) designer's notes on the changes to the code. Comments on any area of this coding would be appreciated. Personally, I would like to see the Pow stat and a 2-type system of magic come into being. After all of you check out the code, I would like to discuss enhancements/bug fixes/implementation. For instance, is it too hard to figure out how to use the code! Sometime tomorrow exp2.tar.gz will be available in pub/thomas on ftp.astro.psu.edu. b.t. Code Philosophy ^^^^^^^^^^^^^^^ To move CF over to a new skills-based experience system. In this implementation several kinds of experience will exist. Players will gain experience in each kind of experience (or category) based on their actions in the game. The sum of all the various categories of experience equals the player "score", from which dam, wc, and hp are determined. All experience gaining actions will be through the use of certain skills -- so called "associated skills". Associated skills are each related to 1 kind of experience. Thus, for example, "stealing" is a skill associated with "agility" experience. There exists also "miscellaneous" skills which allow the use of a unique skill, but which are not related to any kind of experience and whose use does not generate experience points. In this implementation, skills and objects are both treated as objects in the inventory of the user. Experience "objects" each represent one kind of experience and are always invisible. Skills objects each represent one kind of skill available in the game. Skills objects may either be invisible or have an associated bitmap (in which case they are "tools"). All experience gaining actions will be through the use of certain skills -- called "associated skills". Associated skills are each related to 1 kind of experience. Thus, for example, "stealing" is a skill associated with "agility" experience. Both Players and NPC's may only use skills which are in their inventories. NPC's do not use experience objects. A breakdown of the properties of skills and exp objects objects is as follows: ---- Object Property NPC use? ------ ----------------------------------- ------- Experience Each represents a different kind of NO experience in the game. The object in the player inventory keeps track of player experience in that category. Always is invisible. Skill- Represents a skill the player may YES associated perform. May be either invisible or visible as a "tool". Successful use of this skill generates experience. Experience is allocated to appropriate experience object. Skill- Same as above, *but* this skill is not YES miscell. related to any experience category, and use of this skill generates *no* experience. ---- Linking of associated skills to experience categories is done during initialization of the code (in init()) based on the shared stats of both. How skills and experience categories are named and linked may be changed by editing the skills/experience object archetypes. Implementation Details ~~~~~~~~~~~~~~~~~~~~~~ The most important thing is that I moved most of the code into the server/skills.c and server/skill_util.c files. The skills code is loosely implemented along the lines of the spell code. This is to say that: . skills use (do_skill) is called from fire(). . there is a skills[] table similar to spells[]. . server files skills.c and skill_util.c parallel spell_effect.c and spell_util.c in respective functionallity. Particular notes about the implementation are outlined below. Defines ^^^^^^^ #define MAX_EXP_CAT be > I had to make use of several global parameters These are
Definition: arch-handbook.txt:525
diamondslots.y
y
Definition: diamondslots.py:16
banksay.getCoinNameFromArgs
def getCoinNameFromArgs(argv)
Definition: banksay.py:58
know
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure an example[/b][i] This is an old full of dirt and partially destroyed[hand] My dear as you know
Definition: media-tags.txt:17
bigchest
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way * bigchest
Definition: README.txt:99
create-tower.tile
tile
Definition: create-tower.py:8
castle_read.key
key
Definition: castle_read.py:64
joining
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and buy add new pay dues administrate also the plain text format allows for ease of editing I m thinking about adding a Guild foundings and other python scripts Update Added in scripts for guild joining(the chair)
skill
skill
Definition: arch-handbook.txt:585
broken
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is broken("closed") *Other areas untested In the far upper right of the map
map
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit map
Definition: README.txt:7
a
Magical Runes Runes are magical inscriptions on the dungeon which cast a spell or detonate when something steps on them Flying objects don t detonate runes Beware ! Runes are invisible most of the time They are only visible occasionally ! There are several runes which are there are some special runes which may only be called with the invoke and people may apply it to read it Maybe useful for mazes ! This rune will not nor is it ordinarily invisible Partial Visibility of they ll be visible only part of the time They have a(your level/2) chance of being visible in any given round
animate.event
event
DIALOGCHECK MINARGS 1 MAXARGS 2
Definition: animate.py:17
inventory
void inventory(object *op, object *inv)
Definition: c_object.cpp:2167
available
Release notes for Crossfire This is see the Changelog file included with the software Major changes since but slower than players without that skill *weather system is hopefully fixed *misc bug fixes Once you have installed the you MUST download a map set point to where you installed Crossfire install Grab map set from official SourceForge page The following sets are available
Definition: Release_notes.txt:38
running
in that case they will be relative to whatever the PWD of the crossfire server process is You probably shouldn though Notes on Specific and settings file datadir Usually usr share crossfire Contains data that the server does not need to modify while running
Definition: server-directories.txt:45
banksay.main_employee
def main_employee()
Definition: banksay.py:196
code
Crossfire Architecture the general intention is to enhance the enjoyability and playability of CF In this code
Definition: arch-handbook.txt:14
chance
bool chance(int a, int b)
Definition: treasure.cpp:866
is
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse is
Definition: README.txt:128
list
How to Install a Crossfire Server on you must install a python script engine on your computer Python is the default script engine of Crossfire You can find the python engine you have only to install them The VisualC Crossfire settings are for but you habe then to change the pathes in the VC settings Go in Settings C and Settings Link and change the optional include and libs path to the new python installation path o except the maps ! You must download a map package and install them the share folder Its must look like doubleclick on crossfire32 dsw There are projects in your libcross lib and plugin_python You need to compile all Easiest way is to select the plugin_python ReleaseLog as active this will compile all others too Then in Visual C press< F7 > to compile If you don t have an appropriate compiler you can try to get the the VC copies the crossfire32 exe in the crossfire folder and the plugin_python dll in the crossfire share plugins folder we will remove it when we get time for it o Last showing lots of weird write to the Crossfire mailing list
Definition: INSTALL_WIN32.txt:50
area
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove area
Definition: README.txt:5
mail
with a maximum of six This is not so if you are wearing plate mail(ac level of 5) and your armour spell gives you an ac level of 4
chore
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major chore
Definition: README.txt:108
plugin
pluglist shows those as well as a short text describing each the list will simply appear empty The keyword for the Python plugin is Python plugout< keyword > Unloads a given plugin
Definition: plugins.txt:15
replace.current
current
Definition: replace.py:64
Room
Definition: rogue_layout.cpp:27
CFDataFile
Definition: CFDataFile.py:1
want
*envar *is the environment if one that can also be used as an override If both the flag and the envar are the envar takes precedence name flag envar notes confdir conf absolute datadir data CROSSFIRE_LIBDIR absolute localdir CROSSFIRE_LOCALDIR absolute mapdir maps CROSSFIRE_MAPDIR relative to datadir or localdir playerdir playerdir CROSSFIRE_PLAYERDIR relative to localdir templatedir tmpdir CROSSFIRE_TEMPLATEDIR relative to localdir uniquedir uniquedir CROSSFIRE_UNIQUEDIR relative to localdir tmpdir templatedir CROSSFIRE_TMPDIR absolute regions regions unused Paths marked absolute if you want
Definition: server-directories.txt:26
still
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are when the map is already purchased items reappear in that area From my this does not cause any problems at the moment But this should be corrected fixed Major it s now possible to buy guilds Ryo Update Uploaded guild package to CVS Changes the cauldrons and the charging room I spent a while agonizing over They were natural guild enhancements but much too much value for any reasonable expense to buy them Then I thought that they should be pay access but at a greatly reduced rate SO when you buy a forge or whatever for your guild it is available on a perplayer daily rate but it will be accessable for testing and to DMs to play with Like I said lots still to do with the especially comingt up with quest items for buying things like the new workshops and stuff One of the things I would like some input on would be proposals for additional fields for either the guildhouses or guild datafiles to play with Currently the Guildhouse but there is no reason we can t have more than one measure of a guild perhaps have dues relate to Dues and use points for some other suspended or inactive or when a guild is founded inactive active Guilds have the pull Load to join em up The maps still need some work and there are probably more little functions here and buy add new pay dues administrate also the plain text format allows for ease of editing I m thinking about adding a Guild foundings and other python scripts Update Added in scripts for guild and removing player who quit form the guilds they belong to Renamed guildmember_say to guildoracle py and fixed some bugs here and there Made guild board script that displays the points of the guilds in decending order *more to clean up still
Definition: README.txt:149
obtained
Python Guilds Quick outline Add a guild(mapmakers) this is still a problem *after dropping the token to gain access to the stove a woodfloor now appears which is Toolshed Token(found in Guild_HQ) *Note also have multiple gates in place to protect players and items from the mana explosion drop x for Jewelers room *Jewelers room works just need to determine what x is drop x for Thaumaturgy room *Thaumaturgy room works just need to determine what x is drop gold dropping the Firestar named fearless allows access to but I suspect that the drop location of the chest is not as intended because the player is in the way once you enter the chest the exit back to the basement is things such as the message et al reside on teleporters which then transport items to the map as they are obtained(drop x gold, return with a spectre, etc.) - those map tiles are not unique. So
many
TIPS on SURVIVING Crossfire is populated with a wealth of different monsters These monsters can have varying immunities and attack types In some of them can be quite a bit smarter than others It will be important for new players to learn the abilities of different monsters and learn just how much it will take to kill them This section discusses how monsters can interact with players Most monsters in the game are out to mindlessly kill and destroy the players These monsters will help boost a player s after he kills them When fighting a large amount of monsters in a single attempt to find a narrower hallway so that you are not being attacked from all sides Charging into a room full of Beholders for instance would not be open the door and fight them one at a time For there are several maps designed for them Find these areas and clear them out All throughout these a player can find signs and books which they can read by stepping onto them and hitting A to apply the book sign These messages will help the player to learn the system One more always keep an eye on your food If your food drops to your character will soon so BE CAREFUL ! NPCs Non Player Character are special monsters which have intelligence Players may be able to interact with these monsters to help solve puzzles and find items of interest To speak with a monster you suspect to be a simply move to an adjacent square to them and push the double ie Enter your and press< Return > You can also use say if you feel like typing a little extra Other NPCs may not speak to but display intelligence with their movement Some monsters can be and may attack the nearest of your enemies Others can be in that they follow you around and help you in your quest to kill enemies and find treasure SPECIAL ITEMS There are many special items which can be found in of these the most important may be the signs all a player must do is apply the handle In the case of the player must move items over the button to hold it down Some of the larger buttons may need very large items to be moved onto before they can be activated Gates and locked but be for you could fall down into a pit full of ghosts or dragons and not be able to get back out Break away sometimes it may be worth a player s time to test the walls of a map for secret doors Fire such as missile weapons and spells you will notice them going up in smoke ! So be careful not to destroy valuable items Spellbooks sometimes a player can learn the other times they cannot There are many
Definition: survival-guide.txt:95
have
**Media tags please refer to the protocol file in doc Developers protocol Quick for your pleasure an example[/b][i] This is an old full of dirt and partially destroyed[hand] My dear as you two years i had to leave quickly Words have come to me of powerful magic scrolls discovered in an old temple by my uncle I have moved to study them I have
Definition: media-tags.txt:19
set
*envar *is the environment if one that can also be used as an override If both the flag and the envar are set
Definition: server-directories.txt:12
py
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert py
Definition: README.txt:7
reporting
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a in the same order that they are listed in guilds py convertall py reads the lines from guilds py and runs line by through convert py Generally configuring guilds py and the running convertall py is all that is needed If that doesn t then I suggest looking at how convert py functions before trying to make a work around Bug reporting
Definition: README.txt:18
takeitem.status
status
Definition: takeitem.py:38
can
*envar *is the environment if one that can also be used as an override If both the flag and the envar are the envar takes precedence name flag envar notes confdir conf absolute datadir data CROSSFIRE_LIBDIR absolute localdir CROSSFIRE_LOCALDIR absolute mapdir maps CROSSFIRE_MAPDIR relative to datadir or localdir playerdir playerdir CROSSFIRE_PLAYERDIR relative to localdir templatedir tmpdir CROSSFIRE_TEMPLATEDIR relative to localdir uniquedir uniquedir CROSSFIRE_UNIQUEDIR relative to localdir tmpdir templatedir CROSSFIRE_TMPDIR absolute regions regions unused Paths marked absolute can
Definition: server-directories.txt:26
changed
same as sound ncom command like but with extra the client want tick commands so it knows animation timing the client wants to be informed of pickup mode changes Mode will be sent when the player successfully logs and afterward any time the value is changed(for instance by the player through the direct use of 'pickup' command). The value is the same bit format the client sends through menus and such.|
is_valid_types_gen.type
list type
Definition: is_valid_types_gen.py:25
order
in no particular order
Definition: TODO.txt:6
new
Install Bug reporting Credits so make sure you have version or later There are files involved in the automatic convert convertall guilds and filelist py guilds py is what is used by the install script for setting up the maps It has columns in the first is the name of the no spaces The second is the region of the the third is the destination folder for the the fourth is the exit the fifth and sixth are the x and y coords within the exit the seventh eighth and ninth are the exit location for the storage hall If field seven is then it uses the same exit map as for the guild hall itself filelist py has a list of which files to process for each guild hall convert py takes all the files in filelist py and customises them to the specific guild then outputs them into a new(or overwrites an existing) folder in the current working directory. The output folder is the name of the guildhall. It also writes them into the destination dir. It takes the arguments from argv