Crossfire Server, Trunk  R20513
Rune

Description

A rune is a magical inscription on the dungeon floor.

Runes hit any monster or person who steps on them for 'dam' damage in 'attack type' attack type. Alternatively, the rune could contain any spell, and will cast this spell when it detonates. Yet another kind is the "summoning rune", summoning predefined monsters of any kind, at detonation.

Many runes are already defined in the archetypes.

Type defined by:

Attributes

Attribute Field Description
artifact obj::artifact If defined, refers to an artifact to get values from.
attack type obj::attacktype If there isn't any spell (and <summon monster> is unset), this attribute defines what attack type to use for direct damage when the rune detonates.
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.
detonation text obj::msg When the rune detonates, this text is displayed to the victim. For especially powerful runes, create an appropriate thrilling description. ;)
direct damage liv::dam <direct damage> specifies how much damage is done by the rune, if it doesn't contain a spell. This should be set in reasonable relation to the rune's level.
direction liv::maxsp If set, the rune will cast it's containing spell (if any) in this <direction>.In most cases this appears useless because the spell directly hits the player.
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.
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.
name obj::name This is the name of the object, displayed to the player.
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.
number of charges liv::hp

The rune will detonate <number of charges> times before disappearing.

Should be not 0 if 'unlimited charges' is set.

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.
rune level obj::level

This value sets the level the rune will cast the spell it contains at, if applicable. A level 99 rune casts a very, very mean spell of whatever. (<rune level> 0 runes won't detonate at all!)

Level Also effects how easily a rune may be found and disarmed, and how much experience the player gets for doing so. Beware: High level runes can be quite a cheap source of experience! So either make them tough, or keep the level low.

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".
spell arch obj::other_arch This string defines the spell in the rune, if any. <spell arch> is optional, but if present, overrides the <spell> setting. You can choose any of the existing arches.
spell name obj::slaying Name of the spell in the rune, if any. <spell name> is optional, but if present, overrides the <spell> setting.
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.
summon amount liv::maxhp This should only be set to a summoning rune. It will then summon that many creatures of the kind <summon monster>.
summon monster obj::race If this is set to the arch name of any monster, together with <spell name> "summon evil monster", the rune will summon a bunch of those on detonation. (dam and attack type will still be ignored in this case). Runes are even capable of summoning multi-square monsters, given enough space. You'd better test it though.
unlimited charges FLAG_LIFESAVE If set, then the rune will detonate forever if the number of charges is not 0.
visibility liv::Cha This value determines what fraction of the time the rune is visible: It'll be randomly visible 1/<visibility> of the time. Also effects how easily the rune may be found.