Crossfire Server, Trunk  R22047
Shop Floor


Shop floor is used for shops. It acts like a combination of the common floor- and the treasure type: When the map is loaded, randomitems (depending on the settings) are generated on it. These items are all flagged as unpaid. When a player drops an item onto shop floor, the item becomes unpaid and the player receives payment according to the item's selling-value. Shop floor always prevents magic (To hinder players from burning or freezing the goods).

Type defined by:

  • object::type = 68


Attribute Field Description
artifact obj::artifact If defined, refers to an artifact to get values from.
block view FLAG_BLOCKSVIEW If an item is set to block view, players (and monsters) cannot see beyond it unless they cross it or manage to stand on top.
changing FLAG_CHANGING A <changing> object converts to <food> <other_arch> objects; when it's animation is done. For non-living objects <food> is checked: if it is zero, the change happens; otherwise <food> is decreased by one. I suggest you don't mess with this value - leave the default in place.
elevation elevation The elevation (height above sea level) of this square. It is used for weather calculations and should be in the range -32000..32000. The elevation of a tile must be set in the bottom-most game object; elevation values for non-bottom-most game objects are ignored by the Crossfire server.
generate goods FLAG_AUTO_APPLY If enabled, items will appear on this square when the map is loaded. You need to specify a <treasurelist> to define what kinds of items are generated. The items will be unpaid.
glow radius obj::glow_radius If <glow radius> is set to a value greater zero, the object appears lit up on dark maps. <glow radius> can be a value between 0 and 4, the higher, the more light does the object emit.
identified FLAG_IDENTIFIED If an item is identified, the player has full knowledge about it.
identified animation identified_animation If defined, then the object will take this animation when identified.
identified animation speed identified_anim_speed If defined, then the object will have this animation speed when identified.
identified image identified_face If defined, then the object will take this appareance when identified.
identified random animation? identified_anim_random If defined, then the object's animation is in a random sequence when identified.
identified_name identified_name If defined, then the object will take this name when identified.
identified_name_pl identified_name_pl If defined, then the object will take this plural name when identified.
image obj::face The image-name defines what image is displayed for this object in-game.
invisible obj::invisible Generally makes the object invisible. Depending on the object-type, some can be made visible by the show_invisible spell. If in doubt, test it. Putting an invisible object under the floor always prevents it from being shown.
is used up FLAG_IS_USED_UP If set, decrement the <food> field at <speed>. When <food> reaches zero, remove the object.
material obj::material This bitmask-value informs the player of which material(s) the object consists. Material does also affect how likely the object can be destroyed by hazardous spell-effects.
name obj::name This is the name of the object, displayed to the player.
no prayers FLAG_DAMNED If enabled, it is impossible for players to use prayers on that spot. It also prevents players from saving. (Remember that <no magic> is always set for shop floors.)
non-pickable FLAG_NO_PICK If set, the object cannot be picked up (Neither by players nor monsters).
number obj::nrof This value determines the number of objects in one stack (for example: 100 gold coins => "number = 100"). You should set this at least to one, for any pickable object - otherwise it won't be mergeable into a stack.
plural name obj::name_pl This is the plural name of the object. A plural name must be set for all items that can be picked up and collected by the player.
price adjustment price_adjustment If set, this is the buy and sell price adjustment ratio for the item.
price adjustment for buying price_adjustment_buy If set, this is the adjustment ratio when buying the item. Ignored if <price> adjustment is set.
price adjustment for selling price_adjustment_sell If set, this is the adjustment ratio when selling the item. Ignored if <price> adjustment is set.
quality level liv::exp The <quality level> will be used for the quality of the generated goods. If zero/unset, <quality level> 5 is used. Usually this value doesn't need to be set, unless you want extraordinarily good/bad quality. If you want to make a shop with very high quality, maybe charge an entrance fee, or make the shop hard-to-come-by. Note that <quality level> mainly affects chance of magic bonus and appearance of artifact-items.
smooth level obj::smoothlevel If <smooth level> is set to a value greater zero, the object will be drawn partially over adjacent squares having a lower <smooth level> value. The value must be between 0 and 255 (inclusive); 0 means "never overlap adjacent squares".
splitting FLAG_SPLITTING A <splitting> object converts to <food> <other_arch> objects; when it is hit physically. For non-living objects <food> is checked: if it is zero, the change happens; otherwise <food> is decreased by one. I suggest you don't mess with this value - leave the default in place.
title obj::title This is the object's title. Once an object is identified the title is attached to the name. Typical titles are "of Mostrai", "of xray vision" etc.
treasurelist obj::randomitems This entry determines what kind of treasure will appear, when <generate goods> is enabled. Look into /crossfire/share/crossfire/treasures for details about existing treasurelists.
unpaid FLAG_UNPAID An <unpaid> item cannot be used unless a player carried it over a shop mat, paying the demanded price. Setting this flag makes sense only for pickable items inside shops.
value obj::value Adds a certain value to the object: It will be worth that many times the default value from it's archetype (E.g. "value = 3" means three times worth the default value). Value for buying/selling will be further modified by various factors. Hence, testing values in-game is usually inevitable.
weight obj::weight This value defines the object's weight in grams (1000g is 1kg). Objects with zero weight are not pickable for players. Still, set the "non-pickable"-flag for explicitly non-pickable objects (hey, this is open source.. you never know ;) ).