Deliantra

 view release on metacpan or  search on metacpan

Deliantra/Data.pm  view on Meta::CPAN

	      type => 'int'
	    }
	  ],
	  [
	    'Int',
	    {
	      desc => 'The player\'s intelligence will rise by the given value while being infected. (Negative values make intelligence fall)',
	      name => 'intelligence',
	      type => 'int'
	    }
	  ],
	  [
	    'Pow',
	    {
	      desc => 'The player\'s power will rise by the given value while being infected. (Negative values make power fall)',
	      name => 'power',
	      type => 'int'
	    }
	  ],
	  [
	    'Wis',
	    {
	      desc => 'The player\'s wisdom will rise by the given value while being infected. (Negative values make wisdom fall)',
	      name => 'wisdom',
	      type => 'int'
	    }
	  ],
	  [
	    'Cha',
	    {
	      desc => 'The player\'s charisma will rise by the given value while being infected. (Negative values make charisma fall)',
	      name => 'charisma',
	      type => 'int'
	    }
	  ]
	]
      ]
    ],
    use => 'Diseases are extremely flexible and usable in a many ways. So far they are mostly used for causing bad, unwanted effects. You could just as well create a disease which helps the player (recharging mana for example). Infection with a "posi...
  },
  Door => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'hp',
	{
	  desc => 'The more <hitpoints> the door has, the longer it takes to be broken.',
	  name => 'hitpoints',
	  type => 'int'
	}
      ],
      [
	'ac',
	{
	  desc => 'Doors of high <armour class> are less likely to get hit. <armour class> can be considered the "counterpiece" to <weapon class>.',
	  name => 'armour class',
	  type => 'int'
	}
      ],
      [
	'other_arch',
	{
	  desc => 'This string defines the object that will be created when the door was defeated.',
	  name => 'drop arch',
	  type => 'string'
	}
      ],
      [
	'randomitems',
	{
	  desc => 'This entry determines what kind of traps will appear in the door.',
	  name => 'treasurelist',
	  type => 'treasurelist'
	}
      ],
      [
	'treasure_env',
	{
	  desc => 'Set this flag to move treasure items created into the environment (map) instead of putting them into the object.',
	  name => 'treasure in env',
	  type => 'bool'
	}
      ]

