Crossfire Server, Trunk  R20513
Disease

Description

Diseases are an interesting form of spellcraft in Crossfire. Once casted, they can spread out and infect creatures in a large area. Being infected can have various effects, from amusing farts to horrible damage - almost everything is possible.

Type defined by:

Attributes

Attribute Field Description
artifact obj::artifact If defined, refers to an artifact to get values from.
attack type obj::attacktype The disease will attack the host with the given <attack type>. Godpower attack type is commonly used for "unresistable" diseases.
attenuation obj::last_grace The <attenuation> value reduces the diseases' <infectiousness> every time it infects someone new. This limits how many generations a disease can propagate.
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.
charisma liv::Cha The player's charisma will rise by the given value while being infected. (Negative values make charisma fall)
constitution liv::Con The player's constitution will rise by the given value while being infected. (Negative values make constitution fall)
create arch obj::other_arch

If set, the specified arch is created and dropped every time the symptoms strike.

This can be various things: farts, body pieces, eggs ... Even monsters can be created that way. You could also make a disease where some exotic stuff like money/gems is created.

curing duration liv::maxgrace

The disease will last in the host for <curing duration> "disease moves" (Assuming the host survives and doesn't use a curing spell). After this period the disease is naturally cured, which provides the host with immunity from this particular disease of lower or equal level.

A negative value means the disease can never be cured naturally.

Note that this value can be further modulated by spell-parameters, if the disease is registered as spell in the code. Due to that, most default diseases take a lot longer to cure than it seems.

damage liv::dam

A disease with a positive <damage> value will strike the player for that amount of damage every time the symptoms occur. A negative <damage> value produces %-based damage: "&lt;damage&gt; -10" means the player's health is reduced by 10% every time the symptoms strike.

Diseases with %-based damage can be dangerous - but not deadly - for players of all levels.

dexterity liv::Dex The player's dexterity will rise by the given value while being infected. (Negative values make dexterity fall)
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.
exp. for curing liv::exp When the player manages to cure this disease (with a curing spell), he is awarded with <exp. for curing> experience.
food depletion obj::last_eat Every time the disease "moves", the player's food is reduced by the value of <food depletion>. For negative values, a %-based amount is taken.
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.
health regen. liv::hp This value increases the player's healing rate. Negative values decrease it.
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.
infect race obj::race The disease will only infect creatures of the specified <race>. "&lt;race&gt; *" means every creature can be infected.
infection range obj::magic <infection range> sets the range at which infection may occur. If positive, the <infection range> is level dependant - If negative, it is not: E.g. "&lt;infection range&gt; -6" means creatures can be infected in six square range, and <plaque level> doesn't modify that.
infectiousness liv::wc

The <infectiousness> defines the chance of new creatures getting infected. If you set this too high, the disease is very likely to be too effective.

<infectiousness>/127 is the chance of someone in range catching it.

intelligence liv::Int The player's intelligence will rise by the given value while being infected. (Negative values make intelligence fall)
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.
mana depletion liv::maxsp Every time the disease "moves", the player's mana is reduced by the value of <mana depletion>. For negative values, a %-based amount is taken.
mana regen. liv::sp This value increases the player's rate of mana regeneration. Negative values decrease it.
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.
message obj::msg This text is displayed to the player every time the symptoms strike.
moving speed obj::speed The <speed> of the disease determines how fast the disease will "move", thus how fast the symptoms strike the host.
name obj::name This is the name of the object, displayed to the player.
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.
persistence liv::maxhp <persistence> defines how long the disease can persist OUTSIDE a host. The disease can "move" <persistence> times outside a host before it vanishes. A negative value means the disease lasts for permanent (which is only recommended to use in maps without monsters).
plaque level obj::level The <plaque level> is proportional to the disease's deadliness. This mainly reflects in the <damage>. It has no effect on most other symptoms. Nevertheless, it is a very important value for all damage-inflicting diseases.
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.
power liv::Pow The player's power will rise by the given value while being infected. (Negative values make power fall)
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.
progressiveness liv::ac Every time the disease "moves" the severity of the symptoms are increased by <progressiveness>/100. (severity = 1 + (accumulated progression)/100)
slowdown penalty obj::last_sp If set, the disease imposes a <slowdown penalty> while being infected. The player's speed is reduced by <slowdown penalty> % of normal value.
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.
strength liv::Str The player's strength will rise by the given value while being infected. (Negative values make strength fall)
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.
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 ;) ).
wisdom liv::Wis The player's wisdom will rise by the given value while being infected. (Negative values make wisdom fall)