view release on metacpan or search on metacpan
Deliantra.pm view on Meta::CPAN
alive wiz was_wiz applied unpaid can_use_shield no_pick is_animated monster
friendly generator is_thrown auto_apply treasure player sold see_invisible
can_roll overlay_floor is_turnable is_used_up identified reflecting changing
splitting hitback startequip blocksview undead scared unaggressive
reflect_missile reflect_spell no_magic no_fix_player is_lightable tear_down
run_away pick_up unique no_drop can_cast_spell can_use_scroll can_use_range
can_use_bow can_use_armour can_use_weapon can_use_ring has_ready_range
has_ready_bow xrays is_floor lifesave no_strength sleep stand_still
random_move only_attack confused stealth cursed damned see_anywhere
known_magical known_cursed can_use_skill been_applied has_ready_scroll
can_use_rod can_use_horn make_invisible inv_locked is_wooded is_hilly
has_ready_skill has_ready_weapon no_skill_ident is_blind can_see_in_dark
is_cauldron is_dust no_steal one_hit berserk neutral no_attack no_damage
activate_on_push activate_on_release is_water use_content_on_gen is_buildable
precious
body_range body_arm body_torso body_head body_neck body_skill
body_finger body_shoulder body_foot body_hand body_wrist body_waist
));
our %EVENT_TYPE = (
Deliantra/Data.pm view on Meta::CPAN
'alive',
{
type => 'fixed',
value => 1
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
],
name => 'Floor',
section => [
[
'terrain',
[
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
],
name => 'Floor (Encounter)',
section => [
[
'terrain',
[
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
{
desc => 'The <position state> defines the position of the gate: Zero means completely open/down, the "number of animation-steps" (usually about 6 or 7) means completely closed/up state. I suggest you don\'t mess with this value - Leave the default...
name => 'position state',
type => 'int'
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
],
[
'damned',
{
desc => 'Restricting the use of prayers to pass this door. This has an effect only if <block view> is disabled.',
name => 'restrict prayers',
type => 'bool'
}
]
],
desc => 'Gates play an important role in Deliantra. Gates can be opened by activating a button/trigger, by speaking passwords (-> magic_ear) or carrying special key-objects (-> inventory checker). Unlike locked doors, gates can get shut again aft...
ignore => [
$IGNORE_LIST{non_pickable},
'connected'
],
name => 'Gate',
use => 'Use gates to divide your maps into seperated areas. After solving area A, the player gains access to area B, and so on. Make your maps more complex than "one-way".'
},
Girdle => {
attr => [
[
Deliantra/Data.pm view on Meta::CPAN
],
name => 'Hazard Floor',
section => [
[
'terrain',
[
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
{
desc => 'Whenever the inventory checker is triggered, all objects with identical <connection> value get activated. This only makes sense together with <blocking passage> disabled.',
name => 'connection',
type => 'string'
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
'move_slow_penalty',
{
desc => 'If <slow movement> is set to a value greater zero, all creatures matching \'slow move\' will be slower than normal on this spot. <slow movement> 1 - rough terrain <slow movement> 2 - very rough terrain ... <slow movement> 5 - default for ...
name => 'slow movement penalty',
type => 'int'
}
],
[
'last_heal',
{
desc => '<remove match> means remove object if found. Setting this is usually not recommended because inv. checkers are in general invisible. So, unlike for altars/ locked doors, the player won\'t expect to lose an object when walking over that sq...
name => 'remove match',
type => 'bool'
}
]
],
desc => 'Inventory checkers passively check the players inventory for a specific object. You can set a connected value that is triggered either if that object is present or missing (-> "last_sp") when a player walks over the inv. checker. A va...
ignore => [
$IGNORE_LIST{system_object},
'connected'
],
Deliantra/Data.pm view on Meta::CPAN
{
desc => 'Which movement types deactivate this object (e.g. button).',
name => 'movement off',
type => 'movement_type'
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
]
],
desc => 'Match objects use the deliantra matching language (http://pod.tst.eu/http://cvs.schmorp.de/deliantra/server/lib/cf/match.pm) to match items on the same mapspace (if move_on/off are unset) or items trying to enter (if move_blocked is set)...
ignore => [
$IGNORE_LIST{non_pickable},
'connected'
],
name => 'Item Match',
use => 'If you want to trigger something else (e.g. a gate) when an item is above this object, use the move_on/move_off settings. If you want to keep something from entering if it has (or lacks) a specific item, use the move_blocked setting.'
},
'Item Transformer' => {
attr => [
[
'food',
{
desc => '<number of uses> controls how many times the item transformer can be used. The value 0 means "unlimited"',
name => 'number of uses',
type => 'int'
}
Deliantra/Data.pm view on Meta::CPAN
[
'no_pick',
{
type => 'fixed',
value => 1
}
],
[
'slaying',
{
desc => 'The <key string> in the door must be identical with the <key string> in the special key, then the door is unlocked. It is VERY important to set the <key string> to something that is unique among the Deliantra mapset. DONT EVER USE the def...
name => 'key string',
type => 'string'
}
],
[
'no_magic',
{
desc => 'Restricting the use of spells to pass this door. This should be set in most cases. (Don\'t forget that the spell "dimension door" is easily available at about wisdom level 10).',
name => 'restrict spells',
type => 'bool'
Deliantra/Data.pm view on Meta::CPAN
[
'msg',
{
desc => 'When a player is trying to open the door without carrying the appropriate key, this text is displayed to the player. This is a good opportunity to place hints about the special key needed to unlock the door.',
end => 'endmsg',
name => 'lock message',
type => 'text'
}
]
],
desc => 'A locked door can be opened only when carrying the appropriate special key.',
ignore => [
$IGNORE_LIST{non_pickable}
],
name => 'Locked Door',
use => 'If you want to create a locked door that cannot be opened (no key), set a <key string> like "no_key_available". This will clearify things and only a fool would create a key matching that string. Door-objects can not only be used for...
},
'Magic Ear' => {
attr => [
[
'no_pick',
{
type => 'fixed',
value => 1
}
],
Deliantra/Data.pm view on Meta::CPAN
desc => 'The magic wall will cast it\'s spells always in the specified <direction>. A magic wall with direction set to <none> will always fire in a random direction.',
name => 'direction',
type => 'list',
value => $LIST{direction}
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
],
name => 'Marker',
use => 'Markers hold real cool possibilities for map-making. I encourage you to use them frequently. However there is one negative point about markers: Players don\'t "see" what\'s going on with them. It is your task, as map-creator, to make sure...
},
Misc => {
attr => [
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
'activate_on_release',
{
desc => 'Whether the teleporter should only be activated on release.',
name => 'activate on release',
type => 'bool'
}
],
[
'hp',
{
desc => 'The pit will transport creatures (and items) randomly into a two-square radius of the destination coordinates. If the destination square becomes blocked, the pit will act like being filled up and not work anymore!',
name => 'destination X',
type => 'int'
}
],
[
'sp',
{
desc => 'The pit will transport creatures (and items) randomly into a two-square radius of the destination coordinates. If the destination square becomes blocked, the pit will act like being filled up and not work anymore!',
name => 'destination Y',
type => 'int'
}
],
[
'wc',
{
desc => 'The <position state> defines the position of the gate: Zero means completely open/down, the "number of animation-steps" (usually about 6 or 7) means completely closed/up state. I suggest you don\'t mess with this value - Leave the default...
name => 'position state',
type => 'int'
Deliantra/Data.pm view on Meta::CPAN
],
[
'move_on',
{
desc => 'Which movement types automatically (as opposed to manually) activate this object.',
name => 'movement on',
type => 'movement_type'
}
]
],
desc => 'Pits are holes, transporting the player when he walks (and falls) into them. A speciality about pits is that they don\'t transport the player to the exact destination, but within a configurable radius of the destination (never on blocked...
ignore => [
$IGNORE_LIST{non_pickable},
'connected'
],
name => 'Pit',
use => 'Pits can add interesting effects to your map. When using them, make sure to use them in a "logical way": Pits should always drop the player to some kind of lower level. They should not be used to randomly interconnect maps like teleporter...
},
'Poison Food' => {
desc => 'When eating, the player\'s stomache is drained by 1/4 of food. If his food drops to zero, the player might even die.',
name => 'Poison Food'
Deliantra/Data.pm view on Meta::CPAN
]
],
use => 'Avoid monsters stepping on your runes. For example, summoning runes together with spellcasting- and attack-runes is usually a bad idea.'
},
'Safe ground' => {
attr => [
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
]
]
],
use => 'Feel free to assign resistancies and stats to a skill tools or change the skill that is given.'
},
'Special Key' => {
attr => [
[
'slaying',
{
desc => 'This string must be identical with the <key string> in the locked door, then it can be unlocked. It can also be used to trigger inventory checkers.',
name => 'key string',
type => 'string'
}
],
[
'material',
{
desc => 'For Special Keys, material should always be unset or set to Adamantite. This prevents the key from getting burned or otherwise destroyed.',
name => 'material',
type => 'bitmask',
Deliantra/Data.pm view on Meta::CPAN
],
[
'no_steal',
{
desc => 'This item can\'t be stolen if the flag is set.',
name => 'not stealable',
type => 'bool'
}
]
],
desc => 'When carrying the appropriate special key, a locked door can be opened. The key will dissapear. <br><br> This object-type can also be used for "passport"-like items: When walking onto an invetory checker, a gate for example might get ope...
ignore => [
'material'
],
name => 'Special Key',
use => 'How to make a "passport": You take the special key arch (archetype name is "key2"), set the face to something like card.111 and the name to "passport" - that\'s all. The <key string> certainly must match with the appropiate inventor...
},
Spell => {
attr => [
[
'no_drop',
Deliantra/Data.pm view on Meta::CPAN
{
desc => 'Which movement types automatically (as opposed to manually) activate this object.',
name => 'movement on',
type => 'movement_type'
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
{
desc => 'The <position state> defines the position of the gate: Zero means completely open/down, the "number of animation-steps" (usually about 6 or 7) means completely closed/up state. I suggest you don\'t mess with this value - Leave the default...
name => 'position state',
type => 'int'
}
],
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
Deliantra/Data.pm view on Meta::CPAN
],
[
'hp',
{
desc => 'Defines the duration the gate remains closed. This only takes effect if the gate is not connected.',
name => 'open duration',
type => 'int'
}
]
],
desc => 'Gates play an important role in Deliantra. Gates can be opened by activating a button/trigger, by speaking passwords (-> magic_ear) or carrying special key-objects (-> inventory checker). Unlike locked doors, gates can get shut again aft...
ignore => [
$IGNORE_LIST{non_pickable},
'connected'
],
name => 'Timed Gate',
use => 'Use gates to divide your maps into separated areas. After solving area A, the player gains access to area B, and so on. Make your maps more complex than "one-way".'
},
Torch => {
attr => [
[
Deliantra/Data.pm view on Meta::CPAN
'weight',
{
desc => 'This value defines how much weight the trapdoor can hold. Once items or creatures are gathered on the trapdoor, with a total weight surpassing this value, then the trapdoor will open and things start falling through.',
name => 'hold weight',
type => 'int'
}
],
[
'hp',
{
desc => 'The trapdoor will transport creatures (and items) randomly into a two-square radius of the destination coordinates. If the destination square becomes blocked, the trapdoor will act like being filled up and not work anymore!',
name => 'destination X',
type => 'int'
}
],
[
'sp',
{
desc => 'The trapdoor will transport creatures (and items) randomly into a two-square radius of the destination coordinates. If the destination square becomes blocked, the trapdoor will act like being filled up and not work anymore!',
name => 'destination Y',
type => 'int'
}
]
],
desc => 'Trapdoors are very similar to pits. The difference is that they can not be closed. Instead, the weight of the object on the trapdoor determines weither it slams the trapdoor open and falls through or not.<br> Once a trapdoor has been ope...
ignore => [
$IGNORE_LIST{non_pickable}
],
name => 'Trapdoor',
Deliantra/Data.pm view on Meta::CPAN
],
name => 'Trigger Marker',
use => 'Markers hold real cool possibilities for map-making. I encourage you to use them frequently. However there is one negative point about markers: Players don\'t "see" what\'s going on with them. It is your task, as map-creator, to make sure...
},
Wall => {
attr => [
[
'move_block',
{
desc => 'Objects using these movement types cannot move over this space.',
name => 'blocked movement',
type => 'movement_type'
}
],
[
'move_allow',
{
desc => 'Objects using these movement types are allowed to move over this space. Takes precedence over \'blocked movements\'.',
name => 'allowed movement',
type => 'movement_type'
}
],
[
'move_slow',
{
desc => 'The types of movement that should by slowed down by the \'slow movement penalty\'.',
name => 'slowed movement',
type => 'movement_type'
bin/cfmap-cavehify view on Meta::CPAN
sub xy($$) {
my ($x, $y) = @_;
$x >= 0 && $x < $map->{width}
&& $y >= 0 && $y < $map->{height}
? $cols->[$_[0]][$_[1]]
: undef
}
# on-map, not "blocked", has floor
sub nonblocked($$) {
my $as = &xy
or return 1;
@$as
or return;
$as->[-1]{_name} eq "blocked"
and return;
grep $ARCH{$_->{_name}}{is_floor}, @$as
}
for my $path (@ARGV) {
eval {
open my $fh, "<:raw:perlio:utf8", $path
or die "$path: $!\n";
bin/cfmap-cavehify view on Meta::CPAN
for my $cave (@$as) {
my $bn = $bn{ $cave->{_name} }
or next;
if ($cave->{blocksview} ne 0) {
$heuristic or next;
$bn ^= 15;
# H/V
$bn & 1 or nonblocked $x , $y-1 or next;
$bn & 2 or nonblocked $x+1, $y or next;
$bn & 4 or nonblocked $x , $y+1 or next;
$bn & 8 or nonblocked $x-1, $y or next;
# diagonal
$bn & 3 or nonblocked $x+1, $y-1 or next;
$bn & 6 or nonblocked $x+1, $y+1 or next;
$bn & 12 or nonblocked $x-1, $y+1 or next;
$bn & 9 or nonblocked $x-1, $y-1 or next;
}
$cave->{_name} =~ s/^cave/caveh/;
}
}
}
$map->write_file ($path);
1
res/autojoin.txt view on Meta::CPAN
# dun_2_1_1
# cave11
# cave1
# cave_13
# cave9
# dun_2_1_2
# cave4
# cave12
# cave3
# cave2
# blocked
# end
start
footbridge_0
footbridge_1_2
footbridge_1_4
footbridge_2_2_1
footbridge_1_1
footbridge_2_1_1
footbridge_2_2_2
res/types.xml view on Meta::CPAN
Which movement types deactivate this object (e.g. button).
</attribute>
">
<!ENTITY move_type "
<attribute arch='move_type' editor='movement type' type='movement_type'>
Determines which kinds of movement this object can use (e.g. for monsters)
or grants (e.g. for amulets).
</attribute>
">
<!ENTITY move_block "
<attribute arch='move_block' editor='blocked movement' type='movement_type'>
Objects using these movement types cannot move over this space.
</attribute>
">
<!ENTITY movement_types_terrain "
&move_block;
<attribute arch='move_allow' editor='allowed movement' type='movement_type'>
Objects using these movement types are allowed to move over this space. Takes
precedence over 'blocked movements'.
</attribute>
<attribute arch='move_slow' editor='slowed movement' type='movement_type'>
The types of movement that should by slowed down by the 'slow movement penalty'.
</attribute>
<attribute arch='move_slow_penalty' editor='slow movement penalty' type='int'>
If <slow movement> is set to a value greater zero, all
creatures matching 'slow move' will be slower than normal on this spot.
<slow movement> 1 - rough terrain
<slow movement> 2 - very rough terrain
res/types.xml view on Meta::CPAN
<!--####################################################################-->
<type number="91" name="Gate">
<ignore>
<ignore_list name="non_pickable" />
<attribute arch="connected"/>
</ignore>
<description><![CDATA[
Gates play an important role in Deliantra. Gates can be opened
by activating a button/trigger, by speaking passwords (-> magic_ear)
or carrying special key-objects (-> inventory checker).
Unlike locked doors, gates can get shut again after a player has
passed, which makes them more practical in many cases.]]>
</description>
<use><![CDATA[
Use gates to divide your maps into seperated areas. After solving
area A, the player gains access to area B, and so on. Make your
maps more complex than "one-way".]]>
</use>
<attribute arch="no_pick" value="1" type="fixed" />
<attribute arch="speed" value="1" type="float">
The speed of the gate affects how fast it is closing/opening.
res/types.xml view on Meta::CPAN
</attribute>
<attribute arch="connected" editor="connection" type="string">
Whenever the inventory checker is triggered, all objects with identical
<connection> value get activated. This only makes sense together with
<blocking passage> disabled.
</attribute>
&movement_types_terrain;
<attribute arch="last_heal" editor="remove match" type="bool">
<remove match> means remove object if found. Setting this is usually not
recommended because inv. checkers are in general invisible. So, unlike
for altars/ locked doors, the player won't expect to lose an object when
walking over that square. And he doesn't even get a message either.
So, *if* you enable <remove match>, make sure
to inform the player what's going on!
</attribute>
</type>
<!--####################################################################-->
<type number="163" name="Item Transformer">
<description><![CDATA[
res/types.xml view on Meta::CPAN
This item can't be stolen if the flag is set.
</attribute>
</type>
<!--####################################################################-->
<type number="20" name="Locked Door">
<ignore>
<ignore_list name="non_pickable" />
</ignore>
<description><![CDATA[
A locked door can be opened only when carrying
the appropriate special key.]]>
</description>
<use><![CDATA[
If you want to create a locked door that cannot be opened (no key),
set a <key string> like "no_key_available". This will clearify things
and only a fool would create a key matching that string.
Door-objects can not only be used for "doors". In many maps these
are used with all kinds of faces/names, especially often as
"magic force". A good example is the map "Lake_Country/ebony/masterlev".
There you have magic forces (door objects) put under certain artifact
items. To get your hands on the artifacts, you need to bring up the
appropriate quest items (key objects).]]>
</use>
<attribute arch="move_type" value="0" type="fixed" />
<attribute arch="no_pick" value="1" type="fixed" />
<attribute arch="slaying" editor="key string" type="string">
The <key string> in the door must be identical with the
<key string> in the special key, then the door is unlocked.
It is VERY important to set the <key string> to something that
is unique among the Deliantra mapset.
DONT EVER USE the default string "set_individual_value".
When the key string starts with "match ", then it is expected to
be a match expression, which will be applied to the player, so
you can use e.g. (match type=POTION in inv). Note that the matched
object will be removed.
</attribute>
res/types.xml view on Meta::CPAN
<!--####################################################################-->
<type number="19" name="Item Match">
<ignore>
<ignore_list name="non_pickable" />
<attribute arch="connected"/>
</ignore>
<description><![CDATA[
Match objects use the deliantra matching language
(http://pod.tst.eu/http://cvs.schmorp.de/deliantra/server/lib/cf/match.pm)
to match items on the same mapspace (if move_on/off are unset) or
items trying to enter (if move_blocked is set).
If a connected value is given, then it is triggered if the first object
matching the expression is put on it, and the last is removed.]]>
</description>
<use><![CDATA[
If you want to trigger something else (e.g. a gate) when an item is above this object,
use the move_on/move_off settings.
If you want to keep something from entering if it has (or lacks) a specific item,
use the move_blocked setting.]]>
</use>
<attribute arch="no_pick" value="1" type="fixed" />
<attribute arch="slaying" editor="match expression" type="string">
&match_compat;
Optionally you can leave out the "match " prefix.
</attribute>
<attribute arch="connected" editor="connection" type="string">
When the match is triggered, all objects with the same
connection value get activated.
res/types.xml view on Meta::CPAN
<!--####################################################################-->
<type number="94" name="Pit">
<ignore>
<ignore_list name="non_pickable" />
<attribute arch="connected"/>
</ignore>
<description><![CDATA[
Pits are holes, transporting the player when he walks (and falls) into them.
A speciality about pits is that they don't transport the player to
the exact destination, but within a configurable radius of the destination
(never on blocked squares).<br>
Optionally, pits can get closed and opened, similar to gates.<br><br>
Monsters and items are affected by pits just as well as players.
Even multipart monsters can fall through them, given enough space.]]>
</description>
<use><![CDATA[
Pits can add interesting effects to your map. When using them, make
sure to use them in a "logical way": Pits should always drop the
player to some kind of lower level. They should not be used to
randomly interconnect maps like teleporters do.]]>
</use>
res/types.xml view on Meta::CPAN
The radius of the square area that the pit will randomly put the player into (0 to 3, default 1).
</attribute>
<attribute arch="connected" editor="connection" type="string">
When a <connection> value is set, the pit can be opened/closed
by activating the connection.
</attribute>
&activate_on;
<attribute arch="hp" editor="destination X" type="int">
The pit will transport creatures (and items) randomly into a two-square
radius of the destination coordinates.
If the destination square becomes blocked, the pit will act like
being filled up and not work anymore!
</attribute>
<attribute arch="sp" editor="destination Y" type="int">
The pit will transport creatures (and items) randomly into a two-square
radius of the destination coordinates.
If the destination square becomes blocked, the pit will act like
being filled up and not work anymore!
</attribute>
<attribute arch="wc" editor="position state" type="int">
The <position state> defines the position of the gate:
Zero means completely open/down, the "number of animation-steps" (usually
about 6 or 7) means completely closed/up state. I suggest you don't
mess with this value - Leave the default in place.
</attribute>
&move_on;
</type>
res/types.xml view on Meta::CPAN
be learned from this scroll.
</attribute>
</type>
<!--####################################################################-->
<type number="21" name="Special Key">
<ignore>
<attribute arch="material" />
</ignore>
<description><![CDATA[
When carrying the appropriate special key, a locked door can
be opened. The key will dissapear.
<br><br>
This object-type can also be used for "passport"-like items:
When walking onto an invetory checker, a gate for example might
get opened. The "passport" will stay in the player's inventory.]]>
</description>
<use><![CDATA[
How to make a "passport": You take the special key arch
(archetype name is "key2"), set the face to something like
card.111 and the name to "passport" - that's all. The <key string>
certainly must match with the appropiate inventory checker.
<br><br>
Of course you can be creative with names and faces of
key-objects. A "mysterious crystal" or a "big dragon claw"
(with appropriate faces) appear more interesting than just
a "strange key", or "passport".]]>
</use>
<attribute arch="slaying" editor="key string" type="string">
This string must be identical with the <key string> in the
locked door, then it can be unlocked. It can also be used
to trigger inventory checkers.
</attribute>
<attribute arch="material" editor="material" type="bitmask_material">
For Special Keys, material should always be unset or set
to Adamantite. This prevents the key from getting
burned or otherwise destroyed.
</attribute>
<attribute arch="unique" editor="unique item" type="bool">
Unique items exist only one time on a server. If the item
is taken, lost or destroyed - it's gone for good.
res/types.xml view on Meta::CPAN
<!--####################################################################-->
<type number="26" name="Timed Gate">
<ignore>
<ignore_list name="non_pickable" />
<attribute arch="connected"/>
</ignore>
<description><![CDATA[
Gates play an important role in Deliantra. Gates can be opened
by activating a button/trigger, by speaking passwords (-> magic_ear)
or carrying special key-objects (-> inventory checker).
Unlike locked doors, gates can get shut again after a player has
passed, which makes them more practical in many cases. Unlike normal
gates, timed gates open when triggered but automatically close again
after some time.]]>
</description>
<use><![CDATA[
Use gates to divide your maps into separated areas. After solving
area A, the player gains access to area B, and so on. Make your
maps more complex than "one-way".]]>
</use>
<attribute arch="no_pick" value="1" type="fixed" />
res/types.xml view on Meta::CPAN
&move_on;
<attribute arch="weight" editor="hold weight" type="int">
This value defines how much weight the trapdoor can hold.
Once items or creatures are gathered on the trapdoor, with
a total weight surpassing this value, then the trapdoor will
open and things start falling through.
</attribute>
<attribute arch="hp" editor="destination X" type="int">
The trapdoor will transport creatures (and items) randomly into
a two-square radius of the destination coordinates.
If the destination square becomes blocked, the trapdoor will act like
being filled up and not work anymore!
</attribute>
<attribute arch="sp" editor="destination Y" type="int">
The trapdoor will transport creatures (and items) randomly into
a two-square radius of the destination coordinates.
If the destination square becomes blocked, the trapdoor will act like
being filled up and not work anymore!
</attribute>
</type>
<!--####################################################################-->
<type number="4" name="Treasure">
<ignore>
<attribute arch="nrof" />
<attribute arch="title" />
<attribute arch="name_pl" />