Deliantra/Data.pm  view on Meta::CPAN

	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'no_magic',
	{
	  desc => 'If enabled, it is impossible for players to use (wizard-) spells on that spot.',
	  name => 'no spells',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'If enabled, it is impossible for players to use prayers on that spot. It also prevents players from saving.',
	  name => 'no prayers',
	  type => 'bool'
	}
      ],
      [
	'unique',
	{
	  desc => 'Unique floor means that any items dropped on that spot will be saved beyond map reset. For permanent apartments, all floor tiles must be set <unique map>.',
	  name => 'unique map',
	  type => 'bool'
	}
      ],
      [
	'is_buildable',
	{
	  desc => 'A buildable can be built upon. This is usually used in combination with the unique attribute for player apartments or guild storages. But it\'s use is not limited to private maps.',
	  name => 'buildable',
	  type => 'bool'
	}
      ],
      [
	'msg',
	{
	  desc => 'This text may describe the object.',
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}
      ]
    ],
    desc => 'Floor is a very basic thing whithout too much functionality. It\'s a floor - you stand on it.',
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    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'
	    }
	  ],
	  [
	    '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 ...
	      name => 'slow movement penalty',
	      type => 'int'
	    }
	  ],
	  [
	    'is_wooded',
	    {
	      desc => 'This flag indicates this spot contains wood or high grass. Players with activated woodsman skill can move faster here.',
	      name => 'wooded terrain',
	      type => 'bool'
	    }
	  ],
	  [
	    'is_hilly',
	    {
	      desc => 'This flag indicates this spot contains hills or large rocks. Players with activated mountaineer skill can move faster here.',
	      name => 'hilly terrain',
	      type => 'bool'
	    }
	  ]
	]
      ]
    ]
  },
  'Floor (Encounter)' => {
    attr => [
      [
	'is_floor',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'no_magic',
	{
	  desc => 'If enabled, it is impossible for players to use (wizard-) spells on that spot.',
	  name => 'no spells',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'If enabled, it is impossible for players to use prayers on that spot. It also prevents players from saving.',
	  name => 'no prayers',
	  type => 'bool'
	}
      ],
      [
	'unique',
	{
	  desc => 'Unique floor means that any items dropped on that spot will be saved beyond map reset. For permanent apartments, all floor tiles must be set <unique map>.',
	  name => 'unique map',
	  type => 'bool'
	}
      ],
      [
	'is_buildable',
	{
	  desc => 'A buildable can be built upon. This is usually used in combination with the unique attribute for player apartments or guild storages. But it\'s use is not limited to private maps.',
	  name => 'buildable',
	  type => 'bool'
	}
      ],
      [
	'msg',
	{
	  desc => 'This text may describe the object.',
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}
      ]
    ],
    desc => 'Encounter-Floor is pretty much the same as normal floor. Most outdoor floor/ground-arches are set to be "encounters". That is kind of a relict from former code: When walking over encounter-floor, players sometimes got beamed to little ma...
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    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'
	    }
	  ],
	  [
	    '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 ...
	      name => 'slow movement penalty',
	      type => 'int'
	    }
	  ],
	  [
	    'is_wooded',
	    {
	      desc => 'This flag indicates this spot contains wood or high grass. Players with activated woodsman skill can move faster here.',
	      name => 'wooded terrain',
	      type => 'bool'
	    }
	  ],
	  [
	    'is_hilly',
	    {
	      desc => 'This flag indicates this spot contains hills or large rocks. Players with activated mountaineer skill can move faster here.',
	      name => 'hilly terrain',
	      type => 'bool'
	    }
	  ]
	]
      ]
    ]
  },
  Food => {
    attr => [
      [
	'food',
	{
	  desc => 'The player\'s stomache will get filled with this amount of foodpoints. The player\'s health will increase by <foodpoints>/50 hp.',
	  name => 'foodpoints',
	  type => 'int'
	}
      ],
      [
	'startequip',
	{
	  desc => 'A godgiven item vanishes as soon as the player drops it to the ground.',
	  name => 'godgiven item',
	  type => 'bool'
	}
      ]
    ],
    desc => 'By eating/drinking food-objects, the player can fill his stomache and gain a little health.',
    name => 'Food'
  },
  Gate => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'speed',
	{
	  desc => 'The speed of the gate affects how fast it is closing/opening.',
	  type => 'float'
	}
      ],
      [
	'connected',
	{
	  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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'no_magic',
	{
	  desc => 'Restricting the use of spells to pass this gate. This has an effect only if <block view> is disabled.',
	  name => 'restrict spells',
	  type => 'bool'
	}
      ],
      [
	'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 => [
      [
	'magic',
	{
	  desc => '<magic bonus> works just like ac, except that it can be improved by "scrolls of Enchant Armour" or reduced by acid. It is less useful than direct armour-class bonus on the helmet. Important: <magic bonus> on girdles has no effect if there...
	  name => 'magic bonus',
	  type => 'int'
	}
      ]
    ],
    desc => 'Wearing a girdle, the object\'s stats will directly be inherited to the player. Girdles usually provide stats- or damage bonuses and no defense.',
    import => [
      'Amulet'
    ],
    name => 'Girdle',
    use => 'Feel free to create your own special artifacts. However, it is very important that you keep your artifact in balance with existing maps.'
  },
  Gloves => {
    attr => [
      [
	'magic',
	{
	  desc => 'If the gloves provide <armour class>, <magic bonus> will increase it. If the gloves have <weapon class> instead, then <magic bonus> will increase that.',
	  name => 'magic bonus',
	  type => 'int'
	}
      ]
    ],
    desc => 'Wearing gloves, the object\'s stats will directly be inherited to the player. Gloves can add defense or damage bonuses.',
    import => [
      'Amulet'
    ],
    name => 'Gloves',
    use => 'Feel free to create your own special artifacts. However, it is very important that you keep your artifact in balance with existing maps.'
  },
  Handle => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'connected',
	{
	  desc => 'Every time the handle is applied, all objects with the same <connection> value are activated.',
	  name => 'connection',
	  type => 'string'
	}
      ],

Deliantra/Data.pm  view on Meta::CPAN

	{
	  desc => 'The <base damage> defines how much damage is inflicted to the victim per hit. The final damage is influenced by several other factors like the victim\'s resistance and level.',
	  name => 'base damage',
	  type => 'int'
	}
      ],
      [
	'wc',
	{
	  desc => '<weapon class> improves the chance of hitting the victim. Lower values are better. Usually, hazard floors like lava are supposed to hit the victim all the time. Therefore, <weaponclass> should be set to something like -30.',
	  name => 'weaponclass',
	  type => 'int'
	}
      ],
      [
	'level',
	{
	  desc => 'I guess this value is supposed to work similar to monster levels. But in fact, it does not seem to have an effect. Set any non-zero value to be on the safe side.',
	  name => 'attack level',
	  type => 'int'
	}
      ],
      [
	'no_magic',
	{
	  desc => 'If enabled, it is impossible for players to use (wizard-) spells on that spot.',
	  name => 'no spells',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'If enabled, it is impossible for players to use prayers on that spot. It also prevents players from saving.',
	  name => 'no prayers',
	  type => 'bool'
	}
      ],
      [
	'unique',
	{
	  desc => 'Unique floor means that any items dropped on that spot will be saved beyond map reset. For permanent apartments, all floor tiles must be set <unique map>.',
	  name => 'unique map',
	  type => 'bool'
	}
      ]
    ],
    desc => 'The best example for Hazard Floor is lava. It works like standard floor, but damages all creatures standing on it. Damage is taken in regular time intervals.',
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    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'
	    }
	  ],
	  [
	    '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 ...
	      name => 'slow movement penalty',
	      type => 'int'
	    }
	  ],
	  [
	    'is_wooded',
	    {
	      desc => 'This flag indicates this spot contains wood or high grass. Players with activated woodsman skill can move faster here.',
	      name => 'wooded terrain',
	      type => 'bool'
	    }
	  ],
	  [
	    'is_hilly',
	    {
	      desc => 'This flag indicates this spot contains hills or large rocks. Players with activated mountaineer skill can move faster here.',
	      name => 'hilly terrain',
	      type => 'bool'
	    }
	  ]
	]
      ]
    ],
    use => 'The default lava for example does minor damage. But you can turn it up so that your hazard floor poses a real threat.<br> Like magic walls, such floors add a permanent thrill to your map. You can use that to safely chase off too-weak play...
  },
  Helmet => {
    attr => [
      [
	'magic',
	{
	  desc => '<magic bonus> works just like ac, except that it can be improved by "scrolls of Enchant Armour" or reduced by acid. It is less useful than direct armour-class bonus on the helmet. Important: <magic bonus> on helmets has no effect if there...
	  name => 'magic bonus',
	  type => 'int'
	}
      ]
    ],
    desc => 'Wearing a helmet, the object\'s stats will directly be inherited to the player. Normal helmets usually increase defense, while crowns add more special bonuses like stats/resistances paired with low defense.',
    import => [
      'Amulet'
    ],
    name => 'Helmet',
    use => 'Feel free to create your own special artifacts. However, it is very important that you keep your artifact in balance with existing maps.'
  },
  'Holy Altar' => {

Deliantra/Data.pm  view on Meta::CPAN

	  type => 'string'
	}
      ]
    ],
    desc => 'Inscribable Item - when inscribed, it becomes another object.',
    name => 'Inscribable'
  },
  'Inventory Checker' => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'slaying',
	{
	  desc => 'This string specifies the object we are looking for: We have a match if the player does/don\'t carry a key object or a mark with identical <key string>. Note that key objects usually appear as "passports" in this context. A typical exampl...
	  name => 'match key string',
	  type => 'string'
	}
      ],
      [
	'race',
	{
	  desc => 'This string specifies the object we are looking for: We have a match if the player does/don\'t carry an object of archtype <match arch name>.',
	  name => 'match arch name',
	  type => 'string'
	}
      ],
      [
	'hp',
	{
	  desc => 'This value specifies the object we are looking for: We have a match if the player does/don\'t carry an object that is of type <match type>. Example: Set <match type> 15 (type 15 => weapon) and <blocking passage> enabled. Now you have an i...
	  name => 'match type',
	  type => 'int'
	}
      ],
      [
	'last_sp',
	{
	  desc => 'Enabled means having that object is a match. Disabled means not having that object is a match.',
	  name => 'match = having',
	  type => 'bool'
	}
      ],
      [
	'connected',
	{
	  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'
	}
      ],
      [
	'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 (-&gt; "last_sp") when a player walks over the inv. checker. A va...
    ignore => [
      $IGNORE_LIST{system_object},
      'connected'
    ],
    name => 'Inventory Checker',
    use => 'Putting a check_inventory space in front of a gate (one below) and one on the opposite side works reasonably well as a control mechanism. Unlike the key/door-combo, this one works infinite since it is independant from map reset. Use it to...
  },
  'Item Match' => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'slaying',
	{
	  desc => 'If the string starts with \'match \', then it is interpreted as a match expression (e.g. \'match type=POTION\', or \'match type=SPELL in applied type=CONTAINER in inv in originator\'). For details, see http://pod.tst.eu/http://cvs.schmorp...
	  name => 'match expression',
	  type => 'string'
	}
      ],
      [
	'connected',
	{
	  desc => 'When the match is triggered, all objects with the same connection value get activated.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'move_on',
	{
	  desc => 'Which movement types automatically (as opposed to manually) activate this object.',
	  name => 'movement on',
	  type => 'movement_type'
	}
      ],
      [
	'move_off',
	{
	  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'
	}
      ],
      [
	'slaying',
	{
	  desc => 'Contains the verb that is used to construct a message to the player applying the item transformer.',
	  name => 'verb',
	  type => 'string'
	}
      ],
      [
	'startequip',
	{
	  desc => 'A godgiven item vanishes as soon as the player drops it to the ground.',
	  name => 'godgiven item',
	  type => 'bool'
	}
      ],
      [
	'msg',
	{
	  desc => 'This text may contain a description of the item transformer.',
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}
      ]
    ],
    desc => 'An item transformer is simply applied, after having marked a \'victim\' item. If the victim is suitable, it will be transformed into something else.',
    name => 'Item Transformer',
    use => 'To make an item transformable, you just have to fill the \'slaying\' field. The syntax is: <br> <pre>slaying slayer:[yield ]new_item[;slayer:[yield ]new_item]*</pre> <br> with [] denoting optional part, and * any number of preceding []. \...
  },
  Jewel => {
    attr => [
      [
	'race',
	{
	  type => 'fixed',
	  value => 'gold and jewels'
	}
      ],
      [
	'msg',
	{
	  desc => 'This text may describe the object.',
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}
      ]
    ],

Deliantra/Data.pm  view on Meta::CPAN

	  desc => 'This field is the speed of the lamp. (If the value 0.00208 is given here the fuel field will specify the burning duration in minutes.)',
	  name => 'burn speed',
	  type => 'float'
	}
      ],
      [
	'food',
	{
	  desc => 'This field sets the burning duration of the lamp, which depends on the speed field of this object.',
	  name => 'fuel',
	  type => 'int'
	}
      ],
      [
	'range',
	{
	  desc => 'This field sets the glow radius of the lamp if it is enabled. If you want to make a lamp that is already burning set the "glow radius" field.',
	  name => 'enabled glow radius',
	  type => 'int'
	}
      ],
      [
	'level',
	{
	  desc => 'If this field specyfies the cursed effect\'s level. If it is 0 no cursed effect will be generate. See also the "cursed" flag.',
	  name => 'level',
	  type => 'int'
	}
      ],
      [
	'cursed',
	{
	  desc => 'Cursed lamps, which have a level above 0, explode if the player applies them.',
	  name => 'cursed',
	  type => 'bool'
	}
      ]
    ],
    desc => 'Lamps are carryable light sources for players with a fuel tank.',
    name => 'Lamp'
  },
  'Locked Door' => {
    attr => [
      [
	'move_type',
	{
	  type => 'fixed',
	  value => 0
	}
      ],
      [
	'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'
	}
      ],
      [
	'damned',
	{
	  desc => 'Restricting the use of prayers to pass this door. This should be set in most cases.',
	  name => 'restrict prayers',
	  type => 'bool'
	}
      ],
      [
	'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 &lt;key string&gt; 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
	}
      ],
      [
	'connected',
	{
	  desc => 'The Magic_ear will trigger all objects with the same connection value, every time it is activated.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'msg',
	{
	  desc => 'This textfield contains the keyword-matching-syntax. The text should have the following format: "@match <keyword1>|<keyword2>|... ". Any number of keywords from one to infinite is allowed. Make sure they are seperated by a \'|\'. Examples...
	  end => 'endmsg',
	  name => 'keyword-matching',
	  type => 'text'
	}
      ]
    ],
    desc => 'Magic_ears trigger a connected value when the player speaks a specific keyword.',
    ignore => [
      $IGNORE_LIST{system_object},
      'connected'
    ],
    name => 'Magic Ear',
    use => 'Whenever you put magic_ears on your maps, make sure there are CLEAR and RELYABLE hints about the keywords somewhere. Don\'t make something like a gate that is opened by speaking "open" or "sesame", expecting the player to figure this out ...
  },
  'Magic Wall' => {
    attr => [
      [
	'dam',
	{
	  desc => 'The magic wall will cast this <spell>.',
	  name => 'spell',
	  type => 'spell'
	}
      ],
      [
	'level',
	{
	  desc => 'The wall will cast it\'s spells at level <spell level>. "level 1" walls cast spells at minimal strength. "level 100" walls cast deadly spells. Arch default is level 1 - you should always set this value to meet the overall difficulty of yo...
	  name => 'spell level',
	  type => 'int'
	}
      ],
      [
	'connected',
	{
	  desc => 'Every time the <connection> value is triggered, the wall will cast it\'s spell. You should set <casting speed> to zero, or this won\'t have much visible effect.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'activate_on_push',
	{
	  desc => 'Whether the teleporter should only be activated on push.',
	  name => 'activate on push',
	  type => 'bool'
	}
      ],
      [
	'activate_on_release',
	{
	  desc => 'Whether the teleporter should only be activated on release.',
	  name => 'activate on release',
	  type => 'bool'
	}
      ],
      [
	'speed',
	{
	  desc => 'The <casting speed> defines the spellcasting speed of the wall. You can fine-tune how long the duration between two casts shall be. If you want to create a wall that can be activated (cast per trigger) via connected lever/button/etc, you ...
	  name => 'casting speed',
	  type => 'float'
	}
      ],
      [
	'speed_left',
	{
	  desc => 'The speed left to the object. On every tick, if this value is higher than 0, the object acts/triggers/moves etc. and the value gets decremented by 1. Otherwise, it is incremented by <speed> on every tick.',
	  name => 'speed left',
	  type => 'float'
	}
      ],
      [
	'sp',
	{
	  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'
	}
      ],
      [
	'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'
	}
      ]
    ],
    desc => 'Magic walls fire spells in a given direction, in regular intervals. Magic walls can contain any spell. However, some spells do not operate very successfully in them. The only way to know is to test the spell you want to use with a wall. ...
    ignore => [
      $IGNORE_LIST{non_pickable},
      'connected'
    ],
    name => 'Magic Wall',
    section => [
      [
	'destroyable',
	[
	  [
	    'alive',
	    {
	      desc => 'Walls with <is destroyable> enabled can be attacked and (eventually) destroyed by the player. If disabled, all other attributes on this tab, as well as resistances, are meaningless.',
	      name => 'is destroyable',
	      type => 'bool'
	    }
	  ],
	  [
	    'hp',
	    {
	      desc => 'The more <hitpoints> the wall has, the longer it takes to be destroyed.',
	      name => 'hitpoints',
	      type => 'int'
	    }
	  ],
	  [
	    'maxhp',
	    {
	      desc => '<max hitpoints> are the maximum amount of hitpoints the wall can have. This only makes sense if the wall can regain health.',
	      name => 'max hitpoints',
	      type => 'int'
	    }
	  ],
	  [
	    'ac',
	    {
	      desc => 'A magic wall of high <armour class> is less likely to get hit from an opponent. <armour class> can be considered the "counterpiece" to <weapon class>.',
	      name => 'armour class',

Deliantra/Data.pm  view on Meta::CPAN

	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'speed',
	{
	  desc => 'The <marking speed> defines how quickly it will mark something standing on the marker. Set this value rather high to make sure the player really gets his mark. I think <marking speed> 1.0 should do fine.',
	  name => 'marking speed',
	  type => 'float'
	}
      ],
      [
	'speed_left',
	{
	  desc => 'The speed left to the object. On every tick, if this value is higher than 0, the object acts/triggers/moves etc. and the value gets decremented by 1. Otherwise, it is incremented by <speed> on every tick.',
	  name => 'speed left',
	  type => 'float'
	}
      ],
      [
	'food',
	{
	  desc => 'This value defines the duration of the force it inserts. If nonzero, the duration of the player\'s mark is finite: about 1 food per 10 seconds. <mark duration> zero/unset means the mark will stay on the player forever.',
	  name => 'mark duration',
	  type => 'int'
	}
      ],
      [
	'name',
	{
	  desc => 'When the player steps onto the marker, all existing forces in the players inventory with a <key string> matching <delete mark> will be removed. If you don\'t want to remove any marks, leave this textfield empty. Note that the string <dele...
	  name => 'delete mark',
	  type => 'string'
	}
      ],
      [
	'msg',
	{
	  desc => 'In the moment when the player gets marked, this text is displayed to him. You should really set a message in any marker you create, because it\'s the only way for the player to notice what\'s going on.',
	  end => 'endmsg',
	  name => 'marking message',
	  type => 'text'
	}
      ]
    ],
    desc => 'A marker is an object that inserts an invisible force (a mark) into a player stepping on it. This force does nothing except containing a &lt;key string&gt; which can be discovered by detectors or inventory checkers. It is also possible t...
    ignore => [
      $IGNORE_LIST{system_object},
      'connected'
    ],
    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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'cursed',
	{
	  desc => 'Curses can have various effects: On equipment and food, they generally harm the player in some way.',
	  name => 'cursed',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'A damned item/floor on the ground makes it impossible for players to use prayers on that spot. It also prevents players from saving. Damnation on equipment works similar to a curse.',
	  name => 'damned',
	  type => 'bool'
	}
      ],
      [
	'unique',
	{
	  desc => 'Unique items exist only one time on a server. If the item is taken, lost or destroyed - it\'s gone for good.',
	  name => 'unique item',
	  type => 'bool'
	}
      ],
      [
	'startequip',
	{
	  desc => 'A godgiven item vanishes as soon as the player drops it to the ground.',
	  name => 'godgiven item',
	  type => 'bool'
	}
      ],
      [
	'msg',
	{
	  desc => 'This text may describe the object.',
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}

Deliantra/Data.pm  view on Meta::CPAN

      $IGNORE_LIST{non_pickable},
      'connected'
    ],
    name => 'Pedestal',
    use => 'If you want to create a place where only players of a certain race can enter, put a teleporter over your pedestal. So the teleporter is only activated for players of the matching race. Do not use gates, because many other players could sn...
  },
  'Pedestal Trigger' => {
    desc => 'Pedestal triggers are pedestals which reset after a short period of time. Every time it is either applied or reset, the &lt;connection&gt; value is triggered.',
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    import => [
      'Pedestal'
    ],
    name => 'Pedestal Trigger'
  },
  Pit => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'range',
	{
	  desc => 'The radius of the square area that the pit will randomly put the player into (0 to 3, default 1).',
	  name => 'spread radius',
	  type => 'int'
	}
      ],
      [
	'connected',
	{
	  desc => 'When a <connection> value is set, the pit can be opened/closed by activating the connection.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'activate_on_push',
	{
	  desc => 'Whether the teleporter should only be activated on push.',
	  name => 'activate on push',
	  type => 'bool'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
  },
  Potion => {
    attr => [
      [
	'level',
	{
	  desc => 'If the potion contains a spell, the spell is cast at this level. For other potions it should be set at least to 1.',
	  name => 'potion level',
	  type => 'int'
	}
      ],
      [
	'sp',
	{
	  desc => 'When a player drinks this potion, the selected spell will be casted (once). This should work for any given spell. E.g. heal is "sp 35", magic power is "sp 67".',
	  name => 'spell',
	  type => 'spell'
	}
      ],
      [
	'attacktype',
	{
	  desc => 'There are two types of special effects for potions: \'life restoration\' - restore the player\'s stats lost by death or draining (this has nothing in common with the restoration spell!) \'improvement\' - increase the player\'s maximum hea...
	  name => 'special effect',
	  type => 'list',
	  value => $LIST{potion_effect}
	}
      ],
      [
	'cursed',
	{
	  desc => 'If a potion is cursed, benefits generally turn into penalties. Note that potions can be "uncursed" by praying over an altar, with relative ease. *But* the potion must be identified to notice that it is cursed >:)',
	  name => 'cursed',
	  type => 'bool'
	}
      ],
      [
	'startequip',
	{
	  desc => 'A godgiven item vanishes as soon as the player drops it to the ground.',
	  name => 'godgiven item',
	  type => 'bool'
	}
      ]
    ],
    desc => 'The player can drink these and gain various kinds of benefits (/penalties) by doing so.',
    name => 'Potion',
    section => [
      [
	'stats',

Deliantra/Data.pm  view on Meta::CPAN

	  [
	    'sp',
	    {
	      desc => 'The selected <spell> defines the spell in the rune, if any. (Many runes do direct damage).',
	      name => 'spell',
	      type => 'spell'
	    }
	  ],
	  [
	    'slaying',
	    {
	      desc => 'Name of the spell in the rune, if any. <spell name> is optional, but if present, overrides the <spell> setting.',
	      name => 'spell name',
	      type => 'string'
	    }
	  ],
	  [
	    'other_arch',
	    {
	      desc => '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.',
	      name => 'spell arch',
	      type => 'string'
	    }
	  ],
	  [
	    'maxsp',
	    {
	      desc => '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.',
	      name => 'direction',
	      type => 'list',
	      value => $LIST{direction}
	    }
	  ],
	  [
	    'race',
	    {
	      desc => '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 attacktype will still be ignored in this case). Runes are even capable of ...
	      name => 'summon monster',
	      type => 'string'
	    }
	  ],
	  [
	    'maxhp',
	    {
	      desc => 'This should only be set to a summoning rune. It will then summon that many creatures of the kind <summon monster>.',
	      name => 'summon amount',
	      type => 'int'
	    }
	  ]
	]
      ]
    ],
    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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ]
    ],
    desc => 'Safe ground is a special object that prevents any effects that might be harmful for the map, other players or items on the map. It blocks all magic and prayers, usage of alchemy, prevents potions from being used and blocks bombs from exp...
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    name => 'Safe ground',
    use => 'Safe ground can be used to prevents any means of burning or destroying the items in a shop. Put this object below all floor tiles in your map and your shop will be safe. It\'s generally useful for making areas where really no kind of spel...
  },
  Savebed => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'no_magic',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'damned',
	{
	  type => 'fixed',
	  value => 1
	}
      ]
    ],
    desc => 'When the player applies a savebed, he is not only saved. Both his respawn-after-death and his word-of-recall positions are pointing to the last-applied savebed.',

