ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/Deliantra/Data.pm
(Generate patch)

Comparing deliantra/Deliantra/Deliantra/Data.pm (file contents):
Revision 1.8 by root, Mon Mar 13 03:47:36 2006 UTC vs.
Revision 1.9 by root, Mon Mar 13 04:38:46 2006 UTC

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 &lt;connection&gt; value is triggered. In most cases this happens when a player or monster steps on it. When the button is "released", the &lt;connection&gt; value get\'s triggered a second time.', 1200 desc => 'When a predefined amount of weigh is placed on a button, the &lt;connection&gt; value is triggered. In most cases this happens when a player or monster steps on it. When the button is "released", the &lt;connection&gt; 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 &lt;connection&gt; 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 &amp; 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 &amp; 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
6770our %TYPENAME = ( 6971our %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
6909our %SPELL = ( 7098our %SPELL = (
6910 0 => 'magic bullet', 7099 0 => 'magic bullet',
6911 1 => 'small fireball', 7100 1 => 'small fireball',

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines