… | |
… | |
266 | } |
266 | } |
267 | ], |
267 | ], |
268 | [ |
268 | [ |
269 | 'title', |
269 | 'title', |
270 | { |
270 | { |
271 | desc => 'This is the object\'s title. Once an object is identified the title is attached to the name. Typical titels are "of mostrai", "of xray vision" etc.', |
271 | desc => 'This is the object\'s title. Once an object is identified the title is attached to the name. Typical titles are "of Mostrai", "of xray vision" etc.', |
272 | name => 'title', |
272 | name => 'title', |
273 | type => 'string' |
273 | type => 'string' |
274 | } |
274 | } |
275 | ], |
275 | ], |
276 | [ |
276 | [ |
… | |
… | |
290 | } |
290 | } |
291 | ], |
291 | ], |
292 | [ |
292 | [ |
293 | 'weight', |
293 | 'weight', |
294 | { |
294 | { |
295 | desc => 'This value defines the object\'s weight in gramm (1000g is 1kg). Objects with zero weight are not pickable for players. Still, set the "non-pickable"-flag for explicitly non-pickable objects (hey, this is opensource.. you never know ;) ).', |
295 | desc => 'This value defines the object\'s weight in grams (1000g is 1kg). Objects with zero weight are not pickable for players. Still, set the "non-pickable"-flag for explicitly non-pickable objects (hey, this is opensource.. you never know ;) ).', |
296 | name => 'weight', |
296 | name => 'weight', |
297 | type => 'int' |
297 | type => 'int' |
298 | } |
298 | } |
299 | ], |
299 | ], |
300 | [ |
300 | [ |
… | |
… | |
306 | } |
306 | } |
307 | ], |
307 | ], |
308 | [ |
308 | [ |
309 | 'glow_radius', |
309 | 'glow_radius', |
310 | { |
310 | { |
311 | desc => 'If <glow radius> is set to a value greater zero, the object appears lit up on dark maps. <glow radius> can be a value between 0 and 4, the higher, the more light does the object emmit.', |
311 | desc => 'If <glow radius> is set to a value greater zero, the object appears lit up on dark maps. <glow radius> can be a value between 0 and 4, the higher, the more light does the object emit.', |
312 | name => 'glow radius', |
312 | name => 'glow radius', |
313 | type => 'int' |
313 | type => 'int' |
314 | } |
314 | } |
315 | ], |
315 | ], |
316 | [ |
316 | [ |
… | |
… | |
407 | } |
407 | } |
408 | ], |
408 | ], |
409 | [ |
409 | [ |
410 | 'attacktype', |
410 | 'attacktype', |
411 | { |
411 | { |
412 | desc => 'This flag specifies wether the ability <is magical> in nature. If enabled, all spells produced by this ability will have magic attacktype added to the usual attacktypes. This should always be set for spell-like abilities. "Natural" abilities like a dragon\'s firebreath are an exception. Note that non-magical abilities are more dangerous because magic resistance does not protect from those.', |
412 | desc => 'This flag specifies whether the ability <is magical> in nature. If enabled, all spells produced by this ability will have magic attacktype added to the usual attacktypes. This should always be set for spell-like abilities. "Natural" abilities like a dragon\'s firebreath are an exception. Note that non-magical abilities are more dangerous because magic resistance does not protect from those.', |
413 | name => 'is magical', |
413 | name => 'is magical', |
414 | type => 'bool', |
414 | type => 'bool', |
415 | value => [ |
415 | value => [ |
416 | 0, |
416 | 0, |
417 | 2 |
417 | 2 |
… | |
… | |
467 | } |
467 | } |
468 | ], |
468 | ], |
469 | [ |
469 | [ |
470 | 'sp', |
470 | 'sp', |
471 | { |
471 | { |
472 | desc => 'When activated, the selected <spell> will be casted (once, on the player). This should work for any given spell. The altar will work infinitly in this way. Don\'t set both <spell> and <connection> for one altar.', |
472 | desc => 'When activated, the selected <spell> will be casted (once, on the player). This should work for any given spell. The altar will work infinitely in this way. Don\'t set both <spell> and <connection> for one altar.', |
473 | name => 'spell', |
473 | name => 'spell', |
474 | type => 'spell' |
474 | type => 'spell' |
475 | } |
475 | } |
476 | ], |
476 | ], |
477 | [ |
477 | [ |
… | |
… | |
482 | name => 'message', |
482 | name => 'message', |
483 | type => 'text' |
483 | type => 'text' |
484 | } |
484 | } |
485 | ] |
485 | ] |
486 | ], |
486 | ], |
487 | desc => 'When a player puts a defined number of certain items on the altar, then either a spell is casted (on the player) or a connector is triggered. If the latter is the case, the altar works only once. Either way, the sacrificed item dissapears.', |
487 | desc => 'When a player puts a defined number of certain items on the altar, then either a spell is casted (on the player) or a connector is triggered. If the latter is the case, the altar works only once. Either way, the sacrificed item disappears.', |
488 | ignore => [ |
488 | ignore => [ |
489 | $IGNORE_LIST{non_pickable} |
489 | $IGNORE_LIST{non_pickable} |
490 | ], |
490 | ], |
491 | name => 'Altar' |
491 | name => 'Altar' |
492 | }, |
492 | }, |
… | |
… | |
524 | } |
524 | } |
525 | ], |
525 | ], |
526 | [ |
526 | [ |
527 | 'sp', |
527 | 'sp', |
528 | { |
528 | { |
529 | desc => 'When activated, this <spell> will be casted (once, on the player). This should work for any given spell. The altar will work infinitly in this way. Don\'t set both <spell> and <connection> for one altar.', |
529 | desc => 'When activated, this <spell> will be casted (once, on the player). This should work for any given spell. The altar will work infinitely in this way. Don\'t set both <spell> and <connection> for one altar.', |
530 | name => 'spell', |
530 | name => 'spell', |
531 | type => 'spell' |
531 | type => 'spell' |
532 | } |
532 | } |
533 | ], |
533 | ], |
534 | [ |
534 | [ |
… | |
… | |
562 | name => 'message', |
562 | name => 'message', |
563 | type => 'text' |
563 | type => 'text' |
564 | } |
564 | } |
565 | ] |
565 | ] |
566 | ], |
566 | ], |
567 | desc => 'Altar_triggers work pretty much like normal altars (drop sacrifice -> connection activated), except for the fact that they reset after usage. Hence, altar_triggers can be used infinitly.', |
567 | desc => 'Altar_triggers work pretty much like normal altars (drop sacrifice -> connection activated), except for the fact that they reset after usage. Hence, altar_triggers can be used infinitely.', |
568 | ignore => [ |
568 | ignore => [ |
569 | $IGNORE_LIST{non_pickable} |
569 | $IGNORE_LIST{non_pickable} |
570 | ], |
570 | ], |
571 | name => 'Altar Trigger', |
571 | name => 'Altar Trigger', |
572 | use => 'Altar_triggers are very useful if you want to charge a price for... <UL> <LI> ...an item. -> Connect the altar_trigger (set "last_sp 1") to a creator. <LI> ...opening a gate. -> Connect the altar_trigger (set "last_sp 0") to the gate. <LI> ...information. -> Connect the altar_trigger (set "last_sp 1") to a magic_mouth. </UL> The big advantage over normal altars is the infinite usability of altar_triggers! If there are ten players on one server, they\'re quite grateful if things work more than once. =)' |
572 | use => 'Altar_triggers are very useful if you want to charge a price for... <UL> <LI> ...an item. -> Connect the altar_trigger (set "last_sp 1") to a creator. <LI> ...opening a gate. -> Connect the altar_trigger (set "last_sp 0") to the gate. <LI> ...information. -> Connect the altar_trigger (set "last_sp 1") to a magic_mouth. </UL> The big advantage over normal altars is the infinite usability of altar_triggers! If there are ten players on one server, they\'re quite grateful if things work more than once. =)' |
… | |
… | |
614 | } |
614 | } |
615 | ], |
615 | ], |
616 | [ |
616 | [ |
617 | 'lifesave', |
617 | 'lifesave', |
618 | { |
618 | { |
619 | desc => 'An item with this flag enabled will save the players life for one time: When the player is wearing this item and his healthpoints reach zero, the item dissapears, replenishing half of the player\'s health. An item with <save life> should not have any decent additional bonuses!', |
619 | desc => 'An item with this flag enabled will save the players life for one time: When the player is wearing this item and his health points reach zero, the item disappears, replenishing half of the player\'s health. An item with <save life> should not have any decent additional bonuses!', |
620 | name => 'save life', |
620 | name => 'save life', |
621 | type => 'bool' |
621 | type => 'bool' |
622 | } |
622 | } |
623 | ], |
623 | ], |
624 | [ |
624 | [ |
… | |
… | |
920 | } |
920 | } |
921 | ], |
921 | ], |
922 | [ |
922 | [ |
923 | 'xrays', |
923 | 'xrays', |
924 | { |
924 | { |
925 | desc => 'Xray vision allows the player to see through obstacles in a two-square-wide radius. This is extremely helpful and desireable, so don\'t give it away for cheap on equipment.', |
925 | desc => 'Xray vision allows the player to see through obstacles in a two-square-wide radius. This is extremely helpful and desirable, so don\'t give it away for cheap on equipment.', |
926 | name => 'xray vision', |
926 | name => 'xray vision', |
927 | type => 'bool' |
927 | type => 'bool' |
928 | } |
928 | } |
929 | ], |
929 | ], |
930 | [ |
930 | [ |
… | |
… | |
1174 | [ |
1174 | [ |
1175 | 'weight', |
1175 | 'weight', |
1176 | { |
1176 | { |
1177 | desc => 'The button is pressed (triggered), as soon as <press weigh> gram are placed ontop of it.', |
1177 | desc => 'The button is pressed (triggered), as soon as <press weigh> gram are placed ontop of it.', |
1178 | name => 'press weight', |
1178 | name => 'press weight', |
1179 | type => 'string' |
1179 | type => 'int' |
1180 | } |
1180 | } |
1181 | ], |
1181 | ], |
1182 | [ |
1182 | [ |
1183 | 'connected', |
1183 | 'connected', |
1184 | { |
1184 | { |
… | |
… | |
1200 | desc => 'When a predefined amount of weigh is placed on a button, the <connection> value is triggered. In most cases this happens when a player or monster steps on it. When the button is "released", the <connection> value get\'s triggered a second time.', |
1200 | desc => 'When a predefined amount of weigh is placed on a button, the <connection> value is triggered. In most cases this happens when a player or monster steps on it. When the button is "released", the <connection> value get\'s triggered a second time.', |
1201 | ignore => [ |
1201 | ignore => [ |
1202 | $IGNORE_LIST{non_pickable} |
1202 | $IGNORE_LIST{non_pickable} |
1203 | ], |
1203 | ], |
1204 | name => 'Button' |
1204 | name => 'Button' |
|
|
1205 | }, |
|
|
1206 | 'Button Trigger' => { |
|
|
1207 | desc => 'Handle buttons are buttons which reset after a short period of time. Every time it is either applied or reset, the <connection> value is triggered.', |
|
|
1208 | ignore => [ |
|
|
1209 | $IGNORE_LIST{non_pickable} |
|
|
1210 | ], |
|
|
1211 | import => [ |
|
|
1212 | $TYPE{Button} |
|
|
1213 | ], |
|
|
1214 | name => 'Button Trigger' |
|
|
1215 | }, |
|
|
1216 | 'Class Changer' => { |
|
|
1217 | attr => [ |
|
|
1218 | [ |
|
|
1219 | 'randomitems', |
|
|
1220 | { |
|
|
1221 | desc => 'This entry determines which initial items the character receives.', |
|
|
1222 | name => 'class items', |
|
|
1223 | type => 'treasurelist' |
|
|
1224 | } |
|
|
1225 | ] |
|
|
1226 | ], |
|
|
1227 | desc => 'Class changer are used while creating a character.', |
|
|
1228 | ignore => [ |
|
|
1229 | $IGNORE_LIST{non_pickable} |
|
|
1230 | ], |
|
|
1231 | name => 'Class Changer', |
|
|
1232 | section => [ |
|
|
1233 | [ |
|
|
1234 | 'stats', |
|
|
1235 | [ |
|
|
1236 | [ |
|
|
1237 | 'Str', |
|
|
1238 | { |
|
|
1239 | desc => 'The player\'s strength will rise by the given value if he chooses this class. (Negative values make strength fall)', |
|
|
1240 | name => 'strength', |
|
|
1241 | type => 'int' |
|
|
1242 | } |
|
|
1243 | ], |
|
|
1244 | [ |
|
|
1245 | 'Dex', |
|
|
1246 | { |
|
|
1247 | desc => 'The player\'s dexterity will rise by the given value if he chooses this class. (Negative values make dexterity fall)', |
|
|
1248 | name => 'dexterity', |
|
|
1249 | type => 'int' |
|
|
1250 | } |
|
|
1251 | ], |
|
|
1252 | [ |
|
|
1253 | 'Con', |
|
|
1254 | { |
|
|
1255 | desc => 'The player\'s constitution will rise by the given value if he chooses this class. (Negative values make constitution fall)', |
|
|
1256 | name => 'constitution', |
|
|
1257 | type => 'int' |
|
|
1258 | } |
|
|
1259 | ], |
|
|
1260 | [ |
|
|
1261 | 'Int', |
|
|
1262 | { |
|
|
1263 | desc => 'The player\'s intelligence will rise by the given value if he chooses this class. (Negative values make intelligence fall)', |
|
|
1264 | name => 'intelligence', |
|
|
1265 | type => 'int' |
|
|
1266 | } |
|
|
1267 | ], |
|
|
1268 | [ |
|
|
1269 | 'Pow', |
|
|
1270 | { |
|
|
1271 | desc => 'The player\'s power will rise by the given value if he chooses this class. (Negative values make power fall)', |
|
|
1272 | name => 'power', |
|
|
1273 | type => 'int' |
|
|
1274 | } |
|
|
1275 | ], |
|
|
1276 | [ |
|
|
1277 | 'Wis', |
|
|
1278 | { |
|
|
1279 | desc => 'The player\'s wisdom will rise by the given value if he chooses this class. (Negative values make wisdom fall)', |
|
|
1280 | name => 'wisdom', |
|
|
1281 | type => 'int' |
|
|
1282 | } |
|
|
1283 | ], |
|
|
1284 | [ |
|
|
1285 | 'Cha', |
|
|
1286 | { |
|
|
1287 | desc => 'The player\'s charisma will rise by the given value if he chooses this class. (Negative values make charisma fall)', |
|
|
1288 | name => 'charisma', |
|
|
1289 | type => 'int' |
|
|
1290 | } |
|
|
1291 | ] |
|
|
1292 | ] |
|
|
1293 | ] |
|
|
1294 | ] |
1205 | }, |
1295 | }, |
1206 | Cloak => { |
1296 | Cloak => { |
1207 | attr => [ |
1297 | attr => [ |
1208 | [ |
1298 | [ |
1209 | 'magic', |
1299 | 'magic', |
… | |
… | |
1405 | } |
1495 | } |
1406 | ], |
1496 | ], |
1407 | [ |
1497 | [ |
1408 | 'lifesave', |
1498 | 'lifesave', |
1409 | { |
1499 | { |
1410 | desc => 'If <infinit uses> is set, the creator will work infinitly, regardless of the value in <number of uses>.', |
1500 | desc => 'If <infinit uses> is set, the creator will work infinitely, regardless of the value in <number of uses>.', |
1411 | name => 'infinit uses', |
1501 | name => 'infinit uses', |
1412 | type => 'bool' |
1502 | type => 'bool' |
1413 | } |
1503 | } |
1414 | ], |
1504 | ], |
1415 | [ |
1505 | [ |
… | |
… | |
1759 | ] |
1849 | ] |
1760 | ] |
1850 | ] |
1761 | ] |
1851 | ] |
1762 | ], |
1852 | ], |
1763 | 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 "positive disease" could even be a quest reward.' |
1853 | 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 "positive disease" could even be a quest reward.' |
|
|
1854 | }, |
|
|
1855 | Door => { |
|
|
1856 | attr => [ |
|
|
1857 | [ |
|
|
1858 | 'no_pick', |
|
|
1859 | { |
|
|
1860 | type => 'fixed', |
|
|
1861 | value => 1 |
|
|
1862 | } |
|
|
1863 | ], |
|
|
1864 | [ |
|
|
1865 | 'alive', |
|
|
1866 | { |
|
|
1867 | type => 'fixed', |
|
|
1868 | value => 1 |
|
|
1869 | } |
|
|
1870 | ], |
|
|
1871 | [ |
|
|
1872 | 'no_pass', |
|
|
1873 | { |
|
|
1874 | desc => 'If set, a player must defeat the door to enter.', |
|
|
1875 | name => 'blocking passage', |
|
|
1876 | type => 'bool' |
|
|
1877 | } |
|
|
1878 | ], |
|
|
1879 | [ |
|
|
1880 | 'hp', |
|
|
1881 | { |
|
|
1882 | desc => 'The more <hitpoints> the door has, the longer it takes to be broken.', |
|
|
1883 | name => 'hitpoints', |
|
|
1884 | type => 'int' |
|
|
1885 | } |
|
|
1886 | ], |
|
|
1887 | [ |
|
|
1888 | 'ac', |
|
|
1889 | { |
|
|
1890 | desc => 'Doors of high <armour class> are less likely to get hit. <armour class> can be considered the "counterpiece" to <weapon class>.', |
|
|
1891 | name => 'armour class', |
|
|
1892 | type => 'int' |
|
|
1893 | } |
|
|
1894 | ], |
|
|
1895 | [ |
|
|
1896 | 'other_arch', |
|
|
1897 | { |
|
|
1898 | desc => 'This string defines the object that will be created when the door was defeated.', |
|
|
1899 | name => 'drop arch', |
|
|
1900 | type => 'string' |
|
|
1901 | } |
|
|
1902 | ], |
|
|
1903 | [ |
|
|
1904 | 'randomitems', |
|
|
1905 | { |
|
|
1906 | desc => 'This entry determines what kind of traps will appear in the door.', |
|
|
1907 | name => 'treasurelist', |
|
|
1908 | type => 'treasurelist' |
|
|
1909 | } |
|
|
1910 | ] |
|
|
1911 | ], |
|
|
1912 | desc => 'A door can be opened with a normal key. It also can be broken by attacking it, and it can be defeated with the lockpicking skill. If a door is defeated, horizontally and vertically adjacent doors are automatically removed.', |
|
|
1913 | ignore => [ |
|
|
1914 | $IGNORE_LIST{non_pickable} |
|
|
1915 | ], |
|
|
1916 | name => 'Door' |
1764 | }, |
1917 | }, |
1765 | Duplicator => { |
1918 | Duplicator => { |
1766 | attr => [ |
1919 | attr => [ |
1767 | [ |
1920 | [ |
1768 | 'other_arch', |
1921 | 'other_arch', |
… | |
… | |
2882 | } |
3035 | } |
2883 | ] |
3036 | ] |
2884 | ], |
3037 | ], |
2885 | desc => 'Items of the type Gold & Jewels are handled like a currency. Unlike for any other type of item, in shops, the buy- and selling prices differ only marginally.', |
3038 | desc => 'Items of the type Gold & Jewels are handled like a currency. Unlike for any other type of item, in shops, the buy- and selling prices differ only marginally.', |
2886 | name => 'Jewel' |
3039 | name => 'Jewel' |
|
|
3040 | }, |
|
|
3041 | Key => { |
|
|
3042 | attr => [ |
|
|
3043 | [ |
|
|
3044 | 'startequip', |
|
|
3045 | { |
|
|
3046 | desc => 'A godgiven item vanishes as soon as the player drops it to the ground.', |
|
|
3047 | name => 'godgiven item', |
|
|
3048 | type => 'bool' |
|
|
3049 | } |
|
|
3050 | ] |
|
|
3051 | ], |
|
|
3052 | desc => 'When carrying a key, a normal door can be opened. The key will disappear.', |
|
|
3053 | name => 'Key' |
2887 | }, |
3054 | }, |
2888 | 'Locked Door' => { |
3055 | 'Locked Door' => { |
2889 | attr => [ |
3056 | attr => [ |
2890 | [ |
3057 | [ |
2891 | 'no_pass', |
3058 | 'no_pass', |
… | |
… | |
3973 | ] |
4140 | ] |
3974 | ] |
4141 | ] |
3975 | ], |
4142 | ], |
3976 | use => 'Monsters play a central role in most maps. Choosing the right combination of monsters for your map is vital: <UL> <LI> Place only monsters of slightly varying (increasing) strength. It\'s no fun to play for two hours just to find out the last monster is unbeatable. Similar, it\'s not exciting to fight orcs after passing a room of dragons.<br> This rule applies only for linear maps (one room after the other), with treasure at the end. You can sprinkle the treasure around, or make non-linear maps - That is often more entertaining. <LI> Places with high level monsters must not be easy to reach. Balrogs, Dragonmen and the likes should be at the end of a quest, not at the beginning. <LI> Don\'t stick monsters together that tend to kill each other. Fire- and cold dragons in one room for example is a bad idea. By weakening and killing each other they are easy prey for players, not worth the experience they hold. <LI> Create your own monsters, especially for "boss"-type monsters. Having stage-bosses guarding treasure is a lot of fun when done right. Avoid to create monsters with completely non-intuitive abilities: Don\'t give ice-spells to firedragons or vice versa. Don\'t add draining attack to trolls, etc. Additionally, you should inform the player before he bumps right into some very special/unusual monster. <LI> Last but not least: Always keep an eye on the experience your monsters hold. Design your maps in a way that high experience is always well-defended. Don\'t make large rooms full with only one kind of monster. Keep in mind the different abilities/techniques players can use. </UL> I know it\'s impossible to make the perfectly balanced map. There\'s always some part which is found too easy or too hard for a certain kind of player. Just give it your best shot. And listen to feedback from players if you receive some. :-)' |
4143 | use => 'Monsters play a central role in most maps. Choosing the right combination of monsters for your map is vital: <UL> <LI> Place only monsters of slightly varying (increasing) strength. It\'s no fun to play for two hours just to find out the last monster is unbeatable. Similar, it\'s not exciting to fight orcs after passing a room of dragons.<br> This rule applies only for linear maps (one room after the other), with treasure at the end. You can sprinkle the treasure around, or make non-linear maps - That is often more entertaining. <LI> Places with high level monsters must not be easy to reach. Balrogs, Dragonmen and the likes should be at the end of a quest, not at the beginning. <LI> Don\'t stick monsters together that tend to kill each other. Fire- and cold dragons in one room for example is a bad idea. By weakening and killing each other they are easy prey for players, not worth the experience they hold. <LI> Create your own monsters, especially for "boss"-type monsters. Having stage-bosses guarding treasure is a lot of fun when done right. Avoid to create monsters with completely non-intuitive abilities: Don\'t give ice-spells to firedragons or vice versa. Don\'t add draining attack to trolls, etc. Additionally, you should inform the player before he bumps right into some very special/unusual monster. <LI> Last but not least: Always keep an eye on the experience your monsters hold. Design your maps in a way that high experience is always well-defended. Don\'t make large rooms full with only one kind of monster. Keep in mind the different abilities/techniques players can use. </UL> I know it\'s impossible to make the perfectly balanced map. There\'s always some part which is found too easy or too hard for a certain kind of player. Just give it your best shot. And listen to feedback from players if you receive some. :-)' |
3977 | }, |
4144 | }, |
|
|
4145 | 'Monster (Grimreaper)' => { |
|
|
4146 | desc => 'A grimreaper is a monster that vanishes after it did some number of draining attacks.', |
|
|
4147 | ignore => [ |
|
|
4148 | 'material', |
|
|
4149 | 'name_pl', |
|
|
4150 | 'nrof', |
|
|
4151 | 'value', |
|
|
4152 | 'unpaid' |
|
|
4153 | ], |
|
|
4154 | import => [ |
|
|
4155 | $TYPE{'Monster & NPC'} |
|
|
4156 | ], |
|
|
4157 | name => 'Monster (Grimreaper)', |
|
|
4158 | section => [ |
|
|
4159 | [ |
|
|
4160 | 'grimreaper', |
|
|
4161 | [ |
|
|
4162 | [ |
|
|
4163 | 'value', |
|
|
4164 | { |
|
|
4165 | desc => 'The object vanishes after this number of draining attacks.', |
|
|
4166 | name => 'attacks', |
|
|
4167 | type => 'int' |
|
|
4168 | } |
|
|
4169 | ] |
|
|
4170 | ] |
|
|
4171 | ] |
|
|
4172 | ] |
|
|
4173 | }, |
3978 | 'Mood Floor' => { |
4174 | 'Mood Floor' => { |
3979 | attr => [ |
4175 | attr => [ |
3980 | [ |
4176 | [ |
3981 | 'no_pick', |
4177 | 'no_pick', |
3982 | { |
4178 | { |
… | |
… | |
4061 | } |
4257 | } |
4062 | ], |
4258 | ], |
4063 | [ |
4259 | [ |
4064 | 'lifesave', |
4260 | 'lifesave', |
4065 | { |
4261 | { |
4066 | desc => 'If enabled, the mover gets "used up" after a certain number of moves (specified by <number of uses>). If disabled, the mover works infinitly.', |
4262 | desc => 'If enabled, the mover gets "used up" after a certain number of moves (specified by <number of uses>). If disabled, the mover works infinitely.', |
4067 | name => 'gets used up', |
4263 | name => 'gets used up', |
4068 | type => 'bool' |
4264 | type => 'bool' |
4069 | } |
4265 | } |
4070 | ], |
4266 | ], |
4071 | [ |
4267 | [ |
… | |
… | |
5993 | } |
6189 | } |
5994 | ] |
6190 | ] |
5995 | ], |
6191 | ], |
5996 | desc => 'Wands contain a certain spell. The player can apply (ready) and fire the wand. After a defined number of casts, the wand is "used up". It is possible to recharge a wand with scrolls of charging, but usually that isn\'t worth the cost.', |
6192 | desc => 'Wands contain a certain spell. The player can apply (ready) and fire the wand. After a defined number of casts, the wand is "used up". It is possible to recharge a wand with scrolls of charging, but usually that isn\'t worth the cost.', |
5997 | name => 'Wand & Staff', |
6193 | name => 'Wand & Staff', |
5998 | use => 'Wands are quite seldomly used. The reason prolly is that they\'re generally not cost-efficient. Handing out high-level wands with powerfull special spells isn\'t a good idea either, because of the recharge ability. <br><br> For low levels, staffs of healing/cure and word of recall are quite desireable though. Ideal rewards for low level quests.' |
6194 | use => 'Wands are quite seldomly used. The reason prolly is that they\'re generally not cost-efficient. Handing out high-level wands with powerful special spells isn\'t a good idea either, because of the recharge ability. <br><br> For low levels, staffs of healing/cure and word of recall are quite desirable though. Ideal rewards for low level quests.' |
5999 | }, |
6195 | }, |
6000 | 'Weak Wall' => { |
6196 | 'Weak Wall' => { |
6001 | attr => [ |
6197 | attr => [ |
6002 | [ |
6198 | [ |
6003 | 'alive', |
6199 | 'alive', |
… | |
… | |
6320 | } |
6516 | } |
6321 | ], |
6517 | ], |
6322 | [ |
6518 | [ |
6323 | 'lifesave', |
6519 | 'lifesave', |
6324 | { |
6520 | { |
6325 | desc => 'An item with this flag enabled will save the players life for one time: When the player is wearing this item and his healthpoints reach zero, the item dissapears, replenishing half of the player\'s health. An item with <save life> should not have any decent additional bonuses!', |
6521 | desc => 'An item with this flag enabled will save the players life for one time: When the player is wearing this item and his health points reach zero, the item disappears, replenishing half of the player\'s health. An item with <save life> should not have any decent additional bonuses!', |
6326 | name => 'save life', |
6522 | name => 'save life', |
6327 | type => 'bool' |
6523 | type => 'bool' |
6328 | } |
6524 | } |
6329 | ], |
6525 | ], |
6330 | [ |
6526 | [ |
… | |
… | |
6618 | } |
6814 | } |
6619 | ], |
6815 | ], |
6620 | [ |
6816 | [ |
6621 | 'xrays', |
6817 | 'xrays', |
6622 | { |
6818 | { |
6623 | desc => 'Xray vision allows the player to see through obstacles in a two-square-wide radius. This is extremely helpful and desireable, so don\'t give it away for cheap on equipment.', |
6819 | desc => 'Xray vision allows the player to see through obstacles in a two-square-wide radius. This is extremely helpful and desirable, so don\'t give it away for cheap on equipment.', |
6624 | name => 'xray vision', |
6820 | name => 'xray vision', |
6625 | type => 'bool' |
6821 | type => 'bool' |
6626 | } |
6822 | } |
6627 | ], |
6823 | ], |
6628 | [ |
6824 | [ |
… | |
… | |
6704 | 16 => $TYPE{'Brestplate Armour'}, |
6900 | 16 => $TYPE{'Brestplate Armour'}, |
6705 | 17 => $TYPE{Pedestal}, |
6901 | 17 => $TYPE{Pedestal}, |
6706 | 18 => $TYPE{Altar}, |
6902 | 18 => $TYPE{Altar}, |
6707 | 20 => $TYPE{'Locked Door'}, |
6903 | 20 => $TYPE{'Locked Door'}, |
6708 | 21 => $TYPE{'Special Key'}, |
6904 | 21 => $TYPE{'Special Key'}, |
|
|
6905 | 23 => $TYPE{Door}, |
|
|
6906 | 24 => $TYPE{Key}, |
6709 | 26 => $TYPE{'Timed Gate'}, |
6907 | 26 => $TYPE{'Timed Gate'}, |
6710 | 27 => $TYPE{'Handle Trigger'}, |
6908 | 27 => $TYPE{'Handle Trigger'}, |
|
|
6909 | 28 => $TYPE{'Monster (Grimreaper)'}, |
6711 | 29 => $TYPE{'Magic Ear'}, |
6910 | 29 => $TYPE{'Magic Ear'}, |
|
|
6911 | 30 => $TYPE{'Button Trigger'}, |
6712 | 31 => $TYPE{'Altar Trigger'}, |
6912 | 31 => $TYPE{'Altar Trigger'}, |
6713 | 33 => $TYPE{Shield}, |
6913 | 33 => $TYPE{Shield}, |
6714 | 34 => $TYPE{Helmet}, |
6914 | 34 => $TYPE{Helmet}, |
6715 | 35 => $TYPE{Horn}, |
6915 | 35 => $TYPE{Horn}, |
6716 | 36 => $TYPE{Money}, |
6916 | 36 => $TYPE{Money}, |
|
|
6917 | 37 => $TYPE{'Class Changer'}, |
6717 | 39 => $TYPE{Amulet}, |
6918 | 39 => $TYPE{Amulet}, |
6718 | 40 => $TYPE{Mover}, |
6919 | 40 => $TYPE{Mover}, |
6719 | 41 => $TYPE{Teleporter}, |
6920 | 41 => $TYPE{Teleporter}, |
6720 | 42 => $TYPE{Creator}, |
6921 | 42 => $TYPE{Creator}, |
6721 | 43 => $TYPE{Skill}, |
6922 | 43 => $TYPE{Skill}, |
… | |
… | |
6768 | ); |
6969 | ); |
6769 | |
6970 | |
6770 | our %TYPENAME = ( |
6971 | our %TYPENAME = ( |
6771 | 0 => '*NONE*', |
6972 | 0 => '*NONE*', |
6772 | 1 => 'PLAYER', |
6973 | 1 => 'PLAYER', |
6773 | 2 => 'BULLET', |
6974 | 2 => 'TRANSPORT', |
6774 | 3 => 'ROD', |
6975 | 3 => 'ROD', |
6775 | 4 => 'TREASURE', |
6976 | 4 => 'TREASURE', |
6776 | 5 => 'POTION', |
6977 | 5 => 'POTION', |
6777 | 6 => 'FOOD', |
6978 | 6 => 'FOOD', |
6778 | 7 => 'POISON', |
6979 | 7 => 'POISON', |
6779 | 8 => 'BOOK', |
6980 | 8 => 'BOOK', |
6780 | 9 => 'CLOCK', |
6981 | 9 => 'CLOCK', |
6781 | 10 => 'FBULLET', |
|
|
6782 | 11 => 'FBALL', |
|
|
6783 | 12 => 'LIGHTNING', |
6982 | 12 => 'LIGHTNING', |
6784 | 13 => 'ARROW', |
6983 | 13 => 'ARROW', |
6785 | 14 => 'BOW', |
6984 | 14 => 'BOW', |
6786 | 15 => 'WEAPON', |
6985 | 15 => 'WEAPON', |
6787 | 16 => 'ARMOUR', |
6986 | 16 => 'ARMOUR', |
6788 | 17 => 'PEDESTAL', |
6987 | 17 => 'PEDESTAL', |
6789 | 18 => 'ALTAR', |
6988 | 18 => 'ALTAR', |
6790 | 19 => 'CONFUSION', |
|
|
6791 | 20 => 'LOCKED_DOOR', |
6989 | 20 => 'LOCKED_DOOR', |
6792 | 21 => 'SPECIAL_KEY', |
6990 | 21 => 'SPECIAL_KEY', |
6793 | 22 => 'MAP', |
6991 | 22 => 'MAP', |
6794 | 23 => 'DOOR', |
6992 | 23 => 'DOOR', |
6795 | 24 => 'KEY', |
6993 | 24 => 'KEY', |
6796 | 25 => 'MMISSILE', |
|
|
6797 | 26 => 'TIMED_GATE', |
6994 | 26 => 'TIMED_GATE', |
6798 | 27 => 'TRIGGER', |
6995 | 27 => 'TRIGGER', |
6799 | 28 => 'GRIMREAPER', |
6996 | 28 => 'GRIMREAPER', |
6800 | 29 => 'MAGIC_EAR', |
6997 | 29 => 'MAGIC_EAR', |
6801 | 30 => 'TRIGGER_BUTTON', |
6998 | 30 => 'TRIGGER_BUTTON', |
… | |
… | |
6813 | 42 => 'CREATOR', |
7010 | 42 => 'CREATOR', |
6814 | 43 => 'SKILL', |
7011 | 43 => 'SKILL', |
6815 | 44 => 'EXPERIENCE', |
7012 | 44 => 'EXPERIENCE', |
6816 | 45 => 'EARTHWALL', |
7013 | 45 => 'EARTHWALL', |
6817 | 46 => 'GOLEM', |
7014 | 46 => 'GOLEM', |
6818 | 47 => 'BOMB', |
|
|
6819 | 48 => 'THROWN_OBJ', |
7015 | 48 => 'THROWN_OBJ', |
6820 | 49 => 'BLINDNESS', |
7016 | 49 => 'BLINDNESS', |
6821 | 50 => 'GOD', |
7017 | 50 => 'GOD', |
6822 | 51 => 'DETECTOR', |
7018 | 51 => 'DETECTOR', |
6823 | 52 => 'TRIGGER_MARKER', |
7019 | 52 => 'TRIGGER_MARKER', |
… | |
… | |
6827 | 56 => 'HOLY_ALTAR', |
7023 | 56 => 'HOLY_ALTAR', |
6828 | 57 => 'PLAYER_CHANGER', |
7024 | 57 => 'PLAYER_CHANGER', |
6829 | 58 => 'BATTLEGROUND', |
7025 | 58 => 'BATTLEGROUND', |
6830 | 59 => 'PEACEMAKER', |
7026 | 59 => 'PEACEMAKER', |
6831 | 60 => 'GEM', |
7027 | 60 => 'GEM', |
6832 | 61 => 'FIRECHEST', |
|
|
6833 | 62 => 'FIREWALL', |
7028 | 62 => 'FIREWALL', |
6834 | 63 => 'ANVIL', |
7029 | 63 => 'ANVIL', |
6835 | 64 => 'CHECK_INV', |
7030 | 64 => 'CHECK_INV', |
6836 | 65 => 'MOOD_FLOOR', |
7031 | 65 => 'MOOD_FLOOR', |
6837 | 66 => 'EXIT', |
7032 | 66 => 'EXIT', |
… | |
… | |
6854 | 83 => 'DUPLICATOR', |
7049 | 83 => 'DUPLICATOR', |
6855 | 84 => 'TOOL', |
7050 | 84 => 'TOOL', |
6856 | 85 => 'SPELLBOOK', |
7051 | 85 => 'SPELLBOOK', |
6857 | 86 => 'BUILDFAC', |
7052 | 86 => 'BUILDFAC', |
6858 | 87 => 'CLOAK', |
7053 | 87 => 'CLOAK', |
6859 | 88 => 'CONE', |
|
|
6860 | 89 => 'AURA', |
|
|
6861 | 90 => 'SPINNER', |
7054 | 90 => 'SPINNER', |
6862 | 91 => 'GATE', |
7055 | 91 => 'GATE', |
6863 | 92 => 'BUTTON', |
7056 | 92 => 'BUTTON', |
6864 | 93 => 'CF_HANDLE', |
7057 | 93 => 'CF_HANDLE', |
6865 | 94 => 'HOLE', |
7058 | 94 => 'HOLE', |
6866 | 95 => 'TRAPDOOR', |
7059 | 95 => 'TRAPDOOR', |
6867 | 96 => 'WORD_OF_RECALL', |
|
|
6868 | 97 => 'PARAIMAGE', |
|
|
6869 | 98 => 'SIGN', |
7060 | 98 => 'SIGN', |
6870 | 99 => 'BOOTS', |
7061 | 99 => 'BOOTS', |
6871 | 100 => 'GLOVES', |
7062 | 100 => 'GLOVES', |
6872 | 101 => 'SPELL', |
7063 | 101 => 'SPELL', |
6873 | 102 => 'SPELL_EFFECT', |
7064 | 102 => 'SPELL_EFFECT', |
… | |
… | |
6876 | 105 => 'POISONING', |
7067 | 105 => 'POISONING', |
6877 | 106 => 'SAVEBED', |
7068 | 106 => 'SAVEBED', |
6878 | 107 => 'POISONCLOUD', |
7069 | 107 => 'POISONCLOUD', |
6879 | 108 => 'FIREHOLES', |
7070 | 108 => 'FIREHOLES', |
6880 | 109 => 'WAND', |
7071 | 109 => 'WAND', |
6881 | 110 => 'ABILITY', |
|
|
6882 | 111 => 'SCROLL', |
7072 | 111 => 'SCROLL', |
6883 | 112 => 'DIRECTOR', |
7073 | 112 => 'DIRECTOR', |
6884 | 113 => 'GIRDLE', |
7074 | 113 => 'GIRDLE', |
6885 | 114 => 'FORCE', |
7075 | 114 => 'FORCE', |
6886 | 115 => 'POTION_EFFECT', |
7076 | 115 => 'POTION_EFFECT', |
… | |
… | |
6889 | 123 => 'ARMOUR_IMPROVER', |
7079 | 123 => 'ARMOUR_IMPROVER', |
6890 | 124 => 'WEAPON_IMPROVER', |
7080 | 124 => 'WEAPON_IMPROVER', |
6891 | 130 => 'SKILLSCROLL', |
7081 | 130 => 'SKILLSCROLL', |
6892 | 138 => 'DEEP_SWAMP', |
7082 | 138 => 'DEEP_SWAMP', |
6893 | 139 => 'IDENTIFY_ALTAR', |
7083 | 139 => 'IDENTIFY_ALTAR', |
6894 | 141 => 'CANCELLATION', |
|
|
6895 | 150 => 'MENU', |
7084 | 150 => 'MENU', |
6896 | 151 => 'BALL_LIGHTNING', |
|
|
6897 | 153 => 'SWARM_SPELL', |
|
|
6898 | 154 => 'RUNE', |
7085 | 154 => 'RUNE', |
6899 | 155 => 'TRAP', |
7086 | 155 => 'TRAP', |
6900 | 156 => 'POWER_CRYSTAL', |
7087 | 156 => 'POWER_CRYSTAL', |
6901 | 157 => 'CORPSE', |
7088 | 157 => 'CORPSE', |
6902 | 158 => 'DISEASE', |
7089 | 158 => 'DISEASE', |
6903 | 159 => 'SYMPTOM', |
7090 | 159 => 'SYMPTOM', |
6904 | 160 => 'BUILDER', |
7091 | 160 => 'BUILDER', |
6905 | 161 => 'BUILD_MATERIAL', |
7092 | 161 => 'MATERIAL', |
6906 | 162 => 'GPS' |
7093 | 162 => 'GPS', |
|
|
7094 | 163 => 'ITEM_TRANSFORMER', |
|
|
7095 | 164 => 'QUEST' |
6907 | ); |
7096 | ); |
6908 | |
7097 | |
6909 | our %SPELL = ( |
7098 | our %SPELL = ( |
6910 | 0 => 'magic bullet', |
7099 | 0 => 'magic bullet', |
6911 | 1 => 'small fireball', |
7100 | 1 => 'small fireball', |