Deliantra/Data.pm  view on Meta::CPAN

	    }
	  ],
	  [
	    'resist_holyword',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist holy power %',
	      type => 'int'
	    }
	  ],
	  [
	    'resist_godpower',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist godpower %',
	      type => 'int'
	    }
	  ],
	  [
	    'resist_paralyze',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist paralyze %',
	      type => 'int'
	    }
	  ],
	  [
	    'resist_drain',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist draining %',
	      type => 'int'
	    }
	  ],
	  [
	    'resist_deplete',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist depletion %',
	      type => 'int'
	    }
	  ],
	  [
	    'resist_poison',
	    {
	      desc => 'The player\'s resistance to physical will rise by this value in percent (range -100 till +100). The effect is only temporare, and it does NOT add on the values from the player\'s equipment. Cursed potions will make negative resistance...
	      name => 'resist poison %',
	      type => 'int'
	    }
	  ]
	]
      ]
    ],
    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',
	  value => $BITMASK{material}
	}
      ],
      [
	'unique',
	{
	  desc => 'Unique items exist only one time on a server. If the item is taken, lost or destroyed - it\'s gone for good. This can be used if you want to sell apartments on your map: Simply sell a unique passport/key, and place an inventory checker at...
	  name => 'unique item',
	  type => 'bool'
	}
      ],
      [
	'startequip',
	{
	  desc => 'A godgiven item vanishes as soon as the player drops it to the ground.',
	  name => 'godgiven item',
	  type => 'bool'
	}
      ],
      [
	'msg',
	{
	  desc => 'This will add a description to the object. The player can read this text by clicking on the item in his inventory. Use this message to describe what the key/passport is good for. A player might have 50 different keys on his key-ring. Don\...
	  end => 'endmsg',
	  name => 'description',
	  type => 'text'
	}
      ],
      [
	'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 &lt;key string&gt; certainly must match with the appropiate inventor...
  },
  Spell => {
    attr => [
      [
	'no_drop',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'invisible',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'skill',
	{
	  desc => 'The <skill name> matches the skill which is needed to cast this spell. This should be one out of "sorcery", "pyromancy", "evocation", "summoning" or "praying". If you want to fiddle with these, please take care not to upset the concept an...
	  name => 'skill name',
	  type => 'string'
	}
      ],
      [
	'subtype',
	{
	  desc => 'The <spell type> defines the basic type of spell. Some of these types are of a more generic nature than others.',
	  name => 'spell type',
	  type => 'list',
	  value => $LIST{spell_type}
	}
      ],
      [
	'level',
	{
	  name => 'spell level',
	  type => 'int'
	}
      ],
      [
	'casting_time',
	{
	  name => 'casting time',
	  type => 'int'
	}
      ],
      [
	'duration',
	{
	  name => 'duration',
	  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 => 'Spinners change the direction of spell objects and other projectiles that fly past. Unlike directors, it does make a difference from what angle you shoot into the spinner. The direction of objects flying past is always changed by a certa...
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    name => 'Spinner',
    use => 'Spinners are very rarely used. I believe they are quite confusing and pointless. The only use I can think of is building some puzzle about where to shoot into spinners to shoot somewhere you otherwise couldn\'t. When placing spinners on a...
  },
  Swamp => {
    attr => [
      [
	'is_floor',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'is_wooded',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'speed',
	{
	  desc => 'The higher the <drowning speed>, the faster will players and items sink into the swamp. Swamp with very high <drowning speed> can be a nasty and unexpected death-trap. Players should get a warning before such areas.',
	  name => 'drowning speed',
	  type => 'float'
	}
      ],
      [
	'speed_left',
	{
	  desc => 'The speed left to the object. On every tick, if this value is higher than 0, the object acts/triggers/moves etc. and the value gets decremented by 1. Otherwise, it is incremented by <speed> on every tick.',
	  name => 'speed left',
	  type => 'float'
	}
      ],
      [
	'move_on',
	{
	  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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'no_magic',
	{
	  desc => 'If enabled, it is impossible for players to use (wizard-) spells on that spot.',
	  name => 'no spells',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'If enabled, it is impossible for players to use prayers on that spot. It also prevents players from saving.',
	  name => 'no prayers',
	  type => 'bool'
	}
      ]
    ],
    desc => 'Swamp areas show a special behaviour: When a player stands still on a swamp-square for too long, he will start to sink in and eventually drown and die. Items dropped on the swamp sink in and dissapear. Players with knowledge of the woods...
    ignore => [
      $IGNORE_LIST{non_pickable}
    ],
    name => 'Swamp'
  },
  Teleporter => {
    attr => [
      [
	'slaying',
	{
	  desc => 'The exit path specifies the map that the player is transferred to. <exit path> can be an absolute path, beginning with \'/\' (for example "/peterm/FireTemple/fire1"). It can also be a relative path, not beginning with \'/\' (On the map "/...
	  name => 'exit path',
	  type => 'string'
	}
      ],
      [
	'hp',
	{
	  desc => 'The exit destinations define the (x, y)-coordinates where the exit leads to. If both are set to zero and <exit path> is empty, the player will get teleported to another, randomly chosen teleporter on the same map (Slightly confusing for t...
	  name => 'destination X',
	  type => 'int'
	}

Deliantra/Data.pm  view on Meta::CPAN

	{
	  desc => 'The speed left to the object. On every tick, if this value is higher than 0, the object acts/triggers/moves etc. and the value gets decremented by 1. Otherwise, it is incremented by <speed> on every tick.',
	  name => 'speed left',
	  type => 'float'
	}
      ]
    ],
    desc => 'When the player walks into a teleporter, he is transferred to a different location. The main difference to the object-type exit is the possibility to have teleporters connected to levers/buttons/etc. Sometimes teleporters are activated e...
    ignore => [
      $IGNORE_LIST{non_pickable},
      'connected'
    ],
    name => 'Teleporter',
    use => 'When creating maps, I guess sooner or later you\'ll want to have an invisible teleporter. If using "invisible 1", the teleporter can still be discovered with the show_invisible spell. And in some cases you can\'t place it under the floor ...
  },
  'Timed Gate' => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'connected',
	{
	  desc => 'Whenever the inventory checker is triggered, all objects with identical <connection> value get activated. This only makes sense together with <blocking passage> disabled. If unset, the gate opens automatically after some time.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'activate_on_push',
	{
	  desc => 'Whether the teleporter should only be activated on push.',
	  name => 'activate on push',
	  type => 'bool'
	}
      ],
      [
	'activate_on_release',
	{
	  desc => 'Whether the teleporter should only be activated on release.',
	  name => 'activate on release',
	  type => 'bool'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'no_magic',
	{
	  desc => 'Restricting the use of spells to pass this gate. This has an effect only if <block view> is disabled.',
	  name => 'restrict spells',
	  type => 'bool'
	}
      ],
      [
	'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'
	}
      ],
      [
	'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 => [
      [
	'is_lightable',
	{
	  desc => 'This flag controls whether the torch can be lit up again using a lighter or whether it can only be used once, in which case they can be enabled by simply applying them without any special tools.',
	  name => 'reignitable',
	  type => 'bool'
	}
      ],
      [
	'food',
	{
	  desc => 'This field specifies the burning duration of the torch.',
	  name => 'burning duration',
	  type => 'int'
	}
      ],
      [
	'range',
	{
	  desc => 'This field sets the glow radius of the torch if it is enabled. If you want to make a torch that is already burning set the "glow radius" field.',
	  name => 'enabled glow radius',
	  type => 'int'
	}
      ],
      [
	'level',
	{
	  desc => 'If this field specyfies the cursed effect\'s level. If it is 0 no cursed effect will be generate. See also the "cursed" flag.',
	  name => 'level',
	  type => 'int'
	}
      ],
      [
	'cursed',
	{
	  desc => 'Cursed torches, which have a level above 0, explode if the player applies them.',
	  name => 'cursed',
	  type => 'bool'
	}
      ]
    ],
    desc => 'Torches are a special kind of Lamp that offer the option of lighting them up without using a lighter (These torches are usually called \'pyrophor torches\'. See also the \'reignitable\' setting). The other kind of torches, that are reign...
    name => 'Torch'
  },
  Trap => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1

Deliantra/Data.pm  view on Meta::CPAN

      [
	'connected',
	{
	  desc => 'When the trap is detonated, all objects with the same connection value get activated.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'msg',
	{
	  desc => 'When the trap detonates, this text is displayed to the victim. For especially powerful or complex traps, create an appropriate and thrilling description. ;)',
	  end => 'endmsg',
	  name => 'detonation text',
	  type => 'text'
	}
      ]
    ],
    desc => 'A trap is a object that can either do damage or trigger another connected object when detonated. Traps are like runes except they are not magical in nature, and generally have either a physical attack or trigger a reaction. <br><br> Trap...
    ignore => [
      'no_pick',
      'title',
      'name_pl',
      'weight',
      'value',
      'material',
      'unpaid',
      'connected'
    ],
    name => 'Trap',
    use => 'Avoid monsters stepping on your traps. For example, a party of orcs setting off your lightning wall and pit trap is usually a bad idea.'
  },
  Trapdoor => {
    attr => [
      [
	'no_pick',
	{
	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'move_on',
	{
	  desc => 'Which movement types automatically (as opposed to manually) activate this object.',
	  name => 'movement on',
	  type => 'movement_type'
	}
      ],
      [
	'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',
    use => 'Trapdoors should be used in the same fashion as pits: They should always drop the victims to some kind of lower level. They are not supposed to be used to randomly interconnect maps like teleporters.'
  },
  Treasure => {
    attr => [
      [
	'randomitems',
	{
	  desc => 'This entry determines what kind of treasure will appear. Look into /crossfire/share/crossfire/treasures for details about existing treasurelists.',
	  name => 'treasurelist',
	  type => 'treasurelist'
	}
      ],
      [
	'auto_apply',
	{
	  desc => '"Auto-generate" must be set in order to have the treasure be created when the map is loaded. If you want to create a random treasure chest, you unset this flag. That way, the player has to apply the object (the chest), then the treasure i...
	  name => 'auto-generate',
	  type => 'bool'
	}
      ],
      [
	'hp',
	{
	  desc => '"Create number" specifies how many pieces of the given treasurelist will appear. Note that for every piece there is a chance that nothing is generated. Also, sometimes there can be stacks of items generated, like for gems/money.',
	  name => 'create number',
	  type => 'int'
	}
      ],
      [
	'exp',
	{
	  desc => 'The <quality level> will be used for the quality of the generated treasure instead of the map difficulty (as was done with shops). If zero/unset, the map difficulty will instead be used. (Example for comparison: Shop floors generate treas...
	  name => 'quality level',
	  type => 'int'
	}
      ]
    ],
    desc => 'A treasure-object turns into certain randomitems when the map is loaded into the game.',
    ignore => [
      'nrof',
      'title',
      'name_pl',
      'weight',
      'value',
      'material'
    ],
    name => 'Treasure',
    use => 'About usage of the "random-artifact" treasurelist: This will generate powerful stuff like girdles, xray helmets, special swords etc. If you put this as reward to your quest, players might be motivated to do it more than once. BUT, by doin...
  },
  'Trigger Marker' => {

Deliantra/Data.pm  view on Meta::CPAN

	  type => 'fixed',
	  value => 1
	}
      ],
      [
	'slaying',
	{
	  desc => 'The <key string> can be detected by inv. checkers/detectors. If the player already has a force with that <key string>, there won\'t be inserted a second one.',
	  name => 'key string',
	  type => 'string'
	}
      ],
      [
	'connected',
	{
	  desc => 'Unlike a regular marker this is the connection that triggers this marker to activate.',
	  name => 'connection',
	  type => 'string'
	}
      ],
      [
	'food',
	{
	  desc => 'This value defines the duration of the force it inserts. If nonzero, the duration of the player\'s mark is finite: about 1 food per 10 seconds. <mark duration> zero/unset means the mark will stay on the player forever.',
	  name => 'mark duration',
	  type => 'int'
	}
      ],
      [
	'name',
	{
	  desc => 'When the player steps onto the marker, all existing forces in the players inventory with a <key string> matching <delete mark> will be removed. If you don\'t want to remove any marks, leave this textfield empty. Note that the string <dele...
	  name => 'delete mark',
	  type => 'string'
	}
      ],
      [
	'msg',
	{
	  desc => 'In the moment when the player gets marked, this text is displayed to him. You should really set a message in any marker you create, because it\'s the only way for the player to notice what\'s going on.',
	  end => 'endmsg',
	  name => 'marking message',
	  type => 'text'
	}
      ]
    ],
    desc => 'A trigger marker is an object that inserts an invisible force (a mark) into a player stepping on it WHEN TRIGGERED. This force does nothing except containing a &lt;key string&gt; which can be discovered by detectors or inventory checkers...
    ignore => [
      $IGNORE_LIST{system_object},
      'connected'
    ],
    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'
	}
      ],
      [
	'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'
	}
      ],
      [
	'can_roll',
	{
	  desc => 'If set, the object is able to "roll", so it can be pushed around. This setting is used for boulders and barrels.',
	  name => 'moveable',
	  type => 'bool'
	}
      ],
      [
	'no_magic',
	{
	  desc => 'This takes effect only with <blocksview> disabled. Restricting the use of spells to pass this wall.',
	  name => 'restrict spells',
	  type => 'bool'
	}
      ],
      [
	'damned',
	{
	  desc => 'This takes effect only with <blocksview> disabled. Restricting the use of spells to pass this wall.',
	  name => 'restrict prayers',
	  type => 'bool'
	}
      ]
    ],
    desc => 'Walls usually block passage and sight.',
    ignore => [
      'nrof',
      'title',
      'name_pl',
      'value',
      'unpaid'
    ],
    name => 'Wall'
  },
  'Wand & Staff' => {
    attr => [
      [
	'sp',
	{



( run in 0.859 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )