summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/.gitignore2
-rw-r--r--lib/apex/delete.me1
-rw-r--r--lib/bone/bone001.0124
-rw-r--r--lib/bone/bone004.0014
-rw-r--r--lib/bone/bone004.0024
-rw-r--r--lib/bone/bone004.0034
-rw-r--r--lib/bone/bone004.0044
-rw-r--r--lib/bone/bone004.0054
-rw-r--r--lib/bone/bone004.0064
-rw-r--r--lib/bone/bone004.0074
-rw-r--r--lib/bone/bone004.0084
-rw-r--r--lib/bone/bone004.0094
-rw-r--r--lib/bone/bone004.0104
-rw-r--r--lib/cmov/delete.me1
-rw-r--r--lib/core/auto.lua803
-rw-r--r--lib/core/building.lua15
-rw-r--r--lib/core/crpt_aux.lua243
-rw-r--r--lib/core/dungeon.lua106
-rw-r--r--lib/core/gen_idx.lua261
-rw-r--r--lib/core/gods.lua40
-rw-r--r--lib/core/help.lua141
-rw-r--r--lib/core/init.lua84
-rw-r--r--lib/core/load.lua37
-rw-r--r--lib/core/load2.lua63
-rw-r--r--lib/core/mimc_aux.lua95
-rw-r--r--lib/core/monsters.lua16
-rw-r--r--lib/core/objects.lua45
-rw-r--r--lib/core/player.lua140
-rw-r--r--lib/core/powers.lua105
-rw-r--r--lib/core/quests.lua57
-rw-r--r--lib/core/s_aux.lua742
-rw-r--r--lib/core/stores.lua32
-rw-r--r--lib/core/util.lua257
-rw-r--r--lib/core/xml.lua347
-rw-r--r--lib/data/delete.me0
-rw-r--r--lib/dngn/dun1.142
-rw-r--r--lib/dngn/dun10.03
-rw-r--r--lib/dngn/dun11.202
-rw-r--r--lib/dngn/dun11.222
-rw-r--r--lib/dngn/dun17.155
-rw-r--r--lib/dngn/dun18.02
-rw-r--r--lib/dngn/dun18.12
-rw-r--r--lib/dngn/dun19.115
-rw-r--r--lib/dngn/dun2.312
-rw-r--r--lib/dngn/dun22.102
-rw-r--r--lib/dngn/dun22.55
-rw-r--r--lib/dngn/dun24.03
-rw-r--r--lib/dngn/dun29.156
-rw-r--r--lib/dngn/dun3.185
-rw-r--r--lib/dngn/dun3.285
-rw-r--r--lib/dngn/dun3.35
-rw-r--r--lib/dngn/dun5.03
-rw-r--r--lib/dngn/dun5.1414
-rw-r--r--lib/dngn/dun6.03
-rw-r--r--lib/edit/a_info.txt2889
-rw-r--r--lib/edit/ab_info.txt118
-rw-r--r--lib/edit/al_info.txt2097
-rw-r--r--lib/edit/ba_info.txt283
-rw-r--r--lib/edit/between.map71
-rw-r--r--lib/edit/d_info.txt512
-rw-r--r--lib/edit/dragons.map43
-rw-r--r--lib/edit/e_info.txt2210
-rw-r--r--lib/edit/evil.map52
-rw-r--r--lib/edit/f_info.txt933
-rw-r--r--lib/edit/haunted.map49
-rw-r--r--lib/edit/k_info.txt6418
-rw-r--r--lib/edit/maeglin.map85
-rw-r--r--lib/edit/misc.txt91
-rw-r--r--lib/edit/nirnaeth.map64
-rw-r--r--lib/edit/numenor.txt80
-rw-r--r--lib/edit/ow_info.txt447
-rw-r--r--lib/edit/p_info.txt1974
-rw-r--r--lib/edit/qrand1.map32
-rw-r--r--lib/edit/qrand10.map36
-rw-r--r--lib/edit/qrand11.map36
-rw-r--r--lib/edit/qrand12.map36
-rw-r--r--lib/edit/qrand14.map37
-rw-r--r--lib/edit/qrand5.map27
-rw-r--r--lib/edit/qrand6.map37
-rw-r--r--lib/edit/qrand7.map35
-rw-r--r--lib/edit/r_info.txt18978
-rw-r--r--lib/edit/ra_info.txt1927
-rw-r--r--lib/edit/re_info.txt183
-rw-r--r--lib/edit/readme.txt96
-rw-r--r--lib/edit/s_crypt.map109
-rw-r--r--lib/edit/s_death.map104
-rw-r--r--lib/edit/s_doom.map226
-rwxr-xr-xlib/edit/s_factory.map238
-rw-r--r--lib/edit/s_gates.map117
-rw-r--r--lib/edit/s_info.txt546
-rw-r--r--lib/edit/s_name.map110
-rw-r--r--lib/edit/s_orc.map109
-rwxr-xr-xlib/edit/s_ship.map239
-rw-r--r--lib/edit/set_info.txt77
-rw-r--r--lib/edit/special.txt67
-rw-r--r--lib/edit/spiders.map66
-rw-r--r--lib/edit/st_info.txt744
-rw-r--r--lib/edit/t_basic.txt80
-rw-r--r--lib/edit/t_bree.txt131
-rw-r--r--lib/edit/t_d_bree.txt101
-rw-r--r--lib/edit/t_d_gond.txt118
-rw-r--r--lib/edit/t_d_khaz.txt87
-rw-r--r--lib/edit/t_d_lori.txt101
-rw-r--r--lib/edit/t_d_mina.txt91
-rw-r--r--lib/edit/t_gondol.txt219
-rw-r--r--lib/edit/t_info.txt41
-rw-r--r--lib/edit/t_khazad.txt105
-rw-r--r--lib/edit/t_lorien.txt162
-rw-r--r--lib/edit/t_minas.txt144
-rw-r--r--lib/edit/t_pref.txt111
-rw-r--r--lib/edit/thieves.map70
-rw-r--r--lib/edit/thrain.map35
-rw-r--r--lib/edit/tr_info.txt817
-rw-r--r--lib/edit/trolls.map58
-rw-r--r--lib/edit/v_info.txt2287
-rw-r--r--lib/edit/volcano.txt83
-rw-r--r--lib/edit/w_info.txt120
-rw-r--r--lib/edit/wf_info.txt170
-rw-r--r--lib/edit/wights.map82
-rw-r--r--lib/edit/wolves.map55
-rw-r--r--lib/file/book-0.txt86
-rw-r--r--lib/file/book-1.txt83
-rw-r--r--lib/file/book-10.txt250
-rw-r--r--lib/file/book-101.txt4
-rw-r--r--lib/file/book-102.txt4
-rw-r--r--lib/file/book-103.txt6
-rw-r--r--lib/file/book-104.txt6
-rw-r--r--lib/file/book-105.txt7
-rw-r--r--lib/file/book-106.txt5
-rw-r--r--lib/file/book-107.txt6
-rw-r--r--lib/file/book-11.txt250
-rw-r--r--lib/file/book-12.txt250
-rw-r--r--lib/file/book-13.txt250
-rw-r--r--lib/file/book-14.txt250
-rw-r--r--lib/file/book-15.txt250
-rw-r--r--lib/file/book-16.txt250
-rw-r--r--lib/file/book-17.txt250
-rw-r--r--lib/file/book-18.txt250
-rw-r--r--lib/file/book-19.txt250
-rw-r--r--lib/file/book-2.txt90
-rw-r--r--lib/file/book-20.txt139
-rw-r--r--lib/file/book-200.txt5
-rw-r--r--lib/file/book-201.txt5
-rw-r--r--lib/file/book-202.txt5
-rw-r--r--lib/file/book-203.txt5
-rw-r--r--lib/file/book-4.txt11
-rw-r--r--lib/file/book-6.txt263
-rw-r--r--lib/file/book-7.txt141
-rw-r--r--lib/file/book-8.txt47
-rw-r--r--lib/file/book-9.txt240
-rw-r--r--lib/file/bravado.txt106
-rw-r--r--lib/file/chainswd.txt8
-rw-r--r--lib/file/dam_huge.txt9
-rw-r--r--lib/file/dam_lots.txt21
-rw-r--r--lib/file/dam_med.txt25
-rw-r--r--lib/file/dam_none.txt24
-rw-r--r--lib/file/dam_xxx.txt11
-rw-r--r--lib/file/dead.txt24
-rw-r--r--lib/file/death.txt351
-rw-r--r--lib/file/elvish.txt218
-rw-r--r--lib/file/error.txt67
-rw-r--r--lib/file/mondeath.txt334
-rw-r--r--lib/file/monfear.txt63
-rw-r--r--lib/file/monspeak.txt361
-rw-r--r--lib/file/news.txt24
-rw-r--r--lib/file/news2.txt24
-rw-r--r--lib/file/rart_f.txt86
-rw-r--r--lib/file/rart_s.txt87
-rw-r--r--lib/file/readme!36
-rw-r--r--lib/file/rumors.txt201
-rw-r--r--lib/file/sample.txt5
-rw-r--r--lib/file/sfail.txt34
-rw-r--r--lib/file/silly.txt301
-rw-r--r--lib/file/smeagol.txt29
-rw-r--r--lib/file/smeagolr.txt5
-rw-r--r--lib/file/speakpet.txt53
-rw-r--r--lib/file/timefun.txt92
-rw-r--r--lib/file/timenorm.txt83
-rw-r--r--lib/help/TANG.txt134
-rw-r--r--lib/help/ability.txt115
-rw-r--r--lib/help/advanced.hlp15
-rw-r--r--lib/help/attack.txt148
-rw-r--r--lib/help/automat.txt504
-rw-r--r--lib/help/birth.txt593
-rw-r--r--lib/help/bldg.txt59
-rw-r--r--lib/help/c_alchem.txt135
-rw-r--r--lib/help/c_archer.txt68
-rw-r--r--lib/help/c_assass.txt58
-rw-r--r--lib/help/c_axemas.txt51
-rw-r--r--lib/help/c_bard.txt69
-rw-r--r--lib/help/c_demono.txt54
-rw-r--r--lib/help/c_druid.txt55
-rw-r--r--lib/help/c_geoman.txt59
-rw-r--r--lib/help/c_hafted.txt54
-rw-r--r--lib/help/c_lorema.txt54
-rw-r--r--lib/help/c_mage.txt67
-rw-r--r--lib/help/c_merch.txt29
-rw-r--r--lib/help/c_mimic.txt53
-rw-r--r--lib/help/c_mindcr.txt57
-rw-r--r--lib/help/c_monk.txt87
-rw-r--r--lib/help/c_necro.txt80
-rw-r--r--lib/help/c_palad.txt49
-rw-r--r--lib/help/c_polear.txt52
-rw-r--r--lib/help/c_posses.txt70
-rw-r--r--lib/help/c_pr_drk.txt57
-rw-r--r--lib/help/c_pr_eru.txt55
-rw-r--r--lib/help/c_pr_man.txt54
-rw-r--r--lib/help/c_priest.txt13
-rw-r--r--lib/help/c_ranger.txt55
-rw-r--r--lib/help/c_rogue.txt62
-rw-r--r--lib/help/c_runecr.txt110
-rw-r--r--lib/help/c_sorcer.txt68
-rw-r--r--lib/help/c_summon.txt80
-rw-r--r--lib/help/c_swordm.txt52
-rw-r--r--lib/help/c_symbia.txt68
-rw-r--r--lib/help/c_thaum.txt84
-rw-r--r--lib/help/c_unbel.txt65
-rw-r--r--lib/help/c_warper.txt60
-rw-r--r--lib/help/c_warrio.txt54
-rw-r--r--lib/help/command.txt1252
-rw-r--r--lib/help/corspoil.txt136
-rw-r--r--lib/help/debug.txt278
-rw-r--r--lib/help/def.aux3
-rw-r--r--lib/help/defines.txt639
-rw-r--r--lib/help/dungeon.txt706
-rw-r--r--lib/help/dunspoil.txt173
-rw-r--r--lib/help/essences.txt219
-rw-r--r--lib/help/experien.hlp28
-rw-r--r--lib/help/explore.hlp16
-rw-r--r--lib/help/fatespoi.txt28
-rw-r--r--lib/help/foot.aux4
-rw-r--r--lib/help/g_eru.txt65
-rw-r--r--lib/help/g_manwe.txt62
-rw-r--r--lib/help/g_melkor.txt64
-rw-r--r--lib/help/g_tulkas.txt45
-rw-r--r--lib/help/g_yavann.txt62
-rw-r--r--lib/help/gambling.txt29
-rw-r--r--lib/help/general.txt39
-rw-r--r--lib/help/gods.txt38
-rw-r--r--lib/help/head.aux10
-rw-r--r--lib/help/help.hlp33
-rw-r--r--lib/help/index.txt592
-rw-r--r--lib/help/inscrip.txt65
-rw-r--r--lib/help/lua.hlp34
-rw-r--r--lib/help/lua_gf.txt45
-rw-r--r--lib/help/lua_intr.txt133
-rw-r--r--lib/help/lua_mon.txt535
-rw-r--r--lib/help/lua_play.txt1225
-rw-r--r--lib/help/lua_pow.txt266
-rw-r--r--lib/help/lua_ques.txt299
-rw-r--r--lib/help/lua_skil.txt342
-rw-r--r--lib/help/lua_spel.txt2150
-rw-r--r--lib/help/lua_util.txt898
-rw-r--r--lib/help/luckspoi.txt112
-rw-r--r--lib/help/m_air.txt42
-rw-r--r--lib/help/m_convey.txt71
-rw-r--r--lib/help/m_demono.txt44
-rw-r--r--lib/help/m_divin.txt37
-rw-r--r--lib/help/m_earth.txt35
-rw-r--r--lib/help/m_fire.txt49
-rw-r--r--lib/help/m_geoman.txt75
-rw-r--r--lib/help/m_mana.txt39
-rw-r--r--lib/help/m_meta.txt75
-rw-r--r--lib/help/m_mimic.txt33
-rw-r--r--lib/help/m_mind.txt49
-rw-r--r--lib/help/m_mindcr.txt54
-rw-r--r--lib/help/m_music.txt77
-rw-r--r--lib/help/m_nature.txt53
-rw-r--r--lib/help/m_necrom.txt35
-rw-r--r--lib/help/m_symbio.txt50
-rw-r--r--lib/help/m_tempo.txt41
-rw-r--r--lib/help/m_thaum.txt31
-rw-r--r--lib/help/m_udun.txt35
-rw-r--r--lib/help/m_water.txt33
-rw-r--r--lib/help/macrofaq.txt2366
-rw-r--r--lib/help/magic.hlp41
-rw-r--r--lib/help/magic.txt143
-rw-r--r--lib/help/newbie.hlp16
-rw-r--r--lib/help/option.txt715
-rw-r--r--lib/help/r_beorn.txt33
-rw-r--r--lib/help/r_deathm.txt33
-rw-r--r--lib/help/r_drkelf.txt33
-rw-r--r--lib/help/r_dunad.txt32
-rw-r--r--lib/help/r_dwarf.txt39
-rw-r--r--lib/help/r_elf.txt32
-rw-r--r--lib/help/r_ent.txt39
-rw-r--r--lib/help/r_gnome.txt36
-rw-r--r--lib/help/r_hafelf.txt31
-rw-r--r--lib/help/r_hafogr.txt31
-rw-r--r--lib/help/r_hielf.txt34
-rw-r--r--lib/help/r_hobbit.txt37
-rw-r--r--lib/help/r_human.txt23
-rw-r--r--lib/help/r_kobold.txt31
-rw-r--r--lib/help/r_maia.txt22
-rw-r--r--lib/help/r_orc.txt35
-rw-r--r--lib/help/r_pettyd.txt30
-rw-r--r--lib/help/r_rohank.txt33
-rw-r--r--lib/help/r_thlord.txt32
-rw-r--r--lib/help/r_troll.txt34
-rw-r--r--lib/help/r_wodelf.txt37
-rw-r--r--lib/help/r_yeek.txt30
-rw-r--r--lib/help/rm_barb.txt38
-rw-r--r--lib/help/rm_class.txt14
-rw-r--r--lib/help/rm_herm.txt36
-rw-r--r--lib/help/rm_lsoul.txt26
-rw-r--r--lib/help/rm_skel.txt40
-rw-r--r--lib/help/rm_spec.txt44
-rw-r--r--lib/help/rm_vamp.txt32
-rw-r--r--lib/help/rm_zomb.txt39
-rw-r--r--lib/help/skills.txt539
-rw-r--r--lib/help/spoil_faq.txt73
-rw-r--r--lib/help/spoiler.hlp18
-rw-r--r--lib/help/tome_faq.txt381
-rw-r--r--lib/help/version.txt354
-rw-r--r--lib/help/whattome.txt30
-rw-r--r--lib/help/wishing.txt24
-rw-r--r--lib/info/delete.me1
-rw-r--r--lib/mods/mods_aux.lua185
-rw-r--r--lib/mods/modules.lua5
-rw-r--r--lib/module.lua36
-rw-r--r--lib/note/delete.me1
-rw-r--r--lib/patch/delete.me1
-rw-r--r--lib/pref/422color.prf909
-rw-r--r--lib/pref/colors.prf53
-rw-r--r--lib/pref/font-ami.prf28
-rw-r--r--lib/pref/font-dos.prf8
-rw-r--r--lib/pref/font-ibm.prf363
-rw-r--r--lib/pref/font-mac.new108
-rw-r--r--lib/pref/font-mac.prf18
-rw-r--r--lib/pref/font-win.prf298
-rw-r--r--lib/pref/font-x11.prf22
-rw-r--r--lib/pref/font-xxx.prf472
-rw-r--r--lib/pref/font.prf60
-rw-r--r--lib/pref/graf-ami.prf64
-rw-r--r--lib/pref/graf-dos.prf15
-rw-r--r--lib/pref/graf-ibm.prf6237
-rw-r--r--lib/pref/graf-iso.prf6875
-rw-r--r--lib/pref/graf-mac.prf15
-rw-r--r--lib/pref/graf-new.prf6844
-rw-r--r--lib/pref/graf-sdl.prf37
-rw-r--r--lib/pref/graf-win.prf16
-rw-r--r--lib/pref/graf-x11.prf37
-rw-r--r--lib/pref/graf-xxx.prf6345
-rw-r--r--lib/pref/graf.prf51
-rw-r--r--lib/pref/pref-acn.prf24
-rw-r--r--lib/pref/pref-ami.prf7
-rw-r--r--lib/pref/pref-emx.prf19
-rw-r--r--lib/pref/pref-gcu.prf70
-rw-r--r--lib/pref/pref-iso.prf118
-rw-r--r--lib/pref/pref-mac.prf243
-rw-r--r--lib/pref/pref-sdl.prf144
-rw-r--r--lib/pref/pref-win.prf534
-rw-r--r--lib/pref/pref-x11.prf413
-rw-r--r--lib/pref/pref.prf311
-rw-r--r--lib/pref/trap-iso.prf429
-rw-r--r--lib/pref/trap-xxx.prf428
-rw-r--r--lib/pref/user.prf50
-rw-r--r--lib/pref/xtra-gcu.prf34
-rw-r--r--lib/pref/xtra-new.prf1128
-rw-r--r--lib/pref/xtra-xxx.prf137
-rw-r--r--lib/save/delete.me1
-rw-r--r--lib/scpt/bounty.lua90
-rw-r--r--lib/scpt/corrupt.lua440
-rw-r--r--lib/scpt/drunk.lua21
-rw-r--r--lib/scpt/fireprof.lua480
-rw-r--r--lib/scpt/god.lua640
-rw-r--r--lib/scpt/gods.lua26
-rw-r--r--lib/scpt/help.lua411
-rw-r--r--lib/scpt/init.lua46
-rw-r--r--lib/scpt/intro.lua105
-rw-r--r--lib/scpt/joke.lua31
-rw-r--r--lib/scpt/library.lua513
-rw-r--r--lib/scpt/mimic.lua385
-rw-r--r--lib/scpt/mkeys.lua95
-rw-r--r--lib/scpt/player.lua76
-rw-r--r--lib/scpt/powers.lua61
-rw-r--r--lib/scpt/s_air.lua193
-rw-r--r--lib/scpt/s_convey.lua227
-rw-r--r--lib/scpt/s_demon.lua337
-rw-r--r--lib/scpt/s_divin.lua230
-rw-r--r--lib/scpt/s_earth.lua184
-rw-r--r--lib/scpt/s_eru.lua130
-rw-r--r--lib/scpt/s_fire.lua227
-rw-r--r--lib/scpt/s_geom.lua656
-rw-r--r--lib/scpt/s_mana.lua132
-rw-r--r--lib/scpt/s_manwe.lua144
-rw-r--r--lib/scpt/s_melkor.lua154
-rw-r--r--lib/scpt/s_meta.lua287
-rw-r--r--lib/scpt/s_mind.lua132
-rw-r--r--lib/scpt/s_music.lua443
-rw-r--r--lib/scpt/s_nature.lua152
-rw-r--r--lib/scpt/s_stick.lua444
-rw-r--r--lib/scpt/s_tempo.lua162
-rw-r--r--lib/scpt/s_tulkas.lua81
-rw-r--r--lib/scpt/s_udun.lua180
-rw-r--r--lib/scpt/s_water.lua154
-rw-r--r--lib/scpt/s_yavann.lua157
-rw-r--r--lib/scpt/spells.lua475
-rw-r--r--lib/scpt/stores.lua151
-rw-r--r--lib/scpt/test.lua364
-rw-r--r--lib/user/automat.atm0
-rw-r--r--lib/user/delete.me1
-rw-r--r--lib/xtra/ang16.bdf5017
-rw-r--r--lib/xtra/angband.fntbin0 -> 4096 bytes
-rw-r--r--lib/xtra/font/10X20.FONbin0 -> 8704 bytes
-rw-r--r--lib/xtra/font/12X24.FONbin0 -> 9728 bytes
-rw-r--r--lib/xtra/font/5X8.FONbin0 -> 4608 bytes
-rw-r--r--lib/xtra/font/6X10.FONbin0 -> 4608 bytes
-rw-r--r--lib/xtra/font/6X12.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/6X13.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/6X13B.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/6X9.FONbin0 -> 4608 bytes
-rw-r--r--lib/xtra/font/7X13.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/7X13B.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/8X13.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/8X13B.FONbin0 -> 5120 bytes
-rw-r--r--lib/xtra/font/9X15.FONbin0 -> 7168 bytes
-rw-r--r--lib/xtra/font/9X15B.FONbin0 -> 7168 bytes
-rw-r--r--lib/xtra/font/VeraMono.ttfbin0 -> 49224 bytes
-rw-r--r--lib/xtra/font/XM10X17.FNTbin0 -> 3286 bytes
-rw-r--r--lib/xtra/font/XM10X17B.FNTbin0 -> 3286 bytes
-rw-r--r--lib/xtra/font/XM12X20.FNTbin0 -> 3856 bytes
-rw-r--r--lib/xtra/font/XM12X20B.FNTbin0 -> 3856 bytes
-rw-r--r--lib/xtra/font/XM16X25.FNTbin0 -> 4806 bytes
-rw-r--r--lib/xtra/font/XM16X25B.FNTbin0 -> 4806 bytes
-rw-r--r--lib/xtra/font/XM5X8.FNTbin0 -> 1679 bytes
-rw-r--r--lib/xtra/font/XM6X12.FNTbin0 -> 2061 bytes
-rw-r--r--lib/xtra/font/XM6X12B.FNTbin0 -> 2059 bytes
-rw-r--r--lib/xtra/font/XM8X16B.FNTbin0 -> 2439 bytes
-rw-r--r--lib/xtra/font/xm4x6.fntbin0 -> 1489 bytes
-rw-r--r--lib/xtra/font/xm8x13.fntbin0 -> 2156 bytes
-rw-r--r--lib/xtra/font/xm8x13b.fntbin0 -> 2154 bytes
-rw-r--r--lib/xtra/font/xm8x16.fntbin0 -> 2441 bytes
-rw-r--r--lib/xtra/graf/16x16.bmpbin0 -> 1164238 bytes
-rw-r--r--lib/xtra/graf/16x16.pngbin0 -> 210021 bytes
-rw-r--r--lib/xtra/graf/8x8.bmpbin0 -> 203830 bytes
-rw-r--r--lib/xtra/graf/8x8.pngbin0 -> 44451 bytes
-rw-r--r--lib/xtra/graf/mask.bmpbin0 -> 1164342 bytes
-rw-r--r--lib/xtra/graf/tome-128.pngbin0 -> 45589 bytes
-rw-r--r--lib/xtra/music/delete.me1
-rw-r--r--lib/xtra/sound/Sound.cfg79
-rw-r--r--lib/xtra/sound/readme.txt33
442 files changed, 126505 insertions, 0 deletions
diff --git a/lib/.gitignore b/lib/.gitignore
new file mode 100644
index 00000000..2de989fd
--- /dev/null
+++ b/lib/.gitignore
@@ -0,0 +1,2 @@
+*.raw
+
diff --git a/lib/apex/delete.me b/lib/apex/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/apex/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/bone/bone001.012 b/lib/bone/bone001.012
new file mode 100644
index 00000000..ee81bc54
--- /dev/null
+++ b/lib/bone/bone001.012
@@ -0,0 +1,4 @@
+Truigar
+162
+7
+13
diff --git a/lib/bone/bone004.001 b/lib/bone/bone004.001
new file mode 100644
index 00000000..1c6921d6
--- /dev/null
+++ b/lib/bone/bone004.001
@@ -0,0 +1,4 @@
+Olorin
+13
+21
+10
diff --git a/lib/bone/bone004.002 b/lib/bone/bone004.002
new file mode 100644
index 00000000..0669019f
--- /dev/null
+++ b/lib/bone/bone004.002
@@ -0,0 +1,4 @@
+Pruirk
+108
+12
+24
diff --git a/lib/bone/bone004.003 b/lib/bone/bone004.003
new file mode 100644
index 00000000..93350245
--- /dev/null
+++ b/lib/bone/bone004.003
@@ -0,0 +1,4 @@
+Bearn
+166
+11
+24
diff --git a/lib/bone/bone004.004 b/lib/bone/bone004.004
new file mode 100644
index 00000000..cbd93dd5
--- /dev/null
+++ b/lib/bone/bone004.004
@@ -0,0 +1,4 @@
+Druldo
+64
+19
+0
diff --git a/lib/bone/bone004.005 b/lib/bone/bone004.005
new file mode 100644
index 00000000..6231f5bc
--- /dev/null
+++ b/lib/bone/bone004.005
@@ -0,0 +1,4 @@
+Sook
+56
+0
+23
diff --git a/lib/bone/bone004.006 b/lib/bone/bone004.006
new file mode 100644
index 00000000..ae40af60
--- /dev/null
+++ b/lib/bone/bone004.006
@@ -0,0 +1,4 @@
+Sook
+55
+0
+23
diff --git a/lib/bone/bone004.007 b/lib/bone/bone004.007
new file mode 100644
index 00000000..357c390b
--- /dev/null
+++ b/lib/bone/bone004.007
@@ -0,0 +1,4 @@
+Sook
+45
+0
+23
diff --git a/lib/bone/bone004.008 b/lib/bone/bone004.008
new file mode 100644
index 00000000..1f61a166
--- /dev/null
+++ b/lib/bone/bone004.008
@@ -0,0 +1,4 @@
+Sook
+44
+0
+23
diff --git a/lib/bone/bone004.009 b/lib/bone/bone004.009
new file mode 100644
index 00000000..f0b57b40
--- /dev/null
+++ b/lib/bone/bone004.009
@@ -0,0 +1,4 @@
+Sook
+46
+0
+23
diff --git a/lib/bone/bone004.010 b/lib/bone/bone004.010
new file mode 100644
index 00000000..1e215878
--- /dev/null
+++ b/lib/bone/bone004.010
@@ -0,0 +1,4 @@
+Luthien
+114
+20
+22
diff --git a/lib/cmov/delete.me b/lib/cmov/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/cmov/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/core/auto.lua b/lib/core/auto.lua
new file mode 100644
index 00000000..fa2457ff
--- /dev/null
+++ b/lib/core/auto.lua
@@ -0,0 +1,803 @@
+-- This file is the core of the Automatizer
+-- Please do not touch unless you know what you are doing
+
+__rules = {}
+__rules_max = 0
+
+rule_aux = {}
+
+-- Rule apply function, does .. nothing
+function auto_nothing(obj, item)
+ return
+end
+
+function auto_inscribe(obj, item, note)
+ if obj.note ~= 0 then return end
+ msg_print("<Auto-Inscribe {"..note.."}>")
+ obj.note = quark_add(note)
+ return TRUE
+end
+
+-- Rule apply function, pickup object
+function auto_pickup(obj, item)
+ if item >= 0 then return end
+ if inven_carry_okay(obj) == FALSE then return end
+ msg_print("<Auto-pickup>")
+ object_pickup(-item)
+ return TRUE
+end
+
+-- Rule apply function, destroy item
+function auto_destroy(obj, item)
+ -- be carefull to what we can destroy
+ -- Unaware things won't be destroyed.
+ if is_aware(obj) == FALSE then return end
+
+ -- Inscribed things won't be destroyed!
+ if obj.note ~= 0 then return end
+
+ -- Keep Artifacts -- they cannot be destroyed anyway
+ if is_artifact(obj) == TRUE then return end
+
+ -- Cannot destroy CURSE_NO_DROP objects
+ local f1, f2, f3, f4, f5, esp = object_flags(obj);
+ if band(f4, TR4_CURSE_NO_DROP) ~= 0 and band(obj.ident, IDENT_CURSED) then return end
+
+ msg_print("<Auto-destroy>")
+
+ -- Eliminate the item (from the pack)
+ if item >= 0 then
+ inven_item_increase(item, -obj.number)
+ inven_item_describe(item)
+ inven_item_optimize(item)
+ -- Eliminate the item (from the floor)
+ else
+ floor_item_increase(0 - item, -obj.number)
+ floor_item_describe(0 - item)
+ floor_item_optimize(0 - item)
+ end
+ return TRUE
+end
+
+-- Report the status of an object
+function object_status(obj)
+ local sense =
+ {
+ [SENSE_CURSED] = "bad",
+ [SENSE_WORTHLESS] = "very bad",
+ [SENSE_AVERAGE] = "average",
+ [SENSE_GOOD_LIGHT] = "good",
+ [SENSE_GOOD_HEAVY] = "good",
+ [SENSE_EXCELLENT] = "very good",
+ [SENSE_SPECIAL] = "special",
+ [SENSE_TERRIBLE] = "terrible",
+ }
+
+ if is_known(obj) == FALSE then
+ if sense[obj.sense] then
+ return sense[obj.sense]
+ else
+ return ""
+ end
+ else
+if nil then -- test
+ local osense = -1
+ local type = select_sense(obj, TRUE, TRUE)
+ if type == 1 then
+ osense = value_check_aux1(obj)
+ elseif type == 2 then
+ osense = value_check_aux1_magic(obj)
+ end
+print("type : "..type)
+ if sense[osense] then
+ print("sense: "..sense[osense])
+ return sense[osense]
+ else
+ print("sense: ")
+ return ""
+ end
+
+else -- the real one
+
+ local slot = wield_slot_ideal(obj, TRUE)
+
+ -- Arts items
+ if is_artifact(obj) == TRUE then
+ if band(obj.ident, IDENT_CURSED) == 0 then return "special"
+ else return "terrible" end
+ -- Ego items
+ elseif (obj.name2 > 0 or obj.name2b > 0) then
+ if band(obj.ident, IDENT_CURSED) == 0 then return "very good"
+ else return "very bad" end
+ -- weapon
+ elseif (slot == INVEN_WIELD) or (slot == INVEN_BOW) or (slot == INVEN_AMMO) or (slot == INVEN_TOOL) then
+ if obj.to_h + obj.to_d < 0 then
+ return "bad"
+ elseif obj.to_h + obj.to_d > 0 then
+ return "good"
+ else
+ return "average"
+ end
+ -- armor
+ elseif (slot >= INVEN_BODY) and (slot <= INVEN_FEET) then
+ if obj.to_a < 0 then
+ return "bad"
+ elseif obj.to_a > 0 then
+ return "good"
+ else
+ return "average"
+ end
+ -- ring
+ elseif slot == INVEN_RING then
+ if (obj.to_d + obj.to_h < 0) or (obj.to_a < 0) or (obj.pval < 0) then
+ return "bad"
+ else
+ return "average"
+ end
+ -- amulet
+ elseif slot == INVEN_NECK then
+ if (obj.pval < 0) then
+ return "bad"
+ else
+ return "average"
+ end
+ -- chests
+ elseif obj.tval == TV_CHEST then
+ if obj.pval == 0 then
+ return "empty"
+ elseif obj.pval < 0 then
+ return "disarmed"
+ else
+ return "average"
+ end
+ else
+ return "average"
+ end
+end
+ end
+end
+
+-- Recursive function to generate a rule function tree
+function gen_rule_fct(r)
+ -- It is a test rule (or, and, ...)
+ if r.label == "and" or r.label == "or" then
+ local i
+ local fct_tbl = {}
+ for i = 1, getn(r) do
+ if r[i].label ~= "comment" then
+ tinsert(fct_tbl, gen_rule_fct(r[i]))
+ end
+ end
+ if r.label == "and" then
+ return function(object)
+ local fcts = %fct_tbl
+ local i
+ for i = 1, getn(fcts) do
+ if not fcts[i](object) then return end
+ end
+ return TRUE
+ end
+ elseif r.label == "or" then
+ return function(object)
+ local fcts = %fct_tbl
+ local i
+ for i = 1, getn(fcts) do
+ if fcts[i](object) then return TRUE end
+ end
+ end
+ end
+ -- It is a condition rule (name, type, level, ...)
+ else
+ if r.label == "not" then
+ local f
+ if not r[1] then
+ f = function (object) return TRUE end
+ else
+ f = gen_rule_fct(r[1])
+ end
+ return function(object) return not %f(object) end
+ elseif r.label == "name" then
+ return function(object) if strlower(object_desc(object, -1, 0)) == strlower(%r[1]) then return TRUE end end
+ elseif r.label == "contain" then
+ return function(object) if strfind(strlower(object_desc(object, -1, 0)), strlower(%r[1])) then return TRUE end end
+ elseif r.label == "symbol" then
+ return function(object) if strchar(get_kind(object).d_char) == %r[1] then return TRUE end end
+ elseif r.label == "inscribed" then
+ return function(object) if object.note ~= 0 and strfind(strlower(quark_str(object.note)), strlower(%r[1])) then return TRUE end end
+ elseif r.label == "discount" then
+ local d1 = r.args.min
+ local d2 = r.args.max
+ if tonumber(d1) == nil then d1 = getglobal(d1) else d1 = tonumber(d1) end
+ if tonumber(d2) == nil then d2 = getglobal(d2) else d2 = tonumber(d2) end
+ return function(object) if is_aware(object) == TRUE and object.discount >= %d1 and object.discount <= %d2 then return TRUE end end
+ elseif r.label == "tval" then
+ local tv = r[1]
+ if tonumber(tv) == nil then tv = getglobal(tv) else tv = tonumber(tv) end
+ return function(object) if object.tval == %tv then return TRUE end end
+ elseif r.label == "sval" then
+ assert(r.args.min and r.args.max, "sval rule lacks min or max")
+ local sv1 = r.args.min
+ local sv2 = r.args.max
+ if tonumber(sv1) == nil then sv1 = getglobal(sv1) else sv1 = tonumber(sv1) end
+ if tonumber(sv2) == nil then sv2 = getglobal(sv2) else sv2 = tonumber(sv2) end
+ return function(object) if is_aware(object) == TRUE and object.sval >= %sv1 and object.sval <= %sv2 then return TRUE end end
+ elseif r.label == "status" then
+ return function(object) if object_status(object) == strlower(%r[1]) then return TRUE end end
+ elseif r.label == "state" then
+ if r[1] == "identified" then
+ return function(object) if is_known(object) == TRUE then return TRUE end end
+ else
+ return function(object) if is_known(object) == FALSE then return TRUE end end
+ end
+ elseif r.label == "race" then
+ return function(object) if strlower(get_race_name()) == strlower(%r[1]) then return TRUE end end
+ elseif r.label == "subrace" then
+ return function(object) if strlower(get_subrace_name()) == strlower(%r[1]) then return TRUE end end
+ elseif r.label == "class" then
+ return function(object) if strlower(get_class_name()) == strlower(%r[1]) then return TRUE end end
+ elseif r.label == "level" then
+ assert(r.args.min and r.args.max, "level rule lacks min or max")
+ return function(object) if player.lev >= tonumber(%r.args.min) and player.lev <= tonumber(%r.args.max) then return TRUE end end
+ elseif r.label == "skill" then
+ assert(r.args.min and r.args.max, "skill rule lacks min or max")
+ local s = find_skill_i(r[1])
+ assert(s ~= -1, "no skill "..r[1])
+ return function(object) if get_skill(%s) >= tonumber(%r.args.min) and get_skill(%s) <= tonumber(%r.args.max) then return TRUE end end
+ elseif r.label == "ability" then
+ local s = find_ability(r[1])
+ assert(s ~= -1, "no ability "..r[1])
+ return function(object) if has_ability(%s) == TRUE then return TRUE end end
+ end
+ end
+end
+
+function auto_inscribe_maker(inscription)
+ return function(...)
+ arg.n = arg.n + 1
+ arg[getn(arg)] = %inscription
+ return call(auto_inscribe, arg)
+ end
+end
+
+-- Generate a rule from a table
+function gen_full_rule(t)
+ -- only honor rules for this module
+ if not t.args.module then
+ t.args.module = "ToME"
+ end
+
+ if not ((t.args.module == "all") or (t.args.module == game_module)) then
+ return function() end
+ end
+
+ -- Check for which action to do
+ local apply_fct = auto_nothing
+ if t.args.type == "destroy" then apply_fct = auto_destroy
+ elseif t.args.type == "pickup" then apply_fct = auto_pickup
+ elseif t.args.type == "inscribe" then apply_fct = auto_inscribe_maker(t.args.inscription)
+ end
+
+ -- create the function tree
+ local rf
+ if t[1] then
+ rf = gen_rule_fct(t[1])
+ else
+ rf = function (object) end
+ end
+
+ -- create the final function
+ return function(...)
+ local rf = %rf
+ if rf(arg[1]) then
+ if call(%apply_fct, arg) == TRUE then return TRUE end
+ end
+ end
+end
+
+-- Create a function that checks for the rules(passed in xml form)
+function add_ruleset(s)
+ local tbl = xml:collect(s)
+ local i
+
+ -- Add all rules
+ for i = 1, getn(tbl) do
+ local t = tbl[i]
+
+ if t.label == "rule" then
+ -- Create the function tree
+ local fct = gen_full_rule(t)
+
+ -- Create the test function
+ __rules[__rules_max] =
+ {
+ ["table"] = t,
+ ["fct"] = fct
+ }
+ __rules_max = __rules_max + 1
+ end
+ end
+end
+
+-- Apply the current rules to an object
+-- call with at least (object, idx)
+function apply_rules(...)
+ local i
+ for i = 0, __rules_max - 1 do
+ if call(__rules[i].fct, arg) then return TRUE end
+ end
+ return FALSE
+end
+
+-- Clear the current rules
+function clean_ruleset()
+ __rules_max = 0
+ __rules = {}
+end
+
+------ helper fonctions for the GUI
+
+auto_aux = {}
+auto_aux.stack = { n = 0 }
+auto_aux.idx = 1
+auto_aux.rule = 1
+function auto_aux:go_right()
+ if auto_aux.rule[1] and type(auto_aux.rule[1]) == "table" then
+ tinsert(auto_aux.stack, auto_aux.idx)
+ tinsert(auto_aux.stack, auto_aux.rule)
+ auto_aux.rule = auto_aux.rule[1]
+ auto_aux.idx = 1
+ end
+end
+
+function auto_aux:go_left(sel)
+ local n = getn(auto_aux.stack)
+
+ if n > 0 then
+ auto_aux.idx = auto_aux.stack[n - 1]
+ auto_aux.rule = auto_aux.stack[n]
+ tremove(auto_aux.stack)
+ tremove(auto_aux.stack)
+ end
+end
+
+function auto_aux:go_down()
+ if getn(auto_aux.stack) > 1 then
+ if auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx + 1] then
+ auto_aux.idx = auto_aux.idx + 1
+ auto_aux.rule = auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx]
+ end
+ end
+end
+
+function auto_aux:go_up()
+ if getn(auto_aux.stack) > 1 then
+ if auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx - 1] then
+ auto_aux.idx = auto_aux.idx - 1
+ auto_aux.rule = auto_aux.stack[getn(auto_aux.stack)][auto_aux.idx]
+ end
+ end
+end
+
+function auto_aux:scroll_up()
+ xml.write_off_y = xml.write_off_y - 1
+end
+
+function auto_aux:scroll_down()
+ xml.write_off_y = xml.write_off_y + 1
+end
+
+function auto_aux:scroll_left()
+ xml.write_off_x = xml.write_off_x + 1
+end
+
+function auto_aux:scroll_right()
+ xml.write_off_x = xml.write_off_x - 1
+end
+
+function auto_aux:adjust_current(sel)
+ if __rules_max == 0 then return end
+
+ xml.write_off_y = 0
+ xml.write_off_x = 0
+ auto_aux.idx = 1
+ auto_aux.stack = { n = 0 }
+ auto_aux.rule = __rules[sel].table
+end
+
+function auto_aux:move_up(sel)
+ if sel > 0 then
+ local u = __rules[sel - 1]
+ local d = __rules[sel]
+ __rules[sel - 1] = d
+ __rules[sel] = u
+ return sel - 1
+ end
+ return sel
+end
+
+function auto_aux:move_down(sel)
+ if sel < __rules_max - 1 then
+ local u = __rules[sel]
+ local d = __rules[sel + 1]
+ __rules[sel + 1] = u
+ __rules[sel] = d
+ return sel + 1
+ end
+ return sel
+end
+
+function auto_aux:new_rule(sel, nam, typ, arg)
+ local r
+
+
+ -- nam can also directly be the table itself
+ if type(nam) == "table" then
+ r =
+ {
+ ["table"] = nam,
+ ["fct"] = function (object) end
+ }
+ elseif typ == "inscribe" then
+ if arg == "" then
+ arg = input_box("Inscription?", 79)
+ end
+ r =
+ {
+ ["table"] =
+ {
+ label = "rule",
+ args = { name = nam, type = typ, inscription = arg, module = game_module },
+ },
+ ["fct"] = function (object) end
+ }
+ else
+ r =
+ {
+ ["table"] =
+ {
+ label = "rule",
+ args = { name = nam, type = typ, module = game_module },
+ },
+ ["fct"] = function (object) end
+ }
+ end
+ tinsert(__rules, sel, r)
+ __rules_max = __rules_max + 1
+end
+
+function auto_aux:rename_rule(sel, nam)
+ if sel >= 0 and sel < __rules_max then
+ __rules[sel].table.args.name = nam
+ end
+end
+
+function auto_aux:save_ruleset()
+ xml.write = xml.write_file
+
+ print_hook("clean_ruleset()\nadd_ruleset\n[[\n")
+ local i
+ for i = 0, __rules_max - 1 do
+ xml:print_xml(__rules[i].table, '')
+ end
+ print_hook("]]\n")
+
+ xml.write = xml.write_screen
+end
+
+function auto_aux:del_self(sel)
+ if auto_aux.rule.label == "rule" then
+ tremove(__rules, sel)
+ __rules_max = __rules_max - 1
+ return sel - 1
+ else
+ local idx = auto_aux.idx
+ auto_aux:go_left(sel)
+ tremove(auto_aux.rule, idx)
+ return sel
+ end
+end
+
+auto_aux.types_desc =
+{
+ ["and"] =
+ {
+ "Check is true if all rules within it are true",
+ xml:collect([[<and><foo1>...</foo1><foo2>...</foo2><foo3>...</foo3></and>]]),
+ function ()
+ return xml:collect("<and></and>")
+ end,
+ },
+ ["or"] =
+ {
+ "Check is true if at least one rule within it is true",
+ xml:collect([[<or><foo1>...</foo1><foo2>...</foo2><foo3>...</foo3></or>]]),
+ function ()
+ return xml:collect("<or></or>")
+ end,
+ },
+ ["not"] =
+ {
+ "Invert the result of its child rule",
+ xml:collect([[<not><foo1>...</foo1></not>]]),
+ function ()
+ return xml:collect("<not></not>")
+ end,
+ },
+ ["comment"] =
+ {
+ "Comments are meaningless",
+ xml:collect([[<comment>Comment explaining something</comment>]]),
+ function ()
+ local n = input_box("Comment?", 79)
+ if n == "" then return end
+ return xml:collect("<comment>"..n.."</comment>")
+ end,
+ },
+ ["name"] =
+ {
+ "Check is true if object name matches name",
+ xml:collect([[<name>potion of healing</name>]]),
+ function ()
+ local n = input_box("Object name to match?", 79)
+ if n == "" then return end
+ return xml:collect("<name>"..n.."</name>")
+ end,
+ },
+ ["contain"] =
+ {
+ "Check is true if object name contains word",
+ xml:collect([[<contain>healing</contain>]]),
+ function ()
+ local n = input_box("Word to find in object name?", 79)
+ if n == "" then return end
+ return xml:collect("<contain>"..n.."</contain>")
+ end,
+ },
+ ["inscribed"] =
+ {
+ "Check is true if object inscription contains word",
+ xml:collect([[<inscribed>=g</inscribed>]]),
+ function ()
+ local n = input_box("Word to find in object inscription?", 79)
+ if n == "" then return end
+ return xml:collect("<inscribed>"..n.."</inscribed>")
+ end,
+ },
+ ["discount"] =
+ {
+ "Check is true if object discount is between 2 values",
+ xml:collect([[<sval min='50' max='100'></sval>]]),
+ function ()
+ local s = "<discount "
+
+ local n = input_box("Min discount?", 79)
+ if n == "" then return end
+ s = s.."min='"..n.."' "
+
+ n = input_box("Max discount?", 79)
+ if n == "" then return end
+ s = s.."max='"..n.."'></discount>"
+ return xml:collect(s)
+ end,
+ },
+ ["symbol"] =
+ {
+ "Check is true if object symbol is ok",
+ xml:collect([[<symbol>!</symbol>]]),
+ function ()
+ local n = input_box("Symbol to match?", 1)
+ if n == "" then return end
+ return xml:collect("<symbol>"..n.."</symbol>")
+ end,
+ },
+ ["status"] =
+ {
+ "Check is true if object status is ok",
+ xml:collect([[<status>good</status>]]),
+ function ()
+ local n = msg_box("[t]errible, [v]ery bad, [b]ad, [a]verage, [G]ood, [V]ery good, [S]pecial?")
+ local t =
+ {
+ ["t"] = "terrible",
+ ["v"] = "very bad",
+ ["b"] = "bad",
+ ["a"] = "average",
+ ["G"] = "good",
+ ["V"] = "very good",
+ ["S"] = "special",
+ }
+ if not t[strchar(n)] then return end
+ return xml:collect("<status>"..t[strchar(n)].."</status>")
+ end,
+ },
+ ["state"] =
+ {
+ "Check is true if object is identified/unidentified",
+ xml:collect([[<state>identified</state>]]),
+ function ()
+ local n = msg_box("[i]dentified, [n]on identified?")
+ local t =
+ {
+ ["i"] = "identified",
+ ["n"] = "not identified",
+ }
+ if not t[strchar(n)] then return end
+ return xml:collect("<state>"..t[strchar(n)].."</state>")
+ end,
+ },
+ ["tval"] =
+ {
+ "Check is true if object tval(from k_info.txt) is ok",
+ xml:collect([[<tval>55</tval>]]),
+ function ()
+ local n = input_box("Tval to match?", 79)
+ if n == "" then return end
+ return xml:collect("<tval>"..n.."</tval>")
+ end,
+ },
+ ["sval"] =
+ {
+ {
+ "Check is true if object sval(from k_info.txt) is between",
+ "2 values",
+ },
+ xml:collect([[<sval min='0' max='100'></sval>]]),
+ function ()
+ local s = "<sval "
+
+ local n = input_box("Min sval?", 79)
+ if n == "" then return end
+ s = s.."min='"..n.."' "
+
+ n = input_box("Max sval?", 79)
+ if n == "" then return end
+ s = s.."max='"..n.."'></sval>"
+ return xml:collect(s)
+ end,
+ },
+ ["race"] =
+ {
+ "Check is true if player race is ok",
+ xml:collect([[<race>dunadan</race>]]),
+ function ()
+ local n = input_box("Player race to match?", 79)
+ if n == "" then return end
+ return xml:collect("<race>"..n.."</race>")
+ end,
+ },
+ ["subrace"] =
+ {
+ "Check is true if player subrace is ok",
+ xml:collect([[<subrace>vampire</subrace>]]),
+ function ()
+ local n = input_box("Player subrace to match?", 79)
+ if n == "" then return end
+ return xml:collect("<subrace>"..n.."</subrace>")
+ end,
+ },
+ ["class"] =
+ {
+ "Check is true if player class is ok",
+ xml:collect([[<class>sorceror</class>]]),
+ function ()
+ local n = input_box("Player class to match?", 79)
+ if n == "" then return end
+ return xml:collect("<class>"..n.."</class>")
+ end,
+ },
+ ["level"] =
+ {
+ "Check is true if player level is between 2 values",
+ xml:collect([[<level min='20' max='50'></level>]]),
+ function ()
+ local s = "<level "
+
+ local n = input_box("Min player level?", 79)
+ if n == "" then return end
+ s = s.."min='"..n.."' "
+
+ n = input_box("Max player level?", 79)
+ if n == "" then return end
+ s = s.."max='"..n.."'></level>"
+
+ return xml:collect(s)
+ end,
+ },
+ ["skill"] =
+ {
+ "Check is true if player skill level is between 2 values",
+ xml:collect([[<skill min='10' max='20'>Divination</skill>]]),
+ function ()
+ local s = "<skill "
+
+ local n = input_box("Min skill level?", 79)
+ if n == "" then return end
+ s = s.."min='"..n.."' "
+
+ n = input_box("Max skill level?", 79)
+ if n == "" then return end
+ s = s.."max='"..n.."'>"
+
+ n = input_box("Skill name?", 79)
+ if n == "" then return end
+ if find_skill_i(n) == -1 then return end
+ s = s..n.."</skill>"
+
+ return xml:collect(s)
+ end,
+ },
+ ["ability"] =
+ {
+ "Check is true if player has the ability",
+ xml:collect([[<ability>Ammo creation</ability>]]),
+ function()
+ local n = input_box("Ability name?", 79)
+ if n == "" then return end
+ if find_ability(n) == -1 then return end
+ return xml:collect("<ability>"..n.."</ability>")
+ end,
+ },
+}
+
+function auto_aux:display_desc(sel)
+ local d = auto_aux.types_desc[sel][1]
+ if type(d) == "string" then
+ c_prt(TERM_WHITE, d, 1, 17)
+ else
+ local k, e, i
+ i = 0
+ for k, e in d do
+ c_prt(TERM_WHITE, e, 1 + i, 17)
+ i = i + 1
+ end
+ end
+end
+
+function auto_aux:add_child(sel)
+ -- <rule> and <not> contain only one match
+ if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "not") and auto_aux.rule[1] then return end
+
+ -- Only <and> and <or> can contain
+ if auto_aux.rule.label ~= "rule" and auto_aux.rule.label ~= "and" and auto_aux.rule.label ~= "or" and auto_aux.rule.label ~= "not" then return end
+
+ -- get it
+ local r = auto_aux.types_desc[sel][3]()
+ if not r then return end
+
+ -- Ok add it
+ tinsert(auto_aux.rule, r[1])
+end
+
+function auto_aux.regen_ruleset()
+ local i
+ for i = 0, __rules_max - 1 do
+ __rules[i].fct = gen_full_rule(__rules[i].table)
+ end
+end
+
+
+-- Easily add new rules
+function easy_add_rule(typ, mode, do_status, obj)
+ local detect_rule
+
+ if mode == "tval" then
+ detect_rule = "<tval>"..obj.tval.."</tval>"
+ elseif mode == "tsval" then
+ detect_rule = "<and><tval>"..obj.tval.."</tval><sval min='"..obj.sval.."' max='"..obj.sval.."'></sval></and>"
+ elseif mode == "name" then
+ detect_rule = "<name>"..strlower(object_desc(obj, -1, 0)).."</name>"
+ end
+
+ if do_status == TRUE then
+ local status = object_status(obj)
+ if status and not (status == "") then
+ detect_rule = "<and>"..detect_rule.."<status>"..status.."</status></and>"
+ end
+ end
+
+ local rule = "<rule module='"..game_module.."' name='"..typ.."' type='"..typ.."'>"..detect_rule.."</rule>"
+ auto_aux:new_rule(0, xml:collect(rule)[1], '')
+ auto_aux.regen_ruleset()
+ msg_print("Rule added. Please go to the Automatizer screen (press = then T)")
+ msg_print("to save the modified ruleset.")
+end
diff --git a/lib/core/building.lua b/lib/core/building.lua
new file mode 100644
index 00000000..8e88888a
--- /dev/null
+++ b/lib/core/building.lua
@@ -0,0 +1,15 @@
+__building_actions = {}
+
+function add_building_action(a)
+ assert(a.index, "No building action index")
+ assert(a.action, "No building action action")
+ __building_actions[a.index] = a.action
+end
+
+function __bact_activate(bact)
+ if __building_actions[bact] then
+ return __building_actions[bact]()
+ end
+end
+
+add_hook_script(HOOK_BUILDING_ACTION, "__bact_activate", "__bact_activate")
diff --git a/lib/core/crpt_aux.lua b/lib/core/crpt_aux.lua
new file mode 100644
index 00000000..e4f16e2a
--- /dev/null
+++ b/lib/core/crpt_aux.lua
@@ -0,0 +1,243 @@
+-- Core functions for corruptions
+
+__corruptions = {}
+__corruptions_max = 0
+__corruptions_callbacks_max = 0
+
+-- Get the corruption
+function player.corruption(c, set)
+ if set then
+ player.corruptions_aux[c + 1] = set
+ player.redraw = bor(player.redraw, PR_BASIC)
+ player.update = bor(player.update, PU_BONUS, PU_TORCH, PU_BODY, PU_POWERS)
+ if (set == TRUE) and (__corruptions[c].gain) then
+ __corruptions[c].gain()
+ end
+ if (set == FALSE) and (__corruptions[c].lose) then
+ __corruptions[c].lose()
+ end
+ else
+ return player.corruptions_aux[c + 1]
+ end
+end
+
+-- Test if we have that corruption
+-- We must:
+-- 1) have it or be willing to get it
+-- 2) have all its dependancies
+-- 3) have none of its opposing corruptions
+-- 4) pass the possible tests
+function test_depend_corrupt(corrupt, can_gain)
+ local i, c
+
+ if not can_gain then can_gain = FALSE end
+
+ if can_gain == TRUE then
+ if (player.corruption(corrupt) ~= FALSE) then
+ return FALSE
+ end
+ else
+ if (player.corruption(corrupt) ~= TRUE) then
+ return FALSE
+ end
+ end
+
+ for c, i in __corruptions[corrupt].depends do
+ if test_depend_corrupt(c) ~= TRUE then
+ return FALSE
+ end
+ end
+
+ for c, i in __corruptions[corrupt].oppose do
+ if test_depend_corrupt(c) ~= FALSE then
+ return FALSE
+ end
+ end
+
+ -- are we even allowed to get it?
+ if __corruptions[corrupt].can_gain and (not __corruptions[corrupt].can_gain()) then
+ return FALSE
+ end
+
+ return TRUE
+end
+
+-- Gain a new corruption
+function gain_corruption(group)
+ local i, max
+ local pos = {}
+
+ -- Get the list of all possible ones
+ max = 0
+ for i = 0, __corruptions_max - 1 do
+ if __corruptions[i].group == group and test_depend_corrupt(i, TRUE) == TRUE and __corruptions[i].random == TRUE and __corruptions[i].allow() then
+ pos[max] = i
+ max = max + 1
+ end
+ end
+
+ -- Ok now get one of them
+ if (max > 0) then
+ local ret = rand_int(max)
+
+ player.corruption(pos[ret], TRUE)
+ cmsg_print(TERM_L_RED, __corruptions[pos[ret]].get_text)
+
+ return pos[ret]
+ else
+ return -1
+ end
+end
+
+-- Lose an existing corruption
+function lose_corruption()
+ local i, max
+ local pos = {}
+
+ -- Get the list of all possible ones
+ max = 0
+ for i = 0, __corruptions_max - 1 do
+ if test_depend_corrupt(i) == TRUE and __corruptions[i].removable == TRUE then
+ pos[max] = i
+ max = max + 1
+ end
+ end
+
+ -- Ok now get one of them
+ if (max > 0) then
+ local ret = rand_int(max)
+
+ player.corruption(pos[ret], FALSE)
+ cmsg_print(TERM_L_RED, __corruptions[pos[ret]].lose_text)
+
+ -- Ok now lets see if it broke some dependancies
+ for i = 0, max - 1 do
+ if player.corruption(pos[i]) ~= test_depend_corrupt(pos[i]) then
+ player.corruption(pos[i], FALSE)
+ cmsg_print(TERM_L_RED, __corruptions[pos[i]].lose_text)
+ end
+ end
+
+ return pos[ret]
+ else
+ return -1
+ end
+end
+
+-- Lose all corruptions (for e.g. Potion of New Life)
+function lose_all_corruptions()
+ local i;
+ for i = 0, __corruptions_max - 1 do
+ lose_corruption()
+ end
+ return -1
+end
+
+-- Creates a new corruption
+function add_corruption(c)
+ assert(c.color, "No corruption color")
+ assert(c.name, "No corruption name")
+ assert(c.get_text, "No corruption get_text")
+ assert(c.lose_text, "No corruption lose_text")
+ assert(c.desc, "No corruption desc")
+ assert(c.hooks, "Nothing to do for corruption")
+ if not c.random then c.random = TRUE end
+ if not c.removable then c.removable = TRUE end
+ if not c.allow then c.allow = function() return not nil end end
+
+ if c.depends == nil then c.depends = {} end
+ if c.oppose == nil then c.oppose = {} end
+
+ -- We must make sure the other ones opposes too
+ local o, i
+ for o, i in c.oppose do
+ __corruptions[o].oppose[__corruptions_max] = TRUE
+ end
+
+ local index, h
+ for index, h in c.hooks do
+ add_hook_script(index, "__lua__corrupt_callback"..__corruptions_callbacks_max, "__lua__corrupt_callback"..__corruptions_callbacks_max)
+ setglobal("__lua__corrupt_callback"..__corruptions_callbacks_max,
+ function (...)
+ if test_depend_corrupt(%__corruptions_max) == TRUE then
+ return call(%h, arg)
+ end
+ end
+ )
+ __corruptions_callbacks_max = __corruptions_callbacks_max + 1
+ end
+
+ if type(c.desc) == "table" then
+ local new_desc = ""
+ for index, h in c.desc do
+ new_desc = new_desc..h.."\n"
+ end
+ c.desc = new_desc
+ end
+
+ __corruptions[__corruptions_max] = c
+ __corruptions_max = __corruptions_max + 1
+ return (__corruptions_max - 1)
+end
+
+
+
+---------- Corruption spoiler generator -----------
+function corruption_spoiler_generate()
+ make_temp_file()
+ print_hook(
+[[~~~~~01|Corruptions (Spoiler)
+~~~~~02|Spoilers|Corruptions
+#####R=== ToME Corruptions Spoiler ===
+
+Sometimes adventurers become exposed to the dark powers of Morgoth. If they
+are unable to resist these powers, they become corrupted. Corruptions can
+change their physical or mental abilities, some of which can be good, and
+some bad. Most corruptions will affect you permanently, although some only
+operate when they are activated (whether by player choice or as a random
+event). You can check which corruptions you have in the knowledge screen 6
+(accessed through the '~' menu) or in a character dump.
+
+#####GGaining and (not) losing corruptions
+There are several ways that you can become corrupted.
+
+You can become corrupted by quaffing a Potion of Corruption or by drinking
+from a Fountain of Corruption. Also some strange items can be activated
+for corruption.
+
+Corruptions are permanent. Once you have one, you have it for life.
+
+]])
+ local i, e
+ for i = 0, __corruptions_max - 1 do
+ print_hook("[[[[[B"..__corruptions[i].name.."]\n")
+ print_hook(__corruptions[i].desc)
+ print_hook("[[[[[GGain message: "..__corruptions[i].get_text.."]\n")
+ if __corruptions[i].removable == TRUE then
+ print_hook("[[[[[RLose message: "..__corruptions[i].lose_text.."]\n")
+ else
+ print_hook("It is not removable.\n")
+ end
+
+ local ok
+ ok = nil
+ for e, _ in __corruptions[i].depends do ok = not nil end
+ if ok then
+ print_hook("It depends on:\n")
+ for e, _ in __corruptions[i].depends do
+ print_hook(" "..__corruptions[e].name.."\n")
+ end
+ end
+ ok = nil
+ for e, _ in __corruptions[i].oppose do ok = not nil end
+ if ok then
+ print_hook("It is opposed to:\n")
+ for e, _ in __corruptions[i].oppose do
+ print_hook(" "..__corruptions[e].name.."\n")
+ end
+ end
+ print_hook("\n\n")
+ end
+ close_temp_file()
+ msg_print("File created as: "..get_temp_name())
+end
diff --git a/lib/core/dungeon.lua b/lib/core/dungeon.lua
new file mode 100644
index 00000000..2877838d
--- /dev/null
+++ b/lib/core/dungeon.lua
@@ -0,0 +1,106 @@
+-- Internal lua file in charge of dungeon stuff
+
+function place_dungeon(y, x, d_idx)
+ if d_idx then
+ wild_map(y, x).entrance = 1000 + d_idx
+ else
+ wild_map(y, x).entrance = 0
+ end
+end
+
+function dungeon(d_idx)
+ return d_info[1 + d_idx]
+end
+
+function wild_feat(wild)
+ return wf_info[1 + wild.feat]
+end
+
+function explode_dir(dir)
+ return ddy[dir + 1], ddx[dir + 1]
+end
+
+function rotate_dir(dir, mov)
+ if mov > 0 then
+ if dir == 7 then dir = 8
+ elseif dir == 8 then dir = 9
+ elseif dir == 9 then dir = 6
+ elseif dir == 6 then dir = 3
+ elseif dir == 3 then dir = 2
+ elseif dir == 2 then dir = 1
+ elseif dir == 1 then dir = 4
+ elseif dir == 4 then dir = 7
+ end
+ elseif mov < 0 then
+ if dir == 7 then dir = 4
+ elseif dir == 4 then dir = 1
+ elseif dir == 1 then dir = 2
+ elseif dir == 2 then dir = 3
+ elseif dir == 3 then dir = 6
+ elseif dir == 6 then dir = 9
+ elseif dir == 9 then dir = 8
+ elseif dir == 8 then dir = 7
+ end
+ end
+
+ return dir
+end
+
+-- Check if the map is a filename or directly a map
+function load_map(map, y, x)
+ if strsub(map, 1, 5) == "#!map" then
+ %load_map(TRUE, map, y, x)
+ else
+ %load_map(FALSE, map, y, x)
+ end
+end
+function get_map_size(map)
+ if strsub(map, 1, 5) == "#!map" then
+ return %get_map_size(TRUE, map)
+ else
+ return %get_map_size(FALSE, map)
+ end
+end
+
+-- Place a trap for a specific level
+function place_trap(y, x, level)
+ local old_dun = dun_level
+ dun_level = level
+ %place_trap(y, x)
+ dun_level = old_dun
+end
+
+-- Level generators processing
+__level_generators = {}
+
+function level_generator(t)
+ assert(t.name, "no generator name")
+ assert(t.gen, "no generator function")
+
+ if not t.stairs then t.stairs = TRUE end
+ if not t.monsters then t.monsters = TRUE end
+ if not t.objects then t.objects = TRUE end
+ if not t.miscs then t.miscs = TRUE end
+
+ __level_generators[t.name] = t.gen
+ add_scripted_generator(t.name, t.stairs, t.monsters, t.objects, t.miscs)
+end
+
+function level_generate(name)
+ assert(__level_generators[name], "Unknown level generator '"..name.."'")
+ return __level_generators[name]()
+end
+
+--[[ Example
+level_generator
+{
+ ["name"] = "test",
+ ["gen"] = function()
+ print("zog")
+ for i = 1, 30 do
+ cave(i, 2).feat = 1
+ end
+ return new_player_spot(get_branch())
+ end,
+}
+]]
diff --git a/lib/core/gen_idx.lua b/lib/core/gen_idx.lua
new file mode 100644
index 00000000..5f3af435
--- /dev/null
+++ b/lib/core/gen_idx.lua
@@ -0,0 +1,261 @@
+-- Place here the list of files to parse
+files =
+{
+ "birth.txt",
+ "experien.hlp",
+ "gods.txt",
+ "explore.hlp",
+ "newbie.hlp",
+ "advanced.hlp",
+ "help.hlp",
+ "general.txt",
+ "whattome.txt",
+ "dungeon.txt",
+ "spoiler.hlp",
+ "g_melkor.txt",
+ "skills.txt",
+ "c_bard.txt",
+ "c_druid.txt",
+ "c_lorema.txt",
+ "c_mage.txt",
+ "c_mimic.txt",
+ "c_mindcr.txt",
+ "c_monk.txt",
+ "c_palad.txt",
+ "c_posses.txt",
+ "c_pr_drk.txt",
+ "c_pr_eru.txt",
+ "c_pr_man.txt",
+ "c_symbia.txt",
+ "c_alchem.txt",
+ "c_archer.txt",
+ "c_assass.txt",
+ "c_axemas.txt",
+ "c_demono.txt",
+ "c_geoman.txt",
+ "c_hafted.txt",
+ "c_necro.txt",
+ "c_polear.txt",
+ "c_ranger.txt",
+ "c_rogue.txt",
+ "c_runecr.txt",
+ "c_sorcer.txt",
+ "c_swordm.txt",
+ "c_thaum.txt",
+ "c_unbel.txt",
+ "c_warper.txt",
+ "c_warrio.txt",
+ "m_meta.txt",
+ "rm_skel.txt",
+ "rm_zomb.txt",
+ "luckspoi.txt",
+ "m_air.txt",
+ "dunspoil.txt",
+ "g_eru.txt",
+ "g_manwe.txt",
+ "g_tulkas.txt",
+ "m_divin.txt",
+ "m_mimic.txt",
+ "m_water.txt",
+ "magic.txt",
+ "r_drkelf.txt",
+ "r_dwarf.txt",
+ "r_elf.txt",
+ "r_hielf.txt",
+ "r_hobbit.txt",
+ "r_pettyd.txt",
+ "r_wodelf.txt",
+ "rm_spec.txt",
+ "tome_faq.txt",
+ "ability.txt",
+ "automat.txt",
+ "c_summon.txt",
+ "command.txt",
+ "corspoil.txt",
+ "debug.txt",
+ "m_music.txt",
+ "rm_barb.txt",
+ "macrofaq.txt",
+ "m_necrom.txt",
+ "m_mindcr.txt",
+ "m_symbio.txt",
+ "m_thaum.txt",
+ "magic.hlp",
+ "m_convey.txt",
+ "m_fire.txt",
+ "m_mana.txt",
+ "m_mind.txt",
+ "m_nature.txt",
+ "m_tempo.txt",
+ "m_udun.txt",
+ "m_geoman.txt",
+ "essences.txt",
+ "r_ent.txt",
+ "g_yavann.txt",
+ "defines.txt",
+ "rm_vamp.txt",
+ "inscrip.txt",
+ "m_earth.txt",
+ "option.txt",
+ "attack.txt",
+ "version.txt",
+ "m_demono.txt",
+ "r_beorn.txt",
+ "r_deathm.txt",
+ "r_rohank.txt",
+ "r_hafogr.txt",
+ "r_human.txt",
+ "r_kobold.txt",
+ "r_maia.txt",
+ "r_orc.txt",
+ "r_thlord.txt",
+ "r_troll.txt",
+ "r_yeek.txt",
+ "rm_class.txt",
+ "rm_herm.txt",
+ "rm_lsoul.txt",
+ "wishing.txt",
+ "c_priest.txt",
+ "fatespoi.txt",
+ "gambling.txt",
+ "r_dunad.txt",
+ "r_gnome.txt",
+ "r_hafelf.txt",
+ "c_merch.txt",
+ "spoil_faq.txt",
+}
+
+out_file = "index.txt"
+
+index = {}
+
+function parse_file(file)
+ local fff = openfile(path_build(ANGBAND_DIR_HELP, file), "r")
+ local line
+
+ line = read(fff, "*l")
+ while line do
+ local i, j, anchor, name, subname = strfind(line, "~~~~~(%d+)|([%d%a -]+)|([%d%a -]+)")
+ if not i then
+ i, j, anchor, name = strfind(line, "~~~~~(%d+)|([%d%a -]+)")
+
+ subname = nil
+ end
+
+ if i then
+ if not index[name] then
+ index[name] = {}
+ end
+ if subname then
+ tinsert(index[name], { __name__ = subname, __file__ = file, __anchor__ = anchor})
+ else
+ tinsert(index[name], { __name__ = "__primary__", __file__ = file, __anchor__ = anchor})
+ end
+ end
+
+ line = read(fff, "*l")
+ end
+
+ closefile(fff)
+end
+
+function sort_fct(a, b)
+ local i, len
+
+ a = a.__name__
+ b = b.__name__
+
+ if strlen(a) > strlen(b) then len = strlen(b) else len = strlen(a) end
+
+ for i = 1, len do
+ local ac = strbyte(a, i)
+ local bc = strbyte(b, i)
+
+ if ac < bc then
+ return not nil
+ elseif ac > bc then
+ return nil
+ end
+ end
+ if strlen(a) > strlen(b) then return nil else return not nil end
+end
+
+function generate_index()
+ local k, e, index_list
+ for _, e in files do
+ parse_file(e)
+ end
+
+ index_list = {}
+ for k, e in index do
+ -- Ok either my sort function or lua sort function sucks ass ..
+ sort(e, sort_fct)
+ sort(e, sort_fct)
+ sort(e, sort_fct)
+ sort(e, sort_fct)
+ sort(e, sort_fct)
+ tinsert(index_list, {__name__= k, __table__ = e})
+ end
+
+ -- Ok either my sort function or lua sort function sucks ass ..
+ sort(index_list, sort_fct)
+ sort(index_list, sort_fct)
+ sort(index_list, sort_fct)
+ sort(index_list, sort_fct)
+ sort(index_list, sort_fct)
+ index = index_list
+end
+
+function out_link(fff, space, name, file, anchor)
+ write(fff, space.."*****"..file.."*"..anchor.."["..name.."]\n")
+end
+
+function print_index()
+ local i, j, c, new_c
+ local fff = openfile(path_build(ANGBAND_DIR_HELP, out_file), "w")
+
+ write(fff,
+[[|||||oy
+#####R /----------------------------------------\
+#####R < Help Index >
+#####R \----------------------------------------/
+
+This is the index of everything in the T.o.M.E. documentation.
+
+#####BHit a letter key to jump to the entries for that letter.
+
+Some entries in the index link to the same place as other entries. This is
+intentional, so that the information you want is easy to find.
+
+Don't forget you can browse the help from the *****help.hlp*02[Main menu].
+
+#####sSpotted a problem with the help files, or some content thats missing?
+#####sContact fearoffours@t-o-m-e.net .
+
+]])
+
+ c = ' '
+ for i = 1, getn(index) do
+ new_c = strbyte(index[i].__name__, 1)
+ if c ~= new_c then
+ c = new_c
+ write(fff, "~~~~~"..c.."\n")
+ write(fff, "*****/"..strchar(c)..out_file.."*"..c.."["..strchar(c).."]\n")
+ end
+ for j = 1, getn(index[i].__table__) do
+ if index[i].__table__[j].__name__ == "__primary__" then
+ out_link(fff, " ", index[i].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
+ end
+ end
+ for j = 1, getn(index[i].__table__) do
+ if index[i].__table__[j].__name__ ~= "__primary__" then
+ out_link(fff, " ", index[i].__table__[j].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
+ end
+ end
+ end
+ closefile(fff)
+end
+
+generate_index()
+
+print_index()
diff --git a/lib/core/gods.lua b/lib/core/gods.lua
new file mode 100644
index 00000000..77e0aad5
--- /dev/null
+++ b/lib/core/gods.lua
@@ -0,0 +1,40 @@
+-- Gods helper files
+
+-- Gods structs
+
+__gods_hook = {}
+__gods_callbacks = {}
+__gods_callbacks_max = 0
+
+function add_god(q)
+ local i, index, d, z, qq
+
+ assert(q.name, "No god name")
+ assert(q.desc, "No god desc")
+ assert(q.hooks, "No god hooks")
+
+ i = add_new_gods(q.name);
+
+ z = 0
+ for index, d in q.desc do
+ desc_god(i, z, d);
+ z = z + 1
+ end
+
+ __gods_hook[i] = q.hooks
+ for index, d in q.hooks do
+ add_hook_script(index, "__lua__gods_callback"..__gods_callbacks_max, "__lua__gods_callback"..__gods_callbacks_max)
+ setglobal("__lua__gods_callback"..__gods_callbacks_max, d)
+ __gods_callbacks_max = __gods_callbacks_max + 1
+ end
+ if q.data then
+ for index, d in q.data do
+ -- Besure it exists
+ setglobal(index, d)
+
+ -- Make it save & load
+ add_loadsave(index, d)
+ end
+ end
+ return i
+end
diff --git a/lib/core/help.lua b/lib/core/help.lua
new file mode 100644
index 00000000..a581fe63
--- /dev/null
+++ b/lib/core/help.lua
@@ -0,0 +1,141 @@
+-- Ingame contextual help
+
+-- We use our own hook list as to not overburn the hook proccessor
+-- with many hooks that would slow down things
+-- It would be very meaningless if the option is not even on
+__ingame_hooks = {}
+
+__ingame_help_max = 0
+
+function ingame_help(t, ...)
+ -- This function can also be used to call the callbacks
+ if type(t) == "string" then
+ local f = getglobal("__ingame_help_fct_"..t)
+ call(f, arg)
+ return
+ end
+
+ assert(t.desc or t.fct, "no ingame help desc/fct")
+ assert(t.hook or t.callback, "no ingame help hook/callback")
+ if t.hook then assert(t.event, "no ingame hepl event needed by hook") end
+
+ -- Set it to only trigger once
+ setglobal("__ingame_help_activated_"..__ingame_help_max, FALSE)
+ -- Save/load it
+ add_loadsave("__ingame_help_activated_"..__ingame_help_max, FALSE)
+
+ if t.hook then
+ -- If the hok list didnt exist yet, add it
+ if not __ingame_hooks[t.hook] then
+ -- Set it to empty, we'll fill it later
+ __ingame_hooks[t.hook] = {}
+ -- Add the global hook
+ add_hooks
+ {
+ [t.hook] = function (...)
+ if option_ingame_help ~= TRUE then return end
+ local k, e
+ for k, e in __ingame_hooks[%t.hook] do
+ if k ~= "n" then
+ call(e, arg)
+ end
+ end
+ end
+ }
+ end
+ if t.desc then
+ tinsert(__ingame_hooks[t.hook],
+ function (...)
+ local tbl = %t
+ if getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE then
+ if call(tbl.event, arg) == TRUE then
+ local k, e
+ for k, e in tbl.desc do
+ msg_print(TERM_YELLOW, e)
+ end
+ setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE)
+ end
+ end
+ end
+ )
+ elseif t.fct then
+ tinsert(__ingame_hooks[t.hook],
+ function (...)
+ local tbl = %t
+ if getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE then
+ if call(tbl.event, arg) == TRUE then
+ if tbl.fct() == TRUE then
+ setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE)
+ end
+ end
+ end
+ end
+ )
+ end
+ else
+ local no_test = FALSE
+ if t.no_test == TRUE then no_test = TRUE end
+ if t.desc then
+ setglobal
+ (
+ "__ingame_help_fct_"..(t.callback),
+ function (...)
+ local tbl = %t
+ if ((option_ingame_help == TRUE) or (%no_test == TRUE)) and (getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE) then
+ local k, e
+ for k, e in tbl.desc do
+ msg_print(TERM_YELLOW, e)
+ end
+ setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE)
+ end
+ end
+ )
+ elseif t.fct then
+ setglobal
+ (
+ "__ingame_help_fct_"..(t.callback),
+ function (...)
+ local tbl = %t
+ if ((option_ingame_help == TRUE) or (%no_test == TRUE)) and (getglobal("__ingame_help_activated_"..%__ingame_help_max) == FALSE) then
+ if call(tbl.fct, arg) == TRUE then
+ setglobal("__ingame_help_activated_"..%__ingame_help_max, TRUE)
+ end
+ end
+ end
+ )
+ end
+ end
+
+ __ingame_help_max = __ingame_help_max + 1
+end
+
+-- Clean up the ingame help seen at birth
+add_hooks
+{
+ [HOOK_BIRTH_OBJECTS] = function()
+ local i
+ for i = 0, __ingame_help_max - 1 do
+ setglobal("__ingame_help_activated_"..i, FALSE)
+ end
+ end
+}
+
+function ingame_clean()
+ local i
+ for i = 0, __ingame_help_max - 1 do
+ setglobal("__ingame_help_activated_"..i, FALSE)
+ end
+end
+
+-- helper function, brings up a doc
+function ingame_help_doc(name, anchor)
+ -- Save screen
+ screen_save();
+
+ -- Peruse the help file
+ if not anchor then anchor = 0 end
+ show_file(name, 0, -anchor, 0)
+
+ -- Load screen
+ screen_load()
+end
diff --git a/lib/core/init.lua b/lib/core/init.lua
new file mode 100644
index 00000000..9a9ec1ee
--- /dev/null
+++ b/lib/core/init.lua
@@ -0,0 +1,84 @@
+--
+-- This file is loaded at the initialisation of ToME
+-- Load the system functions
+--
+
+-- Name of globals to save
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "load.lua")
+
+-- Very thin xml parser(49 lines ;)
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "xml.lua")
+
+-- various vital helper code
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "util.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "player.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "objects.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "monsters.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "powers.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "building.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "dungeon.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "s_aux.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "crpt_aux.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "mimc_aux.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "quests.lua")
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "gods.lua")
+
+-- Load the ingame contextual help
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "help.lua")
+
+-- let the store specific stuff happen!
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "stores.lua")
+
+--------------------------------------------------------------
+--------------------------------------------------------------
+--------------------------------------------------------------
+-------------Here we load the non vital scripts---------------
+-----------------------from lib/scpt--------------------------
+--------------------------------------------------------------
+--------------------------------------------------------------
+tome_dofile("init.lua")
+
+-- The dofile functions for each patch
+patch_dofile = {}
+
+-- Now load patches
+function load_patches()
+ scansubdir(ANGBAND_DIR_PATCH)
+ for i = 0, scansubdir_max - 1 do
+ if (scansubdir_result[i + 1] ~= ".") and (scansubdir_result[i + 1] ~= "..") then
+ local dir = path_build(ANGBAND_DIR_PATCH, scansubdir_result[i + 1])
+ local file = path_build(dir, "patch.lua")
+ if file_exist(file) == TRUE then
+ patch_init = nil
+ tome_dofile_anywhere(dir, "patch.lua", TRUE)
+ unset_safe_globals()
+ if patch_init == nil then
+ set_safe_globals()
+ quit("Patch in "..file.." did not include a patch_init() function")
+ else
+ set_safe_globals()
+
+ -- create the dofile function
+ patch_dofile[scansubdir_result[i + 1]] = function(f)
+ tome_dofile_anywhere(%dir, f, TRUE)
+ end
+
+ local name, version = patch_init()
+ if name == nil or version == nil then
+ quit("Patch in "..file.." did not return valid name or version.\nIt must return name, version")
+ end
+ patch_version(name, version)
+ end
+ end
+ end
+ end
+end
+load_patches()
+
+--------------------------------------------------------------
+--------------------------------------------------------------
+--------------------------------------------------------------
+--
+-- Do not thouch after this line
+--
+tome_dofile_anywhere(ANGBAND_DIR_CORE, "load2.lua")
diff --git a/lib/core/load.lua b/lib/core/load.lua
new file mode 100644
index 00000000..9522ec91
--- /dev/null
+++ b/lib/core/load.lua
@@ -0,0 +1,37 @@
+-- Savefile stuff
+-- Do not meddle in the affairs of savefiles for they are subtle and quick to be become incompatible
+
+__loadsave_name = {}
+__loadsave_max = 0
+__loadsave_tmp = 0
+
+function add_loadsave(name, default)
+ assert(name, "No variable name to save")
+ assert(default, "No default value")
+
+ -- if it is a table we must create many entries
+ if type(default) == "table" then
+ for k, e in default do
+ add_loadsave(name.."."..k, e)
+ end
+ else
+ __loadsave_name[__loadsave_max] = { name = name, default = default }
+ __loadsave_max = __loadsave_max + 1
+ end
+end
+
+-- Example of how to save a table
+-- NOTE: { 1, 2, 3 } will NOT work, the key MUST be a string
+--[[
+add_loadsave("t",
+{
+ foo = 7,
+ tab = {
+ a = 1,
+ b = 2,
+ tab = {
+ a=1, b=2, c=3,
+ },
+ },
+})
+]]
diff --git a/lib/core/load2.lua b/lib/core/load2.lua
new file mode 100644
index 00000000..7ea432e9
--- /dev/null
+++ b/lib/core/load2.lua
@@ -0,0 +1,63 @@
+-- Savefile helpers
+
+-- function called when a key in the variable part ofthe savefile is read
+-- if the key matches what we need, we use it, otehrwise just ignore it
+function __savefile_load(key, val)
+ local index, elem
+
+ for index, elem in __loadsave_name do
+ if (key == elem.name) then
+ dostring(elem.name.." = "..val)
+ end
+ end
+end
+
+function dump_loadsave()
+ local k, e
+ for k, e in __loadsave_name do
+ msg_print(k.." :: ".. e.name.." ["..e.default.."]")
+ end
+end
+
+-- called when the game is saved, can only save numbers
+-- assosiate a key with them to allow the loading code to recognize them
+function __savefile_save()
+ local index, elem
+ for index, elem in __loadsave_name do
+ dostring("__loadsave_tmp = "..elem.name)
+ save_number_key(elem.name, __loadsave_tmp);
+ end
+end
+
+register_savefile(__loadsave_max)
+add_hook_script(HOOK_LOAD_GAME, "__savefile_load", "__hook_load")
+add_hook_script(HOOK_SAVE_GAME, "__savefile_save", "__hook_save")
+
+-- Parse a flattened(i.e: foo.bar.zog) table path and recrate tables
+function reconstruct_table(name)
+ for i = 1, strlen(name) - 1 do
+ if strsub(name, i, i) == "." then
+ local tbl = strsub(name, 1, i - 1)
+
+ if dostring("return "..tbl) == nil then
+ dostring(tbl.."={}")
+ end
+ end
+ end
+end
+
+-- Automagically set unkown variables, otherwise the savefile code
+-- might get VERY upset
+do
+ local k, e
+ -- We need to be able to check for unknown globals
+ unset_safe_globals()
+ for k, e in __loadsave_name do
+ reconstruct_table(e.name)
+ if dostring("return "..(e.name)) == nil then
+ dostring((e.name).." = "..(e.default))
+ end
+ end
+ -- Now taht we did, we set it back, for it is usefull ;)
+ set_safe_globals()
+end
diff --git a/lib/core/mimc_aux.lua b/lib/core/mimc_aux.lua
new file mode 100644
index 00000000..c37a869b
--- /dev/null
+++ b/lib/core/mimc_aux.lua
@@ -0,0 +1,95 @@
+-- Mimic shapes helper file
+
+__mimics = {}
+__mimics_max = 1
+__mimics_names = {}
+
+function add_mimic_shape(t)
+ assert(t.name, "no mimic name")
+ assert(t.desc, "no mimic desc")
+ assert(t.calc, "no mimic calc")
+ assert(t.level, "no mimic level")
+ assert(t.duration, "no mimic duration")
+
+ if not t.limit then t.limit = 0 end
+
+ if not t.obj_name then
+ t.obj_name = t.name
+ end
+
+ t.show_name = '['..t.name..']'
+
+ -- if it needs hooks, add them
+ if t.hooks then
+ add_hooks(t.hooks)
+ end
+
+ -- Add it in a name to index hash table
+ __mimics_names[t.name] = __mimics_max
+
+ __mimics[__mimics_max] = t
+ __mimics_max = __mimics_max + 1
+end
+
+function resolve_mimic_name(name)
+ if __mimics_names[name] then
+ return __mimics_names[name]
+ else
+ return -1
+ end
+end
+
+function find_random_mimic_shape(level, limit, realm)
+ local mimic, tries
+
+ tries = 1000
+ while tries > 0 do
+ tries = tries - 1
+ mimic = rand_range(1, __mimics_max - 1)
+ if (not realm) or (__mimics[mimic].realm == realm) then
+ if limit >= __mimics[mimic].limit then
+ if (rand_int(__mimics[mimic].level * 3) < level) and (__mimics[mimic].rarity < 100) and (magik(100 - __mimics[mimic].rarity) == TRUE) then
+ break
+ end
+ end
+ end
+ end
+ if tries > 0 then
+ return mimic
+ else
+ return resolve_mimic_name("Abomination")
+ end
+end
+
+function get_mimic_info(mimic, info)
+ if not __mimics[mimic] then return 0 end
+ return __mimics[mimic][info]
+end
+
+function get_mimic_rand_dur(mimic)
+ return rand_range(__mimics[mimic].duration[1], __mimics[mimic].duration[2])
+end
+
+function calc_mimic(mimic)
+ return __mimics[mimic].calc()
+end
+
+function calc_mimic_power(mimic)
+ if __mimics[mimic].power then __mimics[mimic].power() end
+end
+
+--- Here comes the only vital shape
+
+add_mimic_shape
+{
+ ["name"] = "Abomination",
+ ["obj_name"] = "Abominable Cloak",
+ ["desc"] = "Abominations are failed experiments of powerful wizards.",
+ ["realm"] = nil,
+ ["level"] = 1,
+ ["rarity"] = 101,
+ ["duration"] = {20, 100},
+ ["calc"] = function ()
+ apply_flags(TR1_SPEED + TR1_STR + TR1_INT + TR1_WIS + TR1_DEX + TR1_CON + TR1_CHR, 0, TR3_AGGRAVATE, 0, 0, 0, -10)
+ end,
+}
diff --git a/lib/core/monsters.lua b/lib/core/monsters.lua
new file mode 100644
index 00000000..ca2851a0
--- /dev/null
+++ b/lib/core/monsters.lua
@@ -0,0 +1,16 @@
+-- SYSTEM FILE
+--
+-- Monster stuff, do not touch
+--
+
+function summon_monster(y, x, lev, friend, typ)
+ if type(typ) == "number" then
+ if friend == TRUE then
+ return summon_specific_friendly(y, x, lev, typ, FALSE)
+ else
+ return summon_specific(y, x, lev, typ)
+ end
+ else
+ return summon_monster_aux(y, x, lev, friend, typ)
+ end
+end
diff --git a/lib/core/objects.lua b/lib/core/objects.lua
new file mode 100644
index 00000000..97320b82
--- /dev/null
+++ b/lib/core/objects.lua
@@ -0,0 +1,45 @@
+-- SYSTEM FILE
+--
+-- Lua object funtions
+--
+
+function create_object(tval, sval)
+ local obj = new_object()
+ object_prep(obj, lookup_kind(tval, sval))
+ return (obj)
+end
+
+function set_item_tester(tester)
+ if tolua.type(tester) == "number" then
+ lua_set_item_tester(tester, "")
+ end
+ if tolua.type(tester) == "string" then
+ lua_set_item_tester(0, tester)
+ end
+ if tolua.type(tester) == "function" then
+ __get_item_hook_default = tester
+ lua_set_item_tester(0, "__get_item_hook_default")
+ end
+end
+
+function create_artifact(a_idx)
+ local obj
+ local tval, sval
+
+ tval = a_info[a_idx + 1].tval
+ sval = a_info[a_idx + 1].sval
+ obj = create_object(tval, sval)
+ obj.name1 = a_idx
+ apply_magic(obj, -1, TRUE, TRUE, TRUE)
+
+ return (obj)
+end
+
+function get_kind(obj)
+ return k_info[obj.k_idx + 1]
+end
+
+function get_item(ask, deny, flags, mask)
+ set_item_tester(mask)
+ return get_item_aux(0, ask, deny, flags)
+end
diff --git a/lib/core/player.lua b/lib/core/player.lua
new file mode 100644
index 00000000..3017d94f
--- /dev/null
+++ b/lib/core/player.lua
@@ -0,0 +1,140 @@
+-- SYSTEM FILE
+--
+-- Lua player funtions
+--
+
+-- Gods
+function deity(i)
+ return deity_info[1 + i]
+end
+
+-------- skill stuff ---------
+
+-- Easy skill access
+function skill(i)
+ return s_info[i + 1]
+end
+
+-- Sart a lasting spell
+function player.start_lasting_spell(spl)
+ player.music_extra = -spl
+end
+
+-- stat mods
+function player.modify_stat(stat, inc)
+ player.stat_add[1 + stat] = player.stat_add[1 + stat] + inc
+end
+
+-- powers mods
+function player.add_power(pow)
+ player.powers[1 + pow] = TRUE
+end
+
+-- easier inventory access
+function player.inventory(i)
+ return player.inventory_real[i + 1]
+end
+
+-- modify mana
+-- returns TRUE if there is a pb
+function increase_mana(amt)
+ player.csp = player.csp + amt
+ player.redraw = bor(player.redraw, PR_MANA)
+ if (player.csp < 0) then
+ player.csp = 0
+ return TRUE
+ end
+ if (player.csp > player.msp) then
+ player.csp = player.msp
+ end
+ return FALSE
+end
+
+
+-- Return the coordinates of the player whether in wild or not
+function player.get_wild_coord()
+ if player.wild_mode == TRUE then
+ return player.py, player.px
+ else
+ return player.wilderness_y, player.wilderness_x
+ end
+end
+
+-- Create a new power
+__power_fct = {}
+function add_power(p)
+ local i
+
+ assert(p.name, "No power name!")
+ assert(p.desc, "No power desc!")
+ assert(p.desc_get, "No power desc get!")
+ assert(p.desc_lose, "No power desc lose!")
+ assert(p.stat, "No power stat!")
+ assert(p.level, "No power level!")
+ assert(p.cost, "No power cost!")
+ assert(p.fail, "No power fail!")
+ assert(p.power, "No power power!")
+
+ i = add_new_power(p.name, p.desc, p.desc_get, p.desc_lose, p.level, p.cost, p.stat, p.fail)
+ __power_fct[i] = p.power
+ return i
+end
+
+function __power_fct_activate(power)
+ if __power_fct[power] then
+ __power_fct[power]()
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+-- Register in the hook list
+add_hook_script(HOOK_ACTIVATE_POWER, "__power_fct_activate", "__power_fct_activate")
+
+
+--- Mkeys
+
+-- Create a new power
+__mkey_fct = {}
+function add_mkey(p)
+ local i
+
+ assert(p.mkey, "No mkey mkey!")
+ assert(p.fct, "No mkeey fct!")
+
+ __mkey_fct[p.mkey] = p.fct
+end
+
+function __mkey_fct_activate(power)
+ if __mkey_fct[power] then
+ __mkey_fct[power]()
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+-- Register in the hook list
+add_hook_script(HOOK_MKEY, "__mkey_fct_activate", "__mkey_fct_activate")
+
+
+-- Subraces
+function subrace(racem)
+ return race_mod_info[racem + 1]
+end
+
+function subrace_add_power(subrace, power)
+ for i = 1, 4 do
+ if subrace.powers[i] == -1 then
+ subrace.powers[i] = power
+ return not nil
+ end
+ end
+ return nil
+end
+
+-- Body parts
+function player.add_body_part(part, nb)
+ player.extra_body_parts[part + 1] = player.extra_body_parts[part + 1] + nb
+end
diff --git a/lib/core/powers.lua b/lib/core/powers.lua
new file mode 100644
index 00000000..839a921d
--- /dev/null
+++ b/lib/core/powers.lua
@@ -0,0 +1,105 @@
+--
+-- Helper functions for magic powers
+--
+
+__magic_powers = {}
+
+function add_magic(m)
+ local i, ret
+
+ if type(m.spell_list) ~= "table" then
+ error("add_magic called without a table")
+ end
+
+ -- Ok iterate over all the powers to add
+ local index, p, max
+
+ -- First, count them
+ max = 0
+ for index, p in m.spell_list do
+ max = max + 1
+ end
+
+ -- Now register it
+ ret = {}
+ i = new_magic_power(max)
+ ret.spells = i
+ ret.max = max
+ ret.fail_fct = m.fail
+ if m.stat then
+ ret.stat = m.stat
+ else
+ ret.stat = A_INT
+ end
+ if m.get_level then
+ ret.get_current_level = m.get_level
+ else
+ ret.get_current_level = function()
+ return player.lev
+ end
+ end
+
+ -- And add each spells
+ max = 0
+ ret.info = {}
+ ret.spell = {}
+ for index, p in m.spell_list do
+ assert(p.name, "No name for the spell!")
+ assert(p.desc, "No desc for the spell!")
+ assert(p.mana, "No mana for the spell!")
+ assert(p.level, "No level for the spell!")
+ assert(p.fail, "No fail for the spell!")
+ assert(p.info, "No info for the spell!")
+ assert(p.spell, "No spell for the spell!")
+
+ get_magic_power(i, max).name = p.name
+ get_magic_power(i, max).desc = p.desc
+ get_magic_power(i, max).mana_cost = p.mana
+ get_magic_power(i, max).min_lev = p.level
+ get_magic_power(i, max).fail = p.fail
+ ret.info[max] = p.info
+ ret.spell[max] = p.spell
+
+ max = max + 1
+ end
+
+ return ret
+end
+
+function __get_magic_info(power)
+ return __current_magic_power_info[power]()
+end
+
+function execute_magic(m)
+ local sn, ret
+
+ -- Ask for a spell
+ __current_magic_power_info = m.info
+ ret, sn = select_magic_power(0, m.spells, m.max, "__get_magic_info", m.get_current_level(), m.stat)
+ if (ret == FALSE) then return end
+
+ -- Verify mana needs
+ if (get_magic_power(m.spells, sn).mana_cost > player.csp) then msg_print("Not enough mana!") return end
+
+ -- Verify failure(second parameter is optional)
+ if m.fail then
+ __current_magic_power_fail = m.fail_fct
+ if (magic_power_sucess(get_magic_power(m.spells, sn), m.stat, "__current_magic_power_fail") == FALSE) then return end
+ else
+ if (magic_power_sucess(get_magic_power(m.spells, sn), m.stat) == FALSE) then return end
+ end
+
+ -- Actually cast the spells
+ m.spell[sn]()
+
+ -- use up some mana
+ increase_mana(-get_magic_power(m.spells, sn).mana_cost)
+end
+
+-- Get the level of a power
+function get_level_power(s, max, min)
+ if not max then max = 50 end
+ if not min then min = 1 end
+
+ return value_scale(s.get_current_level(), 50, max, min)
+end
diff --git a/lib/core/quests.lua b/lib/core/quests.lua
new file mode 100644
index 00000000..dfe9db51
--- /dev/null
+++ b/lib/core/quests.lua
@@ -0,0 +1,57 @@
+-- Quest helper files
+
+-- Quest structs
+
+__quest_hook = {}
+__quest_callbacks = {}
+__quest_callbacks_max = 0
+__quest_dynamic_desc = {}
+
+function add_quest(q)
+ local i, index, d, z, qq
+
+ assert(q.global, "No quest global name")
+ assert(q.name, "No quest name")
+ assert(q.desc, "No quest desc")
+ assert(q.level, "No quest level")
+ assert(q.hooks, "No quest hooks")
+
+ i = new_quest(q.name);
+ setglobal(q.global, i)
+
+ -- Make it save & load
+ add_loadsave("quest("..q.global..").status", QUEST_STATUS_UNTAKEN)
+
+ if type(q.desc) == "table" then
+ z = 0
+ for index, d in q.desc do
+ quest_desc(i, z, d);
+ z = z + 1
+ end
+ else
+ __quest_dynamic_desc[i] = q.desc
+ quest(i).dynamic_desc = TRUE
+ end
+ quest(i).level = q.level
+ if not q.silent then
+ quest(i).silent = FALSE
+ else
+ quest(i).silent = q.silent
+ end
+ __quest_hook[i] = q.hooks
+ for index, d in q.hooks do
+ add_hook_script(index, "__lua__quest_callback"..__quest_callbacks_max, "__lua__quest_callback"..__quest_callbacks_max)
+ setglobal("__lua__quest_callback"..__quest_callbacks_max, d)
+ __quest_callbacks_max = __quest_callbacks_max + 1
+ end
+ if q.data then
+ for index, d in q.data do
+ -- Besure it exists
+ setglobal(index, d)
+
+ -- Make it save & load
+ add_loadsave(index, d)
+ end
+ end
+ return i
+end
diff --git a/lib/core/s_aux.lua b/lib/core/s_aux.lua
new file mode 100644
index 00000000..abd1269d
--- /dev/null
+++ b/lib/core/s_aux.lua
@@ -0,0 +1,742 @@
+-- Functions to help with spells, do not touch
+
+__schools = {}
+__schools_num = 0
+
+__tmp_spells = {}
+__tmp_spells_num = 0
+
+function add_school(s)
+ __schools[__schools_num] = s
+
+ __schools_num = __schools_num + 1
+ return (__schools_num - 1)
+end
+
+function finish_school(i)
+ local s
+
+ s = __schools[i]
+ assert(s.name, "No school name!")
+ assert(s.skill, "No school skill!")
+
+ -- Need hooks?
+ if s.hooks then
+ add_hooks(s.hooks)
+ end
+
+ new_school(i, s.name, s.skill)
+end
+
+function add_spell(s)
+ __tmp_spells[__tmp_spells_num] = s
+
+ __tmp_spells_num = __tmp_spells_num + 1
+ return (__tmp_spells_num - 1)
+end
+
+function finish_spell(must_i)
+ local i, s
+
+ s = __tmp_spells[must_i]
+ assert(s.name, "No spell name!")
+ assert(s.school, "No spell school!")
+ assert(s.level, "No spell level!")
+ assert(s.mana, "No spell mana!")
+ if not s.mana_max then s.mana_max = s.mana end
+ assert(s.fail, "No spell failure rate!")
+ assert(s.spell, "No spell function!")
+ if not s.info then s.info = function() return "" end end
+ assert(s.desc, "No spell desc!")
+ if not s.random then s.random = SKILL_MAGIC end
+ if s.lasting then
+ assert(type(s.lasting) == "function", "Spell lasting is not function")
+ end
+ if s.stick then
+ local k, e
+ for k, e in s.stick do
+ if type(k) == "table" then
+ assert(e.base_level, "Arg no stick base level")
+ assert(e.max_level, "Arg no stick max level")
+ end
+ end
+ end
+
+ i = new_spell(must_i, s.name)
+ assert(i == must_i, "ACK ! i != must_i ! please contact the maintainer")
+ if type(s.school) == "number" then __spell_school[i] = {s.school}
+ else __spell_school[i] = s.school end
+ spell(i).mana = s.mana
+ spell(i).mana_max = s.mana_max
+ spell(i).fail = s.fail
+ spell(i).skill_level = s.level
+ __spell_spell[i] = s.spell
+ __spell_info[i] = s.info
+ __spell_desc[i] = s.desc
+ return i
+end
+
+-- Creates the school books array
+__spell_spell = {}
+__spell_info = {}
+__spell_desc = {}
+__spell_school = {}
+school_book = {}
+
+-- Find a spell by name
+function find_spell(name)
+ local i
+
+ i = 0
+ while (i < __tmp_spells_num) do
+ if __tmp_spells[i].name == name then return i end
+ i = i + 1
+ end
+ return -1
+end
+
+-- Find if the school is under the influence of a god, returns nil or the level
+function get_god_level(sch)
+ if __schools[sch].gods[player.pgod] then
+ return (s_info[__schools[sch].gods[player.pgod].skill + 1].value * __schools[sch].gods[player.pgod].mul) / __schools[sch].gods[player.pgod].div
+ else
+ return nil
+ end
+end
+
+-- Change this fct if I want to switch to learnable spells
+function get_level_school(s, max, min)
+ local lvl, sch, index, num, bonus
+ local allow_spell_power = TRUE
+
+ lvl = 0
+ num = 0
+ bonus = 0
+
+ -- No max specified ? assume 50
+ if not max then
+ max = 50
+ end
+ if not min then
+ min = 1
+ end
+
+ -- Do we pass tests?
+ if __tmp_spells[s].depend then
+ if __tmp_spells[s].depend() ~= TRUE then
+ return min, "n/a"
+ end
+ end
+
+ for index, sch in __spell_school[s] do
+ local r, s, p, ok = 0, 0, 0, 0
+
+ -- Does it require we worship a specific god?
+ if __schools[sch].god then
+ if __schools[sch].god ~= player.pgod then
+ if min then return min, "n/a"
+ else return 1, "n/a" end
+ end
+ end
+
+ -- Take the basic skill value
+ r = s_info[(school(sch).skill) + 1].value
+
+ -- Do we pass tests?
+ if __schools[sch].depend then
+ if __schools[sch].depend() ~= TRUE then
+ return min, "n/a"
+ end
+ end
+
+ -- Are we under sorcery effect ?
+ if __schools[sch].sorcery then
+ s = s_info[SKILL_SORCERY + 1].value
+ end
+
+ -- Are we affected by spell power ?
+ -- All teh schools must allow it for it to work
+ if not __schools[sch].spell_power then
+ allow_spell_power = nil
+ end
+
+ -- Are we under a god effect ?
+ if __schools[sch].gods then
+ p = get_god_level(sch)
+ if not p then p = 0 end
+ end
+
+ -- Find the higher
+ ok = r
+ if ok < s then ok = s end
+ if ok < p then ok = p end
+
+ -- Do we need to add a special bonus ?
+ if __schools[sch].bonus_level then
+ bonus = bonus + (__schools[sch].bonus_level() * (SKILL_STEP / 10))
+ end
+
+ -- All schools must be non zero to be able to use it
+ if ok == 0 then return min, "n/a" end
+
+ -- Apply it
+ lvl = lvl + ok
+ num = num + 1
+ end
+
+ -- Add the Spellpower skill as a bonus
+ if allow_spell_power then
+ bonus = bonus + (get_skill_scale(SKILL_SPELL, 20) * (SKILL_STEP / 10))
+ end
+
+ -- Add bonus from objects
+ bonus = bonus + (player.to_s * (SKILL_STEP / 10))
+
+ -- / 10 because otherwise we can overflow a s32b and we can use a u32b because the value can be negative
+ -- The loss of information should be negligible since 1 skill = 1000 internally
+ lvl = (lvl / num) / 10
+ lvl = lua_get_level(s, lvl, max, min, bonus)
+
+ return lvl, nil
+end
+
+-- This is the function to use when casting through a stick
+function get_level_device(s, max, min)
+ local lvl
+
+ -- No max specified ? assume 50
+ if not max then
+ max = 50
+ end
+
+ lvl = s_info[SKILL_DEVICE + 1].value
+ lvl = lvl + (get_level_use_stick * SKILL_STEP)
+
+ -- Sticks are limited
+ if lvl - ((spell(s).skill_level + 1) * SKILL_STEP) >= get_level_max_stick * SKILL_STEP then
+ lvl = (get_level_max_stick + spell(s).skill_level - 1) * SKILL_STEP
+ end
+
+ -- / 10 because otherwise we can overflow a s32b and we can use a u32b because the value can be negative
+ -- The loss of information should be negligible since 1 skill = 1000 internally
+ lvl = lvl / 10
+ if not min then
+ lvl = lua_get_level(s, lvl, max, 1, 0)
+ else
+ lvl = lua_get_level(s, lvl, max, min, 0)
+ end
+
+ return lvl
+end
+
+-- The real get_level, works for schooled magic and for innate powers
+get_level_use_stick = -1
+get_level_max_stick = -1
+function get_level(s, max, min)
+ if type(s) == "number" then
+ -- Ahah shall we use Magic device instead ?
+ if get_level_use_stick > -1 then
+ return get_level_device(s, max, min)
+ else
+ local lvl, na = get_level_school(s, max, min)
+ return lvl
+ end
+ else
+ return get_level_power(s, max, min)
+ end
+end
+
+-- Can we cast the spell ?
+function is_ok_spell(s, obj)
+ if get_level(s, 50, 0) == 0 then return nil end
+ if __tmp_spells[s].pval and obj.pval < __tmp_spells[s].pval then return nil end
+ return 1
+end
+
+-- Get the amount of mana(or power) needed
+function get_mana(s)
+ return spell(s).mana + get_level(s, spell(s).mana_max - spell(s).mana, 0)
+end
+
+-- Return the amount of power(mana, piety, whatever) for the spell
+function get_power(s)
+ if check_affect(s, "piety", FALSE) then
+ return player.grace
+ else
+ return player.csp
+ end
+end
+
+-- Return the amount of power(mana, piety, whatever) for the spell
+function get_power_name(s)
+ if check_affect(s, "piety", FALSE) then
+ return "piety"
+ else
+ return "mana"
+ end
+end
+
+-- Changes the amount of power(mana, piety, whatever) for the spell
+function adjust_power(s, x)
+ if check_affect(s, "piety", FALSE) then
+ inc_piety(GOD_ALL, x)
+ else
+ increase_mana(x)
+ end
+end
+
+-- Print the book and the spells
+function print_book(book, spl, obj)
+ local x, y, index, sch, size, s
+
+ x = 0
+ y = 2
+ size = 0
+
+ -- Hack if the book is 255 it is a random book
+ if book == 255 then
+ school_book[book] = {spl}
+ end
+
+ -- Parse all spells
+ for index, s in school_book[book] do
+ local color = TERM_L_DARK
+ local lvl, na = get_level_school(s, 50, -50)
+ local xx, sch_str
+
+ if is_ok_spell(s, obj) then
+ if get_mana(s) > get_power(s) then color = TERM_ORANGE
+ else color = TERM_L_GREEN end
+ end
+
+ xx = nil
+ sch_str = ""
+ for index, sch in __spell_school[s] do
+ if xx then
+ sch_str = sch_str.."/"..school(sch).name
+ else
+ xx = 1
+ sch_str = sch_str..school(sch).name
+ end
+ end
+
+ if na then
+ c_prt(color, format("%c) %-20s%-16s %3s %4s %3d%s %s", size + strbyte("a"), spell(s).name, sch_str, na, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x)
+ else
+ c_prt(color, format("%c) %-20s%-16s %3d %4s %3d%s %s", size + strbyte("a"), spell(s).name, sch_str, lvl, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x)
+ end
+ y = y + 1
+ size = size + 1
+ end
+ prt(format(" %-20s%-16s Level Cost Fail Info", "Name", "School"), 1, x)
+ return y
+end
+
+-- Output the describtion when it is used as a spell
+function print_spell_desc(s, y)
+ local index, desc, x
+
+ x = 0
+
+ if type(__spell_desc[s]) == "string" then c_prt(TERM_L_BLUE, __spell_desc[s], y, x)
+ else
+ for index, desc in __spell_desc[s] do
+ c_prt(TERM_L_BLUE, desc, y, x)
+ y = y + 1
+ end
+ end
+ if check_affect(s, "piety", FALSE) then
+ c_prt(TERM_L_WHITE, "It uses piety to cast.", y, x)
+ y = y + 1
+ end
+ if not check_affect(s, "blind") then
+ c_prt(TERM_ORANGE, "It is castable even while blinded.", y, x)
+ y = y + 1
+ end
+ if not check_affect(s, "confusion") then
+ c_prt(TERM_ORANGE, "It is castable even while confused.", y, x)
+ y = y + 1
+ end
+end
+
+-- Output the desc when sued as a device
+function print_device_desc(s)
+ local index, desc
+
+ if type(__spell_desc[s]) == "string" then text_out(__spell_desc[s])
+ else
+ for index, desc in __spell_desc[s] do
+ text_out("\n" .. desc)
+ end
+ end
+end
+
+function book_spells_num(book)
+ local size, index, sch
+
+ size = 0
+
+ -- Hack if the book is 255 it is a random book
+ if book == 255 then
+ return 1
+ end
+
+ -- Parse all spells
+ for index, s in school_book[book] do
+ size = size + 1
+ end
+ return size
+end
+
+function spell_x(book, spl, s)
+ if book == 255 then
+ return spl
+ else
+ local i, x, val
+
+ i, val = next(school_book[book], nil)
+ x = 0
+ while x < s do
+ i, val = next(school_book[book], i)
+ x = x + 1
+ end
+ return val
+ end
+end
+
+function spell_in_book(book, spell)
+ local i, s
+
+ for i, s in school_book[book] do
+ if s == spell then return TRUE end
+ end
+ return FALSE
+end
+
+-- Returns spell chance of failure for spell
+function spell_chance(s)
+ local chance, s_ptr
+
+ s_ptr = spell(s)
+
+ -- Extract the base spell failure rate
+ if get_level_use_stick > -1 then
+ chance = lua_spell_device_chance(s_ptr.fail, get_level(s, 50), s_ptr.skill_level)
+ else
+ chance = lua_spell_chance(s_ptr.fail, get_level(s, 50), s_ptr.skill_level, get_mana(s), get_power(s), get_spell_stat(s))
+ end
+
+ -- Return the chance
+ return chance
+end
+
+function check_affect(s, name, default)
+ local s_ptr = __tmp_spells[s]
+ local a
+
+ if type(s_ptr[name]) == "number" then
+ a = s_ptr[name]
+ else
+ a = default
+ end
+ if a == FALSE then
+ return nil
+ else
+ return TRUE
+ end
+end
+
+-- Returns the stat to use for the spell, INT by default
+function get_spell_stat(s)
+ if not __tmp_spells[s].stat then return A_INT
+ else return __tmp_spells[s].stat end
+end
+
+function cast_school_spell(s, s_ptr, no_cost)
+ local use = FALSE
+
+ -- No magic
+ if (player.antimagic > 0) then
+ msg_print("Your anti-magic field disrupts any magic attempts.")
+ return
+ end
+
+ -- No magic
+ if (player.anti_magic == TRUE) then
+ msg_print("Your anti-magic shell disrupts any magic attempts.")
+ return
+ end
+
+ -- if it costs something then some condition must be met
+ if not no_cost then
+ -- Require lite
+ if (check_affect(s, "blind")) and ((player.blind > 0) or (no_lite() == TRUE)) then
+ msg_print("You cannot see!")
+ return
+ end
+
+ -- Not when confused
+ if (check_affect(s, "confusion")) and (player.confused > 0) then
+ msg_print("You are too confused!")
+ return
+ end
+
+ -- Enough mana
+ if (get_mana(s) > get_power(s)) then
+ if (get_check("You do not have enough "..get_power_name(s)..", do you want to try anyway?") == FALSE) then return end
+ end
+
+ -- Invoke the spell effect
+ if (magik(spell_chance(s)) == FALSE) then
+ if (__spell_spell[s]() ~= nil) then
+ use = TRUE
+ end
+ else
+ local index, sch
+
+ -- added because this is *extremely* important --pelpel
+ if (flush_failure) then flush() end
+
+ msg_print("You failed to get the spell off!")
+ for index, sch in __spell_school[s] do
+ if __schools[sch].fail then
+ __schools[sch].fail(spell_chance(s))
+ end
+ end
+ use = TRUE
+ end
+ else
+ __spell_spell[s]()
+ end
+
+ if use == TRUE then
+ -- Reduce mana
+ adjust_power(s, -get_mana(s))
+
+ -- Take a turn
+ if is_magestaff() == TRUE then energy_use = 80
+ else energy_use = 100 end
+ end
+
+ player.redraw = bor(player.redraw, PR_MANA)
+ player.window = bor(player.window, PW_PLAYER)
+end
+
+
+-- Helper functions
+HAVE_ARTIFACT = 0
+HAVE_OBJECT = 1
+HAVE_EGO = 2
+function have_object(mode, type, find, find2)
+ local o, i, min, max
+
+ max = 0
+ min = 0
+ if band(mode, USE_EQUIP) == USE_EQUIP then
+ min = INVEN_WIELD
+ max = INVEN_TOTAL
+ end
+ if band(mode, USE_INVEN) == USE_INVEN then
+ min = 0
+ if max == 0 then max = INVEN_WIELD end
+ end
+
+ i = min
+ while i < max do
+ o = get_object(i)
+ if o.k_idx ~= 0 then
+ if type == HAVE_ARTIFACT then
+ if find == o.name1 then return i end
+ end
+ if type == HAVE_OBJECT then
+ if find2 == nil then
+ if find == o.k_idx then return i end
+ else
+ if (find == o.tval) and (find2 == o.sval) then return i end
+ end
+ end
+ if type == HAVE_EGO then
+ if (find == o.name2) or (find == o.name2b) then return i end
+ end
+ end
+ i = i + 1
+ end
+ return -1
+end
+
+-- Can the spell be randomly found(in random books)
+function can_spell_random(i)
+ return __tmp_spells[i].random
+end
+
+-- Find a random spell
+function get_random_spell(typ, level)
+ local spl, tries
+
+ tries = 1000
+ while tries > 0 do
+ tries = tries - 1
+ spl = rand_int(__tmp_spells_num)
+ if (can_spell_random(spl) == typ) and (rand_int(spell(spl).skill_level * 3) < level) then
+ break
+ end
+ end
+ if tries > 0 then
+ return spl
+ else
+ return -1
+ end
+end
+
+-- Execute a lasting spell
+function exec_lasting_spell(spl)
+ assert(__tmp_spells[spl].lasting, "No lasting effect for spell "..__tmp_spells[spl].name.." but called as such")
+ return __tmp_spells[spl].lasting()
+end
+
+-- Helper function for spell effect to know if they are or not obvious
+function is_obvious(effect, old)
+ if old then
+ if old == TRUE or effect == TRUE then
+ return TRUE
+ else
+ return FALSE
+ end
+ else
+ return effect
+ end
+end
+
+-------------------------Sticks-------------------------
+
+-- Fire off the spell
+function activate_stick(spl)
+ local ret = __spell_spell[spl]()
+ local charge, obvious
+ if not ret then
+ charge = FALSE
+ obvious = FALSE
+ else
+ charge = TRUE
+ obvious = ret
+ end
+ return obvious, charge
+end
+
+----------------------------------- Wand, Staves, Rods specific functions ----------------------------
+
+-- Get a spell for a given stick(wand, staff, rod)
+function get_random_stick(stick, level)
+ local spl, tries
+
+ tries = 1000
+ while tries > 0 do
+ tries = tries - 1
+ spl = rand_int(__tmp_spells_num)
+ if __tmp_spells[spl].stick and (type(__tmp_spells[spl].stick[stick]) == "table") then
+ if (rand_int(spell(spl).skill_level * 3) < level) and (magik(100 - __tmp_spells[spl].stick[stick].rarity) == TRUE) then
+ break
+ end
+ end
+ end
+ if tries > 0 then
+ return spl
+ else
+ return -1
+ end
+end
+
+-- Get a random base level
+function get_stick_base_level(stick, level, spl)
+ -- Paranoia
+ if spl < 0 or spl >= __tmp_spells_num or not __tmp_spells[spl].stick[stick] then return 0 end
+
+ local min, max = __tmp_spells[spl].stick[stick].base_level[1], __tmp_spells[spl].stick[stick].base_level[2]
+ local range = max - min;
+
+ -- Ok the basic idea is to have a max possible level of half the dungeon level
+ if range * 2 > level then range = level / 2 end
+
+ -- Randomize a bit
+ range = m_bonus(range, dun_level)
+
+ -- And get the result
+ return min + range
+end
+
+-- Get a random max level
+function get_stick_max_level(stick, level, spl)
+ -- Paranoia
+ if spl < 0 or spl >= __tmp_spells_num or not __tmp_spells[spl].stick[stick] then return 0 end
+
+ local min, max = __tmp_spells[spl].stick[stick].max_level[1], __tmp_spells[spl].stick[stick].max_level[2]
+ local range = max - min;
+
+ -- Ok the basic idea is to have a max possible level of half the dungeon level
+ if range * 2 > level then range = level / 2 end
+
+ -- Randomize a bit
+ range = m_bonus(range, dun_level)
+
+ -- And get the result
+ return min + range
+end
+
+-- Get the number of desired charges
+function get_stick_charges(spl)
+ return __tmp_spells[spl].stick.charge[1] + randint(__tmp_spells[spl].stick.charge[2]);
+end
+
+-- Get activation desc
+function get_activation_desc(spl)
+ local turns
+ if type(__tmp_spells[spl].activate) == 'number' then
+ turns = __tmp_spells[spl].activate
+ else
+ turns = __tmp_spells[spl].activate[1] .. '+d' .. __tmp_spells[spl].activate[2]
+ end
+ return __tmp_spells[spl].desc[1] .. ' every ' .. turns .. ' turns'
+end
+
+-- Compute the timeout of an activation
+function get_activation_timeout(spl)
+ if type(__tmp_spells[spl].activate) == 'number' then
+ return __tmp_spells[spl].activate
+ else
+ return __tmp_spells[spl].activate[1] + randint(__tmp_spells[spl].activate[2])
+ end
+end
+
+-- Fire off the spell
+function activate_activation(spl, item)
+ __spell_spell[spl](item)
+end
+
+
+------- Add new GF type ----------
+max_gf = MAX_GF
+function add_spell_type(t)
+ t.index = max_gf
+ max_gf = max_gf + 1
+ assert(t.color, "No GF color")
+ if not t.monster then t.monster = function() end end
+ if not t.angry then t.angry = function() end end
+ if not t.object then t.object = function() end end
+ if not t.player then t.player = function() end end
+ if not t.grid then t.grid = function() end end
+
+ add_hooks
+ {
+ [HOOK_GF_COLOR] = function (gf, new_gfx)
+ local t = %t
+ if gf == t.index then return TRUE, t.color[new_gfx + 1] end
+ end,
+ [HOOK_GF_EXEC] = function (action, who, gf, dam, rad, y, x, extra)
+ local t = %t
+ if t.index == gf then
+ return t[action](who, dam, rad, y, x, extra)
+ end
+ end,
+ }
+ return t.index
+end
diff --git a/lib/core/stores.lua b/lib/core/stores.lua
new file mode 100644
index 00000000..d4a63168
--- /dev/null
+++ b/lib/core/stores.lua
@@ -0,0 +1,32 @@
+-- Take care of all concerning stores
+function store_buy_list(t)
+ assert(type(t) == "table", "store_buy_list got no table")
+ add_hooks
+ {
+ [HOOK_STORE_BUY] = function (index, name, obj)
+ local tbl = %t
+ local elt = tbl[index]
+ if not elt then
+ elt = tbl[name]
+ end
+ if elt then
+ if elt then
+ if type(elt) == "function" then
+ return TRUE, elt(obj)
+ elseif type(elt) == "table" then
+ local k, e
+ for k, e in elt do
+ if type(e) == "number" then
+ if obj.tval == e then return TRUE, TRUE end
+ else
+ if (obj.tval == e[1]) and (obj.sval >= e[2]) and (obj.sval <= e[3]) then return TRUE, TRUE end
+ end
+ end
+ elseif elt == -1 then
+ return TRUE, FALSE
+ end
+ end
+ end
+ end,
+ }
+end
diff --git a/lib/core/util.lua b/lib/core/util.lua
new file mode 100644
index 00000000..997f1eba
--- /dev/null
+++ b/lib/core/util.lua
@@ -0,0 +1,257 @@
+-- various stuff to make scripters life easier
+
+-- Beware of the scary undefined globals
+function safe_getglobal(x)
+ local v = rawget(globals(), x)
+
+ if v then
+ return v
+ else
+ error("undefined global variable '"..x.."'")
+ end
+end
+
+function set_safe_globals()
+ settagmethod(tag(nil), "getglobal", safe_getglobal)
+end
+function unset_safe_globals()
+ settagmethod(tag(nil), "getglobal", nil)
+end
+
+set_safe_globals()
+
+-- Patch modules
+__patch_modules = {}
+
+function patch_version(name, version)
+ assert(not __patch_modules[name], "Patch " .. name .. " already loaded!!!")
+ __patch_modules[name] = version
+end
+
+function patchs_list()
+ local k, e, first
+ first = FALSE
+ for k, e in __patch_modules do
+ if first == FALSE then print_hook("\n\n [Patch modules]\n") first = TRUE end
+ print_hook("\n "..k.." version "..e)
+ end
+ if first == TRUE then print_hook("\n") end
+end
+
+function patchs_display()
+ local k, e
+ for k, e in __patch_modules do
+ msg_print("Patch: "..k.." version "..e)
+ end
+end
+
+
+-- Better hook interface
+__hooks_list_callback = {}
+__hooks_list_callback_max = 0
+
+function add_hooks(h_table, name_prefix)
+ local k, e
+
+ if not name_prefix then name_prefix = "" end
+ for k, e in h_table do
+ add_hook_script(k, "__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max, "__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max)
+ setglobal("__"..name_prefix.."__hooks_list_callback"..__hooks_list_callback_max, e)
+ __hooks_list_callback_max = __hooks_list_callback_max + 1
+ end
+end
+
+-- Wrapper for the real msg_print and cmsg_print
+-- it understands if we want color or not
+function msg_print(c, m)
+ if type(c) == "number" then
+ cmsg_print(c, m)
+ else
+ call(%msg_print, { c })
+ end
+end
+
+-- Returns the direction of the compass that y2, x2 is from y, x
+-- the return value will be one of the following: north, south,
+-- east, west, north-east, south-east, south-west, north-west,
+-- or "close" if it is within 2 tiles.
+function compass(y, x, y2, x2)
+ local y_axis, x_axis, y_diff, x_diff, compass_dir
+
+ -- is it close to the north/south meridian?
+ y_diff = y2 - y
+
+ -- determine if y2, x2 is to the north or south of y, x
+ if (y_diff > -3) and (y_diff < 3) then
+ y_axis = nil
+ elseif y2 > y then
+ y_axis = "south"
+ else
+ y_axis = "north"
+ end
+
+ -- is it close to the east/west meridian?
+ x_diff = x2 - x
+
+ -- determine if y2, x2 is to the east or west of y, x
+ if (x_diff > -3) and (x_diff < 3) then
+ x_axis = nil
+ elseif x2 > x then
+ x_axis = "east"
+ else
+ x_axis = "west"
+ end
+
+ -- Maybe it is very close
+ if ((not x_axis) and (not y_axis)) then compass_dir = "close"
+ -- Maybe it is (almost) due N/S
+ elseif not x_axis then compass_dir = y_axis
+ -- Maybe it is (almost) due E/W
+ elseif not y_axis then compass_dir = x_axis
+ -- or if it is neither
+ else compass_dir = y_axis.."-"..x_axis
+ end
+
+ return compass_dir
+end
+
+-- Returns a relative approximation of the 'distance' of y2, x2 from y, x.
+function approximate_distance(y, x, y2, x2)
+ local y_diff, x_diff, most_dist
+
+ -- how far to away to the north/south
+ y_diff = y2 - y
+
+ -- make sure it's a positive integer
+ if y_diff < 0 then
+ y_diff = 0 - y_diff
+ end
+
+ -- how far to away to the east/west
+ x_diff = x2 - x
+
+ -- make sure it's a positive integer
+ if x_diff < 0 then
+ x_diff = 0 - x_diff
+ end
+
+ -- find which one is the larger distance
+ if x_diff > y_diff then
+ most_dist = x_diff
+ else
+ most_dist = y_diff
+ end
+
+ -- how far away then?
+ if most_dist >= 41 then
+ how_far = "a very long way"
+ elseif most_dist >= 25 then
+ how_far = "a long way"
+ elseif most_dist >= 8 then
+ how_far = "quite some way"
+ else
+ how_far = "not very far"
+ end
+
+ return how_far
+
+end
+
+-- better timer add function
+__timers_callback_max = 0
+
+function new_timer(t)
+ assert(t.delay > 0, "no timer delay")
+ assert(t.enabled, "no timer enabled state")
+ assert(t.callback, "no timer callback")
+
+ local timer
+ if type(t.callback) == "function" then
+ setglobal("__timers_callback_"..__timers_callback_max, t.callback)
+ timer = %new_timer("__timers_callback_"..__timers_callback_max, t.delay)
+ __timers_callback_max = __timers_callback_max + 1
+ else
+ timer = %new_timer(t.callback, t.delay)
+ end
+
+ timer.enabled = t.enabled
+
+ return timer
+end
+
+-- saves all timer values
+function save_timer(name)
+ add_loadsave(name..".enabled", FALSE)
+ add_loadsave(name..".delay", 1)
+ add_loadsave(name..".countdown", 1)
+end
+
+
+-- displays a scrolling list
+function display_list(y, x, h, w, title, list, begin, sel, sel_color)
+ local l = create_list(getn(list))
+
+ for i = 1, getn(list) do
+ add_to_list(l, i - 1, list[i])
+ end
+
+ %display_list(y, x, h, w, title, l, getn(list), begin - 1, sel - 1, sel_color)
+
+ delete_list(l, getn(list))
+end
+
+-- Easier access to special gene stuff
+function set_monster_generation(monster, state)
+ if type(monster) == "string" then
+ m_allow_special[test_monster_name(monster) + 1] = state
+ else
+ m_allow_special[monster + 1] = state
+ end
+end
+function set_object_generation(obj, state)
+ if type(obj) == "string" then
+ m_allow_special[test_item_name(obj) + 1] = state
+ else
+ m_allow_special[obj + 1] = state
+ end
+end
+function set_artifact_generation(obj, state)
+ m_allow_special[obj + 1] = state
+end
+
+-- Strings
+function strcap(str)
+ if strlen(str) > 1 then
+ return strupper(strsub(str, 1, 1))..strsub(str, 2)
+ elseif strlen(str) == 1 then
+ return strupper(str)
+ else
+ return str
+ end
+end
+
+function msg_format(...)
+ msg_print(call(format, arg))
+end
+
+-- Stacks
+function stack_push(stack, val)
+ tinsert(stack, val)
+end
+function stack_pop(stack)
+ if getn(stack) >= 1 then
+ return tremove(stack)
+ else
+ error("Tried to unstack an empty stack")
+ return nil
+ end
+end
+
+-- A way to check if the game is now running(as opposed to initialization/character gen)
+game = {}
+add_hooks
+{
+ [HOOK_GAME_START] = function ()
+ game.started = TRUE
+ end
+}
diff --git a/lib/core/xml.lua b/lib/core/xml.lua
new file mode 100644
index 00000000..f1188d51
--- /dev/null
+++ b/lib/core/xml.lua
@@ -0,0 +1,347 @@
+-- The xml module
+xml = {}
+
+function xml:parseargs (s)
+ local arg = {}
+ gsub(s, "(%w+)=([\"'])(.-)%2", function (w, _, a)
+ %arg[w] = a
+ end)
+ return arg
+end
+
+-- s is a xml stream, returns a table
+function xml:collect (s)
+ local stack = {n=0}
+ local top = {n=0}
+ tinsert(stack, top)
+ local ni,c,label,args, empty
+ local i, j = 1, 1
+ while 1 do
+ ni,j,c,label,args, empty = strfind(s, "<(%/?)(%w+)(.-)(%/?)>", j)
+ if not ni then break end
+ local text = strsub(s, i, ni-1)
+ if not strfind(text, "^%s*$") then
+ tinsert(top, text)
+ end
+ if empty == "/" then -- empty element tag
+ tinsert(top, {n=0, label=label, args=xml:parseargs(args), empty=1})
+ elseif c == "" then -- start tag
+ top = {n=0, label=label, args=xml:parseargs(args)}
+ tinsert(stack, top) -- new level
+ else -- end tag
+ local toclose = tremove(stack) -- remove top
+ top = stack[stack.n]
+ if stack.n < 1 then
+ error("nothing to close with "..label)
+ end
+ if toclose.label ~= label then
+ error("trying to close "..toclose.label.." with "..label)
+ end
+ tinsert(top, toclose)
+ end
+ i = j+1
+ end
+ local text = strsub(s, i)
+ if not strfind(text, "^%s*$") then
+ tinsert(stack[stack.n], text)
+ end
+ if stack.n > 1 then
+ error("unclosed "..stack[stack.n].label)
+ end
+ return stack[1]
+end
+
+-- Viewport coordinates
+xml.write_out_y = 0
+xml.write_out_x = 0
+xml.write_out_h = 24
+xml.write_out_w = 80
+
+-- Offsets
+xml.write_off_y = 0
+xml.write_off_x = 0
+
+-- Current position
+xml.write_y = 0
+xml.write_x = 0
+
+xml.write_screen = function(color, s)
+ local i
+ for i = 1, strlen(s) do
+ local c = strsub(s, i, i + 1)
+ if c ~= "\n" then
+ if xml.write_y - xml.write_off_y >= 0 and xml.write_y - xml.write_off_y < xml.write_out_h and xml.write_x - xml.write_off_x >= 0 and xml.write_x - xml.write_off_x < xml.write_out_w then
+ Term_putch(xml.write_x - xml.write_off_x + xml.write_out_x, xml.write_y - xml.write_off_y + xml.write_out_y, color, strbyte(c))
+ end
+ xml.write_x = xml.write_x + 1
+ else
+ xml.write_x = 0
+ xml.write_y = xml.write_y + 1
+ end
+ end
+end
+
+xml.write_file = function (color, s)
+ print_hook(s)
+end
+
+xml.write = xml.write_screen
+
+xml.rule2string = {
+ ['name'] = {"Its ", "name", " is"},
+ ['contain'] = {"Its ", "name", " contains"},
+ ['symbol'] = {"Its ", "symbol", " is"},
+ ['inscribed'] = {"Its ", "inscription", " contains"},
+ ['state'] = {"Its ", "state", " is"},
+ ['status'] = {"Its ", "status", " is"},
+ ['tval'] = {"Its ", "tval", " is"},
+ ['race'] = {"Your ", "race", " is"},
+ ['subrace'] = {"Your ", "subrace", " is"},
+ ['class'] = {"Your ", "class", " is"},
+ ['foo1'] = {"The result of ", "test 1 ", "is"},
+ ['foo2'] = {"The result of ", "test 2 ", "is"},
+ ['foo3'] = {"The result of ", "test 3 ", "is"},
+}
+
+xml.display_english = 1
+function xml:display_xml(t, tab)
+ if xml.display_english then
+ xml:english_xml(t, tab)
+ else
+ xml:print_xml(t, tab)
+ end
+end
+
+function xml:english_xml(t, tab, not_flag)
+ local i, k, e
+ local pre, post, recurse
+ local children_not_flag
+ local nextlevel
+ local bcol, ecol = TERM_L_GREEN, TERM_GREEN
+
+ if xml.write_active and t == auto_aux.rule then bcol, ecol = TERM_VIOLET, TERM_VIOLET end
+
+ nextlevel = tab .. " "
+
+ recurse = 1
+
+ if t.label == "rule" then
+ if t.args.type == "inscribe" then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "A rule named \"")
+ xml.write(TERM_WHITE, tostring(t.args.name))
+ xml.write(ecol, "\" to ")
+ xml.write(bcol, "inscribe")
+ xml.write(ecol, " an item with \"")
+ xml.write(TERM_WHITE, t.args.inscription)
+ xml.write(ecol, "\" when")
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "A rule named \"")
+ xml.write(TERM_WHITE, tostring(t.args.name))
+ xml.write(ecol, "\" to ")
+ xml.write(bcol, t.args.type)
+ xml.write(ecol, " when")
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "and" then
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "At least one of the following is false:")
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "All of the following are true:")
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "or" then
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "All of the following are false:")
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "At least one of the following are true:")
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "not" then
+ if bcol == TERM_VIOLET or getn(t) == 0 then
+ xml.write(ecol, "(a negating rule)")
+ xml.write(TERM_WHITE, "\n")
+ else
+ nextlevel = tab
+ end
+ children_not_flag = not nil
+ elseif t.label == "comment" then
+ xml.write(TERM_WHITE, tab)
+ xml.write(TERM_WHITE, "(" .. t[1] .. ")")
+ xml.write(TERM_WHITE, "\n")
+ elseif t.label == "skill" then
+ local s = t[1]
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Your skill in ")
+ xml.write(bcol, s)
+ xml.write(ecol, " is not from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Your skill in ")
+ xml.write(bcol, s)
+ xml.write(ecol, " is from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "ability" then
+ local s = t[1]
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "You do not have the ")
+ xml.write(bcol, s)
+ xml.write(ecol, " ability")
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "You have the ")
+ xml.write(bcol, s)
+ xml.write(ecol, " ability")
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "level" then
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Your ")
+ xml.write(bcol, "level")
+ xml.write(ecol, " is not from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Your ")
+ xml.write(bcol, "level")
+ xml.write(ecol, " is from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "sval" then
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Its ")
+ xml.write(bcol, "sval")
+ xml.write(ecol, " is not from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Its ")
+ xml.write(bcol, "sval")
+ xml.write(ecol, " is from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ end
+ elseif t.label == "discount" then
+ if not_flag then
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Its ")
+ xml.write(bcol, "discount")
+ xml.write(ecol, " is not from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ else
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, "Its ")
+ xml.write(bcol, "discount")
+ xml.write(ecol, " is from ")
+ xml.write(TERM_WHITE, tostring(t.args.min))
+ xml.write(ecol, " to ")
+ xml.write(TERM_WHITE, tostring(t.args.max))
+ xml.write(TERM_WHITE, "\n")
+ end
+ else
+ if xml.rule2string[t.label] then
+ local rule = xml.rule2string[t.label]
+ a, b, c = rule[1], rule[2], rule[3]
+ if not_flag then c = c .. " not" end
+ xml.write(TERM_WHITE, tab)
+ xml.write(ecol, a)
+ xml.write(bcol, b)
+ xml.write(ecol, c)
+ xml.write(ecol, " \"")
+ xml.write(TERM_WHITE, t[1])
+ xml.write(ecol, "\"")
+ xml.write(TERM_WHITE, "\n")
+ else
+ if not_flag then
+ xml.write(bcol, "Not:\n")
+ tab = tab .. " "
+ xml:print_xml(t, tab)
+ return
+ end
+ end
+ end
+
+ for i = 1, getn(t) do
+ if type(t[i]) == "string" then
+ -- xml.write(TERM_WHITE, t[i].."\n")
+ else
+ xml:english_xml(t[i], nextlevel, children_not_flag)
+ end
+ end
+end
+
+function xml:print_xml(t, tab)
+ local i, k, e
+ local inside = nil
+ local bcol, ecol = TERM_L_GREEN, TERM_GREEN
+
+ if xml.write_active and t == auto_aux.rule then bcol, ecol = TERM_VIOLET, TERM_VIOLET end
+
+ xml.write(bcol, tab.."<"..t.label)
+ for k, e in t.args do
+ xml.write(TERM_L_BLUE, " "..k)
+ xml.write(TERM_WHITE, "=\"")
+ xml.write(TERM_YELLOW, e)
+ xml.write(TERM_WHITE, "\"")
+ end
+ xml.write(bcol, ">")
+
+ for i = 1, getn(t) do
+ if type(t[i]) == "string" then
+ xml.write(TERM_WHITE, t[i])
+ else
+ if not inside then xml.write(TERM_WHITE, "\n") end
+ inside = not nil
+ xml:print_xml(t[i], tab.." ")
+ end
+ end
+
+ if not inside then
+ xml.write(ecol, "</"..t.label..">\n")
+ else
+ xml.write(ecol, tab.."</"..t.label..">\n")
+ end
+end
+
+-- t is a table representing xml, outputs the xml code via xml.write()
+function xml:output(t)
+ local i
+ for i = 1, getn(t) do
+ xml:print_xml(t[i], "")
+ end
+end
diff --git a/lib/data/delete.me b/lib/data/delete.me
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/data/delete.me
diff --git a/lib/dngn/dun1.14 b/lib/dngn/dun1.14
new file mode 100644
index 00000000..6421e80b
--- /dev/null
+++ b/lib/dngn/dun1.14
@@ -0,0 +1,2 @@
+# On this level there is a stairway leading to the Heart of the Earth
+B:10
diff --git a/lib/dngn/dun10.0 b/lib/dngn/dun10.0
new file mode 100644
index 00000000..b89ce05e
--- /dev/null
+++ b/lib/dngn/dun10.0
@@ -0,0 +1,3 @@
+# Father branch is Mirkwood(1), on level 14
+A:1
+L:14
diff --git a/lib/dngn/dun11.20 b/lib/dngn/dun11.20
new file mode 100644
index 00000000..9cc611d3
--- /dev/null
+++ b/lib/dngn/dun11.20
@@ -0,0 +1,2 @@
+# On this level there is a stairway leading to the Nether Realm
+B:6
diff --git a/lib/dngn/dun11.22 b/lib/dngn/dun11.22
new file mode 100644
index 00000000..149e2c33
--- /dev/null
+++ b/lib/dngn/dun11.22
@@ -0,0 +1,2 @@
+#I'm downright evil
+F:NO_GENO |
diff --git a/lib/dngn/dun17.15 b/lib/dngn/dun17.15
new file mode 100644
index 00000000..d08bf5e7
--- /dev/null
+++ b/lib/dngn/dun17.15
@@ -0,0 +1,5 @@
+N:Machine
+U:s_factory.map
+D:The clatter of strange machinery surrounds you.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun18.0 b/lib/dngn/dun18.0
new file mode 100644
index 00000000..da1b6c27
--- /dev/null
+++ b/lib/dngn/dun18.0
@@ -0,0 +1,2 @@
+# The level is SAVED in the playername.mz? file
+#S:mz0
diff --git a/lib/dngn/dun18.1 b/lib/dngn/dun18.1
new file mode 100644
index 00000000..70f27718
--- /dev/null
+++ b/lib/dngn/dun18.1
@@ -0,0 +1,2 @@
+# The level is SAVED in the playername.mz? file
+#S:mz1
diff --git a/lib/dngn/dun19.11 b/lib/dngn/dun19.11
new file mode 100644
index 00000000..7fba690d
--- /dev/null
+++ b/lib/dngn/dun19.11
@@ -0,0 +1,5 @@
+N:Deathwatch
+U:s_death.map
+D:This level looks filled with evilness.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun2.31 b/lib/dngn/dun2.31
new file mode 100644
index 00000000..dd8669a5
--- /dev/null
+++ b/lib/dngn/dun2.31
@@ -0,0 +1,2 @@
+# On this level there is a stairway leading to the Mount Doom
+B:5
diff --git a/lib/dngn/dun22.10 b/lib/dngn/dun22.10
new file mode 100644
index 00000000..e7eb116e
--- /dev/null
+++ b/lib/dngn/dun22.10
@@ -0,0 +1,2 @@
+# On this level there is a stairway leading to the Small Water Cave
+B:24
diff --git a/lib/dngn/dun22.5 b/lib/dngn/dun22.5
new file mode 100644
index 00000000..11d8e51f
--- /dev/null
+++ b/lib/dngn/dun22.5
@@ -0,0 +1,5 @@
+N:Orc Town
+U:s_orc.map
+D:You hear orc warcries.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun24.0 b/lib/dngn/dun24.0
new file mode 100644
index 00000000..bbb93f85
--- /dev/null
+++ b/lib/dngn/dun24.0
@@ -0,0 +1,3 @@
+# Father branch is the Moria(22), on level 10
+A:22
+L:10
diff --git a/lib/dngn/dun29.15 b/lib/dngn/dun29.15
new file mode 100644
index 00000000..4df873b5
--- /dev/null
+++ b/lib/dngn/dun29.15
@@ -0,0 +1,6 @@
+N:Galleon
+U:s_ship.map
+D:A ship of antique design lies jammed in the ice here.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
+
diff --git a/lib/dngn/dun3.18 b/lib/dngn/dun3.18
new file mode 100644
index 00000000..84c0a74a
--- /dev/null
+++ b/lib/dngn/dun3.18
@@ -0,0 +1,5 @@
+N:Dim Gates
+U:s_gates.map
+D:Visions of death fill your mind.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun3.28 b/lib/dngn/dun3.28
new file mode 100644
index 00000000..0acd4193
--- /dev/null
+++ b/lib/dngn/dun3.28
@@ -0,0 +1,5 @@
+N:Nameless
+U:s_name.map
+D:You sense a powerful artifact here.
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun3.3 b/lib/dngn/dun3.3
new file mode 100644
index 00000000..710ef5f8
--- /dev/null
+++ b/lib/dngn/dun3.3
@@ -0,0 +1,5 @@
+N:Crypt
+U:s_crypt.map
+D:Looks like a forgotten crypt...
+F:DESC | NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:ASK_LEAVE | NO_TELEPORT
diff --git a/lib/dngn/dun5.0 b/lib/dngn/dun5.0
new file mode 100644
index 00000000..48a7bea6
--- /dev/null
+++ b/lib/dngn/dun5.0
@@ -0,0 +1,3 @@
+# Father branch is the Mordor, on level 32
+A:2
+L:31
diff --git a/lib/dngn/dun5.14 b/lib/dngn/dun5.14
new file mode 100644
index 00000000..3d7a3080
--- /dev/null
+++ b/lib/dngn/dun5.14
@@ -0,0 +1,14 @@
+# The level is SAVED in the playername.mdm file
+S:mdm
+
+# Use the map in s_doom.map file
+U:s_doom.map
+
+# Use Mt Doom as level name
+N:Mt Doom
+
+D:You finally reach the top of Mount Doom, here must lie the Great Fire.
+F:DESC
+F:NO_GENO | NO_NEW_MONSTER | SPECIAL | NO_STAIR
+F:NO_TELEPORT
+
diff --git a/lib/dngn/dun6.0 b/lib/dngn/dun6.0
new file mode 100644
index 00000000..c750ea67
--- /dev/null
+++ b/lib/dngn/dun6.0
@@ -0,0 +1,3 @@
+# Father branch is Void(11), on level 20
+A:11
+L:20
diff --git a/lib/edit/a_info.txt b/lib/edit/a_info.txt
new file mode 100644
index 00000000..427d5060
--- /dev/null
+++ b/lib/edit/a_info.txt
@@ -0,0 +1,2889 @@
+# File: a_info.txt
+
+
+# This file is used to initialize the "lib/raw/a_info.raw" file, which is
+# used to initialize the "artifact" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/a_info.raw" file.
+
+
+# The artifact indexes are defined in "defines.h", and must not be changed.
+
+# Artifacts 1-15 are "special", 16-63 are "armor", and 64-127 are "weapons".
+
+# Hack -- "Grond" and "Morgoth" MUST have a rarity of one, or they might
+# not be dropped when Morgoth is killed. Note that they, like the "special"
+# artifacts, are never created "accidentally".
+
+# Artifacts now have descriptions. Special thanks to J.R.R Tolkien,
+# without whom the words would be unwritten, the images unconceived,
+# the deed undone.
+# -Leon Marrick
+# Contributors: Jeff Butler, Neal Hackler, Ethan Sicotte, Pat Tracy, Divia
+
+# Version stamp (required)
+
+V:2.0.0
+
+
+
+# The Phial of Galadriel
+
+N:1:of Galadriel
+I:39:100:4
+W:20:10:10:10000
+P:0:1d1:0:0:0
+F:ACTIVATE | SEARCH | LITE3 | LUCK
+F:INSTA_ART | HIDE_TYPE
+a:HARDCORE=LIGHT
+D:A small crystal phial, with the light of Earendil's Star contained inside.
+D:Its light is imperishable, and near it darkness cannot endure.
+
+
+# The Star of Elendil
+
+N:2:of Elendil
+I:39:101:1
+W:30:25:5:32500
+P:0:1d1:0:0:0
+F:ACTIVATE | SEE_INVIS | HOLD_LIFE |
+F:INSTA_ART | SPEED | LITE3 | LITE1 | HIDE_TYPE
+a:HARDCORE=MAP_LIGHT
+Z:detect curses
+D:The shining Star of the West, a famed heirloom of Elendil's house.
+
+
+# The Arkenstone of Thrain
+# Was +2 WIS/DEX
+
+N:3:of Thrain
+I:39:102:3
+W:50:50:5:50000
+P:0:1d1:0:0:0
+F:ACTIVATE | SEE_INVIS | HOLD_LIFE | RES_CHAOS | HIDE_TYPE | LUCK
+F:INSTA_ART | SPEED | RES_LITE | RES_DARK | ESP_ORC | LITE3
+a:HARDCORE=THRAIN
+D:A great globe seemingly filled with moonlight, the famed Heart of the
+D:Mountain, which splinters the light that falls upon it into a thousand
+D:glowing shards.
+
+
+# The Amulet of Carlammas
+
+N:4:of Carlammas
+I:40:10:2
+W:50:10:3:60000
+F:CON | HIDE_TYPE |
+F:ACTIVATE | RES_FIRE |
+F:INSTA_ART
+a:HARDCORE=PROT_EVIL
+D:A fiery circle of bronze, with mighty spells to ward off evil.
+
+
+# The Amulet of Ingwe
+
+N:5:of Ingwe
+I:40:11:3
+W:65:30:3:90000
+F:INT | WIS | CHR | SEARCH | INFRA | HIDE_TYPE |
+F:SEE_INVIS | FREE_ACT | ACTIVATE |
+F:RES_ACID | RES_COLD | RES_ELEC |
+F:INSTA_ART
+a:HARDCORE=DISP_EVIL
+D:The ancient heirloom of Ingwe, high lord of the Vanyar, against whom nothing
+D:of evil could stand.
+
+
+# The Necklace 'Nauglamir'
+
+N:6:'Nauglamir'
+I:40:12:3
+W:70:50:3:75000
+F:STR | CON | DEX | INFRA | HIDE_TYPE | RES_FEAR |
+F:SEE_INVIS | FREE_ACT | REGEN | LITE3 | SPEED |
+F:INSTA_ART
+D:A carencet of gold, set with a multitude of shining gems of
+D:Valinor. Despite its size, its weight seems as that of gossamer.
+
+
+# The Ring of Flare
+# (note: pval reduced to 3, otherwise it would probably be preferable
+# even to The One Ring!)
+
+N:7:of Flare
+I:45:52:3
+W:50:35:2:75000
+F:STR | CON | CHR | HIDE_TYPE |
+F:IM_FIRE | ACTIVATE | SEARCH |
+F:ESP_THUNDERLORD | SEE_INVIS | FLY |
+F:INSTA_ART
+a:HARDCORE=DIM_DOOR
+Z:swap position
+D:The mighty ring of the Thunderlord Flare that makes the wearer
+D:strong and healthy. Once a ring of power, it was
+D:given to Flare by Celegorm when he arrived on Middle-earth with a full nest
+D:of Thunderlords.
+
+
+# The Ring of Barahir
+
+N:8:of Barahir
+I:45:32:1
+W:50:25:2:75000
+F:STR | INT | WIS | DEX | CON | CHR | STEALTH | HIDE_TYPE |
+F:RES_POIS | RES_DARK | ACTIVATE | SEE_INVIS | SEARCH |
+F:INSTA_ART
+a:HARDCORE=BARAHIR
+D:A ring shaped into twinned serpents with eyes of emerald meeting beneath
+D:a crown of flowers, an ancient treasure of Isildur's house.
+
+
+# The Ring of Tulkas
+
+N:9:of Tulkas
+I:45:33:4
+W:70:50:2:175000
+F:STR | DEX | CON | HIDE_TYPE |
+F:ACTIVATE | SPEED | ESP_EVIL |
+F:INSTA_ART
+a:HARDCORE=TULKAS
+D:The treasure of Tulkas, most fleet and wrathful of the Valar.
+
+
+# The Ring of Power 'Narya'
+
+N:10:of Power 'Narya'
+I:45:34:1
+W:70:30:2:100000
+P:0:1d1:6:6:0
+F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK
+F:ACTIVATE | FREE_ACT | SEE_INVIS |
+F:SUST_STR | SUST_CON | SUST_WIS | SUST_CHR | SPECIAL_GENE |
+F:IM_FIRE | RES_NETHER | RES_FEAR | REGEN |
+F:INSTA_ART
+a:HARDCORE=NARYA
+D:The Ring of Fire, set with a ruby that glows like flame. Narya is one
+D:of the three Rings of Power created by the Elves and hidden by them from
+D:Sauron.
+
+
+# The Ring of Power 'Nenya'
+
+N:11:of Power 'Nenya'
+I:45:35:2
+W:80:40:2:200000
+P:0:1d1:9:9:0
+F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK
+F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS |
+F:SUST_INT | SUST_WIS | SUST_CHR |
+F:IM_COLD | RES_BLIND | STEALTH | ESP_ALL |
+F:INSTA_ART
+a:HARDCORE=NENYA
+D:The Ring of Adamant, with a pure white stone as centrepiece. Nenya is one
+D:of the three Rings of Power created by the Elves and hidden by them from
+D:Sauron.
+
+
+# The Ring of Power 'Vilya'
+
+N:12:of Power 'Vilya'
+I:45:36:3
+W:90:50:2:300000
+P:0:1d1:12:12:0
+F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE | LUCK
+F:ACTIVATE | HOLD_LIFE | FREE_ACT | SEE_INVIS |
+F:FEATHER | SLOW_DIGEST | REGEN |
+F:SUST_STR | SUST_DEX | SUST_CON |
+F:IM_ELEC | RES_POIS | RES_DISEN |
+F:INSTA_ART
+a:HARDCORE=VILYA
+D:The Ring of Sapphire, with clear blue gems that shine like stars,
+D:glittering untouchable despite all that Sauron ever wrought. Vilya is
+D:one of the three Rings of Power created by the Elves and hidden by them
+D:from Sauron.
+
+
+# The Ring of Power 'The One Ring'
+
+N:13:of Power 'The One Ring'
+I:45:37:5
+W:100:100:2:5000000
+P:0:1d1:15:15:0
+F:STR | INT | WIS | DEX | CON | CHR | SPEED | HIDE_TYPE |
+F:ACTIVATE | AUTO_CURSE | HEAVY_CURSE | INVIS | SPELL | MANA |
+F:SEE_INVIS | REGEN | FREE_ACT | CURSED | CURSE_NO_DROP |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_ACID | PERMA_CURSE |
+F:SUST_STR | SUST_DEX | SUST_CON |
+F:SUST_INT | SUST_WIS | SUST_CHR |
+F:RES_BLIND | RES_POIS | RES_DISEN | RES_NETHER | ESP_ALL |
+F:DRAIN_MANA | DRAIN_HP | DRAIN_EXP |
+F:INSTA_ART
+a:HARDCORE=POWER
+Z:change the world
+D:"Ash nazg durbatuluk, ash nazg gimbatul, ash nazg thrakatuluk agh
+D:burzum-ishi krimpatul". Unadorned, made of massive gold,
+D:set with runes in the foul speech of Mordor, with power so great that it
+D:inevitably twists and masters any earthly being who wears it.
+
+
+# The Anchor of Space-Time
+
+N:14:of Space-Time
+I:39:105:0
+W:30:12:15:50000
+P:0:1d1:0:0:0
+F:INSTA_ART | LITE1
+D:A powerful stone that provides a strong light for any who
+D:wields it. It is rumoured that it may even protect the wearer from
+D:the passing of time.
+
+
+# This artifact has a low artifact level to prevent it being worthless for
+# chars with poor magic skills.
+
+# The Stone of Lore
+
+N:15:of Lore
+I:39:106:0
+W:15:12:15:20000
+P:0:1d1:0:0:0
+F:ACTIVATE | SPECIAL_GENE | EASY_USE | LITE1 |
+F:INSTA_ART
+a:HARDCORE=STONE_LORE
+D:A great emerald that fills your mind with images of knowledge and dreadful
+D:understanding as you stare into its depths.
+
+
+# The Multi-Hued Dragon Scale Mail 'Razorback'
+
+N:16:'Razorback'
+I:38:6:0
+W:90:9:500:400000
+P:30:2d4:-4:0:25
+F:FREE_ACT | IM_ELEC | SPECIAL_GENE |
+F:RES_FIRE | RES_COLD | RES_POIS | RES_LITE | RES_DARK |
+F:LITE1 | SEE_INVIS | AGGRAVATE | ESP_DRAGON
+F:ACTIVATE
+a:HARDCORE=RAZORBACK
+D:A massive suit of heavy dragon scales deeply saturated with many colours.
+D:It throbs with angry energies, and you feel the raw elemental might of
+D:untamed Lightning as you put it on.
+
+
+# The Power Dragon Scale Mail of Eternity
+# The ULTIMATE armour
+
+N:17:of Eternity
+I:38:30:0
+W:100:16:600:500000
+P:50:2d4:-8:0:35
+F:HOLD_LIFE | REGEN | ESP_DRAGON |
+F:RES_ACID | RES_FIRE | RES_COLD | RES_ELEC | RES_POIS | FEATHER | FLY |
+F:RES_NETHER | RES_NEXUS | RES_CHAOS | RES_LITE | RES_DARK | ULTIMATE |
+F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_BLIND | RES_CONF |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | SPECIAL_GENE
+F:ACTIVATE
+a:HARDCORE=BLADETURNER
+D:A suit of adamant, set with scales of every colour, surrounded in a nimbus
+D:of perfectly untramelled yet inextricably intermingled and utterly mastered
+D:powers elemental and ethereal.
+
+
+# The Spear of Melkor
+
+N:18:of Melkor
+I:22:2:-4
+W:65:45:200:100000
+P:0:4d6:12:24:0
+F:STEALTH | WIS | CURSED | HEAVY_CURSE | TY_CURSE | ESP_GOOD |
+F:DRAIN_MANA | DRAIN_HP |
+F:RES_DARK | RES_BLIND | RES_LITE | RES_NETHER | BRAND_POIS | RES_CONF
+D:The mighty spear used once by Melkor to slay the trees of Valinor.
+
+
+# The Adamantite Plate Mail 'Soulkeeper'
+
+N:19:'Soulkeeper'
+I:37:30:2
+W:75:9:420:300000
+P:40:2d4:-4:0:20
+F:CON |
+F:HOLD_LIFE | SUST_CON | ESP_UNDEAD | RES_CONF | RES_FEAR |
+F:RES_ACID | RES_COLD | RES_DARK | RES_NETHER | RES_NEXUS | RES_CHAOS |
+F:ACTIVATE
+a:HARDCORE=CURE_1000
+D:A suit of imperishable adamant, with unconquerable strength to endure evil
+D:and disruptive magics, that protects the life force of its wearer as
+D:nothing else can.
+
+
+# The Full Plate Armour of Isildur
+
+N:20:of Isildur
+I:37:15:1
+W:30:3:300:50000
+P:25:2d4:0:0:25
+F:CON |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:RES_SOUND | RES_CONF | RES_NEXUS
+D:A gleaming steel suit covering the wearer from neck to foot, with runes of
+D:warding and stability deeply engraved into its surface.
+
+
+# The Metal Brigandine Armour of the Rohirrim
+
+N:21:of the Rohirrim
+I:37:9:2
+W:30:3:200:30000
+P:19:1d4:0:0:15
+F:STR | DEX | SPEED | HIDE_TYPE | RES_FEAR |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_CONF | RES_SOUND
+D:A stiff suit of armour composed of small metal plates sewn to an
+D:inner layer of heavy canvas, and covered with a second layer of
+D:cloth. Within it is the spirit of Eorl the Young, matchless in combat.
+
+
+# The Mithril Chain Mail 'Belegennon'
+
+N:22:'Belegennon'
+I:37:20:4
+W:40:10:150:135000
+P:28:1d4:-1:0:20
+F:STEALTH | WIS | INT |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS |
+F:HOLD_LIFE | RES_DARK | RES_FEAR |
+F:SEE_INVIS |
+F:ACTIVATE
+a:HARDCORE=BELEGENNON
+D:This wondrous suit of fine-linked chain shimmers as though of pure silver.
+D:It stands untouched amidst the fury of the elements, and a power of
+D:concealment rests within.
+
+
+# The Mithril Plate Mail of Celeborn
+
+N:23:of Celeborn
+I:37:25:4
+W:40:3:250:150000
+P:35:2d4:-3:0:25
+F:STR | CHR | HIDE_TYPE | ESP_ORC
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_DARK |
+F:RES_DISEN | ACTIVATE
+a:HARDCORE=GENOCIDE
+D:A shimmering suit of true-silver, forged long ago by dwarven smiths of
+D:legend. It gleams with purest white as you gaze upon it, and mighty are
+D:its powers to protect and banish.
+
+
+# The Chain Mail of Arvedui
+
+N:24:of Arvedui
+I:37:4:2
+W:20:3:220:32000
+P:14:1d4:-2:0:15
+F:STR | CHR | HIDE_TYPE |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_SHARDS | RES_NEXUS
+D:A hauberk, leggings, and sleeves of interlocking steel rings, well padded
+D:with leather. You feel strong and tall as Arvedui, last king of Arnor,
+D:as you put it on.
+
+
+# The Augmented Chain Mail of Caspanion
+
+N:25:of Caspanion
+I:37:6:3
+W:25:9:270:40000
+P:16:1d4:-2:0:20
+F:INT | WIS | CON | HIDE_TYPE |
+F:RES_ACID | RES_POIS | RES_CONF | ACTIVATE
+a:HARDCORE=DEST_DOOR
+D:A hauberk, leggings, and sleeves of interlocking steel rings, strategically
+D:reinforced at vital locations with a second layer of chain. Magics to
+D:enhance body and mind lie within, and no door can hope to resist the wearer.
+
+
+# The Thunderlord Coat of Marda
+
+N:26:of Marda
+I:36:16:5
+W:70:3:80:80000
+P:9:0d0:0:0:25
+F:FREE_ACT | RES_BLIND | RES_CONF | RES_FEAR | DRAIN_MANA |
+F:REFLECT | RES_NEXUS | SH_FIRE | SUST_INT | SUST_CON | SUST_CHR |
+F:ESP_THUNDERLORD | CON | CHR | INT |
+F:RES_ACID | RES_ELEC | IM_COLD | RES_COLD | AGGRAVATE | HEAVY_CURSE |
+F:CURSED
+D:The flying suit of Marda, very powerful armour that protects
+D:the wearer from cold. Wonderful as this mighty
+D:armour is, beware wearing it, for it has been cursed by a
+D:powerful wizard since Marda had it and is said to have gained
+D:a couple of undesirable side-effects...
+
+
+# The Thunderlord Coat of Trone
+
+N:27:of Trone
+I:36:16:4
+W:30:3:80:65000
+P:9:0d0:0:0:20
+F:REFLECT | RES_NEXUS | SH_FIRE | FLY | SPECIAL_GENE |
+F:STEALTH | ESP_THUNDERLORD | CON | INT | SPEED |
+F:RES_ACID | RES_ELEC | IM_FIRE | RES_COLD
+D:The flying suit of Trone. It protects the user from fire and
+D:imps are said to be less annoying with this on.
+
+
+# The Leather Scale Mail 'Thalkettoth'
+
+N:28:'Thalkettoth'
+I:36:11:3
+W:20:3:60:25000
+P:11:1d1:-1:0:25
+F:DEX | SPEED | HIDE_TYPE | SPECIAL_GENE |
+F:RES_ACID | RES_SHARDS
+D:A tunic and skirt sewn with thick, overlapping scales of hardened
+D:leather whose wearer moves with agility and assurance.
+
+
+# The Pair of Soft Leather Boots of Wormtongue
+
+N:29:of Wormtongue
+I:30:2:3
+W:40:20:20:50000
+P:2:1d1:-10:-10:10
+F:INT | DEX | CHR | STEALTH | SEARCH | SPEED | HIDE_TYPE |
+F:FREE_ACT | FEATHER | RES_DARK | RES_LITE | ESP_GOOD | ESP_UNIQUE
+Z:panic hit
+D:The pair of boots used by Grima son of Galmod, also named the Wormtongue:
+D:a treacherous but persuasive counsellor, ever ready to betray, sneak,
+D:lie, cheat and steal - but never ready to actually fight.
+
+
+# The Small Metal Shield of Thorin
+
+N:30:of Thorin
+I:34:3:4
+W:30:6:65:60000
+P:3:1d2:0:0:25
+F:STR | CON | HIDE_TYPE |
+F:FREE_ACT | IM_ACID | RES_SOUND |
+F:RES_CHAOS | ESP_ORC
+D:Invoking the strength and endurance of Thorin, King under the Mountain,
+D:this little metal shield is proof against the Element of Earth.
+
+
+# The Large Leather Shield of Celegorm
+
+N:31:of Celegorm
+I:34:4:0
+W:30:3:60:12000
+P:4:1d2:0:0:20
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_LITE | RES_DARK
+D:This shield emblazoned with a multitude of creatures not seen for ages
+D:once protected Celegorm, lord of Himlad; around it lies a mystic balance
+D:that contains the conflicts of the elements.
+
+
+# The Large Metal Shield of Anarion
+
+N:32:of Anarion
+I:34:5:0
+W:40:9:120:160000
+P:5:1d3:0:0:20
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | SUST_STR | SUST_INT |
+F:SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR | ESP_EVIL
+D:The great metal-bound shield of Anarion, son of Elendil, who Sauron found
+D:himself powerless to wither or diminish.
+
+
+# The Beaked Axe of Hurin
+
+N:33:of Hurin
+I:22:10:3
+W:20:15:180:90000
+P:0:2d6:12:20:0
+F:STR | CON | HIDE_TYPE | BRAND_ACID | RES_ACID | LITE1 | DRAIN_MANA |
+F:SLAY_ORC | KILL_DEMON | SLAY_TROLL | ACTIVATE | SHOW_MODS
+F:MUST2H
+f:MUST2H
+a:HARDCORE=HURIN
+D:Wielded by Hurin Thalion in the Fifth Battle of Beleriand, this
+D:troll-bane smoked in the black blood of Gothmog's guards.
+
+
+# The Massive Iron Crown of Morgoth
+
+N:34:of Morgoth
+I:33:50:125
+W:100:1:20:10000000
+P:0:1d1:0:0:0
+F:STR | INT | WIS | DEX | CON | CHR | INFRA | HIDE_TYPE |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS |
+F:RES_LITE | RES_DARK | RES_CONF | RES_NEXUS | RES_NETHER |
+F:LITE1 | SEE_INVIS | ESP_ALL |
+F:CURSED | HEAVY_CURSE | PERMA_CURSE |
+F:INSTA_ART | SPECIAL_GENE
+D:Two Silmarils of Feanor blaze from the thunderous crown of twisted
+D:iron. The corrupted metal feels at once as infernal as hellfire
+D:and as chilling as the Outer Darkness. One protrusion from the
+D:crown is abruptly ended where a third jewel might have shone.
+
+
+# The Iron Crown of Beruthiel
+
+N:35:of Beruthiel
+I:33:10:-5
+W:40:12:20:0
+P:0:1d1:0:0:20
+F:STR | DEX | CON | HIDE_TYPE |
+F:FREE_ACT | SEE_INVIS | ESP_ANIMAL | ESP_EVIL | ESP_NONLIVING | ESP_ALL |
+F:CURSED | AUTO_CURSE
+D:The midnight-hued steel circlet of the sorceress-queen Beruthiel, which
+D:grants extraordinary powers of sight and awareness at a terrible physical
+D:cost.
+
+
+# The Hard Leather Cap of Thranduil
+
+N:36:of Thranduil
+I:32:2:2
+W:20:2:15:50000
+P:2:0d0:0:0:10
+F:INT | WIS | HIDE_TYPE |
+F:RES_BLIND | ESP_ORC | ESP_EVIL | ESP_TROLL
+D:The hunting cap of King Thranduil, to whose ears come all the secrets of
+D:his forest domain.
+
+
+# The Metal Cap of Thengel
+
+N:37:of Thengel
+I:32:3:3
+W:10:2:20:22000
+P:3:1d1:0:0:12
+F:WIS | CHR | RES_CONF | HIDE_TYPE | LUCK
+D:A ridged helmet made of steel, and embossed with scenes of valour in fine-
+D:engraved silver. It grants the wearer nobility, clarity of thought and
+D:understanding.
+
+
+# The Steel Helm of Hammerhand
+
+N:38:of Hammerhand
+I:32:6:3
+W:20:2:60:45000
+P:6:1d3:0:0:20
+F:STR | DEX | CON | HIDE_TYPE | SPECIAL_GENE | RES_FEAR |
+F:SUST_STR | SUST_DEX | SUST_CON |
+F:RES_ACID | RES_NEXUS | RES_COLD | RES_DARK | SLOW_DIGEST |
+Z:berserk
+D:A great helm as steady as the heroes of the Westdike. Mighty were the
+D:blows of Helm, the Hammerhand!
+
+
+# The Dragon Helm of Dor-Lomin
+
+N:39:of Dor-Lomin
+I:32:7:4
+W:40:12:75:300000
+P:8:1d3:0:0:20
+F:STR | DEX | CON | HIDE_TYPE |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_LITE | RES_BLIND |
+F:LITE1 | SEE_INVIS | ESP_DRAGON | ESP_THUNDERLORD | ACTIVATE
+a:HARDCORE=GORLIM
+D:The legendary dragon helm of Turin Turambar, an object of dread to the
+D:servants of Morgoth.
+
+# The Iron Helm 'Holhenneth'
+
+N:40:'Holhenneth'
+I:32:5:2
+W:20:5:75:100000
+P:5:1d3:0:0:10
+F:INT | WIS | SEARCH | HIDE_TYPE |
+F:RES_BLIND | SEE_INVIS | ACTIVATE
+a:HARDCORE=DETECT_ALL
+D:A famous helm of forged iron granting extraordinary powers of mind and
+D:awareness.
+
+
+# The Iron Helm of Gorlim
+
+N:41:of Gorlim
+I:32:5:-5
+W:20:5:75:0
+P:5:1d3:25:25:10
+F:INT | WIS | SEARCH | HIDE_TYPE | SHOW_MODS |
+F:SEE_INVIS | NO_MAGIC | HEAVY_CURSE | TY_CURSE
+F:RES_DISEN | RES_FEAR | FREE_ACT | RES_ACID | RES_FIRE | RES_POIS |
+F:IM_COLD | ACTIVATE | DRAIN_HP |
+F:TELEPORT | CURSED
+a:HARDCORE=GORLIM
+D:A headpiece, gaudy and barbaric, that betrayed a warrior when he most
+D:needed succor.
+
+
+# The Golden Crown of Gondor
+
+N:42:of Gondor
+I:33:11:3
+W:40:40:30:125000
+P:0:1d1:0:0:15
+F:STR | WIS | CON | HIDE_TYPE | SPEED | RES_CONF | RES_SOUND |
+F:RES_COLD | RES_FIRE | RES_LITE | RES_BLIND | RES_ELEC | RES_CHAOS |
+F:LITE1 | SEE_INVIS | REGEN | ACTIVATE
+a:HARDCORE=CURE_700
+D:The shining winged circlet brought by Elendil from dying Numenor, emblem of
+D:Gondor through an age of the world.
+
+
+# The Jewel Encrusted Crown of Numenor
+# Stolen from Oangband
+
+N:43:of Numenor
+I:33:12:3
+W:60:30:40:50000
+P:0:1d1:0:0:18
+F:INT | DEX | CHR | SEARCH | SPEED | HIDE_TYPE |
+F:SEE_INVIS | FREE_ACT | RES_DARK | RES_BLIND |
+F:RES_SHARDS | RES_SOUND | RES_LITE | RES_COLD |
+F:LITE1 | ACTIVATE | DRAIN_MANA
+a:HARDCORE=NUMENOR
+D:A crown of massive gold, set with wondrous jewels of thought and warding,
+D:worn by the kings of ancient Numenor. Its wearer may go into battle
+D:always knowing what he faces - unless his own folly blinds him to the
+D:nature and magnitude of the task.
+
+
+# The Cloak 'Colluin'
+
+N:44:'Colluin'
+I:35:1:0
+W:5:45:10:40000
+P:1:0d0:0:0:20
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | ACTIVATE | ESP_GOOD
+a:HARDCORE=COLLUIN
+D:A cape worn by a hero from Valinor, a land utterly beyond the strife
+D:of Elements.
+
+
+# The Cloak 'Holcolleth'
+
+N:45:'Holcolleth'
+I:35:1:2
+W:5:25:10:13000
+P:1:0d0:0:0:4
+F:INT | WIS | SPEED | STEALTH | HIDE_TYPE |
+F:RES_ACID | ACTIVATE
+a:HARDCORE=SLEEP
+D:This elven-grey mantle possesses great powers of tranquility and of
+D:concealment, and grants the wearer the knowledge and understanding of
+D:the Sindar.
+
+
+# The Cloak of Thingol
+
+N:46:of Thingol
+I:35:1:3
+W:10:50:10:35000
+P:1:0d0:0:0:18
+F:DEX | CHR | HIDE_TYPE |
+F:FREE_ACT | RES_ACID | RES_FIRE | RES_COLD | ACTIVATE
+a:HARDCORE=RECHARGE
+D:A sable-hued cloak, with glowing elven-runes to restore magic showing calm
+D:and clear as moonlight on still water.
+
+
+# The Cloak of Thorongil
+
+N:47:of Thorongil
+I:35:1:0
+W:5:10:10:8000
+P:1:0d0:0:0:10
+F:FREE_ACT | RES_ACID | SEE_INVIS | RES_FEAR
+D:A cloak of shimmering green and brown that grants sight beyond sight and
+D:shakes off holding magics, worn by Aragorn son of Arathorn in his youth
+D:as he adventured under the name of Thorongil.
+
+
+# The Cloak 'Colannon'
+
+N:48:'Colannon'
+I:35:1:3
+W:5:20:10:11000
+P:1:0d0:0:0:15
+F:STEALTH | SPEED | RES_NEXUS |
+F:RES_ACID | ACTIVATE
+a:HARDCORE=TELEPORT
+D:A crystal-blue cape of fine silk worn by a silent messenger of
+D:the forces of Law. Somehow, its wearer is always able to escape
+D:trouble.
+
+
+# The Shadow Cloak of Luthien
+
+N:49:of Luthien
+I:35:6:2
+W:40:40:5:55000
+P:6:0d0:0:0:20
+F:INT | WIS | CHR | HIDE_TYPE | SPEED | STEALTH | INVIS | LUCK
+F:RES_ACID | RES_FIRE | RES_COLD | SPECIAL_GENE | ACTIVATE | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=REST_LIFE
+D:The opaque midnight folds, inset with a multitude of tiny diamonds, of
+D:this cloak swirl around you and you feel a hint, a fragment of the
+D:knowledge and power to restore that lay in Luthien, the most beautiful
+D:being that ever knew death.
+
+
+# The Shadow Cloak of Tuor
+
+N:50:of Tuor
+I:35:6:4
+W:40:40:5:35000
+P:6:0d0:0:0:12
+F:STEALTH | DEX | HIDE_TYPE | INVIS | WATER_BREATH
+F:FREE_ACT | IM_ACID | SEE_INVIS | CLIMB
+D:From the ruin of Gondolin did Tuor escape, through secret ways and travail,
+D:shielded by his cloak from a multitude of hostile eyes.
+
+
+# The Main Gauche of Azaghal, which wounded Glaurung
+N:51:of Azaghal
+I:23:5:0
+W:15:30:30:40000
+P:0:2d5:12:14:0
+F:KILL_DRAGON | IM_FIRE | ESP_DRAGON | RES_FEAR
+D:The weapon of Azaghal when he wounded Glaurung. It is deadly
+D:when fighting dragons and is said to make the breaths of fire
+D:completely harmless.
+
+
+# The Set of Leather Gloves 'Cambeleg'
+
+N:52:'Cambeleg'
+I:31:1:2
+W:10:6:5:36000
+P:1:0d0:8:8:15
+F:STR | CON | HIDE_TYPE |
+F:FREE_ACT | SHOW_MODS
+D:A hero's handgear that lends great prowess in battle.
+
+
+# The Set of Leather Gloves 'Cammithrim'
+
+N:53:'Cammithrim'
+I:31:1:0
+W:10:3:5:30000
+P:1:0d0:0:0:10
+F:FREE_ACT | RES_LITE | SUST_CON | LITE1 | ACTIVATE
+F:SPECIAL_GENE
+a:HARDCORE=BO_MISS_1
+D:These gloves glow so brightly as to light the way for their owner and cast
+D:magical bolts with great frequency.
+
+
+# The Set of Gauntlets 'Paurhach'
+
+N:54:'Paurhach'
+I:31:2:0
+W:10:5:25:15000
+P:2:1d1:0:0:15
+F:RES_FIRE | ACTIVATE | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=BO_FIRE_1
+D:A fiery set of gauntlets that can even shoot fire from the user's
+D:hands.
+
+
+# The Set of Gauntlets 'Paurnimmen'
+
+N:55:'Paurnimmen'
+I:31:2:4
+W:10:5:25:33000
+P:2:1d1:0:0:15
+F:RES_COLD | ACTIVATE
+F:SUST_CON | CON | REGEN | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=BO_COLD_1
+D:A set of handgear so icy as to be able to fire frost bolts.
+
+
+# The Set of Gauntlets 'Pauraegen'
+
+N:56:'Pauraegen'
+I:31:2:0
+W:10:5:25:11000
+P:2:1d1:0:0:15
+F:RES_ELEC | ACTIVATE | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=BO_ELEC_1
+D:A set of handgear with sparks surrounding it, able to fire
+D:bolts of electricity.
+
+
+# The Set of Gauntlets 'Paurnen'
+
+N:57:'Paurnen'
+I:31:2:0
+W:10:5:25:12000
+P:2:1d1:0:0:15
+F:RES_ACID | ACTIVATE | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=BO_ACID_1
+D:A set of handgear so corrosive that it may fire bolts of acid.
+
+
+# The Set of Gauntlets 'Camlost'
+
+N:58:'Camlost'
+I:31:2:-3
+W:10:20:25:0
+P:2:1d1:-11:-12:0
+F:STR | DEX | HIDE_TYPE | DRAIN_MANA |
+F:RES_POIS | IM_FIRE | IM_COLD | RES_DISEN | RES_NETHER | FREE_ACT |
+F:AGGRAVATE | SHOW_MODS | HEAVY_CURSE | TY_CURSE | TELEPORT | CURSED
+D:A pair of gauntlets that sap combat ability, named after the empty hand
+D:of Beren that once clasped a Silmaril.
+
+
+# The Set of Cesti of Fingolfin
+
+N:59:of Fingolfin
+I:31:5:4
+W:40:15:40:110000
+P:5:1d1:10:10:20
+F:DEX | HIDE_TYPE | LUCK
+F:FREE_ACT | RES_ACID | ACTIVATE | SHOW_MODS
+a:HARDCORE=BO_MISS_2
+Z:magic missile
+D:The hand-sheathing of Fingolfin, warrior-king of Elves and Men, who gave
+D:Morgoth seven mighty wounds and pain that will last forever.
+
+
+# The Pair of Hard Leather Boots of Feanor
+
+N:60:of Feanor
+I:30:3:15
+W:40:120:40:300000
+P:3:1d1:0:0:20
+F:SPEED | HIDE_TYPE |
+F:RES_NEXUS | ACTIVATE
+a:HARDCORE=SPEED
+D:This wondrous pair of leather boots once sped Feanor, creator of the
+D:Silmarils and the mightiest of the Eldar, along the Grinding Ice and to
+D:Middle-earth at last.
+
+
+# The Pair of Soft Leather Boots 'Dal-i-thalion'
+
+N:61:'Dal-i-thalion'
+I:30:2:5
+W:10:25:20:40000
+P:2:1d1:0:0:15
+F:DEX | HIDE_TYPE | CHR | SUST_CHR |
+F:ACTIVATE | FREE_ACT |
+F:RES_NETHER | RES_CHAOS | RES_CONF | SUST_CON
+a:HARDCORE=CURE_POISON
+D:A pair of high-laced shoes, strong against the powers of corruption and
+D:withering, that grant the wearer extraordinary agility.
+
+
+# The Pair of Metal Shod Boots of Thror
+
+N:62:of Thror
+I:30:6:3
+W:30:25:80:15000
+P:6:1d1:0:0:20
+F:STR | CON | HIDE_TYPE | SPEED | RES_FEAR | CLIMB
+D:Sturdy footwear of leather and steel as enduring as the long-suffering
+D:Dwarven King-in-exile who wore them. Of dwarven make, these boots will
+D:make their wearer completely at home in the mountains.
+
+
+# The Seeker Arrow of Bard
+# This is, of course, from my 'Artifact Ammo' thread and doesn't need much
+# explanation. It's rather nasty and deals 1000 or more damage on a
+# normal hit to a dragon. :) Doesn't put a dent in Sky Drakes and Power
+# Dragons, tho it's still good for helping to take down Smaug, Tiamat and
+# the other dragon uniques.
+# P+ changed name, rarity to 30
+
+N:63:of Bard
+I:17:2:0
+W:55:30:2:50000
+P:0:8d4:20:15:0
+F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON |
+F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON | KILL_DRAGON |
+F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS
+D:Deadliest of arrows, imbued with elemental strength, this shaft is
+D:feared especially by the wyrmkin.
+
+
+# The Main Gauche of Maedhros
+
+N:64:of Maedhros
+I:23:5:3
+W:15:30:30:22500
+P:0:2d5:12:15:0
+F:INT | DEX | HIDE_TYPE | SPEED | SPECIAL_GENE
+F:SLAY_TROLL | SLAY_GIANT | FREE_ACT | SEE_INVIS | SHOW_MODS
+D:A short thrusting blade with a large guard worn by Maedhros the Tall,
+D:eldest son of Feanor, and wielded with his left hand after the loss of
+D:his right hand in the pits of Thangorodrim.
+
+
+# The Dagger 'Angrist'
+
+N:65:'Angrist'
+I:23:4:4
+W:20:80:12:125000
+P:0:2d4:10:15:5
+F:DEX | HIDE_TYPE | STEALTH | SEARCH | BRAND_POIS |
+F:SLAY_EVIL | SLAY_TROLL | SLAY_ORC | BRAND_ACID |
+F:FREE_ACT | RES_DARK | SUST_DEX | SEE_INVIS |
+F:SHOW_MODS
+D:Forged from meteoric iron, this long chopping dagger slices through
+D:ordinary metal as easily as its title, "Iron Cleaver", suggests.
+
+
+# The Dagger 'Narthanc'
+
+N:66:'Narthanc'
+I:23:4:0
+W:4:100:12:12000
+P:0:1d4:4:6:0
+F:BRAND_FIRE | RES_FIRE | ACTIVATE | SHOW_MODS | LITE1 | LEVELS
+a:HARDCORE=BO_FIRE_1
+D:A fiery dagger finely balanced for deadly throws.
+
+
+# The Dagger 'Nimthanc'
+
+N:67:'Nimthanc'
+I:23:4:0
+W:3:100:12:11000
+P:0:1d4:4:6:0
+F:BRAND_COLD | RES_COLD | ACTIVATE | SHOW_MODS | LEVELS
+a:HARDCORE=BO_COLD_1
+D:A frosty dagger finely balanced for deadly throws.
+
+
+# The Dagger 'Dethanc'
+
+N:68:'Dethanc'
+I:23:4:0
+W:5:100:12:13000
+P:0:1d4:4:6:0
+F:BRAND_ELEC | RES_ELEC | ACTIVATE | SHOW_MODS | LEVELS
+a:HARDCORE=BO_ELEC_1
+D:A dagger covered in sparks and finely balanced for deadly throws.
+
+
+# The Dagger of Rilia
+
+N:69:of Rilia
+I:23:4:0
+W:5:40:12:35000
+P:0:2d4:4:3:0
+F:SLAY_ORC | RES_POIS | RES_DISEN | ACTIVATE | SHOW_MODS | BRAND_POIS
+a:HARDCORE=BA_POIS_1
+D:A large stiletto dagger that glistens with odourless poison, to which the
+D:wearer seems oddly immune.
+
+
+# The Dagger 'Belangil'
+
+N:70:'Belangil'
+I:23:4:2
+W:10:40:12:50000
+P:0:2d4:6:9:0
+F:DEX | HIDE_TYPE | SPEED | BLOWS |
+F:BRAND_COLD | RES_COLD |
+F:SEE_INVIS | SLOW_DIGEST | REGEN |
+F:ACTIVATE | SHOW_MODS | BRAND_POIS
+a:HARDCORE=BELANGIL
+D:A frosty dagger surrounded in a nimbus of ice with a hilt of elk horn and
+D:an edge to wound the wind.
+
+
+# The Bastard Sword 'Calris'
+
+N:71:'Calris'
+I:23:21:5
+W:30:15:140:100000
+P:0:5d4:-20:20:0
+F:CON | HIDE_TYPE | DRAIN_HP |
+F:KILL_DRAGON | SLAY_EVIL | SLAY_DEMON | SLAY_TROLL | RES_DISEN |
+F:AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS | ESP_DRAGON | ESP_DEMON
+F:AUTO_CURSE
+F:COULD2H
+f:COULD2H
+D:This sword has runes of power incised on its ornate hilt and a single
+D:blood channel that gleams coldly blue as you grasp this mighty weapon of
+D:peril.
+
+
+# The Broad Sword 'Aranruth'
+
+N:72:'Aranruth'
+I:23:16:4
+W:20:45:150:125000
+P:0:3d5:20:12:0
+F:STR | DEX | CON | SUST_CON | SUST_STR
+F:REGEN | FREE_ACT | SEE_INVIS |
+F:RES_CHAOS | RES_NETHER | HOLD_LIFE | RES_FEAR |
+F:RES_COLD |
+F:SLAY_DEMON | SLAY_EVIL | SLAY_DRAGON | SLAY_UNDEAD |
+F:BRAND_COLD |
+F:SLOW_DIGEST | SHOW_MODS | HIDE_TYPE | BLESSED
+D:The beautiful sword of Thingol with a hilt of gold and silver inlay,
+D:glistening icily enough to freeze the hearts of demons. You feel supple
+D:and lightfooted as you hold it.
+
+
+# The Broad Sword 'Glamdring'
+
+N:73:'Glamdring'
+I:23:16:1
+W:20:20:150:40000
+P:0:2d5:10:15:0
+F:SEARCH | HIDE_TYPE | BLESSED | SLAY_DEMON |
+F:SLAY_EVIL | BRAND_FIRE | SLAY_ORC | RES_FIRE | RES_LITE | LITE1 |
+F:SLOW_DIGEST | SHOW_MODS | ESP_ORC | SPECIAL_GENE |
+D:This fiery, shining blade earned its sobriquet "Foe-Hammer" from dying orcs
+D:who dared to come near hidden Gondolin.
+
+
+# The Broad Sword 'Aeglin'
+
+N:74:'Aeglin'
+I:23:16:4
+W:20:90:150:95000
+P:0:2d5:12:16:0
+F:SEARCH | BLESSED | LITE1 | HIDE_TYPE |
+F:BRAND_ELEC | SLAY_ORC | SLAY_GIANT | SLAY_TROLL | RES_FEAR |
+F:RES_ELEC | RES_FIRE | RES_BLIND | ESP_ORC | ESP_GIANT | ESP_TROLL |
+F:SLOW_DIGEST | SHOW_MODS
+D:Like unto Orcrist and Glamdring, and like them long lost, this sword is
+D:continually coved in tiny arcs of captive lightning that flash and dance
+D:eerily in the globe of light they create.
+
+
+# The Broad Sword 'Orcrist'
+
+N:75:'Orcrist'
+I:23:16:3
+W:20:20:150:40000
+P:0:2d5:10:15:0
+F:SEARCH | ESP_ORC | SLAY_DRAGON | ESP_DRAGON | RES_COLD | HIDE_TYPE |
+F:SLAY_EVIL | BRAND_COLD | SLAY_ORC | RES_COLD | LITE1 | RES_DARK |
+F:SLOW_DIGEST | SHOW_MODS
+D:This coldly gleaming blade is called simply "Biter", by orcs who came to
+D:know its power all too well.
+
+
+# The Two-Handed Sword 'Gurthang'
+
+N:76:'Gurthang'
+I:23:25:2
+W:30:30:200:100000
+P:0:3d6:13:17:0
+F:STR | HIDE_TYPE | VORPAL | ESP_DRAGON | DRAIN_HP |
+F:RES_FIRE | RES_POIS | BRAND_FIRE | BRAND_POIS |
+F:KILL_DRAGON | SLAY_TROLL | FREE_ACT | SLOW_DIGEST | REGEN | SHOW_MODS
+F:MUST2H
+f:MUST2H
+D:A giant sword once wielded by mighty Turin, and a great dragonbane which
+D:bathed in Glaurung's blood: but beware, it will drink the blood of those
+D:who wield it eventually.
+
+
+# The Two-Handed Sword 'Zarcuthra'
+
+N:77:'Zarcuthra'
+I:23:25:4
+W:30:180:250:205000
+P:0:4d6:19:21:0
+F:STR | CHR | INFRA | HIDE_TYPE | VORPAL | DRAIN_MANA |
+F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | BRAND_FIRE |
+F:SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL | SLAY_GIANT | SLAY_ORC |
+F:RES_FIRE | RES_CHAOS | FREE_ACT | SEE_INVIS | AGGRAVATE | SHOW_MODS
+F:MUST2H
+f:MUST2H
+D:Dark and deadly runes stand stark against the naked steel of this awesome
+D:weapon, and you feel a stunning power of slaying and rending as you
+D:slowly approach.
+
+
+# The Dark Sword 'Mormegil'
+
+N:78:'Mormegil'
+I:23:33:2
+W:30:15:250:0
+P:0:6d7:0:0:-20
+F:SPEED | IM_FIRE | RES_FIRE | BRAND_FIRE | RES_DISEN | RES_FEAR |
+F:AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS | LEVELS | TY_CURSE |
+F:BLOWS | SLAY_DRAGON | RES_CHAOS | ANTIMAGIC_50 |
+F:DRAIN_MANA | DRAIN_HP | DRAIN_EXP
+D:A foul, twisted sword with blackened spines and knobs, whose very name is a
+D:curse upon the lips of Elves and Men.
+
+
+# The Cutlass 'Gondricam'
+
+N:79:'Gondricam'
+I:23:12:3
+W:20:8:110:28000
+P:0:1d7:10:11:0
+F:DEX | STEALTH | HIDE_TYPE |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | FEATHER |
+F:SEE_INVIS | REGEN | SHOW_MODS
+D:Famed sea-defender of Lebennin. A short, slightly curved chopping blade
+D:with a perfect edge shining cleanly in the sun, an object of hate to the
+D:men of Umbar who met it in combat.
+
+
+# The Executioner's Sword 'Crisdurian'
+
+N:80:'Crisdurian'
+I:23:28:0
+W:40:15:260:111000
+P:0:4d5:18:19:0
+F:SLAY_DRAGON | SLAY_EVIL | SLAY_UNDEAD | SLAY_TROLL | SLAY_GIANT |
+F:SLAY_ORC | SEE_INVIS | SHOW_MODS | VORPAL | BRAND_POIS | WOUNDING
+F:MUST2H
+f:MUST2H
+D:A giant's weapon, with a long blade tall and straight thrusting out from a
+D:massive double-pronged hilt. On its blade are written doomspells against
+D:both the living and undead.
+
+
+# The Katana 'Aglarang'
+
+N:81:'Aglarang'
+I:23:20:5
+W:35:25:50:40000
+P:0:8d4:0:0:0
+F:DEX | TUNNEL | SPEED | HIDE_TYPE |
+F:SUST_DEX | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:An utterly perfect, cleanly chiselled sword, with a edge that effortlessly
+D:slices rock and bone, and spells to render the wearer lithe and nimble. It
+D:is combat incarnate.
+
+
+# The Long Sword 'Ringil'
+
+N:82:'Ringil'
+I:23:17:10
+W:20:120:130:300000
+P:0:4d5:22:25:0
+F:SPEED | HIDE_TYPE | RES_FEAR | BLESSED |
+F:SLAY_EVIL | BRAND_COLD | SLAY_UNDEAD | KILL_DEMON | SLAY_TROLL |
+F:FREE_ACT | RES_COLD | RES_LITE | LITE1 | SEE_INVIS | SLOW_DIGEST | REGEN |
+F:ACTIVATE | SHOW_MODS
+a:HARDCORE=BA_COLD_2
+D:The weapon of Fingolfin, High King of the Noldor; it shines like a column
+D:of ice lit by light unquenchable. Morgoth came but unwillingly to meet it
+D:of old; his lame foot will remind him of its might should he meet it again.
+
+
+# The Long Sword 'Anduril'
+
+N:83:'Anduril'
+I:23:17:4
+W:20:40:130:100000
+P:0:3d5:10:15:5
+F:STR | DEX | HIDE_TYPE | RES_FEAR | FREE_ACT | BLESSED | LUCK
+F:SLAY_EVIL | BRAND_FIRE | SLAY_TROLL | SLAY_ORC | FREE_ACT |
+F:RES_FIRE | SUST_DEX | SEE_INVIS | ACTIVATE | SHOW_MODS | LITE1
+F:RES_DISEN | SPECIAL_GENE
+a:HARDCORE=BA_FIRE_1
+D:The famed "Flame of the West", the sword that was broken and is forged
+D:again. It glows with the essence of fire, its wearer is mighty in combat,
+D:and no creature of Sauron can withstand it. It will never be stained or
+D:broken even in defeat.
+
+
+# The Long Sword 'Anguirel'
+
+N:84:'Anguirel'
+I:23:17:2
+W:20:30:130:40000
+P:0:2d5:8:12:0
+F:STR | CON | SPEED | HIDE_TYPE |
+F:SLAY_EVIL | BRAND_ELEC | SLAY_DEMON | FREE_ACT | RES_ELEC |
+F:RES_LITE | RES_DARK | SEE_INVIS | SHOW_MODS | VORPAL | WOUNDING
+F:AGGRAVATE | CURSED
+D:Forged of black galvorn by the Dark-Elven smith Eol, this blade has the
+D:living lightning trapped inside.
+
+
+# The Long Sword 'Elvagil'
+
+N:85:'Elvagil'
+I:23:17:2
+W:20:8:130:20000
+P:0:2d5:5:7:0
+F:DEX | CHR | STEALTH | HIDE_TYPE | ESP_ORC | ESP_TROLL
+F:SLAY_TROLL | SLAY_ORC | FEATHER | SEE_INVIS | SHOW_MODS
+D:The "Singing Blade", whose wearer can slay Orcs and Trolls in the hidden
+D:and secret places of the earth.
+
+
+# The Rapier 'Forasgil'
+
+N:86:'Forasgil'
+I:23:7:0
+W:15:8:40:15000
+P:0:1d6:12:19:0
+F:SLAY_ANIMAL | BRAND_COLD | RES_COLD | RES_LITE | SHOW_MODS
+D:A slender, tapered blade whose wielder strikes icy blows with deadly
+D:accuracy.
+
+
+# The Sabre 'Careth Asdriag'
+
+N:87:'Careth Asdriag'
+I:23:11:2
+W:15:8:50:25000
+P:0:2d7:6:8:0
+F:DEX | BLOWS | SPEED | CON |
+F:SLAY_DRAGON | SLAY_ANIMAL | SLAY_TROLL | SLAY_GIANT |
+F:SLAY_ORC | SHOW_MODS | ESP_ANIMAL
+D:An heirloom of the Lords of Rhun far to the east, and a name of
+D:dismay to creatures natural and unnatural.
+
+
+# The Small Sword 'Sting'
+
+N:88:'Sting'
+I:23:8:2
+W:20:205:75:100000
+P:0:1d6:7:8:0
+F:STR | DEX | CON | BLOWS | SPEED | LEVELS |
+F:ESP_ORC | ESP_UNDEAD | ESP_SPIDER |
+F:SLAY_EVIL | SLAY_UNDEAD | SLAY_ORC | SLAY_ANIMAL | LITE1 |
+F:FREE_ACT | RES_LITE | SEE_INVIS | SHOW_MODS |
+D:"I will give you a name, and I shall call you Sting." The perfect size
+D:for Bilbo, and stamped forever by the courage he found in Mirkwood, this
+D:sturdy little blade grants the wearer combat prowess and survival
+D:abilities they did not know they had.
+
+
+# The Scimitar 'Haradekket'
+
+N:89:'Haradekket'
+I:23:18:2
+W:20:8:130:111111
+P:0:2d5:9:11:0
+F:INT | WIS | BLOWS |
+F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | SLAY_DRAGON | SLAY_DEMON |
+F:RES_CHAOS | RES_DISEN | RES_NEXUS |
+F:SEE_INVIS | BLESSED |
+F:SHOW_MODS
+D:A damascened scimitar that seems wondrously easy to hold. Famed in song as
+D:the "Sickle of Harad", and a deadly foe to the undead.
+
+
+# The Short Sword 'Gilettar'
+
+N:90:'Gilettar'
+I:23:10:2
+W:20:8:80:35000
+P:0:1d7:3:7:0
+F:BLOWS | HIDE_TYPE |
+F:SLAY_ANIMAL | SLOW_DIGEST | REGEN | SHOW_MODS | SEE_INVIS | RES_DISEN
+D:A stubby blade worn by Beren, whose horn sounded of old in the glades of
+D:Brethil.
+
+
+# The Blade of Chaos 'Doomcaller'
+
+N:91:'Doomcaller'
+I:23:30:0
+W:70:25:180:250000
+P:0:6d5:18:28:-50
+F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | BRAND_COLD | SLAY_TROLL |
+F:SLAY_ORC | FREE_ACT | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:RES_CHAOS | SEE_INVIS | ESP_EVIL | AGGRAVATE | SHOW_MODS |
+F:CHAOTIC | VORPAL | BRAND_FIRE | BRAND_POIS | SPECIAL_GENE
+D:This weapon of wrath, cursed with a violent anger, dives hungrily
+D:into the flesh of its enemies. It gathers shadows of death into its
+D:owner as they inflict wounds that will never heal.
+
+
+# The Long Sword 'Vorpal Blade'
+
+N:92:'Vorpal Blade'
+I:23:17:2
+W:50:30:150:250000
+P:0:5d5:32:32:0
+F:VORPAL | SLAY_EVIL | WOUNDING
+F:FREE_ACT | SEE_INVIS | SLOW_DIGEST | REGEN | SPEED | STR | DEX
+D:"One, two! One, two! And through, and through, the vorpal blade
+D:went snicker-snack!"
+
+
+# The Beaked Axe of Theoden
+
+N:93:of Theoden
+I:22:10:3
+W:20:15:180:40000
+P:0:2d6:8:10:0
+F:WIS | CON | HIDE_TYPE |
+F:SLAY_DRAGON | ESP_EVIL | ESP_UNDEAD | SLOW_DIGEST | ACTIVATE | SHOW_MODS
+a:HARDCORE=DRAIN_2
+D:The narrow axe head of this weapon, finely balanced by a crow's beak,
+D:would pierce even the armour of Smaug, and its wielder becomes aware of
+D:the minds of their enemies.
+
+
+# The Glaive of Pain
+
+N:94:of Pain
+I:22:13:0
+W:30:155:190:50000
+P:0:9d6:0:30:0
+F:SHOW_MODS | LEVELS | DRAIN_MANA
+F:COULD2H
+f:COULD2H
+D:The massive chopper that crowns this glaive glows blood-red and black;
+D:fell spells of annihilation swirl and dance as you swing death's myrmidon
+D:down.
+
+
+# The Halberd 'Osondir'
+
+N:95:'Osondir'
+I:22:15:3
+W:20:8:190:22000
+P:0:3d5:6:9:0
+F:CHR | HIDE_TYPE |
+F:BRAND_FIRE | SLAY_UNDEAD | SLAY_GIANT | RES_FIRE | RES_SOUND |
+F:FEATHER | SEE_INVIS | SHOW_MODS | ESP_GIANT
+F:COULD2H
+f:COULD2H
+D:Lordly and tall did Osondir stand against the wrath of giants, and
+D:clear-eyed in barrows fell, wielding a halberd glowing ruby red.
+
+
+# The Pike 'Til-i-arc'
+
+N:96:'Til-i-arc'
+I:22:8:2
+W:20:15:160:32000
+P:0:2d5:10:12:10
+F:INT | HIDE_TYPE |
+F:BRAND_COLD | BRAND_FIRE | SLAY_DEMON | SLAY_TROLL | SLAY_GIANT | ESP_GIANT
+F:RES_FIRE | RES_COLD | SUST_INT | SLOW_DIGEST | SHOW_MODS |
+F:COULD2H
+f:COULD2H
+D:Within this long thrusting spear lie the spirits of frost giants and fire
+D:demons, who war forever, trapped by magely spells.
+
+
+# The Spear 'Aeglos'
+
+N:97:'Aeglos'
+I:22:2:4
+W:15:45:50:180000
+P:0:3d6:15:25:5
+F:DEX | WIS | HIDE_TYPE |
+F:BRAND_COLD | BRAND_ELEC | LITE1 |
+F:SLAY_TROLL | SLAY_ORC | SLAY_GIANT | KILL_UNDEAD |
+F:FREE_ACT | RES_COLD | RES_ELEC | RES_LITE |
+F:SLOW_DIGEST | ACTIVATE | BLESSED | SHOW_MODS |
+a:HARDCORE=BA_ELEC_2
+D:The mighty spear of Gil-galad, famed as "Snow-point" in the songs of
+D:Elves, against which all the foul corruptions of Sauron dashed in vain.
+
+
+# The Spear of Orome
+
+N:98:of Orome
+I:22:2:4
+W:15:45:50:77777
+P:0:4d6:15:15:0
+F:INT | WIS | SPEED | TUNNEL | INFRA | HIDE_TYPE | SEARCH |
+F:BRAND_FIRE |
+F:SLAY_GIANT | SLAY_EVIL | SLAY_DEMON | SLAY_UNDEAD | SLAY_DRAGON |
+F:RES_FIRE | RES_LITE | HOLD_LIFE | RES_FEAR |
+F:FEATHER | ESP_GIANT
+F:SEE_INVIS |
+F:ACTIVATE | BLESSED | SHOW_MODS
+a:HARDCORE=STONE_MUD
+D:The thrusting spear of wise Orome the Vala, strong against giants of frost,
+D:which can melt rock or flesh with ease.
+
+
+# The Spear 'Nimloth'
+
+N:99:'Nimloth'
+I:22:2:3
+W:15:12:50:30000
+P:0:1d6:11:13:0
+F:STEALTH | RES_DARK | INFRA | SPEED | BLESSED |
+F:BRAND_COLD | SLAY_UNDEAD | RES_COLD | SEE_INVIS | SHOW_MODS
+D:A thin spike of thrice-forged steel caps a straight sylvan shaft cut from
+D:a legendary tree; spells to break the will of the undead and strike cold
+D:fear into the hearts of foes lie on this perfectly balanced spear.
+
+
+# The Lance of Eorlingas
+
+N:100:of Eorlingas
+I:22:20:2
+W:20:23:360:55000
+P:0:3d8:3:21:0
+F:STR | DEX | SPEED | HIDE_TYPE | RES_FEAR |
+F:SLAY_EVIL | SLAY_TROLL | SLAY_ORC | SEE_INVIS | SHOW_MODS
+F:MUST2H
+f:MUST2H
+D:"Forth Eorlingas!" To the field of Cormallen came Eorl the Young
+D:to save beleaguered Gondor, and from his lance fled massive trolls
+D:and dire wolves.
+
+
+# The Great Axe of Durin
+
+N:101:of Durin
+I:24:25:3
+W:30:90:230:150000
+P:0:4d4:10:20:15
+F:STR | CON | TUNNEL | HIDE_TYPE | ESP_EVIL | RES_FEAR |
+F:SLAY_DRAGON | KILL_DEMON | SLAY_TROLL | SLAY_ORC | FREE_ACT |
+F:RES_ACID | RES_FIRE | RES_LITE | RES_DARK | RES_CHAOS | SHOW_MODS |
+F:BRAND_ACID | BRAND_FIRE
+F:MUST2H
+f:MUST2H
+D:The twin massive axe heads of this ancient demon's dread gleam with
+D:mithril inlay, which tell sagas of endurance, invoking the powers of
+D:Khazad-dum to protect the wearer and slay all evils found underground.
+
+
+# The Great Axe of Eonwe
+
+N:102:of Eonwe
+I:24:25:2
+W:30:120:230:200000
+P:0:4d4:15:18:8
+F:STR | INT | WIS | DEX | CON | CHR | HIDE_TYPE |
+F:SLAY_EVIL | BRAND_COLD | KILL_DEMON | SLAY_UNDEAD | ESP_NONLIVING
+F:SLAY_ORC | FREE_ACT | IM_COLD | SEE_INVIS | ACTIVATE |
+F:BLESSED | SHOW_MODS
+a:HARDCORE=MASS_GENO
+D:The axe of Eonwe, leader of the Hosts of the West before the gates of
+D:Thangorodrim, strikes with icy wrath at the undead, disperses hosts of
+D:evil at a word, and grants Maia-like powers of body and mind.
+
+
+# The Battle Axe of Balli Stonehand
+
+N:103:of Balli Stonehand
+I:22:22:3
+W:30:15:170:90000
+P:0:3d8:8:11:5
+F:STR | CON | STEALTH | HIDE_TYPE | ESP_NONLIVING
+F:SLAY_DEMON | SLAY_TROLL | SLAY_ORC | FREE_ACT |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_BLIND | FEATHER |
+F:SEE_INVIS | REGEN | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:The twin blades of this weapon were forged in Belegost, and powerful forces
+D:to resist and endure lie ready for he who shall wield it once more.
+
+
+# The Battle Axe 'Lotharang'
+
+N:104:'Lotharang'
+I:22:22:1
+W:30:15:170:21000
+P:0:2d8:4:3:0
+F:STR | DEX | HIDE_TYPE |
+F:SLAY_TROLL | SLAY_ORC | ACTIVATE | SHOW_MODS
+a:HARDCORE=CURE_MW
+D:A superbly crafted double-bladed axe that slays the creatures of earth and
+D:allows rapid recovery from their blows.
+
+
+# The Lochaber Axe 'Mundwine' -> of the Dwarves
+
+N:105:of the Dwarves
+I:22:28:10
+W:30:8:250:80000
+P:0:3d8:12:17:0
+F:SLAY_EVIL | TUNNEL | INFRA | SEARCH | SLAY_GIANT |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_FEAR |
+F:SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:A massive axe with twin razor-sharp heads, so large that it usually
+D:requires two hands to wield, intricately engraved in gold with spells
+D:to ward off the elements and smite evil.
+
+
+# The Broad Axe 'Barukkheled'
+
+N:106:'Barukkheled'
+I:24:11:3
+W:20:8:160:50000
+P:0:2d6:13:19:0
+F:CON | HIDE_TYPE |
+F:SLAY_EVIL | SLAY_TROLL | SLAY_GIANT | SLAY_ORC |
+F:SEE_INVIS | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:A royal heirloom of the southern coast, strong in combat against evil
+D:creatures of the earth.
+
+
+# The Trident of Wrath
+
+N:107:of Wrath
+I:22:5:2
+W:15:35:300:90000
+P:0:3d8:16:18:0
+F:STR | DEX | HIDE_TYPE | CHAOTIC | DRAIN_MANA |
+F:SLAY_EVIL | KILL_UNDEAD | RES_LITE | RES_DARK | SEE_INVIS |
+F:BLESSED | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:A massive triple-pronged spear, so great it normally requires two hands to
+D:wield, evoking the spirit of Osse who with it pierced legions of
+D:evil and undead.
+
+
+# The Trident of Ulmo
+
+N:108:of Ulmo
+I:22:5:4
+W:30:90:70:120000
+P:0:4d8:15:19:0
+F:DEX | HIDE_TYPE |
+F:SLAY_DRAGON | SLAY_ANIMAL | FREE_ACT | HOLD_LIFE | IM_ACID |
+F:RES_NETHER | SEE_INVIS | SLOW_DIGEST | REGEN | ACTIVATE |
+F:BLESSED | SHOW_MODS | WATER_BREATH
+a:HARDCORE=TELE_AWAY
+D:The awesome weapon of the Vala Ulmo, Lord of Waters. Mightiest of all the
+D:powers of good save Manwe himself, Ulmo laughs in scorn at the dread powers
+D:of the undead, and is utterly in command of the element of water.
+
+
+# The Scythe 'Avavir'
+
+N:109:'Avavir'
+I:22:17:3
+W:40:8:250:18000
+P:0:5d3:8:8:10
+F:DEX | CHR | HIDE_TYPE |
+F:BRAND_COLD | BRAND_FIRE | FREE_ACT | RES_FIRE | RES_COLD |
+F:RES_LITE | SEE_INVIS | ACTIVATE | SHOW_MODS
+F:COULD2H
+f:COULD2H
+a:HARDCORE=RECALL
+D:With elemental powers whose struggles turn this weapon red and purest
+D:white, this shining reaper bears within it a power of going forth and
+D:returning.
+
+
+# The Long Sword of the Dawn
+
+N:110:of the Dawn
+I:23:17:3
+W:40:160:130:250000
+P:0:3d5:20:20:0
+F:ACTIVATE | BRAND_FIRE | FREE_ACT | RES_FIRE | INFRA | LEVELS |
+F:SLAY_EVIL | SLAY_DRAGON | SLAY_UNDEAD | SLAY_DEMON | VORPAL | CLONE |
+F:CHR | SUST_CHR | RES_FEAR | RES_LITE | RES_BLIND | REGEN | SHOW_MODS
+a:HARDCORE=DAWN
+D:Forged in the farthest East by a race of mighty spellcasters, this
+D:shiny pale sword gleams with the rays of rising sun as you invoke
+D:its power of commanding legions of powerful immortal warriors...
+
+
+# The Mighty Hammer 'Grond'
+
+N:111:'Grond'
+I:21:50:2
+W:100:1:1000:500000
+P:0:9d9:25:25:10
+F:KILL_DRAGON | SLAY_ANIMAL | SLAY_EVIL | IMPACT | KILL_UNDEAD | NO_MAGIC |
+F:KILL_DEMON | SLAY_TROLL | SLAY_ORC | RES_ACID | RES_ELEC | RES_FIRE |
+F:RES_COLD | SEE_INVIS | ESP_ALL | AGGRAVATE | SHOW_MODS | INSTA_ART |
+F:LEVELS | ACTIVATE | SPECIAL_GENE
+F:MUST2H
+f:MUST2H
+a:HARDCORE=GROND
+D:The mighty Hammer of the Underworld, blackened by doomspells of shattering,
+D:whose wielder holds the lives of all Morgoth's servants in his hand.
+
+
+# The Flail 'Totila'
+
+N:112:'Totila'
+I:21:13:2
+W:20:8:150:55000
+P:0:3d6:6:8:0
+F:STEALTH |
+F:SLAY_EVIL | BRAND_FIRE | RES_FIRE | RES_CONF | ACTIVATE |
+F:SHOW_MODS | LITE1
+F:COULD2H
+f:COULD2H
+a:HARDCORE=CONFUSE
+D:A flail whose head befuddles those who stare as you whirl it around, and
+D:becomes a fiery comet as you bring it down.
+
+
+# The Two-Handed Flail 'Thunderfist'
+
+N:113:'Thunderfist'
+I:21:18:4
+W:45:38:300:160000
+P:0:3d6:5:18:0
+F:STR | CON | HIDE_TYPE | RES_FEAR |
+F:SLAY_ANIMAL | BRAND_FIRE | BRAND_ELEC | SLAY_TROLL | SLAY_ORC |
+F:RES_ELEC | RES_FIRE | RES_DARK | SHOW_MODS |
+F:MUST2H
+f:MUST2H
+D:The long-lost weapon of Kzurin, Dwarven champion of ancient Belegost,
+D:with runes of strength in its handle, and flames and sparks that roar and
+D:crackle around its massive head.
+
+
+# The Morning Star 'Bloodspike'
+
+N:114:'Bloodspike'
+I:21:12:4
+W:20:30:150:30000
+P:0:2d6:8:22:0
+F:STR | HIDE_TYPE | BRAND_POIS |
+F:SLAY_ANIMAL | SLAY_TROLL | SLAY_ORC | RES_NEXUS | SEE_INVIS |
+F:SHOW_MODS
+D:You feel strong and firm of foot as you whip the chain-suspended spiked orb
+D:around - and bathe it in the blood of your foes.
+
+
+# The Morning Star 'Firestar'
+
+N:115:'Firestar'
+I:21:12:0
+W:20:100:150:35000
+P:0:2d6:5:7:2
+F:BRAND_FIRE | IM_FIRE | ACTIVATE | SHOW_MODS | LITE1
+a:HARDCORE=FIRESTAR
+D:A famed battle-lord of old, with a ruddy head, coloured as embers are that
+D:can yet rise up in wrath.
+
+
+# The Mace 'Taratol'
+
+N:116:'Taratol'
+I:21:5:0
+W:20:15:200:50000
+P:0:3d4:12:12:0
+F:KILL_DRAGON | BRAND_ELEC | IM_ELEC | ACTIVATE | SHOW_MODS
+F:COULD2H
+f:COULD2H
+a:HARDCORE=SPEED
+D:A great ridged mace that calls around you a nimbus of living lightning;
+D:you remain utterly untouched even as fat sparks arc around your
+D:fingers and eyebrows.
+
+
+# The War Hammer of Aule
+
+N:117:of Aule
+I:21:8:4
+W:40:75:120:250000
+P:0:9d3:19:21:5
+F:WIS | TUNNEL | HIDE_TYPE | RES_FEAR |
+F:KILL_DRAGON | SLAY_EVIL | BRAND_ELEC | SLAY_UNDEAD | SLAY_DEMON |
+F:FREE_ACT | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_NEXUS |
+F:SEE_INVIS | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:The wondrous hammer of Aule, creator of the wise Dwarven lords of old.
+D:It bears magics of demolishing that no serpent or demon can withstand, and
+D:invokes the strength of mountains to ward off the tumult of the elements.
+
+
+# The Quarterstaff 'Nar-i-vagil'
+
+N:118:'Nar-i-vagil'
+I:21:3:3
+W:20:18:150:70000
+P:0:1d9:10:20:0
+F:INT | HIDE_TYPE |
+F:SLAY_ANIMAL | BRAND_FIRE | RES_FIRE | SHOW_MODS
+F:COULD2H
+f:COULD2H
+D:Named for a fiery star and set with gems of great worth binding mystic
+D:virtues of protection and thought.
+
+
+# The Quarterstaff 'Eriril'
+
+N:119:'Eriril'
+I:21:3:4
+W:20:18:150:20000
+P:0:1d9:3:5:0
+F:INT | WIS | HIDE_TYPE | ESP_EVIL | SPELL_CONTAIN | WIELD_CAST
+F:SLAY_EVIL | RES_LITE | SEE_INVIS | ACTIVATE | SHOW_MODS
+a:HARDCORE=ID_PLAIN
+D:The radiant golden staff of an Istari of legend, this wizard's companion
+D:grants keen sight and the knowledge of many hidden things.
+
+
+# The Quarterstaff of Olorin
+
+N:120:of Olorin
+I:21:3:4
+W:30:105:150:140000
+P:0:2d9:10:13:0
+F:INT | WIS | CHR | HIDE_TYPE | SEARCH | BRAND_FIRE |
+F:SLAY_EVIL | BRAND_FIRE | SLAY_TROLL | SLAY_ORC | SPELL_CONTAIN | WIELD_CAST
+F:HOLD_LIFE | RES_FIRE | RES_NETHER | SEE_INVIS | ACTIVATE | SHOW_MODS
+a:HARDCORE=DETECT_XTRA
+D:A staff tall and sturdy, with rough-hewn runes that invoke the element of
+D:Earth, and which strikes down all creatures who live in the shadow of
+D:mountains.
+
+
+# The Mace of Disruption 'Deathwreaker'
+
+N:121:'Deathwreaker'
+I:21:20:6
+W:80:38:400:444444
+P:0:7d8:18:18:0
+F:STR | TUNNEL | HIDE_TYPE | NO_TELE | DRAIN_MANA |
+F:SLAY_DRAGON | SLAY_ANIMAL | SLAY_EVIL | KILL_UNDEAD | BRAND_FIRE |
+F:IM_FIRE | RES_DARK | RES_CHAOS | RES_DISEN | AGGRAVATE |
+F:SHOW_MODS | BRAND_POIS | VAMPIRIC
+F:MUST2H
+f:MUST2H
+D:A weapon so massive it seems beyond the strength of mortals, yet you feel
+D:the might of giants within you as you heft it. As you grip the handle
+D:of ebony and steel, coronas of fire blaze and mighty spells to preserve
+D:magic activate around you. You wield the Fear of Dragons and the Despair
+D:of the Undead!
+
+
+# The Lucerne Hammer 'Turmil'
+
+N:122:'Turmil'
+I:21:10:4
+W:20:15:120:30000
+P:0:2d5:10:6:8
+F:WIS | INFRA | HIDE_TYPE |
+F:BRAND_COLD | SLAY_ORC | RES_COLD | RES_LITE | REGEN |
+F:ACTIVATE | SHOW_MODS | ESP_ORC | ESP_TROLL | ESP_GIANT
+F:COULD2H
+f:COULD2H
+a:HARDCORE=TURMIL
+D:Wielded by the High Priest of Meneltarma, this great mace gleams coldly as
+D:though moonlit, and it can strike as mighty a blow spiritually as
+D:physically.
+
+
+# The Whip of Gothmog
+
+N:123:of Gothmog
+I:21:2:-2
+W:20:15:120:100000
+P:0:3d6:15:16:0
+F:INT | DEX | INFRA | HIDE_TYPE | DRAIN_HP |
+F:HEAVY_CURSE | CURSED | AGGRAVATE |
+F:BRAND_FIRE | SLAY_ANIMAL | SLAY_DEMON | RES_FIRE | ESP_SPIDER
+F:VORPAL | RES_LITE | LITE1 | REGEN | ESP_DEMON | WOUNDING
+F:SHOW_MODS
+D:With this unbearably bright whip of flame, the Balrog Gothmog has become
+D:known for never having lost in combat.
+
+
+# The Long Bow 'Belthronding'
+
+N:124:'Belthronding'
+I:19:13:3
+W:40:20:40:35000
+P:0:0d0:20:22:0
+F:DEX | STEALTH | HIDE_TYPE |
+F:RES_DISEN | XTRA_SHOTS | SHOW_MODS
+D:The great bow of Beleg, made of black yew and strung with elven hair that
+D:faintly shines a pale clear gold.
+
+
+# The Long Bow of Bard
+
+N:125:of Bard
+I:19:13:2
+W:30:20:40:20000
+P:0:0d0:17:19:0
+F:DEX | HIDE_TYPE | ESP_DRAGON | LUCK
+F:FREE_ACT | XTRA_MIGHT | SHOW_MODS
+D:The great yew bow of grim-faced Bard, who shot the mightiest arrow that
+D:songs record.
+
+
+# The Light Crossbow 'Cubragol'
+
+N:126:'Cubragol'
+I:19:23:10
+W:50:25:110:50000
+P:0:0d0:10:14:0
+F:SPEED | HIDE_TYPE |
+F:RES_FIRE | ACTIVATE | SHOW_MODS
+a:HARDCORE=CUBRAGOL
+D:A crossbow that grants fiery speed to he who finds it, and from which
+D:shoot bolts that blaze with flame unquenchable.
+
+
+# The Mage Staff of Eternity
+# Really powerful for a mage but extremely rare
+# The ULTIMATE "weapon" for a Sorceror or a magic class
+
+N:127:of Eternity
+I:6:1:12
+W:127:220:20:9000000
+P:0:1d4:-19:-19:0
+F:INT | CHR | WIS | MANA | SPELL | ACTIVATE |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | LUCK | SPECIAL_GENE
+F:SEE_INVIS | ESP_EVIL | ESP_DEMON | NEVER_BLOW | INFRA
+F:PRECOGNITION | IM_FIRE | ULTIMATE | SPELL_CONTAIN | WIELD_CAST
+F:COULD2H
+f:COULD2H
+a:HARDCORE=GANDALF
+D:A simple, wooden wizard's staff. Unremarkable in all aspects...
+D:except that it pulses with overwhelming power.
+
+
+# Boomerang Artifacts
+# The Metal Boomerang of Beor
+
+N:128:of Beor
+I:15:4:4
+W:20:10:20:40000
+P:0:4d5:8:12:0
+F:DEX | SPEED |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD
+D:Beor's boomerang makes its wielder as agile as the winds,
+D:and as hard to harm.
+
+
+# The Metal Boomerang 'Glimdrir'
+
+N:129:'Glimdrir'
+I:15:4:3
+W:40:20:20:60000
+P:0:5d5:15:16:0
+F:DEX | SPEED | FREE_ACT | BRAND_POIS | SLAY_EVIL | SLAY_UNDEAD | REGEN
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_SOUND | NO_TELE | CURSED
+D:A powerful boomerang that makes one agile and fast, with a thirst for
+D:evil and undead creatures, but demands its wielder not teleport, for fear
+D:of desertion.
+
+
+# The Robe of Incanus [aka Gandalf]
+
+N:130:of Incanus
+I:36:2:3
+W:30:20:20:60000
+P:2:0d0:0:0:20
+F:INT | WIS | SEARCH | HIDE_TYPE | SPELL_CONTAIN | WIELD_CAST
+F:SUST_INT | SUST_WIS | FREE_ACT | SEE_INVIS |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+Z:weigh magic
+D:Gandalf's long, flowing robe. It provides insight and allows the
+D:wearer to see things not seen by all.
+
+
+# The Sling of the Thain
+
+N:131:of the Thain
+I:19:2:4
+W:40:20:40:35000
+P:0:0d0:15:15:0
+F:HIDE_TYPE | DEX | CON
+F:RES_NETHER | XTRA_SHOTS | XTRA_MIGHT | SHOW_MODS
+D:This sling was crafted by Faramir I, Thain of the Shire, just in case
+D:the nasties of his father's stories ever dare to enter the Shire again.
+
+
+# The Whip 'Lasher'
+
+N:134:'Lasher'
+I:21:2:3
+W:20:5:30:50000
+P:0:1d6:12:15:0
+F:DEX | BLOWS | HIDE_TYPE |
+F:SLAY_ANIMAL | SLAY_ORC | BRAND_POIS | VORPAL |
+F:RES_POIS | FREE_ACT | ESP_ORC
+D:A powerful whip that is deadly against orcs. It poisons your foes
+D:and is said to go "snicker snack".
+
+
+# The Seeker Arrow 'Bullseye'
+
+N:135:'Bullseye'
+I:17:2:0
+W:45:1:2:50000
+P:0:7d4:20:15:0
+F:SLAY_ANIMAL | SLAY_EVIL | SLAY_UNDEAD | KILL_DEMON |
+F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON |
+F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS
+D:A powerful arrow that is feared by even the mightiest demons.
+
+
+# The Rounded Pebble 'Travak'
+
+N:136:'Travak'
+I:16:0:0
+W:5:1:2:5000
+P:0:3d6:8:5:0
+F:BRAND_ACID | BRAND_ELEC | BRAND_FIRE | BRAND_COLD | BRAND_POIS
+D:A rounded pebble imbued with the powers of the elements.
+
+
+# The Harp of Maglor
+
+N:137:of Maglor
+I:14:59:3
+W:60:10:20:100000
+P:0:3d4:0:0:0
+F:CHR | SPEED | WIS | SEE_INVIS | RES_SOUND | STEALTH | LUCK
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | ESP_UNIQUE | WIELD_CAST
+D:This harp that once belonged to Maglor makes those who use it seem
+D:more forceful and convincing. It is also said that those who have
+D:used it found themselves walking faster, as if to an unheard beat.
+
+
+# The Drum of the Sky
+
+N:138:of the Sky
+I:14:58:2
+W:40:10:15:80000
+P:0:3d4:0:0:0
+F:CHR | SPEED | WIS | SEE_INVIS | RES_SOUND | STEALTH | LUCK
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | WIELD_CAST
+D:The drum is decorated with the images of the stars, the clouds, the
+D:Sun guided by Arien and the Moon with Tilion. It imparts to the
+D:wearer an echo of the beauty of the sky, and protects him from the
+D:elements day or night. The beat of the drum marks the passage of
+D:time, and will make time pass differently for the wearer.
+
+
+# The Harp of Daeron
+
+N:139:of Daeron
+I:14:59:1
+W:20:10:10:50000
+P:0:3d4:0:0:0
+F:CHR | SPEED | WIS | RES_SOUND | STEALTH | LUCK
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | WIELD_CAST
+D:A pretty harp that makes those who play it beautiful, wise and
+D:fast.
+
+
+# The Dwarven Pick of Erebor
+
+N:140:of Erebor
+I:20:6:5
+W:50:15:200:55000
+P:0:3d4:0:0:0
+F:STR | TUNNEL | SUST_STR | HIDE_TYPE | LITE1 | ACTIVATE | CLIMB
+F:RES_CHAOS | RES_LITE | RES_DARK
+a:HARDCORE=EREBOR
+D:A pick that provides a magical light by which to see while tunnelling.
+
+
+# The Drum of the Druedain
+
+N:141:of the Druedain
+I:14:58:4
+W:19:10:15:10000
+P:0:3d4:0:0:0
+F:ACTIVATE | STEALTH | SEARCH | INFRA | RES_POIS | RES_DARK | WIELD_CAST
+a:HARDCORE=DRUEDAIN
+D:The fabled Drum of the Druedain that will protect those who play it
+D:from darkness and poison attacks. It also aids in the seeing of
+D:warm-blooded creatures.
+
+
+# The Horn of Rohan
+
+N:142:of Rohan
+I:14:60:2
+W:14:10:15:80000
+P:0:3d4:0:0:0
+F:ACTIVATE | CHR | WIS | ESP_DRAGON | WIELD_CAST
+a:HARDCORE=ROHAN
+D:A horn carved from the bones of the Dragon of Ered-Mithrin, this
+D:heirloom of the House of Eorl bestows to its user the gifts of
+D:courage and command.
+
+
+# The Horn of Helm
+
+N:143:of Helm
+I:14:60:2
+W:16:10:15:15000
+P:0:3d4:0:0:0
+F:ACTIVATE | STR | CON | IM_COLD | RES_NETHER | RES_FEAR | WIELD_CAST
+a:HARDCORE=HELM
+D:Heedless of cold, fearless of darkness -- besiegers fled at the wind
+D:of the solitary coming of King Helm Hammerhand, proclaimed by a single
+D:horn-blast in the dead of winter.
+
+
+# The Horn of Boromir
+
+N:144:of Boromir
+I:14:60:3
+W:18:10:15:18000
+P:0:3d4:0:0:0
+F:ACTIVATE | STR | CON | RES_FEAR | RES_FIRE | AGGRAVATE | WIELD_CAST
+a:HARDCORE=BOROMIR
+D:Boromir's horn gives courage and endurance to the wearer, provided he does
+D:not wish to travel in secrecy: for it must always sound when its wielder
+D:sets forth on a journey. "Loud and clear it sounds in the valleys of the
+D:hills... and then let all the foes of Gondor flee!"
+
+
+# The Lochaber Axe of Gothmog, which slew Fingon
+
+N:145:of Gothmog
+I:22:28:-4
+W:30:8:250:30000
+P:0:3d8:14:19:0
+F:BRAND_FIRE | IM_FIRE | CHR | ACTIVATE | SHOW_MODS | CURSED | TY_CURSE
+a:HARDCORE=AXE_GOTHMOG
+D:The black axe of Gothmog, which struck Fingon at Nirnaeth. Mighty
+D:spells of evil make it unsafe in any hands but those of its original wielder.
+
+
+# The Seeker Arrow of Gondor
+
+N:146:of Gondor
+I:17:2:0
+W:20:5:3:25000
+P:0:10d8:10:20:0
+F:SLAY_EVIL | SLAY_DEMON
+D:An arrow that was created to rid the world of demons.
+
+
+# The Long Sword of Eternity
+# The ULTIMATE weapon for a warrior class
+
+N:147:of Eternity
+I:23:17:10
+W:127:220:130:9000000
+P:0:5d6:21:26:50
+F:LIFE | CON | CHR | LUCK
+F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR |
+F:BRAND_FIRE | BRAND_COLD | BRAND_ELEC | VORPAL | IM_COLD |
+F:SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON | SLAY_TROLL | SLAY_DEMON |
+F:FREE_ACT | RES_FIRE | RES_DARK | LITE1 | SEE_INVIS | SLOW_DIGEST | REGEN |
+F:ACTIVATE | SHOW_MODS | BLESSED |
+F:PRECOGNITION | NO_MAGIC | ULTIMATE | SPECIAL_GENE
+a:HARDCORE=ERU
+D:A warm light bathes this translucent blade. The power of the fates are
+D:at the command of its wielder as the weapon passes Supreme Judgment on
+D:the inhabitants of Angband.
+
+
+# The Robe of Great Luck
+
+N:148:of Great Luck
+I:36:2:60
+W:50:120:20:60000
+P:-30:0d0:0:0:-20
+F:LUCK | HIDE_TYPE |
+F:FREE_ACT | DRAIN_HP | DRAIN_MANA
+D:A powerful wizard once created this robe to grant him incredible luck....
+D:It seems he forgot to wear it.
+
+
+# The Sling of Farmer Maggot
+
+N:149:of Farmer Maggot
+I:19:2:2
+W:10:10:5:20000
+P:0:0d0:20:0:0
+F:INFRA | SEARCH | HIDE_TYPE |
+F:XTRA_SHOTS | SHOW_MODS | ACTIVATE | SPECIAL_GENE
+a:SPELL=Artifact Maggot
+D:This ordinary seeming leather sling has been raised to legendary
+D:status amongst generations of hobbit children. Farmer Maggot's
+D:ability to notice and strike any mushroom thief anywhere within
+D:his patch almost keeps young poachers at bay, but once they get
+D:within range they soon flee for less painful pastures, frequently
+D:with rounded pebbles stinging their backsides...
+
+
+# The Long Sword of Angmar (a.k.a. anti-Ringil)
+# The next time someone wields an unidentified Long Sword (4d5) ...
+
+N:150:of Angmar
+I:23:17:-10
+W:20:40:130:30000
+P:0:4d5:-22:-25:0
+F:SPEED | STR | WIS | CHR | ESP_UNDEAD
+F:BRAND_FIRE | SEE_INVIS | SLOW_DIGEST | FREE_ACT |
+F:VAMPIRIC | NO_TELE | AGGRAVATE | WRAITH | INVIS |
+F:CURSED | HEAVY_CURSE | DG_CURSE | SHOW_MODS | CLONE |
+D:Dark flames wreath the naked steel of the Witch-King of Angmar.
+D:A mighty curse to all those who wield it apart from its master,
+D:the torture of the wraithworld awaits those who dare.
+
+
+# The Seeker Bolt of Feanor
+
+N:151:of Feanor
+I:18:2:0
+W:127:220:130:100000
+P:0:5d5:5:6:0
+F:BRAND_COLD | BRAND_FIRE | BRAND_ELEC | BRAND_ACID | BRAND_POIS |
+F:SLAY_DRAGON | SLAY_GIANT | SLAY_TROLL | KILL_UNDEAD | SLAY_ORC |
+F:SLAY_DEMON | SLAY_EVIL | SPECIAL_GENE
+D:Made during the war against Morgoth by Feanor, this powerful
+D:bolt is the bane of Morgoth's power, and has especial strength
+D:against those foes who are already dead.
+
+
+# The Heavy Crossbow of Eternity
+# The ULTIMATE bow for an archer class
+
+N:152:of Eternity
+I:19:24:5
+W:127:220:130:8000000
+P:0:0d0:36:28:0
+F:SEE_INVIS | SLOW_DIGEST | FREE_ACT | SPEED | DEX | CON | FLY | LUCK
+F:XTRA_MIGHT | XTRA_SHOTS | IM_ELEC | REFLECT | INVIS | STEALTH |
+F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR |
+F:RES_CHAOS | RES_DISEN | RES_CONF | RES_BLIND | INFRA | ESP_ORC | ESP_TROLL | ESP_EVIL |
+F:PRECOGNITION | NO_MAGIC | ULTIMATE | SPECIAL_GENE
+D:Designed to be used with the Seeker Bolt of Feanor, this Crossbow
+D:is perfect against the terrible powers of Morgoth.
+
+
+# The Soft Leather Armour of the Sandworm
+
+N:153:of the Sandworm
+I:36:4:5
+W:30:3:80:65000
+P:30:0d0:0:0:0
+F:RES_POIS | RES_ELEC | RES_FIRE | RES_ACID | SPECIAL_GENE
+F:TUNNEL | STR | STEALTH | INFRA | ESP_ANIMAL
+D:This powerful piece of armour was made using the remains of
+D:the Sandworm Queen.
+
+
+# The Lochaber Axe 'Dragonbane'
+
+N:154:'Dragonbane'
+I:22:28:2
+W:70:20:260:33000
+P:0:3d8:20:20:0
+F:BLOWS | KILL_DRAGON | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:RES_POIS | SHOW_MODS
+D:Forged by the Dwarves to defend their home of Khazad-dum from dragons,
+D:this axe has been lost to time... until now.
+
+
+# The Light War Axe 'Limbslicer'
+
+N:155:'Limbslicer'
+I:24:8:4
+W:15:3:140:12000
+P:0:2d5:12:15:0
+F:DEX | VORPAL | HIDE_TYPE | SHOW_MODS | WOUNDING
+D:The Petty-dwarves of Bathak forged this blade, and it shares their thirst
+D:for blood.
+
+
+# The Broad Axe 'Orchast'
+
+N:156:'Orchast'
+I:24:11:4
+W:15:2:170:12000
+P:0:2d7:20:14:0
+F:DEX | SEARCH | SLAY_ORC | ACTIVATE | HIDE_TYPE | SHOW_MODS
+F:COULD2H
+f:COULD2H
+a:HARDCORE=ORCHAST
+D:Forged by the dwarves of Khazad-dum in a time of desperation,
+D:this axe turned many a battle against the invading orcs.
+
+
+# The Hatchet of the Night
+
+N:157:of the Night
+I:24:1:4
+W:45:20:45:34000
+P:0:2d6:34:22:0
+F:DEX | STEALTH | VAMPIRIC | KILL_UNDEAD | RES_DARK | HIDE_TYPE |
+F:SHOW_MODS | SEE_INVIS | ACTIVATE | DRAIN_EXP
+a:HARDCORE=NIGHT
+D:Found on an unmarked grave after a violent storm, this hatchet
+D:has a sinister aura of darkness and decay.
+
+
+# The Slaughter Axe 'Naturebane'
+
+N:158:'Naturebane'
+I:24:30:3
+W:70:20:300:28400
+P:0:5d7:31:27:0
+F:STR | SLAY_ANIMAL | SUST_STR | RES_SHARDS | RES_NEXUS | FEATHER |
+F:HIDE_TYPE | SHOW_MODS | ACTIVATE | DRAIN_HP
+a:HARDCORE=NATUREBANE
+D:Used by the orcs in their battle at Dagor Bragollach against the elves, this
+D:axe has a bloodthirst for nature.
+
+
+# The Light War Axe of Ice
+
+N:159:of Ice
+I:24:8:3
+W:30:25:140:26550
+P:0:2d5:3:15:0
+F:INT | CHR | SUST_DEX | BRAND_COLD | IM_COLD | RES_NEXUS | HIDE_TYPE |
+F:SHOW_MODS
+D:Crafted of purest ice and held solid by powerful spells, this icy axe
+D:delivers a chill of death to its victims.
+
+
+# The Iron Helm of Knowledge
+
+N:160:of Knowledge
+I:32:5:-6
+W:20:5:75:100000
+P:6:1d3:0:0:20
+F:LITE1 | HIDE_TYPE | SPECIAL_GENE | LUCK
+F:AUTO_ID | ACTIVATE
+a:HARDCORE=KNOWLEDGE
+D:This helm, designed by Petty-Dwarves ages ago to act as the brain of a
+D:long lost project, is made of finest glass. Its light banishes all secrets,
+D:and makes audible whispers from the deceased.
+
+
+### Trapping Kits ###
+
+### note prices and rarities may have to be adjusted ###
+
+# The Catapult Trap Set of Ahromarwar
+
+N:161:of Ahromarwar
+I:46:1:3
+W:20:10:40:20000
+P:0:0d0:25:15:30
+F:STEALTH | AUTOMATIC_99 | XTRA_MIGHT | HIDE_TYPE
+D:A trap that can almost never be detected. Its missiles may be mere pebbles,
+D:but fired at an incredibly high velocity to penetrate even the toughest
+D:hide or armour.
+
+
+# The Device Trap Set 'Hanisbroner's Surprise'
+
+N:162:'Hanisbroner's Surprise'
+I:46:6:3
+W:20:20:40:20000
+P:0:0d0:0:0:25
+F:STEALTH | XTRA_SHOTS | TELEPORT_TO | HIDE_TYPE | AUTOMATIC_99
+D:A magical trap, armed with a wand. Unaccountably, its victims keep
+D:on coming back for more...
+
+
+# The Bolt Trap Set 'Merlion Karc's Demonbane'
+
+N:163:'Merlion Karc's Demonbane'
+I:46:3:2
+W:20:20:200:20000
+P:0:0d0:17:27:37
+F:STEALTH | XTRA_SHOTS | XTRA_MIGHT | HIDE_TYPE | ONLY_DEMON
+D:A snare set not for animals, or people, but for demons alone, and
+D:enchanted so that whenever the demon sets foot or claw into the
+D:(hidden) pentagram, its hide is immediately pierced by many magical
+D:crossbow bolts.
+
+
+# The Broken Sword 'Narsil'
+
+N:164:'Narsil'
+I:23:2:2
+W:20:5:30:2000
+P:0:3d2:6:10:0
+F:STR | DEX | HIDE_TYPE | BLESSED |
+F:SLAY_ORC | SLAY_TROLL | RES_FIRE
+D:The sword that was broken shall be reforged...
+
+
+# The Steel Helm 'Lebohaum'
+# The name comes from a french parody of dungeon dwelling in mp3
+# http://penofchaos.com/warham.htm
+
+N:165:'Lebohaum'
+I:32:6:0
+W:20:15:15:25000
+P:20:0d0:0:0:80
+F:ACTIVATE
+a:SPELL=Artifact Lebauhaum
+D:With the Helm 'Lebohaum' your head is safe!
+
+
+# The Power Dragon Scale Mail 'Mediator'
+
+N:166:'Mediator'
+I:38:30:0
+W:95:12:500:400000
+P:50:2d4:-8:0:35
+F:FEATHER | FLY | ESP_DRAGON |
+F:RES_NEXUS | RES_CHAOS | AGGRAVATE | REGEN |
+F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_CONF |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |
+F:ACTIVATE
+a:HARDCORE=MEDIATOR
+D:A mighty suit of dragon armour, set with the scales of dragons of both
+D:Law and Chaos, and with power over both.
+
+
+# The Hard Leather Armour of Himring
+
+N:167:of Himring
+I:36:6:0
+W:50:20:100:35000
+P:6:0d0:0:0:15
+F:RES_CHAOS | RES_NETHER | RES_POIS | ACTIVATE
+a:HARDCORE=PROT_EVIL
+D:Contained within this studded cuirass of pliable leather is the memory of
+D:unvanquished Himring, defiant fortress surrounded by the legions of Morgoth.
+
+
+# The Soft Leather Armour 'Hithlomir'
+
+N:168:'Hithlomir'
+I:36:4:4
+W:20:3:80:45000
+P:4:0d0:0:0:20
+F:STEALTH | HIDE_TYPE | SEARCH |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_DARK
+D:Familiar with the secret ways hidden in darkness, this leather cuirass is
+D:truly more than it appears.
+
+
+# The Shield of Deflection of Gil-galad
+# Description from Sangband
+
+N:169:of Gil-galad
+I:34:10:5
+W:70:4:80:65000
+P:10:1d3:0:0:20
+F:ACTIVATE |
+F:LITE1 | WIS | CHR | SEARCH | LUCK
+F:RES_ELEC | RES_ACID | RES_DISEN | RES_DARK | HIDE_TYPE |
+F:SUST_WIS | SUST_DEX | SUST_CHR
+a:HARDCORE=GILGALAD
+D:The legendary shield of Gil-Galad, who fought his way to the gates of
+D:the Dark Tower, and with whom came light even to Gorgoroth.
+
+
+# The Metal Cap of Celebrimbor
+
+N:170:of Celebrimbor
+I:32:3:3
+W:55:12:20:45000
+P:3:1d1:0:0:18
+F:INT | DEX | CHR | SPELL | SEARCH |
+F:RES_FIRE | RES_ACID | RES_DISEN | RES_SHARDS |
+F:ACTIVATE
+a:HARDCORE=CELEBRIMBOR
+D:This once belonged to Celebrimbor, maker of the Rings of Power. One who
+D:knows both fire and acid, from the business of forging and engraving, will
+D:fear neither: nor have his enchantments ever faded. Celebrimbor was even
+D:aware of Sauron before Sauron became aware of him, when Sauron put on the
+D:One Ring for the first time.
+
+
+# The Heavy Crossbow of Umbar
+
+N:171:of Umbar
+I:19:24:2
+W:60:20:200:35000
+P:0:4d1:18:18:0
+F:STR | CON | XTRA_MIGHT | AGGRAVATE |
+F:RES_LITE | RES_DARK | RES_BLIND | RES_ELEC |
+F:HIDE_TYPE | ACTIVATE | SHOW_MODS
+a:HARDCORE=UMBAR
+D:A great brazen arbalest with arms of gleaming steel, shooting quarrels with
+D:speed and power for those brave enough to risk betrayal.
+
+
+# The Short Bows of Amrod and Amras, Feanor's twin sons
+# The Short Bow of Amrod
+
+N:172:of Amrod
+I:19:12:2
+W:25:10:30:9000
+P:0:0d0:12:15:0
+F:STR | CON | XTRA_MIGHT |
+F:RES_FIRE | RES_ELEC | RES_COLD | REGEN
+D:This bow, and its twin, belonged to Feanor's last two twin sons, Amrod
+D:and Amras, who both hunted with the Green-elves for a time. Like the
+D:twins, the bows are similar, for both protect their wielders from the
+D:elements: and yet they are also unlike, for this bow gives endurance
+D:and strength, while the other gives quickness and subtlety.
+
+
+# The Short Bow of Amras
+
+N:173:of Amras
+I:19:12:1
+W:25:10:30:9000
+P:0:0d0:12:15:0
+F:INT | WIS | DEX | XTRA_SHOTS | XTRA_MIGHT | SPEED |
+F:RES_FIRE | RES_ELEC | RES_COLD | SLOW_DIGEST
+D:This bow, and its twin, belonged to Feanor's last two twin sons, Amrod
+D:and Amras, who both hunted with the Green-elves for a time. Like the
+D:twins, the bows are similar, for both protect their wielders from the
+D:elements: and yet they are also unlike, for this bow gives quickness
+D:and subtlety, while the other gives endurance and strength.
+
+
+# The Mattock of Nain
+
+N:174:of Nain
+I:20:7:6
+W:60:5:250:30000
+P:0:3d8:12:18:0
+F:TUNNEL | INFRA | SEARCH | STR | ESP_ORC | CLIMB |
+F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT | SLAY_DRAGON |
+F:BRAND_ACID | RES_ACID | RES_DARK | RES_DISEN |
+F:ACTIVATE
+a:HARDCORE=STONE_MUD
+D:Wielded by Nain of the Iron Hills at the Battle of Azanulbizar, this great
+D:mattock brought victory to the Dwarves over Azog's Orcs - though Nain
+D:himself fell at the last, even with victory already assured.
+
+
+# The Ball-and-Chain of Fundin Bluecloak
+
+N:175:of Fundin Bluecloak
+I:21:6:4
+W:25:100:130:60000
+P:0:5d4:13:17:10
+F:STR | WIS | SPEED | LITE1 | HIDE_TYPE |
+F:SLAY_EVIL | SLAY_UNDEAD |
+F:RES_FIRE | RES_ELEC | RES_NETHER | RES_DISEN | HOLD_LIFE |
+F:ACTIVATE
+F:COULD2H
+f:COULD2H
+a:HARDCORE=FUNDIN
+D:The weapon of one of the great dwarven priests, with powers
+D:to preserve body, soul and enchantments, and the bane of those
+D:who seek life beyond death.
+
+
+# The Large Leather Shield of the Haradrim
+
+N:176:of the Haradrim
+I:34:4:2
+W:35:12:120:25000
+P:4:1d2:0:0:15
+F:ACTIVATE |
+F:STR | CON | SUST_STR | SUST_CON | HIDE_TYPE |
+F:RES_FEAR | RES_BLIND | RES_POIS | AGGRAVATE
+a:HARDCORE=HARADRIM
+D:A great shield from the far lands of the South, whose wielder
+D:will go charging into battle heedless of danger, with the
+D:strength and endurance of a madman. Nor will he fear poison, for
+D:the Southron barbarians handle poisoned darts naturally.
+
+
+# The Lead-Filled Mace 'Skullcleaver'
+
+N:177:'Skullcleaver'
+I:21:15:5
+W:30:15:500:60000
+P:0:5d4:11:23:20
+F:STR | TUNNEL | INFRA | HIDE_TYPE |
+F:CURSED | AGGRAVATE | NO_MAGIC |
+F:RES_NEXUS | RES_BLIND | RES_SOUND |
+F:KILL_DRAGON | SLAY_ANIMAL | BRAND_POIS | BRAND_ELEC |
+F:ACTIVATE
+F:COULD2H
+f:COULD2H
+a:HARDCORE=SKULLCLEAVER
+D:This mighty bludgeon brings destruction to all around it, and is the
+D:bane of dragons and magic.
+
+
+# The Set of Gauntlets of Eol
+
+N:178:of Eol
+I:31:2:3
+W:55:35:25:40000
+P:3:1d1:0:0:15
+F:INT | MANA | FREE_ACT | FEATHER | RES_ELEC | RES_DARK | RES_POIS | ACTIVATE
+F:LUCK | SPELL_CONTAIN | WIELD_CAST
+a:HARDCORE=EOL
+D:The iron-shod gauntlets of the Dark Elven smith Eol, tingling with magics
+D:that he could channel in battle.
+
+
+# The Pair of Hard Leather Boots of Nevrast
+
+N:179:of Nevrast
+I:30:3:3
+W:20:8:40:35000
+P:3:1d1:0:0:13
+F:STEALTH | CON | SPEED | HIDE_TYPE
+D:Footgear made of bear leather and set with opals, which grant the wearer
+D:silent, hasted movement.
+
+
+# The Pair of Metal Shod Boots of Gimli
+
+N:180:of Gimli
+I:30:6:4
+W:40:8:60:22500
+P:4:1d1:5:5:10
+F:INFRA | SEARCH | TUNNEL | CLIMB | HIDE_TYPE
+Z:magic map
+D:A set of iron-shod boots stamped by Gimli's combat prowess, a peerless
+D:ally to those journeying through halls of stone under mountains.
+
+
+# The demon garbs of Gothmog
+# The Demonblade of Gothmog
+
+N:181:of Gothmog
+I:115:55:-20
+W:10:0:150:500
+P:0:7d6:13:13:0
+F:SHOW_MODS | SLAY_DEMON | SLAY_EVIL | BRAND_FIRE | BRAND_POIS
+F:LUCK | CHAOTIC | LITE1 | WOUNDING | RES_MORGUL | WIELD_CAST
+F:HEAVY_CURSE | AUTO_CURSE
+
+
+# The Demonshield of Gothmog
+
+N:182:of Gothmog
+I:115:56:4
+W:15:0:70:500
+P:13:1d1:0:0:13
+F:DEX | INVIS | SUST_STR | SUST_CON | SUST_DEX
+F:FEATHER | SH_FIRE | FREE_ACT | HOLD_LIFE
+F:HEAVY_CURSE | AUTO_CURSE | WIELD_CAST
+
+
+# The Demonhorn of Gothmog
+
+N:183:of Gothmog
+I:115:57:-5
+W:20:0:30:500
+P:2:1d1:0:0:13
+F:LITE2 | REGEN | ESP_DEMON
+F:CHR | SLOW_DIGEST | SEE_INVIS
+F:HEAVY_CURSE | AUTO_CURSE | WIELD_CAST
+
+
+# The Long Sword 'Durandil'
+# The name comes from a french parody of dungeon dwelling in mp3
+# http://penofchaos.com/warham.htm
+N:184:'Durandil'
+I:23:17:3
+W:5:10:130:500
+P:0:2d5:5:6:0
+F:RES_FEAR | LUCK
+F:ACTIVATE | SHOW_MODS
+a:SPELL=Artifact Durandil
+D:Don't go adventuring without your Durandil sword!
+
+
+# The Phial of Undeath
+
+N:200:of Undeath
+I:39:103:-5
+W:20:10:10:0
+P:0:1d1:0:0:0
+F:CURSED | INT | WIS | CON | DEX | CHR | STR | ACTIVATE |
+F:LITE3 | LITE2 | LUCK | MAGIC_BREATH
+F:INSTA_ART | DG_CURSE | ESP_UNDEAD |
+a:HARDCORE=UNDEATH
+D:It appears like the Phial of Galadriel at first - but wait! It
+D:is a cursed phial created by an evil wizard to lure adventurers
+D:into wielding it unknowingly.
+
+
+# The template for artifacts corpses
+
+N:201:
+I:9:1:0
+W:200:1:10:0
+P:0:1d1:0:0:0
+F:INSTA_ART | SPECIAL_GENE
+
+
+# The Palantir of Orthanc
+
+N:202:of Orthanc
+I:39:104:2
+W:75:60:200:100000
+P:0:10d10:0:0:0
+F:WIS | INT | SEARCH | INFRA | HIDE_TYPE | ACTIVATE | ESP_ALL |
+F:SEE_INVIS | RES_BLIND | AGGRAVATE | DRAIN_MANA | LITE2
+F:INSTA_ART
+a:HARDCORE=PALANTIR
+D:A shining white ball of unbreakable crystal, the ancient Palantiri
+D:were used by kings of Numenor and later by the Exiles for rapid
+D:communication between distant lands. Nothing is hidden from one who
+D:gazes into a Palantir, but the observed will also be aware of the
+D:observer, as was Sauron when Saruman tried to spy on him with this
+D:particular Palantir.
+
+
+# The Ring of Phasing
+
+N:203:of Phasing
+I:45:55:15
+W:110:0:2:3000000
+P:0:1d1:0:0:0
+F:SPEED | SEE_INVIS | LUCK | MAGIC_BREATH
+F:CURSED | HEAVY_CURSE | REGEN
+F:WRAITH | IM_NETHER | DRAIN_EXP | HOLD_LIFE | SPECIAL_GENE |
+F:INSTA_ART
+Z:teleport
+D:Imbued with the screams of the victims of undead everywhere, this
+D:ring is more a hole in reality than anything else. Strange forces ripple over
+D:its surface, giving you visions of a reality considerably less solid than this
+D:one. You feel your senses reel, and must make a conscious effort not to throw
+D:this ring as far from you as possible.
+
+
+# The Blue Stone 'Toris Mejistos'
+
+N:204:'Toris Mejistos'
+I:40:18:2
+W:50:10:3:60000
+Z:restore life
+F:INT | WIS | HIDE_TYPE | MANA | LUCK
+F:SUST_INT | SUST_WIS | LITE1 | REGEN
+F:SLOW_DIGEST | AUTO_CURSE | HEAVY_CURSE
+F:ESP_GOOD | ESP_EVIL | HOLD_LIFE
+F:INSTA_ART | SPECIAL_GENE | WATER_BREATH
+F:SPELL_CONTAIN | WIELD_CAST
+D:A blue stone, with an incredible number of incredibly small runes of power
+D:on it. It carries many secrets.
+
+
+# The Ring of Durin - last of the Seven Rings of the Dwarf-lords
+
+N:205:of Durin
+I:45:57:2
+W:70:70:2:65000
+F:CON | CHR | STR | SUST_CHR | SUST_CON | SUST_STR | HIDE_TYPE |
+F:ESP_EVIL | AGGRAVATE | HEAVY_CURSE | HOLD_LIFE | DRAIN_EXP |
+F:RES_DARK | RES_CHAOS | RES_NETHER | RES_COLD | RES_ACID |
+F:INSTA_ART | SPECIAL_GENE | CURSED
+Z:Midas touch
+D:The greatest of the Seven Rings of the Dwarf-lords, and the last to be
+D:lost. Alone among the Seven, it was not taken by Sauron when he made
+D:war on the Elves, but was given as a gift from Celebrimbor to King Durin
+D:III of Moria in token of friendship: nevertheless, Sauron in disguise
+D:had a hand in its making, and so it is cursed, and draws evil towards it.
+
+
+# The Elfstone 'Elessar'
+
+N:206:'Elessar'
+I:40:19:4
+W:60:60:3:40000
+P:0:0d0:7:7:10
+F:STR | WIS | CHR | SPEED | LITE3 | INSTA_ART |
+F:RES_FEAR | RES_FIRE | RES_POIS | RES_DISEN | HIDE_TYPE |
+F:ACTIVATE
+a:HARDCORE=ELESSAR
+D:This green gem glows with inner light. Aragorn son of Arathorn wore
+D:it at the Battle of the Pelennor Fields, and he was himself given the
+D:name of 'Elessar' by the people of Gondor because of this.
+
+
+# The Jewel 'Evenstar'
+
+N:207:'Evenstar'
+I:40:20:3
+W:50:50:3:35000
+F:HOLD_LIFE | SUST_CON | SUST_WIS | SUST_INT | LITE1 | CON |
+F:RES_DARK | RES_COLD | RES_NETHER | REGEN | INSTA_ART |
+F:ACTIVATE
+a:HARDCORE=REST_ALL
+D:A pure white jewel, the last gift of Queen Arwen Undomiel to Frodo
+D:Baggins, intended to be worn around his neck on the chain that had
+D:once borne the One Ring.
+
+
+# The Palantir of Minas Ithil (be warned - it's *cursed*!)
+
+N:208:of Minas Ithil
+I:39:107:-3
+W:75:60:200:0
+P:0:10d10:0:0:-30
+F:LIFE | CON | INT | WIS | ESP_ALL | LITE3 | LITE1
+F:CURSED | HEAVY_CURSE | TY_CURSE | DRAIN_EXP |
+F:RES_BLIND | SEE_INVIS | ACTIVATE
+a:HARDCORE=PALANTIR
+D:A shining white ball of unbreakable crystal, the ancient Palantiri
+D:were used by kings of Numenor and later by the Exiles for rapid
+D:communication between distant lands. This Palantir, however, was
+D:taken by Sauron long ago, and mastered to his evil uses, to the
+D:destruction of all others who would gaze into it.
+
+
+# some artifact bolts
+# The Silver Bolt 'Balefire'
+
+N:209:'Balefire'
+I:18:3:0
+W:55:30:2:50000
+P:0:6d5:20:15:0
+F:ESP_DEMON | ESP_UNDEAD | LITE1 |
+F:BRAND_FIRE | KILL_DEMON | KILL_UNDEAD |
+D:This silver-tipped bolt, ablaze with undying celestial fire,
+D:is especially potent against undead and creatures of the
+D:netherworld; it even points the way to places where such
+D:enemies lurk.
+
+
+# The Silver Bolt 'Stone-biter'
+
+N:210:'Stone-biter'
+I:18:3:3
+W:55:30:2:50000
+P:0:6d5:20:15:0
+F:ESP_ORC | ESP_TROLL |
+F:INFRA | SEARCH | TUNNEL | LUCK
+F:BRAND_ACID | SLAY_ORC | SLAY_TROLL |
+D:Wherever it strikes, this silver-tipped bolt eats through rock
+D:and metal as easily as through flesh. The dwarf-smith who
+D:crafted Stone-biter also inscribed the shaft with powerful
+D:doom-spells against the orcs and trolls who had destroyed his
+D:ancestral home.
+
+
+# The Seeker Bolt 'Heart's Blood'
+
+N:211:'Heart's Blood'
+I:18:2:5
+W:85:40:3:35000
+P:0:8d5:15:20:0
+F:VORPAL | WOUNDING | CRIT |
+D:The barbed head of this bolt glows deep red with terrible runes
+D:of destruction; legend has it that Heart's Blood cannot hit its
+D:mark without causing a mortal wound.
+
+
+# The Seeker Bolt 'Scale-piercer'
+
+N:212:'Scale-piercer'
+I:18:2:0
+W:85:40:3:35000
+P:0:8d5:15:20:0
+F:ESP_DRAGON | RES_FEAR |
+F:KILL_DRAGON |
+D:This bolt, crafted from the bones of a Great Wyrm, is less famous
+D:and less powerful than Bard's black arrow. Nonetheless it enables
+D:the owner to find dragons unerringly, face them bravely, and kill
+D:them swiftly.
+
+
+# Artifacts from ToME 3.0.0 for the new maps of Lord Dimwit
+# The pval was set to the average of the flag values.
+
+
+# The Mage Staff of Forochel
+
+N:213:of Forochel
+I:6:1:3
+W:65:70:60:60000
+P:0:3d4:-12:-8:0
+F:INT | WIS | MANA | SPELL | INFRA | SEE_INVIS
+F:SUST_INT | SUST_WIS | RES_BLIND | IM_COLD | SENS_FIRE
+F:SPECIAL_GENE | WIELD_CAST
+F:COULD2H
+f:COULD2H
+D:A shaft of pure, invincible crystal cut from the heart of one
+D:of the great glaciers ringing the Ice-Bay of Forochel.
+D:While you hold it, your mind feels as clear as the winter sky.
+
+
+# The Elven Cloak of Mellyrn
+
+N:214:of Mellyrn
+I:35:2:4
+W:40:40:5:65000
+P:4:0d0:0:0:20
+F:HIDE_TYPE | INVIS | DEX | SPEED | STEALTH | LUCK
+F:SUST_DEX | RES_LITE | RES_DARK | SPECIAL_GENE
+D:Bearing the same lyrical name as the great trees of Lothlorien
+D:and containing in its close-woven folds the speed and skill of
+D:the Galadrim, this grey cloak is ideal for those who travel in
+D:forests.
+
+
+# The Bluesteel Blade of Ephel Duath
+
+N:215:of Ephel Duath
+I:23:31:-3
+W:60:60:50:30000
+P:0:2d6:-20:-18:0
+F:STR | WIS | CHR | BRAND_POIS | VAMPIRIC | VORPAL
+F:INVIS | AGGRAVATE | CURSED | HEAVY_CURSE | SHOW_MODS
+F:SPECIAL_GENE
+D:This filthy orc-blade is famed for vile deeds of torture and blood,
+D:and its wielder will never cease to fear treachery.
+
+
+# The Slaughter Axe 'Garachoth'
+
+N:216:'Garachoth'
+I:24:30:2
+W:70:300:400:91000
+P:0:7d5:18:18:-20
+F:STR | CON | SPEED | LEVELS | BLACK_BREATH
+F:KILL_DEMON | SLAY_ANIMAL | BRAND_FIRE | VORPAL
+F:RES_FEAR | RES_FIRE | RES_CHAOS | RES_NETHER
+F:HIDE_TYPE | SHOW_MODS | SPECIAL_GENE
+D:A ghastly axe with the soul of a demon lord trapped inside, this horrifying
+D:creation reverberates with the screams of the damned. As you gaze into its
+D:glassy, translucent blade, it seems that endless sulphrous wastelands
+D:stretch away from you into the distance, obscured by sheets of fire.
+
+
+# The Set of Cesti 'Skycleaver'
+
+N:217:'Skycleaver'
+I:31:5:1
+W:40:45:40:100000
+P:5:1d1:16:7:16
+F:STR | CON | DEX | CHR | LUCK | FLY
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS
+F:HIDE_TYPE | SHOW_MODS | SPECIAL_GENE
+D:The handgear of a legendary dragonslaying hero. The wearer of these
+D:wyrmskin gauntlets will be versed in all aerial ways, and will fear no
+D:dragon that walks or flies.
+
+
+# The Pair of Metal Shod Boots of the Machine
+# Replaced the stealth malus with AGGRAVATE
+
+N:218:of the Machine
+I:30:6:3
+W:30:100:170:19000
+P:6:1d1:0:0:24
+F:INT | SPEED | TUNNEL | AGGRAVATE
+F:RES_CHAOS | RES_SHARDS | RES_CONF
+F:ESP_NONLIVING | HIDE_TYPE | SPECIAL_GENE
+D:A massive pair of adamantine boots studded with gold, the final and
+D:greatest product of the petty-dwarven magical forge. Despite
+D:the great powers they contain, they are heavy and awkward enough to
+D:make quite a racket whenever you move.
diff --git a/lib/edit/ab_info.txt b/lib/edit/ab_info.txt
new file mode 100644
index 00000000..7b9aa152
--- /dev/null
+++ b/lib/edit/ab_info.txt
@@ -0,0 +1,118 @@
+# File: ab_info.txt
+
+
+# This file is used to initialize the "lib/data/ab_info.raw" file, which is
+# used to initialize the "abilities" information for the ToME game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# The ToME abilities indexes are defined in "defines.h", and must not be changed.
+# If you want to add new ones, add them after the tome ones
+
+# N:idx:name
+# D:desc
+# I:cost(in skill points)
+# A:action mkey:action desc
+
+# Prerequisites
+# k:level:skill
+# S:level(linear mode):stats
+# a:needed ability
+
+# E:excluding ability:excluding ability
+
+# If you need more sophisticated prereqs use the HOOK_LEARN_ABILITY
+
+# Version stamp (required)
+
+# Do not forget to update misc.txt with an entry like the following :
+# Maximum number of traits in ab_info.txt
+# M:b:50
+
+V:2.2.0
+
+N:0:Spread blows
+D:If a monster dies to your attack but you still have blows left
+D:you won't lose the full turn, allowing you to attack some other
+D:monster in the same turn
+D:Prereq: Weaponmastery skill@30, Dex@17
+I:5
+k:30:Weaponmastery
+S:17:DEX
+
+N:1:Tree walking
+D:Allows you to walk in dense forest
+D:Prereq: Nature skill@20
+I:7
+k:20:Nature
+
+N:2:Perfect casting
+D:Allows you to reach 0% failure rate on spells
+D:Prereq: Magic skill@35
+I:6
+k:35:Magic
+
+N:3:Extra Max Blow(1)
+D:Increases your max possible blows number by 1
+D:Prereq: Combat@10
+I:7
+k:10:Combat
+
+N:4:Extra Max Blow(2)
+D:Increases your max possible blows number by 1
+D:Prereq: Combat@20, Extra Max Blow(1)
+I:7
+k:20:Combat
+a:Extra Max Blow(1)
+
+N:5:Ammo creation
+D:Allows you to create shots, arrows and bolts from various materials
+D:Prereq: Archery@10
+A:10:Forge ammo
+I:8
+k:10:Archery
+
+N:6:Touch of death
+D:Your melee blows can insta-kill, but you only receive 1/3 of the experience
+D:Prereq: Necromancy@50, Combat@40, DEX@30, STR@30
+A:100:Activate touch of death
+I:15
+k:50:Necromancy
+k:40:Combat
+S:30:DEX
+S:30:STR
+
+N:7:Artifact Creation
+D:In combination with a high alchemy skill this ability will let you
+D:design your very own artifacts
+D:Prereq: Alchemy@40, INT@35, WIS@35
+I:70
+k:40:Alchemy
+S:35:INT
+S:35:WIS
+
+N:8:Far reaching attack
+D:You can attack an enemy one square far using a long polearm.
+D:At high levels of Polearm-mastery skill, you can even hit two enemies at once.
+D:Prereq: Combat@15, Polearm-mastery@15
+I:10
+A:102:Far reaching attack
+k:15:Combat
+k:15:Polearm-mastery
+
+N:9:Trapping
+D:Ability to set monster traps
+D:Prereq: Disarming@15
+I:10
+A:14:Set trap
+k:15:Disarming
+
+N:10:Undead Form
+D:Ability to turn into a weak undead being when you "die".
+D:You must then kill enough monsters to absorb enough life energy
+D:to come back to life.
+D:Prereq: Necromancy@30, INT@25
+I:15
+k:30:Necromancy
+S:25:INT
diff --git a/lib/edit/al_info.txt b/lib/edit/al_info.txt
new file mode 100644
index 00000000..fbd4c9a0
--- /dev/null
+++ b/lib/edit/al_info.txt
@@ -0,0 +1,2097 @@
+# File: al_info.txt
+
+
+# This file is used to initialize the "lib/raw/al_info.raw" file, which is
+# used as the alchemist recipes in ToME
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes.
+
+# Version stamp (required)
+
+V:2.0.0
+
+
+#Note: when you add anything to this file, you also need to change the M:a
+#line of misc.txt. Unlike other files, there is no 'count' entry. The
+#easiest and fastest way to find out what to say in misc.txt is:
+#
+# grep '^[Ia]:' <al.txt | wc -l
+# you need to add one to the result of the above statement.
+#
+# Which only works on unix systems. But if you have the misfortune not to
+#be working on a unix system, you can use an editor and to a global search
+#and replace, searching for I: and then for a:, which will give you a count
+#that's a few high, but will still work.
+
+
+#Format: There's only one kind of line here, and that's the
+# Item line. Goes like this:
+
+
+# I:tval:sval:Qty:essence
+#
+# The problem here is that it doesn't matter what order things are in.
+# Since the tval and sval are specified on each line, the lines that
+# describe a particular recipe for a particular item don't have to be
+# anywhere even close to each other in the file. This could cause a problem:
+# if the same item has two different entries for the same essence, it will
+# find one, assume that the player has enough, and display that one in green.
+# But when the player goes to make it, they may not have enough. It would also
+# cause weird recipe displays, with one essence listed twice. Funny-looking
+
+
+
+# Some special tvals:
+# 0 Not a tval, used internally by the parser to store the artifact flag essences.
+# We don't currently have any mechanism to control which tvals flags are used on.
+# 1 Not actually a tval, used for ego items, in which case the 'sval' is the e_idx
+# We don't need tvals or svals for ego items, because that information is
+# contained in the e_info record, which the e_idx points us to.
+#
+# 40 Amulet
+# 45 ring
+# 55 staff
+# 65 wand
+# 66 rod tip
+# 70 scroll
+# 71 potion
+# 40 Amulet
+# 45 ring
+# 55 staff
+# 65 wand
+# 66 rod tip
+# 70 scroll
+# 71 potion
+# 72 potion2
+# 80 Food ('shrooms, etc)
+
+# I:tval:sval:Qty:essence
+
+#**********************Mushrooms***********************
+
+#SV_FOOD_POISON 0
+I:80:0:1:LIFE
+I:80:0:8:POISON
+
+#SV_FOOD_BLINDNESS 1
+I:80:1:1:LIFE
+I:80:1:6:DARKNESS
+I:80:1:2:LITE
+
+#SV_FOOD_PARANOIA 2
+I:80:2:1:LIFE
+I:80:2:4:KNOWLEDGE
+I:80:2:4:CONFUSION
+
+#SV_FOOD_CONFUSION 3
+I:80:3:1:LIFE
+I:80:3:8:CONFUSION
+
+#SV_FOOD_HALLUCINATION 4
+I:80:4:1:LIFE
+I:80:4:4:CONFUSION
+I:80:4:4:MANA
+I:80:4:4:TELEPORT
+
+#SV_FOOD_PARALYSIS 5
+I:80:5:1:LIFE
+I:80:5:8:FORCE
+
+#SV_FOOD_WEAKNESS 6
+I:80:6:1:LIFE
+I:80:6:4:POISON
+I:80:6:4:FORCE
+
+#SV_FOOD_SICKNESS 7
+I:80:7:8:LIFE
+I:80:7:1:POISON
+
+#SV_FOOD_STUPIDITY 8
+I:80:8:1:LIFE
+I:80:8:1:MANA
+I:80:8:8:KNOWLEDGE
+
+#SV_FOOD_NAIVETY 9
+I:80:9:1:LIFE
+I:80:9:1:MANA
+I:80:9:4:CONFUSION
+I:80:9:4:KNOWLEDGE
+
+#SV_FOOD_UNHEALTH 10
+I:80:10:8:LIFE
+I:80:10:1:FORCE
+I:80:10:1:POISON
+
+#SV_FOOD_DISEASE 11
+I:80:11:1:LIFE
+I:80:11:1:TIME
+I:80:11:8:POISON
+
+#SV_FOOD_CURE_POISON 12
+I:80:12:1:LIFE
+I:80:12:8:POISON
+
+#SV_FOOD_CURE_BLINDNESS 13
+I:80:13:1:LIFE
+I:80:13:6:LITE
+I:80:13:2:DARKNESS
+
+#SV_FOOD_CURE_PARANOIA 14
+I:80:14:1:LIFE
+I:80:14:1:TIME
+
+#SV_FOOD_CURE_CONFUSION 15
+I:80:15:1:LIFE
+I:80:15:12:KNOWLEDGE
+
+#SV_FOOD_CURE_SERIOUS 16
+I:80:16:8:LIFE
+
+#SV_FOOD_RESTORE_STR 17
+I:80:17:20:LIFE
+I:80:17:2:TIME
+
+#SV_FOOD_RESTORE_CON 18
+I:80:18:20:LIFE
+I:80:18:2:TIME
+
+#SV_FOOD_RESTORING 19
+I:80:19:40:LIFE
+I:80:19:4:TIME
+
+#/* many missing mushrooms */
+#Note - the comment below appears on the list in defines.h, but I can't find
+#any more mushrooms in k_info.txt
+
+#define SV_FOOD_BISCUIT 32
+#define SV_FOOD_JERKY 33
+#define SV_FOOD_RATION 35
+#define SV_FOOD_SLIME_MOLD 36
+#define SV_FOOD_WAYBREAD 37
+#define SV_FOOD_PINT_OF_ALE 38
+#define SV_FOOD_PINT_OF_WINE 39
+#define SV_FOOD_ATHELAS 40
+#define SV_FOOD_GREAT_HEALTH 41
+#define SV_FOOD_FORTUNE_COOKIE 42
+
+
+
+#***************************Artifact Flags************************************
+#
+#A:Group:tval:sval:pval:pval?:level:xp
+# The first three describe the required item, they can be left unspecified
+# for no object, or specify starting with tval for increasingly specific
+# objects.
+# Note: pval? is boolean (0 or 1) if true, then this flag has a
+# variable effect, and we should require more experience and times for
+# increasing pvals.
+# Note:for tval=TV_CORPSE, sval=corpse type, pval=monster idx,
+# or use f:moster_race_flags, or leave all blank for any corpse at all.
+#F:object flag to be set
+#D:Description of flag
+#x:Description of activation (instead of description of flag, see below)
+#d:Description of required item
+#p:Description of required item (plural, optional. Illegal if pval != 1)
+#a:qty:object_flag_to_be_set Essence_name (not used)
+
+# Note that like I: lines, a: lines can be anywhere and in any order.
+# Note: 'flag' is the flag name from a_info.txt,
+# 'monster_race_flag' is from r_info.txt
+
+#The group numbers are 1-5, and the descriptions of the groups
+#are hard coded. see cmd7.c
+
+
+A:1:45:24:1:1:40:5000
+F:STR
+D:Add to Strength
+d:Ring of Strength
+p:Rings of Strength
+
+A:1:45:25:1:1:43:5000
+F:INT
+D:Add to Intelligence
+d:Ring of Intelligence
+p:Rings of Intelligence
+
+A:1:40:28:1:1:46:5000
+F:WIS
+D:Add to Wisdom
+d:Amulet of Wisdom
+p:Amulets of Wisdom
+
+A:1:45:26:1:1:46:5000
+F:DEX
+D:Add to Dexterity
+d:Ring of Dexterity
+p:Rings of Dexterity
+
+A:1:45:27:1:1:42:5000
+F:CON
+D:Add to Constitution
+d:Ring of Constitution
+p:Rings of Constitution
+
+A:1:40:2:0:1:30:5000
+F:CHR
+D:Add to Charisma
+d:Amulet of Adornment
+p:Amulets of Adornment
+
+A:1:45:10:0:0:32:1000
+F:SUST_STR
+D:Sustain Strength
+d:Ring of Sustain Strength
+
+A:1:45:11:0:0:34:1000
+F:SUST_INT
+D:Sustain Intelligence
+d:Ring of Sustain Intelligence
+
+A:1:45:12:0:0:28:1000
+F:SUST_WIS
+D:Sustain Wisdom
+d:Ring of Sustain Wisdom
+
+A:1:45:14:0:0:36:1000
+F:SUST_DEX
+D:Sustain Dexterity
+d:Ring of Sustain Dexterity
+
+A:1:45:13:0:0:36:1000
+F:SUST_CON
+D:Sustain Constitution
+d:Ring of Sustain Constitution
+
+A:1:45:15:0:0:25:1000
+F:SUST_CHR
+D:Sustain Charisma
+d:Ring of Sustain Charisma
+
+A:1:45:31:1:1:40:50000
+F:SPEED
+D:Speed
+d:Ring of Speed
+p:Rings of Speed
+
+A:1:45:49:1:1:38:150000
+F:BLOWS
+D:Extra Attacks
+d:Ring of Extra Attacks
+p:Rings of Extra Attacks
+
+A:1:30:2:0:1:32:5000
+F:STEALTH
+D:Stealthy
+d:Left Insole from a Used Soft Boot
+p:Left Insoles from Used Soft Boots
+
+A:1:36:1:0:1:29:2000
+F:SEARCH
+D:Adds to Searching
+d:Filthy Rag
+p:Filthy Rags
+
+A:1:39:1:0:1:6:1000
+F:INFRA
+D:Helps Infravision
+d:Brass Lantern
+p:Brass Lanterns
+
+A:1:9:-1:5:1:30:1000
+F:LUCK
+D:Lucky
+d:Rabbit's Left Forefoot
+p:Rabbit's Left Forefeet
+
+A:1:20:4:0:1:25:30000
+F:TUNNEL
+D:Aids in digging
+d:Pick
+p:Picks
+
+A:1:9:1:0:1:40:50000
+F:LIFE
+f:TROLL
+D:Multiplies Life
+d:Troll's Heart
+p:Troll's Hearts
+
+A:2:71:8:0:0:20:15000
+F:INVIS
+D:Invisibility
+d:Potion of Invisibility
+
+A:2:71:8:0:0:20:4000
+F:SEE_INVIS
+D:See Invisible
+d:Potion of Invisibility
+
+A:2:5:0:0:0:20:30000
+F:FREE_ACT
+D:Free Action
+d:Iron Spike
+
+A:2:34:5:0:0:38:90000
+F:REFLECT
+D:Reflection
+d:Large Metal Shield
+
+A:2:9:1:644:0:20:30000
+F:SH_FIRE
+D:Aura of Fire
+d:Lungs from an Ancient Red Dragon
+
+A:2:9:1:601:0:25:30000
+F:SH_ELEC
+D:Aura of Lightning
+d:Lungs from an Ancient Blue Dragon
+
+A:2:39:2:0:0:8:1000
+F:LITE1
+D:Light
+d:Everburning Torch
+
+A:2:39:3:0:0:20:10000
+F:LITE2
+D:Bright Light
+d:Dwarven Lantern
+
+A:2:39:4:0:0:40:100000
+F:LITE3
+D:Sunlight
+d:Feanorian Lamp
+
+A:2:38:-1:0:0:40:200000
+F:FLY
+D:Flight
+d:Suit of Dragon Armour (any colour)
+
+A:2:9:-1:862:0:50:10000000
+F:AUTO_ID
+D:Automatically IDs
+d:Morgoth's Testicles
+
+A:2:40:14:0:0:29:2000
+F:NO_TELE
+D:Anti-Teleportation
+d:Teleport Inhibiting Amulet
+
+A:2:40:13:0:0:34:2000
+F:NO_MAGIC
+D:Anti-Magic
+d:Magic Inhibiting Amulet
+
+A:2:71:62:0:0:50:100000
+F:WRAITH
+D:Wraith Form
+d:Potion of Invulnerability
+
+A:2:71:33:0:0:15:1000
+F:FEATHER
+D:Levitation
+d:Potion of Berserk Strength
+
+A:2:80:37:0:0:20:10000
+F:SLOW_DIGEST
+D:Slow Digestion
+d:Lembas Wafer
+
+A:2:80:10:0:0:32:20000
+F:REGEN
+D:Regenerate
+d:Mushroom of Unhealth
+
+A:2:80:3:0:0:12:20000
+F:TELEPORT
+D:Teleport
+d:Mushroom of Confusion
+
+A:3:21:2:0:1:30:20000
+F:CRIT
+D:Extra Critical Hits
+d:Whip
+p:Whips
+
+A:3:23:30:0:0:30:30000
+F:WOUNDING
+D:Wounds Monsters
+d:Blade of Chaos
+
+A:3:66:18:0:1:26:6000
+F:VAMPIRIC
+D:Vampiric
+d:Rod Tip of Drain Life
+
+A:3:9:1:0:0:16:2000
+F:SLAY_ANIMAL
+f:ANIMAL
+D:Slay Animal
+d:Dead Animal's Body
+
+A:3:9:-1:0:0:25:2000
+F:SLAY_EVIL
+f:EVIL
+D:Slay Evil
+d:Evil Dead Thing's Remains
+
+A:3:9:-1:0:0:30:2000
+F:SLAY_UNDEAD
+f:UNDEAD
+D:Slay Undead
+d:Remains of Undead Monster
+
+A:3:9:1:0:0:40:1500
+F:SLAY_DEMON
+f:DEMON
+D:Slay Demon
+d:Demon's Corpse
+
+A:3:9:1:0:0:10:700
+F:SLAY_ORC
+f:ORC
+D:Slay Orc
+d:Dead Orc
+
+A:3:9:1:0:0:16:700
+F:SLAY_TROLL
+f:TROLL
+D:Slay Troll
+d:Dead Troll
+
+A:3:9:1:0:0:25:900
+F:SLAY_GIANT
+f:GIANT
+D:Slay Giant
+d:Dead Giant
+
+A:3:9:1:0:0:33:2000
+F:SLAY_DRAGON
+f:DRAGON
+D:Slay Dragon
+d:Dead Dragon (any size will do)
+
+A:3:9:-1:593:0:41:5000
+F:KILL_DRAGON
+D:*Slay* Dragon
+d:Mature Multi-Hued Dragon's Remains
+
+A:3:9:-1:0:0:41:90000
+F:KILL_UNDEAD
+f:S_HI_UNDEAD
+D:*Slay* Undead
+d:Dead Summoner of Greater Undead
+
+A:3:9:-1:996:0:41:90000
+F:KILL_DEMON
+D:*Slay* Demon
+d:Lesser Balrog's Corpse
+
+A:3:0:0:0:0:36:20000
+F:VORPAL
+D:Vorpal
+
+A:3:0:0:0:0:40:90000
+F:IMPACT
+D:Earthquakes
+
+A:3:0:0:0:0:3:2000
+F:BRAND_POIS
+D:Poison Brand
+
+A:3:0:0:0:0:12:2000
+F:BRAND_ACID
+D:Acid Brand
+
+A:3:0:0:0:0:10:2000
+F:BRAND_ELEC
+D:Lightning Brand
+
+A:3:0:0:0:0:6:2000
+F:BRAND_FIRE
+D:Fire Brand
+
+A:3:0:0:0:0:8:2000
+F:BRAND_COLD
+D:Frost Brand
+
+A:3:0:0:0:1:30:3000
+F:XTRA_MIGHT
+D:Extra Might (Bows Only)
+
+A:3:0:0:0:1:35:3000
+F:XTRA_SHOTS
+D:Extra Shots (Bows Only)
+
+A:4:9:1:624:0:49:500000
+F:IM_ACID
+D:Immune to Acid
+d:Ancient Black Dragon's Foreskin
+
+A:4:9:1:601:0:50:500000
+F:IM_ELEC
+D:Immune to Lightning
+d:Ancient Blue Dragon's Foreskin
+
+A:4:9:1:644:0:49:500000
+F:IM_FIRE
+D:Immune to Fire
+d:Ancient Red Dragon's Foreskin
+
+A:4:9:1:617:0:50:500000
+F:IM_COLD
+D:Immune to Cold
+d:Ancient White Dragon's Foreskin
+
+A:4:40:8:0:0:30:30000
+F:HOLD_LIFE
+D:Hold Life
+d:Amulet of the Magi
+
+A:4:45:17:0:0:12:10000
+F:RES_ACID
+D:Resist Acid
+d:Ring of Acid
+
+A:4:45:56:0:0:15:10000
+F:RES_ELEC
+D:Resist Lightning
+d:Ring of Lightning
+
+A:4:71:30:0:0:13:10000
+F:RES_FIRE
+D:Resist Fire
+d:Potion of Resist Heat
+
+A:4:71:31:0:0:14:10000
+F:RES_COLD
+D:Resist Cold
+d:Potion of Resist Cold
+
+A:4:71:27:0:0:25:30000
+F:RES_POIS
+D:Resist Poison
+d:Potion of Cure Poison
+
+A:4:45:38:0:0:26:10000
+F:RES_FEAR
+D:Resist Fear
+d:Ring of Fear Resistance
+
+A:4:45:39:0:0:31:60000
+F:RES_LITE
+D:Resist Light
+d:Ring of Light and Darkness Resistance
+
+A:4:45:39:0:0:31:60000
+F:RES_DARK
+D:Resist Darkness
+d:Ring of Light and Darkness Resistance
+
+A:4:45:47:0:0:30:30000
+F:RES_BLIND
+D:Resist Blindness
+d:Ring of Blindness Resistance
+
+A:4:45:43:0:0:30:30000
+F:RES_CONF
+D:Resist Confusion
+d:Ring of Confusion Resistance
+
+A:4:45:42:0:0:30:60000
+F:RES_SOUND
+D:Resist Sound
+d:Ring of Sound Resistance
+
+A:4:45:44:0:0:30:60000
+F:RES_SHARDS
+D:Resist Shards
+d:Ring of Shard Resistance
+
+A:4:45:40:0:0:30:60000
+F:RES_NETHER
+D:Resist Nether
+d:Ring of Nether Resistance
+
+A:4:45:41:0:0:30:60000
+F:RES_NEXUS
+D:Resist Nexus
+d:Ring of Nexus Resistance
+
+A:4:45:46:0:0:30:60000
+F:RES_CHAOS
+D:Resist Chaos
+d:Ring of Chaos Resistance
+
+A:4:45:45:0:0:30:60000
+F:RES_DISEN
+D:Resist Disenchantment
+d:Ring of Disenchantment Resistance
+
+A:5:9:1:0:0:50:-100000
+F:TEMPORARY
+D:Temporary Item
+d:Corpse, any corpse
+
+A:5:36:1:0:0:10:-2000
+F:AUTO_CURSE
+D:Self-Cursing
+d:Filthy Rag
+
+A:5:80:40:0:0:45:-10000
+F:BLACK_BREATH
+D:Causes the Black Breath
+d:Sprig of Athelas
+
+A:5:70:15:0:0:40:-5000
+F:TY_CURSE
+D:Ancient Curse
+d:Scroll of *Remove Curse*
+
+A:5:0:0:0:0:40:-5000
+F:DRAIN_EXP
+D:Drains your Experience
+
+A:5:0:0:0:0:30:-5000
+F:AGGRAVATE
+D:Aggravates Monsters
+
+A:5:70:14:0:0:30:-500
+F:CURSED
+D:Curse
+d:Scroll of Remove Curse
+
+#Removed for balance - allows you to trade two essences of extra life,
+# and 25+ magic essence for 10000xp on your artifact, which isn't
+# anything to sneeze at. Curse, above, has the same problem, but
+# for 1000xp, I figure it's a fair trade.
+#A:5:70:15:0:0:40:-10000
+#D:Heavy Curse
+#F:HEAVY_CURSE
+#d:Scroll of *Remove Curse*
+
+A:5:0:0:0:0:50:-5000
+F:PERMA_CURSE
+D:Permanently Cursed
+
+A:5:0:0:0:0:35:-2000
+F:CURSE_NO_DROP
+D:Can't be Dropped
+
+A:5:0:0:0:0:45:-5000
+F:DRAIN_HP
+D:Drains your Hit Points
+
+A:5:0:0:0:0:20:-50000
+F:IMMOVABLE
+D:Wielder Can't Move
+
+#/* Floating eye corpse for esp all :) other ESP's don't require anything at all...*/
+A:5:9:1:32:0:40:20000
+F:ESP_ALL
+D:Telepathy
+d:Formerly Floating Eye
+
+A:5:0:0:0:0:25:3000
+F:ESP_ORC
+D:Sense Orcs
+
+A:5:0:0:0:0:25:3000
+F:ESP_TROLL
+D:Sense Trolls
+
+A:5:0:0:0:0:25:5000
+F:ESP_DRAGON
+D:Sense Dragons
+
+A:5:0:0:0:0:25:5000
+F:ESP_GIANT
+D:Sense Giants
+
+A:5:0:0:0:0:25:5000
+F:ESP_DEMON
+D:Sense Demons
+
+A:5:0:0:0:0:25:5000
+F:ESP_UNDEAD
+D:Sense Undead
+
+A:5:0:0:0:0:25:5000
+F:ESP_EVIL
+D:Sense Evil
+
+A:5:0:0:0:0:25:5000
+F:ESP_ANIMAL
+D:Sense Animals
+
+A:5:0:0:0:0:25:5000
+F:ESP_THUNDERLORD
+D:Sense Thunderlords
+
+A:5:0:0:0:0:25:5000
+F:ESP_GOOD
+D:Sense Good
+
+A:5:0:0:0:0:25:5000
+F:ESP_NONLIVING
+D:Sense Nonliving
+
+A:5:0:0:0:0:25:5000
+F:ESP_UNIQUE
+D:Sense Unique Monsters
+
+A:5:0:0:0:0:25:2000
+F:ESP_SPIDER
+D:Sense Spiders
+
+
+#***************************Activations for artifacts***********************
+# Activations follow all of the rules for artifact flags.
+# except: group number and pval are IGNORED
+# They MUST come after ALL artifact flags in this file!!!
+# There is no way (currently) to require essences...
+#
+# They use a LOWER CASE x: instead of the F: object flag
+#
+# all ACT_ constants are supported, anything else must be coded into init1.c
+# Internally, they are assigned the magic group number of '88'
+# and a NEGATIVE flag number (which is the activation number)
+# Note that although you can use the p: to give activations a plural
+# item description, it will never be used, because pval is forced to 0.
+#
+#A:<îgnored>:tval:sval:<ignored>:<ignored>:level:xp
+# tval and sval describe the required item, they can be left unspecified
+# for no object, or specify starting with tval for increasingly specific
+# objects.
+#F:object flag to be set
+#D:Description of flag
+#x:Description of activation (instead of description of flag)
+#d:Description of required item
+#p:Description of required item (plural, not used for activations)
+#a:qty:object_flag_to_be_set Essence_name
+
+#define ACT_PET_SUMMON 150
+#define ACT_CURE_PARA 151
+#define ACT_CURE_HALLU 152
+#define ACT_CURE_POIS 153
+#define ACT_CURE_HUNGER 154
+#define ACT_CURE_STUN 155
+#define ACT_CURE_CUTS 156
+#define ACT_CURE_FEAR 157
+#define ACT_CURE_CONF 158
+#define ACT_CURE_BLIND 159
+#define ACT_CURING 160
+#define ACT_ACQUIREMENT 163
+#define ACT_MUT 166
+#define ACT_CURE_INSANITY 167
+#define ACT_CURE_MUT 168
+#define ACT_REST_LIFE 84
+#define ACT_REST_ALL 85
+#define ACT_CURE_LW 81
+#define ACT_CURE_MW 82
+#define ACT_CURE_POISON 83
+#define ACT_CURE_700 86
+#define ACT_CURE_1000 87
+
+#define ACT_LIGHT 111
+
+#define ACT_SUNLIGHT 1
+A:0:70:15:0:0:40:40000
+x:SUNLIGHT
+D:Sunlight
+d:Brass Lantern
+
+#define ACT_MAP_LIGHT 112
+#define ACT_DETECT_ALL 113
+#define ACT_DETECT_XTRA 114
+#define ACT_ID_FULL 115
+#define ACT_ID_PLAIN 116
+
+#define ACT_GROW_MOLD 197
+
+
+#define ACT_BO_MISS_1 2
+A:0:0:0:0:0:20:4000
+x:BO_MISS_1
+D:Magic Missile (1)
+
+#define ACT_BO_MISS_2 15
+A:0:0:0:0:0:30:300000
+x:BO_MISS_2
+D:Magic Missile (2)
+
+#define ACT_BA_MISS_3 24
+A:0:0:0:0:0:40:400000
+x:BA_MISS_3
+D:Ball of Missiles
+
+#define ACT_BO_ELEC_1 4
+A:0:0:0:0:0:30:300000
+x:BO_ELEC_1
+D:Bolt of Lightning
+
+#define ACT_BA_ELEC_2 12
+A:0:0:0:0:0:30:300000
+x:BA_ELEC_2
+D:Ball of Lightning
+
+#define ACT_BA_ELEC_3 18
+A:0:0:0:0:0:35:350000
+x:BA_ELEC_3
+D:Ball of Lightning(2)
+
+#define ACT_BA_ELEC_H 172
+A:0:0:0:0:0:40:400000
+x:BA_ELEC_H
+D:Ball of Lightning(3)
+
+#define ACT_BA_ELEC_4 183
+A:0:0:0:0:0:40:400000
+x:BA_ELEC_4
+D:Ball of Lightning(4)
+
+#define ACT_BR_ELEC 184
+A:0:0:0:0:0:45:450000
+x:BR_ELEC
+D:Breathe Lightning
+
+#define ACT_BO_ACID_1 5
+#define ACT_BA_COLD_1 8
+#define ACT_BA_ACID_H 173
+#define ACT_BA_ACID_4 182
+#define ACT_BR_ACID 187
+#define ACT_BO_COLD_1 6
+#define ACT_BA_COLD_2 11
+#define ACT_BA_COLD_3 17
+#define ACT_BA_COLD_H 171
+#define ACT_BA_COLD_4 180
+#define ACT_BR_COLD 185
+#define ACT_BO_FIRE_1 7
+#define ACT_BA_FIRE_1 9
+#define ACT_BA_FIRE_2 16
+#define ACT_BA_FIRE_H 170
+#define ACT_BA_FIRE_4 181
+#define ACT_BR_FIRE 186
+#define ACT_BA_POIS_1 3
+#define ACT_BA_POIS_4 179
+#define ACT_BR_POIS 188
+#define ACT_BR_MANY 189
+#define ACT_BR_CONF 190
+#define ACT_BR_SOUND 191
+#define ACT_BR_CHAOS 192
+#define ACT_BR_SHARD 193
+#define ACT_BR_BALANCE 194
+#define ACT_BR_LIGHT 195
+#define ACT_BR_POWER 196
+#define ACT_ROCKET 22
+A:0:0:0:0:0:50:40000
+x:ROCKET
+D:Fire a Rocket
+
+#define ACT_JUMP 177
+#define ACT_WHIRLWIND 19
+#define ACT_CALL_CHAOS 21
+#define ACT_DISP_EVIL 23
+#define ACT_DISP_GOOD 25
+#define ACT_DAWN 61
+#define ACT_CHARM_ANIMAL 65
+#define ACT_CHARM_UNDEAD 66
+#define ACT_CHARM_OTHER 67
+#define ACT_CHARM_ANIMALS 68
+#define ACT_CHARM_OTHERS 69
+#define ACT_SUMMON_ANIMAL 70
+#define ACT_SUMMON_PHANTOM 71
+#define ACT_SUMMON_ELEMENTAL 72
+#define ACT_SUMMON_DEMON 73
+#define ACT_SUMMON_UNDEAD 74
+#define ACT_RUNE_EXPLO 117
+#define ACT_RUNE_PROT 118
+#define ACT_SATIATE 119
+#define ACT_DEST_DOOR 120
+#define ACT_STONE_MUD 121
+#define ACT_RECHARGE 122
+#define ACT_ALCHEMY 123
+#define ACT_DIM_DOOR 124
+#define ACT_TELEPORT 125
+#define ACT_RECALL 126
+
+#define ACT_SPIN 174
+#define ACT_NOLDOR 175
+#define ACT_SPECTRAL 176
+#define ACT_DEST_TELE 178
+#define ACT_DRAIN_1 10
+#define ACT_DRAIN_2 13
+#define ACT_VAMPIRE_1 14
+#define ACT_VAMPIRE_2 20
+#define ACT_GILGALAD 26
+#define ACT_CELEBRIMBOR 27
+#define ACT_SKULLCLEAVER 28
+#define ACT_HARADRIM 29
+#define ACT_FUNDIN 30
+#define ACT_EOL 31
+#define ACT_UMBAR 32
+#define ACT_NUMENOR 33
+#define ACT_KNOWLEDGE 34
+#define ACT_UNDEATH 35
+#define ACT_THRAIN 36
+#define ACT_BARAHIR 37
+#define ACT_TULKAS 38
+#define ACT_NARYA 39
+#define ACT_NENYA 40
+#define ACT_VILYA 41
+#define ACT_POWER 42
+#define ACT_STONE_LORE 43
+#define ACT_RAZORBACK 44
+#define ACT_BLADETURNER 45
+#define ACT_MEDIATOR 46
+#define ACT_BELEGENNON 47
+#define ACT_GORLIM 48
+#define ACT_COLLUIN 49
+#define ACT_BELANGIL 50
+#define ACT_CONFUSE 51
+#define ACT_SLEEP 52
+#define ACT_QUAKE 53
+#define ACT_TERROR 54
+#define ACT_TELE_AWAY 55
+#define ACT_BANISH_EVIL 56
+#define ACT_GENOCIDE 57
+#define ACT_MASS_GENO 58
+#define ACT_ANGUIREL 59
+#define ACT_ERU 60
+#define ACT_FIRESTAR 62
+#define ACT_TURMIL 63
+#define ACT_CUBRAGOL 64
+#define ACT_ELESSAR 75
+#define ACT_GANDALF 76
+#define ACT_MARDA 77
+#define ACT_PALANTIR 78
+#define ACT_ROBINTON 79
+#define ACT_PIEMUR 80
+#define ACT_MENOLLY 88
+#define ACT_EREBOR 89
+#define ACT_DRUEDAIN 90
+#define ACT_ESP 91
+#define ACT_BERSERK 92
+#define ACT_PROT_EVIL 93
+#define ACT_RESIST_ALL 94
+#define ACT_SPEED 95
+#define ACT_XTRA_SPEED 96
+#define ACT_WRAITH 97
+#define ACT_INVULN 98
+#define ACT_ROHAN 99
+#define ACT_HELM 100
+#define ACT_BOROMIR 101
+#define ACT_HURIN 102
+#define ACT_AXE_GOTHMOG 103
+#define ACT_MELKOR 104
+#define ACT_GROND 105
+#define ACT_NATUREBANE 106
+#define ACT_NIGHT 107
+#define ACT_ORCHAST 108
+
+#define ACT_DEATH 127
+#define ACT_RUINATION 128
+#define ACT_DESTRUC 129
+#define ACT_UNINT 130
+#define ACT_UNSTR 131
+#define ACT_UNCON 132
+#define ACT_UNCHR 133
+#define ACT_UNDEX 134
+#define ACT_UNWIS 135
+#define ACT_STATLOSS 136
+#define ACT_HISTATLOSS 137
+#define ACT_EXPLOSS 138
+#define ACT_HIEXPLOSS 139
+#define ACT_SUMMON_MONST 140
+#define ACT_PARALYZE 141
+#define ACT_HALLU 142
+#define ACT_POISON 143
+#define ACT_HUNGER 144
+#define ACT_STUN 145
+#define ACT_CUTS 146
+#define ACT_PARANO 147
+#define ACT_CONFUSION 148
+#define ACT_BLIND 149
+#define ACT_DARKNESS 161
+#define ACT_LEV_TELE 162
+#define ACT_WEIRD 164
+#define ACT_AGGRAVATE 165
+#define ACT_LIGHT_ABSORBTION 169
+#define ACT_MUSIC 200
+
+
+#***************************Amulets***********************
+
+#SV_AMULET_ADORNMENT
+I:40:2:4:DARKNESS
+
+#SV_AMULET_BRILLANCE
+I:40:6:1:KNOWLEDGE
+I:40:6:2:CONFUSION
+
+#SV_AMULET_CHARISMA
+I:40:7:4:DARKNESS
+
+#SV_AMULET_DEVOTION
+I:40:25:1:MAGIC
+I:40:25:2:CONFUSION
+I:40:25:8:KNOWLEDGE
+
+#SV_AMULET_ESP
+I:40:22:4:KNOWLEDGE
+
+#SV_AMULET_INFRA
+I:40:26:1:LITE
+
+#SV_AMULET_NO_MAGIC
+I:40:13:4:MAGIC
+
+#SV_AMULET_NO_TELE
+I:40:14:8:TELEPORT
+
+#SV_AMULET_REFLECTION
+I:40:9:10:FORCE
+I:40:9:10:MANA
+
+#SV_AMULET_REGENERATION
+I:40:30:4:LIFE
+
+#SV_AMULET_RESISTANCE
+I:40:15:4:ACID
+I:40:15:4:COLD
+I:40:15:4:FIRE
+I:40:15:4:LIGHTNING
+
+#SV_AMULET_RESIST_ACID
+I:40:4:4:ACID
+
+#SV_AMULET_RESIST_ELEC
+I:40:29:4:LIGHTNING
+
+#SV_AMULET_SEARCHING
+I:40:5:4:KNOWLEDGE
+I:40:5:4:LITE
+
+#SV_AMULET_SERPENT
+I:40:17:1:MANA
+I:40:17:4:ACID
+
+#SV_AMULET_SLOW_DIGEST
+I:40:3:4:LIFE
+
+#SV_AMULET_SUSTENANCE
+I:40:21:8:LIFE
+
+#SV_AMULET_TELEPORT
+I:40:1:8:TELEPORT
+
+#SV_AMULET_THE_MAGI
+I:40:8:1:MAGIC
+I:40:8:4:KNOWLEDGE
+
+#SV_AMULET_TRICKERY
+#I:40:23:1:MAGIC
+I:40:23:8:CONFUSION
+
+#SV_AMULET_WEAPONMASTERY
+I:40:24:12:EXPLOSION
+I:40:24:1:MAGIC
+
+#SV_AMULET_WISDOM
+I:40:28:1:KNOWLEDGE
+I:40:28:2:CONFUSION
+
+#*********Potions******************************
+#Note that these first few potions are the ones which
+#can be thrown for much damage, and are thus an integral part of
+#the alchemist's arsenal.
+
+#SV_POTION_DETONATIONS
+I:71:22:6:EXPLOSION
+
+#SV_POTION_DEATH
+I:71:23:10:LIFE
+
+#SV_POTION_RUINATION
+I:71:15:5:DARKNESS
+
+#SV_POTION_APPLE_JUICE
+I:71:1:1:LIFE
+
+#SV_POTION_AUGMENTATION
+I:71:55:16:POISON
+I:71:55:24:CONFUSION
+I:71:55:6:MAGIC
+I:71:55:8:EXPLOSION
+I:71:55:16:LIFE
+I:71:55:8:LIGHTNING
+I:71:55:16:DARKNESS
+
+#SV_POTION_BESERK_STRENGTH
+I:71:33:1:FIRE
+
+#SV_POTION_BLINDNESS
+I:71:7:1:DARKNESS
+
+#SV_POTION_BOLDNESS
+I:71:28:1:LITE
+
+#SV_POTION_CONFUSION
+I:71:9:1:CONFUSION
+
+#SV_POTION_CURE_CRITICAL
+I:71:36:4:LIFE
+
+#SV_POTION_CURE_LIGHT
+I:71:34:1:LIFE
+
+#SV_POTION_CURE_SERIOUS
+I:71:35:2:LIFE
+
+#SV_POTION_CURING
+I:71:61:1:LIFE
+
+#SV_POTION_DEC_CHR
+I:71:21:1:MANA
+I:71:21:8:DARKNESS
+I:71:21:8:CONFUSION
+
+#SV_POTION_DEC_CON
+I:71:20:1:MANA
+I:71:20:8:LIFE
+I:71:20:8:POISON
+
+#SV_POTION_DEC_DEX
+I:71:19:1:MANA
+I:71:19:8:LIGHTNING
+I:71:19:8:DARKNESS
+
+#SV_POTION_DEC_INT
+I:71:17:1:MANA
+I:71:17:8:CONFUSION
+I:71:17:8:KNOWLEDGE
+
+#SV_POTION_DEC_STR
+I:71:16:1:MANA
+I:71:16:8:EXPLOSION
+I:71:16:8:POISON
+
+#SV_POTION_DEC_WIS
+I:71:18:1:MANA
+I:71:18:8:CONFUSION
+I:71:18:8:LIFE
+
+#SV_POTION_DETECT_INVIS
+I:71:25:1:DARKNESS
+I:71:25:1:LITE
+
+#SV_POTION_ENLIGHTENMENT
+I:71:56:8:KNOWLEDGE
+
+#SV_POTION_EXPERIENCE
+I:71:59:30:EXTRALIFE
+
+#SV_POTION_HEALING
+I:71:37:1:EXTRALIFE
+
+#SV_POTION_HEROISM
+I:71:32:1:COLD
+
+#SV_POTION_INC_CHR
+I:71:53:1:MAGIC
+I:71:53:8:DARKNESS
+I:71:53:8:CONFUSION
+
+#SV_POTION_INC_CON
+I:71:52:1:MAGIC
+I:71:52:8:LIFE
+I:71:52:8:POISON
+
+#Potion of Slow Poison
+I:71:26:1:POISON
+
+#Potion of Cure Poison
+I:71:27:2:POISON
+
+#Potion of Poison
+I:71:6:1:POISON
+
+#SV_POTION_INC_DEX
+I:71:51:1:MAGIC
+I:71:51:8:LIGHTNING
+I:71:51:8:DARKNESS
+
+#SV_POTION_INC_INT
+I:71:49:1:MAGIC
+I:71:49:8:KNOWLEDGE
+I:71:49:8:CONFUSION
+
+#SV_POTION_INC_STR
+I:71:48:1:MAGIC
+I:71:48:8:EXPLOSION
+I:71:48:8:POISON
+
+#SV_POTION_INC_WIS
+I:71:50:1:MAGIC
+I:71:50:8:CONFUSION
+I:71:50:8:LIFE
+
+#SV_POTION_INFRAVISION
+I:71:24:1:LITE
+
+#SV_POTION_INVIS
+I:71:8:4:DARKNESS
+
+#SV_POTION_INVULNERABILITY
+I:71:62:10:FORCE
+I:71:62:4:MAGIC
+
+#SV_POTION_LIFE
+I:71:39:8:EXTRALIFE
+
+#SV_POTION_LOSE_MEMORIES
+I:71:13:20:DARKNESS
+
+#SV_POTION_MUTATION
+I:71:10:12:CHAOS
+
+#SV_POTION_NEW_LIFE
+I:71:63:16:EXTRALIFE
+
+#SV_POTION_RESISTANCE
+I:71:60:2:ACID
+I:71:60:2:COLD
+I:71:60:2:FIRE
+I:71:60:2:LIGHTNING
+
+#SV_POTION_RESIST_COLD
+I:71:31:1:COLD
+
+#SV_POTION_RESIST_HEAT
+I:71:30:1:FIRE
+
+#SV_POTION_RESTORE_EXP
+I:71:41:8:LIFE
+I:71:41:3:KNOWLEDGE
+
+#SV_POTION_RESTORE_MANA
+I:71:40:12:MANA
+
+#SV_POTION_RES_CHR
+I:71:47:12:LIFE
+
+#SV_POTION_RES_CON
+I:71:46:12:LIFE
+
+#SV_POTION_RES_DEX
+I:71:45:12:LIFE
+
+#SV_POTION_RES_INT
+I:71:43:12:LIFE
+
+#SV_POTION_RES_STR
+I:71:42:12:LIFE
+
+#SV_POTION_RES_WIS
+I:71:44:12:LIFE
+
+#SV_POTION_SALT_WATER
+I:71:5:1:LIGHTNING
+
+#SV_POTION_SELF_KNOWLEDGE
+I:71:58:2:KNOWLEDGE
+
+#SV_POTION_SLEEP
+I:71:11:1:MANA
+
+#SV_POTION_SLIME_MOLD
+I:71:2:1:LIFE
+
+#SV_POTION_SLOWNESS
+I:71:4:1:MANA
+
+#SV_POTION_SPEED
+I:71:29:1:TIME
+
+#SV_POTION_STAR_ENLIGHTENMENT
+I:71:57:12:KNOWLEDGE
+
+#SV_POTION_STAR_HEALING
+I:71:38:4:EXTRALIFE
+
+#SV_POTION_WATER
+I:71:0:1:LIFE
+
+#********************************Potion 2*********************************
+
+#SV_POTION2_MIMIC 1
+I:72:1:2:LIFE
+#SV_POTION2_CURE_LIGHT_SANITY 14
+I:72:14:1:CONFUSION
+I:72:14:1:DARKNESS
+#SV_POTION2_CURE_SERIOUS_SANITY 15
+I:72:15:2:CONFUSION
+I:72:15:2:DARKNESS
+#SV_POTION2_CURE_CRITICAL_SANITY 16
+I:72:16:4:CONFUSION
+I:72:16:4:DARKNESS
+#SV_POTION2_CURE_SANITY 17
+I:72:17:8:CONFUSION
+I:72:17:8:DARKNESS
+#SV_POTION2_CURE_WATER 18
+#I:72:18:4:EXPLOSION
+#I:72:18:4:POISON
+#I:72:18:2:EXTRALIFE
+
+#************Rod Tips.****************************
+
+#SV_ROD_ACID_BALL
+I:66:24:1:MAGIC
+I:66:24:8:ACID
+
+#SV_ROD_ACID_BOLT
+I:66:20:4:ACID
+
+#SV_ROD_COLD_BALL
+I:66:27:1:MAGIC
+I:66:27:8:COLD
+
+#SV_ROD_COLD_BOLT
+I:66:23:4:COLD
+
+#SV_ROD_CURING
+I:66:8:3:LIFE
+
+#SV_ROD_DETECTION
+I:66:6:8:KNOWLEDGE
+
+#SV_ROD_DETECT_DOOR
+I:66:1:1:KNOWLEDGE
+
+#SV_ROD_DETECT_TRAP
+I:66:29:1:KNOWLEDGE
+
+#SV_ROD_DISARMING
+I:66:14:4:TELEPORT
+
+#SV_ROD_DRAIN_LIFE
+I:66:18:10:LIFE
+
+#SV_ROD_ELEC_BALL
+I:66:25:1:MAGIC
+I:66:25:8:LIGHTNING
+
+#SV_ROD_ELEC_BOLT
+I:66:21:4:LIGHTNING
+
+#SV_ROD_FIRE_BALL
+I:66:26:1:MAGIC
+I:66:26:8:FIRE
+
+#SV_ROD_FIRE_BOLT
+I:66:22:4:FIRE
+
+#SV_ROD_HAVOC
+I:66:28:5:CHAOS
+
+#SV_ROD_HEALING
+I:66:9:4:EXTRALIFE
+
+#SV_ROD_IDENTIFY
+I:66:2:4:MANA
+I:66:2:4:KNOWLEDGE
+
+#SV_ROD_ILLUMINATION
+I:66:4:4:LITE
+
+#SV_ROD_LITE
+I:66:15:1:LITE
+
+#SV_ROD_MAPPING
+I:66:5:1:KNOWLEDGE
+I:66:5:8:LITE
+
+#SV_ROD_POLYMORPH
+I:66:19:1:CHAOS
+
+#SV_ROD_PROBING
+I:66:7:20:KNOWLEDGE
+I:66:7:3:MANA
+
+#SV_ROD_RECALL
+I:66:3:3:FORCE
+I:66:3:9:TELEPORT
+
+#SV_ROD_RESTORATION
+I:66:10:30:LIFE
+
+#SV_ROD_SLEEP_MONSTER
+I:66:16:1:MANA
+
+#SV_ROD_SLOW_MONSTER
+I:66:17:1:TIME
+
+#SV_ROD_SPEED
+I:66:11:10:TIME
+
+#SV_ROD_TELEPORT_AWAY
+I:66:13:8:TELEPORT
+
+#**************************Scrolls ********************
+
+#SV_SCROLL_ACQUIREMENT
+I:70:46:10:MAGIC
+
+#SV_SCROLL_ARTIFACT
+I:70:52:99:MAGIC
+
+#SV_SCROLL_BLESSING
+I:70:33:1:LIFE
+
+#SV_SCROLL_CHAOS
+I:70:50:2:CHAOS
+
+#SV_SCROLL_DARKNESS
+I:70:0:1:DARKNESS
+
+#SV_SCROLL_DETECT_DOOR
+I:70:29:1:KNOWLEDGE
+
+#SV_SCROLL_DETECT_GOLD
+I:70:26:1:KNOWLEDGE
+
+#SV_SCROLL_DETECT_INVIS
+I:70:30:1:DARKNESS
+I:70:30:1:KNOWLEDGE
+
+#SV_SCROLL_DETECT_ITEM
+I:70:27:2:KNOWLEDGE
+
+#SV_SCROLL_DETECT_TRAP
+I:70:28:1:KNOWLEDGE
+
+#SV_SCROLL_DISPEL_UNDEAD
+I:70:42:1:EXTRALIFE
+
+#SV_SCROLL_ENCHANT_ARMOR
+I:70:16:3:EXPLOSION
+
+#SV_SCROLL_ENCHANT_WEAPON_PVAL
+I:70:19:10:MAGIC
+
+#SV_SCROLL_ENCHANT_WEAPON_TO_DAM
+I:70:18:3:EXPLOSION
+
+#SV_SCROLL_ENCHANT_WEAPON_TO_HIT
+I:70:17:3:LITE
+
+#SV_SCROLL_FIRE
+I:70:48:1:FIRE
+
+#SV_SCROLL_GENOCIDE
+I:70:44:1:FORCE
+I:70:44:5:DARKNESS
+
+#SV_SCROLL_HOLY_CHANT
+I:70:34:2:LIFE
+
+#SV_SCROLL_HOLY_PRAYER
+I:70:35:3:LIFE
+
+#SV_SCROLL_ICE
+I:70:49:1:COLD
+
+#SV_SCROLL_IDENTIFY
+I:70:12:1:KNOWLEDGE
+
+#SV_SCROLL_LIGHT
+I:70:24:1:LITE
+
+#SV_SCROLL_MAPPING
+I:70:25:2:KNOWLEDGE
+I:70:25:5:LITE
+
+#SV_SCROLL_MASS_GENOCIDE
+I:70:45:1:FORCE
+I:70:45:30:DARKNESS
+
+#SV_SCROLL_MONSTER_CONFUSION
+I:70:36:1:CONFUSION
+
+#SV_SCROLL_PHASE_DOOR
+I:70:8:1:TELEPORT
+
+#SV_SCROLL_PROTECTION_FROM_EVIL
+I:70:37:1:MANA
+I:70:37:9:LIFE
+
+#SV_SCROLL_RECHARGING
+I:70:22:4:LIGHTNING
+
+#SV_SCROLL_REMOVE_CURSE
+I:70:14:1:LIFE
+
+#SV_SCROLL_RESET_RECALL
+I:70:23:1:FORCE
+
+#SV_SCROLL_RUMOR
+I:70:51:1:LIGHTNING
+
+#SV_SCROLL_RUNE_OF_PROTECTION
+I:70:38:1:EXTRALIFE
+I:70:38:6:FORCE
+
+#SV_SCROLL_SATISFY_HUNGER
+I:70:32:1:LIFE
+
+#SV_SCROLL_STAR_ACQUIREMENT
+I:70:47:20:MAGIC
+
+#SV_SCROLL_STAR_DESTRUCTION
+I:70:41:12:FORCE
+
+#SV_SCROLL_STAR_ENCHANT_ARMOR
+I:70:20:9:EXPLOSION
+
+#SV_SCROLL_STAR_ENCHANT_WEAPON
+I:70:21:9:EXPLOSION
+I:70:21:9:LITE
+
+#SV_SCROLL_STAR_IDENTIFY
+I:70:13:1:MAGIC
+I:70:13:20:KNOWLEDGE
+
+#SV_SCROLL_STAR_REMOVE_CURSE
+I:70:15:1:EXTRALIFE
+
+#SV_SCROLL_TELEPORT
+I:70:9:1:TELEPORT
+
+#SV_SCROLL_TELEPORT_LEVEL
+I:70:10:5:TELEPORT
+
+#SV_SCROLL_TRAP_CREATION
+I:70:7:1:CONFUSION
+I:70:7:1:TELEPORT
+
+#SV_SCROLL_TRAP_DOOR_DESTRUCTION
+I:70:39:1:FORCE
+
+#SV_SCROLL_WORD_OF_RECALL
+I:70:11:1:FORCE
+I:70:11:3:TELEPORT
+
+#***************************Staves************************
+
+#Globe of Light
+I:55:3:1:LITE
+#Fiery Shield
+I:55:4:2:FIRE
+I:55:4:1:MANA
+#Remove Curse
+I:55:5:2:LIFE
+#Wings of Winds
+I:55:6:1:FORCE
+#Shake
+I:55:7:4:FORCE
+#Disarm
+I:55:8:1:FORCE
+I:55:8:1:KNOWLEDGE
+#Teleportation
+I:55:9:1:TELEPORT
+#Probability Travel
+I:55:10:1:MANA
+I:55:10:1:TELEPORT
+#11 Recovery
+I:55:11:1:LIFE
+#12 Healing
+I:55:12:1:EXTRALIFE
+#13 Vision
+I:55:13:1:LITE
+#Identify
+I:55:14:1:KNOWLEDGE
+I:55:14:1:MANA
+#Sense Hidden
+I:55:15:1:KNOWLEDGE
+#Reveal Ways
+I:55:16:1:KNOWLEDGE
+#Sense Monsters
+I:55:17:1:KNOWLEDGE
+#Genocide
+I:55:18:1:FORCE
+I:55:18:5:DARKNESS
+#19 Summon
+I:55:19:1:LIFE
+I:55:19:1:TELEPORT
+#Wish
+I:55:20:99:MAGIC
+#Mana
+I:55:21:1:MANA
+#Sterilize
+I:55:24:1:POISON
+I:55:24:1:MANA
+
+#********************Wands*****************
+
+#MannaThrust
+I:65:3:4:MANA
+
+#FireFlash
+I:65:4:1:FIRE
+
+#FireWall
+I:65:5:4:FIRE
+I:65:5:1:MANA
+
+#Tidal Wave
+I:65:6:1:POISON
+I:65:6:1:ACID
+I:65:6:1:COLD
+
+#Ice Storm
+I:65:7:4:COLD
+I:65:7:1:MANA
+
+#Wand of Noxious Cloud
+I:65:8:1:POISON
+
+#Poison Blood
+I:65:9:2:POISON
+I:65:9:1:LIFE
+
+#Thunderstorm
+I:65:10:4:LIGHTNING
+
+#DIG
+I:65:11:1:FORCE
+
+#Stone Prison
+I:65:12:3:FORCE
+I:65:12:1:MANA
+
+#Strike
+I:65:13:1:FORCE
+#Teleport Away
+I:65:14:1:TELEPORT
+#Summon Animal
+I:65:15:4:LIFE
+I:65:15:1:MANA
+#MageLock
+I:65:16:1:FORCE
+#Slow Monster
+I:65:17:1:MANA
+#Essence of Speed
+I:65:18:1:TIME
+#Banishment
+I:65:19:2:TELEPORT
+#20 Disperse Magic
+I:65:20:4:LIFE
+I:65:20:4:MANA
+#Charm
+I:65:21:1:MANA
+I:65:21:1:LIFE
+#Confuse
+I:65:22:1:CONFUSION
+#Deamon Blade
+I:65:23:1:FORCE
+I:65:23:1:FIRE
+#Heal Monster
+I:65:24:1:LIFE
+#25 Haste Monster
+I:65:25:1:MANA
+
+
+
+#RINGS*********************************************************
+
+#ring of poison resistance
+I:45:20:8:POISON
+
+#Ring of Critical Hits
+I:45:59:8:MANA
+
+#Damage
+I:45:29:1:EXPLOSION
+
+#Slaying
+I:45:30:8:EXPLOSION
+I:45:30:8:LITE
+
+#Sound Resistance
+I:45:42:4:EXPLOSION
+I:45:42:4:LITE
+
+#Shard Resistance
+I:45:44:4:EXPLOSION
+I:45:44:4:TELEPORT
+
+#Flying
+I:45:54:12:TELEPORT
+
+#Extra Attacks
+I:45:49:8:TELEPORT
+I:45:49:4:TIME
+
+#Teleportation
+I:45:4:8:TELEPORT
+
+#Lordly Protection
+I:45:48:4:TELEPORT
+I:45:48:12:LITE
+I:45:48:1:EXTRALIFE
+
+#Ring of Ice
+I:45:19:8:COLD
+
+#Ring of Cold Resistance
+I:45:9:4:COLD
+
+#Ring of Flames
+I:45:18:8:FIRE
+
+#Ring of Fire Resistance
+I:45:8:4:FIRE
+
+#Ring of Acid
+I:45:17:8:ACID
+
+#Ring of Disenchantment Resistance
+I:45:45:8:ACID
+I:45:45:2:CHAOS
+
+#Ring of slow digestion
+I:45:6:4:LIFE
+I:45:6:1:TIME
+
+#ring of confusion resistance
+I:45:43:8:CONFUSION
+
+#Ring of Stupidity
+I:45:3:1:CONFUSION
+
+#Ring of Blindness Resistance
+I:45:47:8:LITE
+
+#Ring of Accuracy
+I:45:28:1:LITE
+
+#Ring of Searching
+I:45:23:4:LITE
+I:45:23:3:KNOWLEDGE
+
+#Ring of Chaos
+I:45:46:8:LITE
+
+#Ring of Light and Darkness Resistance
+I:45:39:8:LITE
+I:45:39:8:DARKNESS
+
+#Ring of Speed
+I:45:31:12:TIME
+
+#ring of Weakness
+I:45:2:1:POISON
+
+#ring of Constitution
+I:45:27:2:POISON
+I:45:27:8:LIFE
+
+#ring of Strength
+I:45:24:1:POISON
+I:45:24:1:EXPLOSION
+
+#Ring of Dexterity
+I:45:26:1:KNOWLEDGE
+I:45:26:1:LIGHTNING
+
+#ring of Sustain Constitution
+I:45:13:1:POISON
+I:45:13:4:LIFE
+I:45:13:1:MANA
+
+#ring of Sustain Strength
+I:45:10:1:POISON
+I:45:10:1:EXPLOSION
+I:45:10:1:MANA
+
+#ring of Sustain Intelligence
+I:45:11:1:CONFUSION
+I:45:11:1:MANA
+
+#ring of Intelligence
+I:45:25:1:CONFUSION
+I:45:25:12:KNOWLEDGE
+
+#Ring of Sustain Wisdom
+I:45:12:1:MANA
+I:45:12:4:CONFUSION
+
+#Ring of Sustain Dexterity
+I:45:14:1:MANA
+I:45:14:1:LIGHTNING
+
+#Ring of Sustain Charisma
+I:45:15:1:MANA
+I:45:15:1:DARKNESS
+
+#Ring of See Invisible
+I:45:22:8:DARKNESS
+
+#Ring of Invisibility
+I:45:53:8:DARKNESS
+
+#Ring of Fear resistance
+I:45:38:1:MAGIC
+
+#Ring of Levitation
+I:45:7:1:MANA
+
+#Ring of Nether Resistance
+I:45:40:1:MANA
+I:45:40:12:LIFE
+
+#Ring of Nexus Resistance
+I:45:41:1:MANA
+
+#Ring of Free Action
+I:45:21:1:FORCE
+
+#Ring of Protection
+I:45:16:10:FORCE
+
+#Ring of Lightning
+I:45:56:12:LIGHTNING
+
+#EGO ITEMS, in order by e_idx
+I:1:1:1:MAGIC },/*of Mana*/
+I:1:2:2:MAGIC },/*of Power*/
+I:1:3:3:MAGIC },/*of Wizardry*/
+I:1:4:2:MAGIC },/*of Spell*/
+I:1:5:4:ACID },/*of Resist Acid*/
+I:1:6:4:LIGHTNING },/*of Resist Lightning*/
+I:1:7:4:FIRE },/*of Resist Fire*/
+I:1:8:4:COLD },/*of Resist Cold*/
+I:1:9:4:ACID },/*of Resistance*/
+I:1:9:4:COLD },/*of Resistance*/
+I:1:9:4:FIRE },/*of Resistance*/
+I:1:9:4:LIGHTNING },/*of Resistance*/
+I:1:10:5:ACID },/*Elven*/
+I:1:10:5:COLD },/*Elven*/
+I:1:10:5:FIRE },/*Elven*/
+I:1:10:5:LIGHTNING },/*Elven*/
+I:1:11:1:MAGIC },/*of Permanence*/
+I:1:11:6:ACID },/*of Permanence*/
+I:1:11:6:COLD },/*of Permanence*/
+I:1:11:6:FIRE },/*of Permanence*/
+I:1:11:6:LIGHTNING },/*of Permanence*/
+I:1:12:1:POISON },/*of Leprousness*/
+I:1:13:3:MAGIC },/*of Immunity*/
+I:1:14:5:MAGIC },/*of Defense*/
+I:1:15:4:TELEPORT },/*of Jumping*/
+I:1:16:4:ACID },/*of Resist Acid*/
+I:1:17:4:LIGHTNING },/*of Resist Lightning*/
+I:1:18:4:FIRE },/*of Resist Fire*/
+I:1:19:4:COLD },/*of Resist Cold*/
+I:1:20:4:ACID },/*of Resistance*/
+I:1:20:4:COLD },/*of Resistance*/
+I:1:20:4:FIRE },/*of Resistance*/
+I:1:20:4:LIGHTNING },/*of Resistance*/
+I:1:21:12:FORCE },/*of Reflection*/
+I:1:22:8:LIGHTNING },/*of Electricity*/
+I:1:23:4:DARKNESS },/*of the Noldor*/
+I:1:24:4:KNOWLEDGE },/*of Intelligence*/
+I:1:25:4:KNOWLEDGE },/*of Wisdom*/
+I:1:26:4:KNOWLEDGE },/*of Beauty*/
+I:1:27:12:KNOWLEDGE },/*of the Magi*/
+I:1:28:12:EXPLOSION },/*of Might*/
+I:1:29:4:MANA },/*of Lordliness*/
+I:1:30:8:KNOWLEDGE },/*of Seeing*/
+I:1:31:1:LITE },/*of Infravision*/
+I:1:32:1:LITE },/*of Light*/
+I:1:33:8:KNOWLEDGE },/*of Telepathy*/
+I:1:34:4:LIFE },/*of Regeneration*/
+I:1:35:4:TELEPORT },/*of Teleportation*/
+I:1:40:8:EXPLOSION },/*Dwarven*/
+I:1:40:8:FIRE },/*Dwarven*/
+I:1:40:8:LIFE },/*Dwarven*/
+I:1:40:8:LITE },/*Dwarven*/
+I:1:40:8:MANA },/*Dwarven*/
+I:1:41:4:FORCE },/*of Protection*/
+I:1:42:4:DARKNESS },/*of Stealth*/
+I:1:43:4:ACID },/*of Aman*/
+I:1:43:4:COLD },/*of Aman*/
+I:1:43:4:DARKNESS },/*of Aman*/
+I:1:43:4:FIRE },/*of Aman*/
+I:1:43:4:LIGHTNING },/*of Aman*/
+I:1:44:8:FIRE },/*of Immolation*/
+I:1:48:8:LIGHTNING },/*of Electricity*/
+I:1:49:1:FORCE },/*of Free Action*/
+I:1:50:4:FORCE },/*of Slaying*/
+I:1:50:4:LITE },/*of Slaying*/
+I:1:51:4:LIGHTNING },/*of Agility*/
+I:1:52:4:EXPLOSION },/*of Power*/
+I:1:54:2:DARKNESS },/*of Charming*/
+I:1:57:3:DARKNESS },/*of Levitation*/
+I:1:58:3:DARKNESS },/*of Stealth*/
+I:1:59:3:DARKNESS },/*of Free Action*/
+I:1:60:5:TIME },/*of Speed*/
+I:1:61:2:DARKNESS },/*of Dwarvish Endurance*/
+I:1:61:2:EXPLOSION },/*of Dwarvish Endurance*/
+I:1:65:4:ACID },/*of Aman*/
+I:1:65:4:COLD },/*of Aman*/
+I:1:65:4:DARKNESS },/*of Aman*/
+I:1:65:4:FIRE },/*of Aman*/
+I:1:65:4:LIGHTNING },/*of Aman*/
+I:1:66:1:MAGIC },/*(Defender)*/
+I:1:66:4:ACID },/*(Defender)*/
+I:1:66:4:COLD },/*(Defender)*/
+I:1:66:4:FIRE },/*(Defender)*/
+I:1:66:4:LIGHTNING },/*(Defender)*/
+I:1:67:8:KNOWLEDGE },/*Blessed*/
+I:1:68:12:LIFE },/*of Greater Life*/
+I:1:68:2:MAGIC },/*of Greater Life*/
+I:1:69:4:DARKNESS },/*of Westernesse*/
+I:1:69:4:EXPLOSION },/*of Westernesse*/
+I:1:69:4:LIGHTNING },/*of Westernesse*/
+I:1:69:4:LITE },/*of Westernesse*/
+I:1:70:2:TIME },/*of Extra Attacks*/
+I:1:71:4:FORCE },/*of Slaying*/
+I:1:71:4:LITE },/*of Slaying*/
+I:1:72:4:EXPLOSION },/*of Spinning*/
+I:1:72:4:LIGHTNING },/*of Spinning*/
+I:1:73:4:ACID },/*Acidic*/
+I:1:74:4:LIGHTNING },/*Shocking*/
+I:1:75:4:FIRE },/*Fiery*/
+I:1:76:4:COLD },/*Frozen*/
+I:1:77:4:POISON },/*Venomous*/
+I:1:78:4:CHAOS },/*Chaotic*/
+I:1:79:4:FORCE },/*Sharp*/
+I:1:80:4:FORCE },/*of Earthquakes*/
+I:1:81:8:CHAOS },/*of Slay Animal*/
+I:1:82:8:CHAOS },/*of Slay Evil*/
+I:1:83:8:CHAOS },/*of Slay Undead*/
+I:1:84:8:CHAOS },/*of Slay Demon*/
+I:1:85:8:CHAOS },/*of Slay Orc*/
+I:1:86:8:CHAOS },/*of Slay Troll*/
+I:1:87:8:CHAOS },/*of Slay Giant*/
+I:1:88:8:CHAOS },/*of Slay Dragon*/
+I:1:89:12:CHAOS },/*of *Slay Animal**/
+I:1:90:12:CHAOS },/*of *Slay Evil**/
+I:1:91:12:CHAOS },/*of *Slay Undead**/
+I:1:92:12:CHAOS },/*of *Slay Demon**/
+I:1:93:12:CHAOS },/*of *Slay Orc**/
+I:1:94:12:CHAOS },/*of *Slay Troll**/
+I:1:95:12:CHAOS },/*of *Slay Giant**/
+I:1:96:12:CHAOS },/*of *Slay Dragon**/
+I:1:97:8:LIFE },/*Vampiric*/
+I:1:98:4:MAGIC },/*(*Defender*)*/
+I:1:98:8:ACID },/*(*Defender*)*/
+I:1:98:8:COLD },/*(*Defender*)*/
+I:1:98:8:FIRE },/*(*Defender*)*/
+I:1:98:8:LIGHTNING },/*(*Defender*)*/
+I:1:98:8:POISON },/*(*Defender*)*/
+I:1:99:12:TELEPORT },/*of the Thunderlords*/
+I:1:100:12:KNOWLEDGE },/*of Gondolin*/
+I:1:100:1:MAGIC },/*of Gondolin*/
+I:1:101:1:FORCE },/*of Digging*/
+I:1:102:12:LIFE },/*Spectral*/
+I:1:102:4:MANA },/*Spectral*/
+I:1:105:1:LITE },/*of Accuracy*/
+I:1:106:2:FORCE },/*of Power*/
+I:1:107:2:FORCE },/*of Extra Might*/
+I:1:108:1:FORCE },/*of Extra Shots*/
+I:1:108:1:LITE },/*of Extra Shots*/
+I:1:108:1:TIME },/*of Extra Shots*/
+I:1:109:2:FORCE },/*of Lothlorien*/
+I:1:109:2:LITE },/*of Lothlorien*/
+I:1:110:2:FORCE },/*of the Haradrim*/
+I:1:110:2:LITE },/*of the Haradrim*/
+I:1:111:2:FORCE },/*of Buckland*/
+I:1:111:2:LITE },/*of Buckland*/
+I:1:112:1:CHAOS },/*of Slay Animal*/
+I:1:113:1:CHAOS },/*of Slay Evil*/
+I:1:114:1:CHAOS },/*of Slay Undead*/
+I:1:115:1:POISON },/*of Venom*/
+I:1:116:1:ACID },/*of Acid*/
+I:1:117:12:ACID },/*Elemental*/
+I:1:117:12:COLD },/*Elemental*/
+I:1:117:12:FIRE },/*Elemental*/
+I:1:117:12:LIGHTNING },/*Elemental*/
+I:1:117:12:POISON },/*Elemental*/
+I:1:118:1:CHAOS },/*of Slay Demon*/
+I:1:119:1:CHAOS },/*of Slay Dragon*/
+I:1:120:1:FORCE },/*of Slaying*/
+I:1:120:1:LITE },/*of Slaying*/
+I:1:121:1:LIGHTNING },/*of Lightning*/
+I:1:121:1:LITE },/*of Lightning*/
+I:1:122:1:FIRE },/*of Flame*/
+I:1:122:1:LITE },/*of Flame*/
+I:1:123:1:COLD },/*of Frost*/
+I:1:123:1:LITE },/*of Frost*/
+I:1:124:1:LIFE },/*of Wounding*/
+I:1:128:2:ACID },/*of the Eldar*/
+I:1:128:2:DARKNESS },/*of the Eldar*/
+I:1:129:2:ACID },/*of Power*/
+I:1:129:2:COLD },/*of Power*/
+I:1:129:2:DARKNESS },/*of Power*/
+I:1:129:2:FIRE },/*of Power*/
+I:1:129:2:LIGHTNING },/*of Power*/
+I:1:130:1:MANA },/*Dragon*/
+I:1:131:1:MANA },/*Capacity of */
+I:1:132:1:LIFE },/*Cheapness of */
+I:1:133:1:TIME },/*Quickness of */
+I:1:134:1:TIME },/*Charging of */
+I:1:135:3:LIFE },/*the Istari of */
+I:1:135:3:MANA },/*the Istari of */
+I:1:135:3:TIME },/*the Istari of */
+I:1:136:1:LITE },/*of Boldness*/
+I:1:137:1:LITE },/*of Fearlessness*/
+I:1:138:2:LITE },/*of Illumination*/
+I:1:139:2:LITE },/*of Brightness*/
+I:1:140:4:LITE },/*of *Brightness**/
+I:1:141:4:DARKNESS },/*of the Shadows*/
+I:1:141:4:LITE },/*of the Shadows*/
+I:1:142:4:DARKNESS },/*of Infravision*/
+I:1:142:4:LITE },/*of Infravision*/
+I:1:143:8:DARKNESS },/*of the Eternal Eye*/
+I:1:144:4:MANA },/*of the Ethereal Eye*/
+I:1:146:4:DARKNESS },/*Dwarven*/
+I:1:146:4:EXPLOSION },/*Dwarven*/
+I:1:146:4:LITE },/*Dwarven*/
+I:1:147:1:MAGIC },/*Indestructible*/
+I:1:147:4:ACID },/*Indestructible*/
+I:1:147:4:COLD },/*Indestructible*/
+I:1:147:4:FIRE },/*Indestructible*/
+I:1:147:4:LIGHTNING },/*Indestructible*/
+I:1:147:4:MANA },/*Indestructible*/
+I:1:149:1:FIRE },/*Fireproof*/
+I:1:163:3:DARKNESS },/*of the Magi*/
+I:1:163:3:KNOWLEDGE },/*of the Magi*/
+I:1:163:3:MANA },/*of the Magi*/
+I:1:166:4:MAGIC },/*of Preservation*/
+I:1:166:4:MANA },/*of Preservation*/
+I:1:167:12:MANA },/*of Serenity*/
+I:1:168:4:DARKNESS },/*of Night and Day*/
+I:1:168:4:LITE },/*of Night and Day*/
+I:1:169:1:TIME },/*of the Magi*/
+I:1:169:8:KNOWLEDGE },/*of the Magi*/
+I:1:170:4:DARKNESS },/*of Invisibility*/
+I:1:171:8:DARKNESS },/*of the Bat*/
+I:1:171:8:TELEPORT },/*of the Bat*/
+I:1:172:4:LIGHTNING },/*of Thievery*/
+I:1:173:4:FORCE },/*of Combat*/
+I:1:174:4:TELEPORT },/*of Stability*/
+I:1:175:4:ACID },/*of Elvenkind*/
+I:1:175:4:COLD },/*of Elvenkind*/
+I:1:175:4:FIRE },/*of Elvenkind*/
+I:1:175:4:LIGHTNING },/*of Elvenkind*/
+I:1:176:1:MAGIC },/*of Fury*/
+I:1:176:4:CHAOS },/*of Fury*/
+I:1:176:4:EXPLOSION },/*of Fury*/
+I:1:176:4:MANA },/*of Fury*/
+I:1:178:8:FORCE },/*Magical*/
+I:1:179:4:KNOWLEDGE },/*Simplicity of */
+I:1:180:1:FIRE },/*of Warmth*/
+I:1:185:12:LIFE },/*of Life*/
+I:1:185:2:MAGIC },/*of Life*/
diff --git a/lib/edit/ba_info.txt b/lib/edit/ba_info.txt
new file mode 100644
index 00000000..8156fd2f
--- /dev/null
+++ b/lib/edit/ba_info.txt
@@ -0,0 +1,283 @@
+# File: ba_info.txt
+
+
+# This file is used to initialize the "lib/raw/ba_info.raw" file, which is
+# used to initialize the "store/building actions type" information for
+# the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# N:<index>:<name>
+# C:<hated cost>:<normal cost>:<liked cost>
+# I:<action>:<acttion restriction>:<letter>
+
+# Restriction:
+# 0 = No restrictions
+# 1 = Restrict to normal & liked
+# 2 = Restrict to liked
+
+# Version stamp (required)
+
+V:2.0.0
+
+N:0:Nothing
+C:0:0:0
+I:0:0:.
+
+N:1:Sell an item
+C:0:0:0
+I:43:0:s:d
+
+N:2:Purchase an item
+C:0:0:0
+I:44:0:p:g
+
+N:3:Examine an item
+C:0:0:0
+I:45:0:x
+
+N:4:Steal an item
+C:0:0:0
+I:46:0:Z
+
+N:5:Rest for the night
+C:25:20:15
+I:17:0:r
+
+N:6:Buy food and drink
+C:3:2:1
+I:18:0:f
+
+N:7:Listen for rumours
+C:0:0:0
+I:19:0:u
+
+N:8:Presage fate
+C:600:500:480
+I:42:0:l
+
+N:9:In-Between
+C:0:0:0
+I:12:0:b
+
+N:10:Play craps
+C:0:0:0
+I:14:0:c
+
+N:11:Spin the wheel
+C:0:0:0
+I:15:0:s
+
+N:12:Play dice slots
+C:0:0:0
+I:16:0:d
+
+N:13:Game rules
+C:0:0:0
+I:13:0:r
+
+N:14:Research item
+C:1400:1300:1200
+I:1:0:a
+
+N:15:Town history
+C:0:0:0
+I:2:0:h
+
+N:16:Race legends
+C:0:0:0
+I:3:0:l
+
+N:17:Look at busts of Kings
+C:0:0:0
+I:5:0:l
+
+N:18:Research monster
+C:1600:1500:1400
+I:20:0:r
+
+N:19:View bounties
+C:0:0:0
+I:38:0:v
+
+N:20:Receive bounty money
+C:0:0:0
+I:39:0:b
+
+N:21:Get quest monster
+C:0:0:0
+I:54:0:q
+
+N:22:Turn in quest corpse
+C:0:0:0
+I:55:0:m
+
+N:23:Compare weapons
+C:220:200:180
+I:21:0:c
+
+N:24:Enchant weapon
+C:750:700:150
+I:23:0:w
+
+N:25:Enchant armour
+C:750:700:150
+I:24:0:a
+
+N:26:Recharge item
+C:350:300:75
+I:25:0:r
+
+N:27:Identify possessions
+C:900:800:100
+I:26:0:i
+
+N:28:Healing prayer
+C:600:400:0
+I:28:0:h
+
+N:29:Restoration
+C:600:500:100
+I:29:0:r
+
+N:30:Get share of stolen gold
+C:0:0:0
+I:7:2:g
+
+N:31:Enchant arrows
+C:550:500:100
+I:30:0:a
+
+N:32:Enchant bow
+C:550:500:100
+I:31:0:b
+
+N:33:Recall to dungeon
+C:300:200:100
+I:33:0:r
+
+N:34:Teleport to dungeon-level
+C:15000:10000:1000
+I:34:0:t
+
+N:35:Get a quest
+C:0:0:0
+I:6:0:q
+
+# Restrict to liked/normal
+N:36:Get a quest
+C:0:0:0
+I:46:1:q
+
+N:37:Get a quest
+C:0:0:0
+I:47:0:q
+
+N:38:Get a quest
+C:0:0:0
+I:49:0:q
+
+N:39:Herbal Healing
+C:32000:10000:0
+I:50:0:h
+
+N:40:Song of Lore
+C:2000:800:50
+I:26:0:s
+
+N:41:Distribute earnings
+C:0:0:0
+I:7:2:d
+
+N:42:Morph restoration
+C:3000:1500:750
+I:37:0:r
+
+#for The Mirror
+N:43:View fate
+C:500:500:500
+I:42:0:v
+
+#for The Mirror
+N:44:Research item
+C:1500:1500:1500
+I:1:0:a
+
+#for library in gondol
+N:45:Research item
+C:2000:2000:2000
+I:1:0:a
+
+#for Star-Dome
+N:46:Identify possessions
+C:1200:1000:250
+I:26:0:i
+
+#for Star-Dome
+N:47:Recharge item
+C:1200:1000:150
+I:25:0:r
+
+#for Valarin Temple
+N:48:Restoration
+C:1200:1000:200
+I:29:0:r
+
+#for Sea-Dome
+N:49:Morph restoration
+C:1500:1500:1500
+I:37:0:r
+
+#for The Golden Flower
+N:50:Enchant arrows
+C:1100:1000:200
+I:30:0:a
+
+#for The Golden Flower
+N:51:Enchant bow
+C:1100:1000:200
+I:31:0:b
+
+#for The Fountain
+N:52:Enchant armour
+C:1100:1000:200
+I:24:0:a
+
+#for The Fountain
+N:53:See Healers
+C:1100:1000:0
+I:28:0:h
+
+N:54:Drop an item
+C:0:0:0
+I:43:0:d:s
+
+N:55:Get an item
+C:0:0:0
+I:44:0:g:p
+
+N:56:Request an item
+C:0:0:0
+I:51:2:r
+
+N:57:Ask for loan
+C:0:0:0
+I:52:2:a
+
+N:58:Pay back loan
+C:0:0:0
+I:53:2:p
+
+N:59:Donate an item
+C:0:0:0
+I:43:0:d
+
+# Mage Tower quest in Lothlorien
+N:60:Get a quest
+C:0:0:0
+I:56:0:q
+
+N:61:Get a quest
+C:0:0:0
+I:61:0:q
diff --git a/lib/edit/between.map b/lib/edit/between.map
new file mode 100644
index 00000000..16fcf484
--- /dev/null
+++ b/lib/edit/between.map
@@ -0,0 +1,71 @@
+# Created by Mynstral (mynstral@thehelm.com)
+# Made for PernAngband on 14/08/2001
+
+# Monsters starts awake
+N:0
+
+# Permanent wall
+F:X:63:3
+
+# Floor with dirt
+F:.:88:3
+
+# Floor with grass
+F:,:89:3
+
+# Tree
+F:T:96:3
+
+# Floor with grass with a green thunderlord
+F:G:89:5:955
+
+# Floor with grass with a blue thunderlord
+F:L:89:5:956
+
+# Floor with grass with a brown thunderlord
+F:B:89:5:957
+
+# Floor with grass with a bronze thunderlord
+F:z:89:5:958
+
+# Floor with dirt with a bronze thunderlord
+F:Z:88:5:958
+
+# Floor with grass with a gold thunderlord
+F:D:88:5:959
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X..T.TT..T...T...T...T.....T....T......T...T.,,.....T......T....T...T.T..T..TT...T..T.TT.T.TT.TX
+D:X.T.TTTTT...T..TT..T..T.T.T.T...T.....T..T.TT,,..T...T.....T..T......T..T.T..T.T.TT.T.T.T..TTT.X
+D:XTTT.T.T.T.T..TTT.T.T.TTT.T.T.T..T..T.T..T..T.,,..T....T....T..T.T.T..T.T..T.T.TT.T.TT.TT.TTT.TX
+D:XTTT.T...T....T....T..T.TT..T.T.T...T...GG....,,...GG....T...T...T.TTT.T..TTTT.TT...T.TT..T.T.TX
+D:X.TTT..T.T..TTTT.T.T..T..T.TT...T......G..L..,,...L..G..T..T.T...T....T.TTTTTT..TTTTT.T..TT..T.X
+D:XTT.T.TTT.T.T.T.T.T.T.T...T..T...T..T.G..L..B,,.B..L..G....T..T...TT.T.T..TTT.T.TTTT.TTTT..T.T.X
+D:X.T.TT..T.TT.TTT.T.T.T.T.T.T...T.T.T.G..L..B.,,..B..L..G..T..T...T...T.T.T..TTTT.T.T.TT.T.T.TT.X
+D:X.TT.T.TTT.T.T.T.T..T.T..T....T..T..G..L..B..,Z...B..L..G..T...T.T..T...T...T.T.T.TTT.T.T.T..T.X
+D:XT.T.TT.TTTT.TT.T.TTT...T.T.T...T.T.G..L..B..ZDz..B..L..G...T.T...T.T...T..T..T...T..T.TT.T.T.TX
+D:XTTT..TTTT.T.T.T..T.T....T...T..T.T..G..L..B.,,..B..L..G..T....T...T....T....T..T..TT.T.T.TTT..X
+D:XTT.TT..T.T.T.T.T...T...T....T.T..T.T.G..L...,,....L..G..T..T...T..T.......T...T....T..T..TT...X
+D:XTTT.T..T.T..T.T..T...T..T....TT..T.T..GG....,,.....GG...T.T...T.T...T..T.T...T....T...T..T.T..X
+D:XTT...T.T..T....T....T....T....T...T....T.T..,,,.....T...T..T...T.....T...T...T..T..T...T..T.T.X
+D:XT..T.T...T...T...T.....T....T....T....T...TTTTTTTT...T...T...T....T.....T......T....T.....T..TX
+D:XT.T...T...T..T.T...T.T.T..T...T.T...T...T.T...,.T...T...T...T...T..T.....T....T....T...T...T.TX
+D:XTT.T.T.T.T..T..T.T.T.....T....T..T...T.......,,..T........T...T...T...T...T.....T..T..T...TTT.X
+D:X..TT...T..T.....T...T....T...T...T...T..T...,,.....T..T..T.....T.T...T...T...T..T..T.T...T.TT.X
+D:X.TT..T....T.T..T...T..T...T..T.T.T..T..T.T.,,..T..T..T....T..T..T...T.T....T....T...TT.TTTTTT.X
+D:X.T.TTTTTT.T.T.T...T..T..T.....T.T..T...T.T.,,...T...T......T.....T....T...T..T....T..TT.TTTTTTX
+D:XTTT.T.T.TTTTT.TTT...T..T...TT.T.T...T.T....,,.T...T.....T.....T....T.......T..T...T.TT.T.T.TT.X
+D:XTT.T..T.TT.T.T.TT.T...T.T..T.T.......T..T.,,.....T....T....T...........T..T...TT.TTTTTTTTTTTTTX
+D:XTTTT....TT.T.T.TTTTT.T...T..T.T..T......T.,,T......T....T....T.....T...T...T..TTTT.T.TT.T.TTTTX
+D:XTT.TTTTTT.T.TT.TTTTTT...T....TT.T...T....,,.T...T....T.....T....T....T....T..TT.T.TTT.T.T.T.TTX
+D:XTT.T..TTT.T.T.TTTTTTTT.T...T....T....T.T,,.........T....T....T....T...T.T.T.TTT.T.T.T.T..T.T.TX
+D:XTT.T..TTT..T.T.T.T.TT..T.T.T......T.T.T.,,..T...T...T...T..T...T...T.T.TTT.T.T.T.T.T.T.T.T..T.X
+D:X.T.T.T.T.T.T..T.T.T.T.T.T..T...T..T.TT.T.,,..T...T.....T.....T.....T..TTT.T.T.TTTTT.T.TTT.TT.TX
+D:XTT.T.T.T.TTTT.T..T.T.T.TTTT.T..T.T..T.TT.,,.T...T..T..T.......T.T....TTTTT.TTTT.T.TTT.TTTT.T.TX
+D:XT.T.TT.TTTT.T.T.T.TTT.T.T.TT......T...T...,,..T...T...T....T....T.TTT.T.T.T.T.T.T..T.T.T.T.TT.X
+D:XT.TTT.T.T.TTTT.T.T.T.T.TTT.TT..T...T...T..,,..T...T....T....T..TT.T.TT.TTTTT.T.T.TT.TT.TT.T.T.T
+D:XTT.T.T.TT.T.TTTT.T..TT.T.T.TT.T.T.T..T....,,.T...T...T....T..TTTTTTTT.T.T.T.T.T.TT.T.TTTTT.T.TX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:17:47
diff --git a/lib/edit/d_info.txt b/lib/edit/d_info.txt
new file mode 100644
index 00000000..76cde668
--- /dev/null
+++ b/lib/edit/d_info.txt
@@ -0,0 +1,512 @@
+# File: d_info.txt
+
+
+# This file is used to initialize the "lib/raw/d_info.raw" file, which is
+# used to initialize the "dungeon type" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# Some store indexes are defined in "defines.h", and must not be
+# changed.
+
+# N:<index>:<name>
+# D:<3 letter short name>:<long name>
+# W:<min depth>:<max depth>:<min player level>:<next dungeon>:<min alloc>:<max alloc chance>
+# L:<floor1>:<%1>:<floor2>:<%2>:<floor3>:<%3>
+# A:<wall1>:<%1>:<wall2>:<%2>:<wall3>:<%3>:<outer wall>:<inner wall>
+# O:<%treasure>:<%combat>:<%magic>:<%tools>
+# E:<dices>d<sides>:<frequency>:<attack type>
+# F:<flags>
+# R:<percent>:<flags mode>
+# M:<monster flags>
+# S:<monster spells>
+
+# Note for <flags mode> :
+# 0 = No restriction
+# 1 = AND
+# 2 = NAND
+# 3 = OR
+# 4 = NOR
+
+# Version stamp (required)
+
+V:2.0.0
+
+### Wilderness(purely cosmetic, never used) ###
+
+N:0:Wilderness
+D:Wil:a way to the Wilderness
+W:0:0:0:0:14:500
+L:89:80:199:20:1:0
+A:96:100:56:0:56:0:57:58
+O:20:20:20:20
+F:PRINCIPAL | FLAT | NO_RECALL
+R:100:0
+
+### The principal dungeons, they were created by spliting the vanilla dungeon ###
+
+N:1:Mirkwood
+D:Mkw:a way to the Mirkwood Forest.
+W:11:33:5:0:14:160
+L:89:95:199:5:88:0
+A:96:100:97:0:56:0:202:96
+O:20:20:20:20
+F:PRINCIPAL | NO_DOORS | NO_DESTROY | FLAT
+F:FILL_METHOD_0
+R:100:0
+
+N:2:Mordor
+D:Mdr:a door to the Land of Mordor.
+W:34:66:15:0:14:160
+L:88:67:93:33:1:0
+L:0:100:0
+A:97:50:56:50:56:0:57:97
+A:0:100:0
+O:20:20:20:20
+F:PRINCIPAL | LAVA_RIVER | CAVERN | NO_STREAMERS
+F:FILL_METHOD_2
+R:100:0
+
+N:3:Angband
+D:Ang:an entrance to the Pits of Angband.
+W:67:127:30:0:14:160
+L:1:100:1:0:1:0
+A:56:100:56:0:56:0:57:58
+O:20:20:20:20
+F:PRINCIPAL | CAVERN | NO_EASY_MOVE | NO_RECALL
+F:ADJUST_LEVEL_1_2 | ADJUST_LEVEL_1
+F:FILL_METHOD_0
+R:100:0
+
+N:4:Barrow-Downs
+D:BDw:a way to the Barrow-Downs.
+W:1:10:1:0:14:160
+L:88:78:89:18:199:4
+L:0:95:5
+A:96:34:97:66:56:0:57:97
+A:100:0:0
+O:20:20:20:20
+F:PRINCIPAL | FLAT
+F:FILL_METHOD_3
+R:25:1
+M:UNDEAD
+R:75:0
+
+# The Additional dungeons
+
+# Mount Doom
+# Levels 85-99
+N:5:Mount Doom
+D:MDm:a way to the top of the Mount Doom.
+W:85:99:18:0:14:160
+L:86:90:205:10:1:0
+A:177:100:0:0:0:0:85:87
+O:10:10:30:30
+E:2d10:10:FIRE
+F:CAVE | LAVA_RIVER | NO_RECALL | NO_STREAMERS
+F:FILL_METHOD_0 | NO_EASY_MOVE
+R:100:1
+M:IM_FIRE
+
+# Nether Realm
+# Levels 666-696 (!!!)
+# guarded by Tik'srvzllat, who has the Ring of Phasing
+N:6:Nether Realm
+D:Nth:a magical portal to the Nether Realm.
+W:666:696:40:0:14:160
+L:102:80:86:15:85:5
+A:85:80:87:20:87:0:57:85
+A:50:50:0
+O:25:25:25:25
+E:10d10:3:NETHER
+F:EMPTY | FORGET | NO_BREATH | NO_EASY_MOVE | NO_SHAFT
+F:RANDOM_TOWNS | ADJUST_LEVEL_2 | NO_RECALL | NO_STREAMERS
+F:LAVA_RIVER | FINAL_GUARDIAN_1032 | FINAL_ARTIFACT_203
+F:FILL_METHOD_2 | NO_RECALL_OUT
+R:5:0
+R:95:3
+M:RES_NETH | R_CHAR_G | R_CHAR_W | R_CHAR_U
+
+# The Lost Land of Numenor
+# levels 35-50
+# guarded by Ar-Pharazon the Golden, who has the stone "Toris Mejistos".
+N:7:Submerged Ruins
+D:Num:a submerged way to the lost land of Numenor.
+W:35:50:25:0:14:160
+L:84:95:187:5:1:0
+A:187:80:84:10:56:10:57:187
+A:60:0:40
+O:30:30:10:10
+E:1d1:1:ACID
+F:NO_STREAMERS
+F:FINAL_GUARDIAN_980 | FINAL_ARTIFACT_204
+F:FILL_METHOD_3 | WATER_BREATH
+R:20:0
+R:80:3
+M:AQUATIC | CAN_SWIM | CAN_FLY
+
+# Used for astral mode
+N:8:Halls of Mandos
+D:HMa:*A BUG*YOU should see this message!*
+W:1:98:1:0:14:160
+L:1:100:1:0:1:0
+O:20:20:20:20
+A:56:100:56:0:56:0:57:58
+F:RANDOM_TOWNS | NO_RECALL | NO_SHAFT
+F:FILL_METHOD_0
+R:100:2
+M:UNIQUE
+
+# Cirith Ungol
+# levels 25-50
+# guarded by Shelob.
+N:9:Cirith Ungol
+D:CUg:an entrance to Cirith Ungol.
+W:25:50:10:0:14:160
+L:87:5:88:65:16:30
+A:97:90:16:10:56:0:16:58
+O:30:30:30:10
+E:4d4:20:POISON
+F:FINAL_GUARDIAN_481
+F:CIRCULAR_ROOMS
+F:FILL_METHOD_2
+R:2:0
+R:49:3
+M:SPIDER | R_CHAR_c | R_CHAR_a | R_CHAR_I |
+R:49:3
+M:ORC | R_CHAR_w | R_CHAR_m | R_CHAR_j
+
+# The Heart of the Earth
+# levels 25-36
+# guarded by Golgarach, the Living Rock
+N:10:Heart of the Earth
+D:HoE:a passage leading into the very heart of the world.
+W:25:36:10:0:14:160
+L:1:100:1:0:1:0
+A:56:100:56:0:56:0:57:58
+O:40:10:10:20
+G:life
+F:EVOLVE | FINAL_GUARDIAN_1035 | NO_RECALL | NO_SHAFT
+R:40:3
+M:R_CHAR_# | R_CHAR_X | R_CHAR_g | R_CHAR_E |
+R:30:3
+M:PASS_WALL | KILL_WALL | HURT_ROCK
+R:30:0
+
+# The Void
+# Levels 128-150
+# Where Melkor lurks for the final battle!
+N:11:The Void
+D:Vod:a jumpgate to the Void
+W:128:150:40:0:20:160
+L:183:97:102:3:0:0
+A:183:90:102:10:0:0:102:102
+A:40:60:0
+O:25:25:25:25
+E:20d6:100:DARK
+F:EMPTY | FORGET | NO_BREATH | NO_EASY_MOVE | NO_RECALL_OUT | NO_RECALL |
+F:ADJUST_LEVEL_1_2 | ADJUST_LEVEL_1 | NO_STREAMERS | NO_SHAFT
+F:FILL_METHOD_2
+F:FINAL_GUARDIAN_1044 |
+R:1:0
+R:99:3
+M:UNDEAD | DEMON | DRAGON | NONLIVING | SPIRIT
+
+# TEST dungeon
+N:12:Test
+D:Tst:a way to test dungeon gen
+W:1:10:1:0:14:160
+L:88:78:89:18:199:4
+L:0:95:5
+A:177:100:0:0:0:0:85:87
+A:100:0:0
+O:20:20:20:20
+F:FILL_METHOD_3 | SMALL
+R:100:0
+G:dungeon2
+
+
+# The Paths of the Dead
+# levels 40-70
+# Feagwath is there, guarding Doomcaller
+N:16:Paths of the Dead
+D:PoD:the entrance to the Paths of the Dead.
+W:40:70:18:0:24:100
+L:88:85:84:15:1:0
+A:56:75:87:25:56:0:57:58
+O:30:30:30:2
+E:1d1:20:RAISE
+F:FINAL_GUARDIAN_804 | FINAL_ARTIFACT_91
+F:FILL_METHOD_3
+R:5:0
+R:10:3
+M:R_CHAR_p
+R:85:3
+M:UNDEAD | NONLIVING
+
+# The Illusory Castle
+# levels 35-52
+# Guarded by The Glass Golem guarding The Helm of Knowledge
+N:17:Illusory Castle
+D:Ill:an entrance to the Illusory Castle.
+W:35:52:10:0:24:100
+L:1:98:188:2:1:0
+A:56:50:189:50:56:0:57:58
+O:50:10:20:20
+E:6d2:6:CONFUSION
+F:RANDOM_TOWNS | NO_STREAMERS
+F:FINAL_GUARDIAN_1033 | FINAL_ARTIFACT_160
+F:FILL_METHOD_1
+R:30:0
+R:70:3
+M:STUPID | WEIRD_MIND | SHAPECHANGER | ATTR_MULTI | CHAR_MULTI | RAND_25 |
+M:RAND_50 | EMPTY_MIND | INVISIBLE | PASS_WALL | KILL_WALL
+S:BR_CONF | BR_CHAO | BA_CHAO | CONF | FORGET | TRAPS | MULTIPLY
+
+# The Maze
+# Levels 25-37
+# Guarded by The Minotaur of the Labyrinth with the Steel Helm of Hammerhand
+N:18:Maze
+D:Maz:a small tunnel leading to a maze of twisty little passages, all alike.
+W:25:37:15:0:20:160
+L:1:100:1:0:1:0
+A:56:98:48:2:56:0:57:58
+O:2:40:10:40
+G:maze
+F:SMALLEST | FORGET
+F:FINAL_GUARDIAN_1029 | FINAL_ARTIFACT_38
+R:80:0
+R:20:3
+M:R_CHAR_p
+
+# The Orc Cave
+# levels 10-22
+# There is Azog with the Wand of Thrain at the bottom
+N:19:Orc Cave
+D:Orc:a dark tunnel leading to an Orc Cave.
+W:10:22:8:0:35:200
+L:88:100:1:0:1:0
+A:97:100:56:0:56:0:57:97
+O:5:50:10:25
+F:RANDOM_TOWNS |
+F:FINAL_OBJECT_810 | FINAL_GUARDIAN_373 | CAVE |
+F:FILL_METHOD_0
+R:30:3
+M:TROLL
+R:20:0
+R:50:3
+M:ORC | R_CHAR_k | R_CHAR_o | R_CHAR_O
+
+# Erebor
+# levels 60-72
+# There is Glaurung
+N:20:Erebor
+D:Ere:a tunnel leading into depths of the Lonely Mountain.
+W:60:72:35:0:20:140
+L:88:100:1:0:1:0
+A:97:90:87:10:56:0:57:97
+O:40:40:40:40
+F:BIG | LAVA_RIVER | CAVERN | NO_RECALL | NO_STREAMERS
+F:CAVE | DOUBLE | FINAL_GUARDIAN_715 |
+F:FILL_METHOD_2
+R:10:0
+R:60:1
+M:DRAGON | R_CHAR_D
+R:30:1
+M:DRAGON | R_CHAR_d
+
+# The Old Forest
+# levels 13-25
+# Old Man Willow protects it
+N:21:The Old Forest
+D:OFr:a path into the Old Forest.
+W:13:25:5:0:15:100
+L:88:76:84:16:199:8
+L:68:16:16
+A:96:100:56:0:56:0:202:96
+O:20:5:15:30
+F:WATER_RIVERS | NO_DOORS | NO_DESTROY | FLAT | NO_STREAMERS
+F:RANDOM_TOWNS | FINAL_GUARDIAN_206
+F:FILL_METHOD_3
+R:30:0
+R:40:3
+M:ANIMAL
+R:30:3
+M:UNDEAD | R_CHAR_h
+
+# The Mines of Moria
+# levels 30-50
+# There is Durin's Bane
+N:22:Moria
+D:MoM:a stone door leading to the Mines of Moria.
+W:30:50:20:0:40:40
+L:88:100:1:0:1:0
+A:97:100:56:0:56:0:57:97
+O:30:50:10:5
+F:FINAL_GUARDIAN_872 | WATER_RIVER | BIG | NO_STREAMERS
+F:FORCE_DOWN
+F:RANDOM_TOWNS
+F:WILD_45_30__44_37
+F:FILL_METHOD_0
+R:40:3
+M:ORC
+R:30:3
+M:TROLL | GIANT
+R:20:3
+M:DEMON
+R:10:0
+
+# The tower of Dol Guldur
+# Levels 57-70
+# The Necromancer (weak Sauron) at the bottom, with the Ring of Durin
+N:23:Dol Guldur
+D:TDG:a gate leading to the tower of Dol Guldur.
+W:57:70:34:0:24:160
+L:1:80:174:20:1:0
+A:56:100:56:0:56:0:57:58
+O:20:1:70:9
+F:SMALL | FINAL_GUARDIAN_819 | FINAL_ARTIFACT_205
+F:FILL_METHOD_3
+R:30:3
+M:R_CHAR_p | R_CHAR_P
+R:10:3
+M:ORC | TROLL
+R:20:3
+M:UNDEAD
+R:30:3
+M:DEMON | DRAGON
+R:10:0
+
+# Dungeons from Variaz
+
+# The Small Water Cave
+# levels 32-34
+# The Watcher in the Water is at the bottom
+N:24:The Small Water Cave
+D:SWC:the entrance to a small water cave.
+W:32:34:20:0:14:160
+L:84:100:84:0:84:0
+A:97:100:56:0:56:0:57:58
+O:10:10:30:30
+E:1d1:20:ACID
+F:FINAL_GUARDIAN_517 | NO_RECALL
+F:FILL_METHOD_0
+R:10:0
+R:10:3
+M:AQUATIC
+R:40:1
+M:IM_COLD
+S:BA_WATE
+R:40:3
+M:IM_COLD
+
+# The Land of Mountains
+# Trone the rebel Thunderlord is hiding here, with his suit of
+# thunderlord armour.
+# Levels 45-70
+N:25:The Sacred Land Of Mountains
+D:LoM:the way to the Sacred Land of Mountains.
+W:45:70:20:0:14:160
+L:89:100:89:0:89:0
+A:97:100:56:0:56:0:97:97
+O:20:20:20:20
+F:RANDOM_TOWNS | FLAT | NO_STREAMERS
+F:FINAL_GUARDIAN_789 | FINAL_ARTIFACT_27
+F:FILL_METHOD_0
+R:60:3
+M:CAN_FLY
+R:40:0
+
+# The Land of Rhun
+# levels 26-40
+# Guarded by Ulfang the Black, Morgoth's first Easterling follower.
+N:26:The Land Of Rhun
+D:LoR:a way to the Land of Rhun.
+W:26:40:15:0:14:160
+L:89:100:1:0:1:0
+A:89:50:96:25:84:25:57:58
+O:20:20:20:20
+F:RANDOM_TOWNS | FLAT | NO_STREAMERS | FINAL_GUARDIAN_990
+F:FILL_METHOD_1
+R:30:3
+M:R_CHAR_p | R_CHAR_h
+R:30:3
+M:ANIMAL
+R:40:0
+
+# The Sandworm's Lair
+# level 22-30
+# guarded by the Sandworm Queen (and her children), who will drop her armour
+N:27:The Sandworm lair
+D:SwL:a sandhole.
+W:22:30:12:0:5:200
+L:91:85:94:10:93:5
+A:98:100:96:0:84:0:94:94
+O:15:5:60:20
+F:NO_DOORS | SAND_VEIN |
+F:FINAL_GUARDIAN_1030 | FINAL_ARTIFACT_153
+F:FILL_METHOD_0
+R:90:3
+M:R_CHAR_w
+R:10:3
+S:MULTIPLY
+
+# Used by the death fate
+N:28:Death fate
+D:Dth:a fated death.
+W:1:1:1:0:30:255
+L:1:100:1:0:1:0
+A:1:100:1:0:1:0:1:1
+O:1:1:1:1
+F:EMPTY | SMALLEST | NO_RECALL | NO_STREAMERS
+F:FILL_METHOD_0
+R:100:0
+
+# The Grinding Ice
+# levels 20-40
+# Guarded by the White Balrog
+N:29:The Helcaraxe
+D:Ice:the entrance to the Grinding Ice of the Helcaraxe.
+W:20:40:10:0:14:160
+L:90:0:88:70:84:30
+L:90:0:10
+A:95:0:56:100:56:0:57:58
+A:100:0:0
+O:20:20:20:20
+E:1d4:15:COLD
+F:DOUBLE | WATER_RIVER | CAVERN | NO_STREAMERS
+F:FINAL_GUARDIAN_1034 |
+F:FILL_METHOD_2
+R:100:1
+M:IM_COLD
+
+# The Lost Temple of "..player.pgod.."
+# Generated in god quest.
+# Most dungeon attributes altered during the quest.
+# See god.lua for details
+N:30:A lost temple
+D:LTm:the entrance to a lost temple.
+W:1:50:1:0:14:160
+L:1:100:1:0:1:0
+A:56:100:56:0:56:0:57:58
+O:20:20:20:20
+F:FILL_METHOD_4 | NO_RECALL
+R:100:0
+
+# N:<index>:<name>
+# D:<3 letter short name>:<long name>
+# W:<min depth>:<max depth>:<min player level>:<next dungeon>:<min alloc>:<max alloc chance>
+# L:<floor1>:<%1>:<floor2>:<%2>:<floor3>:<%3>
+# A:<wall1>:<%1>:<wall2>:<%2>:<wall3>:<%3>:<outer wall>:<inner wall>
+# O:<%treasure>:<%combat>:<%magic>:<%tools>
+# E:<dices>d<sides>:<frequency>:<attack type>
+# F:<flags>
+# R:<percent>:<flags mode>
+# M:<monster flags>
+# S:<monster spells>
+# 0 = No restriction
+# 1 = AND
+# 2 = NAND
+# 3 = OR
+# 4 = NOR
diff --git a/lib/edit/dragons.map b/lib/edit/dragons.map
new file mode 100644
index 00000000..164c97c8
--- /dev/null
+++ b/lib/edit/dragons.map
@@ -0,0 +1,43 @@
+# permanent wall
+F:X:61:0
+
+# Mountain Chain
+F:^:97:0
+
+# granite
+F:#:57:0
+
+# up staircase
+F:<:6:0
+
+# Dirt
+F:.:88:0
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X
+D:X^^^^^.....................^^^^^X
+D:X^^^.........................^^^X
+D:X^^...........................^^X
+D:X^^...........................^^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^.............................^X
+D:X^^...........................^^X
+D:X^^...........................^^X
+D:X^^^........................<^^^X
+D:X^^^^^.....................^^^^^X
+D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:6:6
+
diff --git a/lib/edit/e_info.txt b/lib/edit/e_info.txt
new file mode 100644
index 00000000..f01d8cf7
--- /dev/null
+++ b/lib/edit/e_info.txt
@@ -0,0 +1,2210 @@
+# File: e_info.txt
+
+
+# This file is used to initialize the "lib/data/e_info.raw" file, which is
+# used to initialize the "ego-item" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/data/e_info.raw" file.
+
+# The ego-item indexes are defined in "defines.h", and must not be changed.
+
+# Note that every "ego-item" type has a different "index", and can only be
+# created from items that belong to a certain "slot" in the equipment, if
+# one assumes that "ammo" belongs to an imaginary slot (23). However, it
+# is possible for several "ego-item" types to have the same "textual name",
+# such as with "Armor of Resistance" and "Shield of Resistance".
+
+# === Understanding e_info.txt ===
+
+# N: serial number : ego type
+# D: description
+# T: tval : min sval : max sval
+# R: rarity
+# X: position : slot : rating
+# W: depth : rarity1 : rarity2 : cost
+# C: to-hit : to-dam : to-ac : pval
+# r:N:needed flags on the base object
+# r:F:forbidden flags on the base object
+# Z: granted_power
+# F: flags
+
+# 'N' indicated the beginning of an entry. The serial number must increase
+# for each new item.
+
+# 'D' contains description. This field is currently not supported.
+
+# 'T' is for possible tval and sval value of the base item.
+# Up to 5 entries are possible.
+
+# 'R' stands for rarity, or randomness. It specifies percentual chance
+# of generated item to have following 'F' flags. I.e. 'R:40' followed
+# by 'F:SPEED' means, that 40% of item of this ego type will boost speed.
+
+# 'X' is for extra information. Position value 'A' means that ego-type name
+# will appear after base-item name ('Robe of Permanence'), value 'B' means
+# that ego-type name will appear before base-item name ('Elven Plate Mail').
+# Slot is determining in which equipment slots item could be equipped. This
+# value is currently ignored. Rating determines how level feeling will be
+# affected.
+
+# 'W' is for extra information. Depth is the depth the object is normally
+# found at, rarity determines how common the object is and cost is the items
+# value.
+
+# 'C' stands for 'creation'. It determines maximal to-hit, to-damage, AC and
+# stats (pval) values item can get.
+
+# 'Z' is granted power. See tables.c, array powers_type_init (lines 4511-4943).
+
+# 'F' contains flags. Most are self explaining, rest could be found in source.
+
+
+
+# Version stamp (required)
+
+V:2.0.0
+
+### Mage Staff ###
+
+N:1:of Mana
+X:A:24:20
+T:6:0:255
+W:5:3:8:10000
+C:-30:-30:0:3
+R:100
+F:MANA
+f:MANA
+R:70
+F:PVAL_M2
+
+N:2:of Power
+X:A:24:30
+T:6:0:255
+W:5:5:8:20000
+C:-30:-30:0:10
+R:100
+F:SPELL
+f:SPELL
+R:70
+F:PVAL_M2
+
+N:3:of Wizardry
+X:A:24:60
+T:6:0:255
+W:10:1:8:50000
+C:-40:-40:0:3
+R:100
+F:MANA | SPELL
+R:50
+F:PVAL_M2
+
+N:4:of Spell
+T:6:0:255
+X:A:24:60
+W:0:2:8:40000
+C:0:0:0:0
+R:100
+F:ACTIVATE
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+### Body Armor ###
+
+N:5:of Resist Acid
+T:36:0:255
+T:37:0:255
+X:A:30:16
+W:0:4:20:1000
+R:100
+F:RES_ACID | IGNORE_ACID
+f:RES_ACID | IGNORE_ACID
+
+N:6:of Resist Lightning
+T:36:0:255
+T:37:0:255
+X:A:30:10
+W:0:4:20:400
+R:100
+F:RES_ELEC | IGNORE_ELEC
+f:RES_ELEC | IGNORE_ELEC
+
+N:7:of Resist Fire
+T:36:0:15
+T:36:17:255
+T:37:0:255
+X:A:30:14
+W:0:4:20:800
+R:100
+F:RES_FIRE | IGNORE_FIRE
+f:RES_FIRE | IGNORE_FIRE
+
+N:8:of Resist Cold
+T:36:0:15
+T:36:17:255
+T:37:0:255
+X:A:30:12
+W:0:4:20:600
+R:100
+F:RES_COLD | IGNORE_COLD
+f:RES_COLD | IGNORE_COLD
+
+N:9:of Resistance
+T:36:0:255
+T:37:0:255
+X:A:30:20
+W:0:2:20:12500
+C:0:0:10:0
+R:100
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+R:25
+F:R_HIGH
+
+N:10:Elven
+T:36:0:255
+T:37:0:255
+X:B:30:25
+W:0:2:20:15000
+C:0:0:10:3
+R:100
+F:STEALTH | ESP_ORC
+f:STEALTH
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:OLD_RESIST
+R:25
+F:RES_POIS
+
+# Robe
+N:11:of Permanence
+T:36:2:2
+X:A:30:30
+W:0:1:10:30000
+C:0:0:10:0
+R:100
+F:SUST_STR | SUST_DEX | SUST_CON | SUST_INT | SUST_WIS | SUST_CHR |
+F:HOLD_LIFE | RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:OLD_RESIST
+R:2
+F:R_IMMUNITY
+
+# Filthy rags of leprousness
+N:12:of Leprousness
+T:36:1:1
+X:A:30:0
+W:0:1:10:0
+C:0:0:0:-6
+R:100
+F:CON | STR | R_STAT | CURSED
+# No CURSE_NO_DROP here, players seems to unlike surprises
+
+# Mithirl & Adamantite mails & PDSM
+N:13:of Immunity
+T:37:25:25
+T:37:30:30
+T:38:30:30
+X:A:30:40
+W:60:10:100:30000
+C:0:0:5:0
+R:100
+F:R_IMMUNITY
+
+# Ego DSM
+N:14:of Defense
+T:38:0:255
+X:A:30:5
+W:20:40:100:1000
+C:0:0:8:0
+R:100
+F:SUSTAIN
+
+# Boots of Jumping
+N:15:of Jumping
+T:30:0:255
+X:A:35:16
+W:0:3:27:500
+C:0:0:0:3
+Z:blink
+R:100
+F:ACTIVATE
+a:HARDCORE=JUMP
+
+### Shields ###
+
+N:16:of Resist Acid
+T:115:56:56
+T:34:0:5
+T:34:7:255
+X:A:32:16
+W:0:6:22:1000
+R:100
+F:RES_ACID | IGNORE_ACID
+f:RES_ACID | IGNORE_ACID
+
+N:17:of Resist Lightning
+T:34:0:5
+T:34:7:255
+T:115:56:56
+X:A:32:10
+W:0:6:22:400
+R:100
+F:RES_ELEC | IGNORE_ELEC
+f:RES_ELEC | IGNORE_ELEC
+
+N:18:of Resist Fire
+T:34:0:5
+T:34:7:255
+T:115:56:56
+X:A:32:14
+W:0:6:22:800
+R:100
+F:RES_FIRE | IGNORE_FIRE
+f:RES_FIRE | IGNORE_FIRE
+
+N:19:of Resist Cold
+T:115:56:56
+T:34:0:5
+T:34:7:255
+X:A:32:12
+W:0:6:22:600
+R:100
+F:RES_COLD | IGNORE_COLD
+f:RES_COLD | IGNORE_COLD
+
+N:20:of Resistance
+T:115:56:56
+T:34:0:5
+T:34:7:255
+X:A:32:20
+W:0:2:22:12500
+C:0:0:10:0
+R:100
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:21:of Reflection
+T:115:56:56
+T:34:0:5
+T:34:7:255
+X:A:32:20
+W:0:2:22:15000
+C:0:0:5:0
+R:100
+F:REFLECT
+f:REFLECT
+F:IGNORE_ELEC | IGNORE_ACID | IGNORE_COLD | IGNORE_FIRE
+
+# Metal shields only
+N:22:of Electricity
+T:34:3:3
+T:34:5:5
+T:34:10:10
+X:A:32:10
+W:0:2:22:400
+R:100
+F:RES_ELEC | IGNORE_ELEC | SH_ELEC
+f:SH_ELEC
+
+### Crowns and Helms ###
+
+N:23:of the Noldor
+T:115:57:57
+T:32:0:6
+T:32:8:99
+X:A:33:13
+C:0:0:0:2
+W:0:1:8:500
+R:100
+F:DEX | SUST_DEX | ACTIVATE | ESP_ORC
+a:HARDCORE=NOLDOR
+
+N:24:of Intelligence
+X:A:33:13
+C:0:0:0:2
+W:0:2:15:500
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:INT | SUST_INT
+f:INT
+
+N:25:of Wisdom
+X:A:33:13
+W:0:2:15:500
+C:0:0:0:2
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:WIS | SUST_WIS
+f:WIS
+
+N:26:of Beauty
+X:A:33:8
+W:0:2:15:1000
+C:0:0:0:4
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:CHR | SUST_CHR
+f:CHR
+
+# 40% chance of increase spell power
+N:27:of the Magi
+X:A:33:15
+W:0:1:8:7500
+C:0:0:0:3
+T:33:0:99
+R:100
+F:INT | SUST_INT |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:ABILITY | R_HIGH
+R:40
+F:SPELL
+R:50
+F:SPELL_CONTAIN | WIELD_CAST
+
+N:28:of Might
+X:A:33:19
+W:0:1:8:2000
+C:0:0:0:3
+T:33:0:99
+R:100
+F:STR | DEX | CON | SUST_STR | SUST_DEX | SUST_CON | FREE_ACT
+F:R_HIGH
+
+N:29:of Lordliness
+X:A:33:17
+W:0:1:8:2000
+C:0:0:0:3
+T:33:0:99
+R:100
+F:WIS | CHR | SUST_WIS | SUST_CHR
+F:R_HIGH
+
+N:30:of Seeing
+X:A:33:8
+W:0:1:8:1000
+C:0:0:0:5
+T:32:0:6
+T:32:8:99
+T:33:0:99
+T:115:57:57
+R:100
+F:SEARCH | RES_BLIND | SEE_INVIS
+f:SEARCH
+R:20
+F:ESP_ALL
+
+N:31:of Infravision
+X:A:33:11
+W:0:1:15:500
+C:0:0:0:5
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:INFRA | HIDE_TYPE
+f:INFRA
+
+N:32:of Light
+X:A:33:6
+W:0:2:15:500
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:LITE1 | RES_LITE
+f:LITE1
+
+N:33:of Telepathy
+X:A:33:20
+W:0:1:8:50000
+T:33:0:99
+R:100
+F:ESP_ALL
+f:ESP_ALL
+
+N:34:of Regeneration
+X:A:33:10
+W:0:1:8:1500
+T:32:0:6
+T:32:8:99
+T:33:0:99
+T:115:57:57
+R:100
+F:REGEN
+f:REGEN
+
+N:35:of Teleportation
+X:A:33:0
+W:0:1:7:50
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:TELEPORT
+f:TELEPORT
+R:90
+F:CURSED
+
+N:36:of Stupidity
+X:A:33:0
+C:0:0:0:-5
+W:0:2:7:0
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:INT | CURSED
+f:INT
+# No CURSE_NO_DROP here, players seems to unlike surprises
+
+N:37:of Naivety
+X:A:33:0
+C:0:0:0:-5
+W:0:2:7:0
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:WIS
+f:WIS
+
+N:38:of Ugliness
+X:A:33:0
+C:0:0:0:-5
+W:0:1:7:0
+T:32:0:6
+T:32:8:99
+T:115:57:57
+R:100
+F:CHR
+f:CHR
+
+N:39:of Sickliness
+X:A:33:0
+C:0:0:0:-5
+W:0:1:7:0
+T:33:0:99
+R:100
+F:STR | DEX | CON
+
+N:40:Dwarven
+T:32:0:6
+T:32:8:99
+X:B:33:13
+C:0:0:0:2
+W:0:1:8:500
+R:100
+F:INFRA | CON | RES_FIRE | ESP_TROLL | ESP_DRAGON
+
+
+### Cloaks ###
+
+N:41:of Protection
+X:A:31:10
+W:0:4:19:1500
+C:0:0:10:0
+T:35:0:255
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | RES_SHARDS
+
+N:42:of Stealth
+X:A:31:10
+W:0:8:18:500
+C:0:0:0:3
+T:35:0:99
+R:100
+F:STEALTH
+f:STEALTH
+
+N:43:of Aman
+X:A:31:20
+W:0:1:28:4000
+C:0:0:20:3
+T:35:0:255
+R:100
+F:STEALTH |
+f:STEALTH |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:OLD_RESIST
+
+# Aura, Fire
+N:44:of Immolation
+X:A:31:16
+W:0:1:18:4000
+C:0:0:4:0
+T:35:0:255
+R:100
+F:IGNORE_ACID | IGNORE_FIRE | SH_FIRE | RES_FIRE
+f:SH_FIRE
+
+N:45:of Enveloping
+X:A:31:0
+W:0:1:3:0
+C:-10:-10:0:0
+T:35:0:255
+R:100
+F:SHOW_MODS
+
+N:46:of Vulnerability
+X:A:31:0
+W:0:1:3:0
+C:0:0:-50:0
+T:35:0:255
+R:100
+F:AGGRAVATE
+
+N:47:of Irritation
+X:A:31:0
+W:0:1:3:0
+C:-15:-15:0:0
+T:35:0:255
+R:100
+F:AGGRAVATE | SHOW_MODS
+
+# Aura, Electricity
+N:48:of Electricity
+X:A:31:16
+W:0:1:18:4000
+C:0:0:4:0
+T:35:0:255
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | SH_ELEC | RES_ELEC
+
+### Gloves ###
+
+N:49:of Free Action
+X:A:34:11
+W:0:4:10:1000
+T:31:0:99
+R:100
+F:FREE_ACT
+f:FREE_ACT
+
+N:50:of Slaying
+X:A:34:17
+W:0:3:10:1500
+C:6:6:0:0
+T:31:0:99
+R:100
+F:SHOW_MODS
+
+N:51:of Agility
+X:A:34:14
+W:0:2:10:1000
+C:0:0:0:5
+T:31:0:99
+R:100
+F:DEX | HIDE_TYPE
+f:DEX
+
+N:52:of Power
+T:31:0:99
+X:A:34:22
+W:0:1:10:2500
+C:5:5:0:5
+R:100
+F:STR | SHOW_MODS | HIDE_TYPE
+f:STR
+F:R_HIGH
+
+# 53 Gauntlets only
+N:53:of Peace
+X:A:34:0
+W:0:1:3:0
+C:-10:-10:0:0
+T:31:2:2
+R:100
+F:HEAVY_CURSE | CURSED
+
+# 54 Gloves only
+N:54:of Charming
+X:A:34:5
+T:31:1:1
+W:0:1:11:400
+C:0:0:0:6
+R:100
+F:CHR
+R:33
+F:STEALTH
+f:STEALTH
+
+N:55:of Weakness
+T:31:0:99
+X:A:34:0
+W:0:1:3:0
+C:0:0:0:-10
+R:100
+F:STR
+
+N:56:of Clumsiness
+X:A:34:0
+W:0:1:3:0
+C:0:0:0:-10
+R:100
+F:DEX
+T:31:0:99
+
+
+### Boots ###
+
+N:57:of Levitation
+X:A:35:7
+W:0:8:27:250
+T:30:0:99
+R:100
+F:FEATHER
+f:FEATHER
+R:40
+F:R_HIGH
+
+N:58:of Stealth
+X:A:35:16
+W:0:8:27:500
+C:0:0:0:3
+T:30:0:99
+R:100
+F:STEALTH
+f:STEALTH
+
+N:59:of Free Action
+X:A:35:15
+W:0:5:27:1000
+T:30:0:99
+R:100
+F:FREE_ACT
+f:FREE_ACT
+
+N:60:of Speed
+X:A:35:25
+W:0:1:27:200000
+C:0:0:0:10
+T:30:0:99
+R:100
+F:SPEED | HIDE_TYPE
+f:SPEED
+R:10
+F:PVAL_M3
+
+# 61 Metal boots only
+
+N:61:of Dwarvish Endurance
+X:A:35:15
+W:0:1:20:5000
+C:0:0:0:6
+T:30:6:6
+R:100
+F:CON | INFRA | RES_DARK
+R:33
+F:STR
+
+N:62:of Noise
+X:A:35:0
+W:0:1:3:0
+T:30:0:99
+R:100
+F:AGGRAVATE
+f:AGGRAVATE
+
+N:63:of Slowness
+X:A:35:0
+W:0:1:3:0
+C:0:0:0:-5
+T:30:0:99
+R:100
+F:SPEED
+f:SPEED
+
+N:64:of Annoyance
+X:A:35:0
+W:0:1:3:0
+C:0:0:0:-10
+T:30:0:99
+R:100
+F:SPEED | AGGRAVATE
+
+
+### Weapons ###
+
+N:65:of Aman
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:30
+W:0:2:44:20000
+C:6:6:4:3
+R:100
+F:WIS |
+F:SLAY_EVIL | SLAY_UNDEAD | SLAY_DEMON |
+F:SEE_INVIS | BLESSED | RES_FEAR | ESP_EVIL
+F:SUSTAIN | LIMIT_BLOWS
+R:10
+F:BLOWS
+R:1
+F:PVAL_M1
+
+N:66:(Defender)
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:25
+W:0:2:44:15000
+C:4:4:8:4
+R:100
+F:STEALTH |
+f:STEALTH |
+F:FREE_ACT | SEE_INVIS | FEATHER | REGEN |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:SUSTAIN | R_HIGH
+R:33
+F:RES_POIS
+
+N:67:Blessed
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:B:24:20
+W:0:1:44:5000
+C:0:0:0:3
+R:100
+F:WIS | ESP_GOOD
+F:BLESSED | ABILITY
+f:BLESSED
+
+N:68:of Greater Life
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:20
+W:0:1:50:30000
+C:5:5:0:3
+r:N:MUST2H
+R:100
+F:LIFE | HOLD_LIFE
+f:LIFE
+
+N:69:of Westernesse
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:20
+W:0:2:44:20000
+C:5:5:0:2
+R:100
+F:STR | DEX | CON |
+F:SLAY_ORC | SLAY_TROLL | SLAY_GIANT |
+F:FREE_ACT | SEE_INVIS | ESP_ORC | ESP_TROLL | ESP_GIANT
+R:33
+F:RES_FEAR
+R:50
+F:RES_MORGUL
+
+N:70:of Extra Attacks
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:20
+W:0:1:44:10000
+C:0:0:0:3
+R:100
+F:BLOWS
+f:BLOWS
+
+N:71:of Slaying
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:15
+W:0:2:44:2500
+C:0:0:0:0
+R:100
+F:SLAY_WEAP | WOUNDING
+
+N:72:of Spinning
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:18
+W:0:1:44:9000
+C:8:8:0:2
+R:100
+F:DEX | STR | VORPAL | ACTIVATE
+a:HARDCORE=SPIN
+
+# The "Elemental" brands (4) (6)
+
+N:73:Acidic
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:15
+W:0:4:44:5000
+R:100
+F:BRAND_ACID | RES_ACID | IGNORE_ACID
+f:BRAND_ACID
+
+N:74:Shocking
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:20
+W:0:4:44:4500
+R:100
+F:BRAND_ELEC | RES_ELEC | IGNORE_ELEC
+f:BRAND_ELEC
+
+N:75:Fiery
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:20
+W:0:4:44:3500
+R:100
+F:BRAND_FIRE | RES_FIRE | IGNORE_FIRE | LITE1
+f:BRAND_FIRE |
+
+N:76:Frozen
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:15
+W:0:4:44:3000
+R:100
+F:BRAND_COLD | RES_COLD | IGNORE_COLD
+f:BRAND_COLD |
+
+N:77:Venomous
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:20
+W:0:4:44:4000
+R:100
+F:BRAND_POIS | RES_POIS
+f:BRAND_POIS |
+
+N:78:Chaotic
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:29
+T:23:31:255
+T:24:0:255
+T:115:55:55
+X:B:24:28
+W:0:1:44:10000
+R:100
+F:CHAOTIC | RES_CHAOS | IGNORE_ELEC | IGNORE_ACID | IGNORE_FIRE
+f:CHAOTIC
+F:R_ANY
+
+N:79:Sharp
+T:125:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:20
+W:0:2:44:5000
+R:100
+F:VORPAL
+f:VORPAL
+
+N:80:of Earthquakes
+T:125:0:255
+T:21:0:255
+T:115:55:55
+X:A:24:20
+W:0:1:44:4000
+C:10:10:0:6
+R:100
+F:IMPACT | STR | TUNNEL | HIDE_TYPE
+f:IMPACT
+
+# The "Slay" brands (8)
+
+N:81:of Slay Animal
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:18
+W:0:6:44:3500
+R:100
+F:SLAY_ANIMAL
+f:SLAY_ANIMAL
+
+N:82:of Slay Evil
+T:15:0:255
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:18
+W:0:6:44:3500
+R:100
+F:SLAY_EVIL
+f:SLAY_EVIL
+
+N:83:of Slay Undead
+T:15:0:255
+T:21:0:19
+T:21:21:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:18
+W:0:6:44:3500
+R:100
+F:SLAY_UNDEAD
+f:SLAY_UNDEAD
+
+N:84:of Slay Demon
+T:15:0:255
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:14
+W:0:6:44:2500
+R:100
+F:SLAY_DEMON
+f:SLAY_DEMON
+
+N:85:of Slay Orc
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:10
+W:0:6:44:2500
+R:100
+F:SLAY_ORC
+f:SLAY_ORC
+
+N:86:of Slay Troll
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:10
+W:0:6:44:2500
+R:100
+F:SLAY_TROLL
+f:SLAY_TROLL
+
+N:87:of Slay Giant
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:14
+W:0:6:44:2500
+R:100
+F:SLAY_GIANT
+f:SLAY_GIANT
+
+N:88:of Slay Dragon
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:18
+W:0:6:44:3500
+R:100
+F:SLAY_DRAGON
+f:SLAY_DRAGON
+
+# The "Kill" brands (8)
+
+N:89:of *Slay Animal*
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:20
+W:0:2:44:6000
+C:0:0:0:2
+R:100
+F:INT | SLAY_ANIMAL | SLOW_DIGEST | STEALTH | ESP_ANIMAL
+f:SLAY_ANIMAL | STEALTH
+
+N:90:of *Slay Evil*
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:20
+W:0:2:44:6000
+C:0:0:0:2
+R:100
+F:WIS | SLAY_EVIL | BLESSED | ESP_EVIL | RES_FEAR | ABILITY
+f:SLAY_EVIL |
+
+N:91:of *Slay Undead*
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:24
+W:0:2:44:8000
+C:0:0:0:2
+R:100
+F:WIS | KILL_UNDEAD | SEE_INVIS | ESP_UNDEAD | RES_NETHER
+f:KILL_UNDEAD |
+
+N:92:of *Slay Demon*
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:16
+W:0:2:44:8000
+C:0:0:0:2
+R:100
+F:INT | KILL_DEMON | ESP_DEMON | RES_FIRE | RES_CHAOS
+f:KILL_DEMON |
+
+N:93:of *Slay Orc*
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:14
+W:0:2:44:4000
+C:0:0:0:2
+R:100
+F:DEX | SLAY_ORC | ESP_ORC | SUST_DEX |
+f:SLAY_ORC |
+
+N:94:of *Slay Troll*
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:14
+W:0:2:44:4000
+C:0:0:0:2
+R:100
+F:STR | SLAY_TROLL | ESP_TROLL | REGEN | SUST_STR
+f:SLAY_TROLL |
+
+N:95:of *Slay Giant*
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:16
+W:0:2:44:4000
+C:0:0:0:2
+R:100
+F:STR | SLAY_GIANT | ESP_GIANT | RES_SHARDS | SUST_STR
+f:SLAY_GIANT |
+
+N:96:of *Slay Dragon*
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:24
+W:0:2:44:8000
+C:0:0:0:2
+R:100
+F:CON | KILL_DRAGON | ESP_DRAGON | RES_FEAR |
+f:KILL_DRAGON
+F:R_LOW | R_ELEM
+R:20
+F:RES_POIS
+
+N:97:Vampiric
+T:125:0:255
+T:23:0:255
+T:115:55:55
+X:B:24:25
+W:0:2:44:10000
+C:0:0:0:-2
+R:100
+F:LIFE | VAMPIRIC | HOLD_LIFE
+f:LIFE | VAMPIRIC
+
+N:98:(*Defender*)
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:35
+W:0:1:100:50000
+C:-15:-15:20:4
+R:100
+F:STEALTH | RES_POIS | DEX | CON | WIS | HOLD_LIFE |
+f:STEALTH
+F:FREE_ACT | SEE_INVIS | FEATHER | REGEN |
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:R_ANY | R_LOW | SUSTAIN
+R:30
+F:R_ANY | R_LOW | SUSTAIN
+R:20
+F:R_ANY | R_LOW | SUSTAIN | R_HIGH
+R:10
+F:R_IMMUNITY | R_ANY
+
+N:99:of the Thunderlords
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:22
+W:0:1:100:7000
+C:4:4:0:2
+a:HARDCORE=TELEPORT
+R:100
+F:SLAY_EVIL | KILL_DRAGON | TELEPORT | FREE_ACT | SEARCH | BRAND_ELEC
+F:REGEN | SLOW_DIGEST | RES_NEXUS | ACTIVATE | FLY | ESP_DRAGON
+F:R_HIGH
+R:12
+F:ABILITY
+R:2
+F:R_P_ABILITY | PVAL_M3 | LIMIT_BLOWS
+
+N:100:of Gondolin
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:26
+W:0:1:44:25000
+C:7:7:0:3
+R:100
+F:STR | CON | ESP_EVIL | RES_FEAR |
+F:SLAY_EVIL | SLAY_TROLL | SLAY_DRAGON | SLAY_DEMON |
+F:FREE_ACT | SEE_INVIS | LITE1 | RES_DARK | ABILITY |
+F:IGNORE_ACID | IGNORE_FIRE
+R:33
+F:R_HIGH
+R:33
+F:HOLD_LIFE
+R:22
+F:DEX
+
+# Diggers only
+
+N:101:of Digging
+T:20:0:255
+X:A:24:4
+W:0:1:2:500
+C:0:0:0:5
+R:100
+F:TUNNEL |
+f:TUNNEL |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+# More weapons
+
+N:102:Spectral
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:B:24:30
+W:0:1:5:5000
+R:100
+F:SLAY_UNDEAD | SEE_INVIS | HOLD_LIFE | DRAIN_HP
+F:ACTIVATE
+a:HARDCORE=SPECTRAL
+
+N:103:of Morgul
+T:125:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:0
+W:0:1:1:0
+C:-20:-20:-10:-10
+R:100
+F:LUCK
+F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED | BLACK_BREATH | DRAIN_EXP |
+F:AUTO_CURSE | WOUNDING
+# No CURSE_NO_DROP here, players seems to unlike surprises
+
+N:104:of Nothingness
+T:125:0:255
+T:15:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+X:A:24:0
+W:0:1:2:0
+C:-100:-100:0:0
+R:100
+F:NEVER_BLOW | HEAVY_CURSE | CURSED | AUTO_CURSE
+
+
+### Missile Launchers ###
+
+N:105:of Accuracy
+T:19:0:255
+T:15:0:255
+X:A:25:10
+W:0:8:21:1000
+C:15:5:0:0
+
+N:106:of Power
+T:19:0:255
+T:15:0:255
+X:A:25:10
+W:0:8:21:1000
+C:5:15:0:0
+
+N:107:of Extra Might
+T:19:0:255
+X:A:25:20
+W:0:4:21:10000
+C:5:10:0:1
+R:100
+F:XTRA_MIGHT | PVAL_M3 | R_ANY
+f:XTRA_MIGHT |
+
+N:108:of Extra Shots
+T:19:0:255
+X:A:25:20
+C:10:5:0:1
+W:0:4:21:10000
+R:100
+F:XTRA_SHOTS | PVAL_M2
+f:XTRA_SHOTS |
+
+# Bows only
+N:109:of Lothlorien
+T:19:12:13
+X:A:25:20
+W:50:2:21:30000
+C:10:10:0:2
+R:100
+F:DEX | XTRA_MIGHT | FREE_ACT | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE |
+F:BLESSED | ABILITY
+
+# Crossbows only
+N:110:of the Haradrim
+T:19:23:24
+X:A:25:30
+W:50:2:21:20000
+C:5:15:0:1
+R:100
+F:XTRA_MIGHT | XTRA_SHOTS | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE
+
+# Slings only
+N:111:of Buckland
+X:A:25:25
+W:40:2:21:20000
+C:8:8:0:2
+T:19:2:2
+R:100
+F:DEX | XTRA_SHOTS | XTRA_MIGHT | IGNORE_ACID | IGNORE_FIRE | HIDE_TYPE
+
+
+### Ammo ###
+
+N:112:of Slay Animal
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+W:0:2:12:25
+R:100
+F:SLAY_ANIMAL
+f:SLAY_ANIMAL
+
+N:113:of Slay Evil
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+W:0:2:12:25
+R:100
+F:SLAY_EVIL
+f:SLAY_EVIL
+
+N:114:of Slay Undead
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+W:0:1:12:35
+R:100
+F:SLAY_UNDEAD
+f:SLAY_UNDEAD
+
+N:115:of Venom
+T:16:0:99
+T:17:0:2
+T:18:0:2
+X:A:23:10
+R:100
+F:BRAND_POIS
+f:BRAND_POIS
+W:0:2:12:25
+
+N:116:of Acid
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+R:100
+F:BRAND_ACID | IGNORE_ACID
+f:BRAND_ACID |
+W:0:1:12:30
+
+# 117 All Elements at once - melee weapon
+N:117:Elemental
+X:B:24:30
+W:10:1:50:26000
+T:21:0:99
+T:22:0:99
+T:23:0:99
+T:24:0:99
+R:100
+F:BRAND_ACID | RES_ACID | IGNORE_ACID
+F:BRAND_ELEC | RES_ELEC | IGNORE_ELEC
+F:BRAND_FIRE | RES_FIRE | IGNORE_FIRE
+F:BRAND_COLD | RES_COLD | IGNORE_COLD
+F:BRAND_POIS | RES_POIS | DRAIN_MANA
+f:BRAND_ACID |
+f:BRAND_ELEC |
+f:BRAND_FIRE |
+f:BRAND_COLD |
+f:BRAND_POIS |
+
+N:118:of Slay Demon
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+W:0:1:12:35
+R:100
+F:SLAY_DEMON
+f:SLAY_DEMON
+
+N:119:of Slay Dragon
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+R:100
+F:SLAY_DRAGON
+f:SLAY_DRAGON
+W:0:1:12:35
+
+N:120:of Slaying
+X:A:23:15
+W:0:1:12:20
+C:12:12:0:0
+R:100
+F:DAM_DIE
+
+N:121:of Lightning
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+R:100
+F:BRAND_ELEC | IGNORE_ELEC
+f:BRAND_ELEC |
+W:0:1:12:30
+
+N:122:of Flame
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+R:100
+F:BRAND_FIRE | IGNORE_FIRE
+f:BRAND_FIRE |
+W:0:2:12:25
+
+N:123:of Frost
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:10
+R:100
+F:BRAND_COLD | IGNORE_COLD
+f:BRAND_COLD |
+W:0:2:12:25
+
+N:124:of Wounding
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:5
+W:0:3:12:20
+C:6:6:0:0
+
+N:125:of Backbiting
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:A:23:0
+W:0:1:2:0
+C:-50:-50:0:0
+
+
+### Special Broken Items ###
+
+# Destroyed Weapon
+N:126:Shattered
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:B:24:0
+W:0:1:2:0
+C:-5:-5:0:0
+
+# Destroyed Body Armor
+
+N:127:Blasted
+T:16:0:99
+T:17:0:99
+T:18:0:99
+X:B:30:0
+W:0:1:2:0
+C:0:0:-10:0
+
+
+# Instruments
+
+N:128:of the Eldar
+T:14:0:59
+T:14:61:255
+X:A:25:20
+W:0:2:3:1000
+C:0:0:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |
+F:RES_ACID | CHR | SEE_INVIS
+F:R_ANY | PVAL_M2
+R:25
+F:PVAL_M1
+
+N:129:of Power
+T:14:0:59
+T:14:61:255
+X:A:25:20
+W:0:1:3:2000
+C:0:0:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | SUST_CHR |
+F:RES_FIRE | RES_COLD | RES_ELEC | RES_ACID | CHR | SEE_INVIS
+F:R_ANY | PVAL_M3
+R:50
+F:PVAL_M1
+R:35
+F:PVAL_M1
+
+# Horn, now four different ego items (for different GF_ values)
+# see items 181, 182 & 183.
+N:130:Dragon
+T:14:60:60
+X:B:25:20
+W:0:1:2:2000
+C:0:0:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | ACTIVATE
+F:R_ANY | PVAL_M2
+R:50
+F:PVAL_M1
+R:25
+F:PVAL_M1
+a:HARDCORE=BA_ACID_H
+
+# Rods ego
+N:131:Capacity of
+T:67:0:255
+X:A:51:10
+W:0:2:10:1000
+C:0:0:0:0
+R:100
+F:CAPACITY
+f:CAPACITY
+
+N:132:Cheapness of
+T:67:0:255
+X:A:51:10
+W:0:2:10:700
+C:0:0:0:0
+R:100
+F:CHEAPNESS
+f:CHEAPNESS
+
+N:133:Quickness of
+T:67:0:255
+X:A:51:15
+W:0:3:10:1100
+C:0:0:0:0
+R:100
+F:FAST_CAST
+f:FAST_CAST
+
+N:134:Charging of
+T:67:0:255
+X:A:51:15
+W:0:2:10:1500
+C:0:0:0:0
+R:100
+F:CHARGING
+f:CHARGING
+
+N:135:the Istari of
+T:67:0:255
+X:A:51:10
+W:0:1:10:10000
+C:0:0:0:0
+R:100
+F:CAPACITY | CHARGING | CHEAPNESS | FAST_CAST |
+
+### Lights ###
+
+N:136:of Boldness
+X:A:0:5
+T:39:0:99
+W:0:1:5:1000
+Z:remove fear
+
+N:137:of Fearlessness
+X:A:0:5
+T:39:0:99
+W:0:1:10:1500
+R:100
+F:RES_FEAR
+
+N:138:of Illumination
+X:A:0:5
+T:39:0:99
+W:0:3:10:1000
+Z:illuminate
+R:10
+F:LITE1
+R:5
+F:LITE2
+R:2
+F:LITE3
+
+N:139:of Brightness
+X:A:0:5
+T:39:0:99
+W:0:3:10:1000
+R:100
+F:LITE1
+f:LITE1
+R:60
+F:LITE2
+R:30
+F:LITE3
+R:30
+F:RES_DARK
+
+N:140:of *Brightness*
+X:A:0:9
+T:39:0:99
+W:0:1:40:5000
+R:100
+F:LITE1
+F:LITE2
+F:LITE3
+f:LITE1
+f:LITE2
+f:LITE3
+F:RES_DARK
+
+N:141:of the Shadows
+X:A:0:6
+T:39:0:99
+W:0:1:20:3000
+C:0:0:0:2
+R:100
+F:INVIS
+R:70
+F:RES_DARK
+R:50
+F:RES_LITE
+
+N:142:of Infravision
+X:A:0:3
+T:39:0:99
+W:0:1:10:700
+C:0:0:0:3
+R:100
+F:INFRA
+f:INFRA
+
+N:143:of the Eternal Eye
+X:A:0:7
+T:39:0:99
+W:0:3:40:4000
+C:0:0:0:0
+R:100
+F:RES_BLIND | SEE_INVIS
+
+N:144:of the Ethereal Eye
+X:A:0:7
+T:39:0:99
+W:0:3:40:4000
+C:0:0:0:0
+Z:magic map
+
+N:145:of Fading
+X:A:0:0
+T:39:2:99
+W:0:1:1:0
+C:0:0:0:0
+R:100
+F:FUEL_LITE
+
+# Armor (dwarven): must be heavy metal, and not rusty chain mail
+
+N:146:Dwarven
+T:37:2:255
+X:B:30:18
+W:0:2:20:5000
+C:0:0:15:2
+R:100
+F:STR | CON | INFRA | FREE_ACT | HIDE_TYPE |
+F:RES_FEAR | RES_DARK | SUST_STR | SUST_CON |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+# Ring and Amulet egos
+
+N:147:Indestructible
+X:B:0:2
+T:40:0:255
+T:45:0:255
+W:0:1:10:1000
+C:0:0:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+f:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:148:Cursed
+X:B:0:0
+T:40:0:255
+T:45:0:255
+W:0:1:10:0
+C:0:0:0:0
+R:100
+F:AUTO_CURSE
+f:AUTO_CURSE
+
+# Scrolls & school spellbooks & staves
+N:149:Fireproof
+X:B:0:1
+T:70:0:255
+T:111:0:255
+T:55:0:255
+W:0:1:10:1000
+C:0:0:0:0
+R:100
+F:IGNORE_FIRE
+f:IGNORE_FIRE
+
+# Wands & Staffs(NOT wishing nor nothing)
+N:150:of Plenty
+X:A:0:1
+T:55:0:29
+T:55:32:255
+T:65:0:29
+T:65:31:255
+W:0:1:20:1000
+C:0:0:0:3
+R:100
+F:PVAL_M5 | PVAL_M3
+R:50
+F:PVAL_M5 | PVAL_M3
+R:10
+F:PVAL_M5 | PVAL_M3
+R:1
+F:PVAL_M5 | PVAL_M3
+
+
+### Trapping Kits ###
+
+N:151:of Extra Might
+X:A:0:5
+T:46:1:3
+W:0:1:10:1000
+C:20:20:0:2
+R:100
+F:XTRA_MIGHT
+f:XTRA_MIGHT
+
+N:152:of Extra Shots
+X:A:0:10
+T:46:0:99
+W:0:1:10:2000
+C:20:20:0:3
+R:100
+F:XTRA_SHOTS
+f:XTRA_SHOTS
+
+N:153:Automatic
+X:B:0:15
+T:46:0:99
+W:0:1:10:3000
+C:10:10:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE |
+F:AUTOMATIC_5
+f:AUTOMATIC_5
+
+N:154:Fully Automatic
+X:B:0:15
+T:46:0:99
+W:0:1:15:5000
+C:10:10:0:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE |
+F:AUTOMATIC_99
+f:AUTOMATIC_99
+
+N:155:Well-hidden
+X:B:0:5
+T:46:0:99
+W:0:1:8:1000
+C:15:15:5:12
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE |
+F:STEALTH | HIDE_TYPE
+f:STEALTH
+
+N:156:Complicated
+X:B:0:10
+T:46:0:99
+W:0:1:12:2000
+C:15:15:30:0
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_COLD | IGNORE_FIRE
+
+N:157:Obvious
+X:B:0:0
+T:46:0:99
+W:0:1:1:0
+C:-20:-20:-20:-20
+R:100
+F:STEALTH | CURSED | HIDE_TYPE
+f:STEALTH
+
+N:158:for Dragons
+X:A:0:5
+T:46:0:99
+W:0:3:10:500
+C:20:20:10:4
+R:100
+F:STEALTH | ONLY_DRAGON | HIDE_TYPE | XTRA_SHOTS |
+F:IGNORE_ACID | IGNORE_FIRE
+
+N:159:for Demons
+X:A:0:5
+T:46:0:99
+W:0:3:10:500
+C:20:20:10:4
+R:100
+F:STEALTH | ONLY_DEMON | HIDE_TYPE | XTRA_SHOTS
+F:IGNORE_ACID | IGNORE_FIRE
+
+N:160:for Animals
+X:A:0:5
+T:46:0:99
+W:0:3:10:500
+C:20:20:10:4
+R:100
+F:STEALTH | ONLY_ANIMAL | HIDE_TYPE | XTRA_SHOTS
+
+N:161:for Undead
+X:A:0:5
+T:46:0:99
+W:0:3:10:500
+C:20:20:10:4
+R:100
+F:STEALTH | ONLY_UNDEAD | HIDE_TYPE | XTRA_SHOTS | KILL_GHOST
+
+N:162:for Evil
+X:A:0:5
+T:46:0:99
+W:0:3:10:500
+C:20:20:10:4
+R:100
+F:STEALTH | ONLY_EVIL | HIDE_TYPE | XTRA_SHOTS | KILL_GHOST
+
+# Lite ego
+N:163:of the Magi
+X:A:0:0
+T:39:1:99
+W:0:1:150:2000
+C:0:0:0:3
+Z:magic map
+R:100
+F:INT | WIS | CHR
+R:60
+F:INVIS | RES_BLIND
+R:30
+F:R_HIGH
+R:30
+F:PVAL_M2
+R:50:
+F:SPELL_CONTAIN | WIELD_CAST
+
+### New ego-items added by JLE
+
+# Armor of Vulnerability (the only cursed armor)
+N:164:of Vulnerability
+X:A:30:0
+W:0:2:20:0
+C:0:0:-50:0
+T:36:0:99
+T:37:0:99
+R:100
+F:AGGRAVATE | CURSED
+
+# Shield of Vulnerability (the only cursed shield)
+N:165:of Vulnerability
+X:A:32:0
+W:0:2:22:0
+C:0:0:-50:0
+T:115:56:56
+T:34:0:99
+R:100
+F:AGGRAVATE | CURSED
+
+# Shield of Preservation -
+N:166:of Preservation
+X:A:32:25
+W:40:2:44:20000
+C:-10:-10:20:0
+T:115:56:56
+T:34:0:99
+R:100
+F:RES_DISEN | SUST_STR | SUST_CON | SUST_DEX | HOLD_LIFE | R_HIGH |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+R:33
+F:R_LOW
+R:33
+F:R_LOW
+
+# Helm/Crown of Serenity
+N:167:of Serenity
+X:A:33:20
+W:35:1:15:4000
+T:32:0:6
+T:32:8:99
+T:33:0:99
+R:100
+F:RES_SOUND | RES_CONF | RES_FEAR
+
+# Crown of Night and Day
+N:168:of Night and Day
+X:A:33:18
+W:35:1:15:4000
+T:33:0:99
+R:100
+F:RES_LITE | RES_DARK | LITE1 | SEE_INVIS | RES_BLIND | IGNORE_ACID
+
+# Cloak of the Magi
+N:169:of the Magi
+X:A:31:15
+W:30:1:18:2000
+C:-5:-5:5:3
+T:35:0:99
+R:100
+F:INT | SPEED | SUST_INT | FREE_ACT | STEALTH | HIDE_TYPE | IGNORE_ACID
+R:30
+F:SPELL_CONTAIN | WIELD_CAST
+
+# Cloak of Invisibility
+N:170:of Invisibility
+X:A:31:20
+W:40:1:18:3000
+C:0:0:10:5
+T:35:0:99
+R:100
+F:STEALTH | HIDE_TYPE | INVIS
+f:INVIS
+
+# Cloak of the Bat
+N:171:of the Bat
+X:A:31:15
+W:50:1:35:3000
+C:-10:-10:10:3
+T:35:0:99
+R:100
+F:SPEED | FLY | RES_DARK | SEE_INVIS | INFRA | HIDE_TYPE | STEALTH
+
+# Leather Gloves of Thievery
+N:172:of Thievery
+X:A:34:22
+W:40:1:15:5000
+C:8:3:0:5
+T:31:1:1
+R:100
+F:DEX | SEARCH | SHOW_MODS | FEATHER | FREE_ACT | HIDE_TYPE | IGNORE_ACID
+R:10
+F:SPEED
+
+# Gauntlets and Cesti of Combat
+N:173:of Combat
+X:A:34:22
+W:50:1:15:7000
+C:6:8:-20:2
+T:31:2:99
+R:100
+F:STR | CON | SHOW_MODS | AGGRAVATE | HIDE_TYPE | IGNORE_ACID | RES_FEAR |
+F:DRAIN_HP
+R:25
+F:BLOWS
+
+# Boots of Stability
+N:174:of Stability
+X:A:35:20
+W:0:3:27:5000
+T:30:0:99
+R:100
+F:RES_NEXUS | FEATHER
+
+# Boots of Elvenkind (leather boots only)
+N:175:of Elvenkind
+X:A:35:30
+W:60:1:36:200000
+C:0:0:0:5
+T:30:2:3
+R:100
+F:STEALTH | SPEED | HIDE_TYPE | FEATHER | IGNORE_ACID | IGNORE_FIRE | ABILITY
+
+# Weapon of Fury (must be big heavy type of weapon, no daggers or whips)
+N:176:of Fury
+X:A:24:30
+W:40:1:66:20000
+T:21:12:99
+T:22:10:99
+T:23:16:99
+T:24:8:99
+T:125:0:99
+C:10:10:-20:2
+R:100
+F:STR | BLOWS | AGGRAVATE | RES_FEAR | HIDE_TYPE |
+F:IGNORE_ACID | IGNORE_FIRE | DRAIN_MANA
+
+# Staffs of wishing
+N:177:of Plenty
+X:A:0:1
+T:55:31:31
+W:0:1:20:1000
+C:0:0:0:2
+R:100
+F:PVAL_M2
+
+
+# Diggers only
+
+N:178:Magical
+T:20:0:255
+X:B:24:4
+W:0:1:10:500
+C:0:0:0:0
+Z:stone to mud
+R:100
+
+# Rod
+N:179:Simplicity of
+T:67:0:255
+X:A:51:8
+W:3:2:8:1000
+C:0:0:0:0
+R:100
+F:EASY_USE
+f:EASY_USE
+
+# Lite ego
+N:180:of Warmth
+X:A:0:0
+T:39:1:99
+W:0:1:10:500
+C:0:0:0:0
+R:100
+F:RES_COLD
+
+#Three more horn types, for different activation types...
+N:181:Dragon
+T:14:7:7
+X:B:25:20
+W:0:1:2:2000
+C:0:0:0:0
+a:HARDCORE=BA_COLD_3
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |
+
+N:182:Dragon
+T:14:7:7
+X:B:25:20
+W:0:1:2:2000
+C:0:0:0:0
+a:HARDCORE=BA_ELEC_3
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |
+
+N:183:Dragon
+T:14:7:7
+X:B:25:20
+W:0:1:2:2000
+C:0:0:0:0
+a:HARDCORE=BA_FIRE_H
+R:100
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |
+
+# Helm of water breathing
+N:184:of Water Breathing
+X:A:33:13
+C:0:0:0:2
+W:15:1:25:1000
+T:32:5:10
+R:100
+F:WATER_BREATH | IGNORE_ACID
+f:WATER_BREATH
+
+# A second of life for non MUST2H weapons, much lower value tho
+N:185:of Life
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+X:A:24:20
+W:0:1:50:30000
+C:5:5:0:1
+r:F:MUST2H
+R:100
+F:LIFE | HOLD_LIFE
+f:LIFE
+
+# Cloak of Air
+N:186:of Air
+X:A:31:10
+W:30:1:35:1500
+C:0:0:0:0
+T:35:0:255
+R:100
+F:MAGIC_BREATH
+
+# Ego DSM
+N:187:Polished
+T:38:0:255
+X:B:30:5
+W:40:25:100:25000
+C:0:0:0:0
+R:100
+F:REFLECT
+
+# Ego Heavy Crossbow
+N:188:of Siegecraft
+T:19:24:24
+X:A:25:30
+W:60:5:30:30000
+C:10:15:20:2
+R:120
+F:XTRA_MIGHT | XTRA_SHOTS | REFLECT | IMMOVABLE
+
+# N: serial number : ego type
+# D: description
+# T: tval : min sval : max sval
+# R: rarity
+# X: position : slot : rating
+# W: depth : rarity1 : rarity2 : cost
+# C: to-hit : to-dam : to-ac : pval
+# r:N:needed flags on the base object
+# r:F:forbidden flags on the base object
+# Z: granted_power
+# F: flags
diff --git a/lib/edit/evil.map b/lib/edit/evil.map
new file mode 100644
index 00000000..d407c4ef
--- /dev/null
+++ b/lib/edit/evil.map
@@ -0,0 +1,52 @@
+# permanent wall
+F:X:61:0
+
+# granite
+F:#:57:0
+
+# Mountain Chain
+F:^:97:0
+
+# up staircase
+F:<:6:0
+
+# Dirt
+F:.:88:0
+
+# Lesser Balrog
+F:b:88:0:996
+
+# Greater Balrog
+F:B:88:0:807
+
+# Pit Fiend
+F:P:88:0:812
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X^..^^^^^^^^^^^^^^^^^^^^^^^^^^^^X
+D:X^..^^^^^^^^^..^^^^^^^^^^^^^^^^^X
+D:X^...^^^^^^.........^^^^^^^^^^^^X
+D:X^^..^^^^^..^^^^..^B^^^^^^^^^^^^X
+D:X^...^^^^...^^^^^..^^^^^^^^^^^^^X
+D:X^^..^^^..^^.^^^^^^^^^^^^^^^^^^^X
+D:X^..^^^^^.....^^^^^.^^^^^^^^^^^^X
+D:X^^..^^^^..^^.^^^.^......^^^^^^^X
+D:X^..^^^^..^^...^^...^..^.^^^^^^^X
+D:X^^..^^^..^^^..^...^^^....^^^^^^X
+D:X^^^...^.^^^.....^^^^P...<^^^^^^X
+D:X^^^.....^^^^..^^^^^^^^..^^^^^^^X
+D:X^^^^^^.^^^^..^^^^^^^^^^^^^^^^^^X
+D:X^^^^^^^^^^^...^^^^^^^^^^^^^^^^^X
+D:X^^^^^.^^^^.^..^^^^^^^^^^^^^^^^^X
+D:X^^^^...^^...^^^...^^^^^^...^^^^X
+D:X^^^^.^....^^^^.^.....^..^..^^^^X
+D:X^^^^..^^^^^.....^...^..^^^B^^^^X
+D:X^^^P........^.....^^^^^^^^^^^^^X
+D:X^^^^^^...^^^^^^^^^^^^^^^^^^^^^^X
+D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:4
+
diff --git a/lib/edit/f_info.txt b/lib/edit/f_info.txt
new file mode 100644
index 00000000..21f7954d
--- /dev/null
+++ b/lib/edit/f_info.txt
@@ -0,0 +1,933 @@
+# File: f_info.txt
+
+
+# This file is used to initialize the "lib/raw/f_info.raw" file, which is
+# used to initialize the "terrain feature" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/f_info.raw" file.
+
+# Note that the terrain feature are grouped into very regular groups,
+# such that each of the bits in the feature type conveys information.
+
+# Note that terrain feature zero contains the "darkness" picture.
+
+
+# Version stamp (required)
+
+V:2.0.0
+
+
+# 0x00 --> nothing
+
+N:0:nothing
+G: :w
+F:FLOOR
+
+# 0x01 --> open floor
+
+N:1:open floor
+G:.:w
+F:FLOOR | DONT_NOTICE_RUNNING | SUPPORT_LIGHT | CAN_RUN
+F:SUPPORT_GROWTH
+
+# 0x02 -> fountain
+N:2:fountain
+G:_:w
+F:FLOOR | NOTICE | REMEMBER | CAN_RUN
+D:0:The liquid here seems magical.
+
+# 0x03 --> glyph of warding
+
+N:3:glyph of warding
+G:;:y
+F:FLOOR | NOTICE | SUPPORT_LIGHT | CAN_RUN | REMEMBER
+D:0:There is a mighty spell of protection here.
+
+# 0x04 --> open door
+
+N:4:open door
+G:':U
+F:FLOOR | NOTICE | REMEMBER | CAN_RUN | DOOR
+
+# 0x05 --> broken door
+
+N:5:broken door
+G:':U
+F:FLOOR | NOTICE | REMEMBER | CAN_RUN | DOOR
+
+# 0x06 --> up stairs (perm)
+
+N:6:up staircase
+G:<:w
+F:FLOOR | PERMANENT | NOTICE | SUPPORT_LIGHT | REMEMBER | CAN_RUN
+D:0:There is an up staircase here.
+D:1:You cannot tunnel a stair.
+
+# 0x07 --> down stairs (perm)
+
+N:7:down staircase
+G:>:w
+F:FLOOR | PERMANENT | NOTICE | SUPPORT_LIGHT | REMEMBER | CAN_RUN
+D:0:There is a down staircase here.
+D:1:You cannot tunnel a stair.
+
+N:8:quest entrance
+G:>:y
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+D:1:You cannot tunnel a quest entrance.
+
+N:9:quest exit
+G:<:y
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+D:1:You cannot tunnel a quest exit.
+
+N:10:quest down level
+G:>:r
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+
+N:11:quest up level
+G:<:r
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+
+N:12:town exit
+G:>:g
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+
+N:13:shaft down
+G:>:U
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+D:0:There is a shaft down here.
+D:1:You cannot tunnel a shaft.
+
+N:14:shaft up
+G:<:U
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+D:0:There is a shaft up here.
+D:1:You cannot tunnel a shaft.
+
+# 0x0F -> empty fountain
+N:15:fountain
+G:_:D
+F:FLOOR | NOTICE | REMEMBER | CAN_RUN
+D:0:The fountain seems empty.
+
+N:16:web
+G:+:y
+F:CAN_PASS | NOTICE | WEB | NOTICE | TUNNELABLE
+D:1:You tunnel through the web.
+D:2:a web blocking your way
+
+# Trap -- the flags are not used by the program
+N:17:trap
+G:^:w
+F:FLOOR | NOTICE | REMEMBER
+
+# 0x12 --> 0x1F -- UNUSED
+
+# 0x2x --> locked door (power 0)
+
+N:32:door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 1)
+
+N:33:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 2)
+
+N:34:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 3)
+
+N:35:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 4)
+
+N:36:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 5)
+
+N:37:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 6)
+
+N:38:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> locked door (power 7)
+
+N:39:locked door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | REMEMBER | DOOR
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 0)
+
+N:40:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 1)
+
+N:41:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 2)
+
+N:42:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 3)
+
+N:43:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 4)
+
+N:44:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 5)
+
+N:45:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 6)
+
+N:46:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x2x --> jammed door (power 7)
+
+N:47:jammed door
+G:+:U
+M:32
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | REMEMBER | NOTICE
+F:TUNNELABLE
+D:1:You bash the boor.
+
+# 0x30 --> secret door
+
+N:48:secret door
+G:#:w
+M:56
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | DOOR
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel.
+
+# 0x31 --> rubble
+
+N:49:pile of rubble
+G:::w
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE
+F:CAN_FLY | SUPPORT_LIGHT
+F:TUNNELABLE
+D:1:You dig in the rubble.
+
+# 0x32 --> magma vein
+
+N:50:magma vein
+G:%:s
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the magma vein.
+
+# 0x33 --> quartz vein
+
+N:51:quartz vein
+G:%:w
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the quartz vein.
+
+# 0x34 --> magma vein + treasure
+
+N:52:magma vein
+G:%:s
+M:50
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the magma vein.
+
+# 0x35 --> quartz vein + treasure
+
+N:53:quartz vein
+G:%:w
+M:51
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the quartz vein.
+
+# 0x36 --> magma vein + known treasure
+
+N:54:magma vein with treasure
+G:*:o
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the magma vein.
+
+# 0x37 --> quartz vein + known treasure
+
+N:55:quartz vein with treasure
+G:*:o
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the quartz vein.
+
+# 0x38 --> granite wall -- basic
+
+N:56:granite wall
+G:#:w
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the granite wall.
+
+# 0x39 --> granite wall -- inner
+
+N:57:granite wall
+G:#:w
+M:56
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the granite wall.
+
+# 0x3A --> granite wall -- outer
+
+N:58:granite wall
+G:#:w
+M:56
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the granite wall.
+
+# 0x3B --> granite wall -- solid
+
+N:59:granite wall
+G:#:w
+M:56
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the granite wall.
+
+# 0x3C --> permanent wall -- basic (perm)
+
+N:60:permanent wall
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+# 0x3D --> permanent wall -- inner (perm)
+
+N:61:permanent wall
+G:#:w
+M:60
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+# 0x3E --> permanent wall -- outer (perm)
+
+N:62:permanent wall
+G:#:w
+M:60
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+# 0x3F --> permanent wall -- solid (perm)
+
+N:63:permanent wall
+G:#:w
+M:60
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:64:explosive rune
+G:*:R
+F:FLOOR | CAN_LEVITATE | CAN_FLY | NOTICE | SUPPORT_LIGHT
+D:0:This rune seems unstable.
+
+N:65:Straight Road startpoint
+G:*:w
+F:FLOOR | REMEMBER | NOTICE
+
+N:66:section of the Straight Road
+G:*:B
+F:FLOOR | REMEMBER | NOTICE
+
+N:67:section of the Straight Road
+G:*:b
+F:FLOOR | REMEMBER | NOTICE
+
+N:68:section of the Straight Road
+G:*:B
+F:FLOOR | REMEMBER | NOTICE
+
+N:69:section of the Straight Road
+G:*:b
+F:FLOOR | REMEMBER | NOTICE
+
+N:70:section of the Straight Road
+G:*:W
+F:FLOOR | REMEMBER | NOTICE
+
+N:71:section of the Straight Road (discharged)
+G:*:W
+F:FLOOR | REMEMBER | NOTICE
+
+N:72:Straight Road exit
+G:*:w
+F:FLOOR | REMEMBER | NOTICE
+
+N:73:corrupted section of the Straight Road
+G:*:D
+F:FLOOR | REMEMBER | NOTICE
+
+# 74 --> shop
+
+N:74:Building
+G:1:U
+F:FLOOR | PERMANENT | REMEMBER | NOTICE | CAN_RUN
+
+# 75 --> 78 Quests index
+
+N:75:permanent wall
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:76:permanent wall
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:77:permanent wall
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:78:permanent wall
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+# 79 --> 83 UNSUSED
+
+N:84:stream of shallow water
+G:~:B
+S:B:B:B:B:B:B:b
+F:ATTR_MULTI
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | CAN_RUN
+F:DONT_NOTICE_RUNNING
+F:SUPPORT_GROWTH
+
+# -1 = player level
+N:85:pool of deep lava
+G:.:R
+E:-1d2:1:FIRE
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT
+D:0:You move across the deep lava.
+
+N:86:stream of shallow lava
+G:.:r
+E:-1d1:1:FIRE
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT
+D:0:You move across the shallow lava.
+
+N:87:dark pit
+G:#:D
+F:CAN_LEVITATE | CAN_FLY
+F:NO_WALK | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+D:0:Ohhh, it is dark and deep.
+
+N:88:dirt
+G:.:U
+F:FLOOR | SUPPORT_LIGHT | CAN_RUN
+F:DONT_NOTICE_RUNNING
+F:SUPPORT_GROWTH
+
+N:89:patch of grass
+G:.:G
+F:FLOOR | SUPPORT_LIGHT | CAN_RUN
+F:DONT_NOTICE_RUNNING
+F:SUPPORT_GROWTH
+
+N:90:ice
+G:.:W
+E:1d1:50:ICE
+F:FLOOR | NOTICE
+
+N:91:sand
+G:.:y
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+F:SUPPORT_GROWTH
+
+N:92:dead tree
+G:#:D
+F:CAN_FLY | CAN_PASS
+F:WALL | NO_WALK | NO_VISION | NOTICE
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You chop away at the dead tree.
+D:2:a tree blocking your way
+
+N:93:ash
+G:.:s
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+F:SUPPORT_GROWTH
+
+N:94:mud
+G:.:u
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+F:SUPPORT_GROWTH
+
+N:95:ice wall
+G:#:W
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the ice wall... #BOh chilly#w.
+D:2:an ice wall blocking your way
+
+N:96:tree
+G:#:G
+F:CAN_FLY | CAN_PASS | SUPPORT_LIGHT
+F:WALL | NO_WALK | NO_VISION
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You chop away at the tree.
+D:2:a tree blocking your way
+
+N:97:mountain chain
+G:^:U
+F:CAN_CLIMB | CAN_PASS | SUPPORT_LIGHT
+F:WALL | NO_WALK | NO_VISION
+F:DONT_NOTICE_RUNNING
+F:PERMANENT
+D:1:You cannot tunnel into such a hard stone.
+D:2:a hard stone block blocking your way
+
+# 0x62 --> sandwall
+
+N:98:sandwall
+G:#:y
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You easily dig into the sandwall.
+D:2:a sandwall blocking your way
+
+# 0x63 --> sandwall + treasure
+
+N:99:sandwall
+G:%:y
+M:98
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You easily dig into the sandwall.
+D:2:a sandwall blocking your way
+
+# 0x64 --> sandwall + known treasure
+
+N:100:sandwall with treasure
+G:*:o
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You easily tunnel into the sandwall.
+D:2:a sandwall blocking your way
+
+N:101:high mountain chain
+G:^:W
+F:WALL | NO_WALK | NO_VISION | PERMANENT
+F:DONT_NOTICE_RUNNING
+D:1:This rock is far too hard.
+D:2:a very hard stone block blocking your way
+
+N:102:nether mist
+G:.:v
+S:v:R:r:v:R:r:D
+E:1d1:40:NETHER
+F:ATTR_MULTI
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+
+N:160:Void Jumpgate
+G:+:v
+F:FLOOR | REMEMBER | NOTICE | PERMANENT | CAN_RUN
+D:0:A dark rift opens to the void here.
+
+###### Here are the altars. ######
+
+N:161:Altar of Being
+G:0:W
+F:FLOOR | REMEMBER | NOTICE | CAN_RUN
+D:0:You feel at peace.
+
+N:162:Altar of Winds
+G:0:B
+F:FLOOR | REMEMBER | NOTICE | CAN_RUN
+D:0:You grow a desire to become a bird.
+
+N:163:Altar of Force
+G:0:R
+F:FLOOR | REMEMBER | NOTICE | CAN_RUN
+D:0:You grow a desire to fight evil.
+
+N:164:Altar of Darkness
+G:0:D
+F:FLOOR | REMEMBER | NOTICE | CAN_RUN
+D:0:Images of pain and death fill your mind.
+
+N:165:Altar of Nature
+G:0:g
+F:FLOOR | REMEMBER | NOTICE | CAN_RUN
+D:0:You feel the desire to walk in a great forest.
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+# Used as a marker for random quests
+N:172:open floor
+G:.:w
+F:FLOOR | CAN_RUN | DONT_NOTICE_RUNNING
+F:SUPPORT_GROWTH
+
+# Underground Tunnel
+N:173:Underground Tunnel
+G:#:s
+F:FLOOR | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING | CAN_RUN
+D:0:Oh, an underground tunnel!
+
+# Tainted water
+N:174:stream of tainted water
+G:~:u
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:175:monster trap
+G:;:v
+F:FLOOR
+
+N:176:Void Jumpgate
+G:+:v
+F:FLOOR | REMEMBER | NOTICE | PERMANENT | CAN_RUN
+D:0:A dark rift opens to the void here.
+
+N:177:lava wall
+G:#:R
+S:R:R:r:r:U:u:R
+F:ATTR_MULTI
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+D:1:The lava is far too hot to tunnel into it.
+D:2:a lava wall blocking your way
+
+N:178:Great Fire
+G:%:v
+S:R:R:y:v:y:v:R
+E:150d2:1:HELL_FIRE
+F:ATTR_MULTI
+F:FLOOR | REMEMBER | NOTICE | PERMANENT
+D:0:This fire is so powerful it could destroy even the most powerful artifacts.
+
+N:179:path to the next area
+G:>:w
+F:FLOOR | PERMANENT | NOTICE | REMEMBER | CAN_RUN
+D:0:There is a path leading to the next area here.
+D:1:You cannot tunnel a path.
+
+N:180:path to the previous area
+G:<:w
+F:FLOOR | PERMANENT | NOTICE | REMEMBER | CAN_RUN
+D:0:There is a path leading to the previous area here.
+D:1:You cannot tunnel a path.
+
+N:181:field
+G:::g
+F:FLOOR | PERMANENT | NOTICE | REMEMBER
+F:DONT_NOTICE_RUNNING
+D:1:You cannot tunnel a field.
+
+N:182:Ekkaia, the Encircling Sea
+G:*:b
+S:b:b:b:b:b:b:B
+F:ATTR_MULTI
+F:WALL | NO_WALK | NO_VISION | PERMANENT | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+N:183:void
+G: :d
+F:FLOOR
+
+# XXX 182 - 186
+
+# 187 --> terrain -- deep water
+
+N:187:pool of deep water
+G:~:b
+S:b:b:b:b:b:b:B
+F:ATTR_MULTI
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT
+
+# Glass wall -- can see but not pass
+N:188:glass wall
+G:.:B
+F:NO_WALK | WALL | PERMANENT | NOTICE
+F:DONT_NOTICE_RUNNING
+D:1:This glass seems to be totaly impenetrable.
+D:2:a glass wall blocking your way
+
+# Illusion wall -- can't see but can pass
+N:189:illusion wall
+G:#:w
+F:FLOOR | NO_VISION | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING
+D:0:Looks like this wall is not so real.
+
+# Grass roof
+N:190:Grass roof
+G:#:y
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# grass roof top
+N:191:grass roof top
+G:#:y
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# grass roof chimney
+N:192:grass roof chimney
+G:#:y
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# brick roof
+N:193:brick roof
+G:#:r
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# brick roof top
+N:194:brick roof top
+G:#:r
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# brick roof chimney
+N:195:brick roof chimney
+G:#:r
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# window
+N:196:window
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# small window
+N:197:small window
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# rain barrel
+N:198:rain barrel
+G:#:w
+F:WALL | NO_WALK | NO_VISION | PERMANENT | DONT_NOTICE_RUNNING
+
+# grass with flowers
+N:199:grass with flowers
+G:;:G
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+F:SUPPORT_GROWTH
+
+# cobblestone road
+N:200:cobblestone road
+G:.:w
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+
+# cobblestone with outlet
+N:201:cobblestone with outlet
+G:.:w
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN
+
+N:202:small tree
+G:#:g
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN | SUPPORT_LIGHT | REMEMBER
+F:NO_VISION
+
+# Just to have a town entrance picture
+N:203:town
+G:*:w
+F:FLOOR | NOTICE
+
+# Underground Tunnel
+N:204:Underground Tunnel
+G:^:U
+F:FLOOR | REMEMBER | SUPPORT_LIGHT | DONT_NOTICE_RUNNING | CAN_RUN
+D:0:Oh, an underground tunnel!
+
+# Fire
+N:205:a blazing fire
+G:%:y
+S:y:y:y:R:r:y:R
+E:-1d2:1:FIRE
+D:0:The blazing fire burns you!
+F:ATTR_MULTI
+F:FLOOR | CAN_FLY | REMEMBER | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+
+# Permanent rubble -- town use
+N:206:pile of rubble
+G:::w
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE
+F:CAN_FLY | SUPPORT_LIGHT | PERMANENT
+D:1:Looks like this pile of rubble is quite hard.
+
+# Rocky ground - rougher terrain.
+N:207:rocky ground
+G:.:s
+F:FLOOR | SUPPORT_LIGHT | CAN_RUN
+F:DONT_NOTICE_RUNNING
+
+# cloud-like vapour. Floor for Eru's temple
+N:208:cloud-like vapour
+G:.:W
+S:W:B:B:W:w:W:B
+F:FLOOR | CAN_LEVITATE | CAN_FLY | SUPPORT_LIGHT
+F:ATTR_MULTI | CAN_RUN | DONT_NOTICE_RUNNING
+
+# condensing water
+N:209:condensing water
+G:~:B
+S:B:B:B:B:B:B:b
+F:ATTR_MULTI
+F:FLOOR | CAN_LEVITATE | CAN_FLY | REMEMBER | SUPPORT_LIGHT | CAN_RUN
+F:DONT_NOTICE_RUNNING
+
+# Dense mist. Can pass through, but not see through
+N:210:dense mist
+G:#:w
+S:w:W:s:s:s:w:w
+F:FLOOR | NO_VISION | REMEMBER | SUPPORT_LIGHT
+F:ATTR_MULTI | DONT_NOTICE_RUNNING
+D:0:You wander through the mist.
+D:1:You cannot tunnel through mist!
+
+# Hail-stone wall
+N:211:hail-stone wall
+G:#:W
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING
+F:TUNNELABLE
+D:1:You tunnel into the hail-stone wall.
+
+N:212:dead small tree
+G:#:D
+F:FLOOR | DONT_NOTICE_RUNNING | CAN_RUN | SUPPORT_LIGHT | REMEMBER
+F:NO_VISION
+
+
+# New features for the Maps of Lord Dimwit
+
+N:213:copper pillar
+G:#:u
+S:u:u:u:o:u:u:u
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING | ATTR_MULTI
+D:1:The copper is too tough to tunnel through.
+D:2:a copper pillar blocking your way
+
+N:214:ethereal wall
+G:.:w
+F:WALL | NO_WALK | PERMANENT | NOTICE | DONT_NOTICE_RUNNING
+D:1:You can't even see your obstruction!
+D:2:an unseen force blocking your way
+
+N:215:glacial wall
+G:#:B
+F:WALL | NO_WALK | CAN_PASS | NO_VISION | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING | TUNNELABLE
+D:1:You tunnel into the glacial wall... #BOh chilly#w.
+D:2:a hard glacial wall blocking your way
+
+N:216:battlement
+G:#:w
+F:NO_WALK | CAN_PASS | NOTICE | SUPPORT_LIGHT
+F:DONT_NOTICE_RUNNING | TUNNELABLE
+D:1:You tunnel into the battlement.
+D:2:a hard stone battlement blocking your way
diff --git a/lib/edit/haunted.map b/lib/edit/haunted.map
new file mode 100644
index 00000000..49f72d5b
--- /dev/null
+++ b/lib/edit/haunted.map
@@ -0,0 +1,49 @@
+# permanent wall
+F:X:61:0
+
+# granite
+F:#:57:0
+
+# up staircase
+F:<:6:0
+
+# Floor
+F:.:1:0
+
+# Locked Door
+F:D:38:0
+
+# Secret Door
+F:S:48:0
+
+# Great item
+F:g:1:0:0:*:*
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXX...D.........................X
+D:XXX...XXXXXXXXXXXXXXXXXXXXXXXXX.X
+D:XXX...X....X....X....X....X...X.X
+D:XXX...X....X....X....X....X...X.X
+D:XXX...X....X....X....X....X...X.X
+D:XXXDXXXDXXXXDXXXXDXXXXDXXXXDXXX.X
+D:XXX.............................X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X
+D:X.S.....X.....X.....X.....X...X.X
+D:X.X.....X.....X.....X.....X...X.X
+D:X.X.....X.....X.....X.....X...X.X
+D:X.X.....X.....X.....X.....X...X.X
+D:XgX.....X.....X.....X.....X...X.X
+D:XXXDXXXXXDXXXXXDXXXXXDXXXXXDXXX.X
+D:XXX.............................X
+D:XXXXXXXDXXXXXDXXXXXDXXXXXDXXXXXDX
+D:XgX<....X.....X.....X.....X.....X
+D:X.X.....X.....X.....X.....X.....X
+D:X.X.....X.....X.....X.....X.....X
+D:X.X.....X.....X.....X.....X.....X
+D:X.S.....X.....X.....X.....X.....X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:5
+
diff --git a/lib/edit/k_info.txt b/lib/edit/k_info.txt
new file mode 100644
index 00000000..ffae3ed1
--- /dev/null
+++ b/lib/edit/k_info.txt
@@ -0,0 +1,6418 @@
+# File: k_info.txt
+
+
+# This file is used to initialize the "lib/data/k_info.raw" file, which is
+# used to initialize the "object kind" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/data/k_info.raw" file.
+
+# Available slots are marked with # XXX: 294, 299, 444-464, ...
+
+# XXX XXX Add some "IGNORE_XXX" flags to Rings, Amulets, etc.
+
+# The old "MULTI_HUED" objects are now "violet", and no other object
+# is violet, so all six violet objects can be made "multi-hued", though
+# this would be a heinous hack. XXX XXX
+
+# Note that object zero is used for the "stack" picture (unused).
+
+
+# Version stamp (required)
+
+V:2.0.0
+
+
+##### Something special #####
+
+N:0:something
+G:&:w
+
+
+##### Mushrooms #####
+
+N:1:Blindness
+G:,:d
+I:80:1:500
+W:5:0:1:0
+A:5/1
+D:'E'ating this mushrooms will blind you. You cannot cast magic
+D:or see monsters when you are blinded. You can still use magic items or
+D:quaff potions.
+
+N:2:Paranoia
+G:,:d
+I:80:2:500
+W:5:0:1:0
+A:5/1
+D:'E'ating this mushroom will make you scared.
+D:You will not be able to hit your enemies in combat if you're scared.
+
+N:3:Confusion
+G:,:d
+I:80:3:500
+W:5:0:1:0
+A:5/1
+D:'E'ating this mushroom will confuse you. You will not be able to cast spells,
+D:use wands, staves or scrolls. You can still quaff potions, though.
+
+N:4:Hallucination
+G:,:d
+I:80:4:500
+W:10:0:1:0
+A:10/1
+D:'E'ating this mushroom will make you hallucinate.
+D:You will not be able to recognise any monster or item.
+
+N:5:Cure Poison
+G:,:d
+I:80:12:500
+W:10:0:1:60
+A:10/1
+D:'E'ating this mushroom will cure you from poison.
+
+N:6:Cure Blindness
+G:,:d
+I:80:13:500
+W:10:0:1:50
+A:10/1
+D:'E'ating this mushroom will cure you from blindness.
+
+N:7:Cure Paranoia
+G:,:d
+I:80:14:500
+W:10:0:1:25
+A:10/1
+D:'E'ating this mushroom will cure your paranoia. Paranoia is the state when you are
+D:too afraid to attack monsters.
+
+N:8:Cure Confusion
+G:,:d
+I:80:15:500
+W:10:0:1:50
+A:10/1
+D:'E'ating this mushroom will cure your confusion. Confusion is when you are too confused
+D:to cast spells, zap staves, aim wands or read scrolls.
+
+N:9:Weakness
+G:,:d
+I:80:6:500
+W:10:0:1:0
+A:10/1
+P:0:5d5:0:0:0
+D:'E'ating this mushroom will reduce your strength by one point.
+
+N:10:Unhealth
+G:,:d
+I:80:10:500
+W:15:0:1:50
+A:15/1
+P:0:10d10:0:0:0
+D:'E'ating this mushroom will reduce your constitution by one point.
+
+N:11:Restore Constitution
+G:,:d
+I:80:18:500
+W:20:0:1:350
+A:20/1
+D:'E'ating this mushroom will restore your constitution. Your constitution
+D:needs restoring when it is displayed in yellow.
+
+N:12:Restoring
+G:,:d
+I:80:19:500
+W:20:0:1:1000
+A:20/8:30/4:40/1
+D:'E'ating this mushroom will restore your strength, dexterity, constitution,
+D:intelligence, wisdom and charisma. These need restoring when they
+D:are displayed in yellow.
+
+N:13:Stupidity
+G:,:d
+I:80:8:500
+W:15:0:1:0
+A:15/1
+D:'E'ating this mushroom will reduce your intelligence by one point.
+D:That's a bad thing.
+
+N:14:Naivety
+G:,:d
+I:80:9:500
+W:15:0:1:0
+A:15/1
+D:'E'ating this mushroom will reduce your wisdom by one point.
+D:That's a bad thing.
+
+N:15:Poison
+G:,:d
+I:80:0:500
+W:5:0:1:0
+A:5/1:5/1
+P:0:4d4:0:0:0
+D:'E'ating this mushroom will poison you. Poisoning makes you lose one hitpoint
+D:per turn until you magically stop the poison or until your body has
+D:fought off the poison.
+D:That's a bad thing.
+
+N:16:Sickness
+G:,:d
+I:80:7:500
+W:10:0:1:0
+A:10/1
+P:0:4d4:0:0:0
+D:'E'ating this mushroom will reduce your constitution by one point.
+D:It will also damage you quite severely in the process.
+D:That's a bad thing.
+
+N:17:Paralysis
+G:,:d
+I:80:5:500
+W:20:0:1:0
+A:20/1
+D:'E'ating this mushroom will paralyse you for a certain time.
+D:Any nearby monsters will take this opportunity to kill you.
+D:That's a bad thing.
+
+N:18:Restore Strength
+G:,:d
+I:80:17:500
+W:20:0:1:350
+A:20/1
+D:'E'ating this mushroom will restore your strength. Your strength
+D:needs restoring when it is displayed in yellow.
+
+N:19:Disease
+G:,:d
+I:80:11:500
+W:20:0:1:50
+A:20/1
+P:0:10d10:0:0:0
+D:'E'ating this mushroom will reduce your strength by one point.
+D:It will also damage you quite severely in the process.
+D:That's a bad thing.
+
+N:20:Cure Serious Wounds
+G:,:d
+I:80:16:500
+W:15:0:1:75
+A:15/1
+D:'E'ating this mushroom will heal several hit points. Your hit points
+D:need healing when they are displayed in yellow or red.
+
+##### Normal Food #####
+
+N:21:& Ration~ of Food
+G:,:U
+I:80:35:5000
+W:0:0:10:3
+A:0/1:5/1:10/1
+D:Lightweight and filling. Not an incredible taste experience, but that'd be asking a bit much.
+D:You can 'E'at it.
+
+N:22:& Hard Biscuit~
+G:,:U
+I:80:32:500
+W:0:0:2:1
+D:It doesn't look great, and 'E'ating it will only fill your stomach a bit,
+D:for a short time.
+
+N:23:& Strip~ of Venison
+G:,:u
+I:80:33:1500
+W:0:0:2:2
+D:It looks great, and 'E'ating it will fill your stomach well.
+
+N:24:& Slime Mold~
+G:,:g
+I:80:36:3000
+W:1:0:5:2
+A:1/1
+D:It looks disgusting, but if you really want to you can 'E'at it.
+D:Not an incredible taste experience, but that'd be asking a bit much.
+
+# New - now Lembas works as a scroll of Satisfy Hunger
+N:25:& Lembas~
+G:,:B
+I:80:37:0
+W:5:0:3:10
+A:5/1:10/1:20/1
+D:A sort of cake, tasty and sustaining. It even helps to overcome weariness. Its fabrication
+D:is a secret of the elves. If you 'E'at it, you will be full.
+
+N:26:& Pint~ of Fine Ale
+G:,:y
+I:80:38:500
+W:0:0:5:1
+D:A bottle of a dark beer-like beverage. You can drink it by pressing 'E'.
+
+N:27:& Pint~ of Fine Wine
+G:,:r
+I:80:39:1000
+W:0:0:10:2
+D:A bottle of fine wine. You can drink it by pressing 'E'.
+
+##### Extra digger #####
+
+N:28:& Mattock~
+G:\:D
+I:20:7:3
+W:50:0:250:700
+A:50/2
+P:0:1d8:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:This is a digging tool. Use it to dig in walls, destroy doors, or cut wood.
+
+# The Blue Stone 'Toris Mejistos' -- see artifact list
+
+N:29:& Blue Stone~
+G:":B
+I:40:18:0
+W:60:0:3:90000
+F:INSTA_ART | SPECIAL_GENE
+
+##### Edged Weapons #####
+
+N:30:& Broken Dagger~
+G:|:D
+I:23:1:0
+W:0:0:5:1
+A:0/2:5/2
+P:0:1d1:-2:-4:0
+F:SHOW_MODS
+D:The blade itself is a foot long and broken off not far above the hilt.
+
+N:31:& Bastard Sword~
+G:|:W
+I:23:21:0
+W:15:0:140:350
+A:15/1
+P:0:3d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This is a long, double-edged sword with a plain hilt that could
+D:be wielded in one or two hands. It's called a "bastard sword" because in
+D:size, it falls between the broad sword and the two-handed sword, thus not
+D:having a family of its own. It's typically around 51 inches long.
+D:It is effective for cutting through tougher armours. It could be used for
+D:thrusting, but most wielders swing it like a bat.
+
+N:32:& Scimitar~
+G:|:W
+I:23:18:0
+W:10:0:130:250
+A:10/1
+P:0:2d5:0:0:0
+F:SHOW_MODS
+D:This oriental blade has 2 edges and is deeply curved. It has a wide
+D:and very sharp end. It is the forefather of the sabre.
+
+N:33:& Tulwar~
+G:|:W
+I:23:15:0
+W:5:0:100:200
+A:5/1
+P:0:2d4:0:0:0
+F:SHOW_MODS
+D:This vicious sword is half sword and half club, with a slight hook on the tip.
+
+N:34:& Broad Sword~
+G:|:W
+I:23:16:0
+W:10:0:150:255
+A:10/1:15/1
+P:0:2d5:0:0:0
+F:SHOW_MODS
+D:This broader version of the long sword is a standard weapon in the army
+D:of Gondolin.
+
+N:35:& Short Sword~
+G:|:W
+I:23:10:0
+W:5:0:80:90
+A:5/1
+P:0:1d7:0:0:0
+F:SHOW_MODS
+D:This shorter version of the long sword is a common weapon for rogues
+D:and mages.
+
+N:36:& Blade~ of Chaos
+G:|:v
+I:23:30:0
+W:70:0:180:4000
+A:70/8
+P:0:6d5:0:0:0
+F:ATTR_MULTI
+F:RES_CHAOS | CHAOTIC | SHOW_MODS
+f:RES_CHAOS | CHAOTIC
+D:A mighty sword which seems to be completely blunt. However, it is a conduit
+D:into the realms of pure chaos and strikes its victims with the devastating
+D:might of chaos itself whenever it connects. It gives you resistance to chaos
+D:and it can polymorph, teleport, confuse or drain hit points from the monster
+D:you hit. It occasionally causes earthquakes as well.
+
+N:37:& Two-Handed Sword~
+G:|:W
+I:23:25:0
+W:30:0:200:775
+A:30/1:40/1
+P:0:3d6:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This blade is lot longer, wider and heavier than a long sword. You have to
+D:wield it with two hands. This means that wielding a shield makes fighting
+D:very difficult.
+
+N:38:& Main Gauche~
+G:|:W
+I:23:5:0
+W:3:0:30:25
+A:3/1
+P:0:1d5:0:0:0
+F:SHOW_MODS
+D:This blade is sinuously curved and tipped with a harpoon-like end.
+D:This blade has a large handguard and was designed as an off-hand weapon.
+D:This short but cruel blade is a favourite among orcs.
+
+N:39:& Cutlass~
+G:|:W
+I:23:12:0
+W:5:0:110:85
+A:5/1
+P:0:1d7:0:0:0
+F:SHOW_MODS
+D:This oriental weapon is a short, thick, curving sword
+D:with a single cutting edge. This simple slashing weapon
+D:is typically carried by buccaneers, pirates, and sailors.
+
+N:40:& Executioner's Sword~
+G:|:r
+I:23:28:0
+W:40:0:260:850
+A:40/1
+P:0:4d5:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:These weapons have been built in all sizes. They are custom-made
+D:for warriors that want to set out and kill their archenemy. These
+D:blades are rare, costly and very deadly.
+
+N:41:& Katana~
+G:|:W
+I:23:20:0
+W:20:0:120:400
+A:20/1
+P:0:3d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:The katana is a long blade with only a small disk for a guard.
+D:Its hilt is long enough for two hands, though it could be used
+D:with only one hand, and is usually wrapped in cloth or leather.
+D:The art of forging such swords is largely unknown in this part
+D:of Middle-earth, and such weapons are typically imported from
+D:distant lands.
+
+N:42:& Long Sword~
+G:|:W
+I:23:17:0
+W:10:0:130:300
+A:10/1:20/1
+P:0:2d5:0:0:0
+F:SHOW_MODS
+D:A long straight sword, tapering to a pronounced point. Mainly good for
+D:piercing attacks, but it can be used for slashing, too. It is a very
+D:popular design and has become standard issue in many armies.
+
+N:43:& Dagger~
+G:|:W
+I:23:4:0
+W:0:0:12:10
+A:0/1:5/1:10/1:20/1
+P:0:1d4:0:0:0
+F:SHOW_MODS
+D:It's the standard weapon of rogues and thieves. The blade is
+D:a foot long.
+
+N:44:& Rapier~
+G:|:W
+I:23:7:0
+W:5:0:40:42
+A:5/1
+P:0:1d6:0:0:0
+F:SHOW_MODS
+D:The rapier's hilt consisted of a pair of oval guards pierced with holes,
+D:recurved quillions, and a knuckle guard. The guard is very intricate
+D:and very effective as protection.
+
+N:45:& Sabre~
+G:|:W
+I:23:11:0
+W:5:0:50:50
+A:5/1
+P:0:1d7:0:0:0
+F:SHOW_MODS
+D:A long, one-edged, slightly curved sword with a knuckle guard and short
+D:hilt. It is two-edged in its lower part.
+
+N:46:& Small Sword~
+G:|:W
+I:23:8:0
+W:5:0:75:48
+A:5/1
+P:0:1d6:0:0:0
+F:SHOW_MODS
+D:It's the favourite weapon of strong mages and thieves. The blade is
+D:about twenty inches long. It's very easy to handle, although it is a lot less
+D:efficient than the longer and heavier designs.
+
+N:47:& Broken Sword~
+G:|:D
+I:23:2:0
+W:0:0:30:2
+A:0/2:5/2
+P:0:1d2:-2:-4:0
+F:SHOW_MODS
+D:Just a hilt and a few inches of blade, broken off in a jagged stump.
+D:Probably worthless.
+
+##### Hafted Weapons #####
+
+N:48:& Ball-and-Chain~
+G:\:D
+I:21:6:0
+W:20:0:150:200
+A:20/1
+P:0:2d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This weapon has a ball linked with a chain to a wooden handle.
+D:Preferred tactic is smashing the brains of your opponent.
+
+N:49:& Whip~
+G:\:D
+I:21:2:0
+W:3:0:30:30
+A:3/1
+P:0:1d6:0:0:0
+F:SHOW_MODS
+D:Think Doctor Jones. This weapon is light and easy to fight with.
+D:It has nasty barbs and hooks fixed to the thong to make it useful
+D:in combat. Whips give easily multiple attacks.
+
+N:50:& Flail~
+G:\:D
+I:21:13:0
+W:10:0:150:353
+A:10/1
+P:0:2d6:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This weapon was originally used to cut corn. More warlike versions
+D:sport a large blade stuck on a wooden handle. The hinge allows it to get
+D:past enemy defences or to strike with added momentum when used skillfully.
+
+N:51:& Two-Handed Flail~
+G:\:y
+I:21:18:0
+W:45:0:280:590
+A:45/1
+P:0:3d6:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This two-handed version of the flail gives the fighter a fearsome
+D:weapon that can do a fair amount of damage. It typically has several
+D:spiked metal lumps on chains.
+
+N:52:& Morning Star~
+G:\:D
+I:21:12:0
+W:10:0:150:396
+A:10/1
+P:0:2d6:0:0:0
+F:SHOW_MODS
+D:This weapon consists of a large club with chains that have wooden balls
+D:with metal spikes on the end.
+
+N:53:& Mace~
+G:\:D
+I:21:5:0
+W:5:0:120:130
+A:5/1
+P:0:2d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This weapon is a club ending in a sphere. The sphere is studded
+D:with metal shards, and thus can both crush and cut your adversary.
+
+N:54:& Quarterstaff~
+G:\:U
+I:21:3:0
+W:10:0:150:200
+A:10/1
+P:0:1d9:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A long, wooden pole, usually the height of the wielder. Four of them can be
+D:made out of the trunk of one young tree, hence the name. The quarterstaff
+D:is an excellent weapon for travellers as it doubles both as a walking staff
+D:and as a deterrent against brigands. The quarterstaff is used more in
+D:fencing and brawling than melee combat.
+
+N:55:& War Hammer~
+G:\:D8
+I:21:8:0
+W:5:0:120:225
+A:5/1
+P:0:3d3:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A large hammer, designed to crush skulls with mighty strikes.
+
+N:56:& Lead-Filled Mace~
+G:\:D
+I:21:15:0
+W:15:0:180:502
+A:15/1
+P:0:3d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A large, mean mace filled with lead in order to wreak a maximum of havoc.
+
+N:57:& Mace~ of Disruption
+G:\:v
+I:21:20:0
+W:80:0:400:4300
+A:80/5
+P:0:5d8:0:0:0
+F:SLAY_UNDEAD | SHOW_MODS | MUST2H
+f:MUST2H | SLAY_UNDEAD
+D:This mace is custom-made for priests that go out to destroy evil.
+D:It is deadly, especially for undead.
+
+N:58:& Lucerne Hammer~
+G:\:B
+I:21:10:0
+W:10:0:120:376
+A:10/1
+P:0:2d5:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A war hammer combined with a spearpoint, mounted on a long pole.
+
+##### Polearms #####
+
+N:59:& Beaked Axe~
+G:/:s
+I:22:10:0
+W:15:0:180:408
+A:15/1
+P:0:2d6:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This polearm has a beak mounted opposite the blade.
+
+N:60:& Glaive~
+G:/:s
+I:22:13:0
+W:20:0:190:363
+A:20/1
+P:0:2d6:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A polearm with a long, slightly curved knife-like blade. It has spurs on
+D:the dull side of the blade. It's primarily a slashing and chopping weapon. Glaives
+D:are often used to protect archers, crossbowmen, and gunners while they reload.
+D:Outside of combat they are a popular processional weapon and therefore many
+D:have ornately carved blades.
+
+N:61:& Halberd~
+G:/:s
+I:22:15:0
+W:25:0:190:430
+A:25/1
+P:0:3d5:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:The halberd has a broad, short axe blade on a 5 - 6ft long haft, with a
+D:spearpoint at the top, often a back-spike and occasionally a butt-spike. Used to
+D:combat heavier armour. It's usually used for cutting and stabbing. It's the most
+D:versatile polearm in Middle-earth. The axe is used in general melee. The top
+D:pike is used to pierce armour, or is set against a cavalry charge. The back
+D:hook could unseat horses, trip opponents, parry a blow, or be a general
+D:piercing weapon.
+
+N:62:& Awl-Pike~
+G:/:s
+I:22:4:0
+W:10:0:160:340
+A:10/1
+P:0:1d8:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This is a polearm with a long square-sectioned spike on the end.
+
+N:63:& Pike~
+G:/:s
+I:22:8:0
+W:15:0:160:358
+A:15/1
+P:0:2d5:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A staff, 16-18 feet long, that has a small piercing head about 10 inches
+D:long. The pike is often used by infantry to fend off cavalry. It is very
+D:effective against mounted troops.
+
+N:64:& Spear~
+G:/:s
+I:22:2:0
+W:5:0:50:36
+A:5/1
+P:0:1d6:0:0:0
+F:SHOW_MODS
+D:Spears tend to have a strong, wide, leaf-shaped head with a ridge down the
+D:middle. The spearhead is attached to the wooden shaft by a socket. The
+D:sockets are usually riveted to the shaft and some have two small lugs near
+D:the base of the socket to allow the head to be possibly bound on as well.
+D:This spear is 7 feet long.
+
+N:65:& Trident~
+G:/:y
+I:22:5:0
+W:5:0:70:120
+A:5/1
+P:0:1d8:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:The trident is based on the pitchfork. In fact, when not used as a weapon,
+D:it is often employed as a pitchfork. It is famous for its uses in
+D:gladiatorial arenas. It is used much like a spear and could even be thrown
+D:like one in desperate situations.
+
+N:66:& Lance~
+G:/:s
+I:22:20:0
+W:10:0:300:230
+A:10/1
+P:0:2d8:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This is the original polearm. It is shaped like a spear but is bigger. It's
+D:meant to fend off enemies, not to be thrown.
+
+N:67:& Great Axe~
+G:/:s
+I:24:25:0
+W:40:0:230:500
+A:40/1
+P:0:4d4:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:A huge and heavy two-headed axe.
+
+N:68:& Battle Axe~
+G:/:s
+I:22:22:0
+W:15:0:170:334
+A:15/1
+P:0:2d8:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:Nordic polearm with a broad blade and a hook mounted on the end of the shaft.
+D:The Nordics' take on the halberd. The polearm of choice for many Nordics,
+D:ideally suited for slashing, thrusting, and unseating cavalry.
+
+N:69:& Lochaber Axe~
+G:/:D
+I:22:28:0
+W:45:0:250:750
+A:45/1
+P:0:3d8:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:Nordic polearm with a broad blade and a hook mounted on the end of the shaft.
+D:A Nordic version of the halberd. The polearm of choice for many Nordics,
+D:this weapon is ideally suited for slashing, thrusting, and unseating cavalry.
+
+N:70:& Broad Axe~
+G:/:s
+I:24:11:0
+W:15:0:160:304
+A:15/1
+P:0:2d6:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A one-headed axe made for combat, with an elongated moon-shaped blade.
+
+N:71:& Scythe~
+G:/:s
+I:22:17:0
+W:45:0:250:800
+A:45/1
+P:0:5d3:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:A simple farm implement, converted into a weapon by slightly straightening
+D:its blade and putting it in line with its pole, instead of the typical
+D:right angle.
+
+N:72:& Scythe~ of Slicing
+G:/:r
+I:22:30:0
+W:80:0:250:10000
+A:80/20
+P:0:8d4:0:0:0
+F:SHOW_MODS | MUST2H | WOUNDING | VORPAL
+f:MUST2H | VORPAL | WOUNDING
+D:The simple design of the war scythe, but this one uses a finely crafted and
+D:incredibly sharp steel blade which causes terrible wounds when it hits.
+
+##### Bows, Crossbows, Slings #####
+
+N:73:& Short Bow~
+G:}:U
+I:19:12:0
+W:3:0:30:50
+A:3/1:50/2
+F:SHOW_MODS
+D:A piece of bent wood, fitted with a string. Easy to transport and use, but
+D:its effect is not very impressive. You can 'f'ire it after you 'w'ield it.
+
+N:74:& Long Bow~
+G:}:U
+I:19:13:0
+W:10:0:40:120
+A:10/1:70/2
+F:SHOW_MODS
+D:A bow almost as long as a human. It takes considerable strength and skill to
+D:use and is rather awkward to carry around inside buildings. Nevertheless, it
+D:shoots arrows with astonishing force. You can 'f'ire it after you 'w'ield it.
+
+N:75:& Light Crossbow~
+G:}:s
+I:19:23:0
+W:15:0:110:140
+A:15/1:60/2
+F:SHOW_MODS
+D:A metal bow mounted on a wooden stock. It is used for shooting bolts. This
+D:design is relatively light and not too difficult to cock, but also shoots its
+D:quarrels with less force. You can 'f'ire with it after you 'w'ield it.
+
+N:76:& Heavy Crossbow~
+G:}:s
+I:19:24:0
+W:30:0:200:300
+A:30/1:80/2
+F:SHOW_MODS
+D:A metal bow mounted on a wooden stock, with attached cocking mechanism. It
+D:takes considerable time and strength to cock it and it's rather heavy.
+D:However, it hurls its ammunition with incredible force. You can 'f'ire with
+D:it after you 'w'ield it.
+
+N:77:& Sling~
+G:}:u
+I:19:2:0
+W:1:0:5:5
+A:1/1:40/2
+F:SHOW_MODS
+D:A simple cloth or leather pouch with two strings attached. It is used to hurl
+D:pebbles or iron shots. You can 'f'ire with it after you 'w'ield it.
+
+##### Missiles #####
+
+N:78:& Arrow~
+G:{:U
+I:17:1:0
+W:3:0:2:1
+A:3/1:15/1:50/1
+P:0:1d4:0:0:0
+F:SHOW_MODS
+D:A simple metal head on a piece of wood or bamboo, fitted with some feathers.
+D:You can use it for 'f'iring a bow.
+
+N:79:& Seeker Arrow~
+G:{:G
+I:17:2:0
+W:55:0:2:20
+A:55/2:80/2
+P:0:4d4:0:0:0
+F:SHOW_MODS
+D:A precision-made arrow, which allows you to hit precisely the most vulnerable
+D:place of an opponent. You can use it for 'f'iring a bow.
+
+N:80:& Bolt~
+G:{:s
+I:18:1:0
+W:3:0:3:2
+A:3/1:25/1:60/1
+P:0:1d5:0:0:0
+F:SHOW_MODS
+D:A short metal arrow, to be 'f'ired with a crossbow.
+
+N:81:& Seeker Bolt~
+G:{:B
+I:18:2:0
+W:65:0:3:25
+A:65/2:90/2
+P:0:4d5:0:0:0
+F:SHOW_MODS
+D:A precision-made bolt, which allows you to hit exactly the most vulnerable
+D:place of an opponent. You can use it for 'f'iring a crossbow.
+
+N:82:& Rounded Pebble~
+G:{:s
+I:16:0:0
+W:0:0:4:1
+A:0/1:10/2
+P:0:1d2:0:0:0
+F:SHOW_MODS
+D:Small round stones. When fired with a sling, they could even hurt a giant.
+D:You can use them for 'f'iring a sling.
+
+N:83:& Iron Shot~
+G:{:s
+I:16:1:0
+W:3:0:5:2
+A:3/1:40/2
+P:0:1d4:0:0:0
+F:SHOW_MODS
+D:Metal balls, made for shooting with slings. You can use them for 'f'iring a
+D:sling.
+
+##### Shovels and Picks #####
+
+N:84:& Shovel~
+G:\:s
+I:20:1:1
+W:1:0:60:10
+A:5/2
+P:0:1d2:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:A simple digging tool for shovelling away rubble and maybe even soft rock.
+
+N:85:& Gnomish Shovel~
+G:\:G
+I:20:2:2
+W:20:0:60:100
+A:20/3
+P:0:1d2:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:Crafted by the gnomes, its design profits greatly from the gnomes' expertise
+D:honed in the burrowing of their hovels.
+
+N:86:& Dwarven Shovel~
+G:\:B
+I:20:3:3
+W:40:0:120:200
+A:40/4
+P:0:1d3:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:The lighter digging tool used by dwarves to remove debris, but also good
+D:enough to clear away bits of rock when no pick is easily available.
+
+N:87:& Pick~
+G:\:s
+I:20:4:1
+W:5:0:150:50
+A:10/2
+P:0:1d3:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:A heavy digging tool, primarily for earthworking, but also good for tunnelling
+D:through stone, if one is willing to perform the time-consuming labour.
+
+N:88:& Orcish Pick~
+G:\:g
+I:20:5:2
+W:30:0:180:300
+A:30/3
+P:0:1d3:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:Although orcs tend to dig rather untidy mines and overcome difficulties in
+D:this work less by skill than mere stubbornness, they have amassed
+D:quite some expertise in mining, which has gone into this digging tool.
+
+N:89:& Dwarven Pick~
+G:\:b
+I:20:6:3
+W:50:0:200:600
+A:50/4
+P:0:1d4:0:0:0
+F:TUNNEL
+f:TUNNEL
+D:The dwarves, miners of legend, have made this pick, which is so expertly
+D:crafted that even weaklings can bore through solid rock with it.
+
+##### Armour #####
+
+N:90:& Elven Cloak~
+G:(:G
+I:35:2:0
+W:30:0:5:1500
+A:30/4
+P:4:0d0:0:0:4
+F:IGNORE_ACID | IGNORE_COLD | IGNORE_FIRE | IGNORE_ELEC
+F:STEALTH | SEARCH | LUCK
+f:STEALTH
+D:A wonderfully light cloak coloured in brown and green hues. Its colouring
+D:greatly helps the wearer to avoid undesired attention. Wearing it makes you
+D:feel lucky and somehow you seem to see what was meant to stay unseen.
+
+N:91:& Pair~ of Soft Leather Boots
+G:]:U
+I:30:2:0
+W:3:0:20:7
+A:3/1
+P:2:1d1:0:0:0
+D:A pair of low boots, comfortable to wear.
+
+N:92:& Pair~ of Hard Leather Boots
+G:]:U
+I:30:3:0
+W:5:0:40:12
+A:5/1
+P:3:1d1:0:0:0
+D:A pair of boots, with hardened leather at the caps, offering a little
+D:extra protection for the feet.
+
+N:93:& Pair~ of Metal Shod Boots
+G:]:s
+I:30:6:0
+W:20:0:80:50
+A:20/1
+P:6:1d1:0:0:0
+D:Heavy boots, with metal strips at the toes, heels and other vulnerable parts,
+D:to better protect the wearer's feet from harm.
+
+N:94:& Hard Leather Cap~
+G:]:u
+I:32:2:0
+W:3:0:15:12
+A:3/1
+P:2:0d0:0:0:0
+D:A piece of protective headgear made from hardened leather, just covering the
+D:skull.
+
+N:95:& Metal Cap~
+G:]:s
+I:32:3:0
+W:10:0:20:30
+A:10/1
+P:3:1d1:0:0:0
+D:A metal skullcap with nose and cheekguards.
+
+N:96:& Iron Helm~
+G:]:s
+I:32:5:0
+W:20:0:75:75
+A:20/1
+P:5:1d3:0:0:0
+D:A large helmet that can protect the entire head. Ventilation and bad vision
+D:can be a problem, however.
+
+N:97:& Steel Helm~
+G:]:W
+I:32:6:0
+W:40:0:60:200
+A:40/1
+P:6:1d3:0:0:0
+D:A helmet which protects the entire head. The expensive steel as base material
+D:allows it to offer very good protection while being fairly light.
+
+N:98:& Iron Crown~
+G:]:s
+I:33:10:0
+W:45:0:20:500
+A:45/1
+P:0:1d1:0:0:0
+D:An iron circlet which might be worn, but which is purely ornamental unless it
+D:has special powers.
+
+N:99:& Golden Crown~
+G:]:y
+I:33:11:0
+W:45:0:30:1000
+A:45/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+D:A gilded crown, which just looks good. Sometimes such headgear also has
+D:additional properties which might make it worth wearing.
+
+N:100:& Jewel Encrusted Crown~
+G:]:v
+I:33:12:0
+W:50:0:40:2000
+A:50/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+D:A gorgeous-looking silver crown, adorned with several gems. You might wear it
+D:on your head, if you really think you're worthy.
+
+N:101:& Robe~
+G:(:b
+I:36:2:0
+W:1:0:20:4
+A:1/1:50/1
+P:2:0d0:0:0:0
+D:A full-length garment which can be worn on the body. It is not really
+D:armour, but mages often wear them as they are very light and don't hinder
+D:movement much.
+
+N:102:& Filthy Rag~
+G:(:D
+I:36:1:0
+W:0:0:20:1
+A:0/1
+P:1:0d0:0:0:-1
+D:A piece of discarded cloth, smelly and dirty. Eurgh. You're not going to
+D:wear this, are you?
+
+N:103:& Soft Leather Armour~
+G:(:U
+I:36:4:0
+W:3:0:80:18
+A:3/1
+P:4:0d0:0:0:0
+D:A leather jerkin, light and unencumbering, but not very protective.
+
+N:104:& Soft Studded Leather~
+G:(:U
+I:36:5:0
+W:3:0:90:35
+A:3/1
+P:5:1d1:0:0:0
+D:A leather jerkin with metal studs in critical places offering slightly better
+D:protection.
+
+N:105:& Hard Leather Armour~
+G:(:U
+I:36:6:0
+W:5:0:100:150
+A:5/1
+P:6:1d1:-1:0:0
+D:A leather armour covering only the body. It is made of hardened leather to
+D:make it harder to penetrate. It's also a bit harder to move in, as it is
+D:rather stiff.
+
+N:106:& Hard Studded Leather~
+G:(:U
+I:36:7:0
+W:10:0:110:200
+A:10/1
+P:7:1d2:-1:0:0
+D:A suit of hardened leather armour, reinforced with metal studs.
+
+N:107:& Leather Scale Mail~
+G:(:U
+I:36:11:0
+W:15:0:140:450
+A:15/1
+P:11:1d1:-1:0:0
+D:A suit of armour made of overlapping hardened leather scales. It offers good
+D:protection while still being rather lightweight.
+
+N:108:& Metal Scale Mail~
+G:[:s
+I:37:3:0
+W:25:0:250:550
+A:25/1
+P:13:1d4:-2:0:0
+D:A suit of overlapping metal scales, sewn onto a leather or cloth jerkin.
+
+N:109:& Chain Mail~
+G:[:s
+I:37:4:0
+W:25:0:220:750
+A:25/1
+P:14:1d4:-2:0:0
+D:A suit of interlinked metal rings, to be worn over a woollen garment.
+
+N:110:& Rusty Chain Mail~
+G:[:r
+I:37:1:0
+W:25:0:200:550
+A:25/1
+P:14:1d4:-5:0:-8
+D:This chain mail has rusted beyond repair. It can still be worn, but some of
+D:the rings have gone missing and the rust has made the suit inflexible.
+D:Consequently, it offers very poor protection and is cumbersome to move in.
+
+N:111:& Augmented Chain Mail~
+G:[:s
+I:37:6:0
+W:30:0:270:900
+A:30/1
+P:16:1d4:-2:0:0
+D:A suit of interlinked metal rings, with additional metal plates or scales
+D:covering vulnerable parts of the wearer.
+
+N:112:& Bar Chain Mail~
+G:[:s
+I:37:8:0
+W:35:0:280:950
+A:35/1
+P:18:1d4:-2:0:0
+D:A suit of interlinked metal rings, with additional short metal bars added in
+D:many places to prevent penetration of the armour by piercing attacks.
+
+N:113:& Metal Brigandine Armour~
+G:[:s
+I:37:9:0
+W:35:0:290:1100
+A:35/1
+P:19:1d4:-3:0:0
+D:This is a leather armour with many small metal plates fixed to it, covering
+D:it entirely.
+
+N:114:& Partial Plate Armour~
+G:[:W
+I:37:12:0
+W:45:0:260:1200
+A:45/1
+P:22:1d6:-3:0:0
+D:An armour made of steel plates, covering only the body of the wearer.
+
+N:115:& Metal Lamellar Armour~
+G:[:W
+I:37:13:0
+W:45:0:340:1250
+A:45/1
+P:23:1d6:-3:0:0
+D:Lamellar consists of small rectangular plates (lames) attached to each other
+D:at each edge or corner with leather lacings through small holes in the plates.
+
+N:116:& Full Plate Armour~
+G:[:W
+I:37:15:0
+W:45:0:380:1350
+A:45/1
+P:25:2d4:-3:0:0
+D:A suit of armour made of metal plates, covering the body, arms and upper legs.
+D:A very effective but very heavy armour.
+
+N:117:& Ribbed Plate Armour~
+G:[:W
+I:37:18:0
+W:50:0:380:1500
+A:50/1
+P:28:2d4:-3:0:0
+D:This full suit of armour has been strengthened in places to better deflect or
+D:absorb blows.
+
+N:118:& Adamantite Plate Mail~
+G:[:G
+I:37:30:0
+W:75:0:420:20000
+A:75/4
+P:40:2d4:-4:0:0
+F:IGNORE_ACID
+D:A suit of plate armour fashioned from an unbreakable crystal by mage-smiths.
+
+N:119:& Mithril Plate Mail~
+G:[:B
+I:37:25:0
+W:60:0:300:15000
+A:60/3
+P:35:2d4:-3:0:0
+F:IGNORE_ACID
+D:A full suit of plate armour, fashioned from the rare true-silver. Only the
+D:dwarves know the secret of making armour or weapons of this metal.
+
+N:120:& Mithril Chain Mail~
+G:[:B
+I:37:20:0
+W:55:0:150:7000
+A:55/3
+P:28:1d4:-1:0:0
+F:IGNORE_ACID
+D:A suit of chain mail, made by dwarven smiths from the rare and precious metal
+D:also called true-silver.
+
+N:121:& Double Chain Mail~
+G:[:s
+I:37:7:0
+W:30:0:250:850
+A:30/1
+P:16:1d4:-2:0:0
+D:A suit of chain mail, with an additional layer of mail in some places.
+
+# This shield does not belong here
+
+N:122:& Shield~ of Deflection
+G:[:B
+I:34:10:0
+W:70:0:100:10000
+A:70/3
+P:10:1d1:0:0:10
+F:IGNORE_ACID
+D:A large shield fashioned from a metal alloy that is not subject to corrosion.
+D:It was especially crafted to better deflect attacks.
+
+### The Cloaks ###
+
+N:123:& Cloak~
+G:(:g
+I:35:1:0
+W:1:0:10:3
+A:1/1:20/1
+P:1:0d0:0:0:0
+D:A cloth coat typically worn as a loose outer garment. It is spacious enough
+D:to be worn even over bulky metal armour.
+
+N:124:& Shadow Cloak~
+G:(:D
+I:35:6:1
+W:60:0:5:7500
+A:75/4
+P:6:0d0:0:0:4
+F:RES_DARK | RES_LITE | STEALTH
+f:STEALTH
+D:A rare cloak imbued with magic to radiate a strange twilight, absorbing both
+D:extreme brightness and darkness.
+
+### The Gloves ###
+
+N:125:& Set~ of Leather Gloves
+G:]:U
+I:31:1:0
+W:1:0:5:3
+A:1/1
+P:1:0d0:0:0:0
+D:Light gloves which do not seriously hinder finger movements, while still
+D:protecting the hands somewhat.
+
+N:126:& Set~ of Gauntlets
+G:]:U
+I:31:2:0
+W:10:0:25:35
+A:10/1
+P:2:1d1:0:0:0
+D:Metal gloves protecting the hands up to the middle of the lower arm.
+
+N:127:& Set~ of Cesti
+G:]:W
+I:31:5:0
+W:50:0:40:100
+A:50/1
+P:5:1d1:0:0:0
+D:A set of metal gloves with nasty spikes and barbs. Though originally made to
+D:help in combat, the additional metal on the backs of the hands also offers a
+D:lot more protection.
+
+### The shields ###
+
+N:128:& Small Leather Shield~
+G:):U
+I:34:2:0
+W:3:0:50:30
+A:3/1
+P:2:1d1:0:0:0
+D:A small disc of lindenwood, with a leather covering on one side.
+
+N:129:& Large Leather Shield~
+G:):U
+I:34:4:0
+W:15:0:100:120
+A:15/1
+P:4:1d2:0:0:0
+D:A large oval or rectangular shield. It is made of wood, typically linden, and
+D:covered with a layer of hardened leather to offer better protection.
+
+N:130:& Small Metal Shield~
+G:):s
+I:34:3:0
+W:10:0:65:50
+A:10/1
+P:3:1d2:0:0:0
+D:A small shield strengthened with a layer of metal.
+
+N:131:& Large Metal Shield~
+G:):s
+I:34:5:0
+W:30:0:120:200
+A:30/1
+P:5:1d3:0:0:0
+D:A large piece of wood, rectangular or oval in shape, and covered with metal
+D:to strengthen it. It's to be worn strapped to the arm not occupied by the
+D:weapon when fighting.
+
+##### Rings #####
+
+N:132:Strength
+G:=:d
+I:45:24:0
+W:30:0:2:500
+A:30/1
+F:STR | HIDE_TYPE
+f:STR
+D:This bauble magically improves your strength.
+
+N:133:Dexterity
+G:=:d
+I:45:26:0
+W:30:0:2:500
+A:30/1
+F:DEX | HIDE_TYPE
+f:DEX
+D:This piece of jewellery magically improves your agility.
+
+N:134:Constitution
+G:=:d
+I:45:27:0
+W:30:0:2:500
+A:30/1
+F:CON | HIDE_TYPE
+f:CON
+D:This ring magically grants you health, improving your constitution.
+
+N:135:Intelligence
+G:=:d
+I:45:25:0
+W:30:0:2:500
+A:30/1
+F:INT | HIDE_TYPE
+f:INT
+D:This magical piece of jewellery makes you smarter.
+
+N:136:Speed
+G:=:d
+I:45:31:0
+W:75:0:2:100000
+A:75/1
+F:SPEED | HIDE_TYPE
+f:SPEED
+D:This wonderful ring grants you additional energy, allowing you to act faster.
+
+N:137:Searching
+G:=:d
+I:45:23:0
+W:5:0:2:250
+A:5/1
+F:SEARCH | HIDE_TYPE
+f:SEARCH
+D:This ring magically improves your attention, so you can detect hidden things better.
+
+# New : It can be activated but at the cost of its destruction
+N:138:Teleportation
+G:=:d
+I:45:4:0
+W:5:0:2:250
+A:5/1
+a:HARDCORE=DEST_TELE
+F:CURSED | TELEPORT | EASY_KNOW | ACTIVATE
+f:TELEPORT
+D:This ring will uncontrollably send you to different places at its whim.
+D:You can use its power once at your will, but it will destroy the ring.
+
+N:139:Slow Digestion
+G:=:d
+I:45:6:0
+W:5:0:2:250
+A:5/1
+F:SLOW_DIGEST | EASY_KNOW
+f:SLOW_DIGEST
+D:This magical bauble grants you some sustenance, allowing you to subsist on less food.
+
+N:140:Fire Resistance
+G:=:d
+I:45:8:0
+W:10:0:2:250
+A:10/1
+F:RES_FIRE | IGNORE_FIRE | EASY_KNOW
+f:RES_FIRE
+D:This piece of jewellery grants you some protection from the burning heat of fire.
+
+N:141:Cold Resistance
+G:=:d
+I:45:9:0
+W:10:0:2:250
+A:10/1
+F:RES_COLD | IGNORE_COLD | EASY_KNOW
+f:RES_COLD
+D:This piece of jewellery grants you some protection from the chilling forces of cold.
+
+N:142:Levitation
+G:=:d
+I:45:7:0
+W:5:0:2:200
+A:5/1
+F:FEATHER | EASY_KNOW
+f:FEATHER
+D:When you put on this ring, you will be able to float just above the floor.
+D:It prevents you from drowning, and all your falls will be painless.
+
+N:143:Poison Resistance
+G:=:d
+I:45:20:0
+W:60:0:2:16000
+A:60/2
+F:RES_POIS | EASY_KNOW
+f:RES_POIS
+D:This magical ring grants protection from poison.
+D:It is rumoured that in deep dungeons monsters can kill you at once if you
+D:don't have poison resistance.
+
+N:144:Free Action
+G:=:d
+I:45:21:0
+W:20:0:2:1500
+A:20/1
+F:FREE_ACT | EASY_KNOW
+f:FREE_ACT
+D:This magical bauble prevents you from being held.
+D:Some monsters will paralyse you and then kill you if you lack free action.
+
+N:145:Weakness
+G:=:d
+I:45:2:-5
+W:5:0:2:0
+A:5/1
+F:CURSED | STR | HIDE_TYPE
+f:STR
+D:This accursed ring will sap your strength, rendering you much weaker as long as you wear it.
+
+N:146:Flames
+G:=:d
+I:45:18:0
+W:50:0:2:3000
+A:50/1
+P:0:0d0:0:0:15
+a:HARDCORE=BA_FIRE_4
+F:RES_FIRE | IGNORE_FIRE | ACTIVATE
+f:RES_FIRE
+D:This fiery circlet grants you protection, makes fire less dangerous and even
+D:allows you to call forth a ball of flame.
+
+N:147:Acid
+G:=:d
+I:45:17:0
+W:50:0:2:3000
+A:50/1
+P:0:0d0:0:0:15
+a:HARDCORE=BA_ACID_4
+F:RES_ACID | IGNORE_ACID | ACTIVATE
+f:RES_ACID
+D:This magical ring is imbued with spells of devouring acid, granting protection against such
+D:assaults and the ability to shoot acid at your foes.
+
+N:148:Ice
+G:=:d
+I:45:19:0
+W:50:0:2:3000
+A:50/1
+a:HARDCORE=BA_COLD_4
+P:0:0d0:0:0:15
+F:RES_COLD | IGNORE_COLD | ACTIVATE
+f:RES_COLD
+D:This ring is imbued with supernatural cold, which makes you less vulnerable to such effects
+D:and occasionally allows you to throw balls of ice at your foes.
+
+N:149:Woe
+G:=:d
+I:45:0:-5
+W:50:0:2:0
+A:50/1
+F:CURSED | TELEPORT | WIS | CHR | HIDE_TYPE | AUTO_CURSE
+D:This accursed ring will turn you into a bumbling fool and, in addition, magically
+D:transports you to places you never wanted to see. It can recurse itself if
+D:you leave it on too long.
+
+N:150:Stupidity
+G:=:d
+I:45:3:-5
+W:5:0:2:0
+A:5/1
+F:CURSED | INT | HIDE_TYPE
+f:INT
+D:This wicked ring feeds off your intellect, magically making you stupid.
+
+N:151:Damage
+G:=:d
+I:45:29:0
+W:20:0:2:500
+A:20/1
+F:HIDE_TYPE
+D:This ring makes your hands magically strong in combat, allowing you to inflict
+D:greater pain with your hand-to-hand attacks.
+
+N:152:Accuracy
+G:=:d
+I:45:28:0
+W:20:0:2:500
+A:20/1
+F:HIDE_TYPE
+D:This ring magically improves your control in combat, allowing you to hit more often.
+
+N:153:Protection
+G:=:d
+I:45:16:0
+W:10:0:2:500
+A:10/1
+D:This ring creates a magical aura around you, protecting you against the blows of your enemies.
+
+N:154:Aggravate Monster
+G:=:d
+I:45:1:0
+W:5:0:2:0
+A:5/1
+F:CURSED | AGGRAVATE | EASY_KNOW | AUTO_CURSE
+f:AGGRAVATE
+D:This faithless ring will draw opponents' attention towards its hapless owner.
+
+N:155:See Invisible
+G:=:d
+I:45:22:0
+W:30:0:2:340
+A:30/1
+F:SEE_INVIS | EASY_KNOW
+f:SEE_INVIS
+D:This magical piece of jewellery allows your eyes to perceive beings otherwise unseen.
+
+N:156:Sustain Strength
+G:=:d
+I:45:10:0
+W:20:0:2:400
+A:20/1
+F:SUST_STR | EASY_KNOW
+f:SUST_STR
+D:This magical bauble protects your physical force against attacks attempting to drain it.
+
+N:157:Sustain Intelligence
+G:=:d
+I:45:11:0
+W:20:0:2:400
+A:20/1
+F:SUST_INT | EASY_KNOW
+f:SUST_INT
+D:This magical ring protects your intellect against attempts to lower it.
+
+N:158:Sustain Wisdom
+G:=:d
+I:45:12:0
+W:20:0:2:400
+A:20/1
+F:SUST_WIS | EASY_KNOW
+f:SUST_WIS
+D:This magical ring protects you from attempts to make you more foolish.
+
+N:159:Sustain Constitution
+G:=:d
+I:45:13:0
+W:20:0:2:400
+A:20/1
+F:SUST_CON | EASY_KNOW
+f:SUST_CON
+D:This magical ring protects your health, making it impossible for your opponents to lower it.
+
+N:160:Sustain Dexterity
+G:=:d
+I:45:14:0
+W:20:0:2:400
+A:20/1
+F:SUST_DEX | EASY_KNOW
+f:SUST_DEX
+D:This magical ring protects your nerves, so that you will never become clumsy.
+
+N:161:Sustain Charisma
+G:=:d
+I:45:15:0
+W:20:0:2:400
+A:20/1
+F:SUST_CHR | EASY_KNOW
+f:SUST_CHR
+D:This ring magically protects your beauty and charm from attempts to make you ugly.
+
+N:162:Slaying
+G:=:d
+I:45:30:0
+W:40:0:2:1000
+A:40/1
+F:SHOW_MODS
+D:This ring magically improves your fighting prowess, allowing to hit more often and harder.
+
+##### Amulets #####
+
+N:163:Brilliance
+G:":d
+I:40:6:0
+W:50:0:3:1000
+A:50/4
+F:INT | WIS | HIDE_TYPE | LITE1
+D:This talisman grants a sharper wit, greater insight and brightness to light dark places.
+
+N:164:Charisma
+G:":d
+I:40:7:0
+W:30:0:3:500
+A:30/1
+F:CHR | HIDE_TYPE
+f:CHR
+D:This amulet grants beauty beyond mere looks.
+
+N:165:Searching
+G:":d
+I:40:5:0
+W:15:0:3:600
+A:15/1
+F:SEARCH | HIDE_TYPE
+f:SEARCH
+D:This amulet grants keen sight, finding things that are hidden.
+
+N:166:Teleportation
+G:":d
+I:40:1:0
+W:10:0:3:250
+A:10/1
+F:CURSED | TELEPORT | EASY_KNOW
+f:TELEPORT
+D:This amulet nastily throws you all over the place.
+
+N:167:Slow Digestion
+G:":d
+I:40:3:0
+W:15:0:3:200
+A:15/1
+F:SLOW_DIGEST | EASY_KNOW
+f:SLOW_DIGEST
+D:This talisman will make you hungry less quickly when worn.
+
+N:168:Acid Resistance
+G:":d
+I:40:4:0
+W:10:0:3:250
+A:10/1
+F:RES_ACID | IGNORE_ACID | EASY_KNOW
+f:RES_ACID
+D:This magical talisman will make the corroding forces of acid less threatening to your health.
+
+N:169:Adornment
+G:":d
+I:40:2:0
+W:10:0:3:20
+A:10/1
+F:EASY_KNOW
+D:This amulet is not magical. It just looks good.
+
+##### Extra armour #####
+
+N:170:& Double Ring Mail~
+G:[:s
+I:37:5:0
+W:25:0:230:700
+A:25/1
+P:15:1d4:-2:0:0
+D:A suit of leather armour with metal rings sewn onto it. In addition, in important parts it is
+D:reinforced with mail.
+
+##### Additional amulets #####
+
+N:171:the Magi
+G:":d
+I:40:8:0
+W:70:0:3:30000
+A:70/8
+P:0:0d0:-4:-4:0
+F:INT | SUST_INT | SEARCH | SPELL_CONTAIN | WIELD_CAST
+F:FREE_ACT | RES_BLIND | RES_CONF |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This rare amulet is highly desirable for mages, as it makes its wearer smarter, more attentive
+D:and impervious to magics which would make their own magic-use impossible.
+
+N:172:Doom
+G:":d
+I:40:0:-5
+W:50:0:3:0
+A:50/1
+F:CURSED | STR | INT | WIS | DEX | CON | CHR | HIDE_TYPE
+F:AUTO_CURSE | CURSE_NO_DROP
+D:This wicked amulet will drain all your abilities, turning you into a mere shadow of yourself. It
+D:is exceedingly hard to get rid of.
+
+##### Scrolls #####
+
+N:173:Enchant Weapon To-Hit
+G:?:d
+I:70:17:0
+W:15:0:5:125
+A:15/1
+D:This magical scroll will allow you to improve the accuracy of a weapon in your possession.
+D:However, weapons which are already very highly enchanted are more difficult to improve
+D:further.
+
+N:174:Enchant Weapon To-Dam
+G:?:d
+I:70:18:0
+W:15:0:5:125
+A:15/1
+D:Upon reading this scroll, a magical enchantment will be placed on a weapon in your
+D:possession, increasing the pain it inflicts when hitting. On very highly enchanted weapons this
+D:enchantment may fail, wasting the scroll.
+
+N:175:Enchant Armour
+G:?:d
+I:70:16:0
+W:15:0:5:125
+A:15/1
+D:This scroll will try to enchant a piece of armour in your possession, making it more effective
+D:in protecting you. Highly enchanted armour is likely not to accept this enchantment, however.
+
+N:176:Identify
+G:?:d
+I:70:12:0
+W:1:0:5:50
+A:1/1:5/1:10/1:30/1
+D:If you read this scroll, the identity of an item you specify will be laid open to you.
+
+N:177:*Identify*
+G:?:d
+I:70:13:0
+W:30:0:5:1000
+A:30/1:50/2:80/1:100/1
+D:This scroll will allow you to gain insight into an object's special properties.
+D:Only the highly magical objects, like rare rings and amulets or very unusual weapons
+D:and armour possess abilities which warrant the use of this magic.
+
+N:178:Rumour
+G:?:d
+I:70:51:0
+W:1:0:5:10
+A:1/1
+D:A piece of paper inscribed with a little text. You may meditate over it or ignore it at your
+D:leisure.
+
+N:179:Chaos
+G:?:d
+I:70:50:0
+W:100:0:5:10000
+A:100/8
+F:IGNORE_FIRE | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC
+D:A piece of paper inscribed with strange shifting runes. Upon reading them, they will release
+D:a blast of chaotic forces.
+
+N:180:Remove Curse
+G:?:d
+I:70:14:0
+W:10:0:5:100
+A:10/1:20/2:40/2
+D:A scroll inscribed with a beneficial formula. Upon reading it, evil magics will be removed
+D:from your possessions.
+
+N:181:Light
+G:?:d
+I:70:24:0
+W:0:0:5:15
+A:0/1:3/1:10/1
+D:A scroll which will create a permanent magical light, illuminating the surroundings.
+
+N:182:Fire
+G:?:d
+I:70:48:0
+W:50:0:5:1000
+A:50/4
+F:IGNORE_FIRE
+D:A piece of paper inscribed with runes glowing brightly red. Upon reading them, a large blast
+D:of fire will be released.
+
+N:183:Ice
+G:?:d
+I:70:49:0
+W:75:0:5:5000
+A:75/6
+F:IGNORE_COLD
+D:A piece of paper inscribed with light-blue runes that radiate a strange cold. Upon reading them,
+D:a large icy blast will be released.
+
+N:184:Summon Monsters
+G:?:d
+I:70:4:0
+W:1:0:5:0
+A:1/1
+D:This scroll was made by mischievous sorcerers. If it is read, a few creatures will appear to fight
+D:you.
+
+N:185:Phase Door
+G:?:d
+I:70:8:0
+W:1:0:5:15
+A:1/1
+D:Upon reading this scroll, you will be translocated over a short distance.
+
+N:186:Teleportation
+G:?:d
+I:70:9:0
+W:10:0:5:40
+A:10/1
+D:If you read this scroll, you will immediately be transported to another place on the level.
+
+N:187:Teleport Level
+G:?:d
+I:70:10:0
+W:20:0:5:50
+A:20/1
+D:This scroll will magically transport you to the level directly above or below, when read.
+
+N:188:Monster Confusion
+G:?:d
+I:70:36:0
+W:5:0:5:30
+A:5/1
+D:Reading this scroll will cause your hands to glow with a strange mesmerising light that will
+D:attempt to confuse the next creature you hit with a hand or weapon attack.
+
+N:189:Magic Mapping
+G:?:d
+I:70:25:0
+W:5:0:5:40
+A:5/1
+D:Reading this scroll will reveal the layout of your immediate surroundings to you.
+
+N:190:Rune of Protection
+G:?:d
+I:70:38:0
+W:50:0:5:500
+A:50/2:90/4
+D:This scroll is inscribed with a powerful protective incantation. When read, this will erect a
+D:strong magical ward around the location you currently stand on. Be aware that this magic is
+D:easily disturbed by already present structures and thus cannot work where an object is lying, or
+D:on a trap.
+
+N:191:*Remove Curse*
+G:?:d
+I:70:15:0
+W:50:0:5:8000
+A:50/2:75/2:85/2:95/1
+D:This valuable scroll is inscribed with a powerful blessing capable of dispelling all but the
+D:mightiest curses which may have been laid on your possessions.
+
+N:192:Treasure Detection
+G:?:d
+I:70:26:0
+W:0:0:5:15
+A:0/1
+D:This scroll magically reveals the locations of nearby loose change to you.
+
+N:193:Object Detection
+G:?:d
+I:70:27:0
+W:0:0:5:15
+A:0/1
+D:This scroll shows nearby objects to you. It only makes you aware of items on the floor,
+D:however, not those carried by creatures.
+
+N:194:Trap Detection
+G:?:d
+I:70:28:0
+W:5:0:5:35
+A:5/1:10/1
+D:This scroll is very helpful, because it reveals the locations of nearby snares and traps which you
+D:might otherwise blunder into.
+
+##### Extra ammunition #####
+
+N:195:& Sheaf Arrow~
+G:{:o
+I:17:1:0
+W:10:0:4:3
+A:15/2:50/2
+P:0:1d5:0:0:0
+F:SHOW_MODS
+D:These arrows have bigger arrowheads and bigger feathers.
+D:They also make bigger holes.
+
+N:196:& Mithril Shot~
+G:{:B
+I:16:2:0
+W:40:0:4:20
+A:40/2:65/1
+P:0:3d4:5:5:0
+F:SHOW_MODS | IGNORE_ACID
+D:Sling bullets made from the slags of mithril smelting. They are unusually heavy, hitting
+D:with great force, and are almost imperishable.
+
+##### Additional scrolls #####
+
+N:197:Door/Stair Location
+G:?:d
+I:70:29:0
+W:5:0:5:35
+A:5/1:10/1:15/1
+D:This scroll will reveal nearby passages.
+
+N:198:Acquirement
+G:?:d
+I:70:46:0
+W:20:0:5:100000
+A:20/8
+D:A great treasure is magically stored within the shimmering runes of this scroll. Reading the
+D:words will release it.
+
+N:199:*Acquirement*
+G:?:d
+I:70:47:0
+W:60:0:5:200000
+A:60/16
+D:Several great treasures have been hidden in a magical compartment. This scroll serves as the
+D:key and will release them when read.
+
+N:200:Mass Genocide
+G:?:d
+I:70:45:0
+W:50:0:5:1000
+A:50/4:100/4
+D:An astoundingly powerful death spell is stored in the runes of this spell. Reading
+D:it will annihilate all nearby creatures. Only a few beings of legendary stature
+D:can withstand it.
+
+N:201:Detect Invisible
+G:?:d
+I:70:30:0
+W:1:0:5:15
+A:1/1
+D:A minor detection spell is stored in this scroll, showing you the locations of otherwise
+D:unseen beings for a brief moment.
+
+N:202:Aggravate Monster
+G:?:d
+I:70:1:0
+W:5:0:5:0
+A:5/1
+D:This nasty scroll will make a loud noise, waking up foes in your vicinity.
+
+N:203:Trap Creation
+G:?:d
+I:70:7:0
+W:10:0:5:0
+A:10/1
+D:If you read this rather annoying scroll, snares and pitfalls will magically be planted all around
+D:you, ready to do nasty things to you once you walk onto them.
+
+N:204:Trap/Door Destruction
+G:?:d
+I:70:39:0
+W:10:0:5:50
+A:10/1
+D:A very specifically destructive spell is written on this scroll. It will smash all traps and all
+D:doors immediately next to you.
+
+N:205:Artifact Creation
+G:?:d
+I:70:52:0
+W:70:0:5:200000
+A:70/16
+D:The mighty magic on this scroll will imbue a mundane item you possess with supernatural powers,
+D:also rendering the object indestructible.
+
+N:206:Recharging
+G:?:d
+I:70:22:0
+W:40:0:5:200
+A:40/1
+D:This scroll is inscribed with a spell releasing the enchantments used to give wands and
+D:staves their power, allowing you to replenish their spent charges.
+
+N:207:Genocide
+G:?:d
+I:70:44:0
+W:40:0:5:750
+A:40/4:80/4
+D:This rare and powerful scroll will annihilate all members of a specified race of monsters in
+D:your current location, but this will also exact a price of pain from you.
+
+N:208:Darkness
+G:?:d
+I:70:0:0
+W:1:0:5:0
+A:1/1
+D:This scroll will create a blast of utter darkness, which then fades to leave the immediate
+D:surroundings in a lasting gloom. The extreme darkness can blind those who are not used to
+D:it.
+
+N:209:Protection from Evil
+G:?:d
+I:70:37:0
+W:30:0:5:250
+A:30/1
+D:Upon reading the runes on this piece of paper, a faint aura of holiness will spring into existence
+D:around you, protecting you from blows of evil creatures, unless they are more powerful than you.
+
+N:210:Satisfy Hunger
+G:?:d
+I:70:32:0
+W:5:0:5:10
+A:5/1:20/1:50/1:75/1
+D:Reading this scroll will transport a good portion of nourishing gruel directly into your
+D:stomach. Some people say that this is a ploy of a food producer whose food nobody wants to eat.
+
+N:211:Dispel Undead
+G:?:d
+I:70:42:0
+W:40:0:5:200
+A:40/1
+D:A powerful exorcism is inscribed on this scroll. When read it will hurt undead abominations
+D:nearby, possibly even destroying them.
+
+N:212:*Enchant Weapon*
+G:?:d
+I:70:21:0
+W:50:0:5:500
+A:50/1
+D:Reading this scroll will magically infuse a weapon of your choice, making it more effective
+D:in combat.
+
+N:213:Curse Weapon
+G:?:d
+I:70:3:0
+W:50:0:5:0
+A:50/1
+D:This scroll will ruin your weapon beyond repair. Only weapons of legend have a hope of
+D:escaping destruction, but even they will often be shattered.
+
+N:214:*Enchant Armour*
+G:?:d
+I:70:20:0
+W:50:0:5:500
+A:50/1:50/1
+D:This scroll will place a great enchantment on a piece of armour of your choice, making it much
+D:better at protecting you. Mark that improving armours which are already highly enchanted is very
+D:difficult and will often fail.
+
+N:215:Curse Armour
+G:?:d
+I:70:2:0
+W:50:0:5:0
+A:50/1
+D:This scroll bears a curse that will tear your armour to shreds. Don't read it!
+
+N:216:Summon Undead
+G:?:d
+I:70:5:0
+W:15:0:5:0
+A:15/1
+D:These spells scribed by ancient necromancers will call their horrible creatures to haunt you.
+
+N:217:Blessing
+G:?:d
+I:70:33:0
+W:1:0:5:15
+A:1/1
+D:The recitation of this scroll will grant you a blessing of the Valar, making you more confident
+D:in attack and defence for a few moments.
+
+N:218:Holy Chant
+G:?:d
+I:70:34:0
+W:10:0:5:40
+A:10/1
+D:This blessing will give you a holy warrior's prowess in battle for a while.
+
+N:219:Holy Prayer
+G:?:d
+I:70:35:0
+W:25:0:5:80
+A:25/1
+D:This incantation lets you fight as a warrior of Valinor for quite a while, supreme in attack and
+D:defence.
+
+N:220:Word of Recall
+G:?:d
+I:70:11:0
+W:5:0:5:150
+A:5/1
+D:The spell on this scroll will slowly build an ethereal conduit to the town for you if you are in
+D:a dungeon, and into the dungeon if you are above ground. Upon completion, which takes a while, you
+D:will suddenly be translocated to the other place.
+
+N:221:*Destruction*
+G:?:d
+I:70:41:0
+W:40:0:5:250
+A:40/1
+D:This scroll is inscribed with a mighty conjuration which wrecks the dungeon all around you.
+D:Monsters and objects will be annihilated by this blast; only completely indestructible things can
+D:withstand it.
+
+##### Potions #####
+
+N:222:Slime Mold Juice
+G:!:d
+I:71:2:400
+W:0:0:4:2
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A strange sort of yellowish-green slime, too viscous to even slosh in the bottle. And as I know
+D:you, you're going to slurp it down.
+
+N:223:Apple Juice
+G:!:d
+I:71:1:250
+W:0:0:4:1
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A healthy fruit beverage.
+
+N:224:Water
+G:!:d
+I:71:0:200
+W:0:0:4:1
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A small bottle filled with pure water.
+
+N:225:Strength
+G:!:d
+I:71:48:0
+W:20:0:4:8000
+A:20/6:25/3:30/1
+P:0:1d1:0:0:0
+D:This beneficial potion will magically improve your physical strength.
+
+N:226:Weakness
+G:!:d
+I:71:16:0
+W:3:0:4:0
+A:3/1
+P:0:3d12:0:0:0
+F:FOUNTAIN
+D:This nasty potion will sap your strength, making you weaker.
+
+N:227:Restore Strength
+G:!:d
+I:71:42:0
+W:25:0:4:300
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical potion will bring back your physical power to its full extent, should it be drained.
+
+N:228:Intelligence
+G:!:d
+I:71:49:0
+W:20:0:4:8000
+A:20/6:25/3:30/1
+P:0:1d1:0:0:0
+D:This nice potion will magically enhance your wit, permanently improving your intellect.
+
+N:229:Stupidity
+G:!:d
+I:71:17:0
+W:20:0:4:0
+A:20/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This accursed potion will cloud your intellect, making you stupid.
+
+N:230:Restore Intelligence
+G:!:d
+I:71:43:0
+W:25:0:4:300
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This beneficial potion will magically heal your brain, restoring drained intelligence.
+
+N:231:Wisdom
+G:!:d
+I:71:50:0
+W:20:0:4:8000
+A:20/6:25/3:30/1
+P:0:1d1:0:0:0
+D:This potion grants great insight, making you wiser.
+
+N:232:Naivety
+G:!:d
+I:71:18:0
+W:20:0:4:0
+A:20/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This potion casts a shadow on your knowledge, making you foolish.
+
+N:233:Restore Wisdom
+G:!:d
+I:71:44:0
+W:25:0:4:300
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This potion benefits the naive, bringing back their wisdom to what it once was.
+
+N:234:Charisma
+G:!:d
+I:71:53:0
+W:20:0:4:1000
+A:20/1:25/1
+P:0:1d1:0:0:0
+D:This potion infuses you with beauty and charm.
+
+N:235:Ugliness
+G:!:d
+I:71:21:0
+W:20:0:4:0
+A:20/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This wicked potion slightly twists your features, making you appear less fair.
+
+N:236:Restore Charisma
+G:!:d
+I:71:47:0
+W:20:0:4:300
+A:20/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This useful potion restores drained charm.
+
+N:237:Curing
+G:!:d
+I:71:61:100
+W:18:0:4:250
+A:18/1:40/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This blessed potion helps to recover from a wide variety of ailments.
+
+### Note! Invulnerability decreases your food... ###
+
+N:238:Invulnerability
+G:!:d
+I:71:62:-2500
+W:90:0:4:100000
+A:90/9
+P:0:1d1:0:0:0
+D:This immensely powerful potion makes your physique almost indestructible for a very short
+D:time. Very rarely, an attempt to hurt you will still succeed, so don't be too confident.
+
+N:239:New Life
+G:!:d
+I:71:63:100
+W:50:0:4:750000
+A:50/20:100/10:120/5
+P:0:1d1:0:0:0
+D:This potion fundamentally twists your physical features, as if you were another mother's child.
+D:Your physique will be shaped anew.
+
+N:240:Cure Serious Wounds
+G:!:d
+I:71:35:100
+W:3:0:4:40
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This beneficial potion will cure some wounds and other inhibiting ailments.
+
+N:241:Cure Critical Wounds
+G:!:d
+I:71:36:100
+W:5:0:4:100
+A:5/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This nice potion will cure a good bit of hurt you have suffered and also allows you to recover
+D:from unhealthy conditions like blood poisoning, confusion or blindness.
+
+N:242:Healing
+G:!:d
+I:71:37:200
+W:15:0:4:300
+A:15/1:30/1:60/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This blessed potion greatly heals you and also cures many other ailments from
+D:which you might suffer.
+
+N:243:Constitution
+G:!:d
+I:71:52:0
+W:20:0:4:8000
+A:20/6:25/3:30/1
+P:0:1d1:0:0:0
+D:This magical concoction greatly improves your health, making you permanently tougher.
+
+N:244:Experience
+G:!:d
+I:71:59:0
+W:65:0:4:25000
+A:65/1
+P:0:1d1:0:0:0
+D:This exceptional drink instills into you knowledge, allowing you to advance further in your trade.
+
+N:245:Sleep
+G:!:d
+I:71:11:100
+W:0:0:4:0
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This potion was made to help people with bad sleeping disorders to find rest. Surely you don't
+D:want to take a nap while nasty goblins are searching for you?
+
+N:246:Blindness
+G:!:d
+I:71:7:0
+W:0:0:4:0
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This slightly poisonous potion temporarily impedes your eyesight, making you unable to see
+D:a thing.
+
+N:247:Booze
+G:!:d
+I:71:9:50
+W:0:0:4:0
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A small bottle of a dark brown distilled beverage. By its look and smell, it contains a fair
+D:amount of still muck and wood alcohol.
+
+N:248:Poison
+G:!:d
+I:71:6:0
+W:3:0:4:0
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This bottle is filled with a mild but still dangerous liquid poison. Drinking it would be highly
+D:unwise.
+
+N:249:Speed
+G:!:d
+I:71:29:0
+W:1:0:4:75
+A:1/1:40/1:60/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A magical drink which temporarily allows you to act much faster when imbibed.
+
+N:250:Slowness
+G:!:d
+I:71:4:50
+W:1:0:4:0
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A magical concoction which drains force from you, forcing you to move and act a lot slower,
+D:until it wears off.
+
+N:251:Dexterity
+G:!:d
+I:71:51:0
+W:20:0:4:8000
+A:20/6:25/3:30/1
+P:0:1d1:0:0:0
+D:A strange magical drink which greatly improves your agility and nimbleness.
+
+N:252:Restore Dexterity
+G:!:d
+I:71:45:0
+W:25:0:4:300
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical brew brings your agility back to its former glory should it have been reduced.
+
+N:253:Restore Constitution
+G:!:d
+I:71:46:0
+W:25:0:4:300
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A beneficial magical concoction, restoring your damaged health.
+
+N:254:Lose Memories
+G:!:d
+I:71:13:0
+W:10:0:4:0
+A:10/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A wicked potion, making you less of an adventurer than by right you should be.
+
+N:255:Salt Water
+G:!:d
+I:71:5:0
+W:0:0:4:0
+A:0/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A solution of salt in water, made for curing meat. Drinking it would cause violent nausea.
+
+N:256:Enlightenment
+G:!:d
+I:71:56:0
+W:25:0:4:800
+A:25/1:50/1:100/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:An exceptional magical drink which lets you "remember" your current location as if you had
+D:already seen all of it.
+
+N:257:Heroism
+G:!:d
+I:71:32:0
+W:1:0:4:35
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:Quaffing this drink will temporarily make you fight like a hero of great might.
+
+N:258:Berserk Strength
+G:!:d
+I:71:33:0
+W:3:0:4:100
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This strange drink will instill in you a wild battle rage for a while.
+
+N:259:Boldness
+G:!:d
+I:71:28:0
+W:1:0:4:10
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This drink will improve your courage, dispelling all fear.
+
+N:260:Restore Life Levels
+G:!:d
+I:71:41:0
+W:40:0:4:400
+A:40/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:If your life force has been drained, this blessed brew will bring it back.
+
+N:261:Resist Heat
+G:!:d
+I:71:30:0
+W:1:0:4:30
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical potion will make fire flow in your veins, rendering you less vulnerable to outward
+D:heat.
+
+N:262:Resist Cold
+G:!:d
+I:71:31:0
+W:1:0:4:30
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical potion will for a short while grant you a familiarity with frost, so that you take
+D:less harm from extreme cold.
+
+N:263:Detect Invisible
+G:!:d
+I:71:25:0
+W:3:0:4:50
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical concoction will temporarily improve your eyesight so that you can see creatures
+D:otherwise unseen.
+
+N:264:Slow Poison
+G:!:d
+I:71:26:0
+W:1:0:4:25
+A:1/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This healthy potion will dilute poisons in your blood.
+
+N:265:Neutralise Poison
+G:!:d
+I:71:27:0
+W:5:0:4:75
+A:5/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This powerful antidote will completely negate the effect of poisons currently affecting you.
+
+N:266:Restore Mana
+G:!:d
+I:71:40:0
+W:25:0:4:350
+A:25/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This potion infuses the drinker with pure magic force, bringing their magical potential back to
+D:its full extent.
+
+N:267:Infra-vision
+G:!:d
+I:71:24:0
+W:3:0:4:20
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This potion temporarily grants or improves the ability to optically perceive heat sources.
+
+N:268:Resistance
+G:!:d
+I:71:60:100
+W:20:0:4:250
+A:20/1:45/1:80/1:100/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:FOUNTAIN
+D:This great potion infuses you with the power of the elements, so that you can better
+D:withstand their ravages.
+
+##### Wands #####
+
+# Wand of school spells
+N:269:Spell
+G:-:d
+I:65:1:0
+W:3:0:10:100
+A:3/1:13/1:23/1:43/1:63/1:83/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE
+
+N:270:Manathrust
+G:-:d
+I:65:3:-1:SPELL=Manathrust
+W:3:0:10:100
+A:3/1
+P:0:1d1:0:0:0
+
+N:271:Fireflash
+G:-:d
+I:65:4:-1:SPELL=Fireflash
+W:10:0:10:100
+A:10/2
+P:0:1d1:0:0:0
+
+N:272:Firewall
+G:-:d
+I:65:5:-1:SPELL=Firewall
+W:20:0:10:100
+A:20/1
+P:0:1d1:0:0:0
+
+N:273:Tidal Wave
+G:-:d
+I:65:6:-1:SPELL=Tidal Wave
+W:20:0:10:100
+A:20/1
+P:0:1d1:0:0:0
+
+N:274:Ice Storm
+G:-:d
+I:65:7:-1:SPELL=Ice Storm
+W:15:0:10:100
+A:15/1
+P:0:1d1:0:0:0
+
+N:275:Noxious Cloud
+G:-:d
+I:65:8:-1:SPELL=Noxious Cloud
+W:5:0:10:100
+A:5/2
+P:0:1d1:0:0:0
+
+N:276:Poison Blood
+G:-:d
+I:65:9:-1:SPELL=Poison Blood
+W:30:0:10:100
+A:30/2
+P:0:1d1:0:0:0
+
+N:277:Thunderstorm
+G:-:d
+I:65:10:-1:SPELL=Thunderstorm
+W:40:0:10:100
+A:40/2
+P:0:1d1:0:0:0
+
+N:278:Dig
+G:-:d
+I:65:11:-1:SPELL=Dig
+W:15:0:10:100
+A:15/1
+P:0:1d1:0:0:0
+
+N:279:Stone Prison
+G:-:d
+I:65:12:-1:SPELL=Stone Prison
+W:50:0:10:100
+A:50/3
+P:0:1d1:0:0:0
+
+N:280:Strike
+G:-:d
+I:65:13:-1:SPELL=Strike
+W:30:0:10:100
+A:30/1
+P:0:1d1:0:0:0
+
+N:281:Teleport Away
+G:-:d
+I:65:14:-1:SPELL=Teleport Away
+W:20:0:10:100
+A:20/1
+P:0:1d1:0:0:0
+
+N:282:Summon Animal
+G:-:d
+I:65:15:-1:SPELL=Summon Animal
+W:60:0:10:100
+A:60/1
+P:0:1d1:0:0:0
+
+N:283:Magelock
+G:-:d
+I:65:16:-1:SPELL=Magelock
+W:1:0:10:100
+A:3/2
+P:0:1d1:0:0:0
+
+N:284:Slow Monster
+G:-:d
+I:65:17:-1:SPELL=Slow Monster
+W:3:0:10:100
+A:3/2
+P:0:1d1:0:0:0
+
+N:285:Essence of Speed
+G:-:d
+I:65:18:-1:SPELL=Essence of Speed
+W:25:0:10:100
+A:25/2
+P:0:1d1:0:0:0
+
+N:286:Banishment
+G:-:d
+I:65:19:-1:SPELL=Banishment
+W:45:0:10:100
+A:45/2
+P:0:1d1:0:0:0
+
+N:287:Disperse Magic
+G:-:d
+I:65:20:-1:SPELL=Disperse Magic
+W:10:0:10:100
+A:10/2
+P:0:1d1:0:0:0
+
+N:288:Charm
+G:-:d
+I:65:21:-1:SPELL=Charm
+W:15:0:10:100
+A:15/1
+P:0:1d1:0:0:0
+
+N:289:Confuse
+G:-:d
+I:65:22:-1:SPELL=Confuse
+W:7:0:10:100
+A:7/2
+P:0:1d1:0:0:0
+
+N:290:Demon Blade
+G:-:d
+I:65:23:-1:SPELL=Demon Blade
+W:60:0:10:100
+A:60/1
+P:0:1d1:0:0:0
+
+N:291:Heal Monster
+G:-:d
+I:65:24:-1:SPELL=Heal Monster
+W:1:0:10:0
+A:1/4
+P:0:1d1:0:0:0
+
+N:292:Haste Monster
+G:-:d
+I:65:25:-1:SPELL=Haste Monster
+W:1:0:10:0
+A:1/4
+P:0:1d1:0:0:0
+
+
+##### Extra ammunition #####
+
+N:293:& Flight Arrow~
+G:{:y
+I:17:1:0
+W:3:0:1:1
+A:3/2
+P:0:1d3:0:0:0
+F:SHOW_MODS
+D:An arrow designed for longer flight. Consequently, it is lighter and hits with less force.
+
+# XXX
+
+N:295:& Boulder~
+G:*:W
+I:11:1:0
+W:3:0:50:1
+A:3/200
+P:0:5d5:0:0:0
+F:SPECIAL_GENE
+D:A big nasty-looking piece of rock.
+
+# Used for a quest
+N:296:& Flame~ Imperishable
+G:~:v
+I:11:255:0
+W:127:0:4:0
+A:127/255
+P:0:1d1:0:0:0
+T:39:2
+F:NORM_ART | FULL_NAME | SPECIAL_GENE
+F:ACTIVATE | ACTIVATE_NO_WIELD
+a:SPELL=Artifact Eternal Flame
+D:An impossibly bright, flickering living flame. It can be used
+D:once to imbue an object with the power of Eru Iluvatar himself.
+
+N:297:& Necromantic Teeth~
+G:|:D
+I:23:34:0
+W:0:0:7:10
+A:0/1:5/1:10/1:20/1
+P:0:1d4:0:0:0
+F:SHOW_MODS | VAMPIRIC | SPECIAL_GENE
+D:This looks like some animal's teeth or at least you think
+D:it comes from an animal...
+
+# The Horn of the Thunderlords
+N:298:& Golden Horn~ of the Thunderlords
+G:_:d
+I:55:23:-1:SPELL=Artifact Thunderlords
+W:50:10:10:12000
+P:0:1d4:0:0:0
+A:50/200
+T:55:8
+F:NO_RECHARGE | EASY_USE | RECHARGED | NORM_ART | FULL_NAME | SPECIAL_GENE
+D:This horn was given to you as a reward. Blow it if you are in dire need
+D:of leaving your current location fast.
+
+# XXX
+
+##### Staves #####
+
+N:300:Spell
+G:_:d
+I:55:1:0
+W:5:0:50:100
+A:5/1:15/1:35/1:45/1:65/1:75/1:85/1:95/1
+P:0:1d2:0:0:0
+F:SPECIAL_GENE
+
+N:301:Nothing
+G:_:d
+I:55:2:-1:SPELL=Nothing
+W:5:0:50:100
+A:5/1
+P:0:1d2:0:0:0
+
+N:302:Globe of Light
+G:_:d
+I:55:3:-1:SPELL=Globe of Light
+W:7:0:50:100
+A:7/1
+P:0:1d2:0:0:0
+
+N:303:Fiery Shield
+G:_:d
+I:55:4:-1:SPELL=Fiery Shield
+W:15:0:50:100
+A:15/2
+P:0:1d2:0:0:0
+
+N:304:Remove Curses
+G:_:d
+I:55:5:-1:SPELL=Remove Curses
+W:10:0:50:100
+A:10/1
+P:0:1d2:0:0:0
+
+N:305:Wings of Winds
+G:_:d
+I:55:6:-1:SPELL=Wings of Winds
+W:25:0:50:100
+A:25/2
+P:0:1d2:0:0:0
+
+N:306:Shake
+G:_:d
+I:55:7:-1:SPELL=Shake
+W:30:0:50:100
+A:30/1
+P:0:1d2:0:0:0
+
+N:307:Disarm
+G:_:d
+I:55:8:-1:SPELL=Disarm
+W:2:0:50:100
+A:2/1
+P:0:1d2:0:0:0
+
+N:308:Teleportation
+G:_:d
+I:55:9:-1:SPELL=Teleportation
+W:20:0:50:100
+A:20/1
+P:0:1d2:0:0:0
+
+N:309:Probability Travel
+G:_:d
+I:55:10:-1:SPELL=Probability Travel
+W:50:0:50:100
+A:50/3
+P:0:1d2:0:0:0
+
+N:310:Recovery
+G:_:d
+I:55:11:-1:SPELL=Recovery
+W:20:0:50:100
+A:20/1
+P:0:1d2:0:0:0
+
+N:311:Healing
+G:_:d
+I:55:12:-1:SPELL=Healing
+W:25:0:50:100
+A:25/2
+P:0:1d2:0:0:0
+
+N:312:Vision
+G:_:d
+I:55:13:-1:SPELL=Vision
+W:30:0:50:100
+A:30/1
+P:0:1d2:0:0:0
+
+N:313:Identify
+G:_:d
+I:55:14:-1:SPELL=Identify
+W:10:0:50:100
+A:10/1
+P:0:1d2:0:0:0
+
+N:314:Sense Hidden
+G:_:d
+I:55:15:-1:SPELL=Sense Hidden
+W:10:0:50:100
+A:10/1
+P:0:1d2:0:0:0
+
+N:315:Reveal Ways
+G:_:d
+I:55:16:-1:SPELL=Reveal Ways
+W:5:0:50:100
+A:5/1
+P:0:1d2:0:0:0
+
+N:316:Sense Monsters
+G:_:d
+I:55:17:-1:SPELL=Sense Monsters
+W:5:0:50:100
+A:5/1
+P:0:1d2:0:0:0
+
+N:317:Genocide
+G:_:d
+I:55:18:-1:SPELL=Genocide
+W:55:0:50:100
+A:55/2
+P:0:1d2:0:0:0
+
+N:318:Summon
+G:_:d
+I:55:19:-1:SPELL=Summon
+W:5:0:50:100
+A:5/1
+P:0:1d2:0:0:0
+
+N:319:Sterilization
+G:_:d
+I:55:24:-1:SPELL=Sterilize
+W:20:0:50:100
+A:20/3
+P:0:1d2:0:0:0
+
+N:320:Wish
+G:_:d
+I:55:20:-1:SPELL=Wish
+W:95:0:50:10000
+A:95/40
+P:0:1d2:0:0:0
+F:NO_RECHARGE
+
+N:321:Mana
+G:_:d
+I:55:21:-1:SPELL=Mana
+W:60:0:50:100
+A:60/2
+P:0:1d2:0:0:0
+
+# XXX
+# ...
+# XXX
+
+##### School Books #####
+
+N:330:& Tome~ of Magical Energy
+G:?:B
+I:111:0:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:The bright blue cover of this tome seems to glow
+D:with an inner violet light. You feel more attuned
+D:to raw magic as you hold it.
+
+N:331:& Tome~ of the Eternal Flame
+G:?:R
+I:111:1:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | IGNORE_FIRE
+D:The cover of this tome is bright red, with flickering
+D:flames dancing across it once in a while. As you hold
+D:it, you begin to gain a much closer knowledge of all
+D:that is fiery.
+
+N:332:& Tome~ of the Blowing Wind
+G:?:b
+I:111:2:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | IGNORE_ELEC
+D:The pages of this tome have a tendency to turn themselves,
+D:as though flipped by an errant wind. As you hold it,
+D:you start feeling wind at your fingertips.
+
+N:333:& Tome~ of the Impenetrable Earth
+G:?:U
+I:111:3:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | IGNORE_ACID
+D:The solid leather cover of this tome seems permanently
+D:stained with caked mud and grass. Heavy it is to lift,
+D:yet strangely comforting to hold - you feel stronger
+D:and better supported.
+
+N:334:& Tome~ of the Everrunning Wave
+G:?:B
+I:111:4:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:The cover and pages of this tome seem to be perpetually
+D:wet, though they are not wet to the touch. As you hold
+D:it, you begin to understand ocean storms better.
+
+N:335:& Tome~ of Translocation
+G:?:B
+I:111:5:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This book seems to flicker strangely. It's one of those books
+D:with an annoying tendency to disappear when you need it and
+D:reappear in the unlikeliest places. As you hold it, you start
+D:to understand what conveyance really means.
+
+N:336:& Tome~ of the Tree
+G:?:G
+I:111:6:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:The cover of this tome is a bright shade of green, and it gives off
+D:a healthy, zesty scent that makes your thoughts clearer. As you
+D:hold it, your heart goes out to all living things upon Arda.
+
+N:337:& Tome~ of Knowledge
+G:?:D
+I:111:7:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:A thick book with solid leather binding. It looks entirely
+D:unremarkable, but as you hold it, you feel strangely able
+D:to learn the inner workings of things and creatures.
+
+##### Chests #####
+
+N:338:& Small wooden chest~
+G:~:s
+I:7:1:0
+W:5:0:250:20
+A:5/1
+P:0:2d3:0:0:0
+D:A small wooden box, locked and possibly trapped. You wonder what might be inside.
+
+N:339:& Large wooden chest~
+G:~:s
+I:7:5:0
+W:15:0:500:60
+A:15/1
+P:0:2d5:0:0:0
+D:A large wooden box. It doesn't seem to be locked - why not risk a look inside?
+
+N:340:& Small iron chest~
+G:~:s
+I:7:2:0
+W:25:0:300:100
+A:25/1
+P:0:2d4:0:0:0
+D:A small rectangular container made of wood and reinforced with iron corners and latches.
+
+N:341:& Large iron chest~
+G:~:s
+I:7:6:0
+W:35:0:1000:150
+A:35/1
+P:0:2d6:0:0:0
+D:A big container made of wood, with a heavy iron lock.
+
+N:342:& Small steel chest~
+G:~:s
+I:7:3:0
+W:45:0:500:200
+A:45/1
+P:0:2d4:0:0:0
+D:A small wooden box with strong steel locks and reinforcements.
+
+N:343:& Large steel chest~
+G:~:s
+I:7:7:0
+W:55:0:1000:250
+A:55/1
+P:0:2d6:0:0:0
+D:A nearly indestructible chest of wood and steel. The lock doesn't look impenetrable, but it
+D:might be trapped.
+
+N:344:& Ruined chest~
+G:~:s
+I:7:0:0
+W:0:0:250:0
+A:75/1
+D:A broken, empty chest.
+
+##### Various Stuff #####
+
+N:345:& Iron Spike~
+G:~:W
+I:5:0:0
+W:1:0:10:1
+A:1/1
+P:0:1d1:0:0:0
+D:A small spur of iron. Ramming one between a door and its frame might jam it.
+
+N:346:& Wooden Torch~
+G:~:u
+I:39:0:0:4000
+W:1:0:30:2
+A:1/1
+P:0:1d1:0:0:0
+F:EASY_KNOW | LITE1 | FUEL_LITE
+f:LITE1 | FUEL_LITE
+D:A piece of wood with an oily rag wrapped around it. When lit, it will give off a little light and
+D:much smoke.
+
+N:347:& Brass Lantern~
+G:~:U
+I:39:1:0:7500
+W:3:0:50:35
+A:3/1
+P:0:1d1:0:0:0
+F:EASY_KNOW | IGNORE_FIRE | LITE2 | FUEL_LITE
+f:LITE2 | FUEL_LITE
+D:A brass container with a wick emerging from it, protected from draughts by a sheet of greased
+D:paper. It can be carried by a handle.
+
+N:348:& Flask~ of oil
+G:!:y
+I:77:0:7500
+W:1:0:10:3
+A:1/1
+P:0:2d6:0:0:0
+D:A small clay container, filled with thick oil. The oil is flammable and can be used as lantern
+D:fuel.
+
+N:349:& Empty Bottle~
+G:!:w
+I:2:1:0
+W:0:0:2:1
+A:0/1
+P:0:1d1:0:0:0
+D:A small glass bottle. It's empty.
+
+
+##### Here are the Rod Tips #####
+
+N:350:Havoc
+G:-:d
+I:66:28:90
+W:95:0:15:150000
+A:100/16
+P:0:1d1:0:0:0
+D:This powerful rod will release great blasts of destructive energy, but there's no knowing what
+D:this effect will concentrate on.
+
+N:351:Door/Stair Location
+G:-:d
+I:66:1:10
+W:15:0:15:1000
+A:15/1
+P:0:1d1:0:0:0
+D:When fuelled with enough ambient mana, this rod can detect nearby passages.
+
+N:352:Trap Location
+G:-:d
+I:66:29:8
+W:5:0:15:100
+A:5/1:10/1:20/1
+P:0:1d1:0:0:0
+D:Zapping this rod will release a minor detection magic, alerting you of nearby pits and snares.
+
+N:353:Probing
+G:-:d
+I:66:7:50
+W:40:0:15:4000
+A:40/4
+P:0:1d1:0:0:0
+D:A rod of knowledge which will tell you about nearby creatures' health.
+
+N:354:Recall
+G:-:d
+I:66:3:80
+W:30:0:15:4500
+A:30/4
+P:0:1d1:0:0:0
+D:A rod which can transport you from the depths to your home and back.
+
+N:355:Illumination
+G:-:d
+I:66:4:8
+W:20:0:15:1000
+A:20/1
+P:0:1d1:0:0:0
+D:This rod carries a minor spell of brightness, lighting your immediate surroundings whenever
+D:activated.
+
+N:356:Light
+G:-:d
+I:66:15:15
+W:10:0:15:500
+A:10/1
+P:0:1d1:0:0:0
+D:This rod can shoot a lance of bright light, hurting creatures which lurk in the dark.
+
+N:357:Lightning Bolts
+G:-:d
+I:66:21:30
+W:20:0:15:2000
+A:20/1
+P:0:1d1:0:0:0
+D:This rod shoots a small spark of lightning, zapping the creature it hits.
+
+N:358:Frost Bolts
+G:-:d
+I:66:23:35
+W:25:0:15:2500
+A:25/1
+P:0:1d1:0:0:0
+D:A small but extremely cold shard of ice will fly from this rod to your enemy.
+
+N:359:Fire Bolts
+G:-:d
+I:66:22:40
+W:30:0:15:3000
+A:30/1
+P:0:1d1:0:0:0
+D:This rod fires a magical flaming arrow at your foe, burning it.
+
+N:360:Polymorph
+G:-:d
+I:66:19:25
+W:35:0:15:1200
+A:35/1
+P:0:1d1:0:0:0
+D:This rod of change will cause its target creature to mutate into something else.
+
+N:361:Slow Monster
+G:-:d
+I:66:17:25
+W:30:0:15:1500
+A:30/1
+P:0:1d1:0:0:0
+D:This obstructive rod emits an energy bolt which will slow the creature it hits.
+
+N:362:Sleep Monster
+G:-:d
+I:66:16:25
+W:30:0:15:1500
+A:30/1
+P:0:1d1:0:0:0
+D:This sorcerous rod will cause its target to stop in its tracks.
+
+N:363:Drain Life
+G:-:d
+I:66:18:30
+W:75:0:15:3600
+A:75/4
+P:0:1d1:0:0:0
+D:This necromantic magical rod will hurt a living creature struck by its spell.
+
+N:364:Teleport Other
+G:-:d
+I:66:13:60
+W:45:0:15:1400
+A:45/2
+P:0:1d1:0:0:0
+D:This rod of movement will displace its target to another location.
+
+N:365:Disarming
+G:-:d
+I:66:14:50
+W:35:0:15:2100
+A:35/1
+P:0:1d1:0:0:0
+D:This rod will clear a path for you, triggering and thus rendering harmless all traps on the way.
+
+N:366:Lightning Balls
+G:-:d
+I:66:25:50
+W:55:0:15:4000
+A:55/1
+P:0:1d1:0:0:0
+D:This rod will hurl a large ball of lightning at its target, electrifying all it engulfs.
+
+N:367:Cold Balls
+G:-:d
+I:66:27:55
+W:60:0:15:4500
+A:60/1
+P:0:1d1:0:0:0
+D:This rod will call forth a minor storm of ice which freezes everything in the area of its blast.
+
+N:368:Fire Balls
+G:-:d
+I:66:26:60
+W:75:0:15:5000
+A:75/1
+P:0:1d1:0:0:0
+D:This rod will cause a small storm of flame to rage in a small circular area of your choice.
+
+N:369:Acid Balls
+G:-:d
+I:66:24:60
+W:70:0:15:5500
+A:70/1
+P:0:1d1:0:0:0
+D:This destructive rod will drown its target and its immediate surroundings in caustic acid.
+
+N:370:Acid Bolts
+G:-:d
+I:66:20:40
+W:40:0:15:3500
+A:40/1
+P:0:1d1:0:0:0
+D:This rod will shoot a small glob of powerful acid at its target.
+
+N:371:Enlightenment
+G:-:d
+I:66:5:40
+W:65:0:15:10000
+A:65/4
+P:0:1d1:0:0:0
+D:This rod grants you knowledge of your surroundings.
+
+N:372:Perception
+G:-:d
+I:66:2:20
+W:50:0:15:13000
+A:50/8:100/8
+P:0:1d1:0:0:0
+D:This rod makes you insightful, laying open the identity of your possessions.
+
+N:373:Curing
+G:-:d
+I:66:8:35
+W:65:0:15:15000
+A:65/8
+P:0:1d1:0:0:0
+D:This is a rod with minor healing powers, alleviating many disabling conditions.
+
+N:374:Healing
+G:-:d
+I:66:9:120
+W:80:0:15:20000
+A:80/8
+P:0:1d1:0:0:0
+D:This rod has major healing powers and can restore your health if you have been wounded.
+
+N:375:Detection
+G:-:d
+I:66:6:80
+W:30:0:15:5000
+A:30/8
+P:0:1d1:0:0:0
+D:This rod grants knowledge about all things worthy of notice in your vicinity.
+
+N:376:Restoration
+G:-:d
+I:66:10:140
+W:80:0:15:25000
+A:80/16
+P:0:1d1:0:0:0
+D:This rod lets you remember your previous abilities and gain them back, should they have been
+D:reduced.
+
+N:377:Speed
+G:-:d
+I:66:11:100
+W:95:0:15:50000
+A:95/16
+P:0:1d1:0:0:0
+D:This energising rod will allow you to act a lot faster for some time.
+
+# Ring of Spell
+
+N:378:Spell
+G:=:d
+I:45:58:0
+W:10:0:2:1000
+A:10/1
+F:SPELL_CONTAIN | WIELD_CAST
+f:SPELL_CONTAIN
+D:This ring is a container for spells. Those that are skilled in copying spells can inscribe a
+D:spell into it.
+
+# Amulet of Spell
+
+N:379:Spell
+G:":d
+I:40:27:0
+W:10:0:2:1000
+A:10/1
+F:SPELL_CONTAIN | WIELD_CAST
+f:SPELL_CONTAIN
+D:This amulet is a container for spells. Those that are skilled in copying spells can inscribe a
+D:spell into it.
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+##### Skeletons #####
+
+N:391:& Broken Skull~
+G:~:w
+I:1:1:0
+W:0:0:1:0
+A:0/1
+P:0:1d1:0:0:0
+D:Good old Yorick. So that's where he ended up.
+
+N:392:& Broken Bone~
+G:~:w
+I:1:2:0
+W:0:0:2:0
+A:0/1
+P:0:1d1:0:0:0
+D:A yellowish bone, broken off. Obviously, its owner no longer has a use for it.
+
+N:393:& Canine Skeleton~
+G:~:w
+I:1:4:0
+W:1:0:10:0
+A:1/1
+P:0:1d1:0:0:0
+D:Lassie?
+
+N:394:& Rodent Skeleton~
+G:~:w
+I:1:3:0
+W:1:0:10:0
+A:1/1
+P:0:1d1:0:0:0
+D:The remains of a cat's meal.
+
+N:395:& Human Skeleton~
+G:~:w
+I:1:8:0
+W:5:0:60:0
+A:5/1
+P:0:1d2:0:0:0
+D:It's dead, Jim.
+
+N:396:& Dwarf Skeleton~
+G:~:w
+I:1:7:0
+W:5:0:50:0
+A:5/1
+P:0:1d2:0:0:0
+D:The remains of a dwarf who met his or her demise here.
+
+N:397:& Elf Skeleton~
+G:~:w
+I:1:6:0
+W:5:0:40:0
+A:5/1
+P:0:1d2:0:0:0
+D:A person of about human shape, but considerably more slightly built, has died here long ago.
+
+N:398:& Gnome Skeleton~
+G:~:w
+I:1:5:0
+W:5:0:30:0
+A:5/1
+P:0:1d2:0:0:0
+D:This was once a gnome. Looks very dead now.
+
+##### Additional weapon #####
+
+N:399:& Great Hammer~
+G:\:D
+I:21:19:0
+W:45:0:300:350
+A:45/3
+P:0:4d6:0:0:0
+F:SHOW_MODS
+D:A massive smith's hammer, so large and heavy it can be used as a weapon.
+
+##### Dragon Scale Mail #####
+
+N:400:& Black Dragon Scale Mail~
+G:[:s
+I:38:1:0
+W:60:0:200:50000
+A:60/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_ACID
+F:RES_ACID | FLY |
+f:RES_ACID |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:An armour made of a black dragon's hide, containing some of this beast's powers.
+
+N:401:& Blue Dragon Scale Mail~
+G:[:b
+I:38:2:0
+W:50:0:200:40000
+A:50/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_ELEC
+F:RES_ELEC | FLY |
+f:RES_ELEC |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A piece of dragon hide fashioned into an armour, shimmering bright blue.
+
+N:402:& White Dragon Scale Mail~
+G:[:w
+I:38:3:0
+W:50:0:200:40000
+A:50/8
+a:HARDCORE=BR_COLD
+P:30:2d4:-2:0:10
+F:RES_COLD | FLY |
+f:RES_COLD |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:An armour fashioned from dragon hide, glistening the white of snow.
+
+N:403:& Red Dragon Scale Mail~
+G:[:r
+I:38:4:0
+W:60:0:200:50000
+A:60/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_FIRE
+F:RES_FIRE | FLY |
+f:RES_FIRE |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:The skin of a dragon made into a suit of armour. It glows a bright red and radiates heat.
+
+N:404:& Green Dragon Scale Mail~
+G:[:g
+I:38:5:0
+W:50:0:200:40000
+A:50/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_POIS
+F:RES_POIS | FLY |
+f:RES_POIS |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour fashioned of dragon hide. It is dirty green and smells awful.
+
+N:405:& Multi-Hued Dragon Scale Mail~
+G:[:v
+I:38:6:0
+W:90:0:200:150000
+A:90/32
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_MANY
+F:ATTR_MULTI
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS | FLY |
+f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD | RES_POIS |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A powerful armour made of dragonhide. It glows red, blue, green, black and white.
+
+N:406:& Pseudo Dragon Scale Mail~
+G:[:v
+I:38:10:0
+W:70:0:200:70000
+A:70/16
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_LIGHT
+F:RES_LITE | RES_DARK | FLY |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour made of dragon hide, glowing with a strange light, or is it darkness?
+
+N:407:& Law Dragon Scale Mail~
+G:[:B
+I:38:12:0
+W:80:0:200:80000
+A:80/16
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_SHARD
+F:RES_SOUND | RES_SHARDS | FLY |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A piece of dragonhide cut and shaped so it can be worn as armour. The scales are very sharp,
+D:and the roaring of a storm seems to come from it, but you're not afraid of either.
+
+N:408:& Bronze Dragon Scale Mail~
+G:[:U
+I:38:14:0
+W:50:0:200:40000
+A:50/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_CONF
+F:RES_CONF | FLY |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour made from dragon skin. Its brownish scales glitter in a dazzling light.
+
+N:409:& Gold Dragon Scale Mail~
+G:[:y
+I:38:16:0
+W:60:0:200:50000
+A:60/8
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_SOUND
+F:RES_SOUND | FLY |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of golden-hued armour made of dragonhide. The rustle of its scales occasionally
+D:increases to a loud boom.
+
+N:410:& Chaos Dragon Scale Mail~
+G:[:v
+I:38:18:0
+W:80:0:200:80000
+A:80/16
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_CHAOS
+F:ATTR_MULTI
+F:RES_CHAOS | RES_DISEN | FLY |
+f:RES_CHAOS |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour made of dragon hide. It glows in colours you have never seen before. As you
+D:put it on, you feel like you could change the world and are no longer afraid of your equipment
+D:losing its magic.
+
+N:411:& Balance Dragon Scale Mail~
+G:[:v
+I:38:20:0
+W:95:0:200:100000
+A:95/32
+P:30:2d4:-2:0:10
+a:HARDCORE=BR_BALANCE
+F:RES_CHAOS | RES_DISEN | RES_SOUND | RES_SHARDS | FLY |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour made of the hide of a dead dragon. When wearing it, you feel like you
+D:understand the principles of law and chaos, and no longer fear either.
+
+N:412:& Power Dragon Scale Mail~
+G:[:v
+I:38:30:0
+W:100:0:250:350000
+A:100/64
+P:40:2d4:-3:0:15
+a:HARDCORE=BR_POWER
+F:ATTR_MULTI
+F:RES_ACID | RES_FIRE | RES_COLD | RES_ELEC | RES_POIS | FLY |
+F:RES_NETHER | RES_NEXUS | RES_CHAOS | RES_LITE | RES_DARK |
+F:RES_SHARDS | RES_SOUND | RES_DISEN | RES_CONF |
+F:ACTIVATE | IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:A suit of armour made of a very thick richly coloured dragonhide. You think you'll never have
+D:to fear dragons if you put it on.
+
+#### PDSM has been restored to (almost) its former glory in Zangband
+
+N:413:& Dragon Helm~
+G:]:G
+I:32:7:0
+W:45:0:50:10000
+A:80/4
+P:8:1d3:0:0:10
+F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD
+D:An iron helmet, covered with a layer of dragonhide. It offers great protection and may grant
+D:protection against some dragon's attacks, based on the dragon the hide was taken from.
+
+N:414:& Dragon Shield~
+G:[:G
+I:34:6:0
+W:70:0:100:10000
+A:80/4
+P:8:1d3:0:0:10
+F:IGNORE_ACID | IGNORE_FIRE | IGNORE_ELEC | IGNORE_COLD
+D:A large shield, with a dragonskin cover. Depending on which dragon the hide came from, it
+D:might grant protection against some sorts of dragon breath.
+
+##### Extra potions #####
+
+N:415:Death
+G:!:d
+I:71:23:0
+W:55:0:4:0
+A:55/4
+P:0:20d20:0:0:0
+F:FOUNTAIN
+D:A potent and very quickly working poison, sometimes utilised by those who wish to end their
+D:lives. It is immensely toxic and will seriously hurt you even if you just get some of it on your
+D:hands.
+
+N:416:Ruination
+G:!:d
+I:71:15:0
+W:40:0:4:0
+A:40/8
+P:0:20d20:0:0:0
+F:FOUNTAIN
+D:This wicked potion will seriously damage your abilities beyond the powers of magical
+D:restoration.
+
+N:417:Detonations
+G:!:d
+I:71:22:0
+W:60:0:4:10000
+A:60/8
+P:0:25d25:0:0:0
+F:FOUNTAIN
+D:This bottle is filled with a strange substance which will violently explode if strongly agitated.
+D:You don't want to know what it might do to your intestines.
+
+N:418:Augmentation
+G:!:d
+I:71:55:0
+W:40:0:4:60000
+A:40/16
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This blessed potions will greatly improve all your abilities, if they can still be improved.
+
+N:419:*Healing*
+G:!:d
+I:71:38:0
+W:40:0:4:1500
+A:40/4:60/2:80/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This highly desirable potion will greatly help recovering from wounds, typically healing you
+D:fully.
+
+N:420:Life
+G:!:d
+I:71:39:0
+W:60:0:4:5000
+A:60/4:100/2
+P:0:1d1:0:0:0
+D:This wonderful potion will fully heal you no matter how badly you're hurt, allow drained
+D:abilities to recover and remove various other ailments.
+
+N:421:Self Knowledge
+G:!:d
+I:71:58:0
+W:40:0:4:2000
+A:40/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A drink of insight, letting you know yourself better.
+
+N:422:*Enlightenment*
+G:!:d
+I:71:57:0
+W:70:0:4:80000
+A:70/4
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical concoction will grant you great insight, magically improving your wits and
+D:wisdom, letting you know precisely who and where you are and what you possess.
+
+# XXX
+# XXX
+
+N:425:Fear Resistance
+G:=:d
+I:45:38:0
+W:10:0:2:300
+A:10/2
+F:RES_FEAR | EASY_KNOW
+f:RES_FEAR |
+D:This ring grants courage, so that you can never become afraid.
+
+N:426:Light and Darkness Resistance
+G:=:d
+I:45:39:0
+W:30:0:2:3000
+A:30/2
+F:RES_LITE | RES_DARK | EASY_KNOW
+f:RES_LITE | RES_DARK |
+D:This ring protects against fluctuations of the light.
+
+N:427:Nether Resistance
+G:=:d
+I:45:40:0
+W:34:0:2:14500
+A:34/2
+F:RES_NETHER | HOLD_LIFE | EASY_KNOW
+f:RES_NETHER |
+D:This blessed ring improves your life force, protecting you from the draining forces of nether
+D:and other attempts to suck your lifeblood.
+
+N:428:Nexus Resistance
+G:=:d
+I:45:41:0
+W:24:0:2:3000
+A:24/2
+F:RES_NEXUS | EASY_KNOW
+f:RES_NEXUS |
+D:This ring of stability protects you from the warping forces of nexus.
+
+N:429:Sound Resistance
+G:=:d
+I:45:42:0
+W:26:0:2:3000
+A:26/2
+F:RES_SOUND | EASY_KNOW
+f:RES_SOUND |
+D:This ring projects an aura of quiet around you, protecting you from loud noise.
+
+N:430:Confusion Resistance
+G:=:d
+I:45:43:0
+W:22:0:2:3000
+A:22/2
+F:RES_CONF | EASY_KNOW
+f:RES_CONF |
+D:This ring stabilises your mind, protecting you from all kinds of befuddlement.
+
+N:431:Shard Resistance
+G:=:d
+I:45:44:0
+W:25:0:2:3000
+A:25/2
+F:RES_SHARDS | EASY_KNOW
+f:RES_SHARDS |
+D:This piece of jewellery magically toughens your skin, protecting you from flying shrapnel.
+
+N:432:Disenchantment Resistance
+G:=:d
+I:45:45:0
+W:90:0:2:15000
+A:90/10
+F:RES_DISEN | EASY_KNOW
+f:RES_DISEN |
+D:This rare ring of preservation protects your equipment from attempts to sap its magic, also
+D:causing you to suffer less pain from such attacks.
+
+N:433:Chaos Resistance
+G:=:d
+I:45:46:0
+W:50:0:2:13000
+A:50/2
+F:RES_CHAOS | RES_CONF | EASY_KNOW
+f:RES_CHAOS |
+D:This ring protects you from the horribly warping forces of chaos.
+
+N:434:Blindness Resistance
+G:=:d
+I:45:47:0
+W:60:0:2:7500
+A:60/2
+F:RES_BLIND | EASY_KNOW
+f:RES_BLIND |
+D:This ring magically preserves your eyesight, making you impervious to any attempt to blind
+D:you.
+
+N:435:Lordly Protection
+G:=:d
+I:45:48:0
+W:100:0:2:100000
+A:100/5
+F:RES_DISEN | RES_POIS | HOLD_LIFE | FREE_ACT
+f:RES_DISEN | RES_POIS | HOLD_LIFE | FREE_ACT
+D:This blessed ring will protect you from disenchantment, poison, attempts to drain your life
+D:force and holding magic.
+
+N:436:Extra Attacks
+G:=:d
+I:45:49:0
+W:50:0:2:100000
+A:50/2
+F:BLOWS
+f:BLOWS
+D:This powerful ring of fighters greatly enhances your fighting speed, allowing you to attack
+D:more often in a round of combat.
+
+N:437:Cure Light Wounds
+G:!:d
+I:71:34:50
+W:0:0:4:15
+A:0/1:1/1:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This healthy drink heals a little damage you have taken.
+
+N:438:Clumsiness
+G:!:d
+I:71:19:0
+W:5:0:4:0
+A:5/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This nasty concoction will numb your nerves, making you clumsier.
+
+N:439:Sickliness
+G:!:d
+I:71:20:0
+W:10:0:4:0
+A:10/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This unhealthy drink damages your health, reducing your physical constitution.
+
+###### Here start the maps #####
+
+# Map of Bree
+N:440:Map of Bree
+G:?:s
+I:8:200:0
+W:3:100:5:100
+A:3/3
+D:A map, showing the town of Bree and the landscape around it.
+
+# Map of Gondolin
+N:441:Map of Gondolin
+G:?:s
+I:8:201:0
+W:70:100:5:50000
+A:70/3
+D:A map detailing the place of the hidden city of Gondolin. Consider yourself lucky someone
+D:lost a map here, since the location is yet unknown even to Morgoth.
+
+# Map of Lothlorien
+N:442:Map of Lothlorien
+G:?:s
+I:8:202:0
+W:6:100:5:1000
+A:6/3
+D:A map vaguely describing the forest of Lothlorien and the elven settlements therein.
+
+# Map of Minas Anor
+N:443:Map of Minas Anor
+G:?:s
+I:8:203:0
+W:36:100:5:10000
+A:36/3
+D:A map of the great city of Gondor.
+
+# XXX Numbers 444-464 unused #
+
+N:465:& Silver Arrow~
+G:{:W
+I:17:3:0
+W:55:0:2:35
+A:50/4:90/2
+P:0:3d4:0:0:0
+F:SHOW_MODS | SLAY_EVIL | IGNORE_ACID | IGNORE_FIRE
+D:An arrow to be shot with a bow, its iron head coated with hallowed silver,
+D:a material that sears the flesh of all evil creatures.
+
+N:466:& Silver Bolt~
+G:{:w
+I:18:3:0
+W:50:0:2:40
+A:60/4:95/2
+P:0:3d5:0:0:0
+F:SHOW_MODS | SLAY_EVIL | IGNORE_ACID | IGNORE_FIRE
+D:This crossbow bolt has a silver tip, blessed by the Valar for fighting evil.
+
+N:467:Lightning Resistance
+G:":d
+I:40:29:0
+W:10:0:3:250
+A:10/1
+F:RES_ELEC | IGNORE_ELEC | EASY_KNOW
+f:RES_ELEC |
+D:This amulet will protect you from electrical discharges and storms.
+
+N:468:Wisdom
+G:":d
+I:40:28:0
+W:30:0:3:500
+A:30/1
+F:WIS | SUST_WIS | HIDE_TYPE
+f:WIS |
+D:This magical amulet will magically make you wiser, and fend off
+D:attacks that would reduce your wisdom. Beware: if cursed, the
+D:amulet will do the opposite.
+
+N:469:Regeneration
+G:":d
+I:40:30:0
+W:30:0:3:600
+A:30/3
+F:REGEN | EASY_KNOW
+f:REGEN |
+D:Wearing this amulet will trigger your body's regenerational
+D:processes quicker and make them proceed faster.
+
+N:470:Infravision
+G:":d
+I:40:26:0
+W:10:0:3:200
+A:10/1
+F:INFRA | HIDE_TYPE
+f:INFRA |
+D:This amulet will increase your ability to sense warm-blooded
+D:creatures in your vicinity. Beware: if cursed, it will do
+D:just the opposite.
+
+N:471:Devotion
+G:":d
+I:40:25:0
+W:70:0:3:30000
+A:70/8
+F:WIS | CHR | SUST_WIS | SUST_CHR | LITE1 | HIDE_TYPE |
+F:RES_DARK | RES_LITE | RES_FIRE | HOLD_LIFE |
+D:This blessed amulet will protect your wisdom and charms from
+D:diminishing, often adding to them as well. It also grants
+D:some extra protective magics by the grace of the Valar.
+
+N:472:Weaponmastery
+G:":d
+I:40:24:0
+W:70:0:3:30000
+A:70/8
+F:STR | CON | SUST_STR | SUST_CON | FREE_ACT | HIDE_TYPE |
+F:RES_FEAR | RES_DISEN |
+D:The ultimate amulet for a warrior, it will grant protection
+D:in the face of some evil magics, protect your strength and health,
+D:also increasing them. Beware: if cursed, the amulet will
+D:sap your strength and health instead.
+
+N:473:Trickery
+G:":d
+I:40:23:0
+W:70:0:3:30000
+A:70/8
+F:DEX | SUST_DEX | STEALTH | SPEED | INFRA | HIDE_TYPE |
+F:RES_NEXUS | RES_POIS
+D:The ultimate amulet for a rogue or assassin, it protects the
+D:wearer against some evil magics, granting improvements in
+D:the abilities vital to these adventurers. Beware: if cursed,
+D:the amulet will do just the opposite.
+
+N:474:Telepathy
+G:":d
+I:40:22:0
+W:50:0:3:25000
+A:50/6
+F:ESP_ALL |
+f:ESP_ALL |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This rare and powerful amulet lays bare the minds of monsters
+D:before the wearer.
+
+N:475:Sustenance
+G:":d
+I:40:21:0
+W:60:0:3:20000
+A:60/4
+F:SUST_STR | SUST_INT | SUST_WIS | SUST_DEX | SUST_CON | SUST_CHR |
+F:HOLD_LIFE | SLOW_DIGEST | EASY_KNOW |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This blessed amulet will make the wearer impervious to evil magics
+D:that would sap innate abilities. It also slows down the digestive
+D:system, making food less necessary on long journeys.
+
+# The Palantir of Minas Ithil -- see artifact list
+
+N:476:& Palantir~
+G:~:y
+I:39:107:0
+W:75:0:200:0
+P:0:10d10:0:0:0
+F:INSTA_ART
+
+# The Elfstone 'Elessar' -- see artifact list
+
+N:477:& Elfstone~
+G:":g
+I:40:19:0
+W:60:0:3:50000
+F:INSTA_ART
+
+# The Jewel 'Evenstar' -- see artifact list
+
+N:478:& Jewel~
+G:":w
+I:40:20:0
+W:50:0:3:35000
+F:INSTA_ART
+
+# The Ring of Durin -- see artifact list
+
+N:479:& Ring~
+G:=:d
+I:45:57:0
+W:70:0:2:65000
+F:INSTA_ART | SPECIAL_GENE
+
+##### And here starts the gold/gems #####
+
+N:480:copper
+G:$:u
+I:100:1:0
+W:1:0:0:3
+
+N:481:copper
+G:$:u
+I:100:2:0
+W:1:0:0:4
+
+N:482:copper
+G:$:u
+I:100:3:0
+W:1:0:0:5
+
+N:483:silver
+G:$:s
+I:100:4:0
+W:1:0:0:6
+
+N:484:silver
+G:$:s
+I:100:5:0
+W:1:0:0:7
+
+N:485:silver
+G:$:s
+I:100:6:0
+W:1:0:0:8
+
+N:486:garnets
+G:$:r
+I:100:7:0
+W:1:0:0:9
+
+N:487:garnets
+G:$:r
+I:100:8:0
+W:1:0:0:10
+
+N:488:gold
+G:$:y
+I:100:9:0
+W:1:0:0:12
+
+N:489:gold
+G:$:y
+I:100:10:0
+W:1:0:0:14
+
+N:490:gold
+G:$:y
+I:100:11:0
+W:1:0:0:16
+
+N:491:opals
+G:$:W
+I:100:12:0
+W:1:0:0:18
+
+N:492:sapphires
+G:$:b
+I:100:13:0
+W:1:0:0:20
+
+N:493:rubies
+G:$:r
+I:100:14:0
+W:1:0:0:24
+
+N:494:diamonds
+G:$:w
+I:100:15:0
+W:1:0:0:28
+
+N:495:emeralds
+G:$:g
+I:100:16:0
+W:1:0:0:32
+
+N:496:mithril
+G:$:B
+I:100:17:0
+W:1:0:0:40
+
+N:497:adamantite
+G:$:G
+I:100:18:0
+W:1:0:0:80
+
+
+##### Objects 498 and 499 are the "Morgoth Artifacts" #####
+
+# These objects, like objects 500 to 511, are never created
+# without being turned into artifacts. This simplifies the
+# code for "killing the winner monster".
+
+N:498:& Mighty Hammer~
+G:\:D
+I:21:50:0
+W:15:0:200:1000
+P:0:3d9:0:0:0
+F:SHOW_MODS | INSTA_ART | MUST2H | SPECIAL_GENE
+f:MUST2H
+
+N:499:& Massive Iron Crown~
+G:]:D
+I:33:50:0
+W:44:0:20:1000
+P:0:1d1:0:0:0
+F:INSTA_ART | SPECIAL_GENE
+
+
+##### Objects 500 to 511 are "Special Artifacts" #####
+
+# These objects do not specify "full names" because the artifact name
+# is added in "obj-desc.c" based on the artifact index ("i_ptr->name1").
+#
+# These objects do specify a "base name", which is used when the object
+# is "aware" (always true for lites)
+#
+# The Lites (and the One Ring) specify "physical colors", which
+# over-ride the "flavor" colors, if any. Note that the "One Ring"
+# also has a specific check for "unknown" in which it changes its
+# name to "a plain gold ring". See "object1.c"
+#
+# Note that ALL artifacts are given "IGNORE_ACID/ELEC/FIRE/COLD",
+# so we do not need to specify that here.
+#
+# Note that the "INSTA_ART" flag is used to prevent these objects from
+# being created without also turning them into artifacts. This flag
+# must be specified both here and in the artifact template.
+#
+# The only reason for having six different "ring" templates and three
+# different "amulet" templates is to allow each "special artifact" to
+# have a different "color" and "flavor", and also to allow the use of
+# special "base names" (such as "Necklace").
+
+
+# The Phial of Galadriel -- see artifact list
+
+N:500:& Phial~
+G:~:y
+I:39:100:0
+W:20:0:10:10000
+P:0:1d1:0:0:0
+F:INSTA_ART
+
+# The Star of Elendil -- see artifact list
+
+N:501:& Star~
+G:~:B
+I:39:101:0
+W:30:0:5:25000
+P:0:1d1:0:0:0
+F:INSTA_ART
+
+# The Arkenstone of Thrain -- see artifact list
+
+N:502:& Arkenstone~
+G:~:R
+I:39:102:0
+W:60:0:5:60000
+P:0:1d1:0:0:0
+F:INSTA_ART
+
+
+# The Amulet of Carlammas -- see artifact list
+
+N:503:& Amulet~
+G:":d
+I:40:10:0
+W:50:0:3:60000
+F:INSTA_ART
+
+# The Amulet of Ingwe -- see artifact list
+
+N:504:& Amulet~
+G:":d
+I:40:11:0
+W:60:0:3:90000
+F:INSTA_ART
+
+# The Necklace 'Nauglamir' -- see artifact list
+
+N:505:& Necklace~
+G:":d
+I:40:12:0
+W:70:0:3:75000
+F:INSTA_ART
+
+
+# The Ring of Barahir -- see artifact list
+
+N:506:& Ring~
+G:=:d
+I:45:32:0
+W:50:0:2:65000
+F:INSTA_ART
+
+# The Ring of Tulkas -- see artifact list
+
+N:507:& Ring~
+G:=:d
+I:45:33:0
+W:90:0:2:150000
+F:INSTA_ART
+
+# The Ring of Power 'Narya' -- see artifact list
+
+N:508:& Ring~
+G:=:d
+I:45:34:0
+W:80:0:2:100000
+F:INSTA_ART | SPECIAL_GENE
+
+# The Ring of Power 'Nenya' -- see artifact list
+
+N:509:& Ring~
+G:=:d
+I:45:35:0
+W:90:0:2:200000
+F:INSTA_ART
+
+# The Ring of Power 'Vilya' -- see artifact list
+
+N:510:& Ring~
+G:=:d
+I:45:36:0
+W:100:0:2:300000
+F:INSTA_ART
+
+# The Ring of Power 'The One Ring' -- see artifact list
+
+N:511:& Ring~
+G:=:y
+I:45:37:0
+W:110:0:2:5000000
+F:INSTA_ART
+
+
+### Room for new objects added after 511 (Zangband 2.1.0): 512-575
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+N:520:Reflection
+G:":d
+I:40:9:0
+W:60:0:3:30000
+A:60/4
+F:REFLECT | EASY_KNOW
+f:REFLECT |
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This wondrous amulet will magically make the wearer
+D:reflect arrows and bolts launched by adversaries.
+
+#521 and 522 cannot have EASY_KNOW because they may be cursed
+
+N:521:Anti-Magic
+G:":d
+I:40:13:0
+W:40:0:3:30000
+A:40/4
+F:NO_MAGIC
+f:NO_MAGIC
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This amulet wards off magic of any kind, good or bad.
+
+N:522:Anti-Teleportation
+G:":d
+I:40:14:0
+W:30:0:3:15000
+A:30/4
+F:NO_TELE
+f:NO_TELE
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This amulet will prevent the space-time continuum from
+D:being disrupted around the wearer.
+
+#523 cannot have EASY_KNOW because it can get random resistances
+
+N:523:Resistance
+G:":d
+I:40:15:0
+W:50:0:3:25000
+A:50/4
+F:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD
+f:RES_ACID | RES_ELEC | RES_FIRE | RES_COLD
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This amulet will make the wearer resist the elements.
+
+##### New arms #####
+
+N:524:& Zweihander~
+G:|:w
+I:23:29:0
+W:40:0:280:580
+A:40/3
+P:0:4d6:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This great sword of foreign origin is approximately 6 feet long. The hilt is
+D:long enough for even four hands to grip. A mighty weapon for a warrior.
+
+# Dwarven lantern
+N:525:& Dwarven Lantern~
+G:~:b
+I:39:3:0
+W:15:0:50:5000
+A:15/2
+P:0:1d1:0:0:0
+F:EASY_KNOW | IGNORE_FIRE | LITE2
+f:LITE2
+D:Made by the dwarves, this lantern provides light in the
+D:darkest recesses of the earth.
+
+N:526:& Splint Mail~
+G:[:D
+I:37:10:0
+W:35:0:250:950
+A:35/1
+P:19:1d4:-2:0:0
+D:A suit of metal armour that consists of metal strips applied vertically
+D:to the backing of chain, leather, or cloth.
+
+# Everburning torch
+N:527:& Everburning Torch~
+G:~:R
+I:39:2:0
+W:5:0:50:2500
+A:5/1
+P:0:1d1:0:0:0
+F:EASY_KNOW | IGNORE_FIRE | LITE1
+f:LITE1
+D:This enchanted torch never needs to be fuelled.
+
+N:528:& Trifurcate Spear~
+G:/:o
+I:22:26:0
+W:35:0:140:400
+A:35/3
+P:0:2d9:0:0:0
+F:SHOW_MODS
+D:This deadly spear's point has three branches, suited for inflicting
+D:greater damage than a regular spear.
+
+N:529:& Three Piece Rod~
+G:\:u
+I:21:11:0
+W:20:0:120:350
+A:20/3
+P:0:3d3:0:0:0
+F:SHOW_MODS
+D:A descendant of the threshing flail, consisting of three short wooden
+D:pieces linked by chain or rope.
+
+# Feanorian Lamp
+N:530:& Feanorian Lamp~
+G:~:B
+I:39:4:0
+W:25:0:50:15000
+A:25/3
+P:0:1d1:0:0:0
+F:EASY_KNOW | IGNORE_FIRE | LITE3
+f:LITE3
+D:Made by the descendants of the Noldo craftsman, this lamp
+D:contains a part of the flame which burned inside Feanor.
+
+N:531:& Fur Cloak~
+G:(:W
+I:35:3:0
+W:20:0:30:100
+A:20/2:30/2
+P:3:0d0:0:0:0
+D:A coat made from the fur of various wild animals - it is
+D:somewhat bulky, but still spacious enough to wear over armour.
+
+N:532:Water Curing
+G:!:d
+I:72:18:80
+W:0:0:4:0
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE
+D:It is a magical component that can purify water.
+
+N:533:& Hatchet~
+G:/:s
+I:24:1:0
+W:10:0:60:120
+A:10/2
+P:0:1d5:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:This is a large axe that could be wielded in one or two hands. It has
+D:a single blade with a pick on the reverse, designed for armour piercing.
+
+##### New armour #####
+
+N:535:& Rhino Hide Armour~
+G:(:s
+I:36:8:0
+W:15:0:110:400
+A:15/1
+P:8:1d1:-1:0:0
+D:A hard leather armour made from the thick hide of a rhinoceros.
+
+N:536:& Leather Jacket~
+G:(:U
+I:36:12:0
+W:20:0:130:550
+A:20/3
+P:12:1d2:-1:0:0
+D:A garment fashioned from animal hide, resembling a robe that has been
+D:shortened to waist-length, with straight-cut sleeves and a bit of decorative
+D:fringe around the collar.
+
+##### New weapons #####
+
+N:537:& Sickle~
+G:/:s
+I:22:3:0
+W:10:0:70:110
+A:10/3
+P:0:2d3:0:0:0
+F:SHOW_MODS
+D:A semicircular blade attached to a short handle, good for chopping
+D:things up into pieces.
+
+# XXX
+# XXX
+# XXX
+# XXX
+
+N:542:& Club~
+G:\:u
+I:21:1:0
+W:0:0:100:3
+A:0/1
+P:0:1d4:0:0:0
+F:SHOW_MODS
+D:A stout heavy stick, thicker at one end. Useful for
+D:shattering and smashing things.
+
+N:543:& Broad Spear~
+G:/:w
+I:22:7:0
+W:14:0:100:240
+A:14/3
+P:0:1d9:0:0:0
+F:SHOW_MODS
+D:Designed specifically for foot soldiers combatting cavalry, this spear
+D:is too heavy to be effective when thrown.
+
+N:544:& Khopesh~
+G:|:W
+I:23:14:0
+W:10:0:130:190
+A:10/2
+P:0:2d4:0:0:0
+F:SHOW_MODS
+D:This sword comes from the regions of Far Harad. The blade is straight
+D:for 18 inches, and then it curves for another 2 feet.
+
+N:545:& Flamberge~
+G:|:W
+I:23:26:0
+W:40:0:230:600
+A:40/2
+P:0:3d7:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:A large, two-handed sword with a blade that weaves
+D:left and right until it reaches the hilt.
+
+N:546:& Claymore~
+G:|:W
+I:23:23:0
+W:40:0:200:600
+A:40/2
+P:0:2d8:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:Also known as a Claidhmore, or Greatsword, this weapon is favoured
+D:by powerful mercenaries. The blade is large, straight, and broad,
+D:almost as large as a two-handed sword.
+
+N:547:& Espadon~
+G:|:W
+I:23:24:0
+W:40:0:200:600
+A:40/3
+P:0:2d9:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This is the strictly two-handed version of the bastard sword.
+D:The blade is of medium length, double-edged, and considerably
+D:heavy to wield.
+
+N:548:& Great Scimitar~
+G:|:W
+I:23:22:0
+W:40:0:240:500
+A:40/3
+P:0:4d5:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This is a larger version of the curved oriental blade.
+D:Runes of war decorate its golden hilt.
+
+
+### Trapping Kits
+
+N:549:Arrow
+G:`:r
+I:46:2:0
+W:10:0:60:150
+A:10/2:50/2
+F:SHOW_MODS
+D:It must be loaded with arrows, which will be
+D:fired at the monster who triggers the trap.
+
+N:550:Bolt
+G:`:o
+I:46:3:0
+W:20:0:220:300
+A:20/2:50/2
+F:SHOW_MODS
+D:It must be loaded with crossbow bolts, which will
+D:be fired at the monster who triggers the trap.
+
+N:551:& Fauchard~
+G:/:s
+I:22:6:0
+W:18:0:155:301
+A:18/2
+P:0:1d10:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:It is a type of glaive with two ornate hooks on the back
+D:of the blade. It is typically 8 to 9 feet long.
+
+N:552:& Guisarme~
+G:/:s
+I:22:16:0
+W:21:0:165:320
+A:21/1
+P:0:2d5:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:Mounted on a long shaft for maximum reach, this weapon is
+D:effective at repelling both cavalry and infantry.
+
+N:553:& Heavy Lance~
+G:/:s
+I:22:29:0
+W:43:0:400:700
+A:43/2
+P:0:4d8:0:0:0
+F:SHOW_MODS | MUST2H
+f:MUST2H
+D:This is a shock weapon. Its purpose is to unhorse a rider
+D:in single combat, or smash through the armour of opposing lines.
+
+N:554:& Basilard~
+G:|:w
+I:23:9:0
+W:15:0:80:220
+A:15/3
+P:0:1d8:0:0:0
+F:SHOW_MODS
+D:This is a two-edged dagger with a long blade. A favourite among travellers
+D:and warriors alike, it can be worn comfortably with plain clothes
+D:as well as armour.
+
+### Trapping Kits
+
+N:555:Catapult
+G:`:R
+I:46:1:0
+W:1:0:50:40
+A:1/2:20/2
+F:SHOW_MODS
+D:It must be loaded with sling bullets, which will
+D:be fired at the monster who triggers the trap.
+
+N:556:& Ring Mail~
+G:[:s
+I:37:2:0
+W:20:0:200:500
+A:20/1
+P:12:1d4:-2:0:0
+D:A suit of non-overlapping metal rings sewn onto a
+D:heavy leather backing.
+
+N:557:& Cord Armour~
+G:(:y
+I:36:9:0
+W:5:0:80:40
+A:5/1
+P:6:1d1:0:0:0
+D:Fibres of hemp or other natural material woven and knotted
+D:into a thick, tough fabric.
+
+N:558:& Paper Armour~
+G:(:w
+I:36:3:0
+W:5:0:30:40
+A:5/2
+P:4:1d1:0:0:0
+D:Thickly pleated sheets of paper assembled together into
+D:a suit of armour.
+
+N:559:& Padded Armour~
+G:(:y
+I:36:10:0
+W:2:0:60:40
+A:2/1
+P:4:1d1:0:0:0
+D:Heavy, multi-layered cloth sewn together to cover the body,
+D:with extra padding between layers.
+
+### Trapping Kits
+
+N:560:Fumes
+G:`:G
+I:46:4:0
+W:2:0:20:50
+A:2/2:30/2
+D:It must be loaded with potions, which will splatter
+D:over the monster who triggers the trap.
+
+N:561:& Stone and Hide Armour~
+G:(:U
+I:36:15:0
+W:35:0:200:500
+A:35/7
+P:15:1d1:-1:0:0
+D:A primitive armour made from a thick hide reinforced by stone shards.
+
+### Trapping Kits
+
+N:562:Magic
+G:`:g
+I:46:5:0
+W:5:0:20:50
+A:5/2:40/2
+F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC
+D:It must be loaded with scrolls, which will release
+D:their spells at the monster who triggers the trap.
+
+N:563:Device
+G:`:v
+I:46:6:0
+W:20:0:20:50
+A:20/2:40/2:60/2
+F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC
+D:It must be loaded with a magic device (wand, staff, or rod), which
+D:will fire its spell at the monster who triggers the trap.
+
+N:564:Nothing
+G:?:d
+I:70:53:0
+W:1:0:5:2
+A:1/1
+P:0:1d1:0:0:0
+
+N:565:Poison
+G:*:G
+I:4:1:5
+W:0:0:4:2
+A:0/1
+P:0:1d1:0:0:0
+
+# wand
+N:566:Nothing
+G:-:d
+I:65:2:-1:SPELL=Nothing
+W:2:0:10:20
+A:2/1
+P:0:1d1:0:0:0
+F:NO_RECHARGE | SPECIAL_GENE
+
+N:567:Nothing
+G:=:d
+I:45:50:0
+W:5:0:2:20
+A:5/1
+P:0:1d1:0:0:0
+
+N:568:Nothing
+G:_:d
+I:55:30:0
+W:5:0:50:50
+A:5/1
+P:0:1d1:0:0:0
+F:NO_RECHARGE | SPECIAL_GENE
+
+N:569:Nothing
+G:-:d
+I:66:0:1
+W:5:0:10:50
+A:5/1
+P:0:1d1:0:0:0
+
+
+# Here comes the Essences (randomly interspersed with other stuff...)
+
+N:570:Explosion
+G:*:G
+I:4:2:50
+W:0:0:4:2
+A:0/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+N:571:Teleport
+G:*:G
+I:4:3:190
+W:0:0:4:2
+A:5/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+# Amulet of Nothing
+
+N:572:Nothing
+G:":d
+I:40:16:0
+W:10:0:3:20
+A:10/1
+P:0:1d1:0:0:0
+
+# An artifact potion! The Blood of Life...
+
+N:573:& Blood~ of Life
+G:!:d
+I:71:3:200
+W:70:0:4:10000
+A:70/16
+P:0:1d1:0:0:0
+T:71:2
+F:NORM_ART | FULL_NAME
+D:Quaffing this measure of living blood will imbue your body and soul
+D:with the power to escape death one time.
+
+N:574:Cold
+G:*:G
+I:4:4:200
+W:0:0:4:2
+A:5/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+N:575:Fire
+G:*:G
+I:4:5:200
+W:0:0:4:2
+A:5/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+N:576:Acid
+G:*:G
+I:4:6:200
+W:0:0:4:2
+A:6/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+# Mage staffs (for Sorcerers to wield.)
+
+N:577:& Mage Staff~
+G:\:B
+I:6:1:0
+W:5:0:12:300
+A:5/1:20/1:50/1:80/1
+P:0:1d4:0:0:0
+F:SHOW_MODS | COULD2H
+f:COULD2H
+D:It looks like a simple walking stick, plain and nondescript.
+D:In the hands of a spellcaster, it can be a deadly weapon.
+
+# An extra ring, out of place
+
+N:578:Lightning
+G:=:d
+I:45:56:0
+W:50:0:2:3000
+A:50/1
+P:0:0d0:0:0:15
+a:HARDCORE=BA_ELEC_4
+F:RES_ELEC | IGNORE_ELEC | ACTIVATE
+f:RES_ELEC |
+D:This sparkling circlet grants you protection, makes electricity less
+D:dangerous and even allows you to call forth a ball of lightning.
+
+# More essences
+
+N:579:Life
+G:*:G
+I:4:7:300
+W:0:0:4:2
+A:0/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+N:580:Confusion
+G:*:G
+I:4:8:100
+W:0:0:4:2
+A:0/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+N:581:Light
+G:*:G
+I:4:9:60
+W:0:0:4:2
+A:0/1:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+# The Ring of Flare -- see artifact list
+
+N:582:& Ring~
+G:=:y
+I:45:52:5
+W:50:25:2:75000
+F:INSTA_ART
+
+# Potion of Invisibility
+
+N:583:Invisibility
+G:!:d
+I:71:8:0
+W:3:0:4:50
+A:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This magical brew will temporarily hide you from sight, and also attunes you
+D:to this state so that your eyes can still perceive your hidden form.
+
+N:584:Chaos
+G:*:G
+I:4:10:200
+W:20:0:4:2
+A:20/1
+P:0:1d1:0:0:0
+F:ATTR_MULTI
+
+# Potion of Corruption
+
+N:585:Corruption
+G:!:d
+I:71:10:0
+W:3:0:4:0
+A:20/1:30/1:40/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This concoction of toxic wastes will strangely warp your shape.
+
+# Ring of Invisibility
+
+N:586:Invisibility
+G:=:d
+I:45:53:4
+W:50:0:2:10000
+A:50/1
+F:INVIS | HIDE_TYPE
+f:INVIS |
+D:This magical bauble will hide you from sight.
+
+### Just another essence, to confuse the edit file hackers ;) ###
+
+N:587:Time
+G:*:G
+I:4:11:600
+W:20:0:4:2
+A:20/1:40/1:60/1
+P:0:1d1:0:0:0
+
+######### Here are the parchments ########
+
+N:588:Deep Thoughts
+G:?:o
+I:8:0:0
+W:3:0:5:50
+A:3/1
+D:This parchment contains the thoughts of a powerful
+D:wizard who departed Middle-earth long ago.
+
+N:589:More Deep Thoughts
+G:?:o
+I:8:1:0
+W:4:0:5:50
+A:4/1
+D:This parchment contains the thoughts of a powerful
+D:wizard who departed Middle-earth long ago.
+
+N:590:Compendium of Deep Thoughts
+G:?:o
+I:8:2:0
+W:5:0:5:50
+A:5/1
+D:This parchment contains the thoughts of a powerful
+D:wizard who departed Middle-earth long ago.
+
+N:591:Artifact Lore Vol. I
+G:?:o
+I:8:6:0
+W:40:0:5:50
+A:40/3
+D:This parchment contains information about unique
+D:artifacts that are rumoured to exist upon Arda.
+
+N:592:Artifact Lore Vol. II
+G:?:o
+I:8:7:0
+W:40:0:5:50
+A:40/3
+D:This parchment contains information about unique
+D:artifacts that are rumoured to exist upon Arda.
+
+N:593:Artifact Lore Vol. III
+G:?:o
+I:8:8:0
+W:40:0:5:50
+A:40/3
+D:This parchment contains information about unique
+D:artifacts that are rumoured to exist upon Arda.
+
+N:594:Monstrous Compendium 1
+G:?:o
+I:8:9:0
+W:10:0:5:50
+A:10/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:595:Monstrous Compendium 2
+G:?:o
+I:8:10:0
+W:11:0:5:50
+A:11/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:596:Monstrous Compendium 3
+G:?:o
+I:8:11:0
+W:12:0:5:50
+A:12/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:597:Monstrous Compendium 4
+G:?:o
+I:8:12:0
+W:13:0:5:50
+A:13/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:598:Monstrous Compendium 5
+G:?:o
+I:8:13:0
+W:14:0:5:50
+A:14/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:599:Monstrous Compendium 6
+G:?:o
+I:8:14:0
+W:15:0:5:50
+A:15/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:600:Monstrous Compendium 7
+G:?:o
+I:8:15:0
+W:16:0:5:50
+A:16/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:601:Monstrous Compendium 8
+G:?:o
+I:8:16:0
+W:17:0:5:50
+A:17/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:602:Monstrous Compendium 9
+G:?:o
+I:8:17:0
+W:18:0:5:50
+A:18/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:603:Monstrous Compendium 10
+G:?:o
+I:8:18:0
+W:19:0:5:50
+A:19/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+N:604:Monstrous Compendium 11
+G:?:o
+I:8:19:0
+W:20:0:5:50
+A:20/2
+D:This parchment contains a small part of the collected
+D:lore concerning monsters inhabiting Arda.
+
+#### Here come the shape-shifting potions. ####
+
+N:605:& Morphic Oil~ of #
+G:!:d
+I:72:1:0
+W:5:0:4:100
+A:1/3:5/1:10/1
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This concoction can transform your body for a short period of time.
+
+# XXX 606 -> 617
+
+# The Mimic's cloaks
+
+N:618:& #~
+G:(:y
+I:35:100:0:50
+W:5:130:30:100
+A:5/1:15/1:35/1:55/1:75/1
+P:1:1d1:0:0:0
+D:Combined with proper skill, this cloak can make you seem
+D:like a different creature. Otherwise, it just provides some
+D:extra protection.
+
+# XXX 619 -> 639
+
+# One more essence...
+
+N:640:Magic
+G:*:G
+I:4:12:700
+W:20:0:4:2
+A:30/1:50/1:80/1
+P:0:1d1:0:0:0
+
+# Here are the corpses
+
+N:641:corpse
+G:~:U
+I:9:1:3000
+W:20:0:80:0
+A:30/1
+P:0:1d1:0:0:0
+F:DECAY
+D:Whatever happened with this one, it wasn't pretty.
+
+N:642:skeleton
+G:~:U
+I:9:2:800
+W:20:0:2:0
+A:30/1
+P:0:1d1:0:0:0
+D:The sorry, bony remains of some hapless creature.
+
+N:643:head
+G:~:U
+I:9:3:600
+W:20:0:10:0
+A:30/1
+P:0:1d1:0:0:0
+F:DECAY
+D:2 eyes, 2 ears, a mouth, some hair -- yep, that's a head.
+
+N:644:skull
+G:~:U
+I:9:4:1000
+W:20:0:20:0
+A:30/1
+P:0:1d1:0:0:0
+D:It's a white bony skull, smiling to you without teeth.
+
+N:645:raw meat
+G:~:U
+I:9:5:1200
+W:20:0:10:2
+A:30/1
+P:0:1d1:0:0:0
+F:DECAY
+D:Yuck, just looking at it makes your stomach upset.
+
+# New armour: Thunderlord Coat. (With two low resists, it shouldn't be
+# at only 5th level. Make it 25th. -JLE...)
+
+N:646:& Thunderlord Coat~
+G:(:y
+I:36:16:0
+W:5:0:60:400
+A:25/1
+P:9:1d1:0:0:0
+F:RES_FIRE | RES_COLD |
+D:This suit of thick impregnated cloth is worn by the riders of flying steeds,
+D:and protects them from extremes of temperatures.
+
+# The Stone of Lore -- see artifact list
+N:647:& Stone~
+G:~:g
+I:39:106:0
+W:15:0:15:20000
+F:INSTA_ART | SPECIAL_GENE
+
+# Here are the boomerangs
+
+N:648:& Small Wooden Boomerang~
+G:{:y
+I:15:1:0
+W:1:0:60:10
+A:1/1:5/2:10/2:20/2
+P:0:1d4:0:0:0
+D:A small curved piece of wood.
+
+N:649:& Wooden Boomerang~
+G:{:y
+I:15:2:0
+W:10:0:60:100
+A:10/1:20/2
+P:0:1d8:0:0:0
+D:A strange, curved leaf-shaped piece of wood.
+
+N:650:& Small Metal Boomerang~
+G:{:y
+I:15:3:0
+W:20:0:60:400
+A:20/1:30/2
+P:0:3d4:0:0:0
+D:A short boomerang with metal blades on the "forward" edges.
+
+N:651:& Metal Boomerang~
+G:{:y
+I:15:4:0
+W:30:0:60:800
+A:30/1:50/2
+P:0:4d5:0:0:0
+D:A strange curved leaf-shaped piece of wood, its "forward" edges enhanced with metal blades.
+
+# The Space-Time Anchor -- see artifact list
+N:652:& Anchor~
+G:~:v
+I:39:105:0
+W:30:0:15:50000
+F:INSTA_ART
+
+# To convert monsters into objects for wielding them ! ! ! :)
+# Funny, funny, funny :)
+# pval the monster idx, pval2 for the monster hp
+N:653:& ~
+G:~:y
+I:99:1:0
+W:127:200:60:0
+A:127/255
+P:0:0d0:0:0:0
+
+N:654:Summon Never-Moving Pet
+G:?:d
+I:70:6:0
+W:5:0:5:125
+A:5/1:15/1:25/1:35/1:65/1:85/1:95/1
+D:A piece of paper, inscribed with runes which will summon an immobile creature to your aid.
+
+# XXX
+# XXX
+
+###The potions of cure insanity, in light, medium, regular, and full
+###versions. Cure light's W:x entry reduced to 1, so it doesn't boost level rating when appearing
+###at 50' - nyra
+
+N:657:Cure Light Insanity
+G:!:d
+I:72:14:0
+W:1:5:4:15
+A:5/1:1/1:3/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A magical potion which drives away irrational quirks of behaviour.
+
+N:658:Cure Serious Insanity
+G:!:d
+I:72:15:0
+W:10:5:4:40
+A:10/1
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:A magical brew which will lift shadows that have been cast on your soul.
+
+N:659:Cure Critical Insanity
+G:!:d
+I:72:16:0
+W:15:5:4:100
+A:15/3
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This drink will cure you even of serious mental disorders.
+
+N:660:Cure Insanity
+G:!:d
+I:72:17:0
+W:25:5:4:300
+A:25/3
+P:0:1d1:0:0:0
+F:FOUNTAIN
+D:This blessed potion can make you completely sane and healthy, even if you have only the
+D:faintest shred of sanity left.
+
+# The Phial of Undeath -- see artifact list. He he he he...
+
+N:661:& Phial~
+G:~:y
+I:39:103:0
+W:1:0:10:0
+P:0:1d1:0:0:0
+F:INSTA_ART
+
+# Here is the random artifact type.
+# This is used as a template -- the sval will be chosen later
+# on in the game to be an index to the random_artifacts array,
+# which in turn determines:
+#
+# Name
+# Color
+# Level
+# Cost
+
+N:662:Random Artifact
+G:~:o
+I:102:0:0
+W:1:0:50:0
+A:1/1:10/1:20/1:30/1
+F:INSTA_ART | ACTIVATE | ACTIVATE_NO_WIELD
+
+N:663:Craftsmanship
+G:?:d
+I:70:19:0
+W:80:0:5:200000
+A:80/16
+D:A powerful scroll, desired by many, as it can magically improve the special powers of magical
+D:weaponry.
+
+# A Parchment, not the Artifact
+N:664:The One Ring
+G:?:s
+I:8:4:0
+W:10:100:5:50
+A:10/2
+D:This parchment contains words in the Black Speech and Westron,
+D:and they seem to speak of a powerful Ring... could it be true?
+
+# XXX 665 - 668 were the old music books
+
+### Musical Instruments ###
+
+N:669:& Horn~
+G:/:W
+I:14:60:1
+W:7:0:30:400
+A:7/2:20/1:40/1:80/1
+P:0:1d1:0:0:0
+F:CON | ACTIVATE | WIELD_CAST
+D:A simple wind instrument made from brass. If used by inexperienced musicians it sounds
+D:like somebody making "prbbt!" noises down a drainpipe.
+
+N:670:& Drum~
+G:/:W
+I:14:58:1
+W:7:0:30:400
+A:7/2:20/1:40/1:80/1
+P:0:1d1:0:0:0
+F:STR | WIELD_CAST
+D:A sort of clay pot with a bit of skin stretched over its mouth.
+
+N:671:& Harp~
+G:/:W
+I:14:59:1
+W:7:0:30:400
+A:7/2:20/1:40/1:80/1
+P:0:1d1:0:0:0
+F:CHR | WIELD_CAST
+D:A number of strings held by a wooden frame.
+
+#N:672:& Banjo~
+#G:/:W
+#I:14:2:0
+#W:15:0:30:200
+#A:15/1
+#P:0:1d1:0:0:0
+#D:A combination of kithara and tambourine. It looks strange and sounds bad.
+
+#N:673:& Lute~
+#G:/:W
+#I:14:3:0
+#W:20:0:30:200
+#A:20/1
+#P:0:1d1:0:0:0
+#D:A string instrument, to be plucked with your fingers.
+
+#N:674:& Mandolin~
+#G:/:W
+#I:14:4:0
+#W:25:0:30:300
+#A:25/1
+#P:0:1d1:0:0:0
+#D:A small string instrument, typically strummed with your fingers or a plectron.
+
+# The Palantir of Orthanc -- see artifact list
+
+N:675:& Palantir~
+G:~:y
+I:39:104:0
+W:75:0:200:100000
+P:0:10d10:0:0:0
+F:INSTA_ART
+
+### The Monster Egg template; note the theoretical weight of 3 lbs ###
+
+N:676:Egg
+G:,:W
+I:10:1:0
+W:5:0:30:100
+A:5/1:15/1:25/1:35/1
+P:0:1d1:0:0:0
+F:ACTIVATE | ACTIVATE_NO_WIELD
+
+### Two more scrolls ###
+
+N:677:Reset Recall
+G:?:d
+I:70:23:0
+W:20:0:5:125
+A:20/1:25/1:35/1
+D:A strange formula is inscribed on this scroll, which allows you to define another place as the
+D:location to which recalls shall move you.
+
+N:678:Divination
+G:?:d
+I:70:31:0
+W:20:0:5:600
+A:30/1:45/1:55/1
+D:This scroll is inscribed with a ritual which allows you to discern what fate holds in store for
+D:you.
+
+### Here comes the Runes ###
+
+N:679:Self
+G:?:b
+I:105:0:0
+W:3:5:2:40
+A:3/1
+P:0:1d1:0:0:0
+
+N:680:Ray
+G:?:b
+I:105:2:0
+W:10:5:2:300
+A:10/1
+P:0:1d1:0:0:0
+F:IGNORE_COLD | IGNORE_ELEC
+
+N:681:Sphere
+G:?:b
+I:105:3:0
+W:15:5:2:1000
+A:15/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:682:Knowledge
+G:?:b
+I:104:91:0
+W:6:5:2:200
+A:6/1
+P:0:1d1:0:0:0
+
+N:683:Life
+G:?:D
+I:104:53:0
+W:3:5:2:200
+A:3/1
+P:0:1d1:0:0:0
+
+N:684:Fire
+G:?:r
+I:104:5:0
+W:10:5:2:300
+A:10/1
+P:0:1d1:0:0:0
+F:IGNORE_FIRE
+
+N:685:Cold
+G:?:b
+I:104:4:0
+W:12:5:2:300
+A:12/1
+P:0:1d1:0:0:0
+F:IGNORE_COLD
+
+N:686:Lightning
+G:?:W
+I:104:1:0
+W:13:5:2:300
+A:13/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC
+
+N:687:Acid
+G:?:B
+I:104:3:0
+W:16:5:2:300
+A:16/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+
+N:688:Element
+G:?:g
+I:104:10:0
+W:23:5:2:1000
+A:23/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:689:Chaos
+G:?:v
+I:104:30:0
+W:26:5:2:2000
+A:26/1
+P:0:1d1:0:0:0
+F:ATTR_MULTI
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:690:Mind
+G:?:D
+I:104:85:0
+W:19:5:2:3000
+A:19/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC
+
+N:691:Holding
+G:?:B
+I:104:75:0
+W:5:5:2:500
+A:5/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+
+N:692:Arrow
+G:?:b
+I:105:1:0
+W:6:5:2:100
+A:6/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC
+
+N:693:Power Surge
+G:?:b
+I:105:4:0
+W:50:5:2:5000
+A:50/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | IGNORE_ACID
+
+N:694:Armageddon
+G:?:b
+I:105:5:0
+W:30:5:2:4000
+A:30/1
+P:0:1d1:0:0:0
+F:IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | IGNORE_ACID
+
+N:695:Gravity
+G:?:G
+I:104:35:0
+W:16:5:2:300
+A:16/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+
+# And, among the runes, one more essence...
+
+N:696:Extra Life
+G:*:G
+I:4:13:900
+W:50:0:4:2
+A:50/1:70/1:90/1
+P:0:1d1:0:0:0
+
+# Now, the rest of the runes...
+
+N:697:Undeath
+G:?:G
+I:104:92:0
+W:35:5:2:1000
+A:35/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+
+N:698:Protection
+G:?:G
+I:104:74:0
+W:45:5:2:1500
+A:45/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID
+
+# XXX
+
+# The Ring of Precognition (now a k_info.txt artifact)
+N:700:& Ring~ of Precognition
+G:=:d
+I:45:51:0
+W:90:0:2:300000
+A:90/100
+T:45:23
+F:PRECOGNITION |
+f:PRECOGNITION |
+F:NORM_ART | FULL_NAME
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:This magical ring allows you to know what you will encounter in the near future.
+
+# Athelas, cures Black Breath
+
+N:701:& Sprig~ of Athelas
+G:,:g
+I:80:40:0
+W:25:5:2:450
+A:25/2:55/1:85/1
+D:'When the black breath blows / And death's shadow grows /
+D:And all lights pass / Come Athelas! Come Athelas! /
+D:Life to the dying / In the King's hands lying.'
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+# The Scroll of Deincarnation (now an artifact)
+
+N:720:& Old Scroll~ of Deincarnation
+G:?:d
+I:70:40:0
+W:90:0:5:160000
+A:90/140
+T:70:51
+F:NORM_ART | FULL_NAME
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+D:It allows you to leave your body to reincarnate into
+D:another one, however, your current body is lost in the process.
+
+N:721:& Dark Sword~
+G:|:D
+I:23:33:0
+W:25:0:70:500
+A:25/1:80/2
+P:0:3d7:0:0:0
+F:SHOW_MODS | ANTIMAGIC_50
+f:ANTIMAGIC_50
+D:A strange, very sharp long sword, which seems to drain light from its surroundings. As you
+D:wield it, you feel much less attuned to magic.
+
+N:722:Numenorean for Beginners (I)
+G:?:s
+I:8:101:0
+W:10:100:5:50
+A:10/2
+D:These ancient words still contain magic.
+
+N:723:Numenorean for Beginners (II)
+G:?:s
+I:8:102:0
+W:5:100:5:50
+A:5/2
+D:These ancient words still contain magic.
+
+N:724:Advanced Lessons of Numenorean
+G:?:s
+I:8:103:0
+W:20:100:5:50
+A:20/2
+D:These ancient words still contain magic.
+
+N:725:Advanced Lessons of Sindarin
+G:?:s
+I:8:104:0
+W:20:100:5:50
+A:20/2
+D:These ancient words still contain magic.
+
+##### Junk #####
+
+N:726:& Shard~ of Pottery
+G:~:r
+I:11:3:0
+W:0:0:5:0
+A:0/1
+P:0:1d1:0:0:0
+F:EASY_KNOW
+D:Half a clay jar -- how many failed artists have taken refuge in these dungeons?
+
+N:727:& Broken Stick~
+G:~:r
+I:11:6:0
+W:0:0:3:0
+A:0/1
+P:0:1d1:0:0:0
+F:EASY_KNOW
+D:A piece of rotten wood.
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+N:738:& Book~ of Beginner Cantrips
+G:?:w
+I:111:50:0
+W:5:0:30:100
+A:5/1
+P:0:1d1:0:0:0
+D:The blood smudged on the cover makes you wonder how many people had it before you...
+
+N:739:& Book~ of Teleportation
+G:?:w
+I:111:51:0
+W:10:0:30:1000
+A:10/1
+P:0:1d1:0:0:0
+D:A standard spellbook with a few spells.
+
+# XXX
+
+N:741:& Book~ of Summoning
+G:?:w
+I:111:52:0
+W:7:0:30:700
+A:7/1
+P:0:1d1:0:0:0
+D:A standard spellbook with a few spells.
+D:It smells like camel.
+
+# XXX
+
+# The Potion of Learning - another artifact!
+
+N:743:& Potion~ of Learning
+G:!:d
+I:71:12:200
+W:90:0:4:100000
+A:90/25
+P:0:1d1:0:0:0
+T:71:49
+F:NORM_ART | FULL_NAME
+F:IGNORE_ACID | IGNORE_FIRE | IGNORE_COLD | IGNORE_ELEC
+D:This old potion is supposed to grant more learning power
+D:to its user.
+
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+# XXX
+
+N:751:Khuzdul - The Hidden Tongue of the Dwarves
+G:?:s
+I:8:105:0
+W:2:100:5:50
+A:2/2
+D:These ancient words still contain magic.
+
+N:752:Nandorin for Dummies
+G:?:s
+I:8:106:0
+W:20:100:5:50
+A:20/2
+D:These ancient words still contain magic.
+
+N:753:Advanced Lessons of Orcish
+G:?:s
+I:8:107:0
+W:30:100:5:50
+A:30/2
+D:These ancient words still contain magic.
+
+# Here's the Ring of Flying
+N:755:Flying
+G:=:d
+I:45:54:0
+W:20:0:2:16000
+A:20/3
+F:FLY | EASY_KNOW
+f:FLY |
+D:This ring is imbued with the power of eagles. It grants you the power of flight.
+
+N:756:& Tome~ of the Time
+G:?:b
+I:111:8:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This tome seems to have trouble deciding whether it really exists now. Its flickering pages
+D:contain all that is known about the currents of time.
+
+N:757:& Spellbook~ of #
+G:?:w
+I:111:255:0
+W:10:0:30:200
+A:10/1:20/1:30/1:40/1:50/1:60/1:70/1
+P:0:1d1:0:0:0
+D:This book contains a single spell within its pages.
+
+N:758:& Tome~ of Meta Spells
+G:?:v
+I:111:9:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | IGNORE_FIRE | ATTR_MULTI
+D:This tome gives you deeper insights on the works of magic.
+
+N:759:& Tome~ of the Mind
+G:?:B
+I:111:10:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This tome has no pages; knowledge is transferred to you if you simply
+D:hold it.
+
+N:760:& Holy Tome~ of Eru Iluvatar
+G:?:G
+I:111:20:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This dusty tome is filled with ancient rituals,
+D:designed to uncover all that is hidden.
+
+N:761:& Holy Tome~ of Manwe Sulimo
+G:?:B
+I:111:21:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:A large jewel-encrusted tome that transfers
+D:wisdom and understanding to its wearer.
+
+N:762:& War Tome~ of Tulkas
+G:?:R
+I:111:22:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:This tome fills you with glorious visions of total devastation.
+D:Anyone in your way shall be destroyed.
+
+N:763:& Unholy Tome~ of the Hellflame
+G:?:v
+I:111:11:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | ATTR_MULTI
+D:This singed book smells like burned flesh. Its power is as evident
+D:as its thirst for your blood.
+
+N:764:& Corrupted Tome~ of Melkor
+G:?:D
+I:111:23:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+D:A black and scarlet flame springs from this tome, issuing
+D:a thunderous roar under which you think you hear the screams of tormented souls.
+
+N:768:& Forest Tome~ of Yavanna
+G:?:G
+I:111:24:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW
+
+# for the Library Quest
+# Tome of PLAYER
+N:769:Tome of#
+G:?:v
+I:111:61:0
+W:50:0:30:25000
+A:50/4
+P:0:1d1:0:0:0
+F:FULL_NAME | EASY_KNOW | ATTR_MULTI | SPECIAL_GENE
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD | NORM_ART
+D:This book has some of your favourite spells inside.
+
+# The Ring of Phasing -- see artifact list
+
+N:770:& Ring~
+G:=:d
+I:45:55:0
+W:110:0:2:300000
+A:110/5
+F:INSTA_ART | SPECIAL_GENE
+
+N:771:[Earth]
+G:?:R
+I:114:0:0
+W:10:0:30:100
+A:10/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE
+D:A heavy lump of rock. As you touch it, you think you can see into the earth and perceive its
+D:secrets.
+
+N:772:[Fire]
+G:?:R
+I:114:1:0
+W:20:0:30:1000
+A:20/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE
+D:A bright red crystal, filled with a liquid flame that scorches you even though the surface of
+D:the gem is cool to the touch.
+
+N:773:[Air]
+G:?:r
+I:114:2:0
+W:50:0:30:2500
+A:50/1
+P:0:1d1:0:0:0
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:SPECIAL_GENE
+D:A completely translucent gem; as you behold it, you hear a great wind and feel like you're
+D:about to take off and fly away.
+
+N:774:[Water]
+G:?:r
+I:114:3:0
+W:70:0:30:50000
+A:70/3
+P:0:1d1:0:0:0
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:SPECIAL_GENE
+D:A large gem, filled with dark blue water. It feels strangely heavy and cold.
+
+N:775:[Mana]
+G:?:r
+I:114:4:0
+W:100:0:30:100000
+A:100/3
+P:0:1d1:0:0:0
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+F:SPECIAL_GENE
+D:A large gem that seems somehow immaterial and is filled with a strange insubstantial... power?
+
+# Rod Tip of Home Summoning: now an artifact
+#N:776:& Great Rod Tip~ of Home Summoning
+N:776:Home Summoning
+G:-:d
+I:66:30:75
+W:90:0:15:150000
+A:100/14
+P:0:1d1:0:0:0
+T:66:1
+F:NORM_ART | FULL_NAME
+F:IGNORE_FIRE | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC
+D:This rod creates a little hatch, allowing access to your home, no matter how far away the abode
+D:is.
+
+# Additional swords
+N:777:& Shadow Blade~
+G:|:D
+I:23:32:1
+W:50:900:45:2000
+A:48/4:60/2:80/1
+P:0:4d4:-2:2:0
+F:IGNORE_ACID | RES_DARK | STEALTH
+f:STEALTH
+D:A thin long sword made of a completely black metal, which reflects no light.
+
+N:778:& Bluesteel Blade~
+G:|:b
+I:23:31:0
+W:60:1800:50:6000
+A:60/20
+P:0:1d6:4:0:0
+F:SHOW_MODS | VORPAL
+D:A small sword made of a blueish metal with a strangely rough surface. As anything is hurt
+D:with it, the weapon will stick inside the wound and cause horrible wounds when torn away.
+
+# Amulet
+N:779:the Serpents
+G:":G
+I:40:17:0
+W:25:0:3:10000
+A:25/1
+a:HARDCORE=BA_POIS_4
+F:RES_POIS | DEX | ACTIVATE
+D:A petrified serpent's tongue, hung on a thin chain to be clasped around your neck. It makes you
+D:like unto snakes, able to wriggle out of tight corners, impervious to poisons and poisonous
+D:yourself.
+
+# Here comes the new Essences
+
+N:780:Darkness
+G:*:G
+I:4:14:20
+W:0:0:4:1
+A:0/1:20/1:40/1
+P:0:1d1:0:0:0
+D:It's a gem that eats all light that reaches it. It's perfectly black.
+
+N:781:Knowledge
+G:*:G
+I:4:15:100
+W:0:0:4:1
+A:20/1:30/1:70/1
+P:0:1d1:0:0:0
+D:It's a blue gem with countless formulae scribbled on it.
+
+N:782:Force
+G:*:G
+I:4:16:180
+W:0:0:4:1
+A:10/1:40/1
+P:0:1d1:0:0:0
+D:It's a green gem that can barely contain the forces in it.
+
+N:783:Lightning
+G:*:G
+I:4:17:200
+W:0:0:4:1
+A:28/1
+P:0:1d1:0:0:0
+D:It's a white gem. Inside you see lightning rage.
+
+N:784:Mana
+G:*:G
+I:4:18:400
+W:0:0:4:1
+A:45/2
+P:0:1d1:0:0:0
+D:It's an everchanging gem. You feel the magic throbbing through it.
+
+# The Nine Rings for mortal men doomed to die! When a Nazgul is
+# destroyed, it drops a Ring of Power with random powers.
+
+N:785:Ring~ of Power
+G:=:d
+I:45:5:0
+W:100:0:2:1
+A:100/100
+F:INVIS | DRAIN_EXP | CURSED | HEAVY_CURSE | CURSE_NO_DROP
+f:INVIS
+F:SPECIAL_GENE | FULL_NAME
+
+# To help people climb mountains...
+
+N:786:& Climbing Set~
+G:`:B
+I:12:0:0
+W:40:0:2:50000
+A:40/3
+F:CLIMB
+f:CLIMB
+D:A bunch of screws and hooks, a small pick and a very long rope. As long as a wall or rock face
+D:isn't really high, this collection of tools should help you across it.
+
+# Parchment to help beginners
+N:787:Adventurer's Guide to Middle-earth
+G:?:o
+I:8:20:0
+W:0:0:5:1
+A:0/1
+D:Read it!
+
+### Demonblades ###
+
+N:788:& Demonblade~
+G:|:R
+I:115:55:0
+W:10:0:150:500
+A:10/1
+P:0:4d6:0:0:0
+F:SHOW_MODS | SLAY_DEMON | WIELD_CAST
+D:This blade has been taken from the corpse of a demon.
+D:Some demonic energy is still coursing through it, helping
+D:you slay other demons.
+
+N:789:& Demonshield~
+G:]:R
+I:115:56:0
+W:15:0:70:500
+A:15/1
+P:5:1d1:0:0:0
+F:REGEN | WIELD_CAST
+D:This shield has been taken from the corpse of a demon.
+D:Some demonic energy is still coursing through it, giving
+D:life to any that wield it.
+
+N:790:& Demonhorn~
+G:[:R
+I:115:57:0
+W:20:0:30:500
+A:20/1
+P:2:1d1:0:0:0
+F:LITE2 | WIELD_CAST
+D:This horn is about six feet long. Just looking at it makes you nervous.
+
+# XXX
+# XXX
+
+### Rods ###
+
+N:793:& Wooden Rod~ of#
+G:-:u
+I:67:10:0
+W:10:0:15:100
+A:5/1:10/1
+P:0:1d1:0:0:0
+D:The most common rod of all. It's the wood of oak, cut at midnight by a fair maiden.
+
+N:794:& Copper Rod~ of#
+G:-:s
+I:67:20:0
+W:15:0:15:200
+A:15/1
+P:0:1d1:0:0:0
+D:This is the common rod of the dwarves. It is created by chanting incessantly for 48 hours.
+
+N:795:& Iron Rod~ of#
+G:-:D
+I:67:50:0
+W:20:0:15:500
+A:20/1
+P:0:1d1:0:0:0
+D:This is the better version of the copper rod. It has been forged with iron that comes from
+D:the greatest deeps, where even the dwarves fear to go.
+
+# Aluminium only exists since 30 years
+N:796:& Moonstone Rod~ of#
+G:-:U
+I:67:75:0
+W:25:0:15:750
+A:25/1
+P:0:1d1:0:0:0
+D:This rod has been fashioned from moonrock. Its alien nature gives it quite a bit of capacity.
+
+N:797:& Silver Rod~ of#
+G:-:s
+I:67:100:0
+W:30:0:15:1000
+A:30/1
+P:0:1d1:0:0:0
+D:This rod is used often used by court mages. Its creation costs an insane amount
+D:of gold but it is still lesser than a Golden Rod.
+
+N:798:& Golden Rod~ of#
+G:-:y
+I:67:125:0
+W:40:0:15:1250
+A:40/2
+P:0:1d1:0:0:0
+D:These rods are rare, since finding gold that can withstand the great magic
+D:capacity that this rod holds is very difficult.
+
+N:799:& Mithril Rod~ of#
+G:-:B
+I:67:160:0
+W:50:0:15:1600
+A:50/5
+P:0:1d1:0:0:0
+D:The mithril of this rod comes from very deep, too deep. Unknown powers have been
+D:infused in this rod, making it the second most powerful type of rod on Middle-earth.
+
+N:800:& Adamantite Rod~ of#
+G:-:v
+I:67:200:0
+W:60:0:15:2000
+A:60/10
+P:0:1d1:0:0:0
+D:This is the rarest and most powerful kind of rod there is. Treasure it!
+
+# Greater Ration of Health - artifact food item (!)
+N:801:& Greater Ration~ of Health
+G:,:g
+I:80:41:0
+W:90:5:2:60000
+A:90/50
+T:80:40
+F:NORM_ART | FULL_NAME
+D:This food will, once eaten, permanently add 70 HP.
+
+# Scroll of Mass Resurrection - artifact scroll
+N:802:& Crumpled Scroll~ of Mass Resurrection
+G:?:d
+I:70:43:0
+W:55:0:5:0
+A:55/1
+T:70:1
+F:NORM_ART | FULL_NAME
+F:IGNORE_FIRE | IGNORE_ACID | IGNORE_COLD | IGNORE_ELEC
+D:This magical scroll sends a call to the halls of Mandos, issuing forth all those who have been
+D:slain by the reader.
+
+### Axes ###
+
+N:803:& Cleaver~
+G:/:s
+I:24:2:0
+W:13:0:110:175
+A:13/1
+P:0:2d4:0:0:0
+F:SHOW_MODS
+D:A small axe with a heavy rectangular blade.
+
+N:804:& Light War Axe~
+G:/:s
+I:24:8:0
+W:16:0:140:300
+A:16/1
+P:0:2d5:0:0:0
+F:SHOW_MODS
+D:A broad-bladed axe, suited for battle.
+
+N:805:& Slaughter Axe~
+G:/:G
+I:24:30:0
+W:70:0:300:6000
+A:70/8
+P:0:5d7:0:0:0
+F:SLAY_ANIMAL | SHOW_MODS
+D:A huge axe, the sort used for slaughtering animals, this weapon is unusually deadly against
+D:natural creatures.
+
+N:806:& Runestone~
+G:?:v
+I:105:255:0
+W:10:5:2:300
+A:10/3:20/2:30/1:60/1
+P:0:1d1:0:0:0
+F:IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:A small oval stone. One surface is flat, as if something ought to be scratched or inscribed into
+D:it.
+
+N:807:& Fortune cookie~
+G:,:U
+I:80:42:500
+W:0:0:2:10
+A:0/1:5/1:10/1
+D:A small, sweet bakery product, with a scrap of paper inside.
+
+# XXX was the Portable Hole
+
+N:809:Critical Hits
+G:=:d
+I:45:59:0
+W:50:0:2:10000
+A:50/3
+F:CRIT
+f:CRIT
+D:A magical ring to make it likelier for the wearer to hit exceptionally heavily.
+
+# The Wand of Stone to Mud of Thrain
+N:810:& Wand~ of Digging of Thrain
+G:-:d
+I:65:26:-1:SPELL=Dig
+W:10:10:10:3200
+A:10/200
+P:0:10d10:0:0:0
+T:65:6
+F:RECHARGE | SPECIAL_GENE | EASY_USE | RECHARGED | NORM_ART | FULL_NAME
+D:The miner's friend. This wand was used by Thrain to dig into the
+D:walls of the dungeon. Its indestructible nature makes it quite useful.
+
+# The Staff of Holy Fire of Mithrandir
+N:811:& Gnarled Staff~ of Holy Fire of Mithrandir
+G:_:d
+I:55:22:-1:SPELL=Holy Fire of Mithrandir
+W:50:10:10:12000
+P:0:10d4:0:0:0
+A:50/200
+T:55:8
+F:RECHARGE | EASY_USE | RECHARGED | NORM_ART | FULL_NAME
+D:Mithrandir's staff that throws powerful fire attacks at all enemies. It
+D:can be recharged without blowing up, for it is built to hold
+D:much magical energy.
+
+### Summoner totems ###
+
+N:812:Partial Totem
+G:":v
+I:54:1:0
+W:10:10:10:120
+P:0:1d1:0:0:0
+A:10/200
+F:SPECIAL_GENE
+D:An item which a Summoner can use to animate a copy of a creature that
+D:only exists by the will of its master.
+
+N:813:True Totem
+G:":v
+I:54:2:0
+W:10:10:10:120
+P:0:1d1:0:0:0
+A:10/200
+F:SPECIAL_GENE
+D:An item which a Summoner can use to revive a true copy of a creature.
+
+### Holy relics for God Quests ###
+
+N:814:& Piece~ of the Relic of Eru
+G:~:v
+I:11:7:0
+W:0:0:0:1000
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:Although it looks like a piece of junk, it is actually part of an ancient
+D:relic belonging to Priests of Eru. The relic now lies in pieces, hidden
+D:from all but but his most dedicated followers.
+
+N:815:& Piece~ of the Relic of Manwe
+G:~:v
+I:11:8:0
+W:0:0:0:1000
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:Although it looks like a piece of junk, it is actually part of an ancient
+D:relic belonging to Priests of Manwe. The relic now lies in pieces, hidden
+D:from all but his most dedicated followers.
+
+N:816:& Piece~ of the Relic of Tulkas
+G:~:v
+I:11:9:0
+W:0:0:0:1000
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:Although it looks like a piece of junk, it is actually part of an ancient
+D:relic belonging to worshippers of Tulkas. The relic now lies in pieces,
+D:hidden from all but his most dedicated followers.
+
+N:817:& Piece~ of the Relic of Melkor
+G:~:v
+I:11:10:0
+W:0:0:0:1000
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:Although it looks like a piece of junk, it is actually part of an ancient
+D:relic belonging to Dark Priests. The relic now lies in pieces, hidden
+D:from all but the most faithful followers of Melkor.
+
+N:818:& Piece~ of the Relic of Yavanna
+G:~:v
+I:11:11:0
+W:0:0:0:1000
+A:0/1
+P:0:1d1:0:0:0
+F:SPECIAL_GENE | IGNORE_COLD | IGNORE_ELEC | IGNORE_FIRE | IGNORE_ACID
+D:Although it looks like a piece of junk, it is actually part of an ancient
+D:relic belonging to Druids. The relic now lies in pieces, hidden
+D:from all but the most faithful followers of Yavanna.
diff --git a/lib/edit/maeglin.map b/lib/edit/maeglin.map
new file mode 100644
index 00000000..a230c68a
--- /dev/null
+++ b/lib/edit/maeglin.map
@@ -0,0 +1,85 @@
+# Created by Mynstral (mynstral@thehelm.com)
+# Made for PernAngband on 26/07/2001
+
+# Monsters starts awake
+N:0
+
+# Permanent wall
+F:X:63:3
+
+# Marker
+F:<:172:3
+
+# up stairs with maeglin
+F:{:6:3:825
+
+# Floor with dirt
+F:.:88:5
+
+# Floor with dirt with an Ettin
+F:e:88:5:621
+
+# Floor with dirt with a War Troll
+F:w:88:5:631
+
+# Floor with dirt with a Troll Chieftan
+F:t:88:5:799
+
+# Floor with dirt with a Snagga sapper
+F:s:88:5:251
+
+# Floor with dirt with an Orc Captain
+F:o:88:5:285
+
+# Floor with dirt with an Elite Uruk
+F:u:88:5:866
+
+# Floor with dirt with an Ancient blue dragon
+F:L:88:5:601
+
+# Floor with dirt with an Ancient bronze dragon
+F:Z:88:5:602
+
+# Floor with dirt with an Ancient white dragon
+F:W:88:5:617
+
+# Floor with dirt with an Ancient green dragon
+F:G:88:5:618
+
+# Floor with dirt with an Ancient black dragon
+F:B:88:5:624
+
+# Floor with dirt with an Ancient red dragon
+F:R:88:5:644
+
+# Floor with dirt with an Ancient gold dragon
+F:O:88:5:645
+
+# Floor with dirt with a Lesser Balrog
+F:U:88:5:996
+
+# Granite wall
+F:#:56:5
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X##..#########...#........###..R.....###.e...{X
+D:X#.wt.######..O....#s..#..##w.#..###.....#.t..X
+D:X#wBLe.####.U.###....##.U.#...##..u####.#####.X
+D:X#eRe.####..#..######.B...w...#.U#uuu##.#U...eX
+D:X##...#...G###s...##....##..####..##uu#B..##..X
+D:X####...e...#####.t...####...####.###u#####.w#X
+D:X###....##.w.######.e.#..##...###..##uu#e...##X
+D:X##..W#####...###.....#...##.e####.L##...#####X
+D:X##...######e.##Z..w.###.......####.###t.#####X
+D:X....########s....#s...##R..#.U.##..####..####X
+D:Xs..####....##.tU####...#####t...#.######..###X
+D:X#...##..##..#..######.t..e..##.w...#####w.###X
+D:X##.....####s..######.e.#.#t...#.#U.####..####X
+D:X#...####uu##.t..#####...e####s#........w.####X
+D:X...####uou...##...#####.....###..#####...####X
+D:X..#####uu##...###s.##........##..#####..#####X
+D:X.o.#######...e.###.....o.###s.##..###s...#..#X
+D:X#s..o#......#s.......u...####..#s.##...o.G...X
+D:Xsss##o....u###....u..o.o.#####........###.OZ.X
+D:X<ss...###############...##################U.#X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
diff --git a/lib/edit/misc.txt b/lib/edit/misc.txt
new file mode 100644
index 00000000..08e35c1f
--- /dev/null
+++ b/lib/edit/misc.txt
@@ -0,0 +1,91 @@
+# File: misc.txt
+
+# Maximum number of towns
+M:T:100
+
+# Maximum number of non random towns(must be < 20)
+M:t:5
+
+# Maximum x size of the wilderness
+M:X:101
+
+# Maximum y size of the wilderness
+M:Y:66
+
+# Maximum number of randart parts in ra_info.txt
+M:Z:516
+
+# Maximum number of monsters in r_info.txt
+# WARNING ! add one more to the real count for the player ghost !!
+M:R:1078
+
+# Maximum number of monsters in re_info.txt
+# WARNING ! Use the exact amount of ego types used, if not you
+# will get weird results !
+M:r:14
+
+# Maximum number of items in k_info.txt
+M:K:819
+
+# Maximum number of vaults in v_info.txt
+M:V:108
+
+# Maximum number of terrain features in f_info.txt
+M:F:256
+
+# Maximum number of alchemist recipes
+M:a:1000
+
+# Maximum number of artifacts in a_info.txt
+M:A:219
+
+# Maximum number of sets types in set_info.txt
+M:s:10
+
+# Maximum number of ego-items in e_info.txt
+M:E:200
+
+# Maximum number of dungeon types in d_info.txt
+M:D:31
+
+# Maximum number of trap types in tr_info.txt
+M:U:176
+
+# Maximum number of terrain types in wf_info.txt
+M:W:30
+
+# Maximum number of owners types in ow_info.txt
+M:N:70
+
+# Maximum number of building actions in ba_info.txt
+M:B:62
+
+# Maximum number of store types in st_info.txt
+M:S:61
+
+# Maximum size for "o_list[]"
+M:O:1024
+
+# Maximum size for "m_list[]"
+M:M:768
+
+# Maximum number of race types in p_info.txt
+M:P:R:22
+
+# Maximum number of subrace types in p_info.txt
+M:P:S:10
+
+# Maximum number of class types in p_info.txt
+M:P:C:32
+
+# Maximum number of meta class types in p_info.txt
+M:P:M:1
+
+# Maximum number of histories types in p_info.txt
+M:P:H:266
+
+# Maximum number of skills in s_info.txt
+M:k:60
+
+# Maximum number of traits in ab_info.txt
+M:b:50
diff --git a/lib/edit/nirnaeth.map b/lib/edit/nirnaeth.map
new file mode 100644
index 00000000..2ce0e886
--- /dev/null
+++ b/lib/edit/nirnaeth.map
@@ -0,0 +1,64 @@
+# Permanent wall
+F:X:63:3
+
+# up stairs
+F:<:6:3
+
+# Floor with dirt
+F:.:1:5
+
+# Dirt (no-tele)
+F:s:88:5
+
+# Shallow water
+F:V:84:5
+
+# Dirt with Olog
+F:a:88:5:538
+
+# Dirt with Cave Troll
+F:b:88:5:496
+
+# Dirt with with Eldrak
+F:c:88:1:620
+
+# Dirt with with Ettin
+F:e:88:1:621
+
+# Dirt with with War troll
+F:f:88:1:631
+
+# Dirt with with Hru
+F:g:88:1:709
+
+# Dirt with Ulik the Troll
+F:h:88:5:729
+
+# Dirt with Ancient green dragon
+F:i:88:5:618
+
+# Dungeon
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X...a.bab....f.....f.XXXXXXXXXXX
+D:X..ab...b..ff..aa..b..XXXXXXXXXX
+D:X.aa..b..fff...a..g.f.b.XXXXXXXX
+D:Xab.....b....f.......f..bf..XXXX
+D:X..b.f......ff.f..aa...f..b.XXXX
+D:X...ff..f..ff.c.a..f.g.a..fXXXXX
+D:Xb.f....fff.ff...aaa....f..XXXXX
+D:X...ff...ff...f......aa..a..XXXX
+D:Xb.ff.a...f...bbb..a..aa.....XXX
+D:X.f.a...a....bbebb......f.fa.XXX
+D:X.....a.....bbecebb..g.a.a....XX
+D:X.a.a....aa.beccceb....f.a..c.XX
+D:X......a..f.bbecebba.f....ea...X
+D:XX.b.aa.f..f.bbebb...a.aa...g.aX
+D:XX..bb...a..f.bbb..a..a..aae..iX
+D:XXX....aa.aa.f...aa...e..b..h..X
+D:XXXXXX........bb...g....aa...gcX
+D:XXXXXXXX.g..aa...a...a.e...ac.<X
+D:XXXXXXXX........bb....e.c.i.e.iX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:3
diff --git a/lib/edit/numenor.txt b/lib/edit/numenor.txt
new file mode 100644
index 00000000..ec8621b1
--- /dev/null
+++ b/lib/edit/numenor.txt
@@ -0,0 +1,80 @@
+# File: numenor.txt
+
+# Way to the lost land of Numenor
+F:>:7:3:0:0:0:0:0:7
+
+############### Town Layout ###############
+
+D:######################################################################################################################################################################################################
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW>VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW#
+D:######################################################################################################################################################################################################
+
+
+############### Starting positions ###############
+
+# Standard starting position for normal races
+?:[EQU $LEAVING_QUEST 0]
+P:46:128
diff --git a/lib/edit/ow_info.txt b/lib/edit/ow_info.txt
new file mode 100644
index 00000000..a1e3d0a3
--- /dev/null
+++ b/lib/edit/ow_info.txt
@@ -0,0 +1,447 @@
+# File: ow_info.txt
+
+
+# This file is used to initialize the "lib/raw/ow_info.raw" file, which is
+# used to initialize the "owner info type" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# N:<index>:<name>
+# I:<max_cost>:<max_inflate>:<min_inflate>:<haggle_per>:<insult_max>
+# C:<hated cost>:<normal cost>:<liked cost>
+# L:liked races
+# H:hated races
+
+# Version stamp (required)
+
+V:2.0.0
+
+N:0:Bilbo the Friendly(Hobbit)
+I:20000:170:108:5:15
+C:120:100:80
+L:Elf | Half-Elf | High-Elf | Dunadan | Hobbit | Dwarf | RohanKnight
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold
+
+N:1:Uldrik(Human)
+I:20000:170:108:1:1
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:2:Otick(Human)
+I:100:170:108:4:10
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:3:Merana(Human)
+I:0:170:108:1:1
+C:200:100:95
+L:Human
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:4:Mirimbar(High-Elf)
+I:0:170:108:1:1
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:5:Raistlin the Chicken(Human)
+I:20000:175:108:4:12
+C:120:100:80
+L:Human
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:6:Sultan the Midget(Gnome)
+I:30000:170:107:5:15
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:7:Lyar-el the Comely(Elf)
+I:30000:165:107:6:18
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:8:Kon-Dar the Ugly(Half-Orc)
+I:5000:210:115:5:7
+C:120:100:80
+L:Orc | Troll | Half-Ogre | Beorning | Kobold
+H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
+
+N:9:Darg-Low the Grim(Human)
+I:10000:190:111:4:9
+C:120:100:80
+L:Human
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:10:Decado the Handsome(Dunadan)
+I:25000:200:112:4:10
+C:120:100:80
+L:Human | Dunadan | RohanKnight
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:11:Wieland the Smith(Dwarf)
+I:30000:200:112:4:5
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:12:Arnold the Beastly(Barbarian)
+I:5000:210:115:6:6
+C:120:100:80
+
+N:13:Arndal Beast-Slayer(Half-Elf)
+I:10000:185:110:5:9
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:14:Eddie Beast-Master(Half-Orc)
+I:25000:190:115:5:7
+C:120:100:80
+L:Orc | Troll | Half-Ogre | Beorning | Kobold
+H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
+
+N:15:Oglign Dragon-Slayer(Dwarf)
+I:30000:195:112:4:8
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:16:Aragorn(Dunadan)
+I:20000:200:112:4:10
+C:120:100:80
+L:Human | Dunadan | RohanKnight
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:17:Sondar(Human)
+I:0:200:112:4:10
+C:120:100:80
+
+N:18:Celebor(Half-Elf)
+I:100:170:108:4:10
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:19:Sharra(Human)
+I:25000:200:112:4:10
+C:120:100:80
+L:Human | Dunadan | RohanKnight
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:20:Hjolgar(Barbarian)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Warrior |
+
+N:21:Tanistil(Elf)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Mage | Sorceror | Thaumaturgist
+#H:Warrior |
+
+N:22:Eldore(Human)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Priest
+#H:Necromancer
+
+N:23:Vilios(Human)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Paladin
+#H:Necromancer
+
+N:24:Angros(Elf)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Ranger
+
+N:25:Palano(Thunderlord)
+I:0:210:115:6:6
+C:120:100:80
+L:Thunderlord
+
+N:26:Ludwig the Humble(Dwarf)
+I:5000:175:109:6:15
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:27:Gunnar the Paladin(Half-Troll)
+I:10000:185:110:5:23
+C:120:100:80
+L:Orc | Troll | Half-Ogre | Beorning | Kobold
+H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
+
+N:28:Torin the Chosen(High-Elf)
+I:25000:180:107:6:20
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:29:Sarastro the Wise(Human)
+I:30000:185:109:5:15
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:30:Mauser the Chemist(Half-Elf)
+I:10000:190:111:5:8
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:31:Wizzle the Chaotic(Hobbit)
+I:10000:190:110:6:8
+C:120:100:80
+L:Elf | Half-Elf | High-Elf | Dunadan | Hobbit | Dwarf | RohanKnight
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:32:Midas the Greedy(Gnome)
+I:15000:200:116:6:9
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:33:Ja-Far the Alchemist(Elf)
+I:15000:220:111:4:9
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:34:Ariel the Sorceress(Half-Elf)
+I:20000:200:110:7:8
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:35:Buggerby the Great(Gnome)
+I:20000:215:113:6:10
+C:120:100:80
+L:Gnome | Dwarf | Petty-Dwarf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:36:Inglorian the Mage(Human)
+I:30000:200:110:7:10
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:37:Luthien Starshine(High-Elf)
+I:30000:175:110:5:11
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:38:Gary Gygaz(Half-Troll)
+I:20000:250:150:10:5
+C:120:100:80
+#L:Rogue
+H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
+
+N:39:Histor the Goblin(Half-Orc)
+I:20000:250:150:10:5
+C:120:100:80
+#L:Rogue
+H:Gnome | Dwarf | Human | RohanKnight | Elf | Half-Elf | High-Elf
+
+N:40:Zorak the Smart(Dwarf)
+I:30000:250:150:10:5
+C:120:100:80
+#L:Rogue
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:41:Tipo the Fair(Human)
+I:30000:250:150:10:5
+C:120:100:80
+#L:Rogue
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:42:Dolaf the Greedy(Human)
+I:10000:175:108:4:12
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
+
+
+N:43:Odnar the Sage(High-Elf)
+I:15000:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:44:Gandar the Neutral(Dark-Elf)
+I:25000:120:110:7:19
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold
+
+N:45:Ro-sha the Patient(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:46:N'rak the Summoner(Human)
+I:10000:175:108:4:12
+C:120:100:80
+L:Human | Dunadan | RohanKnight
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:47:Esperion the Beastlover(High-Elf)
+I:15000:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:48:Flarim the Shopkeeper(Dunadan)
+I:25000:120:110:7:19
+C:120:100:80
+L:Human | Dunadan | RohanKnight
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:49:Tril-akheb the Supreme(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:50:Dorchel(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+L:Elf | Half-Elf | Dark-Elf | High-Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:51:Galadriel(High-Elf)
+I:15000:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:52:Celeborn(High-Elf)
+I:15000:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:53:Aulendil(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+#L:Warrior |
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:54:Valceronwe(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+#L:Mage | Thaumaturgist | Sorceror
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:55:Voronwe(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+#L:Priest | Paladin
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:56:Celegail(Elf)
+I:30000:140:105:6:12
+C:120:100:80
+#L:Ranger
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:57:Turgon(High-Elf)
+I:30000:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:58:Pengolodh(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:59:Aerandir(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:60:Celebrimbor(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+#L:Warrior |
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:61:Lomelosse(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf |
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:62:Arlindel(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+#L:Harper | Ranger
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:63:Sulraen(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+#L:Mage | Sorceror
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:64:Firiel(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf |
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:65:Earendur(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf | Elf
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:66:Glorfindel(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf
+#L:Ranger
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:67:Ecthelion(High-Elf)
+I:0:120:105:6:16
+C:120:100:80
+L:High-Elf | Half-Elf
+#L:Paladin
+H:Orc | Troll | Half-Ogre | Beorning | Kobold |
+
+N:68:Kanris(Human)
+I:5000:210:115:6:6
+C:120:100:80
+#L:Merchant
+#H:Rogue
+
+N:69:Barliman Butterbur(Human)
+I:100:170:108:4:10
+C:120:100:80
+L:Dunadan | Hobbit | Human |
+H:Orc | Troll | DeathMold | Half-Ogre | Beorning | Kobold |
diff --git a/lib/edit/p_info.txt b/lib/edit/p_info.txt
new file mode 100644
index 00000000..1531f4fd
--- /dev/null
+++ b/lib/edit/p_info.txt
@@ -0,0 +1,1974 @@
+# File: p_info.txt
+
+
+# This file is used to initialize the "lib/raw/p_info.raw" file, which is
+# used to initialize the "player race/race mod/class" information for the
+# Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+V:2.0.0
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# General skills, that everybody starts with
+# G:k:value:modifier:skill name
+G:k:+0:+500:Monster-lore
+G:k:+1000:+0:Spell-learning
+G:k:+0:+500:Prayer
+G:k:+0:+400:Udun
+G:k:+1000:+1000:Magic-Device
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# C:N:index:name
+# C:D:0:class desc
+# C:D:1:titles
+# C:S:str:int:wis:dex:con:chr:mana:bonus blows
+# C:K:dis:dev:sav:stl:srh:fos:thn:thb
+# C:X:dis:dev:sav:stl:srh:fos:thn:thb
+# C:P:hitdie:xp%
+# C:B:num:wgt:mul
+# C:C:(H|L):(H|L):base:pl:plus
+# first (H|L) is for weapons/.. second is for magic things
+# H = heavy sensing, L = light sensing; result(lower = better) = base / (pl * plev + plus)
+# C:G:class flags
+# C:R:level:pval
+# C:F:flags
+# C:Z:power
+# C:E:weapons:torso:arms:finger:head:legs
+# C:O:tval:sval:xdy
+# C:k:value:modifier:skill name
+# C:b:level:ability
+
+# Specialities, autoskiller
+# C:a:N:Name
+# C:a:D:Desc
+# C:a:K:lvl 50 skill value:skill name
+# C:a:k:value:mod:skill name
+# C:a:b:level:ability
+# C:a:O:tval:sval:xdy
+
+C:N:0:Warrior
+C:D:0:Simple fighters, they hack away with their trusty weapon.
+C:D:1:Rookie
+C:D:1:Soldier
+C:D:1:Mercenary
+C:D:1:Veteran
+C:D:1:Swordsman
+C:D:1:Champion
+C:D:1:Hero
+C:D:1:Baron
+C:D:1:Duke
+C:D:1:Lord
+C:S:5:-2:-2:2:2:-1:0:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:30:5
+C:C:H:L:9000:2:40
+C:P:9:0
+C:R:30:0
+C:F:RES_FEAR
+C:E:0:0:0:0:0:0
+C:O:45:38:1d1
+C:O:37:4:1d1
+C:k:+2000:+800:Combat
+C:k:+1000:+850:Weaponmastery
+C:k:+0:+400:Sword-mastery
+C:k:+0:+400:Axe-mastery
+C:k:+0:+400:Hafted-mastery
+C:k:+0:+400:Polearm-mastery
+C:k:+1000:+600:Archery
+C:k:+1000:+900:Sneakiness
+C:k:+0000:+400:Stealth
+C:k:+1000:+900:Disarming
+C:k:+1000:+300:Magic
+C:k:+1000:+400:Spirituality
+C:k:+0:+550:Antimagic
+C:k:+0:+150:Magic-Device
+C:b:25:Spread blows
+C:b:1:Extra Max Blow(1)
+C:b:1:Extra Max Blow(2)
+
+# Specialities, autoskiller
+C:a:N:Warrior
+C:a:D:Simple fighters, they hack away with their trusty weapon.
+C:a:O:23:16:1d1
+C:a:g:All Gods
+
+C:a:N:Swordmaster
+C:a:D:Fighters specialised in the use of swords
+C:a:k:+1000:+300:Sword-mastery
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+100:Combat
+C:a:k:+0:-100:Axe-mastery
+C:a:k:+0:-100:Hafted-mastery
+C:a:k:+0:-100:Polearm-mastery
+C:a:O:23:16:1d1
+C:a:g:Nobody
+C:a:g:Manwe Sulimo
+C:a:g:Tulkas
+C:a:g:Melkor Bauglir
+C:a:g:Yavanna Kementari
+
+C:a:N:Axemaster
+C:a:D:Fighters specialised in the use of axes
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+100:Combat
+C:a:k:+1000:+300:Axe-mastery
+C:a:k:+0:-100:Sword-mastery
+C:a:k:+0:-100:Hafted-mastery
+C:a:k:+0:-100:Polearm-mastery
+C:a:O:24:1:1d1
+C:a:g:Nobody
+C:a:g:Manwe Sulimo
+C:a:g:Tulkas
+C:a:g:Melkor Bauglir
+C:a:g:Yavanna Kementari
+
+C:a:N:Haftedmaster
+C:a:D:Fighters specialised in the use of hafted weapons
+C:a:k:+1000:+300:Hafted-mastery
+C:a:k:+0:+500:Stunning-blows
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+100:Combat
+C:a:k:+0:-100:Axe-mastery
+C:a:k:+0:-100:Sword-mastery
+C:a:k:+0:-100:Polearm-mastery
+C:a:O:21:13:1d1
+C:a:g:All Gods
+
+C:a:N:Polearmmaster
+C:a:D:Fighters specialised in the use of polearms
+C:a:k:+1000:+300:Polearm-mastery
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+100:Combat
+C:a:k:+0:-100:Axe-mastery
+C:a:k:+0:-100:Hafted-mastery
+C:a:k:+0:-100:Sword-mastery
+C:a:O:22:8:1d1
+C:a:g:All Gods
+
+C:a:N:Unbeliever
+C:a:D:They don't believe in magic and can even prevent its usage around them
+C:a:k:=0:=0:Prayer
+C:a:k:=0:=0:Magic
+C:a:k:=0:=0:Magic-Device
+C:a:k:=0:=0:Spirituality
+C:a:k:+1000:+100:Antimagic
+C:a:O:23:33:1d1
+C:a:g:Nobody
+
+C:a:N:Demonologist
+C:a:D:Masters of the school of demonology, they are trained in both melee
+C:a:D:fighting and using demon spells to enhance their combat potential.
+C:a:O:115:55:1d1
+C:a:k:+0:-50:Combat
+C:a:k:+0:-100:Weaponmastery
+C:a:k:+0:+200:Sword-mastery
+C:a:k:=0:=0:Axe-mastery
+C:a:k:=0:=0:Hafted-mastery
+C:a:k:=0:=0:Polearm-mastery
+C:a:k:+1000:-200:Archery
+C:a:k:+1000:+900:Sneakiness
+C:a:k:+1000:+900:Disarming
+C:a:k:+1000:+400:Magic
+C:a:k:+1000:+300:Spirituality
+C:a:k:=0:=0:Antimagic
+C:a:k:+1000:+1000:Demonology
+C:a:g:Nobody
+C:a:g:Manwe Sulimo
+C:a:g:Tulkas
+C:a:g:Melkor Bauglir
+
+C:N:1:Mage
+C:D:0:The basic spellcaster with lots of different skills
+C:D:1:Apprentice
+C:D:1:Trickster
+C:D:1:Illusionist
+C:D:1:Spellbinder
+C:D:1:Evoker
+C:D:1:Conjurer
+C:D:1:Warlock
+C:D:1:Sorcerer
+C:D:1:Ipsissimus
+C:D:1:Archimage
+C:S:-5:3:0:1:-2:1:50:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:40:2
+C:C:L:H:240000:1:5
+C:P:0:30
+C:E:0:0:0:0:0:0
+C:k:+1000:+900:Magic
+C:k:+0:+200:Magic-Device
+C:k:+0:+600:Spell-power
+C:k:+1000:+600:Mana
+C:k:+0:+700:Fire
+C:k:+0:+700:Water
+C:k:+0:+700:Air
+C:k:+0:+700:Earth
+C:k:+0:+700:Temporal
+C:k:+0:+700:Divination
+C:k:+0:+700:Conveyance
+C:k:+0:+700:Nature
+C:k:+0:+700:Meta
+C:k:+0:+700:Mind
+C:k:+0:+700:Necromancy
+C:k:+0:+700:Runecraft
+C:k:+0:+700:Thaumaturgy
+C:k:+1000:+550:Spirituality
+C:k:+1000:+200:Combat
+C:k:+700:+500:Weaponmastery
+C:k:+1000:+900:Sneakiness
+C:k:+0000:+400:Stealth
+C:b:1:Perfect casting
+C:g:All Gods
+
+C:a:N:Mage
+C:a:D:The basic unspecialized warrior-spellcaster
+C:a:k:+0:+300:Combat
+C:a:k:+0:+200:Sorcery
+C:a:k:+0:+300:Mana
+C:a:k:+0:+200:Fire
+C:a:k:+0:+200:Water
+C:a:k:+0:+200:Air
+C:a:k:+0:+200:Earth
+C:a:k:+0:+200:Conveyance
+C:a:k:+0:+200:Nature
+C:a:k:+0:+200:Temporal
+C:a:k:+0:+200:Divination
+C:a:k:+0:+200:Meta
+C:a:k:+0:+200:Mind
+C:a:O:23:4:1d1
+C:a:O:111:50:1d1
+
+C:a:N:Geomancer
+C:a:D:The master of the four elements
+C:a:k:+0:-150:Magic-Device
+C:a:k:+1000:+100:Spell-power
+C:a:k:-1000:-600:Mana
+C:a:k:+1000:+700:Geomancy
+C:a:k:+1000:+350:Fire
+C:a:k:+1000:+350:Water
+C:a:k:+1000:+350:Air
+C:a:k:+1000:+350:Earth
+C:a:k:+0:-100:Weaponmastery
+C:a:O:6:1:1d1
+
+C:a:N:Warper
+C:a:D:The master of space and time
+C:a:k:+0:-150:Magic-Device
+C:a:k:+1000:+100:Spell-power
+C:a:k:+0:+100:Mana
+C:a:k:+0:+100:Fire
+C:a:k:+0:+100:Water
+C:a:k:+0:+100:Air
+C:a:k:+0:+100:Earth
+C:a:k:+0:+500:Conveyance
+C:a:k:+0:+100:Nature
+C:a:k:+0:+500:Temporal
+C:a:k:+0:+500:Divination
+C:a:k:+0:+100:Meta
+C:a:k:+0:-100:Weaponmastery
+C:a:O:23:4:1d1
+C:a:O:111:50:1d1
+
+C:a:N:Sorceror
+C:a:D:The master of all magic schools
+C:a:k:+0:-200:Magic-Device
+C:a:k:=0:=0:Weaponmastery
+C:a:k:=0:=0:Combat
+C:a:k:+1000:+700:Sorcery
+C:a:k:+0:+100:Magic
+C:a:k:-1000:+300:Mana
+C:a:k:+0:+300:Fire
+C:a:k:+0:+300:Water
+C:a:k:+0:+300:Air
+C:a:k:+0:+300:Earth
+C:a:k:+0:+300:Conveyance
+C:a:k:+0:+300:Nature
+C:a:k:+0:+300:Temporal
+C:a:k:+0:+300:Divination
+C:a:k:+0:+300:Meta
+C:a:k:+0:+300:Mind
+C:a:k:+0:+200:Necromancy
+C:a:k:+0:+200:Runecraft
+C:a:k:+0:+200:Thaumaturgy
+C:a:O:36:2:1d1
+C:a:O:111:50:1d1
+
+C:a:N:Necromancer
+C:a:D:The master of death, and undeath
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+200:Combat
+C:a:k:+1000:+300:Necromancy
+C:a:k:-1000:+0:Mana
+C:a:k:+0:+100:Fire
+C:a:k:+0:+100:Earth
+C:a:k:+0:-200:Nature
+C:a:k:+0:+100:Temporal
+C:a:k:+0:+200:Mind
+C:a:k:+1000:+600:Monster-lore
+C:a:k:+5000:+900:Corpse-preservation
+C:a:O:23:4:1d1
+C:a:O:111:50:1d1
+C:a:b:25:Undead Form
+
+C:a:N:Runecrafter
+C:a:D:Runecrafters use the runes found in Middle-earth to create
+C:a:D:finely tuned spells for each specific situation.
+C:a:k:+1000:+50:Magic
+C:a:k:+1000:+300:Runecraft
+C:a:k:+0:-100:Weaponmastery
+C:a:O:111:50:1d1
+C:a:O:105:1:1d1
+C:a:O:104:5:1d1
+C:a:O:23:4:1d1
+
+C:a:N:Thaumaturgist
+C:a:D:Thaumaturgy spells come from within and are different for each character.
+C:a:D:Since attack is the best defence, all their spells are offensive.
+C:a:k:-1000:+0:Mana
+C:a:k:+2000:+50:Magic
+C:a:k:+1000:+300:Thaumaturgy
+C:a:k:+0:-100:Weaponmastery
+C:a:k:+0:-150:Magic-Device
+C:a:O:23:4:1d1
+C:a:O:111:50:1d1
+
+C:a:N:Alchemist
+C:a:D:Alchemists can quickly create powerful magic items through the correct use
+C:a:D:of the essences of magic they can extract from magical objects.
+C:a:k:+2000:+0:Magic
+C:a:k:+0:-600:Spell-power
+C:a:k:+0:-600:Necromancy
+C:a:k:+0:-600:Thaumaturgy
+C:a:k:+0:+250:Spirituality
+C:a:k:+0:+500:Combat
+C:a:k:+0:+200:Weaponmastery
+C:a:k:-1000:-600:Mana
+C:a:k:+0:-600:Fire
+C:a:k:+0:-600:Water
+C:a:k:+0:-600:Air
+C:a:k:+0:-600:Earth
+C:a:k:+0:-600:Conveyance
+C:a:k:+0:-600:Nature
+C:a:k:+0:-600:Temporal
+C:a:k:+0:-200:Divination
+C:a:k:+0:-200:Meta
+C:a:k:+0:-600:Mind
+C:a:k:+1000:+800:Alchemy
+C:a:k:+0:+50:Magic-Device
+C:a:O:31:1:1d1
+C:a:O:4:2:6d1
+C:a:O:2:1:1d1
+C:a:O:23:4:1d1
+C:a:G:EXPERIMENTAL
+
+C:N:2:Archer
+C:D:0:'Kill them before they see you' could be the motto of the archer class.
+C:D:0:As deadly with a bow as a warrior is with a sword.
+C:D:1:Rock Thrower
+C:D:1:Slinger
+C:D:1:Great Slinger
+C:D:1:Tosser
+C:D:1:Bowman
+C:D:1:Great Bowman
+C:D:1:Great Bowman
+C:D:1:Archer
+C:D:1:Archer
+C:D:1:Great Archer
+C:S:2:1:0:2:1:1:0:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:35:4
+C:C:H:L:9000:2:40
+C:P:4:30
+C:E:0:0:0:0:0:0
+C:k:+1000:+800:Combat
+C:k:+1000:+500:Weaponmastery
+C:k:+1000:+750:Archery
+C:k:+0:+300:Bow-mastery
+C:k:+0:+300:Crossbow-mastery
+C:k:+0:+300:Sling-mastery
+C:k:+0:+300:Boomerang-mastery
+C:k:+0:%150:Boulder-throwing
+C:k:+1000:+900:Sneakiness
+C:k:+0000:+400:Stealth
+C:k:+1000:+900:Disarming
+C:k:+1000:+300:Magic
+C:k:+0:+100:Magic-Device
+C:k:+1000:+400:Spirituality
+C:b:2:Ammo creation
+
+C:a:N:Archer
+C:a:D:'Kill them before they see you' could be the motto of the archer class.
+C:a:D:As deadly with a bow as a warrior is with a sword.
+C:a:k:+0:+100:Archery
+C:a:k:+0:+200:Bow-mastery
+C:a:k:+0:+200:Crossbow-mastery
+C:a:k:+0:+200:Sling-mastery
+C:a:k:+0:+200:Boomerang-mastery
+C:a:k:-1000:-100:Magic
+C:a:O:19:12:1d1
+C:a:O:19:2:1d1
+C:a:O:17:1:10d3
+C:a:O:17:1:10d3
+C:a:g:All Gods
+
+C:a:N:Ranger
+C:a:D:Rangers are capable archers but are also trained in hand to hand combat
+C:a:D:and nature/conveyance/divination magic schools
+C:a:k:+0:+400:Magic
+C:a:k:+0:+500:Nature
+C:a:k:+0:+500:Divination
+C:a:k:+0:+500:Conveyance
+C:a:k:+0:+700:Disarming
+C:a:k:+0:+50:Sneakiness
+C:a:k:+0:+200:Monster-lore
+C:a:O:19:12:1d1
+C:a:O:17:1:10d3
+C:a:O:23:10:1d1
+C:a:g:Nobody
+C:a:g:Manwe Sulimo
+C:a:g:Tulkas
+C:a:g:Yavanna Kementari
+
+C:N:3:Rogue
+C:D:0:Rogues are masters of tricks. They can steal from shops and monsters,
+C:D:0:and lure monsters into deadly monster traps.
+C:D:1:Cutpurse
+C:D:1:Robber
+C:D:1:Burglar
+C:D:1:Filcher
+C:D:1:Sharper
+C:D:1:Low Thief
+C:D:1:High Thief
+C:D:1:Master Thief
+C:D:1:Assassin
+C:D:1:Guildmaster
+C:S:2:1:-2:3:1:-1:0:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:30:3
+C:C:H:H:20000:2:40
+C:P:6:25
+C:O:23:4:1d1
+C:G:EASE_STEAL
+C:R:3:1
+C:F:CRIT
+C:R:6:1
+C:F:CRIT
+C:R:9:1
+C:F:CRIT
+C:R:12:1
+C:F:CRIT
+C:R:15:1
+C:F:CRIT
+C:R:18:1
+C:F:CRIT
+C:R:21:1
+C:F:CRIT
+C:R:24:1
+C:F:CRIT
+C:R:27:1
+C:F:CRIT
+C:R:30:1
+C:F:CRIT
+C:R:33:1
+C:F:CRIT
+C:R:36:1
+C:F:CRIT
+C:R:39:1
+C:F:CRIT
+C:R:42:1
+C:F:CRIT
+C:R:45:1
+C:F:CRIT
+C:R:48:1
+C:F:CRIT
+C:E:0:0:0:0:0:0
+C:k:+1000:+700:Combat
+C:k:+1000:+700:Weaponmastery
+C:k:+1000:+300:Sword-mastery
+C:k:+1000:+500:Critical-hits
+C:k:+1000:+700:Magic
+C:k:+0:+550:Magic-Device
+C:k:+0:+500:Conveyance
+C:k:+0:+500:Divination
+C:k:+0:+500:Temporal
+C:k:+1000:+700:Spirituality
+C:k:+1000:+2000:Sneakiness
+C:k:+1000:+1500:Stealth
+C:k:+1000:+2000:Disarming
+C:k:+1000:+1000:Backstab
+C:k:+1000:+2000:Stealing
+C:k:+1000:+2000:Dodging
+C:g:All Gods
+C:b:10:Extra Max Blow(1)
+
+C:a:N:Rogue
+C:a:D:Rogues are masters of tricks. They can steal from shops and monsters,
+C:a:D:and lure monsters into deadly monster traps.
+C:a:b:1:Trapping
+C:a:O:46:1:1d1
+
+C:a:N:Assassin
+C:a:D:Assassins are stealthy killers.
+C:a:k:+0:+100:Combat
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+300:Sword-mastery
+C:a:k:+1000:+300:Critical-hits
+C:a:k:+1000:+300:Boomerang-mastery
+C:a:k:+0:-500:Magic
+C:a:k:+0:-400:Conveyance
+C:a:k:+0:-400:Divination
+C:a:k:+0:-300:Temporal
+C:a:k:+0:+500:Stealth
+C:a:k:+0:-1000:Disarming
+C:a:k:+0:+1000:Backstab
+C:a:k:+0:-1800:Stealing
+C:a:k:+0:-800:Magic-Device
+
+C:N:4:Loremaster
+C:D:0:Loremasters are skilled in most combat and monster skills.
+C:D:1:Apprentice
+C:D:1:Apprentice
+C:D:1:Initiate
+C:D:1:Initiate
+C:D:1:Sage
+C:D:1:Sage
+C:D:1:Lorekeeper
+C:D:1:Lorekeeper
+C:D:1:Loremaster
+C:D:1:Loremaster
+C:S:1:-2:1:1:0:1:0:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:30:3
+C:C:H:L:9000:2:40
+C:P:8:40
+C:E:0:0:0:0:0:0
+C:k:+1000:+700:Combat
+C:k:+1000:+700:Weaponmastery
+C:k:+1000:+700:Archery
+C:k:+1000:+700:Barehand-combat
+C:k:+0:+600:Magic
+C:k:+1000:+700:Sneakiness
+C:k:+1000:+700:Stealth
+C:k:+1000:+700:Disarming
+C:k:+1000:+700:Spirituality
+C:k:+1000:+600:Monster-lore
+C:k:+0:+500:Possession
+C:k:+1000:+700:Corpse-preservation
+C:k:+0:+500:Summoning
+C:k:+0:+500:Symbiosis
+C:k:+0:+500:Mimicry
+C:k:+0:+300:Music
+C:g:All Gods
+
+C:a:N:Loremaster
+C:a:D:Loremasters are skilled in most combat and monster skills.
+C:a:O:21:3:1d1
+C:a:O:36:6:1d1
+C:a:O:19:2:1d1
+C:a:O:16:0:3d10
+
+C:a:N:Possessor
+C:a:D:Only the soul matters; a possessor can abandon his/her current body to
+C:a:D:incarnate in the body of a dead monster, thus gaining its powers
+C:a:D:and weaknesses.
+C:a:O:71:37:1d1
+C:a:O:23:10:1d1
+C:a:O:36:6:1d1
+C:a:k:+0:-100:Combat
+C:a:k:+0:-100:Weaponmastery
+C:a:k:+0:-300:Archery
+C:a:k:-1000:-700:Barehand-combat
+C:a:k:+0:-200:Disarming
+C:a:k:+0:-200:Spirituality
+C:a:k:+1000:+300:Possession
+C:a:k:+0:+200:Corpse-preservation
+C:a:k:+0:-500:Summoning
+C:a:k:+0:-500:Symbiosis
+C:a:k:+0:-500:Mimicry
+
+C:a:N:Mimic
+C:a:D:Disguise is the way of the mimic. Through the use of cloaks of mimicry
+C:a:D:they can change shape for a limited time. They also can temporarily
+C:a:D:change part of their anatomy.
+C:a:O:71:37:1d1
+C:a:O:23:4:1d1
+C:a:k:+0:+100:Combat
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:-100:Barehand-combat
+C:a:k:+1000:+100:Magic
+C:a:k:+0:+100:Sneakiness
+C:a:k:+0:+100:Stealth
+C:a:k:+0:-200:Spirituality
+C:a:k:+0:-400:Possession
+C:a:k:+0:+200:Corpse-preservation
+C:a:k:+0:-500:Summoning
+C:a:k:+0:-500:Symbiosis
+C:a:k:+1000:+300:Mimicry
+
+C:a:N:Symbiant
+C:a:D:A symbiant can merge his/her body with one of a monster unable to move
+C:a:D:by itself. They also have a few spells to help the symbiosis.
+C:a:O:23:4:1d1
+C:a:O:70:6:1d1
+C:a:k:+0:+100:Combat
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:-100:Barehand-combat
+C:a:k:+1000:+100:Magic
+C:a:k:+0:+100:Sneakiness
+C:a:k:+0:+100:Stealth
+C:a:k:+0:-200:Spirituality
+C:a:k:+0:-400:Possession
+C:a:k:+0:+200:Corpse-preservation
+C:a:k:+0:-500:Summoning
+C:a:k:+1000:+300:Symbiosis
+C:a:k:+0:-500:Mimicry
+
+C:a:N:Summoner
+C:a:D:The summoner can conjure monsters from totems made from defeated foes.
+C:a:O:71:37:1d1
+C:a:O:23:10:1d1
+C:a:O:36:6:1d1
+C:a:k:+0:-100:Combat
+C:a:k:+0:-100:Weaponmastery
+C:a:k:+0:-300:Archery
+C:a:k:-1000:-700:Barehand-combat
+C:a:k:+1000:+200:Magic
+C:a:k:+0:+0:Sneakiness
+C:a:k:+0:+0:Stealth
+C:a:k:+0:-200:Disarming
+C:a:k:+0:-200:Spirituality
+C:a:k:+15000:+100:Monster-lore
+C:a:k:+0:-500:Possession
+C:a:k:+0:+300:Corpse-preservation
+C:a:k:+1000:+200:Summoning
+C:a:k:+0:-500:Symbiosis
+C:a:k:+0:-500:Mimicry
+
+C:a:N:Monk
+C:a:D:Barehanded, lightly armoured fighters, they wreak havoc with
+C:a:D:their bare fists, and can also use a few prayers.
+C:a:O:71:37:1d1
+C:a:O:36:4:1d1
+C:a:k:-1000:+200:Combat
+C:a:k:-1000:-400:Weaponmastery
+C:a:k:-1000:-300:Archery
+C:a:k:+0:+200:Barehand-combat
+C:a:k:+0:+0:Magic
+C:a:k:+0:+200:Sneakiness
+C:a:k:+0:+200:Stealth
+C:a:k:+0:+200:Disarming
+C:a:k:+0:+200:Spirituality
+C:a:k:+0:-400:Possession
+C:a:k:+0:-200:Corpse-preservation
+C:a:k:+0:-500:Summoning
+C:a:k:+0:-500:Symbiosis
+C:a:k:+0:-500:Mimicry
+C:a:k:+0:+500:Meta
+C:a:k:+0:+500:Mind
+C:a:k:+0:+500:Temporal
+C:a:k:+0:+700:Dodging
+
+C:a:N:Bard
+C:a:D:Bards sing and play songs full of power, beauty or sadness to affect
+C:a:D:everything that can hear them, using music instruments of various types.
+C:a:O:71:37:1d1
+C:a:O:23:10:1d1
+C:a:O:36:2:1d1
+C:a:O:14:59:1d1
+C:a:k:+1000:+0:Magic
+C:a:k:-1000:-700:Archery
+C:a:k:+0:-100:Barehand-combat
+C:a:k:+0:-100:Disarming
+C:a:k:+0:+100:Spirituality
+C:a:k:+0:-500:Possession
+C:a:k:+0:-100:Summoning
+C:a:k:+0:-100:Symbiosis
+C:a:k:+0:-100:Mimicry
+C:a:k:+1000:+500:Music
+
+C:N:5:Priest
+C:D:0:A priest serves a god (Vala, Maia or Eru himself) to bring down
+C:D:0:the empire of fear and shadows of Morgoth.
+C:D:1:Believer
+C:D:1:Acolyte
+C:D:1:Adept
+C:D:1:Curate
+C:D:1:Canon
+C:D:1:Priest
+C:D:1:High Priest
+C:D:1:Cardinal
+C:D:1:Inquisitor
+C:D:1:Pope
+C:S:-1:-3:3:-1:0:2:0:0
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:4:35:3
+C:C:L:H:10000:2:40
+C:P:2:20
+C:Z:detect curses
+C:G:GOD_FRIEND |
+C:E:0:0:0:0:0:0
+C:k:+1000:+900:Magic
+C:k:+0:+600:Spell-power
+C:k:+0:+600:Necromancy
+C:k:+0:+600:Mindcraft
+C:k:+1000:+1000:Spirituality
+C:k:+1000:+700:Prayer
+C:k:+2000:+700:Combat
+C:k:+1000:+700:Weaponmastery
+C:k:+1000:+900:Sneakiness
+C:k:+0000:+900:Disarming
+C:k:+0000:+400:Stealth
+C:k:+0:+50:Magic-Device
+C:b:1:Perfect casting
+
+C:a:N:Priest(Eru)
+C:a:D:A priest that serves Eru Iluvatar to bring down
+C:a:D:the empire of fear and shadows of Morgoth.
+C:a:O:21:5:1d1
+C:a:g:Eru Iluvatar
+C:a:k:+0:+300:Prayer
+C:a:k:+0:-600:Necromancy
+C:a:k:+0:+100:Spell-power
+
+C:a:N:Priest(Manwe)
+C:a:D:A priest that serves Manwe Sulimo to bring down
+C:a:D:the empire of fear and shadows of Morgoth.
+C:a:O:21:5:1d1
+C:a:g:Manwe Sulimo
+C:a:k:+0:+300:Prayer
+C:a:k:+0:-600:Necromancy
+C:a:k:+0:+50:Weaponmastery
+
+C:a:N:Druid
+C:a:D:A priest that serves Yavanna Kementari to protect
+C:a:D:and help the regrowth of nature on Arda.
+C:a:O:21:5:1d1
+C:a:g:Yavanna Kementari
+C:a:k:+0:+300:Prayer
+C:a:k:+0:-600:Necromancy
+C:a:k:+0:+50:Weaponmastery
+C:a:k:+1000:+700:Monster-lore
+C:a:k:+1000:+700:Summoning
+
+C:a:N:Dark-Priest
+C:a:D:A priest that serves Melkor Bauglir to bring chaos
+C:a:D:and destruction to Arda.
+C:a:O:21:5:1d1
+C:a:g:Melkor Bauglir
+C:a:k:+0:+200:Prayer
+C:a:k:+0:+200:Necromancy
+C:a:k:+0:-600:Mindcraft
+C:a:k:+0:+200:Spell-power
+C:a:k:+1000:+1000:Corpse-preservation
+
+C:a:N:Paladin
+C:a:D:A fighting priest that serves Tulkas to bring down
+C:a:D:the empire of fear and shadows of Morgoth.
+C:a:O:23:25:1d1
+C:a:g:Tulkas
+C:a:k:+0:+200:Prayer
+C:a:k:+0:-600:Necromancy
+C:a:k:+0:+100:Weaponmastery
+C:a:k:+0:+100:Combat
+C:a:k:+0:+900:Barehand-combat
+C:a:b:1:Extra Max Blow(1)
+
+C:a:N:Mindcrafter
+C:a:D:A priest who has learned to tap in his own mental powers
+C:a:O:21:5:1d1
+C:a:g:Eru Iluvatar
+C:a:g:Manwe Sulimo
+C:a:g:Tulkas
+C:a:g:Melkor Bauglir
+C:a:g:Yavanna Kementari
+C:a:k:+0:-300:Prayer
+C:a:k:+0:-200:Necromancy
+C:a:k:+1000:+300:Mindcraft
+C:a:k:+0:+200:Sneakiness
+C:a:k:+0:+100:Magic-Device
+
+###############################TEST###############################
+C:N:30:Test
+C:D:0:Simple testers.
+C:D:1:Rookie
+C:D:1:Soldier
+C:D:1:Mercenary
+C:D:1:Veteran
+C:D:1:Swordsman
+C:D:1:Champion
+C:D:1:Hero
+C:D:1:Baron
+C:D:1:Duke
+C:D:1:Lord
+C:S:5:-2:-2:2:2:-1:0:3
+C:K:10:10:0:1:10:10:10:10
+C:X:0:0:0:0:0:0:0:0
+C:B:6:30:5
+C:C:H:L:9000:2:40
+C:P:9:0
+C:R:30:0
+C:F:RES_FEAR
+C:E:0:0:0:0:0:0
+C:O:45:38:1d1
+C:O:37:4:1d1
+C:k:+1000:+800:Combat
+C:k:+1000:+850:Weaponmastery
+C:k:+0:+200:Sword-mastery
+C:k:+0:+200:Axe-mastery
+C:k:+0:+200:Hafted-mastery
+C:k:+0:+200:Polearm-mastery
+C:k:+1000:+600:Archery
+C:k:+1000:+900:Sneakiness
+C:k:+1000:+900:Disarming
+C:k:+1000:+300:Magic
+C:k:+0:+550:Antimagic
+
+C:a:N:Shinny test
+C:a:D:Simple testers, they test all with their shiny hacks !
+C:a:O:23:16:1d1
+###############################TEST###############################
+
+
+
+
+
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# R: Race definition
+# R:N:index:name
+# R:D:race desc
+# R:S:str:int:wis:dex:con:chr:luck
+# R:K:dis:dev:sav:stl:srh:fos:thn:thb
+# R:P:hitdie:xp%:infra:history chart
+# R:M:b_age:m_age:m_b_ht:m_m_ht:m_b_wt:m_m_wt:f_b_ht:f_m_ht:f_b_wt:f_m_wt
+# R:E:weapons:torso:arms:finger:head:legs
+# R:C:allowed classes
+# R:G:race flags
+# R:R:level:pval
+# R:F:flags
+# R:k:value:modifier:skill name
+# R:b:level:ability
+
+I:
+
+R:N:0:Human
+R:D:Humans are the second born, the Edain.
+R:D:They are the basic race to which all others are compared.
+R:D:Average in ability, they can be any class.
+R:S:0:0:0:0:0:0:0
+R:K:0:0:0:0:0:10:0:0
+R:P:10:100:0:1
+R:M:14:6:72:6:180:25:66:4:150:20
+R:E:1:1:1:2:1:1
+R:C:Warrior | Archer | Mage | Rogue | Priest | Loremaster
+
+R:N:1:Half-Elf
+R:D:A crossbreed of elf and human, they get the best of the two races.
+R:S:0:1:1:1:-1:1:0
+R:K:2:3:3:1:6:11:-1:5
+R:P:9:110:2:4
+R:M:24:16:66:6:130:15:62:6:100:10
+R:E:1:1:1:2:1:1
+R:C:Warrior | Archer | Mage | Rogue | Priest | Loremaster
+R:G:ELF
+R:k:+200:+000:Disarming
+R:k:+300:+000:Magic-Device
+R:k:+1500:+000:Spirituality
+R:k:+1000:+000:Stealth
+R:k:+600:+000:Sneakiness
+R:k:-100:+000:Weaponmastery
+R:k:+500:+000:Archery
+
+R:N:2:Elf
+R:D:Elves are the first born, the Eldar.
+R:D:More spiritual than physical beings, they are weaker than humans
+R:D:but are more intelligent.
+R:S:-1:2:2:1:-2:2:0
+R:K:5:6:6:2:8:12:-5:15
+R:P:8:120:3:5
+R:M:75:75:60:4:100:6:54:4:80:6
+R:E:1:1:1:2:1:1
+R:R:1:0
+R:F:RES_LITE |
+R:C:Warrior | Archer | Mage | Priest | Loremaster
+R:G:ELF
+R:k:+500:+000:Disarming
+R:k:+600:+000:Magic-Device
+R:k:+3000:+000:Spirituality
+R:k:+2000:+000:Stealth
+R:k:+800:+000:Sneakiness
+R:k:-500:+000:Weaponmastery
+R:k:+1500:+000:Archery
+
+R:N:3:Hobbit
+R:D:An old but quiet race related to humans.
+R:D:They are small and quite weak but good at many things.
+R:S:-2:2:1:3:2:1:5
+R:K:15:18:18:5:12:15:-10:20
+R:P:7:110:4:10
+R:M:21:12:36:3:60:3:33:3:50:3
+R:E:1:1:1:2:1:1
+R:Z:create food
+R:G:RESIST_BLACK_BREATH | XTRA_MIGHT_SLING |
+R:R:1:0
+R:F:SUST_DEX |
+R:C:Warrior | Archer | Mage | Rogue | Loremaster
+R:k:+0:+300:Sling-mastery
+R:k:+1500:+000:Disarming
+R:k:+1800:+000:Magic-Device
+R:k:+9000:+000:Spirituality
+R:k:+5000:+000:Stealth
+R:k:+1200:+000:Sneakiness
+R:k:-1000:+000:Weaponmastery
+R:k:+2000:+000:Archery
+
+R:N:4:Gnome
+R:D:Related to dwarves, Gnomes are between Dwarves and Hobbits in size.
+R:D:Very good at magic use, they are poor as fighters.
+R:S:-1:2:0:2:1:-2:2
+R:K:10:12:12:3:6:13:-8:12
+R:P:8:135:4:13
+R:M:50:40:42:3:90:6:39:3:75:3
+R:E:1:1:1:2:1:1
+R:Z:blink
+R:R:1:0
+R:F:FREE_ACT |
+R:C:Warrior | Mage | Rogue
+R:k:+1000:+000:Disarming
+R:k:+1200:+000:Magic-Device
+R:k:+6000:+000:Spirituality
+R:k:+3000:+000:Stealth
+R:k:+600:+000:Sneakiness
+R:k:-800:+000:Weaponmastery
+R:k:+1200:+000:Archery
+
+R:N:5:Dwarf
+R:D:The children of Aule, a strong but small race.
+R:D:Miners and fighters of legend.
+R:S:2:-2:2:-2:2:-3:0
+R:K:2:9:10:-1:7:10:15:0
+R:P:11:125:5:16
+R:M:35:15:48:3:150:10:46:3:120:10
+R:E:1:1:1:2:1:1
+R:Z:find secret passages
+R:R:1:0
+R:F:RES_BLIND |
+R:C:Warrior | Priest
+R:k:+0:+200:Axe-mastery
+R:k:+200:+000:Disarming
+R:k:+900:+000:Magic-Device
+R:k:+5000:+000:Spirituality
+R:k:-1000:+000:Stealth
+R:k:+700:+000:Sneakiness
+R:k:+1500:+000:Weaponmastery
+R:k:+500:+000:Archery
+
+R:N:6:Orc
+R:D:Quite strong but not very smart.
+R:S:2:-1:0:1:1:-4:-3
+R:K:-3:-3:-3:-1:0:7:12:-5
+R:P:10:110:3:25
+R:M:11:4:66:1:150:5:62:1:120:5
+R:E:1:1:1:2:1:1
+R:Z:remove fear
+R:R:1:0
+R:F:RES_DARK |
+R:C:Warrior | Archer | Rogue | Priest
+R:k:-300:+000:Disarming
+R:k:-300:+000:Magic-Device
+R:k:-1000:+000:Spirituality
+R:k:-1000:+000:Stealth
+R:k:+000:+000:Sneakiness
+R:k:+1200:+000:Weaponmastery
+R:k:-500:+000:Archery
+
+R:N:7:Troll
+R:D:They can bear the light of the sun.
+R:D:They are extremely strong and dumb.
+R:S:4:-4:-2:-4:3:-6:-4
+R:K:-5:-8:-8:-2:-1:5:20:-10
+R:P:12:137:3:22
+R:M:20:10:96:10:250:50:84:8:225:40
+R:E:1:1:1:2:1:1
+R:Z:berserk
+R:R:1:0
+R:F:SUST_STR |
+R:R:15:0
+R:F:REGEN |
+R:C:Warrior
+R:k:-500:+000:Disarming
+R:k:-800:+000:Magic-Device
+R:k:-4000:+000:Spirituality
+R:k:-2000:+000:Stealth
+R:k:-100:+000:Sneakiness
+R:k:+2000:+000:Weaponmastery
+R:k:-1000:+000:Archery
+
+R:N:8:Dunadan
+R:D:The greatest of the Edain, humans in all respects but
+R:D:stronger, smarter and wiser.
+R:S:1:2:2:2:3:2:2
+R:K:4:5:5:2:3:13:15:10
+R:P:10:180:0:1
+R:M:50:50:82:5:190:20:78:6:180:15
+R:E:1:1:1:2:1:1
+R:R:1:0
+R:F:SUST_CON | REGEN |
+R:C:Warrior | Archer | Mage | Rogue | Priest | Loremaster
+R:k:+400:+000:Disarming
+R:k:+500:+000:Magic-Device
+R:k:+2500:+000:Spirituality
+R:k:+2000:+000:Stealth
+R:k:+800:+000:Sneakiness
+R:k:+1500:+000:Weaponmastery
+R:k:+1000:+000:Archery
+
+R:N:9:High-Elf
+R:D:Elves are the first born, the Eldar.
+R:D:High elves are the best of the Eldar, strong, fast, intellectual, though
+R:D:they sometimes lack wisdom.
+R:S:1:3:2:3:1:5:0
+R:K:4:20:20:4:3:14:10:25
+R:P:10:200:4:7
+R:M:100:30:90:10:190:20:82:10:180:15
+R:E:1:1:1:2:1:1
+R:R:1:0
+R:F:SEE_INVIS |
+R:F:RES_LITE |
+R:G:ELF
+R:C:Warrior | Archer | Mage | Priest | Loremaster
+R:k:+400:+000:Disarming
+R:k:+2000:+000:Magic-Device
+R:k:+10000:+000:Spirituality
+R:k:+4000:+000:Stealth
+R:k:+300:+000:Sneakiness
+R:k:+1000:+000:Weaponmastery
+R:k:+2500:+000:Archery
+
+R:N:10:Half-Ogre
+R:D:A crossbreed between a human and an ogre.
+R:D:They are similar to half-trolls, strong and dumb.
+R:S:3:-1:-1:-1:3:-3:-2
+R:K:-3:-5:-5:-2:-1:5:20:0
+R:P:12:130:3:74
+R:M:40:10:92:10:255:60:80:8:235:60
+R:E:1:1:1:2:1:1
+R:Z:set explosive rune
+R:R:1:0
+R:F:SUST_STR | RES_DARK |
+R:C:Warrior | Priest
+R:k:-300:+000:Disarming
+R:k:-500:+000:Magic-Device
+R:k:-2500:+000:Spirituality
+R:k:-2000:+000:Stealth
+R:k:-100:+000:Sneakiness
+R:k:+2000:+000:Weaponmastery
+R:k:+000:+000:Archery
+
+R:N:11:Beorning
+R:D:A race of men shapeshifters.
+R:D:They have the unique power of being able to polymorph to bear forms.
+R:S:4:-2:-2:-1:3:-5:1
+R:K:-6:-8:-6:-2:-1:5:25:5
+R:P:12:150:3:75
+R:M:40:10:100:10:255:65:80:10:240:64
+R:E:1:1:1:2:1:1
+R:Z:turn into a bear
+R:R:1:0
+R:F:SUST_STR |
+R:R:20:1
+R:F:STR |
+R:C:Warrior | Rogue | Loremaster
+R:k:+1000:+1000:Bearform-combat
+R:k:-600:+000:Disarming
+R:k:-800:+000:Magic-Device
+R:k:-3000:+000:Spirituality
+R:k:-2000:+000:Stealth
+R:k:-100:+000:Sneakiness
+R:k:+2500:+000:Weaponmastery
+R:k:+500:+000:Archery
+
+R:N:12:Kobold
+R:D:A weaker kind of goblin, related to orcs.
+R:S:1:-1:0:1:0:-4:0
+R:K:-2:-3:-2:-1:1:8:10:-8
+R:P:9:125:3:82
+R:M:11:3:60:1:130:5:55:1:100:5
+R:E:1:1:1:2:1:1
+R:Z:poison dart
+R:R:1:0
+R:F:RES_POIS |
+R:C:Warrior | Archer | Rogue
+R:k:-200:+000:Disarming
+R:k:-300:+000:Magic-Device
+R:k:-1000:+000:Spirituality
+R:k:-1000:+000:Stealth
+R:k:+100:+000:Sneakiness
+R:k:+1000:+000:Weaponmastery
+R:k:-800:+000:Archery
+
+R:N:13:Petty-Dwarf
+R:D:A nearly extinct subrace of dwarves.
+R:D:They prefer to live in the darkness.
+R:S:1:-1:2:0:2:-4:-5
+R:K:3:5:10:1:5:10:9:0
+R:P:11:135:5:87
+R:M:40:12:43:3:92:6:40:3:78:3
+R:E:1:1:1:2:1:1
+R:Z:detect doors and traps
+R:R:1:0
+R:F:RES_DARK | RES_DISEN |
+R:C:Warrior | Rogue
+R:k:+300:+000:Disarming
+R:k:+500:+000:Magic-Device
+R:k:+5000:+000:Spirituality
+R:k:+1000:+000:Stealth
+R:k:+500:+000:Sneakiness
+R:k:+000:+000:Weaponmastery
+R:k:+000:+000:Archery
+
+R:N:14:Dark-Elf
+R:D:Elves are the first born, the Eldar.
+R:D:Dark elves are rare on Middle-earth and even though not evil
+R:D:they are not good.
+R:S:-1:3:2:2:-2:1:-2
+R:K:5:15:20:3:8:12:-5:10
+R:P:9:150:5:69
+R:M:75:75:60:4:100:6:54:4:80:6
+R:E:1:1:1:2:1:1
+R:Z:magic missile
+R:R:1:0
+R:F:RES_DARK |
+R:R:20:0
+R:F:SEE_INVIS |
+R:C:Warrior | Archer | Mage | Rogue | Priest
+R:G:ELF
+R:k:+0:+200:Magic
+R:k:+500:+000:Disarming
+R:k:+1500:+000:Magic-Device
+R:k:+10000:+000:Spirituality
+R:k:+3000:+000:Stealth
+R:k:+800:+000:Sneakiness
+R:k:-500:+000:Weaponmastery
+R:k:+1000:+000:Archery
+
+R:N:15:Ent
+R:D:Guardian of the forests of Middle-earth, summoned by Yavanna before
+R:D:even the elves awoke. It is said 'Trolls are strong, Ents are STRONGER'.
+R:S:10:-3:2:-5:11:-3:-2
+R:K:5:5:20:-6:5:4:15:5
+R:P:14:210:5:95
+R:M:255:70:72:6:100:25:66:4:100:20
+R:E:1:1:1:2:1:1
+R:Z:grow trees
+R:G:NO_STUN | NO_FOOD |
+R:G:AC_LEVEL |
+R:R:1:-5
+R:F:SPEED | SENS_FIRE | SLOW_DIGEST |
+R:R:5:0
+R:F:SEE_INVIS |
+R:R:20:0
+R:F:ESP_ORC |
+R:F:ESP_TROLL | ESP_EVIL |
+R:C:Warrior | Priest | Loremaster
+R:O:70:32:2d3
+R:b:1:Tree walking
+R:k:+0:+200:Barehand-combat
+R:k:+0:+600:Boulder-throwing
+R:k:+500:+000:Disarming
+R:k:+500:+000:Magic-Device
+R:k:+10000:+000:Spirituality
+R:k:-6000:+000:Stealth
+R:k:+500:+000:Sneakiness
+R:k:-300:+000:Weaponmastery
+R:k:-200:+000:Archery
+
+R:N:16:RohanKnight
+R:D:Humans from the land of Rohan, riding the great Mearas.
+R:D:Fast and powerful in battle.
+R:S:4:-2:3:1:4:2:0
+R:K:10:5:5:-8:1:1:5:5
+R:P:10:220:0:84
+R:M:20:3:60:3:80:4:54:3:70:4
+R:E:1:1:1:2:1:1
+R:Z:Rohan Knight's Powers
+R:R:1:3
+R:F:SPEED |
+R:R:5:1
+R:F:SPEED |
+R:R:10:1
+R:F:SPEED |
+R:R:15:1
+R:F:SPEED |
+R:R:20:1
+R:F:SPEED |
+R:R:25:1
+R:F:SPEED |
+R:R:30:1
+R:F:SPEED |
+R:R:35:1
+R:F:SPEED |
+R:R:40:1
+R:F:SPEED |
+R:R:45:1
+R:F:SPEED |
+R:C:Warrior | Priest
+R:k:+1000:+000:Disarming
+R:k:+500:+000:Magic-Device
+R:k:+2500:+000:Spirituality
+R:k:-8000:+000:Stealth
+R:k:+100:+000:Sneakiness
+R:k:+100:+200:Weaponmastery
+R:k:+500:+000:Archery
+
+R:N:17:Thunderlord
+R:D:A thunderlord is a Great Eagle of Manwe, ridden by a Maia of Manwe.
+R:D:They carry the power of wind and thunder.
+R:S:6:2:1:1:3:8:2
+R:K:6:0:10:-16:30:10:15:5
+R:P:12:400:0:89
+R:M:14:6:180:6:255:25:150:4:230:20
+R:E:1:1:1:2:1:1
+R:Z:Thunderlord's Powers
+R:R:1:0
+R:F:FEATHER |
+R:R:4:0
+R:F:ESP_DRAGON |
+R:R:5:0
+R:F:RES_ELEC |
+R:R:10:0
+R:F:RES_COLD |
+R:R:15:0
+R:F:RES_ACID |
+R:R:17:0
+R:F:FLY |
+R:R:35:0
+R:F:RES_POIS |
+R:R:45:0
+R:F:IM_ELEC |
+R:C:Warrior | Mage | Archer | Priest
+R:k:+600:+000:Disarming
+R:k:+000:+000:Magic-Device
+R:k:+5000:+000:Spirituality
+R:k:-16000:+000:Stealth
+R:k:+3000:+000:Sneakiness
+R:k:+1500:+000:Weaponmastery
+R:k:+500:+000:Archery
+
+R:N:18:DeathMold
+R:D:A pure mass of evilness, DeathMolds cannot move, but they have much more
+R:D:power than an average race.
+R:S:10:0:10:0:10:-15:-5
+R:K:15:-5:15:25:0:10:25:25
+R:P:15:250:10:100
+R:M:5:15:10:1:50:1:10:1:50:1
+R:E:1:1:1:4:0:0
+R:Z:Death Mold's Powers
+R:G:EXPERIMENTAL
+R:R:1:0
+R:F:IMMOVABLE | HOLD_LIFE |
+R:F:RES_NETHER | RES_NEXUS |
+R:C:Mage | Priest
+R:k:+0:+200:Necromancy
+R:k:+1500:+000:Disarming
+R:k:-500:+000:Magic-Device
+R:k:+7500:+000:Spirituality
+R:k:+25000:+000:Stealth
+R:k:+000:+000:Sneakiness
+R:k:+2500:+000:Weaponmastery
+R:k:+2500:+000:Archery
+
+R:N:19:Yeek
+R:D:The weakest of all the races, bad at everything except gaining levels quickly.
+R:S:-5:-5:-5:-5:-5:-5:-5
+R:K:-5:-5:-10:0:-5:0:-10:-10
+R:P:6:25:2:29
+R:M:10:4:40:5:50:10:35:4:45:10
+R:E:1:1:1:2:1:1
+R:C:Warrior | Archer | Mage | Rogue | Priest | Loremaster
+R:k:-500:+000:Disarming
+R:k:-500:+000:Magic-Device
+R:k:-2500:+000:Spirituality
+R:k:-5000:+000:Stealth
+R:k:-500:+000:Sneakiness
+R:k:-500:+000:Weaponmastery
+R:k:-500:+000:Archery
+
+R:N:20:Wood-Elf
+R:D:Elves are the first born, the Eldar.
+R:D:Wood elves live in the great forests of Middle-earth.
+R:S:-3:2:1:5:-4:1:0
+R:K:5:6:6:5:8:12:-25:40
+R:P:7:130:4:5
+R:M:75:75:60:4:100:6:54:4:80:6
+R:E:1:1:1:2:1:1
+R:G:XTRA_MIGHT_BOW |
+R:R:1:1
+R:F:XTRA_MIGHT | RES_LITE |
+R:C:Warrior | Archer | Mage | Priest | Loremaster
+R:G:ELF
+R:k:+0:+200:Archery
+R:b:1:Tree walking
+R:k:+500:+000:Disarming
+R:k:+600:+000:Magic-Device
+R:k:+3000:+000:Spirituality
+R:k:+5000:+000:Stealth
+R:k:+800:+000:Sneakiness
+R:k:-2500:+000:Weaponmastery
+R:k:+4000:+000:Archery
+
+R:N:21:Maia
+R:D:An old race, dating from before the creation of Arda, the Maiar were
+R:D:created by Eru to help the Valar in their task.
+R:S:0:0:0:0:0:0:4
+R:K:0:0:0:0:0:10:0:0
+R:P:10:100:0:91
+R:M:14:6:72:6:180:25:66:4:150:20
+R:E:1:1:1:2:1:1
+R:G:NO_GOD
+R:R:1:0
+R:F:AGGRAVATE |
+R:R:20:0
+R:F:DRAIN_EXP |
+R:R:6:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:12:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:18:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:24:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:30:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:36:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:42:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:R:48:1
+R:F:STR | INT | WIS | DEX | CON | CHR |
+R:C:Warrior | Archer | Mage
+R:k:+000:+000:Disarming
+R:k:+000:+000:Magic-Device
+R:k:+000:+000:Spirituality
+R:k:=0:=0:Prayer
+R:k:+000:+000:Stealth
+R:k:+000:+000:Sneakiness
+R:k:+000:+000:Weaponmastery
+R:k:+000:+000:Archery
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# S: Subrace definition
+# S:N:index:name
+# S:D:'A'fter/'B'efore:subrace desc
+# S:S:str:int:wis:dex:con:chr:luck:mana
+# S:K:dis:dev:sav:stl:srh:fos:thn:thb
+# S:P:hitdie:xp%:infra
+# S:M:b_age:m_age:m_b_ht:m_m_ht:m_b_wt:m_m_wt:f_b_ht:f_m_ht:f_b_wt:f_m_wt
+# S:E:weapons:torso:arms:finger:head:legs
+# S:A:allowed races
+# S:C:'A'llow/'F'orbid:allowed/forbiden classes
+# S:G:subrace flags
+# S:R:level:pval
+# S:F:flags
+# S:k:value:modifier:skill name
+# S:b:level:ability
+
+# Make the parser actually work :)
+I:
+
+S:N:0:
+S:D:A:A normal member of the race.
+S:S:0:0:0:0:0:0:0:100
+S:K:0:0:0:0:0:0:0:0
+S:P:0:0:0
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning |
+S:A:Kobold | Petty-Dwarf | Dark-Elf | Ent | RohanKnight | Thunderlord |
+S:A:DeathMold | Yeek | Wood-Elf | Maia |
+
+# Just a place holder, the actualy setting are done with corruptions, see
+# corrupt.lua and player.lua
+S:N:1:Vampire
+S:D:B:Vampires are powerful undead, wielding great powers. They still fear the
+S:D:B:sunlight and cannot easily satiate their hunger.
+S:S:0:0:0:0:0:0:0:100
+S:K:0:0:0:0:0:0:0:0
+S:P:0:0:0
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Hobbit | Gnome | Dwarf | Orc |
+S:A:Troll | Dunadan | Half-Ogre | Beorning | Kobold | Petty-Dwarf |
+S:A:Dark-Elf | RohanKnight | Yeek |
+S:C:A:Mage
+S:O:70:0:5d3
+S:O:70:32:2d3
+
+S:N:2:Spectre
+S:D:B:Spectres only partially exist in the mortal world and so they can
+S:D:B:pass through walls. They are somewhat physically weak.
+S:S:-5:1:1:2:-3:-6:-3:105
+S:K:2:8:7:2:2:7:-5:-2
+S:P:-4:80:3
+S:M:50:15:0:0:-10:-5:0:0:-10:-5
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning |
+S:A:Kobold | Petty-Dwarf | Dark-Elf | RohanKnight | Yeek | Wood-Elf |
+S:C:F:Warrior | Archer
+S:G:UNDEAD | NO_CUT | NO_FOOD | SEMI_WRAITH | NO_SUBRACE_CHANGE
+S:R:1:0
+S:F:SEE_INVIS | HOLD_LIFE |
+S:F:SLOW_DIGEST | RES_COLD | RES_POIS | RES_NETHER |
+S:O:70:32:2d3
+S:k:+200:+000:Disarming
+S:k:+800:+000:Magic-Device
+S:k:+700:+000:Spirituality
+S:k:+2000:+000:Stealth
+S:k:+200:+000:Sneakiness
+S:k:-500:+000:Weaponmastery
+S:k:-200:+000:Archery
+
+S:N:3:Skeleton
+S:D:B:Yet an other kind of undead. Their physical 'body' is not very vulnerable
+S:D:B:to sharp things.
+S:S:0:-2:-2:0:1:-4:-3:70
+S:K:-5:-5:5:-1:-1:8:8:0
+S:P:0:45:1
+S:M:50:15:0:0:-10:-5:0:0:-10:-5
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning |
+S:A:Kobold | Petty-Dwarf | Dark-Elf | RohanKnight | Yeek | Wood-Elf |
+S:G:UNDEAD | NO_CUT | NO_FOOD | NO_SUBRACE_CHANGE
+S:R:1:0
+S:F:SEE_INVIS | HOLD_LIFE |
+S:F:RES_POIS | RES_SHARDS |
+S:R:10:0
+S:F:RES_COLD |
+S:O:70:32:2d3
+S:k:-500:+000:Disarming
+S:k:-500:+000:Magic-Device
+S:k:+500:+000:Spirituality
+S:k:-1000:+000:Stealth
+S:k:-100:+000:Sneakiness
+S:k:+800:+000:Weaponmastery
+S:k:+000:+000:Archery
+
+S:N:4:Zombie
+S:D:B:Strong and dumb is a zombie.
+S:S:2:-6:-6:1:4:-5:-4:70
+S:K:-2:-2:5:-1:-1:2:5:0
+S:P:3:45:1
+S:M:50:15:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning |
+S:A:Kobold | Petty-Dwarf | Dark-Elf | RohanKnight | Yeek | Wood-Elf |
+S:C:F:Mage
+S:G:UNDEAD | NO_FOOD | NO_SUBRACE_CHANGE
+S:R:1:0
+S:F:SEE_INVIS | HOLD_LIFE |
+S:F:SLOW_DIGEST | RES_POIS |
+S:R:5:0
+S:F:RES_COLD |
+S:O:70:32:2d3
+S:k:-200:+000:Disarming
+S:k:-200:+000:Magic-Device
+S:k:+500:+000:Spirituality
+S:k:-1000:+000:Stealth
+S:k:-100:+000:Sneakiness
+S:k:+500:+000:Weaponmastery
+S:k:+000:+000:Archery
+
+S:N:5:Barbarian
+S:D:A:Hardy members of their race, they are strong fighters but poor spellcasters.
+S:S:2:-3:-2:1:1:-3:1:50
+S:K:-2:-10:2:-2:0:1:12:5
+S:P:1:25:0
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:A:Human | Dwarf | Orc | Troll | Half-Ogre | Beorning |
+S:C:F:Mage
+S:R:10:0
+S:F:RES_FEAR |
+S:k:-200:+000:Disarming
+S:k:-1000:+000:Magic-Device
+S:k:+200:+000:Spirituality
+S:k:-2000:+000:Stealth
+S:k:+000:+000:Sneakiness
+S:k:+1200:+000:Weaponmastery
+S:k:+500:+000:Archery
+
+S:N:6:Hermit
+S:D:A:Through years of isolation hermits can manage to increase their mana
+S:D:A:reserves but at the cost of an increased physical weakness.
+S:S:-3:1:1:-3:-3:1:0:120
+S:K:5:10:5:3:4:10:-5:-5
+S:P:-3:20:1
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Dunadan | High-Elf | Petty-Dwarf | Dark-Elf | Ent | RohanKnight |
+S:A:Thunderlord | DeathMold | Yeek | Wood-Elf | Maia |
+S:C:F:Warrior | Archer
+S:k:+500:+000:Disarming
+S:k:+1000:+000:Magic-Device
+S:k:+500:+000:Spirituality
+S:k:+3000:+000:Stealth
+S:k:+400:+000:Sneakiness
+S:k:-500:+000:Weaponmastery
+S:k:-500:+000:Archery
+
+S:N:8:LostSoul
+S:D:A:In some very rare occasions souls can come back from the Halls of Mandos.
+S:S:0:0:0:0:0:0:0:100
+S:K:0:0:0:0:0:0:0:0
+S:P:0:0:0
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+S:G:ASTRAL | NO_SUBRACE_CHANGE
+S:R:1:0
+S:F:SEE_INVIS
+S:A:Human | Half-Elf | Elf | Hobbit | Gnome | Dwarf |
+S:A:Orc | Troll | Dunadan | High-Elf | Half-Ogre | Beorning |
+S:A:Kobold | Petty-Dwarf | Dark-Elf | Ent | RohanKnight | Thunderlord |
+S:A:DeathMold | Yeek | Wood-Elf | Maia |
+S:O:70:32:25d2
+S:O:70:12:25d3
+
+# Used for corruptions that can change your subrace
+S:N:9:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+S:D:A:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+S:S:0:0:0:0:0:0:0:100
+S:K:0:0:0:0:0:0:0:0
+S:P:0:0:0
+S:M:0:0:0:0:0:0:0:0:0:0
+S:E:0:0:0:0:0:0
+
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# H: Race history
+# H:index:chance:chart:next chart:social class bonus:desc
+
+# Dunadan, Human: 1 -> 2 -> 3 -> 50 -> 51 -> 52 -> 53.
+# RohanKnight: 84 -> 85 -> 50 -> 51 -> 52 -> 53.
+# Half-Ogre: 74 -> 20 -> 2 -> 3 -> 50 -> 51 -> 52 -> 53.
+# Beorning: 75 -> 76 -> 20 -> 2 -> 3 -> 50 -> 51 -> 52 -> 53.
+# Half-elf: 4 -> 1 -> 2 -> 3 -> 50 -> 51 -> 52 -> 53.
+# Elf, Wood-elf: 5 -> 6 -> 9 -> 54 -> 55 -> 56.
+# High-elf: 7 -> 8 -> 9 -> 54 -> 55 -> 56.
+# Dark-elf: 69 -> 70 -> 71 -> 72 -> 73.
+# Hobbit: 10 -> 11 -> 3 -> 50 -> 51 -> 52 -> 53.
+# Gnome: 13 -> 14 -> 3 -> 50 -> 51 -> 52 -> 53.
+# Dwarf: 16 -> 17 -> 18 -> 57 -> 58 -> 59 -> 60 -> 61.
+# Petty-Dwarf: 87 -> 88 -> 18 -> 57 -> 58 -> 59 -> 60 -> 61.
+# Thunderlord: 89 -> 90 -> 93 -> 94.
+# Maia: 91 -> 92 -> 93 -> 94.
+# Ent: 95 -> 96.
+# Troll: 22 -> 23 -> 24 -> 62 -> 63 -> 64 -> 65 -> 66.
+# Orc 25 -> 26 -> 27 -> 28 -> 80 -> 81 -> 65 -> 66.
+# Yeek: 29 -> 3 -> 50 -> 51 -> 52 -> 53.
+# (not used: 78 -> 79 -> 80 -> 81 -> 65 -> 66.)
+# Kobold: 82 -> 83 -> 80 -> 81 -> 65 -> 66.
+# Deathmold: 100 -> 101 -> 102 -> 103 -> 104.
+
+H:0:10:1:2:25:You are the illegitimate and unacknowledged child
+H:1:20:1:2:35:You are the illegitimate but acknowledged child
+H:2:95:1:2:45:You are one of several children
+H:3:100:1:2:50:You are the first child
+
+H:4:40:2:3:65:of a Serf.
+H:5:65:2:3:80:of a Yeoman.
+H:6:80:2:3:90:of a Townsman.
+H:7:90:2:3:105:of a Guildsman.
+H:8:96:2:3:120:of a Landed Knight.
+H:9:99:2:3:130:of a Noble Lord.
+H:10:100:2:3:140:of the Royal Blood Line.
+
+H:11:20:3:50:20:You are the black sheep of the family.
+H:12:80:3:50:55:You are a credit to the family.
+H:13:100:3:50:60:You are a well-liked child.
+
+H:14:25:4:1:40:Your mother was of the Avari.
+H:15:40:4:1:50:Your father was of the Avari.
+H:16:65:4:1:60:Your mother was of the Nandor.
+H:17:80:4:1:60:Your father was of the Nandor.
+H:18:96:4:1:70:Your mother was of the Sindar.
+H:19:99:4:1:70:Your father was of the Sindar.
+H:20:100:4:1:100:Your ancestry traces to Elrond.
+
+H:21:60:5:6:50:You are one of several children
+H:22:100:5:6:55:You are the only child
+
+H:23:40:6:9:40:of an Avarin
+H:24:70:6:9:50:of a Nandorin
+H:25:100:6:9:60:of a Sindarin
+
+H:26:60:7:8:50:You are one of several children
+H:27:100:7:8:55:You are the only child
+
+H:28:75:8:9:50:of a Telerin
+H:29:95:8:9:55:of a Noldorin
+H:30:100:8:9:60:of a Vanyarin
+
+H:31:40:9:54:80:Ranger.
+H:32:70:9:54:90:Archer.
+H:33:87:9:54:110:Warrior.
+H:34:95:9:54:125:Mage.
+H:35:99:9:54:140:Prince.
+H:36:100:9:54:145:King.
+
+H:37:85:10:11:45:You are one of several children of a Hobbit
+H:38:100:10:11:55:You are the only child of a Hobbit
+
+H:39:20:11:3:55:Bum.
+H:40:30:11:3:80:Tavern Owner.
+H:41:40:11:3:90:Miller.
+H:42:50:11:3:100:Home Owner.
+H:43:80:11:3:110:Burglar.
+H:44:95:11:3:115:Warrior.
+H:45:99:11:3:125:Mage.
+H:46:100:11:3:140:Clan Elder.
+
+H:47:85:13:14:45:You are one of several children of a Gnome
+H:48:100:13:14:55:You are the only child of a Gnome
+
+H:49:20:14:3:55:Beggar.
+H:50:50:14:3:70:Braggart.
+H:51:75:14:3:85:Prankster.
+H:52:95:14:3:100:Warrior.
+H:53:100:14:3:125:Mage.
+
+H:54:25:16:17:40:You are one of two children of a Dwarven
+H:55:100:16:17:50:You are the only child of a Dwarven
+
+H:56:10:17:18:60:Thief.
+H:57:35:17:18:80:Smith.
+H:58:75:17:18:90:Miner.
+H:59:90:17:18:110:Warrior.
+H:60:99:17:18:130:Priest.
+H:61:100:17:18:150:King.
+
+H:62:15:18:57:10:You are the black sheep of the family.
+H:63:85:18:57:50:You are a credit to the family.
+H:64:100:18:57:55:You are a well liked child.
+
+H:65:100:20:2:50:You are the adopted child
+
+H:66:100:22:23:50:You are the offspring of a
+
+H:67:30:23:24:20:Forest-Troll
+H:68:60:23:24:25:Cave-Troll
+H:69:75:23:24:30:Hill-Troll
+H:70:90:23:24:35:Stone-Troll
+H:71:95:23:24:40:Snow-Troll
+H:72:100:23:24:45:Water-Troll
+
+H:73:25:24:62:50:Worker.
+H:74:95:24:62:55:Warrior.
+H:75:99:24:62:65:Shaman.
+H:76:100:24:62:80:Clan Chief.
+
+H:77:100:25:26:50:You are one of several children of
+
+H:78:40:26:27:40:a Snaga
+H:79:80:26:27:50:an Orc
+H:80:100:26:27:60:an Uruk
+
+H:81:30:27:28:20:Slave
+H:82:60:27:28:50:Archer
+H:83:90:27:28:60:Warrior
+H:84:95:27:28:80:Shaman
+H:85:100:27:28:100:Chieftain
+
+H:86:30:28:80:50:from the Misty Mountains.
+H:87:60:28:80:50:from the Grey Mountains.
+H:88:90:28:80:70:from the orc-hold of Mount Gundabad.
+H:89:100:28:80:80:from the Pits of Angband.
+
+H:90:25:29:3:50:You are one of five children of a blue Yeek.
+H:91:75:29:3:75:You are one of five children of a brown Yeek.
+H:92:100:29:3:100:You are one of five children of a master Yeek.
+
+H:93:20:50:51:50:You have dark brown eyes,
+H:94:60:50:51:50:You have brown eyes,
+H:95:70:50:51:50:You have hazel eyes,
+H:96:80:50:51:50:You have green eyes,
+H:97:90:50:51:50:You have blue eyes,
+H:98:100:50:51:50:You have blue-gray eyes,
+
+H:99:70:51:52:50:straight
+H:100:90:51:52:50:wavy
+H:101:100:51:52:50:curly
+
+H:102:30:52:53:50:black hair,
+H:103:70:52:53:50:brown hair,
+H:104:80:52:53:50:auburn hair,
+H:105:90:52:53:50:red hair,
+H:106:100:52:53:50:blond hair,
+
+H:107:10:53:0:50:and a very dark complexion.
+H:108:30:53:0:50:and a dark complexion.
+H:109:80:53:0:50:and an average complexion.
+H:110:90:53:0:50:and a fair complexion.
+H:111:100:53:0:50:and a very fair complexion.
+
+H:112:85:54:55:50:You have light grey eyes,
+H:113:95:54:55:50:You have light blue eyes,
+H:114:100:54:55:50:You have light green eyes,
+
+H:115:75:55:56:50:straight
+H:116:100:55:56:50:wavy
+
+H:117:75:56:0:50:black hair, and a fair complexion.
+H:118:85:56:0:50:brown hair, and a fair complexion.
+H:119:95:56:0:50:blond hair, and a fair complexion.
+H:120:100:56:0:50:silver hair, and a fair complexion.
+
+H:121:99:57:58:50:You have dark brown eyes,
+H:122:100:57:58:60:You have glowing red eyes,
+
+H:123:90:58:59:50:straight
+H:124:100:58:59:50:wavy
+
+H:125:75:59:60:50:black hair,
+H:126:100:59:60:50:brown hair,
+
+H:127:25:60:61:50:a one foot beard,
+H:128:60:60:61:51:a two foot beard,
+H:129:90:60:61:53:a three foot beard,
+H:130:100:60:61:55:a four foot beard,
+
+H:131:100:61:0:50:and a dark complexion.
+
+H:132:60:62:63:50:You have slime green eyes,
+H:133:85:62:63:50:You have puke yellow eyes,
+H:134:99:62:63:50:You have blue-bloodshot eyes,
+H:135:100:62:63:55:You have glowing red eyes,
+
+H:136:33:63:64:50:dirty
+H:137:66:63:64:50:mangy
+H:138:100:63:64:50:oily
+
+H:139:33:64:65:50:sea-weed green hair,
+H:140:66:64:65:50:bright red hair,
+H:141:100:64:65:50:dark purple hair,
+
+H:142:25:65:66:50:and green
+H:143:50:65:66:50:and blue
+H:144:75:65:66:50:and white
+H:145:100:65:66:50:and black
+
+H:146:33:66:0:50:ulcerous skin.
+H:147:66:66:0:50:scabby skin.
+H:148:100:66:0:50:leprous skin.
+
+H:149:85:69:70:45:You are one of several children of a Dark Elven
+H:150:100:69:70:55:You are the only child of a Dark Elven
+
+H:151:50:70:71:60:Warrior.
+H:152:80:70:71:75:Warlock.
+H:153:100:70:71:95:Noble.
+
+H:154:100:71:72:50:You have black eyes,
+
+H:155:70:72:73:50:straight
+H:156:90:72:73:50:wavy
+H:157:100:72:73:50:curly
+
+H:158:100:73:0:50:black hair and a very dark complexion.
+
+H:159:25:74:20:25:Your mother was an Ogre, but it is unacknowledged.
+H:160:100:74:20:25:Your father was an Ogre, but it is unacknowledged.
+
+H:161:90:75:76:50:You are a descendant of Beorn to the
+H:162:100:75:20:100:Your father was Beorn.
+
+H:163:13:76:20:55:9th degree.
+H:164:25:76:20:60:8th degree.
+H:165:38:76:20:65:7th degree.
+H:166:50:76:20:70:6th degree.
+H:167:63:76:20:75:5th degree.
+H:168:75:76:20:80:4th degree.
+H:169:88:76:20:85:3rd degree.
+H:170:100:76:20:90:2nd degree.
+
+H:171:100:78:79:50:You are one of several children of
+
+H:172:50:79:80:50:a Brown Yeek.
+H:173:75:79:80:50:a Blue Yeek.
+H:174:95:79:80:85:a Master Yeek.
+H:175:100:79:80:120:Boldor, the King of the Yeeks.
+
+H:176:25:80:81:50:You have pale eyes,
+H:177:50:80:81:50:You have glowing eyes,
+H:178:75:80:81:50:You have tiny black eyes,
+H:179:100:80:81:50:You have shining black eyes,
+
+H:180:20:81:65:50:no hair at all,
+H:181:40:81:65:50:short black hair,
+H:182:60:81:65:50:long black hair,
+H:183:80:81:65:50:bright red hair,
+H:184:100:81:65:50:colourless albino hair,
+
+H:185:100:82:83:50:You are one of several children of
+
+H:186:40:83:80:50:a Small Kobold.
+H:187:75:83:80:55:a Kobold.
+H:188:95:83:80:65:a Large Kobold.
+H:189:100:83:80:100:Mughash, the Kobold Lord.
+
+H:190:85:84:85:45:You are one of several children
+H:191:100:84:85:50:You are the first child
+
+H:192:60:85:50:40:of a Serf.
+H:193:85:85:50:55:of a Devoted Mercenary.
+H:194:96:85:50:60:of a Landed Knight.
+H:195:99:85:50:100:of a Marshal of the Riddermark.
+H:196:100:85:50:120:of a King of the Rohirrim.
+
+H:197:100:87:88:89:You are one of several children of
+
+H:198:30:88:18:20:a Petty-Dwarf Slave.
+H:199:50:88:18:40:a Petty-Dwarf Thief.
+H:200:70:88:18:60:a Petty-Dwarf Smith.
+H:201:90:88:18:75:a Petty-Dwarf Miner.
+H:202:95:88:18:100:a Petty-Dwarf Shaman.
+H:203:100:88:18:100:Mim, Betrayer of Turin.
+
+H:204:85:89:90:50:You are one of many Manwe Maia.
+H:205:100:89:90:60:You are the one of the most famous Manwe Maia.
+
+H:206:90:90:93:100:Your eagle looks very good.
+H:207:100:90:93:120:Your eagle is splendid.
+
+H:208:10:91:92:20:You are a unnoticed minion of
+H:209:25:91:92:30:You are a minor servant of
+H:210:45:91:92:40:You are a subject of
+H:211:65:91:92:50:You have attached yourself to
+H:212:85:91:92:65:You are associated with
+H:213:95:91:92:80:You are a notable follower of
+H:214:100:91:92:100:You are a celebrated assistant to
+
+H:215:20:92:93:55:Nessa.
+H:216:40:92:93:60:Vana.
+H:217:50:92:93:65:Tulkas.
+H:218:80:92:93:75:Mandos.
+H:219:90:92:93:80:Nienna.
+H:220:95:92:93:90:Varda.
+H:221:100:92:93:95:Manwe.
+
+H:222:100:93:94:50:In the past you dwelt on earth in the form of
+
+H:223:25:94:0:50:various animals.
+H:224:55:94:0:55:a spirit of forest and river.
+H:225:70:94:0:60:a beneficent but unseen force.
+H:226:96:94:0:70:a wise and ancient counsellor.
+H:227:100:94:0:80:a Wizard of legend.
+
+H:228:30:95:96:30:You are of an unknown generation of the Ents.
+H:229:40:95:96:50:You are of the third generation of the Ents.
+H:230:60:95:96:60:You are of the second generation of the Ents.
+H:231:100:95:96:80:You are one of the first beings who awoke on Arda.
+
+H:232:50:96:0:50:You have green skin and inflexible members.
+H:233:100:96:0:50:You have brown skin and inflexible members.
+
+H:234:10:100:101:30:You were born in dirty bilge-water,
+H:235:20:100:101:35:You were born in dirty straw,
+H:236:30:100:101:40:You were born in wet mud,
+H:237:40:100:101:45:You were born in a pile of dust,
+H:238:50:100:101:50:You were born in sand,
+H:239:60:100:101:50:You were born in pebbles,
+H:240:70:100:101:55:You were born in a kobold corpse,
+H:241:80:100:101:60:You were born in dragon droppings,
+H:242:90:100:101:65:You were born in a pile of bones,
+H:243:100:100:101:70:You were born in a corpse of a mighty hero,
+
+H:244:10:101:102:30:created by rotting flesh.
+H:245:20:101:102:35:created by a kobold magician.
+H:246:30:101:102:40:created by a corrupted apprentice.
+H:247:40:101:102:45:created by a curious mage apprentice.
+H:248:50:101:102:50:created by an evil Symbiant.
+H:249:60:101:102:50:created by a practicing Necromancer.
+H:250:70:101:102:55:created by the Mutant Breeders.
+H:251:80:101:102:60:created by a curious adventurer.
+H:252:90:101:102:65:called to life by the Witch-King of Angmar.
+H:253:100:101:102:70:called to life by Sauron himself.
+
+H:254:100:102:103:50:Since then you have given life to
+
+H:255:10:103:104:30:no
+H:256:20:103:104:35:one weak-willed
+H:257:30:103:104:40:two
+H:258:40:103:104:45:three
+H:259:50:103:104:50:four
+H:260:60:103:104:50:five
+H:261:70:103:104:55:about twenty
+H:262:80:103:104:60:dozens of
+H:263:90:103:104:65:hundreds of
+H:264:100:103:104:70:uncounted multitudes of
+
+H:265:100:104:0:50:foul offspring.
+
+
+##############################################################################
+##############################################################################
+##############################################################################
+##############################################################################
+# M:N:idx:color:Meta class name
+# M:C:class name
+
+I:
+
+M:N:0:U:Classes -- The Classes of Middle-earth
+M:C:Warrior
+M:C:Archer
+M:C:Rogue
+M:C:Mage
+M:C:Priest
+M:C:Loremaster
+#M:C:Test
+#M:C:Chaos-Warrior
+
+#M:N:1:B:Spellcasters -- Magic is The One True Way
+
+#M:N:2:y:Priests -- Hail the powers of the Ainur
+#M:C:Mindcrafter
+
+#M:N:3:G:Beastfriends -- Monsters are fun
+#M:C:BeastMaster
+
+#M:N:4:v:Others -- The way to your independence
+#M:C:Harper
+#M:C:Merchant
+
+#M:N:5:o:Tests -- Test is you dare !
+#M:C:Test
+#M:C:Blade
+#M:C:Black-Knight
diff --git a/lib/edit/qrand1.map b/lib/edit/qrand1.map
new file mode 100644
index 00000000..f42cbf1c
--- /dev/null
+++ b/lib/edit/qrand1.map
@@ -0,0 +1,32 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep lava
+F:F:85:12
+
+# Dungeon layout
+D:
+D: xxxxxxx
+D: xpGF..x
+D: xGGF,.D
+D: xFFF..x
+D: xxxxxxx
+D:
diff --git a/lib/edit/qrand10.map b/lib/edit/qrand10.map
new file mode 100644
index 00000000..ae45b9cb
--- /dev/null
+++ b/lib/edit/qrand10.map
@@ -0,0 +1,36 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:2056:0:0:0:0:*
+
+# Deep lava
+F:F:85:12
+
+# Dungeon layout
+D:
+D: xxxxxxx
+D: xFFFFFx
+D: xxxxxx,t.ttxxxx
+D: xFFG,t....t,,,xxx
+D: xFpG.......t.t.DD
+D: xFFG,t....t,,,xxx
+D: xxxxxx,t.ttxxxx
+D: xFFFFFx
+D: xxxxxxx
+D:
diff --git a/lib/edit/qrand11.map b/lib/edit/qrand11.map
new file mode 100644
index 00000000..4af3c266
--- /dev/null
+++ b/lib/edit/qrand11.map
@@ -0,0 +1,36 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep lava
+F:L:85:6
+
+# Shallow lava
+F:l:86:6
+
+# Dungeon layout
+D: ,llllllll ,
+D:, llLLLLLllll,
+D:llLLLGGGLLLlll,
+D:llLLLGpGLLLLlll
+D:lllLLGGGLLLllll
+D:lllllLLLLlllll,
+D:,lllllllllll,
+D: , ,llllll,
diff --git a/lib/edit/qrand12.map b/lib/edit/qrand12.map
new file mode 100644
index 00000000..4621ef0b
--- /dev/null
+++ b/lib/edit/qrand12.map
@@ -0,0 +1,36 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep water
+F:W:187:6
+
+# Shallow water
+F:w:84:6
+
+# Dungeon wayout
+D: ,wwwwwwww ,
+D:,,wwWWWWWwwww,
+D:wwWWWGGGWWWwww,
+D:wwWWWGpGWWWWwww
+D:wwwWWGGGWWWwwww
+D:wwwwwWWWWwwwww,
+D:,wwwwwwwwwww,
+D: , ,wwwwww,
diff --git a/lib/edit/qrand14.map b/lib/edit/qrand14.map
new file mode 100644
index 00000000..9f339db0
--- /dev/null
+++ b/lib/edit/qrand14.map
@@ -0,0 +1,37 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep water
+F:W:84:6
+
+# Shallow water
+F:w:187:6
+
+# Dungeon wayout
+D:
+D: xxxx xxxx
+D: x,,x x,,x
+D: xxDxxxxxxxDxx
+D: D,,,GpG,,,D
+D: xxDxxxxxxxDxx
+D: x,,x x,,x
+D: xxxx xxxx
+D:
diff --git a/lib/edit/qrand5.map b/lib/edit/qrand5.map
new file mode 100644
index 00000000..cc5d79ee
--- /dev/null
+++ b/lib/edit/qrand5.map
@@ -0,0 +1,27 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Dungeon layout
+D:
+D: xxxx.xxxx
+D: xx.......xx
+D: xxx..,...,..xxx
+D: xx.....GGG.....xx
+D: x......GpG......x
+D: xx..,..GGG..,..xx
+D: xxx....,....xxx
+D: xx.......xx
+D: xxxx.xxxx
+D:
diff --git a/lib/edit/qrand6.map b/lib/edit/qrand6.map
new file mode 100644
index 00000000..3b55e985
--- /dev/null
+++ b/lib/edit/qrand6.map
@@ -0,0 +1,37 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep water
+F:W:84:6
+
+# Shallow water
+F:w:187:6
+
+# Dungeon wayout
+D:
+D: xxxx xxxx
+D: xxxx xxxx
+D: xxxxxxxxxxDxx
+D: D,,,GpG,,,D
+D: xxxxxxxxxxDxx
+D: xxxx xxxx
+D: xxxx xxxx
+D:
diff --git a/lib/edit/qrand7.map b/lib/edit/qrand7.map
new file mode 100644
index 00000000..a7c0607f
--- /dev/null
+++ b/lib/edit/qrand7.map
@@ -0,0 +1,35 @@
+# Floor
+F:.:1:6
+
+# Marker
+F:,:172:6
+
+# Princess
+F:p:1:6:969
+
+# Lit permanent wall
+F:x:61:6
+
+# Lit glass wall
+F:G:188:6
+
+# Door
+F:D:38:6
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep water
+F:W:84:6
+
+# Shallow water
+F:w:187:6
+
+# Dungeon wayout
+D:ttttt
+D:tGGGt ,x,
+D:tGpGt x,x
+D:tGGGt ,x,
+D:ttttt
+D: ,x,
+D:
diff --git a/lib/edit/r_info.txt b/lib/edit/r_info.txt
new file mode 100644
index 00000000..e7801d09
--- /dev/null
+++ b/lib/edit/r_info.txt
@@ -0,0 +1,18978 @@
+# File: r_info.txt
+# With new monsters for Zangband 2.2 (or 2.3)
+# With new monsters for PernAngband 3.x.x
+# With lots of monsters for PernAngband 4.x.x
+# With Spirits for ToME 2.1.x
+
+# This file is used to initialize the "lib/raw/r_info.raw" file, which is
+# used to initialize the "monster race" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/r_info.raw" file.
+
+# PernAngband notes:
+
+# Currently, "unique" monsters are just "special" monster races, with
+# the requirement that only one monster of that race can exist at a time,
+# and when it is killed, it can never again be generated.
+
+# ATTR_CLEAR monsters acquire their attr from the item/floor below them,
+# and use "white" for the recall window. See "cave.c" for info.
+
+# ATTR_MULTI monsters have a "flickering" attr, and use "violet" for the
+# recall window. See "cave.c" for info.
+
+# CHAR_CLEAR monsters use special symbols (.) as given below,
+# and use those symbols for the recall window. In theory, normally,
+# these monsters cannot be targetted, and when examined look like normal
+# floors, until the player "notices" them (perhaps check "awake").
+
+# CHAR_MULTI monsters use special symbols (!, ?, =) as given below,
+# and use those symbols for the recall window. In theory, normally,
+# these monsters cannot be targetted, and when examined look like normal
+# objects, until the player "notices" them (perhaps check "awake").
+
+# Note that there are (a few) normal monsters who are "violet" but not
+# ATTR_MULTI, and a lot of monsters which are "white" but not ATTR_CLEAR.
+
+# Note that currently both CHAR_CLEAR and CHAR_MULTI monsters are treated
+# as normal monsters that are just a little hard to see.
+
+# Note that the monster list underwent several changes for Angband 2.7.9,
+# including some monster name changes, some symbol redistributions, and
+# some color changes.
+
+# The Umber Hulk joined the Xorn/Xaren (X). The ticks (t) joined the
+# spiders (S). The townspeople (t) left the people (p). The "Jabberwock"
+# became the "Chaos beetle" (K). The major demons (&) became (U) and the
+# minor demons (I) became (u). Multiplying insects (fleas, fruit flies,
+# hummerhorns) became (I), visually "matching" the multiplying lice (l).
+# The "ant lions" (a) became "ants" (a). The mummified monsters (M)
+# joined the zombified monsters (z). The multi-headed hydras (M) left
+# the reptiles (R). The snakes (J) left the reptiles (R).
+
+# Some of the old "red" or "brown" monsters became "pink" if they lower
+# strength, while some of the old "fire" monsters became simply "red"
+# monsters. The "dragons" and "hounds" and related monsters underwent
+# a "color scheme regularization" ('w' = White/Cold, 's' = Black/Acid,
+# 'o' = Lite/Dark, 'r' = Red/Fire, 'g' = Green/Poison, 'b' = Blue/Elec,
+# 'u' = Brown/Earth/Force, 'D' = Dark/etc, 'W' = Stone/Inertia/Gravity/etc,
+# 'v' = Multihued/Chaos/Disenchantment/etc, 'y' = Gold/Sound, 'R' = Nexus,
+# 'G' = Nether, 'B' = Left-overs, and 'U' = Bronze/Confusion).
+
+# In several situations, two or more monsters with identical symbols and
+# colors were changed so that maximal information is conveyed by the symbol
+# and color.
+
+# The "people" (p), with more than 50 entries, got a new "color scheme"
+# ('w' = Paladin, 's' = Knight, 'o' = Mystic, 'r' = Mage, 'g' = High Priest,
+# 'b' = Thief, 'u' = Warrior, 'D' = Death knight, 'W' = Ranger/Archer,
+# 'v' = Sorcerer, 'y' = Ninja, 'R' = High Mage, 'G' = Priest, 'B' = High
+# Thief, 'U' = High Warrior). Note that most non-unique "people" already
+# had these colors, or colors close to these colors. A similar color scheme
+# was enforced for the "humanoid" (h) monsters as well, more or less.
+
+# TY: This is no longer entirely accurate. The monster coloring has been
+# changed 'back' to pre-2.7.* coloring in several cases. For example, I
+# prefer "black" thief characters. Also color can be (and should) be used to
+# convey information, but more importantly it is a visual presentation
+# of the creature and should be what the creature "looks" like.
+
+# Many of the "unique" monsters were changed to "match" the "base" monster
+# from which they were derived. Angband 2.8.0 may require every "unique"
+# monster to be based on a "normal" monster, and may enforce color matching.
+# This may result in the addition of some new monsters, to serve as "base"
+# monsters, possibly including Ogre captains, Greater Balrogs, Black Trolls,
+# Vampire Queens, Giant Werewolves, and others. This may be accompanied by
+# a separation of the monster list into a "normal" monster list (r_info)
+# with 512 entries, and a "unique" monster list (u_info) with 128 entries,
+# which will require reorganization of the list. Some new "player ghost"
+# unique monsters will probably be added at the same time.
+
+# Mushrooms look just like food (and use the "," symbol for both the recall
+# window and for normal display), Creeping coins look just like coins (and
+# use the "$" symbol for both the recall window and for normal display), and
+# Trappers/Lurkers can never be seen (and use the "." symbol for the recall
+# window). All other monsters use "alphabetic" symbols, and "alphabetic"
+# symbols are used only for monsters.
+
+# The "0" and "9" symbols are reserved for internal debugging use.
+
+# The "&" symbol is reserved for future use as a special "terrain feature".
+
+# The "`" symbol is reserved as an "alternate" open door picture, since
+# the "'" symbol looks like the "," symbol in some fonts (esp. IBM).
+
+# The "x" symbol is free for use as an "attr/char mapping" for annoying
+# monsters, such as magic mushrooms, drolems, etc.
+
+# Certain symbols ("X", "Y", "B", "l", "I", etc) are used by
+# very few monsters, and could be reorganized somewhat.
+
+# There are still too many "p" monsters, perhaps they should be broken up.
+
+# As always, you can enforce any "visual picture" you want with a "pref file".
+
+
+###### Understanding the entries ######
+
+# N: serial number : monster name
+# G: symbol : color
+# I: speed : hit points : vision : armor class : alertness
+# W: depth : rarity : corpse weight : experience for kill
+# E: weapons : torso : arms : finger : head : leg
+# O: treasure : combat : magic : tool
+# B: attack method : attack effect : damage
+# F: flag | flag | etc
+# S: spell frequency |
+# S: spell type | spell type | etc
+# D: Description
+
+# 'N' indicates the beginning of an entry. The serial number must
+# increase for each new item. Entry 0 is used for the player.
+
+# 'G' is for graphics - symbol and color. There are 16 colors, as
+# follows:
+
+# D - Dark Gray w - White s - Gray o - Orange
+# r - Red g - Green b - Blue u - Brown
+# d - Black W - Light Gray v - Violet y - Yellow
+# R - Light Red G - Light Green B - Light Blue U - Light Brown
+
+# 'I' is for information - speed, health, vision in tens of feet,
+# armor class, and alertness. 110 is normal speed. Alertness ranges
+# from 0 (ever vigilant for intruders) to 255 (prefers to ignore
+# intruders).
+
+# 'W' is for more information - level, rarity, corpse weight (expressed
+# in deci-pounds) [19 deci-pounds seem to get added to these number
+# in practice], and experience for killing.
+
+# 'E' is for equipment slots - weapon slots, torso slots (the "on body"
+# and "about body" equipment slots), arm slots (expressed in number
+# of pairs), finger slots, head slots, and leg slots (expressed
+# in number of pairs).
+
+# 'O' is for object drop chances - % chance to drop treasure, % chance
+# to drop combat items, % chance to drop magic type items (not
+# items of good blessing), and % chance to drop tools. The four
+# percents added together must be equal to or less than 100. If
+# the percent is less than 100, that is the chance for the monster
+# to drop junk.
+
+# 'B' is for blows - method of attack, effect of attack, and damage
+# from attack. There may be up to four of these lines; effect and
+# damage are optional.
+
+# 'S' is for spells. The first S: line must be S:1_IN_X with X the
+# number of monster turns, on average, before the monster will cast
+# one of its spells. X must not be zero.
+
+# 'F' is for flags. These are fairly self-explanatory. As many F:
+# lines may be used as are needed to specify all the flags and flags
+# are separated by the '|' symbol. The '|' symbol must also be used
+# to end all but the last line.
+
+# 'D' is for description. As many D: lines may be used as are needed
+# to describe the monster. Note that lines may need spaces at their
+# ends to prevent words from running together in the monster memory.
+
+
+# Note that monster zero is used for the "player" picture.
+
+# Version stamp (required)
+
+V:2.2.0
+
+##### The Player #####
+
+N:0:Player
+G:@:w
+E:1:1:1:2:1:1
+O:0:0:0:0
+
+##### Town monsters #####
+
+N:1:Filthy street urchin
+G:t:D
+I:110:1d4:4:1:40
+W:0:2:1200:0
+E:1:1:1:2:1:1
+O:1:1:1:1
+B:BEG:*
+B:TOUCH:EAT_GOLD
+F:MALE | EVIL | WILD_TOWN | WILD_ONLY |
+F:RAND_25 | FRIENDS |
+F:TAKE_ITEM | OPEN_DOOR | DROP_CORPSE | DROP_SKELETON |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He looks squalid and thoroughly revolting.
+
+N:2:Scrawny cat
+G:f:U
+I:110:1d2:30:1:10
+W:0:3:100:0
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d1
+F:RAND_25 | WILD_TOO | WILD_GRASS | WILD_TOWN | WILD_ONLY |
+F:ANIMAL | DROP_CORPSE | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:A skinny little furball with sharp claws and a menacing look.
+
+N:3:Sparrow
+G:B:U
+I:110:1d1:30:1:10
+W:0:3:90:0
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:RAND_25 | CAN_FLY | WILD_TOWN | WILD_ONLY |
+F:ANIMAL | DROP_SKELETON | HAS_EGG | IMPRESED |
+F:MORTAL | BASEANGBAND
+D:Utterly harmless, except when angry.
+
+N:4:Chaffinch
+G:B:r
+I:110:1d1:30:1:10
+W:0:3:80:0
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:RAND_25 | CAN_FLY | WILD_ONLY | WILD_WOOD | WILD_GRASS |
+F:ANIMAL | DROP_SKELETON | HAS_EGG | IMPRESED |
+F:MORTAL | BASEANGBAND
+D:Utterly harmless, except when angry.
+
+N:5:Wild rabbit
+G:r:U
+I:110:1d2:30:1:10
+W:0:3:100:0
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:RAND_50 | WILD_ONLY | WILD_GRASS | WILD_WOOD |
+F:ANIMAL | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:It is not a carnivore, but will defend itself if you stray too
+D:close.
+
+N:6:Woodsman
+G:t:g
+I:110:3d3:10:1:255
+W:0:1:1000:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d6
+F:MALE | WILD_ONLY | WILD_WOOD |
+F:RAND_25 | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | HAS_LITE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND
+D:He has a strong axe with a sharp edge.
+
+N:7:Scruffy little dog
+G:C:U
+I:110:1d3:20:1:5
+W:0:3:300:0
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:RAND_25 | DROP_SKELETON | DROP_CORPSE | WILD_TOWN | WILD_ONLY |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A thin flea-ridden mutt, growling as you get close.
+
+N:8:Farmer Maggot
+G:h:w
+I:110:35d10:40:10:3
+W:0:4:730:0
+E:0:1:1:2:1:1
+O:0:100:0:0
+#B:MOAN:*
+#B:MOAN:*
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE |
+F:FORCE_MAXHP | WILD_TOWN | WILD_ONLY | NO_TARGET
+F:NEVER_MOVE
+F:OPEN_DOOR | BASH_DOOR | SPECIAL_GENE
+F:NEUTRAL | NO_DEATH
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He's lost his dogs. He's had his mushrooms stolen. He's not a happy
+D:hobbit!
+
+N:9:Blubbering idiot
+G:t:W
+I:110:1d2:6:1:0
+W:0:1:1500:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:DROOL:*
+F:MALE | DROP_CORPSE | DROP_SKELETON | WILD_TOWN | WILD_ONLY |
+F:RAND_25 | DROP_1D2 | TAKE_ITEM |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He tends to blubber a lot.
+
+N:10:Boil-covered wretch
+G:t:g
+I:110:1d2:6:1:0
+W:0:1:1400:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:DROOL:*
+F:MALE | DROP_SKELETON | DROP_CORPSE | WILD_TOWN | WILD_ONLY |
+F:RAND_25 | DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:Ugly doesn't begin to describe him.
+
+N:11:Village idiot
+G:t:G
+I:120:4d4:6:1:0
+W:0:1:1400:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:DROOL:*
+F:MALE | DROP_CORPSE | DROP_SKELETON | WILD_TOWN | WILD_ONLY |
+F:RAND_25 | DROP_1D2 | TAKE_ITEM |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:Drooling and comical, but then, what do you expect?
+
+N:12:Pitiful-looking beggar
+G:t:U
+I:110:1d4:10:1:40
+W:0:1:1300:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BEG:*
+F:MALE | DROP_SKELETON | DROP_CORPSE |
+F:RAND_25 | WILD_TOWN | WILD_ONLY | DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:You just can't help feeling sorry for him.
+
+N:13:Mangy-looking leper
+G:t:u
+I:110:1d1:10:1:50
+W:0:1:1300:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BEG:*
+B:TOUCH:DISEASE
+F:MALE | DROP_CORPSE | DROP_SKELETON |
+F:RAND_25 | WILD_TOWN | WILD_ONLY | DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:You feel it isn't safe to touch him.
+
+N:14:Agent of the black market
+G:t:b
+I:110:2d8:10:8:99
+W:0:1:1200:0
+E:1:1:1:2:1:1
+O:25:50:20:5
+B:HIT:HURT:1d6
+B:TOUCH:EAT_ITEM
+B:INSULT:*
+F:MALE | DROP_CORPSE | DROP_SKELETON |
+F:DROP_60 | WILD_TOWN |
+F:WILD_SWAMP | WILD_WOOD | WILD_GRASS | WILD_MOUNTAIN | WILD_ONLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:He 'finds' new wares for the Black Market. From unwary adventurers...
+
+N:15:Singing, happy drunk
+G:t:y
+I:110:2d3:10:1:0
+W:0:1:1100:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BEG:*
+F:MALE |
+F:RAND_50 | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | WILD_TOWN | WILD_ONLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He makes you glad to be sober.
+
+N:16:Aimless-looking merchant
+G:t:o
+I:110:3d3:10:1:255
+W:0:1:1500:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d3
+F:MALE | RAND_50 |
+F:ONLY_GOLD | DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | WILD_TOWN | WILD_ONLY |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:The typical ponce around town, with purse jingling, and looking for more
+D:amulets of adornment to buy.
+
+N:17:Mean-looking mercenary
+G:t:r
+I:110:5d8:10:20:250
+W:0:1:1700:0
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d10
+F:MALE | DROP_SKELETON | DROP_CORPSE |
+F:RAND_50 | DROP_90 | WILD_GRASS | WILD_TOWN | WILD_WOOD | WILD_ONLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:No job is too low for him.
+
+N:18:Battle-scarred veteran
+G:t:B
+I:110:7d8:10:30:250
+W:0:1:1650:0
+E:1:1:1:2:1:1
+O:25:50:25:0
+B:HIT:HURT:2d6
+F:MALE | DROP_SKELETON | DROP_CORPSE |
+F:RAND_50 | DROP_90 | WILD_TOWN | WILD_ONLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He doesn't take to strangers kindly.
+
+N:19:Martti Ihrasaari
+G:P:w
+I:109:35d20:50:15:4
+W:0:4:2794:0
+E:0:1:1:2:1:1
+O:50:50:0:0
+B:SHOW:*
+B:SHOW:*
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | DROP_CORPSE | WILD_TOWN | WILD_ONLY |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:JOKEANGBAND | HAS_LITE
+D:He weighs 127 kg. He is the president of some remote country.
+
+##### Normal monsters #####
+
+N:20:Grey mold
+G:m:s
+I:110:1d2:2:1:0
+W:1:1:20:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:HURT:1d4
+B:SPORE:HURT:1d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+D:A small strange growth.
+
+N:21:Large white snake
+G:J:w
+I:100:3d6:4:30:99
+W:1:1:600:2
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+B:CRUSH:HURT:1d1
+F:RAND_50 | WILD_TOO |
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | HAS_EGG | MORTAL | BASEANGBAND
+D:It is about eight feet long.
+
+N:22:Grey mushroom patch
+G:,:s
+I:110:1d2:2:1:0
+W:1:1:10:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:CONFUSE:1d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:Yum! It looks quite tasty.
+
+N:23:Newt
+G:R:y
+I:110:2d6:8:12:30
+W:1:1:10:2
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:BITE:HURT:1d3
+F:WEIRD_MIND | CAN_SWIM | WILD_TOO | DROP_CORPSE |
+F:WILD_GRASS | WILD_WASTE | WILD_SHORE | WILD_SWAMP | WILD_MOUNTAIN |
+F:ANIMAL | HAS_EGG | MORTAL | BASEANGBAND
+D:A small, harmless lizard.
+
+N:24:Giant white centipede
+G:c:w
+I:110:3d5:7:10:40
+W:1:1:500:2
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+B:STING:HURT:1d2
+F:RAND_50 | DROP_SKELETON |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:25:White icky thing
+G:i:w
+I:110:2d5:12:7:10
+W:1:1:500:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:HURT:1d2
+F:RAND_50 | RAND_25 | CAN_SWIM |
+F:EMPTY_MIND | DROP_CORPSE | BASEANGBAND
+D:It is a smallish, slimy, icky creature.
+
+N:26:Clear icky thing
+G:i:B
+I:110:2d5:12:6:10
+W:1:1:500:2
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:HURT:1d2
+F:ATTR_CLEAR | CAN_SWIM |
+F:RAND_50 | RAND_25 |
+F:INVISIBLE | EMPTY_MIND | DROP_CORPSE | BASEANGBAND
+D:It is a smallish, slimy, icky, blobby creature.
+
+N:27:Giant white mouse
+G:r:w
+I:110:1d3:8:4:20
+W:1:1:600:1
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:RAND_50 | WILD_TOO | WILD_GRASS |
+F:CAN_SWIM |
+F:ANIMAL | DROP_CORPSE |
+F:MORTAL | BASEANGBAND |
+S:MULTIPLY
+D:It is about three feet long with large teeth.
+
+N:28:Large brown snake
+G:J:u
+I:100:4d6:4:35:99
+W:1:1:800:3
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:CRUSH:HURT:1d4
+F:RAND_25 | CAN_SWIM |
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | HAS_EGG | MORTAL | BASEANGBAND
+D:It is about eight feet long.
+
+N:29:Small kobold
+G:k:y
+I:110:2d7:20:16:10
+W:1:1:800:5
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d5
+F:DROP_60 | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It is a small, dog-headed humanoid figure.
+
+N:30:Kobold
+G:k:G
+I:110:3d7:20:16:10
+W:2:1:900:5
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d8
+F:DROP_60 | WILD_TOO |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It is a squat and ugly dog-headed humanoid.
+
+N:31:White worm mass
+G:w:w
+I:100:4d4:7:1:10
+W:1:1:30:2
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:POISON:1d2
+F:RAND_50 | RAND_25 | CAN_SWIM |
+F:STUPID | WEIRD_MIND |
+F:ANIMAL | IM_POIS | HURT_LITE | NO_FEAR
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a large slimy mass of worms.
+
+N:32:Floating eye
+G:e:o
+I:110:3d6:2:6:10
+W:1:1:500:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:PARALYZE
+F:NEVER_MOVE | CAN_FLY | DROP_CORPSE |
+F:HURT_LITE | NO_FEAR | BASEANGBAND
+D:A disembodied eye, floating a few feet above the ground.
+
+N:33:Rock lizard
+G:R:U
+I:110:3d4:20:4:15
+W:1:1:100:2
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:ANIMAL | CAN_SWIM | WILD_TOO | WILD_MOUNTAIN |
+F:DROP_CORPSE | HAS_EGG |
+F:MORTAL | BASEANGBAND
+D:It is a small lizard with a hardened hide.
+
+N:34:Grid bug
+G:I:v
+I:110:2d4:10:2:10
+W:1:1:10:2
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:ELEC:1d4
+F:RAND_25 | FRIENDS | CAN_FLY |
+F:STUPID | WEIRD_MIND |
+F:ANIMAL | NO_FEAR | IM_ELEC | ZANGBAND
+D:A strange electric bug.
+
+N:35:Jackal
+G:C:U
+I:110:1d4:10:3:10
+W:1:1:400:1
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:FRIENDS |
+F:WILD_TOO | WILD_WOOD | WILD_GRASS | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is a yapping snarling dog, dangerous when in a pack.
+
+N:36:Soldier ant
+G:a:u
+I:110:2d5:10:3:10
+W:1:1:300:3
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:WEIRD_MIND | BASH_DOOR | DROP_SKELETON |
+F:ANIMAL | WILD_TOO | WILD_GRASS |
+F:MORTAL | BASEANGBAND
+D:A large ant with powerful mandibles.
+
+N:37:Fruit bat
+G:b:o
+I:120:1d6:20:3:10
+W:1:1:20:1
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:ANIMAL | CAN_FLY | WILD_TOO | WILD_WOOD | WILD_SWAMP | DROP_CORPSE
+F:MORTAL | BASEANGBAND | AI_ANNOY
+D:A fast-moving pest.
+
+N:38:Insect swarm
+G:I:u
+I:120:1d5:20:4:10
+W:1:1:100:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+B:STING:HURT:1d1
+F:ANIMAL | WEIRD_MIND | CAN_FLY | RAND_25 | WILD_TOO | WILD_GRASS |
+F:WILD_WOOD | WILD_SWAMP |
+F:MORTAL | SUSCEP_FIRE | BASEANGBAND | NO_CUT
+D:A lone insect may be harmless, but there's a whole swarm of
+D:them here!
+
+N:39:The Greater hell-beast
+G:U:s
+I:120:15d100:10:1:99
+W:1:16:2000:2500
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:GAZE:*
+B:GAZE:*
+B:CRUSH:*
+F:EVIL | IM_ACID | IM_ELEC | IM_FIRE | IM_POIS | IM_COLD | UNIQUE |
+F:RES_NETH | RES_WATE | RES_PLAS | RES_DISE | RES_NEXU | NO_SLEEP | NO_CONF
+F:KILL_WALL | FORCE_MAXHP | CAN_SWIM | DROP_CORPSE | JOKEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:TPORT | BLINK | TELE_AWAY
+D:This unholy abomination will crush you. Flee while you can!
+
+N:40:Shrieker mushroom patch
+G:,:R
+I:110:1d1:4:1:0
+W:2:1:40:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | NEVER_MOVE | NEVER_BLOW |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | WILD_TOO | WILD_SWAMP | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:SHRIEK
+D:Yum! It looks quite tasty. It doesn't sound so nice, though...
+
+N:41:Blubbering icky thing
+G:i:W
+I:110:5d6:14:4:10
+W:2:1:400:8
+E:0:0:0:0:0:0
+O:20:20:20:20
+B:CRAWL:POISON:1d4
+B:CRAWL:EAT_FOOD
+B:DROOL:*
+B:DROOL:*
+F:RAND_50 | DROP_90 | CAN_SWIM | DROP_CORPSE |
+F:EMPTY_MIND | TAKE_ITEM | KILL_BODY |
+F:IM_POIS | BASEANGBAND
+D:It is a smallish, slimy, icky, hungry creature.
+
+N:42:Metallic green centipede
+G:c:g
+I:120:4d4:5:4:10
+W:3:1:500:5
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CRAWL:HURT:1d2
+F:RAND_50 | WILD_TOO | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:43:Novice warrior
+G:p:u
+I:110:9d4:20:16:5
+W:2:1:1600:6
+E:1:1:1:2:1:1
+O:25:50:0:20
+B:HIT:HURT:1d7
+B:HIT:HURT:1d6
+F:MALE |
+F:DROP_60 | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He looks inexperienced but tough.
+
+N:44:Novice rogue
+G:p:b
+I:110:8d4:20:12:5
+W:2:1:1400:6
+E:1:1:1:2:1:1
+O:50:25:0:20
+B:HIT:HURT:1d6
+B:TOUCH:EAT_GOLD
+F:MALE |
+F:DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | WILD_TOO |
+F:EVIL | MORTAL | BASEANGBAND
+D:A rather shifty individual.
+
+N:45:Novice priest
+G:p:g
+I:110:7d4:20:10:10
+W:2:1:1500:6
+E:1:1:1:2:1:1
+O:25:0:50:20
+B:HIT:HURT:1d5
+F:MALE |
+F:FORCE_SLEEP | GOOD | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_12 |
+S:HEAL | SCARE | CAUSE_1
+D:He is tripping over his priestly robes.
+
+N:46:Novice mage
+G:p:r
+I:110:6d4:20:6:5
+W:2:1:1400:6
+E:1:1:1:2:1:1
+O:25:0:70:0
+B:HIT:HURT:1d4
+F:MALE |
+F:FORCE_SLEEP | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_12 |
+S:BLINK | BLIND | CONF | MISSILE
+D:He is leaving behind a trail of dropped spell components.
+
+N:47:Yellow mushroom patch
+G:,:y
+I:110:1d1:2:1:0
+W:2:1:30:2
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:TERRIFY:1d6
+F:NEVER_MOVE | WILD_TOO | WILD_SWAMP |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+D:Yum! It looks quite tasty.
+
+N:48:White jelly
+G:j:w
+I:120:8d8:2:1:99
+W:2:1:2000:10
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:POISON:1d2
+F:NEVER_MOVE | CAN_SWIM |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It's a large pile of white flesh.
+
+N:49:Giant black ant
+G:a:D
+I:110:3d6:8:20:80
+W:2:1:500:8
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+F:RAND_25 |
+F:WEIRD_MIND | DROP_SKELETON |
+F:BASH_DOOR | WILD_TOO | WILD_WOOD | WILD_GRASS |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about three feet long.
+
+N:50:Salamander
+G:R:o
+I:110:4d6:8:20:80
+W:2:1:100:10
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:1d3
+F:RAND_25 | CAN_SWIM | WILD_TOO | WILD_VOLCANO | DROP_CORPSE |
+F:ANIMAL | IM_FIRE | SUSCEP_COLD |
+F:MORTAL | BASEANGBAND
+D:A small black and orange lizard.
+
+N:51:White harpy
+G:H:w
+I:110:2d5:16:17:10
+W:2:1:500:5
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d1
+B:CLAW:HURT:1d1
+B:BITE:HURT:1d2
+F:FEMALE | CAN_FLY | WILD_TOO | WILD_MOUNTAIN |
+F:RAND_50 | DROP_CORPSE | ANIMAL | EVIL | MORTAL | BASEANGBAND
+D:A flying, screeching bird with a woman's face.
+
+N:52:Blue yeek
+G:y:b
+I:110:2d6:18:14:10
+W:2:1:700:4
+E:1:1:1:2:1:1
+O:25:0:0:55
+B:HIT:HURT:1d5
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:ANIMAL | IM_ACID |
+F:MORTAL | BASEANGBAND
+D:A small humanoid figure.
+
+N:53:Grip, Farmer Maggot's dog
+G:C:w
+I:120:7d5:30:30:0
+W:2:2:600:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:UNIQUE | SPECIAL_GENE
+F:FORCE_MAXHP | RAND_25 | DROP_CORPSE
+F:BASH_DOOR | ANIMAL
+F:MORTAL | BASEANGBAND
+D:A rather vicious dog belonging to Farmer Maggot. It thinks you are
+D:stealing mushrooms.
+
+N:54:Wolf, Farmer Maggot's dog
+G:C:w
+I:120:7d5:30:30:0
+W:2:2:650:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:UNIQUE | SPECIAL_GENE
+F:FORCE_MAXHP | RAND_25 | DROP_CORPSE
+F:BASH_DOOR
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A rather vicious dog belonging to Farmer Maggot. It thinks you are
+D:stealing mushrooms.
+
+N:55:Fang, Farmer Maggot's dog
+G:C:w
+I:120:7d5:30:30:0
+W:2:2:700:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:UNIQUE | SPECIAL_GENE
+F:FORCE_MAXHP | RAND_25 | DROP_CORPSE
+F:BASH_DOOR
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A rather vicious dog belonging to Farmer Maggot. It thinks you are
+D:stealing mushrooms.
+
+N:56:Giant green frog
+G:R:g
+I:110:2d8:12:8:30
+W:2:1:200:6
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+F:RAND_25 | WILD_ONLY | WILD_SHORE | WILD_SWAMP | DROP_CORPSE |
+F:BASH_DOOR |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is as big as a wolf.
+
+N:57:Freesia
+G:f:u
+I:120:6d5:30:30:0
+W:2:1:450:32
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d4
+F:UNIQUE |
+F:FORCE_MAXHP | DROP_SKELETON
+F:BASH_DOOR |
+F:ANIMAL
+F:MORTAL | ZANGBAND
+D:A striped housecat who enjoys hunting.
+
+N:58:Green worm mass
+G:w:g
+I:100:6d4:7:3:10
+W:2:1:40:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:ACID:1d3
+F:RAND_50 | RAND_25 |
+F:STUPID | WEIRD_MIND |
+F:ANIMAL | IM_ACID | CAN_SWIM |
+F:HURT_LITE | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a large slimy mass of worms.
+
+N:59:Large yellow snake
+G:J:y
+I:100:4d8:5:38:75
+W:2:1:1000:9
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+B:CRUSH:HURT:1d6
+F:RAND_25 | CAN_SWIM | WILD_TOO | DROP_SKELETON | DROP_CORPSE
+F:BASH_DOOR | HAS_EGG | ANIMAL | MORTAL | BASEANGBAND
+D:It is about ten feet long.
+
+N:60:Cave spider
+G:S:D
+I:120:2d6:8:16:80
+W:2:1:400:7
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+F:FRIENDS |
+F:WEIRD_MIND | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | SPIDER | HURT_LITE |
+F:MORTAL | BASEANGBAND
+D:It is a black spider that moves in fits and starts.
+
+N:61:Crow
+G:B:s
+I:120:3d5:40:12:0
+W:2:2:300:8
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:BITE:HURT:1d3
+F:ANIMAL | WILD_TOO | WILD_WOOD | CAN_FLY | DROP_CORPSE
+F:MORTAL | HAS_EGG | BASEANGBAND
+D:It is a hooded crow, gray except for the black wings and head.
+
+N:62:Wild cat
+G:f:U
+I:120:3d5:40:12:0
+W:2:2:200:8
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+F:BASH_DOOR | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A larger than normal feline, hissing loudly. Its velvet claws conceal a
+D:fistful of needles.
+
+N:63:Smeagol
+G:h:B
+I:130:20d20:20:12:5
+W:3:2:670:16
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:TOUCH:EAT_GOLD
+F:UNIQUE | MALE | CAN_SWIM | DROP_SKELETON | DROP_CORPSE | DROP_CHOSEN |
+F:FORCE_MAXHP | CAN_SPEAK | SMART |
+F:RAND_50 | RAND_25 | WILD_TOO |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD | DROP_GREAT |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | INVISIBLE
+F:EVIL | BASEANGBAND
+D:Usually known as Gollum. He's been sneaking, and he wants his 'precious.'
+
+N:64:Green ooze
+G:j:g
+I:120:3d4:8:16:80
+W:3:2:300:4
+E:0:0:0:0:0:0
+O:50:0:25:20
+B:CRAWL:ACID:1d3
+F:RAND_50 | RAND_25 | DROP_90 |
+F:STUPID | EMPTY_MIND |
+F:IM_ACID | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It's green and it's oozing.
+
+N:65:Poltergeist
+G:G:s
+I:130:2d5:8:15:10
+W:3:1:0:8
+E:0:0:0:0:0:0
+O:50:5:30:10
+B:TOUCH:TERRIFY
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:DROP_60 | DROP_90 |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | TAKE_ITEM |
+F:EVIL | UNDEAD |
+F:IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLINK
+D:It is a ghastly, ghostly form.
+
+N:66:Yellow jelly
+G:j:y
+I:120:10d8:2:1:99
+W:3:1:2000:12
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:POISON:1d3
+F:NEVER_MOVE | CAN_SWIM |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:DRAIN_MANA
+D:It's a large pile of yellow flesh.
+
+N:67:Metallic blue centipede
+G:c:b
+I:120:4d5:6:6:15
+W:4:1:770:6
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CRAWL:HURT:1d3
+F:RAND_50 | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:68:Raven
+G:B:D
+I:120:4d5:40:12:0
+W:4:2:500:8
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+B:BITE:HURT:1d4
+F:ANIMAL | WILD_TOO | WILD_WOOD | CAN_FLY | DROP_CORPSE
+F:MORTAL | HAS_EGG | BASEANGBAND
+D:Larger than a crow, and pitch black.
+
+N:69:Giant white louse
+G:I:w
+I:120:1d1:6:5:10
+W:3:1:100:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d1
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:WEIRD_MIND | ANIMAL | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It is six inches long.
+
+N:70:Giant yellow centipede
+G:c:y
+I:110:3d6:8:12:30
+W:2:1:500:3
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:STING:HURT:1d3
+F:RAND_50 | DROP_SKELETON |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:71:Black naga
+G:n:D
+I:110:6d8:16:40:120
+W:3:1:1700:20
+E:0:0:0:0:1:0
+O:0:75:20:5
+B:CRUSH:HURT:1d8
+F:FEMALE |
+F:RAND_25 | DROP_60 | DROP_CORPSE |
+F:BASH_DOOR | CAN_SWIM |
+F:EVIL | MORTAL | BASEANGBAND
+D:A large black serpent's body with a female torso.
+
+N:72:Spotted mushroom patch
+G:,:o
+I:110:1d1:2:1:0
+W:3:1:30:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:POISON:2d4
+F:NEVER_MOVE | WILD_TOO | WILD_SWAMP |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:Yum! It looks quite tasty.
+
+N:73:Silver jelly
+G:j:W
+I:120:10d8:2:1:99
+W:3:2:2000:12
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:EAT_LITE:1d3
+B:TOUCH:EAT_LITE:1d3
+F:NEVER_MOVE | CAN_SWIM |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:DRAIN_MANA
+D:It is a large pile of silver flesh that sucks all light from its
+D:surroundings.
+
+N:74:Scruffy-looking hobbit
+G:h:s
+I:110:3d5:16:8:10
+W:3:1:1000:4
+E:1:1:1:2:1:1
+O:0:50:0:40
+B:HIT:HURT:1d4
+B:TOUCH:EAT_GOLD
+F:MALE |
+F:DROP_60 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL
+F:MORTAL | BASEANGBAND
+D:A short little guy, in bedraggled clothes. He appears to be looking
+D:for a good tavern.
+
+N:75:Giant white ant
+G:a:w
+I:110:3d6:8:16:80
+W:3:1:800:7
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | WILD_GRASS |
+F:ANIMAL | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:It is about two feet long and has sharp pincers.
+
+N:76:Yellow mold
+G:m:y
+I:110:8d8:2:10:99
+W:3:1:30:9
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:HURT:1d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange growth on the dungeon floor.
+
+N:77:Metallic red centipede
+G:c:r
+I:120:4d8:8:9:20
+W:5:1:800:10
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CRAWL:HURT:2d3
+F:RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_SKELETON
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:78:Yellow worm mass
+G:w:y
+I:100:4d8:7:4:10
+W:3:2:200:4
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:LOSE_DEX:1d3
+F:RAND_50 | RAND_25 | CAN_SWIM |
+F:STUPID | WEIRD_MIND |
+F:ANIMAL | HURT_LITE | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a large slimy mass of worms.
+
+N:79:Clear worm mass
+G:w:B
+I:100:4d4:7:1:10
+W:3:2:200:4
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:POISON:1d2
+F:ATTR_CLEAR | CAN_SWIM |
+F:RAND_50 | RAND_25 |
+F:STUPID | WEIRD_MIND | INVISIBLE |
+F:ANIMAL |
+F:IM_POIS | HURT_LITE | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a disgusting mass of poisonous worms.
+
+N:80:Radiation eye
+G:e:R
+I:110:3d6:2:6:10
+W:3:1:500:6
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:LOSE_STR:1d6
+F:NEVER_MOVE | CAN_FLY | DROP_CORPSE |
+F:HURT_LITE | NO_FEAR | BASEANGBAND | HAS_LITE
+S:1_IN_11 |
+S:DRAIN_MANA
+D:A disembodied eye, crackling with energy.
+
+N:81:Yellow light
+G:*:y
+I:120:2d6:8:12:30
+W:4:1:0:4
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:BLIND
+F:EMPTY_MIND | CAN_FLY | NONLIVING | SUSCEP_ELEC |
+F:BASEANGBAND | HAS_LITE | RAND_50 | RAND_25 | NO_CUT
+D:A fast-moving bright light, apparently totally random in its movement.
+
+N:82:Cave lizard
+G:R:u
+I:110:3d6:8:16:80
+W:4:1:100:8
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d5
+F:ANIMAL | CAN_SWIM | DROP_CORPSE | HAS_EGG |
+F:MORTAL | BASEANGBAND
+D:It is an armoured lizard with a powerful bite.
+
+N:83:Novice ranger
+G:p:W
+I:110:6d8:20:8:5
+W:4:1:1400:18
+E:1:1:1:2:1:1
+O:25:45:25:0
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+F:MALE |
+F:FORCE_SLEEP | DROP_SKELETON | DROP_CORPSE
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_WOOD |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:ARROW_2 | MISSILE
+D:An agile hunter, ready and relaxed.
+
+N:84:Blue jelly
+G:j:b
+I:110:12d8:2:1:99
+W:4:1:2000:14
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:COLD:1d6
+F:NEVER_MOVE | COLD_BLOOD |
+F:STUPID | EMPTY_MIND | CAN_SWIM |
+F:IM_COLD | HURT_LITE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | SUSCEP_FIRE | BASEANGBAND | NO_CUT
+D:It's a large pile of pulsing blue flesh.
+
+N:85:Creeping copper coins
+G:$:u
+I:100:7d8:3:24:10
+W:4:3:0:9
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d4
+B:TOUCH:POISON:2d4
+F:ONLY_GOLD | DROP_1D2 | SUSCEP_ACID |
+F:COLD_BLOOD | BASH_DOOR |
+F:IM_ELEC | IM_POIS | CHAR_MULTI |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It appears to be a pile of copper coins, until it starts crawling towards you
+D:on tiny legs.
+
+N:86:Giant white rat
+G:r:W
+I:110:2d2:8:7:30
+W:4:1:200:1
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d3
+F:RAND_25 |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It is a very vicious rodent.
+
+N:87:Snotling
+G:o:U
+I:110:5d5:20:32:30
+W:4:1:900:15
+E:1:1:1:2:1:1
+O:25:50:0:20
+B:HIT:HURT:1d6
+F:MALE |
+F:FRIENDS | DROP_60 | RAND_50 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_WOOD |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:Immature Orclings, running wild and screaming all the time.
+
+N:88:Swordfish
+G:~:W
+I:120:4d7:14:10:20
+W:4:2:800:15
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+F:ANIMAL | AQUATIC | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A fish with a swordlike "beak".
+
+N:89:Blue worm mass
+G:w:b
+I:100:5d8:7:12:10
+W:4:1:40:5
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:COLD:1d4
+F:RAND_50 | RAND_25 |
+F:STUPID | WEIRD_MIND | COLD_BLOOD |
+F:ANIMAL | IM_COLD | CAN_SWIM |
+F:HURT_LITE | NO_FEAR |
+F:MORTAL | SUSCEP_FIRE | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a large slimy mass of worms.
+
+N:90:Large grey snake
+G:J:s
+I:100:6d8:6:41:50
+W:4:1:1300:14
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d5
+B:CRUSH:HURT:1d8
+F:RAND_25 | CAN_SWIM | DROP_SKELETON | DROP_CORPSE | WILD_TOO |
+F:BASH_DOOR | HAS_EGG | ANIMAL | MORTAL | BASEANGBAND
+D:It is about ten feet long.
+
+N:91:Skeleton kobold
+G:s:W
+I:110:5d8:20:26:40
+W:5:1:800:12
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d6
+F:COLD_BLOOD | EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a small animated kobold skeleton.
+
+N:92:Ewok
+G:h:G
+I:120:3d5:10:10:10
+W:9:2:700:20
+E:1:1:1:2:1:1
+O:50:0:50:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:DROP_60 | OPEN_DOOR | BASH_DOOR | FRIENDS | DROP_CORPSE |
+F:WILD_TOO | WILD_WOOD |
+F:MORTAL | JOKEANGBAND
+S:1_IN_8
+S:ARROW_1
+D:A cute little bear, full of merchandising potential.
+
+N:93:Novice mage
+G:p:r
+I:110:6d4:20:6:10
+W:6:2:1400:6
+E:1:1:1:2:1:1
+O:25:0:70:0
+B:HIT:HURT:1d4
+F:MALE |
+F:FORCE_SLEEP |
+F:FRIENDS | DROP_60 | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_12 |
+S:BLINK | BLIND | CONF | MISSILE
+D:He is leaving behind a trail of dropped spell components.
+
+N:94:Green naga
+G:n:g
+I:110:9d8:18:40:120
+W:5:1:1700:30
+E:0:0:0:0:1:0
+O:0:25:0:65
+B:CRUSH:HURT:1d8
+B:SPIT:ACID:2d6
+F:FEMALE |
+F:RAND_25 | TAKE_ITEM | DROP_60 | DROP_CORPSE |
+F:BASH_DOOR | CAN_SWIM | WILD_TOO | WILD_SHORE |
+F:EVIL | IM_ACID | MORTAL | BASEANGBAND
+D:A large green serpent with a female torso. Her green skin glistens with
+D:acid.
+
+N:95:Giant leech
+G:w:u
+I:120:6d8:10:20:50
+W:5:1:30:20
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:3d1
+B:BITE:HURT:3d1
+F:ANIMAL | AQUATIC | WEIRD_MIND | RAND_25 | BASEANGBAND
+D:Yech! The disgusting thing only wants your blood!
+
+N:96:Barracuda
+G:~:G
+I:120:6d8:20:45:20
+W:5:2:150:30
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d10
+B:BITE:HURT:1d10
+F:AQUATIC | ANIMAL | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A predatory fish with razor-sharp teeth.
+
+N:97:Novice paladin
+G:p:w
+I:110:6d8:20:16:5
+W:4:1:1700:18
+E:1:1:1:2:1:1
+O:0:70:25:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+F:MALE | GOOD | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP |
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:SCARE | CAUSE_1
+D:An adventurer both devoutly religious and skilful in combat.
+D:He seems to consider you an agent of the devil.
+
+N:98:Zog
+G:h:b
+I:110:13d9:20:20:20
+W:5:1:600:25
+E:0:1:0:2:1:0
+O:50:0:25:20
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+B:DROOL:*
+F:EVIL | OPEN_DOOR | BASH_DOOR | DROP_90 | DROP_SKELETON |
+F:MORTAL | ZANGBAND
+D:Drooling, insectoid aliens with disgusting habits.
+
+N:99:Blue ooze
+G:j:b
+I:110:3d4:8:16:80
+W:5:1:300:7
+E:0:0:0:0:0:0
+O:45:20:20:0
+B:CRAWL:COLD:1d4
+F:RAND_50 | RAND_25 | DROP_60 |
+F:STUPID | EMPTY_MIND | CAN_SWIM |
+F:IM_COLD | SUSCEP_FIRE
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It's blue and it's oozing.
+
+N:100:Green glutton ghost
+G:G:g
+I:130:3d4:10:20:10
+W:5:1:0:15
+E:0:0:0:0:0:0
+O:30:30:30:5
+B:TOUCH:EAT_FOOD:1d1
+F:RAND_50 | RAND_25 |
+F:DROP_60 | DROP_90 | CAN_FLY |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It is a very ugly green ghost with a voracious appetite.
+
+N:101:Green jelly
+G:j:g
+I:120:22d8:2:1:99
+W:5:1:2500:18
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:ACID:1d2
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND | CAN_SWIM |
+F:IM_ACID | HURT_LITE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a large pile of pulsing green flesh.
+
+N:102:Large kobold
+G:k:b
+I:110:13d9:20:32:30
+W:5:1:1000:25
+E:1:1:1:2:1:1
+O:0:90:0:5
+B:HIT:HURT:1d10
+F:DROP_90 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It a man-sized figure with the all too recognisable face of a kobold.
+
+N:103:Grey icky thing
+G:i:s
+I:110:4d8:14:12:15
+W:5:1:500:10
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:HURT:1d5
+F:RAND_50 | CAN_SWIM | DROP_CORPSE |
+F:EMPTY_MIND | BASEANGBAND
+D:It is a smallish, slimy, icky, nasty creature.
+
+N:104:Disenchanter eye
+G:e:v
+I:100:7d8:2:10:10
+W:5:2:500:20
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:UN_BONUS
+F:ATTR_MULTI | ATTR_ANY | RES_DISE | DROP_CORPSE |
+F:NEVER_MOVE | CAN_FLY |
+F:HURT_LITE | NO_FEAR | BASEANGBAND
+S:1_IN_9 |
+S:DRAIN_MANA
+D:A disembodied eye, crackling with magic.
+
+N:105:Red worm mass
+G:w:r
+I:100:5d8:7:12:10
+W:5:1:40:6
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:FIRE:1d6
+F:RAND_50 | RAND_25 | SUSCEP_COLD |
+F:STUPID | EMPTY_MIND | BASH_DOOR |
+F:ANIMAL | IM_FIRE | CAN_SWIM |
+F:HURT_LITE | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a large slimy mass of worms.
+
+N:106:Copperhead snake
+G:J:o
+I:110:4d6:6:20:1
+W:5:1:200:15
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:POISON:2d4
+F:RAND_50 | CAN_SWIM | WILD_TOO | DROP_SKELETON | DROP_CORPSE | BASH_DOOR |
+F:ANIMAL | IM_POIS | HAS_EGG | MORTAL | BASEANGBAND
+D:It has a copper head and sharp venomous fangs.
+
+N:107:Death sword
+G:|:W
+I:130:6d6:20:40:0
+W:6:5:0:30
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:NEVER_MOVE | NONLIVING | NO_FEAR | SUSCEP_ACID |
+F:STUPID | EMPTY_MIND | COLD_BLOOD | CHAR_MULTI | NO_CONF | NO_SLEEP |
+F:DROP_90 | EVIL | IM_COLD | IM_FIRE | FORCE_MAXHP | IM_ELEC | IM_POIS |
+F:BASEANGBAND | HAS_LITE | NO_CUT
+D:A bloodthirsty blade lurking for prey. Beware!
+
+N:108:Purple mushroom patch
+G:,:v
+I:110:1d1:2:1:0
+W:6:2:40:15
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:LOSE_CON:1d2
+B:SPORE:LOSE_CON:1d2
+B:SPORE:LOSE_CON:1d2
+F:NEVER_MOVE | CAN_SWIM |
+F:STUPID | EMPTY_MIND |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:Yuk! It doesn't look so tasty.
+
+N:109:Novice priest
+G:p:g
+I:110:7d4:20:10:5
+W:6:2:1500:6
+E:1:1:1:2:1:1
+O:20:50:20:5
+B:HIT:HURT:1d5
+F:MALE | GOOD |
+F:FORCE_SLEEP | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_12 |
+S:HEAL | SCARE | CAUSE_1
+D:He is tripping over his priestly robes.
+
+N:110:Novice warrior
+G:p:u
+I:110:9d4:20:16:5
+W:6:2:1600:6
+E:1:1:1:2:1:1
+O:0:95:0:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d6
+F:MALE |
+F:FRIENDS | DROP_60 | WILD_TOO |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He looks inexperienced but tough.
+
+N:111:Nibelung
+G:h:D
+I:110:8d4:20:12:5
+W:6:1:900:6
+E:1:1:1:2:1:1
+O:90:0:0:5
+B:HIT:HURT:1d6
+B:TOUCH:EAT_GOLD
+F:MALE |
+F:FRIENDS | DROP_60 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | HURT_LITE | RES_DISE | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | ZANGBAND | HAS_LITE
+D:Night dwarfs collecting riches.
+
+N:112:The disembodied hand that strangled people
+G:z:g
+I:130:7d8:30:15:20
+W:6:2:300:20
+E:0:0:0:1:0:0
+O:0:0:0:0
+B:CRUSH:HURT:1d8
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_POIS | CAN_FLY | UNIQUE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | ZANGBAND | NO_CUT
+D:Even today, nobody knows where it lurks...
+
+N:113:Brown mold
+G:m:u
+I:110:15d8:2:12:99
+W:6:1:50:20
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:CONFUSE:1d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A strange brown growth on the dungeon floor.
+
+N:114:Giant brown bat
+G:b:u
+I:130:3d8:10:15:30
+W:6:1:600:10
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+F:RAND_50 | CAN_FLY | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD |
+F:ANIMAL | DROP_CORPSE | AI_ANNOY
+F:MORTAL | BASEANGBAND
+D:It screeches as it attacks.
+
+N:115:Rat-thing
+G:r:R
+I:120:9d9:12:20:20
+W:6:1:1000:10
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:3d2
+B:BITE:HURT:3d1
+B:BITE:HURT:3d2
+F:EVIL | ANIMAL | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+S:1_IN_9
+S:SCARE | CONF
+D:A ratlike creature with a humanlike face.
+
+N:116:Novice rogue
+G:p:b
+I:110:8d4:20:12:5
+W:6:2:1400:6
+E:1:1:1:2:1:1
+O:50:25:0:20
+B:HIT:HURT:1d6
+B:TOUCH:EAT_GOLD
+F:MALE | FRIENDS |
+F:DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | WILD_TOO |
+F:EVIL | MORTAL | BASEANGBAND
+D:A rather shifty individual.
+
+N:117:Creeping silver coins
+G:$:s
+I:100:12d8:4:30:10
+W:6:3:0:18
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d6
+B:TOUCH:POISON:2d6
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:COLD_BLOOD | BASH_DOOR | SUSCEP_ACID | CHAR_MULTI |
+F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It appears to be a pile of silver coins, until it starts crawling towards you
+D:on tiny legs.
+
+N:118:Snaga
+G:o:U
+I:110:8d8:20:32:30
+W:6:1:1600:15
+E:1:1:1:2:1:1
+O:20:50:5:15
+B:HIT:HURT:1d8
+F:MALE |
+F:FRIENDS | DROP_60 | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is one of the many weaker 'slave' orcs, often mistakenly known as a
+D:goblin.
+
+N:119:Rattlesnake
+G:J:r
+I:110:6d7:6:24:1
+W:6:1:200:20
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:POISON:2d5
+F:RAND_50 | CAN_SWIM | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR | HAS_EGG | ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+D:It is recognised by the hard-scaled end of its body that is often rattled
+D:to frighten its prey.
+
+N:120:Giant slug
+G:w:U
+I:100:12d9:10:25:25
+W:6:1:600:25
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:ACID:2d4
+B:BITE:ACID:2d6
+F:ANIMAL | EMPTY_MIND | KILL_ITEM | KILL_BODY | CAN_SWIM | WILD_TOO |
+F:DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_10
+S:BR_ACID
+D:It is slowly making its way towards you, eating everything in
+D:its path...
+
+N:121:Giant pink frog
+G:R:r
+I:110:5d8:12:16:50
+W:7:1:200:16
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:LOSE_STR:2d4
+F:RAND_50 | WILD_ONLY | WILD_SHORE | WILD_SWAMP |
+F:BASH_DOOR | DROP_CORPSE
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It looks poisonous.
+
+N:122:Dark elf
+G:h:D
+I:110:7d10:20:16:20
+W:7:2:1200:25
+E:1:1:1:2:1:1
+O:20:20:50:10
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:MALE |
+F:FORCE_SLEEP |
+F:DROP_90 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:CONF | DARKNESS | MISSILE
+D:An elven figure with jet black skin and white hair, his eyes are large and
+D:twisted with evil.
+
+N:123:Zombified kobold
+G:z:s
+I:110:6d8:20:14:30
+W:7:1:750:14
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d2
+B:HIT:HURT:1d2
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is an animated kobold corpse. Flesh falls off in large chunks as it
+D:shambles forward.
+
+N:124:Crypt creep
+G:s:D
+I:110:6d8:20:12:14
+W:7:2:0:25
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:1d2
+B:CLAW:HURT:1d2
+B:BITE:POISON
+F:RAND_25
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | FRIENDS |
+F:EVIL | UNDEAD | IM_POIS | IM_COLD |
+F:NO_CONF | NO_SLEEP | HURT_LITE | BASEANGBAND | NO_CUT
+S:1_IN_10
+S:CAUSE_1 | S_UNDEAD
+D:A frightening skeletal figure in a black robe.
+
+N:125:Rotting corpse
+G:z:R
+I:110:8d8:20:20:20
+W:8:1:0:15
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:POISON:1d3
+B:CLAW:POISON:1d3
+F:OPEN_DOOR | BASH_DOOR | FRIENDS |
+F:NO_CONF | NO_SLEEP | UNDEAD | EVIL | NO_FEAR | IM_POIS |
+F:IM_COLD | COLD_BLOOD | EMPTY_MIND | BASEANGBAND | NO_CUT
+D:Corpses awakened from their sleep by dark sorcery.
+
+N:126:Cave orc
+G:o:G
+I:110:11d9:20:32:30
+W:7:1:1900:20
+E:1:1:1:2:1:1
+O:20:70:0:0
+B:HIT:HURT:1d8
+F:MALE |
+F:FRIENDS | DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is often found in huge numbers in deep caves.
+
+N:127:Wood spider
+G:S:U
+I:120:3d6:8:16:80
+W:7:3:600:15
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:STING:POISON:1d4
+F:FRIENDS | DROP_SKELETON |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | WILD_WOOD |
+F:ANIMAL | SPIDER | IM_POIS |
+F:MORTAL | BASEANGBAND
+D:It scuttles towards you.
+
+N:128:Manes
+G:u:r
+I:110:8d8:20:32:30
+W:7:2:300:16
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+F:FRIENDS |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | BASEANGBAND
+D:It is a minor but aggressive demon.
+
+N:129:Bloodshot eye
+G:e:r
+I:110:10d8:2:6:10
+W:7:3:550:30
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:BLIND:2d6
+F:NEVER_MOVE | CAN_FLY | DROP_CORPSE |
+F:HURT_LITE | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:DRAIN_MANA
+D:A disembodied eye, bloodshot and nasty.
+
+N:130:Red naga
+G:n:r
+I:110:11d8:20:40:120
+W:7:2:1800:40
+E:0:0:0:0:1:0
+O:50:0:50:0
+B:CRUSH:HURT:1d10
+B:BITE:LOSE_STR:1d4
+F:FEMALE | CAN_SWIM | WILD_TOO | WILD_SHORE |
+F:RAND_25 | DROP_60 |
+F:TAKE_ITEM | BASH_DOOR | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND
+D:A large red snake with a woman's torso.
+
+N:131:Red jelly
+G:j:r
+I:110:26d8:2:1:99
+W:7:1:2500:26
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:LOSE_STR:1d5
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:HURT_LITE | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a large pulsating mound of red flesh.
+
+N:132:Green icky thing
+G:i:g
+I:110:5d8:14:12:20
+W:7:2:500:18
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:ACID:2d5
+F:RAND_50 | CAN_SWIM | DROP_CORPSE |
+F:EMPTY_MIND |
+F:IM_ACID | BASEANGBAND
+D:It is a smallish, slimy, icky, acidic creature.
+
+N:133:Lost soul
+G:G:W
+I:110:2d8:12:10:10
+W:7:2:0:18
+E:0:0:0:0:0:0
+O:60:0:25:0
+B:HIT:HURT:2d2
+B:TOUCH:LOSE_WIS
+F:RAND_50 | DROP_60 | DROP_90 | CAN_FLY |
+F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD |
+F:IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:TPORT | DRAIN_MANA
+D:It is almost insubstantial.
+
+N:134:Night lizard
+G:R:b
+I:110:4d8:20:16:30
+W:7:2:400:35
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+B:BITE:HURT:1d6
+F:ANIMAL | CAN_SWIM | WILD_TOO | DROP_CORPSE
+F:MORTAL | HAS_EGG | BASEANGBAND
+D:It is a black lizard with overlapping scales and a powerful jaw.
+
+N:135:Mughash, the Kobold Lord
+G:k:v
+I:110:17d10:20:20:20
+W:7:3:1100:100
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+F:UNIQUE | MALE | CAN_SPEAK
+F:FORCE_MAXHP |
+F:ESCORT | ESCORTS | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:Strong and powerful, for a kobold.
+
+N:136:Skeleton orc
+G:s:W
+I:110:10d8:20:36:40
+W:8:1:1700:26
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:2d5
+F:COLD_BLOOD | EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is an animated orc skeleton.
+
+N:137:Wormtongue, Agent of Saruman
+G:p:B
+I:110:28d10:20:30:20
+W:9:2:1500:150
+E:1:1:1:2:1:1
+O:10:50:35:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+B:TOUCH:EAT_GOLD
+B:INSULT:*
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | DROP_GREAT |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON |
+F:EVIL | RES_TELE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:HEAL | SLOW | TRAPS | BO_COLD | BA_POIS
+D:He's been spying for Saruman. He is a snivelling wretch with no morals.
+
+N:138:Robin Hood, the Outlaw
+G:p:G
+I:120:16d12:20:30:20
+W:10:2:1600:150
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+B:TOUCH:EAT_GOLD
+B:TOUCH:EAT_ITEM
+F:UNIQUE | MALE | FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | DROP_GREAT | WILD_TOO | WILD_WOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | EVIL | DROP_SKELETON | DROP_CORPSE
+F:MORTAL | ZANGBAND | HAS_LITE
+S:1_IN_5
+S:ARROW_2 | HEAL | TRAPS
+D:The legendary archer steals from the rich (you qualify).
+
+N:139:Nurgling
+G:u:o
+I:110:9d8:20:32:30
+W:8:2:800:19
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BITE:DISEASE:1d8
+F:FRIENDS | FRIEND |
+F:OPEN_DOOR | BASH_DOOR | IM_POIS |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | ZANGBAND
+D:It is a minor demon servitor of Nurgle. It looks like a hairless
+D:teddy bear, with twisted eyes and rotting, ghoulish skin.
+
+N:140:Lagduf, the Snaga
+G:o:y
+I:110:22d10:20:32:30
+W:8:2:1700:80
+E:1:1:1:2:1:1
+O:10:80:0:0
+B:HIT:HURT:1d11
+B:HIT:HURT:1d11
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+F:UNIQUE | MALE | EVIL | ORC | FORCE_MAXHP | ESCORT |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | SPECIAL_GENE |
+F:OPEN_DOOR | BASH_DOOR | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A captain of a regiment of weaker orcs, Lagduf keeps his troop in order
+D:with displays of excessive violence.
+
+N:141:Brown yeek
+G:y:u
+I:110:4d8:18:18:10
+W:8:1:800:11
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d6
+F:DROP_60 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | IM_ACID |
+F:MORTAL | BASEANGBAND
+D:It is a strange small humanoid.
+
+N:142:Novice ranger
+G:p:W
+I:110:6d8:20:8:5
+W:8:2:1500:18
+E:1:1:1:2:1:1
+O:0:80:0:15
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+F:MALE |
+F:FORCE_SLEEP | FRIENDS | DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:ARROW_2 | MISSILE
+D:An agile hunter, ready and relaxed.
+
+N:143:Giant salamander
+G:R:R
+I:110:6d7:6:40:1
+W:8:1:600:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:3d6
+F:FORCE_SLEEP | SUSCEP_COLD |
+F:RAND_25 |
+F:ANIMAL | IM_FIRE | CAN_SWIM | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_9
+S:BR_FIRE
+D:A large black and yellow lizard. You'd better run away!
+
+N:144:Space monster
+G:.:d
+I:110:21d8:30:14:20
+W:8:2:0:28
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:TERRIFY:1d4
+F:PASS_WALL | NO_CONF | NO_SLEEP | NONLIVING | IM_ACID | CAN_FLY | JOKEANGBAND | NO_CUT
+D:A black hole in the fabric of reality.
+
+N:145:Carnivorous flying monkey
+G:H:R
+I:110:20d8:30:20:20
+W:8:2:800:30
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+B:BITE:HURT:5d1
+F:ANIMAL | CAN_FLY | WILD_TOO | WILD_WOOD | WILD_MOUNTAIN |
+F:DROP_CORPSE | MORTAL | ZANGBAND | HAS_LITE
+D:It looks fantastic, yet frightening.
+
+N:146:Green mold
+G:m:g
+I:110:21d8:2:14:75
+W:8:1:40:28
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:TERRIFY:1d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_ACID | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange growth on the dungeon floor.
+
+N:147:Novice paladin
+G:p:w
+I:110:6d8:20:16:5
+W:8:2:1500:18
+E:1:1:1:2:1:1
+O:30:55:10:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+F:MALE | GOOD | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:SCARE | CAUSE_1
+D:He thinks you are an agent of the devil.
+
+N:148:Lemure
+G:u:U
+I:110:13d9:20:32:30
+W:8:3:1000:16
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:HIT:HURT:1d8
+F:FRIENDS |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | BASEANGBAND
+D:It is the larval form of a major demon.
+
+N:149:Hill orc
+G:o:u
+I:110:13d9:20:32:30
+W:8:1:2000:25
+E:1:1:1:2:1:1
+O:10:70:10:0
+B:HIT:HURT:1d10
+F:MALE |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is a hardy well-weathered survivor.
+
+N:150:Bandit
+G:p:b
+I:110:8d8:20:24:10
+W:10:2:1500:26
+E:1:1:1:2:1:1
+O:25:60:0:0
+B:HIT:HURT:2d4
+B:TOUCH:EAT_GOLD
+F:MALE |
+F:DROP_1D2 | WILD_TOO | WILD_WOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:He is after your possessions!
+
+N:151:Hunting hawk
+G:B:u
+I:120:8d8:30:25:10
+W:8:2:800:22
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d4
+F:ANIMAL | NO_FEAR | CAN_FLY | WILD_WOOD | WILD_TOO | DROP_CORPSE
+F:MORTAL | HAS_EGG | BASEANGBAND
+D:Trained to hunt and kill without fear.
+
+N:152:Phantom warrior
+G:G:B
+I:110:5d5:20:10:40
+W:8:1:0:15
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d11
+B:HIT:HURT:1d11
+F:PASS_WALL | NO_SLEEP | FRIENDS | COLD_BLOOD | NONLIVING |
+F:NO_FEAR | EMPTY_MIND | CAN_FLY | BASEANGBAND | NO_CUT
+D:Spectral creatures that are half real, half illusion.
+
+N:153:Gremlin
+G:u:u
+I:110:5d5:30:30:20
+W:8:3:500:6
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:EAT_FOOD:1d2
+B:CLAW:EAT_FOOD:1d2
+B:BITE:EAT_FOOD:1d3
+F:IM_POIS | HURT_LITE | EVIL | DEMON | OPEN_DOOR |
+F:TAKE_ITEM | CAN_SWIM |
+F:MORTAL | ZANGBAND
+S:MULTIPLY
+D:Don't feed them after midnight!
+
+N:154:Yeti
+G:Y:w
+I:110:11d9:20:24:10
+W:9:3:3500:30
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d4
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_MOUNTAIN | DROP_CORPSE |
+F:ANIMAL | IM_COLD |
+F:MORTAL | SUSCEP_FIRE | BASEANGBAND
+D:A large white figure covered in shaggy fur.
+
+N:155:Bloodshot icky thing
+G:i:r
+I:110:7d8:14:18:20
+W:9:3:60:24
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:HURT:1d4
+B:CRAWL:ACID:2d4
+F:RAND_50 |
+F:EMPTY_MIND | CAN_SWIM | DROP_CORPSE |
+F:IM_POIS | BASEANGBAND
+S:1_IN_11 |
+S:DRAIN_MANA
+D:It is a strange, slimy, icky creature.
+
+N:156:Giant grey rat
+G:r:s
+I:110:2d3:8:12:20
+W:9:1:250:2
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d4
+F:RAND_25 |
+F:ANIMAL | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It is a rodent of unusual size.
+
+N:157:Black harpy
+G:H:D
+I:120:3d8:16:22:10
+W:9:1:600:19
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d2
+B:CLAW:HURT:1d2
+B:BITE:HURT:1d3
+F:FEMALE | CAN_FLY | WILD_TOO | WILD_MOUNTAIN | DROP_CORPSE |
+F:RAND_25 | ANIMAL | EVIL | MORTAL | BASEANGBAND
+D:A woman's face on the body of a vicious black bird.
+
+N:158:Skaven
+G:r:G
+I:110:11d8:15:25:20
+W:9:1:600:20
+E:1:1:1:2:1:1
+O:35:35:20:0
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+F:EVIL | FRIENDS | DROP_60 | DROP_90 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | MALE | WILD_TOO | WILD_WASTE | WILD_SWAMP |
+F:MORTAL | ZANGBAND
+D:A mutated rat-creature from the great waste, it is vaguely
+D:humanoid in appearance and walks on its hind legs. This race
+D:serves chaos fervently and is greatly feared by others.
+
+N:159:The wounded bear
+G:q:r
+I:110:11d10:10:35:10
+W:12:1:3000:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d10
+B:CLAW:HURT:1d10
+B:BITE:HURT:1d11
+F:BASH_DOOR | FORCE_MAXHP | FORCE_SLEEP | UNIQUE | DROP_CORPSE |
+F:ANIMAL | WILD_ONLY | WILD_WOOD | WILD_GRASS | WILD_MOUNTAIN |
+F:MORTAL | BASEANGBAND
+D:A wounded bear, who has occasionally attacked humans.
+
+N:160:Cave bear
+G:q:u
+I:110:8d8:10:35:10
+W:9:1:3000:25
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d6
+B:CLAW:HURT:1d6
+B:BITE:HURT:1d8
+F:BASH_DOOR | FORCE_MAXHP | FORCE_SLEEP | DROP_CORPSE |
+F:ANIMAL | WILD_TOO | WILD_WOOD | WILD_MOUNTAIN |
+F:MORTAL | BASEANGBAND
+D:A large bear appears to have made its home in this cave. It is hungry,
+D:and you are trespassing in its territory.
+
+N:161:Rock mole
+G:r:s
+I:110:10d10:20:30:75
+W:9:2:60:25
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d10
+B:BITE:HURT:1d10
+F:WEIRD_MIND | BASH_DOOR | KILL_WALL | KILL_ITEM | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:Despite its unimpressive size, this mole creature has fangs powerful
+D:enough to bore through solid rock.
+
+N:162:Mindcrafter
+G:p:y
+I:110:9d8:20:15:20
+W:16:2:1700:50
+E:1:1:1:2:1:1
+O:30:40:30:0
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:MALE |
+F:FORCE_SLEEP | DROP_90 | WILD_TOO |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:CONF | BLIND | HOLD | SLOW | MIND_BLAST | S_MONSTER | BLINK
+D:A master of the mental arts, able to damage or dominate the
+D:minds of others.
+
+N:163:Baby blue dragon
+G:d:b
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 | HAS_EGG | IMPRESED |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | IM_ELEC | BASEANGBAND | ATTR_MULTI | ATTR_MULTI
+S:1_IN_12 |
+S:BR_ELEC
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a pale blue.
+
+N:164:Baby white dragon
+G:d:w
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | ATTR_MULTI
+F:EVIL | DRAGON | IM_COLD | SUSCEP_FIRE | HAS_EGG | IMPRESED | BASEANGBAND
+F:ATTR_MULTI
+S:1_IN_12 |
+S:BR_COLD
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a pale white.
+
+N:165:Baby green dragon
+G:d:g
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY | DROP_CORPSE |
+F:EVIL | DRAGON | IM_POIS | HAS_EGG | IMPRESED | BASEANGBAND | ATTR_MULTI
+S:1_IN_12 |
+S:BR_POIS
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a sickly green.
+
+N:166:Baby black dragon
+G:d:s
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ACID | HAS_EGG | IMPRESED | BASEANGBAND | ATTR_MULTI
+S:1_IN_12 |
+S:BR_ACID
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a dull black.
+
+N:167:Baby red dragon
+G:d:r
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE | SUSCEP_COLD |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_FIRE | HAS_EGG | IMPRESED | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_11 |
+S:BR_FIRE
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a pale red.
+
+N:168:Giant red ant
+G:a:r
+I:110:4d8:12:34:60
+W:9:2:600:22
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d4
+B:STING:LOSE_STR:1d4
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_SKELETON
+F:ANIMAL | MORTAL | BASEANGBAND | HAS_LITE
+D:It is large and has venomous mandibles.
+
+N:169:Brodda, the Easterling
+G:p:U
+I:110:24d10:20:25:20
+W:9:2:2200:100
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:1d13
+B:HIT:HURT:1d13
+B:HIT:HURT:1d13
+B:HIT:HURT:1d13
+F:UNIQUE | MALE | EVIL
+F:FORCE_MAXHP | CAN_SPEAK | WILD_TOO | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A nasty piece of work, Brodda picks on defenceless women and children.
+
+N:170:Bloodfang, the Wolf
+G:C:R
+I:120:8d6:30:30:20
+W:9:1:1600:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d12
+B:BITE:HURT:1d12
+F:BASH_DOOR | WILD_ONLY | WILD_GRASS | WILD_WOOD | DROP_CORPSE |
+F:ANIMAL | UNIQUE | FORCE_MAXHP |
+F:MORTAL | BASEANGBAND
+D:It has been terrorising the nearby villages.
+
+N:171:King cobra
+G:J:g
+I:110:8d10:8:30:1
+W:9:2:300:28
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:SPIT:BLIND:1d2
+B:BITE:POISON:3d4
+F:RAND_50 | WILD_TOO | WILD_SWAMP | WILD_WOOD | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR | CAN_SWIM | ANIMAL | IM_POIS | HAS_EGG | MORTAL | BASEANGBAND
+D:It is a large snake with a hooded face.
+
+N:172:Eagle
+G:B:u
+I:120:9d9:30:25:10
+W:12:2:600:22
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d6
+F:ANIMAL | CAN_FLY | WILD_ONLY | WILD_WASTE | WILD_MOUNTAIN | WILD_WOOD |
+F:DROP_CORPSE | MORTAL | BASEANGBAND | HAS_EGG
+D:A magnificent huge predatory bird.
+
+N:173:War bear
+G:q:u
+I:110:10d10:10:35:10
+W:9:1:2000:25
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+B:BITE:HURT:1d6
+F:WEIRD_MIND | BASH_DOOR | FRIENDS | DROP_SKELETON | DROP_CORPSE
+F:ANIMAL
+F:MORTAL | BASEANGBAND
+D:Bears with tusks, trained to kill.
+
+N:174:Killer bee
+G:I:y
+I:120:2d4:12:34:10
+W:9:2:50:22
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:STING:POISON:1d4
+B:STING:LOSE_STR:1d4
+F:WEIRD_MIND | FRIENDS | CAN_FLY | WILD_TOO |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is poisonous and aggressive.
+
+N:175:Giant spider
+G:S:v
+I:110:10d10:8:16:80
+W:10:2:700:35
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d10
+B:BITE:POISON:1d6
+B:BITE:POISON:1d6
+B:BITE:HURT:1d10
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_SKELETON |
+F:ANIMAL | SPIDER | IM_POIS |
+F:MORTAL | BASEANGBAND
+D:It is a vast spider whose bulbous body is bloated with poison.
+
+N:176:Giant white tick
+G:S:w
+I:100:12d8:12:40:20
+W:10:2:200:27
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:2d6
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY |
+F:ANIMAL | IM_POIS |
+F:MORTAL | BASEANGBAND
+D:It is moving slowly towards you.
+
+N:177:The Borshin
+G:g:w
+I:110:12d20:40:30:0
+W:10:2:600:45
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:2d12
+B:CRUSH:HURT:2d15
+B:TOUCH:TERRIFY
+F:BASH_DOOR | UNIQUE | FORCE_MAXHP | NO_CONF
+F:IM_POIS | IM_COLD | NO_FEAR
+F:MORTAL | CTHANGBAND | NO_CUT
+D:Pallid and twisted, this creature hates the very sight of you.
+D:"It looked like something that had started out to be a man but had never
+D:quite made it. It had been stepped on, twisted, had holes poked into the
+D:sickly dough of its head-bulge. Bones showed through the transparent flesh
+D:of its torso and its short legs were as thick as trees, terminating in
+D:disk-shaped pads from which dozens of long toes hung like roots or worms.
+D:its arms were longer than its entire body. it was a crushed slug, a thing
+D:that had been frozen and thawed before it was fully baked. It was -
+D:'It is the Borshin', said the Lord of Bats."
+
+N:178:Dark elven mage
+G:h:r
+I:120:7d10:20:16:20
+W:10:1:1200:50
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:MALE |
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_POIS | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BLIND | CONF | MISSILE | DARKNESS | BA_POIS
+D:A dark elven figure, dressed all in black, hurling spells at you.
+
+N:179:Kamikaze yeek
+G:y:r
+I:113:4d8:18:18:10
+W:10:1:800:10
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:EXPLODE:HURT:15d2
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | IM_ACID |
+F:MORTAL | ZANGBAND
+D:The evil wizard Bruce has trained them to be living weapons.
+
+N:180:Orfax, Son of Boldor
+G:y:B
+I:120:14d10:18:20:10
+W:11:3:600:80
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d9
+B:INSULT:*
+B:INSULT:*
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | EVIL | IM_ACID |
+F:MORTAL | BASEANGBAND
+S:1_IN_4 |
+S:HEAL | BLINK | TELE_TO | SLOW | CONF |
+S:S_MONSTER
+D:He's just like his daddy! He knows mighty spells, but fortunately he is a
+D:yeek.
+
+N:181:Servant of Glaaki
+G:z:G
+I:110:9d9:20:20:20
+W:10:1:600:25
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:1d8
+B:CLAW:DISEASE:1d3
+F:OPEN_DOOR | BASH_DOOR | FRIENDS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | UNDEAD | EVIL | NO_FEAR | IM_POIS |
+F:IM_COLD | COLD_BLOOD | CTHANGBAND | NO_CUT
+S:1_IN_12
+S:CAUSE_1 | SCARE
+D:"...the hand of a corpse -- bloodless and skeletal, and with
+D:impossibly long, cracked nails."
+
+N:182:Dark elven warrior
+G:h:u
+I:110:10d11:20:16:20
+W:10:1:1400:50
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:MALE |
+F:DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_12
+S:MISSILE
+D:A dark elven figure in armour, ready with his sword.
+
+N:183:Sand-dweller
+G:u:y
+I:110:9d9:20:20:20
+W:10:1:600:30
+E:1:1:1:2:1:1
+O:20:50:20:5
+B:CLAW:HURT:1d6
+B:CLAW:HURT:1d6
+F:FRIENDS | WILD_TOO | WILD_WASTE | DROP_SKELETON |
+F:OPEN_DOOR | BASH_DOOR | HURT_LITE | EVIL | DROP_60 | DROP_90 |
+F:MALE
+F:MORTAL | CTHANGBAND
+D:"Rough-skinned, large-eyed, large-eared, with a horrible,
+D:distorted resemblance to the koala bear facially, though
+D:his body had an appearance of emaciation."
+
+N:184:Clear mushroom patch
+G:,:B
+I:120:1d1:4:1:0
+W:10:2:30:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:HURT:1d1
+F:ATTR_CLEAR |
+F:NEVER_MOVE | INVISIBLE | COLD_BLOOD |
+F:STUPID | EMPTY_MIND | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:Yum! It smells quite tasty. If you could only see it...
+
+N:185:Quiver slot
+G:,:U
+I:120:1d1:4:1:0
+W:10:2:60:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:CONFUSE:1d1
+F:NEVER_MOVE | COLD_BLOOD |
+F:STUPID | EMPTY_MIND |
+F:NO_CONF | NO_SLEEP | NO_FEAR | JOKEANGBAND | NO_CUT
+S:MULTIPLY |
+S:1_IN_5 | ARROW_1
+D:What looks like the remains of a quiver dropped by a past adventurer
+D:has become overgrown with a strange mold intent on using the contents
+D:of the quiver to grab prey.
+
+N:186:Grishnakh, the Hill Orc
+G:o:y
+I:110:25d10:20:20:20
+W:10:3:2300:160
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d13
+B:HIT:HURT:1d11
+B:HIT:HURT:1d13
+B:HIT:HURT:1d11
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | SPECIAL_GENE |
+F:ESCORT | WILD_TOO |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is a cunning and devious orc with a chaotic nature.
+
+N:187:Giant tan bat
+G:b:U
+I:130:3d8:12:20:50
+W:10:2:600:18
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:TERRIFY:1d3
+B:CLAW:HURT:1d2
+B:CLAW:HURT:1d2
+F:RAND_50 | CAN_FLY | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD |
+F:FORCE_SLEEP | ANIMAL | DROP_CORPSE | AI_ANNOY |
+F:MORTAL | BASEANGBAND
+D:A giant bat, the beating of whose wings produces a strangely unnerving noise.
+
+N:188:Owlbear
+G:H:o
+I:110:12d12:20:20:20
+W:10:1:2000:35
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:CRUSH:HURT:1d10
+F:EVIL | ANIMAL | OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A bizarre bear-creature with the claws and the face of an owl.
+
+N:189:Blue horror
+G:u:B
+I:110:14d9:20:35:20
+W:10:3:1200:25
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:TERRIFY:1d8
+B:CLAW:TERRIFY:1d8
+F:FRIENDS |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | NO_CONF | ZANGBAND
+D:An ugly screaming little demon servant of Tzeentch.
+
+N:190:Hairy mold
+G:m:o
+I:110:15d8:2:15:70
+W:10:1:50:32
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:POISON:1d3
+F:NEVER_MOVE | CAN_SWIM |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange hairy growth on the dungeon floor.
+
+N:191:Grizzly bear
+G:q:U
+I:110:15d15:10:35:10
+W:16:2:2600:55
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+B:BITE:HURT:1d12
+B:CRUSH:HURT:1d10
+F:WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_CORPSE |
+F:ANIMAL | BASH_DOOR |
+F:MORTAL | BASEANGBAND
+D:A huge, beastly bear, more savage than most of its kind.
+
+N:192:Disenchanter mold
+G:m:v
+I:110:16d8:2:20:70
+W:10:1:40:40
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:UN_BONUS:1d6
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND | RES_DISE |
+F:IM_POIS | ATTR_MULTI | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_11 |
+S:DRAIN_MANA
+D:It is a strange glowing growth on the dungeon floor.
+
+N:193:Pseudo dragon
+G:d:o
+I:110:20d10:20:30:40
+W:10:2:10000:150
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE |
+F:DROP_60 | BASH_DOOR | HAS_EGG |
+F:EVIL | DRAGON | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_11 |
+S:CONF | SCARE | BR_LITE | BR_DARK
+D:A small relative of the dragon that inhabits dark caves.
+
+N:194:Tengu
+G:u:b
+I:120:16d9:20:32:30
+W:10:1:600:40
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | RES_TELE | CAN_FLY | BASEANGBAND
+S:1_IN_3 |
+S:BLINK | TELE_TO | TELE_AWAY | TPORT
+D:It is a fast-moving demon that blinks quickly in and out of existence; no
+D:other demon matches its teleporting mastery.
+
+N:195:Creeping gold coins
+G:$:y
+I:100:18d8:5:36:10
+W:10:3:0:32
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d5
+B:TOUCH:POISON:3d5
+F:ONLY_GOLD | DROP_90 | DROP_1D2 |
+F:COLD_BLOOD | BASH_DOOR |
+F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It appears to be a pile of gold coins, until it starts crawling towards you
+D:on tiny legs.
+
+N:196:Wolf
+G:C:u
+I:120:6d6:30:30:20
+W:10:1:600:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:RAND_25 | FRIENDS |
+F:BASH_DOOR | WILD_TOO | WILD_WOOD | WILD_WASTE | WILD_MOUNTAIN |
+F:ANIMAL | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:It howls and snaps at you.
+
+N:197:Giant fruit fly
+G:I:G
+I:120:2d2:8:14:10
+W:10:3:100:4
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:RAND_50 | RAND_25 | CAN_FLY | WEIRD_MIND |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:A fast-breeding, annoying pest.
+
+N:198:Panther
+G:f:D
+I:120:10d8:40:30:0
+W:10:2:1300:25
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+F:BASH_DOOR | WILD_TOO | WILD_WOOD | WILD_GRASS | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A large black cat, stalking you with intent. It thinks you're its next
+D:meal.
+
+N:199:Brigand
+G:p:b
+I:110:9d8:20:32:10
+W:10:2:1700:35
+E:1:1:1:2:1:1
+O:25:60:0:0
+B:HIT:HURT:2d4
+B:TOUCH:EAT_ITEM
+F:MALE |
+F:DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | DROP_SKELETON |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is eyeing your backpack.
+
+N:200:Hobbes the Tiger
+G:f:y
+I:120:12d10:40:30:0
+W:10:2:1600:45
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d12
+B:CLAW:HURT:1d12
+B:BITE:HURT:1d5
+F:BASH_DOOR | UNIQUE | FORCE_MAXHP |
+F:ANIMAL | MALE | CAN_SPEAK | DROP_CORPSE |
+F:MORTAL | JOKEANGBAND
+D:Fast-moving, with a taste for tuna sandwiches.
+
+N:201:Shadow Creature of Fiona
+G:h:s
+I:110:11d8:12:12:16
+W:10:2:1000:35
+E:1:1:1:2:1:1
+O:20:30:50:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:BASH_DOOR | OPEN_DOOR | FRIENDS | DROP_60 | IM_POIS | NO_SLEEP | NO_CONF
+F:MALE | DROP_SKELETON | ZANGBAND
+D:"There was something unusual about their appearance... For one thing,
+D:all had uniformly bloodshot eyes. Very, very bloodshot eyes. With them,
+D:though, the condition seemed normal. For another, all had an extra joint
+D:to each finger and thumb, and sharp, forward-curving spurs on the backs
+D:of their hands. All of them had prominent jaws and forty-four teeth,
+D:most of them longer than human teeth, and several looking to be much
+D:sharper. Their flesh was grayish and hard and shiny. There were
+D:undoubtedly other differences also, but those were sufficient to prove
+D:a point of some sort."
+
+N:202:Undead mass
+G:j:u
+I:110:8d8:70:12:5
+W:10:2:200:33
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:DISEASE:1d6
+B:TOUCH:LOSE_CON:1d6
+F:UNDEAD | EMPTY_MIND | NO_CONF | NO_SLEEP | IM_POIS | IM_COLD | NO_FEAR |
+F:HURT_LITE | COLD_BLOOD | EVIL | NEVER_MOVE | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:A sickening mound of decaying flesh, bones, hands and so on. It seems to
+D:be growing.
+
+N:203:Chaos shapechanger
+G:H:v
+I:110:20d9:10:14:12
+W:11:2:0:38
+E:1:1:1:2:1:1
+O:20:50:20:6
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+B:HIT:CONFUSE:1d3
+F:DROP_60 | EVIL | SHAPECHANGER | ATTR_MULTI | ATTR_ANY
+F:MORTAL | ZANGBAND
+S:1_IN_5
+S:BO_FIRE | BO_COLD | CONF
+D:A vaguely humanoid form constantly changing its appearance.
+
+N:204:Baby multi-hued dragon
+G:d:v
+I:110:13d10:20:30:70
+W:11:2:5000:45
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+B:BITE:HURT:1d6
+F:ATTR_MULTI |
+F:FORCE_MAXHP | FORCE_SLEEP |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | DRAGON | CAN_FLY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HAS_EGG | IMPRESED |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_12 |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales shimmering with a hint of colour.
+
+N:205:Vorpal bunny
+G:r:w
+I:120:10d10:40:40:0
+W:11:3:600:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:6d1
+B:BITE:HURT:7d1
+F:BASH_DOOR | WILD_TOO | WILD_MOUNTAIN | DROP_CORPSE |
+F:ANIMAL | MORTAL | ZANGBAND
+S:1_IN_8
+S:BLINK
+D:It looks very cute, except for the razor sharp teeth. It moans
+D:ominously as it jumps at your throat!
+
+N:206:Old Man Willow
+G:#:s
+I:110:32d30:20:20:20
+W:25:5:3000:150
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:TOUCH:PARALYZE:1d14
+B:TOUCH:PARALYZE:1d14
+B:CRUSH:HURT:2d12
+F:ANIMAL | NEVER_MOVE | COLD_BLOOD | DROP_RANDART
+F:EMPTY_MIND | UNIQUE | FORCE_MAXHP | FORCE_SLEEP |
+F:RES_WATE | IM_POIS | IM_ACID | SUSCEP_FIRE | SPECIAL_GENE |
+F:DROP_1D2 | DROP_GOOD | ONLY_ITEM | BASEANGBAND | NO_CUT
+S:1_IN_10 |
+S:TELE_TO | HOLD |
+D:The ancient grey willow tree, ruler of the Old Forest. He despises
+D:trespassers in his territory. "...a huge willow-tree, old and hoary.
+D:Enormous it looked, its sprawling branches going up like racing arms
+D:with may long-fingered hands, its knotted and twisted trunk gaping in
+D:wide fissures that creaked faintly as the boughs moved."
+
+N:207:Hippocampus
+G:H:B
+I:110:20d9:12:14:10
+W:11:1:900:30
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d5
+B:BITE:HURT:2d5
+F:AQUATIC | WILD_TOO | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A truly strange hybrid of a horse and a fish.
+
+N:208:Zombified orc
+G:z:s
+I:110:11d8:20:24:25
+W:11:1:1800:30
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+F:COLD_BLOOD | EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a shambling orcish corpse leaving behind a trail of flesh.
+
+N:209:Hippogryph
+G:H:U
+I:110:20d9:12:14:10
+W:11:1:1500:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:HIT:HURT:2d5
+B:BITE:HURT:2d5
+F:BASH_DOOR | CAN_FLY | WILD_TOO | WILD_MOUNTAIN | WILD_GRASS |
+F:ANIMAL | DROP_CORPSE | MORTAL | BASEANGBAND
+D:A strange hybrid of eagle and horse. It looks weird.
+
+N:210:Black mamba
+G:J:D
+I:120:10d8:10:32:1
+W:12:3:300:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:POISON:4d4
+F:RAND_50 | BASH_DOOR | CAN_SWIM |
+F:WILD_TOO | WILD_WOOD | WILD_GRASS | WILD_SWAMP |
+F:ANIMAL | IM_POIS | DROP_SKELETON | DROP_CORPSE | HAS_EGG |
+F:MORTAL | BASEANGBAND
+D:It has glistening black skin, a sleek body, and highly venomous fangs.
+
+N:211:White wolf
+G:C:w
+I:120:7d7:30:30:20
+W:12:1:700:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d3
+B:BITE:HURT:1d4
+F:RAND_25 |
+F:FRIENDS | SUSCEP_FIRE |
+F:BASH_DOOR | WILD_TOO | WILD_WASTE |
+F:ANIMAL | IM_COLD | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A large and muscled wolf from the northern wastes. Its breath is cold and
+D:icy and its fur coated in frost.
+
+N:212:Grape jelly
+G:j:v
+I:110:52d8:2:1:99
+W:12:3:2600:60
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:EXP_10
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | HURT_LITE | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_11 |
+S:DRAIN_MANA
+D:Yum! It looks quite tasty. It is a pulsing mound of glowing flesh.
+
+N:213:Nether worm mass
+G:w:D
+I:100:5d8:10:15:3
+W:12:4:200:6
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:EXP_10
+F:RAND_50 | RAND_25 | CAN_SWIM |
+F:STUPID | WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | HURT_LITE | NO_FEAR | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a disgusting mass of dark worms, eating each other, the floor,
+D:the air, you...
+
+N:214:Abyss worm mass
+G:w:D
+I:100:5d8:10:15:3
+W:12:4:200:7
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:EXP_10
+F:RAND_50 | RAND_25 |
+F:STUPID | WEIRD_MIND | BASH_DOOR | EVIL | CAN_SWIM |
+F:ANIMAL | HURT_LITE | NO_FEAR | KILL_WALL | COLD_BLOOD | INVISIBLE |
+F:MORTAL | ZANGBAND | NO_CUT
+S:MULTIPLY
+D:Even more disgusting dark worms, their essence that of unbeing.
+
+N:215:Golfimbul, the Hill Orc Chief
+G:o:y
+I:110:26d10:20:60:20
+W:12:3:2200:230
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:1d13
+B:HIT:HURT:1d13
+B:HIT:HURT:1d11
+B:HIT:HURT:1d11
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | WILD_TOO | SPECIAL_GENE |
+F:ESCORT | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | CAN_SPEAK |
+F:EVIL | ORC | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A leader of a band of raiding orcs, he picks on hobbits.
+
+N:216:Swordsman
+G:p:u
+I:110:12d8:20:34:20
+W:12:1:1800:40
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:MALE | WILD_TOO |
+F:DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A warrior of considerable skill.
+
+N:217:Skaven shaman
+G:r:g
+I:110:10d8:20:15:20
+W:12:1:600:36
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+F:MALE | WILD_TOO | WILD_SWAMP | WILD_WASTE |
+F:FORCE_SLEEP | DROP_90 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | ZANGBAND
+S:1_IN_8 |
+S:BLINK | CAUSE_1 | MISSILE | CONF | SCARE
+D:The shaman of a skaven tribe gets his powers from a mystic
+D:stone corrupted by chaos, called a Warp Stone.
+
+N:218:Baby bronze dragon
+G:d:U
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | NO_CONF | HAS_EGG | IMPRESED | BASEANGBAND | ATTR_MULTI
+S:1_IN_12 |
+S:BR_CONF
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a dull bronze.
+
+N:219:Baby gold dragon
+G:d:y
+I:110:10d10:20:30:70
+W:9:2:4000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | CAN_FLY | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | NO_STUN | HAS_EGG | IMPRESED | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_12 |
+S:BR_SOUN
+D:This hatchling dragon is still soft, its eyes unaccustomed to light and
+D:its scales a pale gold.
+
+N:220:Evil eye
+G:e:D
+I:110:15d8:2:6:10
+W:18:3:600:80
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:EXP_10
+B:GAZE:EXP_10
+F:NEVER_MOVE | EVIL | CAN_FLY | DROP_CORPSE |
+F:HURT_LITE | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:HOLD | TELE_TO
+D:A huge disembodied eye. As you stare into the black nothingness of its pupil,
+D:you feel your will and vitality draining away, and are unable to do anything
+D:except approach it in horrified fascination.
+
+N:221:Mine-dog
+G:C:u
+I:120:6d6:30:30:20
+W:12:4:500:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:EXPLODE:HURT:6d6
+F:RAND_50 | FRIENDS | BASH_DOOR | ANIMAL |
+F:MORTAL | ZANGBAND
+D:An explosive charge has been attached to this poor animal, who
+D:has been trained to search for its target and detonate.
+
+N:222:Hellcat
+G:f:R
+I:120:9d8:20:30:30
+W:12:1:400:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d5
+B:CLAW:HURT:1d5
+B:BITE:HURT:1d8
+F:ANIMAL | WEIRD_MIND | FRIENDS | RAND_25 | IM_FIRE | EVIL | SUSCEP_COLD |
+F:MORTAL | ZANGBAND | HAS_LITE
+D:It is as large as a tiger, and its yellow eyes are pupilless.
+
+N:223:Moon beast
+G:q:W
+I:120:9d10:30:30:20
+W:12:1:800:57
+E:0:1:0:2:1:0
+O:50:0:40:5
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BUTT:HURT:1d6
+F:DROP_1D2 | ONLY_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | ANIMAL | DROP_CORPSE
+F:MORTAL | ZANGBAND
+S:1_IN_6
+S:HEAL | BLIND | DARKNESS | CONF | CAUSE_2
+D:"Great greyish-white slippery things which could expand and
+D:contract at will, and whose principle shape... was that of a
+D:sort of toad without any eyes, but with a curious vibrating mass
+D:of short pink tentacles on the end of its blunt, vague snout."
+
+N:224:Master yeek
+G:y:g
+I:110:12d9:18:24:10
+W:12:2:600:28
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:1d8
+F:FORCE_SLEEP |
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | EVIL | IM_ACID | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_4 |
+S:BLINK | TPORT | BLIND | SLOW | BA_POIS |
+S:S_MONSTER
+D:A small humanoid that radiates some power.
+
+N:225:Priest
+G:p:g
+I:110:12d8:20:22:40
+W:12:1:1500:36
+E:1:1:1:2:1:1
+O:0:20:80:0
+B:HIT:HURT:2d3
+B:HIT:HURT:2d3
+F:MALE | GOOD |
+F:FORCE_SLEEP |
+F:DROP_1D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | SCARE | CAUSE_2 |
+S:S_MONSTER
+D:A robed man dedicated to his god.
+
+N:226:Dark elven priest
+G:h:g
+I:120:7d10:20:30:30
+W:12:1:1200:50
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:HIT:HURT:1d9
+B:HIT:HURT:1d10
+F:MALE |
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:HEAL | BLIND | CONF | CAUSE_2 | DARKNESS | MISSILE
+D:A dark elven figure, dressed all in black, chanting curses and waiting to
+D:deliver your soul to hell.
+
+N:227:Air spirit
+G:E:B
+I:130:8d8:12:40:20
+W:12:2:0:40
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d3
+F:RAND_50 | RAND_25 | IM_ELEC | IM_POIS |
+F:EMPTY_MIND | INVISIBLE | COLD_BLOOD | BASH_DOOR |
+F:IM_POIS | CAN_FLY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A whirlwind of sentient air.
+
+N:228:Skeleton human
+G:s:W
+I:110:10d8:20:30:30
+W:12:1:1500:38
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is an animated human skeleton.
+
+N:229:Zombified human
+G:z:s
+I:110:12d8:20:24:20
+W:12:1:1500:34
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a shambling human corpse dropping chunks of flesh behind it.
+
+N:230:Tiger
+G:f:o
+I:120:12d10:40:40:0
+W:12:2:1500:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+B:BITE:HURT:1d6
+F:BASH_DOOR | WILD_TOO | WILD_GRASS | WILD_WOOD | WILD_MOUNTAIN |
+F:ANIMAL | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:One of the largest of its species, a sleek orange and black shape creeps
+D:towards you, ready to pounce.
+
+N:231:Moaning spirit
+G:G:u
+I:120:5d8:14:20:10
+W:12:2:0:44
+E:0:0:0:0:0:0
+O:45:15:25:0
+B:WAIL:TERRIFY
+B:TOUCH:LOSE_DEX:1d8
+F:FORCE_SLEEP | RAND_25 |
+F:DROP_60 | DROP_90 | CAN_FLY |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:TPORT | SCARE
+D:A ghostly apparition that shrieks horribly.
+
+N:232:Stegocentipede
+G:c:u
+I:120:13d8:12:30:30
+W:12:2:1200:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d4
+B:BITE:HURT:2d4
+B:STING:HURT:2d4
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | DROP_SKELETON | MORTAL | BASEANGBAND
+D:It is a vast armoured centipede with massive mandibles and a spiked tail.
+
+N:233:Spotted jelly
+G:j:o
+I:120:13d8:12:18:1
+W:12:3:2500:33
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:2d6
+B:TOUCH:ACID:2d6
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND | COLD_BLOOD |
+F:IM_ACID | IM_POIS | HURT_LITE | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A strange jelly thing, covered in discoloured blotches.
+
+N:234:Drider
+G:S:b
+I:110:10d13:8:30:80
+W:13:2:2000:55
+E:1:1:1:2:1:0
+O:0:0:0:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:BITE:POISON:1d6
+F:FORCE_SLEEP |
+F:BASH_DOOR | DROP_SKELETON |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:CONF | CAUSE_1 | DARKNESS | MISSILE | ARROW_2
+D:A dark elven torso merged with the bloated form of a giant spider.
+
+N:235:Mongbat
+G:b:U
+I:110:10d10:20:80:8
+W:13:2:800:65
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+B:BITE:POISON:1d8
+F:ANIMAL | EVIL | FRIENDS | CAN_FLY | FORCE_MAXHP |
+F:IM_COLD | IM_ELEC | IM_POIS | WEIRD_MIND | DROP_CORPSE
+F:MORTAL | BASEANGBAND
+D:Devil-bats, notoriously difficult to kill.
+
+N:236:Killer brown beetle
+G:K:u
+I:110:13d8:10:40:30
+W:13:1:500:38
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:3d4
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is a vicious insect with a tough carapace.
+
+N:237:Boldor, King of the Yeeks
+G:y:v
+I:120:20d10:18:24:10
+W:13:3:650:200
+E:1:1:1:2:1:1
+O:0:90:10:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+B:HIT:HURT:1d9
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS |
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR | CAN_SPEAK | DROP_CORPSE |
+F:ANIMAL | EVIL | IM_ACID |
+F:MORTAL | BASEANGBAND
+S:1_IN_2 |
+S:HEAL | BLINK | TPORT | BLIND | SLOW |
+S:S_KIN | S_MONSTER
+D:A great yeek, powerful in magic and sorcery, but a yeek all the same.
+
+N:238:Ogre
+G:O:U
+I:110:13d9:20:33:30
+W:13:2:2100:50
+E:1:1:1:2:1:1
+O:10:85:0:0
+B:HIT:HURT:2d8
+F:FRIENDS |
+F:DROP_60 | WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A hideous, smallish giant that is often found near or with orcs.
+
+N:239:Creeping mithril coins
+G:$:B
+I:110:20d8:5:50:10
+W:13:3:0:45
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d5
+B:TOUCH:POISON:3d5
+F:ONLY_GOLD | DROP_90 | DROP_2D2 |
+F:COLD_BLOOD | BASH_DOOR | IM_ACID | CHAR_MULTI |
+F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It appears to be a pile of sentient mithril coins that doesn't like being
+D:picked up.
+
+N:240:Illusionist
+G:p:R
+I:110:12d8:20:10:10
+W:13:2:1500:50
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:HIT:HURT:2d2
+F:MALE |
+F:FORCE_SLEEP | DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HASTE | BLINK | TPORT | BLIND | HOLD | SLOW | CONF | DARKNESS
+D:A deceptive spell caster.
+
+N:241:Druid
+G:p:G
+I:110:12d12:20:10:10
+W:13:2:1400:50
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:MALE | WILD_TOO | WILD_WOOD |
+F:FORCE_SLEEP | DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HASTE | BLINK | BLIND | HOLD | SLOW | BO_FIRE | BO_ELEC | S_ANIMAL
+D:A priest devoted to Nature.
+
+N:242:Pink horror
+G:u:R
+I:110:15d9:20:35:20
+W:13:3:1200:64
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:TERRIFY:1d8
+B:CLAW:TERRIFY:1d8
+B:BITE:CONFUSE:1d6
+F:FRIENDS |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | NO_CONF | ZANGBAND
+S:1_IN_8 |
+S:CONF | SCARE
+D:An ugly screaming little demon servant of Tzeentch.
+
+N:243:Cloaker
+G:(:g
+I:130:7d7:20:40:0
+W:13:5:60:30
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:PARALYZE:5d5
+B:HIT:TERRIFY:5d5
+F:NEVER_MOVE | NO_FEAR |
+F:STUPID | EMPTY_MIND | COLD_BLOOD | CHAR_MULTI | NO_CONF | NO_SLEEP |
+F:DROP_90 | IM_COLD | FORCE_MAXHP | IM_ELEC | IM_POIS |
+F:BASEANGBAND | NO_CUT
+D:It resembles a normal cloak until some poor fool ventures too close!
+
+N:244:Black orc
+G:o:D
+I:110:12d10:20:36:20
+W:13:1:2000:45
+E:1:1:1:2:1:1
+O:10:50:20:15
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:MALE | WILD_TOO | DROP_SKELETON | DROP_CORPSE |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9
+S:ARROW_2
+D:He is a large orc with powerful arms and deep black skin.
+
+N:245:Ochre jelly
+G:j:U
+I:120:13d8:12:18:1
+W:13:3:2300:40
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:2d6
+B:TOUCH:ACID:2d6
+F:STUPID | EMPTY_MIND | COLD_BLOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A fast moving highly acidic jelly thing, that is eating away the floor it
+D:rests on.
+
+N:246:Software bug
+G:I:r
+I:120:2d2:8:25:10
+W:14:1:0:4
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:RAND_50 | RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY |
+F:ANIMAL | MORTAL | JOKEANGBAND
+S:MULTIPLY
+D:Oh no! They are everywhere!
+
+N:247:Lurker
+G:.:w
+I:110:20d10:30:25:10
+W:14:3:0:80
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:CHAR_CLEAR | ATTR_CLEAR | CHAR_MULTI |
+F:NEVER_MOVE | FORCE_MAXHP |
+F:EMPTY_MIND | INVISIBLE | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+D:A strange creature that merges with the dungeon floor, trapping its
+D:victims by enveloping them within its perfectly disguised form.
+
+N:248:Tangleweed
+G:#:g
+I:100:5d5:5:5:5
+W:10:4:50:10
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:PARALYZE
+B:HIT:PARALYZE
+F:FORCE_SLEEP | NEVER_MOVE | STUPID | EMPTY_MIND | FRIENDS |
+F:KILL_TREES | SUSCEP_FIRE | ANIMAL |
+F:WILD_ONLY | COLD_BLOOD | WILD_WOOD | WILD_GRASS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | MORTAL | BASEANGBAND | DROP_60 | NO_CUT
+D:A mass of vegetation. As you pass near it, it reaches out tendrils to
+D:ensnare you. You can just make out skeletons of its previous victims
+D:deep within the thickets.
+
+N:249:Vlasta
+G:R:B
+I:120:12d6:12:20:12
+W:14:3:1000:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:BLIND:1d10
+B:BITE:BLIND:1d10
+F:OPEN_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+D:This strange creature looks like a miniature tyrannosaur. It has
+D:empty, pale eyes and a sharp beak, which it aims at your eyes
+D:as it jumps at you!
+
+N:250:Giant white dragon fly
+G:F:w
+I:110:3d8:12:20:50
+W:14:2:150:60
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:COLD:1d6
+F:FORCE_SLEEP | WILD_TOO | WILD_WASTE |
+F:RAND_50 | CAN_FLY | SUSCEP_FIRE |
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | IM_COLD |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_COLD
+D:It is a large fly that drips frost.
+
+N:251:Snaga sapper
+G:o:U
+I:111:8d8:20:32:30
+W:14:1:80:15
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:EXPLODE:HURT:20d2
+F:MALE |
+F:WILD_TOO | SUSCEP_FIRE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | HURT_LITE |
+F:MORTAL | ZANGBAND | HAS_LITE
+D:He is one of the many weaker 'slave' orcs, often mistakenly known as a
+D:goblin. He is equipped with an explosive charge.
+
+N:252:Blue icky thing
+G:i:b
+I:100:10d6:15:20:20
+W:14:4:600:20
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:POISON:1d4
+B:CRAWL:EAT_FOOD
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+F:FORCE_SLEEP |
+F:RAND_50 |
+F:OPEN_DOOR | BASH_DOOR | CAN_SWIM | DROP_CORPSE |
+F:EVIL | IM_POIS | BASEANGBAND
+S:MULTIPLY |
+S:1_IN_8 |
+S:BLIND | CONF | SCARE
+D:It is a strange, slimy, icky creature, with rudimentary intelligence,
+D:but evil cunning. It hungers for food, and you look tasty.
+
+N:253:Gibbering mouther
+G:j:o
+I:110:8d6:15:20:20
+W:14:4:2600:20
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:POISON:1d4
+F:NEVER_MOVE | EVIL | CAN_SWIM |
+F:IM_POIS | EMPTY_MIND | NO_FEAR | BASEANGBAND | NO_CUT
+S:MULTIPLY |
+S:1_IN_7 |
+S:SCARE | CONF | BR_LITE
+D:A chaotic mass of pulsating flesh, mouths and eyes.
+
+N:254:Wolfhound of Flora
+G:C:s
+I:120:9d9:20:20:0
+W:14:2:1600:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d5
+B:BITE:HURT:1d5
+F:ANIMAL | NO_FEAR | FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+D:Well-trained watchdogs, obedient to death.
+
+N:255:Hill giant
+G:P:U
+I:110:30d15:20:45:50
+W:25:1:3500:150
+E:1:1:1:2:1:1
+O:20:50:20:5
+B:HIT:HURT:4d8
+B:HIT:HURT:4d8
+F:DROP_60 | WILD_TOO | WILD_MOUNTAIN | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A ten foot tall humanoid with powerful muscles.
+
+N:256:Flesh golem
+G:g:R
+I:110:12d8:12:30:10
+W:14:2:3000:50
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:EMPTY_MIND | BASH_DOOR | CAN_SWIM |
+F:IM_ELEC | IM_COLD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING |
+F:MORTAL | BASEANGBAND | NO_CUT
+D:A shambling humanoid monster with long scars.
+
+N:257:Warg
+G:C:D
+I:120:8d8:20:20:40
+W:16:2:700:40
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+B:BITE:HURT:1d6
+F:RAND_25 | BASH_DOOR | FRIENDS |
+F:WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | EVIL | MORTAL | BASEANGBAND
+D:It is a large wolf with eyes full of cunning.
+
+N:258:Cheerful leprechaun
+G:h:G
+I:120:2d5:8:6:6
+W:14:2:800:23
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:TOUCH:EAT_GOLD
+B:TOUCH:EAT_FOOD
+F:DROP_60 | ONLY_GOLD | RAND_50 | OPEN_DOOR | MALE |
+F:GOOD | MORTAL | ZANGBAND
+S:MULTIPLY |
+S:1_IN_6 |
+S:BLINK
+D:A merry little gnome.
+
+N:259:Giant flea
+G:I:s
+I:120:1d2:6:7:10
+W:14:3:90:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:RAND_50 | CAN_FLY | WEIRD_MIND |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It makes you itch just to look at it.
+
+N:260:Ufthak of Cirith Ungol
+G:o:g
+I:110:34d10:20:50:20
+W:14:3:2600:250
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:ESCORT |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_COLD | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A strong orc guarding the pass of Cirith Ungol. He is mortally afraid of
+D:spiders: he was captured by Shelob once, but escaped when she forgot
+D:completely about him.
+
+N:261:Clay golem
+G:g:U
+I:110:14d8:12:30:10
+W:15:2:3200:60
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a massive animated statue made out of hardened clay.
+
+N:262:Black ogre
+G:O:D
+I:110:20d9:20:33:30
+W:15:2:2300:70
+E:1:1:1:2:1:1
+O:0:70:0:15
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+F:RAND_25 | WILD_TOO | WILD_MOUNTAIN | DROP_CORPSE |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A massive orc-like figure with black skin and powerful arms.
+
+N:263:Dweller on the threshold
+G:Y:s
+I:110:30d8:30:30:20
+W:15:5:3000:50
+E:1:1:1:2:1:1
+O:45:0:40:10
+B:GAZE:PARALYZE:4d4
+B:GAZE:TERRIFY:3d3
+B:GAZE:CONFUSE:3d3
+F:NEVER_MOVE | DROP_60 | EVIL | DEMON | DROP_CORPSE |
+F:IM_POIS | IM_COLD |IM_FIRE | NO_FEAR | NO_CONF | NO_SLEEP
+F:MORTAL | ZANGBAND
+S:1_IN_6
+S:BO_ACID | S_MONSTER | SCARE | DRAIN_MANA
+D:A gorilla-shaped arcane guardian with an appetite for mages.
+
+N:264:Half-orc
+G:o:s
+I:110:16d10:20:40:20
+W:15:2:1700:50
+E:1:1:1:2:1:1
+O:30:30:30:5
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:MALE | WILD_TOO |
+F:FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | ORC | MORTAL | BASEANGBAND | HAS_LITE
+D:He is a hideous deformed cross-breed of man and orc, combining man's
+D:strength and cunning with orcish evil. The traitorous wizard Saruman is
+D:generally believed to be responsible for this abomination.
+
+N:265:Dark naga
+G:n:s
+I:110:22d11:60:65:60
+W:15:2:1900:90
+E:0:0:0:0:1:0
+O:0:0:80:20
+B:STING:HURT:1d10
+B:BITE:HURT:1d10
+F:FEMALE |
+F:RAND_25 | DROP_60 | DROP_1D2 | IM_POIS | IM_COLD | RES_WATE |
+F:OPEN_DOOR | BASH_DOOR | EMPTY_MIND | CAN_SWIM | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND
+S:1_IN_8
+S:HOLD | CONF | BO_COLD | HEAL | DARKNESS
+D:A giant snake-like figure with a woman's torso, talented in magic.
+
+N:266:Poison ivy
+G:#:g
+I:100:5d5:5:5:5
+W:10:4:50:10
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:POISON:2d2
+B:HIT:POISON:2d2
+F:FORCE_SLEEP | NEVER_MOVE | STUPID | EMPTY_MIND | FRIENDS |
+F:KILL_TREES | SUSCEP_FIRE | ANIMAL |
+F:WILD_ONLY | COLD_BLOOD | WILD_WOOD | WILD_GRASS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | MORTAL | BASEANGBAND | DROP_60 | NO_CUT
+S:MULTIPLY
+D:A mass of vegetation. It seems to be growing...
+
+N:267:Magic mushroom patch
+G:,:B
+I:140:1d1:40:10:0
+W:15:2:50:10
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:CONFUSE
+B:SPORE:CONFUSE
+B:SPORE:HALLU
+B:SPORE:HALLU
+F:FORCE_SLEEP | NEVER_MOVE |
+F:STUPID | RES_TELE | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:BLINK | SLOW | SCARE | DARKNESS
+D:Yum! It looks quite tasty. It seems to glow with an unusual light.
+
+N:268:Plaguebearer of Nurgle
+G:z:o
+I:110:9d10:20:50:20
+W:15:2:2800:75
+E:1:1:1:2:1:1
+O:50:20:20:10
+B:CLAW:DISEASE:2d5
+B:CLAW:DISEASE:2d5
+B:BUTT:HURT:3d5
+F:FORCE_MAXHP | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | IM_COLD |
+F:EVIL | DEMON | UNDEAD | IM_POIS | NONLIVING | ZANGBAND | NO_CUT
+S:1_IN_8 |
+S:SCARE | S_ANT | CAUSE_2 | SLOW
+D:An unfortunate individual, who was killed by the incurable
+D:disease known as Nurgle's Rot, and was transformed into a
+D:rotting demon zombie. It has but one eye, and a single
+D:pale horn in its forehead.
+
+N:269:Guardian naga
+G:n:y
+I:110:24d11:20:65:120
+W:15:2:1900:80
+E:0:0:0:0:1:0
+O:0:0:80:20
+B:CRUSH:HURT:2d8
+B:BITE:HURT:1d8
+B:BITE:HURT:1d8
+F:FEMALE |
+F:RAND_25 | DROP_60 | DROP_1D2 | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:EVIL
+F:MORTAL | BASEANGBAND
+D:A giant snake-like figure with a woman's torso.
+
+N:270:Wererat
+G:r:D
+I:110:20d8:10:10:10
+W:15:2:30:55
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+B:BITE:HURT:2d6
+F:FORCE_SLEEP |
+F:ONLY_GOLD | DROP_60 | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | EVIL
+F:MORTAL | BASEANGBAND
+S:1_IN_9 |
+S:BLINK | CAUSE_2 | BO_COLD | BA_POIS | S_KIN
+D:A large rat with glowing red eyes, which can also assume human form. The wererat
+D:is a disgusting creature, relishing in filth and disease.
+
+N:271:Light hound
+G:Z:o
+I:110:6d6:30:30:0
+W:15:1:600:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+B:BITE:HURT:1d6
+F:FORCE_SLEEP | DROP_CORPSE |
+F:FRIENDS |
+F:BASH_DOOR |
+F:ANIMAL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BR_LITE
+D:A brilliant canine form whose light hurts your eyes, even at this distance.
+
+N:272:Dark hound
+G:Z:D
+I:110:6d6:30:30:0
+W:15:1:600:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+B:BITE:HURT:1d6
+F:FORCE_SLEEP | DROP_CORPSE |
+F:FRIENDS |
+F:BASH_DOOR | HURT_LITE |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_DARK
+D:A hole in the air in the shape of a huge hound. No light falls upon its
+D:form.
+
+N:273:Flying skull
+G:s:s
+I:110:10d10:30:30:20
+W:15:3:500:50
+E:0:0:0:0:1:0
+O:90:0:10:0
+B:BITE:POISON:1d3
+B:BITE:LOSE_STR:1d4
+F:UNDEAD | EVIL | IM_POIS | IM_COLD | WEIRD_MIND | NO_FEAR | CAN_FLY |
+F:NO_CONF | NO_SLEEP | DROP_60 | BASH_DOOR | FRIENDS | COLD_BLOOD |
+F:BASEANGBAND | NO_CUT
+D:A pack of skulls animated by necromantic spells.
+
+N:274:Mi-Go
+G:I:R
+I:120:13d8:20:30:20
+W:15:2:800:80
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:POISON:1d4
+B:BITE:LOSE_STR:1d2
+F:IM_POIS | IM_COLD | COLD_BLOOD | ANIMAL | EVIL |
+F:NO_SLEEP | NO_CONF | CAN_FLY | DROP_SKELETON | CTHANGBAND
+S:1_IN_6
+S:CONF | S_MONSTER | S_DEMON
+D:"They were pinkish things about five feet long; with crustaceous
+D:bodies bearing vast pairs of dorsal fins or membranous wings and
+D:several sets of articulate limbs, and with a sort of convoluted
+D:ellipsoid, covered with multitudes of very short antenna, where
+D:a head would ordinarily be..."
+
+N:275:Giant tarantula
+G:S:o
+I:120:10d15:8:32:80
+W:15:3:1100:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d6
+B:BITE:POISON:1d6
+B:BITE:POISON:1d6
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | SPIDER | IM_POIS | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:A giant spider with hairy black and red legs.
+
+N:276:Giant clear centipede
+G:c:B
+I:110:5d8:12:30:30
+W:15:2:400:30
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d4
+B:STING:HURT:2d4
+F:ATTR_CLEAR |
+F:INVISIBLE | WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:It is about four feet long and carnivorous.
+
+N:277:Mirkwood spider
+G:S:G
+I:120:9d8:15:25:80
+W:15:2:1200:25
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d8
+B:BITE:POISON:1d6
+B:BITE:POISON:1d6
+F:FRIENDS | WILD_TOO | WILD_WOOD |
+F:WEIRD_MIND | BASH_DOOR | HURT_LITE |
+F:ANIMAL | SPIDER | EVIL | IM_POIS | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:A strong and powerful spider from Mirkwood forest. Cunning and evil, it
+D:seeks to taste your juicy insides.
+
+N:278:Frost giant
+G:P:w
+I:110:32d15:20:50:50
+W:28:1:4000:180
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:COLD:5d8
+B:HIT:COLD:5d8
+F:DROP_60 | WILD_TOO | WILD_WASTE | WILD_MOUNTAIN |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | GIANT | MALE | AURA_COLD | SUSCEP_FIRE |
+F:IM_COLD | BASEANGBAND | HAS_LITE | MORTAL
+D:A twelve foot tall giant covered in furs.
+
+N:279:Griffon
+G:H:u
+I:110:30d8:12:15:10
+W:15:1:2500:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:HIT:HURT:3d4
+B:BITE:HURT:2d6
+F:BASH_DOOR | CAN_FLY | WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | WILD_GRASS |
+F:ANIMAL | DROP_CORPSE | MORTAL | BASEANGBAND
+D:It is half lion, half eagle. It flies menacingly towards you.
+
+N:280:Homunculus
+G:u:y
+I:110:8d8:20:32:30
+W:15:3:100:40
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:PARALYZE:1d2
+B:HIT:HURT:1d10
+F:OPEN_DOOR | BASH_DOOR | NONLIVING | CAN_FLY |
+F:EVIL | DEMON | IM_FIRE | NO_FEAR | BASEANGBAND | HAS_LITE
+D:It is a small demonic spirit full of malevolence.
+
+N:281:Gnome mage
+G:h:R
+I:110:7d8:20:20:20
+W:15:2:900:40
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:HIT:HURT:1d5
+F:MALE |
+F:FORCE_SLEEP | FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BLINK | DARKNESS | BO_COLD |
+S:S_MONSTER
+D:A mage of short stature.
+
+N:282:Clear hound
+G:Z:B
+I:110:6d6:30:30:0
+W:15:1:600:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d6
+B:CLAW:HURT:1d6
+B:BITE:HURT:1d8
+F:ATTR_CLEAR |
+F:FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:INVISIBLE | BASH_DOOR |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A faint sense of motion in the air, hound shaped, stands before you.
+
+N:283:Umber hulk
+G:X:U
+I:110:20d10:20:50:10
+W:16:1:5000:75
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:GAZE:CONFUSE
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:BITE:HURT:2d6
+F:EMPTY_MIND | COLD_BLOOD |
+F:BASH_DOOR | KILL_WALL | DROP_SKELETON |
+F:ANIMAL | EVIL |
+F:IM_POIS |
+F:HURT_ROCK | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:This bizarre creature has glaring eyes and large mandibles capable of
+D:slicing through rock.
+
+N:284:Rust monster
+G:q:o
+I:110:20d15:12:55:10
+W:16:2:900:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+F:STUPID | WEIRD_MIND | KILL_ITEM |
+F:IM_ACID | IM_POIS | DROP_CORPSE |
+F:NO_CONF |
+F:MORTAL | BASEANGBAND
+D:It is a weird, small animal with two antennae popping forth from
+D:its forehead. It looks hungry.
+
+N:285:Ogrillon
+G:O:W
+I:110:22d9:20:33:30
+W:16:2:2400:75
+E:1:1:1:2:1:1
+O:20:70:0:10
+B:HIT:HURT:2d10
+B:HIT:HURT:2d10
+F:FRIENDS | DROP_60 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | ORC |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:An unholy hybrid of ogre and orc.
+
+N:286:Gelatinous cube
+G:j:G
+I:110:36d10:12:18:1
+W:16:4:40000:80
+E:0:0:0:0:0:0
+O:40:30:20:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+F:FORCE_MAXHP |
+F:DROP_1D2 | DROP_4D2 |
+F:STUPID | EMPTY_MIND | COLD_BLOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange, vast gelatinous structure that assumes cubic proportions
+D:as it lines all four walls of the corridors it patrols. Through its
+D:transparent jelly structure you can see treasures it has engulfed, and a
+D:few corpses as well.
+
+N:287:Giant green dragon fly
+G:F:G
+I:110:3d8:12:20:50
+W:16:2:150:65
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d6
+F:FORCE_SLEEP | RAND_50 | RAND_25 | WILD_TOO | WILD_SWAMP |
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY |
+F:ANIMAL | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_POIS
+D:A vast, foul-smelling dragonfly.
+
+N:288:Fire giant
+G:P:r
+I:110:34d16:20:60:50
+W:30:1:5000:220
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:FIRE:6d8
+B:HIT:FIRE:6d8
+F:DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_VOLCANO | SUSCEP_COLD |
+F:EVIL | GIANT | MALE | AURA_FIRE | DROP_SKELETON | DROP_CORPSE |
+F:IM_FIRE | BASEANGBAND | HAS_LITE | MORTAL
+D:A glowing fourteen foot tall giant. Flames drip from its red skin.
+
+N:289:Hummerhorn
+G:I:y
+I:120:2d2:8:14:10
+W:16:4:100:4
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:CONFUSE:2d2
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:WEIRD_MIND | ANIMAL | BASEANGBAND
+S:MULTIPLY
+D:A giant buzzing wasp, its stinger drips venom.
+
+N:290:Lizard man
+G:h:G
+I:110:16d10:20:40:20
+W:16:3:1300:55
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:4d4
+B:HIT:HURT:4d4
+F:MALE | CAN_SWIM | IM_ACID |
+F:FRIENDS | DROP_60 | WILD_TOO | WILD_SHORE |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON
+F:EVIL
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:Intelligent lizard beings from the depths.
+
+N:291:Ulfast, Son of Ulfang
+G:p:U
+I:110:37d10:20:40:40
+W:16:3:1700:200
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:UNIQUE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:MALE |
+F:FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:A short and swarthy Easterling.
+
+N:292:Crebain
+G:B:D
+I:120:3d5:40:12:0
+W:16:4:500:20
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+F:ANIMAL | EVIL | MORTAL | FRIENDS | BASEANGBAND | DROP_CORPSE | HAS_EGG |
+F:WILD_TOO | WILD_WASTE | WILD_MOUNTAIN | WILD_WOOD | WILD_VOLCANO |
+F:WILD_GRASS | WILD_SWAMP | WILD_SHORE | WILD_OCEAN | CAN_FLY
+S:1_IN_8 | SHRIEK
+D:A type of crow, specially bred by the forces of evil as spies; their
+D:rudimentary intelligence guided by an evil mind has tracked you down,
+D:and now they seek to alert other evil creatures to your presence.
+
+N:293:Berserker
+G:p:u
+I:120:60d25:20:80:10
+W:45:2:2300:2500
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:7d7
+B:HIT:HURT:7d7
+B:HIT:HURT:7d7
+F:MALE | NO_FEAR | NO_STUN | BASH_DOOR | KILL_BODY | FORCE_MAXHP |
+F:DROP_SKELETON | DROP_CORPSE
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 | HASTE | SCARE
+D:Even the strongest of normal human warriors fears the Berserker - the one who
+D:can drive himself into such a terrible battle-frenzy that he can survive blows
+D:which should kill him, and still apparently feel no pain. He tramples weaker
+D:creatures underfoot in his eagerness to get to his real enemy, and his
+D:battle-cry strikes terror into his foes.
+
+N:294:Quasit
+G:u:o
+I:110:6d8:20:30:20
+W:16:2:500:50
+E:1:1:1:2:1:1
+O:0:50:30:10
+B:BITE:LOSE_DEX:1d6
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+F:FORCE_SLEEP | CAN_FLY |
+F:RAND_25 |
+F:ONLY_ITEM | DROP_1D2 |
+F:SMART | INVISIBLE | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | NONLIVING | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:BLINK | TPORT | TELE_TO | TELE_LEVEL | BLIND | CONF | SCARE
+D:The chaotic evil master's favourite pet.
+
+N:295:Sphinx
+G:H:o
+I:110:60d5:20:60:20
+W:17:2:6000:80
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+F:FORCE_SLEEP |
+F:ONLY_GOLD | DROP_1D2 | CAN_FLY | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_MOUNTAIN |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_11 |
+S:SCARE | CONF
+D:It will eat you if you cannot answer its riddle.
+
+N:296:Imp
+G:u:g
+I:110:6d8:20:30:20
+W:17:2:400:55
+E:0:1:1:0:1:0
+O:30:20:50:0
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+F:FORCE_SLEEP | CAN_FLY |
+F:RAND_25 |
+F:ONLY_ITEM | DROP_1D2 |
+F:SMART | INVISIBLE | COLD_BLOOD | BASH_DOOR |
+F:EVIL | DEMON | IM_FIRE | RES_TELE | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:BLINK | TPORT | TELE_TO | TELE_LEVEL | BLIND | CONF | SCARE | BO_FIRE
+D:The lawful evil master's favourite pet.
+
+N:297:Forest troll
+G:T:g
+I:110:20d10:20:50:40
+W:17:1:3000:70
+E:1:1:1:2:1:1
+O:30:70:0:0
+B:HIT:HURT:1d4
+B:HIT:HURT:1d4
+B:BITE:HURT:1d6
+F:MALE |
+F:FRIENDS | DROP_60 | WILD_TOO | WILD_WOOD | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | SUSCEP_FIRE | REGENERATE |
+F:EVIL | TROLL | HURT_LITE | BASEANGBAND
+D:He is green-skinned and ugly.
+
+
+N:298:Freezing sphere
+G:*:w
+I:120:6d6:100:30:0
+W:17:1:0:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:COLD:8d8
+F:FORCE_SLEEP | CAN_FLY | SUSCEP_FIRE | RAND_50 | RAND_25 |
+F:EMPTY_MIND | AURA_COLD |
+F:IM_COLD | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+D:A semi-sentient snowball, hurling itself at targets at random.
+
+N:299:Jumping fireball
+G:*:r
+I:120:6d6:100:30:0
+W:17:1:0:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:FIRE:8d8
+F:FORCE_SLEEP | CAN_FLY | SUSCEP_COLD |
+F:EMPTY_MIND | AURA_FIRE | RAND_50 | RAND_25 |
+F:IM_FIRE | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+D:A semi-sentient fireball that moves around randomly.
+
+N:300:Ball lightning
+G:*:B
+I:120:6d6:100:30:0
+W:17:1:0:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:ELEC:8d8
+F:FORCE_SLEEP | CAN_FLY | RAND_25 | RAND_50 |
+F:EMPTY_MIND | AURA_ELEC |
+F:IM_ELEC | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | HAS_LITE |NO_CUT
+D:A crackling ball of energy, zooming about seemingly at random.
+
+N:301:2-headed hydra
+G:M:u
+I:110:100d3:20:60:20
+W:17:2:4000:80
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:ONLY_GOLD | DROP_1D2 | CAN_SWIM | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | HAS_EGG | IMPRESED |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_11 |
+S:SCARE
+D:A strange reptilian creature with two heads, guarding its hoard.
+
+N:302:Swamp thing
+G:H:g
+I:110:8d12:20:60:30
+W:17:2:2000:80
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:TERRIFY:2d5
+B:CLAW:TERRIFY:5d2
+F:CAN_SWIM | OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_SWAMP
+F:MORTAL | BASEANGBAND
+D:A creature that was once human, but is now as green as moss.
+
+N:303:Water spirit
+G:E:b
+I:120:9d8:12:28:40
+W:17:2:0:58
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:RAND_25 |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR |
+F:IM_POIS | IM_ACID | CAN_FLY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A whirlpool of sentient liquid.
+
+N:304:Giant red scorpion
+G:S:r
+I:110:11d8:12:44:20
+W:17:1:1000:62
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d4
+B:STING:LOSE_STR:1d7
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:It is fast and poisonous.
+
+N:305:Earth spirit
+G:E:u
+I:120:13d8:10:40:50
+W:17:2:0:64
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:RAND_25 |
+F:EMPTY_MIND | COLD_BLOOD |
+F:PASS_WALL | CAN_FLY |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A whirling form of sentient rock.
+
+N:306:Fire spirit
+G:E:r
+I:120:10d9:16:30:20
+W:18:2:0:75
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:FIRE:2d6
+B:HIT:FIRE:2d6
+F:RAND_25 |
+F:EMPTY_MIND | BASH_DOOR | CAN_FLY | SUSCEP_COLD |
+F:IM_FIRE | IM_POIS | WILD_TOO | WILD_VOLCANO |
+F:NO_CONF | NO_SLEEP | NO_FEAR | AURA_FIRE | BASEANGBAND | HAS_LITE | NO_CUT
+D:A whirlwind of sentient flame.
+
+N:307:Fire hound
+G:Z:r
+I:110:10d6:30:30:0
+W:18:1:600:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:FIRE:2d6
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR | SUSCEP_COLD |
+F:ANIMAL | IM_FIRE | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:BR_FIRE
+D:Flames lick at its feet and its tongue is a blade of fire. You can feel a
+D:furnace heat radiating from the creature.
+
+N:308:Cold hound
+G:Z:w
+I:110:10d6:30:30:0
+W:18:1:600:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:COLD:2d6
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | IM_COLD | SUSCEP_FIRE |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_COLD
+D:A hound as tall as a man, this creature appears to be composed of angular
+D:planes of ice. Cold radiates from it and freezes your breath in the air.
+
+N:309:Energy hound
+G:Z:b
+I:110:10d6:30:30:0
+W:18:1:600:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:ELEC:2d6
+F:FORCE_SLEEP |
+F:FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR |
+F:ANIMAL | IM_ELEC |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:BR_ELEC
+D:Saint Elmo's Fire forms a ghostly halo around this hound, and sparks sting
+D:your fingers as energy builds up in the air around you.
+
+N:310:Lesser Mimic
+G:m:y
+I:110:10d10:25:30:250
+W:18:3:100:60
+E:0:0:0:0:0:0
+O:10:10:10:10
+B:HIT:POISON:3d4
+B:HIT:HURT:2d3
+B:HIT:HURT:2d3
+F:MIMIC |
+F:FORCE_SLEEP | NEVER_MOVE | SUSCEP_COLD |
+F:EMPTY_MIND | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BLIND | CONF | SCARE | CAUSE_2 | BO_COLD
+D:A strange creature that disguises itself as some object to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+N:311:Door mimic
+G:+:U
+I:110:10d10:25:30:0
+W:18:6:100:70
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:POISON:3d4
+B:HIT:CONFUSE:2d3
+B:HIT:PARALYZE:2d3
+F:CHAR_MULTI |
+F:FORCE_SLEEP | NEVER_MOVE |
+F:EMPTY_MIND | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BLIND | CONF | SCARE | CAUSE_2 | BO_COLD
+D:A strange creature that disguises itself as a door to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+N:312:Blink dog
+G:C:B
+I:120:8d8:20:20:10
+W:18:2:400:50
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d8
+F:RAND_25 | FRIENDS | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | RES_TELE | MORTAL | BASEANGBAND
+S:1_IN_4 | BLINK | TELE_TO
+D:A strange magical member of the canine race, its form seems to shimmer and
+D:fade in front of your very eyes.
+
+N:313:Uruk
+G:o:B
+I:110:8d10:20:50:20
+W:16:1:2300:60
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:MALE |
+F:FORCE_MAXHP | FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:ARROW_2
+D:It is a cunning orc of power, as tall as a man, and stronger. It fears
+D:little.
+
+N:314:Shagrat, the Orc Captain
+G:o:g
+I:110:42d10:20:60:20
+W:19:2:2600:400
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:3d9
+B:HIT:HURT:3d9
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | SPECIAL_GENE
+F:ESCORT | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is an orc of power and great cunning, leader of the garrison at Cirith Ungol.
+
+N:315:Gorbag, the Orc Captain
+G:o:g
+I:110:42d10:20:60:20
+W:19:2:2600:400
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:3d9
+B:HIT:HURT:3d9
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP |
+F:ESCORT | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is an orc of power and great cunning, leader of the garrison at Minas Morgul.
+
+N:316:Shambling mound
+G:,:g
+I:110:20d6:20:16:40
+W:18:2:3000:75
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:ONLY_GOLD | DROP_90 | WILD_TOO | WILD_SWAMP |
+F:STUPID | EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:SHRIEK
+D:A pile of rotting vegetation that slides towards you with a disgusting
+D:stench, waking all it nears.
+
+N:317:Giant Venus Flytrap
+G:#:g
+I:120:10d10:20:5:0
+W:15:5:200:30
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:PARALYZE:3d3
+B:HIT:PARALYZE:3d3
+B:HIT:PARALYZE:3d3
+F:NEVER_MOVE | EMPTY_MIND | STUPID | CHAR_CLEAR | CHAR_MULTI |
+F:WILD_ONLY | WILD_WOOD | WILD_SWAMP | ANIMAL | SUSCEP_FIRE | NO_CUT
+D:A carnivorous plant that is difficult to detect, until it suddenly snaps shut
+D:around its prey and releases paralysing enzymes to stop its struggles.
+
+N:318:Chaos beastman
+G:H:u
+I:110:20d8:20:50:30
+W:18:2:2300:75
+E:0:0:0:0:0:0
+O:25:45:20:0
+B:HIT:CONFUSE:3d5
+B:HIT:EXP_20:3d5
+F:DROP_1D2
+F:OPEN_DOOR | BASH_DOOR | NO_CONF | NO_SLEEP | DROP_CORPSE
+F:EVIL | IM_POIS | IM_FIRE | ATTR_ANY | ATTR_MULTI
+F:MORTAL | ZANGBAND
+S:1_IN_8
+S:MISSILE | BO_FIRE | CONF | TPORT
+D:A truly loathsome thing, twisted by chaos, it is a mixture
+D:of several different kinds of creature.
+
+N:319:Daemonette of Slaanesh
+G:u:R
+I:120:12d8:20:50:30
+W:18:2:2000:75
+E:1:1:1:0:1:1
+O:30:0:30:40
+B:CLAW:CONFUSE:3d5
+B:CLAW:CONFUSE:3d5
+F:FORCE_MAXHP | DROP_60 | FEMALE |
+F:OPEN_DOOR | BASH_DOOR | IM_COLD | NO_CONF | NO_SLEEP |
+F:EVIL | DEMON | IM_POIS | IM_FIRE | ZANGBAND
+S:1_IN_8
+S:SCARE | S_DEMON | CAUSE_2 | CONF | BO_FIRE | BO_COLD
+D:It is minor female demon, vaguely human-like, but with crab-like
+D:pincers instead of hands. She wears a rather indecent skimpy
+D:leather bikini, moves quickly and casts deadly spells!
+
+N:320:Giant bronze dragon fly
+G:F:U
+I:120:3d8:12:20:50
+W:18:2:150:80
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:CONFUSE:1d6
+F:FORCE_SLEEP | RAND_50 | RAND_25 | CAN_FLY |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | WILD_MOUNTAIN |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_CONF
+D:This vast gleaming bronze fly has wings which beat mesmerically fast.
+
+N:321:Stone giant
+G:P:W
+I:110:35d18:20:75:50
+W:33:1:7000:250
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+F:DROP_60 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | GIANT | MALE | WILD_TOO | WILD_MOUNTAIN | BASEANGBAND | HAS_LITE
+D:It is eighteen feet tall and looking at you.
+
+N:322:Giant black dragon fly
+G:F:s
+I:120:3d8:12:20:50
+W:20:2:150:70
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:ACID:1d6
+F:FORCE_SLEEP | RAND_50 | RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY | WILD_TOO | WILD_SWAMP |
+F:ANIMAL | IM_ACID |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_ACID
+D:The size of a large bird, this fly drips caustic acid.
+
+N:323:Stone golem
+G:g:W
+I:100:28d8:12:75:10
+W:19:2:3500:100
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+F:COLD_BLOOD | EMPTY_MIND | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+D:It is a massive animated statue.
+
+N:324:Red mold
+G:m:r
+I:110:17d8:2:16:70
+W:19:1:40:64
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:FIRE:4d4
+F:NEVER_MOVE | SUSCEP_COLD |
+F:STUPID | EMPTY_MIND |
+F:IM_FIRE | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange red growth on the dungeon floor; it seems to burn with
+D:flame.
+
+N:325:Giant gold dragon fly
+G:F:y
+I:120:3d8:12:20:50
+W:22:2:150:75
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:FORCE_SLEEP |
+F:RAND_50 | RAND_25 | WILD_TOO | WILD_MOUNTAIN |
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | IM_FIRE | CAN_FLY |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_SOUN
+D:Large beating wings support this dazzling insect. A loud buzzing noise
+D:pervades the air.
+
+N:326:Stunwall
+G:#:W
+I:110:4d8:45:25:0
+W:18:5:1000:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:PARALYZE:10d1
+B:TOUCH:PARALYZE:10d1
+F:NEVER_MOVE | IM_COLD | COLD_BLOOD | IM_ACID | IM_ELEC | NO_FEAR |
+F:IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | CHAR_MULTI |
+F:EMPTY_MIND | HURT_ROCK | ZANGBAND | NO_CUT
+D:A sentient section of wall.
+
+N:327:Ghast
+G:z:u
+I:120:30d10:40:40:20
+W:30:1:1500:130
+E:1:1:1:2:1:1
+O:20:35:25:10
+B:CLAW:PARALYZE:2d4
+B:CLAW:PARALYZE:2d4
+B:BITE:LOSE_CON:2d4
+B:BITE:LOSE_CHR:2d4
+F:DROP_60 | OPEN_DOOR | BASH_DOOR | ESCORT |
+F:NO_SLEEP | NO_CONF | UNDEAD | EVIL | IM_POIS | IM_COLD |
+F:COLD_BLOOD | HURT_LITE | CAN_SWIM | BASEANGBAND | NO_CUT
+D:This vile abomination is a relative of ghouls, and often leads packs
+D:of them. It smells foul, and its bite carries a rotting disease.
+
+N:328:Neekerbreeker
+G:I:D
+I:120:3d2:8:18:10
+W:19:4:100:4
+B:BITE:POISON:2d2
+F:RAND_50 | RAND_25 | CAN_FLY | WILD_SWAMP | WILD_TOO |
+F:WEIRD_MIND | ANIMAL | EVIL | BASEANGBAND
+S:MULTIPLY |
+S:1_IN_12 |
+S:SHRIEK
+D:Believed to be an evil relative of the cricket, this creature gets its name
+D:from its incessant squeaking, which can best be described as "neek-breek,
+D:neek-breek". The noise can drive people frantic, and worse still, can be
+D:heard for quite some distance, alerting other monsters to your presence.
+
+N:329:Huorn
+G:#:g
+I:110:50d10:40:45:20
+W:19:1:4000:75
+E:0:0:0:0:0:0
+O:30:30:30:5
+B:CRUSH:HURT:3d6
+B:CRUSH:HURT:3d6
+B:CRUSH:HURT:3d6
+B:CRUSH:HURT:3d6
+F:DROP_60 | NO_SLEEP | NO_CONF | ANIMAL | WEIRD_MIND | SUSCEP_FIRE |
+F:RES_WATE | IM_COLD | NEVER_MOVE | WILD_ONLY | WILD_WOOD |
+F:BASEANGBAND | NO_CUT
+S:1_IN_9
+S:BLINK | TELE_TO
+D:A very strong near-sentient tree, which has become hostile to other living things.
+
+N:330:Bolg, Son of Azog
+G:o:v
+I:120:52d10:20:50:20
+W:20:4:2300:800
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:3d7
+B:HIT:HURT:3d7
+B:HIT:HURT:3d7
+B:HIT:HURT:3d7
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | SPECIAL_GENE |
+F:ESCORT | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A large and powerful orc, he looks just like his father. He is tall and
+D:fast, but fortunately blessed with orcish brains.
+
+N:331:Phase spider
+G:S:B
+I:120:6d8:15:25:80
+W:20:2:500:60
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d8
+B:BITE:POISON:1d6
+B:BITE:POISON:1d6
+F:FRIENDS | WILD_TOO | WILD_WOOD | DROP_SKELETON |
+F:WEIRD_MIND | BASH_DOOR | CAN_SWIM |
+F:ANIMAL | SPIDER | IM_POIS | RES_TELE |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BLINK | TELE_TO
+D:A spider that never seems quite there. Everywhere you look it is just
+D:half-seen in the corner of one eye.
+
+N:332:Lizard king
+G:h:g
+I:120:18d11:20:40:20
+W:20:3:1600:150
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:WAIL:TERRIFY
+F:MALE | CAN_SWIM | IM_ACID | IM_POIS | WILD_SHORE |
+F:DROP_60 | DROP_1D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | FORCE_MAXHP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A lizardman leader.
+
+N:333:Landmine
+G:.:w
+I:110:6d6:30:25:10
+W:20:5:300:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:HURT:25d2
+F:CHAR_CLEAR | ATTR_CLEAR | CHAR_MULTI |
+F:NEVER_MOVE | FORCE_MAXHP |
+F:EMPTY_MIND | INVISIBLE | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | JOKEANGBAND | NO_CUT
+D:It was left here to be used against intruders.
+
+N:334:Wyvern
+G:d:g
+I:120:100d5:20:65:20
+W:22:2:4500:250
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+B:STING:POISON:1d6
+F:FORCE_SLEEP |
+F:ONLY_GOLD | DROP_2D2 | IM_POIS | CAN_FLY | HAS_EGG |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | DROP_CORPSE |
+F:WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_SKELETON |
+F:ANIMAL | EVIL | DRAGON | BASEANGBAND | ATTR_MULTI
+D:A fast-moving and deadly draconian animal. Beware its poisonous sting!
+
+N:335:Great eagle
+G:B:u
+I:120:100d5:20:65:20
+W:20:2:1000:150
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:6d3
+B:CLAW:HURT:6d3
+B:BITE:HURT:3d6
+F:CAN_FLY |
+F:WILD_ONLY | WILD_MOUNTAIN | WILD_VOLCANO | WILD_WASTE | WILD_WOOD |
+F:ANIMAL | GOOD | DROP_CORPSE | BASEANGBAND | HAS_EGG
+D:Greater and more intelligent than most of its kind, this great eagle is
+D:a messenger between the forces of good.
+
+N:336:Livingstone
+G:#:W
+I:110:6d8:45:28:20
+W:20:4:1000:56
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d5
+B:HIT:HURT:2d5
+F:NEVER_MOVE | IM_COLD | COLD_BLOOD | IM_ACID | IM_ELEC | NO_FEAR |
+F:IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | FRIENDS | CHAR_MULTI | HURT_ROCK |
+F:BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:A sentient section of wall.
+
+N:337:Earth hound
+G:Z:u
+I:110:15d8:30:30:0
+W:20:1:600:200
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d8
+B:BITE:HURT:1d8
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP |
+F:FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR |
+F:ANIMAL | MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_10 |
+S:BR_SHAR
+D:A beautiful crystalline shape does not disguise the danger this hound
+D:clearly presents. Your flesh tingles as it approaches.
+
+N:338:Air hound
+G:Z:g
+I:110:15d8:30:30:0
+W:20:1:600:200
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d8
+B:BITE:POISON:1d8
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP |
+F:FRIENDS | CAN_FLY |
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_POIS
+D:Swirling vapours surround this beast as it floats towards you, seemingly
+D:walking on air. Noxious gases sting your throat.
+
+N:339:Sabre-tooth tiger
+G:f:y
+I:120:20d14:40:50:0
+W:20:2:1800:120
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d10
+B:CLAW:HURT:1d10
+B:BITE:HURT:1d10
+B:BITE:HURT:1d10
+F:BASH_DOOR | WILD_WOOD | WILD_TOO | WILD_GRASS |
+F:ANIMAL | DROP_SKELETON | DROP_CORPSE
+F:MORTAL | BASEANGBAND
+D:A fierce and dangerous cat, its huge tusks and sharp claws would lacerate
+D:even the strongest armour.
+
+N:340:Acid hound
+G:Z:s
+I:110:15d8:30:30:0
+W:20:1:600:200
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:ACID:1d8
+B:BITE:ACID:1d8
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR | CAN_SWIM | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | IM_ACID | MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BR_ACID
+D:Footprints are burned in the ground behind this hound as it pads
+D:around the dungeon. An acrid smell of acid rises from the dog's pelt.
+
+N:341:Chimaera
+G:H:r
+I:110:20d15:12:15:10
+W:20:2:1600:200
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BUTT:HURT:2d8
+B:BITE:HURT:2d10
+B:BITE:FIRE:2d6
+F:FORCE_SLEEP | CAN_FLY | DROP_CORPSE | SUSCEP_COLD |
+F:BASH_DOOR | WILD_TOO | WILD_MOUNTAIN |
+F:IM_FIRE | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_10 |
+S:BR_FIRE
+D:It is a strange concoction of goat, lion and dragon, with the heads of all
+D:three beasts.
+
+N:342:Quylthulg
+G:Q:y
+I:110:6d8:10:1:0
+W:20:1:3000:250
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | NEVER_MOVE | NEVER_BLOW
+F:EMPTY_MIND | INVISIBLE | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_4 |
+S:BLINK |
+S:S_MONSTER
+D:It is a strange pulsing mound of flesh.
+
+N:343:Sasquatch
+G:Y:W
+I:120:20d19:15:40:10
+W:20:3:3500:180
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:1d10
+B:CLAW:HURT:1d10
+B:BITE:HURT:2d8
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD | WILD_WASTE |
+F:ANIMAL | IM_COLD | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A tall shaggy, furry humanoid, it could call the yeti brother.
+
+N:344:Weir
+G:C:W
+I:110:10d12:15:30:40
+W:20:2:2010:150
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BITE:HURT:1d8
+B:BITE:HURT:1d8
+F:RAND_25 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | EVIL | FRIENDS |
+F:MORTAL | ZANGBAND
+D:It is a tracker; half human, half beast.
+
+N:345:Ranger
+G:p:W
+I:110:15d11:20:40:40
+W:20:1:1700:55
+E:1:1:1:2:1:1
+O:20:50:20:0
+B:HIT:HURT:5d4
+B:HIT:HURT:5d4
+F:MALE |
+F:DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:DROP_SKELETON | DROP_CORPSE | BASEANGBAND | MORTAL | HAS_LITE
+S:1_IN_4 |
+S:ARROW_2 | MISSILE | BO_COLD | BO_ELEC | BLINK | S_ANIMAL
+D:A warrior who is at one with nature. A master of both bow and sword, with
+D:minor spellcasting skills.
+
+N:346:Paladin
+G:p:w
+I:110:15d11:20:40:40
+W:20:1:1700:55
+E:1:1:1:2:1:1
+O:20:60:0:10
+B:HIT:HURT:4d5
+B:HIT:HURT:4d5
+F:MALE | GOOD | DROP_SKELETON | DROP_CORPSE |
+F:DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:BASEANGBAND | MORTAL | HAS_LITE
+S:1_IN_4 |
+S:HEAL | CAUSE_2 | SLOW | SCARE | BLIND
+D:A warrior for a holy cause. Unfortunately, his god is not yours, and there is
+D:rivalry even between the various gods of Good, so he is your enemy.
+
+N:347:Werewolf
+G:C:D
+I:110:20d22:15:30:70
+W:20:2:900:150
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d10
+F:RAND_25 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON |
+F:ANIMAL | EVIL | MORTAL | BASEANGBAND
+D:It is a huge wolf with eyes that glow with manly intelligence.
+
+N:348:Dark elven lord
+G:h:s
+I:120:18d15:20:40:30
+W:20:2:1400:500
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d5
+F:MALE | FORCE_SLEEP |
+F:ONLY_ITEM | DROP_2D2 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:HASTE | BLIND | CONF | DARKNESS | BO_FIRE | BO_COLD | MISSILE
+D:A dark elven figure in armour and radiating evil power.
+
+N:349:Cloud giant
+G:P:b
+I:110:35d20:20:60:50
+W:36:1:9000:500
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:ELEC:8d8
+B:HIT:ELEC:8d8
+F:DROP_90 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | GIANT | IM_ELEC | MALE | BASEANGBAND | HAS_LITE
+D:It is a twenty foot tall giant wreathed in clouds.
+
+N:350:Ugluk, the Uruk
+G:o:v
+I:110:72d10:20:95:20
+W:21:3:2400:600
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ESCORT |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_FIRE | IM_COLD | IM_POIS
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A strong and cunning orc warrior, the commander of Saruman's orcish horde.
+
+N:351:Blue dragon bat
+G:b:b
+I:130:4d4:12:26:50
+W:21:1:100:54
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:ELEC:1d3
+F:FORCE_SLEEP |
+F:RAND_50 |
+F:BASH_DOOR | CAN_FLY |
+F:ANIMAL | IM_ELEC | AI_ANNOY
+F:MORTAL | BASEANGBAND
+S:1_IN_4 |
+S:BR_ELEC
+D:It is a glowing blue bat with a sharp tail.
+
+N:352:Mimic
+G:m:y
+I:110:10d14:30:40:0
+W:21:3:100:70
+E:0:0:0:0:0:0
+O:20:20:20:20
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+B:HIT:HURT:2d3
+B:HIT:HURT:2d3
+F:MIMIC |
+F:FORCE_SLEEP | NEVER_MOVE |
+F:EMPTY_MIND | COLD_BLOOD | SUSCEP_FIRE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BLIND | CONF | SCARE | CAUSE_2 | BO_FIRE |
+S:S_MONSTER
+D:A strange creature that disguises itself as an object to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+N:353:Ultimate Mimic
+G:m:y
+I:110:15d40:30:40:0
+W:35:4:100:250
+E:0:0:0:0:0:0
+O:25:25:25:25
+B:BITE:POISON:4d4
+B:BITE:POISON:4d4
+B:BUTT:CONFUSE:4d4
+B:SPIT:BLIND:4d4
+F:MIMIC |
+F:FORCE_SLEEP | NEVER_MOVE |
+F:EMPTY_MIND | COLD_BLOOD
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BLIND | CONF | SCARE | CAUSE_2 | BA_POIS |
+S:S_MONSTER
+D:A strange creature that disguises itself as an object to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+
+N:354:Fire vortex
+G:v:r
+I:110:9d9:100:30:0
+W:21:1:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:FIRE:3d3
+F:FORCE_SLEEP | RAND_50 | CAN_FLY | WILD_VOLCANO | WILD_TOO | SUSCEP_COLD |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | AURA_FIRE |
+F:IM_FIRE | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | HAS_LITE
+F:NO_CUT
+S:1_IN_6 |
+S:BR_FIRE
+D:A whirling maelstrom of fire.
+
+N:355:Acid vortex
+G:v:s
+I:110:9d9:100:30:0
+W:21:1:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:ACID:3d3
+F:FORCE_SLEEP | RAND_50 |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | CAN_FLY |
+F:IM_ACID | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_ACID
+D:A caustic spinning whirlpool of foaming, steaming water.
+
+N:356:Lugdush, the Uruk
+G:o:v
+I:110:66d10:20:90:20
+W:21:4:2500:550
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ESCORT |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A large and powerful orc, captain of one of Saruman's orcish regiments.
+
+N:357:Arch-vile
+G:u:W
+I:130:11d11:100:30:0
+W:21:1:100:300
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:3d9
+B:CLAW:HURT:3d9
+F:RAND_50 | EVIL | DEMON | FORCE_SLEEP | FORCE_MAXHP |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | COLD_BLOOD |
+F:IM_FIRE | RES_NETH | NO_CONF | NO_SLEEP | NONLIVING | NO_STUN |
+F:ZANGBAND
+S:1_IN_3 |
+S:BA_FIRE | ANIM_DEAD
+D:A pale, corpse-like lesser demon, who moves very fast and spawns evil
+D:everywhere.
+
+N:358:Cold vortex
+G:v:w
+I:110:9d9:100:30:0
+W:21:1:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:COLD:3d3
+F:FORCE_SLEEP | RAND_50 | AURA_COLD | COLD_BLOOD | SUSCEP_FIRE |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | CAN_FLY |
+F:IM_COLD | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_COLD
+D:A twisting whirlpool of frost.
+
+N:359:Energy vortex
+G:v:b
+I:110:9d9:100:30:0
+W:21:1:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:ELEC:3d3
+F:FORCE_SLEEP | RAND_50 | CAN_FLY | HAS_LITE |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | AURA_ELEC |
+F:IM_ELEC | NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_ELEC
+D:A shimmering tornado of air, sparks crackle along its length.
+
+N:360:Globefish
+G:~:w
+I:110:10d10:20:30:30
+W:21:1:600:111
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:POISON:10d5
+B:BITE:POISON:10d5
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | AQUATIC |
+F:IM_POIS | NO_STUN | WILD_TOO | COLD_BLOOD |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_8 |
+S:BR_POIS
+D:This fish is among the most poisonous creatures there are.
+
+N:361:Giant firefly
+G:I:r
+I:120:3d2:8:18:10
+W:24:4:100:4
+B:BITE:BLIND:1d2
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:WEIRD_MIND | ANIMAL | BASEANGBAND
+S:MULTIPLY
+D:Clouds of these monsters light up the dungeon - so brightly that you can
+D:barely see through them.
+
+N:362:Mummified orc
+G:z:w
+I:110:15d8:20:28:75
+W:21:1:1700:56
+E:1:1:1:2:1:1
+O:10:70:0:10
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:DROP_90 |
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is an orcish figure covered in wrappings.
+
+N:363:Wolf chieftain
+G:C:D
+I:120:22d22:20:20:5
+W:26:5:1000:120
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d10
+B:WAIL:TERRIFY
+F:ESCORTS | FORCE_MAXHP | IM_COLD | IM_ACID |
+F:SMART | ESCORT | ANIMAL | EVIL | MORTAL | BASEANGBAND |
+F:OPEN_DOOR | BASH_DOOR | NO_FEAR | MALE
+S:1_IN_8 | DARKNESS
+D:A great wolf-chieftain whose pack is in the service of the Dark Lord,
+D:and whose howls strike fear into even the boldest heart.
+
+N:364:Serpent man
+G:J:G
+I:120:15d10:20:40:20
+W:22:3:900:75
+E:1:1:1:2:1:1
+O:25:20:25:20
+B:BITE:POISON:5d5
+B:BITE:POISON:5d5
+F:MALE | CAN_SWIM | IM_POIS | IM_ACID |
+F:DROP_60 | DROP_2D2 | FRIENDS | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | EVIL | MORTAL | ZANGBAND
+S:1_IN_8
+S:BA_POIS | S_MONSTER | SCARE | HOLD
+D:"They walked lithely and sinuously erect on pre-mammalian
+D:members, their pied and hairless bodies bending with great
+D:suppleness. There was a loud hissing of formulae as they
+D:went to and fro."
+
+N:365:Vampiric mist
+G:#:D
+I:110:10d8:12:55:30
+W:22:1:0:40
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:EXP_20:1d6
+B:ENGULF:EXP_20:1d6
+F:RAND_25 | SUSCEP_ELEC | UNDEAD |
+F:IM_COLD | IM_POIS | IM_ACID | RES_NETH | WILD_TOO | WILD_SWAMP |
+F:EVIL | EMPTY_MIND | COLD_BLOOD | FRIENDS | BASEANGBAND | NO_CUT
+D:A cloud of evil, sentient mist.
+
+N:366:Killer stag beetle
+G:K:g
+I:110:15d8:12:55:30
+W:22:1:500:80
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d12
+B:CLAW:HURT:1d12
+F:RAND_25 | WILD_TOO | DROP_CORPSE |
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | CAN_FLY | MORTAL | BASEANGBAND
+D:It is a giant beetle with vicious claws.
+
+N:367:Iron golem
+G:g:s
+I:110:80d12:12:80:10
+W:22:2:3800:160
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d12
+F:FORCE_SLEEP | SUSCEP_ACID |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:SLOW
+D:It is a massive metal statue that moves steadily towards you.
+
+N:368:Auto-roller
+G:g:s
+I:120:70d12:10:80:12
+W:22:2:0:230
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:1d8
+B:CRUSH:HURT:1d8
+B:CRUSH:HURT:1d8
+B:CRUSH:HURT:1d8
+F:FORCE_SLEEP | RES_TELE
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | JOKEANGBAND | NO_CUT
+D:It looks like a huge spiked roller, moving on its own towards you.
+
+N:369:Giant yellow scorpion
+G:S:y
+I:110:12d8:12:38:20
+W:22:1:1200:60
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d8
+B:STING:POISON:2d5
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO |
+F:ANIMAL | DROP_SKELETON |
+F:MORTAL | BASEANGBAND
+D:It is a giant scorpion with a sharp stinger.
+
+N:370:Jade monk
+G:p:G
+I:120:10d9:22:45:5
+W:23:1:1200:100
+E:1:1:1:2:1:1
+O:30:0:60:10
+B:KICK:HURT:4d1
+B:KICK:HURT:4d1
+B:HIT:HURT:4d5
+B:HIT:HURT:4d5
+F:OPEN_DOOR | BASH_DOOR | NO_FEAR | NO_CONF | NO_SLEEP |
+F:MALE | DROP_60 | DROP_1D2 | IM_FIRE | IM_COLD | IM_POIS |
+F:DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | ZANGBAND | HAS_LITE
+D:A monk trained in martial arts.
+
+N:371:Black ooze
+G:j:D
+I:90:6d8:10:6:1
+W:23:1:400:7
+E:0:0:0:0:0:0
+O:30:0:40:15
+B:TOUCH:ACID:2d6
+F:RAND_50 | DROP_60 | STUPID | EMPTY_MIND | CAN_SWIM |
+F:TAKE_ITEM | KILL_BODY | OPEN_DOOR | BASH_DOOR |
+F:IM_POIS | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:MULTIPLY
+S:1_IN_11 |
+S:DRAIN_MANA
+D:It is a strangely moving puddle.
+
+N:372:Hardened warrior
+G:p:u
+I:110:15d11:20:40:40
+W:23:1:1900:60
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d5
+B:HIT:HURT:6d5
+F:MALE |
+F:DROP_1D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:A scarred warrior who moves with confidence.
+
+N:373:Azog, King of the Uruk-Hai
+G:o:v
+I:120:94d10:20:80:20
+W:23:5:2700:1111
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:5d6
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ESCORT | ESCORTS | SPECIAL_GENE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is also known as the King of Khazad-dum. His ego is renowned to be
+D:bigger than his head.
+
+N:374:Fleshhound of Khorne
+G:C:R
+I:120:25d25:15:30:70
+W:30:3:700:150
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:4d1
+B:CLAW:HURT:4d1
+B:BITE:HURT:6d1
+B:BITE:HURT:6d1
+F:BASH_DOOR | DEMON | NO_STUN | NO_FEAR |
+F:ANIMAL | EVIL | IM_FIRE | NO_SLEEP | NO_CONF |
+F:RES_NETH | RES_NEXU | RES_DISE | RES_PLAS | ZANGBAND
+D:A revolting canine creature, a huge demon hound with a somewhat
+D:reptilian head.
+
+N:375:Dark elven warlock
+G:h:v
+I:120:7d10:20:16:20
+W:23:1:1700:75
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:MALE |
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | FRIENDS
+F:EVIL | IM_POIS | HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:CONF | MISSILE | DARKNESS | BO_MANA
+D:A dark elven mage with spells of frightening destructive power.
+
+N:376:Master rogue
+G:p:b
+I:120:15d9:20:30:40
+W:23:2:1600:110
+E:1:1:1:2:1:1
+O:80:10:10:0
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+B:HIT:EAT_GOLD:4d4
+F:MALE | DROP_SKELETON | DROP_CORPSE |
+F:DROP_2D2 | SUSCEP_ELEC |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+D:A thief of great power and shifty speed.
+
+N:377:Red dragon bat
+G:b:r
+I:130:3d8:12:28:50
+W:23:1:100:60
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:FIRE:1d3
+F:FORCE_SLEEP | RAND_50 | SUSCEP_COLD |
+F:BASH_DOOR | CAN_FLY | DROP_CORPSE | AI_ANNOY
+F:ANIMAL | IM_FIRE | BASEANGBAND
+S:1_IN_4 |
+S:BR_FIRE
+D:It is a sharp-tailed bat, wreathed in fire.
+
+N:378:Killer white beetle
+G:K:w
+I:110:18d8:14:55:30
+W:23:1:500:85
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:4d5
+F:RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_CORPSE |
+F:ANIMAL | CAN_FLY | MORTAL | BASEANGBAND
+D:It is looking for prey.
+
+N:379:Ice skeleton
+G:s:w
+I:110:16d9:20:34:60
+W:23:1:0:70
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:CLAW:COLD:2d3
+B:CLAW:COLD:2d3
+F:ONLY_ITEM | DROP_90 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | SUSCEP_FIRE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a skeleton covered in frost.
+
+N:380:Angamaite of Umbar
+G:p:U
+I:110:82d10:25:80:25
+W:24:2:2400:400
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:HIT:HURT:4d7
+B:HIT:HURT:4d7
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | IM_ELEC
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:SLOW | FORGET
+D:A Black Numenorean who hates the men of the west.
+
+N:381:Forest wight
+G:W:g
+I:110:12d8:20:30:30
+W:24:1:0:140
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:TOUCH:EXP_20
+F:FORCE_SLEEP | RAND_25 |
+F:DROP_60 | DROP_90 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_10 |
+S:SCARE | DRAIN_MANA
+D:It is a ghostly apparition with a humanoid form.
+
+N:382:Khim, Son of Mim
+G:h:o
+I:110:84d10:20:80:10
+W:24:2:2300:300
+E:1:1:1:2:1:1
+O:10:80:0:10
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:HURT:3d7
+B:HIT:UN_BONUS
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:IM_FIRE | IM_COLD
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:HEAL | SLOW | BO_FIRE
+D:One of the last of the Petty-Dwarves. Khim is a tricky sorcerous little
+D:being, full of mischief.
+
+N:383:Ibun, Son of Mim
+G:h:o
+I:110:84d10:20:80:10
+W:24:2:2300:300
+E:1:1:1:2:1:1
+O:10:80:0:5
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:HURT:3d7
+B:HIT:UN_BONUS
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:IM_FIRE | IM_COLD
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:HEAL | SLOW | BO_FIRE
+D:One of the last of the Petty-Dwarves. Ibun is a tricky sorcerous little
+D:being, full of mischief.
+
+N:384:Meneldor the Swift
+G:B:u
+I:140:80d10:20:65:20
+W:24:6:1200:360
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:7d3
+B:CLAW:HURT:7d3
+B:BITE:HURT:3d7
+F:CAN_FLY | UNIQUE | FORCE_MAXHP | DROP_CORPSE | CAN_SPEAK |
+F:WILD_ONLY | WILD_MOUNTAIN | WILD_VOLCANO | PET |
+F:ANIMAL | GOOD | BASEANGBAND
+D:Among all the eagles of Middle-earth he is the swiftest, and in his time
+D:has borne messages between all of the Wise. It was Meneldor who bore the
+D:Ring-bearer away from the destruction of Mount Doom.
+
+N:385:Phantom beast
+G:G:B
+I:110:12d12:20:40:40
+W:24:1:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d33
+B:HIT:HURT:2d44
+F:PASS_WALL | NO_SLEEP | COLD_BLOOD | NONLIVING | NO_FEAR |
+F:FORCE_MAXHP | RES_TELE | EMPTY_MIND | CAN_FLY | BASEANGBAND | NO_CUT
+D:A creature that is half real, half illusion.
+
+N:386:Giant silver ant
+G:a:W
+I:110:9d8:10:38:40
+W:23:1:800:45
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:ACID:4d4
+F:RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_SKELETON |
+F:ANIMAL | MORTAL | BASEANGBAND | HAS_LITE
+D:A giant silver ant with a caustic bite.
+
+N:387:4-headed hydra
+G:M:y
+I:120:100d6:20:70:20
+W:24:2:5000:450
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+F:FORCE_SLEEP |
+F:ONLY_GOLD | DROP_4D2 | WILD_TOO | WILD_SWAMP | WILD_SHORE |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_7 |
+S:SCARE
+D:A strange reptilian creature with four heads, guarding its hoard.
+
+N:388:Lesser hell-beast
+G:U:s
+I:115:15d100:10:100:50
+W:24:4:4000:400
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:GAZE:TERRIFY:1d4
+B:GAZE:TERRIFY:1d4
+B:CRUSH:HURT:44d1
+F:EVIL | IM_ACID | IM_ELEC | IM_FIRE | IM_POIS | IM_COLD |
+F:RES_NETH | RES_WATE | RES_PLAS | RES_DISE | RES_NEXU |
+F:KILL_WALL | FORCE_MAXHP | CAN_SWIM | DROP_CORPSE | JOKEANGBAND | HAS_LITE
+S:1_IN_9 |
+S:TPORT | BLINK | TELE_AWAY
+D:This creature just might crush you.
+
+N:389:Tyrannosaur
+G:R:g
+I:120:200d3:20:70:20
+W:24:2:5000:350
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d6
+B:CLAW:HURT:1d6
+B:BITE:HURT:3d6
+B:BITE:HURT:3d6
+F:FORCE_SLEEP |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | DROP_CORPSE |
+F:ANIMAL | MORTAL | ZANGBAND
+D:A horror from prehistory, reawakened by chaos.
+
+N:390:Mummified human
+G:z:w
+I:110:17d9:20:34:60
+W:24:1:1500:70
+E:1:1:1:2:1:1
+O:20:40:20:10
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:ONLY_ITEM | DROP_90 |
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a human form encased in mouldy wrappings.
+
+N:391:Vampire bat
+G:b:D
+I:120:9d10:12:40:50
+W:24:2:50:150
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:EXP_40:1d4
+B:BITE:EXP_40:1d4
+F:RAND_50 | COLD_BLOOD | REGENERATE | CAN_FLY |
+F:EVIL | ANIMAL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:A blood-sucking bat that flies at your neck hungrily.
+
+N:392:Sangahyando of Umbar
+G:p:U
+I:110:82d10:25:80:25
+W:24:2:2400:400
+E:1:1:1:2:1:1
+O:0:90:10:0
+B:HIT:HURT:4d7
+B:HIT:HURT:4d7
+B:HIT:HURT:4d7
+B:HIT:HURT:4d7
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | IM_ELEC
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:SLOW | FORGET
+D:A Black Numenorean with a blacker heart.
+
+N:393:It
+G:.:W
+I:110:77d9:25:80:25
+W:24:3:500:400
+E:0:0:0:0:0:0
+O:10:0:90:0
+B:GAZE:BLIND:8d8
+B:TOUCH:TERRIFY
+B:GAZE:EXP_40
+B:TOUCH:EAT_ITEM
+F:ONLY_ITEM | DROP_90 | DROP_1D2 | DROP_GOOD | DROP_GREAT | DROP_CORPSE |
+F:CHAR_MULTI | CHAR_CLEAR | ATTR_CLEAR | INVISIBLE | COLD_BLOOD |
+F:NO_CONF | UNIQUE | FORCE_MAXHP | NO_SLEEP | CAN_SPEAK | REFLECTING |
+F:IM_FIRE | IM_ELEC | EMPTY_MIND | EVIL | SMART | RES_TELE | CAN_FLY |
+F:ZANGBAND
+S:1_IN_4
+S:DRAIN_MANA | BLINK | BLIND | SCARE | CONF | S_UNDEAD | S_MONSTER |
+S:HEAL | TELE_AWAY | DARKNESS | S_HYDRA | TRAPS | FORGET | TELE_TO | SHRIEK
+D:Nobody has ever seen It.
+
+N:394:Banshee
+G:G:b
+I:120:6d8:20:24:10
+W:24:2:0:60
+E:0:0:0:0:0:0
+O:80:0:0:15
+B:WAIL:TERRIFY
+B:TOUCH:EXP_20
+F:FEMALE |
+F:RAND_50 | DROP_1D2 |
+F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_15 |
+S:TPORT | DRAIN_MANA
+D:It is a ghostly woman's form that wails mournfully.
+
+N:395:Carrion crawler
+G:c:o
+I:110:20d12:15:40:10
+W:25:2:700:60
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:PARALYZE:2d6
+B:STING:PARALYZE:2d6
+F:RAND_25 |
+F:WEIRD_MIND | BASH_DOOR | DROP_SKELETON |
+F:ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+D:A hideous centipede covered in slime and with glowing tentacles around its
+D:head.
+
+N:396:Xiclotlan
+G:#:D
+I:110:25d13:15:60:10
+W:25:2:6000:60
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:6d4
+B:CRUSH:HURT:6d4
+B:BITE:HURT:3d2
+F:RAND_25 | SUSCEP_ACID |
+F:EMPTY_MIND | BASH_DOOR |
+F:IM_POIS | IM_ELEC |
+F:MORTAL | CTHANGBAND | NO_CUT
+D:"...a metallically grey tree... about sixteen feet high with
+D:very thick cylindrical branches... cylinders further
+D:divided into six flat circular extensions... and from the top
+D:of what I had taken for a trunk rose a featureless oval... an
+D:orifice gaping at the top."
+
+N:397:Silent watcher
+G:g:s
+I:110:80d25:60:80:0
+W:35:3:4000:800
+E:3:0:3:3:2:0
+O:0:0:0:0
+B:GAZE:TERRIFY
+B:GAZE:PARALYZE
+B:GAZE:LOSE_STR
+B:GAZE:HALLU
+F:EMPTY_MIND | COLD_BLOOD | NONLIVING | NEVER_MOVE |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | EVIL |
+F:HURT_ROCK | COLD_BLOOD | HURT_LITE | NO_FEAR |
+F:NO_CONF | NO_SLEEP | NO_STUN | NONLIVING | RES_TELE | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:SHRIEK | S_MONSTER | S_MONSTERS | HOLD | CONF | MIND_BLAST | DRAIN_MANA
+D:A figure carved from stone, with three vulture faces whose eyes glow
+D:with a malevolent light. None escape its vigilance.
+
+N:398:Pukelman
+G:g:D
+I:110:80d12:12:80:10
+W:25:3:10000:600
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d12
+B:HIT:HURT:3d6
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:SLOW | CONF | BO_ACID
+D:A stumpy figure carved from stone, with glittering eyes.
+
+N:399:Disenchanter beast
+G:q:v
+I:110:30d30:12:60:12
+W:25:2:2000:250
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:TOUCH:UN_BONUS:1d10
+B:TOUCH:UN_BONUS:1d10
+B:TOUCH:UN_BONUS:1d10
+B:TOUCH:UN_BONUS:1d10
+F:STUPID | WEIRD_MIND | RES_DISE | DROP_CORPSE | ATTR_MULTI |
+F:IM_ACID | IM_POIS |
+F:NO_CONF | ZANGBAND
+D:It looks like an anteater, and there is a static feeling
+D:crackling around its long trunk.
+
+N:400:Dark elven druid
+G:h:G
+I:120:20d20:15:75:10
+W:25:3:1200:500
+E:1:1:1:2:1:1
+O:10:0:80:10
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+B:HIT:HURT:3d8
+F:MALE |
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:HEAL | CONF | DARKNESS |
+S:S_MONSTER | S_SPIDER | S_ANIMAL
+D:A powerful dark elf, with mighty nature-controlling enchantments.
+
+N:401:Stone troll
+G:T:W
+I:110:23d10:20:50:50
+W:25:1:5000:85
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:BITE:HURT:3d4
+F:MALE |
+F:FRIENDS | DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | TROLL | HURT_LITE | HURT_ROCK | BASEANGBAND | NO_CUT
+D:He is a giant troll with scabrous black skin.
+
+N:402:Black
+G:j:d
+I:111:12d12:12:65:30
+W:25:1:0:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:EXP_40:2d6
+B:ENGULF:EXP_40:2d6
+F:RAND_25 |
+F:IM_COLD | IM_POIS | IM_ACID | RES_NETH |
+F:EVIL | EMPTY_MIND | COLD_BLOOD | FRIENDS | CTHANGBAND | NO_CUT
+D:The eldritch blood of Yibb-Tstll is know only as "the Black": it is
+D:an amorphous substance, which will suck your life and deliver it to
+D:Yibb-Tstll.
+
+N:403:Hill troll
+G:T:s
+I:110:21d10:20:65:40
+W:21:1:4000:75
+E:1:1:1:2:1:1
+O:30:70:0:0
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+B:BITE:HURT:2d6
+F:MALE |
+F:FRIENDS | DROP_60 | WILD_TOO | WILD_WASTE | WILD_MOUNTAIN |
+F:DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | SUSCEP_FIRE | REGENERATE |
+F:EVIL | TROLL | HURT_LITE | BASEANGBAND
+D:A large troll with an extremely tough and warty hide.
+
+N:404:Wereworm
+G:w:u
+I:110:100d11:15:70:20
+W:25:3:6000:300
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:GAZE:EXP_20
+B:CRAWL:ACID:2d4
+B:BITE:HURT:1d10
+B:BITE:POISON:1d6
+F:BASH_DOOR | EVIL | CAN_SWIM | WILD_TOO | WILD_SWAMP |
+F:ANIMAL | IM_ACID | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A huge wormlike shape dripping acid, twisted by evil sorcery into a foul
+D:monster that breeds on death.
+
+N:405:Killer red beetle
+G:K:r
+I:110:20d8:14:50:30
+W:25:1:600:90
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:LOSE_STR:4d4
+F:RAND_25 | WILD_TOO |
+F:WEIRD_MIND | BASH_DOOR | DROP_CORPSE |
+F:ANIMAL | CAN_FLY | MORTAL | BASEANGBAND
+D:A giant beetle with poisonous mandibles.
+
+N:406:Disenchanter bat
+G:b:v
+I:130:6d8:12:28:50
+W:26:4:50:75
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:HIT:UN_BONUS
+B:HIT:UN_BONUS
+F:FORCE_SLEEP | RAND_50 | ANIMAL | MORTAL | ATTR_MULTI |
+F:DROP_CORPSE | AI_ANNOY | CAN_FLY | BASEANGBAND | WEIRD_MIND
+D:A giant bat which feeds on raw magical energy.
+
+N:407:Gnoph-Keh
+G:q:s
+I:110:20d8:12:50:25
+W:26:2:1500:95
+E:0:1:0:2:1:0
+O:20:40:20:10
+B:CLAW:COLD:2d4
+B:CLAW:COLD:2d4
+B:BUTT:HURT:2d9
+F:RAND_25 | DROP_90 | DROP_60
+F:OPEN_DOOR | BASH_DOOR | AURA_COLD | IM_COLD | SUSCEP_FIRE |
+F:ANIMAL | DROP_CORPSE | CTHANGBAND
+S:1_IN_8
+S:BR_COLD | BO_ICEE | BO_COLD | BA_COLD
+D:A creature with a sharp horn: "the hairy myth-thing of the
+D:Greenland ice, that walked sometimes on two legs, sometimes
+D:on four, and sometimes on six."
+
+N:408:Giant grey ant
+G:a:s
+I:110:19d8:10:40:40
+W:26:1:700:90
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d12
+F:RAND_25 | KILL_BODY | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | BASEANGBAND
+D:It is an ant encased in shaggy grey fur.
+
+N:409:Khufu, the Mummified King
+G:z:v
+I:110:85d11:20:40:40
+W:26:4:1800:500
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:GAZE:TERRIFY
+B:HIT:DISEASE:6d6
+B:CLAW:LOSE_CON:4d4
+B:CLAW:LOSE_CON:4d4
+F:UNIQUE | MALE | CAN_SPEAK | UNDEAD | EVIL | ESCORTS | ESCORT |
+F:FORCE_MAXHP | COLD_BLOOD | IM_POIS | IM_COLD | NO_FEAR | NO_CONF | NO_SLEEP |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | RES_TELE | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:TRAPS | CAUSE_3 | DARKNESS | S_UNDEAD | SCARE | SLOW |
+S:S_KIN | ANIM_DEAD
+D:He is out to have revenge on those who have desecrated his tomb.
+
+N:410:Gwaihir the Windlord
+G:B:u
+I:130:85d10:20:65:20
+W:24:6:1200:360
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:15d2
+B:CLAW:HURT:15d2
+B:BITE:HURT:3d10
+F:CAN_FLY | UNIQUE | FORCE_MAXHP | DROP_CORPSE | CAN_SPEAK |
+F:WILD_ONLY | WILD_MOUNTAIN | WILD_VOLCANO | PET |
+F:ANIMAL | GOOD | BASEANGBAND
+D:The greatest of eagles in the Third Age of Middle-earth, Gwaihir rescued
+D:Gandalf the Wizard from Orthanc, and has twice brought his flock to the
+D:aid of Sauron's enemies in battle - first outside the gates of Erebor in
+D:the Battle of Five Armies, and then before the Black Gate of Mordor itself.
+
+N:411:Giant fire tick
+G:S:R
+I:110:16d8:14:54:20
+W:26:2:200:90
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:3d6
+F:RAND_25 | SUSCEP_COLD |
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | IM_FIRE | CAN_FLY |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It is smoking and burning with great heat.
+
+N:412:Displacer beast
+G:f:b
+I:110:25d10:35:100:20
+W:26:2:1800:100
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d8
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+F:INVISIBLE | BASH_DOOR | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is a huge black panther, clubbed tentacles sprouting from its shoulders.
+
+N:413:Ulwarth, Son of Ulfang
+G:p:U
+I:110:85d10:20:40:40
+W:26:4:1800:500
+E:1:1:1:2:1:1
+O:40:60:0:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_MAXHP | WILD_TOO |
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A short and swarthy Easterling.
+
+N:414:Werebear
+G:q:D
+I:110:25d25:20:50:20
+W:24:2:0:200
+E:0:1:0:2:1:0
+O:25:25:25:20
+B:CLAW:HURT:1d10
+B:CLAW:HURT:1d10
+B:BITE:HURT:2d8
+B:CRUSH:HURT:2d6
+F:BASH_DOOR | OPEN_DOOR |
+F:WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_CORPSE |
+F:ANIMAL | EVIL | DROP_1D2 | BASEANGBAND
+D:In the eyes of this bear, there glimmers the faintest light of intelligence.
+D:And then its form begins to change... The combination of animal cunning,
+D:human intelligence and the great physical strength of the bear makes for
+D:a dangerous enemy.
+
+N:415:Cave ogre
+G:O:u
+I:110:30d9:20:33:30
+W:26:2:2500:80
+E:1:1:1:2:1:1
+O:20:70:0:10
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+F:FRIENDS | DROP_60 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A giant orc-like figure with an awesomely muscled frame.
+
+N:416:White wraith
+G:W:w
+I:110:15d8:20:40:10
+W:26:1:0:175
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:TOUCH:EXP_20
+F:FORCE_SLEEP |
+F:DROP_1D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_8 |
+S:SCARE | CAUSE_2 | DARKNESS
+D:It is a tangible but ghostly form made of white fog.
+
+N:417:Angel
+G:A:o
+I:110:30d10:30:60:255
+W:26:4:2600:220
+E:1:1:1:2:1:1
+O:0:40:60:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_MAXHP | FORCE_SLEEP | NO_FEAR |
+F:ONLY_ITEM | DROP_2D2 | GOOD | CAN_FLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BLIND | CONF | SCARE | FORGET
+D:Who knows why you are now facing an angel as an enemy? Is it a punishment
+D:from your own god for your sins, or a test of your mettle, or has this angel
+D:been sent by another god on behalf of someone who wishes to claim the glory
+D:for his own god? Perhaps you will never know: but it is here, and you must
+D:fight it.
+
+N:418:Ghoul
+G:z:U
+I:110:15d9:30:30:20
+W:25:1:0:95
+E:1:1:1:2:1:1
+O:0:45:35:10
+B:CLAW:DISEASE:1d4
+B:CLAW:DISEASE:1d4
+B:BITE:PARALYZE:1d5
+F:DROP_60 | OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:EVIL | UNDEAD | FRIENDS | IM_POIS | IM_COLD | NO_CONF | NO_SLEEP |
+F:COLD_BLOOD | HURT_LITE | BASEANGBAND | NO_CUT
+S:1_IN_9
+S:SCARE | HOLD
+D:Flesh is falling off in chunks from this decaying abomination.
+
+N:419:Mim, Betrayer of Turin
+G:h:o
+I:120:11d105:20:80:20
+W:27:4:1200:1000
+E:1:1:1:2:1:1
+O:10:80:10:0
+B:HIT:HURT:3d9
+B:HIT:HURT:3d9
+B:HIT:HURT:3d9
+B:HIT:UN_BONUS:3d12
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | FORCE_SLEEP | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:RES_DISE | RES_TELE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:HEAL | SCARE | BO_ACID | BA_ACID | TPORT | S_MONSTER
+D:The last of his race, Mim is a Petty-Dwarf. Petty-Dwarves are strange
+D:creatures, powerful in sorcery and originating in the East. They have
+D:been hunted nearly to extinction by the High Elves.
+
+N:420:Hellblade
+G:|:v
+I:120:13d13:20:40:20
+W:27:2:0:130
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:EXP_20:2d13
+B:HIT:EXP_20:2d13
+F:CHAR_MULTI | EVIL | IM_POIS | IM_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | SUSCEP_ACID |
+F:COLD_BLOOD | BASH_DOOR | NONLIVING |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | HAS_LITE | NO_CUT
+D:A deadly blade of chaos, moving of its own volition.
+
+N:421:Killer fire beetle
+G:K:R
+I:110:22d8:14:45:30
+W:27:1:600:95
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:3d4
+B:SPIT:FIRE:4d5
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | WILD_VOLCANO | DROP_CORPSE |
+F:ANIMAL | IM_FIRE | CAN_FLY | SUSCEP_COLD |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It is a giant beetle wreathed in flames.
+
+N:422:Beast of Nurgle
+G:q:y
+I:110:15d7:14:50:30
+W:27:2:2300:100
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:TOUCH:POISON:3d3
+B:TOUCH:DISEASE:3d3
+B:BITE:ACID:4d5
+F:WEIRD_MIND | BASH_DOOR | IM_ACID | IM_POIS |
+F:DEMON | EVIL | IM_FIRE | CAN_FLY | ZANGBAND
+D:It walks on four legs, but mostly resembles a slug-shaped jelly.
+D:It even has two disgusting antennae in its head. Yecch!
+
+N:423:Creeping adamantite coins
+G:$:G
+I:120:20d25:5:50:10
+W:27:3:0:60
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:POISON:3d4
+B:TOUCH:POISON:3d5
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+F:ONLY_GOLD | DROP_90 | DROP_2D2 |
+F:COLD_BLOOD | BASH_DOOR | CHAR_MULTI |
+F:IM_ELEC | IM_ACID | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It appears to be a pile of coins made of precious adamant, slithering toward
+D:you on lots of tiny legs.
+
+N:424:Algroth
+G:T:o
+I:110:21d12:20:60:40
+W:27:1:6000:150
+E:1:1:1:2:1:1
+O:10:80:0:10
+B:CLAW:POISON:3d3
+B:CLAW:POISON:3d3
+B:BITE:HURT:1d6
+F:FRIENDS | DROP_60 | WILD_WOOD | WILD_MOUNTAIN | WILD_TOO | WILD_SWAMP |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | REGENERATE |
+F:EVIL | TROLL | BASEANGBAND
+D:A powerful troll form. Venom drips from its needlelike claws.
+
+N:425:Flamer of Tzeentch
+G:,:r
+I:110:60d15:10:70:20
+W:27:2:0:500
+E:1:0:1:2:0:0
+O:0:0:0:0
+B:ENGULF:FIRE:3d6
+B:ENGULF:FIRE:3d6
+F:FORCE_SLEEP | BASH_DOOR | SUSCEP_COLD |
+F:IM_FIRE | IM_POIS | AURA_FIRE | DEMON | EVIL | RES_PLAS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | ZANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BO_FIRE | BA_FIRE
+D:It looks like an inverted mushroom, with two flexible arms.
+
+N:426:Roper
+G:#:D
+I:115:30d10:30:60:255
+W:27:5:0:235
+E:0:0:0:6:0:0
+O:0:0:0:0
+B:CRUSH:PARALYZE:3d5
+B:CRUSH:PARALYZE:3d5
+B:CRUSH:PARALYZE:3d5
+B:CRUSH:PARALYZE:3d5
+F:FORCE_MAXHP | FORCE_SLEEP | NO_FEAR | NEVER_MOVE |
+F:ONLY_GOLD | DROP_2D2 | DROP_60 | DROP_1D2 | EVIL |
+F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP | IM_COLD | IM_FIRE | BASEANGBAND
+F:NO_CUT
+S:1_IN_5 |
+S:BA_FIRE | BA_ELEC | BA_POIS | HASTE |
+S:TRAPS | SHRIEK | HOLD | CONF
+D:This creature look like a pillar of rock. However, a closer
+D:inspection reveals a glaring eye and powerful tentacles,
+D:which crush its prey and feed it to the creature's hungry
+D:mouth.
+
+N:427:Headless
+G:H:u
+I:110:25d12:20:50:40
+W:27:1:1600:175
+E:1:1:1:2:0:1
+O:0:100:0:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:FRIENDS | DROP_60 | OPEN_DOOR | BASH_DOOR | WILD_TOO |
+F:WILD_MOUNTAIN | WILD_WASTE | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | ZANGBAND
+S:1_IN_6
+S:SCARE
+D:Headless humanoid abominations created by a magical mutation.
+
+N:428:Vibration hound
+G:Z:y
+I:110:25d10:30:30:0
+W:27:2:600:250
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR |
+F:ANIMAL | NO_CONF | NO_SLEEP | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_SOUN
+D:A blurry canine form which seems to be moving as fast as the eye can
+D:follow. You can feel the earth resonating beneath your feet.
+
+N:429:Nexus hound
+G:Z:v
+I:110:25d10:30:30:0
+W:27:2:600:250
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP | RES_NEXU | DROP_SKELETON | DROP_CORPSE |
+F:FRIENDS |
+F:BASH_DOOR |
+F:ANIMAL | RES_TELE | NO_SLEEP | MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_NEXU
+D:A locus of conflicting points coalesce to form the vague shape of a huge
+D:hound. Or is it just your imagination?
+
+N:430:Half-ogre
+G:O:o
+I:110:35d9:20:33:30
+W:27:2:2700:80
+E:1:1:1:2:1:1
+O:20:70:0:10
+B:HIT:HURT:4d8
+B:HIT:HURT:4d8
+F:FRIENDS | DROP_60 | DROP_CORPSE | SMART |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A giant, brutish figure, as ugly as an orc, but with some of the
+D:intelligence of his half-human ancestry.
+
+N:431:Lokkak, the Ogre Chieftain
+G:O:v
+I:120:15d103:20:100:20
+W:32:2:3000:1500
+E:1:1:1:2:1:1
+O:5:85:0:5
+B:HIT:HURT:6d7
+B:HIT:HURT:6d7
+B:HIT:HURT:6d7
+F:UNIQUE | MALE | CAN_SPEAK | WILD_TOO | WILD_SWAMP | WILD_SHORE |
+F:FORCE_MAXHP | ESCORT |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:EVIL | GIANT | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:An ogre renowned for acts of surprising cruelty, Lokkak is the leader of a large
+D:band of violent ogres.
+
+N:432:Vampire
+G:V:W
+I:110:25d12:20:45:10
+W:27:1:1700:175
+E:1:1:1:2:1:1
+O:20:40:20:10
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:BITE:EXP_20:2d6
+B:BITE:EXP_20:2d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:COLD_BLOOD | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | REGENERATE | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:BASEANGBAND | NO_CUT
+S:1_IN_9 |
+S:TELE_TO | HOLD | SCARE | CAUSE_2 | MIND_BLAST | FORGET | DARKNESS
+D:It is a humanoid with an aura of power. You notice a sharp set of front
+D:teeth.
+
+N:433:Gorgimaera
+G:H:o
+I:110:25d20:12:55:10
+W:27:2:2300:400
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BUTT:HURT:2d10
+B:BITE:FIRE:2d10
+B:GAZE:PARALYZE:2d6
+F:FORCE_SLEEP | SUSCEP_COLD |
+F:BASH_DOOR | CAN_FLY | DROP_CORPSE |
+F:IM_FIRE | BASEANGBAND
+S:1_IN_8 |
+S:BR_FIRE
+D:The result of evil experiments, this travesty of nature should never be
+D:alive. It has three heads - goat, dragon and gorgon - all attached to a
+D:lion's body.
+
+N:434:Shantak
+G:H:D
+I:120:25d20:12:55:10
+W:27:2:6000:280
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+B:BITE:HURT:1d6
+B:BITE:HURT:1d6
+F:ANIMAL | IM_ACID | EVIL | ELDRITCH_HORROR | CAN_FLY | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+S:1_IN_6
+S:SCARE | HASTE
+D:A scaly bird larger than an elephant, with a horse-like head.
+
+N:435:Colbran
+G:g:y
+I:120:80d12:12:80:10
+W:27:2:0:900
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:ELEC:3d8
+B:HIT:ELEC:3d8
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | CAN_FLY |
+F:IM_ELEC | IM_POIS | AURA_ELEC | REFLECTING |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BO_ELEC
+D:A man-shaped form of living lightning, sparks and shocks crackle all over
+D:this madly capering figure, as it leaps and whirls around and about you.
+
+N:436:Spirit naga
+G:n:w
+I:110:30d15:20:75:120
+W:28:2:0:60
+E:0:0:0:0:1:0
+O:20:0:80:0
+B:CRUSH:HURT:2d8
+B:CRUSH:HURT:2d8
+B:BITE:HURT:1d8
+B:BITE:HURT:1d8
+F:FEMALE |
+F:FORCE_SLEEP | CAN_FLY |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 | DROP_CORPSE |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:HEAL | BLIND | MIND_BLAST | DARKNESS
+D:A wraithly snake-like form with the torso of a beautiful woman, it is the
+D:most powerful of its kind.
+
+N:437:Corpser
+G:,:D
+I:112:30d15:20:75:120
+W:28:2:0:65
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:2d8
+B:CRUSH:HURT:2d8
+B:CRUSH:HURT:2d8
+B:CRUSH:HURT:2d8
+F:WILD_TOO | WILD_GRASS |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | ZANGBAND
+D:A creature who lives underground and eats surface dwellers that it catches
+D:with its poisonous tentacle, which is the only part of the creature that
+D:is ever seen. Perhaps it is better not to see the part which remains
+D:underground...
+
+N:438:Fiend of Slaanesh
+G:S:R
+I:120:15d20:12:50:40
+W:28:4:0:225
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:STING:POISON:8d1
+B:STING:LOSE_STR:8d1
+B:WAIL:TERRIFY:1d4
+F:BASH_DOOR |
+F:EVIL | DEMON | ZANGBAND
+D:Slaanesh's pet, a large scorpion-like creature with a human face and
+D:reptile skin.
+
+N:439:Stairway to Hell
+G:>:W
+I:120:15d8:90:40:20
+W:28:5:0:125
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:WAIL:UN_BONUS
+B:WAIL:EXP_20
+B:WAIL:EAT_GOLD
+B:WAIL:EAT_ITEM
+F:CHAR_MULTI | COLD_BLOOD | EVIL | NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING |
+F:UNDEAD | FORCE_MAXHP | IM_FIRE | IM_ELEC | IM_POIS | IM_ACID | EMPTY_MIND
+F:NEVER_MOVE | JOKEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_15
+S:S_DEMON | SHRIEK
+D:Often found in graveyards.
+
+N:440:5-headed hydra
+G:M:g
+I:120:100d8:20:80:20
+W:28:2:5500:650
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:POISON:4d4
+B:BITE:POISON:4d4
+B:BITE:POISON:4d4
+B:BITE:POISON:4d4
+F:FORCE_SLEEP |
+F:ONLY_GOLD | DROP_1D2 | DROP_4D2 | DROP_SKELETON | DROP_CORPSE
+F:BASH_DOOR | MOVE_BODY | CAN_SWIM |
+F:ANIMAL | IM_POIS | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:SCARE | BA_POIS
+D:A strange reptilian creature with five heads dripping venom.
+
+N:441:Barney the Dinosaur
+G:R:v
+I:120:110d9:10:90:20
+W:29:2:5000:500
+E:0:1:0:2:1:0
+O:10:0:90:0
+B:SHOW:LOSE_INT
+B:SHOW:LOSE_WIS
+B:CHARGE:EAT_GOLD
+B:CHARGE:EAT_GOLD
+F:DROP_1D2 | DROP_90 | DROP_GOOD | DROP_GREAT | ONLY_ITEM |
+F:EVIL | MALE | CAN_SPEAK | SMART | RES_TELE | CAN_SWIM | DROP_CORPSE
+F:ANIMAL | IM_POIS | FORCE_MAXHP | UNIQUE | FORCE_SLEEP
+F:MORTAL | JOKEANGBAND
+S:1_IN_3
+S:SHRIEK | CONF | S_HYDRA | SLOW | BLIND | DRAIN_MANA
+S:BA_POIS | BR_CHAO | FORGET | DARKNESS | BR_NUKE
+D:The lovable purple reptile is making a guest appearance here.
+
+N:442:Black knight
+G:p:s
+I:120:30d10:20:70:10
+W:28:1:2400:240
+E:1:1:1:2:1:1
+O:0:90:10:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:MALE |
+F:FORCE_SLEEP | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:BLIND | SCARE | CAUSE_3 | DARKNESS
+D:He is a figure encased in deep black plate armour; he looks at you
+D:menacingly.
+
+N:443:Seahorse
+G:~:o
+I:120:111d7:20:60:20
+W:28:2:3000:360
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:PARALYZE:4d5
+B:BITE:LOSE_DEX:4d5
+B:BITE:LOSE_CON:4d5
+F:FORCE_SLEEP | AQUATIC | GOOD | ANIMAL |
+F:IM_COLD | IM_POIS | IM_FIRE | IM_ELEC | WILD_TOO | WILD_OCEAN
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BO_WATE | BO_COLD | BO_ICEE | BO_MANA
+D:Your mind is filled with admiration as you view this wondrous,
+D:magical seahorse.
+
+N:444:Cyclops
+G:P:u
+I:120:60d20:20:90:20
+W:45:2:3500:1500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:9d9
+B:HIT:HURT:9d9
+F:FORCE_SLEEP |
+F:DROP_1D2 | TAKE_ITEM | WILD_TOO | WILD_SHORE | WILD_MOUNTAIN |
+F:BASH_DOOR | OPEN_DOOR | MOVE_BODY | DROP_CORPSE |
+F:EVIL | IM_POIS | IM_ACID | IM_FIRE | IM_COLD | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:ARROW_4
+D:A gigantic humanoid with but one eye.
+
+N:445:Clairvoyant
+G:p:y
+I:120:25d10:100:50:10
+W:28:3:1600:250
+E:1:1:1:2:1:1
+O:0:0:90:10
+B:HIT:CONFUSE:5d5
+B:HIT:TERRIFY:5d5
+F:MALE |
+F:FORCE_SLEEP | DROP_1D2 | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | SMART |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:BLIND | MIND_BLAST | HOLD | CAUSE_3 | FORGET | S_MONSTER
+D:He is using his supernatural talents to bring about your
+D:destruction.
+
+N:446:Purple worm
+G:w:v
+I:110:65d8:14:65:30
+W:29:4:1000:400
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:HIT:HURT:1d8
+B:BITE:ACID:2d8
+B:STING:POISON:1d8
+F:BASH_DOOR | DROP_CORPSE |
+F:ANIMAL | IM_ACID | IM_POIS | CAN_SWIM |
+F:MORTAL | BASEANGBAND
+D:It is a massive worm form, many feet in length. Its vast maw drips acid
+D:and poison.
+
+N:447:Catoblepas
+G:q:g
+I:110:30d10:15:55:40
+W:29:2:0:400
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:GAZE:TERRIFY:2d4
+B:GAZE:BLIND:2d4
+B:BUTT:HURT:2d6
+B:BITE:HURT:2d12
+F:ONLY_GOLD | DROP_2D2 | DROP_CORPSE
+F:BASH_DOOR | CAN_SWIM | WILD_TOO | WILD_SWAMP |
+F:ANIMAL | IM_POIS
+F:MORTAL | BASEANGBAND
+D:A strange ox-like form with a huge head but a thin, weak neck, it looks
+D:like the creation of some deranged alchemist.
+
+N:448:Lesser wall monster
+G:#:W
+I:110:13d8:20:75:40
+W:28:4:0:600
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+F:FORCE_SLEEP | COLD_BLOOD | EMPTY_MIND | KILL_WALL | RAND_50 |
+F:BASH_DOOR | IM_COLD | IM_ACID | IM_FIRE | IM_ELEC | IM_POIS | NONLIVING |
+F:HURT_ROCK | NO_CONF | NO_SLEEP | CHAR_MULTI | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:A sentient, moving section of wall.
+
+N:449:Mage
+G:p:r
+I:110:15d8:20:40:10
+W:28:1:1500:150
+E:1:1:1:2:1:1
+O:10:0:90:0
+B:HIT:HURT:2d5
+B:HIT:HURT:2d5
+F:MALE |
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 | DROP_SKELETON | DROP_CORPSE |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HASTE | TPORT | TELE_TO | BLIND | CONF |
+S:BO_FIRE | BO_COLD | BO_ELEC |
+S:S_MONSTER
+D:A fat mage with glasses. And considerable power, too - as you can
+D:tell from the size of his hat.
+
+N:450:Mind flayer
+G:h:v
+I:110:15d10:20:60:10
+W:28:1:1400:200
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:CRUSH:LOSE_INT:2d6
+B:GAZE:INSANITY:2d6
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:ONLY_ITEM | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP
+F:MORTAL | BASEANGBAND
+S:1_IN_8 |
+S:BLIND | HOLD | SCARE | MIND_BLAST | BRAIN_SMASH | FORGET
+D:A humanoid form with a gruesome head, tentacular mouth, and piercing
+D:eyes. Claws reach out for you and you feel a presence invade your mind.
+
+N:451:The Ultimate Dungeon Cleaner
+G:g:D
+I:120:70d12:10:80:12
+W:28:2:0:555
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:2d10
+B:CRUSH:HURT:2d10
+B:CRUSH:HURT:2d10
+B:CRUSH:HURT:2d10
+F:FORCE_SLEEP | FORCE_MAXHP | KILL_BODY | KILL_ITEM | UNIQUE | REFLECTING |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | RES_TELE | JOKEANGBAND | NO_CUT
+D:It looks like a huge spiked roller. It was designed to keep this dungeon
+D:clean, and you are the biggest spot of dirt in sight.
+
+N:452:Deep one
+G:u:g
+I:120:35d12:20:50:20
+W:28:5:4000:150
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:CLAW:POISON:2d4
+B:CLAW:POISON:2d4
+B:BITE:HURT:4d4
+F:FRIENDS | WILD_TOO | WILD_SHORE | DROP_CORPSE |
+F:RAND_25 |
+F:DROP_60 | DROP_90 |
+F:CAN_SWIM | BASH_DOOR | ELDRITCH_HORROR | RES_TELE |
+F:EVIL | DEMON | IM_FIRE | IM_COLD | IM_POIS | RES_WATE | CTHANGBAND
+D:"I thought their predominant color was a greyish-green,
+D:though they had white bellies. They were mostly shiny and
+D:slippery, but the ridges of their backs were scaly. Their
+D:forms vaguely suggested the anthropoid, while their heads were
+D:the heads of fish, with prodigious bulging eyes that never
+D:closed. At the sides of their necks were palpitating gills and
+D:their long paws were webbed."
+
+N:453:Basilisk
+G:R:s
+I:120:20d30:15:90:30
+W:28:3:400:350
+E:0:1:0:2:1:0
+O:50:0:30:20
+B:GAZE:PARALYZE
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+F:ONLY_ITEM | DROP_1D2 | WILD_TOO | WILD_MOUNTAIN |
+F:OPEN_DOOR | BASH_DOOR | EVIL | IM_POIS | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP | CAN_SWIM |
+F:MORTAL | BASEANGBAND
+S:1_IN_8 |
+S:BR_POIS
+D:An evil reptile that preys on unsuspecting travellers. Its eyes stare
+D:deeply at you and your soul starts to wilt!
+
+N:454:Ice troll
+G:T:w
+I:110:24d10:20:56:50
+W:28:1:5000:200
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d5
+B:HIT:HURT:1d5
+B:BITE:COLD:2d6
+B:BITE:COLD:2d6
+F:MALE |
+F:FRIENDS | DROP_60 | WILD_TOO | WILD_WASTE | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | SUSCEP_FIRE | REGENERATE |
+F:EVIL | TROLL | IM_COLD | HURT_LITE | BASEANGBAND
+D:He is a white troll with powerful clawed hands.
+
+N:455:Dhole
+G:w:s
+I:110:65d8:14:64:25
+W:29:4:1000:555
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:SPIT:ACID:1d8
+B:ENGULF:ACID:2d8
+B:CRUSH:HURT:4d8
+F:ANIMAL | EVIL | KILL_WALL | IM_ACID | ELDRITCH_HORROR |
+F:CAN_SWIM | FORCE_MAXHP | DROP_CORPSE |
+F:MORTAL | CTHANGBAND
+S:1_IN_6
+S:BR_ACID
+D:A gigantic worm dripping with acid. "...even as he looked, one
+D:reared up several hundred feet and leveled a bleached, viscous end
+D:at him."
+
+N:456:Archangel
+G:A:B
+I:110:60d10:30:68:255
+W:34:4:4000:1000
+E:1:1:1:2:1:1
+O:0:40:60:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:FORCE_MAXHP | FORCE_SLEEP | NO_FEAR | GOOD |
+F:ONLY_ITEM | DROP_2D2 | CAN_FLY |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | RES_TELE |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | HASTE | BLIND | CONF | SCARE
+D:A lesser angel protected by an aura of holiness. Its muscular form looks
+D:extremely powerful next to your own frail body.
+
+N:457:Greater Mimic
+G:m:y
+I:120:10d35:30:60:100
+W:29:3:100:200
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+F:MIMIC |
+F:FORCE_SLEEP | NEVER_MOVE | SUSCEP_ACID |
+F:EMPTY_MIND | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BLIND | CONF | SCARE | CAUSE_2 | FORGET |
+S:BO_ACID | BO_FIRE | BO_COLD | BO_ELEC |
+S:S_MONSTER
+D:A strange creature that disguises itself as an object to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+N:458:Chaos tile
+G:.:v
+I:120:3d5:30:60:100
+W:29:6:100:200
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:POISON:3d4
+B:HIT:CONFUSE:3d4
+F:CHAR_MULTI | ATTR_MULTI | ATTR_ANY |
+F:FORCE_SLEEP | NEVER_MOVE |
+F:EMPTY_MIND | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | ZANGBAND | NO_CUT
+S:MULTIPLY |
+S:1_IN_4 |
+S:BLIND | CONF | SCARE | CAUSE_2 | BLINK | S_MONSTER
+D:It is a floor tile corrupted by chaos.
+
+N:459:Young blue dragon
+G:d:b
+I:110:27d10:20:50:70
+W:29:1:20000:500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD |
+F:DROP_2D2 | DROP_CORPSE | ATTR_MULTI
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | IM_ELEC | BASEANGBAND | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_ELEC
+D:It has a form out of legend. Its still-tender scales are a
+D:deep blue in hue. Sparks crackle along its length.
+
+N:460:Young white dragon
+G:d:w
+I:110:27d10:20:50:70
+W:29:1:20000:500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN | WILD_WASTE |
+F:DROP_2D2 | DROP_CORPSE | ATTR_MULTI
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY | SUSCEP_FIRE |
+F:EVIL | DRAGON | IM_COLD | BASEANGBAND | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_COLD
+D:It has a form out of legend. Its still-tender scales are a
+D:frosty white in hue. Icy blasts of cold air come from it as it breathes.
+
+N:461:Young green dragon
+G:d:g
+I:110:27d10:20:50:70
+W:29:1:20000:500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN | WILD_SWAMP |
+F:DROP_2D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | IM_POIS | BASEANGBAND | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_POIS
+D:It has a form out of legend. Its still-tender scales are a
+D:deep green in hue. Foul gas seeps through its scales.
+
+N:462:Young bronze dragon
+G:d:U
+I:110:27d10:20:50:70
+W:29:1:20000:500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN |
+F:DROP_2D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | NO_CONF | BASEANGBAND | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_CONF
+D:It has a form out of legend. Its still-tender scales are a
+D:rich bronze hue, and its shape masks its true form.
+
+N:463:Aklash
+G:T:R
+I:110:30d8:14:64:25
+W:29:4:4000:300
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:1d6
+B:CLAW:HURT:1d6
+B:BITE:POISON:1d20
+B:CRUSH:HURT:2d9
+F:TROLL | EVIL | FRIENDS | OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:IM_POIS | IM_ACID | REGENERATE | ZANGBAND | REGENERATE |
+S:1_IN_9 | BR_POIS
+D:Pale, bald, fat, hairless troll creatures. Ugly beyond description.
+D:Not to mention how bad their breath smells...
+
+N:464:Mithril golem
+G:g:B
+I:110:80d15:12:100:10
+W:30:4:10000:500
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:ONLY_GOLD | DROP_2D2 |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | REFLECTING |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+D:It is a massive statue of purest mithril. It looks expensive!
+
+N:465:Skeleton troll
+G:s:W
+I:110:20d10:20:55:20
+W:30:1:5000:225
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:BITE:HURT:3d4
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | TROLL | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a troll skeleton animated by dark dweomers.
+
+N:466:Skeletal tyrannosaur
+G:R:w
+I:120:50d10:20:55:20
+W:30:2:6000:225
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d8
+B:CLAW:HURT:1d8
+B:BITE:LOSE_CON:4d6
+B:GAZE:TERRIFY
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | ANIMAL | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | ZANGBAND | NO_CUT
+D:It is the skeleton of a tyrannosaur, animated by dark dweomers.
+
+N:467:Beorn, the Shape-Changer
+G:q:D
+I:120:20d70:25:60:25
+W:28:3:0:1000
+E:0:1:0:2:1:0
+O:20:60:20:0
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:4d8
+B:CRUSH:HURT:3d6
+F:UNIQUE | MALE | FORCE_MAXHP | FORCE_SLEEP |
+F:BASH_DOOR | ANIMAL | MOVE_BODY | SMART | PET
+F:WILD_TOO | WILD_WOOD | WILD_MOUNTAIN | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | BASEANGBAND
+S:1_IN_6 | S_ANIMAL
+D:Beorn is only occasionally seen in human form these days, preferring to
+D:appear in the shape of a giant black bear: he also prefers the company of
+D:beasts to that of humans. He has never taken kindly to strangers, even in
+D:human form - and still less when in bear's shape, as he is now.
+
+N:468:Thorondor, Lord of Eagles
+G:B:u
+I:130:85d12:20:65:20
+W:30:6:1600:555
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:16d2
+B:CLAW:HURT:16d2
+B:BITE:HURT:4d10
+F:CAN_FLY | UNIQUE | FORCE_MAXHP | DROP_CORPSE | CAN_SPEAK |
+F:WILD_ONLY | WILD_MOUNTAIN | WILD_VOLCANO | PET |
+F:ANIMAL | GOOD | BASEANGBAND
+D:Among the mightiest of birds, Thorondor is the messenger of the Valar, and
+D:brings news of Middle-earth to Valinor itself. Nothing that can be seen
+D:from the airs of the world is hidden from him.
+
+N:469:Giant blue ant
+G:a:b
+I:110:8d8:10:50:60
+W:30:2:600:80
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:ELEC:5d5
+F:RAND_25 | WILD_TOO | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | IM_ELEC
+F:MORTAL | BASEANGBAND
+D:It is a giant ant that crackles with energy.
+
+N:470:Grave wight
+G:W:b
+I:110:12d10:20:50:30
+W:30:1:0:325
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:1d7
+B:HIT:HURT:1d7
+B:TOUCH:EXP_20
+F:FORCE_SLEEP | RAND_25 |
+F:ONLY_ITEM | DROP_1D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | CAN_FLY |
+F:IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_8 |
+S:SCARE | CAUSE_3 | DARKNESS
+D:It is a ghostly form with eyes that haunt you.
+
+N:471:Shadow drake
+G:d:G
+I:110:30d10:20:70:70
+W:33:3:18000:1100
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:EXP_10:3d6
+F:FORCE_SLEEP | FORCE_MAXHP | PASS_WALL |
+F:ONLY_ITEM | DROP_3D2 | CAN_FLY | DROP_CORPSE |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:BR_NETH | SLOW | CONF | SCARE | DARKNESS
+D:It is a dragon-like form wrapped in shadow. Glowing red eyes shine in
+D:the dark, and it is surrounded by an aura of unearthly cold that chills
+D:the soul rather than the body.
+
+N:472:Manticore
+G:H:y
+I:120:25d10:12:15:10
+W:30:2:1900:300
+E:1:1:1:2:1:0
+O:0:0:0:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:BASH_DOOR | CAN_FLY | WILD_TOO | WILD_WOOD | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:ARROW_4
+D:It is a winged lion's body with a human torso and a tail covered in
+D:vicious spikes.
+
+N:473:Giant army ant
+G:a:o
+I:120:19d6:10:40:40
+W:30:3:600:90
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d12
+F:RAND_25 | KILL_BODY | FRIENDS | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL
+F:MORTAL | BASEANGBAND
+D:An armoured form moving with purpose. Powerful on its own, flee when
+D:hordes of them march.
+
+N:474:Killer slicer beetle
+G:K:y
+I:110:25d10:14:60:30
+W:30:2:600:200
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:5d8
+B:BITE:HURT:5d8
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | WILD_GRASS | DROP_CORPSE
+F:ANIMAL | CAN_FLY | MORTAL | BASEANGBAND
+D:It is a beetle with deadly sharp cutting mandibles and a rock-hard
+D:carapace.
+
+N:475:Gorgon
+G:H:b
+I:110:30d20:12:88:20
+W:31:2:3000:275
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BUTT:HURT:3d9
+B:BUTT:HURT:3d9
+B:BITE:POISON:1d10
+B:KICK:HURT:2d4
+F:FORCE_SLEEP | ANIMAL | MOVE_BODY | WILD_TOO | WILD_WOOD |
+F:BASH_DOOR | IM_POIS | IM_ACID | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_8 |
+S:BR_POIS
+D:A bull-like creature whose skin is made of steel plates. Watch out for
+D:its deadly breath!
+
+N:476:Gug
+G:P:G
+I:110:22d11:14:60:30
+W:31:2:1500:210
+E:2:0:2:4:1:1
+O:0:50:50:0
+B:BITE:HURT:10d4
+B:CLAW:HURT:2d7
+B:CLAW:HURT:2d7
+B:CLAW:HURT:2d7
+F:FORCE_SLEEP |
+F:DROP_1D2 | TAKE_ITEM |
+F:BASH_DOOR | OPEN_DOOR | DROP_CORPSE
+F:EVIL | IM_POIS | IM_ACID | GIANT | ZANGBAND
+D:A hideous, beastly, four-armed unclean giant: "...large as a
+D:barrel... The eyes jutted two inches from each side, shaded by
+D:bony protuberances overgrown of the mouth. That mouth had great
+D:yellow fangs and ran from the top to the tally."
+
+N:477:Ghost
+G:G:w
+I:120:13d8:20:30:10
+W:31:1:0:350
+E:0:0:0:0:0:0
+O:30:40:0:20
+B:WAIL:TERRIFY
+B:TOUCH:EXP_20
+B:CLAW:LOSE_INT:1d6
+B:CLAW:LOSE_WIS:1d6
+F:FORCE_SLEEP | RAND_25 | DROP_60 | DROP_1D2 |
+F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | CAN_FLY |
+F:IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | HOLD | DRAIN_MANA
+D:You don't believe in them.
+
+N:478:Death watch beetle
+G:K:D
+I:110:25d12:16:60:30
+W:31:3:800:220
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:5d4
+B:WAIL:TERRIFY:5d6
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_CORPSE |
+F:ANIMAL | CAN_FLY | MORTAL | BASEANGBAND
+D:It is a giant beetle that produces a chilling sound.
+
+N:479:Mountain ogre
+G:O:s
+I:110:40d9:20:33:30
+W:30:2:3000:100
+E:1:1:1:2:1:1
+O:20:70:0:10
+B:HIT:HURT:5d8
+B:HIT:HURT:5d8
+F:FRIENDS | DROP_60 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:The largest breed of ogre, he is awesomely strong and awesomely ugly.
+
+N:480:Nexus quylthulg
+G:Q:v
+I:110:10d12:10:1:0
+W:32:1:3000:300
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | RES_NEXU | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | RES_TELE | BASEANGBAND
+S:1_IN_1 |
+S:BLINK | TELE_AWAY
+D:It is a very unstable, strange pulsing mound of flesh.
+
+N:481:Shelob, Spider of Darkness
+G:S:D
+I:120:35d100:30:120:80
+W:55:3:1400:27000
+E:0:1:0:2:1:0
+O:20:30:40:0
+B:CLAW:POISON:5d6
+B:CLAW:POISON:5d6
+B:BITE:PARALYZE:5d10
+B:STING:LOSE_STR:5d4
+F:UNIQUE | FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP | SPECIAL_GENE |
+F:ESCORT | ESCORTS | DROP_CORPSE |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD | DROP_RANDART
+F:SMART | BASH_DOOR | IM_POIS | IM_ACID |
+F:ANIMAL | SPIDER | EVIL | HURT_LITE | NO_SLEEP | BASEANGBAND
+S:1_IN_4 |
+S:HEAL | BLIND | SLOW | CONF | SCARE | CAUSE_3 | CAUSE_4 |
+S:TRAPS | BR_DARK | BR_POIS |
+S:S_SPIDER
+D:Shelob is an enormous bloated spider, the last daughter of Ungoliant the
+D:Unlight. Her poison is legendary, as is her ego. She normally guards the
+D:pass through Cirith Ungol, but occasionally goes out foraging for food to
+D:feed her voracious appetite.
+
+N:482:Giant squid
+G:~:g
+I:110:80d10:8:80:80
+W:32:3:3000:600
+E:3:0:3:6:1:0
+O:0:0:0:0
+B:CRUSH:HURT:8d4
+B:CRUSH:HURT:8d4
+B:CRUSH:HURT:8d4
+F:IM_ACID | RES_WATE | AQUATIC | ANIMAL | IM_COLD | MOVE_BODY
+F:FORCE_MAXHP | WILD_TOO | WILD_OCEAN | BASEANGBAND | COLD_BLOOD
+S:1_IN_8
+S:BR_ELEC | BR_ACID | BR_POIS
+D:Besides being capable of dragging whole ships underwater,
+D:this creature can also harm you with ranged attacks.
+
+N:483:Ghoulking
+G:z:D
+I:120:40d12:20:60:10
+W:32:2:0:340
+E:1:1:1:2:1:1
+O:20:40:30:0
+B:CLAW:LOSE_STR:3d4
+B:CLAW:DISEASE:3d4
+B:CLAW:DISEASE:3d4
+B:BITE:PARALYZE:3d5
+F:DROP_60 | OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:DROP_1D2 | FORCE_MAXHP | ESCORT | FORCE_SLEEP |
+F:EVIL | UNDEAD | IM_POIS | IM_COLD | NO_CONF | NO_SLEEP |
+F:COLD_BLOOD | HURT_LITE | BASEANGBAND | NO_CUT
+S:1_IN_7
+S:SCARE | HOLD | DARKNESS | SCARE | S_UNDEAD | ANIM_DEAD
+D:Flesh is falling off in chunks from this decaying abomination.
+
+N:484:Doombat
+G:b:R
+I:120:24d14:16:75:30
+W:32:2:150:250
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:FIRE:5d4
+B:BITE:FIRE:5d4
+B:BITE:FIRE:5d4
+F:WEIRD_MIND | BASH_DOOR | AURA_FIRE | CAN_FLY | DROP_CORPSE |
+F:IM_FIRE | AI_ANNOY |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:It is a fast moving creature of chaos, a gigantic black bat
+D:surrounded by flickering bright red flames.
+
+N:485:Ninja
+G:p:u
+I:120:13d12:20:60:10
+W:32:2:1600:300
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:POISON:3d4
+B:HIT:LOSE_STR:3d4
+B:HIT:LOSE_STR:3d4
+F:MALE |
+F:DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A humanoid clothed in black who moves with blinding speed.
+
+N:486:Memory moss
+G:,:b
+I:110:1d2:30:1:5
+W:32:3:50:150
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:CONFUSE:1d4
+B:HIT:CONFUSE:1d4
+F:FORCE_SLEEP | NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:FORGET
+D:A mass of vegetation. You don't remember seeing anything like it
+D:before.
+
+N:487:Storm giant
+G:P:B
+I:110:40d20:20:60:40
+W:40:1:13000:1000
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:ELEC:10d8
+B:HIT:ELEC:10d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_1D2 | WILD_TOO | WILD_MOUNTAIN |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | AURA_ELEC | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | GIANT | IM_COLD | IM_ELEC | MALE | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:BLINK | TELE_TO | CONF | SCARE | BO_ELEC | BA_ELEC
+D:It is a twenty-five foot tall giant wreathed in lightning.
+
+N:488:Spectator
+G:e:B
+I:110:15d13:30:1:5
+W:28:2:1600:150
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:PARALYZE:1d4
+B:GAZE:CONFUSE:1d4
+B:BITE:HURT:1d8
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:STUPID | EMPTY_MIND | CAN_FLY | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND
+S:1_IN_6 |
+S:FORGET | CAUSE_2 | HOLD | SLOW
+D:A lesser relative of the beholder: a globular body with a large toothy mouth,
+D:a large central eye, and four smaller eyes on stalks protruding from the top
+D:of its body.
+
+N:489:Bokrug
+G:R:v
+I:110:11d90:20:70:50
+W:33:7:0:2200
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:BITE:HURT:5d5
+B:CRUSH:HURT:2d10
+B:CRUSH:HURT:2d10
+F:UNIQUE | CAN_SPEAK |
+F:FORCE_MAXHP | NONLIVING | NO_CONF | NO_FEAR |
+F:ESCORT | ESCORTS | ELDRITCH_HORROR |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:EVIL | IM_COLD | IM_POIS | DEMON | CTHANGBAND
+S:1_IN_5
+S:S_UNDEAD | MIND_BLAST | CAUSE_3 | SCARE | BO_WATE | S_KIN
+D:A lizard-like Great Old One worshipped by the men of Sarnath.
+
+N:490:Biclops
+G:P:u
+I:120:65d20:20:90:20
+W:48:5:3000:1700
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:10d9
+B:HIT:HURT:10d9
+F:FORCE_SLEEP |
+F:DROP_1D2 | TAKE_ITEM | DROP_CORPSE |
+F:BASH_DOOR | OPEN_DOOR | MOVE_BODY |
+F:EVIL | IM_POIS | IM_ACID | IM_FIRE | IM_COLD | GIANT |
+F:MORTAL | ZANGBAND | HAS_LITE
+S:1_IN_8 |
+S:ARROW_4
+D:Oh, no! Aaargh! It is the most unnatural, most disgusting
+D:creature imaginable: a two-eyed cyclops! This perversion
+D:of nature must be exterminated!
+
+N:491:Half-troll
+G:T:U
+I:110:25d14:20:50:50
+W:34:2:3000:400
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:CLAW:HURT:1d5
+B:CLAW:HURT:1d5
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+F:MALE |
+F:FRIENDS |
+F:ONLY_ITEM | DROP_90 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | TROLL | IM_POIS | BASEANGBAND
+D:A huge, ugly, half-human in search of plunder.
+
+N:492:Ivory monk
+G:p:w
+I:120:38d9:22:55:5
+W:33:1:1600:900
+E:1:1:1:2:1:1
+O:40:0:50:10
+B:KICK:HURT:8d1
+B:HIT:HURT:8d4
+B:KICK:HURT:8d1
+B:HIT:HURT:8d4
+F:OPEN_DOOR | BASH_DOOR | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SKELETON |
+F:DROP_CORPSE | MALE | DROP_60 | DROP_1D2 | IM_FIRE | IM_COLD | IM_POIS |
+F:MORTAL | ZANGBAND | HAS_LITE
+D:A monk trained in the most lethal martial arts.
+
+N:493:Bert the Stone Troll
+G:T:W
+I:120:11d100:20:70:50
+W:34:7:5000:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:BITE:HURT:3d10
+F:UNIQUE | MALE |
+F:FORCE_MAXHP |
+F:ESCORT | SPECIAL_GENE | MOVE_BODY | REGENERATE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | WILD_TOO | WILD_WOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | TROLL | IM_COLD | IM_POIS | HURT_LITE | HURT_ROCK | BASEANGBAND | NO_CUT
+D:Big, brawny, powerful and with a taste for hobbit. He has friends called
+D:Bill and Tom.
+
+N:494:Bill the Stone Troll
+G:T:W
+I:120:11d100:20:70:50
+W:34:7:5000:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:BITE:HURT:3d10
+F:UNIQUE | MALE |
+F:FORCE_MAXHP |
+F:ESCORT | SPECIAL_GENE | MOVE_BODY | REGENERATE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | WILD_TOO | WILD_WOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE
+F:EVIL | TROLL | IM_COLD | IM_POIS | HURT_LITE | HURT_ROCK | BASEANGBAND | NO_CUT
+D:Big, brawny, powerful and with a taste for hobbit. He has friends called
+D:Bert and Tom.
+
+N:495:Tom the Stone Troll
+G:T:W
+I:120:11d100:20:70:50
+W:34:7:5000:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:BITE:HURT:3d10
+F:UNIQUE | MALE |
+F:FORCE_MAXHP |
+F:ESCORT | SPECIAL_GENE | MOVE_BODY | REGENERATE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | WILD_TOO | WILD_WOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | TROLL | IM_COLD | IM_POIS | HURT_LITE | HURT_ROCK | BASEANGBAND | NO_CUT
+D:Big, brawny, powerful and with a taste for hobbit. He has friends called
+D:Bert and Bill.
+
+N:496:Cave troll
+G:T:u
+I:110:24d12:20:50:50
+W:33:1:6000:350
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:BITE:HURT:1d8
+B:BITE:HURT:1d8
+F:MALE |
+F:FRIENDS | DROP_60 | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | SUSCEP_FIRE | REGENERATE |
+F:EVIL | TROLL | IM_POIS | HURT_LITE | BASEANGBAND
+D:He is a vicious monster, feared for his ferocity.
+
+N:497:Anti-paladin
+G:p:D
+I:120:30d20:30:50:30
+W:33:2:2400:450
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:2d6
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:MALE | OPEN_DOOR | BASH_DOOR | TAKE_ITEM | DROP_1D2 | ONLY_ITEM |
+F:EVIL | IM_POIS | IM_COLD | NO_CONF | NO_SLEEP | DROP_SKELETON | DROP_CORPSE
+F:MORTAL | ZANGBAND | HAS_LITE
+S:1_IN_4
+S:HOLD | SCARE | BLIND | CAUSE_3 | TRAPS | DARKNESS | FORGET | HASTE
+D:An embodiment of all the cardinal vices, he beholds you scornfully.
+
+N:498:Chaos master
+G:p:v
+I:120:30d10:30:50:5
+W:37:3:2300:550
+E:1:1:1:2:1:1
+O:10:60:10:10
+B:HIT:HURT:10d2
+B:KICK:HURT:10d2
+B:PUNCH:HURT:10d2
+B:KICK:HURT:10d2
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | EVIL |
+F:ONLY_ITEM | DROP_1D2 | ATTR_ANY | DROP_SKELETON | DROP_CORPSE
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP
+F:MORTAL | ZANGBAND | HAS_LITE
+S:1_IN_6 |
+S:HEAL |
+S:S_SPIDER | BA_CHAO | S_DEMON
+D:An adept of chaos, feared for his skill of invoking raw Chaos.
+
+N:499:Barrow wight
+G:W:v
+I:110:15d10:20:40:10
+W:33:3:0:375
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+B:TOUCH:EXP_40
+F:FORCE_SLEEP | FRIENDS | DROP_60 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_8 |
+S:HOLD | SCARE | CAUSE_2 | DARKNESS
+D:It is a ghostly nightmare of an entity.
+
+N:500:Skeleton ettin
+G:s:W
+I:110:45d10:20:50:20
+W:33:1:7000:325
+E:1:1:1:2:2:1
+O:0:0:0:0
+B:HIT:HURT:1d9
+B:HIT:HURT:1d9
+B:BITE:HURT:1d5
+B:BITE:HURT:1d5
+F:FORCE_MAXHP |
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | TROLL | UNDEAD |
+F:IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is the animated skeleton of a massive two-headed troll.
+
+N:501:Chaos drake
+G:d:v
+I:110:50d10:20:70:70
+W:33:3:18000:1400
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:3d6
+F:ATTR_MULTI | ATTR_ANY | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | RES_DISE |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | DRAGON |
+F:IM_FIRE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_DISE | BR_CHAO
+D:A dragon twisted by the forces of chaos. It seems first ugly, then fair,
+D:as its form shimmers and changes in front of your eyes.
+
+N:502:Law drake
+G:d:B
+I:110:50d10:20:70:70
+W:33:3:18000:1400
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:3d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | CAN_FLY |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:DRAGON | EVIL |
+F:IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT | ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_SOUN | BR_SHAR
+D:This dragon is clever and cunning. It laughs at your puny efforts to
+D:disturb it.
+
+N:503:Balance drake
+G:d:v
+I:110:60d10:20:70:70
+W:33:3:18000:1600
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:3d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | RES_DISE |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE
+F:EVIL | DRAGON | CAN_FLY |
+F:IM_FIRE | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT
+F:ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_SOUN | BR_SHAR | BR_DISE | BR_CHAO
+D:A mighty dragon, the balance drake seeks to maintain the Cosmic Balance,
+D:and despises your feeble efforts to destroy evil.
+
+N:504:Ethereal drake
+G:d:o
+I:110:40d10:20:70:70
+W:33:3:0:1200
+E:0:1:0:6:1:0
+O:40:50:10:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:3d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | CAN_FLY |
+F:INVISIBLE | PASS_WALL |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_LITE | BR_DARK | BR_CONF
+D:A dragon of great power with control over light and dark, the
+D:ethereal drake's eyes glare with white hatred from the shadows.
+
+N:505:Groo, the Wanderer
+G:p:U
+I:120:13d113:20:70:50
+W:35:7:5000:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:9d1
+B:HIT:HURT:6d5
+B:HIT:HURT:25d1
+B:HIT:HURT:6d5
+F:UNIQUE | MALE | WEIRD_MIND | CAN_SPEAK |
+F:FORCE_MAXHP | WILD_TOO | DROP_CORPSE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:DROP_CHOSEN |
+F:OPEN_DOOR | BASH_DOOR |
+F:IM_COLD | IM_POIS | ZANGBAND
+D:He who laughs at Groo's brains will find there is nothing to laugh
+D:about... erm, nobody laughs at Groo and lives.
+
+N:506:Fasolt the Giant
+G:P:u
+I:110:11d111:20:70:50
+W:33:4:10000:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:7d10
+B:HIT:HURT:7d10
+B:HIT:EAT_GOLD:2d10
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_MAXHP | WILD_TOO | DROP_CORPSE |
+F:ESCORT |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | IM_COLD | IM_POIS | BASEANGBAND | HAS_LITE
+D:Big, brawny, powerful and with a greed for gold.
+
+N:507:Shade
+G:G:D
+I:120:14d20:20:30:10
+W:33:3:0:350
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:WAIL:TERRIFY
+B:TOUCH:EXP_40
+B:CLAW:LOSE_INT:1d10
+F:FORCE_SLEEP | RAND_25 |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 |
+F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | CAN_FLY |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | HOLD | DRAIN_MANA | FORGET
+D:A shadowy form clutches at you from the darkness. A powerful undead with
+D:a deadly touch.
+
+N:508:Spectre
+G:G:U
+I:120:14d20:20:30:10
+W:33:3:0:350
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:WAIL:TERRIFY
+B:TOUCH:EXP_40
+B:CLAW:LOSE_WIS:5d5
+F:FORCE_SLEEP | RAND_25 |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 | CAN_FLY |
+F:COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | HOLD | DRAIN_MANA | FORGET
+D:A phantasmal shrieking spirit. Its wail drives the intense cold of pure
+D:evil deep within your body.
+
+N:509:Water troll
+G:T:B
+I:110:36d10:20:50:50
+W:35:1:4000:420
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d9
+B:HIT:HURT:1d9
+B:HIT:HURT:2d2
+B:HIT:HURT:2d2
+F:MALE | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:FRIENDS | DROP_60 | REGENERATE |
+F:OPEN_DOOR | BASH_DOOR | CAN_SWIM |
+F:EVIL | TROLL | IM_COLD | IM_POIS | HURT_LITE | BASEANGBAND
+D:He is a troll that reeks of brackish water and mud.
+
+N:510:Fire elemental
+G:E:r
+I:110:30d8:12:50:50
+W:33:2:0:350
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:FIRE:4d6
+B:HIT:FIRE:4d6
+F:FORCE_SLEEP | RAND_25 |
+F:EMPTY_MIND | CAN_FLY | WILD_TOO | WILD_VOLCANO |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL | AURA_FIRE |
+F:IM_FIRE | IM_POIS | IM_ELEC | IM_ACID |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_6 |
+S:BO_FIRE
+D:It is a towering inferno of flames.
+
+N:511:Cherub
+G:A:G
+I:120:100d10:30:68:255
+W:39:4:0:2700
+E:1:1:1:2:1:1
+O:0:90:10:0
+B:HIT:HURT:4d3
+B:HIT:HURT:3d8
+B:HIT:HURT:4d3
+B:HIT:HURT:3d8
+F:FORCE_SLEEP | FORCE_MAXHP | NO_FEAR | GOOD | CAN_FLY |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | REFLECTING | RES_TELE
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | HASTE | BLIND | SCARE | MIND_BLAST | BO_FIRE |
+S:S_MONSTERS
+D:It is an angel moving very quickly, wielding a holy war hammer and casting
+D:a volley of powerful spells in your direction.
+
+N:512:Water elemental
+G:E:b
+I:110:25d8:12:40:50
+W:33:2:0:325
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+F:FORCE_SLEEP | RAND_25 |
+F:EMPTY_MIND | COLD_BLOOD | CAN_FLY |
+F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL |
+F:IM_POIS | IM_ACID | IM_FIRE | IM_COLD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BO_COLD
+D:It is a towering tempest of water.
+
+N:513:Multi-hued hound
+G:Z:v
+I:110:30d10:25:40:0
+W:33:3:600:600
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:4d4
+B:BITE:HURT:4d4
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR | ATTR_MULTI | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:IM_ELEC | IM_POIS | IM_ACID | IM_FIRE | IM_COLD |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BR_ACID | BR_POIS | BR_COLD | BR_FIRE | BR_ELEC
+D:Shimmering in rainbow hues, this hound is beautiful and deadly.
+
+N:514:Invisible stalker
+G:E:y
+I:130:19d12:20:46:20
+W:35:3:0:300
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:RAND_50 |
+F:RES_TELE |
+F:EMPTY_MIND | INVISIBLE | COLD_BLOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING
+F:BASEANGBAND | NO_CUT
+D:It is impossible to define its form but its violence is legendary.
+
+N:515:Carrion crawler
+G:c:o
+I:110:20d12:15:40:10
+W:34:2:2000:100
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:PARALYZE:2d6
+B:STING:PARALYZE:2d6
+F:RAND_25 | FRIENDS | DROP_SKELETON |
+F:WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+D:A hideous centipede covered in slime and with glowing tentacles around its
+D:head.
+
+N:516:Master thief
+G:p:b
+I:130:18d10:20:30:40
+W:34:2:1300:350
+E:1:1:1:2:1:1
+O:90:10:0:0
+B:HIT:HURT:2d8
+B:HIT:HURT:3d4
+B:HIT:EAT_GOLD:4d4
+B:HIT:EAT_ITEM:4d5
+F:MALE |
+F:DROP_90 | DROP_2D2 | DROP_SKELETON | DROP_CORPSE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_6
+S:TRAPS | ARROW_2 | BLINK
+D:Cool and confident, fast and lithe; protect your possessions quickly!
+
+N:517:The Watcher in the Water
+G:~:v
+I:120:27d100:30:100:80
+W:45:3:7000:12000
+E:3:0:3:6:1:0
+O:50:50:0:0
+B:CRUSH:ACID:8d8
+B:CRUSH:POISON:8d8
+B:CRUSH:PARALYZE:8d8
+F:UNIQUE | FORCE_SLEEP | FORCE_MAXHP | CAN_SWIM | AQUATIC | ANIMAL |
+F:IM_ACID | IM_COLD | IM_POIS | RES_WATE | RES_TELE | DROP_CORPSE |
+F:NO_CONF | NO_FEAR | EVIL | COLD_BLOOD | BASEANGBAND |
+F:ONLY_ITEM | DROP_GOOD | DROP_4D2 | DROP_1D2 | SPECIAL_GENE | DROP_RANDART
+S:1_IN_5 | BA_WATE | BO_WATE | HOLD | BR_POIS | BO_ICEE | TELE_TO
+D:A vile creature which seems to consist mostly of tentacles, it seeks to
+D:drag people to their doom in the water. Few have ever escaped its grasp.
+
+N:518:Lich
+G:L:o
+I:110:30d10:20:60:60
+W:34:2:0:1000
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:TOUCH:EXP_40
+B:TOUCH:UN_POWER
+B:TOUCH:LOSE_DEX:2d8
+B:TOUCH:LOSE_DEX:2d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_1D2 |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BLINK | TELE_TO | TELE_AWAY | BLIND | HOLD | SLOW | SCARE |
+S:CAUSE_3 | DRAIN_MANA | BRAIN_SMASH
+D:It is a skeletal form dressed in robes. It radiates vastly evil power.
+
+N:519:Gas spore
+G:e:g
+I:110:25d10:30:1:5
+W:34:4:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:DISEASE:30d2
+F:FORCE_SLEEP |
+F:STUPID | EMPTY_MIND | CAN_FLY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:From a distance, this creature is often mistaken for the
+D:much more dangerous beholder.
+
+N:520:Master vampire
+G:V:g
+I:110:34d20:20:60:10
+W:36:1:1600:750
+E:1:1:1:2:1:1
+O:20:40:30:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:BITE:EXP_40:3d6
+B:BITE:EXP_40:3d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_4D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:TELE_TO | HOLD | CONF | SCARE | CAUSE_3 | MIND_BLAST | FORGET |
+S:DARKNESS | BO_NETH
+D:It is a humanoid form dressed in robes. Power emanates from its chilling
+D:frame.
+
+N:521:Oriental vampire
+G:V:s
+I:110:30d30:20:60:10
+W:40:3:0:750
+E:1:1:1:2:1:1
+O:10:45:35:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:BITE:EXP_40:3d6
+B:BITE:EXP_40:3d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_4D2 | CAN_FLY |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE | INVISIBLE | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | RES_TELE |
+F:BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:TELE_TO | HOLD | CONF | SCARE | CAUSE_3 | MIND_BLAST | FORGET |
+S:DARKNESS | BO_NETH
+D:The oriental vampire can transform into a mist at will.
+
+N:522:Greater mummy
+G:z:y
+I:110:34d10:30:68:255
+W:36:3:0:800
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:CLAW:LOSE_CON:3d6
+B:CLAW:DISEASE:3d6
+B:GAZE:EXP_40:3d4
+B:GAZE:TERRIFY:3d4
+F:FORCE_SLEEP | FORCE_MAXHP | NO_FEAR | EVIL | UNDEAD |COLD_BLOOD |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | RES_TELE |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:HEAL | HASTE | BLIND | SCARE | S_UNDEAD | ANIM_DEAD |
+S:BA_POIS | BA_NETH | BA_COLD | DRAIN_MANA |
+S:MIND_BLAST | CAUSE_3 | DARKNESS | FORGET
+D:Once a powerful ruler, now an even more powerful undead menace.
+
+N:523:Bloodletter of Khorne
+G:U:r
+I:120:30d8:20:40:30
+W:34:1:0:450
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:EXP_20:13d1
+B:HIT:EXP_20:13d1
+B:HIT:EXP_20:13d1
+F:FORCE_MAXHP | OPEN_DOOR | FRIENDS | DROP_60 | REGENERATE |
+F:ONLY_ITEM | DROP_CHOSEN | NO_FEAR | NONLIVING |
+F:EVIL | IM_POIS | IM_COLD | IM_FIRE | DEMON | ZANGBAND | HAS_LITE
+D:Slender, red-skinned demons twisting in nightmarish shapes.
+D:They are armed with hellblades, which will suck the life from
+D:your body.
+
+N:524:Giant grey scorpion
+G:S:s
+I:120:18d20:12:50:40
+W:34:4:1200:275
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+B:STING:POISON:1d4
+F:WEIRD_MIND | BASH_DOOR | WILD_TOO | DROP_SKELETON |
+F:ANIMAL
+F:MORTAL | BASEANGBAND
+D:It is a giant grey scorpion. It looks poisonous.
+
+N:525:Earth elemental
+G:E:u
+I:100:30d10:10:60:90
+W:34:2:0:375
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD |
+F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_8 |
+S:BO_ACID
+D:It is a towering form composed of rock with fists of awesome power.
+
+N:526:Air elemental
+G:E:B
+I:120:30d5:12:50:50
+W:34:2:0:390
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d10
+B:HIT:CONFUSE:1d4
+B:HIT:HURT:1d10
+F:FORCE_SLEEP | RAND_25 |
+F:EMPTY_MIND | COLD_BLOOD | CAN_FLY |
+F:KILL_BODY | KILL_ITEM | BASH_DOOR | POWERFUL |
+F:IM_ACID | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_8 |
+S:BO_ELEC
+D:It is a towering tornado of winds.
+
+N:527:Shimmering mold
+G:m:b
+I:110:32d8:2:24:70
+W:27:1:0:140
+B:SPORE:ELEC:5d4
+B:SPORE:ELEC:5d4
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND |
+F:IM_ELEC | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a strange growth on the dungeon floor, glowing and crackling with sparks.
+
+N:528:Gargoyle
+G:u:s
+I:110:18d12:10:50:15
+W:34:2:3000:110
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:1d6
+F:DROP_60 | ONLY_GOLD | EVIL | DEMON | FRIENDS | HURT_LITE |
+F:WILD_TOO | WILD_MOUNTAIN | WILD_WASTE |
+F:IM_POIS | IM_FIRE | IM_COLD | IM_ELEC | HURT_ROCK | NONLIVING |
+F:BASEANGBAND | NO_CUT
+S:1_IN_12
+S:BR_ELEC | BR_FIRE
+D:A weird demon creature with a stone-like skin.
+
+N:529:Malicious leprechaun
+G:h:v
+I:120:4d5:8:13:8
+W:35:4:1200:85
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:TOUCH:EAT_GOLD
+B:TOUCH:EAT_ITEM
+F:INVISIBLE | RAND_25 | TAKE_ITEM | COLD_BLOOD |
+F:HURT_LITE | EVIL | OPEN_DOOR | MALE |
+F:MORTAL | BASEANGBAND
+S:MULTIPLY |
+S:1_IN_6 |
+S:BLINK | TPORT | TELE_TO | CAUSE_1
+D:This little creature has a fiendish gleam in its eyes.
+
+N:530:Eog golem
+G:g:u
+I:100:100d20:12:125:10
+W:34:4:12000:1200
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+F:ONLY_GOLD | DROP_2D2 |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | REFLECTING |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+D:It is a massive deep brown statue, striding towards you with an
+D:all-too-familiar purpose. Your magic surprisingly feels much less
+D:powerful now.
+
+N:531:Little Boy
+G:{:D
+I:120:12d12:10:80:12
+W:35:2:0:200
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:SHATTER:100d2
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | REFLECTING |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | RES_TELE | JOKEANGBAND | NO_CUT
+D:A shining machine of death and destruction.
+
+N:532:Dagashi
+G:p:u
+I:120:13d25:20:70:10
+W:35:4:1600:500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:POISON:3d4
+B:HIT:LOSE_STR:3d4
+B:HIT:LOSE_STR:3d4
+B:HIT:POISON:3d4
+F:MALE |
+F:DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A human warrior, moving with lightning speed.
+
+N:533:Headless ghost
+G:G:u
+I:120:20d25:20:30:10
+W:35:3:0:550
+E:0:0:0:0:0:0
+O:35:25:25:0
+B:TOUCH:TERRIFY
+B:TOUCH:EXP_40
+B:CLAW:LOSE_INT:5d5
+B:CLAW:LOSE_WIS:5d5
+F:FORCE_SLEEP | RAND_25 |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 | CAN_FLY |
+F:COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | DRAIN_MANA | SCARE | BO_COLD | FORGET
+D:A phantasmal apparition with no head.
+
+N:534:Dread
+G:G:o
+I:120:25d20:20:30:10
+W:35:2:0:600
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:LOSE_STR:3d4
+F:FORCE_SLEEP | RAND_25 |
+F:ONLY_ITEM | DROP_60 | DROP_2D2 |
+F:TAKE_ITEM | INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | CAN_FLY |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | HOLD | CONF | DRAIN_MANA | BO_NETH
+D:It is a form that screams its presence against the eye. Death incarnate,
+D:its hideous black body seems to struggle against reality as the universe
+D:itself struggles to banish it.
+
+N:535:Leng spider
+G:S:v
+I:120:16d20:12:50:40
+W:35:4:600:250
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:1d6
+B:STING:POISON:1d6
+F:WEIRD_MIND | BASH_DOOR | FRIENDS | ELDRITCH_HORROR | DROP_CORPSE |
+F:ANIMAL | SPIDER | CTHANGBAND
+D:Bloated purple spiders with long, bristly legs.
+
+N:536:Gauth
+G:e:s
+I:110:15d20:20:50:20
+W:36:2:1600:600
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:UN_BONUS:5d2
+B:GAZE:UN_BONUS:5d2
+B:GAZE:UN_POWER:5d2
+B:GAZE:UN_POWER:5d2
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE |
+F:BASH_DOOR | EVIL | BASEANGBAND | MORTAL
+S:1_IN_5 |
+S:CAUSE_2 | TELE_AWAY | BA_COLD | BO_ELEC | HOLD | DRAIN_MANA
+D:Another lesser relative of the beholder, this six-eyed creature feeds on magic.
+
+N:537:Smoke elemental
+G:E:R
+I:120:15d10:10:80:90
+W:36:3:0:375
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:HURT:2d6
+B:ENGULF:HURT:2d6
+F:FORCE_SLEEP |
+F:EMPTY_MIND |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | CAN_FLY | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:DARKNESS | BO_FIRE
+D:It is a towering blackened form, crackling with heat.
+
+N:538:Olog
+G:T:y
+I:110:42d10:20:50:50
+W:36:1:6000:450
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:BITE:HURT:2d3
+B:BITE:HURT:2d3
+F:FORCE_MAXHP | OPEN_DOOR | FRIENDS | DROP_60 | REGENERATE |
+F:SMART | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | TROLL | IM_POIS | BASEANGBAND
+D:It is a massive troll, more intelligent than most of its kind, with needle-
+D:sharp fangs.
+
+N:539:Halfling slinger
+G:h:U
+I:110:30d9:20:40:30
+W:35:1:900:330
+E:1:1:1:2:1:1
+O:100:0:0:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+F:FORCE_MAXHP | OPEN_DOOR | FRIENDS | DROP_90 |
+F:SMART | EVIL | IM_POIS | IM_COLD | MALE | DROP_SKELETON | DROP_CORPSE
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3
+S:ARROW_4
+D:A rebel halfling who has rejected the halfling tradition of archery.
+
+N:540:Gravity hound
+G:Z:W
+I:110:35d10:30:30:0
+W:35:2:700:500
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_GRAV
+D:Unfettered by the usual constraints of gravity, these unnatural creatures
+D:are walking on the walls and even the ceiling! The earth suddenly feels
+D:rather less solid as you see gravity warp all around these monsters.
+
+N:541:Acidic cytoplasm
+G:j:s
+I:120:40d10:12:18:1
+W:35:5:3000:180
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+F:FORCE_MAXHP | TAKE_ITEM | COLD_BLOOD |
+F:DROP_1D2 | DROP_4D2 | CAN_SWIM |
+F:STUPID | EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_FEAR | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:A disgusting animated blob of destruction. Flee its gruesome hunger!
+
+N:542:Inertia hound
+G:Z:W
+I:110:35d10:30:30:0
+W:35:2:700:500
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FRIENDS | DROP_SKELETON | DROP_CORPSE |
+F:BASH_DOOR |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_INER
+D:Bizarrely, this hound seems to be hardly moving at all, yet it approaches
+D:you with deadly menace. It makes you tired just to look at it.
+
+N:543:Impact hound
+G:Z:u
+I:110:35d10:30:30:0
+W:35:2:700:500
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_WALL
+D:A deep brown shape is visible before you, its canine form striking you with
+D:an almost physical force. The dungeon floor buckles as if struck by a
+D:powerful blow as it stalks towards you.
+
+N:544:Shardstorm
+G:v:u
+I:120:32d10:40:12:0
+W:37:1:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:HURT:6d6
+F:FORCE_SLEEP | RAND_50 | NONLIVING | CAN_FLY |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL |
+F:NO_FEAR | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BR_SHAR
+D:A howling blast of razor-sharp mountain fragments, kept intact by perilous
+D:magics.
+
+N:545:Ooze elemental
+G:E:g
+I:110:13d10:10:80:90
+W:36:3:0:300
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_ACID | IM_FIRE | CAN_SWIM | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BO_ACID | BA_ACID
+D:It is a towering mass of filth, an eyesore of ooze.
+
+N:546:Young black dragon
+G:d:s
+I:110:30d10:20:60:70
+W:31:1:20000:700
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_SWAMP |
+F:DROP_3D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | IM_ACID | BASEANGBAND | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_ACID
+D:It has a form out of legend. Its still-tender scales are a
+D:darkest black hue. Acid drips from its body.
+
+N:547:Mumak
+G:q:s
+I:110:90d10:20:55:100
+W:35:3:150000:2100
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BUTT:HURT:8d6
+B:BUTT:HURT:8d6
+B:CRUSH:HURT:8d4
+F:BASH_DOOR | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:A massive elephantine form with eyes twisted by madness.
+
+N:548:Giant fire ant
+G:a:R
+I:110:20d10:14:49:40
+W:35:1:700:350
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+F:FORCE_MAXHP | KILL_BODY | FRIENDS | DROP_SKELETON
+F:WEIRD_MIND | BASH_DOOR | SUSCEP_COLD |
+F:ANIMAL | IM_FIRE
+F:MORTAL | BASEANGBAND
+D:A giant ant covered in shaggy fur. Its powerful jaws glow with heat.
+
+N:549:Mature white dragon
+G:d:w
+I:110:40d10:20:70:70
+W:34:1:110000:1200
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:4d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_4D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY | WILD_TOO | WILD_WASTE | WILD_MOUNTAIN |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | SUSCEP_FIRE | BASEANGBAND |
+F:HAS_LITE | ATTR_MULTI
+S:1_IN_9 |
+S:SCARE |
+S:BR_COLD
+D:A large dragon, scales gleaming bright white.
+
+N:550:Xorn
+G:X:u
+I:110:16d10:20:80:10
+W:36:2:30000:650
+E:0:0:0:3:0:0
+O:0:0:0:0
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:FORCE_MAXHP |
+F:EMPTY_MIND | COLD_BLOOD |
+F:KILL_ITEM | PASS_WALL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:A huge creature of the element Earth. Able to merge with its element, it
+D:has four huge arms protruding from its enormous torso.
+
+N:551:Rogrog the Black Troll
+G:T:D
+I:120:15d100:20:70:50
+W:41:5:9000:5000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d7
+B:HIT:HURT:6d7
+B:BITE:HURT:4d10
+B:SPIT:ACID:4d8
+F:UNIQUE | MALE |
+F:FORCE_MAXHP |
+F:ESCORT | MOVE_BODY |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | DROP_CORPSE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | TROLL | IM_COLD | IM_POIS | BASEANGBAND
+D:A massive and cruel troll of great power, drool slides caustically down
+D:his muscular frame. Despite his bulk, he strikes with stunning speed.
+
+N:552:Mist giant
+G:#:B
+I:120:35d10:20:50:50
+W:36:2:0:450
+E:0:0:0:0:0:0
+O:10:90:0:0
+B:CRUSH:HURT:4d8
+B:CRUSH:HURT:4d8
+B:CRUSH:HURT:4d8
+B:BITE:EXP_40:3d9
+F:FORCE_MAXHP | OPEN_DOOR | DROP_60 | WILD_TOO | WILD_SWAMP |
+F:SMART | BASH_DOOR |
+F:EVIL | GIANT | IM_POIS | CAN_FLY | CTHANGBAND | NO_CUT
+D:"Two eyes, the colour of a thin, yellow wine, were set high in the
+D:thing's body; though it had no separate head. A mouthing, obscene slit,
+D:filled with fangs lay just beneath the eyes. It had no nose or ears...
+D:Four appendages sprang from its upper parts and its lower body
+D:slithered along the ground, unsupported by any limbs... incredibly
+D:disgusting to behold and its amorphous body gave off a stench of death
+D:and decay..."
+
+N:553:Phantom
+G:G:v
+I:120:20d25:30:30:20
+W:36:3:0:400
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:EXP_80
+B:TOUCH:EXP_40
+B:CLAW:LOSE_INT:1d10
+B:CLAW:LOSE_WIS:1d10
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_1D2 |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_5 |
+S:FORGET | MIND_BLAST
+D:An unholy creature of darkness, the aura emanating from this evil being
+D:saps your very soul.
+
+N:554:Grey wraith
+G:W:s
+I:110:19d10:20:50:10
+W:36:1:0:700
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+B:TOUCH:EXP_40
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_60 | DROP_90 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | HURT_LITE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:HOLD | SCARE | CAUSE_3 | DARKNESS
+D:A tangible but ghostly form, made of grey fog. The air around it feels
+D:deathly cold.
+
+N:555:Revenant
+G:W:u
+I:110:2d111:20:50:10
+W:36:1:0:725
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:GAZE:PARALYZE
+B:CLAW:LOSE_CON:1d10
+B:CLAW:LOSE_CON:1d10
+B:GAZE:EXP_40
+F:FORCE_SLEEP | FORCE_MAXHP | REGENERATE |
+F:DROP_60 | DROP_90 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | HURT_LITE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:CONF | SCARE | CAUSE_3 | DARKNESS
+D:Back from the grave, to wreak vengeance upon the living. A skeletal figure
+D:wearing a black robe, with eyes that burn with undying hatred.
+
+N:556:Young multi-hued dragon
+G:d:v
+I:110:32d10:20:60:70
+W:32:1:20000:900
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:3d8
+F:ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:DROP_1D2 | DROP_3D2 | CAN_FLY |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC |
+F:IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:SCARE |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
+D:It has a form out of legend. Beautiful scales of shimmering
+D:and magical colours cover it.
+
+N:557:Raal's Tome of Destruction
+G:?:r
+I:120:50d15:20:150:15
+W:36:4:0:1500
+E:0:0:0:0:0:0
+O:20:0:80:0
+F:NEVER_MOVE | NEVER_BLOW | NONLIVING |
+F:FORCE_SLEEP | DROP_90 | DROP_GOOD | EVIL | COLD_BLOOD | EMPTY_MIND |
+F:FORCE_MAXHP | NO_CONF | NO_FEAR | NO_SLEEP | CHAR_MULTI |
+F:IM_ACID | IM_POIS | IM_COLD | IM_ELEC | SUSCEP_FIRE | RES_NETH | RES_TELE |
+F:ZANGBAND | HAS_LITE | NO_CUT
+S:1_IN_2 |
+S:BO_ACID | BR_FIRE | BO_MANA | BR_COLD | BR_POIS |
+S:BO_WATE | BA_POIS | BR_NETH
+D:A sentient arcane tome casting spells with malevolent intent.
+
+N:558:Colossus
+G:g:G
+I:110:30d100:15:150:10
+W:36:4:35000:900
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+F:FORCE_MAXHP |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ELEC |
+F:IM_POIS | NONLIVING | REFLECTING |
+F:NO_CONF | NO_SLEEP | NO_FEAR
+F:MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_8
+S:ARROW_4
+D:An enormous construct resembling a titan made from stone. It strides
+D:purposefully towards you, swinging its slow fists with earth-shattering
+D:power.
+
+N:559:Young gold dragon
+G:d:y
+I:110:30d10:20:60:70
+W:31:1:20000:700
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_3D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | WILD_TOO | WILD_MOUNTAIN |
+F:EVIL | DRAGON | BASEANGBAND | NO_STUN | HAS_LITE | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_SOUN
+D:It has a form out of legend. Its still-tender scales are a
+D:tarnished gold hue, and light is reflected from its form.
+
+N:560:Mature blue dragon
+G:d:b
+I:110:40d10:20:70:70
+W:34:1:110000:1200
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:4d8
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_4D2 | DROP_CORPSE
+F:BASH_DOOR | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD |
+F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_9 |
+S:SCARE |
+S:BR_ELEC
+D:A large dragon, scales tinted deep blue.
+
+N:561:Mature green dragon
+G:d:g
+I:110:40d10:20:70:70
+W:34:1:110000:1200
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:4d8
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_4D2 | DROP_CORPSE |
+F:BASH_DOOR | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD |
+F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_9 |
+S:SCARE |
+S:BR_POIS
+D:A large dragon, scales tinted deep green.
+
+N:562:Mature bronze dragon
+G:d:U
+I:110:40d10:20:70:70
+W:34:1:110000:1200
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d8
+B:CLAW:HURT:2d8
+B:BITE:HURT:4d8
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN |
+F:DROP_4D2 | CAN_FLY |
+F:BASH_DOOR | DROP_CORPSE |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_9 |
+S:CONF | SCARE |
+S:BR_CONF
+D:A large dragon with scales of rich bronze.
+
+N:563:Young red dragon
+G:d:r
+I:110:30d10:20:60:70
+W:31:1:20000:700
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | SUSCEP_COLD |
+F:DROP_3D2 | WILD_TOO | WILD_MOUNTAIN | WILD_VOLCANO |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE
+F:EVIL | DRAGON | IM_FIRE | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_10 |
+S:SCARE |
+S:BR_FIRE
+D:It has a form out of legend. Its still-tender scales are a
+D:deepest red hue. Heat radiates from its form.
+
+N:564:Nightblade
+G:h:D
+I:120:19d13:20:60:10
+W:36:2:1600:315
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:POISON:3d4
+B:HIT:POISON:3d4
+B:HIT:LOSE_CON:3d4
+F:MALE |
+F:DROP_1D2 | FRIENDS | INVISIBLE | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | HURT_LITE |
+F:EVIL | NO_CONF | NO_SLEEP | ZANGBAND
+D:A dark elven assassin, so stealthy that he is almost impossible to see.
+
+N:565:Trapper
+G:.:w
+I:120:60d10:30:75:10
+W:36:3:1300:580
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:PARALYZE:15d1
+B:HIT:PARALYZE:15d1
+F:CHAR_CLEAR | ATTR_CLEAR | CHAR_MULTI |
+F:NEVER_MOVE | FORCE_MAXHP |
+F:INVISIBLE | EMPTY_MIND | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND
+D:This creature traps unsuspecting victims
+D:and paralyzes them, to be slowly digested later.
+
+N:566:Bodak
+G:u:r
+I:110:35d10:10:68:90
+W:36:2:0:750
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:FIRE:4d6
+B:HIT:FIRE:4d6
+B:GAZE:EXP_20
+F:FORCE_SLEEP |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | AURA_FIRE | NONLIVING |
+F:EVIL | DEMON | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:HAS_LITE
+S:1_IN_4 |
+S:BO_FIRE | BA_FIRE |
+S:S_DEMON
+D:It is a humanoid form composed of flames and hatred.
+
+N:567:Time bomb
+G:.:w
+I:130:12d12:30:40:0
+W:36:5:0:50
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:TIME:30d2
+F:CHAR_CLEAR | ATTR_CLEAR | CHAR_MULTI |
+F:NEVER_MOVE | FORCE_MAXHP |
+F:EMPTY_MIND | INVISIBLE | COLD_BLOOD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | JOKEANGBAND | NO_CUT
+D:It was left here to be used against intruders.
+
+N:568:Mezzodaemon
+G:u:o
+I:110:40d10:10:68:90
+W:36:2:0:750
+E:1:1:1:0:1:1
+O:0:0:0:0
+B:CLAW:HURT:5d6
+B:CLAW:HURT:5d6
+F:FORCE_SLEEP | PASS_WALL | INVISIBLE |
+F:IM_POIS | IM_COLD | IM_ACID | IM_FIRE |
+F:NO_SLEEP | NO_CONF | NO_STUN | NONLIVING |
+F:EVIL | DEMON | BASEANGBAND
+S:1_IN_4 |
+S:BLINK | DARKNESS | S_DEMON
+D:An ugly demon with insect-like extremities and large bulbous eyes.
+
+N:569:Elder thing
+G:u:G
+I:110:35d10:10:70:50
+W:36:3:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:4d6
+B:CRUSH:HURT:4d6
+B:CRUSH:HURT:4d6
+B:TOUCH:LOSE_WIS
+F:FORCE_SLEEP | OPEN_DOOR | BASH_DOOR | ELDRITCH_HORROR | NONLIVING |
+F:EVIL | DEMON | IM_POIS | IM_ACID | NO_CONF | NO_SLEEP | RES_TELE |
+F:CAN_SWIM | CTHANGBAND
+S:1_IN_4 |
+S:SCARE | TELE_AWAY | BA_NUKE | CAUSE_4 | BA_POIS |
+S:CONF | S_DEMON | S_UNDEAD
+D:"...some ridged barrel-shaped objects with thin
+D:horizontal arms radiating spoke-like from a central ring and with
+D:vertical knobs or bulbs projecting from the head and base of the
+D:barrel. Each of these knobs was the hub of a system of five long,
+D:flat, triangularly tapering arms arranged around it like the arms
+D:of a starfish."
+
+N:570:Ice elemental
+G:E:w
+I:110:35d10:10:60:90
+W:37:3:0:650
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:COLD:4d3
+B:HIT:HURT:4d6
+B:TOUCH:COLD:4d3
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD | AURA_COLD |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_COLD | IM_ELEC | CAN_SWIM | IM_POIS | IM_ACID |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BO_ICEE | BA_COLD
+D:It is a towering glacier of ice.
+
+N:571:Necromancer
+G:p:R
+I:110:28d10:20:50:10
+W:36:2:1600:666
+E:1:1:1:2:1:1
+O:10:0:90:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_SKELETON
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HASTE | TPORT | TELE_TO | BLIND | HOLD | SCARE | CAUSE_3 |
+S:BO_NETH | MIND_BLAST | FORGET |
+S:S_UNDEAD | ANIM_DEAD
+D:A gaunt figure, clothed in black robes.
+
+N:572:The Greater hell magic mushroom were-quylthulg
+G:Q:s
+I:120:19d99:50:80:50
+W:36:3:0:2500
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:GAZE:EXP_40:4d8
+B:GAZE:EXP_40:4d8
+B:CRUSH:ACID:8d8
+B:CRUSH:ACID:8d8
+F:FORCE_MAXHP | FORCE_SLEEP | UNIQUE | NO_STUN | NO_CONF |
+F:NO_SLEEP| EVIL | IM_ACID | IM_ELEC | IM_FIRE | IM_POIS |
+F:IM_COLD | RES_NETH | RES_WATE | RES_PLAS | RES_DISE | SMART |
+F:RES_NEXU | NONLIVING | RES_TELE | KILL_WALL | ELDRITCH_HORROR |
+F:BASH_DOOR | DEMON | COLD_BLOOD | ANIMAL | CAN_SWIM |
+F:DROP_GOOD | DROP_GREAT | ONLY_ITEM | DROP_2D2 | JOKEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLINK | SLOW | SCARE | DARKNESS | HEAL | ANIM_DEAD
+S:TPORT | TELE_AWAY | HASTE | S_MONSTER | DRAIN_MANA |
+S:S_UNDEAD | S_DEMON | S_DRAGON | S_KIN
+D:This unholy abomination will crush you too. Flee while you can!
+
+N:573:Lorgan, Chief of the Easterlings
+G:p:v
+I:120:18d100:25:100:10
+W:36:2:0:1200
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:TELE_TO | S_MONSTERS
+D:A mighty warrior from the east, Lorgan hates everything that he cannot
+D:control.
+
+N:574:Chaos spawn
+G:e:s
+I:110:21d21:20:50:20
+W:38:2:1900:700
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:HURT:10d10
+B:GAZE:UN_BONUS:5d2
+B:GAZE:EXP_40:5d2
+B:GAZE:PARALYZE:5d2
+F:FORCE_MAXHP | BASH_DOOR | EVIL | CAN_FLY | ZANGBAND
+D:It has two eyestalks and a large central eye. Its gaze can kill.
+
+N:575:Mummified troll
+G:z:w
+I:110:25d10:20:50:50
+W:34:1:5000:420
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:FORCE_MAXHP |
+F:DROP_60 |
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | TROLL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a massive figure clothed in wrappings. You are wary of its massive
+D:fists.
+
+N:576:Storm of Unmagic
+G:v:v
+I:130:32d20:50:40:0
+W:53:3:0:4000
+B:ENGULF:EXP_80:5d5
+B:ENGULF:UN_POWER:5d5
+B:ENGULF:UN_BONUS:5d5
+B:HIT:LOSE_ALL:5d5
+F:ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:RAND_50 | RAND_25 | NONLIVING | CAN_FLY |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_TIME | BR_DISE
+D:Howling through the disintegrating dungeon, this awesome whirlpool of Unmagic
+D:rips the enchantments from everything it touches.
+
+N:577:Crypt thing
+G:L:G
+I:120:80d10:20:60:60
+W:37:2:0:2500
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:TOUCH:EXP_40
+B:TOUCH:UN_POWER
+B:TOUCH:LOSE_DEX:2d10
+B:TOUCH:LOSE_DEX:2d10
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_1D2 | RES_TELE |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLINK | TELE_TO | TELE_AWAY | TELE_LEVEL |
+S:CAUSE_3 | DRAIN_MANA | BRAIN_SMASH
+D:It is a skeletal form dressed in robes. It looks evil and devious...
+
+N:578:Chaos butterfly
+G:I:G
+I:120:60d10:40:60:10
+W:37:2:0:1000
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:3d7
+B:CLAW:HURT:3d7
+B:CRUSH:HURT:10d5
+F:FORCE_SLEEP |
+F:CAN_FLY |
+F:WEIRD_MIND | BASH_DOOR | ATTR_MULTI | ATTR_ANY |
+F:NO_CONF | NO_SLEEP | MORTAL | ZANGBAND
+S:1_IN_9
+S:BR_CONF | BR_CHAO
+D:With fractal patterns on its wings, it is clearly one of those butterflies
+D:that mathematicians keep talking about - the ones that flap their wings on the
+D:other side of the world to cause storms here. Now's your chance to stop it...
+
+N:579:Time elemental
+G:E:G
+I:120:35d10:90:70:10
+W:39:2:0:1000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TIME:3d4
+B:TOUCH:TIME:3d4
+F:PASS_WALL | IM_POIS | IM_FIRE | IM_ELEC | IM_FIRE | IM_ACID | CAN_FLY |
+F:NO_CONF | NO_SLEEP | EMPTY_MIND | KILL_ITEM | RAND_50 |
+F:ZANGBAND | NO_CUT
+S:1_IN_7
+S:SLOW | BR_TIME |
+D:You have not seen it yet.
+
+N:580:Flying polyp
+G:~:R
+I:120:35d10:90:70:10
+W:37:2:0:1000
+E:3:0:3:6:1:0
+O:0:0:0:0
+B:CRUSH:PARALYZE:8d4
+B:CRUSH:PARALYZE:8d4
+B:CRUSH:PARALYZE:8d4
+F:PASS_WALL | INVISIBLE | FORCE_MAXHP | RES_DISE |
+F:IM_POIS | IM_COLD | IM_ACID | ELDRITCH_HORROR |
+F:NO_CONF | NO_SLEEP | EVIL | CAN_FLY | CTHANGBAND |NO_CUT
+S:1_IN_7
+S:BR_WALL |
+D:"They were only partly material and had the power of aerial motion,
+D:despite the absence of wings... Suggestions of monstrous plasticity
+D:and of temporary lapses of visibility..."
+
+N:581:The Queen Ant
+G:a:v
+I:120:15d100:30:100:10
+W:37:2:2000:1000
+E:0:1:0:2:1:0
+O:50:50:0:0
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d8
+B:BITE:HURT:2d8
+F:UNIQUE | FEMALE | GOOD | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:WEIRD_MIND | OPEN_DOOR | BASH_DOOR |
+F:ANIMAL |
+F:MORTAL | BASEANGBAND
+S:1_IN_2 |
+S:S_KIN
+D:She's upset because you hurt her children.
+
+N:582:Will o' the wisp
+G:E:W
+I:130:20d10:30:150:0
+W:38:4:0:500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:1d9
+B:HIT:HURT:1d9
+B:HIT:HALLU:1d9
+B:HIT:HALLU:1d9
+F:FORCE_SLEEP | FORCE_MAXHP | RAND_50 |
+F:SMART | EMPTY_MIND | INVISIBLE |
+F:PASS_WALL | POWERFUL | CAN_FLY | WILD_TOO | WILD_SWAMP |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_2 |
+S:BLINK | TPORT | CONF | CAUSE_2
+D:A strange ball of glowing light. It disappears and reappears and seems to
+D:draw you to it. You seem somehow compelled to stand still and watch its
+D:strange dancing motion.
+
+N:583:Shan
+G:I:B
+I:120:20d8:20:120:20
+W:37:4:0:250
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:IM_POIS | IM_COLD | COLD_BLOOD | ANIMAL | EVIL |
+F:NO_SLEEP | NO_CONF | CAN_FLY | NEVER_BLOW | CTHANGBAND |
+S:1_IN_2
+S:CONF | HOLD | DRAIN_MANA | FORGET | MIND_BLAST | SHRIEK
+D:"Those huge lidless eyes which stared with hate at me, the jointed
+D:tendrils which seemed to twist from the head in cosmic rhythms,
+D:the ten legs, covered with black shining tentacles and folded into
+D:the pallid underbelly, and the semi-circular ridged wings covered
+D:with triangular scales -- all this cannot convey the soul-ripping
+D:horror of the shape which darted at me. I saw the three mouths
+D:of the thing move moistly, and then it was upon me."
+
+N:584:Magma elemental
+G:E:o
+I:110:35d10:10:70:90
+W:37:3:0:950
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:FIRE:3d7
+B:HIT:HURT:4d6
+B:HIT:FIRE:3d7
+F:FORCE_SLEEP |
+F:EMPTY_MIND | AURA_FIRE | WILD_TOO | WILD_VOLCANO |
+F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL |
+F:IM_FIRE | IM_ELEC | IM_ACID | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_7 |
+S:BO_PLAS | BA_FIRE
+D:It is a towering glowing form of molten rock.
+
+N:585:Black pudding
+G:j:D
+I:110:40d10:12:18:1
+W:37:5:300:50
+E:0:0:0:0:0:0
+O:90:0:0:0
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+B:TOUCH:ACID:1d10
+F:FORCE_MAXHP |
+F:FRIENDS |
+F:DROP_60 | DROP_90 | DROP_1D2 |
+F:STUPID | EMPTY_MIND | COLD_BLOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | CAN_SWIM | BASEANGBAND | NO_CUT
+D:A lump of rotting black flesh that slurrrrrrrps across the dungeon floor.
+
+N:586:Killer iridescent beetle
+G:K:v
+I:110:25d15:16:60:30
+W:37:2:600:850
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:ELEC:1d12
+B:CLAW:ELEC:1d12
+B:GAZE:PARALYZE
+F:ATTR_MULTI | FORCE_MAXHP |
+F:WEIRD_MIND | BASH_DOOR | AURA_ELEC | DROP_CORPSE |
+F:ANIMAL | IM_ELEC | CAN_FLY |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:It is a giant beetle, whose carapace shimmers with vibrant energies.
+
+N:587:Nexus vortex
+G:v:v
+I:120:32d10:100:40:0
+W:37:1:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:HURT:5d5
+F:FORCE_SLEEP |
+F:RAND_50 | RAND_25 | RES_NEXU | CAN_FLY |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_6 |
+S:BR_NEXU
+D:A maelstrom of potent magical energy.
+
+N:588:Plasma vortex
+G:v:R
+I:120:32d10:100:40:0
+W:37:1:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:FIRE:4d8
+B:ENGULF:ELEC:4d8
+F:FORCE_SLEEP | SUSCEP_COLD |
+F:RAND_50 | RAND_25 | RES_PLAS | AURA_FIRE | AURA_ELEC |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL |
+F:IM_FIRE | CAN_FLY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_6 |
+S:BR_PLAS
+D:A whirlpool of intense flame, charring the stones at your feet.
+
+N:589:Mature red dragon
+G:d:r
+I:110:50d10:20:80:70
+W:36:1:110000:1500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:4d10
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN | WILD_VOLCANO |
+F:DROP_1D2 | DROP_4D2 | CAN_FLY | DROP_CORPSE | SUSCEP_COLD |
+F:BASH_DOOR |
+F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_9 |
+S:CONF | SCARE |
+S:BR_FIRE
+D:A large dragon, scales tinted deep red.
+
+N:590:Mature gold dragon
+G:d:y
+I:110:50d10:20:80:70
+W:36:1:110000:1500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:4d10
+F:FORCE_SLEEP | FORCE_MAXHP | WILD_TOO | WILD_MOUNTAIN |
+F:DROP_1D2 | DROP_4D2 | CAN_FLY | DROP_CORPSE |
+F:BASH_DOOR |
+F:EVIL | DRAGON | NO_STUN | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_9 |
+S:CONF | SCARE |
+S:BR_SOUN
+D:A large dragon with scales of gleaming gold.
+
+N:591:Crystal drake
+G:d:u
+I:110:45d10:20:70:70
+W:33:3:18000:1350
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d4
+B:CLAW:HURT:2d4
+B:BITE:HURT:3d6
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:ONLY_ITEM | DROP_3D2 | REFLECTING |
+F:OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT
+F:ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_SHAR
+D:A dragon of strange crystalline form. Light shines through it, dazzling
+D:your eyes with spectrums of colour.
+
+N:592:Mature black dragon
+G:d:s
+I:110:50d10:20:80:70
+W:36:1:110000:1500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:4d10
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE |
+F:DROP_1D2 | DROP_4D2 | WILD_TOO | WILD_SWAMP | WILD_MOUNTAIN |
+F:BASH_DOOR |
+F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_9 |
+S:SCARE |
+S:BR_ACID
+D:A large dragon, with scales of deepest black.
+
+N:593:Mature multi-hued dragon
+G:d:v
+I:110:60d10:20:80:70
+W:38:1:110000:1800
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d12
+B:CLAW:HURT:2d12
+B:BITE:HURT:4d12
+F:ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_2D2 | DROP_4D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD |
+F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_7 |
+S:BLIND | CONF | SCARE |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
+D:A large dragon, scales shimmering many colours.
+
+N:594:Sky whale
+G:~:G
+I:110:80d10:20:75:30
+W:38:6:4000:1750
+E:0:0:0:0:1:0
+O:50:50:0:0
+B:CRUSH:HURT:20d2
+B:CRUSH:HURT:20d2
+B:CRUSH:HURT:20d2
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_60 | DROP_90 | DROP_2D2 | DROP_CORPSE |
+F:BASH_DOOR | SMART | GOOD |
+F:NO_CONF | NO_SLEEP | RES_NEXU | RES_TELE | RES_DISE
+F:MORTAL | ZANGBAND
+S:1_IN_9 |
+S:BRAIN_SMASH | CONF | SCARE | FORGET | TELE_TO | TELE_AWAY | SHRIEK
+D:A vastly intelligent whale-like being from the stars.
+
+N:595:Draebor, the Imp
+G:u:v
+I:120:19d99:12:80:50
+W:38:3:3000:3250
+E:0:1:1:0:1:0
+O:30:20:50:0
+B:CLAW:POISON:8d4
+B:CLAW:POISON:8d4
+B:BITE:HURT:8d8
+B:INSULT:*
+F:ESCORT
+F:DROP_60 | DROP_90 | DROP_1D2 | DROP_GOOD | ONLY_ITEM | DROP_CORPSE |
+F:CAN_SWIM | BASH_DOOR | RES_TELE | CAN_SPEAK |
+F:EVIL | DEMON | IM_FIRE | IM_COLD | IM_POIS | RES_WATE |
+F:UNIQUE | MALE | FORCE_SLEEP | FORCE_MAXHP | POWERFUL |
+F:NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:S_KIN | BLINK | TPORT | TELE_TO | TELE_AWAY | TELE_LEVEL | BLIND |
+S:CONF | SCARE
+D:An intensely irritating git of a monster.
+
+N:596:Mother Hydra
+G:u:v
+I:120:25d99:12:80:50
+W:40:3:30000:3250
+E:0:1:0:2:2:0
+O:0:50:50:0
+B:CLAW:POISON:8d4
+B:CLAW:POISON:8d4
+B:BITE:HURT:8d8
+F:ESCORT |
+F:DROP_60 | DROP_90 | DROP_1D2 | DROP_GOOD | ONLY_ITEM | DROP_CORPSE |
+F:CAN_SWIM | BASH_DOOR | ELDRITCH_HORROR | RES_TELE | CAN_SPEAK |
+F:EVIL | DEMON | IM_FIRE | IM_COLD | IM_POIS | RES_WATE |
+F:UNIQUE | FEMALE | FORCE_SLEEP | FORCE_MAXHP | POWERFUL |
+F:NO_CONF |
+F:MORTAL | CTHANGBAND
+S:1_IN_7 |
+S:S_HYDRA | S_DEMON | DARKNESS | BA_WATE | BO_ACID | BA_ACID
+D:The queen of the deep ones. "Vast, Polyphemus-like, and loathsome, it
+D:darted like a stupendous monster of nightmares..."
+
+N:597:Death knight
+G:p:D
+I:120:60d10:20:100:10
+W:38:1:2700:1111
+E:1:1:1:2:1:1
+O:0:90:0:10
+B:HIT:EXP_20:6d6
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_NETH |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_COLD | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_5 |
+S:BLIND | SCARE | CAUSE_3 | BO_NETH |
+S:S_MONSTERS
+D:It is a humanoid figure dressed in armour of an ancient form. From beneath
+D:its helmet, eyes glow a baleful red and seem to pierce you like lances of
+D:fire.
+
+N:598:Castamir the Usurper
+G:p:R
+I:120:88d10:20:90:40
+W:38:5:0:1600
+E:1:1:1:2:1:1
+O:10:60:10:10
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | TAKE_ITEM | BASH_DOOR |
+F:EVIL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | TRAPS | BO_FIRE | BO_COLD | BO_ELEC | BO_ICEE
+D:A Black Numenorean who usurped the throne of Gondor, he is treacherous and
+D:evil.
+
+N:599:Time vortex
+G:v:B
+I:130:32d10:100:40:0
+W:38:4:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:TIME:5d5
+F:FORCE_SLEEP |
+F:RAND_50 | RAND_25 |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | CAN_FLY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_TIME
+D:You haven't seen it yet.
+
+N:600:Shimmering vortex
+G:v:o
+I:140:32d10:100:40:0
+W:38:4:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:BLIND:4d4
+B:ENGULF:BLIND:4d4
+F:FORCE_SLEEP |
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_4 |
+S:BR_LITE | SHRIEK
+D:A strange pillar of shining light that hurts your eyes. Its shape changes
+D:constantly as it cuts through the air towards you. It is like a beacon,
+D:waking monsters from their slumber.
+
+N:601:Ancient blue dragon
+G:D:b
+I:120:72d10:20:90:80
+W:40:1:170000:2000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d8
+B:CLAW:HURT:4d8
+B:BITE:ELEC:7d8
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_3D2 | DROP_4D2 | DROP_CORPSE |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
+F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_ELEC
+D:A huge draconic form. Lightning crackles along its length.
+
+N:602:Ancient bronze dragon
+G:D:U
+I:120:72d10:20:90:80
+W:40:1:170000:2000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d8
+B:CLAW:HURT:4d8
+B:BITE:HURT:7d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:DROP_3D2 | DROP_4D2 | CAN_FLY |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_CONF
+D:A huge draconic form enveloped in a cascade of colour.
+
+N:603:Beholder
+G:e:U
+I:120:16d100:30:80:10
+W:40:3:1600:6000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:EXP_20:2d6
+B:GAZE:UN_POWER:2d6
+B:GAZE:INSANITY:2d6
+B:BITE:HURT:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY |
+F:BASH_DOOR | DROP_CORPSE |
+F:EVIL | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_2 |
+S:BLIND | SLOW | CONF | SCARE | DRAIN_MANA | MIND_BLAST |
+S:FORGET | DARKNESS | BO_ACID | BO_FIRE | BO_COLD | BO_ELEC
+D:A vile creature with one huge central eye, twelve smaller eyes on stalks, and
+D:a huge mouth filled with sharp teeth.
+
+N:604:Emperor wight
+G:W:r
+I:120:38d10:20:40:10
+W:38:2:0:1600
+E:0:0:0:0:0:0
+O:0:40:60:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:TOUCH:EXP_80
+B:TOUCH:EXP_80
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_4D2 | CAN_FLY |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:HOLD | SCARE | CAUSE_3 | BO_NETH
+D:Your life force is torn from your body as this powerful unearthly being
+D:approaches.
+
+N:605:Seraph
+G:A:r
+I:120:150d10:30:68:255
+W:45:4:3100:5000
+E:1:1:1:2:1:1
+O:0:30:70:0
+B:HIT:HURT:4d6
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:4d6
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | NO_FEAR | GOOD | CAN_FLY |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | REFLECTING | RES_TELE
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_11 |
+S:HEAL | HASTE | TELE_AWAY | CONF | BO_MANA | BO_PLAS |
+S:S_MONSTERS | S_ANGEL
+D:It is an angel, fast and strong. You are stunned by its extreme holiness
+D:and try to resist all desires to obey it.
+
+N:606:Vargo, Tyrant of Fire
+G:E:r
+I:120:24d100:12:50:50
+W:43:3:0:4000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:FIRE:6d6
+B:HIT:FIRE:6d6
+B:HIT:FIRE:6d6
+B:HIT:FIRE:6d6
+F:UNIQUE | SUSCEP_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | RAND_25 | CAN_SPEAK |
+F:EMPTY_MIND | CAN_SPEAK | MALE | AURA_FIRE |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_FIRE | IM_ACID | IM_POIS | IM_ELEC | NO_STUN |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_4 |
+S:BO_PLAS | BA_FIRE
+D:A towering fire elemental, Vargo burns everything beyond recognition.
+
+N:607:Black wraith
+G:W:D
+I:120:50d10:20:55:10
+W:38:2:0:1700
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:TOUCH:EXP_40
+B:TOUCH:EXP_40
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP
+F:BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | BO_NETH
+D:A figure that seems made of void, its strangely human shape is cloaked in
+D:shadow. It reaches out at you.
+
+N:608:Nightgaunt
+G:U:D
+I:110:24d10:20:50:80
+W:38:2:0:1000
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:STING:LOSE_STR:1d5
+B:TOUCH:PARALYZE:3d4
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_60 | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_FLY |
+F:EVIL | DEMON |
+F:IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | ZANGBAND
+S:1_IN_7 |
+S:BLIND | CONF | BO_FIRE
+D:It is a black, horned humanoid with wings.
+
+N:609:Baron of hell
+G:U:U
+I:110:150d12:10:130:40
+W:38:3:0:1000
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:11d2
+B:CLAW:HURT:11d2
+B:CLAW:HURT:22d1
+F:IM_POIS | OPEN_DOOR | BASH_DOOR | MALE | RES_PLAS | IM_FIRE | NONLIVING |
+F:IM_FIRE | NO_CONF | NO_SLEEP | EVIL | DEMON | FORCE_MAXHP | RES_TELE |
+F:ZANGBAND | HAS_LITE
+S:1_IN_2 |
+S:BO_PLAS
+D:A minor demon lord with a goat's head, tough to kill.
+
+N:610:Scylla
+G:M:B
+I:125:100d20:20:100:70
+W:42:1:15000:13000
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:POISON:10d3
+B:BITE:POISON:10d3
+B:BITE:POISON:10d3
+B:BITE:POISON:10d3
+F:FORCE_SLEEP | UNIQUE | AQUATIC | FORCE_MAXHP | COLD_BLOOD |
+F:ONLY_GOLD | DROP_2D2 | DROP_4D2 | DROP_CORPSE |
+F:BASH_DOOR | MOVE_BODY | EVIL | ZANGBAND | RES_WATE |
+F:ANIMAL | IM_POIS | IM_FIRE
+S:1_IN_5 |
+S:BR_POIS | BR_FIRE | SCARE | CONF | S_HYDRA
+D:A many-headed sea-monster, this foul creature preys on all those who
+D:escape the clutches of Charybdis.
+
+N:611:Monastic lich
+G:L:u
+I:120:12d100:30:80:30
+W:39:2:2000:5000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:KICK:HURT:24d1
+B:KICK:HURT:24d1
+B:CLAW:EXP_80:4d2
+B:CLAW:LOSE_DEX:4d2
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | SMART |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_3 |
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 |
+S:DRAIN_MANA | BRAIN_SMASH | ANIM_DEAD
+D:A skeletal form wrapped in priestly robes. Before its un-death, it
+D:was a monk in an evil order.
+
+N:612:Nether wraith
+G:W:G
+I:120:48d10:20:55:10
+W:39:2:0:1700
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:HIT:HURT:1d12
+B:HIT:HURT:1d12
+B:TOUCH:EXP_80
+B:TOUCH:EXP_80
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_90 | DROP_4D2 |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BLIND | SCARE | CAUSE_3 | MIND_BLAST | DARKNESS | BO_NETH
+D:A form that hurts the eye, death permeates the air around it. As it nears
+D:you, a coldness saps your soul.
+
+N:613:Hellhound
+G:C:r
+I:120:48d10:25:80:30
+W:35:3:600:600
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:RAND_25 | FRIENDS | AURA_FIRE | SUSCEP_COLD |
+F:BASH_DOOR | MOVE_BODY |
+F:ANIMAL | EVIL | IM_FIRE | BASEANGBAND | HAS_LITE |
+S:1_IN_5 | BR_FIRE
+D:It is a giant dog that glows with heat. Flames pour from its nostrils.
+
+N:614:7-headed hydra
+G:M:G
+I:120:100d10:20:90:20
+W:39:2:7000:2000
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:POISON:3d9
+B:BITE:POISON:3d9
+B:BITE:POISON:3d9
+B:SPIT:BLIND:1d2
+F:FORCE_SLEEP | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:ONLY_GOLD | DROP_2D2 | DROP_4D2 | CAN_SWIM | DROP_CORPSE
+F:BASH_DOOR | MOVE_BODY |
+F:ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:SCARE | BA_POIS |
+S:BR_POIS
+D:A strange reptilian creature with seven heads dripping venom.
+
+N:615:Waldern, King of Water
+G:E:b
+I:130:25d100:12:80:50
+W:43:3:0:4250
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:8d5
+B:HIT:HURT:8d5
+B:HIT:HURT:8d5
+B:HIT:HURT:8d5
+F:UNIQUE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:EMPTY_MIND | COLD_BLOOD |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_ACID | IM_FIRE | IM_POIS | IM_COLD |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BO_ICEE | BO_WATE | BA_COLD | BA_WATE
+D:A towering water elemental, Waldern is master of all things liquid.
+D:Wave after wave drowns your frail body.
+
+N:616:Kavlax the Many-Headed
+G:d:v
+I:120:13d100:20:85:30
+W:39:3:90000:3000
+E:0:1:0:6:2:0
+O:50:50:0:0
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+F:UNIQUE | MALE | ATTR_MULTI | CAN_SPEAK | ATTR_ANY |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | RES_NEXU |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_FLY |
+F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC |
+F:BASEANGBAND | HAS_LITE |
+S:1_IN_4 |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_SOUN | BR_CONF |
+S:BR_SHAR | BR_GRAV | BR_NEXU
+D:A large dragon with a selection of heads, all shouting and arguing as they
+D:look for prey, but each with its own deadly breath weapon.
+
+N:617:Ancient white dragon
+G:D:w
+I:120:72d10:20:90:80
+W:40:1:170000:2000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d8
+B:CLAW:HURT:4d8
+B:BITE:COLD:7d8
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_3D2 | DROP_4D2 | DROP_CORPSE |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | SUSCEP_FIRE | BASEANGBAND
+F:HAS_LITE | ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_COLD
+D:A huge draconic form. Frost covers it from head to tail.
+
+N:618:Ancient green dragon
+G:D:g
+I:120:72d10:20:90:80
+W:40:1:170000:2000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d8
+B:CLAW:HURT:4d8
+B:BITE:POISON:7d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:DROP_3D2 | DROP_4D2 | CAN_FLY |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_POIS
+D:A huge draconic form enveloped in clouds of poisonous vapour.
+
+N:619:Chthonian
+G:w:D
+I:120:100d10:20:90:20
+W:39:2:12000:2300
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:SHATTER:3d11
+B:CRUSH:SHATTER:3d11
+B:TOUCH:LOSE_CON:1d2
+B:TOUCH:LOSE_CON:1d2
+F:IM_FIRE | RES_PLAS | IM_COLD | IM_POIS | ELDRITCH_HORROR | RES_TELE |
+F:KILL_WALL | ONLY_GOLD | DROP_4D2 | DROP_2D2 | CAN_SWIM | DROP_CORPSE |
+F:EVIL | FORCE_MAXHP | CTHANGBAND
+S:1_IN_5 |
+S:SCARE | CONF | HOLD | S_DEMON |
+S:MIND_BLAST | HEAL | HASTE | FORGET | BRAIN_SMASH
+D:"Flowing tentacles and a pulpy gray-black elongated sack of a body...
+D:no distinguishing features at all other than the reaching, groping
+D:tentacles. Or was there -- yes! -- a lump in the upper body of
+D:the thing... a container of sorts for the brain, ganglia, or
+D:whichever diseased organ governed this horror's loathsome life!"
+
+N:620:Eldrak
+G:T:r
+I:110:75d10:20:80:50
+W:38:3:7000:1500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:BITE:HURT:3d4
+B:BITE:HURT:3d4
+F:FORCE_MAXHP | MOVE_BODY |
+F:ONLY_ITEM | DROP_2D2 | REGENERATE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | WILD_SHORE | WILD_WOOD |
+F:EVIL | TROLL | IM_POIS | NO_CONF | NO_SLEEP | DROP_CORPSE | BASEANGBAND
+D:A massive troll of huge strength. Eldraks are extremely stupid and extremely
+D:violent.
+
+N:621:Ettin
+G:T:b
+I:110:15d100:20:100:30
+W:39:3:8000:2000
+E:1:1:1:2:2:1
+O:0:100:0:0
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:BITE:HURT:3d8
+B:BITE:HURT:3d8
+F:FORCE_MAXHP | REGENERATE | MOVE_BODY |
+F:ONLY_ITEM | DROP_1D2 | WILD_TOO | WILD_MOUNTAIN | WILD_WOOD | WILD_SWAMP |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | TROLL | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+D:A massive two-headed troll, larger and stronger than many men together.
+D:Fortunately, ettins are solitary creatures. They are also living proof that
+D:two heads are not necessarily more intelligent than one...
+
+N:622:Night mare
+G:q:G
+I:120:15d100:30:85:0
+W:39:3:6000:2900
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:EXP_80:2d6
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:CONFUSE:6d6
+F:FORCE_MAXHP |
+F:ONLY_GOLD | DROP_2D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:HAS_LITE | NO_CUT
+D:A fearsome skeletal horse with glowing eyes that watch you with little
+D:more than a hatred of all that lives. Its flying hooves do not touch the
+D:ground.
+
+N:623:Vampire lord
+G:V:b
+I:120:20d100:20:70:10
+W:42:1:1700:1800
+E:1:1:1:2:1:1
+O:0:70:30:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:BITE:EXP_80:4d6
+B:BITE:EXP_80:4d6
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_60 | DROP_4D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE | RES_TELE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | DARKNESS | BO_NETH
+D:A foul wind chills your bones as this ghastly figure approaches.
+
+N:624:Ancient black dragon
+G:D:s
+I:120:10d100:20:90:80
+W:41:1:170000:2500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:ACID:7d9
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_3D2 | DROP_4D2 | DROP_CORPSE |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_ACID
+D:A huge draconic form. Pools of acid melt the floor around it.
+
+N:625:Weird fume
+G:#:v
+I:120:35d10:100:40:0
+W:40:2:0:800
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:CONFUSE:8d4
+B:ENGULF:CONFUSE:8d4
+F:FORCE_SLEEP |
+F:RAND_50 | RAND_25 | RES_NEXU | AURA_ELEC | IM_FIRE | IM_ELEC |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL |
+F:CAN_FLY | ATTR_MULTI | ATTR_ANY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | ZANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_CHAO | BR_NEXU | BR_NUKE
+D:A swirling spiral of mist, constantly changing its appearance.
+
+N:626:Spawn of Ubbo-Sathla
+G:j:v
+I:120:30d10:100:40:0
+W:40:5:0:300
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:ACID:8d4
+B:CRUSH:ACID:8d4
+F:FORCE_SLEEP | ATTR_MULTI | ATTR_ANY | EVIL |
+F:RAND_25 | RES_NEXU | AURA_ELEC | IM_FIRE | IM_ELEC |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | KILL_BODY |
+F:CAN_SWIM | NO_CONF | NO_SLEEP | CTHANGBAND | NO_CUT
+S:MULTIPLY
+D:Weird, jelly like creatures. No two look the same.
+
+N:627:Fat Man
+G:{:D
+I:120:14d14:10:80:12
+W:40:2:0:200
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:EXPLODE:SHATTER:200d2
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | REFLECTING |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS
+F:NO_FEAR | NO_CONF | NO_SLEEP | NONLIVING | RES_TELE | JOKEANGBAND | NO_CUT | NO_STUN
+D:A shining machine of death and destruction.
+
+N:628:Malekith the Accursed
+G:h:v
+I:125:25d100:20:70:10
+W:44:2:3500:7500
+E:1:1:1:2:1:1
+O:50:0:50:0
+B:HIT:HURT:12d9
+B:HIT:HURT:12d9
+F:MALE | REGENERATE | UNIQUE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:ONLY_ITEM | DROP_90 | DROP_4D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | HURT_LITE | ZANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | TELE_TO | BLIND | CONF | CAUSE_3 | DARKNESS | FORGET | HOLD |
+S:S_MONSTER | S_MONSTERS | S_DEMON | TPORT | BA_NETH | MIND_BLAST |
+S:S_KIN
+D:One of the oldest and most powerful dark elves, Malekith is a master
+D:sorcerer devoted to evil. The left side of his face is pale, and the other
+D:is dark. His hair is long and white.
+
+N:629:Shadowfax, steed of Gandalf
+G:q:v
+I:130:30d100:20:100:50
+W:40:3:2600:2000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:KICK:HURT:5d5
+B:KICK:HURT:5d5
+B:BITE:HURT:6d6
+F:FORCE_MAXHP | UNIQUE | ANIMAL | GOOD |
+F:REGENERATE | BASH_DOOR | IM_FIRE | IM_COLD | IM_ELEC |
+F:IM_POIS | NO_FEAR | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:Shadowfax is the chief of the "Mearas", the greatest of all horses that are
+D:bred in the fields of Rohan. Although the Mearas should technically be only
+D:ridden by the royal family of Rohan, only Gandalf the Wizard has ever
+D:succeeded in taming Shadowfax: and even then, Shadowfax will not be subjected
+D:to a bridle or saddle, but must be ridden bareback.
+
+N:630:Spirit troll
+G:G:G
+I:110:10d100:20:90:5
+W:40:3:0:900
+E:0:0:0:0:0:0
+O:10:90:0:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:FORCE_MAXHP |
+F:DROP_90 |
+F:INVISIBLE | PASS_WALL | CAN_FLY |
+F:EVIL | TROLL | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:A weird ghostly troll-like being from the ethereal plane.
+
+N:631:War troll
+G:T:b
+I:120:50d10:20:100:50
+W:40:3:6500:800
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:BITE:HURT:3d5
+B:BITE:HURT:3d5
+F:FORCE_MAXHP | SUSCEP_FIRE | REGENERATE |
+F:DROP_90 | REGENERATE | FRIENDS |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | TROLL | IM_POIS | NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+D:A massive troll, equipped with a scimitar and heavy armour.
+
+N:632:Disenchanter worm mass
+G:w:v
+I:100:10d8:7:5:10
+W:40:3:50:30
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRAWL:UN_BONUS:1d4
+F:RAND_50 | RES_DISE | ATTR_MULTI | CAN_SWIM |
+F:STUPID | WEIRD_MIND | BASH_DOOR |
+F:ANIMAL | HURT_LITE | NO_FEAR | BASEANGBAND | NO_CUT
+S:MULTIPLY
+D:It is a strange mass of squirming worms. Magical energy crackles
+D:around its disgusting form.
+
+N:633:Rotting quylthulg
+G:Q:u
+I:120:48d10:20:1:0
+W:45:1:3000:3000
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TPORT |
+S:S_UNDEAD
+D:It is a pulsing flesh mound that reeks of death and putrefaction.
+
+N:634:Lesser titan
+G:P:y
+I:120:24d100:30:80:15
+W:56:3:30000:6000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
+B:HIT:CONFUSE:9d9
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_GOOD | DROP_4D2 | DROP_SKELETON | DROP_CORPSE |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | TELE_TO | SCARE |
+S:S_MONSTERS
+D:It is a humanoid figure thirty feet tall that gives off an aura of power
+D:and hate.
+
+N:635:9-headed hydra
+G:M:r
+I:120:100d12:20:95:20
+W:40:2:8000:3000
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:FIRE:3d10
+B:BITE:FIRE:3d10
+B:BITE:FIRE:3d10
+B:BITE:FIRE:3d10
+F:FORCE_SLEEP | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:ONLY_GOLD | DROP_3D2 | DROP_4D2 | CAN_SWIM |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | DROP_CORPSE |
+F:ANIMAL | IM_FIRE | MORTAL | BASEANGBAND
+S:1_IN_4 |
+S:SCARE | BO_FIRE | BR_FIRE
+D:A strange reptilian creature with nine smouldering heads.
+
+N:636:Enchantress
+G:p:R
+I:130:52d10:20:60:10
+W:40:4:1700:2100
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:HIT:HURT:2d8
+F:FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:BLIND |
+S:S_DRAGON
+D:This elusive female spellcaster has a special affinity for dragons, without
+D:whom she rarely fights.
+
+N:637:Ranger chieftain
+G:p:W
+I:120:50d20:20:60:10
+W:41:2:1800:1800
+E:1:1:1:2:1:1
+O:30:50:20:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:MALE | INVISIBLE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | TAKE_ITEM |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP | IM_FIRE | IM_ELEC | IM_COLD | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:S_MONSTERS |
+S:ARROW_2 | ARROW_3 | ARROW_4 | MISSILE | BO_FIRE | BO_ELEC | BA_COLD |
+S:HASTE | BLINK | S_ANIMALS
+D:A chieftain among the Rangers. His understanding of nature gives him
+D:powerful elemental spells to use against you, in addition to his skills
+D:as an archer and a warrior. Furthermore, he is a master of camouflage, so
+D:you will need magically enhanced seeing to spot him.
+
+N:638:Sorcerer
+G:p:R
+I:130:52d10:20:60:10
+W:40:2:1700:2150
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_90 | DROP_4D2 |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:BLINK | TELE_TO | BLIND | CONF | CAUSE_3 | TRAPS |
+S:BO_ACID | BA_FIRE | BA_COLD |
+S:S_MONSTER | S_UNDEAD | S_DRAGON
+D:A human figure in robes, he moves with magically improved speed, and his
+D:hands are ablur with spell casting.
+
+N:639:Xaren
+G:X:s
+I:120:32d10:20:80:10
+W:40:1:500000:1200
+E:0:0:0:3:0:0
+O:0:0:0:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_MAXHP | SUSCEP_ACID |
+F:EMPTY_MIND | COLD_BLOOD |
+F:ONLY_GOLD | DROP_2D2 |
+F:KILL_ITEM | PASS_WALL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+D:It is a tougher relative of the Xorn. Its hide glitters with metal ores.
+
+N:640:Giant roc
+G:B:u
+I:110:80d13:20:70:10
+W:40:3:6000:1000
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:CRUSH:HURT:8d12
+B:CRUSH:HURT:8d12
+B:HIT:ELEC:12d12
+F:BASH_DOOR | CAN_FLY | WILD_MOUNTAIN | WILD_WOOD |
+F:ANIMAL | IM_ELEC | DROP_CORPSE | SUSCEP_ACID | HAS_EGG
+F:MORTAL | BASEANGBAND
+D:A vast legendary bird, its iron talons rake the most impenetrable of
+D:surfaces and its screech echoes through the many winding dungeon corridors.
+
+N:641:Minotaur
+G:H:U
+I:130:100d10:13:25:10
+W:40:2:15000:2100
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BUTT:HURT:4d6
+B:BUTT:HURT:4d6
+B:BUTT:HURT:2d6
+B:BUTT:HURT:2d6
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | MORTAL | BASEANGBAND
+D:It is a cross between a human and a bull.
+
+N:642:Medusa, the Gorgon
+G:n:v
+I:120:24d100:30:100:5
+W:40:3:4000:9000
+E:1:1:1:2:0:1
+O:30:35:35:0
+B:GAZE:EXP_80
+B:GAZE:PARALYZE
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+F:UNIQUE | FEMALE | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_ACID | IM_FIRE | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:1_IN_2 |
+S:HOLD | SCARE | CAUSE_3 | BO_FIRE | BO_PLAS | BA_ACID |
+S:S_HYDRA | S_KIN
+D:One of the original three ugly sisters. Her face could sink a thousand
+D:ships. Her scales rattle as she slithers towards you, venom dripping from
+D:her ghastly mouth.
+
+N:643:Death drake
+G:D:G
+I:120:21d100:25:100:80
+W:45:2:170000:10000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:EXP_80:7d10
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | RES_TELE
+F:INVISIBLE | TAKE_ITEM | CAN_FLY |
+F:PASS_WALL | POWERFUL | MOVE_BODY | RES_NETH |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_NETH
+D:It is a dragon-like form wrapped in darkness. You cannot make out its
+D:true form but you sense its evil.
+
+N:644:Ancient red dragon
+G:D:r
+I:120:10d100:20:90:80
+W:41:1:170000:2500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:FIRE:7d9
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:DROP_3D2 | DROP_4D2 | CAN_FLY | SUSCEP_COLD |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_FIRE
+D:A huge draconic form. Wisps of smoke steam from its nostrils and the
+D:extreme heat surrounding it makes you gasp for breath.
+
+N:645:Ancient gold dragon
+G:D:y
+I:120:10d100:20:90:80
+W:41:1:170000:2500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d9
+B:CLAW:HURT:4d9
+B:BITE:HURT:7d9
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:DROP_3D2 | DROP_4D2 | CAN_FLY |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | NO_STUN | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF | SCARE |
+S:BR_SOUN
+D:A huge draconic form wreathed in a nimbus of light. Its roar stuns and
+D:deafens you.
+
+N:646:Great crystal drake
+G:D:U
+I:120:21d100:25:100:80
+W:45:2:170000:10000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:HURT:7d10
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | CAN_FLY |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT
+F:ATTR_MULTI
+S:1_IN_6 |
+S:SLOW | CONF | SCARE |
+S:BR_SHAR
+D:A huge crystalline dragon. Its claws could cut you to shreds and its
+D:teeth are razor sharp. Strange colours ripple through it as it moves in
+D:the light.
+
+N:647:Wyrd sister
+G:p:v
+I:125:50d11:20:60:10
+W:40:4:1600:1900
+E:1:1:1:2:1:1
+O:10:0:80:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d8
+F:FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_SKELETON
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP
+F:MORTAL | ZANGBAND
+S:1_IN_2 |
+S:BLIND |
+S:S_DEMON | CONF | SCARE | DARKNESS | BA_CHAO
+D:This old crone is rumoured to be a witch of chaos... but you don't
+D:really believe in witches, do you?
+
+N:648:Vrock
+G:U:s
+I:110:40d10:20:50:80
+W:40:2:2700:2000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:3d4
+B:CRUSH:HURT:8d12
+B:CRUSH:HURT:8d12
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:FRIENDS |
+F:ONLY_ITEM | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_8 |
+S:BLIND | CONF
+D:It is a demon with a long neck and raking claws.
+
+N:649:Death quasit
+G:u:D
+I:130:44d10:20:80:0
+W:40:3:600:1000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:BITE:LOSE_DEX:3d6
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 | DROP_4D2 | NONLIVING |
+F:SMART | INVISIBLE | PASS_WALL | CAN_FLY |
+F:EVIL | DEMON | IM_FIRE | IM_POIS | RES_TELE
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_10 |
+S:BLIND | CONF | SCARE | CAUSE_3 | FORGET |
+S:S_DEMON
+D:It is a demon of small stature, but its armoured frame moves with
+D:lightning speed and its powers make it a tornado of death and destruction.
+
+N:650:Giganto, the Gargantuan
+G:~:s
+I:110:80d10:20:75:30
+W:38:6:8000:1750
+E:0:1:0:0:1:0
+O:60:40:0:0
+B:CRUSH:HURT:30d2
+B:CRUSH:HURT:30d2
+B:CRUSH:HURT:30d2
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SWIM | IM_FIRE |
+F:DROP_60 | DROP_90 | DROP_2D2 | UNIQUE | WEIRD_MIND |
+F:BASH_DOOR | SMART | EVIL | IM_COLD | DROP_CORPSE
+F:RES_WATE | WILD_OCEAN |
+F:MORTAL | ZANGBAND
+S:1_IN_9 |
+S:BR_NUKE | BA_WATE
+D:A gargantuan mutant whale, who has grown legs that enable it to walk
+D:on dry land as well.
+
+N:651:Strygalldwir
+G:U:W
+I:120:12d100:90:60:10
+W:41:3:5000:8000
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:CLAW:HURT:5d5
+B:CLAW:HURT:5d5
+B:HIT:LOSE_STR:4d4
+B:TOUCH:EXP_80:8d1
+F:UNIQUE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | MOVE_BODY | NONLIVING | NO_SLEEP | NO_CONF|
+F:OPEN_DOOR | BASH_DOOR | IM_POIS | IM_COLD | DEMON | EVIL | ZANGBAND
+S:1_IN_3 |
+S:CAUSE_3 | HOLD | SCARE | BLIND | BO_ACID | S_DEMON |
+S:FORGET | BO_NETH | MIND_BLAST | DARKNESS
+D:"it was well over six feet in height, with great branches of antlers
+D:growing out of its forehead. Nude, its flesh was a uniform ash-gray
+D:in color. It appeared to be sexless, and it had gray, leathery wings
+D:extending far out behind it."
+
+N:652:Fallen angel
+G:A:s
+I:130:100d25:30:90:255
+W:49:6:0:8000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:GAZE:EXP_40:4d4
+B:GAZE:EXP_40:4d4
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | NO_FEAR | EVIL | REFLECTING |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_TELE | RES_NETH |
+F:CAN_FLY | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:TELE_TO | BLIND | SCARE | CAUSE_2 | CAUSE_4 |
+S:S_DEMON | BO_NETH
+D:An angelic being, who was mighty once, but dared defy its Creator.
+
+N:653:Giant headless
+G:H:u
+I:110:30d12:20:50:40
+W:41:2:4000:900
+E:1:1:1:2:1:0
+O:0:100:0:0
+B:HIT:HURT:4d8
+B:HIT:HURT:4d8
+B:HIT:HURT:4d8
+F:FRIENDS | DROP_60 | DROP_90 | OPEN_DOOR | BASH_DOOR |
+F:DROP_SKELETON | DROP_CORPSE
+F:EVIL | ZANGBAND
+S:1_IN_6
+S:SCARE | BA_NUKE | BLIND
+D:Giant headless humanoid abominations created by a magical mutation.
+
+N:654:Judge Fire
+G:s:R
+I:120:18d100:90:70:10
+W:41:3:0:12000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:FIRE:5d5
+B:HIT:FIRE:5d5
+B:GAZE:EXP_80
+B:WAIL:TERRIFY
+F:UNIQUE | MALE | CAN_SPEAK | SUSCEP_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | POWERFUL |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | SUSCEP_COLD | IM_POIS | IM_FIRE | RES_PLAS |
+F:NO_CONF | NO_SLEEP | JOKEANGBAND | HAS_LITE | NO_CUT | NO_STUN
+S:1_IN_3 |
+S:CAUSE_3 | BO_FIRE | BA_FIRE | BR_FIRE | BO_PLAS
+S:DARKNESS | S_MONSTER | S_DEMON | S_UNDEAD | TPORT | BLINK | SCARE
+D:One of the Dark Judges, he has come to punish your crime of living.
+D:He looks like a skeleton enveloped in flames.
+
+N:655:Ubbo-Sathla, the Unbegotten Source
+G:j:W
+I:120:20d100:90:80:10
+W:41:3:0:13500
+E:0:0:0:0:0:0
+O:30:50:0:10
+B:CRUSH:ACID:5d5
+B:HIT:POISON:5d5
+B:CRUSH:ACID:5d5
+B:HIT:POISON:5d5
+F:UNIQUE | CAN_SPEAK | NO_STUN | NO_SLEEP | NO_CONF | NO_STUN |
+F:FORCE_SLEEP | FORCE_MAXHP | ELDRITCH_HORROR | ESCORT |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | REGENERATE | SUSCEP_FIRE |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | KILL_BODY |
+F:EVIL | SUSCEP_FIRE | IM_COLD | IM_POIS | CTHANGBAND | NO_CUT
+D:"There, in the gray beginning of Earth, the formless mass that was
+D:Ubbo-Sathla reposed amid the slime and the vapors. Headless,
+D:without organs or members..."
+
+N:656:Judge Mortis
+G:z:G
+I:120:18d100:90:70:10
+W:41:3:0:13000
+E:1:1:1:2:1:1
+O:0:75:0:15
+B:HIT:POISON:5d5
+B:HIT:DISEASE:5d5
+B:TOUCH:LOSE_ALL
+B:TOUCH:EXP_80
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | SUSCEP_FIRE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | JOKEANGBAND | NO_CUT | NO_STUN
+S:1_IN_3 |
+S:BLIND | SCARE | CAUSE_3 | BO_ACID | BO_NETH | BR_POIS |
+S:BR_NETH | BO_NETH | BLINK | TPORT | ANIM_DEAD
+S:BO_POIS | S_UNDEAD
+D:Another Dark Judge, he is a rotting humanoid with a cow's skull as
+D:his head.
+
+N:657:Dark elven sorcerer
+G:h:R
+I:130:80d10:20:70:10
+W:41:2:1300:3000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+B:HIT:HURT:2d8
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_90 | DROP_4D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | BLINK | TELE_TO | BLIND | CONF | CAUSE_3 | DARKNESS |
+S:BO_ACID | BA_FIRE | BA_COLD | ANIM_DEAD
+S:S_MONSTER | S_UNDEAD | S_DEMON | MISSILE
+D:A dark elven figure, dressed in deepest black. Power seems to crackle
+D:from his slender frame.
+
+N:658:Master lich
+G:L:r
+I:120:18d100:20:80:50
+W:41:2:1800:7000
+E:1:1:1:2:1:1
+O:10:45:25:10
+B:TOUCH:EXP_80
+B:TOUCH:UN_POWER
+B:TOUCH:LOSE_DEX:2d12
+B:TOUCH:LOSE_DEX:2d12
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_3 |
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 |
+S:DRAIN_MANA | BRAIN_SMASH | S_UNDEAD
+D:A skeletal form wrapped in robes. Powerful magic crackles along its
+D:bony fingers.
+
+N:659:Byakhee
+G:U:D
+I:110:40d10:20:40:80
+W:41:3:1300:1500
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:CLAW:LOSE_STR:3d4
+B:BITE:EXP_20:3d4
+F:FORCE_SLEEP | FORCE_MAXHP | FRIENDS |
+F:ONLY_ITEM | DROP_2D2 | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_FLY |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_9 |
+S:BO_FIRE |
+S:S_DEMON | CONF
+D:"There flapped rhythmically a horde of tame, trained, hybrid
+D:winged things... not altogether crows, nor moles, nor buzzards,
+D:nor ants, nor decomposed human beings, but something I cannot
+D:and must not recall."
+
+N:660:Eol, the Dark Elf
+G:h:D
+I:130:80d30:20:100:60
+W:49:2:1400:25000
+E:1:1:1:2:1:1
+O:10:40:40:10
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | CAN_SPEAK |
+F:ONLY_ITEM | DROP_4D2 | DROP_2D2 | DROP_GOOD | DROP_CHOSEN |
+F:SMART | IM_ELEC | IM_COLD | IM_POIS | IM_FIRE |
+F:REFLECTING | OPEN_DOOR | BASH_DOOR | SPECIAL_GENE |
+F:HURT_LITE | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | BLINK | TELE_TO | BLIND | CONF | CAUSE_4 | DARKNESS |
+S:BA_NETH | BA_ELEC | BA_ACID | BA_FIRE | BA_COLD | BO_MANA |
+S:S_MONSTERS | S_UNDEAD | S_DRAGON | S_DEMON
+D:A lord of the Teleri, Eol is a mighty metalsmith, the first
+D:one ever to forge weapons of meteorite iron. His dark
+D:countenance glares at you in disdain.
+
+N:661:Archon
+G:A:y
+I:130:100d35:30:140:255
+W:55:5:3200:12000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:GAZE:TERRIFY:4d4
+B:GAZE:TERRIFY:4d4
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | NO_FEAR | GOOD | REFLECTING |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_TELE | CAN_FLY
+F:BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:TELE_TO | BLIND | SCARE | CAUSE_2 | CAUSE_4 | BO_MANA |
+S:S_ANGEL
+D:Never a more heavenly being have you seen. The very holiness of its
+D:presence makes you deeply respect it. Few creatures can match the powers
+D:of an Archon; fewer still live to tell the tale after attacking one.
+
+N:662:Formless spawn of Tsathoggua
+G:U:D
+I:110:22d20:20:40:80
+W:41:2:0:1850
+E:0:0:0:0:0:0
+O:35:45:0:10
+B:HIT:ACID:2d4
+B:HIT:ACID:2d4
+B:CRUSH:HURT:3d4
+B:BITE:ACID:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | ELDRITCH_HORROR | NONLIVING |
+F:ONLY_ITEM | DROP_90 | REGENERATE | RES_TELE |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_SWIM |
+F:EVIL | DEMON | NO_CONF | NO_SLEEP | SUSCEP_FIRE | IM_POIS | CTHANGBAND | NO_CUT
+S:1_IN_9 |
+S:BO_FIRE | BO_ACID |
+S:S_DEMON | MIND_BLAST | DARKNESS |
+D:"...living things that oozed along stone channels...
+D:But they were not toads like Tsathoggua himself. Far worse --
+D:they were amorphous lumps of viscous black slime that took
+D:temporary shapes for various purposes."
+
+N:663:Hunting horror
+G:U:D
+I:110:30d17:20:90:80
+W:42:2:0:2300
+E:0:0:0:0:0:0
+O:45:35:0:10
+B:BITE:LOSE_DEX:1d3
+B:BITE:POISON:1d3
+B:CRUSH:HURT:9d4
+F:FORCE_SLEEP | FORCE_MAXHP | ELDRITCH_HORROR |
+F:ONLY_ITEM | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | CAN_FLY |
+F:EVIL | DEMON | HURT_LITE | IM_POIS |
+F:IM_FIRE | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_9 |
+S:BLIND | CONF | S_DEMON | BR_DARK
+D:"And in the air there were great viperine creatures,
+D:which had curiously distorted heads, and grotesquely great
+D:clawed appendages, supporting themselves with ease by the aid
+D:of black rubbery wings of singularly monstrous dimensions."
+
+N:664:Undead beholder
+G:e:u
+I:120:27d100:30:100:10
+W:45:3:1600:8000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:EXP_40:3d6
+B:GAZE:UN_POWER:3d6
+B:GAZE:INSANITY:3d6
+B:BITE:EXP_40:7d6
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE |
+F:COLD_BLOOD | BASH_DOOR |
+F:EVIL | UNDEAD | CAN_FLY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:SLOW | CONF | CAUSE_4 | DRAIN_MANA | MIND_BLAST | FORGET |
+S:BO_MANA | BO_NETH | BRAIN_SMASH | BA_FIRE | BA_COLD | BO_ACID |
+S:S_UNDEAD | ANIM_DEAD
+D:A beholder which has cheated death. Black nether storms rage around the
+D:bloodshot pupil of its central giant eye, and light seems to bend as it
+D:sucks its power from the very air around it. Your soul chills as it drains
+D:your vitality for its evil enchantments.
+
+N:665:Shadow
+G:G:D
+I:120:10d20:30:30:20
+W:37:3:0:400
+E:0:0:0:0:0:0
+O:90:10:0:0
+B:TOUCH:EXP_80
+B:TOUCH:EXP_40
+B:CLAW:LOSE_INT:1d10
+B:CLAW:LOSE_WIS:1d10
+F:FORCE_SLEEP | CAN_FLY |
+F:ONLY_ITEM | DROP_1D2 | POWERFUL | REGENERATE | HURT_LITE |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | RES_NETH |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_8 |
+S:BO_NETH | TELE_TO | SLOW
+D:A mighty spirit of darkness of vaguely humanoid form. Razor-edged claws
+D:reach out to end your life as it glides towards you, seeking to suck the
+D:energy from your soul to feed its power.
+
+N:666:Iron lich
+G:L:s
+I:120:22d100:30:100:10
+W:42:4:0:10000
+E:0:0:0:0:1:0
+O:0:0:100:0
+B:BUTT:COLD:3d6
+B:BUTT:FIRE:3d6
+B:BUTT:ELEC:3d6
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING |
+F:COLD_BLOOD | BASH_DOOR | CAN_FLY | SUSCEP_ACID |
+F:EVIL | UNDEAD | POWERFUL | SMART |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_TELE |
+F:ONLY_ITEM | DROP_60 | DROP_GOOD |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:BA_WATE | BA_FIRE | BO_ICEE | BA_ELEC | BA_COLD |
+S:CAUSE_4 | DRAIN_MANA | BRAIN_SMASH | S_UNDEAD
+D:It is a huge, twisted grey skull floating through the air. Its cold eyes
+D:burn with hatred towards all who live.
+
+N:667:Dread
+G:G:o
+I:120:25d20:20:30:10
+W:42:1:1000:600
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:LOSE_STR:3d4
+F:FORCE_SLEEP |
+F:RAND_25 | FRIENDS | CAN_FLY |
+F:ONLY_ITEM | DROP_60 |
+F:TAKE_ITEM | INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_15 |
+S:BLIND | HOLD | CONF | DRAIN_MANA | BO_NETH
+D:It is a form that screams its presence against the eye. Death incarnate,
+D:its hideous black body seems to struggle against reality as the universe
+D:itself struggles to banish it.
+
+N:668:Greater basilisk
+G:R:D
+I:120:20d100:25:100:15
+W:42:2:3000:10000
+E:0:1:0:2:1:0
+O:0:50:50:0
+B:GAZE:PARALYZE:3d12
+B:GAZE:PARALYZE:3d12
+B:BITE:POISON:2d12
+B:BITE:POISON:2d12
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | POWERFUL |
+F:OPEN_DOOR | BASH_DOOR | EVIL | IM_POIS | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP | CAN_SWIM |
+F:MORTAL | BASEANGBAND
+S:1_IN_8
+S:BR_POIS | BR_DARK | BR_NEXU
+D:A large basilisk, whose shape resembles that of a great wyrm.
+
+N:669:Charybdis
+G:~:r
+I:120:20d100:20:100:70
+W:42:1:15000:13000
+E:0:0:0:0:1:0
+O:50:50:0:0
+B:ENGULF:HURT:10d8
+B:ENGULF:HURT:10d8
+B:ENGULF:HURT:10d8
+F:AQUATIC | EVIL | UNIQUE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD |
+F:SMART | POWERFUL | MOVE_BODY | NEVER_MOVE |
+F:IM_ACID | IM_FIRE | IM_COLD | RES_WATE | COLD_BLOOD |
+F:IM_ELEC | IM_POIS | NO_STUN | ZANGBAND
+S:1_IN_5 |
+S:BA_WATE
+D:A monstrous dweller of the depths; its hungry maw has been the doom
+D:of innumerable sailors!
+
+N:670:Jack of Shadows
+G:p:s
+I:150:30d100:70:150:4
+W:60:4:2300:10000
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:5d10
+B:HIT:HURT:5d10
+B:HIT:EAT_ITEM:2d10
+B:HIT:EAT_ITEM:2d10
+F:MALE | FORCE_MAXHP | CAN_SPEAK | REFLECTING | DROP_SKELETON | DROP_CORPSE |
+F:REGENERATE |
+F:IM_ACID | IM_ELEC | IM_COLD | IM_FIRE | IM_POIS | RES_TELE |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD | DROP_GREAT | UNIQUE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | SMART | POWERFUL |
+F:MORTAL | ZANGBAND
+S:1_IN_3
+S:BLIND | HEAL | BA_DARK | HASTE | CONF |
+D:Deriving his strength from the shadows, this king of thieves
+D:steals only for the challenge.
+
+N:671:Zephyr Lord
+G:W:v
+I:130:80d10:20:70:10
+W:43:2:600:3000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:EXP_20:8d2
+B:HIT:LOSE_STR:8d2
+B:HIT:LOSE_CON:8d2
+F:MALE | ATTR_MULTI | UNDEAD | EVIL |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS |
+F:ONLY_ITEM | DROP_90 | DROP_4D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:NO_STUN | NO_CONF | NO_SLEEP | ZANGBAND | NO_CUT
+S:1_IN_5 |
+S:SHRIEK | S_HOUND
+D:An undead master of the vicious Zephyr hounds.
+
+N:672:Juggernaut of Khorne
+G:g:D
+I:120:90d19:12:90:10
+W:43:3:6000:2500
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BUTT:HURT:6d6
+B:CRUSH:HURT:8d6
+B:CRUSH:HURT:8d6
+B:BUTT:HURT:6d6
+F:COLD_BLOOD | BASH_DOOR | REFLECTING | KILL_ITEM |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | ZANGBAND | NO_CUT
+D:A great, vicious beast whose flesh is made of steel and whose
+D:blood is fire. It charges at you ignoring everything else.
+
+N:673:Mumak
+G:q:s
+I:110:90d10:20:55:100
+W:63:2:150000:2100
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BUTT:HURT:8d6
+B:BUTT:HURT:8d6
+B:CRUSH:HURT:8d4
+F:FRIENDS | DROP_CORPSE |
+F:BASH_DOOR | ANIMAL | MORTAL | BASEANGBAND
+D:A massive elephantine form with eyes twisted by madness.
+
+N:674:Judge Fear
+G:W:D
+I:120:18d100:90:70:10
+W:43:4:0:12000
+E:1:1:1:2:1:1
+O:100:0:0:0
+B:GAZE:TERRIFY
+B:GAZE:EXP_40
+B:GAZE:EXP_40
+B:GAZE:HURT:2d20
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | JOKEANGBAND | NO_CUT | NO_STUN
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | MIND_BLAST | BRAIN_SMASH |
+S:S_UNDEAD | DRAIN_MANA | FORGET | ANIM_DEAD
+D:A Dark Judge, reputedly so frightening that his gaze can kill.
+
+N:675:Ancient multi-hued dragon
+G:D:v
+I:120:21d100:25:100:80
+W:43:1:170000:13000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:HURT:7d10
+F:ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_ACID | IM_FIRE | IM_COLD |
+F:IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BLIND | CONF | SCARE |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS
+D:A huge draconic form. Many colours ripple down its massive frame. Few
+D:live to see another.
+
+N:676:Ethereal dragon
+G:D:o
+I:120:21d100:25:100:80
+W:45:2:170000:10000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:HURT:7d10
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 |
+F:INVISIBLE | CAN_FLY |
+F:PASS_WALL | POWERFUL | MOVE_BODY |
+F:DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | CONF |
+S:BR_LITE | BR_DARK | BR_CONF
+D:A huge dragon emanating from the ethereal plane, this terrible creature is
+D:a master of light and dark. Its form disappears from sight as it cloaks
+D:itself in unearthly shadows.
+
+N:677:Dark young of Shub-Niggurath
+G:U:g
+I:120:12d100:20:75:80
+W:43:2:0:5000
+E:0:0:0:0:0:0
+O:0:40:30:20
+B:CRUSH:HURT:5d6
+B:CRUSH:HURT:5d6
+B:BITE:LOSE_STR:1d6
+B:BITE:LOSE_STR:1d6
+F:FORCE_SLEEP | FORCE_MAXHP | ELDRITCH_HORROR |
+F:ONLY_ITEM | DROP_1D2 | NONLIVING | CAN_SWIM |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | HURT_LITE |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | RES_TELE | CTHANGBAND
+S:1_IN_9 |
+S:BLIND | CAUSE_2 |
+S:S_DEMON | HEAL
+D:"Something black in the road, something that wasn't a tree.
+D:Something big and black and ropy, just squatting there, waiting,
+D:with ropy arms squirming and reaching... It came crawling up the
+D:hillside... and it was the black thing of my dreams... that black,
+D:ropy, slimy jelly tree-thing out of the woods. It crawled up and it
+D:flowed up on its hoofs and mouths and snaky arms."
+
+N:678:Colour out of space
+G:.:v
+I:120:12d100:20:100:10
+W:43:2:0:8000
+E:0:0:0:0:0:0
+O:35:35:10:10
+B:TOUCH:LOSE_ALL:7d6
+B:TOUCH:LOSE_ALL:7d6
+F:FORCE_SLEEP | FORCE_MAXHP | RAND_25 |
+F:INVISIBLE | PASS_WALL | CAN_FLY |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | ATTR_MULTI | ATTR_ANY |
+F:CHAR_CLEAR | SMART | COLD_BLOOD | EVIL |
+F:IM_COLD | IM_FIRE | IM_ACID | IM_ELEC | IM_POIS |
+F:NO_STUN | NO_CONF | NO_SLEEP | CTHANGBAND | HAS_LITE | NO_CUT
+S:1_IN_9 |
+S:DRAIN_MANA | BR_DISE | BR_NETH | TPORT
+D:"The shaft of phosphorescence from the well... was no longer shining
+D:out, it was pouring out; and as the shapeless stream of unplaceable
+D:colour left the well it seemed to flow directly into the sky."
+
+N:679:Quaker, Master of Earth
+G:E:u
+I:110:28d100:10:97:90
+W:43:3:0:4500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:SHATTER:10d10
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:EMPTY_MIND | COLD_BLOOD | KILL_WALL |
+F:KILL_ITEM | KILL_BODY | PASS_WALL | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT | NO_STUN
+S:1_IN_6 |
+S:BO_ACID | BA_ACID
+D:A towering stone elemental stands before you. The walls and ceiling are
+D:reduced to rubble as Quaker advances.
+
+N:680:Death leprechaun
+G:h:D
+I:120:6d6:8:13:8
+W:44:6:0:85
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:TOUCH:EXP_40:1d10
+B:TOUCH:EAT_GOLD
+B:TOUCH:EAT_ITEM
+F:INVISIBLE | RAND_25 | TAKE_ITEM | COLD_BLOOD | SMART |
+F:HURT_LITE | EVIL | OPEN_DOOR | MALE | UNDEAD | RES_NETH | ZANGBAND | NO_CUT
+S:MULTIPLY |
+S:1_IN_6 |
+S:BLINK | TPORT | TELE_TO | CAUSE_3 | ANIM_DEAD
+D:Nasty undead little creatures. They are chanting the name of the
+D:sinister wizard who created them: 'Bruce! Bruce..!'
+
+N:681:Chaugnar Faugn, Horror from the Hills
+G:q:D
+I:110:20d100:10:125:90
+W:44:4:0:6250
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+B:BITE:LOSE_CON:8d2
+B:BITE:LOSE_CON:8d1
+F:UNIQUE | CAN_SPEAK | EVIL | DEMON |
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE |
+F:ELDRITCH_HORROR | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_ROCK |
+F:NO_CONF | NO_FEAR | CTHANGBAND
+S:1_IN_6 |
+S:HOLD | CAUSE_4 | CONF | SCARE | FORGET | BRAIN_SMASH |
+S:MIND_BLAST | CAUSE_3 | S_DEMON | S_MONSTERS
+D:"The ears were webbed and tentacled, the trunk terminated in
+D:a huge flaring disk at least a foot in diameter... Its forelimbs
+D:were bent stiffly at the elbow, and its hands... rested palms
+D:upward on its lap."
+
+N:682:Lloigor
+G:v:B
+I:120:100d15:20:100:20
+W:44:2:0:6000
+E:0:0:0:0:0:0
+O:90:0:10:0
+B:ENGULF:LOSE_CON:4d10
+B:ENGULF:LOSE_CON:4d10
+B:ENGULF:LOSE_CON:4d10
+F:FORCE_SLEEP | ELDRITCH_HORROR | PASS_WALL |
+F:INVISIBLE | DROP_2D2 | DROP_4D2 | CAN_FLY |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | POWERFUL |
+F:SMART | IM_FIRE | IM_COLD | IM_ELEC | IM_ACID | IM_POIS |
+F:MORTAL | CTHANGBAND | HAS_LITE | NO_CUT
+S:1_IN_4 |
+S:BR_WALL | TELE_AWAY | BR_GRAV |
+S:S_KIN | MIND_BLAST | BLIND | BLINK
+D:"Invisible ones from the stars... They sometimes took forms...
+D:but existed as vortices of power in their natural state."
+
+N:683:Utgard-Loke
+G:P:v
+I:120:40d100:30:125:15
+W:44:3:0:13500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:COLD:12d12
+B:HIT:COLD:12d12
+B:HIT:COLD:12d12
+B:HIT:COLD:12d12
+F:ESCORT | UNIQUE | IM_COLD | AURA_COLD | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE | ZANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | TELE_TO |
+S:S_KIN | BR_COLD
+D:A frost giant chieftain, unusually smart for a giant.
+
+N:684:Quachil Uttaus, Treader of the Dust
+G:z:D
+I:120:50d66:30:80:15
+W:44:3:0:20000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:CLAW:HURT:50d1
+B:TOUCH:TIME:1d50
+B:TOUCH:TIME:1d50
+F:ESCORT | UNIQUE | IM_COLD | ELDRITCH_HORROR | RES_NETH |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | KILL_BODY | DROP_GREAT |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | NO_SLEEP | NO_CONF
+F:EVIL | UNDEAD | DEMON | REGENERATE | CTHANGBAND | NO_CUT
+S:1_IN_3 |
+S:BR_TIME | SLOW | HASTE | HEAL
+D:"It was a figure no larger than a young child, but severe and
+D:shriveled as some millenial mummy. Its hairless head, its
+D:unfeatured face, borne on a neck of skeleton thinness, were
+D:lined with a thousand reticulated wrinkles. The body was like
+D:that of some monstrous, withered abortion that had never drawn
+D:breath. The pipelike arms, ending in bony claws, were outhrust as if
+D:enclosed in a posture of an eternal dreadful grasping."
+
+N:685:Shoggoth
+G:j:D
+I:140:50d20:20:80:20
+W:44:2:0:2500
+E:0:0:0:0:0:0
+O:30:70:0:0
+B:CRUSH:ACID:5d6
+B:CRUSH:ACID:5d6
+B:CRUSH:ACID:5d6
+B:CRUSH:HURT:9d9
+F:REGENERATE | ONLY_ITEM | KILL_ITEM | DROP_2D2 | DROP_90 | DROP_60
+F:BASH_DOOR | EVIL | NO_CONF | NO_SLEEP | KILL_BODY | CAN_SWIM |
+F:FORCE_MAXHP | FORCE_SLEEP | HURT_LITE | POWERFUL |
+F:IM_ACID | IM_FIRE | RES_PLAS | IM_POIS | IM_COLD | IM_ELEC | RES_TELE
+F:CTHANGBAND | HAS_LITE | NO_CUT
+D:"The nightmare, plastic column of fetid, black iridescence oozed
+D:tightly onward... A shapeless congerie of protoplasmic bubbles,
+D:faintly self-luminous and with myriads of temporary eyes forming
+D:and unforming as pustules of greenish light all over the
+D:tunnel-filling front that bore down upon us, crushing the frantic
+D:penguins and slithering over glistening floor that it and its
+D:kind had swept so evilly free of all litter. Still came that eldritch
+D:mocking cry -- 'Tekeli-li! Tekeli-li!'"
+
+N:686:Judge Death
+G:W:D
+I:120:45d50:90:90:10
+W:43:3:0:14000
+E:1:1:1:2:1:1
+O:0:20:80:0
+B:CLAW:POISON:10d5
+B:CLAW:POISON:10d5
+B:CLAW:EXP_40:10d1
+B:GAZE:TERRIFY
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_ELEC | IM_COLD | SUSCEP_FIRE |
+F:IM_POIS | NO_CONF | NO_SLEEP | JOKEANGBAND | NO_CUT | NO_STUN
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_4 | BA_FIRE | BA_NETH | ANIM_DEAD
+S:S_MONSTERS | S_UNDEAD | S_HI_UNDEAD | DRAIN_MANA |
+D:The most powerful Dark Judge, whose touch means death.
+
+N:687:Ariel, Queen of Air
+G:E:B
+I:130:27d100:12:50:50
+W:43:3:0:4750
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:4d6
+B:HIT:CONFUSE:4d4
+B:HIT:HURT:4d6
+B:HIT:CONFUSE:4d4
+F:UNIQUE | FEMALE | AURA_ELEC | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:RAND_25 | CAN_FLY |
+F:EMPTY_MIND | COLD_BLOOD |
+F:KILL_ITEM | KILL_BODY | BASH_DOOR | POWERFUL |
+F:IM_ACID | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BO_ELEC | BA_COLD | BA_ELEC
+D:A towering air elemental, Ariel the sorceress avoids your blows
+D:with her extreme speed.
+
+N:688:11-headed hydra
+G:M:R
+I:120:100d18:20:100:20
+W:44:2:8500:6000
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+B:BITE:FIRE:3d12
+F:FORCE_SLEEP | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:ONLY_GOLD | DROP_2D2 | DROP_4D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:ANIMAL | IM_FIRE | CAN_SWIM |
+F:MORTAL | BASEANGBAND
+S:1_IN_4 |
+S:SCARE | BO_FIRE | BO_PLAS | BA_FIRE | BR_FIRE
+D:A strange reptilian hybrid with eleven smouldering heads.
+
+N:689:Patriarch
+G:p:G
+I:120:52d10:20:60:10
+W:40:2:1800:1800
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d5
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | BLIND | HOLD | CAUSE_4 | CAUSE_3 | ANIM_DEAD |
+S:S_MONSTERS | S_UNDEAD
+D:An evil priest, dressed all in black. Deadly spells hit you at an
+D:alarming rate as his black spiked mace rains down blow after blow on your
+D:pitiful frame.
+
+N:690:Dreadmaster
+G:G:y
+I:120:12d100:20:100:10
+W:44:2:1000:8000
+E:0:0:0:0:0:0
+O:10:40:25:10
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:LOSE_STR:3d4
+B:HIT:LOSE_STR:3d4
+F:FORCE_SLEEP | FORCE_MAXHP | RAND_25 |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | CAN_FLY |
+F:SMART | TAKE_ITEM | INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_9 |
+S:TELE_LEVEL | BLIND | HOLD | CONF | CAUSE_4 | DRAIN_MANA | BO_NETH |
+S:S_UNDEAD
+D:It is an unlife of power almost unequalled. An affront to existence, its
+D:very touch abuses and disrupts the flow of life, and its unearthly limbs,
+D:of purest black, crush rock and flesh with ease.
+
+N:691:Drolem
+G:g:g
+I:120:30d100:25:130:30
+W:44:3:40000:12000
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d10
+B:CLAW:HURT:3d10
+B:BITE:POISON:5d10
+B:BITE:POISON:5d10
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE |
+F:EMPTY_MIND | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:DRAGON | IM_FIRE | IM_COLD |
+F:IM_ELEC | IM_POIS | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+F:ATTR_MULTI
+S:1_IN_6 |
+S:BLIND | SLOW | CONF | ARROW_3 |
+S:BR_POIS
+D:A constructed dragon, the drolem has massive strength. Powerful spells
+D:weaved during its creation make it a fearsome adversary. Its eyes show
+D:little intelligence, but it has been instructed to destroy all it meets.
+
+N:692:Scatha the Worm
+G:D:W
+I:120:22d100:30:130:70
+W:46:2:210000:17000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:COLD:4d14
+B:BITE:COLD:4d14
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | SUSCEP_FIRE |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_CORPSE
+F:BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
+F:EVIL | DRAGON | IM_COLD | NO_CONF | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:CONF | CAUSE_3 |
+S:BR_COLD
+D:An ancient and wise dragon, Scatha has grown clever over the long years.
+D:His scales are covered with frost, and his breath sends a shower of ice
+D:into the air.
+
+N:693:Warrior of the Dawn
+G:p:R
+I:120:25d25:20:70:20
+W:45:2:1600:500
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:IM_POIS | IM_FIRE | IM_ELEC | IM_ACID | IM_COLD |
+F:NO_SLEEP | NO_FEAR |
+F:FRIENDS |
+F:MALE | OPEN_DOOR | BASH_DOOR | ZANGBAND | HAS_LITE
+D:Fierce, barbaric warriors, armed with great spiked clubs, and surrounded
+D:in an aura of scarlet. Whenever one of them is slain, another appears
+D:out of nowhere to take his place.
+
+N:694:Lesser black reaver
+G:L:D
+I:120:25d100:20:120:50
+W:45:3:2600:12000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:HIT:UN_BONUS:4d8
+B:HIT:UN_BONUS:4d8
+B:HIT:LOSE_STR:4d6
+B:HIT:LOSE_STR:4d6
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | CAN_SWIM |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_TELE
+F:NO_CONF | NO_SLEEP | KILL_WALL | NO_FEAR
+F:MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:TELE_TO | BLIND | HOLD | CONF | CAUSE_3 | DRAIN_MANA |
+S:MIND_BLAST | BA_NETH | ANIM_DEAD
+D:A humanoid form, black as night, advancing steadily and unstoppably.
+
+N:695:Zoth-Ommog
+G:R:v
+I:120:25d100:12:50:50
+W:45:4:0:18000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:HURT:25d3
+B:CRUSH:HURT:25d3
+B:BITE:LOSE_DEX:2d10
+B:BITE:LOSE_CON:2d10
+F:UNIQUE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:RAND_25 | CAN_SWIM | ELDRITCH_HORROR |
+F:KILL_ITEM | BASH_DOOR | POWERFUL |
+F:EVIL | IM_ACID | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_FEAR | CTHANGBAND
+S:1_IN_5 |
+S:S_MONSTER | SCARE | CAUSE_4 | S_HYDRA | S_SPIDER |
+S:BA_NETH | BA_POIS | BA_ACID | CAUSE_3 | HOLD | MIND_BLAST
+D:"A body shaped like a road-based, truncated cone. A flat, blunt,
+D:wedge-shaped, vaguely reptilian head surmounts this conical torso,
+D:and the head is almost entirely hidden behind swirling tresses.
+D:This hair, or beard and mane, consists of thickly carved and
+D:coiling ropes, like serpents or worms... Through this repulsive
+D:Medusa-mane of ropy tendrils, two fierce, serpent-like eyes
+D:glare in a horrible intermingling of cold, inhuman mockery and
+D:what I can only describe as gloating menace."
+
+N:696:Grand master thief
+G:p:b
+I:130:15d100:50:75:40
+W:46:2:0:1500
+E:1:1:1:2:1:1
+O:70:10:10:10
+B:HIT:EAT_ITEM:5d5
+B:HIT:EAT_ITEM:5d5
+B:HIT:EAT_GOLD:5d5
+B:HIT:EAT_GOLD:5d5
+F:MALE | DROP_2D2 |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TPORT | TELE_TO | CONF | TRAPS | ARROW_2
+D:A class of its own: you are already too late to protect your possessions -
+D:and he seems to have studied magic too, and is a master of setting traps.
+
+N:697:Smaug the Golden
+G:D:R
+I:120:24d100:30:150:80
+W:48:2:230000:23000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:FIRE:5d14
+B:BITE:FIRE:5d14
+F:UNIQUE | MALE | REFLECTING | CAN_FLY | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:SMART | EVIL | DRAGON | IM_FIRE | BASEANGBAND
+F:HAS_LITE
+S:1_IN_4 |
+S:CONF | CAUSE_3 |
+S:BR_FIRE
+D:Smaug is one of the Uruloki that still survive, a fire-drake of immense
+D:cunning and intelligence. His speed through air is matched by few other
+D:dragons, his dragonfire is legendary, and his hide is
+D:armoured with diamonds. He is believed to be the greatest dragon still
+D:surviving into the Third Age.
+
+N:698:The Stormbringer
+G:|:D
+I:120:13d123:20:99:20
+W:45:2:0:13333
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:WAIL:TERRIFY
+B:HIT:EXP_80:64d1
+B:HIT:EXP_80:64d1
+B:HIT:EXP_80:8d8
+F:CHAR_MULTI | EVIL | IM_POIS | IM_COLD | IM_FIRE | RES_NETH |
+F:FORCE_SLEEP | UNIQUE | FORCE_MAXHP | CAN_FLY |
+F:COLD_BLOOD | BASH_DOOR | NONLIVING |
+F:NO_CONF | NO_SLEEP | NO_FEAR | ZANGBAND | HAS_LITE | NO_CUT | NO_STUN
+D:The mightiest of hellblades, a black runesword which thirsts for
+D:your soul.
+
+N:699:Knight Templar
+G:p:w
+I:120:60d20:20:60:10
+W:44:2:1800:2000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:IM_POIS | IM_FIRE | IM_ELEC | IM_ACID | IM_COLD | GOOD |
+F:RES_NETH | RES_NEXU | RES_DISE | RES_TELE | DROP_SKELETON | DROP_CORPSE
+F:NO_SLEEP | NO_CONF | NO_FEAR | NO_STUN |
+F:DROP_2D2 | DROP_90 | REFLECTING |
+F:MALE | OPEN_DOOR | BASH_DOOR | FORCE_MAXHP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:HEAL | CAUSE_3 | CAUSE_4 | HASTE | SCARE | BLIND | S_ANGEL
+D:It seems that the more devout the person, the more likely they are to cross
+D:the boundary between piety and sanctimoniousness. And such is the case with
+D:the Order of the Knights Templar; they are among the most pious and
+D:powerful of the religious knightly orders, but noted for their intolerance.
+D:Thus it is Morgoth's will that is unwittingly done, as the forces of good
+D:are set against each other.
+
+N:700:Leprechaun fanatic
+G:h:r
+I:123:6d6:8:13:8
+W:46:6:800:80
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:EXPLODE:HURT:20d3
+F:RAND_25 | TAKE_ITEM | SMART |
+F:EVIL | OPEN_DOOR | MALE |
+F:MORTAL | ZANGBAND
+S:MULTIPLY |
+S:1_IN_6 |
+S:BLINK | TPORT | TELE_TO
+D:These leprechauns are not afraid to die for their cause. They are
+D:carrying explosives and making terrorist strikes...
+
+N:701:Dracolich
+G:D:G
+I:120:35d100:25:120:80
+W:55:2:180000:18000
+E:0:1:0:6:1:0
+O:10:50:40:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:EXP_80:7d14
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | RES_TELE |
+F:COLD_BLOOD | CAN_FLY |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT | ATTR_MULTI
+S:1_IN_6 |
+S:CONF | SCARE |
+S:BR_COLD | BR_NETH
+D:The skeletal form of a once-great dragon, enchanted by magic most
+D:perilous. Its animated form strikes with speed and drains life from its
+D:prey to satisfy its hunger.
+
+N:702:Greater titan
+G:P:o
+I:120:38d100:30:125:15
+W:66:3:50000:23500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_4D2 | DROP_1D2 | DROP_GOOD | MOVE_BODY |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | TELE_TO |
+S:S_MONSTERS
+D:A forty foot tall humanoid that shakes the ground as it walks. The power
+D:radiating from its frame shakes your courage, its hatred inspired by your
+D:defiance.
+
+N:703:Dracolisk
+G:D:R
+I:120:35d100:25:120:80
+W:55:2:180000:18000
+E:0:1:0:6:1:0
+O:0:50:40:10
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:FIRE:7d14
+B:GAZE:PARALYZE
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | RES_NEXU | RES_TELE |
+F:ANIMAL | EVIL | DRAGON | IM_ACID | IM_FIRE | NO_CONF | NO_SLEEP |
+F:BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:HOLD | SCARE |
+S:BR_FIRE | BR_NEXU
+D:A mixture of dragon and basilisk, the dracolisk stares at you with deep
+D:piercing eyes, its evil breath burning the ground where it stands.
+
+N:704:Winged Horror
+G:B:D
+I:120:25d80:30:80:5
+W:48:3:4500:4000
+B:CLAW:HURT:3d8
+B:CLAW:HURT:3d8
+B:BITE:EXP_40:4d6
+B:BITE:EXP_40:4d6
+F:ANIMAL | MORTAL | EVIL | CAN_FLY | BASH_DOOR | IM_COLD | IM_POIS
+F:WILD_TOO | WILD_WASTE | WILD_WOOD | WILD_SWAMP | BASEANGBAND
+S:1_IN_6
+S:BR_NETH | BR_DARK | BR_POIS
+D:A terrifying sight: a winged creature greater than any bird you have ever
+D:seen, and with no feathers on its horrid black leathery wings. Descended
+D:from a creature of an older world perhaps, bred by Sauron to be a winged
+D:steed for his Ringwraiths.
+
+N:705:Spectral tyrannosaur
+G:R:G
+I:120:70d50:25:120:30
+W:46:3:0:15000
+E:0:0:0:0:0:0
+O:20:20:20:20
+B:BITE:EXP_40:2d13
+B:BITE:EXP_40:2d13
+B:BITE:LOSE_STR:5d8
+B:GAZE:TERRIFY
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:EVIL | UNDEAD | ANIMAL | RES_NEXU | RES_TELE
+F:NO_CONF | NO_FEAR | NO_SLEEP |
+F:IM_POIS | IM_ACID | IM_COLD |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | ZANGBAND | NO_CUT
+S:1_IN_6 |
+S:HOLD | SCARE |
+S:BR_NEXU | BR_POIS | BR_NETH
+D:A deadly undead horror which looks like a skeletal tyrannosaur
+D:surrounded by a sickly green glow.
+
+N:706:Yibb-Tstll, the Patient One
+G:P:D
+I:120:99d21:20:100:20
+W:46:2:0:16000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:LOSE_ALL:1d166
+B:TOUCH:LOSE_ALL:1d166
+F:UNIQUE | FORCE_SLEEP | FORCE_MAXHP |
+F:ELDRITCH_HORROR | NEVER_MOVE | REGENERATE | POWERFUL |
+F:DROP_2D2 | DROP_4D2 | DROP_GOOD | ONLY_ITEM |
+F:SMART | IM_FIRE | IM_COLD | IM_ELEC | IM_ACID | IM_POIS | CTHANGBAND
+S:1_IN_4 |
+S:BR_NUKE | S_DEMON | DARKNESS | S_UNDEAD | ANIM_DEAD
+S:BR_NEXU | BR_CHAO
+D:"There, about the pulsating body of the Ancient One, hugely
+D:winged reptilian creatures without faces cluttered and clutched
+D:at a multitude of blackly writhing, pendulous breasts! Its eyes
+D:moved quickly, independently -- sliding with vile viscosity over
+D:the whole rotten surface of Yib-Tstll's pulpy, glistening head!"
+
+N:707:Ghatanothoa
+G:v:D
+I:120:100d20:20:100:20
+W:46:2:0:16000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:CLAW:LOSE_INT:5d10
+B:CLAW:LOSE_WIS:5d10
+B:BITE:CONFUSE:5d10
+F:FORCE_SLEEP | ELDRITCH_HORROR | PASS_WALL | UNIQUE |
+F:INVISIBLE | DROP_2D2 | DROP_4D2 | CAN_FLY | DROP_GOOD | ONLY_ITEM |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | POWERFUL | NO_CONF | NO_SLEEP |
+F:SMART | IM_FIRE | IM_COLD | IM_ELEC | IM_ACID | IM_POIS |
+F:MORTAL | CTHANGBAND | NO_CUT
+S:1_IN_4 |
+S:BR_WALL | TELE_AWAY | BR_GRAV | TELE_LEVEL | S_DEMON | S_UNDEAD | S_KIN |
+S:BRAIN_SMASH | HASTE | BLIND | BLINK | BR_INER | CAUSE_3 | CAUSE_4
+D:The chief among the creatures known as Lloigor. Ghatanothoa, unlike most of
+D:his kind, has assumed a shape, and one which is too horrible to describe:
+D:"Nothing I could say could even adumbrate the loathsome, unholy, non-human,
+D:extra-galactic horror and hatefulness and unutterable evil of that forbidden
+D:spawn of black chaos, and illimitable night."
+
+N:708:Ent
+G:#:G
+I:110:40d100:30:120:15
+W:46:3:0:12500
+E:1:1:1:2:1:1
+O:30:50:20:0
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+F:FORCE_SLEEP | FORCE_MAXHP | PET | SUSCEP_FIRE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY |
+F:SMART | TAKE_ITEM | KILL_WALL | BASH_DOOR |
+F:GOOD | BASEANGBAND | NO_CUT
+D:A tree-herd: a sentient, moving tree. Its wrath is fearsome, and it could
+D:split stones and even the very rock of Isengard with its roots.
+
+N:709:Hru
+G:P:s
+I:120:40d100:30:150:15
+W:54:3:40000:14500
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:SHATTER:12d13
+B:HIT:SHATTER:12d13
+B:HIT:SHATTER:12d13
+B:HIT:SHATTER:12d13
+F:FORCE_SLEEP | FORCE_MAXHP | HURT_ROCK |
+F:ONLY_GOLD | DROP_4D2 | MOVE_BODY | KILL_WALL |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | GIANT | MALE | HAS_LITE | NO_CUT
+D:A rock giant, a being made of living stone.
+
+N:710:Itangast the Fire Drake
+G:D:R
+I:120:22d100:30:120:70
+W:47:2:220000:20000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d10
+B:CLAW:HURT:4d10
+B:BITE:FIRE:4d14
+B:BITE:FIRE:4d14
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | SUSCEP_COLD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | IM_FIRE | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:CONF | CAUSE_3 |
+S:BR_FIRE
+D:A mighty ancient dragon, Itangast's form scorches your flesh. Wisps of
+D:smoke curl up from his nostrils as he regards you with disdain.
+
+N:711:Death mold
+G:m:D
+I:140:100d20:200:60:0
+W:47:1:100:1000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:UN_BONUS:7d7
+B:SPORE:UN_BONUS:7d7
+B:SPORE:UN_BONUS:7d7
+B:SPORE:EXP_80:5d5
+F:FORCE_SLEEP | NEVER_MOVE | CAN_SWIM |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is the epitome of all that is evil, in a mold. Its lifeless form draws
+D:power from sucking the souls of those that approach it; a nimbus of pure
+D:evil surrounds it. Luckily for you, it can't move...
+
+N:712:Fafner the Dragon
+G:D:G
+I:120:25d110:30:130:80
+W:48:2:170000:25000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:FIRE:5d14
+B:BITE:POISON:5d14
+F:UNIQUE | MALE | SUSCEP_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK | DROP_CORPSE |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | INVISIBLE |
+F:EVIL | DRAGON | IM_FIRE | IM_POIS | ZANGBAND |
+F:HAS_LITE
+S:1_IN_3 |
+S:CONF | CAUSE_3 |
+S:BR_FIRE | BR_POIS | SCARE | CAUSE_3 | CONF
+D:The mighty dragon of myth, Fafner was a giant who slew his
+D:brother to win a treasure hoard, and then transformed himself
+D:into a dragon, greedily watching over his gold.
+
+N:713:Charon, Boatman of the Styx
+G:W:B
+I:120:28d100:30:100:10
+W:47:3:0:25000
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:WAIL:LOSE_ALL
+B:TOUCH:UN_POWER
+B:HIT:EXP_80:8d12
+B:HIT:EAT_GOLD:8d12
+F:UNIQUE | MALE | SMART | CAN_SWIM |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_GOLD | DROP_3D2 | DROP_4D2 |
+F:COLD_BLOOD | PASS_WALL | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_STUN | NO_CONF | NO_SLEEP | RES_TELE | ZANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | DARKNESS |
+S:BO_ICEE | BO_NETH | BA_COLD | BA_NETH | BA_WATE |
+S:S_UNDEAD
+D:The ferryman across the river Styx to the land of the dead.
+D:He wishes to receive payment for your entry.
+
+N:714:Quickbeam, the Ent
+G:#:G
+I:120:40d100:30:120:15
+W:47:3:0:13500
+E:1:1:1:2:1:1
+O:10:50:20:10
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+B:CRUSH:HURT:12d13
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | CAN_SPEAK |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY | SUSCEP_FIRE |
+F:SMART | TAKE_ITEM | KILL_WALL | BASH_DOOR |
+F:GOOD | PET | BASEANGBAND | NO_CUT
+D:Unusually hasty, for an ent. Quickbeam hates evil creatures, and orcs in
+D:particular, since the destruction of his beloved rowan-trees to feed the
+D:fires of Orthanc.
+
+N:715:Glaurung, Father of the Dragons
+G:D:R
+I:130:120d100:20:125:70
+W:70:2:300000:50000
+E:0:1:0:6:1:0
+O:30:70:0:0
+B:CLAW:HURT:5d12
+B:CLAW:HURT:5d12
+B:BITE:FIRE:8d14
+B:BITE:POISON:8d14
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_RANDART
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:SMART | EVIL | DRAGON | IM_POIS | IM_FIRE |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BLIND | CONF | SCARE |
+S:BR_FIRE | BR_POIS | BR_SOUN | S_HI_DRAGON
+D:Glaurung is the father of all dragons, and was for a long time the most
+D:powerful. Though this is no longer so, he still has full command over
+D:his brood and can command them to appear whenever he so wishes. He is
+D:the definition of dragonfire.
+
+N:716:Behemoth
+G:H:B
+I:120:50d100:25:180:30
+W:49:3:6000:16000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:5d8
+B:BITE:FIRE:5d8
+B:CRUSH:HURT:3d15
+B:CRUSH:HURT:3d15
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SWIM | ANIMAL | AQUATIC |
+F:IM_FIRE | IM_ACID | IM_COLD | IM_POIS | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | BASEANGBAND
+S:1_IN_9
+S:BR_FIRE
+D:A great water-beast, with an almost impenetrable skin.
+
+N:717:Garm, Guardian of Hel
+G:C:b
+I:120:30d100:20:120:70
+W:49:2:0:25000
+E:0:1:0:2:1:0
+O:50:50:0:0
+B:CLAW:HURT:7d13
+B:CLAW:HURT:7d13
+B:BITE:HURT:8d13
+B:BITE:HURT:8d13
+F:UNIQUE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | RES_NETH |
+F:ANIMAL | EVIL | IM_FIRE | NO_SLEEP | ZANGBAND
+S:1_IN_3 |
+S:BR_NETH | BR_COLD | BR_DARK |
+S:S_HOUND | S_UNDEAD
+D:Garm is a gigantic hound, whose job is to guard that none escapes
+D:the tortures of Hel, the place of punishment for the wicked
+D:and cowardly dead.
+
+N:718:Greater wall monster
+G:#:W
+I:120:15d40:20:80:20
+W:44:4:0:900
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:FORCE_SLEEP | COLD_BLOOD | EMPTY_MIND | PASS_WALL | RAND_50 |
+F:BASH_DOOR | IM_COLD | IM_ACID | IM_FIRE | IM_ELEC | IM_POIS | NONLIVING |
+F:HURT_ROCK | NO_CONF | NO_SLEEP | CHAR_MULTI | CAN_FLY | BASEANGBAND
+F:NO_CUT
+S:MULTIPLY |
+D:A sentient, moving section of wall.
+
+N:719:Nycadaemon
+G:U:o
+I:120:29d99:20:80:80
+W:51:3:0:10000
+E:1:1:1:2:1:1
+O:50:0:50:0
+B:TOUCH:TERRIFY
+B:CLAW:HURT:6d6
+B:CLAW:HURT:6d6
+B:CLAW:HURT:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE | NONLIVING |
+F:REGENERATE | IM_ACID | IM_COLD | IM_FIRE | CAN_FLY |
+F:NO_SLEEP | NO_STUN | NO_CONF | EVIL | DEMON |
+F:INVISIBLE | KILL_WALL |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | BASEANGBAND
+S:1_IN_4 |
+S:HOLD | BLINK | CONF | S_DEMON | BRAIN_SMASH | BR_NETH
+D:A loathsome, sturdy, winged, horned demon, with talons that could tear
+D:a stone wall down.
+
+N:720:Barbazu
+G:U:G
+I:120:120d10:25:60:80
+W:55:2:0:3000
+E:1:1:1:2:1:1
+O:20:40:20:20
+B:HIT:HURT:4d10
+B:HIT:HURT:4d10
+B:HIT:LOSE_CON:10d2
+B:STING:POISON:5d5
+F:FORCE_SLEEP | FORCE_MAXHP | FRIENDS |
+F:ONLY_ITEM | DROP_1D2 | NONLIVING | BASEANGBAND |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_7 |
+S:SCARE | S_DEMON
+D:A foul, humanoid creature with a long tail, clawed hands and feet,
+D:and a disgusting, wiry, snaky beard. They are the elite shock troops
+D:of the hells, capable of a terrifying berserk fury.
+
+N:721:Goat of Mendes
+G:q:D
+I:120:18d111:30:66:40
+W:50:3:0:6666
+E:0:1:0:2:1:0
+O:0:0:100:0
+B:GAZE:TERRIFY
+B:BUTT:HURT:6d6
+B:BITE:EXP_40
+B:BITE:LOSE_CON
+F:EVIL | DEMON | FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | SMART | NONLIVING |
+F:NO_CONF | NO_SLEEP | HURT_LITE | IM_FIRE | IM_COLD | ZANGBAND
+S:1_IN_4 |
+S:BLIND | CONF | BRAIN_SMASH | SCARE | ANIM_DEAD
+S:BA_NETH | FORGET | S_UNDEAD | DRAIN_MANA |
+S:S_DEMON | CAUSE_4 | BA_COLD
+D:It is a demonic creature from the lowest hell, vaguely resembling a
+D:large black he-goat.
+
+N:722:Nightwing
+G:W:D
+I:120:60d60:20:120:10
+W:61:4:0:10000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:TOUCH:POISON:6d5
+B:TOUCH:POISON:6d5
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | RES_TELE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BLIND | SCARE | CAUSE_4 | BRAIN_SMASH |
+S:BO_MANA | BO_NETH | BA_NETH | S_UNDEAD
+D:Everywhere colours seem paler and the air chiller. At the centre of the
+D:cold stands a mighty figure. Its wings envelop you in the chill of death
+D:as the nightwing reaches out to draw you into oblivion. Your muscles sag
+D:and your mind loses all will to fight as you stand in awe of this mighty
+D:being.
+
+N:723:Maulotaur
+G:H:s
+I:130:250d13:13:50:10
+W:50:2:40000:4500
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:SHATTER:8d8
+B:HIT:SHATTER:8d8
+B:BUTT:HURT:4d6
+B:BUTT:HURT:4d6
+F:ONLY_ITEM | DROP_60 | DROP_GOOD | RES_TELE |
+F:BASH_DOOR | STUPID | DROP_CORPSE |
+F:EVIL | IM_FIRE | FORCE_SLEEP | FORCE_MAXHP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BO_PLAS | BA_FIRE
+D:It is a belligerent minotaur with a destructive magical arsenal, armed
+D:with a hammer.
+
+N:724:Nether hound
+G:Z:G
+I:120:60d10:30:100:0
+W:51:2:800:5000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d12
+B:CLAW:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+F:FORCE_SLEEP |
+F:FRIENDS | RES_NETH | DROP_SKELETON | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BR_NETH
+D:You feel a soul-tearing chill upon viewing this beast, a ghostly form of
+D:darkness in the shape of a large dog.
+
+N:725:Time hound
+G:Z:B
+I:130:60d10:30:100:0
+W:51:2:800:5000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d12
+B:CLAW:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+F:FORCE_SLEEP |
+F:FRIENDS |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_TIME
+D:You get a terrible sense of deja vu, or is it a premonition? All at once
+D:you see a little puppy and a toothless old dog. Perhaps you should give
+D:up and go to bed.
+
+N:726:Plasma hound
+G:Z:R
+I:120:60d10:30:100:0
+W:51:2:800:5000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:HURT:2d12
+B:CLAW:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+F:FORCE_SLEEP | SUSCEP_COLD |
+F:FRIENDS | RES_PLAS |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | IM_FIRE | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_5 |
+S:BR_PLAS
+D:The very air warps as pure elemental energy stalks towards you in the
+D:shape of a giant hound. Your hair stands on end and your palms itch as
+D:you sense trouble.
+
+N:727:Demonic quylthulg
+G:Q:r
+I:120:48d10:20:1:0
+W:45:1:3000:3000
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TPORT |
+S:S_DEMON
+D:A pile of pulsing flesh that glows with an inner hellish fire. The world
+D:itself seems to cry out against it.
+
+N:728:Great Storm Wyrm
+G:D:b
+I:120:40d100:30:150:80
+W:63:2:190000:20000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:ELEC:6d14
+B:BITE:ELEC:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:EVIL | DRAGON | IM_ELEC | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_ELEC
+D:A vast dragon of power. Storms and lightning crash around its titanic
+D:form. Deep blue scales reflect the flashes and highlight the creature's
+D:great muscles. It regards you with contempt.
+
+N:729:Ulik the Troll
+G:T:v
+I:130:35d100:30:120:30
+W:51:4:16000:18000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:SHATTER:20d12
+B:HIT:SHATTER:20d12
+B:BITE:POISON:6d14
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | SPECIAL_GENE |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:DROP_90 | REGENERATE | KILL_WALL | RES_TELE | KILL_BODY |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | TROLL | IM_POIS |
+F:IM_ELEC | IM_COLD | IM_FIRE | BASEANGBAND
+D:Ulik is the strongest troll who has ever lived. He could challenge
+D:the immortals and pound them to dust with his great strength.
+
+N:730:Baphomet the Minotaur Lord
+G:H:v
+I:130:35d100:30:120:30
+W:58:4:16000:18000
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:BUTT:HURT:12d13
+B:BUTT:HURT:12d13
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | DROP_CORPSE |
+F:EVIL | IM_FIRE | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:1_IN_6 |
+S:SLOW | ARROW_4 | BO_MANA | BO_PLAS | BA_ELEC |
+S:BR_WALL
+D:A fearsome bull-headed monster, Baphomet swings a mighty axe as he curses
+D:all that defy him.
+
+N:731:Hell knight
+G:p:D
+I:120:15d100:20:100:10
+W:52:1:2200:10000
+E:1:1:1:2:1:1
+O:0:40:60:0
+B:HIT:HURT:10d5
+B:HIT:HURT:10d5
+B:HIT:EXP_80:10d5
+B:HIT:EXP_80:10d5
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | IM_FIRE | IM_COLD | IM_POIS |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | RES_NETH | RES_NEXU | RES_PLAS |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_COLD |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BLIND | SCARE | CAUSE_3 | BA_NETH | BA_FIRE | BO_PLAS
+S:S_MONSTERS | S_DEMON
+D:It is a humanoid form dressed in armour of ancient style. From beneath
+D:its helmet, eyes glow with hellfire.
+
+N:732:Bull Gates
+G:p:D
+I:140:25d100:40:90:0
+W:52:3:1600:20000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:CHARGE:EAT_GOLD:5d5
+B:CHARGE:EAT_ITEM:5d5
+B:SPIT:BLIND:10d5
+B:DROOL:DISEASE:8d5
+F:UNIQUE | MALE | CAN_SPEAK | DROP_SKELETON | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:IM_POIS | EVIL | RES_TELE
+F:MORTAL | JOKEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:TRAPS | S_BUG
+D:He may not code worth a dime, but he certainly knows how to make money.
+
+N:733:Santa Claus
+G:h:r
+I:150:25d100:90:100:10
+W:52:3:2600:45000
+E:1:1:1:2:1:1
+O:20:20:20:20
+B:HIT:LOSE_CHR:5d5
+B:TOUCH:LOSE_ALL:10d1
+B:TOUCH:LOSE_ALL:10d1
+B:CHARGE:EAT_GOLD
+F:UNIQUE | MALE | CAN_SPEAK | REFLECTING | DROP_SKELETON | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:NO_STUN | NO_SLEEP |
+F:IM_ELEC | IM_FIRE | IM_POIS | IM_COLD |
+F:COLD_BLOOD | RES_TELE | JOKEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:CAUSE_4 | HOLD | DRAIN_MANA | SCARE | BLIND |
+S:S_UNDEAD | S_HI_UNDEAD | S_HI_DRAGON | S_UNIQUE |
+S:BA_NETH | FORGET | TRAPS | BRAIN_SMASH | TELE_AWAY
+D:Why would anybody want to kill Santa Claus? To get all the presents,
+D:of course!
+
+N:734:Eihort, the Thing in the Labyrinth
+G:j:R
+I:120:33d100:50:90:10
+W:53:3:0:45000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:BITE:PARALYZE:8d1
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+F:UNIQUE | CAN_SPEAK | ESCORT | REGENERATE |
+F:FORCE_SLEEP | FORCE_MAXHP | ELDRITCH_HORROR |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_SLEEP | RES_TELE | CTHANGBAND | NO_CUT
+S:1_IN_4 |
+S:S_UNDEAD | S_DEMON | S_MONSTER | BLINK | BA_ACID | FORGET
+D:"Then came pale movement in the well, and something clambered
+D:up from the dark, a bloated blanched oval supported on myriad
+D:fleshless legs. Eyes formed in the gelatinous oval and stared
+D:at him."
+
+N:735:The King in Yellow
+G:L:y
+I:120:32d100:90:100:10
+W:53:3:0:50000
+E:0:0:0:0:0:0
+O:50:0:40:10
+B:CRUSH:HURT:12d12
+B:CRUSH:HURT:12d12
+B:GAZE:LOSE_WIS:5d10
+B:GAZE:TERRIFY:5d10
+F:UNIQUE | MALE | CAN_SPEAK | ATTR_MULTI | ATTR_ANY |
+F:FORCE_SLEEP | FORCE_MAXHP | CTHANGBAND |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_ACID | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | RES_TELE | NO_CUT
+S:1_IN_2 |
+S:S_DEMON | S_UNDEAD | S_KIN | SCARE | CAUSE_3 | CAUSE_4 | ANIM_DEAD
+S:TELE_AWAY | TPORT | BRAIN_SMASH | CONF
+D:The King in Yellow is an Avatar of Hastur: "He has no
+D:face, and is twice as tall as a man. He wears pointed shoes under
+D:his tattered, fantastically colored robes, and a streamer of silk
+D:appears to fall from the pointed tip of his hood. At times he appears
+D:to be winged; at others, haloed."
+
+N:736:Great unclean one
+G:U:g
+I:120:80d80:30:150:20
+W:53:3:0:17500
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:BITE:DISEASE:10d10
+B:BITE:ACID:10d10
+B:BITE:POISON:10d10
+B:BITE:CONFUSE:10d10
+F:DEMON | EVIL | NONLIVING | CAN_SWIM |
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_2D2 | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR | SMART | POWERFUL | DROP_GOOD | KILL_BODY |
+F:IM_ACID | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP
+F:KILL_ITEM | ZANGBAND
+S:1_IN_3
+S:BR_ACID | BR_POIS | BR_NUKE | SCARE | ANIM_DEAD
+S:CAUSE_3 | CAUSE_4 | S_DEMON | S_UNDEAD
+D:This disgusting demon resembles a shambling pile of rotting
+D:green flesh, with dozens of mouths drooling and leaving a
+D:trail of foul-smelling goo behind. Nurgle must be
+D:proud of himself to have created this atrocity!
+
+N:737:Lord of Chaos
+G:p:v
+I:130:45d55:30:80:5
+W:60:3:0:17500
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:KICK:HURT:20d2
+B:KICK:HURT:10d2
+B:HIT:POISON:20d1
+B:HIT:LOSE_ALL:15d1
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_SKELETON |
+F:ONLY_ITEM | DROP_4D2 | ATTR_MULTI | EVIL | SHAPECHANGER | ATTR_ANY |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | SMART | POWERFUL | EVIL |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:ZANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | MIND_BLAST | BA_CHAO |
+S:S_SPIDER | S_HOUND | S_DEMON
+D:He is one of the few true masters of the art, being extremely skillful in
+D:all forms of unarmed combat and controlling the Chaos
+D:with disdainful ease.
+
+N:738:Old Sorcerer
+G:p:R
+I:130:52d25:20:60:10
+W:54:2:0:5000:0
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:6d8
+B:HIT:HURT:6d8
+B:HIT:HURT:6d8
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 |
+F:OPEN_DOOR | BASH_DOOR | TAKE_ITEM |
+F:EVIL | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:BLINK | TELE_TO | BLIND | CONF | CAUSE_3 | CAUSE_4 | TRAPS |
+S:BO_ACID | BA_FIRE | BA_COLD | BA_POIS |
+S:S_MONSTER | S_DEMON | S_HI_DRAGON | S_UNDEAD
+D:A human figure in robes, he moves with magically improved speed, and his
+D:hands are ablur with spell casting. You stagger at the mighty sound of his
+D:spells as they echo hollowly through the dungeon.
+
+N:739:Ethereal hound
+G:Z:G
+I:120:60d15:30:100:0
+W:55:3:900:6000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:CLAW:HURT:2d12
+F:FORCE_SLEEP | FRIENDS |
+F:INVISIBLE | PASS_WALL |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BR_NETH
+D:A pale green hound. Pulsing red lines and strange fluorescent light
+D:hint at internal organs best left to the imagination.
+
+N:740:Lesser kraken
+G:~:G
+I:120:30d100:30:150:80
+W:54:2:8000:20000
+E:3:0:3:0:1:0
+O:25:25:50:0
+B:CRUSH:HURT:16d12
+B:CRUSH:HURT:16d12
+B:CRUSH:HURT:16d12
+B:CRUSH:HURT:16d12
+F:FORCE_SLEEP | FORCE_MAXHP | AQUATIC | WILD_TOO | WILD_OCEAN |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD | DROP_CORPSE |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | SMART | RES_WATE |
+F:EVIL | IM_ELEC | NO_CONF | NO_SLEEP | IM_POIS | IM_FIRE | BASEANGBAND
+S:1_IN_4 |
+S:BLIND | CONF | SCARE | CAUSE_4 | CAUSE_3 |
+S:BA_WATE | DARKNESS | BR_DARK | TELE_TO
+D:An enormously fearsome and powerful inhabitant of the depths. It
+D:resembles a gargantuan octopus and its evil is almost tangible.
+
+N:741:Great Ice Wyrm
+G:D:w
+I:120:40d100:30:150:80
+W:63:2:190000:20000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:COLD:6d14
+B:BITE:COLD:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | AURA_COLD |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | SUSCEP_FIRE |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE
+F:EVIL | DRAGON | IM_COLD | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_COLD
+D:An immense dragon capable of awesome destruction. You have never felt
+D:such extreme cold, or witnessed such an icy stare. Begone quickly or feel
+D:its wrath!
+
+N:742:Demilich
+G:L:U
+I:120:35d100:20:100:50
+W:54:2:3000:12500
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:EXP_80
+B:TOUCH:UN_POWER
+B:TOUCH:LOSE_DEX:4d12
+B:TOUCH:LOSE_DEX:4d12
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_3 |
+S:BLINK | TELE_TO | BLIND | HOLD | CONF | SCARE | CAUSE_3 | CAUSE_4 |
+S:DRAIN_MANA | BRAIN_SMASH | S_HI_UNDEAD | S_UNDEAD | FORGET | S_DEMON |
+S:TPORT | HEAL | ANIM_DEAD
+D:A lich who is partially immaterial, on its way to a new, ethereal form.
+
+N:743:The Phoenix
+G:B:r
+I:120:36d100:60:130:0
+W:54:3:6000:40000
+E:0:1:1:0:1:0
+O:0:50:50:0
+B:BITE:FIRE:12d6
+B:BITE:FIRE:12d6
+B:HIT:FIRE:9d12
+B:HIT:FIRE:9d12
+F:UNIQUE | CAN_SPEAK | RES_PLAS | AURA_FIRE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | SUSCEP_COLD |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:ANIMAL | IM_ACID | IM_FIRE | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP
+F:BASEANGBAND | HAS_LITE | REGENERATE
+S:1_IN_3 |
+S:BO_FIRE | BO_PLAS | BA_FIRE |
+S:BR_FIRE | BR_LITE | BR_PLAS
+D:A massive glowing eagle bathed in flames. The searing heat chars your
+D:skin and melts your armour.
+
+N:744:Nightcrawler
+G:W:D
+I:120:80d60:20:160:10
+W:69:3:10000:1500
+E:0:0:0:0:1:0
+O:40:0:50:10
+B:STING:LOSE_CON:8d8
+B:STING:LOSE_CON:8d8
+B:BITE:ACID:10d10
+B:BITE:ACID:10d10
+F:FORCE_SLEEP | SMART | KILL_WALL | CAN_SWIM | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS | RES_TELE |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BLIND | SCARE | BRAIN_SMASH |
+S:BO_MANA | BO_NETH | BA_NETH | BR_NETH | S_UNDEAD
+D:This intensely evil creature bears the form of a gargantuan black worm.
+D:Its gaping maw is a void of blackness, and acid drips from its steely hide.
+D:It is like nothing you have ever seen before, and a terrible chill runs
+D:down your spine as you face it.
+
+N:745:Lord of Change
+G:U:v
+I:130:50d70:30:150:20
+W:54:3:0:17000
+E:0:1:1:0:1:0
+O:0:0:100:0
+B:CLAW:CONFUSE:10d10
+B:CLAW:CONFUSE:10d10
+B:BITE:BLIND:12d12
+F:DEMON | EVIL | ATTR_MULTI | DROP_GOOD | MOVE_BODY | NONLIVING |
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_2D2 | ELDRITCH_HORROR |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | SMART | POWERFUL | CAN_FLY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:ZANGBAND
+S:1_IN_3
+S:MIND_BLAST | BA_CHAO | SCARE | BRAIN_SMASH | DRAIN_MANA |
+S:S_HOUND | S_DEMON | S_DRAGON | TPORT | HASTE | CONF | SCARE |
+S:TELE_AWAY | FORGET
+D:The most powerful of Tzeentch's servitors. This demon looks like
+D:a huge bird-creature, with the head of a predatory bird and
+D:fantastically multi-coloured wings.
+
+N:746:Keeper of Secrets
+G:H:G
+I:130:60d70:30:150:20
+W:54:3:0:17000
+E:2:0:2:2:1:1
+O:0:0:100:0
+B:HIT:CONFUSE:10d10
+B:HIT:TERRIFY:10d10
+B:HIT:BLIND:10d10
+B:HIT:TERRIFY:10d10
+F:DEMON | EVIL | DROP_GOOD | NONLIVING | CAN_SWIM |
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_2D2 | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR | SMART | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | ZANGBAND
+S:1_IN_3
+S:SCARE | BRAIN_SMASH | DRAIN_MANA |
+S:BR_CONF | S_DEMON | S_UNDEAD | TPORT | HEAL |
+S:TELE_AWAY
+D:This demonic keeper of forbidden secrets looks like a hairless
+D:minotaur with extra arms, decorated with tattoos and nose rings.
+D:It is the embodiment of Slaanesh's perverted magic.
+
+N:747:Shudde M'ell
+G:w:s
+I:125:100d40:20:90:20
+W:59:2:0:23000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:CRUSH:SHATTER:55d2
+B:CRUSH:SHATTER:55d2
+B:TOUCH:LOSE_CON:1d2
+B:TOUCH:LOSE_CON:1d2
+F:IM_FIRE | RES_PLAS | IM_COLD | IM_POIS | ELDRITCH_HORROR | RES_TELE |
+F:KILL_WALL | ONLY_GOLD | DROP_4D2 | DROP_2D2 | CAN_SWIM |
+F:EVIL | FORCE_MAXHP | SMART | UNIQUE | CTHANGBAND | NO_STUN
+S:1_IN_5 |
+S:SCARE | CONF | HOLD | S_DEMON | S_KIN |
+S:HEAL | HASTE | FORGET | BRAIN_SMASH |
+S:BR_DARK | BR_ACID | BR_DISE
+D:The most powerful and most evil of all Chthonians.
+D:"A great gray thing a mile long chanting and exuding strange acids...
+D:charging through the depths of the earth at a fantastic speed, in a
+D:dreadful fury... melting basaltic rocks like butter under a blowtorch."
+
+N:748:Hand druj
+G:s:y
+I:130:60d10:20:110:10
+W:57:2:10:18000
+E:0:0:0:1:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW | RES_TELE |
+F:SMART | COLD_BLOOD | CAN_SWIM |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_1 |
+S:TELE_AWAY | BLIND | CONF | SCARE | CAUSE_3 | FORGET | DARKNESS |
+S:BO_FIRE | BO_ACID | BO_COLD | BO_ELEC
+D:A skeletal hand floating in the air, motionless except for its flexing
+D:fingers.
+
+N:749:Eye druj
+G:s:r
+I:130:10d100:20:90:10
+W:58:2:2:21000
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW | RES_TELE |
+F:SMART | COLD_BLOOD |
+F:EVIL | UNDEAD | CAN_SWIM |
+F:IM_FIRE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_1 |
+S:BO_MANA | BO_NETH | BA_NETH | BRAIN_SMASH | S_UNDEAD
+D:A bloodshot eyeball floating in the air, you'd be forgiven for assuming it
+D:harmless.
+
+N:750:Skull druj
+G:s:o
+I:130:14d100:20:120:10
+W:59:2:1000:24000
+E:0:0:0:0:1:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | RES_TELE |
+F:SMART | COLD_BLOOD |
+F:EVIL | UNDEAD | CAN_SWIM |
+F:IM_FIRE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_1 |
+S:SLOW | CAUSE_4 | MIND_BLAST | BRAIN_SMASH | TRAPS | BO_PLAS |
+S:BO_NETH | BA_WATE | S_UNDEAD
+D:A glowing skull possessed by sorcerous power. It need not move, but
+D:merely blast you with mighty magic.
+
+N:751:Chaos vortex
+G:v:v
+I:140:32d20:100:80:0
+W:53:1:0:4000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:CONFUSE:5d5
+B:ENGULF:CONFUSE:5d5
+B:ENGULF:HURT:5d5
+B:ENGULF:HURT:5d5
+F:ATTR_MULTI | ATTR_ANY | FORCE_SLEEP |
+F:RAND_50 | RAND_25 | CAN_FLY |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_CHAO
+D:Void, nothingness, spinning destructively.
+
+N:752:Aether vortex
+G:v:v
+I:130:40d20:100:40:0
+W:54:2:0:5000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:ELEC:5d5
+B:ENGULF:FIRE:5d5
+B:ENGULF:ACID:5d5
+B:ENGULF:COLD:5d5
+F:ATTR_MULTI | ATTR_ANY | FORCE_SLEEP | CAN_FLY |
+F:RAND_50 | RAND_25 | AURA_COLD | RES_WATE | RES_DISE |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | RES_NETH | RES_NEXU |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | AURA_FIRE | AURA_ELEC |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | RES_PLAS | BASEANGBAND | NO_CUT
+S:1_IN_6 |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS | BR_LITE |
+S:BR_DARK | BR_SOUN | BR_CONF | BR_CHAO | BR_SHAR | BR_NETH |
+S:BR_WALL | BR_INER | BR_TIME | BR_GRAV | BR_PLAS | BR_NEXU
+D:An awesome vortex of pure magic, power radiates from its frame.
+
+N:753:Nidhogg, the Hel-Drake
+G:D:D
+I:120:39d111:20:133:70
+W:55:2:260000:25000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:LOSE_CON:8d12
+B:CLAW:LOSE_CON:8d12
+B:BITE:EXP_80:8d15
+B:BITE:EXP_80:8d15
+F:UNIQUE | CAN_FLY | RES_NETH |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | IM_POIS |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | CAN_SPEAK | IM_ACID |
+F:EVIL | DRAGON | IM_FIRE | NO_SLEEP | IM_COLD | ZANGBAND |
+F:HAS_LITE
+S:1_IN_5 |
+S:CAUSE_3 | BR_NETH | BR_COLD |
+S:BR_ACID | BR_POIS |
+S:S_DRAGON | S_UNDEAD
+D:In the bowels of Hel, the dread Nidhogg, a dragon blacker than the
+D:night, feasts on the essences of the dead.
+
+N:754:The Lernaean Hydra
+G:M:v
+I:120:45d100:20:140:20
+W:55:2:13000:20000
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:POISON:8d6
+B:BITE:POISON:8d6
+B:BITE:FIRE:12d6
+B:BITE:FIRE:12d6
+F:UNIQUE | SUSCEP_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | DROP_CORPSE |
+F:ONLY_GOLD | DROP_3D2 | DROP_4D2 | WILD_TOO | WILD_SHORE | WILD_SWAMP |
+F:OPEN_DOOR | BASH_DOOR | KILL_BODY | POWERFUL | REGENERATE |
+F:ANIMAL | IM_FIRE | IM_POIS |
+F:NO_CONF | NO_STUN | CAN_SWIM |
+F:MORTAL | BASEANGBAND
+S:1_IN_3 |
+S:SCARE |
+S:BO_FIRE | BO_PLAS | BA_FIRE | BA_POIS |
+S:BR_FIRE | BR_POIS | S_HYDRA | S_KIN
+D:A massive legendary hydra. It has twelve powerful heads. Its many eyes
+D:stare at you as clouds of smoke and poisonous vapour rise from its
+D:seething form. It grows new heads as fast as you chop them off.
+
+N:755:Thuringwethil, the Vampire Messenger
+G:V:v
+I:130:50d100:20:145:10
+W:67:3:1500:23000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:BITE:EXP_80:6d6
+B:BITE:EXP_80:6d6
+B:HIT:CONFUSE:6d6
+B:HIT:CONFUSE:6d6
+F:UNIQUE | FEMALE | SPECIAL_GENE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | CAN_SPEAK | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | NO_STUN
+F:RES_TELE | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | BA_NETH | S_KIN | S_HI_UNDEAD
+D:Chief messenger between Sauron and Morgoth, she is the most deadly of her
+D:vampire race on Middle-earth. At first she is charming to meet, but her
+D:wings and eyes give away her true form.
+
+N:756:Great Hell Wyrm
+G:D:r
+I:120:50d100:30:150:80
+W:67:2:190000:23000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:FIRE:6d14
+B:BITE:FIRE:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | SUSCEP_COLD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | AURA_FIRE |
+F:EVIL | DRAGON | IM_FIRE | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_FIRE
+D:A vast dragon of immense power. Fire leaps continuously from its huge
+D:form. The air around it scalds you. Its slightest glance burns you, and
+D:you realise how truly insignificant you are.
+
+N:757:Hastur the Unspeakable
+G:H:b
+I:120:55d95:20:150:10
+W:55:4:0:23000
+E:2:0:2:4:1:0
+O:25:25:25:10
+B:CRUSH:HURT:14d8
+B:CRUSH:HURT:14d8
+B:BITE:EXP_80:6d6
+B:BITE:EXP_80:6d6
+F:UNIQUE | ELDRITCH_HORROR | CAN_SWIM |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | CAN_SPEAK | AURA_ELEC |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | POWERFUL | SMART | NONLIVING |
+F:EVIL | DEMON | IM_COLD | IM_POIS | HURT_LITE | NO_SLEEP |
+F:RES_TELE | CTHANGBAND
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | BA_WATE | S_DEMON | HASTE |
+S:TPORT | TELE_AWAY | TELE_TO | HEAL | BR_DARK | BR_NETH
+D:His form is partially that of a reptile, partially that of a gigantic
+D:octopus. He will destroy you.
+
+N:758:Bloodthirster
+G:U:r
+I:130:60d70:30:180:20
+W:55:3:0:18500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:50d1
+B:HIT:HURT:50d1
+B:HIT:HURT:50d1
+F:DEMON | EVIL | DROP_GOOD | REGENERATE | CAN_FLY | NONLIVING |
+F:FORCE_SLEEP | FORCE_MAXHP | ONLY_ITEM | DROP_4D2 | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR | RES_NETH | RES_NEXU | RES_TELE | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | NO_FEAR
+F:CAN_FLY | ZANGBAND | HAS_LITE
+D:Khorne's mightiest servant, a winged hound-demon walking on
+D:two paws and wielding a mighty axe and a whip in the other
+D:two. Intelligent, bloodthirsty eyes leer at you from inside
+D:the blood-soaked demon armour.
+
+N:759:Draconic quylthulg
+G:Q:g
+I:120:48d10:20:1:0
+W:45:1:3000:3000
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TPORT |
+S:S_DRAGON
+D:It looks like it was once a dragon corpse, now deeply infected with
+D:magical bacteria that make it pulse in a foul and degrading way.
+
+N:760:Nyogtha, the Thing that Should not Be
+G:j:D
+I:130:55d99:20:120:20
+W:56:2:0:20000
+E:0:0:0:0:0:0
+O:50:0:40:10
+B:CRUSH:ACID:10d6
+B:CRUSH:ACID:10d6
+B:CRUSH:ACID:10d6
+B:CRUSH:HURT:16d16
+F:UNIQUE | ELDRITCH_HORROR |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK | SMART | CAN_SWIM |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:REGENERATE | ONLY_ITEM | KILL_ITEM | DROP_2D2 | DROP_90 | DROP_60 |
+F:BASH_DOOR | EVIL | NO_CONF | NO_SLEEP | KILL_BODY |
+F:FORCE_MAXHP | FORCE_SLEEP | HURT_LITE | POWERFUL | RES_NETH | NONLIVING |
+F:IM_ACID | IM_FIRE | RES_PLAS | IM_POIS | IM_COLD | IM_ELEC | RES_TELE
+F:CTHANGBAND | NO_CUT
+S:1_IN_5 |
+S:BRAIN_SMASH | MIND_BLAST | HASTE | TPORT |
+S:S_DEMON | S_UNDEAD | S_HI_UNDEAD | S_KIN |
+S:BR_DARK | BR_NUKE | BR_ACID | BR_POIS
+D:"...a little finger of blackness crept out from beneath its edge
+D:a great wave of iridescent blackness, neither liquid nor solid,
+D:a frightful gelatinous mass."
+
+N:761:Ahtu, Avatar of Nyarlathotep
+G:#:D
+I:130:50d110:30:120:15
+W:56:3:0:22500
+E:1:1:1:2:1:1
+O:0:30:60:10
+B:CRUSH:HURT:13d13
+B:CRUSH:FIRE:10d10
+B:CRUSH:HURT:13d13
+B:CRUSH:FIRE:10d10
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | CAN_SPEAK |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | NONLIVING | ELDRITCH_HORROR | CTHANGBAND | NO_CUT | NO_SLEEP | NO_CONF | NO_STUN
+S:1_IN_6
+S:BR_FIRE | S_DEMON | CAUSE_4 | BR_PLAS | BR_NETH | BRAIN_SMASH |
+S:S_UNDEAD | BA_DARK
+D:"Higher already than the giants of the forest ringing it, the
+D:fifty-foot-thick column... sprouted a ring of tendrils, ruddy and
+D:golden and glittering overall with inclusions of quartz."
+
+N:762:Fundin Bluecloak
+G:h:B
+I:130:50d100:25:195:10
+W:56:2:1400:20000
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:HIT:HURT:10d10
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP | PET |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:HEAL | BLIND | CONF | SCARE | CAUSE_3 | CAUSE_4 | BRAIN_SMASH |
+S:FORGET | S_MONSTERS | S_ANIMALS
+D:He is one of the greatest dwarven priests to walk the earth. Fundin has
+D:earned a high position in the church, and his skill with both weapon and
+D:spell only justify his position further. His combination of both dwarven
+D:strength and priestly wisdom are a true match for any adventurer.
+
+N:763:Bile Demon
+G:U:R
+I:120:35d100:40:90:80
+W:61:2:0:12000
+E:1:0:1:2:1:0
+O:30:70:0:0
+B:HIT:HURT:8d8
+B:HIT:HURT:8d8
+B:CRUSH:ACID:9d9
+B:CRUSH:ACID:9d9
+F:FORCE_SLEEP | FORCE_MAXHP | BASEANGBAND |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | NONLIVING |
+F:EVIL | DEMON | IM_POIS | IM_ACID | NO_CONF | NO_SLEEP
+S:1_IN_6 |
+S:BR_POIS | BR_ACID | S_DEMON | BLIND | CONF | ARROW_4
+D:It's big. It's fat. It's red. It's ugly. It's got a severe attack of
+D:highly poisonous flatulence. And its insides are corrosive. All of which
+D:go together to make the single most repulsive sight - and smell - you have
+D:ever experienced.
+
+N:764:Uriel, Angel of Fire
+G:A:R
+I:130:55d100:40:160:10
+W:61:3:3400:25000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:FIRE:4d12
+B:HIT:FIRE:4d12
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+F:UNIQUE | MALE | CAN_SPEAK | NO_FEAR | GOOD | AURA_FIRE | REFLECTING |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | SUSCEP_COLD |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | NO_SLEEP
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_ELEC | IM_POIS | RES_TELE | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:TELE_TO | BLIND |
+S:BO_FIRE | BO_MANA | BA_FIRE |
+S:BR_FIRE | BR_PLAS |
+S:S_ANGEL
+D:A creature of godly appearance. You dare not challenge Uriel's supremacy.
+D:Those who stood against him before are but a memory, cremated by his
+D:mastery of elemental fire.
+
+N:765:Azriel, Angel of Death
+G:A:D
+I:130:60d100:40:170:10
+W:62:3:3400:30000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:EXP_80:10d5
+B:HIT:EXP_80:10d5
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+F:UNIQUE | MALE | CAN_SPEAK | RES_NETH | NO_FEAR | GOOD |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | REFLECTING | AURA_COLD |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | CAN_FLY | NO_SLEEP
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | RES_TELE | BASEANGBAND
+F:HAS_LITE
+S:1_IN_2 |
+S:TELE_TO | BLIND |
+S:BO_MANA | BO_NETH | BA_NETH |
+S:BR_NETH |
+S:S_ANGEL
+D:Azriel commands awesome power, his visage holy enough to shrivel your
+D:soul. You shriek with disbelief as his mastery of death draws you to your
+D:grave. It is truly beyond all but the mightiest of warriors to stand
+D:against him and live.
+
+N:766:Ancalagon the Black
+G:D:D
+I:140:180d100:40:170:70
+W:90:1:330000:60000
+E:0:1:0:6:1:0
+O:60:40:0:0
+B:CLAW:HURT:10d12
+B:CLAW:HURT:10d12
+B:BITE:HURT:10d14
+B:BITE:HURT:10d14
+F:UNIQUE | MALE | CAN_FLY | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BR_ACID | BR_FIRE | BR_DISI | BR_WALL | BR_TIME |
+S:S_HI_DRAGON | S_KIN
+D:"Rushing Jaws" is his name, and death is his game; the greatest and most
+D:terrible of all dragonkind, his power dismayed even the Valar for a time.
+
+N:767:Daoloth, the Render of the Veils
+G:U:s
+I:120:72d100:20:125:70
+W:58:3:0:27500
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:CONFUSE:5d12
+B:TOUCH:CONFUSE:5d12
+B:TOUCH:CONFUSE:5d12
+B:TOUCH:CONFUSE:5d12
+F:UNIQUE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:IM_ACID | IM_FIRE | IM_POIS | IM_COLD | ELDRITCH_HORROR |
+F:NEVER_MOVE | RES_NEXU | REFLECTING | PASS_WALL
+F:NO_CONF | NO_SLEEP | NO_CUT | NO_STUN | NO_FEAR | CTHANGBAND
+S:1_IN_3 |
+S:TELE_AWAY | S_MONSTERS | TELE_LEVEL | BR_NEXU | TPORT | BLINK
+D:"Not shapeless, but so complex that the eye could recognise no
+D:describable shape. There were hemispheres and shining metal,
+D:coupled by long plastic rods. The rods were of a flat gray color,
+D:so that he could not make out which were nearer; they merged into
+D:a flat mass from which protruded individual cylinders. As he looked
+D:at it, he had a curious feeling that eyes gleamed from between
+D:these rods; but wherever he glanced at the construction, he saw
+D:only the spaces between them."
+
+N:768:Nightwalker
+G:W:D
+I:130:80d70:20:175:10
+W:73:3:75000:20000
+E:1:1:1:2:1:1
+O:30:0:70:0
+B:HIT:UN_BONUS:10d10
+B:HIT:UN_BONUS:10d10
+B:HIT:UN_BONUS:7d7
+B:HIT:UN_BONUS:7d7
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | CAN_SWIM |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | RES_TELE |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:BLIND | SCARE | BRAIN_SMASH |
+S:BO_MANA | BO_NETH | BA_NETH | S_UNDEAD
+D:A huge giant garbed in black, more massive than a titan and stronger than
+D:a dragon. With terrible blows, it breaks your armour from your back,
+D:leaving you defenceless against its evil wrath. It can smell your fear,
+D:and you in turn smell the awful stench of death as this ghastly figure
+D:strides towards you menacingly.
+
+N:769:Gabriel, the Messenger
+G:A:w
+I:130:75d100:40:180:10
+W:64:3:3500:35000
+E:1:1:1:2:1:1
+O:0:40:60:0
+B:HIT:UN_BONUS:6d8
+B:HIT:FIRE:6d8
+B:HIT:BLIND:10d10
+B:HIT:BLIND:10d10
+F:UNIQUE | MALE | FORCE_MAXHP | CAN_SPEAK | NO_SLEEP | GOOD |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | AURA_ELEC | REFLECTING | RES_TELE
+F:ESCORT | CAN_FLY |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:TELE_TO | BLIND | BO_MANA |
+S:S_ANGEL | S_KIN
+D:Commanding a legion of angels, Gabriel will destroy you for your sins. He
+D:will crush you like the pitiful insignificant being he sees you to be.
+D:Your very soul will be taken into judgement by his supreme authority as he
+D:cleanses the world of evil.
+
+N:770:Artsi, the Champion of Chaos
+G:h:v
+I:130:11d666:25:175:10
+W:59:2:1600:20000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:EXP_80:10d10
+B:HIT:EXP_80:10d10
+B:HIT:EXP_80:10d10
+F:UNIQUE | MALE | CAN_SPEAK | ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | DROP_CORPSE
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | RES_NEXU | RES_NETH |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:ZANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BA_FIRE | BA_CHAO | CONF | TPORT | S_DEMON | BR_CHAO | BA_MANA
+D:He is one of the greatest warriors of chaos to walk the earth.
+D:His bloody blade has slain thousands and tens of thousands, and still
+D:hungers for more.
+
+N:771:Saruman of Many Colours
+G:p:v
+I:120:70d100:100:100:0
+W:60:1:1600:35000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+B:HIT:HURT:5d5
+B:HIT:HURT:5d5
+F:UNIQUE | MALE | ATTR_MULTI | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | RES_TELE
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:DROP_GREAT | DROP_CHOSEN |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | IM_COLD |
+F:IM_ELEC | IM_POIS | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | HASTE | TPORT | TELE_AWAY | BLIND | CONF | SCARE |
+S:CAUSE_4 | MIND_BLAST | FORGET | TRAPS | ANIM_DEAD | BO_MANA |
+S:BO_ICEE | BA_ACID | BA_FIRE | BA_COLD | BA_WATE | BA_CHAO |
+S:S_UNDEAD | S_DEMON | S_HI_DRAGON | S_ANIMALS
+D:Originally known as the White, Saruman fell prey to Sauron's wiles. He
+D:searches forever for the One Ring, to become a mighty Sorcerer-King of the
+D:world.
+
+N:772:Harowen the Black Hand
+G:p:B
+I:140:25d100:30:36:0
+W:51:3:0:20000
+E:1:1:1:2:1:1
+O:90:10:0:0
+B:TOUCH:EAT_GOLD:5d5
+B:TOUCH:EAT_ITEM:5d5
+B:HIT:BLIND:10d5
+B:HIT:POISON:8d5
+F:UNIQUE | MALE | CAN_SPEAK | SMART |
+F:FORCE_SLEEP | FORCE_MAXHP | MOVE_BODY |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:IM_POIS | BASEANGBAND
+S:1_IN_6 |
+S:TELE_TO | TRAPS
+D:He is a master of disguise, an expert of stealth, a genius at traps, and
+D:moves with blinding speed. Check your pockets!
+
+N:773:Osyluth
+G:U:W
+I:130:40d100:20:75:80
+W:65:2:0:13000
+E:1:1:1:2:1:1
+O:20:40:20:20
+B:HIT:LOSE_CHR:8d8
+B:HIT:LOSE_CHR:8d8
+B:BITE:POISON:10d10
+B:STING:LOSE_STR:9d9
+F:FORCE_SLEEP | FORCE_MAXHP | NONLIVING |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY
+F:EVIL | DEMON | NO_CONF | NO_SLEEP | INVISIBLE | BASEANGBAND |
+F:IM_ACID | IM_ELEC | IM_POIS | IM_COLD | IM_FIRE | NO_CUT
+S:1_IN_6 |
+S:BA_ELEC | BA_COLD | BO_ICEE | SCARE | S_DEMON
+D:It is a demon made almost entirely out of bones. It is humanoid, but with
+D:a large tail similar to that of a giant scorpion, and emits a foul smell
+D:of decay and rot. They are despised even in the hells.
+
+N:774:Dreadlord
+G:G:r
+I:120:30d100:20:150:10
+W:62:2:0:20000
+E:0:0:0:0:0:0
+O:10:10:60:10
+B:HIT:EXP_40:6d6
+B:HIT:EXP_40:6d6
+B:HIT:LOSE_STR:4d6
+B:HIT:LOSE_STR:4d6
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:INVISIBLE | COLD_BLOOD | TAKE_ITEM | PASS_WALL |
+F:EVIL | UNDEAD | CAN_FLY |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | RES_TELE | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:HOLD | DRAIN_MANA | BLIND | S_UNDEAD | CONF |
+S:SCARE | TELE_TO | TPORT | BRAIN_SMASH | ANIM_DEAD
+S:BA_NETH | DARKNESS
+D:It is a massive form of animated death, its colour deeper than black. It
+D:drinks in light, and space around it is twisted and torn by the weight of
+D:its evil. It is unlife and it knows nothing but the stealing of souls and
+D:the stench of death. Flee its hunger!
+
+N:775:Greater kraken
+G:~:G
+I:120:40d100:30:175:80
+W:60:2:10000:25000
+E:3:0:3:0:1:0
+O:10:80:0:10
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+F:FORCE_SLEEP | FORCE_MAXHP | AQUATIC | WILD_TOO | WILD_OCEAN |
+F:ONLY_ITEM | DROP_3D2 | DROP_GOOD | DROP_CORPSE |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | SMART | RES_WATE |
+F:EVIL | IM_ELEC | NO_CONF | NO_SLEEP | IM_POIS | IM_FIRE | BASEANGBAND
+S:1_IN_3 |
+S:BLIND | CONF | SCARE | CAUSE_4 | CAUSE_3 | TELE_TO | TELE_AWAY |
+S:BA_WATE | DARKNESS | BR_DARK | BR_ACID | BR_POIS
+D:An enormously fearsome and powerful inhabitant of the depths. It
+D:resembles a gargantuan octopus and its evil is almost tangible.
+
+N:776:Archlich
+G:L:B
+I:120:45d100:20:120:50
+W:64:2:0:20000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:EXP_80
+B:TOUCH:UN_POWER
+B:TOUCH:LOSE_DEX:8d12
+B:TOUCH:LOSE_DEX:8d12
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | RES_TELE | CAN_FLY |
+F:ONLY_ITEM | DROP_4D2 | DROP_2D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_3 |
+S:BLINK | TELE_TO | BLIND | HOLD | SCARE | CAUSE_4 |
+S:DRAIN_MANA | BRAIN_SMASH | S_HI_UNDEAD | FORGET |
+S:TPORT | HEAL | S_DEMON | BA_NETH | ANIM_DEAD
+D:A lich who has reached its ultimate evolutionary stage: a completely
+D:immaterial state.
+
+N:777:The Cat Lord
+G:f:v
+I:130:48d100:100:200:0
+W:66:3:0:30000
+E:0:1:0:2:1:0
+O:30:60:0:10
+B:CLAW:CONFUSE:12d12
+B:CLAW:LOSE_DEX:2d12
+B:CLAW:BLIND:10d5
+B:BITE:PARALYZE:15d1
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_POIS | NO_CONF | BASEANGBAND
+S:1_IN_3 |
+S:TELE_TO | S_KIN
+D:Master of all things feline, the Cat Lord moves with catlike stealth.
+
+N:778:Jabberwock
+G:H:v
+I:130:32d100:35:125:255
+W:68:3:2300:19000
+E:0:1:0:2:1:0
+O:20:50:20:0
+B:CLAW:HURT:10d10
+B:CLAW:HURT:10d10
+B:BITE:HURT:10d10
+B:BITE:HURT:10d10
+F:ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE |
+F:ONLY_ITEM | DROP_60 | DROP_90 |
+F:BASH_DOOR | CAN_FLY | DROP_CORPSE |
+F:ANIMAL | MORTAL | BASEANGBAND |
+S:1_IN_5 |
+S:CAUSE_4 |
+S:BR_CHAO
+D:'Twas brillig, and the slithy toves / Did gyre and gimble in the wabe: /
+D:All mimsy were the borogoves, / And the mome raths outgrabe. /
+D:"Beware the Jabberwock, my son! / The jaws that bite, the claws that catch!"
+
+N:779:Chaos hound
+G:Z:v
+I:120:60d30:30:100:0
+W:65:2:900:10000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:BITE:HURT:2d12
+B:CLAW:HURT:2d12
+F:ATTR_MULTI | ATTR_ANY | DROP_SKELETON | DROP_CORPSE |
+F:FORCE_SLEEP | FRIENDS | BASH_DOOR |
+F:ANIMAL | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_5 |
+S:BR_CHAO
+D:A constantly changing canine form, this hound rushes towards you as if
+D:expecting mayhem and chaos ahead. It appears to have an almost kamikaze
+D:relish for combat. You suspect all may not be as it seems.
+
+N:780:Vlad Dracula, Prince of Darkness
+G:V:D
+I:130:70d100:20:166:10
+W:76:4:1800:33333
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:BITE:EXP_80:8d8
+B:BITE:EXP_80:8d8
+B:HIT:CONFUSE:8d8
+B:HIT:CONFUSE:8d8
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | CAN_SPEAK | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:RES_TELE | ZANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | DRAIN_MANA | S_HI_UNDEAD |
+S:BRAIN_SMASH | BA_NETH | S_KIN | DARKNESS | BA_DARK
+D:The most feared of all vampires, the Prince of Darkness himself.
+
+N:781:Beholder hive-mother
+G:e:y
+I:120:40d100:30:80:10
+W:67:3:2600:17000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:EXP_80:6d6
+B:GAZE:PARALYZE:5d5
+B:GAZE:INSANITY:5d5
+B:GAZE:UN_POWER:5d5
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | CAN_FLY |
+F:BASH_DOOR | FEMALE | SMART | DROP_CORPSE |
+F:EVIL | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_2 |
+S:BLIND | CONF | FORGET | SCARE | DRAIN_MANA | BRAIN_SMASH |
+S:BA_DARK | BO_MANA | BA_ACID | BA_FIRE | BA_COLD | BO_NETH |
+S:S_KIN
+D:A hive mother of the race of beholders, she can summon her brood to her aid
+D:whenever she wishes.
+
+N:782:Leviathan
+G:~:v
+I:120:50d100:40:180:30
+W:67:3:300000:28000
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:BITE:FIRE:5d12
+B:BITE:FIRE:5d12
+B:CRUSH:HURT:6d15
+B:CRUSH:HURT:6d15
+F:FORCE_SLEEP | FORCE_MAXHP | AQUATIC | WILD_TOO | WILD_OCEAN |
+F:IM_FIRE | IM_ACID | IM_COLD | IM_POIS |
+F:ANIMAL | NO_CONF | NO_SLEEP | NO_FEAR | DROP_CORPSE | BASEANGBAND
+S:1_IN_9
+S:BR_FIRE | BR_ACID | BR_DARK | BR_POIS | BA_WATE |
+S:S_DRAGON | S_HYDRA | HEAL | CONF | DARKNESS
+D:An enormous, terrible sea-monster, the true master of the ocean.
+
+N:783:Great Wyrm of Chaos
+G:D:v
+I:120:60d100:40:170:100
+W:75:2:190000:29000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:5d12
+B:CLAW:HURT:5d12
+B:BITE:HURT:7d14
+B:BITE:HURT:7d14
+F:ATTR_MULTI | ATTR_ANY |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_DISE | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_CHAO | BR_DISE |
+S:S_DRAGON | S_HI_DRAGON
+D:A massive dragon of changing form. As you watch, it appears first fair
+D:and then foul. Its body is twisted by chaotic forces as it strives to
+D:stay real. Its very existence distorts the universe around it.
+
+N:784:Great Wyrm of Law
+G:D:B
+I:120:60d100:40:170:100
+W:75:2:190000:29000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:5d12
+B:CLAW:HURT:5d12
+B:BITE:HURT:7d14
+B:BITE:HURT:7d14
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | CAN_FLY |
+F:EVIL | DRAGON | NO_STUN | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_SOUN | BR_SHAR |
+S:S_DRAGON | S_HI_DRAGON
+D:A massive dragon of powerful intellect. It seeks to dominate the universe
+D:and despises all other life. It sees all who do not obey it as mere
+D:insects to be crushed underfoot.
+
+N:785:Great Wyrm of Balance
+G:D:v
+I:120:70d100:40:170:100
+W:80:2:190000:31000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:6d12
+B:CLAW:HURT:6d12
+B:BITE:HURT:8d14
+B:BITE:HURT:8d14
+F:DRAGON | EVIL | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | RES_DISE |
+F:NO_STUN | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | NO_CUT | ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_SOUN | BR_CHAO | BR_SHAR | BR_DISE |
+S:S_DRAGON | S_HI_DRAGON
+D:A massive dragon, it is thousands of
+D:years old and seeks to maintain the Cosmic Balance. It sees you as an
+D:upstart troublemaker without the wisdom to control your actions.
+
+N:786:Shambler
+G:E:W
+I:130:50d100:40:150:50
+W:67:4:9000:22500
+E:0:0:0:0:0:0
+O:20:20:60:0
+B:CLAW:HURT:3d12
+B:CLAW:HURT:3d12
+B:CRUSH:HURT:8d12
+B:CRUSH:HURT:8d12
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | CAN_SWIM | DROP_CORPSE |
+F:BASH_DOOR | OPEN_DOOR | POWERFUL | MOVE_BODY |
+F:NO_CONF | NO_SLEEP | EVIL | ZANGBAND | NO_CUT
+S:1_IN_3 |
+S:BR_ELEC
+D:This elemental creature is power incarnate; it looks like a huge polar bear
+D:with a huge gaping maw instead of a head.
+
+N:787:Gelugon
+G:U:w
+I:130:45d100:20:100:80
+W:69:3:0:14000
+E:2:1:2:0:0:1
+O:20:60:20:0
+B:CLAW:COLD:6d10
+B:CLAW:COLD:6d10
+B:BITE:COLD:9d9
+B:HIT:PARALYZE:8d8
+F:FORCE_SLEEP | FORCE_MAXHP | BASEANGBAND | NONLIVING |
+F:ONLY_ITEM | DROP_GOOD | DROP_4D2 | CAN_FLY |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | REGENERATE |
+F:EVIL | DEMON | IM_COLD | NO_CONF | NO_SLEEP
+S:1_IN_6
+S:BR_COLD | BR_SHAR | BA_COLD | BO_ICEE | S_HI_DEMON |
+S:SLOW | SCARE | HOLD
+D:This demon from the ice planes is a truly terrifying sight. It has an
+D:extremely large, insect-like body towering a full twelve feet tall, with
+D:great claws on its hands and pincers on its mouth, and its head bulges
+D:with great multi-faceted eyes. Its tail is covered with razor-sharp
+D:spikes.
+
+N:788:Glaaki
+G:~:v
+I:130:52d99:20:150:10
+W:67:2:0:36000
+E:0:0:0:0:1:0
+O:0:0:100:0
+B:STING:HURT:20d1
+B:STING:DISEASE:20d1
+B:CRUSH:HURT:3d20
+F:UNIQUE | CAN_SPEAK | ATTR_MULTI | ELDRITCH_HORROR |
+F:NO_STUN | RES_NEXU | RES_WATE | CAN_SWIM | REGENERATE |
+F:FORCE_SLEEP | FORCE_MAXHP | EVIL | SMART | DEMON |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:NO_STUN |
+F:IM_POIS | IM_COLD | IM_ACID | CTHANGBAND
+S:1_IN_5
+S:BA_WATE | S_HYDRA | S_DRAGON | S_DEMON | SCARE |
+S:BLIND | CONF | CAUSE_4 | BR_POIS
+D:"From an oval body protruded countless thin, pointed spines of
+D:multi-colored metal; at the more rounded end of the oval a
+D:circular, thick-lipped mouth formed the centre of a spongy
+D:face, from which rose three yellow eyes on thin stalks. Around
+D:the underside of the body were many white pyramids, presumably
+D:used for locomotion. The diameter of the body must have been
+D:at least ten feet at its least wide..."
+
+N:789:Trone, the Rebel Thunderlord
+G:B:D
+I:130:80d100:20:120:80
+W:72:2:400000:45000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:12d10
+B:HIT:HURT:12d10
+B:CHARGE:HURT:10d10
+B:CHARGE:HURT:10d10
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE | SPECIAL_GENE |
+F:FORCE_MAXHP | REGENERATE | THUNDERLORD | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | OPEN_DOOR | BASH_DOOR | DROP_CHOSEN |
+F:EVIL | IM_FIRE | IM_COLD | IM_POIS |
+F:MORTAL | HAS_LITE
+S:1_IN_4 |
+S:TELE_TO | SCARE | BR_TIME | BR_FIRE |
+S:BO_MANA | S_THUNDERLORD
+D:As the Thunderlords came from afar to help the elves, Trone and his rebel
+D:wing came to defend Morgoth! He is an evil and powerful Thunderlord.
+
+N:790:Great Wyrm of Many Colours
+G:D:v
+I:120:70d100:40:170:255
+W:80:2:190000:31000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:6d12
+B:CLAW:HURT:6d12
+B:CLAW:HURT:8d14
+B:BITE:HURT:8d14
+F:ATTR_MULTI | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE | AURA_ELEC | RES_TELE |
+F:IM_FIRE | IM_ACID | IM_POIS | IM_COLD | IM_ELEC | AURA_COLD |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BR_POIS | BR_ELEC | BR_ACID | BR_FIRE | BR_COLD |
+S:CONF | SCARE | BLIND
+D:A huge dragon whose scales shimmer in myriad hues.
+
+N:791:Marda, rider of gold Laronth
+G:B:y
+I:130:100d85:100:100:50
+W:75:6:420000:35000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:12d15
+B:HIT:HURT:12d15
+B:HIT:HURT:12d15
+B:HIT:HURT:12d15
+F:UNIQUE | FEMALE | CAN_SPEAK | THUNDERLORD | ONLY_ITEM | RES_TELE |
+F:DROP_CHOSEN | DROP_CORPSE | DROP_SKELETON | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_4D2 | DROP_1D2 | DROP_GOOD | DROP_60 | DROP_90 |
+F:EVIL | IM_POIS | IM_ELEC | SMART | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | HAS_LITE
+S:1_IN_4 |
+S:SCARE | BLIND | TPORT | BLINK | TELE_AWAY | TELE_TO |
+S:BR_FIRE | BA_MANA | S_THUNDERLORD
+D:Former leader among the Thunderlords, she and Trone have fallen under the
+D:control of Morgoth. Laronth, her eagle, can summon Thunderlords to her aid.
+
+N:792:Tselakus, the Dreadlord
+G:G:R
+I:130:65d100:20:150:10
+W:68:2:1000:35000
+E:1:1:1:2:1:1
+O:0:80:20:0
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:LOSE_STR:4d6
+B:HIT:LOSE_STR:4d6
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK | CAN_FLY |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL |
+F:EVIL | UNDEAD | IM_COLD | AURA_COLD |
+F:IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT | NO_STUN
+S:1_IN_3 |
+S:BLIND | HOLD | CONF |
+S:BA_DARK | BA_NETH |
+S:S_WRAITH | S_HI_UNDEAD | S_KIN
+D:This huge affront to existence twists and tears at the fabric of space.
+D:Darkness itself recoils from the touch of Tselakus as he leaves a trail
+D:of death and destruction. Mighty claws rend reality as he
+D:annihilates all in his path to your soul!
+
+N:793:Sky Drake
+G:D:B
+I:130:60d100:40:200:255
+W:77:2:220000:40000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:6d12
+B:CLAW:HURT:6d12
+B:BITE:ELEC:8d14
+B:BITE:ELEC:8d14
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | AURA_COLD | DROP_CORPSE |
+F:IM_ELEC | EVIL | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY |
+F:DRAGON | NO_CONF | NO_SLEEP | RES_TELE | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BR_ELEC | BR_GRAV | BR_LITE |
+S:S_DRAGON | S_HI_DRAGON |
+S:SCARE | BLIND
+D:The mightiest elemental dragon of air, it can destroy you with ease.
+
+N:794:Eilinel the Entrapped
+G:p:D
+I:120:90d10:10:40:1
+W:42:10:0:3500
+E:1:1:1:2:1:1
+O:20:20:50:10
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:TOUCH:UN_POWER:3d3
+B:TOUCH:UN_BONUS:3d3
+F:UNIQUE | FEMALE |
+F:FORCE_MAXHP |
+F:DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_FIRE | NO_CONF | NO_SLEEP | ZANGBAND | NO_CUT | NO_STUN
+S:1_IN_2 |
+S:BLINK | TELE_TO | HEAL | S_MONSTER | BO_ACID | BO_MANA | CAUSE_3
+D:In life, she was the wife of Gorlim. In death, her shade was
+D:entrapped by Morgoth and used to trick her husband into betraying
+D:Barahir. Now she is totally entrapped by Morgoth's power, and uses
+D:her magic to do his bidding.
+
+N:795:Horned Reaper
+G:U:B
+I:130:50d100:40:120:80
+W:72:3:0:18000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:11d11
+B:HIT:HURT:11d11
+B:HIT:HURT:11d11
+B:HIT:HURT:11d11
+F:FORCE_SLEEP | FORCE_MAXHP | REGENERATE | NONLIVING |
+F:ONLY_ITEM | DROP_GOOD | DROP_4D2 | DROP_2D2 | BASEANGBAND |
+F:OPEN_DOOR | BASH_DOOR | KILL_BODY | POWERFUL |
+F:EVIL | DEMON | NO_CONF | NO_SLEEP | CAN_FLY |
+F:IM_FIRE | IM_COLD | IM_POIS | IM_ACID | IM_ELEC
+S:1_IN_5 |
+S:HASTE | SLOW | SCARE | S_HI_DEMON
+D:A giant humanoid demon wielding a massive, heavy and sharp scythe. Feared
+D:by foes and friends alike when it flies into one of its berserk rages, the
+D:Horned Reaper will cut down anything in its path between it and you - even
+D:the minions it has just summoned.
+
+N:796:The Norsa
+G:H:B
+I:130:100d100:20:125:70
+W:70:4:16000:47500
+E:0:1:0:2:1:0
+O:50:0:50:0
+B:CRUSH:ACID:8d12
+B:CRUSH:FIRE:8d12
+B:CRUSH:ELEC:8d12
+B:CRUSH:POISON:10d14
+F:ATTR_MULTI | ELDRITCH_HORROR | DROP_CORPSE |
+F:UNIQUE | CAN_SPEAK | AURA_FIRE | AURA_ELEC | AURA_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | EVIL |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:ZANGBAND
+S:1_IN_2 |
+S:BLIND | CONF | SCARE |
+S:BR_NETH | BR_CHAO | BR_TIME | BR_GRAV | BR_DISI |
+S:S_HI_DRAGON | S_MONSTERS
+D:An elephantine horror with five trunks, each capable of breathing
+D:destructive blasts. It is said that it is better to face the fury
+D:of a thousand raging lions than the Norsa!
+
+N:797:Rhan-Tegoth
+G:S:b
+I:130:90d100:20:125:70
+W:70:4:0:42500
+E:0:1:0:2:1:0
+O:0:50:50:0
+B:CLAW:HURT:8d12
+B:CRUSH:LOSE_STR:5d12
+B:CLAW:HURT:8d12
+B:CRUSH:ACID:5d12
+F:ELDRITCH_HORROR | CAN_SWIM | EVIL |
+F:UNIQUE | CAN_SPEAK | AURA_FIRE | AURA_ELEC |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_ELEC | IM_POIS | NO_SLEEP | RES_WATE | CTHANGBAND
+S:1_IN_5 |
+S:S_DEMON | BR_ACID | S_UNDEAD | S_KIN | CONF | SCARE |
+S:MIND_BLAST | BR_CONF
+D:"An almost globular torso, with six long, sinuous limbs terminating
+D:in crab-like claws. From the upper end a subsidiary globe bulged
+D:forward bubble-like; its triangle of three staring, fishy eyes,
+D:its foot-long and evidently flexible proboscis, and a distended
+D:lateral system analogous to gills, suggested that it was a head."
+
+N:798:Black reaver
+G:L:D
+I:120:50d100:20:170:50
+W:74:3:1900:23000
+E:0:0:0:0:0:0
+O:0:60:40:0
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+B:HIT:LOSE_STR:4d6
+B:HIT:LOSE_STR:4d6
+F:FORCE_SLEEP | FORCE_MAXHP | SMART | CAN_SWIM |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | RES_TELE |
+F:NO_CONF | NO_SLEEP | KILL_WALL | NO_FEAR |
+F:MORTAL | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:TELE_TO | BLIND | HOLD | CONF | CAUSE_3 | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | BA_MANA | BA_NETH | S_UNDEAD
+D:A humanoid form, black as night, advancing steadily and unstoppably, even
+D:the very rock of the dungeon cannot prevent it reaching you.
+
+N:799:Master mindcrafter
+G:p:y
+I:120:80d10:20:60:10
+W:40:2:1700:2000
+E:1:1:1:2:1:1
+O:20:40:40:0
+B:HIT:HURT:4d5
+B:HIT:HURT:4d5
+B:HIT:HURT:4d5
+F:MALE | ONLY_ITEM | FORCE_SLEEP | FORCE_MAXHP | DROP_4D2 |
+F:SMART | BASH_DOOR | TAKE_ITEM | MOVE_BODY |
+F:EVIL | IM_FIRE | IM_ELEC | IM_POIS | BASEANGBAND |
+F:NO_CONF | NO_SLEEP | NO_STUN | NO_FEAR
+S:1_IN_2 |
+S:HEAL | BLIND | HOLD | CONF | SCARE | TPORT | BA_COLD | BA_FIRE |
+S:MIND_BLAST | BRAIN_SMASH | S_MONSTERS | TELE_AWAY | BLINK | BO_NETH
+D:A mindcrafter of the highest order. Powerful and evil, and a dangerous
+D:enemy: a master of mind over matter, of his own mind, and of the minds of
+D:others, who slavishly follow him into battle when he calls them.
+
+N:800:Greater demonic quylthulg
+G:Q:R
+I:120:15d100:20:1:0
+W:71:2:5000:10500
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TELE_TO |
+S:S_HI_DEMON
+D:A massive pulsating mound of flesh, glowing with an inner hellish light.
+
+N:801:Greater draconic quylthulg
+G:Q:G
+I:120:15d100:20:1:0
+W:71:2:5000:10500
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:BLINK | TELE_TO |
+S:S_HI_DRAGON
+D:A massive mound of scaled flesh, throbbing and pulsating with multi-hued
+D:light.
+
+N:802:Greater rotting quylthulg
+G:Q:U
+I:120:15d100:20:1:0
+W:71:2:5000:10500
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND |NO_CUT
+S:1_IN_2 |
+S:BLINK | TELE_TO |
+S:S_HI_UNDEAD
+D:A massive pile of rotting flesh. A disgusting stench fills the air as it
+D:throbs and writhes.
+
+N:803:Null, the Living Void
+G:.:d
+I:110:50d100:30:100:20
+W:72:2:0:32500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:LOSE_ALL:6d16
+B:TOUCH:EXP_80:6d16
+B:TOUCH:UN_POWER:6d16
+F:PASS_WALL | NONLIVING | IM_ACID | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | SMART | EMPTY_MIND |
+F:ELDRITCH_HORROR | IM_COLD | RES_NETH | NO_STUN | UNIQUE | NO_SLEEP | NO_CONF | NO_FEAR |
+F:REGENERATE | ZANGBAND | NO_CUT
+S:1_IN_5
+S:BR_NETH | BRAIN_SMASH | SCARE | S_UNDEAD | S_HI_UNDEAD |
+S:DRAIN_MANA | HEAL | ANIM_DEAD
+D:A black hole in the fabric of reality. It simply is not there.
+
+N:804:Feagwath, the Undead Sorcerer
+G:L:y
+I:130:60d100:20:85:50
+W:77:2:1900:30000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:TOUCH:EXP_80:6d12
+B:TOUCH:UN_POWER:6d12
+B:TOUCH:LOSE_DEX:6d12
+B:TOUCH:LOSE_DEX:6d12
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | SPECIAL_GENE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD |
+F:IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:BLINK | TELE_TO | HOLD | SCARE | CAUSE_4 |
+S:BRAIN_SMASH | TRAPS | BA_MANA |
+S:BO_MANA | BA_NETH |
+S:S_MONSTERS | S_UNDEAD | S_KIN | ANIM_DEAD
+D:A stench of corruption and decay surrounds this sorcerer, who has clearly
+D:risen from the dead to continue his foul plots and schemes.
+
+N:805:Omarax the Eye Tyrant
+G:e:v
+I:130:65d100:30:80:10
+W:73:3:600:25000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:UN_BONUS:6d6
+B:GAZE:UN_POWER:6d6
+B:GAZE:INSANITY:6d6
+B:BITE:EXP_80:8d8
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:SMART | BASH_DOOR |
+F:EVIL | IM_POIS |
+F:BASEANGBAND
+S:1_IN_2 |
+S:BLIND | CONF | FORGET | SCARE | DRAIN_MANA | BRAIN_SMASH |
+S:BA_DARK | BO_MANA | BA_NETH | BA_ACID | BA_FIRE | BA_COLD |
+S:S_KIN
+D:A beholder of great size and age, floating in the air. His gaze seems to
+D:shred your soul and his spells crush your will. He is ancient, his history
+D:steeped in forgotten evils, his atrocities numerous and sickening.
+
+N:806:Tsathoggua, the Sleeper of N'kai
+G:R:D
+I:130:66d100:30:80:100
+W:74:4:0:16500
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:CRUSH:LOSE_ALL:5d6
+B:CRUSH:ACID:5d6
+B:CRUSH:LOSE_ALL:5d6
+B:CRUSH:ACID:5d6
+F:UNIQUE | CAN_SPEAK | RES_TELE | ELDRITCH_HORROR |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_1D2 | DROP_2D2 |
+F:ONLY_ITEM | DROP_GOOD | MOVE_BODY |
+F:SMART | BASH_DOOR |
+F:EVIL | DEMON | IM_POIS | IM_ACID | IM_COLD |
+F:NO_CONF | NO_SLEEP | CTHANGBAND | HAS_LITE | NO_CUT
+S:1_IN_2 |
+S:S_DEMON | S_MONSTERS | S_UNDEAD | HOLD | SCARE | MIND_BLAST |
+S:BR_ACID | BR_NETH | CAUSE_4
+D:"...the formless bulking of a couchant mass. And the mass stirred
+D:a little... and put forth with infinite slothfulness a huge and
+D:toad-shaped head. And the head opened its eyes very slowly, as if
+D:half awakened from slumber, so that they were visible as two slits
+D:of oozing phosphor in the black browless face."
+
+N:807:Greater Balrog
+G:U:v
+I:130:75d100:40:140:40
+W:80:3:0:25000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:FIRE:8d12
+B:HIT:FIRE:8d12
+B:CRUSH:HURT:7d12
+B:TOUCH:UN_POWER
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | NONLIVING |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | SMART |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | KILL_WALL |
+F:RES_NETH | RES_PLAS | REGENERATE | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BLIND | CONF | BRAIN_SMASH |
+S:BR_FIRE | BA_NETH | BA_FIRE | BR_PLAS | BO_PLAS |
+S:S_HI_DEMON | S_UNDEAD | S_DEMON |
+D:Originally of the semi-divine Maiar, this evil spirit swore allegiance
+D:to Morgoth at the beginning of time and is now one of his most terrible
+D:demonic servants. With its flaming whip and sword it seeks to destroy you.
+
+N:808:Ungoliant, the Unlight
+G:S:D
+I:130:130d100:8:160:80
+W:75:1:1500:35000
+E:0:1:0:2:1:0
+O:20:0:80:0
+B:CLAW:POISON:8d6
+B:CLAW:POISON:8d6
+B:BITE:PARALYZE:8d10
+B:STING:LOSE_STR:8d4
+F:UNIQUE | FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:SMART | BASH_DOOR | IM_ACID |
+F:ANIMAL | SPIDER | EVIL | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP
+F:BASEANGBAND
+S:1_IN_3 |
+S:HEAL | BLIND | SLOW | CONF | SCARE | DARKNESS | BA_DARK |
+S:BR_POIS | BR_DARK | S_SPIDER
+D:This enormous, hideous spirit of void is in the form of a spider of
+D:immense proportions. She is surrounded by a cloud of Unlight as she sucks
+D:in all living light into her bloated body, and breathes out the blackest of
+D:darkness. She is always ravenously hungry and would even eat herself to
+D:avoid starvation.
+
+N:809:Atlach-Nacha, the Spider God
+G:S:D
+I:120:110d100:8:160:80
+W:73:1:2000:31000
+E:0:1:0:2:1:0
+O:60:0:40:0
+B:BITE:POISON:3d9
+B:BITE:LOSE_STR:3d9
+B:STING:POISON:2d9
+B:STING:LOSE_STR:2d9
+F:UNIQUE | CAN_SPEAK | ELDRITCH_HORROR | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:SMART | BASH_DOOR | MOVE_BODY | NONLIVING |
+F:ANIMAL | SPIDER | EVIL | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:CTHANGBAND
+S:1_IN_3 |
+S:SCARE | BLIND | CONF | HOLD | BR_POIS |
+S:DARKNESS | BR_DARK | S_KIN | S_HI_DEMON
+D:"...there was a kind of face on the squat ebon body, low down amid
+D:the several-jointed legs. The face peered up with a weird expression
+D:of doubt and inquiry..."
+
+N:810:Y'golonac
+G:H:R
+I:120:130d99:8:160:80
+W:75:1:0:37500
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:LOSE_INT:1d20
+B:BITE:HURT:40d1
+B:TOUCH:LOSE_WIS:1d20
+B:BITE:HURT:40d1
+F:UNIQUE | CAN_SPEAK | ELDRITCH_HORROR | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:SMART | BASH_DOOR | MOVE_BODY | NONLIVING |
+F:EVIL | IM_POIS | CTHANGBAND
+S:1_IN_3 |
+S:SCARE | BLIND | CONF | HOLD | HASTE | DRAIN_MANA | HASTE |
+S:CAUSE_3 | CAUSE_4 | DARKNESS | FORGET | S_DEMON | S_HOUND |
+S:TPORT | TELE_TO
+D:"He saw why the shadow on the frosted pane yesterday had been
+D:headless and he screamed... but before he could scream out his
+D:protest his breath was cut off, as the hands descended on his
+D:face and the wet red mouths opened in their palms."
+
+N:811:Aether hound
+G:Z:v
+I:120:60d40:30:100:0
+W:74:3:1000:10000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:3d12
+B:BITE:HURT:3d12
+B:CLAW:HURT:3d12
+B:CLAW:HURT:3d12
+F:ATTR_MULTI | ATTR_ANY |
+F:FORCE_SLEEP | CAN_FLY |
+F:FRIENDS | RES_NETH | RES_PLAS | RES_NEXU | RES_DISE |
+F:BASH_DOOR | AURA_FIRE | AURA_ELEC | AURA_COLD |
+F:DROP_CORPSE | DROP_SKELETON |
+F:ANIMAL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_5 |
+S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS |
+S:BR_LITE | BR_DARK | BR_SOUN | BR_CONF | BR_CHAO | BR_SHAR |
+S:BR_NETH | BR_DISE | BR_WALL | BR_INER | BR_TIME |
+S:BR_GRAV | BR_PLAS | BR_NEXU
+D:A shifting, swirling form. It seems to be all colours and sizes and
+D:shapes, though the dominant form is that of a huge dog. You feel very
+D:uncertain all of a sudden.
+
+N:812:Pit Fiend
+G:U:o
+I:130:60d100:30:120:75
+W:77:3:0:22000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:CLAW:FIRE:8d10
+B:CLAW:FIRE:8d10
+B:BITE:POISON:7d10
+B:BITE:LOSE_CON:7d10
+F:FORCE_SLEEP | FORCE_MAXHP | REGENERATE | NONLIVING |
+F:ONLY_ITEM | DROP_GOOD | DROP_4D2 | DROP_2D2 | BASEANGBAND |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY | POWERFUL | CAN_FLY |
+F:EVIL | DEMON | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP
+S:1_IN_5 |
+S:S_HI_DEMON | S_HI_DRAGON | BR_FIRE | BR_POIS | BR_CHAO | BA_CHAO |
+S:SCARE | BA_FIRE | CAUSE_4
+D:Appearing as a giant, clawed and winged humanoid with a scaly red body
+D:and massive fangs dripping a foul green liquid, the Pit Fiend is a
+D:dreadful enemy from the lowest depths of the hells. They are often the
+D:commanders of vast demon armies.
+
+N:813:The Serpent of Chaos
+G:J:v
+I:130:66d100:30:180:150
+W:75:2:0:25000
+E:0:0:0:0:1:0
+O:40:40:20:0
+B:CRUSH:POISON:15d10
+B:CRUSH:CONFUSE:15d10
+B:CRUSH:UN_BONUS:10d15
+B:CRUSH:UN_POWER:10d15
+F:UNIQUE | ATTR_MULTI | ATTR_ANY | AURA_FIRE | AURA_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | POWERFUL | REGENERATE |
+F:DROP_2D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | ANIMAL | EVIL | CAN_FLY |
+F:KILL_ITEM | KILL_BODY |
+F:NO_CONF | NO_SLEEP | NO_STUN | NO_FEAR | ZANGBAND |
+F:IM_COLD | IM_FIRE | IM_POIS
+S:1_IN_3 |
+S:BR_CHAO | BR_DISI | BA_CHAO | BR_NETH | BR_MANA |
+S:S_MONSTERS | S_HI_DEMON | S_HI_DRAGON
+D:Writhing coil upon coil, this mighty spawn of Chaos constantly disintegrates
+D:and reforms before your dazzled eyes. It gazes balefully upon you with its
+D:one remaining eye, and seeks to destroy you utterly.
+
+N:814:Yig, Father of Serpents
+G:J:b
+I:130:111d60:100:100:15
+W:76:1:2300:37500
+E:0:0:0:0:1:0
+O:80:0:20:0
+B:CLAW:POISON:8d10
+B:CLAW:POISON:8d10
+B:CRUSH:HURT:8d15
+B:BITE:HURT:100d1
+F:UNIQUE | MALE | CAN_SPEAK | SMART | RES_TELE | ANIMAL |
+F:ESCORT | ESCORTS | CAN_SWIM | ELDRITCH_HORROR |
+F:OPEN_DOOR | BASH_DOOR |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:DROP_4D2 | DROP_1D2 | DROP_GOOD | DROP_60 | DROP_90 | ONLY_ITEM |
+F:EVIL | IM_POIS | IM_ACID | IM_ELEC | REGENERATE | ZANGBAND
+S:1_IN_4 |
+S:BR_POIS | BR_NUKE | BR_ACID | S_HYDRA | S_KIN | S_DEMON |
+D:"The half-human father of serpents... the snake-god of the central
+D:plains tribes -- presumably the primal source of the more
+D:southerly Quetzalcoatl or Kukulcan -- was odd, half-anthropomorphic
+D:devil."
+
+N:815:Unmaker
+G:E:v
+I:120:6d66:60:50:60
+W:77:4:0:10000
+E:0:0:0:0:0:0
+O:20:50:20:0
+B:TOUCH:LOSE_ALL:10d10
+B:TOUCH:UN_BONUS:10d10
+B:TOUCH:UN_POWER:10d10
+F:KILL_WALL | KILL_ITEM | KILL_BODY | NO_FEAR |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ATTR_MULTI | SHAPECHANGER | ATTR_ANY |
+F:DROP_60 | DROP_GOOD | POWERFUL | AURA_ELEC | AURA_FIRE | AURA_COLD |
+F:BASH_DOOR | IM_ELEC | IM_FIRE | RES_NEXU | IM_COLD | ZANGBAND |
+F:IM_POIS | IM_ACID | RES_PLAS | RES_DISE | COLD_BLOOD | NONLIVING | RAND_50
+F:NO_CUT
+S:MULTIPLY |
+S:1_IN_5 |
+S:BR_CHAO
+D:Spawned from the Pits of the Abyss, it is a mass of sentient Chaos,
+D:spreading uncontrollably and destroying everything in its path.
+
+N:816:Cyberdemon
+G:U:u
+I:120:70d101:90:90:90
+W:77:4:15000:30000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d50
+B:HIT:HURT:1d50
+B:HIT:HURT:1d50
+B:HIT:HURT:1d50
+F:RAND_25 | EVIL | DEMON |
+F:DROP_2D2 | DROP_GOOD | ONLY_ITEM | RES_TELE | SUSCEP_ACID |
+F:IM_POIS | IM_FIRE | FORCE_SLEEP | FORCE_MAXHP | NONLIVING
+F:MORTAL | ZANGBAND | HAS_LITE
+S:1_IN_4 |
+S:ROCKET
+D:Reverbrant metal steps announce the arrival of this huge creature,
+D:half demon half machine. It has an unsurpassable firepower.
+
+N:817:Hela, Queen of the Dead
+G:p:G
+I:130:74d100:60:110:10
+W:74:3:8000:45000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:TOUCH:LOSE_ALL:50d1
+B:TOUCH:EXP_80:50d1
+B:TOUCH:UN_BONUS:50d1
+F:UNIQUE | FEMALE | CAN_SPEAK | POWERFUL | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_1D2 | DROP_GREAT | DROP_GOOD |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | CAN_FLY |
+F:EVIL | RES_NETH | IM_COLD | IM_POIS |
+F:IM_FIRE | NO_CONF | NO_SLEEP | ZANGBAND | HAS_LITE
+S:1_IN_3 |
+S:CAUSE_3 | CAUSE_4 | HAND_DOOM | TELE_TO | HOLD |
+S:S_UNDEAD | S_HI_UNDEAD | S_HI_DRAGON | FORGET | SCARE | BLIND |
+S:BA_DARK | BA_NETH | HEAL | ANIM_DEAD
+D:The Norse ruler of Hel is a merciless queen, who ever hunts for more
+D:souls to add to her collection of tortured spirits. She arrives in
+D:an ominous green robe, a certain sign of impending doom, to claim
+D:as her own those who die an ignoble death.
+
+N:818:The Mouth of Sauron
+G:p:v
+I:130:90d100:60:100:10
+W:78:3:1900:38000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+B:TOUCH:UN_POWER
+B:TOUCH:UN_POWER
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_1D2 | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | IM_COLD |
+F:IM_ELEC | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:TELE_TO | HOLD | CAUSE_3 | TRAPS | ANIM_DEAD |
+S:BO_PLAS | BA_DARK | BA_MANA | BA_FIRE | BA_WATE | BA_NETH
+S:S_HI_DEMON | S_HI_UNDEAD
+D:The Mouth of Sauron is a mighty spell caster. So old that even he cannot
+D:remember his own name, his power and evil are undeniable. He believes
+D:unshakeably that he is unbeatable and laughs as he weaves his awesome
+D:spells.
+
+N:819:The Necromancer of Dol Guldur
+G:p:v
+I:130:82d100:60:100:10
+W:75:3:1900:40000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_POWER:6d8
+B:HIT:BLIND:6d8
+B:HIT:CONFUSE:6d8
+F:UNIQUE | MALE | CAN_SPEAK | POWERFUL | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_1D2 | DROP_GREAT | DROP_GOOD | SPECIAL_GENE |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_FIRE | IM_COLD |
+F:IM_ELEC | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_2 |
+S:CAUSE_3 | TELE_TO | BA_FIRE | DRAIN_MANA | HOLD |
+S:TRAPS | BA_WATE | BO_PLAS | BA_NETH |
+S:BA_MANA | BA_DARK | S_HI_UNDEAD | BA_CHAO | HAND_DOOM | ANIM_DEAD
+D:The dark master of the terrible fortress of southern Mirkwood. It is
+D:rumoured that this is in fact none other than Sauron in disguise:
+D:although if this is so, he has yet to reveal his full power - and perhaps
+D:will not do so while his deception lasts, in the hope of keeping it going.
+
+N:820:Lisa, rider of gold Romth
+G:B:y
+I:130:65d100:100:100:15
+W:78:6:420000:35500
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:10d15
+B:HIT:HURT:10d15
+B:HIT:HURT:10d15
+B:HIT:HURT:10d15
+F:UNIQUE | FEMALE | THUNDERLORD | RES_TELE | CAN_FLY | GOOD |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | DROP_SKELETON | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | PET |
+F:DROP_4D2 | DROP_1D2 | DROP_GOOD | DROP_60 | DROP_90 | ONLY_ITEM |
+F:IM_COLD | IM_POIS | IM_ACID | IM_ELEC | REGENERATE |
+F:MORTAL | HAS_LITE
+S:1_IN_4 |
+S:TPORT | TELE_TO | BR_FIRE | S_THUNDERLORD |
+S:TELE_AWAY | HEAL | BA_NETH | BO_NETH | BA_FIRE | BO_FIRE
+D:She came to help you.
+
+N:821:Master quylthulg
+G:Q:B
+I:120:30d100:20:1:0
+W:76:2:7000:15000
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:INVISIBLE | EMPTY_MIND | ANIMAL | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_2 |
+S:S_MONSTERS | S_HI_UNDEAD | S_HI_DRAGON | S_HI_DEMON | S_ANIMALS | BLINK | TELE_TO
+D:A giant seething mass of flesh, overwhelming you with monster after monster.
+
+N:822:Qlzqqlzuup, the Lord of Flesh
+G:Q:v
+I:130:50d100:30:1:0
+W:79:3:10000:20000
+E:0:0:0:0:0:0
+O:20:20:20:20
+F:UNIQUE | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP | NEVER_MOVE | NEVER_BLOW |
+F:ONLY_ITEM | DROP_4D2 |
+F:INVISIBLE | ATTR_MULTI | EMPTY_MIND | ANIMAL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND
+S:1_IN_1 |
+S:S_MONSTERS | S_ANGEL | S_HOUND | S_HYDRA | S_SPIDER | S_ANT | S_ANIMALS |
+S:S_HI_UNDEAD | S_HI_DRAGON | S_HI_DEMON | S_WRAITH | S_UNIQUE | S_KIN
+D:A gigantic seething mass of flesh, Qlzqqlzuup changes colours in front
+D:of your eyes. Pulsating first one colour then the next, it knows only it
+D:must bring help to protect itself.
+
+N:823:Cthugha, the Living Flame
+G:E:R
+I:133:50d100:30:1:20
+W:78:3:0:17500
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:BLIND
+B:TOUCH:FIRE:12d10
+B:TOUCH:FIRE:12d10
+B:TOUCH:FIRE:12d10
+F:UNIQUE | RES_TELE | AURA_FIRE | IM_FIRE | CAN_FLY | RES_PLAS |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | SMART | ELDRITCH_HORROR |
+F:EVIL | KILL_ITEM | KILL_BODY |
+F:NO_CONF | NO_SLEEP | NO_FEAR | CTHANGBAND | HAS_LITE | NO_CUT
+S:1_IN_4 |
+S:BR_FIRE | S_KIN
+D:"But even though we had shielded our eyes, it was impossible not
+D:to see the great amorphous shapes streaming skyward from the
+D:accursed place, nor the equally great being hovering like a cloud
+D:of living fire above the trees."
+
+N:824:Flare, rider of bronze Moonth
+G:B:U
+I:130:70d100:100:100:15
+W:79:5:400000:38500
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:15d15
+B:HIT:HURT:15d15
+B:HIT:HURT:15d15
+B:HIT:HURT:15d15
+F:UNIQUE | MALE | THUNDERLORD | RES_TELE | CAN_FLY | CAN_SPEAK |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_SLEEP | FORCE_MAXHP | PET | GOOD |
+F:DROP_4D2 | DROP_1D2 | DROP_GOOD | DROP_60 | DROP_90 | ONLY_ITEM |
+F:IM_COLD | IM_POIS | IM_ACID | IM_ELEC | IM_FIRE | REGENERATE |
+F:MORTAL | HAS_LITE
+S:1_IN_4 |
+S:SCARE | TPORT | TELE_TO | S_THUNDERLORD |
+S:TELE_LEVEL | HEAL | BR_FIRE | BR_TIME | ROCKET
+D:A leader from afar, he has come with his eagle to help you in
+D:your battle. Having already saved his home, he now wants to save Arda!
+
+N:825:Maeglin, the Traitor of Gondolin
+G:h:D
+I:130:60d100:220:120:20
+W:81:2:1400:35000
+E:1:1:1:2:1:1
+O:30:70:0:0
+B:HIT:HURT:8d8
+B:HIT:HURT:8d8
+B:HIT:HURT:8d8
+B:HIT:HURT:8d8
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | CAN_SPEAK | SMART | EVIL | AI_SPECIAL |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | KILL_WALL | MOVE_BODY | TAKE_ITEM |
+F:IM_FIRE | IM_COLD | IM_POIS | SPECIAL_GENE |
+F:REGENERATE | REFLECTING | DROP_SKELETON | DROP_CORPSE | BASEANGBAND
+F:HAS_LITE
+S:1_IN_6 |
+S:S_MONSTERS | S_WRAITH | S_HI_UNDEAD |
+S:S_HI_DRAGON | S_HI_DEMON | S_UNIQUE | S_ANIMALS
+D:The son of Eol the Dark Elf, Maeglin is every bit as evil as his father
+D:and more. His greed for gold led him to betray the Hidden Kingdom of
+D:Gondolin to Morgoth's forces. He is a mighty warrior himself, and some
+D:of Morgoth's greatest servants answer to his call.
+
+N:826:Cyaegha
+G:e:G
+I:130:64d100:90:120:10
+W:80:3:0:44444
+E:0:0:0:0:0:0
+O:20:50:30:0
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+B:CRUSH:HURT:15d15
+F:UNIQUE | CAN_SPEAK | RES_TELE | ELDRITCH_HORROR | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | DEMON | IM_ACID | IM_ELEC |
+F:IM_COLD | IM_POIS | CTHANGBAND | HAS_LITE
+S:1_IN_3 |
+S:TELE_AWAY | BLIND | HOLD | SCARE | BRAIN_SMASH |
+S:BR_DARK | BA_DARK | BR_NETH | HAND_DOOM |
+S:S_HI_UNDEAD | S_DEMON | S_MONSTERS | S_HYDRA
+D:"...it was a gigantic eye staring down at them. Around the eye,
+D:the sky split; deep clefts opened through which the darkness
+D:began to ooze, a darkness blacker than the night, which crawled
+D:down as a set of slimy tentacles, taking on more form, more
+D:definite shape... something was standing, outlined against
+D:the black sky, something which had tentacles of darkness
+D:and a green-glowing eye."
+
+N:827:Pazuzu, Lord of Air
+G:U:b
+I:140:55d100:40:125:10
+W:82:2:0:30000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:ELEC:12d12
+B:HIT:ELEC:12d12
+B:HIT:ELEC:12d12
+B:HIT:ELEC:12d12
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:EVIL | DEMON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC |
+F:IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+S:1_IN_3 |
+S:MIND_BLAST | BO_ELEC | BO_MANA | BA_ELEC | S_HI_DEMON
+D:A winged humanoid demon from the Planes of Hell, Pazuzu grins inhumanely at you
+D:as he decides your fate.
+
+N:828:Ithaqua the Windwalker
+G:Y:B
+I:140:55d100:40:125:10
+W:82:2:0:32500
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:CLAW:COLD:12d12
+B:CLAW:COLD:12d12
+B:CRUSH:ELEC:12d12
+B:CRUSH:ELEC:12d12
+F:UNIQUE | CAN_SPEAK | ESCORT | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | AURA_COLD |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | AURA_ELEC |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR | NONLIVING |
+F:EVIL | DEMON | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC |
+F:IM_POIS | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_3 |
+S:BO_MANA | SCARE | BR_COLD | S_DEMON | BO_ELEC | BA_ELEC |
+S:MIND_BLAST | CAUSE_4 | BA_CHAO | BA_WATE | S_HI_UNDEAD | S_KIN
+D:The Wendigo, moving so fast that you can see little except two
+D:glowing eyes burning with hatred.
+
+N:829:Greater Hellhound
+G:C:r
+I:120:48d30:25:80:30
+W:78:2:600:600
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:FIRE:5d12
+B:BITE:FIRE:5d12
+B:BITE:FIRE:5d12
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE
+F:RAND_25 | FRIENDS | AURA_FIRE | SUSCEP_COLD |
+F:BASH_DOOR | MOVE_BODY |
+F:ANIMAL | EVIL | IM_FIRE | BASEANGBAND | HAS_LITE |
+S:1_IN_5 | BR_FIRE
+D:It is a giant dog that glows with heat. Flames pour from its nostrils.
+
+N:830:Cantoras, the Skeletal Lord
+G:s:v
+I:140:75d100:20:120:80
+W:84:2:0:45000
+E:1:1:1:2:1:1
+O:50:0:50:0
+B:GAZE:EXP_80:5d5
+B:GAZE:EXP_80:5d5
+B:TOUCH:POISON:5d5
+B:TOUCH:POISON:5d5
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:TELE_TO | SLOW | SCARE | CAUSE_4 | BRAIN_SMASH |
+S:BO_ICEE | BO_MANA | BA_WATE | BA_NETH |
+S:S_HI_UNDEAD | ANIM_DEAD
+D:A legion of evil undead druj animating the skeleton of a once mighty
+D:sorcerer. His power is devastating and his speed unmatched in the
+D:underworld. Flee his wrath!
+
+N:831:Mephistopheles, Lord of Hell
+G:U:r
+I:140:30d222:20:150:50
+W:84:2:0:42500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:GAZE:EXP_80:10d5
+B:GAZE:TERRIFY:10d5
+B:TOUCH:FIRE:4d15
+B:TOUCH:UN_POWER:4d15
+F:MALE | UNIQUE | CAN_SPEAK | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:IM_FIRE | RES_PLAS | RES_NETH | AURA_FIRE |
+F:NO_CONF | NO_SLEEP | NONLIVING | EVIL | DEMON |
+F:ESCORTS | IM_COLD | IM_POIS | ZANGBAND | HAS_LITE
+S:1_IN_3 |
+S:TELE_TO | SCARE | HOLD | BRAIN_SMASH |
+S:S_DEMON | S_HI_UNDEAD | S_UNDEAD |
+S:BR_FIRE | BR_NETH | S_HI_DEMON | HAND_DOOM | ANIM_DEAD
+D:A duke of hell, in the flesh.
+
+N:832:Godzilla
+G:R:v
+I:130:85d100:50:185:20
+W:84:2:900000:35000
+E:0:1:0:2:1:0
+O:100:0:0:0
+B:CLAW:POISON:5d10
+B:CLAW:POISON:5d10
+B:BITE:HURT:20d10
+B:CRUSH:UN_BONUS:5d12
+F:UNIQUE | CAN_SWIM | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP | RES_PLAS | RES_DISE | RES_TELE
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | IM_FIRE | IM_COLD | IM_POIS
+F:MORTAL | JOKEANGBAND
+S:1_IN_2 |
+S:BR_DISE | BR_PLAS | BR_NUKE | BR_POIS | BR_ACID
+D:Godzilla rose from the contaminated sea. This terrible creature could
+D:level whole cities in anger.
+
+N:833:Abhoth, Source of Uncleanness
+G:j:G
+I:130:80d105:50:150:0
+W:85:3:0:40000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:ACID:11d11
+B:TOUCH:DISEASE:11d11
+B:TOUCH:ACID:11d11
+B:TOUCH:POISON:11d11
+F:ONLY_ITEM | DROP_1D2 | CAN_SWIM |
+F:DROP_GOOD | DROP_GREAT |
+F:CAN_SPEAK | EVIL | UNIQUE | NEVER_MOVE | FORCE_MAXHP | FORCE_SLEEP |
+F:IM_ACID | IM_POIS | IM_COLD | IM_ELEC | RES_NETH | RES_WATE | RES_NEXU |
+F:NO_FEAR | NO_CONF | NO_SLEEP | DEMON | SMART | ELDRITCH_HORROR |
+F:COLD_BLOOD | RES_DISE | NO_STUN | CTHANGBAND | NO_CUT
+S:1_IN_6 |
+S:S_MONSTERS | S_DEMON | S_HI_DRAGON | S_HI_UNDEAD | HEAL |
+S:TELE_AWAY | TPORT | CAUSE_4 | BRAIN_SMASH | DRAIN_MANA |
+S:BR_NUKE | BR_POIS | BR_CHAO | BR_NEXU | ANIM_DEAD
+D:"...in the pool [there was] a grayish, horrid mass that nearly choked
+D:it from rim to rim. Here, it seemed, was the ultimate source of all
+D:miscreation and abomination. For the gray mass quobbed and quivered,
+D:and swelled perpetually; and from it, in manifold fission, were
+D:spawned the anatomies that crept away on every side through the
+D:grotto."
+
+N:834:Ymir, the Ice Giant
+G:P:w
+I:130:86d110:50:160:20
+W:71:2:0:32500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:COLD:9d11
+B:HIT:HURT:9d11
+B:HIT:COLD:9d11
+B:HIT:HURT:9d11
+F:UNIQUE | CAN_SPEAK | SUSCEP_FIRE |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | RES_NETH | RES_WATE | MALE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | EVIL | ESCORT | GIANT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | TAKE_ITEM | RES_DISE |
+F:EVIL | IM_COLD | IM_POIS | SUSCEP_FIRE |
+F:COLD_BLOOD | AURA_COLD | DROP_CORPSE | ZANGBAND | HAS_LITE | NO_CUT
+S:1_IN_5 |
+S:BR_COLD | BO_ICEE | DARKNESS | TELE_TO | S_KIN | S_HI_UNDEAD |
+S:TELE_AWAY | HAND_DOOM
+D:Ymir is one of the oldest beings in existence. He looks like a giant
+D:humanoid made of ice.
+
+N:835:Loki, the Trickster
+G:P:D
+I:130:110d100:50:160:20
+W:85:2:0:75000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:BLIND:6d11
+B:HIT:UN_BONUS:6d11
+B:HIT:UN_POWER:6d11
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | RES_NETH | RES_PLAS |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_GREAT | EVIL | AURA_FIRE |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | TAKE_ITEM | CAN_SPEAK |
+F:EVIL | IM_FIRE | NO_CONF | NO_SLEEP | IM_POIS | SUSCEP_COLD | GIANT |
+F:REGENERATE | ZANGBAND | HAS_LITE
+S:1_IN_5 |
+S:SHRIEK | HASTE | HEAL | DRAIN_MANA | TPORT | TELE_TO | TELE_AWAY |
+S:TELE_LEVEL | FORGET | S_HI_DEMON | HAND_DOOM | S_HI_UNDEAD |
+S:S_UNIQUE | S_HI_DRAGON | BA_DARK | BA_MANA | ANIM_DEAD
+D:Loki, the god of mischief, is a nasty person. He will use every
+D:dirty trick in the book, and then some. In the end, his half-giant
+D:heritage is bound to show, as he will defect to the side of the
+D:giants and fight against the other gods of Asgard.
+
+N:836:Star-spawn of Cthulhu
+G:U:G
+I:130:75d100:90:90:90
+W:86:2:0:44000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:CLAW:POISON:1d30
+B:CLAW:ACID:1d30
+B:TOUCH:UN_POWER:1d10
+B:CRUSH:UN_BONUS:2d33
+F:RAND_25 | KILL_ITEM | OPEN_DOOR | BASH_DOOR | RES_NETH | ELDRITCH_HORROR |
+F:DROP_1D2 | DROP_2D2 | DROP_90 | ONLY_ITEM | FORCE_SLEEP | FORCE_MAXHP |
+F:EVIL | DEMON | IM_POIS | IM_COLD | IM_ACID | IM_ELEC | RES_TELE | NONLIVING |
+F:POWERFUL | IM_FIRE | CAN_SWIM | CTHANGBAND
+S:1_IN_3
+S:SCARE | CONF | S_DEMON | S_UNDEAD | DRAIN_MANA | BR_ACID |
+S:BR_FIRE | TPORT | S_MONSTERS | BRAIN_SMASH | BR_NETH |
+S:HEAL | MIND_BLAST | BA_NUKE | ANIM_DEAD
+D:The last remnants of sanity threaten to leave your brain as you
+D:behold this titanic bat-winged, octopus-headed unholy abomination.
+D:"They all lay in stone houses in their great city of R'lyeh,
+D:preserved by the spells of mighty Cthulhu for a glorious
+D:resurrection when the stars and the earth might once more
+D:be ready..."
+
+N:837:Surtur, the Fire Giant
+G:P:r
+I:130:86d110:50:160:20
+W:71:2:0:32500
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:FIRE:9d11
+B:HIT:HURT:9d11
+B:HIT:FIRE:9d11
+B:HIT:HURT:9d11
+F:UNIQUE | SUSCEP_COLD |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | RES_NETH | RES_PLAS | MALE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | EVIL | AURA_FIRE |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | TAKE_ITEM | CAN_SPEAK |
+F:EVIL | IM_FIRE | NO_CONF | NO_SLEEP | IM_POIS | SUSCEP_COLD | GIANT |
+F:ZANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BR_FIRE | BR_PLAS | BLIND | TELE_TO | S_KIN |
+S:HAND_DOOM | TELE_AWAY | S_HI_DEMON
+D:Surtur is another of the most ancient of all creatures. He is a demonic
+D:giant of fire, who is destined to set the nine worlds afire with his
+D:accursed sword of doom on the day of Ragnarok.
+
+N:838:The Tarrasque
+G:R:v
+I:130:130d100:50:185:20
+W:84:2:50000:35000
+E:1:1:1:2:1:1
+O:20:50:25:5
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:TOUCH:UN_POWER:10d10
+B:TOUCH:UN_POWER:10d10
+F:UNIQUE | ATTR_MULTI |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | IM_FIRE | IM_COLD | NO_SLEEP | BASEANGBAND
+S:1_IN_2 |
+S:BR_FIRE | BR_COLD | BR_DISE
+D:The Tarrasque is a massive reptile of legend, rumoured to be unkillable
+D:and immune to magic. Fear its anger, for its devastation is unmatched!
+
+N:839:Lungorthin, the Balrog of White Fire
+G:U:v
+I:130:80d100:20:125:80
+W:88:2:14000:37000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:FIRE:8d12
+B:HIT:FIRE:8d12
+B:CRUSH:HURT:8d12
+B:TOUCH:UN_POWER
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DEMON | IM_FIRE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_FIRE | BR_PLAS |
+S:S_HI_DEMON | S_UNDEAD
+D:A massive form cloaked in flame. Lungorthin stares balefully at you with
+D:eyes that smoulder red. The dungeon floor where he stands is scorched by
+D:the heat of his body.
+
+N:840:Draugluin, Sire of All Werewolves
+G:C:v
+I:130:80d100:80:90:90
+W:83:2:1000:40000
+E:0:1:0:2:1:0
+O:0:0:100:0
+B:CLAW:HURT:6d8
+B:CLAW:HURT:6d8
+B:BITE:POISON:6d6
+B:BITE:POISON:6d6
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS | DROP_CORPSE |
+F:RAND_25 |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:ANIMAL | EVIL | IM_POIS | BASEANGBAND
+S:1_IN_3 |
+S:SCARE | S_MONSTERS | S_HOUND
+D:Draugluin provides Sauron with a fearsome personal guard. He is an
+D:enormous wolf inhabited by a human spirit. He is chief of all his kind.
+
+N:841:Shuma-Gorath
+G:e:G
+I:130:85d100:50:150:0
+W:88:3:0:47000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:CRUSH:HURT:12d12
+B:CRUSH:HURT:12d12
+B:GAZE:LOSE_INT:2d12
+B:GAZE:LOSE_WIS:2d12
+F:ONLY_ITEM | DROP_1D2 | CAN_SWIM |
+F:DROP_GOOD | DROP_GREAT |
+F:CAN_SPEAK | EVIL | UNIQUE | NEVER_MOVE | FORCE_MAXHP | FORCE_SLEEP |
+F:IM_ACID | IM_POIS | IM_COLD | IM_ELEC | RES_NETH | RES_WATE | RES_NEXU |
+F:NO_FEAR | NO_CONF | NO_SLEEP | DEMON | SMART | ELDRITCH_HORROR |
+F:COLD_BLOOD | RES_DISE | CTHANGBAND | NO_CUT
+S:1_IN_2 |
+S:FORGET | HEAL | HAND_DOOM | BA_MANA | TPORT | TELE_AWAY |
+S:TELE_LEVEL | CONF | BLIND | BRAIN_SMASH | DRAIN_MANA |
+S:S_MONSTERS | S_KIN | S_HI_DEMON | S_HOUND | S_HYDRA |
+S:S_UNIQUE | S_HI_UNDEAD | S_HI_DRAGON | ANIM_DEAD
+D:Shuma-Gorath is one of the immortal lords of chaos. The true form of
+D:this blasphemous horror is a huge, all-seeing eye surrounded by tentacles.
+
+N:842:Tulzscha, the Green Flame
+G:E:G
+I:130:100d100:90:100:50
+W:89:4:0:45000
+E:0:0:0:0:0:0
+O:0:100:0:0
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+F:RAND_25 | EVIL | DEMON | AURA_FIRE | AURA_COLD | ELDRITCH_HORROR |
+F:DROP_2D2 | DROP_4D2 | DROP_GOOD | ONLY_ITEM | RES_TELE |
+F:IM_POIS | IM_FIRE | FORCE_SLEEP | FORCE_MAXHP | NONLIVING |
+F:IM_COLD | IM_ACID | IM_ELEC | RES_NEXU | RES_NETH | RES_PLAS |
+F:REGENERATE | UNIQUE | CTHANGBAND | HAS_LITE | NO_CUT | NO_SLEEP | NO_FEAR
+S:1_IN_3 |
+S:BR_NEXU | BR_NETH | BR_COLD | BR_FIRE
+D:"A belching column of sick greenish flame... spouting volcanically
+D:from the depths profound and inconceivable, casting no shadows as
+D:healthy flame should, and coating the nitrous stone with a nasty,
+D:venomous verdigris. For all that seething combustion no warmth
+D:lay, but only the clamminess of death and corruption."
+
+N:843:Oremorj, the Cyberdemon Lord
+G:U:u
+I:130:90d100:90:90:90
+W:89:4:0:50000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+B:HIT:HURT:2d50
+F:RAND_25 | EVIL | DEMON | SUSCEP_ACID |
+F:DROP_2D2 | DROP_GOOD | ONLY_ITEM | RES_TELE | DROP_GREAT | UNIQUE | NO_SLEEP |
+F:IM_POIS | IM_FIRE | FORCE_SLEEP | FORCE_MAXHP | NONLIVING | JOKEANGBAND |
+F:HAS_LITE
+S:1_IN_3 |
+S:ROCKET | S_HI_DEMON
+D:The mightiest of Cyberdemons, their lord and ruler.
+
+N:844:Vecna, the Emperor Lich
+G:L:v
+I:130:80d100:100:100:0
+W:92:3:0:45000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:EXP_80:7d12
+B:HIT:LOSE_DEX:7d12
+B:HIT:UN_POWER:7d12
+B:HIT:UN_POWER:7d12
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_SLEEP | BASEANGBAND
+F:NO_CUT
+S:1_IN_3 |
+S:TPORT | BLIND | SCARE | CAUSE_4 | BRAIN_SMASH |
+S:BA_MANA | BO_MANA | BA_FIRE | BA_NETH |
+S:S_MONSTERS | S_HI_DEMON | S_HI_UNDEAD | S_KIN | HAND_DOOM | ANIM_DEAD
+D:The greatest of all undead sorcerers, even the gods once feared him. This
+D:ancient shadow of death wilts every living thing it passes.
+
+N:845:Yog-Sothoth, the All-in-One
+G:j:v
+I:130:66d99:100:100:20
+W:90:3:0:45000
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:TOUCH:HURT:40d5
+B:TOUCH:LOSE_CON:16d2
+B:TOUCH:LOSE_CON:16d2
+F:UNIQUE | CAN_SPEAK | SMART | ELDRITCH_HORROR | RES_TELE
+F:PASS_WALL | FORCE_SLEEP | FORCE_MAXHP | AURA_ELEC | AURA_FIRE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | ATTR_MULTI | ATTR_ANY | AURA_COLD |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | NONLIVING | CAN_FLY |
+F:EVIL | IM_ACID | IM_COLD | IM_ELEC | IM_POIS | IM_FIRE | NO_CONF | NO_SLEEP
+F:CTHANGBAND | HAS_LITE | NO_CUT
+S:1_IN_3 |
+S:BO_MANA | BRAIN_SMASH | BA_MANA | S_MONSTERS | S_HI_DEMON |
+S:BA_CHAO | S_DEMON | S_HI_UNDEAD | S_HOUND | BR_MANA | BR_DISI
+D:"Great globes of light massing towards the opening... the breaking
+D:apart of the nearest globes, and the protoplasmic flesh that
+D:flowed blackly outward to join together and form that eldritch,
+D:hideous horror from outer space... whose mask was a congeries
+D:of iridescent globes... who froths as primal slime in nuclear
+D:chaos forever beyond the nethermost outposts of space and time!"
+
+N:846:Fenris Wolf
+G:C:D
+I:130:70d100:80:90:40
+W:90:2:0:35000
+E:0:1:0:2:1:0
+O:20:0:80:0
+B:BITE:HURT:20d6
+B:CLAW:HURT:8d8
+B:CLAW:HURT:8d8
+B:BITE:HURT:20d6
+F:UNIQUE | CAN_SPEAK | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:RAND_25 |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | KILL_BODY | NO_SLEEP
+F:ANIMAL | EVIL | IM_POIS | IM_FIRE | IM_COLD | ZANGBAND
+S:1_IN_8 |
+S:BR_DARK | BR_POIS | BR_COLD
+D:The immensely huge wolf who would swallow the sun to satisfy its
+D:hunger - and leave the gods for dessert.
+
+N:847:Great Wyrm of Power
+G:D:v
+I:130:111d111:40:160:70
+W:85:4:220000:47500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:8d12
+B:CLAW:HURT:8d12
+B:BITE:HURT:10d14
+B:BITE:HURT:10d14
+F:FORCE_SLEEP | FORCE_MAXHP | MOVE_BODY | AURA_FIRE | REFLECTING | AURA_ELEC |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | AURA_COLD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | RES_NETH | RES_DISE |
+F:DRAGON | GOOD | RES_TELE | DROP_CORPSE |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:RES_NEXU | RES_PLAS | CAN_FLY | BASEANGBAND | HAS_LITE | NO_CUT
+F:ATTR_MULTI
+S:1_IN_4 |
+S:S_HI_DRAGON | S_DRAGON | S_KIN |
+S:BR_ACID | BR_ELEC | BR_FIRE |
+S:BR_COLD | BR_POIS | BR_NETH | BR_LITE | BR_DARK |
+S:BR_CONF | BR_SOUN | BR_CHAO | BR_DISE | BR_NEXU |
+S:BR_TIME | BR_INER | BR_GRAV | BR_SHAR | BR_PLAS |
+S:BR_WALL | BR_MANA | BR_DISI
+D:The mightiest of all dragonkind, a great wyrm of power is seldom
+D:encountered in our world. It can crush stars with its might.
+
+N:848:Shub-Niggurath, Black Goat of the Woods
+G:U:D
+I:130:65d99:100:100:20
+W:91:3:0:47500
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:CRUSH:LOSE_WIS:20d5
+B:CRUSH:LOSE_INT:20d5
+B:BITE:LOSE_STR:10d2
+B:BITE:LOSE_CON:10d2
+F:UNIQUE | CAN_SPEAK | FEMALE | ELDRITCH_HORROR | AURA_ELEC | RES_TELE |
+F:ATTR_MULTI | FORCE_SLEEP | FORCE_MAXHP | PASS_WALL | ATTR_ANY |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_90 | NONLIVING | CAN_FLY |
+F:SMART | OPEN_DOOR | BASH_DOOR | REGENERATE | DEMON | AURA_COLD |
+F:EVIL | IM_ACID | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_3 |
+S:BO_MANA | BRAIN_SMASH | BA_DARK | S_MONSTERS |
+S:CAUSE_4 | HEAL | BR_CHAO | BR_CONF | BR_POIS | BR_NUKE |
+S:BA_CHAO | S_HI_DEMON | S_HI_UNDEAD | S_UNIQUE | ANIM_DEAD
+D:This horrendous outer god looks like a writhing cloudy mass filled
+D:with mouths and tentacles.
+
+N:849:Nodens, Lord of the Great Abyss
+G:P:W
+I:130:75d99:100:100:20
+W:81:3:0:48000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:2d66
+B:HIT:HURT:2d66
+B:HIT:HURT:2d66
+B:HIT:HURT:2d66
+F:UNIQUE | CAN_SPEAK | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | PASS_WALL |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_90 | DROP_GREAT |
+F:SMART | OPEN_DOOR | BASH_DOOR | REGENERATE | CAN_FLY |
+F:GOOD | IM_ACID | IM_COLD | IM_POIS | IM_FIRE | IM_ELEC |
+F:RES_NEXU | RES_NETH | RES_WATE | ZANGBAND | HAS_LITE
+S:1_IN_1 |
+S:TELE_AWAY | TELE_TO | TELE_LEVEL | TPORT |
+S:BO_MANA | BA_MANA | S_MONSTERS | HEAL |
+S:CAUSE_4 | HASTE | HAND_DOOM |
+S:S_ANGEL | S_UNIQUE
+D:The hoary Lord of the Great Abyss seems a wizened man,
+D:but appearances can be deceiving.
+
+N:850:Carcharoth, the Jaws of Thirst
+G:C:D
+I:130:90d100:80:110:10
+W:94:1:3400:40000
+E:0:1:0:2:1:0
+O:30:10:60:0
+B:CLAW:POISON:9d12
+B:CLAW:POISON:9d12
+B:BITE:FIRE:9d12
+B:BITE:FIRE:9d12
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | AURA_FIRE |
+F:SMART | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:ANIMAL | EVIL | IM_FIRE | IM_POIS | BASEANGBAND
+S:1_IN_3 |
+S:BR_DARK | BR_POIS | BR_FIRE | BR_NETH | S_HOUND
+D:The first guard of Angband, Carcharoth, also known as 'The Red Maw', is
+D:the largest wolf to ever walk the earth. He is highly intelligent and a
+D:deadly opponent in combat.
+
+N:851:Nyarlathotep, the Crawling Chaos
+G:U:r
+I:130:90d99:100:100:20
+W:93:3:0:49000
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:CRUSH:LOSE_CON:30d4
+B:CRUSH:LOSE_STR:30d4
+B:GAZE:LOSE_INT:1d50
+B:GAZE:LOSE_WIS:1d50
+F:UNIQUE | CAN_SPEAK | ELDRITCH_HORROR | RES_TELE | NONLIVING |
+F:FORCE_SLEEP | FORCE_MAXHP | PASS_WALL | DEMON | RES_NEXU |
+F:SHAPECHANGER | ATTR_MULTI | ATTR_ANY | MALE | AURA_ELEC |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_GREAT | DROP_90 |
+F:SMART | OPEN_DOOR | BASH_DOOR | REGENERATE | AURA_COLD |
+F:EVIL | IM_ACID | IM_POIS | IM_FIRE | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_3 |
+S:TELE_AWAY | TELE_TO | TELE_LEVEL | TPORT | BR_NEXU | BA_CHAO |
+S:BA_MANA | BA_FIRE | S_MONSTERS | BRAIN_SMASH | MIND_BLAST |
+S:CAUSE_4 | HASTE | S_HI_UNDEAD | S_HI_DRAGON | ANIM_DEAD |
+S:S_ANGEL | HEAL | S_SPIDER | S_HOUND | S_HI_DEMON | HAND_DOOM
+D:Nyarlathothep is the messenger, the heart and the soul of the outer gods.
+D:He is a shapechanger capable of assuming thousands of nightmarish forms.
+D:One of them looks like this: "A tall, slim figure with the young face of
+D:an antique pharaoh, gay with prismatic robes and crowned with a
+D:pshent that glowed with inherent light... the fascination of a
+D:dark god or fallen archangel, and around whose eyes there lurked
+D:the languid sparkle of capricious humor."
+
+N:852:Azathoth, the Daemon Sultan
+G:E:B
+I:130:99d99:100:150:100
+W:93:3:0:50000
+E:0:0:0:0:0:0
+O:0:50:0:50
+B:CRUSH:HURT:35d5
+B:CRAWL:ACID:35d5
+B:CRUSH:HURT:35d5
+B:CRAWL:ACID:35d5
+F:UNIQUE | ELDRITCH_HORROR | RES_TELE
+F:FORCE_SLEEP | FORCE_MAXHP | KILL_WALL | DEMON | AURA_FIRE | AURA_ELEC |
+F:ATTR_MULTI | ESCORTS | ESCORT | POWERFUL | ATTR_ANY | NONLIVING |
+F:KILL_ITEM | KILL_WALL | CAN_SWIM | AURA_COLD
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_90 | RES_DISE |
+F:STUPID | OPEN_DOOR | BASH_DOOR | REGENERATE | EMPTY_MIND |
+F:EVIL | IM_ACID | IM_POIS | IM_FIRE | NO_CONF | NO_SLEEP | NO_STUN | CTHANGBAND
+F:HAS_LITE | NO_CUT
+S:1_IN_5 |
+S:S_DEMON | BR_CHAO | BR_DISE | BR_MANA | BA_WATE | BR_DISI
+D:"That last amorphous blight of nethermost confusion which
+D:blasphemes and bubbles at the centre of all infinity --
+D:the boundless daemon sultan Azathoth, whose name no lips
+D:dare speak aloud, and who gnaws hungrily in inconceivable,
+D:unlighted chambers beyond time amidst the muffled, maddening
+D:beating of vile drums and the thin monotonous whine of
+D:accursed flutes."
+
+N:853:Huan, Wolfhound of the Valar
+G:C:W
+I:130:90d100:50:160:10
+W:93:2:3400:40000
+E:0:1:0:2:1:0
+O:30:10:60:0
+B:CLAW:COLD:9d12
+B:CLAW:COLD:9d12
+B:BITE:COLD:9d12
+B:BITE:COLD:9d12
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | AURA_COLD |
+F:SMART | OPEN_DOOR | BASH_DOOR | KILL_BODY |
+F:ANIMAL | GOOD |
+F:IM_COLD | IM_ACID | IM_ELEC | BASEANGBAND
+S:1_IN_5 |
+S:BR_COLD | BR_SHAR | BR_SOUN | BR_LITE |
+D:The wolfhound of the Valar, Huan has served many masters in his time, from
+D:Celegorm son of Feanor to Beren son of Barahir: but now he runs wild and
+D:acknowledges no master save himself, as he hunts alone for his nemesis -
+D:Carcharoth, the terrible wolf of Angband.
+
+N:854:Jormungand the Midgard Serpent
+G:J:v
+I:130:120d120:100:200:0
+W:94:1:3000:45000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CRUSH:HURT:20d10
+B:CRUSH:HURT:20d10
+B:BITE:HURT:5d50
+F:UNIQUE | FORCE_MAXHP | FORCE_SLEEP | WILD_TOO | WILD_OCEAN | WILD_SWAMP |
+F:MOVE_BODY | KILL_WALL | IM_FIRE | IM_POIS | IM_ACID | IM_COLD | COLD_BLOOD |
+F:RES_WATE | RES_PLAS | RES_NEXU | NO_STUN | REGENERATE | DROP_CORPSE |
+F:NO_CONF | NO_SLEEP | ZANGBAND
+S:1_IN_3
+S:BA_WATE | BR_MANA | BR_NETH | BR_POIS | BR_DISI | S_KIN
+D:The Midgard Serpent is so huge that its body surrounds the world of
+D:mortal men. It could grind even the gods into lifeless pulp.
+
+N:855:The Destroyer
+G:g:v
+I:130:140d140:100:200:0
+W:94:1:0:45000
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:30d9
+B:HIT:HURT:30d9
+B:HIT:HURT:30d9
+B:HIT:HURT:30d9
+F:UNIQUE | NONLIVING | NO_FEAR | FORCE_MAXHP | FORCE_SLEEP | REFLECTING |
+F:MOVE_BODY | KILL_WALL | IM_FIRE | IM_ELEC | IM_POIS | IM_ACID | IM_COLD |
+F:RES_NETH | RES_WATE | RES_PLAS | RES_NEXU | NO_STUN | REGENERATE |
+F:NO_CONF | NO_SLEEP | NO_STUN | CAN_FLY |
+F:EMPTY_MIND | COLD_BLOOD | BASH_DOOR | ZANGBAND | NO_CUT
+S:1_IN_3 |
+S:BR_DISI | BO_MANA
+D:The Destroyer was built by the Norse deities to be their ultimate weapon
+D:against the space gods who had arrived to judge the world. Unfortunately,
+D:the Destroyer has gone berserk and is destroying everything it sees. The
+D:mystical Destroyer is nearly indestructible, and it is said that when it
+D:uses its power of complete disintegration, the day of Ragnarok is near.
+
+N:856:Gothmog, the High Captain of Balrogs
+G:U:v
+I:130:120d100:100:140:0
+W:95:1:17000:43000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:FIRE:9d12
+B:HIT:FIRE:9d12
+B:CRUSH:HURT:8d12
+B:TOUCH:UN_POWER
+F:UNIQUE | MALE | CAN_SPEAK | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ESCORT | ESCORTS | KILL_WALL | AURA_FIRE | NONLIVING |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DEMON |
+F:IM_FIRE | IM_ELEC | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BLIND | CONF | SCARE |
+S:BR_FIRE | S_KIN |
+S:S_HI_DEMON | S_HI_UNDEAD
+D:Gothmog is the Chief Balrog in Morgoth's personal guard. He is renowned
+D:for slaying three High Kings of the Noldor Elves, and he has never been
+D:defeated in combat. With his whip of flame and awesome fiery breath he
+D:saved his master from Ungoliant's rage.
+
+N:857:Great Cthulhu
+G:U:g
+I:130:100d100:100:140:100
+W:97:2:4000:62500
+E:0:0:0:0:0:0
+O:0:50:50:0
+B:CRUSH:HURT:50d4
+B:CLAW:UN_POWER:15d2
+B:CLAW:UN_BONUS:15d2
+B:TOUCH:DISEASE:100d1
+F:UNIQUE | CAN_SPEAK | DEMON | ELDRITCH_HORROR | NONLIVING |
+F:FORCE_SLEEP | FORCE_MAXHP | ESCORT | ESCORTS | SMART | RES_PLAS | RES_NEXU |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | REGENERATE | RES_NETH |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_1D2 | DROP_GOOD |
+F:DROP_GREAT | RES_DISE | RES_TELE | CAN_SWIM |
+F:EVIL | DEMON | IM_FIRE | IM_POIS | IM_ELEC | IM_ACID | NO_CONF | NO_SLEEP |
+F:CTHANGBAND
+S:1_IN_3
+S:TPORT | SCARE | BLIND | MIND_BLAST | BRAIN_SMASH | DRAIN_MANA |
+S:BR_POIS | BR_ACID | BR_FIRE | CONF | DARKNESS | FORGET | S_HI_UNDEAD |
+S:BR_NUKE | BR_NETH | BR_CHAO | BR_DISE | BR_DARK | BR_PLAS | BR_CONF
+S:BR_NEXU | S_HI_DEMON | BR_DISI | HAND_DOOM |
+S:ANIM_DEAD
+D:This creature is death incarnate. "A monster of vaguely anthropoid
+D:outline, but with an octopus-like head whose face was a mass of
+D:feelers, a scaly, rubbery-looking body, prodigious claws on hind
+D:fore feet, and long, narrow wings behind. This thing... was a
+D:somewhat bloated corpulence... It lumbered slobberingly into sight
+D:and gropingly squeezed its gelatinous green immensity through the
+D:black doorway... A mountain shambled or walked."
+
+N:858:Sarko, rider of gold Foronth
+G:B:y
+I:145:99d111:100:165:0
+W:97:6:420000:65000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:12d12
+B:HIT:HURT:12d12
+B:HIT:FIRE:12d12
+B:HIT:FIRE:12d12
+F:UNIQUE | FEMALE | DROP_CORPSE |
+F:ATTR_MULTI | THUNDERLORD | RES_TELE | PET | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | GOOD |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:DROP_CHOSEN | REFLECTING | AURA_FIRE | AURA_ELEC |
+F:SMART | OPEN_DOOR | BASH_DOOR | MOVE_BODY | REGENERATE |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | POWERFUL |
+F:MORTAL | HAS_LITE
+S:1_IN_4 |
+S:TPORT | TELE_TO | BR_FIRE | BR_TIME | S_THUNDERLORD | TELE_AWAY |
+D:Foronth is the first Eagle queen, and Sarko the first to discover
+D:the Firebirds, the ancestor of the Thunderlord eagles. She will try to
+D:help you!
+
+N:859:The Unicorn of Order
+G:q:w
+I:130:66d100:30:170:150
+W:75:2:0:65000
+E:0:1:0:2:1:0
+O:25:50:25:0
+B:KICK:UN_POWER:13d13
+B:KICK:UN_POWER:12d12
+B:BUTT:UN_BONUS:11d11
+B:BITE:TIME:10d10
+F:UNIQUE | FORCE_SLEEP | FORCE_MAXHP | REFLECTING | AURA_COLD |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | KILL_BODY | POWERFUL | BASH_DOOR | REGENERATE | CAN_FLY |
+F:ANIMAL | GOOD | IM_ACID | IM_COLD | IM_ELEC |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NO_STUN | RES_TELE | ZANGBAND
+S:1_IN_3 |
+S:BR_SOUN | BR_LITE | BR_TIME | BR_SHAR | BR_MANA |
+S:S_MONSTERS | HEAL | S_ANGEL
+D:The Unicorn of Order, who once stole an eye from the great Serpent
+D:of Chaos, regards you as a mortal meddling in the affairs of immortals,
+D:and thus is attempting to eliminate you.
+
+N:860:Sauron, the Sorcerer
+G:p:v
+I:130:100d225:100:160:0
+W:99:1:2300:50000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:UN_BONUS:10d12
+B:HIT:UN_BONUS:10d12
+B:HIT:UN_POWER:8d12
+B:HIT:UN_POWER:8d12
+F:UNIQUE | MALE | CAN_SPEAK | REFLECTING |
+F:FORCE_SLEEP | FORCE_MAXHP | FORCE_DEPTH |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:SMART | OPEN_DOOR | BASH_DOOR | MOVE_BODY | REGENERATE | NO_SLEEP | NO_FEAR | NO_CONF |
+F:EVIL | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:RES_TELE | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:TPORT | TELE_LEVEL | BLIND | CONF | SCARE | CAUSE_4 |
+S:BRAIN_SMASH | FORGET | BO_ICEE | BO_MANA | BO_PLAS |
+S:BA_MANA | BA_FIRE | BA_WATE | BA_NETH | BA_DARK | BA_CHAO |
+S:S_MONSTERS | S_HI_DEMON | S_HI_UNDEAD | S_HI_DRAGON | S_WRAITH | S_UNIQUE |
+S:HAND_DOOM | ANIM_DEAD
+D:Mighty in spells and enchantments, he created the One Ring.
+D:His eyes glow with power and with his gaze he seeks to destroy
+D:your soul. He has many servants, and rarely fights without them.
+
+N:861:DarkGod, the Mighty Coder of Hell
+G:P:B
+I:155:180d100:111:175:0
+W:127:1:1600:66666
+E:2:0:2:6:1:1
+O:20:20:20:20
+B:GAZE:EAT_GOLD:20d10
+B:HIT:SHATTER:20d10
+B:BITE:LOSE_ALL:10d12
+B:TOUCH:UN_POWER
+F:UNIQUE | CAN_SPEAK | ATTR_MULTI | ATTR_ANY | MALE |
+F:FORCE_MAXHP | WEIRD_MIND | DROP_CORPSE | DROP_SKELETON |
+F:REFLECTING | AURA_FIRE | AURA_ELEC | AURA_COLD |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:DROP_GOOD | DROP_GREAT | RES_NETH | INVISIBLE |
+F:SMART | KILL_WALL | KILL_BODY | POWERFUL | RES_TELE |
+F:REGENERATE | CAN_FLY | CAN_SWIM | DG_CURSE | WYRM_PROTECT |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF |NO_FEAR | NO_STUN | RES_TELE
+F:MORTAL | JOKEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:S_THUNDERLORD | BR_CHAO | BA_CHAO | ROCKET | BRAIN_SMASH | S_HI_DEMON |
+S:BR_NETH | HASTE | BR_MANA | S_HI_UNDEAD | S_HI_DRAGON | TRAPS | FORGET |
+S:BR_NUKE | BR_POIS | BR_DISI | HAND_DOOM | HEAL | TPORT | TELE_TO |
+S:S_BUG | S_RNG |
+D:He is the master of coding; none can match his skill. He created the
+D:Variant Maintainer, the RNGs, and the software bugs. Bull Gates is
+D:nothing next to him. Do not think that since he loves the novels of
+D:Tolkien he is to be ignored! He wishes to translate your soul into
+D:assembler, the one hitch being that he must kill you first. If you
+D:encounter him, pray your deity holds you in good stead.
+
+N:862:Morgoth, Lord of Darkness
+G:P:D
+I:140:200d150:100:150:0
+W:100:1:200000:60000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:SHATTER:24d10
+B:HIT:SHATTER:24d10
+B:HIT:LOSE_ALL:10d12
+B:TOUCH:UN_POWER
+F:UNIQUE | CAN_SPEAK | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | FORCE_DEPTH |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:DROP_GOOD | DROP_GREAT | DROP_CHOSEN | RES_NETH |
+F:SMART | KILL_WALL | MOVE_BODY | AURA_COLD |
+F:REGENERATE | POWERFUL |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BRAIN_SMASH |
+S:BA_MANA | BO_MANA | BA_NETH | BA_CHAO | BA_DARK | ANIM_DEAD |
+S:S_MONSTERS | S_UNIQUE | S_HI_DEMON | S_HI_UNDEAD | S_HI_DRAGON |
+S:ROCKET | BR_NETH | BR_DISI | HAND_DOOM | S_WRAITH
+D:He was the most powerful of the Valar, the equal of Manwe.
+D:He is the Master of the Pits of Angband. His figure is like a black
+D:mountain crowned with Lightning. He rages with everlasting anger, his
+D:body scarred by Fingolfin's eight mighty wounds. He can never rest from
+D:his pain, but seeks forever to dominate all that is light and good in the
+D:world. He is the origin of man's fear of darkness and created many foul
+D:creatures with his evil powers. Orcs, Dragons, and Trolls are his most
+D:foul corruptions, causing much pain and suffering in the world to please
+D:him. His disgusting visage, twisted with evil, is crowned with iron, the
+D:two remaining Silmarils forever burning him. Grond, the mighty Hammer of
+D:the Underworld, cries defiance as he strides towards you to crush you to a
+D:pulp!
+
+N:863:Human Warrior
+G:p:u
+I:110:9d8:10:10:0
+W:0:20:1700:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:5d8
+F:MALE |
+F:PET | FRIENDS | WILD_ONLY |
+F:ONLY_GOLD | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR
+F:DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:They are used as the main assault force of the human kings.
+D:They will help you in some quests.
+
+N:864:Elven archer
+G:h:W
+I:110:9d7:10:10:0
+W:0:20:1400:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:2d8
+F:MALE |
+F:PET | FRIENDS | WILD_ONLY |
+F:ONLY_GOLD | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR
+F:DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_1 |
+S:ARROW_2 | ARROW_1 | ARROW_2 | ARROW_1 |
+D:They are used as the main assault force of the elven kings.
+D:They will help you in some quests.
+
+N:865:Dwarven warrior
+G:h:U
+I:110:8d8:10:10:0
+W:0:20:1500:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:6d8
+F:MALE |
+F:PET | FRIENDS | WILD_ONLY |
+F:ONLY_GOLD | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR
+F:DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:They are used as the main assault force of the dwarven kings.
+D:They will help you in some quests.
+
+N:866:Elite uruk
+G:o:w
+I:110:10d10:20:50:0
+W:20:1:2000:70
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:8d5
+B:HIT:HURT:8d5
+F:MALE |
+F:FORCE_MAXHP | FRIENDS | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | ORC | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:ARROW_2
+D:It is a cunning orc of power, taller than a man, and stronger. It fears
+D:little.
+
+N:867:The Philosophy Teacher
+G:p:r
+I:120:50d100:30:50:0
+W:56:1:1900:20000
+E:1:1:1:2:1:1
+O:20:20:20:20
+B:GAZE:CONFUSE:15d5
+B:GAZE:PARALYZE:15d5
+B:TOUCH:INSANITY:5d5
+B:TOUCH:EXP_40:5d5
+F:FEMALE | UNIQUE | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD | DROP_GREAT |
+F:CAN_SPEAK | WEIRD_MIND | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | NO_CONF | NO_SLEEP | JOKEANGBAND | HAS_LITE
+S:1_IN_3
+S:BR_CONF | BR_SOUN | BR_CHAO | BR_TIME |
+S:HOLD | SCARE | SLOW | CONF | FORGET
+D:She is a feared teacher, mistress of chaos and strangely minded.
+D:She wants to take your mind. Fear her and flee while you can.
+
+N:868:The Variant Maintainer
+G:p:B
+I:160:10d10:30:50:0
+W:10:1:1700:3000
+E:1:1:1:2:1:1
+O:20:20:20:20
+B:INSULT:*
+B:HIT:INSANITY:1d8
+B:HIT:LOSE_WIS:1d8
+F:ONLY_ITEM | DROP_2D2 | UNIQUE | CAN_FLY |
+F:DROP_GOOD | WEIRD_MIND | CAN_SPEAK |
+F:RAND_50 | RAND_25 | INVISIBLE | EVIL |
+F:MORTAL | JOKEANGBAND | HAS_LITE
+S:1_IN_2
+S:S_BUG | S_RNG | BR_CONF
+D:A deranged programmer, scattering bizarre ideas and bad code everywhere.
+
+N:869:Random Number Generator
+G:I:b
+I:130:1d6:10:50:0
+W:10:1:0:10
+E:0:0:0:0:0:0
+O:20:20:20:20
+B:INSULT:*
+B:MOAN:*
+B:HIT:CONFUSE:1d6
+F:DROP_1D2 | EVIL |
+F:EMPTY_MIND | RAND_50 | RAND_25 | JOKEANGBAND
+S:MULTIPLY
+D:A feared creation of the Variant Maintainer, it tries to generate Morgoth
+D:in the town and the One Ring in the magic shop.
+
+N:870:Rocket mine
+G:.:R
+I:110:20d8:20:3:10
+W:50:10:0:100
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:POISON:10d5
+F:NEVER_MOVE | IM_POIS | NONLIVING | IM_ACID | STUPID |
+F:FORCE_MAXHP | UNDEAD | EVIL | JOKEANGBAND | NO_CUT
+S:1_IN_4
+S:ROCKET | ARROW_4
+D:It was left here to be used against intruders.
+
+N:871:Bouncing mine
+G:.:B
+I:120:20d15:50:5:10
+W:70:10:0:200
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:SPORE:POISON:10d5
+F:NEVER_MOVE | IM_POIS | NONLIVING | IM_ACID | STUPID |
+F:FORCE_MAXHP | UNDEAD | EVIL | JOKEANGBAND | NO_CUT
+S:1_IN_3
+S:ROCKET | ARROW_4 | BLINK | BR_POIS | BR_CHAO | BR_NEXU
+D:It was left here to be used against intruders.
+
+N:872:Durin's Bane
+G:U:v
+I:130:30d100:20:100:80
+W:50:3:13000:30000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:FIRE:6d12
+B:HIT:FIRE:6d12
+B:CRUSH:HURT:5d12
+B:TOUCH:UN_POWER
+F:UNIQUE | MALE | SPECIAL_GENE | DROP_RANDART
+F:FORCE_SLEEP | FORCE_MAXHP | KILL_WALL |
+F:ESCORT | ESCORTS | DROP_CORPSE | NONLIVING |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_CHOSEN |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DEMON | IM_FIRE |
+F:NO_CONF | BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:CONF | SCARE |
+S:BR_FIRE |
+S:S_UNDEAD | S_DEMON
+D:A huge Balrog surrounded by raging pillars of fire, this is indeed a
+D:terrible opponent. Wielding a great whip of fire and a blazing sword, his
+D:fury blisters your skin and melts your flesh!
+
+N:873:The Icky Queen
+G:i:v
+I:120:40d10:20:50:10
+W:20:5:3000:400
+E:0:0:0:0:0:0
+O:40:30:10:10
+B:CRAWL:POISON:3d4
+B:CRAWL:EAT_FOOD:3d4
+B:TOUCH:ACID:3d5
+B:HIT:HURT:3d5
+F:UNIQUE | FEMALE |
+F:FORCE_MAXHP | CAN_SPEAK | SMART | ESCORT | ESCORTS |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD | DROP_CORPSE |
+F:WEIRD_MIND | TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:DRAIN_MANA | BLIND | CONF | SCARE | S_KIN
+D:And you thought her offspring were icky!
+
+N:874:Rot jelly
+G:j:u
+I:120:20d8:2:30:99
+W:5:1:2000:15
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:EAT_FOOD:2d3
+B:TOUCH:LOSE_CHR:2d3
+F:NEVER_MOVE |
+F:STUPID | EMPTY_MIND | CAN_SWIM |
+F:HURT_LITE | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:It is a large pile of rotting flesh, whose touch spoils your food. The terrible
+D:smell it exudes is also very hard to get rid of...
+
+N:875:Death
+G:G:D
+I:130:50d100:200:120:5
+W:80:6:3000:25000
+E:1:1:1:2:1:1
+O:10:80:20:0
+B:HIT:HURT:20d5
+B:HIT:HURT:20d5
+B:TOUCH:EXP_80:20d5
+B:TOUCH:EXP_80:20d5
+F:UNIQUE |
+F:FORCE_MAXHP | DROP_CORPSE |
+F:DROP_GOOD | DROP_GREAT | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | PASS_WALL | NO_SLEEP | NO_STUN | NO_CONF |
+F:EVIL | UNDEAD | JOKEANGBAND | NO_CUT
+D:"And I looked, and behold a pale horse: and his name that sat on him was
+D:Death, and Hell followed with him. And power was given unto them over the
+D:fourth part of the earth, to kill with sword, and with hunger, and with
+D:death, and with the beasts of the earth."
+
+N:876:Famine
+G:G:U
+I:130:50d100:200:120:5
+W:77:6:3000:25000
+E:1:1:1:2:1:1
+O:10:80:20:0
+B:TOUCH:EAT_FOOD:20d4
+B:GAZE:UN_BONUS:20d4
+B:WAIL:LOSE_INT:10d5
+B:WAIL:LOSE_DEX:10d5
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | DROP_CORPSE |
+F:DROP_GOOD | DROP_GREAT | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | PASS_WALL | NO_STUN | NO_SLEEP | NO_CONF |
+F:EVIL | UNDEAD | JOKEANGBAND | NO_CUT
+D:One of the horsemen of the apocalypse, before you lies Famine. A
+D:figure so gaunt that the shape of the bones beneath are revealed,
+D:Famine rides a pale grey mare that appears near death.
+
+N:877:Pestilence
+G:G:G
+I:130:50d100:200:120:5
+W:74:6:3000:25000
+E:1:1:1:2:1:1
+O:10:80:20:0
+B:TOUCH:POISON:20d4
+B:TOUCH:POISON:20d4
+B:TOUCH:DISEASE:16d5
+B:TOUCH:DISEASE:16d5
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | DROP_CORPSE |
+F:DROP_GOOD | DROP_GREAT | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | PASS_WALL | NO_SLEEP | NO_STUN | NO_CONF |
+F:EVIL | UNDEAD | JOKEANGBAND | NO_CUT
+S:1_IN_2 |
+S:S_ANT | S_SPIDER
+D:One of the horsemen of the apocalypse, before you lies Pestilence.
+D:At first, it looks like a human, but then you notice ants, worms, and
+D:worse peeking out of the flesh. Pestilence rides a purple horse with
+D:skin that bulges and occasionally gives hints of the vermin within.
+
+N:878:War
+G:G:r
+I:130:50d100:200:120:5
+W:71:6:3000:25000
+E:1:1:1:2:1:1
+O:10:80:20:0
+B:TOUCH:PARALYZE:20d4
+B:WAIL:CONFUSE:20d4
+B:GAZE:BLIND:20d4
+B:WAIL:TERRIFY:20d4
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | DROP_CORPSE |
+F:DROP_GOOD | DROP_GREAT | DROP_60 | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | PASS_WALL | NO_SLEEP | NO_STUN | NO_CONF | NO_FEAR |
+F:EVIL | UNDEAD | JOKEANGBAND | NO_CUT
+S:1_IN_2 |
+S:S_MONSTER
+D:One of the horsemen of the apocalypse, before you lies War. A healthy and
+D:hearty warrior, War grins a little too wide at you as he prepares for
+D:combat. War rides a large well-groomed yellow horse that leaves behind
+D:puddles of blood where its hooves touch the ground.
+
+##### Some aquatic monsters. #####
+
+N:879:Pike
+G:~:s
+I:125:2d7:80:35:0
+W:2:1:100:7
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d3
+F:ANIMAL | AQUATIC | STUPID | DROP_CORPSE | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:It's a common fresh-water predatory fish.
+
+N:880:Electric eel
+G:J:B
+I:110:15d15:15:40:70
+W:20:2:500:145
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:TOUCH:ELEC:2d7
+B:TOUCH:ELEC:2d7
+B:TOUCH:ELEC:2d7
+F:AQUATIC | ANIMAL | RAND_25 | IM_ELEC | RES_WATE |
+F:WILD_TOO | WILD_OCEAN | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:This serpentine creature can create a deadly voltage. Better watch out!
+
+N:881:Giant crayfish
+G:~:R
+I:90:4d10:6:100:20
+W:4:1:1200:10
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d4
+B:CLAW:HURT:3d4
+F:ANIMAL | AQUATIC | STUPID | WEIRD_MIND | DROP_CORPSE | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A man-sized, heavily armoured fresh-water relative of the lobster.
+
+N:882:Mermaid
+G:h:G
+I:110:5d8:50:30:0
+W:4:1:1600:20
+E:1:1:1:2:1:0
+O:20:50:10:5
+B:TOUCH:LOSE_WIS
+B:TOUCH:INSANITY:2d3
+B:TOUCH:CONFUSE
+F:FEMALE | RAND_25 | DROP_60 | SMART | AQUATIC | NO_CONF | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+D:A green-skinned humanoid with a fishtail. Beware - there are rumours
+D:of adventures losing their minds under the fearsome
+D:charms of mermaids.
+
+N:883:Box jellyfish
+G:~:B
+I:110:10d10:20:30:75
+W:10:2:3000:25
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:PARALYZE:1d6
+B:TOUCH:PARALYZE:1d6
+F:ANIMAL | AQUATIC | IM_POIS | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A strange water creature, whose touch can be deadly.
+
+N:884:Giant piranha
+G:~:g
+I:120:6d8:30:20:10
+W:10:2:300:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:5d1
+B:BITE:HURT:5d1
+F:NO_SLEEP | WILD_TOO | COLD_BLOOD |
+F:FRIENDS | AQUATIC | ANIMAL |
+F:MORTAL | BASEANGBAND
+D:A very large and bloodthirsty fish.
+
+N:885:Piranha
+G:~:g
+I:120:2d6:20:8:5
+W:3:1:200:8
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:1d6
+F:FRIENDS | AQUATIC | ANIMAL | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:Bloodthirsty fish who can smell your blood from a great distance.
+
+N:886:Bullywug
+G:h:g
+I:110:6d10:20:15:0
+W:7:1:700:25
+E:1:1:1:2:1:1
+O:30:40:10:10
+B:HIT:HURT:2d4
+B:HIT:HURT:2d4
+F:MALE | ONLY_ITEM | DROP_1D2 | SMART | AQUATIC | DROP_CORPSE | FRIENDS |
+F:MORTAL | BASEANGBAND | HAS_LITE | COLD_BLOOD
+D:A vaguely humanoid creature, it looks like a cross between a hobbit and a
+D:frog.
+
+N:887:Bullywug warrior
+G:h:g
+I:110:8d10:20:15:0
+W:8:1:750:35
+E:1:1:1:2:1:1
+O:15:60:10:10
+B:HIT:HURT:2d5
+B:HIT:HURT:2d5
+F:MALE | ONLY_ITEM | DROP_1D2 | SMART | AQUATIC | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE | COLD_BLOOD
+D:A member of the frog-people clan. He is wielding a long, sharp shark tooth.
+
+N:888:Bullywug shaman
+G:h:g
+I:110:6d10:20:15:0
+W:8:1:800:35
+E:1:1:1:2:1:1
+O:25:10:50:10
+B:HIT:HURT:1d6
+B:HIT:HURT:1d6
+F:MALE | ONLY_ITEM | DROP_1D2 | SMART | AQUATIC | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE | COLD_BLOOD
+S:1_IN_5 |
+S:BLIND | CONF | DARKNESS | BO_COLD | HEAL | MISSILE | CAUSE_2
+D:A leader of a clan of frog-people, he is cloaked in a cloak made of
+D:shark skin.
+
+N:889:Whale
+G:~:G
+I:110:22d22:15:50:70
+W:20:4:9000:175
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CRUSH:HURT:1d20
+B:CRUSH:HURT:1d20
+F:RAND_25 | FORCE_MAXHP | RES_WATE |
+F:ANIMAL | AQUATIC | WILD_TOO |
+F:MORTAL | BASEANGBAND
+D:Although it looks like a fish and lives in water, it is in fact
+D:a mammal. And it is huge!
+
+N:890:Sand mite
+G:~:B
+I:110:3d10:5:25:80
+W:10:2:500:25
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:POISON:3d6
+B:BITE:POISON:3d6
+F:AQUATIC | ANIMAL | IM_POIS | FRIENDS |
+F:CHAR_CLEAR | ATTR_CLEAR | DROP_CORPSE | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+S:MULTIPLY
+D:A relative of crabs and shrimp, this is a tiny creature that inhabits sandy
+D:bottoms. It has a pair of dangerous-looking claws.
+
+N:891:Octopus
+G:~:g
+I:105:60d6:60:60:60
+W:15:2:1200:60
+E:3:0:3:6:1:0
+O:0:0:0:0
+B:SPIT:BLIND:1d3
+B:CRUSH:HURT:6d3
+B:CRUSH:HURT:6d3
+B:CRUSH:HURT:6d3
+F:RAND_25 | IM_COLD | RES_WATE | AQUATIC | ANIMAL | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:It doesn't move very fast, but when it does - watch out!
+
+N:892:Giant octopus
+G:~:g
+I:115:100d6:10:35:5
+W:30:1:1800:180
+E:3:0:3:6:1:0
+O:0:0:0:0
+B:SPIT:BLIND:1d4
+B:CRUSH:HURT:8d4
+B:CRUSH:HURT:8d4
+B:CRUSH:PARALYZE:8d4
+F:AQUATIC | SMART | IM_POIS | ANIMAL | NO_CONF | NO_SLEEP |
+F:NO_FEAR | SMART | WEIRD_MIND | DROP_CORPSE | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+S:1_IN_15 |
+S:DARKNESS | SLOW | CONF | SCARE
+D:A cunning and dangerous undersea opponent.
+
+N:893:Eye of the deep
+G:e:b
+I:120:16d100:10:20:40
+W:40:3:1600:6000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:EXP_20:2d6
+B:GAZE:UN_POWER:2d6
+B:GAZE:INSANITY:2d6
+B:BITE:HURT:6d6
+F:EVIL | IM_POIS | NO_CONF | NO_SLEEP | AQUATIC |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY | RES_TELE |
+F:SMART | DROP_CORPSE | BASEANGBAND
+S:1_IN_2 |
+S:BLIND | SLOW | CONF | SCARE | DRAIN_MANA | MIND_BLAST |
+S:FORGET | DARKNESS | BO_WATE | BO_ICEE | BO_MANA | BO_COLD
+D:A beholder that inhabits the depths of the sea, sleeping and pondering
+D:alien thoughts for centuries. Occasionally, it will float to the
+D:surface to wreck the lives of surface dwellers.
+
+N:894:Murk dweller
+G:S:s
+I:110:200d5:70:30:0
+W:27:3:3000:800
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:5d10
+B:CLAW:PARALYZE
+B:STING:INSANITY:5d10
+B:STING:UN_BONUS
+F:AQUATIC | ANIMAL | WEIRD_MIND | FORCE_MAXHP | HURT_LITE |
+F:EVIL | SMART | NO_CONF | NO_SLEEP | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_5 |
+S:BA_POIS | BR_DARK | BLIND | BR_POIS | SLOW | CONF | MIND_BLAST |
+S:BRAIN_SMASH | DARKNESS
+D:A gigantic aquatic monster, somewhat resembling a cross between a
+D:lobster and a spider. It is coated in poisonous slime and noxious
+D:parasites. This foul creature hides in the silt of the deep ocean floor,
+D:waiting to trap unsuspecting prey.
+
+N:895:Drowned soul
+G:G:B
+I:110:9d8:5:33:50
+W:11:1:0:30
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:BLIND:3d3
+B:TOUCH:POISON:2d4
+B:WAIL:TERRIFY
+F:COLD_BLOOD | EMPTY_MIND | EVIL | AQUATIC | UNDEAD | IM_COLD | INVISIBLE |
+F:IM_POIS | NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_8
+S:BLIND | HOLD | CONF
+D:A ghastly victim of drowning, forever doomed to wander the ocean waters
+D:looking for revenge.
+
+N:896:Tiger shark
+G:~:g
+I:120:10d5:100:32:0
+W:12:1:3000:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:4d4
+F:RAND_25 | AQUATIC | ANIMAL | STUPID | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A small species of shark, although the teeth are still as deadly.
+
+N:897:Hammerhead shark
+G:~:g
+I:115:16d10:20:59:20
+W:16:3:1500:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:3d4
+B:BUTT:HURT:3d4
+B:BITE:HURT:3d4
+F:ANIMAL | AQUATIC | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A hungry shark with a strange head.
+
+N:898:Great white shark
+G:~:w
+I:120:100d6:20:70:20
+W:24:2:5000:250
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:4d6
+B:BITE:HURT:4d6
+B:BITE:HURT:4d6
+F:FORCE_SLEEP | AQUATIC | COLD_BLOOD |
+F:ANIMAL MORTAL | BASEANGBAND
+D:A very large carnivorous fish.
+
+N:899:Aquatic golem
+G:g:b
+I:100:25d10:35:75:10
+W:19:1:0:100
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:3d10
+B:HIT:HURT:3d10
+F:COLD_BLOOD | EMPTY_MIND | AQUATIC |
+F:IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+D:An ingenious gnomish invention -- a golem designed for underwater
+D:usage.
+
+N:900:Aquatic kobold
+G:k:B
+I:110:13d9:10:30:15
+W:5:1:1500:35
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d10
+F:DROP_90 | EVIL | IM_POIS | AQUATIC | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:Yes, your favourite denizen of evil also comes in an aquatic variety.
+
+N:901:White shark
+G:~:W
+I:120:30d10:20:50:10
+W:18:1:3000:100
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:3d5
+B:BITE:HURT:3d5
+B:BITE:HURT:3d5
+F:ANIMAL | AQUATIC | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:A fast-moving hunter of the depths. When this creature moves,
+D:everybody in the water is in danger!
+
+N:902:Scrag
+G:T:B
+I:110:40d10:20:50:50
+W:35:1:5000:440
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+B:HIT:HURT:3d2
+B:HIT:HURT:3d2
+F:MALE |
+F:FORCE_MAXHP | AQUATIC | REGENERATE |
+F:FRIENDS | DROP_60 | WILD_TOO | WILD_OCEAN |
+F:OPEN_DOOR | BASH_DOOR | RES_WATE |
+F:EVIL | TROLL | IM_COLD | IM_POIS | HURT_LITE | BASEANGBAND
+D:A troll of the sea, he reeks of brine.
+
+N:903:Jaws
+G:~:w
+I:130:100d20:200:80:70
+W:40:2:7000:2000
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:11d2
+B:BITE:HURT:22d1
+B:BITE:HURT:11d2
+B:BITE:HURT:22d1
+F:FORCE_MAXHP | UNIQUE | MOVE_BODY |
+F:WILD_OCEAN | WILD_TOO | COLD_BLOOD |
+F:BASH_DOOR | IM_COLD | IM_ELEC | IM_POIS | ANIMAL | AQUATIC |
+F:NO_CONF | NO_SLEEP |
+F:MORTAL | ZANGBAND
+D:The biggest white shark who has ever lived, it is hunting for you now!
+
+N:904:Aquatic elf
+G:h:b
+I:110:14d8:30:30:6
+W:9:1:1400:25
+E:1:1:1:2:1:0
+O:20:20:50:10
+B:HIT:HURT:3d4
+F:MALE | AQUATIC | SMART | DROP_CORPSE |
+F:FRIENDS | DROP_60 | ZANGBAND | HAS_LITE
+D:A sleek form vaguely shaped like a dolphin, except with a humanoid
+D:head and arms. The facial features are decidedly elven.
+
+N:905:Aquatic elven warrior
+G:h:b
+I:110:20d8:40:35:5
+W:10:1:1500:35
+E:1:1:1:2:1:0
+O:20:60:10:10
+B:HIT:HURT:4d4
+B:HIT:HURT:4d4
+F:MALE | AQUATIC | FRIENDS | SMART | DROP_60 | DROP_CORPSE | ZANGBAND |
+F:HAS_LITE
+D:An aquatic elf trained in all forms of combat.
+
+N:906:Aquatic elven shaman
+G:h:b
+I:110:12d8:30:30:6
+W:10:1:1400:35
+E:1:1:1:2:1:0
+O:10:10:70:10
+B:TOUCH:UN_BONUS
+F:MALE | AQUATIC | SMART | DROP_2D2 | DROP_CORPSE | ZANGBAND |
+F:HAS_LITE
+S:1_IN_12 |
+S:BO_MANA | BO_COLD | S_MONSTERS
+D:A wizened aquatic elf skilled in the magical arts. You can see an
+D:iridescent film coating the water around him.
+
+N:907:Stargazer
+G:~:y
+I:100:15d9:10:25:30
+W:21:1:800:60
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:GAZE:PARALYZE
+F:AQUATIC | ANIMAL | SMART | RAND_25 | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:S_MONSTER
+D:A giant fish shaped like a flounder. There are two enormous eyes
+D:occupying half of the creature's body.
+
+N:908:Elder stargazer
+G:~:y
+I:100:20d10:15:25:30
+W:29:1:1000:75
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:GAZE:PARALYZE
+B:GAZE:CONFUSE
+F:AQUATIC | ANIMAL | SMART | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:S_MONSTERS
+D:A stargazer a bit larger than average, covered with barnacles.
+
+N:909:Flounder
+G:~:s
+I:100:10d5:5:25:30
+W:13:1:700:55
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:2d6
+F:AQUATIC | ANIMAL | RAND_25 | INVISIBLE | ATTR_CLEAR | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A flattened fish which is able to change body colouring for
+D:camouflage.
+
+N:910:Giant turtle
+G:R:G
+I:110:5d8:10:14:30
+W:7:1:3000:30
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:HURT:2d2
+B:BITE:HURT:2d2
+F:ANIMAL | AQUATIC | DROP_CORPSE |
+F:MORTAL | BASEANGBAND
+D:A giant turtle with flippers, adapted for life in the ocean.
+
+N:911:Baby dragon turtle
+G:d:W
+I:110:10d10:20:60:50
+W:9:1:20000:35
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:1d3
+B:CLAW:HURT:1d3
+B:BITE:HURT:1d5
+F:FORCE_MAXHP | FORCE_SLEEP | DROP_CORPSE |
+F:ONLY_GOLD | DROP_60 | DROP_1D2 |
+F:EVIL | DRAGON | AQUATIC | BASEANGBAND | ATTR_MULTI
+S:1_IN_12 |
+S:BR_SOUN
+D:A newly-hatched dragon turtle. It still hasn't grown a proper shell.
+
+N:912:Young dragon turtle
+G:d:W
+I:110:30d10:20:70:70
+W:31:1:80000:700
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d6
+B:CLAW:HURT:2d6
+B:BITE:HURT:2d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:DROP_3D2 |
+F:EVIL | DRAGON | AQUATIC | BASEANGBAND | ATTR_MULTI
+S:1_IN_11 |
+S:SCARE |
+S:BR_SOUN
+D:A dragon-like creature inhabiting lightless reaches of ocean caves. It has
+D:a long neck with a tiny head, and four massive flippers. It has a soft and
+D:flexible shell.
+
+N:913:Mature dragon turtle
+G:d:W
+I:110:50d10:20:80:70
+W:38:1:170000:1500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:2d10
+B:CLAW:HURT:2d10
+B:BITE:HURT:4d10
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:DROP_4D2 |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | AQUATIC | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_9 |
+S:SCARE |
+S:BR_SOUN
+D:A large dragon turtle, covered with a tough white shell.
+
+N:914:Ancient dragon turtle
+G:D:W
+I:120:70d10:20:90:80
+W:41:1:220000:2500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d8
+B:CLAW:HURT:4d8
+B:BITE:HURT:7d8
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE |
+F:DROP_1D2 | DROP_4D2 |
+F:SMART | AQUATIC | POWERFUL | MOVE_BODY |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_9 |
+S:BLIND | CONF | SCARE |
+S:BR_SOUN
+D:A huge dragon turtle. You can see many barnacles covering its body.
+
+N:915:Fastitocalon
+G:D:g
+I:120:40d100:25:150:30
+W:52:3:250000:16000
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:BITE:HURT:5d8
+B:BITE:HURT:5d8
+B:CRUSH:POISON:3d10
+B:CRUSH:POISON:3d10
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | AQUATIC | WILD_TOO | WILD_OCEAN |
+F:IM_FIRE | IM_ACID | IM_COLD | IM_POIS |
+F:DRAGON | NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | ATTR_MULTI
+S:1_IN_6 |
+S:BR_FIRE | BR_ACID | BR_SOUN | BA_WATE
+D:A huge aquatic dragon-turtle, its shell is as large as a small island.
+
+N:916:Undead stargazer
+G:~:y
+I:100:18d9:10:25:30
+W:25:1:0:100
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:GAZE:PARALYZE
+B:GAZE:EXP_20
+F:AQUATIC | ANIMAL | SMART | INVISIBLE | UNDEAD | BASEANGBAND | NO_CUT
+S:1_IN_10 |
+S:S_UNDEAD | S_MONSTER
+D:A stargazer brought back from the dead under control of some unholy
+D:sorceror.
+
+N:917:Killer whale
+G:~:w
+I:120:20d50:12:55:30
+W:25:1:9500:85
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:HURT:7d4
+B:BITE:HURT:7d4
+F:AQUATIC | WILD_TOO | WILD_OCEAN |
+F:ANIMAL | MORTAL | BASEANGBAND
+D:An almost beautiful, deadly beast.
+
+N:918:Merrow
+G:O:B
+I:110:30d9:20:33:30
+W:28:2:2300:80
+E:1:1:1:2:1:1
+O:20:70:0:10
+B:HIT:HURT:3d8
+B:HIT:HURT:3d8
+F:FRIENDS | DROP_60 | DROP_CORPSE | AQUATIC | WILD_TOO | WILD_OCEAN |
+F:OPEN_DOOR | BASH_DOOR | RES_WATE | IM_COLD | IM_POIS |
+F:EVIL | GIANT |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:A great ogre of the sea, it is violent and stupid.
+
+N:919:Water naga
+G:n:B
+I:110:30d10:10:55:10
+W:24:1:1600:60
+E:0:0:0:0:1:0
+O:40:0:50:10
+B:CRUSH:HURT:2d8
+B:CRUSH:HURT:2d8
+B:BITE:POISON:1d8
+B:BITE:POISON:1d8
+F:FEMALE |
+F:AQUATIC | DROP_CORPSE |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 |
+F:EVIL | NO_CONF | NO_SLEEP | SMART |
+F:MORTAL | BASEANGBAND
+S:1_IN_7 |
+S:DARKNESS | CAUSE_3 | BO_ICEE
+D:A naga adapted to underwater life. She has a fish-like tail and a pair
+D:of gills.
+
+N:920:Devilfish
+G:~:s
+I:105:10d5:10:10:5
+W:12:1:900:60
+E:0:0:0:0:1:0
+O:0:0:0:0
+F:NEVER_BLOW | ATTR_MULTI | AQUATIC | NO_CONF | DROP_CORPSE |
+F:MORTAL | ZANGBAND
+S:1_IN_4 |
+S:BR_CHAO | BR_LITE | BR_SOUN | BR_DISE | BR_TIME
+D:A disgusting fish, it has a large gaping mouth and a small lantern dangling
+D:from an outgrowth on its head.
+
+N:921:Undead devilfish
+G:~:D
+I:105:10d5:10:10:5
+W:15:1:0:75
+E:0:0:0:0:1:0
+O:0:0:0:0
+F:NEVER_BLOW | ATTR_MULTI | AQUATIC | INVISIBLE | NO_CONF | UNDEAD |
+F:ZANGBAND | NO_CUT
+S:1_IN_4 |
+S:BR_NETH | BR_DISE | BR_TIME | BR_NEXU | BR_POIS
+D:A devilfish brought back from the dead.
+
+N:922:Moby Dick, the White Whale
+G:~:w
+I:120:100d25:200:80:70
+W:50:2:10000:2500
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+B:CRUSH:HURT:10d10
+F:FORCE_MAXHP | UNIQUE | MOVE_BODY |
+F:WILD_OCEAN | WILD_TOO | COLD_BLOOD |
+F:BASH_DOOR | IM_COLD | IM_ELEC | IM_POIS | ANIMAL | AQUATIC |
+F:MORTAL | JOKEANGBAND
+S:1_IN_6 | BA_WATE
+D:The mightiest whale of the seas, he has sunk many ships in his time. With
+D:a mere flick of his tail he can create a mighty whirlpool, to the ruin
+D:of all who would travel the ocean.
+
+N:923:Aquatic hound
+G:Z:B
+I:110:15d5:60:60:0
+W:20:1:600:200
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:CONFUSE:2d8
+B:BITE:HURT:2d8
+B:CLAW:POISON:2d8
+F:FRIENDS | DROP_CORPSE |
+F:ANIMAL | AQUATIC |
+F:MORTAL | BASEANGBAND
+S:1_IN_10 |
+S:BO_ICEE | BO_WATE
+D:A dog with a finned tail and large, muscular flippers for hind legs.
+D:It has a rubbery skin instead of fur.
+
+N:924:Water demon
+G:U:B
+I:110:35d20:30:50:10
+W:40:1:0:1000
+E:0:0:0:0:1:0
+O:20:60:20:0
+B:HIT:HURT:3d4
+B:GAZE:POISON:8d12
+B:CLAW:INSANITY:8d12
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:FRIENDS | SMART |
+F:ONLY_ITEM | DROP_60 |
+F:AQUATIC | POWERFUL |
+F:EVIL | DEMON | IM_ACID | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+S:1_IN_8 |
+S:BO_ICEE | BA_WATE
+D:A hideous scaled demon, it is a sleek form with many fins but no visible
+D:arms or legs. It has a toothed gaping maw, reminiscent of a caricature
+D:of a shark's jaws.
+
+N:925:Ixitxachitl
+G:~:s
+I:110:12d8:20:30:20
+W:12:1:1600:40
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:POISON:2d5
+B:STING:POISON:2d5
+F:ANIMAL | EVIL | AQUATIC | IM_POIS | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+D:An intelligent devil-ray of the depths.
+
+N:926:Ixitxachitl priest
+G:~:s
+I:110:10d10:20:40:20
+W:19:1:1600:80
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:POISON:2d7
+B:STING:POISON:2d7
+F:ANIMAL | EVIL | AQUATIC | IM_POIS | WILD_TOO | COLD_BLOOD |
+F:MORTAL | BASEANGBAND
+S:1_IN_6
+S:TELE_TO | HEAL | SCARE | CAUSE_2 | BLIND | S_MONSTER
+D:A devil-ray of the depths, with priestly magic.
+
+N:927:Vampiric ixitxachitl
+G:~:D
+I:110:15d15:20:50:20
+W:26:1:1800:120
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:STING:POISON:3d8
+B:STING:EXP_40:3d8
+F:ANIMAL | EVIL | AQUATIC | RES_NETH | IM_POIS | WILD_TOO |
+F:BASEANGBAND | COLD_BLOOD
+S:1_IN_6
+S:HEAL | SCARE | CAUSE_3 | BLIND | FORGET | HASTE
+D:A devil-ray of the depths, with vampiric powers.
+
+N:928:Mathilde, the Science Student
+G:h:y
+I:110:220d100:40:10:3
+W:0:4:1100:0
+E:0:1:1:2:1:1
+O:20:20:20:20
+F:UNIQUE | FEMALE | CAN_SPEAK | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_MAXHP | WILD_TOWN | WILD_ONLY | RAND_25
+F:ONLY_ITEM | DROP_90 | DROP_GOOD |
+F:OPEN_DOOR | DG_CURSE |
+F:MORTAL | JOKEANGBAND | HAS_LITE
+D:She loves joking, and she's constantly giggling. A very happy girl.
+D:Beware, it is rumoured that Dark God has put a mighty curse on her.
+
+
+N:929:Child spirit
+G:G:W
+I:120:5d5:8:15:10
+W:5:3:0:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TERRIFY
+B:TOUCH:HURT:3d4
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | UNDEAD |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | SMART | PET | UNDEAD |
+F:BASEANGBAND | NO_CUT
+D:A helpful spirit from beyond the grave.
+
+N:930:Young spirit
+G:G:W
+I:120:8d8:8:15:10
+W:10:3:0:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TERRIFY
+B:TOUCH:HURT:9d4
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | UNDEAD |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | SMART | PET | UNDEAD |
+F:BASEANGBAND | NO_CUT
+D:A helpful spirit from beyond the grave.
+
+N:931:Mature spirit
+G:G:W
+I:120:16d16:8:15:10
+W:40:3:0:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TERRIFY
+B:TOUCH:HURT:18d4
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | UNDEAD |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | SMART | PET | UNDEAD |
+F:BASEANGBAND | NO_CUT
+D:A helpful spirit from beyond the grave.
+
+N:932:Experienced spirit
+G:G:W
+I:120:18d18:8:15:10
+W:60:3:0:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TERRIFY
+B:TOUCH:HURT:20d4
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | UNDEAD |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | SMART | PET | UNDEAD |
+F:BASEANGBAND | NO_CUT
+D:A helpful spirit from beyond the grave.
+
+N:933:Wise spirit
+G:G:W
+I:120:25d25:8:15:10
+W:90:3:0:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:TERRIFY
+B:TOUCH:HURT:30d4
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | UNDEAD |
+F:IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | SMART | PET | UNDEAD |
+F:BASEANGBAND | NO_CUT
+D:A helpful spirit from beyond the grave.
+
+N:934:Fangorn the Treebeard, Lord of the Ents
+G:#:G
+I:120:50d100:30:120:15
+W:52:3:6000:15500
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:CRUSH:HURT:13d13
+B:CRUSH:HURT:13d13
+B:CRUSH:HURT:13d13
+B:CRUSH:HURT:13d13
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | CAN_SPEAK | SUSCEP_FIRE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | MOVE_BODY | DROP_CORPSE |
+F:SMART | TAKE_ITEM | BASH_DOOR | KILL_WALL | NO_SLEEP |
+F:GOOD | PET | BASEANGBAND | NO_CUT
+D:The first being to awoke on Arda, apart from the Valar themselves. He is the
+D:first, oldest, greatest and most respected of all the Ents: and though he is
+D:slow to anger, he is a terrible foe when roused.
+
+N:935:Gandalf the Grey
+G:p:s
+I:120:49d101:101:100:0
+W:60:7:1600:35000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+B:HIT:TERRIFY:5d5
+B:HIT:TERRIFY:5d5
+F:UNIQUE | MALE | CAN_SPEAK | PET | DROP_CORPSE |
+F:FORCE_SLEEP | FORCE_MAXHP | REFLECTING | RES_TELE |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:GOOD | IM_FIRE | IM_COLD |
+F:IM_ELEC | IM_POIS | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | HASTE | TPORT | TELE_AWAY | BLIND | CONF | SCARE |
+S:CAUSE_4 | BRAIN_SMASH | FORGET | TRAPS |
+S:BA_FIRE | BO_FIRE | BO_PLAS | BO_MANA | CAUSE_4 |
+S:S_MONSTERS | S_ANGEL | S_DRAGON | S_KIN
+D:The wizard who opposed Sauron and, in the end, was the only
+D:one of the Istari to succeed in his task. Gandalf is very
+D:wise and specialises in fire magic.
+
+N:936:Nar, the Dwarf
+G:h:y
+I:110:45d10:25:70:25
+W:17:2:1400:250
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:UNIQUE | MALE |
+F:FORCE_MAXHP | FORCE_SLEEP |
+F:OPEN_DOOR | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_POIS |
+F:DROP_CORPSE | DROP_SKELETON | BASEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:HEAL | BLIND | CONF | CAUSE_2 | MIND_BLAST
+D:The friend and companion of the dwarven king Thror, he went mad with
+D:grief after Thror's death at the hands of Azog the Orc. With torn beard
+D:and ragged clothes, he seems to have fixed on you as a convenient target
+D:to vent his anger.
+
+N:937:Novice mindcrafter
+G:p:y
+I:110:6d8:20:10:5
+W:8:1:900:18
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d6
+F:DROP_60 | WILD_TOO | FRIENDS |
+F:OPEN_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE | NO_CONF | NO_SLEEP
+S:1_IN_12 | BLIND | SLOW | CONF | SCARE
+D:A novice in the arts of mind over matter.
+
+N:938:Great Swamp Wyrm
+G:D:g
+I:120:40d100:30:150:80
+W:63:2:190000:20000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:POISON:6d14
+B:BITE:POISON:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:EVIL | DRAGON | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_POIS
+D:A truly enormous dragon with great powers. The foul gases issuing
+D:from the beast nearly make you vomit; and while you may try to hold
+D:your breath as you fight it, it sees no reason to do likewise.
+
+N:939:Great Bile Wyrm
+G:D:s
+I:120:50d100:30:150:80
+W:67:2:190000:23000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:ACID:6d14
+B:BITE:ACID:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:EVIL | DRAGON | IM_ACID | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_ACID
+D:A huge and very powerful dragon. Great steaming pools of acid drip from
+D:its form onto the ground. You shudder when you see the acid eating away
+D:the very stones of the dungeon - what could it do to you?
+
+N:940:Blue Firebird
+G:B:B
+I:120:4d5:8:15:10
+W:5:3:100:0
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d4
+B:CLAW:FIRE:5d4
+F:IM_COLD | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | IMPRESED |
+F:CAN_FLY | SMART | PET | DROP_CORPSE | HAS_EGG | GOOD |
+F:MORTAL | HAS_LITE
+S:1_IN_10
+S:TELE_TO |
+D:The ancestors of the Eagles of the Thunderlords, these are
+D:friendly funny flying creatures with power.
+
+N:941:Green Firebird
+G:B:G
+I:120:4d5:10:15:10
+W:7:3:110:0
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:4d4
+B:CLAW:FIRE:5d4
+F:IM_COLD | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | IMPRESED |
+F:CAN_FLY | SMART | PET | DROP_CORPSE | HAS_EGG | GOOD |
+F:MORTAL | HAS_LITE
+S:1_IN_10
+S:TELE_TO |
+D:The ancestors of the Eagles of the Thunderlords, these are
+D:friendly funny flying creatures with power.
+
+N:942:Brown Firebird
+G:B:u
+I:120:5d5:10:15:10
+W:10:3:120:0
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:5d4
+B:CLAW:FIRE:7d4
+F:IM_COLD | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | IMPRESED |
+F:CAN_FLY | SMART | PET | DROP_CORPSE | HAS_EGG | GOOD |
+F:MORTAL | HAS_LITE
+S:1_IN_10
+S:TELE_TO |
+D:The ancestors of the Eagles of the Thunderlords, these are
+D:friendly funny flying creatures with power.
+
+N:943:Bronze Firebird
+G:B:U
+I:120:6d5:15:15:10
+W:13:3:130:0
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:6d4
+B:CLAW:FIRE:7d4
+F:IM_COLD | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | IMPRESED |
+F:CAN_FLY | SMART | PET | DROP_CORPSE | HAS_EGG | GOOD |
+F:MORTAL | HAS_LITE
+S:1_IN_10
+S:TELE_TO |
+D:The ancestors of the Eagles of the Thunderlords, these are
+D:friendly funny flying creatures with power.
+
+N:944:Gold Firebird
+G:B:y
+I:120:6d5:20:15:10
+W:15:3:140:0
+E:0:1:0:6:1:0
+O:0:0:0:0
+B:CLAW:HURT:6d4
+B:CLAW:FIRE:8d4
+F:IM_COLD | IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP | IMPRESED |
+F:CAN_FLY | SMART | PET | DROP_CORPSE | HAS_EGG | GOOD |
+F:MORTAL | HAS_LITE
+S:1_IN_10
+S:TELE_TO |
+D:The ancestors of the Eagles of the Thunderlords, these are
+D:friendly funny flying creatures with power.
+
+N:945:High-elven ranger
+G:h:G
+I:120:50d30:20:70:0
+W:40:3:1400:500
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:10d8
+B:HIT:HURT:10d8
+F:MALE | FRIENDS | OPEN_DOOR | BASH_DOOR |
+F:GOOD | DROP_SKELETON | DROP_CORPSE | SMART | PET |
+F:IM_ACID | IM_COLD | RES_WATE | RES_NETH |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:ARROW_4
+D:An elf cloaked in green wielding a longbow.
+
+N:946:Uvatha the Horseman
+G:W:D
+I:120:24d100:90:60:10
+W:40:13:0:10000
+E:0:0:0:0:0:0
+O:30:30:30:10
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:HIT:EXP_80:4d6
+B:HIT:EXP_80:4d6
+F:UNIQUE | MALE |
+F:FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | NAZGUL |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY | DROP_CHOSEN |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:BASEANGBAND | SPECIAL_GENE | NO_CUT
+D:A tall black Ringwraith, he is a master of horsemanship. He longs
+D:to taste your blood.
+
+N:947:Adunaphel the Quiet
+G:W:D
+I:120:27d100:90:60:10
+W:43:13:0:13000
+E:1:1:1:2:1:1
+O:30:30:30:10
+B:HIT:HURT:6d6
+B:HIT:HURT:6d6
+B:TOUCH:EXP_80:5d6
+B:TOUCH:EXP_80:5d6
+F:UNIQUE | FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP | NAZGUL | DROP_CHOSEN |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | MOVE_BODY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP |
+F:BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | FORGET |
+S:BO_ACID | BO_FIRE | BO_COLD | BO_NETH |
+S:S_MONSTER
+D:A sorceress in life, Adunaphel quickly fell under Sauron's sway and the
+D:power of the rings.
+
+N:948:Akhorahil the Blind
+G:W:D
+I:120:30d100:90:70:10
+W:45:13:0:15000
+E:1:1:1:2:1:1
+O:30:30:30:10
+B:HIT:HURT:7d6
+B:HIT:HURT:7d6
+B:GAZE:EXP_80:6d6
+B:WAIL:TERRIFY:6d6
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | NAZGUL | DROP_CHOSEN |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | DARKNESS |
+S:BO_FIRE | BO_COLD | BO_NETH |
+S:S_MONSTERS
+D:A mighty sorcerer king, Akhorahil was blind in life. With powerful
+D:enchantments, he created jewelled eyes that enabled him to see better than
+D:any ordinary man ever could.
+
+N:949:Ren the Unclean
+G:W:D
+I:120:35d100:90:70:10
+W:48:13:0:18000
+E:1:1:1:2:1:1
+O:30:30:30:10
+B:HIT:HURT:7d7
+B:HIT:HURT:7d7
+B:TOUCH:EXP_80:6d7
+B:WAIL:TERRIFY:6d7
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | NAZGUL | DROP_CHOSEN |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:INVISIBLE | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | BO_FIRE | BO_NETH | BA_FIRE |
+S:S_MONSTER
+D:Ren was an insane eastern king who believed himself to be the son of a
+D:volcano god. At an early age his sanity was destroyed by a plague that
+D:wiped out his family, and he never recovered.
+
+N:950:Ji Indur Dawndeath
+G:W:D
+I:120:40d100:90:70:10
+W:52:13:0:22000
+E:0:0:0:0:0:0
+O:30:30:30:10
+B:HIT:HURT:8d7
+B:HIT:HURT:8d7
+B:TOUCH:EXP_40:6d7
+B:TOUCH:EXP_40:6d7
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | NAZGUL | DROP_CHOSEN |
+F:INVISIBLE | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 |
+S:BA_FIRE | BA_NETH | BA_COLD | BA_ELEC | BA_ACID |
+S:S_UNDEAD
+D:This Ringwraith was a weak-minded sorcerer-king who fell easily under
+D:Sauron's power.
+
+N:951:Dwar, Dog Lord of Waw
+G:W:D
+I:120:45d100:90:90:10
+W:56:13:0:25000
+E:0:1:0:2:1:0
+O:30:30:30:10
+B:HIT:HURT:8d8
+B:HIT:HURT:8d8
+B:BITE:EXP_40:6d7
+B:WAIL:TERRIFY:6d7
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | NAZGUL | DROP_CHOSEN |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | BA_FIRE | BA_NETH |
+S:S_MONSTERS | S_UNDEAD | S_HOUND
+D:Dwar had a special affinity for dogs in life, and can still command them
+D:at will. He howls manically as he reaches out to destroy you.
+
+N:952:Hoarmurath of Dir
+G:W:D
+I:130:60d100:90:100:10
+W:64:13:0:30000
+E:0:0:0:0:0:0
+O:30:30:30:10
+B:HIT:HURT:9d9
+B:HIT:HURT:9d9
+B:TOUCH:EXP_80:6d7
+B:WAIL:TERRIFY:6d7
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | NAZGUL | DROP_CHOSEN |
+F:HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | MIND_BLAST |
+S:BO_COLD | BA_COLD | BA_NETH |
+S:S_UNDEAD
+D:A Ringwraith powerful in fell sorcery, he yearns for the life he has
+D:exchanged for an unlife of everlasting torment.
+
+N:953:Khamul, the Black Easterling
+G:W:D
+I:130:70d100:90:100:10
+W:72:13:2600:40000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:9d10
+B:HIT:HURT:9d10
+B:TOUCH:EXP_80:7d7
+B:TOUCH:EXP_80:7d7
+F:UNIQUE | MALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | NAZGUL | DROP_CHOSEN |
+F:SMART | COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:EVIL | UNDEAD | IM_ACID | IM_FIRE | IM_COLD | IM_POIS |
+F:HURT_LITE | NO_CONF | NO_SLEEP | RES_TELE | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:TELE_LEVEL | BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | BO_MANA |
+S:BA_FIRE | BA_COLD | BA_NETH | ANIM_DEAD |
+S:S_HI_UNDEAD | S_KIN
+D:He was the warrior-king of the East, now a Ringwraith. Khamul is a powerful opponent, his skill in
+D:combat awesome and his form twisted by evil cunning.
+
+N:954:The Witch-King of Angmar
+G:W:D
+I:130:90d100:90:120:10
+W:80:14:1800:60000
+E:1:1:1:2:1:1
+O:30:30:30:10
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:EXP_80:7d7
+B:HIT:EXP_80:7d7
+F:UNIQUE | MALE | CAN_SPEAK | RES_TELE
+F:FORCE_SLEEP | FORCE_MAXHP | SMART |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | MOVE_BODY | NAZGUL |
+F:EVIL | UNDEAD | DROP_CHOSEN |
+F:IM_COLD | IM_POIS | HURT_LITE | NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:TELE_AWAY | BLIND | HOLD | SCARE | CAUSE_3 | BRAIN_SMASH |
+S:BO_MANA | BA_NETH | S_WRAITH |
+S:S_KIN | S_HI_UNDEAD | S_HI_DRAGON | S_MONSTERS | ANIM_DEAD
+D:The Chief of the Ringwraiths. A fell being of devastating power, his
+D:spells are lethal and his combat blows crushingly hard. He moves at
+D:speed, and commands legions of evil to do his bidding. It is said that he
+D:is fated never to die by the hand of mortal man.
+
+N:955:Green Thunderlord
+G:B:g
+I:120:50d50:20:100:50
+W:30:4:30000:10000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+F:FEMALE |
+F:THUNDERLORD | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:IM_FIRE | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:RES_TELE | NO_CONF | NO_SLEEP | CAN_FLY | HAS_LITE
+S:1_IN_4 |
+S:BR_FIRE |
+S:BLINK | TELE_AWAY
+D:A Thunderlord. Among the weaker breeds, but still dangerous.
+
+N:956:Blue Thunderlord
+G:B:b
+I:120:60d60:20:100:50
+W:40:4:30000:20000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:8d7
+B:HIT:HURT:8d7
+F:MALE | SMART |
+F:THUNDERLORD | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:IM_FIRE | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:RES_TELE | NO_CONF | NO_SLEEP | CAN_FLY | HAS_LITE
+S:1_IN_4 |
+S:BR_FIRE |
+S:TPORT | BLINK
+D:A Thunderlord. Among the weaker breeds, but still dangerous.
+
+N:957:Brown Thunderlord
+G:B:u
+I:130:70d70:30:100:50
+W:50:4:30000:20000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:8d9
+B:HIT:HURT:8d9
+F:MALE | SMART |
+F:THUNDERLORD | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:IM_FIRE | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:RES_TELE | NO_CONF | NO_SLEEP | CAN_FLY | HAS_LITE
+S:1_IN_4 |
+S:BR_FIRE |
+S:TPORT | BLINK
+D:A Thunderlord. Beware its flame.
+
+N:958:Bronze Thunderlord
+G:B:U
+I:130:80d80:30:100:50
+W:60:5:30000:20000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:10d9
+B:HIT:HURT:10d9
+F:MALE | SMART |
+F:THUNDERLORD | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:IM_FIRE | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:RES_TELE | NO_CONF | NO_SLEEP | CAN_FLY | HAS_LITE
+S:1_IN_4 |
+S:BR_FIRE | BR_TIME |
+S:TPORT | BLINK
+D:A Thunderlord, mightiest among the males.
+
+N:959:Gold Thunderlord
+G:B:y
+I:130:90d90:30:100:50
+W:70:5:30000:20000
+E:1:1:1:2:1:1
+O:50:50:0:0
+B:HIT:HURT:10d9
+B:HIT:HURT:10d9
+B:HIT:HURT:10d9
+B:HIT:HURT:10d9
+F:FEMALE | SMART |
+F:THUNDERLORD | DROP_SKELETON | DROP_CORPSE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:IM_FIRE | REGENERATE | OPEN_DOOR | BASH_DOOR |
+F:RES_TELE | NO_CONF | NO_SLEEP | CAN_FLY | HAS_LITE
+S:1_IN_4 |
+S:BR_FIRE | BR_TIME |
+S:TPORT | BLINK | TELE_TO | TELE_AWAY |
+S:S_THUNDERLORD
+D:A Thunderlord, among the queens of their kind.
+
+N:960:Blood Sprout
+G:,:g
+I:140:3d5:10:1:0
+W:50:1:50:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:HURT:3d15
+B:TOUCH:HURT:3d15
+B:TOUCH:HURT:3d15
+B:TOUCH:HURT:3d15
+F:STUPID | EMPTY_MIND | KILL_TREES |
+F:IM_POIS | IM_ELEC | IM_ACID | IM_COLD |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL
+S:MULTIPLY
+D:A kind of giant mycorrhiza, corrupted into a carnivore by Morgoth.
+
+N:961:Gorlim, Betrayer of Barahir
+G:p:s
+I:120:16d100:20:120:40
+W:41:3:1800:7000
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:8d6
+B:HIT:HURT:8d6
+B:HIT:UN_BONUS:6d8
+B:HIT:UN_BONUS:6d8
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP | BASEANGBAND
+F:HAS_LITE
+S:1_IN_2 |
+S:CAUSE_3 | BO_WATE | BO_MANA
+D:This sad creature - once a mighty warrior - betrayed his former friends to
+D:Morgoth's army in return for, he thought, safety for himself and his wife.
+D:And so he fell under Morgoth's power and became little more than a mindless
+D:servant of evil, even though the other side of his "bargain" was not kept.
+
+N:962:The Blubbering idiot, agent of black market, Simon the weak
+G:t:W
+I:110:5d11:10:16:0
+W:5:1:1500:50
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:2d5
+B:TOUCH:EAT_ITEM
+B:TOUCH:INSANITY:2d5
+B:TOUCH:INSANITY:2d5
+F:MALE | DROP_CORPSE | DROP_SKELETON | WILD_TOO |
+F:RAND_25 | UNIQUE | STUPID | MALE | FORCE_MAXHP |
+F:TAKE_ITEM | CAN_SPEAK | CAN_SWIM | EVIL |
+F:MORTAL | JOKEANGBAND | HAS_LITE
+S:1_IN_8
+S:SHRIEK
+D:He tends to blubber a lot, he was a simple blubbering idiot before he lost
+D:himself in the dungeon and fell under Morgoth's will.
+D:Now he is a mindless servant of Morgoth. Destroy him - if you can...
+
+N:963:Aranea
+G:S:r
+I:120:20d10:20:45:50
+W:30:2:1000:250
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:POISON:2d8
+B:CLAW:POISON:2d8
+B:BITE:POISON:2d6
+B:BITE:POISON:2d6
+F:DROP_SKELETON | FORCE_MAXHP | FRIENDS |
+F:OPEN_DOOR | BASH_DOOR | HURT_LITE |
+F:ANIMAL | SPIDER | EVIL | IM_POIS | BASEANGBAND
+S:1_IN_4
+S:BO_FIRE | SLOW | HOLD | CAUSE_3 | MISSILE
+D:A red arachnid with legs weaving spells in the air.
+
+N:964:Elder aranea
+G:S:v
+I:120:30d20:20:65:50
+W:40:3:1800:2500
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:CLAW:POISON:5d8
+B:CLAW:POISON:5d8
+B:BITE:HALLU:5d6
+B:BITE:HALLU:5d6
+F:DROP_SKELETON | FORCE_MAXHP |
+F:OPEN_DOOR | BASH_DOOR | HURT_LITE | SMART |
+F:ANIMAL | SPIDER | EVIL | IM_FIRE | IM_POIS | BASEANGBAND
+S:1_IN_6
+S:SLOW | HOLD | DRAIN_MANA | MIND_BLAST | HEAL |
+S:BA_FIRE | BO_FIRE | CAUSE_3 | S_SPIDER
+D:A vast, bloated arachnid, master of its brood: among the more terrible of
+D:Ungoliant's descendants, this is a monster such as those who haunted the dread
+D:valley of Nan Dungortheb long ago.
+
+N:965:Giant brown tick
+G:S:u
+I:110:16d8:12:50:20
+W:25:2:400:27
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:POISON:2d6
+B:STING:BLIND:1d1
+F:WEIRD_MIND | BASH_DOOR | CAN_FLY |
+F:ANIMAL | IM_POIS | MORTAL | BASEANGBAND
+D:It is moving slowly towards you.
+
+N:966:Wavelord
+G:p:b
+I:120:16d100:30:120:40
+W:61:3:1800:7000
+E:1:1:1:2:1:1
+O:20:50:10:5
+B:HIT:HURT:8d9
+B:HIT:COLD:8d9
+B:HIT:HURT:8d9
+B:HIT:COLD:8d9
+F:SMART | PET | DROP_CORPSE | FRIENDS | WILD_SHORE | WILD_OCEAN | WILD_TOO |
+F:IM_POIS | AQUATIC | CAN_SWIM | DROP_USEFUL |
+F:NO_CONF | NO_SLEEP | NO_FEAR | DROP_GOOD | DROP_3D2 |
+F:MORTAL | REGENERATE | TAKE_ITEM | GOOD | SUSCEP_FIRE |
+F:RES_WATE | RES_NEXU | HAS_LITE
+S:1_IN_4
+S:BO_WATE | BA_WATE | BO_ICEE
+D:The Dolphiners came with the Thunderlords from their far home.
+D:These friendly beings ride their sharks into combat to assist you.
+
+N:967:Novice possessor (soul)
+G:G:D
+I:110:1d1:30:1:10
+W:10:3:10:0
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:SMART | POSSESSOR |
+F:BASEANGBAND | NO_CUT
+D:It does not look that powerful.
+
+N:968:Bat of Gorgoroth
+G:b:g
+I:120:20d10:20:30:30
+W:28:3:150:100
+E:0:1:1:0:1:0
+O:0:0:0:0
+B:BITE:POISON:1d10
+B:CLAW:HURT:1d4
+F:DROP_60 | RAND_25 | MOVE_BODY | CAN_FLY | DROP_CORPSE |
+F:BASH_DOOR | MOVE_BODY | FRIENDS | WEIRD_MIND |
+F:ANIMAL | IM_POIS | AI_ANNOY | MORTAL | BASEANGBAND
+S:1_IN_8 |
+S:SCARE | BR_POIS | BR_DARK
+D:Fed with horrid meats and grown to enormous size, this slavering creature
+D:seeks livelier prey.
+
+N:969:The Princess
+G:p:y
+I:110:1d1:40:250:3
+W:0:4:730:0
+E:0:1:1:2:1:1
+O:0:0:1:0
+F:FEMALE | CAN_SPEAK
+F:FORCE_MAXHP | SPECIAL_GENE | NO_TARGET
+F:NEVER_MOVE | NEVER_BLOW | GOOD | NO_DEATH | RES_TELE
+F:MORTAL | BASEANGBAND | UNIQUE | PET |
+D:The princess of an unknown kingdom, you need to save her!
+
+N:970:Merton Proudfoot, the lost hobbit
+G:h:v
+I:110:1d1:40:250:3
+W:1:1:730:0
+E:0:1:1:2:1:1
+O:0:0:0:1
+F:MALE | CAN_SPEAK
+F:FORCE_MAXHP | SPECIAL_GENE
+F:NEVER_MOVE | NEVER_BLOW | GOOD | NO_TARGET
+F:MORTAL | BASEANGBAND | UNIQUE | PET | NO_DEATH
+D:The poor hobbit got lost in the dreadful maze!
+
+N:971:The Wight-King of the Barrow-downs
+G:W:v
+I:120:38d22:30:45:0
+W:46:3:0:22000
+E:0:0:0:0:0:0
+O:15:55:15:0
+B:HIT:HURT:2d10
+B:WAIL:PARALYZE:2d6
+B:TOUCH:EXP_80:4d8
+B:TOUCH:EXP_80:4d8
+F:SPECIAL_GENE | FORCE_MAXHP | SMART | CAN_SPEAK |
+F:DROP_4D2 | DROP_2D2 | COLD_BLOOD | UNIQUE |
+F:CAN_SWIM | CAN_FLY | EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_4 |
+S:HOLD | SCARE | CAUSE_3 | BA_NETH
+D:He has lived in the Barrow-Downs for centuries after his first death at the
+D:hands of the Witch-King of Angmar. A once loyal captain under the
+D:Witch-King's command, he now awaits a time when his undead forces shall
+D:rise again to avenge their deaths.
+
+N:972:Adventurer
+G:@:U
+I:115:3d20:50:50:10
+W:0:3:100:0
+O:50:50:0:0
+B:HIT:HURT:2d6
+B:PUNCH:HURT:1d7
+B:KICK:HURT:1d8
+F:SPECIAL_GENE | SMART | OPEN_DOOR
+F:FORCE_MAXHP | CAN_SWIM | BASEANGBAND |
+F:NO_SLEEP | NO_CONF
+D:A great warrior.
+
+N:973:Experienced possessor (soul)
+G:G:D
+I:120:5d5:30:50:10
+W:30:3:10:0
+O:0:0:0:0
+F:SMART | POSSESSOR |
+F:BASEANGBAND | NO_CUT
+S:1_IN_9
+S:S_KIN
+D:It does not look that powerful.
+
+N:974:Old possessor (soul)
+G:G:D
+I:130:10d10:30:100:10
+W:95:3:10:0
+O:0:0:0:0
+F:SMART | POSSESSOR |
+F:BASEANGBAND | NO_CUT
+S:1_IN_4
+S:S_KIN
+D:It does not look that powerful.
+
+N:975:Death orb
+G:E:D
+I:130:40d100:255:75:0
+W:80:5:10:5000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:PARASITE:20d10
+B:ENGULF:ACID:6d5
+B:ENGULF:EXP_80:6d5
+B:ENGULF:LOSE_ALL:6d5
+F:FORCE_MAXHP | ZANGBAND | KILL_ITEM | KILL_WALL | KILL_BODY |
+F:NONLIVING | COLD_BLOOD | EMPTY_MIND | CAN_SWIM |
+F:NO_CONF | NO_SLEEP | NO_STUN | REGENERATE |
+F:IM_ACID | IM_FIRE | IM_ELEC | IM_COLD | IM_POIS |
+F:RES_NETH | RES_PLAS | RES_WATE | RES_DISE | RES_NEXU |
+F:DEATH_ORB | NO_CUT
+D:A small, apparently unassuming orb which spawns death and destruction.
+
+N:976:Bronze dragon worm
+G:w:U
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | NO_CONF |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_CONF
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Its scales glitter in
+D:a multitude of perplexing and distracting ways.
+
+N:977:Gold dragon worm
+G:w:y
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | NO_STUN |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_SOUN
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. You can feel the air itself
+D:vibrating as you near it.
+
+N:978:Moldoux, the Defenceless Mold
+G:m:v
+I:100:1d1:1:1:0
+W:1:1:20:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:NEVER_MOVE | UNIQUE |
+F:STUPID | EMPTY_MIND |
+F:IM_POIS | FORCE_DEPTH |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:MORTAL | WYRM_PROTECT | ONLY_DEPTH | JOKEANGBAND | NO_CUT
+D:A small strange growth. It seems to be defenceless...
+
+N:979:The Physics Teacher
+G:p:w
+I:120:65d100:30:120:15
+W:62:3:100000:13500
+E:1:1:1:2:1:1
+O:20:20:20:20
+B:TOUCH:LOSE_INT:13d13
+B:TOUCH:LOSE_WIS:13d13
+B:GAZE:PARALYZE
+B:WAIL:EXP_80
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_SPEAK | DROP_CORPSE |
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:PASS_WALL | MOVE_BODY | AURA_FIRE |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | ANIMAL | DEMON | UNDEAD | JOKEANGBAND | NO_CUT
+S:1_IN_3
+S:BR_FIRE | BR_PLAS | BR_TIME | BA_WATE | ROCKET |
+S:FORGET
+D:A keeper of forbidden wisdom, this Teacher bombards you with his mastery
+D:over elements of matter.
+
+N:980:Ar-Pharazon the Golden
+G:p:y
+I:130:50d100:30:45:255
+W:55:1:0:2500
+E:1:1:1:2:1:1
+O:20:70:10:0
+B:HIT:HURT:8d12
+B:HIT:HURT:8d12
+B:HIT:HURT:8d12
+B:HIT:HURT:8d12
+F:FORCE_SLEEP | FORCE_MAXHP | UNIQUE | CAN_SPEAK | SPECIAL_GENE |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD | DROP_SKELETON | DROP_CORPSE |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | MOVE_BODY | BASEANGBAND |
+F:HAS_LITE | AQUATIC
+S:1_IN_6 |
+S:HEAL | HASTE | TELE_AWAY | S_MONSTERS | S_KIN
+D:Last and proudest king of ancient Numenor. Corrupted by power and
+D:avarice, he fell victim to Sauron's wiles, tried to fight the immortals
+D:themselves, and condemned Numenor to oblivion.
+
+N:981:Doppelganger
+G:@:w
+I:1:1d1:1:1:1
+E:0:0:0:0:0:0
+O:0:0:0:0
+F:NEVER_MOVE | NEVER_BLOW | DOPPLEGANGER | BASEANGBAND | HAS_LITE
+D:It looks like you...
+
+N:982:Marylene, Heartbreakeress of the Netherworld
+G:P:W
+I:155:200d120:155:175:0
+W:127:1:1600:66666
+E:1:1:1:2:1:1
+O:30:30:30:10
+B:GAZE:PARALYZE:20d15
+B:HIT:EXP_80:20d17
+B:BITE:LOSE_ALL:10d12
+B:TOUCH:INSANITY:12d9
+F:UNIQUE | CAN_SPEAK | ATTR_MULTI | ATTR_ANY | FEMALE |
+F:FORCE_MAXHP | WEIRD_MIND | DROP_CORPSE | DROP_SKELETON |
+F:REFLECTING | AURA_FIRE | AURA_ELEC | AURA_COLD |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:DROP_GOOD | DROP_GREAT | RES_NETH | INVISIBLE |
+F:SMART | KILL_WALL | KILL_BODY | POWERFUL | RES_TELE |
+F:REGENERATE | CAN_FLY | CAN_SWIM | WYRM_PROTECT |
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NO_STUN | RES_TELE | DEMON |
+F:MORTAL | DG_CURSE | JOKEANGBAND | HAS_LITE
+S:1_IN_1 |
+S:BR_CHAO | BA_CHAO | BRAIN_SMASH | SHRIEK | BR_CONF | BR_SOUN |
+S:BR_NETH | HASTE | TRAPS | FORGET | BR_DISE | BR_TIME | MIND_BLAST |
+S:HEAL | TPORT | TELE_TO | CAUSE_1 | CAUSE_2 | CAUSE_3 | CAUSE_4 | BLIND |
+S:CONF | SLOW | HOLD | S_ANGEL | S_UNIQUE
+D:A woman of mind-shattering beauty, none can match her beauty. She is perfect,
+D:and totally evil. She loves nothing but herself and her evil is as
+D:great as her beauty. No one can stand against her, even DarkGod.
+D:As you see her approaching, you feel your heart breaking.
+D:She is the perfection, don't even try against her; you will surely lose
+D:your mind...
+
+N:983:The Greater Lag Monster
+G:U:v
+I:110:60d100:40:10:3
+W:95:4:730:0
+E:0:0:0:0:0:0
+O:40:40:0:10
+B:GAZE:PARALYZE:20d15
+B:HIT:HURT:15d10
+B:TOUCH:EXP_80:10d5
+B:TOUCH:EAT_ITEM
+F:RAND_50 | TAKE_ITEM | FORCE_MAXHP | UNIQUE |
+F:DROP_3D2 | DROP_GOOD | DROP_GREAT | WYRM_PROTECT |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NO_STUN | RES_TELE | DEMON |
+F:EVIL | WEIRD_MIND | RES_NETH | INVISIBLE |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | JOKEANGBAND | NO_CUT
+S:1_IN_2
+S:CONF | SHRIEK | BR_CONF | BR_TIME | BR_INER | BR_GRAV | BRAIN_SMASH |
+S:SCARE | BLIND | SLOW | HOLD | HASTE | HEAL | TELE_TO | FORGET |
+S:S_HI_DEMON | S_MONSTERS | S_HYDRA | S_HI_DRAGON | S_HI_UNDEAD | S_ANGEL |
+S:S_HOUND | S_UNIQUE |
+D:It is even worse than the RNG, coming from Mangband,
+D:it seeks to crush you to pulp... and surely can.
+
+N:984:Hrungnir, the Stone Giant
+G:P:W
+I:130:99d110:50:160:20
+W:78:2:0:45000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:SHATTER:9d11
+B:HIT:SHATTER:9d11
+B:HIT:HURT:9d11
+B:HIT:HURT:9d11
+F:UNIQUE | SUSCEP_ACID | HURT_ROCK |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | RES_NETH | RES_PLAS | MALE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | EVIL |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | TAKE_ITEM | CAN_SPEAK |
+F:EVIL | IM_FIRE | IM_POIS | GIANT |
+F:ZANGBAND | HAS_LITE | NO_CUT
+S:1_IN_5 |
+S:BR_WALL | BR_GRAV | BR_SHAR | BLIND | TELE_TO | S_KIN | S_MONSTERS |
+S:HAND_DOOM | TELE_AWAY |
+D:Hrungnir is the strongest of all the Stone Giants: one who would even dare
+D:to challenge Thor himself to single combat.
+
+N:985:Bullroarer the Hobbit
+G:h:U
+I:120:6d10:16:8:10
+W:5:3:1000:90
+E:1:1:1:2:1:1
+O:25:55:0:20
+B:HIT:HURT:1d8
+B:HIT:HURT:1d8
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:MORTAL | BASEANGBAND | HAS_LITE
+D:He is a sturdy hobbit who is renowned for his unusual strength and
+D:vigour. He can prove a troublesome opponent.
+
+N:986:3-headed hydra
+G:M:o
+I:120:100d5:20:65:20
+W:20:2:4500:350
+E:0:1:0:2:2:0
+O:0:0:0:0
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+B:BITE:HURT:2d6
+F:FORCE_SLEEP | WILD_TOO | WILD_SHORE | WILD_SWAMP | CAN_SWIM |
+F:DROP_CORPSE | DROP_SKELETON | ONLY_GOLD | DROP_2D2 |
+F:OPEN_DOOR | BASH_DOOR | MOVE_BODY |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:1_IN_9 |
+S:SCARE
+D:A strange reptilian creature with three heads, guarding its hoard.
+
+N:987:Uldor the Accursed
+G:p:U
+I:110:10d100:20:70:40
+W:28:4:2000:600
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_10 | S_KIN
+D:An evil and cunning man from the East. Having once sworn allegiance to the
+D:sons of Feanor, it was Uldor's treachery that turned the tide of the Battle
+D:of Unnumbered Tears in Morgoth's favour.
+
+N:988:Mystic
+G:p:o
+I:120:35d10:30:50:5
+W:33:3:1400:500
+E:1:1:1:2:1:1
+O:30:0:60:10
+B:KICK:HURT:10d2
+B:KICK:HURT:10d2
+B:KICK:HURT:10d2
+B:KICK:HURT:10d2
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON |
+F:ONLY_ITEM | DROP_1D2 |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_POIS | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_6 |
+S:HEAL |
+S:S_SPIDER | S_ANIMAL
+D:An adept at unarmed combat, the mystic strikes with stunning power. He
+D:can summon help from nature and is able to focus his power to ease any
+D:pain.
+
+N:989:Elder vampire
+G:V:r
+I:120:34d100:20:90:10
+W:54:3:1700:4500
+E:1:1:1:2:1:1
+O:0:70:30:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:BITE:EXP_80:5d6
+B:BITE:EXP_80:5d6
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:DROP_60 | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE | RES_TELE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT
+S:1_IN_7 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | DARKNESS | BO_NETH | S_UNDEAD
+D:A terrible robed undead figure, this creature has existed in its
+D:unlife for many centuries by stealing the life of others. It can
+D:summon the very shades of its victims from beyond the grave to
+D:come enslaved to its aid.
+
+N:990:Ulfang the Black
+G:p:U
+I:120:25d100:20:90:40
+W:44:5:2100:1200
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:5d8
+B:HIT:HURT:5d8
+B:HIT:HURT:5d8
+B:HIT:HURT:5d8
+F:UNIQUE | MALE | CAN_SPEAK | DROP_CORPSE | DROP_SKELETON |
+F:FORCE_MAXHP | IM_FIRE | IM_COLD | IM_ELEC | SPECIAL_GENE |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | DROP_RANDART
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_10 | S_KIN | S_MONSTERS
+D:A short and swarthy Easterling dressed in black. He and his three sons
+D:once openly swore allegiance to the High Elves, but were secretly in the
+D:pay of Morgoth.
+
+N:991:Demonologist
+G:p:R
+I:120:28d10:20:50:10
+W:36:2:1100:700
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON
+F:RES_NETH | RES_NEXU |
+F:ONLY_ITEM | DROP_1D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:TPORT | HOLD |
+S:S_DEMON | BO_FIRE
+D:A figure twisted by evil standing in robes of deepest crimson.
+
+N:992:Hezrou
+G:U:g
+I:110:52d10:20:40:80
+W:41:3:2100:2500
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_SLEEP | FORCE_MAXHP | FRIENDS
+F:ONLY_ITEM | DROP_2D2 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | NONLIVING
+F:BASEANGBAND
+S:1_IN_9 |
+S:BO_FIRE |
+S:S_DEMON
+D:It is a demon of lizard form with cruel-looking jaws.
+
+N:993:Glabrezu
+G:U:U
+I:110:70d10:20:40:80
+W:43:2:2300:3000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | NONLIVING |
+F:BASEANGBAND
+S:1_IN_9 |
+S:BO_FIRE |
+S:S_DEMON
+D:It is a demon with arms and pincers, its form a true mockery of life.
+
+N:994:Nalfeshnee
+G:U:r
+I:110:90d10:20:50:80
+W:45:2:6000:5000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+B:HIT:HURT:3d4
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE
+F:ONLY_ITEM | DROP_1D2 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON |
+F:IM_FIRE | NO_CONF | NO_SLEEP | NONLIVING
+F:BASEANGBAND
+S:1_IN_9 |
+S:BLIND | CONF |
+S:BR_FIRE |
+S:S_DEMON
+D:It is a large demon with the head of a giant boar. Flames run up and down
+D:its length.
+
+N:995:Marilith
+G:U:y
+I:120:20d70:20:75:80
+W:47:2:3000:7000
+E:3:0:3:4:1:0
+O:0:50:50:0
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+B:HIT:HURT:3d6
+F:FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_1D2 | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | NONLIVING |
+F:BASEANGBAND
+S:1_IN_9 |
+S:BLIND | CAUSE_2 |
+S:S_DEMON
+D:She is a demon of female form with many arms, each bearing deadly weapons.
+
+N:996:Lesser Balrog
+G:U:v
+I:120:20d100:20:50:80
+W:49:2:9000:10000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:FIRE:4d12
+B:HIT:FIRE:4d12
+B:CRUSH:HURT:3d12
+B:TOUCH:UN_POWER
+F:FORCE_SLEEP | FORCE_MAXHP | AURA_FIRE | KILL_WALL |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:EVIL | DEMON | IM_FIRE | NO_CONF | NO_SLEEP | NONLIVING |
+F:BASEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:BLIND | CONF |
+S:BR_FIRE |
+S:S_DEMON
+D:It is a massive humanoid demon wreathed in flames.
+
+N:997:Master mystic
+G:p:o
+I:130:11d100:30:60:5
+W:50:3:1600:6000
+E:1:1:1:2:1:1
+O:40:0:40:20
+B:KICK:HURT:10d2
+B:KICK:HURT:10d2
+B:HIT:POISON:20d1
+B:HIT:PARALYZE:15d1
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON |
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL |
+S:S_SPIDER | S_ANIMALS
+D:A lord of all that is natural, skilled in the mystic ways. He is a master
+D:of martial arts and is at one with nature, able to summon help from the
+D:wild if need be.
+
+N:998:Grand master mystic
+G:p:o
+I:130:22d100:30:80:5
+W:57:3:1800:15000
+E:1:1:1:2:1:1
+O:40:0:40:20
+B:KICK:HURT:20d2
+B:KICK:HURT:10d2
+B:HIT:POISON:20d1
+B:HIT:PARALYZE:15d1
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | DROP_CORPSE | DROP_SKELETON |
+F:ONLY_ITEM | DROP_4D2 |
+F:INVISIBLE | OPEN_DOOR | BASH_DOOR |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | MIND_BLAST |
+S:S_SPIDER | S_HOUND | S_ANIMALS
+D:He is one of the few true masters of the art, being extremely skillful in
+D:all forms of unarmed combat and controlling the world's natural creatures
+D:with disdainful ease.
+
+N:999:Erinyes
+G:U:u
+I:110:24d10:20:50:80
+W:38:2:0:1000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:HURT:3d4
+B:TOUCH:LOSE_STR:1d5
+F:FEMALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_60 |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:EVIL | DEMON |
+F:IM_FIRE | IM_POIS | NO_CONF | NO_SLEEP |
+F:BASEANGBAND
+S:1_IN_7 |
+S:BLIND | CONF | BO_FIRE
+D:It is a lesser demon of female form; however, she takes little time to
+D:show her true colours.
+
+N:1000:Novice mindcrafter
+G:p:y
+I:110:6d8:20:10:5
+W:4:1:900:18
+E:1:1:1:2:1:1
+O:0:50:0:30
+B:HIT:HURT:1d6
+F:DROP_60 | WILD_TOO |
+F:OPEN_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:MORTAL | BASEANGBAND | HAS_LITE | NO_CONF | NO_SLEEP
+S:1_IN_9 | BLIND | SLOW | CONF | SCARE
+D:A novice in the arts of mind over matter.
+
+N:1001:Polyphemus, the Blind Cyclops
+G:P:g
+I:130:65d100:40:140:40
+W:69:3:40000:29000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:11d10
+B:HIT:SHATTER:11d10
+B:HIT:HURT:11d10
+B:HIT:SHATTER:11d10
+F:UNIQUE | MALE | BASEANGBAND | HAS_LITE | CAN_SWIM |
+F:FORCE_SLEEP | FORCE_MAXHP | RAND_25 | DROP_CORPSE |
+F:DROP_2D2 | DROP_3D2 | DROP_GOOD | ONLY_ITEM | KILL_ITEM |
+F:BASH_DOOR | KILL_BODY |
+F:EVIL | GIANT | IM_ACID | IM_POIS | IM_FIRE | IM_COLD |
+S:1_IN_5 |
+S:BO_WATE | BA_WATE | BO_ICEE | BA_ACID | ARROW_4
+D:No ordinary cyclops, but the son of a sea-god: he wields the powers of
+D:elemental water as well as the considerable strength of a cyclops. His
+D:one eye was blinded long ago by the warrior Odysseus, but he has trained
+D:himself to hear so well that it nearly makes up for his disability.
+
+N:1002:Great Wyrm of Perplexity
+G:D:U
+I:120:40d100:30:150:80
+W:63:2:190000:20000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:CONFUSE:6d14
+B:BITE:CONFUSE:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:SMART | BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | BASEANGBAND | HAS_LITE | ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_CONF
+D:A dragon of great size and power. Its polished bronze scales reflect the
+D:light in strange and confusing patterns, and you find it hard to keep your
+D:mind on the job of fighting for your life.
+
+N:1003:Hound of Tindalos
+G:Z:s
+I:120:60d15:30:100:0
+W:59:3:600:8000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:TIME:2d12
+B:BITE:TIME:2d12
+B:CLAW:HURT:2d12
+B:CLAW:HURT:2d12
+F:FORCE_SLEEP | FRIENDS | RES_NETH |
+F:INVISIBLE | PASS_WALL | EVIL | CAN_FLY |
+F:ANIMAL | NO_CONF | NO_SLEEP | CTHANGBAND
+S:1_IN_5 | BLINK | TELE_TO |
+S:BR_NETH | BR_TIME
+D:"They are lean and athirst!... All the evil in the universe
+D:was concentrated in their lean, hungry bodies. Or had they
+D:bodies? I saw them only for a moment, I cannot be certain."
+
+N:1004:Great Wyrm of Thunder
+G:D:y
+I:120:50d100:30:150:80
+W:67:2:190000:23000
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:4d12
+B:CLAW:HURT:4d12
+B:BITE:HURT:6d14
+B:BITE:HURT:6d14
+F:FORCE_SLEEP | FORCE_MAXHP | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:BASH_DOOR | POWERFUL | MOVE_BODY | DROP_CORPSE |
+F:EVIL | DRAGON | NO_CONF | NO_SLEEP | NO_STUN | BASEANGBAND | HAS_LITE
+F:ATTR_MULTI
+S:1_IN_4 |
+S:BLIND | CONF | SCARE |
+S:BR_SOUN
+D:A dragon of gigantic proportions, with destructive abilities to match. The
+D:sheer loudness of its roar leaves you stunned and unable to think clearly
+D:enough to defend yourself adequately.
+
+N:1005:Silver mouse
+G:r:W
+I:110:1d3:8:4:20
+W:4:1:200:1
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:BITE:EAT_LITE:1d2
+F:RAND_25 | CAN_SWIM | ANIMAL |
+F:DROP_CORPSE | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It is about three feet long with large teeth. As the light of your lamp falls
+D:on it, it seems to grow stronger.
+
+N:1006:The Rat King
+G:r:v
+I:120:20d12:30:30:0
+W:18:1:950:32
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:CLAW:HURT:3d2
+B:CLAW:HURT:3d2
+B:BITE:DISEASE:4d2
+B:BITE:DISEASE:4d2
+F:UNIQUE | ESCORT | ESCORTS | FORCE_MAXHP |
+F:BASH_DOOR | ANIMAL | NO_CONF | NO_SLEEP
+F:MORTAL | BASEANGBAND
+D:A massive rat. He's the leader of the pack.
+
+N:1007:Vort the Kobold Queen
+G:k:v
+I:110:12d10:20:20:20
+W:7:3:1000:100
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:HURT:1d10
+B:HIT:HURT:1d10
+F:UNIQUE | FEMALE | CAN_SPEAK |
+F:FORCE_MAXHP |
+F:ESCORT | ESCORTS | DROP_SKELETON | DROP_CORPSE
+F:ONLY_ITEM | DROP_1D2 | DROP_GOOD |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_POIS |
+F:MORTAL | BASEANGBAND | HAS_LITE
+S:1_IN_6 | MISSILE | HEAL | CAUSE_1 | CONF
+D:Where Mughash is the strongest of his kind, his consort Vort is the
+D:wisest: she is her tribe's chief shamaness.
+
+N:1008:Giant black louse
+G:I:D
+I:120:1d2:6:7:10
+W:14:1:100:3
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:BITE:HURT:1d2
+F:RAND_50 | RAND_25 | CAN_FLY | WEIRD_MIND |
+F:ANIMAL | MORTAL | BASEANGBAND
+S:MULTIPLY
+D:It is six inches long.
+
+N:1009:Fire Phantom
+G:G:r
+I:120:10d100:20:90:40
+W:34:5:0:1200
+E:0:0:0:0:0:0
+O:0:0:100:0
+B:HIT:HURT:5d5
+F:UNIQUE | MALE | CAN_SPEAK
+F:FORCE_MAXHP | UNDEAD | NO_CONF | NO_SLEEP | REGENERATE | NO_STUN |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | PASS_WALL |
+F:MORTAL | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_6
+S:BR_FIRE | HOLD | CONF | SCARE | MIND_BLAST
+D:He's back from the grave for vengeance on those who
+D:burnt him. He has no mercy for those in his way.
+
+N:1010:The Insane Player
+G:p:v
+I:120:18d100:25:100:10
+W:36:2:1500:1200
+E:1:1:1:2:1:1
+O:20:20:20:20
+B:HIT:HURT:3d8
+F:UNIQUE | MALE | CAN_SPEAK | ATTR_MULTI |
+F:FORCE_MAXHP |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | DROP_SKELETON | DROP_CORPSE
+F:OPEN_DOOR | BASH_DOOR | RAND_25 |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR
+F:JOKEANGBAND | HAS_LITE
+S:1_IN_4 |
+S:TELE_TO | SHRIEK | SCARE
+D:Once a powerful adventurer, this poor fighter has seen a few too many
+D:software bugs in his time. Any shred of lucidity is long gone, but
+D:he still remains dangerous. He wanders aimlessly through the dungeon
+D:randomly striking at foes both real and imagined, all the while screaming
+D:out at the world that caused his condition.
+
+N:1011:Glaryssa, Succubus Queen
+G:U:W
+I:120:12d100:90:60:10
+W:41:3:3000:8000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:CLAW:HURT:5d5
+B:HIT:LOSE_STR:4d4
+B:TOUCH:EXP_80:8d3
+F:UNIQUE | FEMALE | CAN_SPEAK |
+F:FORCE_SLEEP | FORCE_MAXHP | NO_SLEEP | NO_CONF
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD |
+F:COLD_BLOOD | PASS_WALL | MOVE_BODY | NONLIVING |
+F:OPEN_DOOR | BASH_DOOR | IM_POIS | IM_COLD | DEMON | EVIL |
+F:ZANGBAND
+S:1_IN_3 |
+S:CAUSE_3 | HOLD | BLIND | BO_ACID | S_DEMON |
+S:FORGET | BO_NETH | MIND_BLAST | DARKNESS
+D:Drop dead gorgeous - literally.
+
+N:1012:Vermicious Knid
+G:j:s
+I:110:90d10:20:55:100
+W:44:2:1400:2100
+E:0:0:0:0:0:0
+O:40:30:20:10
+B:TOUCH:TERRIFY:4d6
+B:CRAWL:HURT:4d6
+B:ENGULF:HURT:4d6
+F:FRIENDS | EVIL | IM_COLD | SMART |
+F:COLD_BLOOD | NO_FEAR | WEIRD_MIND |
+F:OPEN_DOOR | ONLY_ITEM | DROP_2D2 | HURT_ROCK |
+F:NONLIVING |
+F:JOKEANGBAND | NO_CUT
+D:An amorphous shape that looks like wet grey clay with two pale eyes.
+D:It is totally silent as it oozes towards you.
+
+N:1013:Bone golem
+G:g:w
+I:120:35d100:20:170:50
+W:61:3:5000:23000
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:UN_BONUS:8d8
+B:HIT:UN_BONUS:8d8
+B:HIT:LOSE_STR:6d6
+B:HIT:LOSE_STR:6d6
+F:FORCE_SLEEP | FORCE_MAXHP | EMPTY_MIND |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | IM_FIRE | IM_ELEC | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:TELE_TO | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | BA_NETH | S_HI_UNDEAD
+D:A skeletal form, black as night, constructed from the bones of its
+D:previous victims.
+
+N:1014:Snake of Yig
+G:J:b
+I:120:48d10:25:80:30
+W:38:4:2000:600
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:BITE:POISON:3d12
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:RAND_25 | FRIENDS | AURA_FIRE |
+F:BASH_DOOR | MOVE_BODY | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | HAS_EGG | EVIL | IM_FIRE | IM_POIS |
+F:MORTAL | ZANGBAND
+S:1_IN_5 |
+S:BR_POIS
+D:It is a giant snake that drips with poison.
+
+N:1015:Bronze golem
+G:g:o
+E:2:1:2:4:1:1
+O:0:0:0:0
+I:120:40d100:25:170:50
+W:65:3:5500:26000
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+F:FORCE_MAXHP | FORCE_SLEEP | EMPTY_MIND | COLD_BLOOD |
+F:OPEN_DOOR | BASH_DOOR | IM_FIRE | IM_ELEC | IM_POIS | RES_TELE |
+F:NO_CONF | NO_SLEEP | NO_STUN | NO_FEAR | NONLIVING | BASEANGBAND | NO_CUT
+S:1_IN_3 |
+S:BO_PLAS | BA_FIRE | BR_FIRE | BA_ELEC | S_HI_DEMON | TELE_TO
+D:A gigantic four-armed animated bronze statue, glowing with great heat.
+
+N:1016:Dimensional shambler
+G:h:B
+I:120:40d10:30:68:255
+W:29:6:1100:400
+E:0:0:0:0:0:0
+O:20:40:40:0
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+B:HIT:HURT:3d5
+F:FORCE_MAXHP | FORCE_SLEEP | NO_FEAR | GOOD |
+F:ONLY_ITEM | DROP_2D2 | NONLIVING |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:IM_FIRE | IM_COLD | IM_POIS | NO_CONF | NO_SLEEP | RES_TELE |
+F:CTHANGBAND
+S:1_IN_3 |
+S:HEAL | HASTE | BLIND | CONF | SCARE | TPORT | BLINK
+D:A shabby humanoid with a wrinkled skin. It seems to shift
+D:in and out of existence as you watch.
+
+N:1017:Cultist
+G:p:G
+I:110:14d8:20:22:40
+W:17:1:1500:36
+E:1:1:1:2:1:1
+O:10:0:90:0
+B:HIT:HURT:4d3
+F:MALE |
+F:FORCE_SLEEP |
+F:DROP_1D2 | EVIL |
+F:DROP_SKELETON | DROP_CORPSE |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:MORTAL | CTHANGBAND | HAS_LITE
+S:1_IN_3 |
+S:HEAL | SCARE | CAUSE_2 |
+S:S_MONSTER | MIND_BLAST
+D:A robed humanoid dedicated to a demonic outer god.
+
+N:1018:Cult leader
+G:p:G
+I:120:52d14:20:60:10
+W:47:2:1800:1800
+E:1:1:1:2:1:1
+O:20:0:80:0
+B:HIT:HURT:6d4
+B:HIT:HURT:6d4
+F:MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_90 | DROP_2D2 |
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:DROP_SKELETON | DROP_CORPSE |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:MORTAL | CTHANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HEAL | BLIND | HOLD | CONF | CAUSE_3 |
+S:S_MONSTER | S_UNDEAD | S_DEMON | BA_CHAO | BRAIN_SMASH
+D:An evil priest, dressed all in black and devoted to one of the netherworld
+D:demons that call themselves "the outer gods".
+
+N:1019:Servitor of the outer gods
+G:H:y
+I:130:100d35:30:140:255
+W:41:6:2100:15000
+E:0:0:0:0:0:0
+O:10:20:70:0
+B:GAZE:TERRIFY:4d4
+B:HIT:HURT:8d6
+F:FORCE_SLEEP |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | NO_FEAR | REFLECTING |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NONLIVING |
+F:RES_TELE | ELDRITCH_HORROR | SHAPECHANGER | ATTR_MULTI |
+F:CTHANGBAND
+S:1_IN_3 |
+S:TELE_TO | BLIND | SCARE | CAUSE_2 | CAUSE_4 | BO_MANA |
+S:S_UNDEAD
+D:"Toad-like creatures which seemed constantly to be changing shape and
+D:appearance, and from whom emanated, by some means I could not distinguish,
+D:a ghostly ululation, a piping." August Derleth - "The Lurker at The
+D:Threshold".
+
+N:1020:Avatar of Nyarlathotep
+G:p:R
+I:120:25d25:20:70:20
+W:45:2:0:500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:HURT:5d5
+F:IM_POIS | IM_FIRE | IM_ELEC | IM_ACID | IM_COLD |
+F:NO_SLEEP | NO_FEAR | SHAPECHANGER | ELDRITCH_HORROR | NONLIVING |
+F:MALE | OPEN_DOOR | BASH_DOOR |
+F:CTHANGBAND | HAS_LITE
+D:The Crawling Chaos with a thousand forms. Nyarlathotep is amused at your
+D:puny attempts to kill him, and will keep coming back for another go
+D:until he gets bored with the game.
+
+N:1021:Thiazi, the Storm Giant
+G:P:B
+I:130:99d110:50:160:20
+W:78:2:0:45000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:ELEC:9d11
+B:HIT:HURT:9d11
+B:HIT:ELEC:9d11
+B:HIT:HURT:9d11
+F:UNIQUE | SUSCEP_COLD | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | RES_TELE | RES_NETH | RES_PLAS | MALE |
+F:ONLY_ITEM | DROP_2D2 | DROP_4D2 | DROP_GOOD | EVIL | AURA_ELEC |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | TAKE_ITEM | CAN_SPEAK |
+F:EVIL | IM_FIRE | IM_POIS | SUSCEP_COLD | GIANT | DEMON
+F:ZANGBAND | HAS_LITE
+S:1_IN_5 |
+S:BR_ELEC | BR_PLAS | BR_MANA | BLIND | TELE_TO | S_KIN | S_HI_DRAGON |
+S:HAND_DOOM | TELE_AWAY
+D:Thiazi is the greatest of all the Storm Giants: when travelling, he takes
+D:the form of a giant eagle. It was he who succeeded in kidnapping Iduna and
+D:her apples of youth from Asgard itself.
+
+N:1022:Hypnos, Lord of Sleep
+G:p:G
+I:130:51d99:20:150:10
+W:67:2:5000:36000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:TOUCH:LOSE_ALL:2d25
+B:GAZE:PARALYZE:1d20
+B:GAZE:TERRIFY:1d20
+B:GAZE:BLIND:1d20
+F:UNIQUE | MALE | CAN_SPEAK | ATTR_MULTI |
+F:NO_STUN | RES_DISE | RES_NEXU | CAN_FLY |
+F:FORCE_SLEEP | FORCE_MAXHP | EVIL | SMART | DROP_CORPSE
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD |
+F:NO_SLEEP | NO_CONF | NO_STUN | IM_POIS | IM_COLD | IM_FIRE | IM_ACID
+F:ZANGBAND | HAS_LITE
+S:1_IN_3
+S:BR_NEXU | BR_CHAO | HOLD | SLOW | BR_INER | BA_NUKE |
+S:MIND_BLAST | BRAIN_SMASH | CONF | BLIND | TELE_TO | HEAL |
+S:TELE_AWAY | TELE_LEVEL | TPORT | S_UNDEAD | S_DEMON | DRAIN_MANA
+D:"Young with the youth that is outside time, and with a handsome
+D:bearded face, curved, smiling lips, Olympian brow; and dense locks
+D:waving and poppy-crowned."
+
+N:1023:Blue dragon worm
+G:w:B
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ELEC |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_ELEC
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Sparks fly from its jaws.
+
+N:1024:White dragon worm
+G:w:W
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_COLD |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_COLD
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Its breath condenses in the air.
+
+N:1025:Green dragon worm
+G:w:G
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_POIS |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_POIS
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. You can smell foul gases
+D:on its breath.
+
+N:1026:Black dragon worm
+G:w:s
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ACID |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_ACID
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Acidic drool drips from its jaws.
+
+N:1027:Red dragon worm
+G:w:R
+I:100:10d15:10:40:80
+W:20:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_FIRE |
+F:MORTAL | BASEANGBAND | ATTR_MULTI
+S:MULTIPLY |
+S:1_IN_6 | BR_FIRE
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Smoke comes from its mouth.
+
+N:1028:Multi-hued dragon worm
+G:w:v
+I:100:10d20:10:40:80
+W:23:3:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:HURT:3d3
+B:CLAW:HURT:3d3
+B:BITE:HURT:3d5
+F:RAND_50 | RAND_25 | ATTR_MULTI |
+F:DROP_60 | ONLY_GOLD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | DRAGON | IM_ELEC | IM_FIRE | IM_ACID | IM_COLD | IM_POIS |
+F:MORTAL | BASEANGBAND
+S:MULTIPLY |
+S:1_IN_6 | BR_ELEC | BR_COLD | BR_FIRE | BR_ACID | BR_POIS
+D:You thought dragons used eggs, but this worm has the scales, and the bad
+D:breath, and the fiery eyes, of a real dragon. Its scales shimmer different
+D:colours as you watch.
+
+N:1029:The Minotaur of the Labyrinth
+G:H:s
+I:130:150d10:13:25:10
+W:40:2:17500:3100
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:BUTT:HURT:4d6
+B:BUTT:HURT:4d6
+B:BUTT:HURT:3d6
+B:BUTT:HURT:3d6
+F:BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:EVIL | UNIQUE | SPECIAL_GENE |
+F:MORTAL | BASEANGBAND
+D:It is a cross between a human and a bull.
+
+N:1030:The Sandworm Queen
+G:w:v
+I:120:30d20:10:40:80
+W:30:3:4500:12
+E:0:0:0:0:1:0
+O:30:60:0:10
+B:CLAW:ACID:5d4
+B:CLAW:POISON:5d4
+B:BITE:FIRE:5d4
+B:BITE:ELEC:5d4
+F:FORCE_MAXHP | DROP_60 | ONLY_ITEM | DROP_GREAT | DROP_GOOD | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | FEMALE | POWERFUL | SPECIAL_GENE | REFLECTING |
+F:EVIL | ANIMAL | IM_ELEC | IM_FIRE | IM_ACID | IM_POIS | ESCORT |
+F:MORTAL | BASEANGBAND | EMPTY_MIND | UNIQUE | NO_CONF
+S:1_IN_2 | BR_POIS | S_KIN
+D:Queen and mother of the sandworms, fear her and her prolific children.
+
+N:1031:Sandworm
+G:w:y
+I:115:10d15:10:40:80
+W:27:6:4500:12
+E:0:0:0:0:1:0
+O:0:0:0:0
+B:CLAW:POISON:4d4
+B:CLAW:POISON:4d4
+B:CLAW:POISON:4d4
+B:BITE:HURT:5d5
+F:RAND_25 |
+F:FORCE_MAXHP | DROP_CORPSE | POWERFUL |
+F:EVIL | IM_ELEC | IM_FIRE | IM_POIS | EMPTY_MIND |
+F:MORTAL | BASEANGBAND
+S:MULTIPLY
+D:Offbreed of the Sandworm Queen, they are harmless alone...
+
+
+N:1032:Tik'srvzllat
+G:G:v
+I:142:180d100:200:170:0
+W:127:2:1000:350000
+E:1:1:1:2:1:1
+O:50:0:50:0
+B:GAZE:UN_BONUS:10d10
+B:GAZE:TIME:10d10
+B:GAZE:INSANITY:10d10
+B:GAZE:INSANITY:10d5
+F:UNIQUE | SPECIAL_GENE |
+F:FORCE_MAXHP | POWERFUL |
+F:ONLY_ITEM | DROP_3D2 | DROP_4D2 | DROP_GOOD | DROP_GREAT |
+F:INVISIBLE | COLD_BLOOD | PASS_WALL | WEIRD_MIND |
+F:EVIL | UNDEAD | IM_COLD | IM_FIRE | IM_ACID | IM_ELEC | AURA_COLD |
+F:IM_POIS | RES_NETH | BASEANGBAND | NO_CUT
+S:1_IN_2 |
+S:S_UNDEAD | S_DEMON | S_DRAGON |
+S:S_UNIQUE | S_WRAITH | S_HI_DEMON |
+S:S_HI_UNDEAD | S_HI_DRAGON | S_KIN |
+S:BR_DISE | BA_NETH
+D:A disembodied and barely sentient mind, Tik'srvzllat floated
+D:through the void for eons before being awakened by sorcery, pulled
+D:into the nether realm, and shaped into the being you see before you.
+D:A flickering purple outline of a sphere, with eerie yellow-purple
+D:mist circling rapidly around it, Tik'srvzllat threatens your sanity
+D:with its appearance alone.
+
+N:1033:The Glass Golem
+G:g:W
+I:130:100d15:200:170:0
+W:52:4:0:2000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:HIT:INSANITY:5d6
+B:HIT:INSANITY:6d6
+B:HIT:INSANITY:7d6
+B:HIT:INSANITY:6d6
+F:COLD_BLOOD | EMPTY_MIND | KILL_WALL | FORCE_MAXHP | POWERFUL | SPECIAL_GENE |
+F:BASH_DOOR | IM_COLD | IM_ACID | IM_FIRE | IM_ELEC | IM_POIS | NONLIVING |
+F:ESCORTS | ESCORT | UNIQUE | NO_SLEEP | NO_CONF | NO_FEAR | NO_STUN
+F:CHAR_MULTI | CAN_FLY | BASEANGBAND | NO_CUT
+S:1_IN_4
+S:BR_CONF | BR_LITE | BR_DARK | BR_WALL
+S:S_KIN | TELE_LEVEL | SHRIEK
+D:One of the last creations of the petty dwarves of Ludarin, its existence
+D:explains their destruction. A creation of finest glass, the body of this
+D:creature bends and amplifies light in a way that makes you unsure of its
+D:position. You feel somewhat dizzy as the radiant light reflects off the
+D:walls, the ceiling and your gear.
+
+N:1034:The White Balrog
+G:U:W
+I:120:25d100:20:100:100
+W:50:3:12000:25000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:COLD:4d12
+B:HIT:COLD:4d12
+B:CRUSH:HURT:3d12
+B:TOUCH:UN_POWER
+F:UNIQUE | FORCE_SLEEP | FORCE_MAXHP | AURA_COLD | CAN_FLY |
+F:ONLY_ITEM | DROP_2D2 | DROP_GOOD | NONLIVING | DROP_RANDART
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY | SMART |
+F:EVIL | DEMON | IM_COLD | NO_CONF | KILL_WALL | BASEANGBAND |
+F:HAS_LITE | SPECIAL_GENE
+S:1_IN_4 |
+S:BLIND | CONF | BRAIN_SMASH |
+S:BR_COLD | BO_COLD | BA_NETH | S_UNDEAD | S_DEMON
+D:It is a massive humanoid demon wreathed in frost, wielding a cruel looking
+D:pike in its hands.
+
+N:1035:Golgarach, the Living Rock
+G:#:W
+I:120:50d30:20:100:40
+W:45:2:0:1500
+E:0:0:0:0:0:0
+O:60:0:40:0
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+B:HIT:HURT:4d6
+F:FORCE_SLEEP | COLD_BLOOD | EMPTY_MIND | PASS_WALL | KILL_BODY | ESCORT |
+F:BASH_DOOR | IM_COLD | IM_ACID | IM_ELEC | IM_POIS | NONLIVING | UNIQUE
+F:HURT_ROCK | NO_CONF | NO_SLEEP | NO_CUT | CHAR_MULTI | BASEANGBAND | SPECIAL_GENE
+F:NO_CUT | DROP_RANDART
+S:1_IN_10 | S_KIN | BO_ACID | BA_FIRE
+D:Deep in the heart of the earth, even the rock itself is sentient
+D:and has learned to despise intruders.
+
+N:1036:Atlas, the Titan
+G:P:s
+I:130:100d100:30:160:15
+W:76:3:70000:37000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:SHATTER:13d13
+B:HIT:CONFUSE:13d13
+B:HIT:SHATTER:13d13
+B:HIT:CONFUSE:13d13
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP |
+F:ONLY_ITEM | DROP_GOOD | DROP_4D2 | KILL_BODY | KILL_WALL |
+F:SMART | TAKE_ITEM | OPEN_DOOR | BASH_DOOR | DROP_CORPSE |
+F:EVIL | GIANT | HURT_ROCK | BASEANGBAND | HAS_LITE |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+D:The strongest of all the Titans. Legend has it that he once held the sky
+D:on his shoulders; and the mountain range that now does so is named after him.
+
+N:1037:Kronos, Lord of the Titans
+G:P:v
+I:130:130d100:30:150:15
+W:87:3:80000:42000
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+B:HIT:CONFUSE:12d12
+E:1:1:1:2:1:1
+O:0:100:0:0
+F:UNIQUE | MALE |
+F:FORCE_SLEEP | FORCE_MAXHP | MOVE_BODY |
+F:ONLY_ITEM | DROP_4D2 | DROP_3D2 | DROP_GOOD |
+F:SMART | TAKE_ITEM | BASH_DOOR | HAS_LITE |
+F:EVIL | GIANT | ESCORT | BASEANGBAND | DROP_CORPSE |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_POIS | IM_ELEC
+S:1_IN_3 |
+S:BR_FIRE | BR_COLD | BR_SHAR | BR_SOUN | ROCKET |
+S:S_MONSTERS | S_KIN | TELE_TO | HEAL
+D:The lord of the Titans, he has broken loose from his confinement in
+D:the nether hells to seek revenge on the world.
+
+N:1038:Water hound
+G:Z:r
+I:110:12d6:30:30:0
+W:43:1:600:150
+B:BITE:HURT:1d6
+B:CLAW:HURT:1d4
+B:CLAW:HURT:1d4
+E:0:1:0:2:1:0
+O:0:0:0:0
+F:FORCE_SLEEP | BASH_DOOR | DROP_CORPSE | FRIENDS
+F:ANIMAL | IM_COLD | MORTAL | BASEANGBAND | RES_WATE | NO_CUT
+S:1_IN_5 | BA_WATE
+D:The sound of a hundred waterfalls rushes through your ears as
+D:a huge wave of water, vaguely hound-shaped, rushes towards you.
+
+N:1039:Improv, the mighty MoLD
+G:m:v
+I:150:170d100:40:140:0
+W:127:2:3000:50000
+E:3:0:3:6:1:0
+O:20:20:20:20
+B:SPORE:UN_BONUS:10d10
+B:SPORE:EXP_80:10d10
+B:SPORE:TIME:10d10
+B:SPORE:TIME:10d10
+F:UNIQUE | NEVER_MOVE | CAN_SWIM |
+F:FORCE_MAXHP | WEIRD_MIND | DROP_CORPSE |
+F:REFLECTING | AURA_ELEC | ONLY_ITEM | DROP_4D2 |
+F:DROP_GOOD | DROP_GREAT | FORCE_SLEEP | RES_NETH |
+F:SMART | POWERFUL | RES_TELE | REGENERATE | CAN_FLY |
+F:DG_CURSE | WYRM_PROTECT | EVIL |
+F:IM_ACID | IM_FIRE | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NO_STUN |
+F:JOKEANGBAND | HAS_LITE | RES_WATE | NO_CUT
+S:1_IN_2 |
+S:S_HI_DRAGON | S_KIN | BR_DISI | HEAL | TPORT |
+S:TELE_LEVEL | TELE_TO
+D:An assistant to DarkGod, Improv has chosen the form of a dense
+D:purple smog for his incarnation into Middle-earth. It travels the
+D:dungeons, killing software bugs and creating random artifacts for
+D:guests to find.
+
+N:1040:Emperor Mimic
+G:m:y
+I:120:50d50:30:60:100
+W:40:3:100:200
+E:0:0:0:0:0:0
+O:25:25:25:25
+B:HIT:POISON:5d5
+B:HIT:POISON:5d5
+B:HIT:POISON:5d5
+B:HIT:POISON:5d5
+F:MIMIC | UNIQUE
+F:FORCE_SLEEP |
+F:EMPTY_MIND | COLD_BLOOD |
+F:IM_ACID | IM_FIRE | IM_ELEC | IM_COLD | IM_POIS |
+F:NO_CONF | NO_SLEEP | NO_FEAR | BASEANGBAND | NO_CUT
+S:1_IN_1 |
+S:BLIND | CONF | SCARE | CAUSE_4 | CAUSE_3 | FORGET |
+S:BA_ACID | BA_FIRE | BA_COLD | BA_ELEC |
+S:S_MONSTER | S_KIN | SHRIEK | BRAIN_SMASH | TRAPS
+D:A strange creature that disguises itself as an object to lure
+D:unsuspecting adventurers within reach of its venomous claws.
+
+N:1041:Melinda Proudfoot
+G:h:v
+I:110:1d1:40:250:3
+W:1:1:730:0
+E:0:1:1:2:1:1
+O:0:0:0:1
+F:FEMALE | CAN_SPEAK
+F:FORCE_MAXHP | SPECIAL_GENE
+F:NEVER_MOVE | NEVER_BLOW | GOOD | NO_TARGET
+F:MORTAL | BASEANGBAND | UNIQUE | NEUTRAL | NO_DEATH
+D:She seems to seek someone, you may help...
+
+N:1042:Thrain, the King Under the Mountain
+G:h:B
+I:110:1d1:40:250:3
+W:60:1:730:0
+E:0:1:1:2:1:1
+O:0:0:0:1
+F:MALE | CAN_SPEAK
+F:FORCE_MAXHP | SPECIAL_GENE
+F:NEVER_MOVE | NEVER_BLOW | GOOD | NO_TARGET
+F:MORTAL | BASEANGBAND | UNIQUE | NEUTRAL | NO_DEATH
+D:He must have suffered horrible tortures...
+
+N:1043:Fire golem
+G:g:r
+I:115:3d20:50:50:10
+W:0:3:100:0
+E:1:1:1:2:1:1
+O:0:0:0:0
+B:HIT:HURT:2d6
+B:HIT:HURT:2d6
+B:HIT:FIRE:3d6
+B:HIT:FIRE:3d6
+F:BASH_DOOR | AURA_FIRE | HAS_LITE
+F:IM_FIRE | SPECIAL_GENE
+F:NO_CONF | NO_SLEEP | NO_FEAR | NONLIVING | NO_STUN
+F:MORTAL | BASEANGBAND | NO_CUT | AI_PLAYER
+S:1_IN_10 |
+S:BR_FIRE
+D:A sentient mass of pure fire.
+
+N:1044:Melkor, Lord of Darkness
+G:G:v
+I:150:300d300:100:150:0
+W:150:1:200000:60000
+E:1:1:1:2:1:1
+O:25:25:25:25
+B:HIT:ABOMINATION:3d10
+B:HIT:TIME:24d10
+B:HIT:INSANITY:24d10
+B:HIT:LOSE_ALL:24d10
+F:UNIQUE | CAN_SPEAK | MALE |
+F:FORCE_MAXHP | SPIRIT
+F:ONLY_ITEM | DROP_1D2 | DROP_2D2 | DROP_3D2 | DROP_4D2 |
+F:DROP_GOOD | DROP_GREAT | DROP_CHOSEN | RES_NETH |
+F:SMART | KILL_WALL | MOVE_BODY | AURA_FIRE |
+F:REGENERATE | POWERFUL | SPECIAL_GENE | CAN_FLY | KILL_TREES
+F:EVIL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
+F:NO_CONF | NO_STUN | NO_SLEEP | NO_FEAR | RES_TELE | BASEANGBAND |
+S:1_IN_4 |
+S:BRAIN_SMASH |
+S:BA_MANA | BO_MANA | BA_NETH | BA_CHAO | BA_DARK | ANIM_DEAD | S_KIN |
+S:S_MONSTERS | S_UNIQUE | S_HI_DEMON | S_HI_UNDEAD | S_HI_DRAGON |
+S:BR_NETH | BR_DISI | HAND_DOOM | S_WRAITH | HEAL | BRAIN_SMASH |
+S:DRAIN_MANA | TELE_TO | DARKNESS | SHRIEK
+D:He was the most powerful of the Valar, the equal of Manwe.
+D:You banned him here, in the Void, and now you must destroy him
+D:forever. However here in the Void, his spirit gained much power
+D:for he is closer to the Flame Imperishable. He is coming to you in pure
+D:madness, which makes him even more dangerous. You are on the verge
+D:of dying!
+
+## Here are the Spirits, inhabitants of the Void, all called "Spirit" making it hard to know what we are up against ##
+## Note: I am nasty heheh :)
+
+# Spirit of nether
+N:1045:Spirit
+G:G:v
+I:120:40d80:30:50:20
+W:128:2:0:5000
+E:0:1:1:2:0:0
+O:25:0:75:0
+B:TOUCH:EXP_80:10d10
+B:TOUCH:EXP_80:10d10
+F:SPIRIT | BASEANGBAND | NEVER_MOVE | EMPTY_MIND | NO_CUT |
+F:COLD_BLOOD | INVISIBLE
+S:1_IN_1 |
+S:BA_NETH
+D:This strange, almost intangible spirit keeps assaulting you!
+
+# Spirit of annoyance (hahaha AI_ANNOY and MULTIPLY)
+N:1046:Spirit
+G:G:B
+I:130:40d20:30:70:70
+W:144:4:0:500
+E:0:0:0:0:0:0
+O:5:5:5:0
+B:TOUCH:POISON:10d10
+B:CRAWL:POISON:10d10
+B:CRAWL:EAT_ITEM:10d9
+B:BITE:UN_BONUS:9d9
+F:SPIRIT | BASEANGBAND | WEIRD_MIND | FRIENDS |
+F:AI_ANNOY | PASS_WALL
+S:MULTIPLY
+D:These things multiply at an apparently unstoppable rate!
+
+# Spirit of movement
+N:1047:Spirit
+G:G:B
+I:130:10d80:50:65:10
+W:132:1:10:5500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:TOUCH:LOSE_DEX:2d3
+B:TOUCH:PARALYZE:1d12
+B:TOUCH:PARALYZE:1d12
+F:SPIRIT | BASEANGBAND | NO_SLEEP | PASS_WALL | WEIRD_MIND
+S:1_IN_2 |
+S:SLOW | BLINK | HOLD | HASTE
+D:Coming towards you quickly, it seems intent on moving faster than you.
+
+# Spirit of confusion
+N:1048:Spirit
+G:G:v
+I:120:40d80:80:85:0
+W:135:2:0:5500
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:ENGULF:HALLU:16d8
+B:ENGULF:HALLU:16d8
+B:ENGULF:CONFUSE:16d8
+B:ENGULF:CONFUSE:16d8
+F:SPIRIT | BASEANGBAND | RES_NEXU | AURA_ELEC | IM_FIRE | IM_ELEC |
+F:EMPTY_MIND | BASH_DOOR | POWERFUL | CAN_FLY | ATTR_MULTI |
+F:NO_CONF | NO_SLEEP | NO_FEAR | NO_CUT
+S:1_IN_3 |
+S:BR_CHAO | BR_NEXU | BR_CONF
+D:A swirling mass, constantly changing its appearance.
+
+# Spirit of brawn
+N:1049:Spirit
+G:G:U
+I:130:140d100:50:180:30
+W:145:3:10000:8000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:SHATTER:18d18
+B:HIT:CONFUSE:18d18
+B:HIT:SHATTER:18d18
+B:HIT:CONFUSE:18d18
+F:SPIRIT | BASEANGBAND | DROP_4D2 | KILL_BODY | KILL_WALL |
+F:OPEN_DOOR | BASH_DOOR | DROP_CORPSE | KILL_TREES |
+F:EVIL | GIANT | HURT_ROCK | BASEANGBAND | HAS_LITE |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+D:Strong and swarthy, this spirit could bend metal with his bare hands.
+
+# Spirit of Wyrms
+N:1050:Spirit
+G:G:v
+I:130:151d151:50:190:50
+W:147:8:10000:87500
+E:0:1:0:6:1:0
+O:50:50:0:0
+B:CLAW:HURT:10d15
+B:CLAW:HURT:10d15
+B:BITE:HURT:14d18
+B:BITE:HURT:14d18
+F:SPIRIT | FORCE_MAXHP | MOVE_BODY | AURA_FIRE | REFLECTING | AURA_ELEC |
+F:ONLY_ITEM | DROP_2D2 | DROP_3D2 | DROP_4D2 | DROP_GOOD | AURA_COLD |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | RES_NETH | RES_DISE |
+F:DRAGON | GOOD | RES_TELE | DROP_CORPSE | KILL_TREES |
+F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
+F:RES_NEXU | RES_PLAS | CAN_FLY | BASEANGBAND | HAS_LITE | NO_CUT
+S:1_IN_3 |
+S:S_HI_DRAGON | S_DRAGON | S_KIN |
+S:BR_ACID | BR_ELEC | BR_FIRE |
+S:BR_COLD | BR_POIS | BR_NETH | BR_LITE | BR_DARK |
+S:BR_CONF | BR_SOUN | BR_CHAO | BR_DISE | BR_NEXU |
+S:BR_TIME | BR_INER | BR_GRAV | BR_SHAR | BR_PLAS |
+S:BR_WALL | BR_MANA | BR_DISI
+D:This spirit bears a remarkable similarity to some of the most powerful
+D:types of dragonkind found in Middle-earth. It appears to be even more
+D:fearsome though!
+
+# Spirit of snakes
+N:1051:Spirit
+G:G:g
+I:130:150d100:40:80:20
+W:133:3:90:750
+E:1:1:1:2:1:1
+O:25:20:25:20
+B:BITE:POISON:15d15
+B:BITE:POISON:15d15
+B:BITE:LOSE_ALL:10d12
+F:SPIRIT | CAN_SWIM | IM_POIS | IM_ACID |
+F:DROP_60 | DROP_2D2 | FRIENDS | DROP_CORPSE |
+F:OPEN_DOOR | BASH_DOOR | EVIL | BASEANGBAND
+S:1_IN_4 |
+S:BA_POIS | S_MONSTER | SCARE | HOLD
+D:It slides towards you, a horrible scaly, slidy thing.
+
+# Spirit of seeing
+N:1052:Spirit
+G:G:v
+I:130:95d110:60:130:10
+W:141:3:60:50000
+E:0:0:0:0:0:0
+O:0:0:0:0
+B:GAZE:UN_BONUS:12d12
+B:GAZE:UN_POWER:12d10
+B:GAZE:INSANITY:12d14
+B:GAZE:LOSE_ALL:6d6
+F:SPIRIT | BASH_DOOR | EVIL | IM_POIS |
+F:CAN_FLY | BASEANGBAND
+S:1_IN_2 |
+S:BLIND | CONF | FORGET | SCARE | DRAIN_MANA | BRAIN_SMASH |
+S:BA_DARK | BO_MANA | BA_NETH | BA_ACID | BA_FIRE | BA_COLD
+D:You will find it difficult to avoid being seen by this spirit! And
+D:once it has you in its sight, beware!
+
+# Spirit of unseeing
+N:1053:Spirit
+G:.:W
+I:120:55d50:20:130:80
+W:142:6:60:4000
+E:0:0:0:0:0:0
+O:10:0:90:0
+B:TOUCH:UN_BONUS:12d12
+B:TOUCH:UN_POWER:12d10
+B:TOUCH:INSANITY:12d14
+B:TOUCH:LOSE_ALL:6d6
+F:SPIRIT | CAN_FLY | REFLECTING |
+F:SMART | BASH_DOOR | COLD_BLOOD | INVISIBLE | EMPTY_MIND |
+F:EVIL | BASEANGBAND | CHAR_MULTI | CHAR_CLEAR | ATTR_CLEAR
+S:1_IN_3 |
+S:DRAIN_MANA | BLINK | BLIND | SCARE | CONF |
+S:HEAL | TELE_AWAY | DARKNESS | TRAPS | FORGET | SHRIEK
+D:Hopefully you will kill this spirit before you realise it exists.
+
+# Spirit of ickyness
+N:1054:Spirit
+G:G:g
+I:130:80d80:30:60:10
+W:138:4:300:40000
+E:0:0:0:0:0:0
+O:40:30:10:10
+B:CRAWL:POISON:12d14
+B:CRAWL:EAT_FOOD:12d14
+B:TOUCH:ACID:13d15
+B:HIT:HURT:13d15
+F:SPIRIT | BASEANGBAND |
+F:EMPTY_MIND | OPEN_DOOR | BASH_DOOR |
+F:EVIL | IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS |
+F:EMPTY_MIND
+S:1_IN_4 |
+S:DRAIN_MANA | BLIND | CONF | SCARE | S_KIN
+D:A horrible slimy spirit, that seems to ooze evilness. I wouldn't get
+D:too close to it if I were you.
+
+# Spirit of friendship
+N:1055:Spirit
+G:G:W
+I:130:35d100:40:150:100
+W:136:3:200:10000
+E:0:1:0:2:1:0
+O:50:50:0:0
+B:BITE:HURT:12d12
+B:BITE:HURT:12d12
+B:BITE:HURT:12d8
+B:BITE:HURT:12d8
+F:SPIRIT | BASEANGBAND |
+F:ESCORT | ESCORTS |
+F:OPEN_DOOR | BASH_DOOR
+S:1_IN_2 |
+S:S_KIN
+D:This spirit appears to have lots of friends!
+
+# Spirit of abomination
+N:1056:Spirit
+G:G:d
+I:130:40d80:30:125:125
+W:134:2:200:5000
+E:0:0:0:0:0:0
+O:50:0:50:0
+B:WAIL:TERRIFY:8d9
+B:HIT:HURT:10d10
+B:HIT:ABOMINATION:6d10
+B:HIT:ABOMINATION:6d10
+F:SPIRIT | BASEANGBAND |
+F:EVIL | UNDEAD | IM_POIS | IM_COLD | NO_CONF | NO_SLEEP |
+F:COLD_BLOOD | HURT_LITE | NO_CUT
+S:1_IN_3 |
+S:SCARE | HOLD | DARKNESS | SCARE
+D:It seems to have been woken from the dead, this spirit. It lumbers
+D:towards you, seeking to turn you into a form as hideous as its own!
+
+### Here come the spirits of <player stat> ###
+#
+# Spirit of strength
+N:1057:Spirit
+G:G:u
+I:120:140d100:50:180:170
+W:129:2:10000:8000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:LOSE_STR:4d8
+B:HIT:LOSE_STR:4d8
+B:HIT:LOSE_STR:4d8
+F:SPIRIT | BASEANGBAND | DROP_2D2 | KILL_BODY | KILL_WALL |
+F:BASH_DOOR | EVIL | GIANT | HURT_ROCK |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+D:It is coming for you, this massive imposing tower of strength.
+D:It appears almost unstoppable!
+
+# Spirit of intelligence
+N:1058:Spirit
+G:G:r
+I:140:80d100:50:100:10
+W:131:2:10000:8000
+E:1:1:1:2:1:1
+O:0:0:100:0
+B:HIT:LOSE_INT:4d8
+B:HIT:LOSE_INT:4d8
+B:HIT:LOSE_INT:4d8
+F:EVIL | SPIRIT | BASEANGBAND | DROP_2D2 |
+F:OPEN_DOOR | SMART |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+S:1_IN_2 |
+S:HASTE | TPORT | TELE_TO | BLIND | CONF |
+S:BO_MANA | BO_FIRE | BO_COLD | BO_ELEC |
+D:This spirit looks very clever, cunning almost.
+
+# Spirit of wisdom
+N:1059:Spirit
+G:G:G
+I:130:120d100:50:200:130
+W:137:2:10000:8000
+E:1:1:1:2:1:1
+O:0:50:50:0
+B:HIT:LOSE_WIS:4d8
+B:HIT:LOSE_WIS:4d8
+B:HIT:LOSE_WIS:4d8
+F:EVIL | SPIRIT | BASEANGBAND | DROP_2D2 |
+F:OPEN_DOOR |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+S:1_IN_2 |
+S:HEAL | MIND_BLAST | CAUSE_4 | SCARE |
+S:DRAIN_MANA | BRAIN_SMASH | FORGET |
+D:This spirit has something of a priestly look about it.
+
+# Spirit of dexterity
+N:1060:Spirit
+G:G:W
+I:160:120d100:50:160:50
+W:139:2:10000:8000
+E:1:1:1:2:1:1
+O:0:50:25:25
+B:HIT:LOSE_DEX:4d8
+B:HIT:LOSE_DEX:4d8
+B:HIT:LOSE_DEX:4d8
+F:EVIL | SPIRIT | BASEANGBAND | DROP_2D2 |
+F:OPEN_DOOR | SMART |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+S:1_IN_1 |
+S:ARROW_4
+D:This spirit moves almost too quickly for you to see him.
+
+# Spirit of constitution
+N:1061:Spirit
+G:G:s
+I:120:140d100:50:180:50
+W:143:2:10000:8000
+E:1:1:1:2:1:1
+O:0:50:0:50
+B:HIT:LOSE_CON:4d8
+B:HIT:LOSE_CON:4d8
+B:HIT:LOSE_CON:4d8
+F:EVIL | SPIRIT | BASEANGBAND | DROP_2D2 | BASH_DOOR |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+D:This spirit moves slower than most, but thunders on and on
+D:towards you.
+
+# Spirit of charisma
+N:1062:Spirit
+G:G:b
+I:140:80d100:50:120:90
+W:146:2:10000:8000
+E:1:1:1:2:1:1
+O:70:10:10:10
+B:HIT:LOSE_CHR:4d8
+B:HIT:LOSE_CHR:4d8
+B:HIT:LOSE_CHR:4d8
+F:SPIRIT | BASEANGBAND | DROP_2D2 |
+F:OPEN_DOOR | EVIL | TAKE_ITEM |
+F:IM_FIRE | IM_COLD | IM_ACID | IM_ELEC | IM_POIS
+S:1_IN_2 |
+S:TRAPS | ARROW_3 | BLINK | TELE_TO | CONF
+D:There is something attractive about this spirit, and it seems
+D:to have a full purse.
+
+### Here come some elemental spirits ###
+#
+# Spirit of flickering fire
+N:1063:Spirit
+G:G:r
+I:120:60d100:50:65:80
+W:130:1:5:6000
+E:1:1:1:2:1:1
+O:25:60:0:15
+B:HIT:FIRE:10d8
+B:HIT:FIRE:10d8
+B:HIT:FIRE:10d8
+F:SPIRIT | BASEANGBAND | AI_ANNOY | IM_FIRE | AURA_FIRE | HAS_LITE
+S:1_IN_2 |
+S:BO_FIRE | BA_FIRE
+D:Flickering towards you, and then away, this spirit will burn you badly!
+
+# Spirit of icy cold
+N:1064:Spirit
+G:G:w
+I:120:60d100:50:65:80
+W:148:1:5:6000
+E:1:1:1:2:1:1
+O:25:60:0:15
+B:HIT:COLD:10d8
+B:HIT:COLD:10d8
+B:HIT:COLD:10d8
+F:SPIRIT | BASEANGBAND | IM_COLD | AURA_COLD |
+F:COLD_BLOOD | BASH_DOOR
+S:1_IN_2 |
+S:BO_COLD | BA_COLD
+D:The temperature around you drops as soon as you set eyes on this spirit.
+
+# Spirit of corrosion (acid)
+N:1065:Spirit
+G:G:s
+I:120:60d100:50:65:80
+W:146:1:5:6000
+E:1:1:1:2:1:1
+O:25:60:0:15
+B:HIT:ACID:10d8
+B:HIT:ACID:10d8
+B:HIT:ACID:10d8
+F:SPIRIT | BASEANGBAND | IM_ACID | BASH_DOOR | KILL_TREES
+S:1_IN_2 |
+S:BO_ACID | BA_ACID
+D:The very fabric of the void heals itself where this spirit walks.
+
+# Spirit of shocking (electricity)
+N:1066:Spirit
+G:G:b
+I:120:60d100:50:65:80
+W:149:1:5:6000
+E:1:1:1:2:1:1
+O:25:60:0:15
+B:HIT:ELEC:10d8
+B:HIT:ELEC:10d8
+B:HIT:ELEC:10d8
+F:SPIRIT | BASEANGBAND | IM_ELEC | AURA_ELEC | BASH_DOOR
+S:1_IN_2 |
+S:BO_ELEC | BA_ELEC
+D:The air crackles as this spirit approaches, and you smell singed flesh.
+
+# Spirit of Valaraukar (Balrogs)
+N:1067:Spirit
+G:G:v
+I:130:130d100:100:140:10
+W:149:1:170:43000
+E:1:1:1:2:1:1
+O:0:100:0:0
+B:HIT:FIRE:11d12
+B:HIT:FIRE:11d12
+B:CRUSH:HURT:10d12
+B:TOUCH:UN_POWER
+F:SPIRIT | CAN_FLY | KILL_WALL | AURA_FIRE | NONLIVING |
+F:ONLY_ITEM | DROP_2D2 | EVIL | DEMON |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL | MOVE_BODY |
+F:IM_FIRE | IM_ELEC | BASEANGBAND | HAS_LITE
+S:1_IN_3 |
+S:BLIND | CONF | SCARE | BR_FIRE
+D:Carrying a whip of fire, this spirit looks not dissimilar to a certain
+D:Balrog.
+
+# Spirit of shadows
+N:1068:Spirit
+G:G:d
+I:130:30d100:70:150:4
+W:140:4:2300:10000
+E:1:1:1:2:1:1
+O:20:80:0:0
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:TOUCH:EXP_80:20d8
+B:TOUCH:EXP_40:20d8
+F:SPIRIT | BASEANGBAND | REFLECTING | REGENERATE |
+F:IM_ACID | IM_ELEC | IM_COLD | IM_FIRE | IM_POIS | RES_TELE |
+F:TAKE_ITEM | OPEN_DOOR | BASH_DOOR | SMART | POWERFUL
+S:1_IN_3 |
+S:BLIND | HEAL | BA_DARK | HASTE | CONF
+D:Deriving his strength from the shadows, this spirit
+D:steals only for the challenge.
+
+# Spirit of vampire or something
+N:1069:Spirit
+G:G:W
+I:130:50d50:30:90:10
+W:143:2:1700:18000
+E:1:1:1:2:1:1
+O:0:70:30:0
+B:HIT:HURT:10d9
+B:HIT:HURT:9d9
+B:BITE:EXP_80:9d9
+B:BITE:EXP_80:9d9
+F:SPIRIT | FORCE_SLEEP | CAN_FLY |
+F:DROP_60 | DROP_4D2 |
+F:COLD_BLOOD | OPEN_DOOR | BASH_DOOR | REGENERATE | RES_TELE |
+F:EVIL | UNDEAD | IM_COLD | IM_POIS | HURT_LITE |
+F:NO_CONF | NO_SLEEP | BASEANGBAND | NO_CUT | SPIRIT
+S:1_IN_3 |
+S:BLIND | HOLD | SCARE | CAUSE_3 | CAUSE_4 | DRAIN_MANA |
+S:BRAIN_SMASH | DARKNESS | BO_NETH
+D:Your blood curdles and your bones chill as this spirit approaches.
+
+# Spirit of unresistability (hehehehe)
+N:1070:Spirit
+G:G:v
+I:140:40d100:40:70:20
+W:149:4:1200:20000
+E:1:1:1:2:1:1:
+O:0:0:0:100
+B:HIT:SHATTER:18d10
+B:HIT:SHATTER:18d10
+B:HIT:LOSE_ALL:8d8
+B:TOUCH:UN_POWER
+F:BASEANGBAND | SPIRIT | SMART |
+F:OPEN_DOOR | BASH_DOOR | POWERFUL |
+F:RES_NEXU | RES_NETH |
+F:NO_CONF | NO_SLEEP | NO_FEAR |
+F:IM_POIS | IM_ELEC | IM_ACID | IM_COLD |
+S:1_IN_2 |
+S:BA_MANA | BR_PLAS | BR_TIME | ROCKET | HAND_DOOM | FORGET | BA_WATE
+D:This spirit appears to be afraid of very little, and confident in its
+D:ability to destroy you.
+
+# Spirit of time
+N:1071:Spirit
+G:G:G
+I:130:80d100:40:110:0
+W:150:3:800:50000
+E:0:1:0:2:1:0
+O:0:0:0:0
+B:TOUCH:TIME:6d12
+B:TOUCH:TIME:6d12
+B:TOUCH:TIME:6d12
+B:TOUCH:TIME:6d12
+F:OPEN_DOOR | BASH_DOOR | DROP_SKELETON | DROP_CORPSE |
+F:ANIMAL | NO_CONF | NO_SLEEP |
+F:SPIRIT | BASEANGBAND
+S:1_IN_2 |
+S:BR_TIME | SLOW | HASTE | HOLD
+D:All at once you see that which is to come and that which has gone before.
+
+# Spirit of Gold
+N:1072:Spirit
+G:G:y
+I:130:50d80:20:110:100
+W:130:4:80:8000
+E:0:1:0:2:1:0
+O:100:0:0:0
+B:TOUCH:EAT_GOLD:7d15
+B:TOUCH:EAT_GOLD:7d15
+B:HIT:POISON:6d12
+B:HIT:POISON:6d12
+F:ONLY_GOLD | SPIRIT | BASEANGBAND |
+F:DROP_4D2 | DROP_4D2 | DROP_4D2 | REFLECTING | COLD_BLOOD | REGENERATE |
+F:BASH_DOOR | MOVE_BODY | IM_ELEC | IM_COLD | IM_POIS |
+F:RES_TELE | NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP
+S:1_IN_4 |
+S:ARROW_4 | HEAL | FORGET
+D:It is the very essence of financial greed...
+
+# Spirit of doom
+N:1073:Spirit
+G:G:D
+I:136:60d70:40:70:30
+W:134:2:60:8000
+E:1:1:1:2:1:1
+O:0:10:90:0
+B:HIT:HURT:14d14
+B:HIT:HURT:14d14
+B:HIT:HURT:14d14
+F:SMART | OPEN_DOOR | BASH_DOOR |
+F:EVIL | NO_CONF | NO_SLEEP |
+F:SPIRIT | BASEANGBAND | HAS_LITE
+S:1_IN_2 |
+S:HAND_DOOM | CAUSE_4 | DARKNESS
+D:The very presence of this creature fills the air with an aura of doom.
+D:You feel waves of depression descending on you as it approaches.
+
+# Spirit of etherealism (?)
+N:1074:Spirit
+G:G:o
+I:120:40d100:30:120:40
+W:141:3:1700:10000
+E:0:1:0:6:1:0
+B:CLAW:HURT:14d10
+B:CLAW:HURT:14d10
+B:BITE:HURT:17d10
+F:INVISIBLE | CAN_FLY | SPIRIT | WEIRD_MIND |
+F:PASS_WALL | POWERFUL | MOVE_BODY |
+F:EVIL | NO_CONF | NO_SLEEP | BASEANGBAND | SPIRIT
+S:1_IN_2 |
+S:BLIND | CONF |
+S:BR_LITE | BR_DARK | BR_CONF
+D:This sprit seems to flicker in and out of this plane, and is a master
+D:of light and dark.
+
+# Spirit of orc (boring huh)
+N:1075:Spirit
+G:G:v
+I:120:90d10:30:160:100
+W:142:3:2700:11111
+E:1:1:1:2:1:1
+O:10:90:0:0
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+B:HIT:HURT:10d10
+F:OPEN_DOOR | BASH_DOOR |
+F:EVIL | ORC | IM_POIS | ONLY_ITEM |
+F:MORTAL | BASEANGBAND | HAS_LITE | SPIRIT
+D:Stupid but strong, this spirit has an orcish aura about him.
+
+### Here endeth the Spirits ###
+
+N:1076:Neil, the Sorceror
+G:h:v
+# *Not* enough hitpoints
+I:110:50d100:20:30:30
+# Bottom of Erebor
+W:72:100:330:50000
+E:1:1:1:2:1:1
+O:0:5:90:5
+# Sorceror, not warrior
+B:HIT:HURT:1d1
+B:HIT:HURT:1d1
+F:OPEN_DOOR | SMART | MALE | DROP_SKELETON | DROP_CORPSE
+F:MORTAL | HAS_LITE | JOKEANGBAND | UNIQUE
+# Trone, of course
+F:CAN_FLY | REFLECTING | IM_FIRE
+# Thorin
+F:IM_ACID | FORCE_MAXHP
+# No cold or random gen... waiting on elven rings only at bottom of Erebor
+F:SPECIAL_GENE
+# Dig
+F:KILL_WALL
+# Obvious resistances
+F:NO_CONF | NO_SLEEP | NO_STUN | NO_FEAR
+# Well, he's been there a while
+F:ONLY_ITEM | DROP_4D2 | DROP_GOOD | DROP_GREAT
+# Essence of speed, Manathrust, Noxious Cloud, and Fireflash
+S:1_IN_1 |
+S:HASTE | BO_MANA | BA_POIS | BA_FIRE
+D:He looks like he is looking for something, and the flecks of dragon
+D:blood on his face tell you he means business!
diff --git a/lib/edit/ra_info.txt b/lib/edit/ra_info.txt
new file mode 100644
index 00000000..57dcee95
--- /dev/null
+++ b/lib/edit/ra_info.txt
@@ -0,0 +1,1927 @@
+# File: ra_info.txt
+
+
+# This file is used to initialize the "lib/raw/ra_info.raw" file, which is
+# used to initialize the "randart parts" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/ra_info.raw" file.
+
+# N:index
+# X:power value:max number of time it can appear on one object
+# T:tval:min sval:max sval (up to 20 T: lines)
+# W:mininum player level to create it:rarity1:rarity2
+# C:max to dam:max to hit:max to AC:max to pval
+# F:flags
+
+# Version stamp (required)
+
+V:2.0.0
+
+# General info, number of powers
+G:100:1d5:1
+G:14:0d0:1
+G:10:0d0:1
+G:3:0d0:1
+
+### Mage Staff randarts ###
+
+N:1
+X:10:1
+T:6:0:255
+W:5:1:4
+C:-5:-5:0:5
+F:MANA
+
+N:2
+X:14:1
+T:6:0:255
+W:10:1:8
+C:-10:-10:0:5
+F:SPELL
+
+N:3
+X:5:1
+T:6:0:255
+W:1:1:4
+C:-3:-3:0:5
+F:INT
+
+### Weapons ###
+
+# + To damage
+N:4
+X:5:2
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:19:0:255
+T:22:0:255
+T:24:0:255
+T:115:55:55
+W:1:1:2
+C:10:0:0:0
+
+# + To Damage for swords
+N:5
+X:5:2
+T:23:0:255
+T:115:55:55
+W:1:1:2
+C:9:0:0:0
+
+# + To damage for hafted weapons
+N:6
+X:5:2
+T:21:0:255
+W:1:1:2
+C:11:0:0:0
+
+# + To hit
+N:7
+X:5:2
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:19:0:255
+T:22:0:255
+T:24:0:255
+T:115:55:55
+W:1:1:2
+C:0:10:0:0
+
+# + To Hit for swords
+N:8
+X:5:2
+T:23:0:255
+T:115:55:55
+W:1:1:2
+C:0:11:0:0
+
+# + To Hit for hafted weapons
+N:9
+X:5:2
+T:21:0:255
+W:1:1:2
+C:0:9:0:0
+
+N:10
+X:15:1
+T:24:0:255
+T:115:55:55
+W:15:1:25
+C:4:0:0:0
+F:VORPAL
+
+N:11
+X:15:1
+T:23:2:2
+T:23:9:9
+T:23:11:33
+T:115:55:55
+W:15:1:25
+C:2:2:0:0
+F:VORPAL
+
+N:12
+X:15:1
+T:22:30:30
+W:10:1:16
+C:6:-2:0:0
+F:VORPAL
+
+N:13
+X:15:1
+T:22:17:17
+T:22:3:3
+T:22:0:15
+W:15:1:25
+C:4:0:0:0
+F:VORPAL
+
+N:14
+X:10:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+T:115:55:55
+W:4:1:10
+C:5:2:0:0
+F:BRAND_POIS
+
+N:15
+X:10:1
+T:23:0:255
+T:115:55:55
+W:4:1:10
+C:4:3:0:0
+F:BRAND_POIS
+
+N:16
+X:10:1
+T:21:0:255
+W:4:1:10
+C:5:2:0:0
+F:BRAND_POIS
+
+N:17
+X:11:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:5:1:11
+C:3:1:0:0
+F:BRAND_FIRE
+A:BRAND_COLD
+
+N:18
+X:11:1
+T:23:0:255
+T:115:55:55
+W:5:1:11
+C:2:2:0:0
+F:BRAND_FIRE
+A:BRAND_COLD
+
+N:19
+X:11:1
+T:21:0:255
+W:5:1:11
+C:4:0:0:0
+F:BRAND_FIRE
+A:BRAND_COLD
+
+N:20
+X:12:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:5:1:11
+C:5:1:0:0
+F:BRAND_COLD
+A:BRAND_FIRE
+
+N:21
+X:12:1
+T:23:0:255
+T:115:55:55
+W:5:1:11
+C:4:2:0:0
+F:BRAND_COLD
+A:BRAND_FIRE
+
+N:22
+X:12:1
+T:21:0:255
+W:5:1:11
+C:6:0:0:0
+F:BRAND_COLD
+A:BRAND_FIRE
+
+N:23
+X:13:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:5:1:13
+C:4:0:0:0
+F:BRAND_ELEC
+
+N:24
+X:13:1
+T:23:0:255
+T:115:55:55
+W:5:1:13
+C:3:1:0:0
+F:BRAND_ELEC
+
+N:25
+X:13:1
+T:21:0:255
+W:5:1:13
+C:5:-1:0:0
+F:BRAND_ELEC
+
+N:26
+X:15:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:7:1:15
+C:3:0:0:0
+F:BRAND_ACID
+
+N:27
+X:15:1
+T:23:0:255
+T:115:55:55
+W:7:1:15
+C:2:1:0:0
+F:BRAND_ACID
+
+N:28
+X:15:1
+T:21:0:255
+W:7:1:15
+C:4:0:0:0
+F:BRAND_ACID
+
+N:29
+X:5:1
+T:21:0:255
+W:15:1:35
+C:15:2:0:0
+F:IMPACT
+
+N:30
+X:5:1
+T:18:0:255
+T:19:0:255
+T:22:0:255
+T:24:0:255
+W:2:1:9
+C:2:2:0:6
+F:STR
+
+N:31
+X:5:1
+T:23:0:255
+T:115:55:55
+W:2:1:9
+C:0:4:0:6
+F:STR
+
+N:32
+X:5:1
+T:21:0:255
+W:1:1:7
+C:4:0:0:6
+F:STR
+
+N:33
+X:3:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:22:0:255
+T:24:0:255
+W:1:1:6
+C:0:0:0:6
+F:CHR
+
+N:34
+X:3:1
+T:23:0:255
+T:115:55:55
+W:2:1:6
+C:-1:1:0:6
+F:CHR
+
+N:35
+X:2:1
+T:21:0:255
+W:2:1:6
+C:1:-1:0:5
+F:CHR
+
+N:36
+X:4:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:22:0:255
+T:24:0:255
+W:2:1:8
+C:0:0:0:4
+F:INT
+
+N:37
+X:4:1
+T:21:0:255
+W:2:1:8
+C:1:-1:0:4
+F:INT
+
+N:38
+X:4:1
+T:23:0:255
+T:115:55:55
+W:2:1:8
+C:-1:1:0:4
+F:INT
+
+N:39
+X:6:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:22:0:255
+T:24:0:255
+W:3:1:10
+C:0:0:0:6
+F:CON
+
+N:40
+X:6:1
+T:23:0:255
+T:115:55:55
+W:3:1:10
+C:-1:1:0:6
+F:CON
+
+N:41
+X:6:1
+T:21:0:255
+C:1:-1:0:6
+F:CON
+
+N:42
+X:4:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:22:0:255
+T:24:0:255
+W:2:1:8
+C:0:0:0:5
+F:WIS
+
+N:43
+X:4:1
+T:21:0:255
+W:2:1:9
+C:1:-1:0:6
+F:WIS
+
+N:44
+X:4:1
+T:23:0:255
+T:115:55:55
+W:2:1:9
+C:-1:1:0:5
+F:WIS
+
+N:45
+X:4:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:22:0:255
+T:24:0:255
+W:2:1:7
+C:0:0:0:5
+F:DEX
+
+N:46
+X:4:1
+T:23:0:255
+T:115:55:55
+W:2:1:7
+C:-1:1:0:6
+F:DEX
+
+N:47
+X:4:1
+T:21:0:255
+W:2:1:7
+C:1:-1:0:5
+F:DEX
+
+N:48
+X:4:1
+T:21:0:255
+W:9:1:14
+C:3:0:0:6
+F:TUNNEL
+
+N:49
+X:40:1
+T:22:0:255
+T:24:0:255
+W:30:1:100
+C:0:-4:0:3
+F:BLOWS
+
+N:50
+X:40:1
+T:23:0:255
+T:115:55:55
+W:30:1:100
+C:-1:-3:0:3
+F:BLOWS
+
+N:51
+X:40:1
+T:21:0:255
+W:30:1:100
+C:1:-5:0:3
+F:BLOWS
+
+N:52
+X:50:1
+T:18:0:255
+T:19:0:255
+T:22:0:255
+T:24:0:255
+W:40:1:90
+C:-2:-2:0:5
+F:SPEED
+
+N:53
+X:50:1
+T:21:0:255
+W:40:1:90
+C:-1:-3:0:5
+F:SPEED
+
+N:54
+X:50:1
+T:23:0:255
+T:115:55:55
+W:40:1:90
+C:-3:-1:0:5
+F:SPEED
+
+N:55
+X:12:1
+T:18:0:255
+T:22:0:255
+T:21:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:11:1:20
+C:10:10:0:0
+F:CHAOTIC
+
+N:56
+X:8:1
+T:18:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:11:1:20
+C:-10:-10:0:0
+F:CHAOTIC
+
+N:57
+X:12:1
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:15:1:20
+C:4:0:0:4
+F:VAMPIRIC
+
+N:58
+X:12:1
+T:21:0:255
+W:15:1:20
+C:5:-1:0:0
+F:VAMPIRIC
+
+N:59
+X:12:1
+T:23:0:19
+T:115:55:55
+W:15:1:20
+C:3:1:0:4
+F:VAMPIRIC
+
+N:60
+X:11:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:10:1:10
+C:0:0:0:0
+F:SLAY_ANIMAL
+
+N:61
+X:11:1
+T:21:0:255
+W:10:1:10
+C:1:-1:0:0
+F:SLAY_ANIMAL
+
+N:62
+X:11:1
+T:23:0:255
+T:115:55:55
+W:10:1:10
+C:-1:1:0:0
+F:SLAY_ANIMAL
+
+N:63
+X:19:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:15:1:17
+C:0:0:0:0
+F:SLAY_EVIL
+
+N:64
+X:19:1
+T:21:0:255
+W:15:1:15
+C:1:-1:0:0
+F:SLAY_EVIL
+
+N:65
+X:19:1
+T:23:0:255
+T:115:55:55
+W:15:1:17
+C:-1:1:0:0
+F:SLAY_EVIL
+
+N:66
+X:15:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:13:1:15
+C:0:0:0:0
+F:SLAY_UNDEAD
+A:KILL_UNDEAD
+
+N:67
+X:15:1
+T:21:0:255
+W:13:1:15
+C:1:-1:0:0
+F:SLAY_UNDEAD
+A:KILL_UNDEAD
+
+N:68
+X:15:1
+T:23:0:255
+T:115:55:55
+W:13:1:15
+C:-1:1:0:0
+F:SLAY_UNDEAD
+A:KILL_UNDEAD
+
+N:69
+X:5:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:11:1:25
+C:0:0:0:0
+F:SLAY_DEMON
+A:KILL_DEMON
+
+N:70
+X:5:1
+T:21:0:255
+W:11:1:25
+C:1:-1:0:0
+F:SLAY_DEMON
+A:KILL_DEMON
+
+N:71
+X:5:1
+T:23:0:255
+T:115:55:55
+W:11:1:25
+C:-1:1:0:0
+F:SLAY_DEMON
+A:KILL_DEMON
+
+N:72
+X:10:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:3:1:10
+C:0:0:0:0
+F:SLAY_ORC
+
+N:73
+X:10:1
+T:21:0:255
+W:3:1:10
+C:1:-1:0:0
+F:SLAY_ORC
+
+N:74
+X:10:1
+T:23:0:255
+T:115:55:55
+W:3:1:10
+C:-1:1:0:0
+F:SLAY_ORC
+
+N:75
+X:11:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:15:2:17
+C:0:0:0:0
+F:SLAY_TROLL
+
+N:76
+X:11:1
+T:21:0:255
+W:15:2:17
+C:1:-1:0:0
+F:SLAY_TROLL
+
+N:77
+X:11:1
+T:23:0:255
+T:115:55:55
+W:15:2:17
+C:-1:1:0:0
+F:SLAY_TROLL
+
+N:78
+X:10:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:20:1:20
+C:0:0:0:0
+F:SLAY_GIANT
+
+N:79
+X:10:1
+T:21:0:255
+W:20:1:20
+C:-1:1:0:0
+F:SLAY_GIANT
+
+N:80
+X:10:1
+T:23:0:255
+T:115:55:55
+W:20:1:20
+C:0:0:0:0
+F:SLAY_GIANT
+
+N:81
+X:20:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:17:1:20
+C:0:0:0:0
+F:SLAY_DRAGON
+A:KILL_DRAGON
+
+N:82
+X:20:1
+T:21:0:255
+W:17:1:20
+C:1:-1:0:0
+F:SLAY_DRAGON
+A:KILL_DRAGON
+
+N:83
+X:20:1
+T:23:0:255
+T:115:55:55
+C:-1:1:0:0
+W:17:1:20
+F:SLAY_DRAGON
+A:KILL_DRAGON
+
+N:84
+X:31:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:17:1:35
+C:0:0:0:0
+F:KILL_DRAGON
+A:SLAY_DRAGON
+
+N:85
+X:31:1
+T:21:0:255
+W:17:1:35
+C:1:-1:0:0
+F:KILL_DRAGON
+A:SLAY_DRAGON
+
+N:86
+X:31:1
+T:23:0:255
+T:115:55:55
+W:17:1:35
+C:-1:1:0:0
+F:KILL_DRAGON
+A:SLAY_DRAGON
+
+N:87
+X:15:1
+T:18:0:255
+T:22:0:255
+T:24:0:255
+W:5:1:10
+C:-2:-2:0:0
+F:BLESSED
+A:CURSED
+
+N:88
+X:15:1
+T:21:0:255
+W:5:1:7
+C:-1:-3:0:0
+F:BLESSED
+A:CURSED
+
+N:89
+X:15:1
+T:23:0:255
+T:115:55:55
+W:5:1:10
+C:-3:-1:0:0
+F:BLESSED
+A:CURSED
+
+N:90
+X:-5:1
+T:15:0:255
+T:16:0:255
+T:18:0:255
+T:19:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:1:1:20
+C:0:0:0:0
+F:CURSED
+A:BLESSED
+
+N:93
+X:-10:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:1:1:20
+C:0:0:0:0
+F:AGGRAVATE
+A:STEALTH
+
+N:94
+X:13:1
+T:18:0:255
+T:19:0:255
+T:20:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:1:1:15
+C:0:0:0:0
+F:LITE1
+A:RES_LITE
+
+N:95
+X:40:1
+T:19:0:255
+W:20:1:38
+C:0:0:0:3
+F:XTRA_MIGHT
+
+N:96
+X:40:1
+T:19:0:255
+W:20:1:38
+C:0:0:0:0
+F:XTRA_SHOTS
+
+N:97
+X:25:1
+T:23:0:255
+T:24:0:255
+T:22:17:17
+T:22:3:3
+T:22:0:15
+T:115:55:55
+W:14:1:23
+C:3:0:0:0
+F:WOUNDING
+
+N:98
+X:60:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:27:1:50
+C:0:0:0:0
+F:KILL_UNDEAD
+A:SLAY_UNDEAD
+
+N:99
+X:45:1
+T:15:0:255
+T:16:0:255
+T:17:0:255
+T:18:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:25:1:34
+C:0:0:0:0
+F:KILL_DEMON
+A:SLAY_DEMON
+
+N:100
+X:20:1
+T:18:0:255
+T:21:0:255
+T:22:0:255
+T:23:0:255
+T:24:0:255
+T:115:55:55
+W:15:1:25
+C:2:0:0:0
+Z:BERSERK
+
+N:101
+X:15:1
+T:20:0:255
+T:21:0:255
+W:20:1:35
+C:0:0:0:0
+Z:EARTHQUAKE
+
+N:102
+X:5:1
+T:20:0:255
+W:2:1:9
+C:0:0:0:6
+F:STR
+
+
+### Armor ###
+
+N:295
+X:60:1
+T:36:0:255
+T:37:0:255
+W:20:1:90
+C:-70:-70:0:2
+F:LIFE
+
+N:296
+X:7:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:1:1:14
+C:0:0:0:0
+F:SUST_STR
+
+N:297
+X:6:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:6:0:255
+W:1:1:12
+C:0:0:0:0
+F:SUST_INT
+
+N:298
+X:6:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:6:0:255
+W:1:1:12
+C:0:0:0:0
+F:SUST_WIS
+
+N:299
+X:5:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:1:1:11
+C:0:0:1:0
+F:SUST_DEX
+
+N:300
+X:9:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:1:1:16
+C:0:0:0:0
+F:SUST_CON
+
+N:301
+X:4:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:1:1:9
+C:0:0:0:0
+F:SUST_CHR
+
+N:302
+X:50:1
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:30:1:70
+C:0:0:0:0
+F:IM_ACID
+
+N:303
+X:50:1
+T:34:0:255
+T:115:56:56
+W:30:1:90
+C:0:0:0:0
+F:IM_ACID
+
+N:304
+X:50:1
+T:35:0:255
+W:30:1:80
+C:0:0:0:0
+F:IM_ACID
+
+N:305
+X:45:1
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:30:1:78
+F:IM_ELEC
+
+N:306
+X:45:1
+T:34:0:255
+T:115:56:56
+W:30:1:98
+C:0:0:0:0
+F:IM_ELEC
+
+N:307
+X:45:1
+T:35:0:255
+W:30:1:88
+C:0:0:0:0
+F:IM_ELEC
+
+N:308
+X:55:1
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:30:1:86
+C:0:0:0:0
+F:IM_FIRE
+
+N:309
+X:55:1
+T:34:0:255
+T:115:56:56
+T:35:0:255
+W:30:1:95
+C:0:0:0:0
+F:IM_FIRE
+
+N:310
+X:47:1
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:30:1:90
+C:0:0:0:0
+F:IM_COLD
+
+N:311
+X:47:1
+T:34:0:255
+T:115:56:56
+T:35:0:255
+W:30:1:90
+C:0:0:0:0
+F:IM_COLD
+
+N:312
+X:47:1
+T:35:3:3
+W:30:1:100
+C:0:0:0:0
+F:IM_COLD
+
+N:313
+X:35:1
+T:34:0:255
+T:38:0:255
+T:115:56:56
+W:20:1:45
+C:0:0:0:0
+F:REFLECT
+
+N:314
+X:35:1
+T:34:10:10
+T:115:56:56
+W:10:1:15
+C:0:0:0:0
+F:REFLECT
+
+N:315
+X:17:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+T:6:0:255
+W:5:1:7
+C:0:0:0:0
+F:FREE_ACT
+
+N:316
+X:23:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+W:8:1:14
+C:0:0:0:0
+F:HOLD_LIFE
+
+N:317
+X:15:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:1:1:10
+C:0:0:0:0
+F:RES_ACID
+
+N:318
+X:15:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:1:1:10
+C:0:0:0:0
+F:RES_FIRE
+
+N:319
+X:13:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:1:1:9
+C:0:0:0:0
+F:RES_ELEC
+
+N:320
+X:12:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:1:1:8
+C:0:0:0:0
+F:RES_COLD
+
+N:321
+X:20:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:5:1:18
+C:0:0:0:0
+F:RES_POIS
+
+N:322
+X:15:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:6:1:15
+C:0:0:0:0
+F:RES_FEAR
+
+N:323
+X:10:1
+T:30:0:255
+T:31:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:56
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:5:1:10
+C:0:0:0:0
+F:RES_LITE
+
+N:324
+X:10:1
+T:32:0:255
+T:115:57:57
+W:1:1:7
+C:0:0:0:0
+F:RES_LITE
+
+N:325
+X:15:1
+T:32:0:255
+T:115:57:57
+W:5:1:15
+C:0:0:0:0
+F:LITE1
+A:RES_LITE
+
+N:326
+X:17:1
+T:32:0:255
+T:115:57:57
+W:10:1:20
+C:0:0:0:0
+F:LITE2
+A:RES_LITE
+
+N:327
+X:20:1
+T:32:0:255
+T:115:57:57
+W:15:1:25
+C:0:0:0:0
+F:LITE3
+A:RES_LITE
+
+N:328
+X:15:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:10:1:15
+C:0:0:0:0
+F:RES_DARK
+
+N:329
+X:20:1
+T:115:57:57
+T:32:0:255
+T:40:0:255
+T:45:0:255
+T:6:0:255
+W:13:1:27
+C:0:0:0:0
+F:RES_BLIND
+
+N:330
+X:17:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:13:1:18
+C:0:0:0:0
+F:RES_SOUND
+
+N:331
+X:15:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:115:56:57
+T:34:0:255
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:17:1:15
+C:0:0:0:0
+F:RES_NEXUS
+
+N:332
+X:19:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:16:1:19
+C:0:0:0:0
+F:RES_SHARDS
+
+N:333
+X:30:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:30:1:50
+C:0:0:0:0
+F:RES_NETHER
+
+N:334
+X:25:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+W:25:1:30
+F:RES_CHAOS
+
+N:335
+X:20:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+T:6:0:255
+W:25:1:35
+C:0:0:0:0
+F:RES_CONF
+
+N:336
+X:25:1
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:40:0:255
+T:45:0:255
+C:0:0:0:0
+W:23:1:32
+F:RES_DISEN
+
+N:337
+X:20:1
+T:35:0:255
+W:10:1:17
+C:0:0:0:0
+F:SH_FIRE | RES_FIRE
+
+N:338
+X:22:1
+T:35:0:255
+W:10:1:20
+C:0:0:0:0
+F:SH_ELEC | RES_ELEC
+
+N:339
+X:18:1
+T:115:57:57
+T:32:0:255
+T:33:0:255
+T:40:0:255
+T:45:0:255
+T:6:0:255
+W:5:1:15
+C:0:0:0:0
+F:SEE_INVIS
+
+N:340
+X:14:1
+T:30:0:255
+T:40:0:255
+T:45:0:255
+W:5:1:13
+C:0:0:0:0
+F:FEATHER
+A:FLY
+
+N:341
+X:80:1
+T:35:0:255
+T:30:0:255
+T:6:0:255
+W:40:1:90
+C:0:0:0:0
+F:FLY
+A:FEATHER
+
+N:342
+X:30:1
+T:115:57:57
+T:32:0:255
+T:33:0:255
+W:20:1:30
+C:0:0:0:0
+Z:MIND BLAST
+
+N:343
+X:30:1
+T:115:57:57
+T:32:0:255
+T:33:0:255
+W:20:1:30
+C:0:0:0:0
+Z:TELEKINESIS
+
+N:344
+X:35:1
+T:31:0:255
+W:25:1:40
+C:0:0:0:0
+Z:MIDAS TOUCH
+
+N:345
+X:15:1
+T:31:0:255
+C:0:0:0:0
+Z:COLD TOUCH
+
+N:346
+X:30:1
+T:35:0:255
+W:20:1:27
+C:0:0:0:0
+Z:BLINK
+A:RES_NEXUS
+
+### + To AC ###
+N:347
+X:15:4
+T:30:0:255
+T:31:0:255
+T:32:0:255
+T:33:0:255
+T:34:0:255
+T:115:56:57
+T:35:0:255
+T:36:0:255
+T:37:0:255
+T:38:0:255
+T:6:0:255
+W:1:1:5
+C:0:0:5:0
+
+### + To Dam (Only Gloves) ###
+N:348
+X:40:1
+T:31:0:255
+W:1:1:45
+C:10:0:0:0
+
+### + To Hit (Only Gloves) ###
+N:349
+X:35:1
+T:31:0:255
+W:1:1:40
+C:0:10:0:0
+
+# N:index
+# X:power value:max number of time it can appear on one object
+# T:tval:min sval:max sval (up to 20 T: lines)
+# W:mininum player level to create it:rarity1:rarity2
+# C:max to dam:max to hit:max to AC:max to pval
+# F:flags
+
+# Helm of water breathing
+N:350
+X:50:1
+T:32:5:10
+W:20:1:25
+C:0:0:0:0
+F:WATER_BREATH
+
+
+### Amulets And Rings ###
+N:442
+X:15:1
+T:40:0:255
+T:45:0:255
+W:5:1:17
+C:0:0:0:5
+F:STR
+
+N:443
+X:11:1
+T:40:0:255
+T:45:0:255
+W:3:1:12
+C:0:0:0:5
+F:DEX
+
+N:444
+X:13:1
+T:40:0:255
+T:45:0:255
+W:5:1:15
+C:0:0:0:5
+F:WIS
+
+N:445
+X:13:1
+T:40:0:255
+T:45:0:255
+W:1:1:15
+C:0:0:0:5
+F:INT
+
+N:446
+X:7:1
+T:40:0:255
+T:45:0:255
+W:1:1:15
+C:0:0:0:5
+F:CHR
+
+N:447
+X:18:1
+T:40:0:255
+T:45:0:255
+W:7:1:20
+C:0:0:0:5
+F:CON
+
+N:448
+X:15:1
+T:40:0:255
+T:45:0:255
+W:5:1:15
+C:0:0:0:0
+F:SUST_STR
+
+N:449
+X:20:1
+T:40:0:255
+T:45:0:255
+W:7:1:20
+C:0:0:0:0
+F:SUST_CON
+
+N:450
+X:7:1
+T:40:0:255
+T:45:0:255
+W:1:1:15
+F:SUST_CHR
+
+N:451
+X:11:1
+T:40:0:255
+T:45:0:255
+W:1:1:11
+F:SUST_DEX
+
+N:452
+X:13:1
+T:40:0:255
+T:45:0:255
+W:5:1:13
+F:SUST_INT
+
+N:453
+X:13:1
+T:40:0:255
+T:45:0:255
+W:5:1:13
+F:SUST_WIS
+
+N:454
+X:40:1
+T:45:0:255
+C:0:0:0:5
+W:25:1:55
+F:INVIS
+
+N:455
+X:70:1
+T:45:0:255
+C:0:0:0:5
+W:40:1:90
+F:SPEED
+
+N:456
+X:17:1
+T:40:0:255
+T:45:0:255
+W:5:1:16
+C:0:0:0:0
+F:SLOW_DIGEST
+A:REGEN
+
+N:457
+X:20:1
+T:40:0:255
+T:45:0:255
+W:7:1:19
+C:0:0:0:0
+F:REGEN
+A:SLOW_DIGEST
+
+N:458
+X:15:1
+T:40:0:255
+T:45:0:255
+T:35:0:255
+W:10:1:16
+C:0:0:0:4
+F:STEALTH
+A:AGGRAVATE
+
+N:459
+X:7:1
+T:40:0:255
+T:45:0:255
+W:1:1:12
+C:0:0:0:6
+F:SEARCH
+
+N:460
+X:10:1
+T:40:0:255
+T:45:0:255
+W:1:1:12
+C:0:0:0:4
+F:INFRA
+
+N:461
+X:80:1
+T:45:0:255
+W:40:1:95
+C:0:0:0:3
+F:BLOWS
+
+N:462
+X:70:1
+T:45:0:255
+W:38:1:75
+C:0:0:0:0
+F:FLY
+A:FEATHER
+
+N:463
+X:80:1
+T:45:0:255
+W:43:1:85
+C:0:0:0:5
+F:CRIT
+
+
+### Lights ###
+
+N:501
+X:15:1
+T:39:0:255
+T:6:0:255
+W:5:1:15
+F:LITE1
+
+N:502
+X:20:1
+T:39:0:255
+W:10:1:25
+C:0:0:0:0
+F:LITE2
+
+N:503
+X:30:1
+T:39:0:255
+W:20:1:35
+C:0:0:0:0
+F:LITE3
+
+N:504
+X:15:1
+T:39:0:255
+W:10:1:15
+C:0:0:0:0
+F:RES_LITE
+
+N:505
+X:18:1
+T:39:0:255
+W:11:1:17
+C:0:0:0:0
+F:RES_DARK
+
+N:506
+X:20:1
+T:39:0:255
+W:15:1:22
+C:0:0:0:0
+F:SEE_INVIS
+
+N:507
+X:12:1
+T:39:0:255
+W:1:1:10
+C:0:0:0:4
+F:SEARCH
+
+N:508
+X:12:1
+T:39:0:255
+W:1:1:15
+C:0:0:0:4
+F:INFRA
+
+N:509
+X:21:1
+T:39:0:255
+W:5:1:20
+C:0:0:0:0
+Z:ILLUMINATE
+
+N:510
+X:35:1
+T:39:0:255
+W:20:1:27
+C:0:0:0:0
+Z:MAGIC MAP
+
+N:511
+X:30:1
+T:39:0:255
+W:20:1:24
+C:0:0:0:0
+Z:DETECT CURSES
+
+N:512
+X:25:1
+T:39:0:255
+W:20:1:17
+C:0:0:0:0
+Z:DAZZLE
+
+N:513
+X:40:1
+T:39:0:255
+W:20:1:50
+Z:DETECT DOORS AND TRAPS
diff --git a/lib/edit/re_info.txt b/lib/edit/re_info.txt
new file mode 100644
index 00000000..c0e36a92
--- /dev/null
+++ b/lib/edit/re_info.txt
@@ -0,0 +1,183 @@
+# File: re_info.txt
+
+# This file is used to initialize the "lib/raw/re_info.raw" file, which is
+# used to initialize the "monster ego race" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# Version stamp (required)
+
+# Most values can be used with the +, -, % and = operators, = will set the
+# monster value, + and - will modify it based on the normal monster
+# % will apply that percentage to the monster value
+# defaults : NO DEFAULT, MUST precise one
+
+# N:x:ego name
+# G:x:y (x=monster letter, y=colour, use * to use the same as the standard monster)
+# I:speed:(dice)d(side):aaf:ac:sleep
+# W:lev:rarity:weight:xp:place('B'efore or 'A'fter)
+# E:weapon:torso:arms:finger:head:legs
+# B:method:effect:(dice)d(side) (up to x4 lines)
+# F:flags that the standard monster MUST have - at least ONE of the R_CHAR_x
+# flags (if present, to determine which monster letters can have this ego
+# type), plus ALL of the rest
+# H:flags that the standard monster MUST NOT have
+# M:monster flags to add for the ego-type
+# O:monster flags to remove, use MF_ALL for all
+# S:monster spells to add for the ego-type
+# T:monster spells to remove, use MF_ALL for all
+
+V:2.0.0
+
+# A few undeads, to be created by the ANIM_DEAD spell
+
+N:1:Skeleton
+G:s:*
+I:%100:+1d+1:+0:+5:-5
+W:+5:13:%30:%95:B
+F:DROP_SKELETON
+H:UNDEAD | NONLIVING | R_CHAR_Z | R_CHAR_A | R_CHAR_E | R_CHAR_g
+M:DROP_SKELETON | UNDEAD | IM_COLD | IM_POIS | NO_FEAR | NO_CONF |
+M:NO_SLEEP | EMPTY_MIND | COLD_BLOOD | STUPID | EVIL
+O:GOOD | DROP_CORPSE | FRIEND | FRIENDS | ESCORT | ESCORTS | SMART |
+O:DROP_GREAT | DROP_GOOD | RAND_25 | RAND_50 | MORTAL
+T:MF_ALL
+
+N:2:Zombie
+G:z:*
+I:%95:%110d%100:%90:+10:-5
+W:+10:14:%70:%100:B
+F:DROP_CORPSE
+H:UNDEAD | NONLIVING | R_CHAR_Z | R_CHAR_A | R_CHAR_E | R_CHAR_g
+M:DROP_CORPSE | UNDEAD | IM_COLD | IM_POIS | NO_FEAR | NO_CONF
+M:NO_SLEEP | EVIL | EMPTY_MIND | COLD_BLOOD | STUPID | EVIL
+O:GOOD | DROP_SKELETON | FRIEND | FRIENDS | ESCORT | ESCORTS | SMART
+O:DROP_GREAT | DROP_GOOD | RAND_25 | RAND_50 | MORTAL
+T:MF_ALL
+
+N:3:Lich
+G:L:*
+I:%100:+0d+1:+10:+20:-10
+W:+30:22:+0:%200:B
+B:TOUCH:LOSE_DEX:+0d+0
+B:TOUCH:LOSE_DEX:+0d+0
+B:TOUCH:UN_POWER:+0d+0
+B:TOUCH:EXP_40:+0d+0
+F:DROP_SKELETON | SMART | R_CHAR_h | R_CHAR_p | R_CHAR_P | R_CHAR_O
+H:UNDEAD | NONLIVING | R_CHAR_Z | R_CHAR_A | R_CHAR_E | R_CHAR_g
+M:UNDEAD | IM_COLD | IM_POIS | NO_FEAR | NO_CONF
+M:NO_SLEEP | SMART | EVIL | COLD_BLOOD
+O:DROP_SKELETON | GOOD | DROP_CORPSE | FRIEND | FRIENDS | ESCORT | ESCORTS |
+O:DROP_GREAT | RAND_25 | RAND_50 | MORTAL
+S:1_IN_4 |
+S:BLINK | TELE_TO | TELE_AWAY | BRAIN_SMASH | DRAIN_MANA | CAUSE_3 |
+S:BLIND | HOLD | SLOW | SCARE
+
+N:4:Spectral
+G:G:*
+I:+10:%80d%100:+10:+20:-5
+W:+20:20:%10:%110:B
+B:*:EXP_20:+0d+0
+B:*:EXP_20:+0d+0
+F:DROP_CORPSE
+H:UNDEAD | NONLIVING | R_CHAR_Z | R_CHAR_A | R_CHAR_E | R_CHAR_g
+M:UNDEAD | IM_COLD | IM_POIS | NO_FEAR | NO_CONF
+M:NO_SLEEP | PASS_WALL | EVIL | COLD_BLOOD
+O:GOOD | DROP_CORPSE | FRIEND | FRIENDS | ESCORT | ESCORTS |
+O:DROP_GREAT | EMPTY_MIND | RAND_50 | MORTAL
+S:1_IN_5 | BLIND | HOLD | SCARE
+T:MF_ALL
+
+N:5:Captain
+G:*:v
+I:+5:%150d%100:+5:%120:-2
+W:+5:4:%120:%150:A
+B:*:*:+0d+1
+B:*:*:+0d+1
+B:*:*:+0d+1
+B:*:*:+0d+1
+F:R_CHAR_o | R_CHAR_y | R_CHAR_k | BASEANGBAND
+M:FORCE_MAXHP | FRIENDS | SMART | DROP_1D2
+
+N:6:Chieftain
+G:*:*
+I:+10:%200d%100:+10:%120:-3
+W:+5:4:%120:%200:A
+B:*:*:+1d+2
+B:*:*:+1d+2
+B:*:*:+1d+2
+B:*:*:+1d+2
+F:R_CHAR_T | R_CHAR_P | R_CHAR_O | BASEANGBAND
+M:FORCE_MAXHP | FRIENDS | SMART | DROP_1D2
+
+N:7:Shaman
+G:*:r
+I:+0:%90d%100:+10:%90:+0
+W:+2:1:%90:%120:A
+F:R_CHAR_o | R_CHAR_k | R_CHAR_n | BASEANGBAND
+M:SMART | FORCE_MAXHP | DROP_1D2
+O:FRIENDS
+S:1_IN_6 | MISSILE | CAUSE_1 | CONF | BLINK
+
+N:8:Priest
+G:*:G
+I:+0:%90d%100:+10:%90:+0
+W:+3:2:%90:%120:A
+F:R_CHAR_T | R_CHAR_P | R_CHAR_O | BASEANGBAND
+M:FRIENDS | SMART | FORCE_MAXHP | DROP_1D2
+S:1_IN_6 | CAUSE_2 | MISSILE | DARKNESS | CONF | SCARE | BLINK
+
+N:9:Mage
+G:*:r
+I:+0:%150d%100:+10:%120:+0
+W:+5:4:%120:%150:A
+B:*:*:+0d+0
+B:*:*:+0d+0
+B:HIT:HURT:=2d=8
+B:HIT:HURT:=2d=8
+F:R_CHAR_O | BASEANGBAND
+M:SMART | FORCE_MAXHP | DROP_1D2
+O:FRIENDS
+S:1_IN_6 | BA_COLD | BO_FIRE | TRAPS | HEAL | HOLD | S_MONSTER | TPORT
+
+N:10:Archer
+G:*:W
+I:+0:+0d+0:+0:+0:+0
+W:+1:1:%100:%110:A
+F:R_CHAR_y | R_CHAR_k | R_CHAR_O | R_CHAR_o | BASEANGBAND
+S:1_IN_4 | ARROW_2
+
+N:11:Rogue
+G:*:b
+I:+2:+0d+0:+0:+10:-30
+W:+1:2:%90:%100:A
+B:*:EAT_GOLD:+0d+0
+F:R_CHAR_y | R_CHAR_k | R_CHAR_o
+
+# For townpeople
+N:12:Elven
+G:*:*
+I:+2:+0d+0:+0:+0:+0
+W:+0:15:+0:+0:B
+F:WILD_TOWN
+H:ANIMAL
+
+# For townpeople
+N:13:Dwarven
+G:*:*
+I:+2:+0d+0:+0:+0:+0
+W:+0:15:+0:+0:B
+F:WILD_TOWN
+H:ANIMAL
+
+# N:x:ego name
+# G:x:y x is the char, y the attribute, * means the normal one
+# I:speed:(dice)d(side):aaf:ac:sleep
+# W:lev:rarity:weight:xp:place('B'efore or 'A'fter)
+# F:flags that the normal monster *must* have
+# H:flags that the normal monster *must not* have
+# M:monster flags that the ego-monster adds
+# O:monster flags to remove (use MF_ALL for all)
+# S:monster spells that the ego-monster adds
+# T:monster spells to remove (use MF_ALL for all)
diff --git a/lib/edit/readme.txt b/lib/edit/readme.txt
new file mode 100644
index 00000000..4c0ecbe7
--- /dev/null
+++ b/lib/edit/readme.txt
@@ -0,0 +1,96 @@
+# File: a_info.txt
+# This file is used to initialize the "artifact" information for the Angband game.
+# This is were you find Cubragol, The Phial , Ringil etc.
+
+# File: ba_info.txt
+# This file is used used to initialize the "store/building actions type" information for the Angband game.
+# This is where you find the ID numbers for 'Presage fate', 'Play craps' , 'Sell an item' etc.
+
+# File: d_info.txt
+# This file is used to used to set the dungeons for the Angband game.
+# This is where you find 'Barrow Downs', 'The Maze' , 'Mordor' etc.
+
+# File: e_info.txt
+# This file is used to initialize the "ego-item" information for the Angband game.
+# This is where you find 'Helms of the Noldor' , 'Filthy rags of leprousness' , 'Boots of Jumping' etc.
+
+# File: f_info.txt
+# This file is used to used to initialize the "terrain feature" information for the Angband game.
+# This is where you find the ID numbers for 'Underground tunnel' , 'grass with flowers' , 'open floor' etc.
+
+# File: k_info.txt
+# This file is used to initialize the "object kind" information for the Angband game.
+# This is where you find 'Katanas' , 'Mushrooms of Sickness' , 'Jewel Encrusted Crowns' etc.
+
+# File: misc.txt
+# This file contains a lot of 'maximums ' for the Angband game.
+# This is where you find 'Maximum number of skills in s_info.txt' ,
+#'Maximum number of items in k_info.txt' , 'Maximum number of artifacts in a_info.txt' etc.
+
+# File: ow_info.txt
+# This file is used to initialize the "owner info type" information for the Angband game.
+# This is where you find 'Bilbo the Friendly(Hobbit)' , 'Raistlin the Chicken(Human)' ,
+# Inglorian the Mage(Human) etc.
+
+# File: p_info.txt
+# This file is used to initialize the "player race/race mod/class" information for the Angband game.
+# You will find here races like 'Humans' , subraces like 'Vampire', classes like 'Monk'
+
+# File: r_info.txt
+# This file is used to initialize the "monster race" information for the Angband game.
+# You will find here monsters like 'Marylene, Heartbreakeress of the Netherworld',
+# 'The Minotaur of the Labyrinth' , 'Morgoth, Lord of Darkness' etc.
+
+# File: ra_info.txt
+# This file is used to initialize the "randart parts" information for the Angband game.
+# Here you will find info for random artefacts made of 'Mage Staves' , 'Lights' , 'Gloves' etc.
+
+# File: re_info.txt
+# This file is used to initialize the "monster ego race" information for the Angband game.
+# Here you will find ego monster types like 'Spectral','Skeleton','Archer' etc.
+
+# File: s_info.txt
+# This file is used to initialize the "skills" information for the ToME game.
+# Here you will find player & monster skills, 8you can use their IDs in other files(?),
+# You will find skills like 'Bearform-combat' , 'Necromancy' , 'Spell-power' etc.
+
+# File: set_info.txt
+# This file is used to initialize the "lib/raw/set_info.raw" file, which is
+# used to initialize the "item set" information for the Angband game.
+# You find linked Items like 'The bow of Bard' & 'The arrow of Bard'
+# It is like totally unclear to me what this does, especially because
+# the big spider doesnt drop Sting, hint hint !
+
+# File: special.txt
+# Contains terrain parsings for the special levels now being kept in seperate map files
+# You will find there entries as in f_info.txt
+
+# File: st_info.txt
+# This file is used to initialize the "store info type" information for the Angband game.
+# You will find there stores like 'Armoury' , 'Temple' , 'The Mathom-house' etc.
+
+# File: t_info.txt
+# Includes the town definitions of the game Angband
+# You will find here the towns like 'Gondor' , 'Bree' , 'Lothlorien' etc.
+
+# File: t_pref.txt
+# Defines the preferences for the town features
+# You will find there entries as in f_info.txt
+
+# File: tr_info.txt
+# This file comes from Angband64 written by Jurriaan Kalkman
+# and describes the traps items can have
+# You will find traps like 'Summon Fast Quylthulgs Trap' , 'Wisdom Trap' etc.
+
+# File: v_info.txt
+# This file is used to initialize the "vault template" information for the Angband game.
+# You will find vaults like 'The I in the Storm' , 'Greater vault (mortuary temple of sety)' ,
+# 'Lesser vault (amenhotep I)' etc.
+
+# File: W_info.txt
+# This is the wilderness
+# Change the dimensions at your perils, most likely the game will crash !!!
+
+# File: wf_info.txt
+# This file is used to initialize the "wilderness feats" information for the Angband game.
+# You will stuff like 'Ekkaia, the Encircling Sea' , 'mountain' , 'Minas Anor' etc.
diff --git a/lib/edit/s_crypt.map b/lib/edit/s_crypt.map
new file mode 100644
index 00000000..3d6ce71c
--- /dev/null
+++ b/lib/edit/s_crypt.map
@@ -0,0 +1,109 @@
+# Special level "The Forgotten Crypt" in The Pits of Angband
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+# Written by Mynstral (mynstral@thehelm.com)
+
+%:special.txt
+
+### Guaranteed Monsters
+# Vampire on normal floor
+F:a:1:0:432
+
+# Ghoul on normal floor
+F:b:1:0:418
+
+# Rotting Quylthulg on normal floor
+F:c:1:0:633
+
+# Master Vampire on normal floor
+F:d:1:0:520
+
+# Vampire Lord on normal floor
+F:e:1:0:623
+
+# Greater Rotting Quylthulg on normal floor
+F:f:1:0:802
+
+# Ghast on normal floor
+F:g:1:0:327
+
+# Undead Beholder on normal floor
+F:h:1:0:664
+
+# Thuringwethil, the Vampire Messenger on normal floor
+F:i:1:0:755
+
+# Black Reaver on normal floor
+F:j:1:0:798
+
+### Random Monsters and/or Items
+# Random monster (upto 5 levels ood) on normal floor
+F:&:1:0:*75
+
+# Random monster (upto 11 levels ood) on normal floor
+F:@:1:0:*81
+
+# Random monster (upto 9 levels ood) and
+# Random object (upto 7 levels ood) on normal floor
+F:8:1:0:*79:*77
+
+# Random monster (upto 40 levels ood) and
+# Random object (upto 20 levels ood
+F:9:1:0:*110:*90
+
+# Random monster (upto 3 levels ood)
+F:-:1:0:*73
+
+# Random object (upto 7 levels ood)
+F:=:1:0:0:*77
+
+### Guaranteed Items
+# The Shadow Cloak of Luthien on normal floor
+F:1:1:0:0:0:0:49
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XA.%@=-=-X8XX6...XX.XXLLL..c..LLLXX.XX...7XX8X=-=-...5X
+D:X.%%@=-=-X99X.....X..XLL..X%X..LLX..XhVV..X99X=-=-..GGX
+D:X%%@@...XXX9XX....XX.XX...X.X...XX.XXVVVVXX9XXX=-=.XGGX
+D:X@@@....X8X-=XgggggX..X..dX4Xd..X..XWWWWWX-=X8X-=-.XGGX
+D:X......XX%XX=XXgddgXX.XX8GXXXG8XX.XXWWWWXX-XX%XX...XGGX
+D:XIXIXXIX*X=X-=XgddggX..X8G^.^G8X..XWWWWWX-=X.X.X&&&XGGX
+D:XXXIXIXX*X-XX=XXggggXX.XXG^.^GXX.XXWWWWXX-XX.X.XX&&XGGX
+D:XXXXXIX**X=-X=-XIIXXXX..XG^.^GX..XVWWWVX=-XX.XddX@@XGGX
+D:X^^^^XX**X=-XX=XXIXIIXX.XX^.^XX.XXVVVVXX-XX%.XedXX@XGGX
+D:X^^f^Xe**X%%.X=-XXIXXIXbbX^.^XbbX.VV.XX=-XbX.XXXIX@IIGX
+D:X^^^XXe..X...XX=-XXXIXXXbXX.XXbXX...XX=-XXbX.XaaaXXXIGX
+D:X^^XXbbb.XGGG.XX=-XXIIXXbbXDXbbX...XX=-XXbbX.XaaaaXXIGX
+D:X^XXcbab.XVdG.cXX=-XXXIXXabXbaXX.XXX=-XXbbbX.XaaaaaXXfX
+D:X%XbbbbbbXVWG.%.XX.DbXDXXXbXbXXXDXbD.XX....G.XGGGGGGX%X
+D:XX.bababa%eWG.%.BXXXbcbbbbX.XbbbbcbXXXC...fX.%.......XX
+D:X%XbbbbbbXVWG.%.XX.DbXDXXXbXbXXXDXbD.XX....G.XGGGGGGX%X
+D:X8XXcbab.XVdG.cXX=-XXX.XXabXbaXXLXXX=-XXbbbX.XaaaaaXX.X
+D:X88XXbbb.XGGG.XX=-XX...XbbXDXbbXLLLXX=-XXbbX.XaaaaXXX.X
+D:XXXIXXe..X...XX=-XX.GGXXbXX.XXbXXILIXX=-XXbX.XaaaXXXX.X
+D:X9889Xe**X%%.X=-XXG.GdXbbX^.^XbbXILLIXX=-XbX.XXXIXhGG.X
+D:XXIXXXX**X=-XX=XXdG.GXX.XX^.^XX.XXILIIXX-XX%.XedXXXXX.X
+D:X99999X**X=-X=-XGGG..X..XI^a^IX..XILLIIX=-XX.XddX..eeeX
+D:XXXXIXXX*X=XX-XX....XX.XXI^a^IXX.XXILLIXX=XX.X.XX.GGGGX
+D:X^^^^^cX*X-X=-X.....X..X.I^a^I.X..XIILLIX=-X.X.Xdddd..X
+D:XllllX^XX%XX=XXG.GGXX.XX.IXXXI.XX.XXIILIXX-XX%XXXXXXX.X
+D:X^^^cl^=X8X-=XeG.GeX..X...X4X...X..XILLLIX-=X8X.aaaaaaX
+D:XLLX^l^-XXX9XXGG.GXX.XX...X.X...XX.XXLLLLXX9XXX.GGGGGGX
+D:X..L^l^=-X99X.....X..XWW..X%X..WWX..XLLLL.X99XXbbbbb..X
+D:X7.L^l^=-X8XX5...XX.XXWWW..c..WWWXX.XXLL.AXX8XXbbbbb.6X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXIIIIXIIIIXXIIIXIIIIXXIIIXXXXggggXc..cXaaaaXbb.CX
+D:XIIIIIXIXXIIIXXIIXIXIXIXXIXXIXIXXXXgddg%....%aaaa%bb..X
+D:XIXXXIXIXXXXXXXXIIIXIXIIXIXXIXIXXXXggggXc..cXaaaaXbbbbX
+D:XIXXXIIIXIIIIIIXXXXXIXXIXIXIIXIXXXXXXXXXXIIXXXXXXXXXXXX
+D:X..XXXXXXIXXXXIXIIIXIXIIXIXIXXIXXXXVVVjXddddXe..eX....X
+D:XB.IIIIIXIIIXIIXIXIXIIIXXIXIXIIXIIIVVVEX....%.ee.%.hh.X
+D:X..XXXXIXXXIXIXXIXIXXXXXIIXIXIXXIXXVVVjXddddXe..eX....X
+D:XIXXXIXIIIXIXIIIIXIIIIXIIXXIXIXXIXXXXXXXXXXXXXXXXXXDDXX
+D:XIXXXIXXXIIIXXXXXXXXXIXIXXIIXIIIIXXGGGGXgggdddeIVX....X
+D:XIIXXIXXXXXXXIIIIXXIXXXIIIIXXXXXXXXE.heDgggaaaiG1X....X
+D:XXIIIIIIIIIIIIXXIIIIXIIIXXXXXXXXXXXGGGGXgggdddeIVX..j>X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+### Starting location
+P:17:29
diff --git a/lib/edit/s_death.map b/lib/edit/s_death.map
new file mode 100644
index 00000000..398b5fd1
--- /dev/null
+++ b/lib/edit/s_death.map
@@ -0,0 +1,104 @@
+# Special level "Deathwatch" in the Orc Caves
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+# Altered by Mynstral (mynstral@thehelm.com)
+
+%:special.txt
+
+### Guaranteed monsters
+# Snaga on normal floor
+F:a:1:0:118
+
+# Cave orc on normal floor
+F:b:1:0:126
+
+# Hill orc on normal floor
+F:c:1:0:149
+
+# Black orc on normal floor
+F:d:1:0:244
+
+# Half-orc on normal floor
+F:e:1:0:264
+
+# Uruk on normal floor
+F:f:1:0:313
+
+# orc captain on normal floor
+F:g:1:0:285
+
+# Lagduf on normal floor
+F:h:1:0:140
+
+# Grishnakh on normal floor
+F:i:1:0:186
+
+# Golfimbul on normal floor
+F:j:1:0:215
+
+### Guaranteed items
+# Thalkettoth on normal floor
+F:1:1:0:0:0:0:28
+
+# Maedhros on normal floor
+F:2:1:0:0:0:0:64
+
+# Cammithrim on normal floor
+F:3:1:0:0:0:0:53
+
+### Dungeon Design
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X XXXXXXXXXXXX X
+D:X X..........X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X
+D:X X....>.....X X.XdX.X.X.XcX.X.X...XcX.X.XcX.X.XgXd+2X X
+D:X X..........X XDXDXDXDXDXDXDXDX...XDXDXDXDXDXDXDXDXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X
+D:X XXXXXDXXXXXX X...............D...D...............X X...f............a...XXXXX.......b..f....a....+1X X
+D:X X.X XDXDXDXDXDXDXDXDX..cXDXDXDXDXDXDXDXDX X........b...........XXXXX...a..........b.....XXX X
+D:X X.X X.XcX.XcXdX.X.X.X...XcX.XdXcX.X.X.XgX XXXXXXXXXXDDXXXXXXXXXXXXXXXXXXXXXXXXDDXXXXXXXXX X
+D:X X.X XXXXXXXXXXXXXXXXX.c.XXXXXXXXXXXXXXXXX XXXXXXXXXXDDXXXXXXXXXXXXXXXXXXXXXXXXDDXXXXXXXXX X
+D:X X.X XXX X...X X...........f...a....XXXXX....b.a...........b.X X
+D:X XX.XX X.XXXXXXXXXXXXDDDXXXXX X..f...b.............XXXXX..a....f.....b..a...X X
+D:X XX...XX XXXDXXXXXXXXX.......c.XX XXXXXXXXXXDDXXXXXXXXXXXXXXXXXXXXXXXXDDXXXXXXXXX X
+D:X XX.....XX XdD........D...c......dX X........a...............a....................X X
+D:X XX.......XX XXXDXXXXXXXX......c....X Xf....b..........f............a.........f.....X X
+D:X X.........X XeX XX.........XX X.............a.......b...........a...........X X
+D:X XXXXX.XXXXX X.X XXXXDDDXXXX X....a...............................a........X X
+D:X X.X X.X X...X XXXXXXXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXX X
+D:X X.X X.X X...X X...X X
+D:X X.X X.X XX...XX X.b.X X
+D:X X.X X.X XX.....XX X...X X
+D:X XXDXX XXXX X.X XX.......XX X..bX X
+D:X X...XXXX..X XdX XX...ccc...XX X...X X
+D:X X...+..D..X X.X XX....ccc...dXX X...X X
+D:X X...XXXX..X X.X XX.d..ccicc....XX XXXXXXXXXXXXXDDDXXXXXXXXXXXX X
+D:X XX.XX XXXX X.X XX......ccc..g...XX XX......a...............f...XX X
+D:X X.X X.X XX...g...ccc.......XX XXX..f.........................XX XXXXX X
+D:X X.X X.X X......g.........g..X XX..................b....a.......XX Xa.aX X
+D:X X.X XgX XXXX..XXXXXXX..XXXXXX XX.....a.........a..............a..XX X.a.X X
+D:X X.X X.X X..X X..X XXXXXXXX..........f........................XX XDXXX X
+D:X X.X X.X Xd.XXXXXXX..XXXXXXX X.....D...b.................b...f...........XXXXXXXXXXX.X X
+D:X X.X X.X X...c.......D.....X X.....D...........a..h.............a........D......a....X X
+D:X X.X X.X X.......c.g.D.....X X...XXXX.....b.............................XXXXXXXXXXXX.X X
+D:X XXXX.XXXX X.X XXXXXXXXXXXXXXXX..XXXXXXX X...X XX..............a......a...........XX X.X X
+D:X X.......X X.X X........XXXXXXX...X XX.........f.............f.......XX X.X X
+D:X XXX...XXX X.X X..d...............X XX.....b...........b.........f.XX XaX X
+D:X X.......X X.X X........XXXXXXX...X XX..........b................XX X.X X
+D:X XXXX.XXXX X.X XXXXXXXXXX XXXXX XXXXXXXXXXXXDDDDDXXXXXXXXXXXX X.X X
+D:X X.X XDXXXXXXXXXXXXXXX X.....X X.X X
+D:X X.X X..d...e......d.XXXXXXXXXXX XXXXXXXXXXXX X.b...X X.X X
+D:X X.X X....e..g.......D.........X X.d..gg..eeX XXX.....XX X.X X
+D:X X.X XXXXX X..g..d.....e...XXXXXXXXDDXXXXXXXX....gg..eeXXXXX XX...XXX..XXX XXXXXXDXX X
+D:X X.X XeeeX XDXXXXXXXXXXXXXXX Xg.d.......D.e..e..gg..eej+3+% XX....XXX....XXXXXX XXX...D..aX X
+D:X X.X Xeg.X XX.XX X....e....eD.e.....gg..eedXXX% X.............X...X XaD...X...X X
+D:X XXXX.XXX XX+XXXX...X X.d........XXXX....gg..eeXX % XXXXX XXXXXXXXXXXX..D...X XXX..aX...X X
+D:X X......X XX.......X XXXX...e...d..XXXX...dgg..eeX % X...X XX.....D..XXXXXX XXXXXXXDXX X
+D:X X......X X.g.....XXXXXX X..D....g..e..Dd.XXXXXXXXXXXX % XXXDXX X......X..X....X X...X X
+D:X X......X X...d...DeeeeX X..XXXXXXXXXXXX..X + X...X XXXXXXXX..X....X X...X X
+D:X X......X X.....e.XXXXXX XXXX XXXX % X...XXXXXX X....D..D....X XXXXXXXXDXDXXXX X
+D:X XXXDDXXXXXXXXXXXXXX+XXXXXX % X....X...X X..XXX..XXXXXXXXX X.....a..X....X X
+D:X X........%........X %+%%....D...XXXXXX.D..D.....+.X X........X....X X
+D:X XXXXXXXXXXXXXXXXXXX XXXXXX..........X..X.....XXX XXXXXXXXXXXXXXX X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+### Starting Location
+P:51:125
diff --git a/lib/edit/s_doom.map b/lib/edit/s_doom.map
new file mode 100644
index 00000000..5be3b67d
--- /dev/null
+++ b/lib/edit/s_doom.map
@@ -0,0 +1,226 @@
+# Mount Doom
+
+### Terrain Features
+# Permanent Wall
+F:X:177:0
+
+# Lava Wall
+F:#:177:0
+F: :177:0
+
+# Great Fire
+F:$:178:0
+
+# Fire
+F:%:205:0
+
+# Hidden Door
+F:+:48:0:0:0:0:0:0:0:177
+
+# Normal Door
+F:D:32:0
+
+# Shallow Lava
+F:.:86:0
+
+# Deep Lava
+F:L:85:0
+
+# Treasure (random) on shallow lava
+F:*:86:0:0:*
+
+# Trap (random) on deep lava
+F:^:85:0:0:0:0:0:*
+
+# Trap (random) on shallow lava
+F:t:86:0:0:0:0:0:*
+
+# up staircase
+F:<:6:0
+
+### Guaranteed Monsters
+# Greater Balrog on deep lava
+F:A:85:0:807
+
+# Greater Balrog on shallow lava
+F:a:86:0:807
+
+# Lesser Balrog on deep lava
+F:B:85:0:996
+
+# Lesser Balrog on shallow lava
+F:b:86:0:996
+
+# Pit Fiend on deep lava
+F:C:85:0:812
+
+# Pit Fiend on shallow lava
+F:c:86:0:812
+
+# Great Wyrm of Power on deep lava
+F:E:85:0:847
+
+# Great Wyrm of Power on shallow lava
+F:e:86:0:847
+
+# Bone Golem on deep lava
+F:F:85:0:1013
+
+# Bone Golem on shallow lava
+F:f:86:0:1013
+
+# Dracolisk on deep lava
+F:G:85:0:703
+
+# Dracolisk on shallow lava
+F:g:86:0:703
+
+# Nycadaemon on deep lava
+F:H:85:0:719
+
+# Nycadaemon on shallow lava
+F:h:86:0:719
+
+# Barbazu on deep lava
+F:I:85:0:720
+
+# Barbazu on shallow lava
+F:i:86:0:720
+
+# Plasma Hounds on deep lava
+F:J:85:0:726
+
+# Plasma Hounds on shallow lava
+F:j:86:0:726
+
+# Hell knight on deep lava
+F:K:85:0:731
+
+# Hell knight on shallow lava
+F:k:86:0:731
+
+# Nightcrawler on deep lava
+F:M:85:0:744
+
+# Nightcrawler on shallow lava
+F:m:86:0:744
+
+# Aether Hound on deep lava
+F:N:85:0:811
+
+# Aether Hound on shallow lava
+F:n:86:0:811
+
+# Eye druj on deep lava
+F:O:85:0:749
+
+# Eye druj on shallow lava
+F:o:86:0:749
+
+# Skull druj on deep lava
+F:P:85:0:750
+
+# Skull druj on shallow lava
+F:p:86:0:750
+
+# Great Hell Wyrm on deep lava
+F:Q:85:0:756
+
+# Great Hell Wyrm on shallow lava
+F:q:86:0:756
+
+# Nightwalker on deep lava
+F:R:85:0:768
+
+# Nightwalker on shallow lava
+F:r:86:0:768
+
+# Osyluth on deep lava
+F:S:85:0:773
+
+# Osyluth on shallow lava
+F:s:86:0:773
+
+# Great Wyrm of Many Colours on deep lava
+F:U:85:0:790
+
+# Great Wyrm of Many Colours on shallow lava
+F:u:86:0:790
+
+# Horned Reaper on deep lava
+F:V:85:0:811
+
+# Horned Reaper on shallow lava
+F:v:86:0:811
+
+# Bronze Golem on deep lava
+F:W:85:0:1015
+
+# Bronze Golem on shallow lava
+F:w:86:0:1015
+
+### Random Monsters and/or Items
+# Random monster on deep lava
+F:!:85:0:*99
+
+# Random monster on shallow lava
+F:1:86:0:*99
+
+# Random monster (upto 10 levels ood) on deep lava
+F:@:85:0:*109
+
+# Random monster (upto 10 levels ood) on shallow lava
+F:2:86:0:*109
+
+# Random monster and
+# Random object on deep lava
+F:&:85:0:*99:*99
+
+# Random monster and
+# Random object on shallow lava
+F:7:86:0:*99:*99
+
+# Random monster (upto 10 levels ood) and
+# Random object (upto 5 levels ood) on deep lava
+F:(:85:0:*109:*104
+
+# Random monster (upto 10 levels ood) and
+# Random object (upto 5 levels ood) on shallow lava
+F:9:86:0:*109:*104
+
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X #%%NNLL...JJJ....LL# ############## X
+D:X ##### #NNNN...Ljjjjj..LLL# #############################################..1!!!!...L### X
+D:X##.LL## #nNNN...LLJJj.LLLLL# #L....&!&!&....L%%%%%%%L..mRR%R%%M%MML%LL...DL...!1&..@L%%# X
+D:X#LL<..# #nn.LL.LLLL...%%%LL# #..##########################################LLL....LLL%%%# X
+D:X##%LL## #....LLL%%LLL..^LLL# #.L# #LL2.t..q.LLL## X
+D:X ###+# #D##############+#######.L# ##%%.LLLL&L...# X
+D:X #!# #.# #.......L%%# ##%%LL..2...t.## X
+D:X #^# #.############ ##########+# XXXXXXXXXX ##.9.t.LLLLL## X
+D:X #.# #LL%%%%LL...p# #11111# X########X ###############.2..LQ#+# X
+D:X ##.# ############D## #11211# X#9....9#X #o.....t...# ###^L..#(# X
+D:X #L## ##%%V## #12221# XXXXXX#..$$..#XXXXXX#LLLLKkk...# ###D#### X
+D:X ##!# ##.VH^%## #12221# X######t....m######X#LLLLkkk.LL# #.# X
+D:X #.# ##.iH%%hv## #11211### X#sSSSrrt%.mVVVLLe#X#.LL.kkk...# ##.# X
+D:X ###D######### #tiI%HHhvL# #11111+9# X#rRssRr.%.mVvvm..#X#%...LLL...# ##Lo###### X
+D:X #.^t^LLL...L## #.LIH%Hc..# ######### X#.MmmM..%..MMLLL.#X#%%......L&# ##.L##EBBB# X
+D:X #.jJ%%%L....L# ##..ICCL.## X#.L..L..%ttL.....#X########D### #.####LAAB## X
+D:X #JJJJL%LLL&..# ##..L.L## X#9LLL...%..LL(LLq#X #..L..# #.LL..LB%%L# X
+D:X #J%J..LLL%%LL## ##.t.## X######......######X #L.#### ###..LL%%%L## X
+D:X #jJJ^..bL%LL..## ##D################# XXXXXX#.LUUL.#XXXXXX #.L# #.PL%%%@(L# X
+D:X ##....BABLL..L.## #.uLL^L..L%^^..L%%# X#.L%%LL#X #L.#### ###.L%LL..##X
+D:X ##....B%%L.....## #################L# X#LLL..t#X #..twW# #L..LL...+pX
+D:X ###....LLL...LLL####################.# X#%L..7.#X #####L# ###LL...1###oX
+D:X #9+L%%L...LLL....D.+..%%oF.%%^..%%LL.# X#LLLLt.#X #p# #%%%!@..## #tX
+D:X ##################L###.L###..###.L#### X#7tt.LL#X #.# ######### #EX
+D:X ##################.# ############## X#.LLLL.#X ######D###################LX
+D:X ##11!!!&LL.+(#L# X#LL%%LL#X #G..LLL.LL...D..LL....^LLL%X
+D:X ##1!!!%%%%Lp###L# X#L%%%%Q#X #..LF....K...##############X
+D:X ##!!%%%%%LLL..#.# XXXXDDXXXX########.LLLL..KKK..#### X
+D:X ##.LLLLLLL...+.# #%%%%%%%%%%%%%+LL7..LL.k..L+o7# X
+D:X ############### ############################### X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+### Starting location
+P:6:6
diff --git a/lib/edit/s_factory.map b/lib/edit/s_factory.map
new file mode 100755
index 00000000..111829f1
--- /dev/null
+++ b/lib/edit/s_factory.map
@@ -0,0 +1,238 @@
+# Map "s_factory.map"
+#
+# Special Level "Foul Factory" in the Illusory Castle
+#
+# Created for ToME 3.x on 11/11/2003
+# Written by Lord Dimwit (lorddimwit@hotmail.com)
+#
+# Middle-game dungeon
+# Comments: This level isn't designed to kill the player, really, just
+# induce such severe aggravation that their head explodes. There are
+# two parts of it, the "abusive trickery" part that leads the player
+# through a horrendous maze of strategically placed glass walls, permanent
+# walls, and ethereal walls (like permanent walls only invisible, very awful),
+# followed by a "Factory" stage that follows more traditional patterns of
+# throwing monsters systematically at the player.
+
+# Backported to ToME 2.x by Massimiliano Marangio on 02/07/2004
+
+# Replaced the letter : by R for Rubble
+# Changed the starting position to 21:51
+# Corrected the exits of the jumpgates
+
+### F:<letter>:<terrain>:<cave_info>:<monster>:<object>:<ego>:<artifact>:<trap>:<special>:<mimic>
+
+### Terrain Features
+
+
+# Permanent wall
+F:X:61:4
+
+# Fake wall
+F:I:189:0
+
+# Ethereal wall
+F:#:214:0
+
+# Copper Pillar
+F:;:213:0
+
+# Mountains
+F:M:97:0
+
+# granite
+F:G:57:4
+
+# Floor
+F:.:1:0
+
+# Deep Water
+F:~:187:4
+
+# Ash
+F:,:93:4
+
+# Fire
+F:%:205:0
+
+# Deep lava
+F:L:85:0
+
+# Shallow lava
+F:l:86:0
+
+# Glass Wall
+F:_:188:0
+
+# Rubble
+F:R:49:0
+
+# Trees
+F:T:96:0
+
+# Tainted water
+F:t:174:0
+
+# Chasm
+F:C:87:0
+
+# up staircase
+F:<:6:0
+
+# down staircase
+F:>:7:0
+
+# between gate 1
+F:1:160:6:0:0:0:0:0:845
+
+# between gate 2
+F:2:160:6:0:0:0:0:0:846
+
+# between gate 3
+F:3:160:6:0:0:0:0:0:4370
+
+# between gate 4
+F:4:160:6:0:0:0:0:0:3339
+
+# between gate 5
+F:5:160:6:0:0:0:0:0:4119
+
+# between gate 6
+F:6:160:6:0:0:0:0:0:6659
+
+# between gate 7
+F:7:160:6:0:0:0:0:0:9257
+
+# between gate 8
+F:8:160:6:0:0:0:0:0:8018
+
+# between gate 9
+F:9:160:6:0:0:0:0:0:9298
+
+# between gate A
+F:A:160:6:0:0:0:0:0:805
+
+# between gate B
+F:B:160:6:0:0:0:0:0:831
+
+# between gate D
+F:D:160:6:0:0:0:0:0:809
+
+# between gate E
+F:E:160:6:0:0:0:0:0:2826
+
+# between gate F
+F:F:160:6:0:0:0:0:0:2831
+
+# between gate H
+F:H:160:6:0:0:0:0:0:4631
+
+# between gate J
+F:J:160:6:0:0:0:0:0:7198
+
+# between gate K
+F:K:160:6:0:0:0:0:0:7990
+
+# between gate N
+F:N:160:6:0:0:0:0:0:9253
+
+# Treasure on floor
+F:$:1:0:0:*65
+
+# Trap (random) on floor
+F:^:1:0:0:0:0:0:*
+
+
+### Monsters
+
+# Eog Golem on floor
+F:g:1:0:530
+
+# Clay Golem on floor
+F:a:1:0:261
+
+# Aquatic Golem in water (OK, just for show)
+F:?:187:0:899
+
+# Stone Golem on floor
+F:b:1:0:323
+
+# Iron Golem on floor
+F:c:1:0:367
+
+# Colbran on floor
+F:d:1:0:435
+
+# Mithril golem on floor
+F:e:1:0:464
+
+# Colossus on floor
+F:f:1:0:558
+
+# Drolem on floor
+F:h:1:0:691
+
+# Demonic Q on shallow lava
+F:Q:86:0:727
+
+# Livingstone on floor
+F:i:1:0:336
+
+# Random monster (upto 8 levels ood) on normal floor
+F:&:1:0:*58
+
+
+### Items
+
+# Broken Stick
+F:s:1:0:0:727
+
+
+### Guaranteed Items
+
+# The Boots of the Machine
+F:*:205:0:0:0:0:218
+
+
+### Level layout
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X..e.e...I.......Xe..c.a..ca.c.....1X..3..XQQX,llllllllllllll2XX#Gi.X.X..XLABLX..X
+D:X.XXX...XXX.....XXXe.c..XXX__XX__XXXX.;.;.XllX,ll,ll,XXXXXXXXXXi.X#.XiXXXXL%%LXXXX
+D:X&XXXe.XX~XXeeeXX~XXe..XX~~~~~~ttttXX.....X,,,,Ll,ll,X..XII.X.X.i.XXG_XXXXL%%LXXXX
+D:X..&..XX~~~XXeXX~?~XX.&X~~~~t~ttttttX.;.;.X,lllll,ll,XX_..XX.XX#X..X#XXf.X_GG_X.fX
+D:XGXGXGX?~~~~_c_~~~~~X.&XX~~~~t~ttttXX.....X,L,,,,,lL,.X.#XXi..G.XXiX..XX.........X
+D:X.....XX~~?XXcXX~~~XXa..XXX__XX__XXXX.;.;.X,L,.XXX%L%XXXXcXX.XXX.X.X.X.XX.X.ff.X.X
+D:XXgXgXgXX~XXcccXX?XXXXX.a^^a.^^a...bXXXGXXX%L%XX.XX%XXa.aXIX.Xi#.XiXI.X.X........X
+D:XgXgXgXgXXX^^^^^XXX,ccXXXXXXXXXXXb.XX#...#XX%XX.XI_XX....X.X.#XXXIX.#GX.X.X....X.X
+D:X.......4X.^^5^^.X.c.c..c..c.c..c.XX.#...#.XXXIXX.X.a.c..XXi..I.X._.X.XXX...&&...X
+D:X..&&...XXXXXXXXXXc,c,c.XX_XX..ccXX..#...#..XX#iiX.X.a..a.XX.#XX._X.XX.XX.X....X.X
+D:X......XXEX,,,c,c,cc,ccXXMRMXXc.XX...#...#...XXX#iXXXXXc..IXGX.XXiX.....X........X
+D:XXXXXXXX..X,,,,,,,,,,,XXM..RMXXXX$$XXX...XXX$$XX..XX_GXXXXXX.Ii.X_X.X#XXX.X....X.X
+D:XT.T._.g.gXX,C,,,.,C,c_M.R.R.MXX$$$XXX...XXX$$$XX..XIXIXII.i.XX_.X.XX.XXXXGGGGGGXX
+D:X.T.T_.....XXlXXXXXlXFXXM..RMXX$$XXXXX...XXXXX$$XX.#.XX.X_X_XXI#.XXIIX.Xeee...eeeX
+D:X..T._.g..g.XlX_D_XlXXXXXM.MXX$$$#....%%%....#$$$X.X..XX_G.#.X.XXIXX..cXXXX...XXXX
+D:XMMMMX...&..XlX_._XlX6..XXXXXX$$$#....%*%....#$$$X._X#iX.XX..G_Xi.XXd..XLl#_._#lLX
+D:Xs.s._..&.&.XlX_._XlX..gg....X$$$#....%%%....#$$$X.IIX.X..XIXX.X.G#X..dXLl#_._#lLX
+D:X.s.s_g....XXlXXGXXlXX.g..d&.XX$$XXXXX...XXXXX$$XXXX._XG#X.XX.X_X.XX.c.XXXX...XXXX
+D:XXXXXXXXXXIXLLLXGXLLLXgg.g.d..XX$$$XXX...XXX$$$XX<...XiXX.X.Xi.X.X.Xd..X.........X
+D:Xgg.gXg.gXIXL%LXGXL%LXGXXX__XXXXX$$XXX...XXX$$XXXXXXIXXiX#XX#XX#X_XX...XXXXXXXIXXX
+D:X^^X^X^X^X^XX_XXGXX_XXGXXg..g.%.XX...X...X...XX.GI.X._iXXG...I..I.GX..dIX#I#I#I#IX
+D:X^^X^X^X^X^Xhl,&c.a&g.l.XX.g.g%RRXX..X###X..XX..#_X..XXX_iXXIXiXi_.Xc..X.IX.XXXIXX
+D:X^^X^X^X^X^X&,,,l&,lac.&.__.g.%.R.XX...>...XX#X.X..XX#.._X.X.X.#.XGX.X.XX_XX.X#i.X
+D:XH.Xg.gXg.gXla,ca&,f.fl.leXX..%R.RRXX.....XX.G.XX#XXI.XX.#.XGXXXiX.#X.XX.i._X.XGX#
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXGXXXXXXXG.X..X#XXX.XX.XXI._XIX.XIXXI#.XXX.X
+D:X,.,G,&&,ee,ff,hgg,&&,,,.,,I7XXXc..aX.;.;.X&..XXXG#XX.G.XXX..XG######.G.#..##..iXX
+D:X^X,G.&&.ee,ff..gg,&&,.,,,,XXX..MRM.X.....X.....XXX.IIX.XGI.XX..IXXXXXXXXXXX._.X._
+D:X^X,XXXXXXXXXXX.XXXXXX,,.XXX..$.....X.;.;.Xh..&...GXXXGXi#IXX.IXX..#.....#.XX##XXX
+D:X^X,llL,LlLL,LXXXlll,XXXXX..aMR..$.cX.....X.....XXXX8XXXXXXXX#IX###..##.#..#XI.XKX
+D:X^XlLCCCCCCCCLllll%%l.R.R.R.R..M.R..X.;.;.X&..XXX.#X#.i.#.XXX#X...###.#.##.#.X#IXX
+D:X^X,lL,llL,Ll,XXX,lllXXXXXc.M..R.c..X.....XXXXX#.#.XIX#Xi.X...X###.#####.#...X#XXX
+D:X^X,XXXXXXXXXXX.XXXXXX,.,XXX...$.M..X.;.;.Xh.##i#.#XX_IX.#X.##I....#.#.###.##X#I.X
+D:X^X.G,&&,,gg.&.,ee,ff,,.,.,XXXa..R..X.....X..#.###.XIXX.X.X.##XX####..#..###II.X.X
+D:X,,,G,&&,,gg.&h.ee,ff,..,.,I^XXXM..9X.;J;.Xh.##.###..iiX#.X....II.....#....IX..XNX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+### Starting location
+P:21:51
diff --git a/lib/edit/s_gates.map b/lib/edit/s_gates.map
new file mode 100644
index 00000000..3ac7ccbf
--- /dev/null
+++ b/lib/edit/s_gates.map
@@ -0,0 +1,117 @@
+# Special Level "The Dimensional Gates" in the Pits of Angband
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+# Written by Mynstral (mynstral@thehelm.com)
+
+%:special.txt
+
+### Gauranteed monsters
+
+# Quylthulg on normal floor
+F:a:1:0:342
+
+# Demonic Quylthulg on normal floor
+F:b:1:0:727
+
+# Draconic Quylthulg on normal floor
+F:c:1:0:759
+
+# Rotting Quylthulg on normal floor
+F:d:1:0:633
+
+# Greater Draconic Quylthulg on normal floor
+F:e:1:0:801
+
+# Greater Rotting Quylthulg on normal floor
+F:f:1:0:802
+
+# Great Hell Wyrm on normal floor
+F:g:1:0:756
+
+# Master Quythulg on normal floor
+F:h:1:0:821
+
+### Random monsters and/or items
+
+# Random monster (upto 5 levels ood) on normal floor
+F:&:1:0:*90
+
+# Random monster (upto 11 levels ood) on normal floor
+F:@:1:0:*96
+
+# Random monster (upto 9 levels ood) and
+# Random object (upto 7 levels ood) on normal floor
+F:8:1:0:*94:*92
+
+# Random monster (upto 40 levels ood) and
+# Random object (upto 20 levels ood
+F:9:1:0:*125:*105
+
+### Guaranteed items
+
+# The Ring of Power 'Narya' on normal floor
+F:1:1:0:0:0:0:10
+
+
+### Level design
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X*****...@%...aX.X9@********%%%%%%X9.VV....Xd.............A^^.......dX
+D:X*****...@%...aX.X@@********%%%%%%X.VVVV.X.XX.............B^^........X
+D:X*****...@%...aX.X99*XXX****%%88%%XVVWWVVX..XX.............^^.......9X
+D:X*****...@%...aX.X@@XXdXX***%%88%%XVVWWVVX...XX............^^.......CX
+D:X*****...@%...aX.X@XX...XX**%%%%%%X.VVVV.X.X..XX..........5^^........X
+D:X........@%...aX.XXX.....XX*%%%%%%X9.VV..X.XX..XX.........F^^.......dX
+D:X%X......@%...aX.X........XIXXXXXXXXXXX..X..XX..XXXXIXXXXXXXXXXXXXXXXX
+D:X.XXX....@%...aX.X..........XXX..>X...X..X...XX..XXXaXaXaXaXaXaXaXaXaX
+D:X...XXX..@%...aI.X..........XXX7..X...D..X.X..XX..XX.................X
+D:X.....XXX@%...aX.X..........XXXXXXXXXXX..X.XX..XX..XX................X
+D:X.......XXX...aX.X..........XXXXXXXaG....X..XX..XX..XX...............X
+D:X..X......XXX.XX%XX^^^^^X...XXXXXXXaG....X...XX..XX..XX..............X
+D:X^^XX.......XXX***X^^^^^X...XIIII7XXXXXXXXXX..XX..XX..XXXXXXXXXXXX+X8X
+D:X^^XX.........X.6.X^^^^^X...XIXXXXX&&&&&&&&XX..XX..XX...........cX.XXX
+D:X..XXX........X***X^^^^^X...XIXXXXX.........XX..XX..XXXXXXXXXXXXXX..XX
+D:X^^X8X........XXXXX^^^^^X...XIIIIIXVVV.......XX..XX.............bXX..X
+D:X..X8XX................XX...XXXXXIXVVVV.......XX..XXXXXXXXXXXXXXXXXX+X
+D:X^^X88X................XX...XIIIIIXVVVVVV..@...XX.^^^^^^^^^^^^^a.....X
+D:X^^X99XX...............XX...XIXXXXX4..VVVV......XXXXXXXXXXXXXXXXXXXXXX
+D:X..X999X...............XX...XIXXXXXXXXX.VVVV....***********.........bX
+D:X^^XIIIXX..............XX...XIX...5..fX...VVVVV.@....................X
+D:X..X....X........d.....XX...XIXf......X...VVVVVVV...............@....X
+D:X^^X....XX............XXX...XIXXXXXXXXX.......VVVVVVV................X
+D:X^^X&&&&&X............XXX...XIIIIIXe...........VVVVVVVVVVVV..........X
+D:X..X%%%.%XX..........XXX....XXXXXIX.............@VVVVVVVVVVVV@.......X
+D:X^^X88%.%8X.........XXX.....XXXXXIX...................VVVVVVVVVV.....X
+D:X..X%%%.%%XX........XX......XXXXXIX@.....................VVVVVVVVVVVVX
+D:X^^X......cX......XXXX......XXXXXIX........@..........@....VVVVVVVVVVX
+D:X^^^......cXX888XXXXX......dIIIIIIX.........................b.VVV...6X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgLLLLLgXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLLLLXXLLLLLLXXXXXXXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgLLLLLXXXXXgLLLLLLLXXgXXXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXLLLLgXXXXXXXXXXXXXXLLLLLLLXXXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXLLXXXXXXXXXXXXXXXXXXgXXXLLLgXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXLgXXXXXXXXXXXXXXXXXXXXXXXXLLLLXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXfXXXXXXXXLXXXXXXXXXXXXXXXXXXXXXXXXXgLLLLXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXX.XXXXXXXghgXXXXbXXXXXXXXaXXXXXXXXXXXXXXLLLLgXXXXXXX
+D:XXXXXXXXXXXXXXXXXXX.XXXXXXXg1gXXXX.XXXXXXXX.XXXXXXXXXXXXXXXXgLLXXXXXXX
+D:XXXXXXXXXXXXXXXXXXX^XXXXXXXXXXXXXX^XXXXXXXX^XXXXXXXXXXXXXXXXXXLXXXXXXX
+D:XXXXXXXXXXXXXXX4..^^^..^^^.......^^^......^^^.........EXXXXXXXLXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXX^XXXXXXXXX^XXXXXXXX^XXXXXXXXXXXXXXXXXLLXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXX.XXXXXXXX.XXXXXXXXXXXXXXXXLLLXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXcXXXXXXXXaXXXXXXXXXXXXXXXLLXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXeXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgLLLXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLLLXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLLXgXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLLXXXXXXXXXXXXXX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLLXXXXXXXXXXXXXXX
+D:X...dXXXXXXXXXXe..0XXXXXXXXXXXXXXXD..EXXXXXXXXXXXXXXLLXXXXXXXXXXXcc..X
+D:X...dXXXXXXXXXX....XXXXXXXXXXXXXXX....XXXXXXXXXXXXXX.XXXXXXXXXXXX....X
+D:XA...XXXXXXXXXXF..eXXXXXXXXXXXXXXXC...XXXXXXXXXXXXXX0XXXXXXXXXXXX...BX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+# Starting location
+P:11:37
diff --git a/lib/edit/s_info.txt b/lib/edit/s_info.txt
new file mode 100644
index 00000000..5e41fe97
--- /dev/null
+++ b/lib/edit/s_info.txt
@@ -0,0 +1,546 @@
+# File: s_info.txt
+
+
+# This file is used to initialize the "lib/data/s_info.raw" file, which is
+# used to initialize the "skills" information for the PernAngband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/data/s_info.raw" file.
+
+# The skill indexes are defined in "defines.h", and must not be changed.
+
+# N:idx:name
+# D:desc
+# A:action mkey:action desc
+# I:rate
+
+# E:exclusive skill:exclusive skill
+# O:skill:opposing skill%percent
+# A:skill:friendly skill%percent
+
+# T:father:child
+
+# Version stamp (required)
+
+V:2.0.0
+
+################################## MAGIC ##################################
+
+N:56:Magic-Device
+D:Eases the use of magical devices, such as wands, staves and rods
+D:It also helps pseudo-id of magic objects
+I:1000
+F:RANDOM_GAIN
+
+N:54:Spell-learning
+D:You should not see that ! that is a BUG!
+#A:18:Learn a spell from a realm
+I:1000
+F:HIDDEN
+
+N:41:Sorcery
+D:Ability to use all the magic schools as if their skill was sorcery
+D:But the price to channel that much magic is your health
+A:17:Cast a spell
+I:1000
+
+N:1:Conveyance
+D:Ability to learn and use spells from the Conveyance school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+F:RANDOM_GAIN
+
+N:2:Mana
+D:Ability to learn and use spells from the Mana school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:3:Fire
+D:Ability to learn and use spells from the Fire school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:4:Air
+D:Ability to learn and use spells from the Air school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:5:Water
+D:Ability to learn and use spells from the Water school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:6:Nature
+D:Ability to learn and use spells from the Nature school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:7:Earth
+D:Ability to learn and use spells from the Earth school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:10:Divination
+D:Ability to learn and use spells from the Divination school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+F:RANDOM_GAIN
+
+N:11:Temporal
+D:Ability to learn and use spells from the Temporal school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:14:Meta
+D:Ability to learn and use spells from the Meta school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:51:Mind
+D:Ability to learn and use spells from the Mind school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:55:Udun
+D:Ability to learn and use spells from the Udun school
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+F:HIDDEN
+
+N:13:Demonology
+D:Ability to use incantations from the Demonblades
+D:Spells use the intelligence stat
+A:17:Cast a spell
+I:1000
+
+N:31:Necromancy
+D:Ability to harness the powers of the dead
+D:Spells use the intelligence stat
+A:7:Use Necromancy
+I:1000
+F:RANDOM_GAIN
+G:60
+
+N:34:Runecraft
+D:Ability to combine magic runes to create your own spells
+D:Runespells use the dexterity stat
+A:9:Use Runespells
+I:1000
+
+N:43:Thaumaturgy
+D:Ability to gain and cast innate spells
+D:Spells use the intelligence stat
+A:8:Cast a thaumaturgy spell
+I:1000
+F:RANDOM_GAIN
+
+N:15:Magic
+D:General ability to do magic, also affects mana reserves and
+D:magic device ability. Helps pseudo-id of magic objects
+A:19:Copy a spell
+I:1000
+F:RANDOM_GAIN
+
+N:45:Spell-power
+D:Ability to increase the power of spells
+I:1000
+
+N:59:Geomancy
+D:Ability to understand the raw elemental forces of nature and use
+D:them to your advantage. Most spells need Fire/Water/Earth/Air skills
+A:101:Use Geomancy
+I:1000
+
+# All magic skills affect magic skill
+f:Magic-Device:Magic%7
+f:Spell-power:Magic%20
+f:Sorcery:Magic%20
+f:Mana:Magic%10
+f:Fire:Magic%10
+f:Air:Magic%10
+f:Water:Magic%10
+f:Earth:Magic%10
+f:Geomancy:Fire%45
+f:Geomancy:Earth%45
+f:Geomancy:Air%45
+f:Geomancy:Water%45
+f:Conveyance:Magic%10
+f:Divination:Magic%10
+f:Nature:Magic%10
+f:Temporal:Magic%10
+f:Meta:Magic%10
+f:Mind:Magic%10
+f:Udun:Magic%10
+f:Demonology:Magic%10
+f:Necromancy:Magic%4
+f:Runecraft:Magic%12
+f:Thaumaturgy:Magic%6
+
+
+
+################################## COMBAT ##################################
+
+N:16:Combat
+D:General ability to fight and to pseudo-id armour and weapons
+D:It also allows the use of heavier armour without penalties
+I:1000
+F:RANDOM_GAIN
+
+N:17:Weaponmastery
+D:General ability to use melee weapons
+I:1000
+F:RANDOM_GAIN
+
+N:18:Sword-mastery
+D:Ability to use swords
+I:1000
+
+N:19:Axe-mastery
+D:Ability to use axes
+I:1000
+
+N:20:Polearm-mastery
+D:Ability to use polearms
+I:1000
+
+N:21:Hafted-mastery
+D:Ability to use hafted weapons
+I:1000
+
+N:22:Backstab
+D:Ability to backstab fleeing and sleeping monsters to increase damage
+I:1000
+
+N:23:Archery
+D:General ability to use ranged weapons
+I:1000
+F:RANDOM_GAIN
+
+N:24:Sling-mastery
+D:Ability to use slings
+A:23:Fire piercing shots
+I:1000
+
+N:25:Bow-mastery
+D:Ability to use bows
+A:23:Fire piercing shots
+I:1000
+
+N:26:Crossbow-mastery
+D:Ability to use crossbows
+A:23:Fire piercing shots
+I:1000
+
+N:27:Boomerang-mastery
+D:Ability to use boomerangs
+I:1000
+
+N:58:Boulder-throwing
+D:Ability to make and throw boulders
+A:21:Tear down a wall to create boulders
+I:1000
+
+N:42:Barehand-combat
+D:Ability to fight barehanded
+I:1000
+F:RANDOM_GAIN
+G:70
+
+N:47:Bearform-combat
+D:Ability to fight in bear form
+I:1000
+F:HIDDEN | AUTO_HIDE
+
+N:52:Critical-hits
+D:Ability to deal critical hits with swords < 5lb
+I:1000
+
+N:57:Stunning-blows
+D:Ability to stun opponents when doing critical hits with hafted weapons > 5 lb
+I:1000
+
+# List of combat friendly skills
+
+# Melee: Specific masteries improve generic mastery
+f:Critical-hits:Sword-mastery%5
+f:Sword-mastery:Weaponmastery%25
+f:Axe-mastery:Weaponmastery%25
+f:Polearm-mastery:Weaponmastery%25
+f:Stunning-blows:Hafted-mastery%5
+f:Hafted-mastery:Weaponmastery%25
+
+# Ranged: Specific masteries improve generic mastery
+f:Sling-mastery:Archery%25
+f:Bow-mastery:Archery%25
+f:Crossbow-mastery:Archery%25
+f:Boomerang-mastery:Archery%25
+
+# All combat skills improve Combat
+f:Weaponmastery:Combat%50
+f:Sword-mastery:Combat%7
+f:Axe-mastery:Combat%7
+f:Polearm-mastery:Combat%7
+f:Hafted-mastery:Combat%7
+f:Archery:Combat%50
+f:Sling-mastery:Combat%7
+f:Bow-mastery:Combat%7
+f:Crossbow-mastery:Combat%7
+f:Boomerang-mastery:Combat%7
+f:Barehand-combat:Combat%50
+f:Boulder-throwing:Combat%40
+
+# No more, let's see how it turns out
+# Sorcery and Weaponmastery aren't exactly friendly to each other
+#O:Sorcery:Weaponmastery%100
+#O:Sorcery:Archery%100
+#O:Sorcery:Barehand-combat%100
+#O:Weaponmastery:Sorcery%100
+#O:Archery:Sorcery%100
+#O:Barehand-combat:Sorcery%100
+
+
+
+############################### SPIRITUALITY SKILLS ###########################
+
+N:28:Spirituality
+D:General ability to use spiritual skills and also influence your Saving Throw
+I:1000
+F:RANDOM_GAIN
+
+N:53:Prayer
+D:Ability to learn and use spells from the gods' schools
+D:Spells use the wisdom stat and cost piety instead of mana
+A:17:Cast a spell
+I:1000
+
+N:12:Druidistic
+D:Ability to learn and use prayers from the Druidistic realm
+D:Nature powers use the wisdom stat
+A:1:Cast a druidistic spell
+I:1000
+
+N:29:Mindcraft
+D:Ability to focus the powers of the mind
+D:Mindpowers use the wisdom stat
+A:2:Use Mindcraft
+I:1000
+F:RANDOM_GAIN
+G:50
+
+N:9:Music
+D:Ability to learn and sing songs
+D:Songs use the charisma stat
+A:17:Cast a spell
+I:1000
+
+f:Prayer:Spirituality%10
+f:Druidistic:Spirituality%10
+f:Mindcraft:Spirituality%10
+f:Music:Spirituality%10
+
+f:Prayer:Magic%10
+f:Druidistic:Magic%10
+f:Mindcraft:Magic%10
+f:Music:Magic%10
+
+
+################################## MISC SKILLS ###############################
+
+N:30:Misc
+D:Not a real skill, it is only used to regroup some skills
+I:0
+
+N:33:Antimagic
+D:Ability to generate an antimagic field
+A:3:Use antimagic
+I:1000
+F:RANDOM_GAIN
+G:80
+
+N:39:Alchemy
+D:Ability to use essences to modify/create magic items
+A:5:Use Alchemy
+I:1000
+
+# Antimagic exclude all magic
+E:Magic-Device:Antimagic
+E:Mana:Antimagic
+E:Geomancy:Antimagic
+E:Fire:Antimagic
+E:Air:Antimagic
+E:Water:Antimagic
+E:Earth:Antimagic
+E:Conveyance:Antimagic
+E:Divination:Antimagic
+E:Temporal:Antimagic
+E:Meta:Antimagic
+E:Mind:Antimagic
+E:Nature:Antimagic
+E:Udun:Antimagic
+E:Sorcery:Antimagic
+E:Demonology:Antimagic
+E:Runecraft:Antimagic
+E:Necromancy:Antimagic
+E:Mindcraft:Antimagic
+E:Music:Antimagic
+E:Prayer:Antimagic
+E:Druidistic:Antimagic
+E:Thaumaturgy:Antimagic
+
+################################## SNEAKINESS SKILLS ###############################
+
+N:35:Sneakiness
+D:General ability at the sneakiness skills.
+D:It also affects the searching abilities
+I:0
+F:RANDOM_GAIN
+
+N:36:Stealth
+D:Ability to move unnoticed, silently
+I:0
+F:RANDOM_GAIN
+
+N:37:Disarming
+D:Ability to disarm the various traps
+I:0
+F:RANDOM_GAIN
+
+N:40:Stealing
+D:Ability to steal objects
+A:15:Steal object
+I:0
+
+N:46:Dodging
+D:Ability to dodge blows and bolts
+A:16:Check dodge chance
+I:0
+
+f:Stealth:Sneakiness%15
+f:Disarming:Sneakiness%10
+f:Backstab:Sneakiness%5
+f:Stealing:Sneakiness%15
+f:Dodging:Sneakiness%10
+
+
+################################## MONSTER SKILLS ################################
+
+N:48:Monster-lore
+D:General ability at the monster related skills, ability to gain experience
+D:from friendly kills. It also affects the number of companions you can have
+I:0
+A:22:Turn pet into companion
+F:RANDOM_GAIN
+
+N:44:Summoning
+D:Ability to create totems from monsters and use them to summon monsters
+A:13:Manipulate totems
+I:1000
+F:RANDOM_GAIN
+G:60
+
+N:49:Corpse-preservation
+D:Ability not to destroy the monsters' corpses when killing them
+I:0
+
+N:50:Possession
+D:Ability to incarnate into monsters
+A:11:Use the possession skill
+I:0
+
+N:8:Symbiosis
+D:Ability to enter in symbiosis with monsters unable to move by themselves
+D:Spells use the intelligence stat
+A:20:Use symbiotic powers
+I:1000
+F:RANDOM_GAIN
+G:70
+
+N:32:Mimicry
+D:Ability to use cloaks of mimicry to change form
+A:6:Use Mimicry
+I:1000
+F:RANDOM_GAIN
+G:80
+
+f:Possession:Monster-lore%10
+f:Corpse-preservation:Monster-lore%10
+f:Summoning:Monster-lore%10
+f:Symbiosis:Monster-lore%10
+f:Mimicry:Monster-lore%10
+
+################################## SKILL TREE ################################
+
+T:Main:Combat
+T:Combat:Weaponmastery
+T:Weaponmastery:Sword-mastery
+T:Sword-mastery:Critical-hits
+T:Weaponmastery:Axe-mastery
+T:Weaponmastery:Hafted-mastery
+T:Hafted-mastery:Stunning-blows
+T:Weaponmastery:Polearm-mastery
+T:Combat:Archery
+T:Archery:Sling-mastery
+T:Archery:Bow-mastery
+T:Archery:Crossbow-mastery
+T:Archery:Boomerang-mastery
+T:Combat:Barehand-combat
+T:Combat:Bearform-combat
+T:Combat:Boulder-throwing
+T:Combat:Antimagic
+
+T:Main:Sneakiness
+T:Sneakiness:Stealth
+T:Sneakiness:Disarming
+T:Sneakiness:Backstab
+T:Sneakiness:Stealing
+T:Sneakiness:Dodging
+
+T:Main:Magic
+T:Magic:Magic-Device
+T:Magic:Spell-power
+T:Magic:Sorcery
+T:Magic:Mana
+T:Magic:Geomancy
+T:Magic:Meta
+T:Magic:Conveyance
+T:Magic:Divination
+T:Magic:Temporal
+T:Magic:Mind
+T:Magic:Nature
+T:Magic:Udun
+T:Magic:Demonology
+T:Magic:Necromancy
+T:Magic:Runecraft
+T:Magic:Thaumaturgy
+T:Magic:Alchemy
+
+T:Geomancy:Fire
+T:Geomancy:Water
+T:Geomancy:Air
+T:Geomancy:Earth
+
+T:Main:Spirituality
+T:Spirituality:Prayer
+T:Spirituality:Mindcraft
+T:Spirituality:Music
+
+T:Main:Monster-lore
+T:Monster-lore:Summoning
+T:Monster-lore:Corpse-preservation
+T:Monster-lore:Possession
+T:Monster-lore:Symbiosis
+T:Monster-lore:Mimicry
diff --git a/lib/edit/s_name.map b/lib/edit/s_name.map
new file mode 100644
index 00000000..795d8786
--- /dev/null
+++ b/lib/edit/s_name.map
@@ -0,0 +1,110 @@
+# Special level "The Nameless Level" in the Pits of Angband
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+# Written by Mynstral (mynstral@thehelm.com)
+
+%:special.txt
+
+# Great Storm Wyrm on normal floor
+F:a:1:0:728
+
+# Mature Red Dragon on normal floor
+F:b:1:0:589
+
+# Mature White Dragon on normal floor
+F:c:1:0:549
+
+# Ancient Blue Dragon on normal floor
+F:d:1:0:601
+
+# Ancient Black Dragon on normal floor
+F:e:1:0:624
+
+# Ancient Multi-hued Dragon on normal floor
+F:f:1:0:675
+
+# Great Hell Wyrm on normal floor
+F:g:1:0:756
+
+# Great Wyrm of Many Colours on normal floor
+F:h:1:0:790
+
+# Great Ice Wyrm on normal floor
+F:i:1:0:741
+
+# Sky Drake on normal floor
+F:j:1:0:793
+
+### Random Monsters and/or Items
+# Random monster (upto 5 levels ood) on normal floor
+F:&:1:0:*100
+
+# Random monster (upto 11 levels ood) on normal floor
+F:@:1:0:*106
+
+# Random monster (upto 9 levels ood) and
+# Random object (upto 7 levels ood) on normal floor
+F:8:1:0:*104:*102
+
+# Random monster (upto 40 levels ood) and
+# Random object (upto 20 levels ood
+F:9:1:0:*135:*115
+
+# Random monster (upto 3 levels ood)
+F:-:1:0:*98
+
+# Random object (upto 7 levels ood)
+F:=:1:0:0:*102
+
+### Guaranteed Items
+# The Multi-Hued Dragon Scale Mail 'Razorback' on normal floor
+F:1:1:0:0:0:0:16
+
+### Level Design
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X.....LLLLLLLLL.....XXX.G=-&&=-G^.........>X
+D:X.LLL...........LLLXX...G=-&.=-G^........1.X
+D:X.L9L.LLLLLLLLLLLLX%...EGE.=&.FG^..........X
+D:X.L99.L&..........X%....G..&-..G^....j.....X
+D:X.LLLLL&LLLLLLLLL.LXX...G=-=&-=G^..........X
+D:X....&&&L.......L.L*XXX.G-=&&-=G^^^^^^^^^^^X
+D:XLLLLLLLL.LLLLL..&L**XXXXXXXGGGG%XXXXXXXXXXX
+D:XXXXXXLL..L***LLLLLLLX^^^^8Xi....%@@^^.^^@@X
+D:X5..8X.&.XXXXXX......D^^^^8XIIIIIXbb^^.^^ccX
+D:X...8X...XA...X.LLLLLX^^^^8X.....X..^^.^^..X
+D:X...8X.XXXC...X.LL...XXXIXXX^^^^^X..^^.^^..X
+D:XGXXXX.LfX7...X&LL.L.Xa^^^aXf...fX..^^.^^..X
+D:X.X5XL.L*XB...X&&..L.X^b^b^X^^^^^X..^^.^^..X
+D:X.X^XL.L*XXXXXXLLLLL.X^^7^^X.....X..^^.^^..X
+D:X.X^XL.L***fXL.....&&X^b^b^XIIIIIX..^^.^^..X
+D:X.X^XL.LLLLLXL.LLLLLLXa^^^aXi....X..^^.^^..X
+D:X.X^XL.........XXXXXXXXX%XXXXXXXXX..^^.^^..X
+D:X.X^XXXXXXXXXXLX^...^Xe-^=dX^^..&X..^^.^^..X
+D:X.X^^^^^^^^^^XLX.^^^.X-^^^=X^^..&X..^^.^^..X
+D:X.XXXXXXXXXX^X8Xf^B^.%^^6^^%^^C.&X..^^.^^..X
+D:X.LLLLLLLLL+^XXX.^^^.X-^^^=X^^..&X..^^.^^..X
+D:X.XXXXXXXXXXXXXX^...^Xd-^=eX^^..&X..^^.^^..X
+D:X.Xbbbbb......XXXXXXXXXX%XXXXXXXXX..^^.^^..X
+D:X.XbbbbXXXX^^^^XX....X^^^^^X...h.X..^^.^^..X
+D:X.XbbbXX^^XXX^^^XX...X^ccc^X....0X..^^.^^..X
+D:X.XbbXX.^X%bXX^^^XX..X^.A.^X.....X..^^0^^..X
+D:X.IbXX..XXbbbXX^^^XX.X^ccc^XIXXXXXXXXXXXXXXX
+D:X.XXX..XX.....X%^^^XXX^^^^^XlllllllllllllllX
+D:X.X99.XXW......XX^^^XXXXXXXXlllllllllllllllX
+D:X.X99XXWWW...a..XX^^.XXllllllLLLLLlXXXX%XXXX
+D:X.XXXX..WWW.....cXX^.XXXXXlllllllllXVVVVVVVX
+D:X.X8.....WWW....ccX^.X^^^XLLLlLLLLLXVVVVVVVX
+D:X.X%XXXXXXXWW...cXXX.X+X^XlllllllllXV%%%%%VX
+D:X.X.......XWWW..X%^X.XLX^XlLLLLLLLLXV%8^8%VX
+D:X.XXXXXX%.X.WWWXX^^X.XLX^XlllllllllXV%^a^%VX
+D:X.X.IIIIX.X..WXX..XXcXLX^XLLLlLLLLlXV%^^^%VX
+D:X.X%XXXIX.X..XX..XXccXLX^XlglllLgllXV%^^^%VX
+D:X.Xa.6XIX.X.XX..XXcccXLX^XlllllXXXXXV%^a^%VX
+D:X+XXX.XIX.X.X99XXccccXLX^XXXXXXX888XV%8^8%VX
+D:X%%%Xa%.X.%8X99XcccccXLX^^^^^^4X...XV%%%%%VX
+D:X%.%XXXXXXXXXXXXIXXXXXLXXXXXXXXX...XVVVVVVVX
+D:X.%%+..........................G..4X...F...X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+### Starting Location
+P:43:4
diff --git a/lib/edit/s_orc.map b/lib/edit/s_orc.map
new file mode 100644
index 00000000..48913e02
--- /dev/null
+++ b/lib/edit/s_orc.map
@@ -0,0 +1,109 @@
+# Special level "The Orc Barracks" in the Pits of Angband
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+
+%:special.txt
+
+#Y:40:118:126:149:264:238:285:313:330:404:15:0:0:35:22
+# Shrieker
+F:a:1:0:40
+
+# snaga
+F:b:1:0:118
+
+# cave orc
+F:c:1:0:126
+
+# hill orc
+F:d:1:0:149
+
+# half orc
+F:e:1:0:264
+
+# ogre
+F:f:1:0:238
+
+# ogrillion
+F:g:1:0:285
+
+# bolg
+F:h:1:0:330
+
+# uruk
+F:i:1:0:313
+
+# black orc
+F:j:1:0:244
+
+### Random Monsters and/or Items
+# Random monster (upto 5 levels ood) on normal floor
+F:&:1:0:*35
+
+# Random monster (upto 11 levels ood) on normal floor
+F:@:1:0:*46
+
+# Random monster (upto 9 levels ood) and
+# Random object (upto 7 levels ood) on normal floor
+F:8:1:0:*44:*42
+
+# Random monster (upto 40 levels ood) and
+# Random object (upto 20 levels ood
+F:9:1:0:*75:*55
+
+# Random monster (upto 3 levels ood)
+F:-:1:0:*38
+
+# Random object (upto 7 levels ood)
+F:=:1:0:0:*42
+
+### Guaranteed Items
+
+# The stone of lore
+F:1:1:0:0:0:0:15
+
+### Level Design
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:Xa.......................ccccccccc.......................aX
+D:X.lllllllllllllllllllllllllllllllllllllllllllllllllllllll.X
+D:X.l......................ccccccccc.....g.g..............l.X
+D:X.l.XXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXDXXXXXXXXXXXXXX.l.X
+D:X.l.Xa.......efX1Xfe.......aX.X.aaa.D.gX.XacbdddccjjjaX.l.X
+D:X.l.D........efG.Gfe........D.D.bbb.XXXX.XcfbcbcbbjjeeX.l.X
+D:X.l.X........efX.Xfe........X.X.bbb.D.gX.XfbbgdcbdbjjjX.l.X
+D:X.l.XXXXXX...efG.Gfe...XXXXXX.X.bbb.XXXX.XebdcfbdccejjX.l.X
+D:X.l.X.c..XXX.efX.Xfe.XXXcc.aX.D.ccc.D.gX.XcfcbgeebdebfX.l.X
+D:X.l.D..d..aXXXfX.XfXXXe.....D.X.ccc.XXXX.XedbcdbcdcggeX.l.X
+D:X.l.X........XXX.XXX..bbb.ddX.X.ddd.D.gX.XdgfcfegbeebcX.l.X
+D:X.l.X..f.c.bf.G...G.c..cc...X.D.ddd.XXXX.XcbeefccbfbdbX.l.X
+D:X.l.X.d..bb.d.Gi.iG...cbb.bdX.X.eee.D.gX.XbgcfbgcfdebcX.l.X
+D:X.l.X.cc...c..G.7.G.cc..d.e.X.X.eee.XXXX.XcbdfeccdbcdbX.l.X
+D:X.l.X..b.f.bbXGGGGGX.bbb.bb.X.D.f.f.D.gX.XfdebbdgeefgdX.l.X
+D:X.l.D.c..dbbXXa...aXXX..d...D.X.f.f.XXXX.DdefddbcbdbddX.l.X
+D:X.l.X...c.XXX..g.g...XXX...bX.X.....D..XGXXeegcefdcefcX.l.X
+D:X.l.Xbb..aXg.gggjgggg.gX.bbaXDXaaa..XXjIa8XacbddbegbdaX.l.X
+D:X.l.XXXXXXXXDXXXXXXXXDXXXXXXXaXXXXXXXXXXXXXXXXXXXXXXXXX.l.X
+D:X.l........................Da.aD........................l.X
+D:X.l.XXXXXXXXXXXXXXXXXXXXXXXXXaXXXXXXXXXXXXXXXXXXXXXXXXX.l.X
+D:X.l.....eeeeee.........fffXXXDXXXfff.........eeeeee.....l.X
+D:X.l.....eeeeee.........fffX.....Xfff.........eeeeee.....l.X
+D:X.llllllllllllllllllllllllX.....Xllllllllllllllllllllllll.X
+D:Xa.....................XXXXGGGGGXXXX.....................aX
+D:XXXXXXXXXXIXXXXXXXXXXXXXgafff>fffagXXXXXXXXXXXXXIXXXXXXXXXX
+D:XjjjX.#########.XfffXXgggfffffffffgggXXfffX.#########.XjjjX
+D:XfffX...........XeeeXggggjjj...jjjggggXgggX...........XfffX
+D:XfffXGGGDX.XXXXXX...Xgggg....h....ggggX...XXXXXX.XDGGGXfffX
+D:Xgg......X.X........Xgggg.........ggggX........X.X......eeX
+D:Xgg....ggX.X.XXXXXX.XXgggggggggggggggXX.XXXXXX.X.Xee....eeX
+D:Xgg....ggX.X.X......XXXXgggggggggggXXXX......X.X.Xee....eeX
+D:Xgg....ggX.X.X.XXXXXX..XXXXfffffXXXX..XXXXXX.X.X.Xee....eeX
+D:Xgg....ggX.X.X.........#.4XXXDXXX4.#.........X.X.Xee....eeX
+D:Xgg....ggX.X.XXXXXXXXXIXXXXa...aXXXXIXXXXXXXXX.X.Xee....eeX
+D:Xgg....ggX.X.Xigfedcba.XiX..X#X..XiX.abcdefgiX.X.Xee....eeX
+D:Xgg....ggX.X.XGGGGGGGGGX....X.X....IGGGGGGGGGX.X.Xee....eeX
+D:XggggggggX.X.X@@@@@@@@@IXXXaX7XaXXXX@@@@@@@@@X.X.XeeeeeeeeX
+D:XggggggggI.X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X.IeeeeeeeeX
+D:XaaaaagggX.......................................XeeeaaaaaX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+### Starting Location
+P:22:31
diff --git a/lib/edit/s_ship.map b/lib/edit/s_ship.map
new file mode 100755
index 00000000..f429d4ec
--- /dev/null
+++ b/lib/edit/s_ship.map
@@ -0,0 +1,239 @@
+# s_ship.map
+#
+# Special Level "Arvedui's Galleon" in the Helcaraxe#
+#
+# Created for ToME 3.x on 9/11/03
+#
+# Written by Lord Dimwit (lorddimwit@hotmail.com)
+# Middle-game dungeon
+# Comments: This large level is a variation on the classic 'ghost ship' theme;
+# the ship was caught in the Helcaraxe and everyone on board died. The polar waters
+# surrounding the ship contain some unpleasant surprises for inquisitive and unwary
+# adventurers--the hardest monsters on the map are actually there.
+
+# Ported to ToME 2.x on 6/6/04 by masmarangio
+#
+# Changed the starting position to 28:122
+# Replaced the undefined letter 'c' with '.'
+# The exits of the between gates pointed to incorrect positions.
+# I'm not sure esp. about the correct exit of gate #3.
+
+
+#%:special.txt
+
+
+### Terrain Features
+
+# up staircase
+F:<:6:0
+
+# down staircase
+F:>:7:0
+
+# Permanent wall
+F:X:61:4
+
+# Glacial Wall
+F:#:215:4
+
+# Ice Wall
+F:M:95:4
+
+# Deep Water
+F: :187:4
+
+# Fog
+F:*:210:4
+
+# Shallow water
+F:~:84:4
+
+# Ice
+F:.:90:4
+
+# Hidden Door
+F:+:48:0
+
+# Normal Door
+F:=:32:0
+
+# Ash
+F:,:93:4
+
+# Fake wall
+F:I:189:4
+
+
+### Monsters
+
+# Leviathan in deep water
+F:L:187:0:782
+
+# Greater Kraken in deep water
+F:K:187:0:775
+
+# Lesser Kraken in deep water
+F:k:187:0:740
+
+# Giant Squid in deep water
+F:s:187:0:482
+
+# Killer Whale in deep water
+F:w:187:0:917
+
+# Drowned Soul in shallow water
+F:G:84:0:895
+
+# Ancient White Dragon on ice
+F:D:90:0:617
+
+# Mature White Dragon on ice
+F:d:90:0:549
+
+# Ice Troll on ice
+F:T:90:0:454
+
+# Headless Ghost on ice
+F:H:90:0:533
+
+# Shadow on ice
+F:g:90:0:665
+
+# Young White Dragon on ice
+F:b:90:0:460
+
+# Zombified Human on ice
+F:z:90:0:229
+
+# Greater mummy on ice
+F:m:90:0:522
+
+# Cold Hound on ice
+F:Z:90:0:308
+
+# Giant White Dragon Fly on ice
+F:F:90:0:250
+
+# Ice Elemental on ice
+F:E:90:0:570
+
+# Yeti on ice
+F:Y:90:0:154
+
+# Ice skeleton on ice
+F:i:90:0:379
+
+# Skeleton human on ice
+F:h:90:0:228
+
+# Ghost on ice (apologies to Eldridge Cleever)
+F:W:90:0:477
+
+# Hand druj on ice
+F:S:90:0:748
+
+# Eye druj on ice
+F:J:90:0:749
+
+# Dread on ice
+F:o:90:0:534
+
+# Dreadmaster on ice
+F:O:90:0:690
+
+# Night mare on ice
+F:q:90:0:622
+
+# Random monster (upto 5 levels ood) on ice
+F:&:90:0:*40
+
+# Random monster (upto 9 levels ood) and
+# Random object (upto 7 levels ood) on ice
+F:8:90:0:*44:*42
+
+# Treasure (random) on ice
+F:$:90:0:0:*47
+
+# Treasure (good) on ice
+F:%:90:0:0:*60
+
+# Trap (random) on ice
+F:^:90:0:0:0:0:0:*
+
+# Trap (random) on shallow water
+F:t:84:0:0:0:0:0:*
+
+# Trap (random) on fog
+F:@:210:0:0:0:0:0:*
+
+# Human skeleton on ice
+F:x:90:0:0:395
+
+
+### Between Gates
+
+# between gate 3: was 711
+F:3:160:6:0:0:0:0:0:1136
+
+# between gate A: was 6247
+F:A:160:6:0:0:0:0:0:6761
+
+# between gate 4: was 3339
+F:4:160:6:0:0:0:0:0:3853
+
+# between gate B: was 3085
+F:B:160:6:0:0:0:0:0:3599
+
+
+### Guaranteed Items
+
+# The Mage Staff of Forochel
+F:!:90:0:0:0:0:213
+
+
+### Level Design
+
+D:XXXXXXXXXXXXXXXX XXXXXXXXXXXX XXXXXXX XXXXXXXXXXXXXXX XXXX
+D:X###############..~ .#. k w ~.#XX######### .~~ s G..#####.. w .###.######X##~~ .GX.###
+D:X####%####...~ ~.~ s .#.X#~~.##### .~ s w G..#.##.#.XGG~XXk~.####A####.~X ~~.X...
+D:X##%#$#######...~ w wXXXXXX#XXXX###XXX #~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..XX....~.XX X#xX.#..#.#G. w ~X G~~
+D:X##$#########.... s XXXTT^...~.~#####w~###~~~~8....**.tE.&E ^^.M^.xx.....x..ZZ..^XTTTT M...GG.~.. w G.###~XX~~#XX . s X
+D:X#########...~ w XXXTTTT.^..x~.H#### ###~~D....8**.~M~.E..M^.MM^..xh.h...ZZZZ^~M.,.,.,.~~ .G...~~ ~###. w . w M.d.
+D:X#####.x.x~~~ XXXTTTXXXMxx.H.####### ~##~~~8...#.**.~tE&EE^^~%M^.h.x.E.xh.ZZ..^X.,.^....~ ...G.~ s ~# XX ~~ w X
+D:X######...~~ MM~ w XXX^^XXX.MMMxx...G#####w ~#~.~..&...**E.MEt.^^.MM^~..i.....ZZZZ^~M.,.,,.gM.~.,~.,G.G~~ G~. G~.MM XX..~
+D:X##.....~~ XXX^E=^XX$b.MMMMxH..HG#.## w ~#~##~8....*E~.&EM^^.M^h..i..x.x..ZZ..^XTTTTX.,.,~........~.G~~..w . G~...G~X
+D:X...~~~ K XXX^^EXXXX$$$..MMXXXXXXX#### #####XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..,.X..M~.........~G..G ~~.G...G~
+D: ~~~ w XXX^^EXXXdX%d$$b$$XXd~~~~##### s ###.,.W.**,.x.,.,.,.,.,.***,,....,x....,,.SX.,.,.,..,o.,.,.~~.G..~.G..G..~X k
+D: w MMM. w XXX^E^XXX.,*XDDd$$$XXd$..~~~~#### ###.,.,.,.**..,.,i.,.,W,.,**..z.,.,.q...g.,......~.,.,.,.,.~.~..F.~M~......~
+D: MM. XXX4EEXXXi^**.XX%%$dXX$d$.H#####~G~~####.~.,~..,.h*,,~,.,.,.,~,.,.,.H.,.~.,..~,.,,,.~,.,.~.,.,.X.~,g.~~..~.~..,..,X
+D: s XXXBXXXXX^.**.W.,XDD%XXb$$b####..G~~~G###~.,,.,.,.,...,,.x,.~.,.,~..,.~.,.,~,.,.,,.,.,~,.,.,.~,.,..,X.,.***.~***,W.,X
+D: XXX.o..X.g***i.*.,.XX%XX######^^^^t ##ttt^^^^^t^^^^^^t^^^^^t^^^^^^^t^^^^^^t^^^^t^^tt^^^tt^^^^t^tXo..x************X
+D: k XXX^E..o.XX8.****,.g..XXX..#........~~~~~ttt###~~.,.G~.......XXXXX..~,..,,..,,.~.,..,.,..,,..,.,x..,.ooX******W***g.*.g*X
+D: XXX%S^^E..ooX,*****,..,.X.....h........XXX~~~tt#tt w ~~G~...XXXXXXX.,**.,..D.**.G.,~,..XXX...~~~.....o8X***.~.,.****$$..X
+D: XX%%%^mm.E..oXH**.^.*i.....#.....i..*..XXXXX~~ G~~.XXXXXXXXX~.*..,.,*..~,..,.,XXXXX...~..,.XXXXXo.W.$$.g.x....o.X
+D: XXX%S^^E..ooX8.*~~...,~~##...,..,.***,.XXX~G~ k ~~~~XXXXXXX.,.*. g...*..x..W.~.XXX.***.,,o..oO8X.o.,.o.xx$$$XXXXX
+D: XXX^E..o.XXH.###....###~~~.,h..,.*.,..~~.~~ s ~~.XXXXX.~..**...i~**.....~.,,.,,.***~,,,.oXXXXXXXXXXXXXXXX.!.X
+D: s XXX.o..X&..w~##..##~~~X~^^^^^^^^^^t^ttt^tt w tt^tttt^^tt^^^^^ttt^^^^ttt@@^^^^ttt^^^^^ttt@^^ttXXXW ^^.M*.t^oo.^^...X s
+D: ~~~ XXX>XXH~G..#####~G~~Gt..,.,..,.,xx..x ~~~ i~~xx.~...x....~.~..~..,~..***..~..~...,~.~*.~.XXXE.^^H..SM.~^.oo....JX
+D: ~~....~~ XXX$8w~.^####G~G ~i.XX.,,.,...........G~~~s~~ iiF~...........~.......x.,.**~....,~....~.*XXX.EE.W.^^.M*.~^^^o^O^..X
+D: ~.#..#..~~ XXX8##t..##~#.G.t..XX..,H...,.W...,...,~~...,...*,,.x...,.i.....g.....**.........XXXXXXX...EE.^^H..SM.~.^oo...^JX
+D: ~.##.##..~ XXX###GG~~~*h~.^..XX.....,....,.W...,.G....W.***...,...,...,....,...,**..q....SX3tttW#...EE.W.^^.M*.t.oo.^.^.XX
+D: ~~.###..~~ X##.##~~G^~~~~i*^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX~~
+D: ~~...###.~ k ~###X.G~~@Gh~x*~^..^i.zX8~i.~..h....zzzXiX..^$.T.t$......F.t..XX..^TTT*..M..Y....^.Y.^*.^..~....X.x..x~.<XX~.
+D: ~.....####.....#####XXXx@@~i~.z..z.it,#**t..h..Gzh.zzX@.@Xd*t.~...*~.t......^X..T.^T*@*TXMM...^....^**@.^.x*...+..~....XX..~
+D: ~~.#$%#########....XXX~h~i.HH...h,i^X*.H..h.^G..WX@.E.^X**8..Y.~*8...Y...^+XXXXXXXXXXXMF...~....^.*..x.***..X..x..~XX...~~w
+D: ~~.#$$######.~ ~w XXX$~.x..~G^..,i.,.~.h.^~~..zzX@.@Xd*......F**..~....^XbM..^~ZZZZXMM..*.....~^......*.XXXXXXXIXX.~~#~w
+D: L ~~xx########.~~ XXX$$.G#GX#.i,,^ih.^W.zG^zzzXiX.$.t88.~..^**F..T...tXX~~.^^ZZZZM~..**@~~.Y~..^#^..xXI&X8&..XX ~~~## w
+D: ~.########..~~ XXXXX~#X~X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ~###~w
+D: ~~.#########..~ w K w ~##### w ~.M.~ ~..####.~ s~~~~.~~ s K ~##..~
+D: ~..#########.~ ~##### ~...~ k ~..###.~ ~~####~~~ w w ~###..~
+D: XXXXXXXXXXXX XXXXXX XXXXXX XXXXXXXXX XXXXXX
+
+
+### Starting Location
+P:28:122
+
+
+
+
+
diff --git a/lib/edit/set_info.txt b/lib/edit/set_info.txt
new file mode 100644
index 00000000..b6141e01
--- /dev/null
+++ b/lib/edit/set_info.txt
@@ -0,0 +1,77 @@
+# File: set_info.txt
+
+
+# This file is used to initialize the "lib/raw/set_info.raw" file, which is
+# used to initialize the "item set" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# Version stamp (required)
+
+# N:idx:name
+# D:description
+# P:artifact index:number of item needed:pval
+# F:flags
+
+V:2.0.0
+
+# The Elven Gifts, took from Oangband
+
+N:0:Elven Gifts
+D:It is from a group of Elven items once entrusted to Hobbits
+# Phial of Galadriel
+P:1:2:1
+F:WIS | CHR | RES_DARK
+# Sting
+P:88:2:2
+F:STEALTH | REGEN
+
+
+# The Dragon Slayer
+
+N:1:Dragon Slayer
+D:It is from a group of items rumoured to be the bane of dragons.
+# Bow of bard
+P:125:2:3
+F:DEX | CON | RES_FIRE
+# Arrow of Bard
+P:63:2:5
+F:SPEED
+
+
+# The Trinity -- Possessor set
+
+N:2:The Trinity
+D:It is one of the 3 legendary daggers.
+# Narthanc
+P:66:2:2
+F:STR
+P:66:3:1
+F:KILL_DRAGON | REGEN | SH_FIRE
+# Nimthanc
+P:67:2:2
+F:CON
+P:67:3:1
+F:KILL_DEMON | IM_COLD
+# Dethanc
+P:68:2:2
+F:DEX
+P:68:3:1
+F:KILL_UNDEAD | SH_ELEC | FLY
+
+
+# Gothmog's Armoury -- Demonologists set
+
+N:3:Gothmog's Armoury
+D:It is from a group of items that once belonged to Gothmog,
+D:the High Captain of the Balrogs
+# The demonblade of Gothmog
+P:181:3:7
+F:STR | CON | SPEED | VAMPIRIC
+# The demonshield of Gothmog
+P:182:3:0
+F:IM_FIRE | IM_COLD | SH_ELEC
+# The demonhorn of Gothmog
+P:183:3:0
+F:ESP_EVIL | ESP_GOOD | AUTO_ID
diff --git a/lib/edit/special.txt b/lib/edit/special.txt
new file mode 100644
index 00000000..8d1c94b9
--- /dev/null
+++ b/lib/edit/special.txt
@@ -0,0 +1,67 @@
+# Contains terrain parsings for the special levels now being kept in seperate map files
+#
+# Created for PernAngband 5.0.1 on 18/8/01
+# Written by Mynstral (mynstral@thehelm.com)
+
+# Permanent Wall
+F:X:63:0
+F: :63:0
+
+# Granite Wall
+F:#:57:0
+F:%:57:0
+
+# Hidden Door
+F:+:48:0
+
+# Normal Door
+F:D:32:0
+
+# Floor
+F:.:1:0
+
+# Tree
+F:T:96:0
+
+# Mountain
+F:M:97:0
+
+# Shallow Water
+F:w:84:0
+F:V:84:0
+
+# Deep Water
+F:W:187:0
+
+# Shallow Lava
+F:l:86:0
+
+# Deep Lava
+F:L:85:0
+
+# Glass Wall
+F:G:188:0
+
+# Illusion Wall
+F:I:189:0
+
+# Treasure (random) on normal floor
+F:*:1:0:0:*
+
+# Trap (random) on normal floor
+F:^:1:0:0:0:0:0:*
+
+# down staircase
+F:>:7:0
+
+# between gates
+F:4:160:0:0:0:0:0:0:-1
+F:5:160:0:0:0:0:0:0:-1
+F:6:160:0:0:0:0:0:0:-1
+F:7:160:0:0:0:0:0:0:-1
+F:A:160:0:0:0:0:0:0:-1
+F:B:160:0:0:0:0:0:0:-1
+F:C:160:0:0:0:0:0:0:-1
+F:E:160:0:0:0:0:0:0:-1
+F:F:160:0:0:0:0:0:0:-1
+F:0:160:0:0:0:0:0:0:-1
diff --git a/lib/edit/spiders.map b/lib/edit/spiders.map
new file mode 100644
index 00000000..95f20258
--- /dev/null
+++ b/lib/edit/spiders.map
@@ -0,0 +1,66 @@
+# Lit permanent wall
+F:X:61:6
+
+# up staircase
+F:<:6:8
+
+# Grass
+F:-:89:3
+
+# Trees
+F:t:96:3
+
+# Grass with Giant spider
+F:a:89:3:175
+
+# Grass with Giant tarantula
+F:b:89:3:275
+
+# Grass with Mirkwood Spider
+F:c:89:3:277
+
+# Grass with Aranea
+F:d:89:3:963
+
+# Grass with Elder aranea
+F:e:89:3:964
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X<---tttttttttttttttttttttttttttttttttttttttttttttttttttttttX
+D:X---ttttttttttttttttttttttttttta--ctttttttttttttttttttttttttX
+D:Xtt---------------ttttttttttttt--tttttttttttttttttttttttttttX
+D:Xttttttttt--------------cttttttt--ttttttttttttttttttttttttttX
+D:Xtttttttttttttt--tttttt---------c--tttttttttttttttttttttttttX
+D:Xttttttttttttta-bttt---cttttttttttttttttttttttttttttttttttttX
+D:Xttttttttttttttttttttt---tttt-ttd--c-ttt---c---tttttttttttttX
+D:Xtttttttttttttttttttc---btttttttt-----ttc-----ttttttttttttttX
+D:Xtttttttttttttttttt----tttttttttc-c---------d---c-ctttttttttX
+D:Xtttttttttttttttttb-tttt---c---t----tttttt----------ctttttttX
+D:Xtttttttttttttttttt----ttttt-----c---tttttt-c--cttttttttttttX
+D:Xttttttttttttttttc--at----c---ttttttttttttttttttttttttttttttX
+D:Xttttttttttttta----ttttt-b--tttttttttd--etttttttttttttttttttX
+D:Xtttttttttttt---c--ttttt------tttt-c-tttttttte----dtttttttttX
+D:Xttttttttttttttttttt----c--d----tttt---ttttttt--d----ettttttX
+D:Xttttttttttttttttttttt-c-d---tttttttc--cttttttt-----ttttttttX
+D:Xttttttttttta-c--ttt-------tttt-------ttttt----d--ttttttttttX
+D:Xtttttttttttt----ttttt--ttt--c--c--t-----c--ttttttttttttttttX
+D:Xttttttttttt--c---ttt--c--c---ttttt--c----t----tttttttttttttX
+D:Xtttttttttt-c----c---t-----tttttttt-----ttt-------dtttttttttX
+D:Xttttttttttt---c---tttt--c--ttttttttt-ttttttttt-d---ttttttttX
+D:Xtttttttttttta-----tttttt---d---dttd----cttttt-----tttttttttX
+D:Xtttttttttttttttttttt---c-----ttttt---c----ettd--tttttttttttX
+D:Xtttttttttttttttt----d----tttttttttttttttttttttt---tttttttttX
+D:Xttttttt-------c---tttt-d----c--ettttttttttttd-----dttttttttX
+D:Xtttttc--c-c------tttttt-------------ettttttt----tttttttttttX
+D:Xttttttt------ttttttt--c---d---ttttttttttttt--d--tttttttttttX
+D:Xttttt----cc-tttttttttttte----d-ttttttttttttttt----tttttttttX
+D:Xttttt--c------ttttttttttttttttttttttttttte--tt------ettttttX
+D:Xttt--c----ctttttttttttttttttttttttttte------------tttttttttX
+D:Xtttttttttttttttttttttttttttttttttttttttttt--e--ttttttttttttX
+D:XtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:3
+
diff --git a/lib/edit/st_info.txt b/lib/edit/st_info.txt
new file mode 100644
index 00000000..3762d0c5
--- /dev/null
+++ b/lib/edit/st_info.txt
@@ -0,0 +1,744 @@
+# File: st_info.txt
+
+# Fixed Potions of Cure Light/Serious Wounds in the Temple, Potions of
+# Restore Str/Con in the Alchemist
+# Magic Shop - Amulet of Slow Digestion, Wand of Light, Staffs of Enlightenment,
+# Door/Stair Location, Detect Invis/Evil, and Remove Curse
+
+# This file is used to initialize the "lib/raw/st_info.raw" file, which is
+# used to initialize the "store info type" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# Some store indexes are defined in "defines.h", and must not be
+# changed.
+
+# N:<index>:<name>
+# I:<proba>:<item name>
+# T:<proba>:<tval>:<sval>
+# G:char:attr
+# W:max number of items in the store
+
+# proba is the chance(out of 100) of the item being generated
+
+# Version stamp (required)
+
+V:2.0.0
+
+N:0:General Store
+I:100:& Wooden Torch~
+I:95:& Brass Lantern~
+I:95:& Flask~ of oil
+I:100:& Ration~ of Food
+I:100:& Hard Biscuit~
+I:90:& Strip~ of Venison
+I:70:& Pint~ of Fine Wine
+I:80:& Pint~ of Fine Ale
+I:60:& Shovel~
+I:50:& Pick~
+I:100:& Iron Spike~
+I:70:& Iron Shot~
+I:70:& Bolt~
+I:70:& Arrow~
+I:98:& Cloak~
+I:46:& Fur Cloak~
+A:0:0:1:2:3:4
+O:0:5:6:7
+G:1:U
+W:24
+
+N:1:Armoury
+I:70:& Pair~ of Soft Leather Boots
+I:60:& Pair~ of Hard Leather Boots
+I:80:& Hard Leather Cap~
+I:70:& Metal Cap~
+I:65:& Iron Helm~
+I:100:& Robe~
+I:90:& Soft Leather Armour~
+I:90:& Soft Studded Leather~
+I:90:& Hard Leather Armour~
+I:85:& Hard Studded Leather~
+I:90:& Leather Scale Mail~
+I:80:& Metal Scale Mail~
+I:75:& Chain Mail~
+I:80:& Augmented Chain Mail~
+I:75:& Metal Brigandine Armour~
+I:68:& Bar Chain Mail~
+I:100:& Set~ of Leather Gloves
+I:80:& Set~ of Gauntlets
+I:100:& Small Leather Shield~
+I:90:& Large Leather Shield~
+I:80:& Small Metal Shield~
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:2:s
+W:24
+
+N:2:Weaponsmith
+I:100:& Dagger~
+I:100:& Main Gauche~
+I:100:& Rapier~
+I:100:& Small Sword~
+I:100:& Short Sword~
+I:100:& Sabre~
+I:100:& Cutlass~
+I:100:& Tulwar~
+I:100:& Broad Sword~
+I:100:& Long Sword~
+I:100:& Scimitar~
+I:100:& Katana~
+I:100:& Bastard Sword~
+I:100:& Spear~
+I:100:& Awl-Pike~
+I:100:& Trident~
+I:100:& Pike~
+I:100:& Beaked Axe~
+I:100:& Broad Axe~
+I:100:& Lance~
+I:100:& Battle Axe~
+I:100:& Hatchet~
+I:100:& Sling~
+I:100:& Short Bow~
+I:100:& Long Bow~
+I:100:& Light Crossbow~
+I:100:& Iron Shot~
+I:100:& Arrow~
+I:100:& Bolt~
+I:100:& Whip~
+I:100:& Small Wooden Boomerang~
+A:23:0:1:2:3:4
+O:12:13:14:15
+G:3:w
+W:24
+
+N:3:Temple
+I:100:& Nunchaku~
+I:100:& Quarterstaff~
+I:100:& Mace~
+I:100:& Bo Staff~
+I:100:& War Hammer~
+I:100:& Lucerne Hammer~
+I:100:& Morning Star~
+I:100:& Flail~
+I:100:& Lead-Filled Mace~
+I:100:Remove Curse
+I:100:Blessing
+I:100:Holy Chant
+I:100:Heroism
+I:100:Word of Recall
+I:100:Word of Recall
+I:100:Word of Recall
+#I:100:Cure Light Wounds
+T:100:71:34
+#I:100:Cure Serious Wounds
+#I:100:Cure Serious Wounds
+T:100:71:35
+T:100:71:35
+I:100:Cure Critical Wounds
+I:100:Cure Critical Wounds
+I:100:Restore Life Levels
+I:100:Restore Life Levels
+I:100:Restore Life Levels
+I:100:& Whip~
+I:100:& Mace~
+I:100:& Ball-and-Chain~
+I:100:& War Hammer~
+I:100:Word of Recall
+I:100:Word of Recall
+I:100:Word of Recall
+I:100:Cure Critical Wounds
+I:100:Cure Critical Wounds
+I:100:Restore Life Levels
+I:100:Restore Life Levels
+I:100:Restore Life Levels
+I:100:Remove Curse
+I:100:Remove Curse
+I:100:*Remove Curse*
+I:100:*Remove Curse*
+A:0:0:1:2:3:4
+O:26:27:28:29
+G:4:g
+W:24
+
+N:4:Alchemy shop
+I:100:Enchant Weapon To-Hit
+I:100:Enchant Weapon To-Dam
+I:100:Enchant Armour
+I:100:Identify
+I:100:Identify
+I:100:Identify
+I:100:Identify
+I:100:Light
+I:100:Phase Door
+I:100:Phase Door
+T:100:70:9
+I:100:Monster Confusion
+I:100:Magic Mapping
+I:100:Treasure Detection
+I:100:Object Detection
+I:100:Trap Detection
+I:100:Detect Invisible
+I:100:Recharging
+I:100:Satisfy Hunger
+I:100:Word of Recall
+I:100:Word of Recall
+I:100:Word of Recall
+I:100:Word of Recall
+T:100:70:9
+T:100:70:9
+#I:100:Restore Strength
+T:100:71:42
+I:100:Restore Intelligence
+I:100:Restore Wisdom
+I:100:Restore Dexterity
+#I:100:Restore Constitution
+T:100:71:46
+I:100:Restore Charisma
+I:100:Identify
+I:100:*Identify*
+I:100:*Identify*
+I:100:*Identify*
+I:100:*Identify*
+I:100:*Identify*
+I:100:*Identify*
+I:100:Light
+#I:100:Restore Strength
+T:100:71:42
+I:100:Restore Intelligence
+I:100:Restore Wisdom
+I:100:Restore Dexterity
+#I:100:Restore Constitution
+T:100:71:46
+I:100:Restore Charisma
+I:100:Enchant Armour
+I:100:Enchant Armour
+I:100:Recharging
+I:100:Satisfy Hunger
+I:100:Satisfy Hunger
+I:100:Satisfy Hunger
+A:0:0:1:2:3:4
+O:30:31:32:33
+G:5:b
+W:24
+
+N:5:Magic shop
+I:100:Protection
+I:100:Levitation
+I:100:Protection
+I:100:Fire Resistance
+I:100:Cold Resistance
+I:100:Charisma
+I:100:Slow Digestion
+T:100:40:3
+I:100:Acid Resistance
+I:100:Lightning Resistance
+I:100:Searching
+I:100:Cure Light Wounds
+# Rods
+I:100:Probing
+I:25:& Wooden Rod~ of#
+# Book
+T:100:111:50
+# Wands
+T:100:65:3
+T:100:65:8
+T:100:65:11
+T:100:65:16
+T:100:65:22
+# Staves
+T:100:55:3
+T:100:55:5
+T:100:55:8
+T:100:55:9
+T:100:55:14
+T:60:55:15
+T:60:55:16
+T:60:55:17
+A:0:0:1:2:3:4
+O:34:35:36:37
+G:6:r
+W:24
+
+N:6:Black Market
+A:30:0:1:2:3:4
+O:38:39:40:41
+G:7:D
+F:ALL_ITEM | MEDIUM_LEVEL
+W:24
+
+N:7:Home
+A:0:0:54:55:3:0
+O:0:0:0:0
+G:8:y
+W:24
+
+N:8:Book Store
+# & Book~ of Beginner Cantrips
+T:100:111:50
+T:100:111:50
+T:100:111:255
+T:100:111:255
+T:100:111:255
+T:100:111:255
+T:100:111:255
+T:100:111:255
+A:0:0:1:2:3:4
+O:42:43:44:45
+G:9:o
+W:24
+
+N:9:Pet Shop
+I:100:Egg
+T:100:70:6
+I:100:& Hard Biscuit~
+A:0:0:1:2:3:4
+O:46:47:48:49
+G:+:b
+F:MEDIUM_LEVEL
+W:12
+
+N:10:Mayor's Office
+A:0:0:16:15:35:0
+O:1:1:1:1
+G:+:o
+W:0
+
+N:11:Inn
+I:100:& Ration~ of Food
+I:100:& Hard Biscuit~
+I:100:& Strip~ of Venison
+I:100:& Pint~ of Fine Wine
+I:100:& Pint~ of Fine Ale
+A:2:4:5:6:7:0
+O:2:2:18:18
+G:+:w
+W:8
+
+N:12:The Soothsayer
+I:20:Divination
+I:20:Divination
+I:20:Divination
+I:20:Divination
+I:20:Divination
+I:20:Divination
+A:0:0:2:0:8:0
+O:3:3:3:3
+G:+:B
+F:RANDOM
+W:2
+
+N:13:Library
+I:100:Identify
+A:0:0:14:15:16:2
+O:4:4:4:4
+G:+:U
+W:2
+
+N:14:Castle
+A:0:0:16:35:0:0
+O:16:16:16:16
+G:+:o
+W:0
+
+N:15:Casino
+A:13:0:9:10:0:12
+O:17:17:17:17
+G:+:s
+W:0
+
+N:16:Beastmaster Shanty
+# Disabled the bounty list for the time being to not confuse people
+# with the bounty quest
+# A:18:0:19:20:21:22
+A:18:0:21:22:0:0
+O:19:19:19:19
+G:+:g
+W:0
+
+N:17:Fighters Hall
+A:0:0:24:25:0:0
+O:20:20:20:20
+G:+:s
+W:0
+
+N:18:Tower of Magery
+A:0:0:26:27:0:0
+O:21:21:21:21
+G:+:b
+W:0
+
+N:19:Inner Temple
+A:0:0:28:29:0:0
+O:22:22:22:22
+G:+:G
+W:0
+
+N:20:Paladins Guild
+A:0:0:28:25:0:0
+O:23:23:23:23
+G:+:g
+W:0
+
+N:21:Rangers Guild
+A:0:0:31:32:0:0
+O:24:24:24:24
+G:+:u
+W:0
+
+N:22:Thunderlords' Nest
+A:0:0:33:2:34:0
+O:25:25:25:25
+G:+:U
+W:0
+
+N:23:The Mirror
+A:0:0:44:15:16:43
+O:51:51:51:51
+G:+:U
+W:0
+
+N:24:Seat of Ruling
+A:0:0:17:35:0:0
+O:52:52:52:52
+G:+:U
+W:0
+
+N:25:Wizards Spire
+A:60:0:26:27:0:0
+O:54:54:54:54
+G:+:U
+W:0
+
+N:26:Priests Circle
+A:0:0:28:29:0:0
+O:55:55:55:55
+G:+:o
+W:0
+
+N:27:Tower of the King
+A:0:0:17:35:0:0
+O:57:57:57:57
+G:+:U
+W:0
+
+N:28:Library
+I:100:Identify
+A:0:0:14:15:16:2
+O:58:58:58:58
+G:+:U
+W:2
+
+N:29:The White Tree
+I:100:& Ration~ of Food
+I:100:& Hard Biscuit~
+I:100:& Strip~ of Venison
+I:100:& Pint~ of Fine Wine
+I:100:& Pint~ of Fine Ale
+A:2:4:5:6:7:0
+O:59:59:59:59
+G:+:w
+W:8
+
+N:30:Craftsmaster
+A:0:0:24:25:0:0
+O:60:60:60:60
+G:+:s
+W:0
+
+N:31:Earth-Dome (Nature)
+A:0:0:39:0:0:0
+O:61:61:61:61
+G:+:U
+W:0
+
+N:32:Minstrels Haven
+A:0:0:40:41:0:0
+O:62:62:62:62
+G:+:U
+W:0
+
+N:33:Star-Dome
+A:0:0:46:47:0:0
+O:63:63:63:63
+G:+:U
+W:0
+
+N:34:Valarin Temple
+A:0:0:28:48:0:0
+O:64:64:64:64
+G:+:U
+W:0
+
+N:35:Sea-Dome
+A:0:0:49:35:0:0
+O:65:65:65:65
+G:+:U
+W:0
+
+N:36:The Golden Flower
+A:0:0:50:51:0:0
+O:66:66:66:66
+G:+:U
+W:0
+
+N:37:The Fountain
+A:0:0:52:53:0:0
+O:67:67:67:67
+G:+:U
+W:0
+
+# Here begins the random shops, for the random towns
+N:38:Axe Smith
+T:100:24:256
+A:0:0:1:2:3:4
+O:12:13:14:15
+G:3:w
+F:RANDOM | MEDIUM_LEVEL
+W:12
+
+N:39:Hafted Smith
+T:100:21:256
+A:0:0:1:2:3:4
+O:12:13:14:15
+G:3:w
+F:RANDOM | MEDIUM_LEVEL
+W:12
+
+N:40:Polearm Smith
+T:100:22:256
+A:0:0:1:2:3:4
+O:12:13:14:15
+G:3:w
+F:RANDOM | MEDIUM_LEVEL
+W:12
+
+N:41:Sword Smith
+T:100:23:256
+A:0:0:1:2:3:4
+O:12:13:14:15
+G:3:w
+F:RANDOM | MEDIUM_LEVEL
+W:12
+
+N:42:Rare Jewelry Shop
+T:100:40:256
+T:100:45:256
+A:0:0:1:2:3:4
+O:34:35:36:37
+G:6:v
+F:RANDOM | DEPEND_LEVEL | DEEP_LEVEL | FORCE_LEVEL
+F:VERY_RARE
+W:10
+
+N:43:Jewelry Shop
+T:100:40:256
+T:100:45:256
+A:0:0:1:2:3:4
+O:34:35:36:37
+G:6:y
+F:RANDOM | DEPEND_LEVEL | MEDIUM_LEVEL | FORCE_LEVEL
+F:RARE
+W:20
+
+N:44:Footwear Shop
+T:100:30:256
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:2:r
+F:RANDOM | MEDIUM_LEVEL
+F:COMMON
+W:12
+
+N:45:Rare Footwear Shop
+T:100:30:256
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:2:r
+F:RANDOM | DEEP_LEVEL | MEDIUM_LEVEL
+F:VERY_RARE
+W:8
+
+N:46:Library
+T:100:110:256
+T:100:111:256
+T:100:112:256
+T:100:113:256
+T:100:114:256
+T:100:115:256
+T:100:116:256
+T:100:117:256
+T:100:118:256
+T:100:119:256
+T:100:120:256
+T:100:121:256
+T:100:122:256
+T:100:123:256
+T:100:124:256
+T:100:125:256
+A:27:0:1:2:3:4
+O:8:9:10:11
+G:9:y
+F:RANDOM | DEPEND_LEVEL | MEDIUM_LEVEL
+W:24
+
+N:47:Forbidden Library
+T:100:110:256
+T:100:111:256
+T:100:112:256
+T:100:113:256
+T:100:114:256
+T:100:115:256
+T:100:116:256
+T:100:117:256
+T:100:118:256
+T:100:119:256
+T:100:120:256
+T:100:121:256
+T:100:122:256
+T:100:123:256
+T:100:124:256
+T:100:125:256
+A:27:0:1:2:3:4
+O:8:9:10:11
+G:9:v
+F:RANDOM | DEPEND_LEVEL | DEEP_LEVEL
+F:RARE
+W:12
+
+N:48:Expensive Black Market
+A:0:0:1:2:3:4
+O:38:39:40:41
+G:7:v
+F:RANDOM | ALL_ITEM | DEEP_LEVEL | DEPEND_LEVEL | MEDIUM_LEVEL
+W:12
+
+N:49:Common Shop
+I:95:& Brass Lantern~
+I:100:& Flask~ of oil
+I:100:& Ration~ of Food
+I:60:& Shovel~
+I:50:& Pick~
+I:100:& Iron Spike~
+I:70:& Iron Shot~
+I:70:& Bolt~
+I:70:& Arrow~
+I:98:& Cloak~
+I:46:& Fur Cloak~
+I:100:Word of Recall
+I:100:Cure Critical Wounds
+A:0:0:1:2:3:4
+O:0:5:6:7
+G:1:U
+W:12
+F:RANDOM
+
+N:50:Dragon Hunter
+T:100:38:256
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:2:v
+F:RANDOM | DEEP_LEVEL | DEPEND_LEVEL
+F:VERY_RARE
+W:12
+
+N:51:Speed Ring Market
+T:100:45:31
+A:0:0:1:2:3:4
+O:34:35:36:37
+G:6:G
+F:RANDOM | SHALLOW_LEVEL | DEPEND_LEVEL
+F:VERY_RARE
+W:6
+
+N:52:Scribe
+T:100:70:256
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:5:B
+F:RANDOM | MEDIUM_LEVEL | DEPEND_LEVEL
+W:12
+
+N:53:Potion Store
+T:100:71:256
+T:100:72:256
+A:0:0:1:2:3:4
+O:8:9:10:11
+G:5:B
+F:RANDOM | MEDIUM_LEVEL | DEPEND_LEVEL
+W:12
+
+N:54:Recaller
+I:100:Word of Recall
+A:33:0:1:2:3:0
+O:8:9:10:11
+G:+:b
+F:RANDOM | COMMON
+W:2
+
+N:55:Master Archer
+T:100:19:2
+T:100:19:12
+T:20:19:13
+T:100:19:23
+T:20:19:24
+T:50:16:256
+T:50:17:256
+T:50:18:256
+A:0:0:1:2:3:4
+O:12:13:14:15
+G:3:g
+F:RANDOM | MEDIUM_LEVEL | DEPEND_LEVEL
+F:RARE
+W:24
+
+N:56:Merchants Guild
+A:0:0:56:57:58:0
+O:68:68:68:68
+G:+:g
+W:0
+
+N:57:The Mathom-house
+A:0:0:59:0:3:0
+O:0:0:0:0
+G:+:g
+F:MUSEUM
+W:255
+
+N:58:The Prancing Pony
+I:100:& Ration~ of Food
+I:100:& Hard Biscuit~
+I:100:& Strip~ of Venison
+I:100:& Pint~ of Fine Wine
+I:100:& Pint~ of Fine Ale
+A:2:4:5:6:7:0
+O:69:69:69:69
+G:+:w
+W:8
+
+##### Mining equipment for Khazad-Dum #####
+
+N:59:Mining Supply store
+T:100:20:256
+I:100:& Wooden Torch~
+I:95:& Brass Lantern~
+I:95:& Flask~ of oil
+I:75:& Dwarven Lantern~
+I:60:& Feanorian Lamp~
+T:60:65:6
+T:70:71:22
+A:0:0:1:2:3:4
+O:11:15:26:40
+F:MEDIUM_LEVEL
+G:+:s
+W:24
+
+## Library quest in Minas Anor
+
+N:60:Library
+I:100:Identify
+A:61:0:14:15:16:2
+O:4:4:4:4
+G:+:U
+W:2
+
diff --git a/lib/edit/t_basic.txt b/lib/edit/t_basic.txt
new file mode 100644
index 00000000..78103425
--- /dev/null
+++ b/lib/edit/t_basic.txt
@@ -0,0 +1,80 @@
+# File: t_lite.txt
+
+# *Basic* town (vanilla style)
+
+
+############### Town Layout ###############
+
+F:*:7:3:0:0:0:0:0:8
+
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:###################################################################................................................................###################################################################
+D:###################################################################................................................................###################################################################
+D:###################################################################................................................................###################################################################
+D:###################################################################.....................#########...................#########......###################################################################
+D:###################################################################.......#########.....#########......#######......#########......###################################################################
+D:###################################################################.......#########.....####3####......#######......####1####......###################################################################
+D:###################################################################.......####4####....................#######.....................###################################################################
+D:###################################################################....................................###2###.....................###################################################################
+D:###################################################################................................................................###################################################################
+D:###################################################################.................................*..............................###################################################################
+D:###################################################################...##8##........................................................###################################################################
+D:###################################################################...#####..............####5####...................###7###.......###################################################################
+D:###################################################################...#####..............#########.....####6####.....#######.......###################################################################
+D:###################################################################...#####..............#########.....#########.....#######.......###################################################################
+D:###################################################################...........###9###....#########.....#########.....#######.......###################################################################
+D:###################################################################...........#######..................#########.....#######.......###################################################################
+D:###################################################################...........#######................................#######.......###################################################################
+D:###################################################################..................................................#######.......###################################################################
+D:###################################################################................................................................###################################################################
+D:###################################################################................................................................###################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+
+############### Starting positions ###############
+
+# Standard starting position for normal races
+P:32:100
diff --git a/lib/edit/t_bree.txt b/lib/edit/t_bree.txt
new file mode 100644
index 00000000..c74fd58a
--- /dev/null
+++ b/lib/edit/t_bree.txt
@@ -0,0 +1,131 @@
+# File: t_bree.txt
+
+# Bree
+
+############### Additional default terrain settings ###############
+
+# Default for Quest 1 = entrance is quest entrance
+F:z:8:3:0:0:0:0:0:4
+
+# Default for Quest 18 = entrance is tree
+F:y:96:3
+
+# Default for Quest 18 = entrance is tree
+F:x:96:3
+
+############### Quest 4 - Thieves Hideout finished = house ###############
+?:[EQU $QUEST4 2]
+F:z:74:3:0:0:0:0:0:7
+?:[EQU $QUEST4 5]
+F:z:74:3:0:0:0:0:0:7
+?:1
+
+############### Quest 8 - Troll Glade ###############
+?:[AND [EQU $QUEST8 1] [EQU $DAYTIME 0] ]
+F:y:8:3:0:0:0:0:0:8
+?:1
+
+############### Quest 9 - Wights Grave ###############
+?:[EQU $QUEST9 1]
+F:x:8:3:0:0:0:0:0:9
+?:1
+
+###### Additionnal buildings #######
+
+# Castle: Plot Bree
+F:B:75:3:0:0:0:0:0:1
+
+# Mayor's house
+F:b:74:3:0:0:0:0:0:10
+
+# The Prancing Pony
+F:a:74:3:0:0:0:0:0:58
+
+# Soothsayer
+F:c:74:3:0:0:0:0:0:12
+
+# Merchant Guild
+F:d:74:3:0:0:0:0:0:56
+
+# The Mathom-house
+F:e:74:3:0:0:0:0:0:57
+
+############### Town Layout ###############
+
+D:######################################################################################################################################################################################################
+D:# VV -- #
+D:# V -- #
+D:# VV -- #
+D:# VVV -- #
+D:# VV -- #
+D:#OOOO V -- #
+D:# OOOO V -- #
+D:#--- OOOOO VVV --- VV #
+D:#------ OOOOOO V -- VVVV #
+D:#---------- OO V -- VVWWVVV #
+D:#-------------- OO VVV -- VVVWWWWWVVV #
+D:#--------------- OOO VVV -- VVWWWWWWWWWVV #
+D:#----------------- OO VVVVVVV VVWWWWWWWWWWWV #
+D:#------------------- OOOOO --VVVV VVVVV VVWWWWWWWWWWWVV #
+D:###------------------ OO ,,,,,,,,,,,,,,,,,, -- VVVVV VV VVVVVVVWWWWWWWVVV #
+D:#CC####------------------ OOO ,,,,,CCCCCCCCCCCCCCCCCC,,,,,,,,, -- VVVVVV VVVVWWVVV #
+D:#TTCCCC###---------------,, OO ,,,CCCCCCTTTTTTTTTTTTTTTTCCCCCCCCCC,,,, -- VVVV #
+D:#--TTTTCCC###---------,,,-- OO ,,CCCCTTTTTT--------------TTTTTTTTTTCCCCC,,,,, ^-- #
+D:#------TTTCCC##-----,,------ O ,,CCCTTTT..................----------TTTTTCCCCCC,, ^^^ -- #
+D:#---------TTTCC##,,,-------- OO ,CCCTTT....--ssssssss-..---..........-----TTTTTTCCC,,, ^^ -- #
+D:#------------TC,,###- --- OO ,CCTTT...-----SSSSSSSS--.----------,,.....------TTTCCCC,, ^^ -- #
+D:#-------------,TTCCC### -- OOO ,,CCTT...-,,,,--ssssssss-..-sssssssssss,---......---TTTTCCT,, ^^ -- #
+D:#--------- ,,,--TTTCCC -- OO ,,CCCTT..-------,,##9#####-.--sssssssssss-,-------...----TTCCTT, ^^^ -- #
+D:#-------- ,, ,,----TTTCC O ,CCC T..--sssSsss,,,,------.--StSStSSSStS--,------.-....--TTCCTT,^^^ -- #
+D:#------ ,, , OO ,CCTTT...---ssstSSS---,,,----.--sssssssssss---,---...----..--TTCCT^^^^ ^^ -- #
+D:#------- x, ,, OO ,CCTT...-----sssssss--,,-,,---.--sssssssssss---,-...-------..--TTC^^^ ^ ---- #
+D:#------- {, OO ,CTT..---,,,,###6###,,,---,,--.--###########----..----------..--T^^^^ ^ --- -- #
+D:#--------- OOO ,CT..,,,,----,,,,,,,,------,,-.--###b###e###-....,---sssss---.--T^^ ^ -- -- #
+D:#---------- OO ,CCT.,sssssss----,-----------,,.-----.-----....-,--,,-StSSS---.-T^^^ ^ -- ----- #
+D:#------------- OO ,CCTT.-StStSSS---,-----ssssss--..-----.--....--,,,,,,-,sssss---.-T^^^ ^ -- -- ,,, #
+D:#----------- OOOOO ,CTT-.-sssssss---,-----SSSSSS--.------.-..--,,,-ssss--,#####---.-T^^ ^ -- ----- ,, #
+D:#-------- OO ,CCT-..-##5####----,----ssssss-..........--XXXX,-ssss--,------...-^^^ ^ ^^ ^ --- ---- ,,, #
+D:#- ---- OOOOOOOO ,C OOOO--OOOOO----,----#c##4#-.---.,----,-UUUU,-SSSS--,-----..---^^ ^ ^ --- -----, OOOOOOOOOOOOOO#
+D:#- ---- OOOOOOO ,CT-OssOOOO---OOOOOOOOO--OOOO--.-T-.-sss--,XXXX,-ssss---,---..--T^^ -- -- OOO #
+D:#- ----- OOOOOOOOSt.---------XXXX-OOOO--OOOO---.-StS--,#0##,-ssss---,---.---^^ ^ ^ -- --- OOOO #
+D:#- --- ----- ,,CT--.ss.-sssss---XXXX,---------OOOO.-sss---,,,,,-####--,---..-T^^ ^ ^ -- --- OO #
+D:# ---- ---- ,,CT--.B#.-SStSS---####,------------OO-#z#-ssssss-,,,---,----.--T^^ ^ -,- OOOOO #
+D:# ------- ---- ,,CTT-....-sssss--,,,,,,-------------OO-,--SSSSSt-ss-,-,---...-T^^ ^ ^ -, OOOO #
+D:# ------- ------ ,,CCTT---..#2###-,sssss,-SSSSSSSS-----OO,--ssssss-tS--,.....---^^ ^^ ^^^ -, OOOOOOOO #
+D:# ----- ----- ,,CCT----..,,,,,-StSSS,-ssssssss------OOO-#1##a#-ss....-----T^^ ^^ -,- OOOOO #
+D:# ---- -------- ,,CCTT----..----,sssss,-##7###d#--------OO,.,,.,-##.----TTTT^^ ^ ^^ -, OOOOO #
+D:# --------------- ,,,CCTTTT--..---,##3##-,--,,,---------...OOOOOOOOOOOTTTTTCC^^^ ^^ ^^ ,- OOO #
+D:# -------- ,,,CCCC --..........,-,,---,--.......-------TTTTTOCCCCC,,^^^^^^^^^^^ -.- OOOOO #
+D:# ---------- ,, ,,CCCTT----------.....-......-------TTTTTTTCCCCO,,,,, ^^^^^^^ -.- O #
+D:# ------- ,, ,,CCTTTTTTTTTT-----...------TTTTTTTCCCCCC,,,,OOO -.- OOOO #
+D:# ---- ,,, ,CCCCCCCCCCTTTTT-----TTTTTTCCCCCC,,,,,, OOO OOOOOOOOO #
+D:# ^^ ---- ,, ,,,,,,,,,,CCCCCTTTTTTCCCCC,,,,,, OO OOO-- #
+D:# ^^^^^ ,,, ,,,,,CCCCCC,,,,, OOOO OOO-- #
+D:# ^^^^^^^^^ ,, ,,,,,, OOOOOOO OOO--- #
+D:# ^^^^^^^^^ ,, OOOOOOO---- #
+D:# ^^^^^^^^^^^^^^^ ,,, ..------ #
+D:# ^^^^^^^^^^^^^^ ,,, ...... ....----- #
+D:# ^^^^^^^^^^^^^^^ ,,, ........... ............ ............-------,,,, #
+D:#^^^^^^^^^^^^^^^^^ ,, ... .........-------------- ,,,,,,, ,,,,,,,,, #
+D:# ^^^^^^^^^^^^^ ,, . ,,,,,, ,,,,,,,,, #
+D:# ^^^^^^^^^^^^^^ ,, ... ,,,,, ------ --- #
+D:# ^^^^^^^^^^^^^^^ ,, . ,,,,,,,,------- ----- #
+D:# ^^^^^^^^^^^^^^ , .. ---------------- #
+D:# ^^^^^^^^^^^^^^^^ ,, .. ---------y-------- #
+D:# ^^^^^^^^^^^^^^^ , .. ----------------- #
+D:# ^^^^^^^^^^^^^^^^ ,,. --- ---- ---- #
+D:# ^^^^^^^^^^^^^ ,. - -- -- #
+D:# ^^^^^^^^^^^^^^ . #
+D:# ^^^^^^^^^^^^^^ . #
+D:######################################################################################################################################################################################################
+
+
+############### Starting positions ###############
+
+# Standard starting position for normal races
+?:[AND [EQU $LEAVING_QUEST 0] [NOT [EQU $RACE Vampire] ] ]
+P:33:131
+
+# Standard starting position for vampires (at the dungeon entrance)
+?:[AND [EQU $LEAVING_QUEST 0] [EQU $RACE Vampire] ]
+P:31:150
diff --git a/lib/edit/t_d_bree.txt b/lib/edit/t_d_bree.txt
new file mode 100644
index 00000000..2112bc4e
--- /dev/null
+++ b/lib/edit/t_d_bree.txt
@@ -0,0 +1,101 @@
+# File: t_d_bree.txt
+#
+# Destroyed Bree
+
+# original town by someone else
+# screwing up by fearoffours (fearoffours@moppy.co.uk)
+#
+# Created for ToME
+
+
+# Dead/burnt tree
+F:D:92:3
+
+# Ash
+F:A:93:3
+
+# Fire
+F:F:205:3
+
+# Permanent rubble
+F:R:206:3
+
+############### Town Layout ###############
+
+D:###########################################################################################################F##########################################################################################
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDD VVDDDDDDDDDDDDDD--DDDDDDDDFFDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:# DDD DDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD VDDDDDDDDDDDDDD--DDDDDDDDDDDDDDDDD D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDD D D DDDDDDDDDDDDDDDDDDDDDDDDDD DD D D D DDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDVVDDDDDDD --DDDDDDDFFFFDDDDD DDDDDDDDDDDDDD DDD DD DDDDDDDDDDDDDDDD #
+D:#DDDDDDD D DDDDDDDDDDDDDDDDD DDDDDDDD DD D AADD D D DDDD D D D D D D DDAADDDDFDDDDDDDDDDDDDDDDDDDDDDDVVFFFDDDDD --DDDDDAAADDDDDD FDDDDFDDDDFFFDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDD#
+D:# DDDD DDD DD DDDDDDDDDDDDDDDDD D DD DDDDDDDDD D D DDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDD VVDDDDDDD --DDDDDDDDDDDDDDDDDDDDDDAAA DDDDDDDDDDDDDDAAADDDDDDDFDDDDDDD #
+D:#OOOODDDDDDD D D DDDDDDDD D DDDDDDDDD D DD D DDDDDDDDDDDDD D DDDDDDDDDDDDDDDAADDDDDDD DDDDDDDDDDDDDDD VDDDDDDD --DDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDFFFADDDDDDDDDDDD #
+D:# OOOODDDDDDD DDDDDDDDDDDDDDDDDDDDDDD AA DDDDDDDDD ADD DDDDDDDDDDDDD D DDDDDAAAAAADDDDDDDDDDDDAAADDDDDDDDDDDDDDD VDDDDDDD --DDDDDDDDDDDD DDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFF #
+D:#--- OOOOODDDDDDDDDDDDDDDDD DDDDDDDD D DD D AAADDAADDDDDDDDD D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFFDDDD VVV ---DDDDDDDDDDDD DDDDDDDDD VVDDDDDADDDDDDDDDDDDDDDDD #
+D:#------ OOOOOO DD D D DDDDDDDDDD DDD DDDDDDDDDDDAAAA F D DDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDDDDDDDDDDDDDD V --DDDDDDDDDDDDD DDDDAD VVVVDDDDDDDDDFF DDDDDDDDDDD #
+D:#---------- OO DDD ADAAADDD DDDDDDDDDDDDDDDDD D D DDDDAAADDDDDDDDDDDDD D ADDDDDDD FDDDDDDDDDDDDDDFFFDDDDDDDDDDDDD V -- DDDDDDDDDDD DD VVWWVVVDDDDDAAA DDDDDDDDDDDDDD #
+D:#-------------- OO DDDDDDDDDDDDDDDDD A D D D DDDDDAAADDDDDDDDDDDDDD DDD D DDDDDDDDDDDDDDDDDDDDDDAFFADDAADDDDDDDDDDVVV --DDDDDDDDAAAADDDDDD DDD VVVWWWWWVVVDDDDDDDDDDDDDDDDDDDDDDD#
+D:#------D-------- OOODDDDDDD D DDDDAAADDD AAD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDD FDDDDDDDDDDDDDDDD VVV --DDDDDDDDDDDDDDDD VVWWWWWWWWWVVDDDDDDDDDDDDDDDD #
+D:#----------------- OO A DDDDDDDDDDDDDDDDD AAA D DDDD DD DDDDDDDDDDDDDDDDDDDDD DDDDDD DDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDD VVVVVVVDDDDDDDDDDDDDDDD VVWWWWWWWWWWWVDDDDDD DDDDDDDD #
+D:#------------------- OOOOO DD DDDDDDDDDD DDDDDDDD D DDDDDDDDDDD DDD DDD DD DDD DDDDD DDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDD--VVVV VVVVVDDDDDDD VVWWWWWWWWWWWVVDDDDDDDDD DDDDD #
+D:###------------------ OOA D AA DDD DDDDDDDDD DDDDDDDDDDDDDDDDD DDDD DDD ,,,,,,,,,,,,,,,AA,DDDDDDDDDDDDDDDDDDDDDFFDDDDDDDDD -- VVVVV VV VVVVVVVWWWWWWWVVVDDDDDDD DDDDDDDD #
+D:#CC####------------------ OOODDDDDDD DDD DDDDDDDDD DD D DDDD DD DDDD,,,,CCCCCCCCCCCCCCCCCC,,,,,,,A,DDDDDDDDDDDDDDDDDDDDDDD --DDDDDDD VVVVVV VVVVWWVVVDDDDDDDDDDDDDDDDDDDDDDD #
+D:#TTCCCC###----D----------,, OO DDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDD DD ,,,CCCCCCTTTDDTTTDD TTDDTCCCCCCCCCC,,,,DDDDDDDFDDDDDFFDDDDDDDD --DDDDDDDDDDDDDDDDDDDDDDDVVVVDDDDDDFFFAAADDDDFDDDDDD #
+D:#--TTTTCCC###---------,,,-- OO F DDD D DDDDDDDD DD D DDD DDDD,CCCCTTTTTD---R----------TT T TDDDTCCCCC,,,,,DDDDDDDDDDDDDD A ^--DDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#------TTTCCC##-----,,------ ODDDDDDDDDDDDDDDD DDDDDDDDD DDDDDDDD DD ,,CCCTTDDD....RRR........D.----A-----TDDTTCCCCCC,,DDDDDDDDDDDDDD^^^ --DDDDDDDDDDDDDFFDD DDDDDDDDDD DDDDDDDDDDDDDDDDDD #
+D:#---------TTTCC##,,,-------- OO D DDAAAADDDDDD DDDDDDDDDD D DD ,CCC TD....--ssss-sss-D.--A.......A..--R--TTDDDTCCC,,,DDDDDDD ^^ --DDDAAAD DDDDDDDD DDDDDDDDDDDDDDD DDDDD FDDDDDDD #
+D:#------------TC,,###- --- OODDDDDDD DDDD A FDDDDDDD DD D,CCTTT.DDAF---S.SFRSRS#-.------DD-R,,.....------TDDDCCC,,DDDDDDD^^ --DDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDFDDDDDDDD #
+D:#-------------,TTCCC### -- OOO DDD DDD DDDD D D DD DD ,,CCTD...F,,,,A-ssss.ss-...-ssFs--sssss,---...A..---TDDDCCT,A ^^DDDDDDD--DDDDDDDDDDDD DDDDD DDDDDDDDDDDDFFDDDDDDDDDDD #
+D:#--------- ,,,--TTTCCC -- OODDDDDDDDDDDADDDDDDDDDDDDDDDDDD D ,,CCCTT..-------,,#.,##,-#-.--sss.sRRRssss,--RAA--..R----TDCCTT, ^^^DDDDDDD --DDDDDDDDDDDDFFFDDDDDD DDDDDDDDDDDDDDDDDDDDDDDD #
+D:#-------- ,, ,,----TTTCCDDDDDDD O FDDDDDDDDD DDDDDAADDDDD DDDDCCC DF.A-sssSssRS,,,------.--S.SSSSFSSRR--,----DD.-....--FDCCTT,^^^DDDDDDD --DDDDFAAADDDD DDDDDD DDDDDDDDDDFDDDDDDDDDDDDDDD#
+D:#------ ,, ,DDDDDDDDDDDDDDDD OO DDDDDDDDDD DADDDDDDDD DDD,CCTDT.F.---ssRsSSS---,,,--A-.--ss,sRsFsssFs--,-R-.FF-R--..--TDCCT^^^^ ^^DDDDDDD --FDDDDDDDDDDDDDD DD DD FDDDDDDDDDDDDDDDD #
+D:#------- ,, ,,DDDDDDDDAAADDDDD OODDDDDDDDDDDDDADDDDDDDDDDD D ,CCTT...-----s,,-sss#-,,-,DD-R.--.ssssAsss,s#--,-...-------..-FFTC^^^ ^DDDDDDD ----DDDDDDDDDDDDDDDDDDDD DDDDDD DDDDDDDD #
+D:#------- {,DDDDDDDDDDDDDDDD F OODDDDDDD DDDDDDDDDD DDD,CTT..-DD,A,,####R###R,-R-,,--.--#####F.#R#A----..-DD---A---R.--D^^^^ ^DDDDDDD--- --DDDDDDDDDDDDDDDDDD DDDDDD DDDD #
+D:#-F-------DDDDDDD DDDDDADDDDDDDDDDDOOO D DDDDDDDD DDD D ,CT..,,,,----,,,,,#,,------,A-R--#.-#.##.##R-...R,---.sss----.--T^^ ^DDDDDDD -- --DDDDDDD ADDDDDDDDDDDDDDDDDDDDDDDFFFDDDDDD#
+D:#----------DDDDDDDDDDDDDDDDDDDDDDD OO DDDDDDDD DDD,CCT.,ssRsss#----,R---DD---#-,FF-----.----#....-,--,,sStSSS--R.-D^^^ ^DDDDDDD -- -----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#-------------DDDDDDD ADDDDDDD F OODDDDDDDDDDDDDDDD D ,CCTT.-StS,RS----,-----RsRsA,--..-FA-----....--,,,R,,-.s.sss#--.-D^^^ ^ --DDDDDDD --DDDDDDD ,,DDDDDDDDDD DDDD #
+D:#----------FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDOOOOO DD D ,CTT-.--sFs,ss#-R,-----SRSSSS--.------R-..FF,,,-sssss-,##FF#---.-T^^ ^DDDDDDD --DDDDFFD -----DDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDD #
+D:#--------DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD OO D DD D DD,CCT-..-#####,#---AA---RsssRs,-...R...A.R--RXXX,-Rss---,------..F-^^^ ^ ^^ ^ ---DDDDDDD D---D ,,, ADDDDDDDDDDDDDDDD #
+D:#- ----DDDDDDD FDAADDDDDDDDDDDDD FDDDDDDD OOOOOOOOR DD RD ,C OOOO--OOOOO----,----######-.---.,----,-UUUUs-SSSR--,--A--..---^^ ^ ^ A ---DDDDDAADDDDDDDDD -----,DDDDDDD OOOOOOOOOOOOOO#
+D:#- ----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDOOOOOOOFF,CT-OssOOOO---OOOOOOOOO--OOOO--.-D-.-sRs--,XXXX,-Fsss-R-,---RR-FD^^DDDDDDDDDDDDDD--DDDDDDDAAADDDDDD --DDDDDDD OOADDDDDDD #
+D:#- -----DDDDDDDDDDDDAADD FDDDDD DDDDDDDDDDDDDDDD OOOOOOOOSt.---------XXXR-OOOO--OOOO---.SStS--,####,--sRs-F-,DD-.--F^^ ^ ^ --DDDDDDDDDDAAADDDDDDDDDD--- OOOO ADDDDDDD #
+D:#- --- -----DDDDDDAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,,CT--.ss.-RsAsR---RXXs,---------OOOO.-sRs---,,,,,-###.--,---..-T^^ ^ ^DDDDDDD --DDDDDDDADDDDDDDDDDDDDDDD --- OOADDDDDDDDDDDDDDDD #
+D:# ---D ----DDDDDDDDDDDDDDDDDDDDDDD F FDDDDDDD ,,CT--.s#.-SSt,S-AA##A#,---A-R------OO-#R#-ss,,ss-,,,---,---D.--DA^ ^DDDDDDD -,-DDDDDDDDDDDDDDDDDDDDDDD OOOOODDDDAAADDDDDDDDD #
+D:# ------- ---- ADDDDDDDDDDDDDDDDDDD DDDDDDDDDDD ,,CTT-..RR-FsssR--,,,,,,---------DDA-OO-,--SSSRSt-ss-,-RR--...-T^^ ^ ^DDDDDDD -,DDDDDDD FDDDDDDDDDDDDDDOOOODDDDDDDDDDDDAD DDDDDDD#
+D:# ------- ------DDDDDDDDD DD DDDDDDDDDDD DDDDDDDDDD ,,CCTD---.R#,#R,-,sss,,S-S,SSSSS--R---OO,--s-ss----S--,.....---^^ ^^ ^^^ -,DDDDDDDDDDDDDDDD OOOOOOOODDDDDDDDDDDDD DDDDDDDDD #
+D:# -----DDDDDDD -----DDDDDDDDDDDDDDDD FDDDDDDDDDDDDDDDD ,,CCT----..,,,,,-StRSS,-s,s,sRss--FF--OOO-#,##-R-ss....-FF--T^^DDDDDDD ^^ -,-DDDDDDDDDDDDDD OOOOODDDDDDDDDDDDDDDDDDD DDDDDDDDDDD #
+D:# ---- --------DDDDDDDDDDDDDDDDDDDDDDAADDDDDDDD A ,,CCTD--DD R--RRsssR,-##,##,#F--------OO,.,,.,-##.----DDDT^^ ^ ^^DDDDDDD-,DDDDDDD OOOOODDDDDDD DDDDD ADDDDDDDDDFFFDDDD#
+D:# ---------------DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD D ,,,CCTTTT--..---,##,###,--,,,--AA-----...OOOOOOOOOOOTTDDDCC^^^ ^^ ^^DDDDDDD ,-DDDDDDD OOODDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDD #
+D:#DDDDDDD --------DDDDDDDD DDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDA,,CCCC --.DD.....AA,-,FF--,--FF..A..--A----TDDTTOCCCCC,,^^^^^^^^^F^DDDDDDD -.- OOOOODDDDDD DDDDDDDDDDDDDDDDAAADDDDDDDDDDDD #
+D:# ----------DDDDDDDDDDDDDD F ADDDDDAAADDDDDDDDDDDDDDD ,, ,,CCCTT-------D--.....R....A.-------TTTDDTTCCCCO,,,,, ^^^^^^^DDDDDDD -.- ODDDDDDDDDDDDDDDDDDAADD DDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDD -----D-DDDDDDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDD ,, ,,CCTTT TTDTTDD-D--...------DTTTDDDCCCCCC,,,,OOOADDDDDDDDDDDDDDDD -.- OOOODDDDDDDDDDDDD DDAAADDDDDDDDD DDDDDD D #
+D:#DDDDDDD ----DDDDDDDDDDDDDDDDAADDDDDDDDDDDDDAAA FDDDDDDD ,,, ,CCCCCCCCCCTTDDT--FF-TTTTDTCCCCCC,,,,,, OOODDDDDDDDDDDDDDDD OOOOOOOOODDDDDDDD DDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDD #
+D:# ^^ ----DDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDD ,, ,A,,,,,,,,CCCCCTTTDDTCCCCC,,,,,,DDDDDDDDDDDDDDOODDDDDDD DDDDDDDDDOOO--DDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDD DDDDD DAADDDDDDDD #
+D:# ^^^^^DDDDDDDDDDDDDDDD DDDDDDDDDDDD DDDDDDDDDDDDDDDDD ,,,DDDDDDDDDDDDDD,,,,,CCCCCC,,,,, ADDDDDDD D OOOODDDDDDD OOO--DDDDDDDAAADDDDDDDDDD DDDAADDDD DDDDDDDDDDDD #
+D:# ^^^^^^^^^DDDDDDDDDDAAAADDDDDDDDDDDAD DDDAAADDDDDDDDDDDDDD ,,DDDDDDDDDDDDDDDD ,,,,,,DDDDDDDDDDDDDDDDDDDDDDD OOOOOOO OOO---DDDDDDDDDDDDDDDD ADDDDDDDDDDDDDD DDDDDDDDDDDDD #
+D:# ^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,,DDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDOOOOOOO----DDDDDFFF DDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:# ^^^^^^^^^^^^^^^DDDDDDDDD DDDDDDDDDDDDDDDDDDDD AA FDDDDDDD ,,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD FDDDDDDDDDDDDDDDDDDDDDDD ..------DDDDDDDDDDDDDDDDDDDDDDDDDDDD DDD DDDDDDDDDAAADDDDDDDD #
+D:# ^^^^^^^^^^^^^^DDDDDDDDDDDDDDDD DDDDDDDDDDD DDDDDDDDDDD ,,,FDDDDDDDDDDDDDDDD AA......DDDDDDDDDDDDDDDDDDDDDDD ....-----DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAFFDDDDDD #
+D:# ^^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDD DDDDDDDDDDDD DDDDDDDDDDDD,,,DDDDDDD ........... ............DDDDDDD....F.......-------,,,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDAADDD #
+D:#^^^^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,,DDDDDDD .AADDDDDDDDDDDDDDDDDDDDDDD .........--------AA----DDDDDDD,,,,,,, ,,,,,,,,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFFDDD #
+D:# ^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDD DDDDDDDD DDDDDDDDDDDDDDD ,, A .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAFFDDDDDDDDDDD ,,,,,,DDDDDDD,,,,,,,,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:# ^^^^^^^^^^^^^^DDDDDDDDDDDDD DDDDD DD DDDDDDDDDDDDDDDDDDDDD ,, AA... ADDDDDDDDDDDDDDFDAAADDDDDDDDD DDDDDDDDD DDD DDDDDDDDDDDDDDDDDDDDDDDDDDD,,,,,DDDDDDD ------ ---DDDDDDD #
+D:# ^^^^^^A^^^^^^^^DDDDDDD DDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDD,, .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,,,,,,,,------- -----DDDDDDD#
+D:# ^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDDDDDDDDDDD , ..ADDDDDDDDDDDDDDFFDDDDDDDDDDDDDDDDDDDDDDDDDDAADADDDDDADDDDD DDDD DDDDDDDDDDDDDDDDDDDDDDDD A---------------- #
+D:# ^^^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDD ,, ..DDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD---------D--------DDDDDDD#
+D:# ^^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDD DDDDAAAD DDDDDDDDDDDDD , ..DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDADDDDDDDDDDDDFFFFDDDDDDDDDDDDDDDDDDDDDDDDD -----------------DDDDDDD #
+D:# ^^^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDAAAD DDDDDDDDDDDDDDDDDDDDDDDD ,,.DDDDDDDDDDDDDDDDDDD FFFDDDDDD DDDDAADDDDDDDDDDAAFFDDDDDDDDDDDDAAADDDDDDDDDDDDD DDDDDDDDDDDDD --- ---- ----DDDDDDD#
+D:# ^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDD ,.DDDDDDDDDDDDFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDFFFDDDDDDDDDDDDDDDDDDDD - -- --DDDFFDD #
+D:# ^^^^^^^^^^^^^^DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDD .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAADDFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDDDDDDDDDDDDDDDDAAADDD #
+D:# ^^^^^^^^^^^^^^ ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:######################################################################################################################################################################################################
+
+
+############### Starting positions ###############
+
+# Standard starting position for normal races
+?:[AND [EQU $LEAVING_QUEST 0] [NOT [EQU $RACE Vampire] ] ]
+P:33:131
+
+# Standard starting position for vampires (at the dungeon entrance)
+?:[AND [EQU $LEAVING_QUEST 0] [EQU $RACE Vampire] ]
+P:31:150
diff --git a/lib/edit/t_d_gond.txt b/lib/edit/t_d_gond.txt
new file mode 100644
index 00000000..12483e32
--- /dev/null
+++ b/lib/edit/t_d_gond.txt
@@ -0,0 +1,118 @@
+# File: t_d_gond.txt
+
+# Destroyed Gondolin: Your failure has left the city in ruins.
+# Created by Mynstral (mynstral@thehelm.com)
+
+
+# Extra terrain features that aren't commonly used
+
+# Dead/burnt tree
+F:D:92:3
+
+# Ash
+F:A:93:3
+
+# Fire
+F:F:205:3
+
+# Permanent rubble
+F:R:206:3
+
+# Tainted water
+F:w:174:3
+
+# Decoration = Straight Road (B)
+F:":66:3
+
+# Decoration = Straight Road (W)
+F:$:70:3
+
+
+# Town Layout
+
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################^^^^^^^^^^^^R ####
+D:####################################^^^^^^^^^^^R ####
+D:##################################^^^^^^^ R R R ###
+D:#################################^^^^^^^^R C C R CCR CC CC C CCRC CR R ###
+D:################################^^^R^^^^^^^ C RCRCR#R######R#R#####R#####CCR CCR R R ###
+D:###############################^^^^^^^^^^^^ CRRR C# ###### DD D ####RDRD D D ###R###CC C R ^^^^^ ###
+D:##############################^^^^^^R^^^R C R####R##RD DDD R.R## R.DD DDD#RR#####C R R^^^^^^^ R ###
+D:#############################^^^^^^^^^^ # R##########D R######### .D##########R R ^^^^^^^^^^^^ ###
+D:############################^^RR^^ R ############ ..R###########R ..D############C R ^^^^^^^^^^^^^^R ###
+D:############################ C #############DR .###ww#####ww### .D#############CR ^^^^^^^^^^^^^ ###
+D:########################### RR R #############DD .#wwww#R###wwRw# R.RR############# R ^^^^^^^^^^^ ###
+D:########################### R . R RR C#R###########DR .ww###R###ww .DR############C R R ^^^^^^^ R R ###
+D:########################## R ##### RR R #### R R C######wwww### ..w## R##R ..D####wwww#####CR ####### # R ^^^^ ###
+D:########################## R #R##### R ##R## ####### C#R####D DDww#DR # .R# DRRwD DD######C R## ##R#RR ###
+D:####R#################R#w# ### ###R ### R ####### ###### DDw#R D#wDD D####R ##R#### ###
+D:####wR#w###R#R#####R#Rwww# R####R### #R##R ####### R######D R RR..R######R ###
+D:#####wR##w#w##R##wRwww#w## #####R### # ### #########R ######D R .. DD DD ..RRD######CR R ###
+D:#####RwRwRwww##RwRwww#RR## R######R# R ##R R##R#### RR R RC#######Rw ..DD D####### DD ..ww#R##### C # R ###
+D:######w##ww#ww#wwwww#R#### . R R R# R# #######R## D ##### R###### DD ########## R ## ## ### R RR ###
+D:######www#wwwRwRwRwwRw#### .. R CR####### .. D###### R# # ##### .. ########R #R#######R###R#### ###
+D:#######RwwwwRwwwRwwR#ww### R #####D DD .. D###R.R#R# #R## .###D ..DDDR#####CR R #### # #######R ###
+D:########RwwRwwRwwwR#w###### # ###### R R## #####R C# D ..D## ..## RR ..# R .. D DD# R RR#R#######R## ###
+D:#########R#wwwwRww########## #R#R####R ############ R#D R .R#R ## R ..R R.. ..## D R# # ..D#C R R ###R### R## ###
+D:##########R#################### # ####### ############ R #D R R####R D## R# R ..# @ @ ## .#R##R R RD# ## #R#R#R## @ @ ###
+D:#### R#################### ####R# ##R #####R####### RC#D # #R R. D## @@@ @ .##D ..R## R .D #RC #### R @@@@@@ ###
+D:#### ####RRRC##w#LL#""## #######R ## R##R#R ## C### R ###R . D ### R @w@@..###D D .#### ###R @ @ @@@@wwww@@@ ###
+D:#### R####R##RC# R#LL#""# # . R R ###D R##R D###.### .#####w@ @###.## R###R R### R @@ @@wwwwwww@ ###
+D:##### ################### . R C### ## #R D## ..##.R##wRww#..## ..# D ## R D###C @@@@wwwwwwwww@ ###
+D:# R#### D# .#..#ww#Rw#..# .#D R## .. @wwwwwwwwwwww@@ ###
+D:#.. ..#w#w#w# R @wwwwwwwwwwww@ @ ###
+D:# .##R# D# .#.R#ww#wR#..# .#D ####R .. @@wwwwwwwwwww@@ @ R ###
+D:############ ########## # . . . R###D ..#R###R ## ..##..##www##..## ..## #R # R R##C @wwwwwwwwww@@@@ ^^###
+D:#### #### K# C# #LL# "# R . R . . ### ##R# DD###.### .##### R###.###D R### . D#R# @@@wwwwwww@@@@@@ R ^^###
+D:#### ### K CC ww# L# "## ##### # R ## #### # # #### CR##D .. DD### ..###DD .###R DD####RC @@wwwww@@ @ @ ^^^^###
+D:#### ####KK#CC#ww#L # "### ## ###### ###R ###R# R# ##### R#DD D## R .##D ..R# # D #####CR @@wwww@ R R^^^^^^###
+D:######## ###################### ######### R####R#R### # ## R# CRD ..D## R#R .RR ## .#R##R .D##### R DD @@@@@@@ ^^^^^^^###
+D:####### #####R$R$#R#### #### ### ###R# R ## ########R# # # # ww ww .DD## R R.##RR ## RR## D #R# R###### DD DD DD DD DD ^^^^^^^^^###
+D:########$R$$R#R$RR$##### ## R##R###### ##R# ### R### R## R CRR..ww# R #Rw D####.#########R#R####D ..######C D DD DDD D D DD DDD ^^^^^^^^^###
+D:######$$R#$R$$#$#$##$#$### R C D..w#R .###w . DD#################D D .DR#####R DD DDD########DDD DDDD ^^^^^^^###
+D:#######R#$##$$$#$#$$R$#### C#D .w###.R# R D D### #########DD D #R###R DDD###DD D D### D DD R ^^^^^^###
+D:######R$R$$$#$#R#$R$$R$$# R R RR RC##D.w##R # Rw ..D D ####### D D ### DDD##DD D ##DDDDDD ^^^^###
+D:#####$$$$#$$R#$$$$$R$$R### ###### # RR### R###RR RC#D.ww#####ww R RR DD#C DD#DD D DD## D DD R ^^^^###
+D:#####R$$#$$R#####$R$$$R### ## ####R R #R## ##### ##R R ..ww###wwR ..D DR RDDDR R R .DD R R D DR R. DR R D ##D DDD ^^^^###
+D:####R$$###R########R#R$$$# ###R#####R ## ####### # C wwwRw .DDR######R#RDRD RDDD#R###R#R#DDD RR R R D#DD D DD##D ^^^^^^###
+D:###R$#################R### # ## ## # ###########R# CRDD .DD###wwwwww####R . R#R##wwwwww### D .DD#C R DDD##DDD D D##DD D ^^^^^^^###
+D:#######################R## R#### #R ############# R# .D##www .wRw###DDD###www .www#RDR .D#R DDDD D D D###DD D R ^^^^^^^###
+D:########################### R # R R CR# .D#ww ..ww#######ww R.ww#D D#R DD D DD# ## ## DDD DD ^^^^^###
+D:########################### R R# C#D R ..####### R ..DD#R DD D DDD DDD DD D ^^^^###
+D:############################ ##R #R R#D ..D#ww R R..ww#######wR R ..ww#D .. DR# R DDDD DD D D R R ^^^^^^###
+D:############################ ######### C ##DD .D##www .www#########www R.www##D . R## DDD D DD D ^^^^^^^^^###
+D:############################# #####R# R#D DD DD ##wwwwww## #### #####wwwwww###D DD D##RC ^^^^^^^^^^^^###
+D:############################## R ###R #### DD DDD ##### # ######R # ########DDDD RDRD ###RC R ^^^^^^^^^^^^^^###
+D:############################### ### RR CR R#R#R##DDD RDR DD##############D DRRD D D## #R#CCRR R^^^^^^^^^^^^^^^^^###
+D:################################ R # CC R ##R# #R#####R###R#R#R#####R###R###RCRC CR R ^^^^^^^^^^^^^^^^^###
+D:################################# R R R # R CRCR CCCRCC CRRCRCCC C R #C C CR RC C R ^^^^^^^^^^^^^^^^^^####
+D:################################## #### R R R # R ^^^^^^^^^^^^^^^^^^^^^####
+D:#################################### R ##### R ^^^^^^^^^^^^^^^^^^^######
+D:###################################### #### ######## R ^^^^^^^^^^^^^^^^^^########
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+
+# Default starting position
+?:[EQU $LEAVING_QUEST 0]
+P:33:50
+
+# Starting position when coming from quest 19
+?:[EQU $LEAVING_QUEST 19]
+P:51:190
+
+# Starting position when coming from quest 20
+?:[EQU $LEAVING_QUEST 20]
+P:33:13
+
+# Starting position when coming from quest 21
+?:[EQU $LEAVING_QUEST 21]
+P:27:168
+
+# Starting position when coming from quest 22
+?:[EQU $LEAVING_QUEST 22]
+P:6:42
diff --git a/lib/edit/t_d_khaz.txt b/lib/edit/t_d_khaz.txt
new file mode 100644
index 00000000..950f5c82
--- /dev/null
+++ b/lib/edit/t_d_khaz.txt
@@ -0,0 +1,87 @@
+# Town Name: Destroyed Khazad-Dum
+# by fearoffours (fearoffours@moppy.co.uk)
+#
+# Created for ToME
+
+F:o:207:3
+
+# Ash
+F:A:93:3
+
+# Fire
+F:F:205:3
+
+# Permanent rubble
+F:R:206:3
+
+# Town Layout
+D:######################################################################################################################################################################################################
+D:#ooooooooooooo####^^^^^^^^^#######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#####oooo#######oo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^##########oooooooooo CCCCCCC #
+D:#ooo##ooooooooo#####^^^^^##########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^########ooo########ooo##########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^################oooooooooooo CCCCCCCC #
+D:##oo###oo####oo##############################^^^^^^^^^^^^^^^^^########################oooo#########oo#### ###########^^^^^^^^^^^^^^^^^^^^^^^^####### #######oooo########## CCCCCCCC #
+D:##############o#########oo###oo###################^^^^^^^############################oooo#########oo###### ################################# #####ooooooooo############# CCCCCCCC ; #
+D:#^^^^########oooooooooooooo##ooooooooo############################# #################oooo########oo########### ########################## ######ooooooooo################ CCCCCCCC ; #
+D:#############ooooooooooooooooooooooooooo###### ########### ###### ############## ####oooo#######o##o############# ################### ###########ooo######################## CCCCCCCC ; #
+D:#^#############ooooo##################oo### # #### # ##### #### ############### ###ooo########ooo## ## ###### # ## ## ## # #######ooooo########################### CCCCCCCC #
+D:#^^################oo#################ooooo#### ## ; ## ;; o ; o ## # ooooooooo############################ CCCCCCCC #
+D:#^^^^################o##########o#####oooooooooooooooooooooo AAAAAAAA # o ; oooooooooooooooooooooooo##ooo############################ CCCCCCC #
+D:#^^^^^^################################# ## ; o ; AAFFFFFAA A o ; o R#o################################### CCCCCCC#
+D:#^^^^^^################################ ### o ### AAFFFFAAAA ## o ###; o ##A ######################################## CCCCCC#
+D:#^^^^^################################# ### o ### ### ## AAFFFFFAAo ### o ### o #AAFFA RR###################################### CCCCCC#
+D:#^^^^^^^################################ ###### ;; o ######### AAAFFFFFAo ###### o ## ### o ## #AFA #R##################################### ; CCCCCC#
+D:#^^^^^^^^################################ # ## #### o ; ## # # AAAAAAAAA ####### # #### # o ## ###FF# ###R#R################################## CCCCCC #
+D:#^^^^^^^################################### ## ## o ; ;### # AAAAo # # ##o # ## ; o # ##FF ;#R##RR################################# CCCCCCC #
+D:#^^^^^^^^^################################ ## AAAAAAAA ### o ### o # # o ## # #R################################## CCCCCC ; #
+D:#^^^^^^^^^################################# AAFFFFFFAA o o o #R ################################## CCCCCC #
+D:#^^^^^^^^^^################################ ; AAFFFFFFFAAoooooooo o o oooooooooooo AAAA R################################# CCCCCC ; #
+D:#^^^^^^^^^^^^^########################### AAAFFFFFAA o o o o FFFFF A ################################# CCCCCCC #
+D:#^^^^^^^^^^^^^^^########################## AAAAAAAAAAAAAAFF o ### # o o ;### o ### # AF FAA #R############################## CCCCCCC ; #
+D:#^^^^^^^^^^^^############################# AFFFAA #####; o # ## o o # ### o # # # FF ; ###############################; CCCCCCC ; #
+D:#^^^^^^^^^############################### AAFFFA; ## ## # o #### ## o ; o ####### o ### #A AAA ############################ CCCCCCC #
+D:#^######################################### AFAA; ## ### oooooooo #### # #o o ###### oooooo ###AAFF o ; R#############################; CCCCCCC #
+D:#################ooo###################### AA ; ### # o # ## o o ##### o ## AFFA# RR#############oo############## CCCCC; #
+D:####oo##ooo#####o#######o###ooo########### ## ; o ## o o ### o ; ###FFAA ;; R########oo###oooooo#####oo###### CCCCC ; #
+D:#ooooooooooooooooooooooooooooooo##oooooooo ; o ; o o o ; # ;; ; oooooooooooo##oooooooo##oooooooooo CCCCC ; #
+D:#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooAAAFooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo CCCCCC #
+D:#oooooooooooooooooo##oooooo##oooooo##ooooo AA ; o o AA FFA ; Roooooooo#oooooooooooooooooooooooo CCCCC #
+D:#^#######################oo####ooooo####### ##### FFAFA # # o o AFFF### # ######o####oo####oo######oo######; CCCCC #
+D:#^^#######################o########### #### AAFFFAA# oA o A FA## # ## ## ## RR####o####################oo#### CCCCC #
+D:#^####################################### ## ### ;; ; AAFFAA##### oA FFFAA ### ### ## #### R####oo######################### CCCCCC #
+D:#^^######################################## ####### ; #A##### oA o # #### # # ### RRR###o############oo########## CCCCCCC #
+D:#^^^###############ooo################### ### # ; ;# ## oA AA o FA ##### ; ### ## ;; R#####oo########ooooo####### CCCCCCCC #
+D:#####oo##oo#####oooooooo##############oo## ### ; #### o AA o F A ### ### R#######oooo##oooooo####### CCCCCCCCC ; #
+D:#ooooooooooo###ooooooooooooooooooooooooooo # o A oF # ooooooooooooooooooooooooooo CCCCCCCC #
+D:#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooFoooFooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo CCCCCCCC ; #
+D:#^ooooooooooooooooo###oooooooooo##oooooooo o #o A o o AA # ooooooo####ooooooooooooo CCCCCCCC #
+D:#^^#o###ooo#####ooo#####ooooo########oo# # # ; o ### o A Fo ;### o A ### oR#########ooooo###oo# CCCCCCCC ; #
+D:#^^^^^###o################oo############# # # # ; o ###### # AF o ## # o #### ; R###########oo######## CCCCCCCC ; #
+D:#^^^^^^^##################################R ; #### ooooooo ##### o ; A o ###### ooooo A ####### ######################## CCCCCCCCC #
+D:#^^^^^^^^^^##############################RR AA; ## ##### o ; ####### o Ao ### # o FFF # ## # o ; #R######################## CCCCCCCC #
+D:#^^^^^^^^^^^^^^^######################### R AA FF A ; ## ## o #### o A ##### o AFF ### # ############################ CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^###################RR AAAFFFAA ## ; o ### o o # # o ; A ### ; ;; RR########################## CCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^#################### R AAAFFFAA ; o ;; o ; o o A ; R########################### CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^######################R AAFFA A ooooooooooo o o oooooooooooo ;; ;R ############################ CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^^^^#################RRR ; AFFA o ; ; o o ; A o R############################ CCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^##############R ### o # # o ### o ###; FF A o #### RR############################ CCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^############RRR ### # o AAA A # ### o ## # o # # # AAFF Ao # ## R ######################## CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^^##########R R ### # #;; ; o AAAA ## #### o ## #### o ### ### FFAo ####### R########################### CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^^##########RR ## ### o ;A A #### ## A A o ### # # o # ## ### AAF AA ####### ############################ CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^########### ### o ; ;## ## AAA o # ### o ##### ; FFAA #### ; ############################## CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^############## R ### ; o ## AAAA o # # o A ## A oFA ### R############################## CCCCCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^^^^#################R o A AoAA A Ao A A AAAAA FFF R#########oo###oo################# CCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^#############o#######oooooooooooooooooooooo ## AA A o A A A AR AAFFFAFA oooooooooooooooooRoooooooooooooooooo################## CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^############ooooooooooo# ### RRR RR # ### RR R o RR## AAR F FFA#FF A AA FFFFRR R ## R oooooo##oooooooooo################### CCCCCCC #
+D:#^^^^^^^^^^^#################ooooooooooo####R######R ## RR### ######### ###RR####o RR##### #ooo# ### R#F#F#RRRR A FF##R#R ##### ####################ooo##################### CCCCCCC #
+D:#^^^^^^^^^^###################oo######oo### ########### ######## ## #### ###########oooo########ooo ##########R#A##A A ######R# ###### ####################oo###################### CCCCCCC #
+D:#^^^^^^^##########oo####oo####ooo######### ############ ######### ###^^^ #########ooooo########oo##################A################### #########^######oooo##ooo################## CCCCCCC #
+D:##^^^^^#########oooooooooooooooo#################^^####### ###########^^^^^###########ooooo######ooo####################################### #####^^^#######ooooooooooooo############# ; CCCCCCC#
+D:#^^^##########ooooooooooo##ooooo######^#########^^^^##################^^^^^^^^^^^######ooo#######oooo#########^^^^^^^^^^^^^^^^^^^########### #####^^^#######oo##oooooooo############# CCCCCC#
+D:##############ooooo##########oo######^^^#####^^^^^^^^###############^^^^^^^^^^^^^^#####oooo#######ooo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^###### ####^^^^^###############ooo############## CCCCC#
+D:########ooo#####oo##################^^^^^^^^^^^^^^^^^#############^^^^^^^^^^^^^^^^^####oo########oooo#####^^^^^^^^^^^^^^^^^^^^^^^^^^^########### #######^^^^^#############ooo#ooo######## CCCCCC#
+D:#o##oooooooooooooooo##############^^^^^^^^^^^^^^^^^^^^^^#########^^^^^^^^^^^^^^^^^^#####oo########oo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^####### # ######^^^^^^^^^^^^########oooooooooooooo CCCCC #
+D:#oooooooooooooooooo########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^########oooo#######ooooo###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^##############^^^^^^^^^^^^^^^#######ooooooooooo CCCCC #
+D:######################################################################################################################################################################################################
+
+# Default starting position
+# ?:[EQU $LEAVING_QUES 0]
+# P:31:32
diff --git a/lib/edit/t_d_lori.txt b/lib/edit/t_d_lori.txt
new file mode 100644
index 00000000..e5ab3abf
--- /dev/null
+++ b/lib/edit/t_d_lori.txt
@@ -0,0 +1,101 @@
+# Town Name: Lothlorien (destroyed)
+#
+# original town by Akhronath (zzhou22876@aol.com)
+# destruction by fearoffours (fearoffours@moppy.co.uk)
+#
+# Created for ToME
+
+
+
+
+# Dead/burnt tree
+F:D:92:3
+
+# Ash
+F:A:93:3
+
+# Fire
+F:F:205:3
+
+# Permanent rubble
+F:R:206:3
+
+# Town Layout
+D:######################################################################################################################################################################################################
+D:#DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD .DDDDDDDDDDDDDD,DDDD,DDDDDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDDDD ,DDDDDDDD DDDDAAA#
+D:#DDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDDAADDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDAAADDDDD.DDDDD DD DDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,,DDDDDDDDDDD, .DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDDDDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDD.AAADDDDDDDDDDD ,DDDDDDDDDDDDDD ,,DDDDDDDAAA,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDD,DDDDDDDDDDDDDDDDDDDDDDDD ,DDDD ,DDDDDDDDDDDDDDDDDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDAADDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDD DDDDDDDDDDDDDDDDDDD ,DDDDDDAADDDDDDDDDD #
+D:#DDDDDDDDDD DDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDFDDDDDDDDDDDDDD ,DDDD ,DDDD,,DDDDDDDDD DDDDDDDDDDDDDDDD ,DDDDDDDDDDAADDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDD ,DDDDDDD #
+D:#DDDDDDDAAA,DDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD AADDDDDDDDDDDDDD AAAAFDDDDDDD ,DDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDD ADDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDD FDDDD FFDDDD ,DDDDDDDDDDDDDD,DDDD,DDDDDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDDDD ,DDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDDDDDAAADDD ,DDDDDDDDDAAADDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDD AADDDDDDDDDDD FDDDD F F F ,DDDDDDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDD DDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD AADDDDDDDAA ADDDDDDDADDDDDDD## F,AAA##DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDD DDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDD #### , # ##DDDDDDDDDDDDDDDDDDD DDAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDDDDDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDD AFDDDDDDD ADDDDDDD RDDDDDDD##DDDD FDDDD##R,,F,, ##DDDD ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDD DDDDDDDDDDDDDDDDDD,DDDDDDADDDDDDDDDDDDDDDDD A ,DDDDDDDDDDDDDD## #DDDD#####, AADDDD## , , ###DDDD F ADDDDDDDDDDDDDDDDDDDDDDDD , DDAAA,DDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDADDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDDDDD AAAAADDDDDDDDDDDFFDDDDDDD A # #A# A ### #DDDDDDD ##AAA,AAAA#DDDD AAAAAADDDDDDDDDDDADD ,,DDDDDDDAAA,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDA, A ,DDDDDDDDDDDDDDDDDDDDDDDD## ##AAA, #A##DDDD##AAAR#AAA,AAA##AAA, FAADDDDDDDDDDDDDDDDDDDDDDDDDDD AA ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDD,AADDDDD AAAADDDDDDD###AADDDD FDDDDA,AAA#####DDDD##.##AAA####RR ## , ##DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDADDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDDDDD A ADDDD FFF##DDDDDDD # ## #DDDDA #DDDDDDD.DDDD ##########,,,, # #AAAF,,DDDDDDDDD DDDDDDDDDDDDDDDD ,DAADDDDDDDDDDDADDDDDDDDDDDDAAA,DDDDDDDDDDDDDD ,DDDDDDD #
+D:#DDDDDDDDD DDDDDDDDDDDDDDDD,DDDDDDD AA ADDDDDDD #### ,A R ####DDDD ,DDDDDDD , ,, ##F#####AAAA ####DDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DD DDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDD ADDDDDDDDDDD###R# # ######DDDDDDD,DDDDDDD ,DDDD #R#AAA#AAA,AAA##DDDD FAAA,DDDDDDDDDDDDDD ,,DDDDDDD A,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDA,DDDD,DDDD #### ##A###F##DAADDDD, F , , AAAAF ,DDDDDDD ,AAA##AAA, F FDDDDDDD DDDDDDDDDDDD ADDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDDDDD,DDDDDDDAADDDDDDDDDDD ############,,,,AA,,,AAA,,AAA,DDDD F ,DDDD A , ###DDDDDDDDDDD ADDDDDDDDDDDDDDDDDDDD A ,DDDDDDDDDADDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDAAA,DDD DDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD##### #######DDDDDDD ,DDDD,,,,,,,,,,,A,,,F,,,,,,,,R###DDDDDDDDD AAAA ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDD ADDDDDDDDDDD ######## #####AAA,AAA,DDDDDDDDDDDDDD FDDDD AA , ###AAA,,DDDD, F ,ADDDDDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDAAAAA, ,DDDDDDDDDDD ,DDDDDDDDDDDDDDAAA#
+D:#DD DDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDAAADDDDFDDDD,## # RRAAA######DDDD ,DDDDDDDDDDDDDDDDDD FDDDD ,DDDD# ,DDDDRDDDDDDDDDDDAAADDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDDDDDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDD FFAAA###DDDDDDD # R #DDDD ##DDDD A ## #AAA## A FF ,DDDD ,AAA### ###DDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDD ,DDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDD #DDDDDDDDDDDDDD#,AAA#R###DDDD F ##DDDD####AAAA ,AAA,,,AAA##### ####DDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA## ## AAAA###DDDD #FAAAF,,,,,,,,DDDD ##########DDDDAADDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDD DDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ### # AAA ,#DDDD ,DDDD ,F ,AAA, ,DDDD### ###DDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDADDDDAAA,DDDDDDDDDDDDDD ,DDDDDDD #
+D:#DDDDDDDAAA,DDDDDDDAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDD ADDDDDDDDDDDDDDDDDDDDDDDD A ,DDDD ,DDDD,, ,AAA,DDDD AA,DDDD### ## ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDD DDDDDDDDDAAAAAFDDDDDDDDDDDDDDDDDDDD ,,AA ,,,,,,,,,,,,, ,F, ,DDDDDDD, , , # ##DDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDAAADDD ,DDDDDDDDDDD ,DDDDDDDDDDDDDDAAA#
+D:#DDDD DDD DDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,FDDDDDDDDDDDDDDDDDDDD AA , ,,A,DDDDDDDDDDD,AA,F,F,,,,,,,,,,,,,AA,,R###DDDDDDD AADDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDAADDDDDAADDDDDDDDDDDAAA, #
+D:#DDDDDDDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDD AADDDDDDDDDDD AA A ADDDD,,DDDDDDDDDDD ADDDD ,,, FDDDDDDDAA A,DDDD# ##DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDDDDDDDDDDDDD DDDDDDDDDAA,DDDDDDDDDDDDDDDDDDDD AADDDD ,DDDD AAAAADDDD --,--AAAA,AADDDDDDDDDDD ,AAAVVV@DDDD F#,DDDD # #DDDDDDDDDDADDDAAA,DDDD ,DDDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDDDDDDDDDDDDDDDD ,,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDD F FDDDDDDDAAAF AAAA----,---- AADDDDDDDDDDD AA VWWWV@DDDD #R#DDDDDDDDDDDDDD ,,DDDDDDD DD,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDD,DDDDDDDDDDD AAAAADADDDD ---VV,@@---ADDDDDDDDDDDDDD , @WWV@@ ,AAAF###DDDDDDDDDDDDDDDDDDDDDDDDDDD A ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDDDDDDDDD D ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDA AA A ---VVW,WV@---DDDDDDD A AAAA, V@VVDDDDDDD#F####DDDDF,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADADDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDDDDDDDDDDDDDDDDD FFAADDDDDDD A ,F---VWW@WV@---DDDDDDDDDDDAAAA,, @@DDDDDDDR###AAA,AAAFDDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDAAA, ,DDDDDDDAAADDD,DDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDAADDDDADDDD---V@WWW@V---DDDDDDD ADDDDDDD,,ADDDDADDDD #DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DD DDDDDDDDDD ,,AAAD ,DDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDD AADDDDDDDAAA---V@VVV@--AAA,A,,,,,,,AA,,,, ,DDDDDDD,,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDDDD ,DDDDDDD #
+D:#DDDDDDDDDAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ------@@-DDDD,DDDDDDD ADDDD ,DDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDD DDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDD FDDDDDDD ---DDDDDDD,DDDDDDD ADDDD #R#DDDD FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDDDDDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ADDDD F FDDDDDDD ,DDDDADDDDDDD R##DDDDAAADDDD FAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDD DDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDAADDDDAADDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDAAA,AAA#F##DDDDDDDF AADDDDDDDAAADDDDDDDDDD ,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , #
+D:#DDDDDDDDDDDDDDDDDD ,, AAAAADDDDDDDDDDDDDD AAAAAAADDDDDDDDDDDDDDDDDD AADDDDDDDDDDD #R#DDDD ADDDDDDD #DDDD AAA ,ADDDDDDDDDDDDDD ,,DDDDDDDAAA,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDD ADA AA,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDD,DDDDDDDDDDDDDDDDDDADDDDDDD,DDDD ,DDDD ##R#DDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDD,DDDDDDDDDDDDDDAAAAADDDDDDDDDDDDDDAA AAAADDDDDDDDDDDAFAADDDDDDDAAAFDDDD####RAAAFDDDDDDD AADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDD AADDDDDDDDDDDDDD ADDDD FDDDDAA FDDDD#F#DDDD FDDDDDDD AADDDDDDDDDDDDDDDDDDDDDDDDDAAADDDDDDDDDD ,DDDDDDDDDDDDDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDDDDDDDDDDDD ,, AA ,DDDDDDDDDDDDDDDDDDDD AADDDDDDDDDDDDDDDDDDDDDDDD FDDDDDDDDDDD #DDDDDDDDDDDDDD A ,DDDD,,DDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDADDD ,DDDDDDD #
+D:#DDDDDDDAAA,DDDDDDDAAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAADDDD AADDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDD AAADDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDAAAAA, ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDD AADDDDDDDDDDDDDDDDDDAADDDDDDDDDDD ,DDDD,DDDDDDDDDDDDDD ,,DDDDDDDDDDDDDDDDDDDDDDDD , ,DDDDDDDDDDD ,DDDDDDDDDDDDDDAAA#
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD ADDDD ,,DDDDDDDDDDDAADDDDDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDD ,AAAAAA,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDDDDD DDDDDDDDDD ,, AAA,DAADDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDD ,,DDDDDDD A ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDAA A ,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,AAAAADDDDDDDD DDDDDDDDDDDDDD ,DDDD ,DDDDDDDDDDDDDAAADDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD AA,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAA#
+D:#DDDDDDD A ,DDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDDDDDDDDDDD #
+D:#DDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDDDDDDDDDDDDDDADDDDDDDDDDDDDDDDDDDDAADDDDDDDDDDDDDDDD ,DDDDDDDD DDDDD ,DDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDD#
+D:#DDDDDDDDDDDDDD ,, AA ,DDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD , AAA,DDDDDDDDDDDDDDDDDAADDDDDDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDAAA,DDDDDDDDDDDAAAA ,DDDDDDD #
+D:#DDDDDDDDDDDDDDDDDDDDAA,DDDDDDDDDDDDDDDDDDDDAAAD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDDDDDDDDDDDD ,DDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:#DDDDD DDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDDDDDDD DDDDDDDDDDDDDD ,,DDDDDDDDDDD,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ,DDDD ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, #
+D:#DDDDDD D DDDDDDDD ,,AAA ,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,DDDDDDDDDDDDDD ,,DDDDDDDAAA,DDDDDDDDDDDDDD,DDDDDDDDDDDDDD , ,DDDDDDDDDDDDDD,DDDD#
+D:#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD #
+D:######################################################################################################################################################################################################
+
+# Default starting position
+?:[EQU $LEAVING_QUES 0]
+P:13:99
+
+# Starting position when coming from quest 12
+?:[EQU $LEAVING_QUES 12]
+P:26:109
+
+# Starting position when coming from quest 13
+?:[EQU $LEAVING_QUES 13]
+P:7:99
diff --git a/lib/edit/t_d_mina.txt b/lib/edit/t_d_mina.txt
new file mode 100644
index 00000000..49a32b04
--- /dev/null
+++ b/lib/edit/t_d_mina.txt
@@ -0,0 +1,91 @@
+# File: t_d_mina.txt
+
+# Minas Anor: The Royal City of Gondor (destroyed)
+# original town by Mynstral (mynstral@thehelm.com)
+#
+# screwing up by fearoffours (fearoffours@moppy.co.uk)
+#
+# Created for ToME
+
+# Completed: 23/07/02
+
+# Dead/burnt tree
+F:D:92:3
+
+# Ash
+F:A:93:3
+
+# Fire
+F:F:205:3
+
+# Permanent rubble
+F:R:206:3
+
+############### Town Layout ###############
+
+D:######################################################################################################################################################################################################
+D:#^^########------------------AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@@@@@@AAAAAAAAAAAAAAAAAAF@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^^----#####AF------##FF-------AAAAAAAAAAFFF^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@VVVVV@@AAAAAAAAAAAAAAFFF@@VVVVVVV@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF,,,AAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^^----------#R##---###F###-------AAAAAAAAF^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAA@VVVVVVV@@@@@AAAAAAAAAAFF@@VV@@@@@@VVVVVV@@@@AAAAAAAAADDDAAADDDAAAAAAAAAAAAAF,,AAAAAAAAAAAAAAAAAAAAAAAAFFF#
+D:#^^----ssss-----#R#--------###FF-----AAAAAAAA^^^^^^AAAAAAAAAAAAAAAAAAAAAAADDAAAAAAAAAAAAAFF@VVVVVV@@VVV@@@AAAAAAAAAA@VV@@AAAA@@@@@@VVVV@@AAAAAAAAADDDDDAAAAAAAAAAAAAFFF,,AAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^^---St-RF--------F--#ssss--###-------AAAAFF^^^^^^^^AAAAAAAAAAFFAAAAAAAAAAFFFAAAAAAAAAFFF@@VVVVVVVV@VVV@@@@@@@@F@@@V@@AAAAAAAAAA@@@@VV@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAA,AAAAAAAAAAAFFAAAAAAAAAAAAAAAA#
+D:#^^----sFss----OO---##--#StSS--FFF##F-----AAAAF^^^^^^^^AAAAAAAAAFFFAAAAAAAAAAAFFFAAAAAAAAFFF@@V@V,@@@@@@VVVVVVVV@@@VVV@AAAAAAAAAAAAAA@@VVVV@@AAAAAAAAAAAAAAAAAAAAAAAAA,,AAAAAAAAAAAFFADDDAAAAAAAAAAAA#
+D:#^^----##-#-----OOO--#---#s--RF----###------AAAA^^^^^^^^AAAAAAAAAAFFAAAAAAAAAAAAAAAAAAAAAAFFF@@@@@AAAAF@@@@@@@@VVVVV@@@AAAAAAAAAAAAAAF@@@@VV@@@AAAAAAAAAADDAAAAAAAAA,,,AAAAADDDAAAAAFFAAAAAAAAAAAAAAF#
+D:#^F---------------OO---#-####-#------AAAA----FFF^^^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@VVV@@AAAAAAAAAAAAAAAAA@@VVV@@AAAAAAAAAAAAAAAAAFFF,O,AAAAAAAAADDDDAAAAAAAFAAAAAAAAAAAF#
+D:#^FStSSSS-----ss---OO---##-----OOOOO---###----FFF^^^^^^^^^^^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@AAAAAAAAAAAAAAAAAFFF@@VVV@@AAAAAAAAAAAAAAAAAFFOOAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAFF#
+D:#^^ss-AFF----Ssss---AFO--#-F--R#O-O-OO---##----FFFAD^^^^^^^AAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@VVV@AAAAAAAAAAAAAAAAAFFOOAAAAAAAAAAAAAAAAAAAAAAAAAADDAAAAAAAFFF#
+D:#^F#-R###---sAFR--F--OOO--F#-OOOOOOO-OOO--##----AAAA^^^^^AAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF@@VVV@@AAAAAAAAAAAAAAAAAFOOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^^-------##sssSss---AAO--#OOO--s--OOOOO--###F--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@AAAAF@@VVV@@AAAAAAAAAAAAAAAAAFOOAAAAAAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAF#
+D:#^^^##RR##---##AFA--s--OOO-OOO--StS#-OOOO----#FF--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF@@VVVVVVVV@@@@@@@V@@@@AAAAAAAAAAAAAAAAAFOOAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAFF#
+D:#^AA^----###---##--ssS--OOO--##-ssss--OOOOOO--#R---AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAADDDDAAAAF@VVVVVVVVVVVV@@VV@@AAAAFFOOOAAAAAAAAAAAAAAOOAAAAAAAAAAAAAAAAAAFFAAAAAAAAAAAAAFFF#
+D:#^^--------#R-----ssSs#--AF#-#--#AFAF#-OOAAAO--##-AAAAAAAAAAAAAA----AAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFAAAAAAAAAAAAAAAAAAA@VVVV@@@@VVVVVVV@@AAAAFFOOOOOAAAAAAAAFOOOOOAAAAAAAAAAAAFAAAAAAAAAADDDAAAAAAAA#
+D:#^F-----------#--#s-RRF-OO-O--#---------OOOOOO--FF-----AAAAFFF--------AAAAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAAAADAAAAAAF@@VVV@@FF@@VVV@@@@AAAAFFFOOFFOOAAAAFFFOOAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAFF#
+D:#^^----AAA----R---###--OOOOOO-#--#sss#RF-OOOOOO,#FFFF---AAAAF---#-------AAAAAAAAAAAAAAAAAAAAAAAAFFAAAAAAAAAAAAAAAAAAFF@@VVV@@AAAA@@@@@AAAAAAAAFOO-FFFOOOOOOOOOAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAFFF#
+D:#^^-------------##-#-#-O#-OOO--#--ssssss----OOO,,,,,#----FF-AAssAF--R----AAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAADDDAAAAAAF@VVV@@AAAAAAAAAAAAAAFFF-ORAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFAAAAAAAF#
+D:#^^-------------R#---O-O-t-OOO-F#-#SS-##--OOOOOO,##,##--------sssssssAAA-#AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDDAAAAAA@VV@@AAAAAAAAAAAAAAFF--OO-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAF#
+D:#^^^-FAF--AA-----##-OOO-sssOOAA-#--ssssss-OOOOOO--#,#RR##-----SSR---SS-----AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAAAAAAA@@VV@AAAAAAAAAAAAAAFF--OR-AAAAAAAAAAAFFAAAAAAAADDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^^--AF----------#OOORA#-RFOOO-#--ss#sss--OAAOOOFFAAAF##FF---sFFFAFss--O---AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF@@VVV@AAAAAAAAAAAAAAFF-OO--AAAAAAAAAAAAAAAAAAAAAAAFFAAAAAFFFAAAAAAAAAAAAAAAAAAAAA#
+D:#^^--###--AAAA--AA--O-------OOAAA--####AAA-OOOOOO-##,###,,##--sssFAFAs--AAA-AAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAF@VVV@@AAAAAAAAAAAAAAF--O--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFAAAAAAAAAAAAAAAAF#
+D:#^^^-##AFA-------OOO#--SSStS---OAAAAA----AAAOOOO---#AAAAAAF#F-ssssR-#F--O-----AAAAAAAAAAAAAAAAAAAAAAAAAFFAAAAAAAFFF@@VV@@AAAAAAAAAAAAAAF--OR-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^-####R-------OOO-#--sssss-OOO-##---#s--OOOOO--T-#,--AAAAA--AFA##AA#--O---AA-AAAAAAAAAAAAAAAAAAAAFFAAAAAAAAAAAAFF@VVV@AAAAAAAAAAAAAAF--OO--AAAAAAAAAAFFAAAAAAAADDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^#######------OO--##-###R-AAAO-##-ssss---OOOO-TT-FAA-AAA,#----AAA,,,,,O------AAAAAAAAAAFFFAAAAAAAAAFFFFAAAAAAAAF@@VV@@AAAAAAAAAAAAAA--OO--AAAAAAAAAAAAAAAAAAAAADAFFAAAADDDAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^^###AFAF#----OOO--#---R---OOO--AAS#-R--OOOOAAAT-#---AA,,###----------O---AA--AAAAAAAAAFFAFAAAAAAAAAAFFFAAAAAAAA@VVV@@AAAAAAAAAAFFF--OO--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFAAAAAAAAAAAAAAAAAAFF#
+D:#^^#####R--####-OR---##-StSSS-AAO-#-sss-RFOOOOO--T-#F---,,##FF-s-ssAFF--O--------AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@VV@@AAAAAAAAAAFFF--ODR--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^^#########---OOOAAA#-sss-RF--O---ssss-AAOOOOO---FF,AAA#FF---SSSAFAFF-O--AAA-AA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@@VVV@AAAAAAAAAAFFF--ORO--AAAAAAAAAFAAAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAAFFFAAAAAAFFF#
+D:#^^###AAA###----OOO#--#-###A##OOO-#-##A#---OOOOOO--##FF#A#-----sR-ssss--O----------AAAAAAAAFFFAAAAAAAAAAAAAAAAAAAA@VVVV@@AAAAAAAAAAF---OOO--AAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAA#
+D:#^^^##R##-------OOO---#-#--^--OOO-#----#----OO--RROOFOOOOOOOO--####--R#-O-----------AAAAAAAAFFAAAAAAAAAAAAAAAAAFF@@VVV@@AAAAAAAAF-A----OO--AAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAFFFAAAAAAAAF#
+D:#^^######-##OOOROOO-^^^^^^^^-^MMM^^^^^^^^#^^^OOOOOO-ROOOO-ROOAOOOOOOOAAOO----AAA----AAAAAAAAAAFAAAAAAAAAAAAAAAA@@@VVV@@AAAAAAAAFA-AOOOOOO--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDFAAAAFFAFFFAAAAAAAAF#
+D:#^^####AFFAAOROOOO######A#####III##-#########^OOAAAOOOOOOO#OOOOOOOOOO#OOOOO-------AAAAAAAAAAAAAAAAAAAAAAAAAAAF@@VVVV@@AAAAAAAAF---OOOOOO--AAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^F######-##OOOO-##-####AA#AA#III#####-##--##^OOOOR-OOOOOOOOAAAOO-OOOOOOOOOO------A--AAAAAAAAAAAAAAAAAAAAAAAAA@VVVV@@AAAAAAAA----OOORRO----AAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^F###-A##-OOOOOOOO-^#^^^^^#A^MM#^^^^#^^#^^-#AFOOAFOOOOOR-OOOOAOOOOOOOOOOOOOOO--AA---AAAAAAAAAAAAAAAAAAAAAAAAA@VVV@@AAAAFFA--AD-OOOR-----AAAAAAAAAAFAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^^#######-----OOO---A-sAA#--OOO##--##-----R--OOOOOOOOOOOOOO-----------OOO-R-O----AAAAAAAAAAAAAAAAFFF---------##@VVVR##F--------OOOOO-----AAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFAAAAAAAAAA#
+D:#^^#########----OAO---#-sSss--OOO---ssss#--OOOOOO--##FF###---AA---ss-#-#O-OOOOO-AA--AAAAAAAAAAAAAAFFF--OOOO-----######R--------OOOOOO-----AAAAAAAAAAAAADDDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAF#
+D:#^^####R-AFA#---OOR--R--sts##-O-R-#-SSASS-OOOOOO---##F##AFF---------t-S-O-OOROO----AAAAAAAAAAAAAAFFF--OOOOOOOOOOOOO#OOOOROOOOOOOOOOO-AAA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFDDAAAAFFAAAAAAAAAAA#
+D:#^^###########--OOO--##-sSFR--OOO-R-s-#---AFOOO--TFF#F#,,,##F#--A-sssss-O--OOOOO---AAAAAAAAAAAAAAFF--ROOOOOOOOOOOOOOOOOOOOOOOOO#AOO-----AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFADDDAAAAAF#
+D:#^^#R--R--##----OOO--#--####-OOO--#-sssss-OOAOO-TT-#,,,,-AAFF-----sAAFA-R---OR-O---AAAAAAAAAAAAAAF--OOOAA-OOOOOOORAAO#OOOOOOOOOOO------AAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAF#
+D:#^^#######------O-R-##-------OO---#-###A#-OOOOO-TT-F#----AFF#F----###R--O-AAOOOOAA--AAAAAAAAAAFFF--OOOO---------#######------------A--AAAAAAAAAAAAAAAAAAAFAAAAADDAAAAAADDAAAAAAAAAAAAADDDAAAAAAAAAFFF#
+D:#^^-###R-#-AA---OOO-#--S-ss##OOO-#--------OOOOO--T-##-----AAA----A------A----OOOO----AAAAAAAAAAF--OOOA----DD---##@VVV@##-D-----A---AAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^^-###---------OO-#-#stss--OOO-#-ssssss--OR-RO---#,--AA,A#----sss-#s--O-----OOOO--A-AAAAAAAA---OOOO---AAAAAAAAF@VVV@@AAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAFFAAAAAAAAAA#
+D:#^^--####---------OOO--#s#s-OOO--FRStS##---OAFAOO-#FF-,,#F##----S--#AA--O------OOR-----AAAAFF--OOOOO----AAAAAAAAF@VVV@@AAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^---#AA--AA-----#OOO--##--OOO-###ssssss--OOOOOO-#,,,##FF#------RsAFA--O--A----OOR#----AAAA--OOOOO----AAAAAAAAAA@VVVV@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^^--#------AFF-R--AFAAA--OO----#-###A##-OOR-OO--#F####AAA-AA--ss#-ss-OO----D---OOOO----AA--OOOOO---FFFAAAAAAAAF@@VVV@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@@@AAAAAAAAAAAAAAAAAAAAFFF#
+D:#^^^-------------#---OOO---OOO--#F------##OOOOOO##AAAAF-AA--AA--#-##-AAA-R-AA-----R--A----OOOOOO-AA--AAAAAAAAAAFFF@@VVVV@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@@@@@AAAAAAAAAADDAAAAAAAAFFF#
+D:#^^----------AFFA-----AFAAOOO-----ss------OOR-O,,##FAAA--------AAA-----AAA--A--AAA-OOOOOOOOROO-----AAAAAAAAAAAAAAFF@@@VVVV@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@V@@@AAAAAAAAAAAADDDDAAAAFF#
+D:#^^^----AAAA-R-##-#ss--OOO#OO-##F-#Ss----OOOA-O,F#AAA---AAAAA-------AA-O--------F---OOO#OOOOO--AAAAFFFAAAAAAAAAAAAAAF@@VVVV@@AAAAAAAAAAAAAAAAAAAA@@@@@AAAAAAAAAA@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^^---------##---ss-s--OOOO----Fsst#DD-OOOOOO--#F-----F------ssss-s--OR---A--AAAA---OOOOO-A--AAFFAAAAAAAAAAAAAAAAAFFF@@VVVV@@@AAAAAAAAAAAAAAFF@@@VVV@@@AAAAAAAA@@@V@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^--------##R---sstss#--OOO-##FssS-#--OOO#OO--##F----AAAA-----#S--RR-OA-----AAAAFF----------AAAAAAAAAAAAAAAAAAAAAAAAAF@@@VVVV@@@@@AAAAAAAAF@@@@VVVVVVV@@FFF@@@@@V@@V@@@V@@AAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^-AAAA-###-----#Ss-R--OOOOO###sSs#--OOOOOO--##-----AAAAFF---ssssss--O-----AAAAAAAAAAA-AA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@VVVVVV@@@@@@@@@@@VVVVV@@@VVV@@@@@VVVV@@@@F@@@@AAAAAAAAAAAAAAAAAAAAAAAAFFF#
+D:#^^^######----#---#s#--OOO-OOO--Ss#--#OAA#---##-#AAAAAAAAAAA--##--##-OO--DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFF@@VVVVVVVVVVVVVVVVV@@@@@F@@@VVVVVVV@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAADDAAAAAF#
+D:#^^^-------ss-#S---#--OOO---AA#--#--OOOOR--#-------AAAAAAAAAA--------O-----AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF@@@@@@@@@@@@@@@@@@@AAAAFFF@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^-sssss-#sssts-----OOO--#--OOO---OOOOO---#AF-AAAAAAAAAAAAAAF------OO-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFF#
+D:#^^-SSStA--#sSAFs#--OOO--#----AOOOOOOAA--#-------AAAAFFAAAFFAAAFAA--O----AAAAADDAAAAAAAAAAAAAAAAAAAAAFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^-sFAF----#ss-R--OO----#--AF-OAOOO------------AAAAAAAAFAAAFFAA---O---AAAAAAADDDAAAAAFFFFAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAADDAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAFF#
+D:#^^^#####----##---OO--###--XXX-OOO----#-------AAAAAAAAAAAAAFAAAAFF---AAAAAAAAAAAAAAAAAAAAAAAADDAAAADDDFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAAAAAFAFFFAAAAAAAAAAAAAAAAFFFFFFFAAAAAAFFFAAAAAAAAAAAAAA#
+D:#^^^------------OOO--###--XXX#----FAFFA----AAAAAAAAADDDDAAFAAAFAAAAAAAAAAAADDDAAAAAAAAADDAAADDAAAAAFDDFAAAAAADDAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDDDAAAAAAAAAAAAAFFAFFAAAAAAAAFFFFAAAAAAAAAAFFF#
+D:#^^--SStSSAAA--OO-AAA#--XXAA#---#AFA-AAA-AAAAAAADDDDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAAFFFFAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAAAAAAAAAAAAFFAFFAAAAAAFFFFFADDAAAAADDDAAAAF#
+D:#^^^-sss-R----------#--###-----AF#-----AAAAAAAAADDDDAFAAFAAAFAAAFAAADDDAAAAAAAAAADDAAAAADDDAAAAAAAAAAAAAAAADDDAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAADDADDDAAAAAFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAA#
+D:#^^--####-------###--------###-#-#---AAAAAAAAAAAAAAAAAAFAAFAAFAAAAAADDDDAAAAAAAAAFFAAADDDAAAAAAFFAFFFFFAADDAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFF#
+D:#^^^----------##-----##-#-#-AFF---AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFAAAAAAAAAAAAAFFFFAAAAAAAAAAAAAAAAADDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFF#
+D:#^^^------##-#--##-###--#-------AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDDAAAAAAFFFFFAAAAAAAAAAAAAFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:#^^######-#-----------------AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF#
+D:######################################################################################################################################################################################################
diff --git a/lib/edit/t_gondol.txt b/lib/edit/t_gondol.txt
new file mode 100644
index 00000000..779c4fbb
--- /dev/null
+++ b/lib/edit/t_gondol.txt
@@ -0,0 +1,219 @@
+# File: Gondolin.txt
+
+# Gondolin: The Hidden Kingdom of the Noldor
+# Created by Akhronath (zzhou22876@aol.com)
+
+############### Additional default terrain settings ###############
+
+# Default for Quest 13 = entrance is mountain
+F:z:97:3
+
+# Default for Quest 14 = entrance is floor
+F:y:1:3
+
+# Default for Quest 15 = entrance is floor
+F:x:1:3
+
+# Default for Quest 23 = entrance is quest entrance
+F:w:8:3:0:0:0:0:0:23
+
+# Decoration = Straight Road (B)
+F:":66:3
+
+# Decoration = Straight Road (W)
+F:$:70:3
+
+# Rare jewelry shop -- unusable yet, need finish quest
+F:!:63:3
+
+# Between gate to minas anor -- unusable yet, need finish quest
+F:Z:63:3
+
+#################### Quest 13 - Eol the Dark Elf ####################
+
+# Quest 13 assigned, entrance is quest entrance
+?:[EQU $QUEST13 1]
+F:z:8:3:0:0:0:0:0:13
+
+?:1
+
+#################### Quest 14 - Nirnaeth Arnoediad ####################
+
+# Quest 14 assigned, entrance is quest entrance
+?:[EQU $QUEST14 1]
+F:y:8:3:0:0:0:0:0:14
+
+# Quest 14 finished, reward is a rare jewelry shop
+?:[EQU $QUEST14 5]
+F:!:74:3:0:0:0:0:0:42
+
+?:1
+
+#################### Quest 15 - Invasion of Gondolin ####################
+
+# Quest 15 assigned, entrance is quest entrance
+?:[EQU $QUEST15 1]
+F:x:8:3:0:0:0:0:0:15
+
+?:1
+
+#################### Quest 16 - The last Alliance ####################
+
+# Quest 16 finished, reward is a between gate
+?:[EQU $QUEST16 5]
+F:Z:176:3:0:0:0:0:0:1
+
+?:1
+
+############### Quest 23 - Wolves hut finished = house ###############
+?:[EQU $QUEST23 2]
+F:w:74:3:0:0:0:0:0:7
+?:[EQU $QUEST23 5]
+F:w:74:3:0:0:0:0:0:7
+?:1
+
+#################### Buildings ####################
+
+# h: Orange (Minstrel)
+# i: Red (Sorcery)
+# j: Green (Temple)
+# k: Violet (Chaos)
+# l: Dark Brown (Ranger)
+# m: White (Paladin)
+
+# Tower of the King
+F:a:74:3:0:0:0:0:0:27
+
+# Library
+F:b:74:3:0:0:0:0:0:28
+
+# Castle: Gondolin Plot
+F:B:75:3:0:0:0:0:0:4
+
+# The White Tree:Aerandir:High-Elf
+F:c:74:3:0:0:0:0:0:29
+
+# Craftsmaster
+F:d:74:3:0:0:0:0:0:30
+
+# Earth-Dome
+F:e:74:3:0:0:0:0:0:31
+
+# Prophet
+F:f:74:3:0:0:0:0:0:12
+
+# Minstrels Haven
+F:h:74:3:0:0:0:0:0:32
+
+# Star-Dome:Sulraen:High-Elf
+F:i:74:3:0:0:0:0:0:33
+
+# Valarin Temple
+F:j:74:3:0:0:0:0:0:34
+
+# Sea-Dome
+F:k:74:3:0:0:0:0:0:35
+
+# The Golden Flower
+F:l:74:3:0:0:0:0:0:36
+
+# The Fountain
+F:m:74:3:0:0:0:0:0:37
+
+# Thunderlord's Hide
+F:n:74:3:0:0:0:0:0:22
+
+# Merchant guild
+F:o:74:3:0:0:0:0:0:56
+
+# Force elven monsters
+f:ELVEN
+
+# Town Layout
+
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################^^^^^^^^^^^^^,,, ####
+D:####################################^^^^^^^^^^^^,,,, ####
+D:##################################^^^^^^^^,,,,,,,, ####
+D:###########B#####################^^^^^^^^^,,,,,, CCCCCCCCCCCCCCCCCCCCCCCCC ,,,,,,, ,,,,###
+D:################################^^^^^^^^^^^,,, CCCCCCCC#######################CCCCCCCC ,,,,,,,,,,, ,,,,,###
+D:###############################^^^^^^^^^^^^,, CCCCCCC########TTTTTTTT#####TTTTTTTT########CCCCCC ,,,,,^^^^^,,,, ,,,,###
+D:##############################^^^^^^^^^^^,,, CCCC########TTTTTT........###........TTTTTT########CCCC ,,,,^^^^^^^,,,,,, ,,,,,###
+D:#############################^^^^^^^n^^,,, CC###########T..........#########..........T###########CC ,,,,^^^^^^^^^^^^,,,,,,,,,,,###
+D:############################^^^^^^,,,,,, ......................... CC############T........#############........T############CC ,,,,^^^^^^^^^^^^^^,,,,,,,,,###
+D:############################,,,,,,,,, ......................... CC#############T.......###WW#####WW###.......T#############CC ,,,,^^^^^^^^^^^^^,,,,,,,,,###
+D:###########################,,,,,, ... . ... C#############TT.......#WWWW##h##WWWW#.......TT#############C ,,,,,^^^^^^^^^^^,,,,,,,,,###
+D:########################### ... . #### ... #### C#############T..........VV###.###VV..........T#############C ,,,,,,^^^^^^^,,, ,,,,,###
+D:########################## ... ##### ####5#### CC######WWWW###T...........V##...##V...........T####WWWW#####CC ######### ,,,,,,^^^^,,, ,,,,###
+D:########################## ######### ... ##### ####### C######TTTTWW#TT............#.....#............TT#WWTTTT######C ######### ,,,,,,,,,, ,,,,###
+D:####W###################W# ######### ... ##### ####### C#####l...TTW#T.................................T#WTT...T#####C ######### ,,,,,,,, ,,,,,,###
+D:####WWWW#############WWWW# ######### ... ##### ####### C######T...............................................T######C ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,###
+D:#####WWWWWWW#####WWWWWWW## ######### ... ##### ######### C######TTT.................TTTTTTTTT.................TTT######C , ,,,,,,,,,, ,,,,,,,,,###
+D:#####WWWWWWWWWWWWWWWWWWW## ####w#### ... ##### ######5###### CC#######WW..............TTTT#######TTTT..............WW#######CC , ### ,,,,,,,,,,,,,,,,###
+D:######WWWWWWWWWWWWWWWWW### . ... ##...## C##########............TTT#############TTT............##########C , ########## ,,, ,,,,,,,,###
+D:######WWWWWWWWWWWWWWWWW### ........... ... C########TT...........TT#################TT...........TT########C , ################### ,,,,,###
+D:######WWWWWWWWWWWWWWWWW### ... ... C#####TTTT...........TT###..###aaa###..###TT...........TTTT#####C , ############### ,,,,,,###
+D:########WWWWWWWWWWWWW###### ######### ... ############# ... C#TTTTT..............T##.....#!...Z#.....##T..............TTTTT#C , ############## ,,,,###
+D:###########WWWWWWW########## ######### ... ############# ... C#T...........###...TT##.....#.....#.....##TT...###...........T#C , ############## ,,,###
+D:############################### ######### ... ############# ... C#T.........####....T##......#.....#......##T....####.........T#C , ########### ,,,,###
+D:####--####KK#CC#VV#LL#""## ######### ... ############# ... CC#TT.......####.....T##...................##T.....####.......TT#CC , #### , ## ,,,###
+D:####--####KK#CC#VV#LL#""## ######### ... ######1###### ... C###T......####....TTT###.................###TTT....####......T###C , , VVVVV ,,,,###
+D:####--####KK#CC#VV#LL#""# ... . ... C###T......d###...TT###.###....#####....###.###TT...###b......T###C ,,,,,,,,,,,,,,, VVWWWVV ,,,###
+D:######################### ... . ... C###T......d###...T##.....##..##WWW##..##.....##T...###b......T###C , VVVWWWWWV ,,,,###
+D:#..............................................................................................####...T#.......#..#WV#VW#..#.......#T...####........... , VVVVWWWWWWWV ,,,,,###
+D:#.x.........y.....................................................................................................#W#V#W#..............................,,,, VWWWWWWWWWWV ,,,,###
+D:#..............................................................................................####...T#.......#..#WV#VW#..#.......#T...####........... , VVWWWWWWWVVV ,,,,,###
+D:######################### . ... . . C###T......c###...T##.....##..##WWW##..##.....##T...####......T###C , VWWWWWVVVV ,,,,,^^###
+D:####--####KK#CC#VV#LL#""# . ... . . C###T......####...TT###.###....#####....###.###TT...####....TTT###C , VVWWWVV ,,,,,,^^###
+D:####--####KK#CC#VV#LL#""## ####1#### ... ######2###### ##3## C###T..............TTT###.................###TTT....####...TT#####C , VVWWV ,,,,,,^^^^###
+D:####--####KK#CC#VV#LL#""### ######### ... ############# ##### CC#TT................T##...................##T.....####...TT#####CC , VVVV ,,,,,,^^^^^^###
+D:############################### ########1...... ############# ##### C#T.................T##......#.....#......##T....####....T######C , ------TT------------ ,,,,,^^^^^^^###
+D:###########$$$$$$$########## ######### ... ############# ##### C#T...VV...VV.......TT##.....##...##.....##TT...###.......f#####C ,------TT-TTT--TT-TT-TT---- ,,,,^^^^^^^^^###
+D:########$$$$$$$$$$$$$###### ######### ... ############# ##### C#T..VV#...#VV.......T####.#####m#####.####T..............f#####C -,--TTTTTTTTTTTTTTT-TT-TTT---,,,,^^^^^^^^^###
+D:######$$$$$$$$$$$$$$$$$### ... C#T..V###.###V.......TTT#################TTT.............T######C ---,--TT-TTT########TTT-TTTT----,,,,,^^^^^^^###
+D:######$$$$$$$$$$$$$$$$$### ... C#TT.V##4.j##V.........TTT#############TTT...............TT#####C----,---TTT###TTTTTT###TT-T-TT----,,,,,^^^^^^###
+D:######$$$$$$$$$$$$$$$$$$## ... C##T.V#######V...........TTTT#######TTTT..................TT####C----,--TTT##TTT----TTT##TTTTTT------,,,,,^^^^###
+D:#####$$$$$$$$$$$$$$$$$$$## ######### ... ############# CC#T.VV#####VV.............................................TTT#CC----,---TT#TT--------TT##T-T-TT------,,,,^^^^###
+D:#####$$$$$$$#####$$$$$$$## ######### ... ############# C#T..VV###VV.....TTTTTTTTTTT.......TTTTTTTTTTT..............T#C-----,,,,,,,,,,,,,,,,,,,e#TT-TTT------,,,,^^^^###
+D:####$$$$#############$$$$# ########o.........7############ C#T...VVVVV....TTT#########TTT...TTT#########TTT............T#C----------T#TT--------TT##TTT-------,,,,^^^^^^###
+D:####$###################$# ######### ... ############# C#TT..........TT###VVVVVV####TT.TT####WWWWWW###TT..........TT#C--------TTT##TTT----TTT##TTTTT-----,,,,^^^^^^^###
+D:########################## ######### ... ############# C##T..........T##VVV....VVV###TTT###WWW....WWW##T..........T##C-------TTTTT###TTTTTT###TTTTT-----,,,,,^^^^^^^###
+D:########################### ... CC#T..........T#VV........VV#######WW........WW#T..........T#CC -----TTTT-TTT########TTTTTT------,,,,,,,^^^^^###
+D:########################### #...# C#TT.......................i#####k.......................TT#C -T---TTTTT-TTTTTTTTTT-TT------ ,,,,,,,z^^^###
+D:############################ ##...## C##TT........T#VV........VV#######WW........WW#T........TT##C ------TTTT-TT--TT---T----- ,,,,,,,^^^^^^###
+D:############################ ####6#### CC##TT.......T##VVV....VVV#########WWW....WWW##T.......TT##CC ------TTT-TTTT--T----- ,,,,,,,^^^^^^^^^###
+D:############################# ####### CC##TTTT...TTT###VVVVVV#############WWWWWW###TTT...TTTT##CC ------T-------- ,,,,,,^^^^^^^^^^^^###
+D:############################## ##### CC####TTTTTTTTT###########################TTTTTTTTT####CC ,,,,,,^^^^^^^^^^^^^^###
+D:############################### ##### CCCC######TTTTTTTTTTT##############TTTTTTTTTT######CCCC ,,,,,,^^^^^^^^^^^^^^^^^###
+D:################################ ##### CCCCCC#####################################CCCCCC ,,,,,,,,,,^^^^^^^^^^^^^^^^^###
+D:################################# ##### CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ,,,,,,,,,,^^^^^^^^^^^^^^^^^^####
+D:################################## ####### ,,,,,,,,,,,^^^^^^^^^^^^^^^^^^^^^####
+D:#################################### ######### ,,,,,,,,,,,,,^^^^^^^^^^^^^^^^^^^######
+D:###################################### ############# ,,,,,,,,,,,,,,,^^^^^^^^^^^^^^^^^^########
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+D:######################################################################################################################################################################################################
+
+# Default starting position
+?:[EQU $LEAVING_QUEST 0]
+P:33:50
+
+# Starting position when coming from quest 19
+?:[EQU $LEAVING_QUEST 19]
+P:51:190
+
+# Starting position when coming from quest 20
+?:[EQU $LEAVING_QUEST 20]
+P:33:13
+
+# Starting position when coming from quest 21
+?:[EQU $LEAVING_QUEST 21]
+P:27:168
+
+# Starting position when coming from quest 22
+?:[EQU $LEAVING_QUEST 22]
+P:6:42
diff --git a/lib/edit/t_info.txt b/lib/edit/t_info.txt
new file mode 100644
index 00000000..7aca3781
--- /dev/null
+++ b/lib/edit/t_info.txt
@@ -0,0 +1,41 @@
+# File: t_info.txt
+
+# Includes the town definitions
+
+# Preferences for the town features
+%:t_pref.txt
+
+# Town Bree
+?:[AND [EQU $TOWN 1] [EQU $TOWN_DESTROY1 1] ]
+%:t_d_bree.txt
+?:[AND [EQU $TOWN 1] [NOT [EQU $TOWN_DESTROY1 1] ] ]
+%:t_bree.txt
+?:1
+
+# Town Gondor
+?:[AND [EQU $TOWN 2] [EQU $TOWN_DESTROY2 1] ]
+%:t_d_gond.txt
+?:[AND [EQU $TOWN 2] [NOT [EQU $TOWN_DESTROY2 1] ] ]
+%:t_gondol.txt
+?:1
+
+# Minas Anor
+?:[AND [EQU $TOWN 3] [EQU $TOWN_DESTROY3 1] ]
+%:t_d_mina.txt
+?:[AND [EQU $TOWN 3] [NOT [EQU $TOWN_DESTROY3 1] ] ]
+%:t_minas.txt
+?:1
+
+# Town Lothlorien
+?:[AND [EQU $TOWN 4] [EQU $TOWN_DESTROY4 1] ]
+%:t_d_lori.txt
+?:[AND [EQU $TOWN 4] [NOT [EQU $TOWN_DESTROY4 1] ] ]
+%:t_lorien.txt
+?:1
+
+# Khazad-Dum
+?:[AND [EQU $TOWN 5] [EQU $TOWN_DESTROY5 1] ]
+%:t_d_khaz.txt
+?:[AND [EQU $TOWN 5] [NOT [EQU $TOWN_DESTROY5 1] ] ]
+%:t_khazad.txt
+?:1
diff --git a/lib/edit/t_khazad.txt b/lib/edit/t_khazad.txt
new file mode 100644
index 00000000..0139fa40
--- /dev/null
+++ b/lib/edit/t_khazad.txt
@@ -0,0 +1,105 @@
+# Town Name: Khazad-Dum
+# by fearoffours (fearoffours@moppy.co.uk)
+#
+# Created for ToME
+
+F:o:207:3
+
+###################### Buildings ########################
+
+# Fighters Hall
+F:f:74:3:0:0:0:0:0:17
+
+# Paladins Guild
+F:g:74:3:0:0:0:0:0:20
+
+# Inner Temple
+F:h:74:3:0:0:0:0:0:19
+
+# Mining Supplies
+F:i:74:3:0:0:0:0:0:59
+
+# Default for Quest 25 = entrance is quest entrance
+F:w:8:3:0:0:0:0:0:25
+
+# Force dwarven monsters
+f:DWARVEN
+
+############### Quest 25 - Evil cave finished = house ###############
+?:[EQU $QUEST25 2]
+F:w:74:3:0:0:0:0:0:7
+?:[EQU $QUEST25 5]
+F:w:74:3:0:0:0:0:0:7
+?:1
+
+# Town Layout
+D:######################################################################################################################################################################################################
+D:#ooooooooooooo####^^^^^^^^^#######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#####oooo#######oo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^##########oooooooooo CCCCCCC #
+D:#ooo##ooooooooo#####^^^^^##########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^########ooo########ooo##########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^################oooooooooooo CCCCCCCC #
+D:##oo###oo####oo##############################^^^^^^^^^^^^^^^^^########################oooo#########oo#### ###########^^^^^^^^^^^^^^^^^^^^^^^^####### #######oooo########## CCCCCCCC #
+D:##############o#########oo###oo###################^^^^^^^############################oooo#########oo###### ################################# #####ooooooooo############# CCCCCCCC ; #
+D:#^^^^########oooooooooooooo##ooooooooo############################# #################oooo########oo########### ########################## ######ooooooooo################ CCCCCCCC ; #
+D:#############ooooooooooooooooooooooooooo###### ###########1###### ##############2####oooo#######o##o##3####f##### ##g####4####h###### ###########ooo######################## CCCCCCCC ; #
+D:#^#############ooooo##################oo### # #### # ##### #### ############### ###ooo########ooo## ## ###### # ## ## ## # #######ooooo########################### CCCCCCCC #
+D:#^^################oo#################ooooo#### ## ; ;; o ; o ## # ooooooooo############################ CCCCCCCC #
+D:#^^^^################o##########o#####oooooooooooooooooooooo o o ; oooooooooooooooooooooooo##ooo############################ CCCCCCC #
+D:#^^^^^^################################# ## ; o ; ; o o ; o ##o################################### CCCCCCC#
+D:#^^^^^^################################ ### o ### o ### o ###; o ### ######################################## CCCCCC#
+D:#^^^^^################################# ##### o ##### o ##### o ##### o ##### ######################################## CCCCCC#
+D:#^^^^^^^################################ #######;; o ####### o ####### o ####### o ####### ####################################### ; CCCCCC#
+D:#^^^^^^^^################################ # ####### o ; ####### o ####### o ####### o ####### ######################################## CCCCCC #
+D:#^^^^^^^################################### ##### o ; ;##### o ##### o ##### ; o ##### ;####################################### CCCCCCC #
+D:#^^^^^^^^^################################ ### o ### o ### o ### o ### # #################################### CCCCCC ; #
+D:#^^^^^^^^^################################# o o o o ## ################################## CCCCCC #
+D:#^^^^^^^^^^################################ ; oooooooooooo o o oooooooooooo 5################################ CCCCCC ; #
+D:#^^^^^^^^^^^^^########################### o o o o ################################# CCCCCCC #
+D:#^^^^^^^^^^^^^^^########################## ### o ### o o ;### o ### ################################ CCCCCCC ; #
+D:#^^^^^^^^^^^^############################# ##### ; o ##### o o ##### o ##### ; ###############################; CCCCCCC ; #
+D:#^^^^^^^^^############################### ; ####### o ####### o ; o ####### o ####### ############################ CCCCCCC #
+D:#^######################################### ; ####### oooooooo ####### o o ####### oooooo ####### o ; ##############################; CCCCCCC #
+D:#################ooo###################### ; ##### o ##### o o ##### o ##### ###############oo############## CCCCC; #
+D:####oo##ooo#####o#######o###ooo########### ### ; o ### o o ### o ; ### ; ;; #########oo###oooooo#####oo###### CCCCC ; #
+D:#ooooooooooooooooooooooooooooooo##oooooooo ; o ; o o o ; ;; ; oooooooooooo##oooooooo##oooooooooo CCCCC ; #
+D:#ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo CCCCCC #
+D:#oooooooooooooooooo##oooooo##oooooo##ooooo ; o o ; ooooooooo#oooooooooooooooooooooooo CCCCC #
+D:#^#######################oo####ooooo####### ### ### o o ###; ### ######o####oo####oo######oo######; CCCCC #
+D:#^^#######################o########### ##### ##### o o ##### ##### ######o####################oo#### CCCCC #
+D:#^####################################### #######;; ; ####### o o ####### ####### ####oo######################### CCCCCC #
+D:#^^######################################## ####### ; ####### o o ####### ####### ######o############oo########## CCCCCCC #
+D:#^^^###############ooo################### ##### ; ;##### o o ##### ; ##### ;; ######oo########ooooo####### CCCCCCCC #
+D:#####oo##oo#####oooooooo##############oo## ### ; ### o o ### ### ########oooo##oooooo####### CCCCCCCCC ; #
+D:#ooooooooooo###ooooooooooooooooooooooooooo o o ooooooooooooooooooooooooooo CCCCCCCC #
+D:#oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo CCCCCCCC ; #
+D:#^ooooooooooooooooo###oooooooooo##oooooooo o o o o ooooooo####ooooooooooooo CCCCCCCC #
+D:#^^#o###ooo#####ooo#####ooooo########oo# ### ; o ### o o ;### o ### oo#########ooooo###oo# CCCCCCCC ; #
+D:#^^^^^###o################oo############# ##### ; o ##### o o ##### o ##### ; ###########oo######## CCCCCCCC ; #
+D:#^^^^^^^################################## ; ####### ooooooo ####### o ; o ####### ooooo ####### ######################## CCCCCCCCC #
+D:#^^^^^^^^^^############################## ; ####### o ; ####### o o ####### o ####### o ; ########################## CCCCCCCC #
+D:#^^^^^^^^^^^^^^^######################### ; ##### o ##### o o ##### o ##### ############################ CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^################### ### ; o ### o o ### o ; ### ; ;; ############################ CCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^#################### ; o ;; o ; o o ; ############################ CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^###################### ooooooooooo o o oooooooooooo ;; ; 7########################### CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^^^^################# ; o ; ; o o ; o ############################# CCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^############## ### o ### o ### o ###; o ### ############################# CCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^############ ##### o ##### o ##### o ##### o ##### ######################## CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^^########## #######;; ; o ####### o ####### o ####### o ####### ########################### CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^^#########i ####### o ; ####### o ####### o ####### o ####### ############################ CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^^^########### ##### o ; ;##### o ##### o ##### ; o ##### ; ############################## CCCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^^^^^^############## ### ; o ### o ### o ### o ### ############################## CCCCCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^^^^^^################# o o o o #########oo###oo################# CCCCCCCCCC #
+D:#^^^^^^^^^^^^^^^^^^#############o#######oooooooooooooooooooooo ## o o oooooooooooooooooooooooooooooooooooo################## CCCCCCCC ; #
+D:#^^^^^^^^^^^^^^^^^############ooooooooooo# ### ## ######## o o ## o ## ## oooooo##oooooooooo################### CCCCCCC #
+D:#^^^^^^^^^^^#################ooooooooooo#### ###### ### #### ############# ####oooo###### #ooo# ### ###### # ### ## ##### ####################ooo##################### CCCCCCC #
+D:#^^^^^^^^^^###################oo######oo### ########### #######9####################oooo########oooo############w### ######## ###### ####################oo###################### CCCCCCC #
+D:#^^^^^^^##########oo####oo####ooo######### ############# ##############^^^##########ooooo########oo###################################### #########^######oooo##ooo################## CCCCCCC #
+D:##^^^^^#########oooooooooooooooo#################^^####### ###########^^^^^###########ooooo######ooo####################################### #####^^^#######ooooooooooooo############# ; CCCCCCC#
+D:#^^^##########ooooooooooo##ooooo######^#########^^^^##################^^^^^^^^^^^######ooo#######oooo#########^^^^^^^^^^^^^^^^^^^########### #####^^^#######oo##oooooooo############# CCCCCC#
+D:##############ooooo##########oo######^^^#####^^^^^^^^###############^^^^^^^^^^^^^^#####oooo#######ooo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^###### ####^^^^^###############ooo############## CCCCC#
+D:########ooo#####oo##################^^^^^^^^^^^^^^^^^#############^^^^^^^^^^^^^^^^^####oo########oooo#####^^^^^^^^^^^^^^^^^^^^^^^^^^^########### #######^^^^^#############ooo#ooo######## CCCCCC#
+D:#o##oooooooooooooooo##############^^^^^^^^^^^^^^^^^^^^^^#########^^^^^^^^^^^^^^^^^^#####oo########oo######^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^####### # ######^^^^^^^^^^^^########oooooooooooooo CCCCC #
+D:#oooooooooooooooooo########^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^########oooo#######ooooo###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^##############^^^^^^^^^^^^^^^#######ooooooooooo CCCCC #
+D:######################################################################################################################################################################################################
+
+# Default starting position
+# ?:[EQU $LEAVING_QUES 0]
+# P:31:32
diff --git a/lib/edit/t_lorien.txt b/lib/edit/t_lorien.txt
new file mode 100644
index 00000000..9c8c8ad3
--- /dev/null
+++ b/lib/edit/t_lorien.txt
@@ -0,0 +1,162 @@
+# Town Name: Lothlorien
+# by Akhronath (zzhou22876@aol.com)
+#
+# Created for PernAngband
+
+# Default for Mage/Fireproof Quest = entrance is tree
+F:z:96:3
+
+# Default for Quest 10 = entrance is tree
+F:y:96:3
+
+# Default for Quest 11 = entrance is tree
+F:x:96:3
+
+# Default for entrance to the Void, entrance is dirt
+F:v:88:3
+
+# Default for Quest 22 = entrance is quest entrance
+F:w:8:3:0:0:0:0:0:22
+
+############### Quest 22 - Wolves hut finished = house ###############
+?:[EQU $QUEST22 2]
+F:w:74:3:0:0:0:0:0:7
+?:[EQU $QUEST22 5]
+F:w:74:3:0:0:0:0:0:7
+?:1
+
+############### Entrance to the Void ###############
+?:[EQU $QUEST20 1]
+F:v:7:3:0:0:0:0:0:11
+?:1
+
+############### Quest 10 - Spiders of Mirkwood ###############
+# Quest 10 taken, entrance is quest entrance
+?:[EQU $QUEST10 1]
+F:y:8:3:0:0:0:0:0:10
+?:1
+
+############### Quest - Mage/Fireroof quest ###############
+# Mage/Fireproof Quest taken, entrance is quest entrance
+?:[EQU $QUEST"Old Mages quest" 1]
+F:z:8:3:0:0:0:0:0:"Old Mages quest"
+?:1
+
+###################### Buildings ########################
+
+# The Mirror
+F:a:74:3:0:0:0:0:0:23
+
+# Castle: Plot Lorien
+F:B:75:3:0:0:0:0:0:2
+
+# Seat of Ruling
+F:b:74:3:0:0:0:0:0:24
+
+# Inn
+F:c:74:3:0:0:0:0:0:11
+
+# Beastmaster Shanty
+F:d:74:3:0:0:0:0:0:16
+
+# Fighters Hall
+F:f:74:3:0:0:0:0:0:17
+
+# Wizards Spire
+F:g:74:3:0:0:0:0:0:25
+
+# Priests Circle
+F:h:74:3:0:0:0:0:0:26
+
+# Rangers Guild allows Ranger
+F:i:74:3:0:0:0:0:0:21
+
+# Nest
+F:j:74:3:0:0:0:0:0:22
+
+# Altars
+F:k:161:3
+F:l:162:3
+F:m:163:3
+F:n:165:3
+
+# Force elven monsters
+f:ELVEN
+
+# Town Layout
+D:######################################################################################################################################################################################################
+D:# , , , . , , ,, , , , #
+D:# , , . , #
+D:# , , . #
+D:# , , ,, , . , , , #
+D:# ,, , , , ,, , , , , , #
+D:# , , , , , , , , #
+D:# , , , ,x , , #
+D:# , , , , #
+D:# ,, , , , ,, , , , #
+D:# , , , , #
+D:# , , , , , , ,, , , , #
+D:# , , , , #
+D:# , , z,,,, ## , ## #
+D:# , , , #### , #### , #
+D:# , , , ### ###1,,,,,h### #
+D:# , , ### , #####, ####, , #### , , , #
+D:# ,, , ##### , ##### ## , ## , ,, , , , , , #
+D:# , , , ##### , ,##.## ### ## , ## , , #
+D:# , , # #, ##### , ##.## ######### , #### , , #
+D:# ,, , ### ### #g# , . ########c,,,,,4### ,, , , , #
+D:# , #### , #### , , , ,, ######### , #### , , , #
+D:# ,, , ############## ,,,,, , #9# ## , ## , ,, , , , , , #
+D:# , , , ############## , , , , , ## , , #
+D:# , , ###########j,,,,,,,,,,,,,, , , , #### , , #
+D:# , , #####B######## , ,,,,,,,,,,,,,,,,,,,,,,,,d### y , #
+D:# , , ############## , , , #### ,, , , ,, , , , #
+D:# , ,#### #### , , ## , , #
+D:# , , ### ### #6# ### ### , , ### ### #
+D:# , , # #, ##### ### ### , ,,, ########## , , #
+D:# ##### #7# #i# ,,,,,,,, ########## , , , #
+D:# ,, , ### , , , , , , #3# ### , , , #
+D:# , , , , ,, , , , , ## , #
+D:# , , ,,, ,,,,,,,,,,,,, ,,, , , , , #### ,, , , , #
+D:# , , , ,,,, ,,,,b,,,,,,,,,,,,,,,,,,,w### , #
+D:# , , v, ,,, , #### #
+D:# , , --,-- ,, , VVV , ## , , , #
+D:# ,, , l----,----m , VWWWV #2# ,, , , , , , #
+D:# , , , ---VV,VV--- , VWWVV , ##### , #
+D:# , , ---VVW,WVV--- , VVVV ##### , #
+D:# , , , ---VWWaWVV--- ,, ### , ,, , , , #
+D:# ---VVWWWVV--- ,,, , , , #
+D:# ,, , ---VVVVV--- ,,,,,,,,,,,,,,, , ,, , , , #
+D:# n---------k , , , , , #
+D:# , , --- , #5# , #
+D:# , , , ### #
+D:# , , , , ### , , , #
+D:# ,, , #0# , ,, , , , , , #
+D:# , , , , , ##### , , #
+D:# , , , ##### , , #
+D:# ### , , , #
+D:# ,, , , ,, , , , #
+D:# , , , #
+D:# , , , , , ,, , , , #
+D:# , , ,, , , , , #
+D:# ,, , , ,, , , , , , #
+D:# , , , , , , , #
+D:# , , , , , #
+D:# , , , #
+D:# ,, , , ,, , , , #
+D:# , , , #
+D:# , , #
+D:# , , ,, , , , , #
+D:# ,, , , ,, , , , , , #
+D:# #
+D:######################################################################################################################################################################################################
+
+# Default starting position
+?:[EQU $LEAVING_QUES 0]
+P:13:99
+
+# Starting position when coming from quest 12
+?:[EQU $LEAVING_QUES 12]
+P:26:109
+
+
diff --git a/lib/edit/t_minas.txt b/lib/edit/t_minas.txt
new file mode 100644
index 00000000..51c74da3
--- /dev/null
+++ b/lib/edit/t_minas.txt
@@ -0,0 +1,144 @@
+# File: t_minas.txt
+
+# Minas Anor: The Royal City of Gondor
+# Created by Mynstral (mynstral@thehelm.com)
+
+# Completed: 22/06/01
+
+# Between gate to gondolin -- need to finish the quest
+F:Z:63:3
+
+# Default for Quest 24 = entrance is quest entrance
+F:w:8:3:0:0:0:0:0:24
+
+#################### Quest 16 - The last Alliance ####################
+
+# Quest 16 finished, reward is a between gate
+?:[EQU $QUEST16 5]
+F:Z:176:3:0:0:0:0:0:0
+
+?:1
+
+############### Quest 24 - Haunted House finished = house ###############
+?:[EQU $QUEST24 2]
+F:w:74:3:0:0:0:0:0:7
+?:[EQU $QUEST24 5]
+F:w:74:3:0:0:0:0:0:7
+?:1
+
+#################### Buildings ####################
+
+# Library
+F:a:74:3:0:0:0:0:0:60
+
+# Castle
+F:b:74:3:0:0:0:0:0:14
+
+# Casino
+F:d:74:3:0:0:0:0:0:15
+
+# Inn
+F:e:74:3:0:0:0:0:0:11
+
+# Beastmaster Shanty
+F:f:74:3:0:0:0:0:0:16
+
+# Fighters hall
+F:g:74:3:0:0:0:0:0:17
+
+# Tower of Magery
+F:h:74:3:0:0:0:0:0:18
+
+# Inner temple
+F:i:74:3:0:0:0:0:0:19
+
+# Paladin guild
+F:j:74:3:0:0:0:0:0:20
+
+# Ranger guild
+F:k:74:3:0:0:0:0:0:21
+
+# Thunderlord's Hide
+F:l:74:3:0:0:0:0:0:22
+
+# Castle: Plot Minas Anor
+F:B:75:3:0:0:0:0:0:5
+
+# Merchant guild
+F:m:74:3:0:0:0:0:0:56
+
+# Library Quest
+F:x:63:3
+
+?:[EQU $QUEST"Library quest" 1]
+F:x:8:3:0:0:0:0:0:"Library quest"
+?:1
+
+############### Town Layout ###############
+
+D:######################################################################################################################################################################################################
+D:#^^########------------------ @@@@@@@ @@@@@@@@@ #
+D:#^^^------############---------- ^ @@VVVVV@@ @@VVVVVVV@@@@@@@ ,,, #
+D:#^^^----------###----#######------- ^^^^^ @VVVVVVV@@@@@ @@VV@@@@@@VVVVVV@@@@ ,, #
+D:#^^----ssss-----###--------####------ ^^^^^^ @VVVVVV@@VVV@@@ @VV@@ @@@@@@VVVV@@ ,, #
+D:#^^^---StSS-------###--#ssss--###------- ^^^^^^^^ @@VVVVVVVV@VVV@@@@@@@@ @@@V@@ @@@@VV@@@@ , #
+D:#^^----ssss----OO---##--#StSS---####------ ^^^^^^^^ @@V@V,@@@@@@VVVVVVVV@@@VVV@ @@VVVV@@ ,, #
+D:#^^----x#a#-----OOO--##--#sssss----###------ ^^^^^^^^ @@@@@ @@@@@@@@VVVVV@@@ @@@@VV@@@ ,,, #
+D:#^ ---------------OO--###-#m#7#------###----- ^^^^^^^^^^ @VVV@@ @@VVV@@ ,O, #
+D:#^ StSSSS-----ss---OO---##-----OOOOO---###---- ^^^^^^^^^^^ @@@ @@VVV@@ OO #
+D:#^^ssssss----Ssss---OOO--##---OOOOOOOO---##---- ^l^^^^^^^ @@VVV@ OO #
+D:#^ ####9#---sstSss---OOO--##-OOOOOOOOOOO--##---- ^^^^^ @@VVV@@ OO #
+D:#^^^-------##sssSss---OOO--#OOO--s--OOOOO--###--- @@@@@@@@@@ @@VVV@@ OO #
+D:#^^^######---##ssh--s--OOO-OOO--StS--OOOOO---##--- @@VVVVVVVV@@@@@@@V@@@@ OO #
+D:#^^^^----###---##--ssS--OOOOO#--ssss--OOOOOO--##--- @VVVVVVVVVVVV@@VV@@ OOO OO #
+D:#^^--------###----ssSs#--OOO-##-#####--OOOOOO--##--- ---- @VVVV@@@@VVVVVVV@@ OOOOO OOOOO #
+D:#^ ----------##--#stsi--OOOO--#---------OOOOOO--#------ -------- @@VVV@@ @@VVV@@@@ OO OO OO #
+D:#^^-----------###-#s#--OOOOOO-##-#sssss--OOOOOO,#####--- ----------- @@VVV@@ @@@@@ OO- OOOOOOOOO #
+D:#^^-------------##-#--OOO-OOO--#--ssssss--OOOOO,,,,,#---- ---ssssssss--- @VVV@@ -OO #
+D:#^^--------------#---OOO-t-OOO-##-#SStSS--OOOOOO,##,#---------ssssssss---- @VV@@ --OO- #
+D:#^^^--#----------##-OOO-sssOOO--#--ssssss-OOOOOO--#,#####-----SStSSSSS----- @@VV@ --OO- #
+D:#^^^--#-----------#OOO-##4##OOO-##-ssssss--OOOOOO-#,,######---ssssssss--O--- @@VVV@ -OO-- #
+D:#^^--###----------OOO-------OOO--#-####2#--OOOOOO-##,#k#,,##--ssssssss--O---- @VVV@@ --O-- #
+D:#^^^-###---------OOO#--SSStS-OOO-#---------OOOOO---#,,,,,,,#--ssssssss--O----- @@VV@@ --OO- #
+D:#^^-#####-------OOO-#--sssss-OOO-#--ssss--OOOOO--T-#,-----,#--#####d##--O------ @VVV@ --OO-- #
+D:#^^#######------OOO-##-###j#-OOO-##-ssss--OOOOO-TT-#------,#-------,,,,,O------ @@VV@@ --OO-- #
+D:#^^^########----OOO--#-------OOO--#-StSS--OOOOO-TT-#-----,,#------------O------- @VVV@@ --OO-- #
+D:#^^############-OOO--##-StSSS-OOO-#-ssss--OOOOO--T-#----,,##---ssssssss-O-------- @@VV@@ --OOO-- #
+D:#^^^#########---OOO---#-sssss-OOO-#-ssss--OOOOOO---#,,,,,##----SSSSStSS-O--------- @@@VVV@ --OOO-- #
+D:#^^#####B###----OOO---#-###6#-OOO-#-##g#---OOOOOO--#######-----ssssssss-O---------- @VVVV@@ ---OOO-- #
+D:#^^^#######-----OOO---#-------OOO-#---------OOOOOOOOOOOOOOOOO--###e####-O----------- @@VVV@@ ------OO-- #
+D:#^^#######bOOOOOOOO-^^^^^^^^^^MMM^^^^^^^^^^^^OOOOOOOOOOOOOOOOOOOOOOOOOOOO----------- @@@VVV@@ ---OOOOOO-- #
+D:#^^#######bOOOOOOO############III############^OOOOOOOOOOOOOOOOOOOOOOOOOOOOO--------- @@VVVV@@ ---OOOOOO-- #
+D:#^ #######bOOOOOOO############III############^OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO--------- @VVVV@@ ----OOOOOO---- #
+D:#^ #######bOOOOOOOO-^^^^^^^^^^MMM^^^^^^^^^^^^OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO------- @VVV@@ ------OOOO------ #
+D:#^^^######Z-----OOO---#-sSss--OOO-#---------OOOOOOOOOOOOOOOOO-----------OOOOOOO------ ---------##@VVV@## --------OOOOO----- #
+D:#^^#########----OOO---#-sSss--OOO-#-sssss--OOOOOO--#######--------sssss-O-OOOOO----- --OOOO-----#######--------OOOOOO----- #
+D:#^^##########---OOO---#-stss--OOO-#-SStSS-OOOOOO---####,,##-------SStSS-O-OOOOO---- --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO----- #
+D:#^^############-OOO--##-sSss--OOO-#-sssss-OOOOO--T-##k#,,,##------sssss-O--OOOOO--- --OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO----- #
+D:#^^#########----OOO--#--####-OOO--#-sssss-OOOOO-TT-#,,,,-,,#------sssss-O---OOOO--- --OOOOO-OOOOOOOOOOOOOOOOOOOOOOO------- #
+D:#^^#######------OOO-##-------OOO-##-###3#-OOOOO-TT-#,-----,#------###0#-O---OOOOO--- --OOOO---------#######--------------- #
+D:#^^-#####-------OOO-#--Ssss--OOO-#--------OOOOO--T-#,-----,#------------O----OOOO---- --OOOO---------##@VVV@##----------- #
+D:#^^^-###---------OOO#-#stss--OOO-#-ssssss--OOOOO---#,----,,#----ssssss--O-----OOOO---- ---OOOO--- @VVV@@ #
+D:#^^--###----------OOO--#sSs-OOO--#-StSSSS--OOOOOO-##,-,,,,##----SStSSS--O------OOOO---- --OOOOO---- @VVV@@ #
+D:#^^---#-----------#OOO--###-OOO-##-ssssss--OOOOOO-#,,,,####-----ssssss--O-------OOOO---- --OOOOO---- @VVVV@ #
+D:#^^^--#----------##-OOO----OOO--#--###5##-OOOOOO--#,#####-------ssssss-OO--------OOOO--------OOOOO---- @@VVV@@@ @@@@ #
+D:#^^^-------------#---OOO---OOO-##---------OOOOOO,##,#-----------####1#-O----------OOOO----OOOOOO----- @@VVVV@@@ @@@@@@ #
+D:#^^-------------##----OOO-OOO--#--ss------OOOOO,,,,,#------------------O-----------OOOOOOOOOOO----- @@@VVVV@@ @@@@@@@@@V@@@ #
+D:#^^^----------###--ss--OOOOOO-##-ssSs----OOOOOO,#####------------------O-------- ---OOOOOOOOO--- @@VVVV@@ @@@@@ @@@@@@@@@@@@@ #
+D:#^^^---------##---ssSs--OOOO--#--ssts#--OOOOOO--#------ ------ssssss--OO------ ---OOOOO----- @@VVVV@@@ @@@VVV@@@ @@@V@@@@@@@@ #
+D:#^^--------###---sstss#--OOO-##-ssSs#--OOOOOO--##----- ----StSSSS--O------ ----------- @@@VVVV@@@@@ @@@@VVVVVVV@@ @@@@@V@@V@@@V@@ #
+D:#^^------###-----#Sss#--OOOOO#--sSsf--OOOOOO--##----- ---ssssss--O----- ------- @@@VVVVVV@@@@@@@@@@@VVVVV@@@VVV@@@@@VVVV@@@@ @@@@ #
+D:#^^^######---ss---#s#--OOO-OOO--Ss#--OOOOO---##----- --###w##-OO----- @@VVVVVVVVVVVVVVVVV@@@@@ @@@VVVVVVV@@@@ #
+D:#^^^-------ssssS---#--OOO--#OOO--#--OOOOO--###----- --------O----- @@@@@@@@@@@@@@@@@@@ @@@@@@@@@ #
+D:#^^-sssss-#ssstss----OOO--##-OOO---OOOOO--##------ ------OO---- #
+D:#^^-SSStS--#sSsss#--OOO--##---OOOOOOOO---##------ ----O---- #
+D:#^^-sssss---#ss##--OO---##--X--OOOOO---###------ ---O--- #
+D:#^^^#####----##---OO--###--XXX-OOO---###------ --- #
+D:#^^^------------OOO--##---XXX#-----###----- #
+D:#^^--SStSS-----OO---##--XX###---####----- #
+D:#^^^-sssss--------###--###----###------ #
+D:#^^--#####------###--------####------ #
+D:#^^^----------###----#######------ #
+D:#^^^------############---------- #
+D:#^^########----------------- #
+D:######################################################################################################################################################################################################
diff --git a/lib/edit/t_pref.txt b/lib/edit/t_pref.txt
new file mode 100644
index 00000000..84ff947d
--- /dev/null
+++ b/lib/edit/t_pref.txt
@@ -0,0 +1,111 @@
+# File: t_pref.txt
+
+# Defines the preferences for the town features
+# letter:feature:cave_info:monster:object:ego:artifact:trap:special
+
+# Barrow-Downs entrance
+F:{:7:3:0:0:0:0:0:4
+
+# Mirkwood Forest entrance
+F:~:7:3:0:0:0:0:0:1
+
+# Land of Mordor entrance
+F:|:7:3:0:0:0:0:0:2
+
+# Angband Dungeon entrance
+F:>:7:3:0:0:0:0:0:3
+
+# Mountain chain
+F:^:97:3
+
+# Floor
+F:.:1:3
+
+# Trees
+F:T:96:3
+
+# Deep water
+F:W:187:3
+
+# Shallow water
+F:V:84:3
+
+# Deep Lava
+F:L:85:3
+
+# Shallow Lava
+F:K:86:3
+
+# Chasm
+F:C:87:3
+
+# Dirt
+F:,:88:3
+
+# Mud
+F:@:94:3
+
+# Rubble
+F:;:49:3
+
+# Grass
+F:-:89:3
+
+# Permanent wall
+F:#:63:3
+
+# Brick Roof
+F:s:193:3
+# Brick Roof Top
+F:S:194:3
+# Brick Roof Chimney
+F:t:195:3
+
+# Grass Roof
+F:X:190:3
+# Grass Roof Top
+F:U:191:3
+# Grass Roof Chimney
+F:Y:192:3
+
+# Cobblestone Road
+F:O:200:3
+
+# General Store
+F:1:74:3:0:0:0:0:0:0
+
+# Armoury
+F:2:74:3:0:0:0:0:0:1
+
+# Weapons Smith
+F:3:74:3:0:0:0:0:0:2
+
+# Temple
+F:4:74:3:0:0:0:0:0:3
+
+# Alchemy Shop
+F:5:74:3:0:0:0:0:0:4
+
+# Magic Shop
+F:6:74:3:0:0:0:0:0:5
+
+# Black Market
+F:7:74:3:0:0:0:0:0:6
+
+# Home
+F:8:74:3:0:0:0:0:0:7
+
+# Bookstore
+F:9:74:3:0:0:0:0:0:8
+
+# Pet Shop
+F:0:74:3:0:0:0:0:0:9
+
+# Underground Tunnels -- used for tunnels in towns
+F:I:173:3
+
+# Underground Tunnels -- used for tunnels in towns
+F:M:204:3
+
+# Fake blank feature
+F: :0:3
diff --git a/lib/edit/thieves.map b/lib/edit/thieves.map
new file mode 100644
index 00000000..9c42e130
--- /dev/null
+++ b/lib/edit/thieves.map
@@ -0,0 +1,70 @@
+# Floor
+F:.:1:6
+
+# Dark floor
+F:,:1:4
+
+# Permanent wall
+F:X:61:4
+
+# Lit permanent wall
+F:x:61:6
+
+# Magically looked door
+F:M:38:22
+
+# Looked door
+F:D:38:6
+
+# Open door
+F:d:4:6
+
+# up staircase
+F:<:6:8
+
+# Floor with Novice rogue
+F:a:1:6:44
+
+# Floor with Bandit
+F:b:1:6:150:43:*
+
+# Floor with novice warrior
+F:c:1:6:43
+
+# Floor with novice mage
+F:e:1:6:46
+
+# Dark floor with novice warrior
+F:f:1:4:43
+
+# Floor with human skeleton
+F:z:1:6:0:395
+
+# Dungeon layout
+D:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+D:x.....x....zx.....x.............x
+D:x.....x.....x.....x.............x
+D:x.....x.....x.....x.............x
+D:xxxMxxxxxdxxxxxdxxxxxxxxxDxxxxxxx
+D:XXx..........................xXXX
+D:XXx.xxxxx.xxxxx.xxxxxxxxx.xx,xXXX
+D:XXxxxXXXxxxXXXxxxXXXXXXXxxx,,,XXX
+D:XXXXxxxxxxxxxxxxxxxxxXXXXX,,,,,XX
+D:XXXXxe..xb..x...x...xXXXX,,,,,,,X
+D:XXXXx...x...xa..x...xXXXX,,,,,,,X
+D:XXXXx...x...x...x.a.xXXXX,,,,,,,X
+D:xxxxxxDxxxDxxxDxxxDxxXXXXX,,,,,XX
+D:x,,,x...............xXXXXXX,,,XXX
+D:x,,,x..x.........x..xXXXXXXX,XXXX
+D:x,,,D.....x...x.....D,,,,,,,,XXXX
+D:x,,,x..x.........x..xXXXXXXXXXXXX
+D:x,,,x...............xXXXXXXXXXXXX
+D:x,,,xxDxxxDxxxDxxxDxxXXXXXXXXXXXX
+D:x,,,x...x...x.a.xa..xXXXXXXXXXXXX
+D:x,,,xc..x.a.x...x...xXXXXXXXXXXXX
+D:xf,fx...x...x...x...xXXXXXXXXXXXX
+D:xxxxxxxxxxxxxxxxxxxxxXXXXXXXXXXXX
+
+# Starting position
+P:4:4
+
diff --git a/lib/edit/thrain.map b/lib/edit/thrain.map
new file mode 100644
index 00000000..119d8763
--- /dev/null
+++ b/lib/edit/thrain.map
@@ -0,0 +1,35 @@
+# Floor
+F:.:1:0:0:0:0:0:0:0:61
+
+# Some Nazguls
+F:1:1:0:951:0:0:0:0:0:61
+F:2:1:0:952:0:0:0:0:0:61
+F:o:1:0:866:0:0:0:0:0:61
+
+# Marker
+F:,:172:6:0:0:0:0:0:0:61
+
+# Lit permanent wall
+F:x:61:6
+
+# Door
+F:D:48:0:0:0:0:0:0:0:61
+
+# Floor with Trap
+F:t:1:8:0:0:0:0:*
+
+# Deep lava
+F:l:85:0:0:0:0:0:0:0:61
+
+# Dungeon layout
+D:
+D: xxxxxxxx
+D: xoooo..x
+D: xo2oo..x
+D: xlloo..x
+D: x,loo..D
+D: xlloo..x
+D: xo1oo..x
+D: xoooo..x
+D: xxxxxxxx
+D:
diff --git a/lib/edit/tr_info.txt b/lib/edit/tr_info.txt
new file mode 100644
index 00000000..d6518305
--- /dev/null
+++ b/lib/edit/tr_info.txt
@@ -0,0 +1,817 @@
+# This file comes from Angband64 written by Jurriaan Kalkman
+# and describes the traps items can have
+#
+# byte type; /* this goes into sval */
+# s16b probability; /* probability of existence in 1000 */
+# s16b another; /* does this trap easily combine in 1000 */
+# s16b pvalinc; /* how much does this trap attribute to pval */
+# byte difficulty; /* how difficult to disarm */
+# byte level; /* minimum level - disenchantment trap at 200' is */
+# /* not so nice */
+# byte color;
+# cptr name; /* what name does this trap have */
+#
+# d TERM_DARK |r TERM_RED |D TERM_L_DARK |R TERM_L_RED
+# w TERM_WHITE |g TERM_GREEN|W TERM_L_WHITE|G TERM_L_GREEN
+# s TERM_SLATE |b TERM_BLUE |v TERM_VIOLET |B TERM_L_BLUE
+# o TERM_ORANGE|u TERM_UMBER|y TERM_YELLOW |U TERM_L_UMBER
+#
+# b blue for stat traps
+# w white for teleport traps
+# o orange for dungeon rearrangement traps
+# v violet for summoning traps
+# y yellow for stealing/equipment traps
+# r red for other character affecting traps
+# g green for elemental bolt trap
+# B umber for elemental ball trap
+# R l red for arrow/dagger traps
+# W for compound trap!!!
+# don't use U or you'll get trapped doors that are indistinguishable from untrapped doors!
+#
+# an unknown character is multi-hued!
+#
+# N:type:name
+# I:diff:prob:another:pval:minlevel:damage:color
+# I:diff:prob: :minlevel: :color
+# D:description
+
+V:2.0.0
+
+#
+# stat traps
+#
+
+N:1:Weakness Trap
+I:2:100:5:5:2:0d0:b
+D:A poisoned needle weakens you!
+F:FLOOR | CHEST | DOOR
+
+N:2:Weakness Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle seriously weakens you!
+F:FLOOR | CHEST | DOOR
+
+N:3:Weakness Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle permanently weakens you!
+F:FLOOR | CHEST | DOOR
+
+N:4:Intelligence Trap
+I:2:100:5:2:2:0d0:b
+D:A poisoned needle makes you feel stupid!
+F:FLOOR | CHEST | DOOR
+
+N:5:Intelligence Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle makes you feel very stupid!
+F:FLOOR | CHEST | DOOR
+
+N:6:Intelligence Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle makes you feel permanently stupid!
+F:FLOOR | CHEST | DOOR
+
+N:7:Wisdom Trap
+I:2:100:5:2:2:0d0:b
+D:A poisoned needle makes you feel naive!
+F:FLOOR | CHEST | DOOR
+
+N:8:Wisdom Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle makes you feel very naive!
+F:FLOOR | CHEST | DOOR
+
+N:9:Wisdom Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle makes you feel permanently naive!
+F:FLOOR | CHEST | DOOR
+
+N:10:Fumbling Fingers Trap
+I:2:100:5:2:2:0d0:b
+D:A poisoned needle makes you feel clumsy!
+F:FLOOR | CHEST | DOOR
+
+N:11:Fumbling Fingers Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle makes you feel very clumsy!
+F:FLOOR | CHEST | DOOR
+
+N:12:Fumbling Fingers Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle makes you feel permanently clumsy!
+F:FLOOR | CHEST | DOOR
+
+N:13:Wasting Trap
+I:2:100:5:2:2:0d0:b
+D:A poisoned needle makes you feel sickly!
+F:FLOOR | CHEST | DOOR
+
+N:14:Wasting Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle makes you feel very sickly!
+F:FLOOR | CHEST | DOOR
+
+N:15:Wasting Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle makes you feel permanently sickly!
+F:FLOOR | CHEST | DOOR
+
+N:16:Beauty Trap
+I:2:100:5:2:2:0d0:b
+D:A poisoned needle scars you!
+F:FLOOR | CHEST | DOOR
+
+N:17:Beauty Trap
+I:5:100:5:5:20:0d0:b
+D:A poisoned needle scars you horribly!
+F:FLOOR | CHEST | DOOR
+
+N:18:Beauty Trap
+I:7:100:5:8:40:0d0:b
+D:A poisoned needle scars you permanently!
+F:FLOOR | CHEST | DOOR
+
+#
+# miscellaneous traps
+#
+
+N:20:Trap of Curse Weapon
+I:5:10:0:12:20:0d0:y
+D:Your weapon will never be the same...
+F:FLOOR | CHEST | DOOR
+
+N:21:Trap of Curse Armour
+I:5:15:0:12:20:0d0:y
+D:Your armour doesn't exactly get better by setting off this trap...
+F:FLOOR | CHEST | DOOR
+
+N:22:Earthquake Trap
+I:5:20:0:10:10:0d0:o
+D:The ceiling collapses around you!
+F:FLOOR | CHEST | DOOR
+
+N:23:Poison Needle Trap
+I:1:50:50:3:2:0d0:r
+D:A poisoned needle pricks you!
+F:FLOOR | CHEST | DOOR
+
+N:24:Summon Monster Trap
+I:2:50:40:4:2:0d0:v
+D:Monsters defend the memory of the owner...
+F:FLOOR | CHEST | DOOR
+
+N:25:Summon Undead Trap
+I:4:25:40:6:10:0d0:v
+D:Undead rise from the grave to defend this!
+F:FLOOR | CHEST | DOOR
+
+N:26:Summon Greater Undead Trap
+I:8:10:50:20:20:0d0:v
+D:Greater undead defend this!
+F:FLOOR | CHEST | DOOR
+
+N:27:Teleport Trap
+I:3:100:50:3:2:0d0:w
+D:Now you know why nobody ever got close enough to disarm this trap...
+F:FLOOR | CHEST | DOOR
+
+N:28:Paralysing Trap
+I:1:100:20:2:2:0d0:r
+D:You suddenly cannot move!
+F:FLOOR | CHEST | DOOR
+
+N:29:Explosive Device
+I:3:100:80:0:3:3d8:r
+D:Ha! It explodes before your hands can illegally touch it!
+F:FLOOR | CHEST | DOOR
+
+N:30:Teleport Item Trap
+I:3:50:50:3:5:0d0:w
+D:The item magically disappears from your greedy hands!
+F:FLOOR | CHEST
+
+N:31:Lose Memory Trap
+I:6:30:30:6:10:0d0:r
+D:You suddenly can't remember what you were doing here...
+F:FLOOR | CHEST | DOOR
+
+N:32:Bitter Regret Trap
+I:9:15:20:9:20:0d0:r
+D:You already regret trying this...
+F:FLOOR | CHEST | DOOR
+
+N:33:Bowel Cramps Trap
+I:1:90:20:1:6:0d0:r
+D:Your stomach twists with a sharp pang!
+F:FLOOR | CHEST | DOOR
+
+N:34:Blindness/Confusion Trap
+I:4:100:50:4:6:0d0:r
+D:You suddenly can't see, and thinking is difficult too....
+F:FLOOR | CHEST | DOOR
+
+N:35:Aggravation Trap
+I:2:100:50:2:3:0d0:o
+D:Your hear a high-pitched humming noise...
+F:FLOOR | CHEST | DOOR
+
+N:36:Multiplication Trap
+I:3:90:0:3:5:0d0:o
+D:The floor around you doesn't seem the same...
+F:FLOOR | CHEST | DOOR
+
+N:37:Steal Item Trap
+I:3:100:50:3:6:0d0:y
+D:The chest seems to swell, while your backpack feels lighter..
+F:FLOOR | CHEST
+
+N:38:Summon Fast Quylthulgs Trap
+I:8:50:10:10:25:0d0:v
+D:Parts of the owner seem to return from somewhere else, as you slow in awe.
+F:FLOOR | CHEST | DOOR
+
+N:39:Trap of Sinking
+I:2:50:0:0:3:0d0:w
+D:A trapdoor opens up under you!
+F:FLOOR | DOOR
+
+N:40:Trap of Mana Drain
+I:4:100:50:3:4:0d0:r
+D:You suddenly can't think so clearly any more...
+F:FLOOR | CHEST | DOOR
+
+N:41:Trap of Missing Money
+I:2:100:50:2:2:0d0:y
+D:Money isn't everything, they say...
+F:FLOOR | CHEST | DOOR
+
+N:42:Trap of No Return
+I:5:20:10:4:8:0d0:y
+D:Do stay a while!
+F:FLOOR | CHEST | DOOR
+
+N:43:Trap of Silent Switching
+I:4:100:50:3:6:0d0:y
+D:You suddenly are a different person!
+F:FLOOR | CHEST | DOOR
+
+N:44:Trap of Walls
+I:6:100:50:2:10:0d0:o
+D:The room seems to shrink!
+F:FLOOR | CHEST | DOOR
+
+N:45:Trap of Calling Out
+I:10:100:100:5:15:0d0:v
+D:You hear something coming closer, much closer.
+F:FLOOR | CHEST | DOOR
+
+N:46:Trap of Sliding
+I:8:50:50:4:8:0d0:r
+D:Your feet seem to have a life of their own!
+F:FLOOR | CHEST | DOOR
+
+N:47:Trap of Charges Drain
+I:6:100:70:2:3:0d0:y
+D:You feel as if you've just lost something...
+F:FLOOR | CHEST | DOOR
+
+N:48:Trap of Stair Movement
+I:6:0:50:3:4:0d0:o
+D:The dungeon seems different...
+F:FLOOR | CHEST | DOOR
+
+N:49:Trap of New Trap
+I:5:100:5:0:4:0d0:o
+D:Somehow, disarming isn't over, you feel...
+F:FLOOR | CHEST | DOOR
+
+N:50:Trap of Scatter Items
+I:10:50:50:6:12:0d0:w
+D:You hear crashing sounds from all over the dungeon!
+F:FLOOR | CHEST | DOOR
+
+N:51:Trap of Decay
+I:4:100:50:4:4:0d0:r
+D:Your stomach isn't empty, but suddenly you think of food.
+F:FLOOR | CHEST | DOOR
+
+N:52:Trap of Wasting Wands
+I:6:100:40:4:5:0d0:y
+D:Your wands seem different...
+F:FLOOR | CHEST | DOOR
+
+N:53:Trap of Filling
+I:10:100:0:10:25:0d0:o
+D:The whole room vibrates in a strange way...
+F:FLOOR | CHEST | DOOR
+
+N:54:Trap of Drain Speed
+I:8:50:10:25:80:0d0:y
+D:You suddenly seem to have more time to self-reflect...
+F:FLOOR | CHEST | DOOR
+
+#
+# bolt traps
+#
+
+N:60:Lightning Bolt Trap
+I:2:80:5:3:2:2d8:g
+D:You are jolted with electricity!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:61:Poison Bolt Trap
+I:2:80:5:3:2:2d8:g
+D:A blast of poison gas hits you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:62:Acid Bolt Trap
+I:2:80:5:3:2:2d8:g
+D:A jet of acid shoots out at you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:63:Cold Bolt Trap
+I:2:80:5:3:2:2d8:g
+D:You are suddenly very cold!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:64:Fire Bolt Trap
+I:2:80:5:3:2:2d8:g
+D:You are suddenly very hot!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:65:Plasma Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:A bolt of plasma hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:66:Water Bolt Trap
+I:4:80:5:5:8:5d10:g
+D:A gush of water hits you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:67:Light Bolt Trap
+I:4:80:5:5:8:5d10:g
+D:There is a sudden flash of light around you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:68:Dark Bolt Trap
+I:4:80:5:5:8:5d10:g
+D:A bolt of pure elemental darkness hits you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:69:Shards Bolt Trap
+I:6:80:5:6:15:6d10:g
+D:A blast of crystal shards hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:70:Sound Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:A sudden roar of sound hurts your eardrums!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:71:Confusion Bolt Trap
+I:4:80:5:5:8:6d10:g
+D:A blast of confusion gas engulfs you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:72:Force Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:A bolt of pure force hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:73:Inertia Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:Your feet feel like lead!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:74:Mana Bolt Trap
+I:8:80:5:9:25:15d16:g
+D:A bolt of pure magic hits you!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:75:Ice Bolt Trap
+I:4:80:5:5:8:5d10:g
+D:A bolt of ice hits you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:76:Chaos Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:A blast of raw chaos hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:77:Nether Bolt Trap
+I:8:80:5:9:25:15d16:g
+D:A bolt of negative energy hits you!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:78:Disenchantment Bolt Trap
+I:8:80:5:9:25:15d16:g
+D:There is a static feeling in the air...
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:79:Nexus Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:A bolt of nexus hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:80:Time Bolt Trap
+I:8:80:5:9:25:15d16:g
+D:Suddenly, several months pass by in a second!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:81:Gravity Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:Gravity suddenly warps around you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+#
+# ball traps
+#
+
+N:82:Lightning Ball Trap
+I:3:60:5:5:8:3d10:B
+D:A massive electrical charge shoots through you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:83:Poison Ball Trap
+I:3:60:5:5:8:3d10:B
+D:A large cloud of poison gas envelops you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:84:Acid Ball Trap
+I:3:60:5:5:8:3d10:B
+D:You are suddenly drenched in acid!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:85:Cold Ball Trap
+I:3:60:5:5:8:3d10:B
+D:A blast of hideously cold air envelops you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:86:Fire Ball Trap
+I:3:60:5:5:8:3d10:B
+D:You are suddenly in the centre of a raging inferno!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:87:Plasma Ball Trap
+I:8:60:5:8:20:12d18:B
+D:You are engulfed in plasma!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:88:Water Ball Trap
+I:5:60:5:6:15:8d12:B
+D:A whirlpool engulfs you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:89:Light Ball Trap
+I:5:60:5:6:15:8d12:B
+D:A massive flash of light erupts around you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:90:Darkness Ball Trap
+I:5:60:5:6:15:8d12:B
+D:A large patch of darkness erupts around you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:91:Shards Ball Trap
+I:8:60:5:8:20:12d18:B
+D:A violent blast of crystal shards hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:92:Sound Ball Trap
+I:8:60:5:8:20:12d18:B
+D:BOOM! Your eardrums nearly explode!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:93:Confusion Ball Trap
+I:5:60:5:6:15:8d12:B
+D:You are enveloped in a cloud of confusion gas!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:94:Force Ball Trap
+I:8:60:5:8:20:12d18:B
+D:A violent blast of pure force smashes down around you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:95:Inertia Ball Trap
+I:8:60:5:8:20:12d18:B
+D:Suddenly, your entire body feels like lead!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:96:Mana Ball Trap
+I:10:60:5:10:30:16d20:B
+D:You are hit by a blast of pure magic!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:97:Ice Ball Trap
+I:5:60:5:6:15:8d12:B
+D:A massive blast of ice crystals engulfs you!
+F:FLOOR | CHEST | DOOR | LEVEL2
+
+N:98:Chaos Ball Trap
+I:8:60:5:8:20:12d18:B
+D:A violent blast of raw chaos engulfs you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:99:Nether Ball Trap
+I:10:60:5:10:30:16d20:g
+D:A blast of energy from the netherworld engulfs you!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+# N:type:name
+# I:diff:prob:another:pval:minlevel:color
+# D:description
+
+N:100:Disenchantment Ball Trap
+I:10:60:5:10:30:16d20:B
+D:You are hit by a blast of pure anti-magic!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:101:Nexus Ball Trap
+I:8:60:5:8:20:12d18:B
+D:A ball of nexus hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:102:Time Ball Trap
+I:10:60:5:10:30:16d20:B
+D:Suddenly, several years pass by in a second!
+F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:103:Gravity Ball Trap
+I:8:60:5:8:20:12d18:B
+D:You suddenly feel gravity warp violently around you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:110:Arrow Trap
+I:2:100:0:5:2:0d0:R
+D:An arrow shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:111:Bolt Trap
+I:2:100:0:5:5:0d0:R
+D:A bolt shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:112:Seeker Arrow Trap
+I:2:100:0:6:10:0d0:R
+D:A seeker arrow shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:113:Seeker Bolt Trap
+I:2:100:0:6:12:0d0:R
+D:A seeker bolt shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:114:Poison Arrow Trap
+I:2:100:0:5:4:0d0:R
+D:A poisoned arrow shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:115:Poison Bolt Trap
+I:2:100:0:6:6:0d0:R
+D:A poisoned bolt shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:116:Poison Seeker Arrow Trap
+I:2:100:0:7:12:0d0:R
+D:A poisoned seeker arrow shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:117:Poison Seeker Bolt Trap
+I:2:100:0:7:15:0d0:R
+D:A poisoned seeker bolt shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:118:Broken Dagger Trap
+I:2:100:0:5:2:0d0:R
+D:An broken dagger shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:119:Dagger Trap
+I:2:100:0:5:5:0d0:R
+D:A dagger shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:120:Poison Broken Dagger Trap
+I:2:100:0:5:4:0d0:R
+D:A poisoned broken dagger shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+N:121:Poison Dagger Trap
+I:2:100:0:6:6:0d0:R
+D:A poisoned dagger shoots out at you.
+F:FLOOR | CHEST | DOOR
+
+#
+# multiple arrows/daggers traps
+#
+
+N:122:Arrows Trap
+I:4:100:0:7:16:0d0:R
+D:Some arrows shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:123:Bolts Trap
+I:4:100:0:7:18:0d0:R
+D:Some bolts shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:124:Seeker Arrow Trap
+I:5:100:0:8:20:0d0:R
+D:Some seeker arrows shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:125:Seeker Bolt Trap
+I:5:100:0:8:24:0d0:R
+D:Some seeker bolts shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:126:Poison Arrows Trap
+I:5:100:0:8:18:0d0:R
+D:Some poisoned arrows shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:127:Poison Bolt Trap
+I:6:100:0:8:20:0d0:R
+D:Some poisoned bolts shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:128:Poison Seeker Arrows Trap
+I:7:100:0:9:27:0d0:R
+D:Some poisoned seeker arrows shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:129:Poison Seeker Bolts Trap
+I:9:100:0:9:30:0d0:R
+D:Some poisoned seeker bolts shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:130:Broken Daggers Trap
+I:4:100:0:6:12:0d0:R
+D:Some broken daggers shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:131:Dagger Trap
+I:4:100:0:6:15:0d0:R
+D:Some daggers shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:132:Poison Broken Daggers Trap
+I:5:100:0:7:18:0d0:R
+D:Some poisoned broken daggers shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:133:Poison Daggers Trap
+I:6:100:0:7:23:0d0:R
+D:Some poisoned daggers shoot out at you.
+F:FLOOR | CHEST | DOOR
+
+N:140:Trap of Drop Item
+I:3:50:0:2:5:0d0:y
+D:A sudden sound startles you and you drop something!
+F:FLOOR | CHEST | DOOR
+
+N:141:Trap of Drop Items
+I:5:50:0:5:12:0d0:y
+D:A sudden sound startles you and you drop several things!
+F:FLOOR | CHEST | DOOR
+
+N:142:Trap of Drop Everything
+I:8:50:0:8:20:0d0:y
+D:A sudden sound startles you and you drop everything!
+F:FLOOR | CHEST | DOOR
+
+#-SC-
+N:150:Trap of Femininity
+I:4:30:5:0:10:2d8:r
+D:You feel like a new woman!
+F:FLOOR | CHEST | DOOR
+
+N:151:Trap of Masculinity
+I:4:30:5:0:10:2d8:r
+D:You feel like a new man!
+F:FLOOR | CHEST | DOOR
+
+N:152:Trap of Neutrality
+I:4:30:5:0:10:2d8:r
+D:You feel like a new woman... erm, a new man... er, WHAT did you say???
+F:FLOOR | CHEST | DOOR
+
+N:153:Trap of Aging
+I:5:50:5:0:15:1d8:r
+D:You suddenly age very fast!
+F:CHEST | DOOR
+
+N:154:Trap of Growing
+I:3:75:5:0:5:1d8:r
+D:You begin to grow!
+F:FLOOR | CHEST | DOOR
+
+N:155:Trap of Shrinking
+I:3:75:5:0:5:1d8:r
+D:You begin to shrink!
+F:FLOOR | CHEST | DOOR
+
+#N:156: UNUSED
+
+#N:157: UNUSED
+
+N:158:Trap of Divine Anger
+I:6:100:5:0:15:0d0:G
+D:A voice booms out "Have a care, mortal!"
+F:FLOOR | CHEST | DOOR
+
+N:159:Trap of Divine Wrath
+I:9:50:5:0:30:0d0:G
+D:A voice booms out "Sacrilege!"
+F:FLOOR | CHEST | DOOR
+
+N:160:Hallucination Trap
+I:3:100:10:0:4:0d0:r
+D:Your vision is clouded by a blast of kaleidoscopic light!
+F:FLOOR | CHEST | DOOR
+
+# Bolt traps
+N:161:Greater Magic Missile Trap
+I:6:80:5:6:75:25d20:g
+D:A greater magic missile hits you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+#N:162:Foulness Trap
+#I:6:80:5:6:15:10d12:g
+#D:You feel foul!
+#F:FLOOR | CHEST | DOOR | LEVEL3
+
+#N:163:Trap of Death Ray
+#I:8:80:5:9:25:15d16:g
+#D:A Ray of Death hits you!
+#F:FLOOR | CHEST | DOOR | LEVEL4
+
+N:164:Trap of Holy Fire
+I:6:80:5:6:15:10d12:g
+D:Holy fire rises around you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:165:Trap of Hell Fire
+I:6:80:5:6:15:10d12:g
+D:Hellfire rises around you!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:166:Psi Bolt Trap
+I:6:80:5:6:15:10d12:g
+D:Your mind is suddenly blasted!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:167:Psi Drain Trap
+I:6:80:5:6:15:8d10:r
+D:You suddenly can't think clearly any more...
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+# Ball Traps
+
+### this one *ought* to be a Nuke Ball trap, not plasma ball, as trap 87
+### is also plasma ball. I've put the description right in advance.
+
+#N:168:Plasma Ball Trap
+#I:8:60:5:8:20:12d18:B
+#D:A blast of radiation engulfs you!
+#F:FLOOR | CHEST | DOOR | LEVEL3
+
+N:169:Psi Ball Trap
+I:8:60:5:8:20:12d18:B
+D:Your brain is suddenly blasted!
+F:FLOOR | CHEST | DOOR | LEVEL3
+
+# Useful traps
+
+N:170:Acquirement Trap
+I:1:40:5:5:18:0d0:v
+D:Woah!
+F:FLOOR | DOOR
+
+# More bolt traps
+
+N:171:Greater Lightning Bolt Trap
+I:3:60:5:3:6:6d6:g
+D:You are jolted with electricity!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:172:Greater Poison Bolt Trap
+I:3:60:5:3:6:6d6:g
+D:A blast of deadly poison gas hits you!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:173:Greater Acid Bolt Trap
+I:3:60:5:3:6:6d6:g
+D:A jet of acid shoots out at you! It burns severely!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:174:Greater Cold Bolt Trap
+I:3:60:5:3:6:6d6:g
+D:You are suddenly extremely cold!
+F:FLOOR | CHEST | DOOR | LEVEL1
+
+N:175:Greater Fire Bolt Trap
+I:3:60:5:3:6:6d6:g
+D:You are suddenly extremely hot!
+F:FLOOR | CHEST | DOOR | LEVEL1
diff --git a/lib/edit/trolls.map b/lib/edit/trolls.map
new file mode 100644
index 00000000..14dc0efb
--- /dev/null
+++ b/lib/edit/trolls.map
@@ -0,0 +1,58 @@
+# Permanent wall
+F:X:63:3
+
+# up stairs
+F:<:6:3
+
+# Floor with tree
+F:T:96:3
+
+# Floor with tree(marked)
+F:H:96:1027
+
+# Floor with dirt
+F:.:88:3
+
+# Floor with grass
+F:;:89:3
+
+# Floor with forest troll
+F:f:89:3:297
+
+# Floor with stone troll
+F:s:89:3:401
+
+# Floor with algroth
+F:a:89:3:424
+
+# Floor with Bert
+F:b:89:3:493
+
+# Floor with Bill
+F:i:89:3:494
+
+# Floor with a Dwarven skeleton
+F:k:89:8:0:396
+
+# Marker
+F:,:172:6
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X..HTTTTTTTTTTTTTTTTTTTTTTTX
+D:XH...;TTTTTTTTTTTTTTTTTTTTTX
+D:XTTT;;HTTTTTTTTTTTTTa.TTTTTX
+D:XTTH.k...TTTHHkTHTs.fTTTTTTX
+D:XTTTT;..f.TT.;...HTTTTaTTTTX
+D:XTTTTTHT...;......TTT..HTTTX
+D:XTTTTTTT;;.k..;k.HH.i.TTTTTX
+D:XTTTTTTH.HTHTT..TH.,.HTTTTTX
+D:XTTTTT;THTTTTTHTH.bTTTTTTTTX
+D:XTTT.f.TTTTTTTaTTs;TTTTTTTTX
+D:XTTs..TTTTTTT...fHTTTTTTTTTX
+D:XTTTas.TTTTTTTTTTTTTTTTTTTTX
+D:XTTTTTTTTTTTTTTTTTTTTTTTTTTX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:3
diff --git a/lib/edit/v_info.txt b/lib/edit/v_info.txt
new file mode 100644
index 00000000..d079afea
--- /dev/null
+++ b/lib/edit/v_info.txt
@@ -0,0 +1,2287 @@
+# File: v_info.txt
+
+
+# This file is used to initialize the "lib/raw/v_info.raw" file, which is
+# used to initialize the "vault template" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/v_info.raw" file.
+
+# Note that the "spacing" in the "description" lines is very important!
+
+
+# New vault types added for Zangband -TY
+
+# Quest vaults added - rr9
+
+# Version stamp (required)
+
+V:2.0.0
+
+
+### Simple Vaults (type 7) -- maximum size 44x22 ###
+
+
+N:0:Lesser vault (round)
+X:7:5:12:20
+D: %%%%%%
+D: %%%..##..%%%
+D: %%....####....%%
+D: %......#**#......%
+D:%...,.##+##+##.,...%
+D:%.,.,.#*#*&#*#.,.,.%
+D:%.,.,.#*#&*#*#.,.,.%
+D:%...,.##+##+##.,...%
+D: %......#**#......%
+D: %%....####....%%
+D: %%%..##..%%%
+D: %%%%%%
+
+
+N:1:Lesser vault (octagon)
+X:7:5:14:20
+D: %%%%%%%%%%%%%%
+D: %%.##########.%%
+D: %%..#..,,,,..#..%%
+D:%%,..#.,####,.#..,%%
+D:%....#.,#**#,.#....%
+D:%.###+,##&&##,+###.%
+D:%.#..,,#*&**#,,..#.%
+D:%.#..,,#**&*#,,..#.%
+D:%.###+,##&&##,+###.%
+D:%....#.,#**#,.#....%
+D:%%,..#.,####,.#..,%%
+D: %%..#..,,,,..#..%%
+D: %%.##########.%%
+D: %%%%%%%%%%%%%%
+
+
+N:2:Lesser vault (octagon)
+X:7:5:12:20
+D: %%%%%%%%%%%%
+D: %%%%..........%%%%
+D: %...###+##+###...%
+D:%%...#,,#,,#,,#...%%
+D:%.###+##+##+##+###.%
+D:%.#,,#&&#**#&&#,,#.%
+D:%.#,,#&&#**#&&#,,#.%
+D:%.###+##+##+##+###.%
+D:%%...#,,#,,#,,#...%%
+D: %...###+##+###...%
+D: %%%%..........%%%%
+D: %%%%%%%%%%%%
+
+
+N:3:Lesser vault (square)
+X:7:5:12:20
+D:%%%%%%%%%%%%%%%%%%%%
+D:%*.......&........*%
+D:%.################.%
+D:%.#,.,.,.,.,.,.,.#.%
+D:%.#.############,#.%
+D:%.#,+,&&+**#&*,#.#&%
+D:%&#.#,*&#**+&&,+,#.%
+D:%.#,############.#.%
+D:%.#.,.,.,.,.,.,.,#.%
+D:%.################.%
+D:%*........&.......*%
+D:%%%%%%%%%%%%%%%%%%%%
+
+
+N:4:Lesser vault (diagonal)
+X:7:5:12:20
+D:%%%%%%%%%%%%%%%%%
+D:%,,,##,,,,##....%%
+D:%,,,,##,,,,##....%%
+D:%#,,,,##,,,,##....%%
+D:%##,,,,##,,,,##....%
+D:%.##,,,,,,,,,,#+...%
+D:%..#+,,,,,,,,,,##..%
+D:%...##,,,,##,,,,##.%
+D:%%...##,,,,##,,,,##%
+D: %%...##,,,,##,,,,#%
+D: %%...##,,,,##,,,,%
+D: %%%%%%%%%%%%%%%%%
+
+
+N:5:Lesser vault (diagonal)
+X:7:5:12:20
+D: %%%%%%%%%%%%%%%%%
+D: %%....##,,,,##,,,%
+D: %%....##,,,,##,,,,%
+D:%%....##,,,,##,,,,#%
+D:%....##,,,,##,,,,##%
+D:%...+#,,,,,,,,,,##.%
+D:%..##,,,,,,,,,,+#..%
+D:%.##,,,,##,,,,##...%
+D:%##,,,,##,,,,##...%%
+D:%#,,,,##,,,,##...%%
+D:%,,,,##,,,,##...%%
+D:%%%%%%%%%%%%%%%%%
+
+
+N:6:Lesser vault (square)
+X:7:5:12:20
+D:%%%%%%%%%%%%%%%%%%%%
+D:%,################,%
+D:%^#.*...&..,....,#^%
+D:%^#...,......&...#^%
+D:%^#######++#######^%
+D:%^+.,..&+,*+*....+^%
+D:%^+..*.,+.&+.,.&.+^%
+D:%^#######++#######^%
+D:%^#....,.,.....,.#^%
+D:%^#..&......*....#^%
+D:%,################,%
+D:%%%%%%%%%%%%%%%%%%%%
+
+N:7:Lesser vault (spiral)
+X:7:5:19:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.+################.%
+D:%.#^#*&..,.......*#.%
+D:%.#.#.###########.#.%
+D:%.#.#.#*.,.....*#.#.%
+D:%.#.#.#.#######.#.#.%
+D:%.#.#.#.#,...*#.#.#.%
+D:%.#.#.#.#,###.#.#.#.%
+D:%.#,#,#,#,,*#,#,#,#.%
+D:%.#.#.#.###,#.#.#.#.%
+D:%.#.#.#*.,.*#.#.#.#.%
+D:%.#.#.#######.#.#.#.%
+D:%.#.#*...,...*#.#.#.%
+D:%.#.###########.#.#.%
+D:%.#*.....,....&*#^#.%
+D:%.################+.%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+N:8:Lesser vault (layers)
+X:7:5:21:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.########+########.%
+D:%.#.......,.......#.%
+D:%.#.#############.#.%
+D:%.#.#....+.#*...#.#.%
+D:%.#.#.####+####.#.#.%
+D:%.#.#.#...&...#.#.#.%
+D:%.#.#.#.#####.#.#.#.%
+D:%.#.#.#.#*,*#.#.#.#.%
+D:%.#^#^#^#,,,#^#^#.#.%
+D:%.#.#.#.#*,*#.#.#.#.%
+D:%.#.#.#.##+##.#.#.#.%
+D:%.#.#.#..+,#*.#.#.#.%
+D:%.#.#.#########.#.#.%
+D:%.#.#.....,.....#.#.%
+D:%.#.######+######.#.%
+D:%.#.....*#.+......#.%
+D:%.#################.%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+N:9:Lesser vault (bank)
+X:7:7:9:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.&XXXXXXXXXXXXXXXXX%
+D:%&&XXXXX+XXX+XX*,XXX%
+D:%&&+###########,*XXX%
+D:%.&XXX+XXX+XXX+XXXXX%
+D:%.&XXXXXXXXXXXXXXXXX%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+N:10:Lesser vault (mine)
+X:7:7:9:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.XXXXXXXXXXXXXXXXXX%
+D:%.XX##XXXX*,,XX,*,XX%
+D:%.*#XX,*##X*#XX***XX%
+D:%.XXXX*,XXXXX##,*,XX%
+D:%.XXXXXXXXXXXXXXXXXX%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+N:11:Lesser vault (maze)
+X:7:5:22:22
+D:%%%%%%%%%%%%%%%%%%%%%%
+D:%.XXXXXXX............%
+D:%.XX,,.XXXXXXXXXXXXX.%
+D:%.XXXX*...&........X.%
+D:%.X.,,XXXXXXXXXXXX*X.%
+D:%.X.XXX.....*......X.%
+D:%.X..XX.XXXXXXXXXX.X.%
+D:%.XX.X.&.XX.X.....*X.%
+D:%.XX.XXX...*X,XXXX.^.%
+D:%.X.XX,XXXX.XXXX,XXX.%
+D:%.X.XX.....*..&.*X,X.%
+D:%.X.,XXXXXXXXXXX.X,X.%
+D:%.XXXX....*..X,X.X,X.%
+D:%.X....XXX.X.X.X.X.X.%
+D:%.X.XXXX,X.X.&.X.X.X.%
+D:%.X.X...*X.XXXXX.X.X.%
+D:%.X.X,XX&X....&..X.X.%
+D:%.X.XXXX.XXXXXXXXX.X.%
+D:%.X.....*...X*X*X..X.%
+D:%.XX^XXXXXX..X*X,XXX.%
+D:%........XXXXXXXXXXX.%
+D:%%%%%%%%%%%%%%%%%%%%%%
+
+N:12:Lesser vault (prison)
+X:7:10:16:35
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.+..&..+..&..+..&..+..&..+..&..+.%
+D:%.###.#####.#####.#####.#####.###.%
+D:% #,+.+,#,+.+,#,+.+,#,+.+,#,+.+,#.%
+D:%.###.#####.#####.#####.#####.###.%
+D:%.#,+.+,#,+.+,#,+.+,#,+.+,#,+.+,#.%
+D:%.###.#####.#####.#####.#####.###.%
+D:%.#,+.+,#,+.+,#,+.+,#,+.+,#,+.+,#.%
+D:%.###.#####.#####.#####.#####.###.%
+D:%.#,+.+,#,+.+,#,+.+,#,+.+,#,+.+,#.%
+D:%.###.#####.#####.#####.#####.###.%
+D:%.#,+.+,#,+.+,#,+.+,#,+.+,#,+.+,#.%
+D:%.###.#####.#####.#####.#####.###.%
+D:%&+..&..+..&..+..&..+..&..+..&..+.%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:13:Lesser vault (camp)
+X:7:10:15:37
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%...................................%
+D:%.####^^^^^^^^^^^^^^^^^^^^^^^^^####.%
+D:%.#,&############+++############&,#.%
+D:%.###+.........................+###.%
+D:%.^#....##+#.....#+#....##+#....#^..%
+D:%.^+....#,,#.....#,#....#,,#....+^..%
+D:%.^+....+&&+..&..+&+..&.+&&+....+^..%
+D:%.^+....#,,#.....#,#....#,,#....+^..%
+D:%.^#....#+##.....#+#....#+##....#^..%
+D:%.###+.........................+###.%
+D:%.#,&############+++############&,#.%
+D:%.####^^^^^^^^^^^^^^^^^^^^^^^^^####.%
+D:%...................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:14:Lesser vault (serpent)
+X:7:10:17:32
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..............................%
+D:%..##########################..%
+D:%.##...#.^.#.^.#...#...#.,.###.%
+D:%.#..#.*.#...#...#.^.#...#...+.%
+D:%.#.##########################.%
+D:%.#..#..#.,.#.^.#.^.#.*.#...##.%
+D:%.##^#.#..#...#...#...#...#..#.%
+D:%.#..#.####################..#.%
+D:%.#,##.&+,,,,,,,,,,,,,,,,,#*##.%
+D:%.#..##&+,,,,,,,,,,,,,,,,,#..#.%
+D:%.##^#######################.#.%
+D:%.#..#...#...#...#...#.^.#...#.%
+D:%.##...#.^.#.,.#.*.#.^.#...###.%
+D:%..##########################..%
+D:%..............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:15:Lesser vault (zelazny)
+X:7:5:18:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%.................%
+D:%.###############.%
+D:%.+,,,,,,,,,,,,,#.%
+D:%.###########,,,#.%
+D:%.#,,,,+..##,,,##.%
+D:%.#,,,##.##,,,##..%
+D:%.#,*##.##,,,##...%
+D:%.#&##.##,,,##.##.%
+D:%.###.##,,,##.###.%
+D:%.##.##,,,##.##&#.%
+D:%...##,,,##.##*,#.%
+D:%..##,,,##..+,,,#.%
+D:%.##,,,##########.%
+D:%.#,,,,,,,,,,,,,+.%
+D:%.###############.%
+D:%.................%
+D:%%%%%%%%%%%%%%%%%%%
+
+N:16:Lesser vault (overlap)
+X:7:5:12:18
+D:%%%%%%%%%%%%%%%%%%
+D:%................%
+D:%.##########.....%
+D:%.#,,,^^^^^+&....%
+D:%.#,,,##########.%
+D:%.#,,,#****+,,,#.%
+D:%.#,,,+****#,,,#.%
+D:%.##########,,,#.%
+D:%....&+^^^^^,,,#.%
+D:%.....##########.%
+D:%................%
+D:%%%%%%%%%%%%%%%%%%
+
+N:17:Lesser vault (celtic)
+X:7:5:17:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.#####..#+#..#####.%
+D:%.#&,##.##&##.##,&#.%
+D:%.#+##..#*^*#..##+#.%
+D:%.#....###.###....#.%
+D:%...####..&..####...%
+D:%.###*##.#+#.##*###.%
+D:%.+&.^..&+*+&..^.&+.%
+D:%.###*##.#+#.##*###.%
+D:%...####..&..####...%
+D:%.#....###.###....#.%
+D:%.#+##..#*^*#..##+#.%
+D:%.#&,##.##&##.##,&#.%
+D:%.#####..#+#..#####.%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+
+N:18:Lesser vault (mirror)
+X:7:5:17:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%.................%
+D:%.+#############+.%
+D:%.##&,,,,#,,,,&##.%
+D:%.#&#,,,###,,,#&#.%
+D:%.#,,,,,,#,,,,,,#.%
+D:%.##,,,,,#,,,,,##.%
+D:%.###,,,^#^,,,###.%
+D:%.#######+#######.%
+D:%.###,,,^#^,,,###.%
+D:%.##,,,,,#,,,,,##.%
+D:%.#,,,,,,#,,,,,,#.%
+D:%.#&#,,,###,,,#&#.%
+D:%.##&,,,,#,,,,&##.%
+D:%.+#############+.%
+D:%.................%
+D:%%%%%%%%%%%%%%%%%%%
+
+
+N:19:Lesser vault (tower)
+X:7:5:18:15
+D:%%%%%%%%%%%%%%%
+D:%.............%
+D:%..XXX...XXX..%
+D:%..X&XXXXX&X..%
+D:%..XX*****XX..%
+D:%...XX***XX...%
+D:%....X#+#X....%
+D:%....X&&&X....%
+D:%....X^^^X....%
+D:%....X#+#X....%
+D:%....X,,,X....%
+D:%....X^^^X....%
+D:%...XX+#+XX...%
+D:%..XX,&,&,XX..%
+D:%..X^^^*^^^X..%
+D:%.##+#####+##.%
+D:%...&.....&...%
+D:%%%%%%%%%%%%%%%
+
+
+### Greater vaults (type 8) -- maximum size 66x44 ###
+
+N:20:Greater vault (huge)
+X:8:20:17:39
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%+&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X%
+D:%X8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&X%
+D:%X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X%
+D:%X8#&#8#&#8#&#88888888888#8#&#8#&#8#&X%
+D:%X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X%
+D:%X8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&X%
+D:%X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#8#&#&+%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:21:Greater vault (large)
+X:8:35:18:40
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X,#,#,#,#,#,#,#,#*@@*#,#,#,#,#,#,#,#,X%
+D:%X+XXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXXX+X%
+D:%X.,..,.X&.&.,*XX******XX*,.&.&X.,...,#%
+D:%X..,.^^X....,XX***@@***XX,....X^^..,.#%
+D:%XXXXXX+X^&.&XX***@##@***XX&.&^X+XXXXXX%
+D:%X,.&.^^X+XXXX***@#XX#@***XXXX+X^^.,..X%
+D:%X..,&,.X^^^@X**@#X88X#@**#@^^^X.,..&,X%
+D:%X.,....X^^^@#**@#X88X#@**X@^^^X.&.,..X%
+D:%X...,^^X+XXXX***@#XX#@***XXXX+X^^..,.X%
+D:%XXXXXX+X^&.&XX***@##@***XX&.&^X+XXXXXX%
+D:%#.,..^^X.....XX***@@***XX,....X^^.,..X%
+D:%#...,..X&.&.,*XX******XX*,.&.&X..,..,X%
+D:%X+XXXXXXXXXXXXXXXX##XXXXXXXXXXXXXXXX+X%
+D:%X,#,#,#,#,#,#,#,#*@@*#,#,#,#,#,#,#,#,X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:22:Greater vault (butterfly)
+X:8:25:18:40
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X*9..&XX***++^^^^^^^^^^^^++***XX&..*9X%
+D:%X9..&XX,,,,,XX^^^^^^^^^^XX,,,,,#X&..*X%
+D:%X..&#X.....,.XX^^^^^^^^XX..&....XX&..X%
+D:%X.&XX..,.&....XX^^^^^^XX..,...&..XX&.X%
+D:%X&XX..*...&.^..XX^^^^XX..*....,..,XX&X%
+D:%XXXX+XXXXXXXXXXXXX++XXXXXXXXXXXXX+XXXX%
+D:%+....,.,.X&&&&***+99+***&&&&X,.,.,...+%
+D:%+...,.,.,X&&&&***+99+***&&&&X.,.,....+%
+D:%XXXX+XXXXXXXXXXXXX++XXXXXXXXXXXXX+XXXX%
+D:%X&XX..*....&...XX^^^^XX...*...&,..#X&X%
+D:%X.&XX..&.^....XX^^^^^^XX....&....XX&.X%
+D:%X..&XX....&..XX^^^^^^^^XX..,..*.XX&..X%
+D:%X*..&#X,,,,,XX^^^^^^^^^^XX,,,,,XX&..9X%
+D:%X9*..&XX***++^^^^^^^^^^^^++***XX&..*9X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+N:23:Greater vault (castle)
+X:8:35:27:27
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.........................%
+D:%..XXXXX..XXX+XXX..XXXXX..%
+D:%..X,,,X..X.,,,.X..X,,,X..%
+D:%..X,,*XXXX.&&&.XXXX*,,X..%
+D:%..XXXX+....&&&....+XXXX..%
+D:%.....X.....,,,.....X.....%
+D:%.....X..,XXX+XXX,..X.....%
+D:%.....X.XXX^^^^^XXX.X.....%
+D:%.&...X.X,,*****,,X.X..&..%
+D:%....XX.X,XXX+XXX,X.XX....%
+D:%....X..X,X@@@@@X,X..X....%
+D:%....X..X,X@999@X,X..X....%
+D:%....X..X,X@989@X,X..X....%
+D:%....X..X,X@999@X,X..X....%
+D:%....X..X,X@@@@@X,X..X....%
+D:%....XX.X,XXX+XXX,X.XX....%
+D:%.....X.X,,*****,,X.X.....%
+D:%.....X.XXX^^^^^XXX.X.....%
+D:%.....X..,XXX+XXX,..X.....%
+D:%.....X.....&&&.....X.....%
+D:%..XXXX+....&&&....+XXXX..%
+D:%..X,,*XXXX.&&&.XXXX*,,X..%
+D:%..X,,,X..X.,,,.X..X,,,X..%
+D:%..XXXXX..XX^^^XX..XXXXX..%
+D:%.........................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:24:Greater vault (chambers)
+X:8:25:15:40
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%&+.^..^..^..^..^..^..^..^..^..^..^..+&%
+D:%+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+%
+D:%.X.&.^,X&^&^X****+^*^@^X.*.&..X..*.,X.%
+D:%^X.,.&^+^&^@X^^^^X@^*^*X....*^+.^...X^%
+D:%.X*..,.XXX+XXXX+XXXX+XXX.&.^..X..&,.X.%
+D:%^X..^.*X*..^&&@@*X,,,,,XXXX+XXX,....X^%
+D:%.XX+XXXXXXXXXXXXXX,*8*,X,,,,,,XXX+XXX.%
+D:%^X*&X.&,*.X,*&^*^X,,,,,X,,,,,,X....,X^%
+D:%.X&,+....*+,*&^*^XXXXXXXXXX+XXX.,...+.%
+D:%^X.,X.*.&.X,*&^*^+.,.&.^*.&^&^X.....X^%
+D:%.X^*X.,..,X,*&^*^X*.^*.,..&&&^X,..,.X.%
+D:%+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+%
+D:%&+..^..^..^..^..^..^..^..^..^..^..^.+&%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:25:Greater vault (Sierpinski)
+X:8:35:28:39
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..................X..................%
+D:%.................XXX.................%
+D:%.................X8X.................%
+D:%.....&..........XX+XX................%
+D:%...............XX999XX........&......%
+D:%......&........X@X9X@X...............%
+D:%..............XXXX+XXXX..............%
+D:%.............XX*@*@*@*XX....&........%
+D:%.............X@X*@*@*X@X.............%
+D:%............XXXX**@**XXXX............%
+D:%..........&XX,,,X***X,,,XX&..........%
+D:%..........XX,X@X,X,X,X@X,XX..........%
+D:%.........XXXXX+XXXXXXX+XXXXX.........%
+D:%........XX+,,,,,,,,,,,,,,,+XX........%
+D:%........X@X,,,,,,,,,,,,,,,X@X........%
+D:%.......XX+XX,,,,,,,,,,,,,XX+XX.......%
+D:%......XX,,,XX,,,,,,,,,,,XX,,,XX......%
+D:%......X,X,X,X,,,,,,,,,,,X,X,X,X......%
+D:%.....XXXX+XXXX,,,,,,,,,XXXX+XXXX.....%
+D:%....XX*******XX,,,,,,,XX*******XX....%
+D:%....X,X*****X,X,,,,,,,X,X*****X,X....%
+D:%...XXXX*****XXXX,,,,,XXXX*****XXXX...%
+D:%..XX,,,X***X,,,XX,,,XX,,,X***X,,,XX..%
+D:%..X,X,X,X*X,X,X,X,,,X,X,X,X*X,X,X,X..%
+D:%.XXXXXXXX+XXXXXXXXXXXXXXXXX+XXXXXXXX.%
+D:%.........&.................&.........%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:26:Greater vault (swastika)
+X:8:25:23:29
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%....^^^^^^^^^^^^^^^^^^^^^..%
+D:%^^^^^###################^..%
+D:%^####+..#..............#^..%
+D:%^#.....####.XXXXXXXXXX.#^..%
+D:%^#...&.#,&..X,,,@,@,9X.#^..%
+D:%^#.XXX.####.X,XXXXXXXX.#^..%
+D:%^#.X9X..&,#.X,X......&.#^^^%
+D:%^#.X,X.####.X,X.#######+##^%
+D:%^#.X@X.....^X^X^.........#^%
+D:%^#.X@XXXXXXX+*+XXXXXXXXX.#^%
+D:%^#.X,,,,,,,^*X*^,,,,,,,X.#^%
+D:%^#.XXXXXXXXX+*+XXXXXXX@X.#^%
+D:%^#.........^X^X^.....X@X.#^%
+D:%^##+#######.X,X.####.X,X.#^%
+D:%^^^#.&......X,X.#,&..X9X.#^%
+D:%..^#.XXXXXXXX,X.####.XXX.#^%
+D:%..^#.X9,@,@,,,X..&,#.&...#^%
+D:%..^#.XXXXXXXXXX.####.....#^%
+D:%..^#..............#..+####^%
+D:%..^###################^^^^^%
+D:%..^^^^^^^^^^^^^^^^^^^^^....%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:27:Greater vault (great spiral)
+X:8:40:39:39
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.....................................%
+D:%.X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X@X.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^^+.%
+D:%.X.X^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X.X.X,..,..,..,..,..,..,..,..,..,.X.%
+D:%.X.X^X.XXXXXXXXXXXXXXXXXXXXXXXXXXX.X.%
+D:%.X.X.X.X......&...&...&...&...@..X,X.%
+D:%.X.X^X,X@XXXXXXXXXXXXXXXXXXXXXXX.X.X.%
+D:%.X.X.X.X.X&.........8.........&X*X.X.%
+D:%.X.X^X.X.X.XXXXXXXXXXXXXXXXXXX.X.X,X.%
+D:%.X.X.X,X.X.X.^.^.^.^.^.^.^.^.X.X.X.X.%
+D:%.X.X^X.X.X.X^XXXXXXXXXXXXXXX*X.X*X.X.%
+D:%.X.X.X.X&X.X.X,..,..,..,..,X.X.X.X,X.%
+D:%.X.X^X,X.X.X^X.XXXXXXXXXXX.X*X.X.X.X.%
+D:%.X.X.X.X.X.X.X.X..&..&..9X.X.X.X*X.X.%
+D:%.X.X^X.X&X.X^X,X9XXXXXXX.X,X*X.X.X,X.%
+D:%.X.X.X,X.X.X.X.X&X@@..&X.X.X.X.X.X.X.%
+D:%.X.X^X.X.X9X^X.X*X+XXX.X&X.X*X.X*X.X.%
+D:%.X.X.X.X.X.X.X,X^+8+^X.X.X,X.X.X.X,X.%
+D:%.X9X^X,X.X.X^X.XXX+X^X.X*X.X*X.X.X.X.%
+D:%.X.X.X.X&X.X.X.,.,,X.X9X.X.X.X.X*X.X.%
+D:%.X.X^X.X.X.X^XXXXXXX^X.X*X,X*X9X.X,X.%
+D:%.X.X.X,X.X.X.^.^.^.^.X.X.X.X.X.X.X.X.%
+D:%.X.X^X.X.X.XXXXXXXXXXX.X^X.X^X.X*X.X.%
+D:%.X.X.X.X8X&.....9.....&X.X,X.X.X.X,X.%
+D:%.X.X^X,X.XXXXXXXXXXXXXXX^X.X^X.X.X.X.%
+D:%.X.X.X.X..&....8......@..X.X.X.X*X.X.%
+D:%.X.X^X.XXXXXXXXXXXXXXXXXXX,X^X.X.X,X.%
+D:%.X.X.X,..,..,..,..,..,..,..X.X.X.X.X.%
+D:%.X.X^XXXXXXXXXXXXXXXXXXXXXXX^X.X*X.X.%
+D:%.X.X.*.^.*.*.*.*.*.*.*.*.*.^.X.X.X,X.%
+D:%.X.XXXXXXXXXXXXXXXXXXXXXXXXXXX.X.X.X.%
+D:%.X&.............9.............&X*X.X.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X,X.%
+D:%.+^^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.X,X.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X.%
+D:%.....................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:28:Greater vault (greater castle)
+X:8:40:25:51
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.................................................%
+D:%...XXXXXX...............................XXXXXX...%
+D:%..XX,,,,XX.............................XX,,,,XX..%
+D:%.XX,*99*,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,*99*,XX.%
+D:%.XX,*99*,+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+,*99*,XX.%
+D:%..XX,,,,XXXXXXXXXXXXXXX+X+XXXXXXXXXXXXXXX,,,,XX..%
+D:%...XX++XX...............X...............XX++XX...%
+D:%....X^^X.............XXXXXXX.............X^^X....%
+D:%....X^^X.X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X.X^^X....%
+D:%....X^^X.X^^^XXXXXXXXXXXXXXXXXXXXXXX^^^X.X^^X....%
+D:%....X^^+&X^^XX@.+***************+.@XX^^X&+^^X....%
+D:%....X^^XXX^^+@.@X*9999988899999*X@.@+^^XXX^^X....%
+D:%....X^^+.X^^XX@.+***************+.@XX^^X.+^^X....%
+D:%....X^^X.X^^^XXXXXXXXXXXXXXXXXXXXXXX^^^X.X^^X....%
+D:%....X^^X.X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X.X^^X....%
+D:%....X^^X............XXXX+XXXX............X^^X....%
+D:%...XX++XX..........XX&.&.&.&XX..........XX++XX...%
+D:%..XX,,,,XXXXXXXXXXXX&.&.&.&.&XXXXXXXXXXXX,,,,XX..%
+D:%.XX,*99*,+********9XXXXX+XXXXX9********+,*99*,XX.%
+D:%.XX,*99*,XXXXXXXXXXX&.&.&.&.&XXXXXXXXXXX,*99*,XX.%
+D:%..XX,,,,XX.........XX&.&.&.&XX.........XX,,,,XX..%
+D:%...XXXXXX...........XXXX+XXXX...........XXXXXX...%
+D:%.................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:29:Lesser vault (x-factor)
+X:8:25:25:26
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%^^^^^^^^^^^^^^^^^^^^^^^^%
+D:%^##########++##########^%
+D:%^#XX,,,,,,,,,,,,,,,,XX#^%
+D:%^#,XX,,,,,,,,,,,,,,XX,#^%
+D:%^#,,XX,,,,,,,,,,,,XX,,#^%
+D:%^#,,,XX,,,,,,,,,,XX,,,#^%
+D:%^#,,,,XX,,,,,,,,XX,,,,#^%
+D:%^#,,,,,XX,,,,,,XX,,,,,#^%
+D:%^#,,,,,,XX,,,,XX,,,,,,#^%
+D:%^#,,,,,,,X+XX+X,,,,,,,#^%
+D:%^+,,,,,,,,X99X,,,,,,,,+^%
+D:%^+,,,,,,,,X99X,,,,,,,,+^%
+D:%^+,,,,,,,,X99X,,,,,,,,+^%
+D:%^#,,,,,,,X+XX+X,,,,,,,#^%
+D:%^#,,,,,,XX,,,,XX,,,,,,#^%
+D:%^#,,,,,XX,,,,,,XX,,,,,#^%
+D:%^#,,,,XX,,,,,,,,XX,,,,#^%
+D:%^#,,,XX,,,,,,,,,,XX,,,#^%
+D:%^#,,XX,,,,,,,,,,,,XX,,#^%
+D:%^#,XX,,,,,,,,,,,,,,XX,#^%
+D:%^#XX,,,,,,,,,,,,,,,,XX#^%
+D:%^##########++##########^%
+D:%^^^^^^^^^^^^^^^^^^^^^^^^%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:30:Greater vault (university)
+X:8:30:29:38
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%....................................%
+D:%.##################################.%
+D:%.#*+..&#..,#,#..,#,#..,#,#.,#&+*#*#.%
+D:%.#####.#.###.#.###.#.###.#.##.###+#.%
+D:%.#***#.#.#*..#.#*..#.#*..#.#..#..&#.%
+D:%.#+###+#+###+#+###+#+###+#+##+###+#.%
+D:%.#...+&......................&+...#.%
+D:%.#.###.##########++##########.###.#.%
+D:%.#,#.+.#,,,,,,,,,,,,,,,,,,,,#.#*#,#.%
+D:%.###.#.#,.,..,..,@.,..,..,.,#.#.###.%
+D:%.#,..#.#,..,..,..,..,..,..,,#.+..,#.%
+D:%.#####.#,9&,,,9,,&,,&,,.,,,,#.#####.%
+D:%.+^^^+.+,,,&,,,&,,,9,,&,,&,,+.+^^^+.%
+D:%.+^^^+.+,.,...,...,...,...,,+.+^^^+.%
+D:%.###+#.#,,,,&,,&,,,9,&,,,&,,#.#####.%
+D:%.#*#&#.#,,,&,,,9,&,,&,,,,,9,#.#..,#.%
+D:%.#+#*#.#,.,...,....,....,..,#.#.###.%
+D:%.#.###.#,,,&,,,,&,9,,&,,,&,,#.+.#,#.%
+D:%.#&..+.#,,,,,,,,.,,,,,,,,,,,#.###.#.%
+D:%.#####.##########++##########.+...#.%
+D:%.#&..+&......................&#+###.%
+D:%.#.###+#+###+#+###+#+###+#+##+#...#.%
+D:%.#.+*#.#.#*..#.#*..#.#*..#.#..###,#.%
+D:%.#####.#.###.#.###.#.###.#.##&#*###.%
+D:%.#*+..&#..,#,#..,#,#..,#,#.,#.+,*,#.%
+D:%.##################################.%
+D:%....................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:31:Greater vault (nethack castle (almost))
+X:8:35:19:62
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%............................................................%
+D:%.XXXXXXX............................................XXXXXXX.%
+D:%.X,,9,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,,9,,X.%
+D:%.X,,,,,+.......^....*....^ ..........^.......*...^..+,,,,,X.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%......X,.,9,,,,X,,,,,,,,,+,.,.,.,.,.,X,.,.,.+^+,.,.,.X......%
+D:%......X,.9*9,.,X,,,,,,,,,X,.,..,..,.,X,.,.,.X^X,.,.,.X......%
+D:%....&.X.&*@*&,.XXXXXXXXXXX,.,.,9,.,.,XXXXXXXX+XXXXXXXX......%
+D:%......+9*@8@*9.+^^^^^^^^^+,.,,9@9,,.,+^^^^^^^^^^^^^^^+......%
+D:%....&.X.&*@*&,.XXXXXXXXXXX,.,.,9,.,.,XXXXXXXX+XXXXXXXX......%
+D:%......X,.9*9,.,X,,,,,,,,,X,.,.,,,.,.,X.,.,.,X^X.,.,.,X......%
+D:%......X,.,9,,,,X,,,,,,,,,+,.,.,.,.,.,X.,.,.,+^+.,.,.,X......%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X,,,,,+.......^....*....^...........^.......*...^..+,,,,,X.%
+D:%.X,,9,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,,9,,X.%
+D:%.XXXXXXX............................................XXXXXXX.%
+D:%............................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:32:Greater vault (another nethack-style castle)
+X:8:30:18:52
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..................................................%
+D:%.XXXXX......................................XXXXX.%
+D:%.X9,,X......................................X,,9X.%
+D:%.XXX+XXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX+XXX.%
+D:%...X^^^^^^^^^^^^^^^^^^^+..+^^^^^^^^^^^^^^^^^^^X...%
+D:%...X^XXXXXXXXXXXXXXXXXXX++XXXXXXXXXXXXXXXXXXX^X...%
+D:%...X^X,,,,,,,,,,,,,,,,,X..X,,,,,,,,,X,,@@@@,X^X...%
+D:%...X^X,,,,,,,,,,,,,,,,,+..+,,,,,,,,,+,,,,998X^X...%
+D:%...X^X,,,,,,,,,,,,,,,,,+..+,,,,,,,,,+,,,,998X^X...%
+D:%...X^X,,,,,,,,,,,,,,,,,X..X,,,,,,,,,X,,@@@@,X^X...%
+D:%...X^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX^X...%
+D:%...X^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^X...%
+D:%.XXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXX.%
+D:%.X9,,X......................................X,,9X.%
+D:%.XXXXX......................................XXXXX.%
+D:%..................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:33:Lesser vault (nethack-style tower)
+X:7:5:15:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%.................%
+D:%...###.###.###...%
+D:%...#&#.#&#.#&#...%
+D:%.###+###+###+###.%
+D:%.#.,.,.,.+.+,,,#.%
+D:%.###+#####.#####.%
+D:%...+*&*&*#.+,#...%
+D:%.###+#####.#####.%
+D:%.#.,.,.,.+.+,,,#.%
+D:%.###+###+###+###.%
+D:%...#&#.#&#.#&#...%
+D:%...###.###.###...%
+D:%.................%
+D:%%%%%%%%%%%%%%%%%%%
+
+
+N:34:Lesser vault (nethack, rooms)
+X:7:5:14:27
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.........................%
+D:%.#+#####################.%
+D:%.#.^.^.^.+^+^...^#,,,,,#.%
+D:%.#^###+###^#####.+,,,,,#.%
+D:%.#.#,,,,,#.#,,,#^#,,,,,#.%
+D:%.#^#,,,,,#^+,,,#+#######.%
+D:%.#.#######.#,,,#.......#.%
+D:%.#^#,,,,,#^#,,,#..&.&..#.%
+D:%.#.#,,,,,#.#####.......#.%
+D:%.#^+,,,,,#^.^.^+..&.&.^+.%
+D:%.#######################.%
+D:%.........................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:35:Lesser vault (nethack city)
+X:7:9:17:33
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%...............................%
+D:%.############.....############.%
+D:%.#,,,#,,,#,,#.....#**#,,,#***#.%
+D:%.#,,,#,,,#,,#.....+**#,,,#***#.%
+D:%.#,,,#,,,#,,#.....#**#,,,#&&&#.%
+D:%.#^,,#,,,#+##.....####+###+###.%
+D:%.#+####+##.....................%
+D:%...............................%
+D:%.#+###+###....###+##...........%
+D:%.#^,,#^,,####.#,,,,#.######+##.%
+D:%.#,,,#,,,#**#.#,&&,#.+^^#,,,,#.%
+D:%.#,,,#,,,#*^+.#,&@,#.#^^#,,,,#.%
+D:%.#,,,#,,,#**#.#,,,,#.#**#,,,,#.%
+D:%.############.######.#########.%
+D:%...............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:36:Greater vault (nethack, large city)
+X:8:25:21:54
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%....................................................%
+D:%.##################################################.%
+D:%.#................................................#.%
+D:%.#.####################.########..#####.#########.#.%
+D:%.#.#^,,,,^#^****^#^,,^#.#^,,,,^#..#^^^#.#^,,,,,^#.#.%
+D:%.#.#^,,,,^#^****^#^,,^#.#^,,,,^#..+^**#.#^,,,,,^#.#.%
+D:%.#.#^,,,,^#^,,,,^#^^^^#.#^^^^^^#..#^^^#.#^,,,,,^#.#.%
+D:%.#.#^^^^^^#^^^^^^###+##.###+####..#####.#^^^^^^^#.#.%
+D:%.#.#+#########+###......................######+##.#.%
+D:%.#................................................#.%
+D:%.#.###+######+####......###+########..............#.%
+D:%.#.#^^^^^^#^^^^^^######.#^^^^^^^^^^#...###+#####..#.%
+D:%.#.#^,,,,^#^,,,,^#^^^^+.#^,,,,,,,,^#...#^^^^^^^#..#.%
+D:%.#.#^****^#^,,,,^#,,,^#.#^@999999@^#...#^,,,,,^#..#.%
+D:%.#.#^****^#^,,,,^#,,,^#.#^^^^^^^^^^#...#^,,,,,^#..#.%
+D:%.+.####################.############...#########..#.%
+D:%.#................................................#.%
+D:%.##################################################.%
+D:%....................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:37:Lesser vault (nethack, tiny castle)
+X:7:5:14:34
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%................................%
+D:%.#####....................#####.%
+D:%.#*,&#....................#&,*#.%
+D:%.###+######################+###.%
+D:%...#,,,,,,,,,,,,,#,,,,,,,,,,#...%
+D:%...+,,,,,,,,,,,,,+,,,,,,,,,,+...%
+D:%...+,,,,,,,,,,,,,+,,,,,,,,,,+...%
+D:%...#,,,,,,,,,,,,,#,,,,,,,,,,#...%
+D:%.###+######################+###.%
+D:%.#*,&#....................#&,*#.%
+D:%.#####....................#####.%
+D:%................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:38:Greater vault (nethack mirror)
+X:8:25:22:41
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.......................................%
+D:%...............XXXX+XXXX...............%
+D:%...............X**X^X**X...............%
+D:%....XXXXXXXXXXXX**X^X**XXXXXXXXXXXX....%
+D:%....X^+99999999X+XX^XX+X99999999+^X....%
+D:%....X^X9*******X,,X^X,,X*******9X^X....%
+D:%....X^X9*******X,,X^X,,X*******9X^X....%
+D:%.XXXX+XXXXXXXXXXX+X+X+XXXXXXXXXXX+XXXX.%
+D:%.X**X,,,,,,,,,,X,,,,,,,X,,,,,,,,,,X**X.%
+D:%.X*@+,,,,,,,,,,+,,,,8,,X,,,,,,,,,,+@*X.%
+D:%.X*@+,,,,,,,,,,X,,,8,,,+,,,,,,,,,,+@*X.%
+D:%.X**X,,,,,,,,,,X,,,,,,,X,,,,,,,,,,X**X.%
+D:%.XXXX+XXXXXXXXXXX+X+X+XXXXXXXXXXX+XXXX.%
+D:%....X^X9*******X,,X^X,,X*******9X^X....%
+D:%....X^X9*******X,,X^X,,X*******9X^X....%
+D:%....X^+99999999X+XX^XX+X99999999+^X....%
+D:%....XXXXXXXXXXXX**X^X**XXXXXXXXXXXX....%
+D:%...............X**X^X**X...............%
+D:%...............XXXX+XXXX...............%
+D:%.......................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:39:Greater vault (nethack tomb)
+X:8:25:13:57
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.......................................................%
+D:%..........XXXXX.XXXXX.XXXXX.XXXXX.XXXXX................%
+D:%..........X,,,X.X,,,X.X,,,X.X,,,X.X,,,X................%
+D:%.XXXXXXXXXX,&,XXX,&,XXX,&,XXX,&,XXX,&,XXXXXXXXXXXXXXXX.%
+D:%.X&^&X....^...^...^...^...^...^...^..^..X,,,,,,,,X,,9X.%
+D:%.+^^^+..^...^...^...^...^...^...^...^.@.+,,,,,,,,+,98X.%
+D:%.X&^&X....^...^...^...^...^...^...^.....X,,,,,,,,X,,9X.%
+D:%.XXXXXXXXXX,&,XXX,.,XXX,.,XXX,&,XXX,&,XXXXXXXXXXXXXXXX.%
+D:%..........X,,,X.X,,,X.X,,,X.X,,,X.X,,,X................%
+D:%..........XXXXX.XXXXX.XXXXX.XXXXX.XXXXX................%
+D:%.......................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:40:Greater vault (nethack hell level #1)
+X:8:30:17:55
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.....................................................%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.XX*XXXXXXXXXX**XXXXXXXXXXXX***********************X.%
+D:%.XX*X,,,,X***X+XX,,,,,,X***XXXXXXXXXXXX^^^^^^^^^^^^X.%
+D:%.XX,X,,,,+***X@^+,,,,,,X***+,,,,,,,,,,X^^^^^^^^^^^^X.%
+D:%.XX&X,,,,XXXXXXXX^^^^^^^^^^X,,,XXXXXXXXXXXXXX^^^^^^X.%
+D:%.XX+X....XXXX.............^X,,,+,,,,,,,,,,,9XXXXX^^X.%
+D:%.+^^^^^^^^^^+^^^^^^^^^^^^^^XXXXX,,,,,,,,,,,9+888+@@X.%
+D:%.XX+X....XXXX.............^X,,,+,,,,,,,,,,,9XXXXX^^X.%
+D:%.XX&X,,,,XXXXXXXX^^^^^^^^^^X,,,XXXXXXXXXXXXXX^^^^^^X.%
+D:%.XX,X,,,,+***X@^+,,,,,,X***+,,,,,,,,,,X^^^^^^^^^^^^X.%
+D:%.XX*X,,,,X***X+XX,,,,,,X***XXXXXXXXXXXX^^^^^^^^^^^^X.%
+D:%.XX*XXXXXXXXXX**XXXXXXXXXXXX***********************X.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.....................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:41:Greater vault (nethack hell level #2)
+X:8:30:15:54
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%....................................................%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...%
+D:%.+^XX,+^^^^^X^^^^^^^^^^^^^^^^^^^^^X,,,X,@^X*^*+9X...%
+D:%.X^XX,X^XXX,X@XXXXXXXXXXXXXXXXXXX^X,X,X,X^X*X*X9X...%
+D:%.X^XX,X^^^X,X^^^^^^^^^^^^^^^^^^@X^X,X,X,X^X*X*X9X...%
+D:%.X^XXXXXX^X,XXXXXXXXXXXXXXXXXXX^X^X,X,X,X^X*X*X+XXX.%
+D:%.X^^^^^^X^X,X,,,,,,,,,,,,,,,,,X^X^X,X,X,X^X*X*X888X.%
+D:%.X+XXXX^X^X,X,XXXXXXXXXXXXXXX,X^X^X,X,X,X^X*X*X+XXX.%
+D:%.X,XX,X^X^X,X,X,,,,,,,,,,,,,,,X^X^X,X,X,X^X*X*X9X...%
+D:%.X,XX,X^X&X,X,X,XXXXXXXXXXXXXXX^X^X,X,X,X^X*X*X9X...%
+D:%.X,XX,+^^^X,,,X^^^^^^^^^^^^^^^^^X^@,X,,,X^@*X*+9X...%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...%
+D:%....................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:42:Greater vault (nethack hell level #3)
+X:8:30:17:55
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.....................................................%
+D:%...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........%
+D:%...X,,,,,,,,,,,,,,,,,,,,,XXX^^^^^^^^^^^^^^^X.........%
+D:%...X,^^^^^^^^^^XXXX,,,,,,+&&^XXXXXXXXXXXX^^+.........%
+D:%...X,^XXXXXX******X,,XXXXXXXXX^^^^******XXXX.........%
+D:%...X,^X****X@*XXXXXXXX,,,,,,,,,,,XXXXXXXXXXXXXX......%
+D:%.XXXX+X,,,,XXXX,,,,,,,,,,,,,,,,,^+************XXXXX..%
+D:%.X@,,,,,XX,,,,+,,XXXXXXXXXXXXXXXXX****9999****+888X..%
+D:%.XXXX+X,,,,XXXX,,,,,,,,,,,,,,,,,^+************XXXXX..%
+D:%...X,^X****X@*XXXXXXXX,,,,,,,,,,,XXXXXXXXXXXXXX......%
+D:%...X,^XXXXXX******X,,XXXXXXXXX^^^^******XXXX.........%
+D:%...X,^^^^^^^^^^XXXX,,,,,+&&^^XXXXXXXXXXXX^^+.........%
+D:%...X,,,,,,,,,,,,,,,,,,,,XXX^^^^^^^^^^^^^^^^X.........%
+D:%...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........%
+D:%.....................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:43:Lesser vault (easter egg)
+X:7:5:14:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%.................%
+D:%.###############.%
+D:%.#,^,^,^,^,^,^,#.%
+D:%.#+###########^#.%
+D:%.#,^,^,^,^,^,#,#.%
+D:%.###########,#^#.%
+D:%.#,^,^,^,^,#^#,#.%
+D:%.#+#######,#,#^#.%
+D:%.#,,,,,,,#^#^#,#.%
+D:%.#,,,,,,,#,+,#^+.%
+D:%.###############.%
+D:%.................%
+D:%%%%%%%%%%%%%%%%%%%
+
+N:44:Greater vault (nethack samurai castle)
+X:8:35:20:59
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.........................................................%
+D:%.XXXXX.............................................XXXXX.%
+D:%.X***X.............................................X***X.%
+D:%.X***XXX.....XX+XXXXXXXXXXXXXXXXXXXXXXXXX+XX.....XXX***X.%
+D:%.XXX@,,X.....X^&^X,,,X***X,,,X***X^^^+8X^&^X.....X,,@XXX.%
+D:%...X,,,XXXXXXX^^^X,,,X^^^X,,,X^^^X@@^X8X^^^XXXXXXX,,,X...%
+D:%...XXX^^^^^^^^^XXXXX+XXX+X+XXXXX+X+XXXXXXX^^^^^^^^^XXX...%
+D:%.....X^^XXXXXXXX*X,,,,,,,,,,,,,,,,,,,,,X*XXXXXXXX^^X.....%
+D:%.....X^^+,,,,,,,,+,,,,,,,,,99,,,,,,,,,,+,,,,,,,,+^^X.....%
+D:%.....X^^+,,,,,,,,+,,,,,,,,,99,,,,,,,,,,+,,,,,,,,+^^X.....%
+D:%.....X^^XXXXXXXX*X,,,,,,,,,,,,,,,,,,,,,X*XXXXXXXX^^X.....%
+D:%...XXX^^^^^^^^^XXXXXXX+X+XXXXX+X+XXX+XXXXX^^^^^^^^^XXX...%
+D:%...X,,,XXXXXXX^^^X8X^@@X^^^X^^^X,,,X,,,X^^^XXXXXXX,,,X...%
+D:%.XXX@,,X.....X^&^X8+^^^X***X***X,,,X,,,X^&^X.....X,,@XXX.%
+D:%.X***XXX.....XX+XXXXXXXXXXXXXXXXXXXXXXXXX+XX.....XXX***X.%
+D:%.X***X.............................................X***X.%
+D:%.XXXXX.............................................XXXXX.%
+D:%.........................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:45:Greater vault (nethack samurai castle #2)
+X:8:35:20:61
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%...........................................................%
+D:%.XXXXXXXXXXXXX...............................XXXXXXXXXXXXX.%
+D:%.X,,^^^^^^^,,X...............................X,,^^^^^^^,,X.%
+D:%.X,,^XXXXX^,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,,^XXXXX^,,X.%
+D:%.X,,^+999X^,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,X,,^X999+^,,X.%
+D:%.X,,^XXXXX^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^XXXXX^,,X.%
+D:%.X^^^^^^^^^^^XXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXXX^^^^^^^^^^^X.%
+D:%.XXXX^^^XXXXXXXX*X,,,,,,,,,,,,,,,,,,,,,,,X*XXXXXXXX^^^XXXX.%
+D:%....+^^^X********+,,,,,,,,,,,,,,,,,,,,,,,+********X^^^+....%
+D:%....+^^^X********+,,,,,,,,,,,,,,,,,,,,,,,+********X^^^+....%
+D:%.XXXX^^^XXXXXXXX*X,,,,,,,,,,,,,,,,,,,,,,,X*XXXXXXXX^^^XXXX.%
+D:%.X^^^^^^^^^^^XXXXXX+XXXXXXXXXXXXXXXXXXX+XXXXXX^^^^^^^^^^^X.%
+D:%.X,,^XXXXX^,,^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^XXXXX^,,X.%
+D:%.X,,^+999X^,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,X,,^X999+^,,X.%
+D:%.X,,^XXXXX^,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,,^XXXXX^,,X.%
+D:%.X,,^^^^^^^,,X...............................X,,^^^^^^^,,X.%
+D:%.XXXXXXXXXXXXX...............................XXXXXXXXXXXXX.%
+D:%...........................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:46:Greater vault (nethack spiral)
+X:8:30:19:38
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.........XXXXXXXXX+XXXXXXXXX........%
+D:%......XXXX^^^^^^^^^^^^^^^^^XXXX.....%
+D:%...XXXX^^^^^XXXXXXXXXXXXX^^^^^XXXX..%
+D:%..XX^^^^^XXXX^^^^^^^^^^^XXXX^^^^^XX.%
+D:%.XX^^^^XXX^^^^XXXXXXXXX^^^^XXX^^^^XX%
+D:%.X^^^^XX^^^^XXX,^^^^^,XXX^^^^XX^^^^X%
+D:%.X,,,XX,,,XXX,,^XX+XX^,,XXX,,,XX,,,X%
+D:%.X,,,X,,,,X,,,^XX***XX^,,,X,,,,X,,,X%
+D:%.X,,,X,99,X,,,^+@888@+^,,,X,,,,+,,,X%
+D:%.X,,,X,,,,X,,,^XX***XX^,,,X,,,,X,,,X%
+D:%.X,,,XX,,,XXX,,^XX+XX^,,XXX,,,XX,,,X%
+D:%.X,,,,XX^^^^XXX,^^^^^,XXX^^^^XX,,,,X%
+D:%.XX,,,,XXX^^^^XXXX+XXXX^^^^XXX,,,,XX%
+D:%..XX,,,**XXXX^^^^^^^^^^^XXXX,,,,,XX.%
+D:%...XXXX**,,,XXXXXXXXXXXXX,,,,,XXXX..%
+D:%......XXXX,,,,,,,,,,,,,,,,,XXXX.....%
+D:%.........XXXXXXXXXXXXXXXXXXX........%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:47:Greater vault (nethack building)
+X:8:30:16:41
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%...X^^^^^^^^^^^^^^^^X**@**X**@**X**@**X%
+D:%...X^^XXXXXXXXXXXX^^XXX+XXXXX+XXXXX+XXX%
+D:%...X^^X,,,,,,,,,,X^^X^^^^^^^^^^^^^^^^^X%
+D:%...X^^X,,,,,,,,,,X^^X+XXX+XXX+XXXXX+XXX%
+D:%.XXX^^X,,,,,,,,,,X^^^^^^X,,,X,,,X,,,,,X%
+D:%.+^&^^X,,,,,,,,,,+^^^^^^X,,,X,,,X,989,X%
+D:%.+^&^^X,,,,,,,,,,+^^^^^^X,,,X,,,X,989,X%
+D:%.XXX^^X,,,,,,,,,,X^^^^^^X,,,X,,,X,,,,,X%
+D:%...X^^X,,,,,,,,,,X^^X+XXXXX+XXX+XXX+XXX%
+D:%...X^^X,,,,,,,,,,X^^X^^^^^^^^^^^^^^^^^X%
+D:%...X^^XXXXXXXXXXXX^^XXX+XXXXX+XXXXX+XXX%
+D:%...X^^^^^^^^^^^^^^^^X**@**X**@**X**@**X%
+D:%...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:48:Lesser vault (nethack, spiral rooms)
+X:7:5:13:32
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..............................%
+D:%....#######################...%
+D:%..###^+,,,,,,#^^^^^^^^^^+*###.%
+D:%..#,#^#,,,,,,#+############,#.%
+D:%..#^#^#,,,,,,#,,,+,,,,,,#^#^#.%
+D:%..+^+^#,,,,,,#,,,#,,,,,,#^+^+.%
+D:%..#^#^#,,,,,,+,,,#,,,,,,#^#^#.%
+D:%..#,############+#,,,,,,#^#,#.%
+D:%..###*+^^^^^^^^^^#,,,,,,+^###.%
+D:%....#######################...%
+D:%..............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:49:Greater vault (nethack building)
+X:8:30:17:54
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%....................................................%
+D:%........XXXXXXXXXXXXX.................XXXXXXXXXXXXX.%
+D:%........X***********X.................X***********X.%
+D:%.XXXXXXXX***********XXXXXXXXXXXXXXXXXXX***********X.%
+D:%.+^^^^^^X,,,,,,,,,,,X**X**X**X**X**X**X*,,,,,,,,,*X.%
+D:%.X^,,,,^X^,,,,,,,,,,X,@X,@X,@X,@X,@X,@X,,,,,,,,,,,X.%
+D:%.X^^^^^^+^^^^^^^^^^^XX+XX+XX+XX+XX+XX+X,,,,,,,,,,,X.%
+D:%.XXXXXXXX^^^^^^^^^^^+^^^^^^^^^^^^^^^^^+,,,,,89,,,,X.%
+D:%.X^^^^^^+^^^^^^^^^^^XX+XX+XX+XX+XX+XX+X,,,,,98,,,,X.%
+D:%.X^,,,,^X^,,,,,,,,,,X,@X,@X,@X,@X,@X,@X,,,,,,,,,,,X.%
+D:%.+^^^^^^X,,,,,,,,,,,X**X**X**X**X**X**X*,,,,,,,,,*X.%
+D:%.XXXXXXXX***********XXXXXXXXXXXXXXXXXXX***********X.%
+D:%........X***********X.................X***********X.%
+D:%........XXXXXXXXXXXXX.................XXXXXXXXXXXXX.%
+D:%....................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:50:Lesser vault (nethack, head)
+X:7:7:17:29
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%........###########........%
+D:%...#####################...%
+D:%...######,,,,,,,,,######...%
+D:%..#+^^^^#,,,,,,,,,#^^^^+#..%
+D:%..##^^^^#,,,,,,,,,+^,,^##..%
+D:%.#####+##,,,,,,,,,#^^^^###.%
+D:%.##^^^^^^,,,,,,,,,########.%
+D:%.####+###++#########*@+*##.%
+D:%.##^^^^^#^^#,,,#^@^####*##.%
+D:%.##^^,,^#^^#,###^#^#****##.%
+D:%..##^,,^#^^#,,,.^#^#@####..%
+D:%..#+^^^^#^^#####^#^^^^^##..%
+D:%...######^^^^^^^^#######...%
+D:%...#####################...%
+D:%........###########........%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:51:Lesser vault (maze of rooms)
+X:7:10:16:32
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..............................%
+D:%.#+##########################.%
+D:%.#^#,,,+^#*#^+,,+*#^+^#*#**@#.%
+D:%.#^+,,,#^+^+^######^#^#*###+#.%
+D:%.#########+###,,,,#^#,+@#,,,#.%
+D:%.#,,,,,,+^^+,,,,,,+^#######+#.%
+D:%.###+#######,,,,,#####,,+^^^#.%
+D:%.#,,,+**#**+,,,,,#^^^+,,#^,^#.%
+D:%.#############+###^,^#+##^^^#.%
+D:%.#***#^+,,#,,,,,,+^^^#^######.%
+D:%.#+###^#,,+,,,,,,#####^+,^^^#.%
+D:%.#,,,+^#,,########,,,+^#,^^^#.%
+D:%.##########################+#.%
+D:%..............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:52:Lesser vault (tetris tiles)
+X:7:5:20:13
+D:%%%%%%%%%%%%%
+D:%..#######..%
+D:%..#**#**#..%
+D:%..#,###,#..%
+D:%..#,#^#,#..%
+D:%.##+#^#+##.%
+D:%.#&,#^#,&#.%
+D:%.#,,+^+,,#.%
+D:%.####+####.%
+D:%.###,^,###.%
+D:%.#*##^##*#.%
+D:%.#,,#+#,,#.%
+D:%.##,#^#,##.%
+D:%.##+#^#+##.%
+D:%.#,,#^#,,#.%
+D:%.##,+^+,##.%
+D:%..#,#+#,#..%
+D:%..###.###..%
+D:%...........%
+D:%%%%%%%%%%%%%
+
+N:53:Lesser vault (hospital ward)
+X:7:5:14:20
+D:%%%%%%%%%%%%%%%%%%%%
+D:%..................%
+D:%.################.%
+D:%.#,,#,,#,,#,,#,,#.%
+D:%.#,,#,,#,,#,,#,,#.%
+D:%.##+##+##+##+##+#.%
+D:%.+..............+.%
+D:%.+..............+.%
+D:%.#+##+##+##+##+##.%
+D:%.#,,#,,#,,#,,#,,#.%
+D:%.#,,#,,#,,#,,#,,#.%
+D:%.################.%
+D:%..................%
+D:%%%%%%%%%%%%%%%%%%%%
+
+N:54:Lesser vault (lesser crypt)
+X:7:5:13:26
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%................###.....%
+D:%................#,#.....%
+D:%......#######.###+###...%
+D:%..###.#,#,#,#.#^^^^^#...%
+D:%.##&###+#+#+###^###^###.%
+D:%.+^^^+^^^^^^^+^^#9#^+,#.%
+D:%.##&###+#+#+###^###^###.%
+D:%..###.#,#,#,#.#^^^^^#...%
+D:%......#######.###+###...%
+D:%................#,#.....%
+D:%................###.....%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:55:Lesser vault (arena)
+X:7:5:15:17
+D:%%%%%%%%%%%%%%%%%
+D:%...............%
+D:%.+###########+.%
+D:%.#...........#.%
+D:%.#.####^####.#.%
+D:%.#.#,,,,,,,#.#.%
+D:%.#.#,,,,,,,#.#.%
+D:%.#.^,,,,,,,^.#.%
+D:%.#.#,,,,,,,#.#.%
+D:%.#.#,,,,,,,#.#.%
+D:%.#.####^####.#.%
+D:%.#...........#.%
+D:%.+###########+.%
+D:%...............%
+D:%%%%%%%%%%%%%%%%%
+
+N:56:Lesser vault (monster wc)
+X:7:5:12:12
+D:%%%%%%%%%%%%
+D:%..#######.%
+D:%..#.&&&&#.%
+D:%..#^#####.%
+D:%.##...+,#.%
+D:%.#*...###.%
+D:%.#*...+,#.%
+D:%.#*...###.%
+D:%.##...+,#.%
+D:%..#+#####.%
+D:%..........%
+D:%%%%%%%%%%%%
+
+N:57:Lesser vault ('not' 'and')
+X:7:5:11:15
+D:%%%%%%%%%%%%%%%
+D:%.............%
+D:%..#########..%
+D:%.#+,,,#,,,+#.%
+D:%.#,#,#+#,#,#.%
+D:%.#,,#+*+#,,#.%
+D:%.#,#,#+#,#,#.%
+D:%.#+,,,#,,,+#.%
+D:%..#########..%
+D:%.............%
+D:%%%%%%%%%%%%%%%
+
+N:58:Lesser vault (brain's lair)
+X:7:5:18:17
+D:%%%%%%%%%%%%%%%%%
+D:%...............%
+D:%.#############.%
+D:%.#...........#.%
+D:%.#.####^####.#.%
+D:% #.#...&...#.#.%
+D:%.#.#.#####.#.#.%
+D:%.#.#.#,,,#.#.#.%
+D:%.#.#.#,,,#.#.#.%
+D:%.#.#.#,,,#.#.#.%
+D:%.#.#.##+##.#.#.%
+D:%.^.#..#^#..#.^.%
+D:%.####.#^#.####.%
+D:%.#,,#.#+#.#,,#.%
+D:%.#,,+..&..+,,#.%
+D:%.#############.%
+D:%...............%
+D:%%%%%%%%%%%%%%%%%
+
+N:59:Lesser vault (yin-yang)
+X:7:5:17:16
+D:%%%%%%%%%%%%%%%%
+D:%..............%
+D:%.#+##########.%
+D:%.#&#^^^^^^^^#.%
+D:%.#.#^######^#.%
+D:%.#&#^#****#^#.%
+D:%.#.#^#*,**#^#.%
+D:%.#&#^#****#^#.%
+D:%.#.#+####+#^#.%
+D:%.#&#,,,,#.#^#.%
+D:%.#.#,,*,#&#^#.%
+D:%.#&#,,,,#.#^#.%
+D:%.#.######&#^#.%
+D:%.#&.&.&.&.#^#.%
+D:%.##########+#.%
+D:%..............%
+D:%%%%%%%%%%%%%%%%
+
+N:60:Greater vault (der el bahri)
+X:8:35:28:45
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X***X,,X^^^^^^^^X9988899X^^^^^^^^+******X.%
+D:%.X***X,,+^..,...^X9999999X^...,..^XXXX***X.%
+D:%.X***XXXX^......^XXXX+XXXX^......^X**XXXXX.%
+D:%.X^^^X,,X^..,...^^^^^^^^^^^...,..^X******X.%
+D:%.X@@@X,,X^.......................^X,,,,,,X.%
+D:%.X^^^X,,X^..,..,..,..,..,..,..,..^X,,,,,,X.%
+D:%.X^^^X++X^.......................^X,,,,,,X.%
+D:%.X^^^X^^X^..,..,..,..,..,..,..,..^X,,,,,,X.%
+D:%.X^^^^^^+^.......................^X,,,,,,X.%
+D:%.X^^^^^^X^..,..,..,..,..,..,..,..^X,,,,,,X.%
+D:%.XXX+XXXX^.......................^X,,,,,,X.%
+D:%.X***X**X^..,..,..,..,..,..,..,..^X,,,,,,X.%
+D:%.XXXXX**X^.......................^X,,,,,,X.%
+D:%.X,,,,,,+^.......................^+,,,,,,X.%
+D:%.X,,,,,,+^^^^^^^^^^^^^^^^^^^^^^^^^+,,,,,,X.%
+D:%.XXXXXXXXXXXXXXXXXXX+++XXXXXXXXXXXXXXXXXXX.%
+D:%.X.............^^^^^^^^^^^^..............X.%
+D:%.X................^^^^^^^................X.%
+D:%.XXXXXXXXXXXXXXXXXXX^^^XXXXXXXXXXXXXXXXXXX.%
+D:%.X.................X.^.X.................X.%
+D:%.X.X.X.X.X.X.X.X.X.X^^^X.X.X.X.X.X.X.X.X.X.%
+D:%.X.................X.^.X.................X.%
+D:%.X.X.X.X.X.X.X.X.X.X^^^X.X.X.X.X.X.X.X.X.X.%
+D:%.X.................X.^.X.................X.%
+D:%...........................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:61:Lesser vault (der el bahri sanctuary)
+X:7:5:12:22
+D:%%%%%%%%%%%%%%%%%%%%%%
+D:%....................%
+D:%..........###.......%
+D:%..........#,#.......%
+D:%..###.###.#,#.......%
+D:%.##,###,###,#######.%
+D:%.+^^^^^^^+^^^+,,,,#.%
+D:%.+^^^^^^^+^^^+,,,,#.%
+D:%.######+###########.%
+D:%......###...........%
+D:%....................%
+D:%%%%%%%%%%%%%%%%%%%%%%
+
+N:62:Greater vault (hypostyle of ramses III)
+X:8:40:38:34
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X888888+*******X*******+88888X.%
+D:%.XXXXXXXXX+XXXXXXXXXXX+XXXXXXXX.%
+D:%.X99+***+^^^+^^^^^^^+^^^+**+99X.%
+D:%.XXXXXXXXXXXXXX+++XXXXXXXXXXXXX.%
+D:%.X**X,,X,,+^X^^^^^^^X^X,,,+***X.%
+D:%.X**X,,X,,X^X^X...X^X^X,,,XXXXX.%
+D:%.X+XX,,X,,X^X^..@..^X^X,,,X***X.%
+D:%.X,,X,,XXXX^X^X...X^X^X^^^X***X.%
+D:%.X,,X,,X,*X^X^^^^^^^X^XX+XXXX+X.%
+D:%.X+XXX+X+XX^XXX+++XXX^X^^X,,,,X.%
+D:%.X^^^^^X^^+^^^^^^^^^^^+^^X,**,X.%
+D:%.X+XXXXXXXX^X.X...X.X^XXXX,**,X.%
+D:%.X^^^^^X,,X^.........^X**X,**,X.%
+D:%.X^X,X^X,,X^X.X.@.X.X^X++X,,,,X.%
+D:%.X^^^^^X,,X^.........^+^^X^^^^X.%
+D:%.XXX+XXX++X^XXX...XXX^XXXX+XXXX.%
+D:%.X^^^^^^^^+^....&....^+****+^^X.%
+D:%.XXXXXXXXXX^X.X...X.X^XXXXXXX^X.%
+D:%.X^^^^^+^^X^.........^X^^^^^^^X.%
+D:%.X^#X#^X^^X^X.X.&.X.X^X^,*XXXXX.%
+D:%.X^X9X^X^^X^.........^X^,*X***X.%
+D:%.X^#X#^X^^X^X.X...X.X^X^,*XXX+X.%
+D:%.X^^^^^X^^X^^^^^^^^^^^X^^^X,,,X.%
+D:%.XXXXXXX++XXXXX+++XXXXXX+XX,,,X.%
+D:%.X*****+^^^^^^^^^^^^^^^^^+,,,,X.%
+D:%.XXXXXXX^.X.X.X...X.X.X.^XXXXXX.%
+D:%.X,,X,,X^...............^+,,,,X.%
+D:%.X,,X,,X^.X.X.X...X.X.X.^XXXXXX.%
+D:%.X++X++X^.....&.&.&.....^+,,,,X.%
+D:%.X^^^^^+^.X.X.X...X.X.X.^XXXXXX.%
+D:%.X++X++X^...............^+,,,,X.%
+D:%.X,,X,,X^.X.X.X...X.X.X.^XXXXXX.%
+D:%.X,,X,,X^^^^^^^^^^^^^^^^^+,,,,X.%
+D:%.XXXXXXXXXXXXXX+++XXXXXXXXXXXXX.%
+D:%................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:63:Lesser vault (amada temple)
+X:7:10:15:30
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%............................%
+D:%.######################.....%
+D:%.#**#,,,,+^^#.....&...#.....%
+D:%.#**#,,,,#^^#...&.....#.....%
+D:%.#+#######^^#..#.#.#.##.....%
+D:%.#,,,,,,,#^^#^^^^^^^^^#####.%
+D:%.#,,,,,,,+^^+^^^^^^^^^+^^^+.%
+D:%.#,,,,,,,#^^#^^^^^^^^^#####.%
+D:%.#+#######^^#..#.#.#.##.....%
+D:%.#**#,,,,#^^#...&..&..#.....%
+D:%.#**#,,,,+^^#.........#.....%
+D:%.######################.....%
+D:%............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:64:Lesser vault (amenhotep I)
+X:7:10:18:34
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%................................%
+D:%...............######...........%
+D:%...............#.&&.#...........%
+D:%.###############.##.#...........%
+D:%.#**#,,,+^^^^^^^^##.###.........%
+D:%.#**#,,,#^^^^^^^^^^...#########.%
+D:%.##+#####^^#######^&#.#.......#.%
+D:%.#,,,,,,+^^+,*,*,+^^^^^^^^^^^^+.%
+D:%.#,,,,,,+^^+*,*,*+^^^^^^^^^^^^+.%
+D:%.##+#####^^#######^&#.#.......#.%
+D:%.#**#,,,#^^^^^^^^^^...#########.%
+D:%.#**#,,,+^^^^^^^^##.###.........%
+D:%.###############.##.#...........%
+D:%...............#.&&.#...........%
+D:%...............######...........%
+D:%................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:65:Lesser vault (hathor chapel)
+X:7:10:21:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%.................%
+D:%......##+###.....%
+D:%.######^^^######.%
+D:%.#,,#^#...#^#,,#.%
+D:%.#,,+^..*..^+,,#.%
+D:%.#,,#^#...#^#,,#.%
+D:%.####^.....^####.%
+D:%....#^^^^^^^#....%
+D:%....#.##+##.#....%
+D:%....#&#^^^#&#....%
+D:%....###,^,###....%
+D:%....#,,,,,,,#....%
+D:%....####+####....%
+D:%....#,,,,,,,#....%
+D:%....####+####....%
+D:%....#,,,,,,,#....%
+D:%....####+####....%
+D:%.....#*****#.....%
+D:%.....#######.....%
+D:%%%%%%%%%%%%%%%%%%%
+
+
+N:66:Lesser vault (osiris halls)
+X:7:10:17:34
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%................................%
+D:%.###########################....%
+D:%.#*,+^^^^^#^^^^^^^^^^^^+,,*#....%
+D:%.####^#.#^#^#.#.#.#.#.^#####....%
+D:%.#*,+^.&.^+^..&...&...^+,,*#....%
+D:%.####^#.#^#^#.#.#.#.#.^#####....%
+D:%.#*,+^^^^^#^^^^^^^^^^^^+,,*#....%
+D:%.####################++########.%
+D:%.#,,#,,#,,#,,#,,#,,#....#,,#,,#.%
+D:%.#,,#,,#,,#,,#,,#,,#....#,,#,,#.%
+D:%.#,,#,,#,,#,,#,,#,,#.&..#,,#,,#.%
+D:%.#++#++#++#++#++#++#....#++#++#.%
+D:%.#^^^^^^^^^^^^^^^^^^^^^^^^^^^^+.%
+D:%.##############################.%
+D:%................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:67:Lesser vault (temple of sety)
+X:7:10:22:25
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.##########+##########.%
+D:%.#,,,,,,,#^^^#,,,,,,,#.%
+D:%.#,,,,,,,+^^^+,,,,,,,#.%
+D:%.#########^^^#########.%
+D:%.#,,,,,,,#^^^#,,,,,,,#.%
+D:%.#,,,,,,,+^^^+,,,,,,,#.%
+D:%.#########+###########.%
+D:%.#^^^+^^^+^^^^^#,.,.,#.%
+D:%.#.#^#^#.#^#.#.#.#.#.#.%
+D:%.#.&^#^.&#^.&..#,.,.,#.%
+D:%.#.#^+^#.#^#.#.#.#.#.#.%
+D:%.#^^^#^^^#^^^^^#,.,.,#.%
+D:%.#+#+###+###+###.#.#.#.%
+D:%.#,#^^^^^^^^^^^#,.,.,#.%
+D:%.#,#.#.#.#.#.#.#+###^#.%
+D:%.#,#...........#,**#^#.%
+D:%.#*#.#.#.#.#.#.#####+#.%
+D:%.#*#^^^^^^^^^^^+&^^^&#.%
+D:%.#######+#############.%
+D:%.......................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:68:Lesser vault (temple at abydos)
+X:7:10:21:23
+D:%%%%%%%%%%%%%%%%%%%%%%%
+D:%^^^^^^^^^^^^^^^^^^^^^%
+D:%^#+#+#####+#####+#+#^%
+D:%^#,#,#^^^^^^^^^#,#,#^%
+D:%^#,#,#^#.#.#.#^#,#,#^%
+D:%^#,#,#^...&...^#,#,#^%
+D:%^#####^#.#.#.#^#####^%
+D:%^#*,,+^^^^^^^^^+,,*#^%
+D:%^#########+#########^%
+D:%^#*,,+^^^^^^^^^+,,*#^%
+D:%^#####^#.#.#.#^#####^%
+D:%^#*,,+^...&...^+,,*#^%
+D:%^#####^#.#.#.#^#####^%
+D:%^#*,,+^^^^^^^^^+,,*#^%
+D:%^##+###+##+##+###+##^%
+D:%^#,,,,#,#^^^#,#,,,,#^%
+D:%^#,##,#,#,#,#,#,##,#^%
+D:%^#,,,,#,#***#,#,,,,#^%
+D:%^###################^%
+D:%^^^^^^^^^^^^^^^^^^^^^%
+D:%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:69:Greater vault (Spiral castle)
+X:8:35:31:25
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.......................%
+D:%.XXXXX...........XXXXX.%
+D:%.X,,,X...........X,,,X.%
+D:%.X,,,X...........X,,,X.%
+D:%.XXX+XXXXXXXXXXXXX+XXX.%
+D:%...X^^^^^^^^^^^^^^^X...%
+D:%...X^XXXXXXXXXXXXX^X...%
+D:%...X^X^^^^^^^^^^^+^X...%
+D:%...X^X^XXXXXXXXXXX^X...%
+D:%...X^X^X&..&....&X^X...%
+D:%...X^X^X.XXXXXXX.X^X...%
+D:%...X^X^X.X^^^^^X.X^X...%
+D:%...X^X^X&X+XXX^X.X^X...%
+D:%...X^X^X.X*9*X^X&X^X...%
+D:%...+^X^X,X989X^X.X^+...%
+D:%...X^X^X.X*9*X^X.X^X...%
+D:%...X^X^X.XXX+X^X,X^X...%
+D:%...X^X^X..&..X^X.X^X...%
+D:%...X^X.XXXXXXX^X.X^X...%
+D:%...X^X^^^^^^^^^X&X^X...%
+D:%...X^XXXXXXXXXXX.X^X...%
+D:%...X^+...&..&...,X^X...%
+D:%...X^XXXXXXXXXXXXX^X...%
+D:%...X^^^^^^^^^^^^^^^X...%
+D:%.XXX+XXXXXXXXXXXXX+XXX.%
+D:%.X,,,X...........X,,,X.%
+D:%.X,,,X...........X,,,X.%
+D:%.XXXXX...........XXXXX.%
+D:%.......................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:70:Lesser vault (temple of dendereh)
+X:7:10:20:22
+D:%%%%%%%%%%%%%%%%%%%%%%
+D:%....................%
+D:%.##################.%
+D:%.#***+^&#**#&^+***#.%
+D:%.#***#^^#,,#^^#***#.%
+D:%.#####++#++#++#####.%
+D:%.#,,,+^^^^^^^^+,,,#.%
+D:%.#####^######^#####.%
+D:%.#,,,+^#,,,,#^+,,,#.%
+D:%.#####^#,**,#^#####.%
+D:%.#,,,+^#,**,#^#***#.%
+D:%.#####^#,**,#^#^^^#.%
+D:%.#,,,+^#,**,#^##+##.%
+D:%.#####^#,,,,#^#,,,#.%
+D:%.#,,,#^##++##^#&,&#.%
+D:%.#,,,+^^^^^^^^##+##.%
+D:%.#,,,#^^^^^^^^^^^^#.%
+D:%.########++########.%
+D:%....................%
+D:%%%%%%%%%%%%%%%%%%%%%%
+
+
+N:71:Greater vault (Karnak, part I)
+X:8:35:24:44
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X*****+^+^^^^+^^^X,,,X***X***X***X,****X.%
+D:%.XXXXXXXXX^XX^X,,,X,X,X,X,X,X,X*X*X,X*X*X.%
+D:%.X,X,X,X,X^..^X,,,X,,,X^^^X^^^X**@+^,,,,X.%
+D:%.X^^^^^^^+^@.^X,,,XX+XX+XXXXX+XXXXX+XXXXX.%
+D:%.X,X^^^X,X^XX^X***X^^^+^^^^^^^+,,*X^^^^^X.%
+D:%.XXXX+XXXX^^^^X,,,XXXXX^X.X.X^XXXXX^X^X^X.%
+D:%.X^^^^^^^XXXXXX,,,X,,,X^..@..^+,,*X^^^^&X.%
+D:%.X^X,X,X^X,,,,X,,,X,X,X^X.X.X^XXXXX^XXXXX.%
+D:%.X^^^^^^^X,,,,X^^^X,,,X^^^^^^^+,,*X^+,,*X.%
+D:%.XXXX+XXXXX++XXX+XXX+XXXXX+XXXXXXXX^XXXXX.%
+D:%.X*,+^^^^^^^^^^^^^^^^^^^^^^^^^+,,*X^+,,*X.%
+D:%.XXXX^X.X.X.X.X.X.X.X.X.X.X.X^XXXXX^XXXXX.%
+D:%.X*,+^.........&.....&.......^X,,*X^+,,*X.%
+D:%.XXXX^X.X.X.X.X.X.X.X.X.X.X.X^+,X*X^XXXXX.%
+D:%.X**X^.......................^X,,*X^+,,*X.%
+D:%.X,,+^X.X.X.X.X.X.X.X.X.X.X.X^XXXXX^XXXXX.%
+D:%.XXXX^.........&.....&.......^+^^^^^+,,*X.%
+D:%.X,,+^X.X.X.X.X.X.X.X.X.X.X.X^X,X,X^XXXXX.%
+D:%.X**X^^^^^^^^^^^^^^^^^^^^^^^^^X.*.X^+,,*X.%
+D:%.XXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXX.%
+D:%..........................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:72:Lesser vault (Karnak, part II)
+X:7:10:20:29
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%...........................%
+D:%.###+######################%
+D:%.#,+^#,,#,,#^+^+^#*#,#^+,#.%
+D:%.###.#,,#,,#^#^#^#*#,#^###.%
+D:%.#,+^#,,#,,#^#^#^#*#+#^+,#.%
+D:%.###.#++#++#^#^#^#+#.#^###.%
+D:%.#,+^#^^^^^+^#^#^+,,,#^+,#.%
+D:%.###.#^^^^^+^#^#+#+###^###.%
+D:%.#,+^#+#+#+#^#^#,#^+,#^+,#.%
+D:%.###.#,#,#,#^#^#######^###.%
+D:%.#,+^#######+#,,+,,,,,^+,#.%
+D:%.###^^^^^^#,^#,,+,,,,#^###.%
+D:%.#,+^#,#*^##+####,,,,,^+,#.%
+D:%.###^,,,*^#^^^^^#,,,,#^###.%
+D:%.#,+^#,#*^#,,,,^+,,,,,^+,#.%
+D:%.###^^^^^^#^^^^^#,,,,,^###.%
+D:%...##########+##########...%
+D:%...........................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:73:Greater vault (mortuary temple of sety)
+X:8:35:25:34
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%................................%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X^+,,***X,,+^^^^^+,,X*X,,X*X9X.%
+D:%.X^XXXXXXX,,X^X*X^X,,X,X,,X*X9X.%
+D:%.X^+,,***XXXX^*@*^X,,X^X,,X@X9X.%
+D:%.X^XXXXXXX,,X^X*X^XXXX^X,,X^X9X.%
+D:%.X^+,,***X,,+^^^^^+..X^X,,X^X^X.%
+D:%.X^XXXXXXXXXXXX+XXXXXX+X++X+X+X.%
+D:%.X^X*X*X*X**X,+.+,X**X^^^^+^^^X.%
+D:%.X+X,X,X,X,,XXX.XXX,,X^^^^+^^^X.%
+D:%.X^X^X^X^X,,X,X.X,X,,X^^XXXXXXX.%
+D:%.X^X+X+X+X^^X,X.X,X^^X^^X,,,,,X.%
+D:%.X^+^^^^^X++X+X+X+X++X^^X,X,X,X.%
+D:%.X^XXXXXXX^^^^^^^^^^^X^^X,,,,,X.%
+D:%.X^X*X*X*XXXX^...^XXXX^^X,X,X,X.%
+D:%.X^X,X,X,X,,+^X*X^+,,X^^X,,,,,X.%
+D:%.X^X^X^X^XXXX^.&.^XXXX^^X,X,X,X.%
+D:%.X^X+X+X+X,,+^X*X^+,,X^^X,,,,,X.%
+D:%.X^X^^^^^XXXX^...^XXXX^^X,X,X,X.%
+D:%.X^X*X,X*X,,X^X*X^X,,X^^X,,,,,X.%
+D:%.X^+^^^^^+^^+^^^^^+^^+^^X,,,,,X.%
+D:%.XXXXXXXXXXXXXX+XXXXXXXXXXX+XXX.%
+D:%................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:74:Lesser vault (edfu)
+X:7:5:15:15
+D:%%%%%%%%%%%%%%%
+D:%.............%
+D:%.###########.%
+D:%.#,+^#,#^+,#.%
+D:%.###+#+#+###.%
+D:%.#,+^...^+,#.%
+D:%.###.###.###.%
+D:%.#,+.#*#.+,#.%
+D:%.###.#,#.###.%
+D:%.#,+.#^#.#,#.%
+D:%.###^...^#+#.%
+D:%.#,+,#+#,+,#.%
+D:%.#####^#####.%
+D:%.............%
+D:%%%%%%%%%%%%%%%
+
+N:75:Greater vault (kom ombo)
+X:8:40:36:30
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X****X,99,X9889X,99,X****X.%
+D:%.X****X,,,,X9999X,,,,X****X.%
+D:%.X+XXXX+XXXX+XXXX+XXXX+XXXX.%
+D:%.X@^^^^^^^^^^^^^^^^^^^^^^@X.%
+D:%.X^XXXXXXXXXXXXXXXXXXXXXX^X.%
+D:%.X^X**X,,X,,X,,X,,X,,X**X^X.%
+D:%.X^X,,X+XX+XX+XXX+XX+X,,X^X.%
+D:%.X^X,^+^^^^^^^^^^^^^^+^,X^X.%
+D:%.X^XXXX^XX+XX^^XX+XX^XXXX^X.%
+D:%.X^X,,X^X,,,X^^X,,,X^+^,X^X.%
+D:%.X^X,,X^X***X^^X***X^X,*X^X.%
+D:%.X^X,,X^X9X9X^^X9X9X^XXXX^X.%
+D:%.X^X,,X^X***X^^X***X^+^,X^X.%
+D:%.X^X++X^X,,,X^^X,,,X^X,*X^X.%
+D:%.X^X^^X^XX+XX^^XX+XX^XXXX^X.%
+D:%.X^X^^+^^^^^^^^^^^^^^X,*X^X.%
+D:%.X^X,,X^^^^^^^^^^^^^^+^,X^X.%
+D:%.X^XXXXXXX+XXXXXX+XXXXXXX^X.%
+D:%.X^X,X,X,,,,,XX,,,,,X***X^X.%
+D:%.X^X,X^X,***,++,***,+*@*X^X.%
+D:%.X^X,+^+,,,,,XX,,,,,X***X^X.%
+D:%.X^XXX+XXX+XXXXXX+XXXX+XX^X.%
+D:%.X^X*,^X,,,,,XX,,,,,+^^*X^X.%
+D:%.X^X,,^+,,*,,++,,*,,XX+XX^X.%
+D:%.X^X*,*X,,,,,XX,,,,,X,,,X^X.%
+D:%.X^XXXXXXX+XXXXXX+XXXXXXX^X.%
+D:%.X^X^^^^^^^^^^^^^^^^^^^^X^X.%
+D:%.X^X^^XX,XX^^XX^^XX,XX^^X^X.%
+D:%.X^X^^^^^^^^^^^^^^^^^^^^X^X.%
+D:%.X^+^^XX,XX^^XX^^XX,XX^^+^X.%
+D:%.X,X^^^^^^^^^^^^^^^^^^^^X,X.%
+D:%.XXXXXXXXX+XXXXXX+XXXXXXXXX.%
+D:%............................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:76:Lesser vault (belvoir keep)
+X:7:5:19:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%...................%
+D:%.###...........###.%
+D:%.#,######+######,#.%
+D:%.##+^^^^+&+^^^^+##.%
+D:%..#&^####+####^.#..%
+D:%..#.^#,^+^+,,#^.#..%
+D:%..#.^#,^#^#,,#^.#..%
+D:%..#.^#,*#^##+#^.#..%
+D:%..#.^#,^#^#,,#^&#..%
+D:%..#.^#,^+^#*,#^.#..%
+D:%..#.^####+####^.#..%
+D:%.##+^^^^^^^^^^^+##.%
+D:%.#,######+######,#.%
+D:%.###...#,*,#...###.%
+D:%.......#*,*#.......%
+D:%.......#####.......%
+D:%...................%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+#N:77:Lesser vault (Pattern)
+#X:8:30:31:47
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+#D:%X@&+.............................+&@X,,,,,,X.%
+#D:%XXXX.p...bad.bad.bad.bad.cbb.....XXXX,,,,,,X.%
+#D:%X@&X.a.dcb.dcb.dcb.dcb.dcc.baa...X&@X,,,,,,X.%
+#D:%XX+X.b.d.....................ad..X+XX,,,,,,X.%
+#D:%X....c.a.dabcdabcda...........dc....X,,,,,,X.%
+#D:%X....d.b.d........a..cbadcba...c....X,,,,,,X.%
+#D:%X...ad.c.c.dcbadcba..c.....ad..cb...X++XXX+X.%
+#D:%X...a..d.b.d.........cdabc..d...b...X^^X^^^X.%
+#D:%X...b.ad.a.a..abcd.......cd.dcb.a...X**X^X+X.%
+#D:%X..cb.a..d.b..a..d..adcb..d...b.ad..X,,X^X^X.%
+#D:%X..c..b..c.c..d.ad..a..ba.a...a..d..X&&X^X&X.%
+#D:%X.dc.cb..b.d..c.a..PPP..a.a.cda..dc.X^^X^X+X.%
+#D:%X.d..c...a.a..b.b.PPAPP.d.b.c.....c.+^^X^X*X.%
+#D:%X.da.cd..d.b..a.c.PABAP.c.b.cba..bc.X^^X^X*X.%
+#D:%X..a..d..c.c..d.d.PPAPP.b.c...a..b..X&&X^XXX.%
+#D:%X..ab.da.b.d..c.a..PPP..a.c...d.ab..X,,X^X,X.%
+#D:%X...b..a.a.a..b.ab.....da.d..cd.a...XXXX+X+X.%
+#D:%X...c..b.d.b..a..bcd.bcd..a.bc..d...X**^^^,X.%
+#D:%X...cd.bcd.c..ad...dab...ba.b..cd...X,,,,,,X.%
+#D:%X....d.....d...dc......dcb..a..c....X,,,XXXX.%
+#D:%X....da....da...cbadcbad...da.bc....X,,,+,,X.%
+#D:%X.....a.....abc...........cd..b.....X,,,X,,X.%
+#D:%XX+X..ab......cdabcdabcdabc..ab..X+XXXXXX,,X.%
+#D:%X@&X...bc...................da...X&@X,,,,,,X.%
+#D:%XXXX....cddaabbccddaabbcdabcd....XXXX,,,,,&+.%
+#D:%X@&+.............................+&@X****&&+.%
+#D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX++X.%
+#D:%.............................................%
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#
+#
+#N:78:Greater vault (Pattern 2)
+#X:8:30:29:45
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+#D:%X8+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+8X%
+#D:%X+XXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX+X%
+#D:%X^X.....................................X^X%
+#D:%X^X.................p...................X^X%
+#D:%X^X.........adcbadcba.dcbadcbad.........X^X%
+#D:%X@X......dcba.........d.......dcba......X@X%
+#D:%X,X...baad.....abcdab.dabcda.....addc...X,X%
+#D:%X,X..cb.....bcda....b......abcd.....cb..X,X%
+#D:%X,X.dc....dab....adcb.adcb....dab....ba.X,X%
+#D:%X,X.d....cd....cba....a..bad....bc....a.X,X%
+#D:%X,X.a...bc...adc...PPPPP...dcb...cd...d.X,X%
+#D:%X,X.b...b....a....PPPAPPP....b....d...c.X,X%
+#D:%X,X.c...a....b....PPABAPP....a....a...c.X,X%
+#D:%X,X.d...d....c....PPPAPPP....d....b...b.X,X%
+#D:%X,X.a...dc...cda...PPPPP...bcd...cb...b.X,X%
+#D:%X,X.b....cb....abc.......dab....dc....a.X,X%
+#D:%X,X.bc....bad....cddaabbcd....bad....da.X,X%
+#D:%X,X..cd.....dcba...........adcb.....cd..X,X%
+#D:%X,X...dabc.....adcbadcbadcba.....dabc...X,X%
+#D:%X^X......cdab.................abcd......X^X%
+#D:%X^X.........bccddaabcdabcdabcda.........X^X%
+#D:%X^X.....................................X^X%
+#D:%X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X%
+#D:%X9+^^^@,,,,,&,,,,,,,,&,,,,,,,&,,,,,,@^^^+9X%
+#D:%XXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXX%
+#D:%...........................................%
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#
+#
+#
+#N:79:Greater vault (Pattern 2)
+#X:8:30:30:42
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+#D:%.X9+^^^^^^^^^^^^^^^^^+,,,,,,,,,,,,,,,+8X%
+#D:%.X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X%
+#D:%.X,X.................................X^X%
+#D:%.X,X....adcbadcbadcbadcbadcbadc......X^X%
+#D:%.X,X...ba.....................cbad...X^X%
+#D:%.X,X..cb..bad.bad.bad.bad.bad....d...X^X%
+#D:%.X,X..c..cb.dcb.dcb.dcb.dcb.dcba.dc..X^X%
+#D:%.X&X..d.dc.....................a..c..X^X%
+#D:%.X&X..d.d..bbcc...cbadcba..adc.ad.b..X^X%
+#D:%.X+X..a.a.ab..cd.dc.....ad.a.c..d.a..X+X%
+#D:%.X^X..a.b.a....d.d..PPP..d.b.c.cd.d..X@X%
+#D:%&X^X..b.c.ad...a.a.PPAPP.c.c.b.c..dc.X9X%
+#D:%.+^X..b.d..dc..a.b.PABAP.b.d.b.cb..c.+8X%
+#D:%&X^X..c.a...cb.b.c.PPAPP.a.a.a..b..b.X9X%
+#D:%.X^X..d.b....b.c.d..PPP..d.b.d.ab..a.X@X%
+#D:%.X+X..a.c.cdab.d.da..d...dcb.d.a..da.X+X%
+#D:%.X&X..b.d.c....a..abcd.......c.ad.d..X^X%
+#D:%.X&X..c.a.cbad.ab......abc..bc..d.c..X^X%
+#D:%.X,X..d.b....d..bcdabcda.cdab..cd.b..X^X%
+#D:%.X,X..a.bcda.c................bc..a..X^X%
+#D:%.X,X..b....abc..dab.dab.dab.dab..da..X^X%
+#D:%.X,X..bcda.....cd.bcd.bcd.bcd...cd...X^X%
+#D:%.X,X.....abcdabc..............pbc....X^X%
+#D:%.X,X.................................X^X%
+#D:%.X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X%
+#D:%.X9+^^^^^^^^^^^^^^^^^+,,,,,,,,,,,,,,,+8X%
+#D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+#D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+# XXX
+
+# XXX
+
+N:82:Lesser vault (checker.oard)
+X:7:5:13:21
+D:%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXX%
+D:%X&#9#&#9#&#9#&#9#&+%
+D:%X#XXXXXXXXXXXXXXXXX%
+D:%X9#&#9#&#9#&#9#&#9X%
+D:%XXXXXXXXXXXXXXXXX#X%
+D:%X&#9#&#88888#&#9#&X%
+D:%X#XXXXXXXXXXXXXXXXX%
+D:%X9#&#9#&#9#&#9#&#9X%
+D:%XXXXXXXXXXXXXXXXX#X%
+D:%+&#9#&#9#&#9#&#9#&X%
+D:%XXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%
+
+
+N:83:Lesser vault (spiral checkers)
+X:7:5:14:17
+D:%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXX%
+D:%X&#9#&#9#&#9#&X%
+D:%+XXXXXXXXXXXX#X%
+D:%XXX@#9#@#9#@X9X%
+D:%X9#XXXXXXXX#X#X%
+D:%X#XXX98X89#9X&X%
+D:%X&X9#98X89XXX#X%
+D:%X#X#XXXXXXXX#9X%
+D:%X9X@#9#@#9#@XXX%
+D:%X#XXXXXXXXXXXX+%
+D:%X&#9#&#9#&#9#&X%
+D:%XXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%
+
+
+N:84:Greater vault (monstrosity)
+X:8:25:17:28
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X^@^@^@^@^@#X9X9X9X9X9X9XX%
+D:%X#XXXXXXXXXX9X9X9X9X9X9X9X%
+D:%XX9X9X9X9XXXXXXXXXXXXXXX#X%
+D:%X9X9X9X9X9X##############X%
+D:%XXXXXXXXX#X#XXXXXXXXXXXXXX%
+D:%X&,&X&,&X&X8888X&,&X&,&X&+%
+D:%X,X,X,X,X,XXXXXX,X,X,X,X,X%
+D:%+&X&,&X&,&X8888X&X&,&X&,&X%
+D:%XXXXXXXXXXXXXX#X#XXXXXXXXX%
+D:%X##############X9X9X9X9X9X%
+D:%X#XXXXXXXXXXXXXXX9X9X9X9XX%
+D:%X9X9X9X9X9X9X9XXXXXXXXXX#X%
+D:%XX9X9X9X9X9X9X#@^@^@^@^@^X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:85:Cyclone
+X:8:40:23:91
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%XXXX^^^^^^^^^XXX^^^^^^^^^XXX^^^#XXX8.X.&.X.&.X..*X+^.^.^.^.^.^..XX*^.^.^.^.^.^.^.^.^.^#8X%
+D:%XX***XXX...XXX...XXX...XXX...XXX^^X*.X^X^X^X^X^X.*XXXXXXXXXXXXX..XX^^XXXXXXXXXXXXXXXXXX#X%
+D:%X88XXX...XXX...XXX...XXX...XXX^^^,X*.X^X^X^X^X^X..*XX8@,,,,,,@XX,.XX^^..........@&.,**X.X%
+D:%XXXX@&@XXX@@@XXX&&&XXX&@&XXX^^^,..X*.X^X^X^X^X^X...@X@........@X,..X...........@&..,**X.X%
+D:%XX...XXX...XXX...XXX...XXX^^^,....X*.X^X^X^X^X^X...@X*..*9*..@XX^^XXXX*.......@&@..,**X.X%
+D:%X*.XXX...XXX...XXX...XXX^^^^....,,X*.&.X.&.X.&.X..*XX*.....,XXX.XXX@@XXX*....@&..@.,**X.X%
+D:%X*XX...XXX...XXX...XXX^^^,.^...XX+XXXXXXXXXXXXXX.*XX*....,,XXX.XXXXXX&&XXX*.@&....@8**X.X%
+D:%X^^^^XXX^^^^^^^^^XXX^^^,..*^.&XX.*X&^^*****^^#X.*XX*....,XXX&&XXX@@X#X*..XX@&.....8@**X.X%
+D:%XXXXXXXXXXXXXXXXXX^^^,...**^.&X8.*X@XXXXXXXXXX^.XX&....XXX&&XXX*****XXX*..XXXXXXXXXXXXX.X%
+D:%#^^^^^^^^^^^^^9#^^^.....*99^.@X8.*#^^^*****8XXXXX8@..XX#@@XX#@@@....8XXX*.+^.^.^.^.^.^+.X%
+D:%XXXXXXXXXXXXXXXXXX^^^,...**^.&X8.*X@XXXXXXXXXX^.XX&....XXX&&XXX*****XXX*..XXXXXXXXXXXXX.X%
+D:%X^^^^XXX^^^^^^^^^XXX^^^,..*^.&XX.*X&^^*****^^#X.*XX*....,XXX&&XXX@@X#X*..XX@&.....8@**X.X%
+D:%X*XX...XXX...XXX...XXX^^^,.^...XX+XXXXXXXXXXXXXX.*XX*....,,XXX.XXXXXX&&XXX*.@&....@8**X.X%
+D:%X*.XXX...XXX...XXX...XXX^^^^....,,X*.&.X.&.X.&.X..*XX*.....,XXX.XXX@@XXX*....@&..@.,**X.X%
+D:%XX...XXX...XXX...XXX...XXX^^^,....X*.X^X^X^X^X^X...@X*..*9*..@XX^^XXXX*.......@&@..,**X.X%
+D:%XXXX@&@XXX@@@XXX&&&XXX&@&XXX^^^,..X*.X^X^X^X^X^X...@X@........@X,..X...........@&..,**X.X%
+D:%X88XXX...XXX...XXX...XXX...XXX^^^,X*.X^X^X^X^X^X..*XX8@,,,,,,@XX,.XX^^..........@&.,**X.X%
+D:%XX***XXX...XXX...XXX...XXX...XXX^^X*.X^X^X^X^X^X.*XXXXXXXXXXXXX..XX^^XXXXXXXXXXXXXXXXXX#X%
+D:%XXXX^^^^^^^^^XXX^^^^^^^^^XXX^^^#XXX8.X.&.X.&.X..*X+^.^.^.^.^.^..XX*^.^.^.^.^.^.^.^.^.^#8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:86:Miniature Cell
+X:7:5:5:5
+D:%%%%%
+D:%#8#%
+D:%888%
+D:%#8#%
+D:%%%%%
+
+N:87:Castle Death
+X:8:35:20:60
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+XX....+XX...X****X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....XXX....@X****X%
+D:%X.........................................XXX....&.@X****X%
+D:%X+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX....@.&.@X*99*X%
+D:%X999X..9..X&&&&&X,,,,,X@@@@@X..&..X@@@XXX....&.@.&.@X*99*X%
+D:%X@@@X.&.&.X&&&&&X,,,,,X@@@@@X99.99X9XXX.X..@.&.@.&.@X****X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...X..@.&.@.&.@XX##XX%
+D:%+^...&.&.&+...@.@.@+...@@@@@+.....99+...+..@.&.@.&.8+^^^^X%
+D:%+^...&.&.&+...@.@.@+...@@@@@+.....99+...+..@.&.@.&.8+^^^^X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...X..@.&.@.&.@XX##XX%
+D:%X@@@X.&.&.X&&&&&X,,,,,X@@@@@X99.99X9XXX.X..@.&.@.&.@X****X%
+D:%X999X..9..X&&&&&X,,,,,X@@@@@X..&..X@@@XXX....&.@.&.@X*99*X%
+D:%X+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX+XXXXX....@.&.@X*99*X%
+D:%X.........................................XXX....&.@X****X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....XXX....@X****X%
+D:%X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+XX....+XX...X****X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:88:Mirrored Quartet
+X:8:20:21:49
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X89@@@XXX,,,,XXX....^^^^^^^....XXX,,,,XXX@@@98X%
+D:%X9@@#XX....XXX**....XXX#XXX....**XXX....XX#@@9X%
+D:%X@XXX&&&&XXX**....@XX&&@&&XX@....**XXX&&&&XXX@X%
+D:%XXX....XXX**......@X**...**X@......**XXX....XXX%
+D:%X@...XXX**.......XXXXX...XXXXX.......**XXX...@X%
+D:%X@.#XX**.......9XX888XX^XX888XX9.......**XX#.@X%
+D:%XXXX&&&&&&&&&&&9#,,,,,X^X,,,,,#9&&&&&&&&&&&XXXX%
+D:%XXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXX%
+D:%%,,,,,,,,,,,,,,,,,,,,,#8#,,,,,,,,,,,,,,,,,,,,,%%
+D:%XXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXX%
+D:%XXXX&&&&&&&&&&&9#,,,,,X^X,,,,,#9&&&&&&&&&&&XXXX%
+D:%X@.#XX**.......9XX888XX^XX888XX9.......**XX#.@X%
+D:%X@...XXX**.......XXXXX...XXXXX.......**XXX...@X%
+D:%XXX....XXX**......@X**...**X@......**XXX....XXX%
+D:%X@XXX&&&&XXX**....@XX&&@&&XX@....**XXX&&&&XXX@X%
+D:%X9@@#XX....XXX**....XXX#XXX....**XXX....XX#@@9X%
+D:%X89@@@XXX,,,,XXX**..^^^^^^^..**XXX,,,,XXX@@@98X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:89:False Wall
+X:8:20:15:64
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%X+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+X%
+D:%X^+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+^X%
+D:%X^XXXXXXXXXXXXXXXXXXXXXXXXXX+X##X+XXXXXXXXXXXXXXXXXXXXXXXXXX^X%
+D:%X^+@*&*@*&*@*&*@*&*@*&*@*&*@*X@@X*@*&*@*&*@*&*@*&*@*&*@*&*@+^X%
+D:%X^XXXXXXXXXXXXXXXXXXXXXXXXX+XX,,XX+XXXXXXXXXXXXXXXXXXXXXXXXX^X%
+D:%X^+&.@.&.@.&.@.&.@.&.@.&.@.&X*..*X&.@.&.@.&.@.&.@.&.@.&.@.&+^X%
+D:%X^XXXXXXXXXXXXXXXXXXXXXXXX+XX*..*XX+XXXXXXXXXXXXXXXXXXXXXXXX^X%
+D:%X^+,,,,,,,,,,,,,,,,,,,,,,,,X,,..,,X,,,,,,,,,,,,,,,,,,,,,,,,+^X%
+D:%X^XXXXXXXXXXXXXXXXXXXXXXX+XX##99##XX+XXXXXXXXXXXXXXXXXXXXXXX^X%
+D:%X^+&.@.&.@.&.@.&.@.&.@.&.@X..####..X@.&.@.&.@.&.@.&.@.&.@.&+^X%
+D:%X^XXXXXXXXXXXXXXXXXXXXXX+XX...##...XX+XXXXXXXXXXXXXXXXXXXXXX^X%
+D:%X^+*&*@*&*@*&*@*&*@*&*@*&X&@&@88&@&@X&*@*&*@*&*@*&*@*&*@*&*+^X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:90:Hellpit
+X:8:20:19:60
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%..........................................................%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X@@&....#8.#9....^^&&&&&&&&&&&&###.^^,,......+8*9+,,,,,X.%
+D:%.X@&@.............^^................^^,,......+9*9+,,,,,X.%
+D:%.X&@@.............^^@@@@@@@@@@@###..^^,,......+9*9+,,,,,X.%
+D:%.X.....#8....#9...^^................^^,,......+9*9+,,,,,X.%
+D:%.X................^^&&&&&&&&&&&&###.^^,,.&&&&&+9*9+,,,,,X.%
+D:%.X.......@@@@.....^^................^^,,.&@@@&+9*9+,,,,,X.%
+D:%.#....#8.@@@@.#9..^^@@@@@@@@@@@###..^^,,.&@9@&+8*9+,,,,,X.%
+D:%.X.......@@@@.....^^................^^,,.&@@@&+9*9+,,,,,X.%
+D:%.X................^^&&&&&&&&&&&&###.^^,,.&&&&&+9*9+,,,,,X.%
+D:%.X.....#8....#9...^^................^^,,......+9*9+,,,,,X.%
+D:%.X&@@.............^^@@@@@@@@@@@###..^^,,......+9*9+,,,,,X.%
+D:%.X@&@.............^^................^^,,......+9*9+,,,,,X.%
+D:%.X@@&....#8.#9....^^&&&&&&&&&&&&###.^^,,......+8*9+,,,,,X.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%..........................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:91:Roundabout Three
+X:8:30:20:97
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X,&,,,,,,,,,,,^^^^^^^^^^......XX.#X.XXX.......X.X.......XXX.X#.XX......^^^^^^^^^^,,,,,,,,,,,&,X%
+D:%X,&,,,,,,,,,,,^^^^^^^^^^.....XX.XX.XXX..XXXX..X.X..XXXX..XXX.XX.XX.....^^^^^^^^^^,,,,,,,,,,,&,X%
+D:%X,&,,,,,,,,,,,XXXXXXXXXX....XX.XX.XXX^^XX@@XX.X&X.XX@@XX^^XXX.XX.XX....XXXXXXXXXX,,,,,,,,,,,&,X%
+D:%X,&&&&&&&&&&XXX********XXX..XX.XX.XXX^^X****X.X&X.X****X^^XXX.XX.XX..XXX********XXX&&&&&&&&&&,X%
+D:%X,,,,,,,,,,XXX..XXXXXX...XX+XX.XX.XXX^^XX&&...X@X...&&XX^^XXX.XX.XX+XX...XXXXXX..XXX,,,,,,,,,,X%
+D:%X@@@@@@@@XXX..XXX****XXX.....XX.XX.XXX..XX...XX+XX...XX..XXX.XX.XX.....XXX****XXX..XXX@@@@@@@@X%
+D:%X9988899XXX..XXX.XXXX@@XXXXXX.XX.XX.XXX..XXXXX^^^XXXXX..XXX.XX.XX.XXXXXX@@XXXX.XXX..XXX9998999X%
+D:%X######XXX**X##&&@**XX&&&@98X^^^^^XX.##X^^^^^^^^^^^^^^^X##.XX^^^^^X89@&&&XX**@&&##X**XXX######X%
+D:%X######XXX**X##&&@**XX&&&@98X^^^^^XX.##X^^^^^^^^^^^^^^^X##.XX^^^^^X89@&&&XX**@&&##X**XXX######X%
+D:%X9988899XXX..XXX.XXXX@@XXXXXX.XX.XX.XXX..XXXXX^^^XXXXX..XXX.XX.XX.XXXXXX@@XXXX.XXX..XXX9998999X%
+D:%X@@@@@@@@XXX..XXX****XXX.....XX.XX.XXX..XX...XX+XX...XX..XXX.XX.XX.....XXX****XXX..XXX@@@@@@@@X%
+D:%X,,,,,,,,,,XXX..XXXXXX...XX+XX.XX.XXX^^XX&&...X@X...&&XX^^XXX.XX.XX+XX...XXXXXX..XXX,,,,,,,,,,X%
+D:%X,&&&&&&&&&&XXX********XXX..XX.XX.XXX^^X****X.X&X.X****X^^XXX.XX.XX..XXX********XXX&&&&&&&&&&,X%
+D:%X,&,,,,,,,,,,,XXXXXXXXXX....XX.XX.XXX^^XX@@XX.X&X.XX@@XX^^XXX.XX.XX....XXXXXXXXXX,,,,,,,,,,,&,X%
+D:%X,&,,,,,,,,,,,^^^^^^^^^^.....XX.XX.XXX..XXXX..X.X..XXXX..XXX.XX.XX.....^^^^^^^^^^,,,,,,,,,,,&,X%
+D:%X,&,,,,,,,,,,,^^^^^^^^^^......XX.#X.XXX.......X.X.......XXX.X#.XX......^^^^^^^^^^,,,,,,,,,,,&,X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:92:The Reward is Worth It
+X:8:20:16:63
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXX##XXXXXXXXXXXXX#XXXXXXXXXXXXX##XXXXXXXXXXXXXXX%
+D:%X@@@@@@@@@@@.XX88XX.......,,,X^X,,,.......XX88XX.@@@@@@@@@@@X%
+D:%X@XXXXXXXXXX..XXXX...XXXX.,,,X^X,,,.XXXX...XXXX..XXXXXXXXXX@X%
+D:%X@X8888888XXX..XX...XXX@XX,,,X^X,,,XX@XXX...XX..XXX8888888X@X%
+D:%X@X88899999XXX.....XXX@@@X..&X^X&..X@@@XXX.....XXX99999888X@X%
+D:%X@X8899.....XXX...XXX@@@@@..&X^X&..@@@@@XXX...XXX.....9988X@X%
+D:%X@X899.......XXX...XXX......&X^X&......XXX...XXX.......998X@X%
+D:%X+XXX...XXX&&&XXX^^^XXX.....&X^X&.....XXX^^^XXX&&&XXX...XXX+X%
+D:%X@@XXX.XXXX&&&&XXX^^^XXX....&X^X&....XXX^^^XXX&&&&XXXX.XXX@@X%
+D:%X^^^^XXX88X^^^^^^XXX^^^XXX..&X^X&..XXX^^^XXX^^^^^^X88XXX^^^^X%
+D:%X&&&&&&&&XX^^^^^^^^XXX...XXX&X^X&XXX...XXX^^^^^^^^XX&&&&&&&&X%
+D:%X,,,,,,,XX,,,,,,,,,,,XXX&&&XXX^XXX&&&XXX,,,,,,,,,,,XX,,,,,,,X%
+D:%X,,,,,,X#@@@@@@@@@@@@@@XXX&&&&&&&&&XXX@@@@@@@@@@@@@@#X,,,,,,X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:93:Little League Treasure Hoard
+X:7:2:5:19
+D:%%%%%%%%%%%%%%%%%%%
+D:%....#...&...#....%
+D:%.#.#.##***##.#.#.%
+D:%....#...&...#....%
+D:%%%%%%%%%%%%%%%%%%%
+
+N:94:Mini Maze
+X:7:2:15:25
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.......................%
+D:%.X+XXXXXXXXXXXXXXXXXXX.%
+D:%.X.X,.......X........X.%
+D:%.X.X..XXX.X...XXXX.X.X.%
+D:%.X.XX.X...X.XXX..X...X.%
+D:%.X......X.X.X....XXX.X.%
+D:%.X.XXXXX..X.X.X..X,X.X.%
+D:%.X.X,..XXXX.X.X.XX.X.X.%
+D:%.X.XXX........X...XX.X.%
+D:%.X...XXXXXX.XXXXXXX..X.%
+D:%.X.X........X,.......X.%
+D:%.XXXXXXXXXXXXXXXXXXXXX.%
+D:%.......................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:95:Circlular Room
+X:7:2:8:9
+D:%%%%%%%%%
+D:%.......%
+D:%..###..%
+D:%.#+*+#.%
+D:%.#+*+#.%
+D:%..###..%
+D:%.......%
+D:%%%%%%%%%
+
+N:96:Minor Boss Vault
+X:7:3:10:10
+D:%%%%%%%%%%
+D:%........%
+D:%..XXXX..%
+D:%.XX.9XX.%
+D:%.X....X.%
+D:%.XX++XX.%
+D:%.XX^^XX.%
+D:%..X++X..%
+D:%........%
+D:%%%%%%%%%%
+
+N:97:(Lesser) Major Boss Vault
+X:7:20:10:10
+D:%%%%%%%%%%
+D:%........%
+D:%..XXXX..%
+D:%.XX.8XX.%
+D:%.X....X.%
+D:%.XX++XX.%
+D:%.XX^^XX.%
+D:%..X++X..%
+D:%........%
+D:%%%%%%%%%%
+
+N:98:(Greater) Majorly Bossy Vault
+X:8:37:10:10
+D:%%%%%%%%%%
+D:%........%
+D:%.@XXXX@.%
+D:%.XX88XX.%
+D:%.X8888X.%
+D:%.XX++XX.%
+D:%.XX^^XX.%
+D:%.@X++X@.%
+D:%........%
+D:%%%%%%%%%%
+
+N:99:Bubbles
+X:8:35:25:41
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X8X#X8XXX8XXX8XXX8XXX8XXX8XXX8XXX8XXX8X%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%XX.9.#.9.X.9.#.9.X.9.#.9.X.9.#.9.#.9.XX%
+D:%XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX%
+D:%X8XXX8X#X8X#X8X#X8X#X8X#X8X#X8X#X8X#X8X%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%XX.9.#.9.X.9.X.9.#.9.X.9.#.9.X.9.X.9..X%
+D:%XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX%
+D:%X8X#X8XXX8X#X8XXX8XXX8XXX8XXX8XXX8X#X8X%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%XX.9.X.9.#.9.X.9.#.9.#.9.#.9.#.9.X.9.XX%
+D:%XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX%
+D:%X8X#X8X#X8X#X8XXX8XXX8XXX8XXX8X#X8X#X8X%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%XX.9.#.9.X.9.#.9.#.9.#.9.#.9.#.9.X.9.XX%
+D:%XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX%
+D:%X8XXX8XXX8XXX8XXX8XXX8XXX8XXX8XXX8X#X8X%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%##.9.#.9.#.9.#.9.#.9.#.9.#.9.#.9.X.9.XX%
+D:%XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.XX#.#XX%
+D:%X8XXX8XXX8XXX8XXX8XXX8XXX8XXX8XXX8XXX8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:100:Lesser Vault (Cross)
+X:7:10:13:20
+D:%%%%%%%%%%%%%%%%%%%%
+D:%########++########%
+D:%#*....*#..#*....*#%
+D:%#....&,#^^#,&....#%
+D:%#....,##..##,....#%
+D:%#+#####*..*#####+#%
+D:%#^^.....,,.....^^#%
+D:%#+#####*..*#####+#%
+D:%#....,##..##,....#%
+D:%#....&,#^^#,&....#%
+D:%#*....*#..#*....*#%
+D:%########++########%
+D:%%%%%%%%%%%%%%%%%%%%
+
+N:101:The I in the Storm
+X:8:30:25:41
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXX%
+D:%X&&..^..#9X..^^^^^^^^^^^^^..X9#..^..&&X%
+D:%X&...#....X..XXXXXX^XXXXXX..X....#...&X%
+D:%X...&#..#.X9XX.@8XX^XX8@.XX9X.#..#&...X%
+D:%X..&9#....XXX...@X,,,X@...XXX....#9&..X%
+D:%X^####..#...XX..XX,.,XX..XX...#..####^X%
+D:%X........,#..XX^X,,.,,X^XX..#,........X%
+D:%X.......#.....^XX,...,XX^.....#.......X%
+D:%X........,#...9X,,...,,X9...#,........X%
+D:%X.......#.....XX.......XX.....#.......X%
+D:%X.#......,#..XX^.......^XX..#,......#.X%
+D:%X.9#....#....#^^...9...^^#....#....#9.X%
+D:%X.#......,#..XX^.......^XX..#,......#.X%
+D:%X.......#.....XX.......XX.....#.......X%
+D:%X........,#...9X,,...,,X9...#,........X%
+D:%X.......#.....^XX,...,XX^.....#.......X%
+D:%X........,#..XX^X,,.,,X^XX..#,........X%
+D:%X^####..#...XX..XX,.,XX..XX...#..####^X%
+D:%X..&9#....XXX...@X,,,X@...XXX....#9&..X%
+D:%X...&#..#.X9XX.@8XX^XX8@.XX9X.#..#&...X%
+D:%X&...#....X&&XXXXXX^XXXXXX&&X....#...&X%
+D:%X&&..^..#9X..^^^^^^^^^^^^^..X9#..^..&&X%
+D:%XXXXXXXXXXXXXXXXXXX#XXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:102:Roundabout Two
+X:8:30:25:40
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%#^X.^^+X@XX.+X^^^^^+.X...X8#@&*X*****X%
+D:%X^X.^XX@XX.XX^^^^^^X.X.X^XXX@.&+9....X%
+D:%X^X.XX&XX.XX^^^^^^^X.X.X^X8#@&*X99...X%
+D:%X^X.X^^X&.XXXXXXXXXX.X.X^XXXXXXXXXX++X%
+D:%X^X.X.*X&.X.......&..X.X^X........X^^X%
+D:%X^X&X.*X^^X.XXXXXXXXXX.X&X#XXXXXX.X^.X%
+D:%X^X.X..X^^X...@........X.X......X.X^^X%
+D:%X^X.X..X^^XXXXXXXXXXXXXX.XXXXXX.X.X.^X%
+D:%X^X.X..X^^X..,.....,....&X8#,*X.X.X^^X%
+D:%X^X&X,,X^^X^XXXXXXXXXXXXXX##,,X.X.X^.X%
+D:%X^+&X..+^^X^^^^^^^^^^^^^^^9...#.X.#^^X%
+D:%X^X&X,,X^^X^XXXXXXXXXXXXXX##,*X.X.X.^X%
+D:%X^X.X..X^^X..,.....,....&X8#,,X.X.X^^X%
+D:%X^X.X..X^^XXXXXXXXXXXXXX.XXXXXX.X.X^.X%
+D:%X^X.X..X^^X...@........X.X......X.X^^X%
+D:%X^X&X.*X^^X.XXXXXXXXXX.X&X#XXXXXX.X.^X%
+D:%X^X.X.*X&.X.......&..X.X^X........X^^X%
+D:%X^X.X^^X&.XXXXXXXXXX.X.X^XXXXXXXXXX++X%
+D:%X^X.XX&XX.XX^^^^^^^X.X.X^X8#@&*X99...X%
+D:%X^X.^XX@XX.XX^^^^^^X.X.X^XXX@.&+9....X%
+D:%#^X.^^+X@XX.+X^^^^^+.X...X8#@&*X*****X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:103:Modified Greater Vault (Huge)
+X:8:45:17:39
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X%
+D:%X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X.X%
+D:%X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X%
+D:%X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X8X.X%
+D:%X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X#X%
+D:%X8X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8X8X.X%
+D:%X#X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXX#X#X%
+D:%X8X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8X.X%
+D:%X#X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#X%
+D:%X8X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#.X%
+D:%X#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%X8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+N:104:The Bank from Hell
+X:8:30:20:31
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%XXXXXXXXXXXXXX+XXXXXXXXXXXXXX%
+D:%X.&.&.&.&.&.#...#.&.&.&.&.&.X%
+D:%X.#.#.#.#.#.#...#.#.#.#.#.#.X%
+D:%X...........#...#...........X%
+D:%X##########+##+##+##########X%
+D:%X@........^^^^^^^^^........@X%
+D:%X@^^^.....^^^...^^^.....^^^@X%
+D:%X##+#######+#####+#######+##X%
+D:%X.^^^.#@..^^^...^^^..@#.^^^.X%
+D:%X#...##...............#.###.X%
+D:%X@...@#.&.&.&.&.&.&.&.#..@..X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXX+X%
+D:%X.+^*****X*******^+^******X.X%
+D:%X@X^....^X^......^X^.....*X@X%
+D:%X.X*****^+^*******X*******X.X%
+D:%X@XXXXXXXXXXXXXXXXXXXXXXXXX@X%
+D:%X.@.@.@.@.@.@.@.@.@.@.@.@.@.X%
+D:%XXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+# Between vaults from weisiger
+N:105:The Between Vault
+X:8:15:6:25
+D:XXXXXXXXXXXXXXXXXXXXXXXXX
+D:#,,,,,X&...@X..**&X....9X
+D:#...&1X.,,,2X..**&X3...9X
+D:#...&.X1,,,.X2.**3X....9X
+D:#,,,,,X&...@X..**&X....9X
+D:XXXXXXXXXXXXXXXXXXXXXXXXX
+
+N:106:Greater Vault (Mix&Match)
+X:8:35:28:73
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+D:%.......................................................................%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X1.^^^^*&XX,,,9,,,XX...X...X...X&..X@..X@.8X7X8#X8#X8#X8#X8#X8#X8#.7X.%
+D:%.X..^^^*,XX@&@&@&@&X.X...X...X..#X&..X&..X@.#XXX#8XX8XX8XX8XX8XX8XXXXX.%
+D:%.X^^^^*,XXXX.......X6.X...X...X.#.X&..X@..X@.8X8XXXXXXXXXXXXXXXXXX88XX.%
+D:%.X^^^*,XX&&XX.....XXXXXXXX.X...X#..X&.#X&..X@.XX#9#9#9#9X88XX^^XX#8XXX.%
+D:%.X^^*,X#^^^^XX^XXX.X***&@XXXX...X...X&#.X@..X@X8X9X9X9X9X8#X^^XX8#X#8X.%
+D:%.X^*,XX^^^^^^XX^XX5X***@&,,XXX...X...X#..X&..XX#X#X#X#X#XXX^^XX##XX88X.%
+D:%.X*,XX........XX^XXX***&@,,,,XXX..X..#X&..X@..X8X8X8X8X8XX^^XX88XXXXXX.%
+D:%.X&XX..........XX^XX***@&,,,,#.XXX.X.#.X&..X&.X#X#X#X#X#X^^X#8XXXX,#.X.%
+D:%.XXX************XX6X@&@&@,,,,#...XXXX#..X&.#X@X8X8X8X8X8#XXXXXX,,,,#.X.%
+D:%.XX&,&,&,&,&,&,&,XXXX@&@&,,,,#.....XXX...X&#.XX8X8X8X8X8XXXX,,,,,,,#.X.%
+D:%.XX#************XX.^#X,,,,,,,#.......XXXXXXXXXX8X8X8XXXXX@&#,,,,,,XX#X.%
+D:%.X^XX..........XXX.XXXX,,,,,,#................X8XXXXX&&#&@&#,,XXXXX#.X.%
+D:%.X.XXX........XX3X^X99XXXXXXXXXXXXXXX#XXXXXXX.XXXX,#&&&#&@&XXXX,#^X#.X.%
+D:%.X.XXXX......XXX.X.X@@,,,,,,,,,,,,X1X.......X.X,,,,#&&&#XXXX,,,,#^X.#X.%
+D:%.X^XXXXX....XXXX.^.XXXXXXXXXXXXXX*X^X+XXXXX.X.X,,,,#&&XXX##9,,,,#^X.#X.%
+D:%.X.X^^.XX@@XXXXXXXXX9@&,,,,,,,,,X*X.X^^&,,X.X.X#####XXX#9@##@,,,#^X#.X.%
+D:%.X.X^X.XXXXX^^^XXXXXXXXXXXXXXXX,X*X.X^^^,,X.X.X&&&XXX@8##&@##@,,#^X#.X.%
+D:%.X^X.X2XXXX3^^^XXX.^..^..^..^.X,X*X^X&^^^&X.X.X##XX5.@89##9@##&,#^#.#X.%
+D:%.X.X^XXXXXXXXX^^XX.XXXXXXXXXX.X,X*X.X..^^^X.X.X^XXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X.X^^.^..^..X^^^X.^..^..^.4X^X,X*X.X2.&^^+.+.X.^.^.^.^.^.^.^.^.^.^.4X.%
+D:%.X^XXXXXXXXX^X^^^XXXXXXXXXXXX#X#X#X^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.X..^..^..^..X^^^#................X..^..^..^..^..^..^..^..^..^..^..^.+.%
+D:%.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.%
+D:%.......................................................................%
+D:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+# Wilderness vault test
+N:107:The Wilderness Vault
+X:10:1:3:7
+D:XXXXXXX
+D:T,,,,8X
+D:XXXXXXX
diff --git a/lib/edit/volcano.txt b/lib/edit/volcano.txt
new file mode 100644
index 00000000..1b89cf3d
--- /dev/null
+++ b/lib/edit/volcano.txt
@@ -0,0 +1,83 @@
+# File: volcano.txt
+
+# Stairway to the Hell
+F:$:7:3:0:0:0:0:0:6
+
+# Hole to the center of the Volcano
+F:>:7:3:0:0:0:0:0:5
+
+############### Town Layout ###############
+
+D:######################################################################################################################################################################################################
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL$LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^>^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^^K^^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^K^LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#
+D:######################################################################################################################################################################################################
+
+
+############### SLarting positions ###############
+
+# Standard starting position for normal races
+?:[EQU $LEAVING_QUEST 0]
+P:64:80
diff --git a/lib/edit/w_info.txt b/lib/edit/w_info.txt
new file mode 100644
index 00000000..65efc2fc
--- /dev/null
+++ b/lib/edit/w_info.txt
@@ -0,0 +1,120 @@
+# PernAngband wilderness definition file by DarkGod (darkgod@pernangband.org)
+# with the help form Gwidon S. Naskrent (naskrent@artemida.amu.edu.pl)
+# Designed to "look like" Middle-earth map
+
+W:D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+W:D:XgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:XgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:Xggggggggggg=========g=========gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:Xgggggg========t===ggg==========gggggtggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:Xggggg=========gtgg^g======ggg=gggggggggggtggtggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:Xggg=========gg^t^^g========ggggt^g^ttggtgtgggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:X==========,,,,&__ttgg=ggg=ggggt^^%t^^^tg&ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggX
+W:D:X========..tt&&&^__,ttttttttttttt,gttttt&&&&ggtggggggggggtgggggtgggggggggggggggggtggggggggggggggtgggX
+W:D:X===^===....,&&&,t__,,,,,,g,t,,,,,,,,tttgt&^^&g&g&ggtggggggggggggggggtttggtgggggggtgggtgggggtgggggggX
+W:D:X=========.,.&&,,,,__t,,,,,t,,,,t,t,,,,,tttt&t&^MMM&ggggg&g&&&gggttttttgtttgttttttttttttttttttttttttX
+W:D:X=========.,.&&,,_,__,,,,,,,,,,,,,,,,,,,,,tttg...2Mt&&&&&&&t&t&&&&tgttttttttttttgtttttttttttttttttttX
+?:[EQU $TOWN_DESTROY2 1]
+W:M:0:1
+W:D:X=========.,.&&,,_,__,,,,,,,,,,,,,,,,,,,,,tttg...PMt&&&&&&&t&t&&&&tgttttttttttttgtttttttttttttttttttX
+?:1
+W:D:X========..T.&___.___,,^,,,,,,,,,,,,,,,,,,tttt.&MMM^^__t^&&&,t^^ttttt,t,t,ttttttttttttttttttttttttttX
+W:D:X======.,..__&&,,,,__,,^^,,,,,,,,,,,,,,,,,t....t&&t^^__^__&.&,&&&^^,,t,,,,,,,,t,t,t,ttttttttttttttttX
+W:D:X=====,..__.T&&..,,__,,^^,,,,.,,,^^,,,,,,,,^^^t^&&&&,__^__tTTT,,,,,,,,,,,,t,,,,,,,,,,,,,t,ttttttttttX
+W:D:X===....__.,.&&,.,,__,,_^,,,,,,,,^^,,,,,,,,^^,^^^_&_^^__TT__T_TT,,&_,,,,,,,,,,,,,^,^,t,,,,,,t,ttttttX
+W:D:X===..,.__.TT&&..,__,__^^==,,.,^^,,.,,.,,,,^^____^&&___,TTTT_T__,,__,,,,^^,^^^^^^^^,,,,,t,,,,,,,,,,tX
+W:D:X===....__..T&&....__,^^=,__....,.....,,.,,^__^^,^&&,__,TTTTT__T_==,,,,,,,^_,,^,,,,,,,,,,,,,,t,t,,,,X
+W:D:X===...__..TT&&...__,.^^^..__.........,,,,,__^^^^^&&,__,TTTTTT_TT_=,,,,,,,__,,,,,,,,,,,,,,,,,,,,,,t,X
+W:D:X===...__..TT&&&..__..^..,.__...,..^..,,,,__^.^^^^&&,__,TTTTT&T&T__,,,,,,,,,__,,,,,,,,,,,,,,,,,,,,,,X
+W:D:X===....==..T.&..__..,.....__TTT....^^...__..TTT._&&..__,TTT&T&T&T__,,,,,,,,,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X====...==.....==......^...__TTTT.1.^^..,__...T__&&...__.TTTTTTTTT__,,,,,,,,__,,,,,,,,,,,,,,,,,,,,,,X
+W:D:X=====..========...^.^......__TTT._.^....__..,__._&...__.TTTTTTTTTT,__,,,,,,,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X==============..............__TT........__..__^_&&..,.__.TTTTTTTTT,__,,,,,,,,__,,,,,,,,,,,,,,,,,,,,X
+W:D:X======..==....&&............__..^^^....__...__^&&.....__.*TTTTTTT,,,__,,,,,,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X======........&&......,.....__...^.^...__.__.^^&&..._.__.TTTTTTTT..,,______,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X======........&&............__.,......__..__.^^&&___.___.TTTTTTTT....,,.,,,__,,,,,,,,,,,,,,,,,,,,,,X
+W:D:X======........&&....^......__..........___...^^&&.....__.TTTTT.T.,.....,,,,,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X=======.....T&&&..^^^^....__..........__....^^&&^...,__...TTTT......,....,,,__,,,,,,,,,,,,,,,,,,,,,X
+W:D:X==========..T&&&T.......__..........__......^^&&&&^..__...TTTT...........,,,,__,,,_,,,,,,,T,T,,,,,,X
+W:D:X==========..TTT&&T&&...__........,___......^)^&&.&^.__.....TTTTTT....,.....,,__,__,_=,,,TTTTTT,,,,,X
+W:D:X==========...TT&TT..___.__.......__.@__..._^^^&&....__..TTTTTTTTTT...........,,_,.,,==...T=_TT,,,,,X
+W:D:X==========.....T.T.__.._........__..._____^___&__...__,TTTTTTTTTT...,..,..,....,,,,,========TT,,,,,X
+W:D:X===========.=......__.........__.........^^^&&&_T,T__,.TT&TTTTTTT..........,.,.....=========T,,,,,,X
+W:D:X================..__..........__,.......^.^M&&._T4T__..TTTTTTTTT......,......,.....=====..==,,,,,,,X
+W:D:X=================.==T....,...__.........^^^MM&,.TTT.__...TTTTT..........,..........========,,.,,,,,X
+W:D:X===================TT........__.........^^MMMTT.T.^.^__^^........,......,,......^^..=======,,,.,.,,X
+W:D:X===================T==......__......,...^^M)MTTTT^___^.__^.,....................^,..==...==..,,.,.,X
+W:D:X===================T==.....__...........^&MgMMTTTTT..___^^................,..,..^^.......=.....,.,,X
+W:D:X=====================.....__...,........^&M5MTTTTTT.^^^__.....,..,......,,,.....^^...,......,......X
+W:D:X=====================.....=_............&&MMMTTTTT..^^..__.,.........,.........,^^.......,.........X
+W:D:X======================...==........,....&&&&&T.._......__..,..................................,..,.X
+W:D:X=======================.===.............._&^.....__..,...__.....,.........,..,,,...,...,...........X
+W:D:X===========================..............__.......__....__......,.......,...........,..............X
+W:D:X==========================.........._._..__.......__...__^..^,..............................,..,...X
+W:D:X==========================...._.,.__._.___........__...^^_^^@.....,..,.....,.,,....,,....,.,.,.....X
+W:D:X==========================..__.__.___._..&&^^.....__...^^_^^_@..&.&.....,.......,....,.............X
+W:D:X============================....._..._.__.&&&.....__....__.@...&&DD&&....,..................,.,..,.X
+W:D:X===========================.............._&&&^^....__...___....&&D^^D&&.&.&.&.&.&.&.&.&^^^,,,,,,,,,X
+W:D:X===========================.......^.&.^^&&&&&&&......______.....&&DDD&^&^&D&D&D&,&,&,&,,,,,,,,,,,,,X
+W:D:X===========================.....^^.&.&_&^&.&^&_&&&^...._.___....&&^DDD&^DDDDDD^&_,,,,,,,,,,,,,D,D,,X
+W:D:X===========================....^....__^^...^^^__^&&........__...&&^D&DDDDDDD^^,_,__,,,,,,,,,,,,,,,,X
+W:D:X===========================..^^^_..__......^^.__^^&&&........__.&&^DDDDDDDDD^^,,,,__,,,,,D,,,,,,,,,X
+W:D:X============================.^__.__.__......__&^^^.&&&&&&&&&..__&&^DDDDDDD^__,,,,,,__,,,,,,,DDDD,,,X
+W:D:X============================.&^__.._....^^.__&&&^^.._&&&&&&&.^__&^^DDDDD^^,,__,,,,,,__,,,,,,,,,,,,,X
+W:D:X============================^&^__.^^^^^^^^...__...__^&^&&&&&.__^&&^DDD^^^,,,,__,,,D,,__,,,,,,,D,,D,X
+W:D:X===========================.^^.__..^.^.........___..^&^^.^^3.__.&&^D^D^^,,,,__,,D,,,D,__,,,D,,,,,,,X
+W:D:X==========================.^^^..__....===.====__..&^...._^...__.&&,^,^,,,,,,,____,,,,,__,,,,,,,,,,,X
+W:D:X==========================^^....__..===========.&&^....__....__.$&,,,,,,,,D,,,,,=_,,__,,,,,D,,D,D,,X
+W:D:X========================..^^=...=_.==========&^^^^.._.__....__..&&,,,,,,,,,,,,,,==__,,&,,,,,,,,,,,,X
+W:D:X======================^^.^=====.==============^^^._=._......__.._&&,,,,,,,,,======,,,,&&,,D,D,D,D,,X
+W:D:X==============================================.^^^==...._.__..__.&&,,,___,_======,D,,&&,D,,,D,,,DD,X
+W:D:X===============================================..====___.__.__...&&,__,,D_,,D,,=_,,,D&&,D,DD,DDD,DDX
+W:D:X===============================================.==^==_@@..._.....&&_,,,,,,,,,,,__,&&&&DDDDDDDDD,,DDX
+W:D:X=================================================^^===...........&&,&,&,&,&,&,&__&&&DD,DD,DDD,D,,DDX
+W:D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Definition of all the entrances to the dungeons
+# W:E:<dungeon>:<y>:<x>
+
+# Numenor
+W:E:7:25:1
+
+# Path of the Dead
+W:E:16:49:38
+
+# Illusory Castle
+W:E:17:34:42
+
+# Maze
+W:E:18:25:35
+
+# Orc Cave
+W:E:19:15:32
+
+# Erebor
+W:E:20:17:77
+
+# Old Forest
+W:E:21:21:31
+
+# The Sacred Land Of Mountains
+W:E:25:37:80
+
+# The Wild Land Of Rhun
+W:E:26:30:75
+
+# The Sandworm Lair
+W:E:27:28:10
+
+# The Grinding Ice
+W:E:29:3:3
+
+# Dol Guldur
+W:E:23:30:60
+
+# Cirith Ungol
+W:E:9:56:65
+
+
+# Starting position
+W:P:34:21
diff --git a/lib/edit/wf_info.txt b/lib/edit/wf_info.txt
new file mode 100644
index 00000000..80ab14a6
--- /dev/null
+++ b/lib/edit/wf_info.txt
@@ -0,0 +1,170 @@
+# File: wf_info.txt
+
+
+# This file is used to initialize the "lib/raw/wf_info.raw" file, which is
+# used to initialize the "wilderness feats" information for the Angband game.
+
+# Do not modify this file unless you know exactly what you are doing,
+# unless you wish to risk possible system crashes and broken savefiles.
+
+# After modifying this file, delete the "lib/raw/wf_info.raw" file.
+
+# The wilderness feat indexes are defined in "defines.h", and must not be
+# changed.
+
+# N:<index>:<name>
+# D:<long name>
+# W:<level>:<entrance>:<road>:<feat>:<terrain_idx>:<character(must be unique)>
+# F:<flags>
+# X:<feat1>...<feat18>
+
+# Note for <road> :
+# 1 = NORTH
+# 2 = SOUTH
+# 4 = EAST
+# 8 = WEST
+
+# Note for <entrance> :
+# if < 1000 then it points to a town
+# if >= 1000 then it points to the x - 1000 dungeon type
+
+# Version stamp (required)
+
+V:2.0.0
+
+N:0:Ekkaia
+D:the Encircling Sea
+W:1:0:0:182:0:X
+X:182:182:182:182:182:182:182:182:182:182:182:182:182:182:182:182:182:182
+
+N:1:Bree
+D:a small village
+W:1:1:0:203:1:1
+X:88:88:89:89:89:89:96:96:96:96:96:96:96:96:96:96:96:96
+
+N:2:Gondolin
+D:The hidden town of the Noldor
+W:1:2:0:203:1:2
+X:88:88:88:89:89:89:89:89:89:89:89:89:89:96:96:96:96:96
+
+N:3:Minas Anor
+D:The great town of Gondor
+W:1:3:0:203:1:3
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:4:Lothlorien
+D:The land of Galadriel
+W:1:4:0:203:1:4
+X:88:88:96:96:96:96:96:96:96:96:96:96:96:96:96:89:89:89
+
+N:5:grass
+D:a plain of grass
+W:5:0:0:89:6:.
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:6:forest
+D:a forest
+W:20:0:0:96:7:T
+X:88:88:96:96:96:96:96:96:96:96:96:96:96:96:96:89:89:89
+
+N:7:road
+D:a west-east road
+W:5:0:12:1:6:-
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:8:road
+D:a north-south road
+W:5:0:3:1:6:|
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:9:mountain
+D:a mountain chain
+W:50:0:0:97:11:&
+X:1:1:89:89:88:96:96:97:97:97:97:97:97:97:97:97:97:97
+
+N:10:road
+D:a west-east-south road
+W:5:0:14:1:6:,
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+# XXX
+
+N:12:The Nether Realm
+D:the entrance to the netherworld
+W:127:1006:0:7:10:6
+X:88:88:88:86:86:86:85:85:85:85:85:85:85:85:85:97:97:97
+
+N:13:deep water
+D:a deep water area
+W:70:0:0:187:2:=
+X:187:187:187:187:187:187:187:187:187:187:187:187:84:84:84:84:84:84
+
+N:14:shallow water
+D:a shallow water area
+W:20:0:0:84:3:_
+X:187:187:187:84:84:84:84:84:84:84:84:84:84:84:84:1:88:89
+
+N:15:Mirkwood
+D:The Forest of Mirkwood
+W:20:1001:0:7:7:*
+X:88:88:96:96:96:96:96:96:96:96:96:96:96:96:96:89:89:89
+
+N:16:Mordor
+D:The Gates of Mordor
+W:50:1002:0:7:11:$
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:17:Angband
+D:The Pits of Angband
+W:50:1003:0:7:11:%
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:18:hill
+D:a hill
+W:50:0:0:97:11:^
+X:1:1:89:89:88:96:96:97:97:97:97:97:97:97:97:97:97:97
+
+N:19:desert
+D:a desert
+W:5:0:0:91:6:D
+X:1:1:88:88:91:91:91:91:91:91:91:91:91:91:91:98:98:92
+
+N:20:jungle
+D:a jungle
+W:20:0:0:96:7:t
+X:88:88:96:96:96:96:96:96:96:96:96:96:96:96:96:89:89:89
+
+N:21:swamp
+D:a swamp
+W:5:0:0:89:6:@
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:22:glacier
+D:a glacier
+W:20:0:0:90:7:g
+X:94:94:90:90:90:90:90:90:90:90:90:90:90:90:90:90:92:92
+
+N:23:grass
+D:a plain of grass
+W:5:0:0:89:6:,
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:24:Moria
+D:The Doors of Moria
+W:30:1022:0:7:11:)
+X:1:1:88:88:89:89:89:89:89:89:89:89:89:89:89:89:96:96
+
+N:25:high mountain
+D:a high mountain chain
+W:80:0:0:101:11:M
+X:101:101:101:101:101:101:101:101:101:101:101:101:101:101:101:101:101:101
+
+N:26:Gondolin
+D:The pillaged city of the Noldor
+W:1:2:0:203:1:P
+X:49:49:49:88:88:88:92:92:92:92:93:93:94:94:94:174:205:205
+
+N:27:Khazad-dum
+D:The dwarven stronghold
+W:1:5:0:203:1:5
+X:1:1:1:1:1:1:1:1:1:1:88:88:88:88:88:88:88:88
diff --git a/lib/edit/wights.map b/lib/edit/wights.map
new file mode 100644
index 00000000..de83b616
--- /dev/null
+++ b/lib/edit/wights.map
@@ -0,0 +1,82 @@
+# Permanent wall
+F:X:63:3
+
+# up stairs
+F:<:6:3
+
+# Floor with mountain
+F:^:97:3
+
+# Floor
+F:.:1:3
+
+# Floor with dirt
+F:;:88:3
+
+# Floor with forest wight
+F:f:88:3:381
+
+# Floor with grave wight
+F:g:88:3:470
+
+# Floor with barrow wight
+F:b:88:3:499
+
+# Floor with Emperor Wight
+F:e:88:3:604
+
+# Floor with a Human Skeleton
+F:k:88:8:0:395
+
+# Marker
+F:,:172:6
+
+# between gate 1
+F:1:160:6:0:0:0:0:0:2057
+
+# between gate 2
+F:2:160:6:0:0:0:0:0:1036
+
+# between gate 3
+F:3:160:6:0:0:0:0:0:3847
+
+# between gate 4
+F:4:160:6:0:0:0:0:0:2321
+
+# between gate 5
+F:5:160:6:0:0:0:0:0:1043
+
+# between gate 6
+F:6:160:6:0:0:0:0:0:3599
+
+# between gate 7
+F:7:160:6:0:0:0:0:0:2071
+
+# between gate 8
+F:8:160:6:0:0:0:0:0:3350
+
+# between gate 9
+F:9:160:6:0:0:0:0:0:771
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X..k^^^^^^^^^^^^^^^^^^^^^^^XX
+D:Xfkff^^^^^...^^^^..ff^^^^^^XX
+D:X^f1^^^^^^.ffg^^^^.fgg^^^^^XX
+D:X^^^^^^^^^^^fg4^^^^f6^^^^^^XX
+D:X^^^^^^^^^^^^f^^^^^^^^^fg8^XX
+D:X^^^^^^.f^^^^^^^^^^^^.ffg^^XX
+D:X^^^^.ff2^^^^^^.^^^^^^.f^^^XX
+D:X^^^^^3.^^^^^^^.^^^^^^^^^^^XX
+D:X^^^^^^^^^^^^ff.^^^^^^^^^^^XX
+D:X^^^^^^^^^^^7gfg^^^^^^^^f^^XX
+D:X^^^^^^^^^^^^^^^^^^^..^..^^XX
+D:X^^^^^^^^^^^^.^^^^^^....ff^XX
+D:X^^^^...^^^^^ff^^^^^^..fg^^XX
+D:X^^^.fff^^^^gfg^^^^...fgee^^X
+D:X^^^^g5^^^^..8^^^^^f^fgfe,9^X
+D:X^^^^^^^^^^^^^^^^^^^^^^^^^^^X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:3
diff --git a/lib/edit/wolves.map b/lib/edit/wolves.map
new file mode 100644
index 00000000..0e3030ea
--- /dev/null
+++ b/lib/edit/wolves.map
@@ -0,0 +1,55 @@
+# permanent wall
+F:X:61:0
+
+# granite
+F:#:57:0
+
+# up staircase
+F:<:6:0
+
+# Grass
+F:-:89:0
+
+# Dirt
+F:.:88:0
+
+# Trees
+F:t:96:0
+
+# Open door
+F:D:4:0
+
+# Broken door
+F:d:5:0
+
+# Grass with elf skeleton
+F:z:89:0:0:397
+
+# Dungeon layout
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X...t.---.......-.-.....-...#.--X
+D:X-..#..-......-.....--......t...X
+D:X...t.--.tt#ddt##t#dd#t#....#...X
+D:Xz-.t....#.--...#...-..#.--.t...X
+D:X#d##....#.z.z..t---...t....#tD#X
+D:X....---.t......t..-.z.#..z.....X
+D:X...--.-.#...z..#.--...t........X
+D:X##t#-z-.#####dd#dd##tt#....#t#tX
+D:X..-t.--.t....-.t...--.#.---t...X
+D:X.--t---.t......#..--z-#----#-..X
+D:X...D....#.--z...---.--t--.-d--.X
+D:X...#....#........---..#--..#z-.X
+D:X#t#t....t..-...t-z-...t....#tt#X
+D:X..-.....#-..-..#......#.....--.X
+D:X...-.--.#dd#ttt##t##Dd#.....--.X
+D:X#Dt#....#-.....#......#....##t#X
+D:X...#...-t----..#......t...-tz--X
+D:X.z.t...-#--.-..t......#.---#-..X
+D:X.--t.---#-z.--.#.....zt--..d-..X
+D:X---#....###dd#tt##dd###--..t...X
+D:X.z-t..-...-....-..-.--.....#<zzX
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:3:4
+
diff --git a/lib/file/book-0.txt b/lib/file/book-0.txt
new file mode 100644
index 00000000..07403e0d
--- /dev/null
+++ b/lib/file/book-0.txt
@@ -0,0 +1,86 @@
+
+ Mordekainen's Magical Compendum of Deep Thought.
+ ------------------------------------------------
+
+If they ever come up with a swashbuckling School, I think one of the
+courses should be Laughing, Then Jumping Off Something.
+
+It takes a big man to cry, but it takes a bigger man to laugh at that man.
+
+The people in the village were real poor, so none of the children had
+any toys. But this one little boy had gotten an old enema bag and
+filled it with rocks, and he would go around and whap the other
+children across the face with it. Man, I think my heart almost
+broke. Later the boy came up and offered to give me the toy. This was
+too much! I reached out my hand, but then he ran away. I chased him
+down and took the enema bag. He cried a little, but that's the way of
+these people.
+
+Dad always thought laughter was the best medicine, which I guess is
+why several of us died of tuberculosis.
+
+Maybe in order to understand mankind, we have to look at the word
+itself: "Mankind". Basically, it's made up of two separate words -
+"mank" and "ind". What do these words mean? It's a mystery, and
+that's why so is mankind.
+
+Ambition is like a frog sitting on a Venus Flytrap. The flytrap can
+bite and bite, but it won't bother the frog because it only has little
+tiny plant teeth. But some other stuff could happen and it could be
+like ambition.
+
+I'd rather be rich than stupid.
+
+We tend to scoff at the beliefs of the ancients. But we can't scoff at
+them personally, to their faces, and this is what annoys me.
+
+Probably the earliest flyswatters were nothing more than some sort of
+striking surface attached to the end of a long stick.
+
+As the evening sky faded from a salmon color to a sort of flint gray,
+I thought back to the salmon I caught that morning, and how gray he
+was, and how I named him Flint.
+
+When I was a kid my favorite relative was Uncle Caveman. After school
+we'd all go play in his cave, and every once in a while he would eat
+one of us. It wasn't until later that I found out that Uncle Caveman
+was a bear.
+
+Why do there have to be rules for everything? It's gotten to the point
+that rules dominate just about every aspect of our lives. In fact, it
+might be said that rules have become the foot-long sticks of mankind.
+
+If I had a mine shaft, I don't think I would just abandon it. There's
+got to be a better way.
+
+If I had a nickname, I think I would want it to be "Prince of
+Weasels", because then I could go up and bite people and they would
+turn around and go, "What the-?" And then they would recognize me, and
+go, "Oh, it's you, the Prince of Weasels."
+
+It's amazing to me that one of the world's most feared diseases would
+be carried by one of the world's smallest animals: the real tiny
+dog.
+
+Sometimes life seems like a dream, especially when I look down and see
+that I forgot to put on my pants.
+
+I bet it was pretty hard to pick up girls if you had the Black Death.
+
+It's fascinating to think that all around us there's an invisible
+world we can't even see. I'm speaking, of course, of the World of the
+Invisible Scary Skeletons.
+
+Whenever I hear the sparrow chirping, watch the woodpecker chirp,
+catch a chirping trout, or listen to the sad howl of the chirp rat, I
+think: Oh boy! I'm going insane again.
+
+He was the kind of man who was not ashamed to show affection. I guess
+that's what I hated about him.
+
+The next time I have meat and mashed potatoes, I think I'll put a very
+large blob of potatoes on my plate with just a little piece of
+meat. And if someone asks me why I didn't get more meat, I'll just
+say, "Oh, you mean this?" and pull out a big piece of meat from inside
+the blob of potatoes, where I've hidden it. Good magic trick, huh?
+
diff --git a/lib/file/book-1.txt b/lib/file/book-1.txt
new file mode 100644
index 00000000..e0f9232c
--- /dev/null
+++ b/lib/file/book-1.txt
@@ -0,0 +1,83 @@
+
+ Mordekainen's Magical Compendum of Deep Thought, Vol. 2
+ -------------------------------------------------------
+
+
+It makes me mad when people say I turned and ran like a scared
+rabbit. Maybe it was like an angry rabbit, who was running to go fight
+in another fight, away from the first fight.
+
+Perhaps, if I am very lucky, the feeble efforts of my lifetime will
+someday be noticed, and maybe, in small way, they will be acknowledged
+as the greatest works of genius ever created by Man.
+
+Sometimes I think I'd be better off dead. No, wait, not me, you.
+
+If you ever catch on fire, try to avoid looking in a mirror, because I
+bet that will really throw you into a panic.
+
+Children need encouragement. If a kid gets an answer right, tell him
+it was a lucky guess. That way he develops a good, lucky feeling.
+
+The crows seemed to be calling his name, thought Caw.
+
+If your friend is already dead, and being eaten by vultures, I think
+it's okay to feed some bits of your friend to one of the vultures, to
+teach him to do some tricks. But only if you're serious about adopting
+the vulture.
+
+Broken promises don't upset me. I just think, why did they believe me?
+
+One thing vampire children have to be taught early on is, don't run
+with a wooden stake.
+
+Consider the daffodil. And while you're doing that, I'll be over here,
+looking through your stuff.
+
+I think my new thing will be to try to be a real happy guy. I'll just
+walk around being real happy until some jerk says something stupid to
+me.
+
+I hope some animal never bores a hole in my head and lays its eggs in
+my brain, because later you might think you're having a good idea but
+it's just eggs hatching.
+
+Whenever you read a good book, it's like the author is right there, in
+the room talking to you, which is why I don't like to read good books.
+
+What is it about a beautiful sunny afternoon, with the birds singing
+and the wind rustling through the leaves, that makes you want to get
+drunk?
+
+Instead of a trap door, what about a trap window? The guy looks out
+it, and if he leans too far, he falls out. Wait. I guess that's like a
+regular window.
+
+If I ever get real rich, I hope I'm not real mean to poor people, like
+I am now.
+
+Most of the time it was probably real bad being stuck down in a
+dungeon. But some days, when there was a bad storm outside, you'd look
+out your little window and think, "Boy, I'm glad I'm not out in that."
+
+Sometimes you have to be careful when selecting a new name for
+yourself. For instance, let's say you have chosen the nickname "Fly
+Head." Normally you would think that "fly Head" would mean a person
+who has beautiful swept-back features, as if flying through the
+air. But think again. Couldn't it also mean "having a head like a
+fly"? I'm afraid some people might actually think that.
+
+I hope that after I die, people will say of me: "That guy sure owed me
+a lot of money."
+
+The tired and thirsty prospector threw himself down at the edge of the
+watering hole and started to drink. But then he looked around and saw
+skulls and bones everywhere. "Uh-oh," he thought. "This watering hole
+is reserved for skeletons."
+
+Anytime I see something screech across a room and latch onto someone's
+neck, and the guy screams and tries to get it off, I have to laugh,
+because what is that thing.
+
+I hope life isn't a big joke, because I don't get it.
+
diff --git a/lib/file/book-10.txt b/lib/file/book-10.txt
new file mode 100644
index 00000000..51d43c60
--- /dev/null
+++ b/lib/file/book-10.txt
@@ -0,0 +1,250 @@
+The Large yellow snake is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Cave spider is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Wild cat is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Smeagol is a unique monster,
+occurring at surface depths.
+He is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Green ooze is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Poltergeist is a common undead monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Metallic blue centipede is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant white louse is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Black naga is a common monster,
+occurring at surface depths.
+She is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Spotted mushroom patch is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Silver jelly is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Yellow jelly is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Scruffy looking hobbit is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant white ant is a common monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Yellow mold is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Metallic red centipede is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Yellow worm mass is an uncommon animal,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Clear worm mass is an uncommon animal,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Radiation eye is a common monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Cave lizard is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice ranger is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has an inkling of magical powers.
+
+The Novice paladin is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has an inkling of magical powers.
+
+The Blue jelly is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Creeping copper coins is an uncommon animal,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant white rat is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Blue worm mass is a common animal,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Large grey snake is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Bullroarer the Hobbit is a unique monster,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Novice mage is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a small bit dangerous,
+and has rudimentary magical powers.
+
+The Green naga is a common monster,
+occurring at surface depths.
+She is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The Blue ooze is a common monster,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Green glutton ghost is a common undead monster,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Green jelly is a common monster,
+occurring at surface depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Large kobold is a common monster,
+occurring at surface depths.
+It is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Skeleton kobold is a common undead monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Grey icky thing is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Disenchanter eye is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Red worm mass is a common animal,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Copperhead snake is a common animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Purple mushroom patch is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, moderately dangerous,
+and has no magical powers.
+
+The Novice priest is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a little bit dangerous,
+and has small magical powers.
+
+The Novice warrior is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Novice rogue is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Brown mold is a common monster,
+occurring at surface depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant brown bat is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice archer is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has an inkling of magical powers.
+
+The Creeping silver coins is an uncommon animal,
+occurring at surface depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Snaga is a common orc,
+occurring at surface depths.
+He is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Rattlesnake is a common animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Cave orc is a common orc,
+occurring at surface depths.
+He is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-101.txt b/lib/file/book-101.txt
new file mode 100644
index 00000000..e45865a7
--- /dev/null
+++ b/lib/file/book-101.txt
@@ -0,0 +1,4 @@
+nalo means shadow
+ure means sun
+ido means now
+nimir means shine or elf
diff --git a/lib/file/book-102.txt b/lib/file/book-102.txt
new file mode 100644
index 00000000..3b737923
--- /dev/null
+++ b/lib/file/book-102.txt
@@ -0,0 +1,4 @@
+gimli means star
+kadar means city
+izindi means starlight
+lomi means night
diff --git a/lib/file/book-103.txt b/lib/file/book-103.txt
new file mode 100644
index 00000000..0ffeea37
--- /dev/null
+++ b/lib/file/book-103.txt
@@ -0,0 +1,6 @@
+attu means father
+aru means king
+bawiba means wind
+dulgi means black
+balik means ships
+daira means Earth
diff --git a/lib/file/book-104.txt b/lib/file/book-104.txt
new file mode 100644
index 00000000..3b60e8ca
--- /dev/null
+++ b/lib/file/book-104.txt
@@ -0,0 +1,6 @@
+naur means fire
+mellon means friend
+Edain means Dunedain
+pedo means speak
+Pheriain means Halflings
+a minno means and enter
diff --git a/lib/file/book-105.txt b/lib/file/book-105.txt
new file mode 100644
index 00000000..f3667d64
--- /dev/null
+++ b/lib/file/book-105.txt
@@ -0,0 +1,7 @@
+baraz means red
+Baruk means Axes
+dum means halls
+Khazad means Dwarves
+gabil means great
+aimenu means upon you
+gathol means fortress
diff --git a/lib/file/book-106.txt b/lib/file/book-106.txt
new file mode 100644
index 00000000..81c4043c
--- /dev/null
+++ b/lib/file/book-106.txt
@@ -0,0 +1,5 @@
+dori means land
+hrassa means precipice
+Danas means Green-elves
+dunna means black
+garma means wolf
diff --git a/lib/file/book-107.txt b/lib/file/book-107.txt
new file mode 100644
index 00000000..1abc6d8e
--- /dev/null
+++ b/lib/file/book-107.txt
@@ -0,0 +1,6 @@
+nazg means ring
+ghash means fire
+snaga means slave
+burz means black
+ronk means pool
+bubhosh means great
diff --git a/lib/file/book-11.txt b/lib/file/book-11.txt
new file mode 100644
index 00000000..bd3c0593
--- /dev/null
+++ b/lib/file/book-11.txt
@@ -0,0 +1,250 @@
+The Wood spider is a somewhat rare animal,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Manes is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Bloodshot eye is a somewhat rare monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Pink naga is an uncommon monster,
+occurring at surface depths.
+She is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Pink jelly is a common monster,
+occurring at surface depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant pink frog is a common animal,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Green icky thing is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Zombified kobold is a common undead monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Lost soul is an uncommon undead monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Dark elf is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has an inkling of magical powers.
+
+The Night lizard is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Mughash the Kobold Lord is a unique monster,
+occurring at surface depths.
+He is extremely weak, moderately dangerous,
+and has no magical powers.
+
+Wormtongue, Agent of Saruman is a unique monster,
+occurring at surface depths.
+He is very weak, not at all dangerous,
+and has remarkable magical powers.
+
+Lagduf, the Snaga is a unique orc,
+occurring at surface depths.
+He is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Brown yeek is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice ranger is a common monster,
+occurring at surface depths.
+He is laughably weak, just a little bit dangerous,
+and has an inkling of magical powers.
+
+The Giant salamander is a common animal,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Green mold is an uncommon monster,
+occurring at surface depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Skeleton orc is a common undead monster,
+occurring at surface depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Novice paladin is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a little bit dangerous,
+and has an inkling of magical powers.
+
+The Lemure is a somewhat rare monster,
+occurring at surface depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Hill orc is a common monster,
+occurring at surface depths.
+He is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The Bandit is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Yeti is a somewhat rare animal,
+occurring at surface depths.
+It is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Bloodshot icky thing is a somewhat rare monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Giant grey rat is a common animal,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Black harpy is a common animal,
+occurring at surface depths.
+She is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Orc shaman is a common orc,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has rudimentary magical powers.
+
+The Baby blue dragon is an uncommon dragon,
+occurring at surface depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Baby white dragon is an uncommon dragon,
+occurring at surface depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Baby green dragon is an uncommon dragon,
+occurring at surface depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Baby black dragon is an uncommon dragon,
+occurring at surface depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Baby red dragon is an uncommon dragon,
+occurring at surface depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Giant pink ant is an uncommon monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+Brodda, the Easterling is a unique monster,
+occurring at surface depths.
+It is very weak, just a little bit dangerous,
+and has no magical powers.
+
+The King cobra is an uncommon animal,
+occurring at surface depths.
+It is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Giant spider is an uncommon animal,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Dark elven mage is a common monster,
+occurring at very shallow depths.
+He is laughably weak, not at all dangerous,
+and has simple magical powers.
+
+Orfax, Son of Boldor is a unique animal,
+occurring at very shallow depths.
+He is extremely weak, somewhat dangerous,
+and has remarkable magical powers.
+
+The Dark elven warrior is a common monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Clear mushroom patch is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+Grishnakh, the Hill Orc is a unique orc,
+occurring at very shallow depths.
+He is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant white tick is an uncommon animal,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Hairy mold is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Disenchanter mold is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Pseudo dragon is an uncommon monster,
+occurring at very shallow depths.
+It is very weak, not at all dangerous,
+and has simple magical powers.
+
+The Tengu is a common monster,
+occurring at very shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has rudimentary magical powers.
+
+The Creeping gold coins is a somewhat rare animal,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Wolf is a common animal,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Giant fruit fly is a legendary animal,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-12.txt b/lib/file/book-12.txt
new file mode 100644
index 00000000..d111d15d
--- /dev/null
+++ b/lib/file/book-12.txt
@@ -0,0 +1,250 @@
+The Panther is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Brigand is an uncommon monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Baby multi-hued dragon is an uncommon dragon,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has arcane magical powers.
+
+The Hippogryph is a common monster,
+occurring at very shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Zombified orc is a common undead monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Gnome mage is an uncommon monster,
+occurring at very shallow depths.
+He is laughably weak, not one little bit dangerous,
+and has unremarkable magical powers.
+
+The Black mamba is a somewhat rare animal,
+occurring at very shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The White wolf is a common animal,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Grape jelly is a somewhat rare monster,
+occurring at very shallow depths.
+It is moderately strong, just a small bit dangerous,
+and has no magical powers.
+
+The Nether worm mass is a somewhat rare animal,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Golfimbul, the Hill Orc Chief is a unique orc,
+occurring at very shallow depths.
+He is somewhat weak, moderately dangerous,
+and has no magical powers.
+
+The Master yeek is an uncommon animal,
+occurring at very shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has arcane magical powers.
+
+The Priest is a common monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has unremarkable magical powers.
+
+The Dark elven priest is a common monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has unremarkable magical powers.
+
+The Air spirit is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Skeleton human is a common undead monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Zombified human is a common undead monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Tiger is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Moaning spirit is an uncommon undead monster,
+occurring at very shallow depths.
+It is laughably weak, moderately dangerous,
+and has rudimentary magical powers.
+
+The Swordsman is a common monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Stegocentipede is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Spotted jelly is a somewhat rare monster,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Drider is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has rudimentary magical powers.
+
+The Killer brown beetle is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+Boldor, King of the Yeeks is a unique animal,
+occurring at very shallow depths.
+He is very weak, somewhat dangerous,
+and has remarkable magical powers.
+
+The Ogre is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The Creeping mithril coins is a rare animal,
+occurring at very shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Illusionist is an uncommon monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has arcane magical powers.
+
+The Druid is an uncommon monster,
+occurring at very shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has remarkable magical powers.
+
+The Black orc is an uncommon orc,
+occurring at very shallow depths.
+He is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Ochre jelly is a somewhat rare monster,
+occurring at very shallow depths.
+It is extremely weak, very dangerous,
+and has no magical powers.
+
+The Giant flea is a common monster,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Ufthak of Cirith Ungol is a unique orc,
+occurring at very shallow depths.
+He is somewhat weak, moderately dangerous,
+and has no magical powers.
+
+The Giant white dragon fly is a somewhat rare animal,
+occurring at very shallow depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Blue icky thing is a rare monster,
+occurring at very shallow depths.
+It is laughably weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Hill giant is a common monster,
+occurring at very shallow depths.
+It is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Flesh golem is a common monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Warg is an uncommon animal,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Giant black louse is a common monster,
+occurring at very shallow depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Lurker is a somewhat rare monster,
+occurring at very shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Wererat is an uncommon animal,
+occurring at very shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has simple magical powers.
+
+The Black ogre is an uncommon giant,
+occurring at very shallow depths.
+It is very weak, just a little bit dangerous,
+and has no magical powers.
+
+The Magic mushroom patch is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, not at all dangerous,
+and has arcane magical powers.
+
+The Guardian naga is an uncommon monster,
+occurring at very shallow depths.
+She is somewhat weak, not one little bit dangerous,
+and has no magical powers.
+
+The Light hound is a common monster,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has an inkling of magical powers.
+
+The Dark hound is a common monster,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has an inkling of magical powers.
+
+The Half-orc is a somewhat rare orc,
+occurring at very shallow depths.
+He is very weak, just a small bit dangerous,
+and has no magical powers.
+
+The Giant tarantula is a somewhat rare animal,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Giant clear centipede is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Mirkwood spider is an uncommon animal,
+occurring at very shallow depths.
+It is laughably weak, moderately dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-13.txt b/lib/file/book-13.txt
new file mode 100644
index 00000000..b8a15e3f
--- /dev/null
+++ b/lib/file/book-13.txt
@@ -0,0 +1,250 @@
+The Frost giant is a common giant,
+occurring at very shallow depths.
+It is very weak, not at all dangerous,
+and has no magical powers.
+
+The Griffon is a common animal,
+occurring at very shallow depths.
+It is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Homonculous is a somewhat rare monster,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Gnome mage is an uncommon monster,
+occurring at very shallow depths.
+He is laughably weak, just a little bit dangerous,
+and has unremarkable magical powers.
+
+The Clear hound is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Clay golem is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Umber hulk is a common animal,
+occurring at very shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Orc captain is a somewhat rare orc,
+occurring at very shallow depths.
+He is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Gelatinous cube is a rare monster,
+occurring at very shallow depths.
+It is somewhat weak, hellishly dangerous,
+and has no magical powers.
+
+The Giant green dragon fly is an uncommon animal,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Fire giant is an uncommon giant,
+occurring at very shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Hummerhorn is an extremely rare animal,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+Ulfast, Son of Ulfang is a unique monster,
+occurring at very shallow depths.
+He is somewhat weak, just a little bit dangerous,
+and has no magical powers.
+
+The Quasit is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has average magical powers.
+
+The Imp is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, moderately dangerous,
+and has average magical powers.
+
+The Forest troll is a common troll,
+occurring at very shallow depths.
+He is very weak, just a little bit dangerous,
+and has no magical powers.
+
+Nar, the Dwarf is a unique monster,
+occurring at very shallow depths.
+He is somewhat strong, moderately dangerous,
+and has simple magical powers.
+
+The 2-headed hydra is an uncommon monster,
+occurring at very shallow depths.
+It is somewhat weak, not one little bit dangerous,
+and has no magical powers.
+
+The Water spirit is a common monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant pink scorpion is a common monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Earth spirit is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Fire spirit is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Fire hound is a common animal,
+occurring at very shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Cold hound is a common animal,
+occurring at very shallow depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Energy hound is a common animal,
+occurring at very shallow depths.
+It is laughably weak, moderately dangerous,
+and has no magical powers.
+
+The Mimic (potion) is a somewhat rare monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has small magical powers.
+
+The Blink dog is an uncommon monster,
+occurring at very shallow depths.
+It is laughably weak, just a little bit dangerous,
+and has rudimentary magical powers.
+
+The Uruk is a common orc,
+occurring at very shallow depths.
+He is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+Shagrat, the Orc Captain is a unique orc,
+occurring at very shallow depths.
+He is moderately strong, somewhat dangerous,
+and has no magical powers.
+
+Gorbag, the Orc Captain is a unique orc,
+occurring at very shallow depths.
+He is moderately strong, somewhat dangerous,
+and has no magical powers.
+
+The Shambling mound is an uncommon monster,
+occurring at very shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Stone giant is a common monster,
+occurring at very shallow depths.
+It is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant black dragon fly is an uncommon animal,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Stone golem is an uncommon monster,
+occurring at very shallow depths.
+It is very weak, moderately dangerous,
+and has no magical powers.
+
+The Red mold is a common monster,
+occurring at very shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant gold dragon fly is an uncommon animal,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Bolg, Son of Azog is a unique orc,
+occurring at somewhat shallow depths.
+He is somewhat strong, somewhat dangerous,
+and has no magical powers.
+
+The Phase spider is an uncommon animal,
+occurring at somewhat shallow depths.
+It is laughably weak, moderately dangerous,
+and has rudimentary magical powers.
+
+The 3-headed hydra is an uncommon monster,
+occurring at somewhat shallow depths.
+It is somewhat strong, not one little bit dangerous,
+and has no magical powers.
+
+The Earth hound is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Air hound is a common animal,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Sabre-tooth tiger is an uncommon monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, not one little bit dangerous,
+and has no magical powers.
+
+The Water hound is an uncommon animal,
+occurring at somewhat shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+The Chimera is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, not at all dangerous,
+and has no magical powers.
+
+The Quylthulg is a common monster,
+occurring at somewhat shallow depths.
+It is laughably weak, just a small bit dangerous,
+and has rudimentary magical powers.
+
+The Sasquatch is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is moderately strong, not one little bit dangerous,
+and has no magical powers.
+
+The Werewolf is a common animal,
+occurring at somewhat shallow depths.
+It is moderately strong, not one little bit dangerous,
+and has no magical powers.
+
+The Dark elven lord is an uncommon monster,
+occurring at somewhat shallow depths.
+He is somewhat weak, not one little bit dangerous,
+and has average magical powers.
+
+The Cloud giant is a common giant,
+occurring at somewhat shallow depths.
+It is somewhat weak, somewhat dangerous,
+and has no magical powers.
+
+Ugluk, the Uruk is a unique orc,
+occurring at somewhat shallow depths.
+He is very strong, somewhat dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-14.txt b/lib/file/book-14.txt
new file mode 100644
index 00000000..b987ea99
--- /dev/null
+++ b/lib/file/book-14.txt
@@ -0,0 +1,250 @@
+Lugdush, the Uruk is a unique orc,
+occurring at somewhat shallow depths.
+He is extremely strong, moderately dangerous,
+and has no magical powers.
+
+The Blue dragon bat is a common animal,
+occurring at somewhat shallow depths.
+It is laughably weak, not at all dangerous,
+and has an inkling of magical powers.
+
+The Mimic (scroll) is a somewhat rare monster,
+occurring at somewhat shallow depths.
+It is extremely weak, moderately dangerous,
+and has average magical powers.
+
+The Fire vortex is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Water vortex is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Cold vortex is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Energy vortex is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Mummified orc is a common undead monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Killer stag beetle is a common monster,
+occurring at somewhat shallow depths.
+It is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Iron golem is an uncommon monster,
+occurring at somewhat shallow depths.
+It is unimaginably strong, moderately dangerous,
+and has no magical powers.
+
+The Giant yellow scorpion is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Black ooze is a common monster,
+occurring at somewhat shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Hardened warrior is a common monster,
+occurring at somewhat shallow depths.
+He is very weak, not one little bit dangerous,
+and has no magical powers.
+
+Azog, King of the Uruk-Hai is a unique orc,
+occurring at somewhat shallow depths.
+He is alarmingly strong, moderately dangerous,
+and has no magical powers.
+
+The Master rogue is an uncommon monster,
+occurring at somewhat shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+The Red dragon bat is a common animal,
+occurring at somewhat shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has an inkling of magical powers.
+
+The Killer white beetle is a common monster,
+occurring at somewhat shallow depths.
+It is very weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant bronze dragon fly is a common animal,
+occurring at very shallow depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Forest wight is a common undead monster,
+occurring at somewhat shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has an inkling of magical powers.
+
+Ibun, Son of Mim is a unique monster,
+occurring at somewhat shallow depths.
+He is alarmingly strong, somewhat dangerous,
+and has small magical powers.
+
+Khim, Son of Mim is a unique monster,
+occurring at somewhat shallow depths.
+He is alarmingly strong, somewhat dangerous,
+and has small magical powers.
+
+The 4-headed hydra is an uncommon monster,
+occurring at somewhat shallow depths.
+It is strong, not one little bit dangerous,
+and has no magical powers.
+
+The Mummified human is a common undead monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has no magical powers.
+
+The Vampire bat is an uncommon undead monster,
+occurring at somewhat shallow depths.
+It is extremely weak, moderately dangerous,
+and has no magical powers.
+
+Sangahyando of Umbar is a unique monster,
+occurring at somewhat shallow depths.
+He is extremely strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+Angamaite of Umbar is a unique monster,
+occurring at somewhat shallow depths.
+He is extremely strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Banshee is an uncommon undead monster,
+occurring at somewhat shallow depths.
+She is laughably weak, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Pukelman is a somewhat rare monster,
+occurring at somewhat shallow depths.
+It is unimaginably strong, moderately dangerous,
+and has small magical powers.
+
+The Dark elven druid is a somewhat rare monster,
+occurring at somewhat shallow depths.
+He is moderately strong, just a little bit dangerous,
+and has unremarkable magical powers.
+
+The Stone troll is a common troll,
+occurring at somewhat shallow depths.
+He is very weak, just a little bit dangerous,
+and has no magical powers.
+
+The Troll priest is a common troll,
+occurring at somewhat shallow depths.
+He is somewhat weak, just a little bit dangerous,
+and has unremarkable magical powers.
+
+The Wereworm is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+The Carrion crawler is an uncommon animal,
+occurring at somewhat shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Killer pink beetle is an uncommon monster,
+occurring at somewhat shallow depths.
+It is very weak, just a small bit dangerous,
+and has no magical powers.
+
+The Giant grey ant is a common monster,
+occurring at somewhat shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has no magical powers.
+
+Ulwarth, Son of Ulfang is a unique monster,
+occurring at somewhat shallow depths.
+He is extremely strong, just a little bit dangerous,
+and has no magical powers.
+
+The Displacer beast is an uncommon monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a little bit dangerous,
+and has no magical powers.
+
+The Giant red tick is a common animal,
+occurring at somewhat shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The Cave ogre is a common monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has no magical powers.
+
+The White wraith is a common undead monster,
+occurring at somewhat shallow depths.
+It is extremely weak, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Monadic Deva is a legendary monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, moderately dangerous,
+and has small magical powers.
+
+Mim, Betrayer of Turin is a unique monster,
+occurring at somewhat shallow depths.
+He is hellishly strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Killer red beetle is a common animal,
+occurring at somewhat shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Creeping adamantite coins is a rare animal,
+occurring at somewhat shallow depths.
+It is somewhat strong, moderately dangerous,
+and has no magical powers.
+
+The Algroth is a common monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, moderately dangerous,
+and has no magical powers.
+
+The Vibration hound is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is very weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Nexus hound is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is very weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Ogre mage is an uncommon giant,
+occurring at somewhat shallow depths.
+It is moderately strong, not one little bit dangerous,
+and has arcane magical powers.
+
+Lokkak, the Ogre Chieftain is a unique giant,
+occurring at somewhat shallow depths.
+He is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+The Vampire is a common undead monster,
+occurring at somewhat shallow depths.
+It is somewhat weak, moderately dangerous,
+and has arcane magical powers.
+
diff --git a/lib/file/book-15.txt b/lib/file/book-15.txt
new file mode 100644
index 00000000..5f33444b
--- /dev/null
+++ b/lib/file/book-15.txt
@@ -0,0 +1,250 @@
+The Gorgimera is an uncommon monster,
+occurring at somewhat shallow depths.
+It is somewhat strong, just a small bit dangerous,
+and has no magical powers.
+
+The Colbran is an uncommon monster,
+occurring at somewhat shallow depths.
+It is unimaginably strong, moderately dangerous,
+and has an inkling of magical powers.
+
+The Spirit naga is an uncommon monster,
+occurring at somewhat shallow depths.
+She is somewhat strong, somewhat dangerous,
+and has unremarkable magical powers.
+
+The 5-headed hydra is an uncommon animal,
+occurring at somewhat shallow depths.
+It is extremely strong, moderately dangerous,
+and has rudimentary magical powers.
+
+The Black knight is a common monster,
+occurring at somewhat shallow depths.
+He is somewhat weak, not one little bit dangerous,
+and has rudimentary magical powers.
+
+Uldor the Accursed is a unique monster,
+occurring at somewhat shallow depths.
+He is unimaginably strong, just a little bit dangerous,
+and has no magical powers.
+
+The Mage is a common monster,
+occurring at somewhat shallow depths.
+He is extremely weak, not one little bit dangerous,
+and has unimaginably powerful magical powers.
+
+The Mind flayer is a common monster,
+occurring at somewhat shallow depths.
+It is very weak, moderately dangerous,
+and has remarkable magical powers.
+
+Draebor, the Imp is a unique monster,
+occurring at somewhat shallow depths.
+It is somewhat strong, very dangerous,
+and has arcane magical powers.
+
+The Basilisk is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is strong, not at all dangerous,
+and has no magical powers.
+
+The Ice troll is a common troll,
+occurring at somewhat shallow depths.
+He is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant purple worm is a somewhat rare animal,
+occurring at somewhat shallow depths.
+It is somewhat strong, somewhat dangerous,
+and has no magical powers.
+
+The Movanic Deva is a legendary monster,
+occurring at somewhat shallow depths.
+It is moderately strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Catoblepas is an uncommon animal,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has no magical powers.
+
+The Mimic (ring) is a somewhat rare monster,
+occurring at somewhat shallow depths.
+It is moderately strong, extremely dangerous,
+and has hellishly powerful magical powers.
+
+The Young blue dragon is a common dragon,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Young white dragon is a common dragon,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Young green dragon is a common dragon,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Young bronze dragon is a somewhat rare dragon,
+occurring at somewhat shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Mithril golem is a rare monster,
+occurring at shallow depths.
+It is hellishly strong, moderately dangerous,
+and has no magical powers.
+
+The Shadow drake is an uncommon dragon,
+occurring at shallow depths.
+It is very weak, just a small bit dangerous,
+and has simple magical powers.
+
+The Skeleton troll is a common undead monster,
+occurring at shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Manticore is an uncommon monster,
+occurring at shallow depths.
+It is very weak, not at all dangerous,
+and has an inkling of magical powers.
+
+The Giant blue ant is an uncommon animal,
+occurring at shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has no magical powers.
+
+The Giant army ant is a somewhat rare monster,
+occurring at shallow depths.
+It is extremely weak, just a small bit dangerous,
+and has no magical powers.
+
+The Grave wight is a common undead monster,
+occurring at shallow depths.
+It is extremely weak, just a little bit dangerous,
+and has rudimentary magical powers.
+
+The Killer slicer beetle is an uncommon monster,
+occurring at shallow depths.
+It is very weak, not at all dangerous,
+and has no magical powers.
+
+The Ghost is a common undead monster,
+occurring at shallow depths.
+It is extremely weak, alarmingly dangerous,
+and has an inkling of magical powers.
+
+The Death watch beetle is a somewhat rare monster,
+occurring at shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has no magical powers.
+
+The Ogre shaman is an uncommon giant,
+occurring at shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has advanced magical powers.
+
+The Nexus quylthulg is a common monster,
+occurring at shallow depths.
+It is extremely weak, not at all dangerous,
+and has average magical powers.
+
+Shelob, Spider of Darkness is a unique animal,
+occurring at shallow depths.
+She is hellishly strong, unimaginably dangerous,
+and has very powerful magical powers.
+
+The Ninja is an uncommon monster,
+occurring at shallow depths.
+He is very weak, moderately dangerous,
+and has no magical powers.
+
+The Memory moss is a somewhat rare monster,
+occurring at shallow depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Storm giant is a common giant,
+occurring at shallow depths.
+It is moderately strong, moderately dangerous,
+and has average magical powers.
+
+The Cave troll is a common troll,
+occurring at shallow depths.
+He is somewhat weak, somewhat dangerous,
+and has no magical powers.
+
+The Half-troll is an uncommon troll,
+occurring at shallow depths.
+He is moderately strong, somewhat dangerous,
+and has no magical powers.
+
+The Mystic is a somewhat rare monster,
+occurring at shallow depths.
+He is moderately strong, moderately dangerous,
+and has rudimentary magical powers.
+
+The Barrow wight is a somewhat rare undead monster,
+occurring at shallow depths.
+It is extremely weak, somewhat dangerous,
+and has small magical powers.
+
+The Giant skeleton troll is a common undead monster,
+occurring at shallow depths.
+It is somewhat strong, moderately dangerous,
+and has no magical powers.
+
+The Chaos drake is a somewhat rare dragon,
+occurring at shallow depths.
+It is strong, somewhat dangerous,
+and has remarkable magical powers.
+
+The Law drake is a somewhat rare dragon,
+occurring at shallow depths.
+It is strong, somewhat dangerous,
+and has average magical powers.
+
+The Balance drake is a somewhat rare dragon,
+occurring at shallow depths.
+It is very strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+The Ethereal drake is a somewhat rare dragon,
+occurring at shallow depths.
+It is somewhat strong, somewhat dangerous,
+and has unremarkable magical powers.
+
+Bert the Stone Troll is a unique troll,
+occurring at shallow depths.
+He is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+Bill the Stone Troll is a unique troll,
+occurring at shallow depths.
+He is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+Tom the Stone Troll is a unique troll,
+occurring at shallow depths.
+He is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+The Shade is a somewhat rare undead monster,
+occurring at shallow depths.
+It is somewhat weak, moderately dangerous,
+and has small magical powers.
+
+The Spectre is a somewhat rare undead monster,
+occurring at shallow depths.
+It is somewhat weak, moderately dangerous,
+and has small magical powers.
+
+The Water troll is a common troll,
+occurring at shallow depths.
+He is moderately strong, moderately dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-16.txt b/lib/file/book-16.txt
new file mode 100644
index 00000000..d2b36408
--- /dev/null
+++ b/lib/file/book-16.txt
@@ -0,0 +1,250 @@
+The Fire elemental is an uncommon monster,
+occurring at shallow depths.
+It is very weak, moderately dangerous,
+and has no magical powers.
+
+The Astral Deva is a legendary monster,
+occurring at shallow depths.
+It is somewhat strong, alarmingly dangerous,
+and has advanced magical powers.
+
+The Water elemental is an uncommon monster,
+occurring at shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Invisible stalker is a somewhat rare monster,
+occurring at shallow depths.
+It is very weak, moderately dangerous,
+and has no magical powers.
+
+The Carrion crawler is an uncommon animal,
+occurring at shallow depths.
+It is very weak, somewhat dangerous,
+and has no magical powers.
+
+The Master thief is an uncommon monster,
+occurring at shallow depths.
+He is very weak, not at all dangerous,
+and has no magical powers.
+
+Ulfang the Black is a unique monster,
+occurring at shallow depths.
+He is unimaginably strong, just a little bit dangerous,
+and has no magical powers.
+
+The Lich is a somewhat rare undead monster,
+occurring at shallow depths.
+It is somewhat weak, very dangerous,
+and has very powerful magical powers.
+
+The Master vampire is a somewhat rare undead monster,
+occurring at shallow depths.
+It is moderately strong, moderately dangerous,
+and has very powerful magical powers.
+
+The Giant grey scorpion is a rare monster,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has no magical powers.
+
+The Earth elemental is an uncommon monster,
+occurring at shallow depths.
+It is somewhat weak, very dangerous,
+and has no magical powers.
+
+The Air elemental is an uncommon monster,
+occurring at shallow depths.
+It is very weak, alarmingly dangerous,
+and has no magical powers.
+
+The Hell hound is a somewhat rare animal,
+occurring at shallow depths.
+It is moderately strong, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Eog golem is a rare monster,
+occurring at shallow depths.
+It is hellishly strong, moderately dangerous,
+and has no magical powers.
+
+The Olog is a common troll,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has no magical powers.
+
+The Dagashi is a rare monster,
+occurring at shallow depths.
+He is somewhat weak, extremely dangerous,
+and has no magical powers.
+
+The Gravity hound is an uncommon animal,
+occurring at shallow depths.
+It is somewhat weak, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Acidic cytoplasm is an extremely rare monster,
+occurring at shallow depths.
+It is moderately strong, hellishly dangerous,
+and has no magical powers.
+
+The Inertia hound is an uncommon animal,
+occurring at shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Impact hound is an uncommon animal,
+occurring at shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has no magical powers.
+
+The Dread is an uncommon undead monster,
+occurring at shallow depths.
+It is somewhat strong, moderately dangerous,
+and has simple magical powers.
+
+The Ooze elemental is a somewhat rare monster,
+occurring at shallow depths.
+It is very weak, hellishly dangerous,
+and has small magical powers.
+
+The Smoke elemental is a somewhat rare monster,
+occurring at shallow depths.
+It is very weak, moderately dangerous,
+and has rudimentary magical powers.
+
+The Young black dragon is a common dragon,
+occurring at shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Mumak is a somewhat rare monster,
+occurring at shallow depths.
+It is alarmingly strong, not one little bit dangerous,
+and has no magical powers.
+
+The Giant red ant is a common animal,
+occurring at shallow depths.
+It is very weak, moderately dangerous,
+and has no magical powers.
+
+The Mature white dragon is a common dragon,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Xorn is an uncommon monster,
+occurring at shallow depths.
+It is very weak, very dangerous,
+and has no magical powers.
+
+The Shadow is a somewhat rare undead monster,
+occurring at shallow depths.
+It is very weak, extremely dangerous,
+and has an inkling of magical powers.
+
+The Phantom is a somewhat rare undead monster,
+occurring at shallow depths.
+It is somewhat strong, extremely dangerous,
+and has an inkling of magical powers.
+
+The Grey wraith is a common undead monster,
+occurring at shallow depths.
+It is very weak, somewhat dangerous,
+and has small magical powers.
+
+The Young multi-hued dragon is a common dragon,
+occurring at shallow depths.
+It is somewhat weak, very dangerous,
+and has very powerful magical powers.
+
+The Colossus is a rare monster,
+occurring at shallow depths.
+It is hellishly strong, extremely dangerous,
+and has no magical powers.
+
+The Young gold dragon is an uncommon dragon,
+occurring at shallow depths.
+It is somewhat weak, not at all dangerous,
+and has an inkling of magical powers.
+
+Rogrog the Black Troll is a unique troll,
+occurring at shallow depths.
+He is hellishly strong, moderately dangerous,
+and has no magical powers.
+
+The Mature blue dragon is a common dragon,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Mature green dragon is a common dragon,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Mature bronze dragon is an uncommon dragon,
+occurring at shallow depths.
+It is somewhat strong, just a small bit dangerous,
+and has rudimentary magical powers.
+
+The Young red dragon is a common dragon,
+occurring at shallow depths.
+It is somewhat weak, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Trapper is a somewhat rare monster,
+occurring at shallow depths.
+It is strong, moderately dangerous,
+and has no magical powers.
+
+The Bodak is an uncommon monster,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has average magical powers.
+
+The Ice elemental is an uncommon monster,
+occurring at shallow depths.
+It is moderately strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Necromancer is an uncommon monster,
+occurring at shallow depths.
+He is somewhat weak, just a little bit dangerous,
+and has unimaginably powerful magical powers.
+
+Lorgan, Chief of the Easterlings is a unique monster,
+occurring at shallow depths.
+He is hellishly strong, very dangerous,
+and has rudimentary magical powers.
+
+The Demonologist is an uncommon monster,
+occurring at shallow depths.
+He is somewhat weak, not at all dangerous,
+and has unremarkable magical powers.
+
+The Mummified troll is a common undead monster,
+occurring at shallow depths.
+It is very weak, moderately dangerous,
+and has no magical powers.
+
+The Queen Ant is a unique animal,
+occurring at shallow depths.
+She is hellishly strong, moderately dangerous,
+and has rudimentary magical powers.
+
+The Will o' the Wisp is a rare monster,
+occurring at shallow depths.
+It is somewhat weak, hellishly dangerous,
+and has average magical powers.
+
+The Magma elemental is an uncommon monster,
+occurring at shallow depths.
+It is moderately strong, extremely dangerous,
+and has simple magical powers.
+
+The Black pudding is an extremely rare monster,
+occurring at shallow depths.
+It is moderately strong, hellishly dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-17.txt b/lib/file/book-17.txt
new file mode 100644
index 00000000..18f2b663
--- /dev/null
+++ b/lib/file/book-17.txt
@@ -0,0 +1,250 @@
+The Killer blue beetle is an uncommon animal,
+occurring at shallow depths.
+It is somewhat weak, somewhat dangerous,
+and has no magical powers.
+
+The Nexus vortex is a common monster,
+occurring at shallow depths.
+It is somewhat weak, not one little bit dangerous,
+and has no magical powers.
+
+The Plasma vortex is a common monster,
+occurring at shallow depths.
+It is somewhat weak, somewhat dangerous,
+and has no magical powers.
+
+The Mature red dragon is a common dragon,
+occurring at shallow depths.
+It is somewhat strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Mature gold dragon is an uncommon dragon,
+occurring at shallow depths.
+It is strong, just a small bit dangerous,
+and has rudimentary magical powers.
+
+The Crystal drake is an uncommon dragon,
+occurring at shallow depths.
+It is strong, somewhat dangerous,
+and has small magical powers.
+
+The Mature black dragon is a common dragon,
+occurring at shallow depths.
+It is somewhat strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Mature multi-hued dragon is an uncommon dragon,
+occurring at shallow depths.
+It is very strong, extremely dangerous,
+and has extremely powerful magical powers.
+
+The Death knight is a common monster,
+occurring at shallow depths.
+It is very strong, somewhat dangerous,
+and has remarkable magical powers.
+
+Castamir the Usurper is a unique monster,
+occurring at shallow depths.
+He is alarmingly strong, not at all dangerous,
+and has extremely powerful magical powers.
+
+The Time vortex is a rare monster,
+occurring at shallow depths.
+It is somewhat weak, not one little bit dangerous,
+and has no magical powers.
+
+The Shimmering vortex is a rare monster,
+occurring at shallow depths.
+It is extremely weak, not one little bit dangerous,
+and has small magical powers.
+
+The Ancient blue dragon is a common dragon,
+occurring at shallow depths.
+It is very strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Ancient bronze dragon is an uncommon dragon,
+occurring at shallow depths.
+It is extremely strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Beholder is a rare monster,
+occurring at shallow depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Emperor wight is an uncommon undead monster,
+occurring at shallow depths.
+It is moderately strong, somewhat dangerous,
+and has small magical powers.
+
+The Planetar is a legendary monster,
+occurring at shallow depths.
+It is somewhat strong, extremely dangerous,
+and has hellishly powerful magical powers.
+
+Vargo, Tyrant of Fire is a unique monster,
+occurring at shallow depths.
+It is hellishly strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Black wraith is an uncommon undead monster,
+occurring at shallow depths.
+It is somewhat strong, somewhat dangerous,
+and has small magical powers.
+
+The Erinyes is an uncommon monster,
+occurring at shallow depths.
+She is very weak, moderately dangerous,
+and has an inkling of magical powers.
+
+The Nether wraith is an uncommon undead monster,
+occurring at shallow depths.
+It is somewhat strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Eldrak is a somewhat rare troll,
+occurring at shallow depths.
+It is extremely strong, somewhat dangerous,
+and has no magical powers.
+
+The Ettin is a somewhat rare troll,
+occurring at shallow depths.
+It is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+Waldern, King of Water is a unique monster,
+occurring at shallow depths.
+It is hellishly strong, somewhat dangerous,
+and has unimaginably powerful magical powers.
+
+Kavlax the Many-Headed is a unique dragon,
+occurring at shallow depths.
+He is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Ancient white dragon is a common dragon,
+occurring at shallow depths.
+It is very strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Ancient green dragon is a common dragon,
+occurring at shallow depths.
+It is extremely strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The 7-headed hydra is an uncommon animal,
+occurring at shallow depths.
+It is unimaginably strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The Night mare is a somewhat rare undead monster,
+occurring at shallow depths.
+It is hellishly strong, very dangerous,
+and has no magical powers.
+
+The Vampire lord is a somewhat rare undead monster,
+occurring at shallow depths.
+It is hellishly strong, unimaginably dangerous,
+and has very powerful magical powers.
+
+The Ancient black dragon is a common dragon,
+occurring at shallow depths.
+It is extremely strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Disenchanter worm mass is a somewhat rare animal,
+occurring at shallow-to-moderate depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Rotting quylthulg is a common animal,
+occurring at shallow-to-moderate depths.
+It is extremely weak, just a small bit dangerous,
+and has unremarkable magical powers.
+
+The Spirit troll is a somewhat rare troll,
+occurring at shallow-to-moderate depths.
+It is unimaginably strong, very dangerous,
+and has no magical powers.
+
+The Lesser titan is a somewhat rare monster,
+occurring at shallow-to-moderate depths.
+It is unimaginably strong, moderately dangerous,
+and has unremarkable magical powers.
+
+The 9-headed hydra is an uncommon animal,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, just a small bit dangerous,
+and has simple magical powers.
+
+The Enchantress is a rare monster,
+occurring at shallow-to-moderate depths.
+She is somewhat strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Archpriest is an uncommon monster,
+occurring at shallow-to-moderate depths.
+He is somewhat strong, somewhat dangerous,
+and has arcane magical powers.
+
+The Sorcerer is an uncommon monster,
+occurring at shallow-to-moderate depths.
+He is somewhat strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+The Xaren is a common monster,
+occurring at shallow-to-moderate depths.
+It is moderately strong, very dangerous,
+and has no magical powers.
+
+The Giant roc is a somewhat rare animal,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has no magical powers.
+
+Uvatha the Horseman is a unique undead monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, extremely dangerous,
+and has no magical powers.
+
+The Minotaur is an uncommon monster,
+occurring at shallow-to-moderate depths.
+It is unimaginably strong, not one little bit dangerous,
+and has no magical powers.
+
+Medusa, the Gorgon is a unique monster,
+occurring at shallow-to-moderate depths.
+She is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Death drake is an uncommon dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has small magical powers.
+
+The Ancient red dragon is a common dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Ancient gold dragon is an uncommon dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Great crystal drake is an uncommon dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has small magical powers.
+
+The Vrock is an uncommon monster,
+occurring at shallow-to-moderate depths.
+It is moderately strong, moderately dangerous,
+and has no magical powers.
+
+The Death quasit is a somewhat rare monster,
+occurring at shallow-to-moderate depths.
+It is somewhat strong, alarmingly dangerous,
+and has unremarkable magical powers.
+
diff --git a/lib/file/book-18.txt b/lib/file/book-18.txt
new file mode 100644
index 00000000..c36b205f
--- /dev/null
+++ b/lib/file/book-18.txt
@@ -0,0 +1,250 @@
+Adunaphel the Quiet is a unique undead monster,
+occurring at shallow-to-moderate depths.
+She is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Dark elven sorceror is an uncommon monster,
+occurring at shallow-to-moderate depths.
+He is extremely strong, just a small bit dangerous,
+and has hellishly powerful magical powers.
+
+The Master lich is an uncommon undead monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, extremely dangerous,
+and has hellishly powerful magical powers.
+
+The Hezrou is a somewhat rare monster,
+occurring at shallow-to-moderate depths.
+It is somewhat strong, moderately dangerous,
+and has rudimentary magical powers.
+
+Akhorahil the Blind is a unique undead monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+Gorlim, Betrayer of Barahir is a unique monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, hellishly dangerous,
+and has remarkable magical powers.
+
+The Solar is a legendary monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, alarmingly dangerous,
+and has advanced magical powers.
+
+The Glabrezu is an uncommon monster,
+occurring at shallow-to-moderate depths.
+It is strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+Ren the Unclean is a unique undead monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Nalfeshnee is an uncommon monster,
+occurring at shallow-to-moderate depths.
+It is very strong, somewhat dangerous,
+and has small magical powers.
+
+The Undead beholder is a rare undead monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Dread is a common undead monster,
+occurring at shallow-to-moderate depths.
+It is somewhat strong, extremely dangerous,
+and has simple magical powers.
+
+The Mumak is an uncommon monster,
+occurring at shallow-to-moderate depths.
+It is alarmingly strong, just a small bit dangerous,
+and has no magical powers.
+
+The Ancient multi-hued dragon is a common dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, alarmingly dangerous,
+and has extremely powerful magical powers.
+
+The Ethereal dragon is an uncommon dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, moderately dangerous,
+and has average magical powers.
+
+Ji Indur Dawndeath is a unique undead monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, moderately dangerous,
+and has very powerful magical powers.
+
+The Marilith is an uncommon monster,
+occurring at shallow-to-moderate depths.
+She is hellishly strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+Quaker, Master of Earth is a unique monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, hellishly dangerous,
+and has rudimentary magical powers.
+
+The Lesser Balrog is a somewhat rare monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, moderately dangerous,
+and has simple magical powers.
+
+Ariel, Queen of Air is a unique monster,
+occurring at shallow-to-moderate depths.
+She is hellishly strong, hellishly dangerous,
+and has average magical powers.
+
+The 11-headed hydra is an uncommon animal,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, just a small bit dangerous,
+and has extremely powerful magical powers.
+
+The Patriarch is an uncommon monster,
+occurring at shallow-to-moderate depths.
+He is extremely strong, somewhat dangerous,
+and has extremely powerful magical powers.
+
+The Dreadmaster is an uncommon undead monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, unimaginably dangerous,
+and has very powerful magical powers.
+
+The Drolem is a somewhat rare dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has small magical powers.
+
+Scatha the Worm is a unique dragon,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has small magical powers.
+
+Dwar, Dog Lord of Waw is a unique undead monster,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+Smaug the Golden is a unique dragon,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has small magical powers.
+
+The Dracolich is an uncommon undead monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, alarmingly dangerous,
+and has simple magical powers.
+
+The Greater titan is a somewhat rare monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, moderately dangerous,
+and has simple magical powers.
+
+The Dracolisk is an uncommon dragon,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has simple magical powers.
+
+The Death mold is a common monster,
+occurring at shallow-to-moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has no magical powers.
+
+Itangast the Fire Drake is a unique dragon,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has small magical powers.
+
+Glaurung, Father of the Dragons is a unique dragon,
+occurring at shallow-to-moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has unremarkable magical powers.
+
+The Master mystic is a somewhat rare monster,
+occurring at moderate depths.
+He is hellishly strong, hellishly dangerous,
+and has small magical powers.
+
+Durin's Bane is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, moderately dangerous,
+and has remarkable magical powers.
+
+The Nightwing is a rare undead monster,
+occurring at moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Nether hound is an uncommon animal,
+occurring at moderate depths.
+It is very strong, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Time hound is a rare animal,
+occurring at moderate depths.
+It is very strong, just a small bit dangerous,
+and has no magical powers.
+
+The Plasma hound is an uncommon animal,
+occurring at moderate depths.
+It is very strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Demonic quylthulg is a common animal,
+occurring at moderate depths.
+It is moderately strong, just a small bit dangerous,
+and has unremarkable magical powers.
+
+The Great storm wyrm is an uncommon dragon,
+occurring at moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+Baphomet the Minotaur Lord is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+Harowen the Black Hand is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, moderately dangerous,
+and has no magical powers.
+
+Hoarmurath of Dir is a unique undead monster,
+occurring at moderate depths.
+He is hellishly strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+The Grand master mystic is a somewhat rare monster,
+occurring at moderate depths.
+He is hellishly strong, hellishly dangerous,
+and has arcane magical powers.
+
+Khamul the Easterling is a unique undead monster,
+occurring at moderate depths.
+He is hellishly strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Ethereal hound is a somewhat rare animal,
+occurring at moderate depths.
+It is unimaginably strong, somewhat dangerous,
+and has an inkling of magical powers.
+
+The Great ice wyrm is an uncommon dragon,
+occurring at moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Phoenix is a unique animal,
+occurring at moderate depths.
+It is hellishly strong, alarmingly dangerous,
+and has hellishly powerful magical powers.
+
+The Nightcrawler is a rare undead monster,
+occurring at moderate depths.
+It is hellishly strong, unimaginably dangerous,
+and has hellishly powerful magical powers.
+
diff --git a/lib/file/book-19.txt b/lib/file/book-19.txt
new file mode 100644
index 00000000..62ecebc9
--- /dev/null
+++ b/lib/file/book-19.txt
@@ -0,0 +1,250 @@
+The Hand druj is a rare undead monster,
+occurring at moderate depths.
+It is very strong, somewhat dangerous,
+and has extremely powerful magical powers.
+
+The Eye druj is a rare undead monster,
+occurring at moderate depths.
+It is unimaginably strong, moderately dangerous,
+and has hellishly powerful magical powers.
+
+The Skull druj is a rare undead monster,
+occurring at moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Chaos vortex is a common monster,
+occurring at moderate depths.
+It is very strong, not one little bit dangerous,
+and has no magical powers.
+
+The Aether vortex is an uncommon monster,
+occurring at moderate depths.
+It is strong, unimaginably dangerous,
+and has hellishly powerful magical powers.
+
+The Lernean Hydra is a unique animal,
+occurring at moderate depths.
+It is hellishly strong, alarmingly dangerous,
+and has hellishly powerful magical powers.
+
+Thuringwethil is a unique undead monster,
+occurring at moderate depths.
+She is hellishly strong, alarmingly dangerous,
+and has very powerful magical powers.
+
+The Great hell wyrm is an uncommon dragon,
+occurring at moderate depths.
+It is hellishly strong, somewhat dangerous,
+and has rudimentary magical powers.
+
+The Draconic quylthulg is a somewhat rare animal,
+occurring at moderate depths.
+It is very strong, just a small bit dangerous,
+and has unremarkable magical powers.
+
+Fundin Bluecloak is a unique monster,
+occurring at moderate depths.
+It is hellishly strong, extremely dangerous,
+and has unimaginably powerful magical powers.
+
+Uriel, Angel of Fire is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, alarmingly dangerous,
+and has hellishly powerful magical powers.
+
+Azriel, Angel of Death is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, extremely dangerous,
+and has hellishly powerful magical powers.
+
+Ancalagon the Black is a unique dragon,
+occurring at moderate depths.
+He is hellishly strong, moderately dangerous,
+and has extremely powerful magical powers.
+
+The Nightwalker is a rare undead monster,
+occurring at moderate depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+Gabriel, the Messenger is a unique monster,
+occurring at moderate depths.
+He is hellishly strong, hellishly dangerous,
+and has remarkable magical powers.
+
+Saruman of Many Colours is a unique monster,
+occurring at moderate-to-deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Dreadlord is an uncommon undead monster,
+occurring at moderate-to-deep depths.
+It is hellishly strong, unimaginably dangerous,
+and has arcane magical powers.
+
+The Cat Lord is a unique monster,
+occurring at moderate-to-deep depths.
+He is hellishly strong, hellishly dangerous,
+and has an inkling of magical powers.
+
+The Chaos beetle is a rare monster,
+occurring at moderate-to-deep depths.
+It is hellishly strong, not at all dangerous,
+and has rudimentary magical powers.
+
+The Chaos hound is a common animal,
+occurring at moderate-to-deep depths.
+It is hellishly strong, just a small bit dangerous,
+and has an inkling of magical powers.
+
+The Great Wyrm of Chaos is an uncommon dragon,
+occurring at moderate-to-deep depths.
+It is hellishly strong, somewhat dangerous,
+and has very powerful magical powers.
+
+The Great Wyrm of Law is an uncommon dragon,
+occurring at moderate-to-deep depths.
+It is hellishly strong, somewhat dangerous,
+and has very powerful magical powers.
+
+The Great Wyrm of Balance is a rare dragon,
+occurring at moderate-to-deep depths.
+It is hellishly strong, somewhat dangerous,
+and has hellishly powerful magical powers.
+
+Tselakus, the Dreadlord is a unique undead monster,
+occurring at moderate-to-deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+Tiamat, Celestial Dragon of Evil is a unique dragon,
+occurring at deep depths.
+She is hellishly strong, unimaginably dangerous,
+and has hellishly powerful magical powers.
+
+The Black reaver is a somewhat rare undead monster,
+occurring at deep depths.
+It is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Master quylthulg is a somewhat rare animal,
+occurring at deep depths.
+It is hellishly strong, just a small bit dangerous,
+and has hellishly powerful magical powers.
+
+The Greater draconic quylthulg is a somewhat rare animal,
+occurring at deep depths.
+It is hellishly strong, just a small bit dangerous,
+and has simple magical powers.
+
+The Greater rotting quylthulg is a somewhat rare animal,
+occurring at deep depths.
+It is hellishly strong, just a small bit dangerous,
+and has simple magical powers.
+
+Vecna, the Emperor Lich is a unique undead monster,
+occurring at deep depths.
+He is hellishly strong, unimaginably dangerous,
+and has hellishly powerful magical powers.
+
+Omarax the Eye Tyrant is a unique monster,
+occurring at deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+Ungoliant, the Unlight is a unique animal,
+occurring at deep depths.
+She is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Aether hound is an uncommon animal,
+occurring at deep depths.
+It is hellishly strong, very dangerous,
+and has hellishly powerful magical powers.
+
+The Mouth of Sauron is a unique monster,
+occurring at deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Emperor Quylthulg is a unique animal,
+occurring at deep depths.
+It is hellishly strong, just a little bit dangerous,
+and has unimaginably powerful magical powers.
+
+Qlzqqlzuup, the Lord of Flesh is a unique animal,
+occurring at deep depths.
+It is hellishly strong, just a little bit dangerous,
+and has hellishly powerful magical powers.
+
+Murazor, the Witch-King of Angmar is a unique undead monster,
+occurring at very deep depths.
+He is hellishly strong, extremely dangerous,
+and has hellishly powerful magical powers.
+
+Pazuzu, Lord of Air is a unique monster,
+occurring at very deep depths.
+He is hellishly strong, hellishly dangerous,
+and has advanced magical powers.
+
+The Hell hound is a rare animal,
+occurring at very deep depths.
+It is somewhat strong, moderately dangerous,
+and has an inkling of magical powers.
+
+Cantoras, the Skeletal Lord is a unique undead monster,
+occurring at very deep depths.
+He is hellishly strong, unimaginably dangerous,
+and has hellishly powerful magical powers.
+
+The Tarrasque is a unique monster,
+occurring at very deep depths.
+It is hellishly strong, somewhat dangerous,
+and has average magical powers.
+
+Lungorthin, the Balrog of White Fire is a unique monster,
+occurring at very deep depths.
+He is hellishly strong, extremely dangerous,
+and has advanced magical powers.
+
+Draugluin, Sire of All Werewolves is a unique animal,
+occurring at very deep depths.
+He is hellishly strong, moderately dangerous,
+and has simple magical powers.
+
+Feagwath the Undead Sorceror is a unique undead monster,
+occurring at extremely deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+Carcharoth, the Jaws of Thirst is a unique animal,
+occurring at extremely deep depths.
+He is hellishly strong, moderately dangerous,
+and has advanced magical powers.
+
+Cerberus, Guardian of Hades is a unique animal,
+occurring at extremely deep depths.
+It is hellishly strong, moderately dangerous,
+and has very powerful magical powers.
+
+Gothmog, the High Captain of Balrogs is a unique monster,
+occurring at extremely deep depths.
+He is hellishly strong, unimaginably dangerous,
+and has advanced magical powers.
+
+Sauron, the Sorcerer is a unique monster,
+occurring at extremely deep depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+Morgoth, Lord of Darkness is a unique monster,
+occurring at bottomless depths.
+He is hellishly strong, hellishly dangerous,
+and has hellishly powerful magical powers.
+
+The Haughty noble is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
diff --git a/lib/file/book-2.txt b/lib/file/book-2.txt
new file mode 100644
index 00000000..75493c29
--- /dev/null
+++ b/lib/file/book-2.txt
@@ -0,0 +1,90 @@
+
+ Mordekainen's Magical Compendum of Deep Thought, Vol. 3
+ -------------------------------------------------------
+
+
+I think my new thing will be to try to be a real happy guy. I'll just
+walk around being real happy until some jerk says something stupid to
+me.
+
+When you're going up the stairs and you take a step, kick the other
+leg up high behind you to keep people from following too close.
+
+I wonder if angels believe in ghosts.
+
+I don't understand people who say life is a mystery, because what is
+it they want to know?
+
+I think people tend to forget that trees are living creatures. They're
+sort of like dogs. Huge, quiet, motionless dogs, with bark instead of
+fur.
+
+Sometimes I think the world has gone completely mad. And then I think,
+"Aw, who cares?" And then I think, "Hey, what's for supper?"
+
+If a kid asks where rain comes from, I think a cute thing to tell him
+is "God is crying". And if he asks why God is crying, another cute
+thing to tell him is "Probably because of something you did".
+
+Contrary to popular belief, the most dangerous animal is not the lion
+or tiger or even the elephant. The most dangerous animal is a shark
+riding on an elephant, just trampling and eating everything they see.
+
+As I bit into the nectarine, it had a crisp juiciness about it that
+was very pleasurable- until I realized it wasn't a nectarine at all,
+but a HUMAN HEAD!!
+
+Anytime I see something screech across a room and latch onto someone's
+neck, and the guy screams and tries to get it off, I have to laugh,
+because what _is_ that thing?!
+
+If you define cowardice as running away at the first sign of danger,
+screaming and tripping and begging for mercy, then yes, Mister Brave
+Man, I guess I am a coward.
+
+Blow ye winds, like the trumpet blows, but without that noise.
+
+The face of a child can say it all, especially the mouth part of the face.
+
+When I heard that trees grow a new "ring" for each year they live, I
+thought, we humans are kind of like that; we grow a new layer of skin
+each year; and after many years we are thick and unwieldy from all our
+skin layers.
+
+It's too bad that whole families have been torn apart by something as
+simple as wild dogs.
+
+Even though he was an enemy of mine, I had to admit that what he had
+accomplished was a brilliant piece of strategy. First, he punched me,
+then he kicked me, then he punched me again.
+
+To me, truth is not some vague, foggy notion. Truth is real. And, at
+the same unreal. Fiction and fact and everything in-between, plus some
+things I can't remember, all rolled into one big "thing". This is
+truth, to me.
+
+If you're ever stuck in some thick undergrowth, in your underwear,
+don't stop and start thinking of what other words have "under" in
+them, because that's probably the first sign of jungle madness.
+
+Sometimes the beauty of the world is so overwhelming, I just want to
+throw back my head and gargle. Just gargle and gargle, and I don't
+care who hears me, because I am beautiful.
+
+We used to laugh at Grandpa when he'd head off to go fishing. But we
+wouldn't be laughing when he'd come back with some whore he picked up
+in town.
+
+I think in one of my previous lives I was a mighty king, because I
+like people that do what I say.
+
+A man doesn't automatically get my respect. He has to get down in the
+dirt and beg for it.
+
+People think it would be fun to be a bird because you could fly. But
+they forget the negative side, which is the preening.
+
+When I think back on all the blessings I have been given in my life, I
+can't think of a single one, unless you count that rattlesnake that
+granted me all those wishes.
+
diff --git a/lib/file/book-20.txt b/lib/file/book-20.txt
new file mode 100644
index 00000000..c76012af
--- /dev/null
+++ b/lib/file/book-20.txt
@@ -0,0 +1,139 @@
+#####R /----------------------------------------\
+#####R < Adventurer's guide to the Middle-earth >
+#####R \----------------------------------------/
+
+Summary:
+*****/abook-20.txt*1[(a) The Towns]
+*****/bbook-20.txt*2[(b) Other strange and frightening places]
+*****/cbook-20.txt*3[(c) Equipment issues]
+*****/dbook-20.txt*4[(d) Macros]
+
+Introduction:
+
+Middle-earth is vast and mysterious, full of dangers but also full of
+rewards for the brave.
+
+New adventurers should know that pressing < and > can switch
+the wilderness view between a normal scale and a larger map. This map
+makes travelling safer and faster, but you can't enter wilderness
+dungeons from it.
+
+
+~~~~~1
+#####G(a) The Towns
+
+You start in a small village named Bree in the western part of the Middle-earth.
+Here you will also find the entrance to the Barrow-Downs, a fairly safe and
+simple dungeon.
+
+When the Barrow-Downs become too easy for you, and Bree too small,
+you might consider going to Lothlorien, the land of Galadriel. [[[[[BNote that]
+[[[[[Byou should take a lot of food with you, for it is a long journey.] You'll have
+to head south-east following the Moria mountain's chain, then walk around
+the forest of Fangorn to head north to finally find your destination. The Forest
+of Mirkwood (another dungeon) can be found to the north east of Lothlorien.
+
+If you survive this dangerous dungeon, you should head south, following
+the Anduin river. There, near the dark land of Mordor, you will find the
+great town of Gondor, Minas Anor. From there you can want to pay a "visit" to
+the land of Mordor, which is east of Minas Anor.
+
+After Mordor you should finally travel to Gondolin, the hidden town of the
+Noldor. First go back to Bree, and then from there walk northeast and you
+will find it. From this city, you will be able to attack Angband, the
+dungeon of Morgoth, which is north west west of Gondolin.
+
+
+~~~~~2
+#####G(b) Other strange and frightening places
+
+The Old Forest to the west is the last remains of the big forests of the first
+age, but it has been corrupted. It is said it is guarded by a living tree.
+
+You may also wish to investigate the Orc Caves north of Bree; they are
+another place suitable for those finished with the Barrow-Downs. They also
+are rumored to hold great
+mysteries.
+
+The Maze: To the south of Bree there is a magical Maze. Many adventurers
+that ventured there never came back... It is rumored that a Minotaur is
+lurking down there, guarding an ancient and powerful artifact.
+Bring along digging equipment and some means to recall.
+
+Durin's Bane, the Balrog of Moria, guards the Mines of Moria, to the south east
+of Bree.
+
+During the Second Age of the world there was a great island called
+Numenor. The people who dwelt there were wise and powerful, but as time
+passed their last kings fell under the power of Sauron. Under Sauron's
+orders, they tried to attack Valinor, the blessed land, and for this
+Numenor was destroyed, swallowed by the sea. The ruins are still
+accessible, far out to sea to the west of Bree.
+
+Many other strange places wait to be explored by the valiant adventurer,
+but their locations are secret. You will have to find them yourself!
+
+
+~~~~~3
+#####G(c) Equipment issues
+
+Beware adventurer! If you plan to go down into the dungeons be prepared. Some
+items you will need badly.
+
+First think of some light, maybe a lantern is better than the torches.
+
+Second things to mention are your combat equipment. Sometimes the weapon and
+armor you got from your mentor are not enough for the nasties inside the
+dungeons.
+
+And third and most important, [[[[[Balways carry a shovel or other digger with you],
+because there is much rubble in the dungeons, which you cannot clear with
+your hands.
+
+~~~~~4
+#####G(d) Macros
+
+Spellcasters might find that pressing 4 keys (at least) to cast a spell is a
+lot, they are right. That is why there are macros. You can access the macro
+screen by pressing @. You can find help on the *****macrofaq.txt*0[macros] in the docs.
+
+Now you either have the hard way or the easy way.
+
+**The Hard Way**
+
+What the fellow adventurer should know is how to create a basic spell macro.
+Press @ to enter the macro screen.
+Press 4 to create a new macro.
+Press the key to bind the macro to, usually one uses the F* keys(you can combine
+them with the ctrl, shift, ... keys too)
+Enter the key sequence to be done for the macro.
+Press 2 to save the macro.
+
+Now a problem that might arise, imagine your macro looks like: mcaa*t
+to cast manathrust spell('m' to use skill, 'c' for cast a spell skill,
+'a' for first book, 'a' for first spell, *t to… target the first monster).
+This macro will break if you gain a new skill so that "Cast a spell" is no more
+the skill 'c', or if you get a new book. There is a way around that.
+When the game asks for a skill or a spell it allows you to press @ to enter
+the skill/spell name directly, so your macro would become:
+m@Cast a spell\r@Manathrust\r*t
+Now this will always work as long as one of your books have the spell in it.
+
+
+**The Easy Way**
+
+This time you will only use the macro recorder. To do that:
+Press $ to start it
+Now each key you press will be recorded, so press all keys you want.
+It is recommended to start your macro by pressing Escape key a few time, so
+if there are messages when you use the macro it will first erase them instead
+of screwing your macro :)
+it is also recommended to take advantage of the @ key when selecting skills or
+objects whenever the possibility is offered to you. It will make sure you
+always use the good object/skill even if it moves in your inventory.
+Once all keys are pressed press $ again to stop it.
+It you are satisfied with your macro now you get to press the key to bind it
+to.
+
+As in the Hard Way you must use the macro screen if you want to permanently
+save your macros.
diff --git a/lib/file/book-200.txt b/lib/file/book-200.txt
new file mode 100644
index 00000000..21ad9089
--- /dev/null
+++ b/lib/file/book-200.txt
@@ -0,0 +1,5 @@
+4
+34
+21
+6
+0
diff --git a/lib/file/book-201.txt b/lib/file/book-201.txt
new file mode 100644
index 00000000..d89e8f16
--- /dev/null
+++ b/lib/file/book-201.txt
@@ -0,0 +1,5 @@
+4
+49
+11
+3
+0
diff --git a/lib/file/book-202.txt b/lib/file/book-202.txt
new file mode 100644
index 00000000..3c61caee
--- /dev/null
+++ b/lib/file/book-202.txt
@@ -0,0 +1,5 @@
+4
+50
+34
+4
+0
diff --git a/lib/file/book-203.txt b/lib/file/book-203.txt
new file mode 100644
index 00000000..c169a628
--- /dev/null
+++ b/lib/file/book-203.txt
@@ -0,0 +1,5 @@
+4
+60
+56
+3
+0
diff --git a/lib/file/book-4.txt b/lib/file/book-4.txt
new file mode 100644
index 00000000..29501076
--- /dev/null
+++ b/lib/file/book-4.txt
@@ -0,0 +1,11 @@
+Ash nazg durbatuluk,
+ash nazg gimbatul,
+ash nazg thrakatuluk
+agh burzum-ishi krimpatul.
+
+-------------------------------
+
+One Ring to rule them all,
+One Ring to find them,
+One Ring to bring them all,
+And in the darkness bind them.
diff --git a/lib/file/book-6.txt b/lib/file/book-6.txt
new file mode 100644
index 00000000..4a2638cb
--- /dev/null
+++ b/lib/file/book-6.txt
@@ -0,0 +1,263 @@
+
+ Artifact Lore, Vol. I
+ Ancient Weapons
+ ---------------------
+
+
+ The Longsword 'Ringil' (4d5) (+22,+25)
+ The Sword of Fingolfin (High-Elf). When wielded it will
+ haste its wielder. It is a blade of such deathly cold that
+ it shines bright white acting as a permanent light and
+ delivering cold criticals. It slays evil, demons, undead
+ and trolls. Allows you to resist cold, regenerate mana and
+ hit points more quickly with no extra food consumption. Also
+ lets you see invisible and be immune to paralyzation. Being
+ made of white eog, it is capable of casting Ice Storms.
+
+ The Longsword 'Anduril' (3d5) (+10,+15) [+5]
+ The Sword of Aragorn the Dunadan Ranger and King. It
+ increases your strength to match true Kingly strength,
+ increases armour class by +5. Being the 'Flame of the West'
+ it delivers heat criticals and defends against fire. It
+ slays evil, orcs and trolls. It allows you to see invisible
+ and avoid paralyzation. So near to the element fire is the
+ blade, that Fire Balls can be cast from its searing
+ surface.
+
+ The Lead-filled Mace 'Grond' (9d9) (+25,+25) [+10]
+ The Hammer of the Underworld, this is Morgoth's chief
+ weapon. It weighs so much that it slows anything of less
+ than godly status. It is so awesome that it aggravates all
+ that see it. It makes it's wielder see all and resist all.
+ It slays all of Morgoths personal creations of orcs, trolls,
+ and demons and it executes dragons doing five times normal
+ damage against them, (it can kill all but a very few dragons
+ in one mighty blow!). Plus it causes impact criticals that
+ cause earthquakes and it can tunnel through solid granite
+ walls!
+
+ The Two-Handed Sword 'Gurthang' (3d6) (+13,+17)
+ This Iron of Death belonging to Turin Turambar, made of
+ black eog, was designed to slay Dragons (and Trolls), doing
+ five times normal damage against dragons. It gives you the
+ strength to wield it, regenerates your hit points and mana
+ at no extra cost and allows you to be free of paralyzation.
+
+ The Two-Handed Sword 'Mormegil' (6d7) (0,0) [-20]
+ This evil black sword is heavily cursed, slowing its wielder
+ and aggravating all that see it...
+
+ The Broadsword 'Arunruth' (2d5) (+20,+12)
+ This Sword of Accuracy rarely misses. It increases the
+ wielders dexterity, saves from falls, slays orcs and demons,
+ and protects from paralyzation.
+
+ The Broadsword 'Glamdring' (2d5) (+10,+15)
+ This High-Elven sword (mate to Orcrist) was made during foul
+ orc wars of long ago. It was once wielded by Gandalf the
+ Grey Wizard. It slays orcs and other evil, shining bright
+ red continuously, which aids searching and decreases food
+ consumption. Its element is flame, and it gives resistance
+ to flame to the wielder, and slays those who have not.
+
+ The Broadsword 'Orcrist' (2d5) (+10,+15)
+ This High-Elven sword (mate to Glamdring) was made during
+ foul orc wars of long ago. It was once wielded by Thorin
+ Oakenshield the Dwarf-King-Under-the-Mountain. It slays orcs
+ and other evil, shining bright white continuously, which
+ decreases food consumption, plus making the wielder more
+ stealthy. Being of the element frost, it protects from cold,
+ and slays non-cold based creatures.
+
+ The Broadsword 'Aeglin' (2d5) (+12,+16)
+ This High-Elven sword, is the long, lost and forgotten third
+ mate to Orcrist and Glamdring. It is also the most powerful.
+ Like Glamdring and Orcrist, made during the Orc-wars, it
+ slays Orcish-kind, shining bright blue continuously, which
+ decreases food consumption and aiding searching. Being of
+ electric element, it delivers lightning criticals, which it
+ also defends against.
+
+ The Long Bow 'Belthronding' (+20,+22) (+3)
+ This Noldorin black-yew bow, belonged to the greatest elven
+ archer, Beleg Cuthalion, who was slain by his own blade, by
+ his best friend Turin Turumbar. The bow increases stealth
+ and dexterity, and rarely missed its target.
+
+ The Long Bow of Bard (+17,+19)
+ This bow of men gives free action and increased dexterity.
+
+ The Light Crossbow 'Cubragol' (+10,+14)
+ This amazing bow of fire hastes its wielder and brands
+ all bolts with its element.
+
+ The Bastard Sword 'Calris' (5d4) (-20,+20)
+ This sword of Lungorthin the Balrog of White Flame, is an
+ evil cursed sword that needs great mastering to control its
+ powers. If mastered it can execute dragons, slay other evil
+ including demons and trolls, this naturally aggravates them.
+ Also it gives its wielder far greater internal constitution.
+
+ The Spear 'Aeglos' (3d6) (+15,+25) [+5]
+ This Snow-thorn of Gil-Galad the High-Elf, delivers very
+ deep cold-criticals, while protecting you from cold and
+ increasing your armour class. Being elvish it naturally
+ slays orcs and trolls. It increases the wielders wisdom,
+ slows their digestion and frees their actions from holding
+ forces of evil, also casting Frost Balls occasionally.
+
+ The Spear 'Nimloth' (1d6) (+11,+13) (+3 to stealth)
+ This elven spear, branded with frost, allows its wielder
+ to creep up on the Undead and Slay them.
+
+ The Dagger 'Angrist' (2d5) (+10,+15) [+5]
+ This Iron-cleaver of Beren the Edain, increases and sustains
+ dexterity, increases you protection, prevents paralyzation
+ and slays orcs and trolls.
+
+ The Small sword 'Sting' (1d6) (+7,+8)
+ This small weapon is one of the most powerful weapons of
+ Westernesse. Once wielded by Bilbo and Frodo Baggins (of
+ Hobbit kind), Sting slays undead, evil, and orcs and also
+ shines a continuous, bright blue. It increases the wielder's
+ physical statistics and its piercing blue light lights up
+ those normally invisible to sight.
+
+ The Great Axe of Durin (4d4) (+10,+20) [+15]
+ This Wonderful Dwarven Axe was once wielded by Durin the
+ Deathless (Father and King of the Dwarves), gives its
+ wielder high protection, executes dragons, while resisting
+ fire and acid. It slays demons, trolls and orcs, frees
+ action and increases constitution.
+
+ The War Hammer of Aule (5d5) (+19,+21) [+5]
+ This is the great war hammer of the deity, Aule the Smith.
+ Forged in his great furnaces it delivers Shock criticals
+ causing five times normal damage to those not resistant to
+ this element, and even then it executes dragons, slays evil,
+ demons and undead. It resists fire, cold, acid and lightning
+ and allows you to see invisible and be free of paralyzation.
+ It increases its wielder's wisdom so that one may choose
+ wisely what to slay with it. Truly an awesome weapon.
+
+ The Two-Handed Great Flail 'Thunderfist' (3d6) (+5,+18)
+ This weapon of Electricity and Flame, delivers shock and
+ heat criticals, delivering five times or three times normal
+ damage against the respective types of creatures, also slays
+ animals, trolls and orcs. It also gives the wielder great
+ strength.
+
+ The Morningstar 'Bloodspike' (2d6) (+8,+22)
+ This Bloody weapon slays animals, trolls, and orcs. It allows
+ you to see invisible creatures, as well as giving the wielder
+ great strength.
+
+ The Quarterstaff 'Nar-i-vagil' (1d10) (+10,+20)
+ This fiery staff slays animals and resists fire, doing times
+ fire criticals. It also increases the wielders intelligence.
+
+ The Blade of Chaos 'Doomcaller' (6d5) (+18,+28) [-50]
+ This deadly blade calls doom to all who see it, this
+ naturally aggravates them. It shows you wherever a creature
+ is, be it invisible or blocked by a wall. It resists
+ all elements and executes dragons, slays evil, animal, orc
+ and troll. It delivers cold criticals, but severely impedes
+ its wielders health.
+
+ The Three Daggers, 'Narthanc', 'Nimthanc', 'Dethanc' (1d4) (+4,+6)
+ These elemental daggers of flame, frost, and electricity
+ respectively do their elemental criticals, and defend
+ against them. They also cast bolts of their element often.
+
+ The Dagger of Rilia (2d4) (+4,+3)
+ This ancient, and poisonous dagger casts stinking clouds
+ with great frequency.
+
+ The Dagger 'Belangil' (2d4) (+6,+9)
+ This nimble weapon of cold increases the wielder's dexterity
+ and regeneration, while slowing digestion. Being of dark
+ origins it see alls invisible and casts frost balls.
+
+ The Battle Axe of Balli Stonehand (3d6) (+8,+11) [+5]
+ This Dwarvish Battle axe protects from elements, falls and
+ the invisible. It slays all demons, trolls and orcs, giving
+ even dwarves the stealth, strength and constitution to do
+ so, never letting holding spells affect its use in a fight.
+
+ The Battle Axe 'Lotharang' (2d8) (+4,+3)
+ This petty-dwarvish axe, slays orcs and trolls, increasing
+ strength and dexterity. For those of faint heart it also
+ cures medium wounds and cuts.
+
+ The Morningstar 'Firestar' (2d6) (+5,+7) [+2]
+ This weapon of flame casts fire balls.
+
+ The Quarterstaff 'Eriril' (1d10) (+3,+5)
+ This staff of people who believe in the power of mind over
+ matter, greatly increases wisdom and intelligence and gives
+ the power to identify. It also sees invisible and slays all
+ evil.
+
+ The Longsword 'Elvagil' (2d5) (+2,+7)
+ This joyful sword increases dexterity, charisma and stealth.
+ It protects from falls and the invisible, and slays orcs and
+ trolls.
+
+ The Glaive of Pain (9d6) (+0,+30)
+ This weapon is designed to cause pain to anything without
+ discrimination.
+
+ The Lance of the Eorlingas (3d8) (+3,+21)
+ This heavy lance is suprisingly easy to control, allowing
+ slaughter of orcs, trolls and other evil (visible or not).
+
+ The Broad Axe 'Barukkheled' (2d6) (+13,+19)
+ This beautiful axe slays orcs, trolls, giants and other evil
+ (visible or not), while greatly increasing the wielders
+ internal constitution.
+
+ The Trident of Wrath (3d8) (+16,+18)
+ This extremely heavy and dangerous trident belonging to the
+ greatest Maiar spirit, Osse, slaughters evil and undead
+ without mercy wherever they hide, and increases the wielder's
+ strength and dexterity.
+
+ The Scimitar 'Haradekket' (2d5) (+9,+11)
+ This sword of the south slays the invisible undead, evil and
+ animals, and increases the wielder's dexterity. In addition,
+ the magically enhanced blade is rumored to give extra
+ attacks in combat.
+
+ The Lochaber Axe 'Mundwine' (3d8) (+12,+17)
+ This strong friend in battle, slays evil and resists the
+ elements.
+
+ The Cutlass 'Gondricam' (1d7) (+10,+11)
+ This defender increases the wielders dexterity.
+
+ The Sabre 'Careth Asdriag' (1d7) (+6,+8)
+ This lightning-quick blade slays dragons, giants, trolls,
+ orcs, and animals.
+
+ The Rapier 'Forasgil' (1d6) (+12,+19)
+ This glittering ice-blade also slays animals as well as
+ lighting the way.
+
+ The Executioner's Sword 'Crisdurian' (4d5) (+18,+19)
+ This executer slays evil, invisible undead, dragons, giants
+ orcs and trolls.
+
+ The Flail 'Totila' (3d6) (+6,+8) (+2)
+ This flaming flail slays evil in stealth. It also casts
+ confusion.
+
+ The Short sword 'Gilettar' (1d7) (+3,+7)
+ This roguish sword gives better regeneration and slower
+ digestion, slaying all animals with uncanny speed.
+
+ The Katana 'Aglarang' (8d4) (+0,+0)
+ This super-light and sharp katana greatly increases the
+ wielders dexterity and sustains it. Rarely does the wielder
+ get less than four attacks a round with it, and often as
+ many as six!
+
diff --git a/lib/file/book-7.txt b/lib/file/book-7.txt
new file mode 100644
index 00000000..f6a4a49b
--- /dev/null
+++ b/lib/file/book-7.txt
@@ -0,0 +1,141 @@
+
+ Artifact Lore, Vol. II
+ Ancient Armor
+ ----------------------
+
+
+ Adamantite Plate Mail 'Soulkeeper' [40,+20]
+ This amazing armour protects your soul from cold, and from
+ life level loss. It is also capable of fully healing you.
+
+ The Pair of Hard Leather Boots of Feanor [3,+20]
+ These amazing boots belonging to Feanor the High-Elf, haste
+ the wearer permanently and temporarily in combat, making him
+ or her stealthy as well.
+
+ The Pair of Soft Leather Boots 'Dal-i-thalion' [3,+15]
+ These amazing boots of agility, ensure free action in
+ combat, greatly increasing your dexterity and ensuring that
+ you will never become less agile. It is said that they can
+ also make you more confident and brave.
+
+ Full Plate Armour of Isildur [25,+25]
+ This armour of the Dunedain Lord, Isildur, Resists.
+
+ The Large Metal Shield of Anarion [5,+20]
+ This shield Resists and sustains your stats.
+
+ The Set of Cesti of Fingolfin (+10,+10) [5,+20]
+ These amazing gauntlets increase the wearers dexterity, and
+ slay creatures at (+10,+10). They will never be stopped by
+ paralyaztion and they also resist damage. They occasionally
+ grow magical spikes that can be fired causing great damage.
+
+ The Set of Leather Gloves 'Cambeleg' (+5,+5) [1,+15]
+ These Gloves of Might, increase strength and constitution.
+ They never allow their wearer to be paralyzed, and help
+ his/her slaying abilities.
+
+ The Set of Leather Gloves 'Cammithrim' [1,+10]
+ These Gloves of Light, sustain dexterity and give off light
+ so brightly that they can cast magic missiles almost
+ endlessly.
+
+ The Set of Gauntlets 'Paurhach' [2,+15]
+ These Fists of Fire resist fire and can cast fire bolts.
+
+ The Set of Gauntlets 'Paurnimmen' [2,+15]
+ These Fists of Frost resist cold and can cast frost bolts.
+
+ The Set of Gauntlets 'Pauraegen' [2,+15]
+ These Fists of Lightning resist lightning and can cast
+ lightning bolts.
+
+ The Set of Gauntlets 'Paurnen' [2,+15]
+ These Fists of Water resist acid and can cast acid bolts.
+
+ The Set of Gauntlets 'Camlost' (-11,-12) [2,+0] (-5)
+ The Empty Hand aggravates monsters, and greatly reduces
+ fighting ability. Named after the empty hand of Beren that
+ once clasped a Silmaril.
+
+ Mithril Chain Mail of Belegennon [28,+20]
+ This Chain Mail Resists and makes you stealthy.
+
+ The Iron Helm of Dor-Lomin [8,+20]
+ This is the Dragon Helm of Turin Turambar. It is rumored
+ that its wearer will never die in combat. It resists all
+ and sees all, and increases all fighting stats.
+
+ The Iron Helm of Holhenneth [5,+10]
+ This helm of brilliance and vision, greatly increases your
+ mental prowess. It allows you to see all that is hidden,
+ casting detection spells at frequent intervals.
+
+ The Iron Helm of Gorlim [5,+10] (-125)
+ This unhappy helm of betrayal ruins thought and sight.
+
+ Soft Leather Armour 'Hithlomir' [4,+20] (+4)
+ This dark-misty leather resists the elements and melds the
+ wearer into the background with incredible stealth.
+
+ Leather Scale Mail 'Thalkettoth' (+3) [11,+25]
+ This light leather scale mail is suprisingly good at
+ dodging attacks, and is resistant to acid. Often nicknamed
+ Blade-Turner.
+
+ Chain Mail of Arvedui [14,+15]
+ This wonderful chain mail belonged to the last king of
+ Arnor. It resists the elements and increases strength and
+ charisma.
+
+ The Hard Leather Cap of Thranduil [2,+10]
+ This acid resistant leather is a thinker's cap. Increasing
+ wisdom and intelligence.
+
+ The Metal Cap of Thengel [3,+12]
+ This cap of the Rohan King Thengel, gives kingly wisdom and
+ charisma.
+
+ The Steel Helm 'Hammerhand' [6,+20]
+ This warriors' helm increases the fighting stats.
+
+ The Large Leather Shield of Celegorm [4,+20]
+ A quality shield of Resistance.
+
+ The Pair of Metal Shod Boots of Thror [6,+20]
+ These Dwarf-king boots are ideal for combat, increasing
+ strength and constitution.
+
+ The Cloak 'Colluin' [1,+15]
+ This cloak of resistance even casts extra resistance spells
+ that can defend against poison.
+
+ The Cloak 'Holcolleth' [1,+4]
+ This mage cloak increases intelligence and wisdom and casts
+ spells to make monsters lose their concentration and fall
+ to sleep.
+
+ The Cloak 'Colannon' [1,+15]
+ This Gate-cloak, teleports the player at will, and gives
+ stealth so as to avoid awkward situations.
+
+ The Iron Crown of Beruthiel [0,+20] (-125)
+ This crown once belonged to the Cat-Queen of Gondor, who
+ disdained armed combat. Giving you cat like vision, and
+ sight within sight, it allows its wearer to be free of
+ combat, and infact finding armed combat beyond his or her
+ means.
+
+ The Iron Crown of Morgoth
+ This awesome artifact is a plain iron crown, mounted with
+ three jewels that capture the eternal light of the Trees
+ of the Valar, Teleperion and Laurelein. These Jewels were
+ made by the Noldorian High-Elf, Feanor who named them the
+ Silmarils. Their beauty, unsurpassed, drove Morgoth to
+ steal these jewels (with the aid of Ungoliant the Unlight).
+ The crown then, maximises all you stats, sustains all your
+ stats, is a permanent light source and allows the wearer to
+ see all.
+
+
diff --git a/lib/file/book-8.txt b/lib/file/book-8.txt
new file mode 100644
index 00000000..22a952fc
--- /dev/null
+++ b/lib/file/book-8.txt
@@ -0,0 +1,47 @@
+
+ Artifact Lore, Vol. III
+ Ancient Magical Tools
+ -----------------------
+
+
+ The Amulet of Ingwe (+3)
+ This amulet belonged to the high king of the Vanyar, the
+ most powerful of the High Elves. It gives resistance, and
+ greatly increases your wisdom and charisma. It gives you
+ good infravision, see invisible, and it casts a x5 strength
+ dispel evil.
+
+ The Amulet of Carlammas (+2)
+ This fiery amulet protects from flame, casts protection
+ from evil and increases your constitution.
+
+ The Phial of Galadriel (+4)
+ This wonderful object is an infinite light source, and once
+ identified it can light up rooms.
+
+ The Three Elven Rings
+ Made by Celebrimbor, Elf of the Girth-I-Mirdain. These
+ Rings of Power are of awesome power, and are very rare.
+
+ The Ring of Power 'Narya' (+1)
+ Celeborn gave this to Cirdan who gave it to Gandalf.
+ The least powerful of the Elven rings is of the element
+ fire. And as such makes you completely immune to fire. It
+ is also capable of casting very powerful fire balls. It
+ increases all your stats by one. It also protects from
+ from life draining and helps you regenerate.
+
+ The Ring of Power 'Nenya' (+2)
+ This was kept by Galadriel.
+ As Narya is to fire, Nenya is to Frost... Plus two to all
+ your stats.
+
+ The Ring of Power 'Vilya' (+3)
+ This was kept by Gil-galad who gave it to Elrond.
+ This gives immunity to lightning and resists poison. Plus three
+ to all your stats. Casts very powerful lightning balls.
+
+ Rumors exist of a Ring of Power known as the One Ring, which was
+ made to master the other Rings of Power. Its powers are what
+ legends are made of....
+
diff --git a/lib/file/book-9.txt b/lib/file/book-9.txt
new file mode 100644
index 00000000..2c37a3aa
--- /dev/null
+++ b/lib/file/book-9.txt
@@ -0,0 +1,240 @@
+The Filthy street urchin is an uncommon monster,
+occurring at surface depths.
+He is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Scrawny cat is a somewhat rare animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Scruffy little dog is a somewhat rare animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Farmer Maggot is a unique monster,
+occurring at surface depths.
+He is somewhat weak, somewhat dangerous,
+and has no magical powers.
+
+The Blubbering idiot is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Boil-covered wretch is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Village idiot is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Pitiful looking beggar is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Mangy looking leper is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Squint eyed rogue is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Singing, happy drunk is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Aimless looking merchant is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Mean looking mercenary is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Town Guardsman is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Grey mold is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Grey mushroom patch is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant yellow centipede is a common monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Giant white centipede is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The White icky thing is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Clear icky thing is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant white mouse is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Large brown snake is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Large white snake is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Small kobold is a common monster,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Kobold is a common monster,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The White worm mass is a common animal,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Floating eye is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Rock lizard is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Jackal is a common animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Soldier ant is a common monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has no magical powers.
+
+The Fruit bat is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Shrieker mushroom patch is a common monster,
+occurring at surface depths.
+It is laughably weak, not at all dangerous,
+and has an inkling of magical powers.
+
+The Blubbering icky thing is a common monster,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The Metallic green centipede is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice warrior is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice rogue is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Novice priest is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has small magical powers.
+
+The Novice mage is a common monster,
+occurring at surface depths.
+He is laughably weak, not one little bit dangerous,
+and has rudimentary magical powers.
+
+The Yellow mushroom patch is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The White jelly is a common monster,
+occurring at surface depths.
+It is laughably weak, somewhat dangerous,
+and has no magical powers.
+
+The Giant green frog is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Giant black ant is a common monster,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Salamander is a common animal,
+occurring at surface depths.
+It is laughably weak, just a little bit dangerous,
+and has no magical powers.
+
+The White harpy is a common animal,
+occurring at surface depths.
+She is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+The Blue yeek is a common animal,
+occurring at surface depths.
+It is laughably weak, not one little bit dangerous,
+and has no magical powers.
+
+Grip, Farmer Maggot's dog is a unique animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+Fang, Farmer Maggot's dog is a unique animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
+The Green worm mass is a common animal,
+occurring at surface depths.
+It is laughably weak, just a small bit dangerous,
+and has no magical powers.
+
diff --git a/lib/file/bravado.txt b/lib/file/bravado.txt
new file mode 100644
index 00000000..bf151229
--- /dev/null
+++ b/lib/file/bravado.txt
@@ -0,0 +1,106 @@
+104
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+cackles evilly.
+cackles diabolically.
+says: 'Surrender, miserable flea!'
+says: 'Come get some!'
+says: 'Let's rock!'
+laughs devilishly.
+says: 'Flee while you can, gnat!'
+says: 'You are about to die, maggot!'
+says: 'Read your prayers!'
+hisses: 'Die!'
+says: 'You don't have a chance, moron!'
+says: 'Fear my wrath, fool!'
+says: 'Feel my fury, dolt!'
+says: 'Groo is a genius, compared to you!'
+gives you a contemptuous glance.
+says: 'Prepare to meet your Maker, fool!'
+says: 'Perish, mortal!'
+says: 'Your puny efforts make me laugh!'
+says: 'Drop dead, wimp!'
+says: 'You should have fled while you had the chance.'
+screams: 'Die by my hand!'
+says: 'Your last wish, punk?'
+says: 'Your death shall be a slow, painful one.'
+says: 'Your head shall be my next trophy.'
+screams: 'You are DOOMED!'
+grins sadistically.
+says: 'This dungeon shall be your TOMB!'
+laughs fiendishly.
+says: 'Your fate is sealed, worm.'
+says: 'Resistance is useless.'
+says: 'Hell shall soon claim your remains.'
+says: 'Thou shalt repent of thy cunning.'
+says: 'Verily, thou shalt be one dead cretin.'
+says: 'Surrender or die!'
+says: 'Savor thy breath, it be thine last.'
+says: 'Prepare to die, miscreant!'
+says: 'You're history, dude!'
+says: 'Feeling lucky, punk?'
+says: 'You're toast!'
+says: 'You're dead meat.'
+says: 'Make my day.'
+says: 'I shall flatten you!'
+says: 'I could spare you, but why?'
+says: 'Take this, you sissy!'
+says: 'Nothing can save you now!'
+says: 'This dungeon ain't big enough for the both of us.'
+says: 'I'm gonna break your face!'
+says: 'I hope you enjoy pain!'
+says: 'Give me your best blow!'
+says: 'Draw, if you are a man!'
+says: 'A time to die, fool!'
+bellows frighteningly!
+says: 'You will never leave this dungeon alive!'
+says: 'You'll leave this dungeon only in a wooden box!'
+says: 'Your mother wears army boots!'
+says: 'Drop that weapon, NOW!'
+says: 'Life ain't for you, and I'm the cure!'
+says: 'Resistance is futile. You will be terminated.'
+says: 'Sight and smell of this, it gets me going.'
+says: 'Victim is your name and you shall fall.'
+says: 'Stepping out? You'll feel our hell on your back!'
+says: 'Now I will waste my hate on you.'
+says: 'Don't tread on me!'
+says: 'So be it! Threaten no more!'
+says: 'Kill for gain or shoot to maim, but I don't need a reason.'
+says: 'You'll die as you lived, in a flash of the blade.'
+says: 'You'd better stand cos there's no turning back.'
+says: 'I just want to see your blood, I just want to stand and stare.'
+says: 'I've been looking so long for you; you won't get away from my grasp.'
+says: 'I'm coming after you; you can kiss your arse good-bye.'
+says: 'It's official; you suck!'
+sings: 'I hate you, you hate me, we're a helluva family.'
+says: 'A mere mortal dares challenge *ME*?!'
+says: 'There is no escape and that's for sure.'
+says: 'This is the end; I won't take any more.'
+says: 'Say good-bye to the world you live in.'
+says: 'You've always been taking, but now you're giving.'
+says: 'My brain's on fire with the feeling to kill.'
+says: 'Don't try running away, because you're the one I'll find.'
+says: 'I was looking for you to start up a fight.'
+says: 'My innocent victims are slaughtered with wrath and despise!'
+says: 'I have found you, and there is no place to run.'
+says: 'My blood lust defies all my needs.'
+says: 'And damn'd be him that first cries: Hold, enough!'
+says: 'I can smell your blood, human!'
+says: 'Has your folly led to this?'
+wonders aloud how many experience points you're worth...
+says: 'Pride yourself on this, that you were slain by a champion.'
+thunders: 'May heaven have mercy on your soul, for I will have none.'
+screams for your blood!
+sighs: 'They send a poorer grade of adventurers down each year than the last.'
+says: 'Your life-blood will baptise my blade!'
+shouts: 'You will serve me in Valhalla!'
+snickers: 'Mommy's not here to save you now!'
+says: 'You're almost not worth killing... almost!'
+leaps towards you with death in its eye.
+sings: 'Cuts yer if ye stand, shoot yer if ye run.'
+says: 'Another adventurer? I just got through picking my teeth with the last.'
+says: 'Your two ears will decorate my belt.'
+says: 'I love all that blood.'
+says: 'I don't want to hurt you. I only want to kill you.'
+says: 'I like killing people, because it's so much fun.'
+screams: 'I'm out to destroy and I will cut you down!'
+says: 'Bring it on!'
diff --git a/lib/file/chainswd.txt b/lib/file/chainswd.txt
new file mode 100644
index 00000000..4755391c
--- /dev/null
+++ b/lib/file/chainswd.txt
@@ -0,0 +1,8 @@
+6
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+KILL, KILL, KILL!
+The Chainsword roars noisily!
+VROOM! VROOM!
+Kill, kill, kill, kill, kill, kill!
+Blood, blood, blood!
+Bloodbath!
diff --git a/lib/file/dam_huge.txt b/lib/file/dam_huge.txt
new file mode 100644
index 00000000..62f2ba60
--- /dev/null
+++ b/lib/file/dam_huge.txt
@@ -0,0 +1,9 @@
+7
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+You nearly decapitate %s!
+You impale %s on your weapon.
+Your weapon almost slices %s in half!
+%^s's head caves in!
+You broke %s's spine!
+Your weapon slices into %s's heart!
+You smashed %s's ribcage!
diff --git a/lib/file/dam_lots.txt b/lib/file/dam_lots.txt
new file mode 100644
index 00000000..1784d67c
--- /dev/null
+++ b/lib/file/dam_lots.txt
@@ -0,0 +1,21 @@
+18
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+You stab %s in the stomach.
+You cut off %s's hand.
+You chop down on %s's shins.
+You gave %s a deep gash.
+You gave %s a gigantic bruise.
+You cut off %s's arm!
+You cut off %s's leg!
+You stab %s in the heart.
+You slash at %s face.
+You throw %s down at the ground.
+You attempt to strangle %s.
+You grab %s's head and twist it.
+You knocked out several of %s's teeth!
+You broke some of %s's ribs!
+%^s spins around dizzily after your blow.
+%^s sputters at your tight, choking hold!
+%^s grunts under the force of your blows.
+%^s screams shrilly in fear.
+
diff --git a/lib/file/dam_med.txt b/lib/file/dam_med.txt
new file mode 100644
index 00000000..fc1db066
--- /dev/null
+++ b/lib/file/dam_med.txt
@@ -0,0 +1,25 @@
+23
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+You kick %s in the belly!
+You head-butt %s.
+You push %s over.
+You broke %s's finger!
+You broke %s's toe!
+You kick %s in the shins.
+You stab %s in the arm.
+You stab %s in the leg.
+You hit %s over the head.
+You knee %s in the groin!
+You aim a high kick at %s's head.
+You stab %s in the ribs.
+You chop at %s's neck.
+You put a tight choke-hold on %s.
+You attempt to topple %s over.
+You punch %s.
+You attempt to poke %s in the eye!
+You twist %s's leg.
+You twist %s's arm.
+You bend %s's fingers.
+You punch %s in the kidneys!
+You smash %s with your elbow.
+You smash %s with your knee.
diff --git a/lib/file/dam_none.txt b/lib/file/dam_none.txt
new file mode 100644
index 00000000..a6c20248
--- /dev/null
+++ b/lib/file/dam_none.txt
@@ -0,0 +1,24 @@
+22
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+You scratch %s.
+You give %s a nasty bruise.
+You stub %s's toe.
+You jab %s in the ribs.
+You almost poked your eye out while fighting %s!
+You made %s's nose bleed.
+You almost slipped while fighting %s.
+%^s doesn't even flinch!
+You accidentally hurt yourself while fighting %s.
+You slap %s.
+%^s slips and falls.
+%^s laughs at your wild swings.
+You pull at %s's hair.
+You punch %s in the nose.
+You pull at %s's ear.
+%^s growls at you.
+%^s is very, very annoyed!
+You scream an insult at %s.
+%^s makes a nasty face.
+You scowl at %s.
+%^s gnashes his teeth.
+%^s lets out a gurgling laugh.
diff --git a/lib/file/dam_xxx.txt b/lib/file/dam_xxx.txt
new file mode 100644
index 00000000..afceffe1
--- /dev/null
+++ b/lib/file/dam_xxx.txt
@@ -0,0 +1,11 @@
+9
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+%^s disintegrates into a fine mist!
+%^s splatters all over the floor.
+%^s explodes into tiny chunks.
+%^s's bones are crushed at the force of your blow!
+You almost squash %s into a pancake!
+Your weapons neatly slice %s into many little pieces.
+You cleave %s in half.
+%^s's head flies off in a wide trajectory.
+%^s is driven several feet into the ground under your blow!
diff --git a/lib/file/dead.txt b/lib/file/dead.txt
new file mode 100644
index 00000000..f32dae4d
--- /dev/null
+++ b/lib/file/dead.txt
@@ -0,0 +1,24 @@
+ #s_____#w #D,#w-#Wv#s___#w
+ #s_d&#y*#D'"#w #W/#w #D`#w|
+ #D,#W/#s?#D'#w | |#D'#w
+ #s?#D'#w|#D'#w | #D.,#W~#w-#D'""'#w |#D.#w
+ #D,#w| #sT#w --#y+#w-- #D,#W~#D'#w #D.,#W~#s:#w| #D`#W~\#w
+ | #sL#w | #D,#Wv#s_#D.#w #W/#D'#w #D,#W/#D"#w | #sT#D`#W\#D.`#W\#D.#w
+ |#D.#w |#W\#w | #D""'#w #s?#w--#Wv#D,#s?#w |#D'#w #s?#D,#w #W\#D.#w
+ #W\#w #D`#W\#D.#w #sT#w #D`#W~#w-#W\#s_]#w |
+ #D`#W\#D.#w #D"#W^~v#D.#w | #D"#W^#w-#W~v#w
+ #D`#W\#s_#w #sT#D.#w #D"#W^~v#w #D.#s__#D.#w #W/#w
+ #D``#w-#W~#w--| | |#D,#w #D"#s:#w| #D.#s___#D.#w #D.#w|
+ #D`#W\#w #s?#W\#w #W/#w #W/#w #D"#s:&#w #D,#w-#Wv#s_#W/#w
+ #D`#W\#D.#w #D`#W\#w| |#D'#w #D.,#W~#D'#w #D.#W/#D'#w
+ #D`#W~\#D.#w #D`#W^#D'"#w #D,#W~#D'#w
+ #D.#w| #s__#Wv#w-#W~#D''#w
+ #W/#w #W/#D'#w
+ #D,#w| #D.#w|
+ #W/#w #sJ#w
+ |#D'#w |
+---------------------------------------------#W/#w #W/#s:#w-------------------------
+ |#D'#w #D,#w|
+ |#D'#w #D'#w
+ #D`#w
+
diff --git a/lib/file/death.txt b/lib/file/death.txt
new file mode 100644
index 00000000..73ac47cd
--- /dev/null
+++ b/lib/file/death.txt
@@ -0,0 +1,351 @@
+349
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+Live and let live, right..?
+AAAAAAAAARRRRRRRRRRRRRRGGGGGGGGGGGGGHHHHHHHHHHHHHHH!!!!!!!!!!!!
+AAAARRRGGGHHH!!!
+Somehow, I have a bad feeling about this...
+Strangely, all of a sudden I don't feel so good.
+You can see armored women on winged horses coming for you.
+Oh well, you can't always win.
+I'm too young to die!
+I'll be back!
+O, untimely death!
+Slave, thou hast slain me!
+Ouch! That smarts!
+Who knocked?
+Did anybody get the number of that truck..?
+Ouch.
+Et tu, Brute! Then fall, Caesar!
+O! I die, Horatio...
+I told you to be careful with that sword...
+This guy's a little crazy...
+Ok, ok, I get it: No more pals.
+No more mr. nice guy!
+Who turned off the light..?
+Join the army, see the world, they said...
+Mom told me there'd be days like this...
+Rats!
+Shall this fellow live?
+Help, ho!
+What ho! Help!
+What hast thou done?
+I'll be revenged on the whole pack of you!
+You will *pay* for this!
+They say blood will have blood...
+Violence is no solution!
+Yes?
+#&%#&#%*#*&%!!!!!
+F***!
+No time to make a testament?
+Ugh!
+Aargh!
+Aaagghhh!
+I'm melting!
+Oof..
+Oh!
+Did somebody knock?
+Later, dude...
+CU!
+What? Who? Me? Oh, s..t!
+...amen!
+Eeek!
+Aacch!
+I hate it when that happens.
+One direct hit can ruin your whole day.
+Oh no!
+Not me!
+Ouch.
+Oh no, not again.
+Another one bites the dust.
+Goodbye.
+Help me!
+Farewell, cruel world.
+Oh man!
+Doough!
+This is the End, my only friend.
+It's all over.
+The fat lady sang.
+Why does everything happen to me?
+I'm going down.
+Crapola.
+Pow!
+Bif!
+Bam!
+Zonk!
+I should've listened to my mother...
+No... a Bud light!
+What was that noise?
+Mama said there'd be days like this.
+It's just one of those days...
+I see a bright light...
+Mommy? Is that you?
+I let you hit me!
+Sucker shot!
+I didn't want to live anyway.
+-<sob>-
+Hah haa! Missed me! Ha---
+Was that as close as I think it was?
+Monsters rejoice: the hero has been defeated.
+It wasn't just a job it was an adventure!
+I didn't like violence anyway!
+I thought you liked me?
+Such senseless violence! I don't understand it.
+I think this guy's a little crazy.
+Somehow I don't feel like killing anymore.
+Help me! I am undone!
+Hey! Killin' ain't cool.
+This fell sergeant, Death, is strict in his arrest...
+The rest is silence.
+Guh!
+It's game over, man!
+You've run out of life.
+Thou art slain.
+Finish him!
+Trust me, I know what I'm doing...
+Die, mortal!
+Kill men i' the dark! What be these bloody thieves?
+Ho! Murder! Murder!
+O! I am spoil'd, undone by villains!
+O murderous slave! O villain!
+O, falsely, falsely murder'd!
+A guiltless death I die.
+AAAAAAAAAAAAAAAAAAAAAAAAHHHHHHH!
+Trust me.
+Dammit, this thing won't die!
+He hit me for HOW MUCH?????
+Look, behind you!!!
+Who fed steroids to that kobold?
+Don't worry, be happy!
+I don't believe this!
+Oops.
+Oups.
+Can't you take a joke?
+Well, I didn't much like this character, anyway...
+Oops, sorry... didn't mean to disturb you.
+I never get to have any fun!
+Stop!
+Cut it out!
+Don't worry. I've got a plan.
+It didn't look so tough.
+Run away!
+All clear, guys.
+AGAIN!?!?!
+I don't like this dungeon...
+Maybe this wasn't such a good idea.
+My God will protect me.
+You wouldn't dare!
+But what about my Parry Skill? Tumbling?
+Don't worry - I have Pilot-7.
+And I've *never* done you any harm.
+I don't understand. It should be dead by now.
+I'm heir to the crown. They wouldn't dare!
+Hey! Where's my stomach? My hands?
+Ha! That's the oldest trick in the book.
+Cover me.
+Watch this.
+And damn'd be him that first cries, 'Hold, enough!'
+I will not yield.
+...but like a man he died.
+If you cut me down, I will only become more powerful.
+Well, at least I tried...?
+What could possibly have gone wrong?
+You die...
+What's with that weirdo with the teeth?
+Surrender? Never!
+I'm sure reinforcements will get here on time. They promised.
+Funny, didn't *look* like a cyberpsycho....
+I have a very bad feeling about this.
+Do something, SCHMUCK!
+I feel I could cast 'Speak with Dead' and talk to myself.
+Oh, that's just a light wound.
+Ach, is doch nur 'ne Fleischwunde...
+I thought you were on MY side...
+Next time, try talking!
+Oh shit... I'll try to teleport again.
+Somebody get me a Rod of Resurrection... QUICK!
+Uhh... oh-oh...
+Gee, where'd everybody go?
+I see it coming...aaargllhhhh! {sough}
+What do you mean 'aaargllhhhh'? Hey man, I've paid for this.
+Ay! Ay! Ay!
+Ohe! Ohe! Ohe!
+Et tu, Caesar! Then fall, Brute!
+Even the best laid plans...
+Hey, not too rough!
+The Random Number Generator hates me!
+So when I die, the first thing I will see in heaven is a score list?
+Can't we talk this thing over?
+Wait! Spare me and I'll make you rich! Money is not a problem!
+I hate you!
+By the kind gods, 'twas most ignobly done!
+Mein Leben!
+Meine Lieder!
+I'm the hero of this story! I CAN'T die!
+I thought heroes were supposed to win!
+Gee... thanks.
+You've fallen and can't get up!
+911?
+Sure don't look good...
+Oh No! Here I blow again!
+Hey - I've got lawyers.
+Thanks, I needed that.
+I AM toast!!
+Scheisse!
+Fatality!
+Brutality!
+Toasty!
+And you thought Tristan was unlucky...
+Just wait till I get my hands on the crook who sold me this crappy armor...
+All is lost. Monks, monks, monks!
+All my possessions for a moment of time!
+Don't let poor Nelly starve!
+Wally, what is this? It is death, my boy: they have deceived me.
+Everyone dances with the Grim Reaper.
+Adios.
+I'm going home, babe.
+I am innocent, innocent, innocent!
+Watch where you're pointing with that sword! You nearly...
+Hmm, some things are better wanted than had...
+And they told me it was not loaded.
+Of course I know what I am doing.
+It looked harmless.
+Hilfe, hilfe, hilfe!
+Look, dad! No head!
+Look! I'm flying!
+Think I'm gonna fall for that?
+I'll be back... as soon as I can.
+3... 2... 1... Liftoff!
+My wallet? In your dreams!
+Yes! Yes! YES! YES! YY... AAARRRGGGHH!
+See you later, alligator!
+Up, up and awaaaayyy!
+Been nice knowing you.
+But I just got a little prick!
+And I just wanted that fancy suit of armour you were carrying...
+Hey guys, where are you?
+Hey look... ARCHERS!
+I can't probably miss...
+I don't care. I have a Scroll of Raise Dead.
+I don't care. I have a Ring of Regeneration.
+I have this dungeon at home, I know where everything is!
+This HAS to be an illusion. I attempt to disbelieve it.
+I thought you could be trusted.
+Never try to sneak in a plate mail.
+I'll never surrender.
+I'll use the Cheat Death option...
+I'm invincible!
+I'm death incarnate! Nothing can harm me!
+Hey, it was only a joke, all right?
+Hey, don't talk to me like that!
+I have rights, too!
+Just because you're big and ugly doesn't mean you can push ME around.
+Me first! Me first!
+Let me handle this.
+No problem. That's easy.
+Oh, shit.
+So what?
+Tell me this is an illusion... please!
+I hate the RNG...
+They need a twenty to hit me! I'm invincible!
+Trust me.
+CHARGE!
+What do you mean, how many hit points do I have?
+What do you mean, my GOI expired?
+Yeah, I knew it was dangerous, but I was thinking about the experience points.
+You mean you get to use the critical hit chart too?
+You'd have to be a GOD to smile after that hit!
+I'm not afraid of death. I just don't want to be there when it happens.
+I have such sweet thoughts.
+I pray you all pray for me.
+I shall hear in heaven.
+Is not this dying with courage and true greatness?
+I must sleep now.
+Nurse, nurse, what murder! What blood! I have done wrong!
+It is finished.
+That unworthy hand! That unworthy hand!
+I am dying.
+Oh, dear.
+I will not kneel. Strike!
+I have led a happy life.
+Dying, dying.
+I feel the flowers growing over me.
+Now it is come.
+Let me die to the sound of sweet music.
+I will now enter the Halls of Mandos.
+Ungrateful traitors!
+We perish, we disappear, but the march of time goes on forever.
+Youth, I forgive thee.
+Treason! Treason!
+Coward! Why did you not protect me?
+I am absolutely undone.
+It is well. I die hard, but am not afraid to go.
+Do let me die in peace.
+Nothing is real but pain now.
+Violent use brings violent plans.
+Soldier boy, made of clay, now an empty shell.
+Bodies fill the fields I see, the slaughter never ends.
+Life planned out before my birth, nothing could I say.
+Blood will follow blood, dying time is here.
+Never happy endings on these dark sets.
+No one to play soldier now, no one to pretend.
+Time for lust, time for lie, time to kiss your life goodbye.
+Greetings, Death, he's yours to take away.
+I was born for dying.
+The higher you walk, the farther you fall.
+Where's your crown, King Nothing?
+Exit: light - enter: night!
+New blood joins this earth...
+You labeled me, I'll label you, so I dub thee unforgiven.
+If you're gonna die, die with your boots on!
+There's a time to live, and a time to die, when it's time to meet the maker.
+Isn't it strange, as soon as you're born you're dying?
+Only the good die young, all the evil seem to live forever.
+I don't wanna die, I'm a god, why can't I live on?
+And in my last hour, I'm a slave to the power of death.
+Now I am cold, but a ghost lives in my veins.
+You got to watch them - be quick or be dead.
+Heaven can wait 'till another day.
+You'll take my life but I'll take yours too.
+We won't live to fight another day.
+As I lay forgotten and alone, without fear I draw my parting groan.
+Somebody please tell me that I'm dreaming!
+Can't it be there's been some sort of error?
+Is it really the end not some crazy dream?
+Life down there is just a strange illusion.
+Your body tries to leave your soul.
+I'm so tired of living, I might as well end today.
+Life, life! Death, death! How curious it is!
+Catch my soul 'cos it's willing to fly away!
+Flames? Not yet, I think.
+Someone call the Gendarmes!
+I split my brain, melt through the floor.
+And now the dreams end.
+Off to Never-Never Land!
+Death greets me warm, now I will just say goodbye.
+What is this? I've been stricken by fate!
+This can't be happening to me!
+Flash before my eyes: now it's time to die.
+You have been dying since the day you were born.
+No point asking who's to blame.
+But for all his power he couldn't foresee his own demise.
+My creator will lay my soul to rest.
+Was that worth dying for?
+Can you say you are proud of what you've done?
+But there are some things which cannot be excused.
+Why is it some of us are here just so that we'll die?
+The shortest straw, pulled for you.
+There's got to be just more to it that this or tell me why do we exist?
+I can't believe that really my time has come.
+Too much of a good thing, I guess...
+I really screwed up this time.
+Wow, what a trip!
+What is Time, friend or foe
+Time waits for none
+Running through your fingers like sand
+Taking us along to future unknown
+And all too sudden, like it or not
+We become part of the Land.
+Hah! I'm not dead yet. I still have five hit points.
+I don't understand. It should be dead by now.
+I rolled a 20. How could that be a miss?
+What the frell?!
diff --git a/lib/file/elvish.txt b/lib/file/elvish.txt
new file mode 100644
index 00000000..a00b5a22
--- /dev/null
+++ b/lib/file/elvish.txt
@@ -0,0 +1,218 @@
+216
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+adan
+ael
+in
+agl
+ar
+aina
+alda
+al
+qua
+am
+arth
+amon
+anca
+an
+dune
+anga
+anna
+ann
+on
+ar
+ien
+atar
+band
+bar
+ad
+bel
+eg
+brag
+ol
+breth
+il
+brith
+cal
+en
+gal
+en
+cam
+car
+ak
+cel
+eb
+cor
+on
+cu
+cui
+vie
+cul
+curu
+dae
+dag
+or
+del
+din
+dol
+dor
+draug
+du
+duin
+dur
+ear
+ech
+or
+edh
+el
+eith
+elen
+er
+ereg
+es
+gal
+fal
+as
+far
+oth
+faug
+fea
+fin
+for
+men
+fuin
+gaer
+gaur
+gil
+gir
+ith
+glin
+gol
+odh
+gond
+gor
+groth
+grod
+gul
+gurth
+gwaith
+gwath
+wath
+had
+hod
+haudh
+heru
+him
+hini
+hith
+hoth
+hyar
+men
+ia
+iant
+iath
+iaur
+ilm
+iluve
+kal
+gal
+kano
+kel
+kemen
+khel
+ek
+khil
+kir
+lad
+laure
+lhach
+lin
+lith
+lok
+lom
+lome
+londe
+los
+loth
+luin
+maeg
+mal
+man
+mel
+men
+menel
+mer
+eth
+min
+as
+mir
+mith
+mor
+moth
+nan
+nar
+naug
+dil
+dur
+nel
+dor
+nen
+nim
+orn
+orod
+os
+pal
+an
+pel
+quen
+quet
+ram
+ran
+rant
+ras
+rauko
+ril
+rim
+ring
+ris
+roch
+rom
+rond
+ros
+ruin
+ruth
+sarn
+ser
+eg
+sil
+sir
+sul
+tal
+dal
+tal
+ath
+tar
+tath
+ar
+taur
+tel
+thal
+thang
+thar
+thaur
+thin
+thol
+thon
+thor
+on
+til
+tin
+tir
+tol
+tum
+tur
+uial
+ur
+val
+wen
+wing
+yave
diff --git a/lib/file/error.txt b/lib/file/error.txt
new file mode 100644
index 00000000..201ab8e9
--- /dev/null
+++ b/lib/file/error.txt
@@ -0,0 +1,67 @@
+65
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+What game do you think you are playing anyway?
+Aivan sairas kaveri kun tuollaista aikoo puuhata!
+Insufficient data for further analysis.
+Non sequitur. Your facts are uncoordinated.
+Type '?' or '\' for help.
+Invalid command.
+What?
+WHAT?!
+You must be out of your mind!
+You're killing me.
+Are you sure?
+Are you sure you know what you are doing?
+Aww, come on!
+That makes no sense.
+I beg your pardon.
+Degreelessness mode on.
+Degreelessness mode off.
+Syntax error.
+That doesn't compute.
+I don't understand you.
+???
+Sure. Piece of cake.
+Error.
+You can't do that!
+Help!
+Come again?
+Sorry?
+Sorry, I'm not sure I understand you.
+What's your point?
+Unknown command.
+Command not found.
+An unexpected error has occurred because an error of type 42 occurred.
+Somehow, you think that would never work.
+Welcome to level 42.
+Don't be ridiculous!
+lfae aierty agnxzcg?
+Soyha, azho bouate!
+I don't fully understand you.
+Why would anybody want to do THAT?
+Yes, yes, now tell me about your childhood.
+Satisfied?
+Something is wrong here.
+There's something wrong with YOU.
+You leap up 9' and perform a miraculous 5xSpiral in the air.
+Aw, shaddap!
+Shut up, smartass!
+I see little point in doing that.
+Oh, really?
+Very funny.
+You've got to be kidding!
+I'm not amused.
+I must have misheard you.
+Nothing happens.
+Where did you learn THAT command?
+When all else fails, read the instructions.
+Why not read the instructions first?
+Cut it out!
+Nothing interesting happens.
+Just how exactly am I supposed to do THAT?
+That's morally wrong and I won't do it.
+I'm not gonna take this abuse.
+AAAAAAAAAAAAAHHHHHHHHHHHHHHHRRRRRRRRRRRGGGGGGGGGGG!
+No more, if you value your character's life!
+Give it up, guy.
+Disk error. (a)bort, (r)etry, (f)ail?
diff --git a/lib/file/mondeath.txt b/lib/file/mondeath.txt
new file mode 100644
index 00000000..e78ca4e9
--- /dev/null
+++ b/lib/file/mondeath.txt
@@ -0,0 +1,334 @@
+332
+****** BUFFER LINE *********************************** DO NOT REMOVE *******
+'Live and let live, right..?'
+'AAAAAAAAARRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHH!!!!!!!!!!!'
+'AAAARRRGGGHHH!!!'
+'Somehow, I have a bad feeling about this...'
+'Strangely, all of a sudden I don't feel so good.'
+'I can see armored women on winged horses coming for me.'
+'Oh well, you can't always win.'
+'I'm too young to die!'
+'I'll be back!'
+'O, untimely death!'
+'Slave, thou hast slain me!'
+'Ouch! That smarts!'
+'Who knocked?'
+'Did anybody get the number of that truck..?'
+'Ouch.'
+'Et tu, Brute! Then fall, Caesar!'
+'O! I die, Horatio...'
+'I told you to be careful with that sword...'
+'This guy's a little crazy...'
+'Ok, ok, I get it: No more pals.'
+'No more Mr. Nice Guy!'
+'Who turned off the light..?'
+'Join the army, see the world, they said...'
+'Mom told me there'd be days like this...'
+'Rats!'
+'Shall this fellow live?'
+'Help, ho!'
+'What ho! Help!'
+'What hast thou done?'
+'I'll be revenged on the whole pack of you!'
+'You will *pay* for this!'
+'They say blood will have blood...'
+'Violence is no solution!'
+'Yes?'
+'#&%#&#%*#*&%!!!!!'
+'F***!'
+'No time to make a testament?'
+'Ugh!'
+'Aargh!'
+'Aaagghhh!'
+'I'm melting!'
+'Oof..'
+'Oh!'
+'Did somebody knock?'
+'Later, dude...'
+'CU!'
+'What? Who? Me? Oh, s..t!'
+'...amen!'
+'Eeek!'
+'Aacch!'
+'I hate it when that happens.'
+'One direct hit can ruin your whole day.'
+'Oh no!'
+'Not me!'
+'Ouch.'
+'Oh no, not again.'
+'Another one bites the dust.'
+'Goodbye.'
+'Help me!'
+'Farewell, cruel world.'
+'Oh man!'
+'Doough!'
+'This is the End, my only friend.'
+'It's all over.'
+'The fat lady sang.'
+'Why does everything happen to me?'
+'I'm going down.'
+'Crapola.'
+'Pow!'
+'Bif!'
+'Bam!'
+'Zonk!'
+'I should've listened to my mother...'
+'No... a Bud light!'
+'What was that noise?'
+'Mama said there'd be days like this.'
+'It's just one of those days...'
+'I see a bright light...'
+'Mommy? Is that you?'
+'I let you hit me!'
+'Sucker shot!'
+'I didn't want to live anyway.'
+'-<sob>-'
+'Hah haa! Missed me! Ha---'
+'Was that as close as I think it was?'
+'The monsters rejoice: the hero has been defeated.'
+'It wasn't just a job it was an adventure!'
+'I didn't like violence anyway!'
+'I thought you liked me?'
+'Such senseless violence! I don't understand it.'
+'I think this guy's a little crazy.'
+'Somehow I don't feel like killing anymore.'
+'Help me! I am undone!'
+'Hey! Killin' ain't cool.'
+'This fell sergeant, Death, is strict in his arrest...'
+'The rest is silence.'
+'Guh!'
+'It's game over, man!'
+'Trust me, I know what I'm doing...'
+'Kill men i' the dark! What be these bloody thieves?'
+'Ho! Murder! Murder!'
+'O! I am spoil'd, undone by villains!'
+'O murderous slave! O villain!'
+'O, falsely, falsely murder'd!'
+'A guiltless death I die.'
+'AAAAAAAAAAAAAAAAAAAAAAAAHHHHHHH!'
+'Trust me.'
+'Dammit, this thing won't die!'
+'He hit me for HOW MUCH?????'
+'Look, behind you!!!'
+'Who fed steroids to that kobold?'
+'Don't worry, be happy!'
+'I don't believe this!'
+'Oops.'
+'Can't you take a joke?'
+'Well, I didn't much like this character, anyway...'
+'Oops, sorry... didn't mean to disturb you.'
+'I never get to have any fun!'
+'Stop!'
+'Cut it out!'
+'Don't worry. I've got a plan.'
+'It didn't look so tough.'
+'Run away!'
+'All clear, guys.'
+'AGAIN!?!?!'
+'I don't like this dungeon...'
+'Maybe this wasn't such a good idea.'
+'My God will protect me.'
+'You wouldn't dare!'
+'But what about my Parry Skill? Tumbling?'
+'Don't worry - I have Pilot-7.'
+'And I've *never* done you any harm.'
+'I don't understand. It should be dead by now.'
+'I'm heir to the crown. They wouldn't dare!'
+'Hey! Where's my stomach? My hands?'
+'Ha! That's the oldest trick in the book.'
+'Cover me.'
+'Watch this.'
+'And damn'd be him that first cries: Hold, enough!'
+'I will not yield.'
+'...but like a man he died.'
+'If you cut me down, I will only become more powerful.'
+'Well, at least I tried...?'
+'What could possibly have gone wrong?'
+'What's with that weirdo with the teeth?'
+'Surrender? Never!'
+'I'm sure reinforcements will get here on time. They promised.'
+'Funny, didn't *look* like a cyberpsycho....'
+'I have a very bad feeling about this.'
+'Do something, SCHMUCK!'
+'I feel I could cast Speak with Dead and talk to myself.'
+'Oh, that's just a light wound.'
+'Ach, is doch nur 'ne Fleischwunde...'
+'I thought you were on MY side...'
+'Next time, try talking!'
+'Oh shit... I'll try to teleport again.'
+'Somebody get me a Rod of Resurrection... QUICK!'
+'Uhh... oh-oh...'
+'Gee, where'd everybody go?'
+'I see it coming...aaargllhhhh! {sough}'
+'Ay! Ay! Ay!'
+'Ohe! Ohe! Ohe!'
+'Et tu, Caesar! Then fall, Brute!'
+'Even the best laid plans...'
+'Hey, not too rough!'
+'The Random Number Generator hates me!'
+'So when I die, the first thing I will see in heaven is a score list?'
+'Can't we talk this thing over?'
+'Wait! Spare me and I'll make you rich! Money is not a problem!'
+'I hate you!'
+'By the kind gods, 'twas most ignobly done!'
+'Mein Leben!'
+'Meine Lieder!'
+'I'm the hero of this story! I CAN'T die!'
+'Gee... thanks.'
+'I've fallen and I can't get up!'
+'911?'
+'Sure don't look good...'
+'Oh No! Here I blow again!'
+'I'll be back...'
+'Hey - I've got lawyers.'
+'Thanks, I needed that.'
+'I AM toast!!'
+'Scheisse!'
+'Oh, basely done! I had hoped for better of thee!'
+'I am death incarnate! NOTHING can harm me!'
+'And you thought Tristan was unlucky...'
+'Just wait till I get my hands on the crook who sold me this crappy armor...'
+'All is lost. Monks, monks, monks!'
+'All my possessions for a moment of time!'
+'Don't let poor Nelly starve!'
+'Wally, what is this? It is death, my boy: they have deceived me.'
+'Everyone dances with the Grim Reaper.'
+'Adios.'
+'I'm going home, babe.'
+'I am innocent, innocent, innocent!'
+'Watch where you're pointing with that sword! You nearly...'
+'Hmm, some things are better wanted than had...'
+'And they told me it was not loaded.'
+'Of course I know what I am doing.'
+'It looked harmless.'
+'Hilfe, hilfe, hilfe!'
+'Look, dad! No head!'
+'Look! I'm flying!'
+'Think I'm gonna fall for that?'
+'I'll be back... as soon as I can.'
+'3... 2... 1... Liftoff!'
+'My wallet? In your dreams!'
+'Yes! Yes! YES! YES! YY... AAARRRGGGHH!'
+'See you later, alligator!'
+'Up, up and awaaaayyy!'
+'Been nice knowing you.'
+'But I just got a little prick!'
+'And I just wanted that fancy suit of armour you were carrying...'
+'Hey guys, where are you?'
+'Hey look... ARCHERS!'
+'I can't probably miss...'
+'I don't care. I have a Scroll of Raise Dead.'
+'I don't care. I have a Ring of Regeneration.'
+'I have this dungeon at home, I know where everything is!'
+'This HAS to be an illusion. I attempt to disbelieve it.'
+'I thought you could be trusted.'
+'Never try to sneak in a plate mail.'
+'I'll never surrender.'
+'I'll use the Cheat Death option...'
+'I'm invincible!'
+'Hey, it was only a joke, all right?'
+'Hey, don't talk to me like that!'
+'I have rights, too!'
+'Just because you're big and ugly doesn't mean you can push ME around.'
+'Me first! Me first!'
+'Let me handle this.'
+'No problem. That's easy.'
+'Oh, shit.'
+'So what?'
+'Tell me this is an illusion... please!'
+'I hate the RNG...'
+'They need a twenty to hit me! I'm invincible!'
+'Trust me.'
+'CHARGE!'
+'What do you mean, how many hit points do I have?'
+'What do you mean, my GOI expired?'
+'Yeah, I knew it was dangerous, but I was thinking about the XP...'
+'You mean you get to use the critical hit chart too?'
+'You'd have to be a GOD to smile after that hit!'
+'Morons! I have morons on my payroll!'
+'Idiots! I am surrounded by incompetent idiots!'
+'I have such sweet thoughts'
+'I pray you all pray for me.'
+'Is not this dying with courage and true greatness?'
+'I must sleep now.'
+'Nurse, nurse, what murder! What blood! I have done wrong!'
+'That unworthy hand! That unworthy hand!'
+'I am dying.'
+'Oh, dear.'
+'I will not kneel. Strike!'
+'I have led a happy life.'
+'Dying, dying.'
+'I feel the flowers growing over me.'
+'Now it is come.'
+'Let me die to the sound of sweet music.'
+'I will now enter the Halls of Mandos.'
+'Ungrateful traitors!'
+'We perish, we disappear, but the march of time goes on forever.'
+'Youth, I forgive thee.'
+'Treason! Treason!'
+'Cowards! Why did you not protect me?'
+'I am absolutely undone.'
+'It is well. I die hard, but am not afraid to go.'
+'Do let me die in peace.'
+'Nothing is real but pain now.'
+'Violent use brings violent plans.'
+'Soldier boy, made of clay, now an empty shell.'
+'Bodies fill the fields I see, the slaughter never ends.'
+'Life planned out before my birth, nothing could I say.'
+'Blood will follow blood, dying time is here.'
+'Never happy endings on these dark sets.'
+'No one to play soldier now, no one to pretend.'
+'Time for lust, time for lie, time to kiss your life goodbye.'
+'Greetings, Death, I'm yours to take away.'
+'I was born for dying.'
+'The higher you walk, the farther you fall.'
+'Exit: light - enter: night!'
+'New blood joins this earth...'
+'You labeled me, I'll label you, so I dub thee unforgiven.'
+'If you're gonna die, die with your boots on!'
+'There's a time to live, and a time to die, when it's time to meet the maker.'
+'Isn't it strange, as soon as you're born you're dying?'
+'Only the good die young, all the evil seem to live forever.'
+'I don't wanna die, I'm a god, why can't I live on?'
+'And in my last hour, I'm a slave to the power of death.'
+'Now I am cold, but a ghost lives in my veins.'
+'You got to watch them - be quick or be dead.'
+'Heaven can wait till another day.'
+'You'll take my life but I'll take yours too.'
+'We won't live to fight another day.'
+'As I lay forgotten and alone, without fear I draw my parting groan.'
+'Somebody please tell me that I'm dreaming!'
+'Can't it be there's been some sort of error?'
+'Is it really the end not some crazy dream?'
+'Life down there is just a strange illusion.'
+'My life suffocates, planting seeds of hate.'
+'I split my brain, melt through the floor.'
+'My body tries to leave my soul.'
+'I'm so tired of living, I might as well end today.'
+'Life, life! Death, death! How curious it is!'
+'Catch my soul 'cos it's willing to fly away!'
+'Flames? Not yet, I think.'
+'Someone call the Gendarmes!'
+'And now the dreams end.'
+'I'm off to Never-Never Land!'
+'Death greets me warm, now I will just say goodbye.'
+'What is this? I've been stricken by fate!'
+'This can't be happening to me!'
+'Flash before my eyes: now it's time to die.'
+'You have been dying since the day you were born.'
+'No point asking who's to blame.'
+'But for all my power I couldn't foresee my own demise.'
+'My creator will lay my soul to rest.'
+'Was that worth dying for?'
+'Can you say you are proud of what you've done?'
+'But there are some things which cannot be excused.'
+'Why is it some of us are here just so that we'll die?'
+'The shortest straw, pulled for me.'
+'There's got to be just more to it that this or tell me why do we exist?'
+'I can't believe that really my time has come.'
+'Too much of a good thing, I guess...'
+'When the dream dies, the nightmare begins.'
+'You maggots make me sick. I'll be avenged. Lucifer dwells within all of us!'
+'I really screwed up this time.'
+'Wow, what a trip!'
+'I believe my kingdom will come'
diff --git a/lib/file/monfear.txt b/lib/file/monfear.txt
new file mode 100644
index 00000000..5bd2e91c
--- /dev/null
+++ b/lib/file/monfear.txt
@@ -0,0 +1,63 @@
+61
+*********** BUFFER LINE ********************** DO NOT REMOVE *****************
+says: 'I am too young to die.'
+says: 'Ok, ok! I get: no more pals.'
+screams: 'Help, ho!'
+screams: 'What ho! Help!'
+says: 'You will pay for this!'
+says: 'Violence is no solution!'
+says: 'I thought you liked me.'
+says: 'Such senseless violence! I don't understand it!'
+screams: 'Ho! Murder! Murder!'
+says: 'Look, behind you!'
+screams: 'Run away!'
+screams: 'Run to the hills! Run for your lives!'
+says: 'Wait! Spare me and I'll make you rich! Money isn't a problem!'
+says: 'I'll be back...'
+says: 'Hey -- I've got lawyers!'
+says: 'All my possession for a moment of time!'
+says: 'Hey, it was only a joke, all right?'
+says: 'Stop!'
+says: 'Cut it out, will you?'
+says: 'I will not kneel. Strike!'
+screams: 'Cowards! Why did you not protect me?'
+screams: 'Idiots! I am surrounded by incompetent idiots!'
+says: 'I don't wanna die, I'm a god, why can't I live on?'
+yells: 'Someone call the Gendarmes!'
+screams: 'Keep that lunatic away from me!'
+shouts: 'Drop that weapon, now!'
+says: 'Fool! You don't know what you're doing!'
+screams for help!
+begs for mercy.
+sobs.
+screams: 'Help! The maniac's murdering me!'
+says: 'Just what is it you want? Money? Babes? I can arrange it...'
+says: 'Wait! Let's make a deal!'
+says: 'Just can't stop this surmounting terror!'
+says: 'If there is a God, then why has he let me die?'
+says: 'I know where I'm going -- out!'
+says: 'No hope, no life, just pain and fear.'
+says: 'I am a fugitive, hunted down like game.'
+says: 'You'll live to regret this blasphemous offence!'
+says: 'All my life's blood is slowly draining away...'
+asks: 'Should we be fighting at all?'
+asks: 'What are we fighting for?'
+asks you: 'Can you say you are proud of what you've done?'
+says: 'Every minute I get weaker...'
+says: 'All my life I've run away...'
+says: 'All that I see, absolute horror!'
+says: 'I have fallen prey to failure.'
+says: 'Just leave me alone!'
+says: 'Please, save me!'
+says: 'You've won a battle, but I'll win the war!'
+says: 'You've won this round, next time it's *my* turn!'
+says: 'Another time, another battlefield, *my* victory.'
+says: 'I've got to keep running.'
+says: 'It's all so futile!'
+says: 'Cowards live to fight another day.'
+says: 'Life it seems will fade away, drifting further every day.'
+says: 'Emptiness is filling me, to the point of agony.'
+says: 'Cannot stand this hell I feel!'
+cries: 'Someone help me, oh please God help me!'
+cries: 'Please! I have a mate and six siblings!'
+cries: 'Mama, they try and break me!'
diff --git a/lib/file/monspeak.txt b/lib/file/monspeak.txt
new file mode 100644
index 00000000..5981f91c
--- /dev/null
+++ b/lib/file/monspeak.txt
@@ -0,0 +1,361 @@
+# This is the file for allowing uniques to speak their "own" lines.
+# Deleting this file will have no real effect on the game. Modifying it may
+# cause STRANGE unique lines to come up if the format's wrong, but shouldn't
+# crash anything. The format goes like so:
+#
+# N:45:whoever this is
+# 3
+# says bravado line 1
+# says bravado line 2
+# says bravado line 3
+# 2
+# says fear line 1
+# says fear line 2
+#
+# The number after the N: is the "monster index number" obtained from
+# r_info.txt. The text field after that number isn't actually used--it's
+# just there to help humans edit the file. The numbers on lines by
+# themselves say the number of "bravado" and "fear" lines. Getting these
+# numbers wrong won't crash anything, but will produce strange lines.
+#
+# Two or more monsters can share lines; just put their N: lines in a
+# contiguous block.
+#
+# To stop a certain monster from having unique lines, put a # in front of
+# its N: line.
+#
+# Have fun with this! --Matt G
+
+N:8:Farmer Maggot
+3
+says, 'I'm carrying CASH!'
+smirks, 'You wouldn't kill me, would you?'
+gleefully shows off a nifty object he just bought.
+2
+screams, 'Don't hurt a poor helpless hobbit!'
+yells, 'Where are my vicious dogs when I need them?'
+
+N:63:Smeagol
+27
+sniggers.
+grovels.
+picks his nose.
+pines for his precious.
+searches his pockets.
+eats some slimy creatures.
+mutters, 'My precious, wheres my precious?'
+shouts, 'No Master Hobbitsisisisis!'
+cries, 'The ring was ours for agesisisisis!'
+says, 'Smeagol sneeking! ME! Shneekingsisis!'
+screams, 'Nasty Hobbitsisisisis...'
+says, 'Come on, quickly, follow Smeagol'
+says, 'Every way is guarded, silly foolsis!'
+says, 'Nasty Bagginis, stole my precious.'
+says, 'She will kill them oh yes she will precious.'
+whines, 'Weees wants some fishises.'
+says, 'Whats has its got in its pocketses, hmmm?'
+whimpers, 'We've lost itses we have.'
+says, 'He'll eastus all the world if he getsitses it.'
+says, 'No food, no rest; Smeagol a SNEAK!'
+says, 'What a dainty little dish you will be for her.'
+says, 'Hobbitses always SOOOO Polite.'
+screams, 'Stop, Thief!'
+says, 'Makeses him drop his weapon precious.'
+grovels, 'He has only four fingers on the black hand.'
+growls, 'Not nice Hobbits, not sensible!'
+says, 'If you findesis it, give it us back.'
+3
+says, 'Don't hurt us, mastersisis.'
+says, 'Poor Smeagol, poor Smeagol.'
+says, 'No AH! Don't hurtsis us.'
+
+N:135:Mughash the Kobold Lord
+4
+says, 'I may be a kobold, but I can beat you!'
+says, 'Feel my wrath, fool!'
+says, 'Death and destruction make me happy!'
+snickers evilly.
+2
+screams, 'Cowards! Why did you abandon me?'
+begs for mercy.
+
+N:137:Wormtongue, Agent of Saruman
+6
+whines and sniggers.
+leafs through 'Cowards Monthly.'
+whispers nasty things.
+says, 'I'll slaughter you slowly...'
+giggles as he fingers his knife.
+says, 'Now, you shall taste my wrath!'
+3
+begs you to spare his miserable life.
+whines, 'This is not my fault!'
+screams, 'Help! Help!'
+
+N:138:Robin Hood, the Outlaw
+6
+eyes your money pouch covetously.
+says, 'You look like Nottingham's man to me!'
+says, 'I bet I can shoot better than you...'
+says, 'Give 'til it hurts!'
+says, 'Don't force me to put an arrow in your skull...'
+says, 'Kevin Costner has soiled my name!'
+3
+begs you to spare his life.
+says, 'But I'm a GOOD guy, really!'
+says, 'Money? Sure, take it all back!'
+
+#N:169:Brodda, the Easterling
+#N:291:Ulfast, Son of Ulfang
+
+N:180:Orfax, Son of Boldor
+N:237:Boldor, King of the Yeeks
+5
+wonders aloud about the quality of your weapon.
+spouts torrents of taunts.
+shouts, 'YEEK! YEEK! YEEK!'
+says, 'I'll teach you to respect yeeks!'
+says, 'Feel lucky, punk?'
+2
+sobs, 'I didn't MEAN it...'
+whimpers and moans.
+
+N:200:Hobbes the Tiger
+4
+says, 'Why were people put here? TIGER FOOD!'
+says, 'Yum! Adventurer sandwiches!'
+says, 'I ate Calvin, now I'll eat YOU!'
+says, 'I'll make your short life nasty and brutish!'
+1
+yells, 'Ow! Get me back to the comics!'
+
+N:140:Lagduf, the Snaga
+N:186:Grishnakh, the Hill Orc
+N:215:Golfimbul, the Hill Orc Chief
+N:260:Ufthak of Cirith Ungol
+N:314:Shagrat, the Orc Captain
+N:315:Gorbag, the Orc Captain
+N:330:Bolg, Son of Azog
+N:350:Ugluk, the Uruk
+N:356:Lugdush, the Uruk
+N:373:Azog, King of the Uruk-Hai
+19
+fingers his blade and grins evilly.
+snickers, 'Now, I strike a blow for *our* side!'
+says, 'Orcs don't get no respect... I'm gonna change that!'
+calls your mother nasty names.
+says, 'I'll bet your innards would taste real sweet...'
+belches and spits.
+scratches his armpits.
+says, 'I love the smell of fresh blood.'
+says, 'Yeeha! Another idiot to slaughter!'
+hawks a loogie in your direction.
+farts thunderously.
+wonders aloud how many experience points you're worth.
+says, 'I love being psychotic!'
+says, 'My brain's on fire with the feeling to kill!'
+says, 'I shall torture you slowly.'
+calls you a scum-sucking pig-dog.
+says, 'I shall break you!'
+says, 'You're not so tough, loser!'
+says, 'Heh-heh, heh-heh, killing people is cool.'
+6
+screams, 'Hey, orcs have rights too!'
+says, 'You're just prejudiced against orc-kind, aren't you?'
+begs, 'Spare me and I'll get you Ringil! Really!'
+says, 'Next time, I'm bringing more Uruks with me!'
+says, 'Don't hate me because I'm ugly!'
+whimpers and grovels.
+
+N:382:Mime, the Nibelung
+4
+says, 'Wagner misrepresented us!'
+says, 'I'll mess up all your stuff!'
+says, 'Give me the Rheingold, or die!'
+hums 'Ride of the Valkyries.'
+1
+screams, 'Help! Murder! Murder!'
+
+#N:392:Sangahyando of Umbar
+#N:380:Angamaite of Umbar
+
+#This next may be unnecessarily evil... :-]
+
+N:393:It
+6
+says, 'Nyah, nyah, betcha can't find me!'
+says, 'Come get some!'
+magically summons mighty undead opponents!
+chuckles evilly.
+magically summons Cyberdemons!
+summons special opponents!
+2
+howls, 'I'll be back!'
+whimpers, 'They said this invisibility thing was better than it is!'
+
+N:441:Barney the Dinosaur
+7
+says, 'Cooperation! That's the magic word!'
+mutters, 'I *hate* those Teletubbies...'
+says, 'Won't you be my friend?'
+says, 'Let's all sing a HAPPY SONG!'
+mugs for the camera.
+simpers disgustingly.
+chews up a 'Tinky Winky' doll.
+3
+begs, 'Don't! Think of the children!'
+screams, 'But I'm a big TV star!'
+sobs, 'All right! I apologise! I really really do!'
+
+N:505:Groo the Wanderer
+4
+says: 'A fray! A fray!'
+says: 'Groo does what Groo does best!'
+says: 'All right, you savage, mindless creature. Prepare to meet your equal!'
+says: 'I will slay you, and hack you, and waste you, and destroy you!'
+3
+says: 'Did I err?'
+says: 'I did not think Groo could be frightened...'
+says: 'I need no aid! Groo is beyond help!'
+
+N:934:Fangorn the Treebeard
+6
+says: 'The night stretches out on the Isengard!'
+says: 'Trolls are strong, Ents are STRONGER!'
+says: 'Saruman will now stop using his axes on the trees...'
+says: 'have you seen some Ent women ?'
+says: 'I will crush all those burarum ... those orcs!'
+says: 'I am totally of the side of nobody since nobody is totally of my side...'
+0
+
+N:732:Bull Gates
+10
+says, '640K should be enough for ANYBODY!'
+says, 'Buy Windows 2000; the filesystem rocks!'
+says, 'Linux? Never heard of it...'
+says, 'Resistance is futile--you will be assimilated.'
+says, 'NT is the solution for ALL your needs!'
+hacks out some code and calls it a Service Pack.
+says, 'We don't have a monopoly... Mac OS still exists!'
+wonders if he should buy a small country.
+says, 'Where will we let you go today? The Recycle Bin!'
+cackles diabolically.
+3
+sobs, 'OK, Linux doesn't suck. Let me live?'
+screams, 'Is megalomania THAT bad?'
+apologises for MS-DOS.
+
+N:733:Santa Claus
+8
+says, 'Ho ho ho! You're gonna die!'
+says, 'You're gettin' COAL in your stocking!'
+says, 'On Smasher, on Crasher, now dash away all!'
+chortles sadistically.
+says, 'You're on the Naughty List!'
+says, 'No presents for you, ever!'
+says, 'I'll sic my man-eating reindeer on you!'
+says, 'I hate Christmas so much that I've gone psychotic!'
+3
+sobs, 'Think of the children you'll disappoint!'
+sobs, 'No, Virginia, there isn't... not any more...'
+attempts to buy you off with offers of goodies.
+
+N:764:Uriel, Angel of Fire
+N:765:Azriel, Angel of Death
+N:769:Gabriel, the Messenger
+7
+says, 'Repent, evildoer!'
+says, 'My righteousness shall cleanse you!'
+says, 'Don't EVER steal from the collection plate!'
+says, 'God may love you, but *I* don't!'
+says, 'I shall smite thee with extreme prejudice!'
+says, 'Hope you like eternal damnation!'
+says, 'Verily, it is too late for thee.'
+3
+screams, 'Help! I am undone!'
+says, 'The Most High hath ordained this; I must follow.'
+screams, 'My God, my God, why hast thou forsaken me?'
+
+
+N:850:Carcharoth, the Jaws of Thirst
+N:846:Fenris Wolf
+N:840:Draugluin, Sire of All Werewolves
+8
+barks and bellows frighteningly!
+says, 'Oh good, another chew toy!'
+says, 'Yummy! I was getting tired of chicken...'
+lets out an earsplitting howl.
+drools all over the dungeon.
+lifts his leg at the nearest wall.
+says, 'Bad adventurer! No more living for you!'
+snarls and howls.
+3
+cringes and whimpers.
+says, 'Look, I promise I won't bite the mailman anymore!'
+says, 'Hey, put that rolled-up newspaper down!'
+
+N:830:Cantoras, the Skeletal Lord
+N:831:Mephistopheles, Lord of Hell
+N:818:The Mouth of Sauron
+N:819:Klingsor, Evil Master of Magic
+N:804:Vecna, the Emperor Lich
+N:844:Feagwath the Undead Sorceror
+N:856:Gothmog, the High Captain of Balrogs
+N:860:Sauron, the Sorcerer
+12
+brags, 'My power is beyond compare!'
+snorts, 'A mere mortal dares challenge my might? HA!'
+says, 'Not another one! I just finished chewing on the last!'
+wonders aloud how many XP you're worth.
+leafs through 'Evil Geniuses For Dummies'.
+mutters, 'Another darn loser to kill...'
+says, 'Angband shall claim your remains!'
+says, 'Another 12 skulls and I get that reward from the Boss!'
+yawns at your pathetic efforts to kill him.
+says, 'Minions, slaughter this fool!'
+says, 'Set thine house in order, for thou shalt die...'
+says, 'I'm no god... God has MERCY!'
+2
+screams, 'This CAN'T be happening!'
+shouts, 'Kill me if you want, the Boss will getcha!'
+
+N:928:Mathilde, the Science Student
+3
+waves.
+wishes you luck.
+skips along happily.
+1
+is surrounded by the purple aura of the RNG. Touch at your peril.
+
+N:861:Dark God, the Mighty Coder of Hell
+6
+says 'Hullo'.
+emits a low 'hmmmm'.
+screams 'I came from the Hells for YOU!'
+laughs out loudly.
+mutters something about bugs.
+asks you about the new version.
+1
+screams 'ToME rules!'.
+
+N:969:Princess
+4
+cries.
+screams 'Help me !!!'.
+whines 'I need your help, great hero...'.
+implores you to help her.
+1
+screams 'I am too young to die!'.
+
+N:970:Merton Proudfoot, the lost hobbit
+1
+whines 'Please help me, noble hero! My leg is broken, and I cannot walk.'
+1
+whines 'No, please don't hurt me!'
+
+N:1039:Improv, the mighty MoLD
+2
+screams 'Your code is ugly!'
+mutters something about bugs.
+1
+screams 'ToME rules!'.
diff --git a/lib/file/news.txt b/lib/file/news.txt
new file mode 100644
index 00000000..25907cb3
--- /dev/null
+++ b/lib/file/news.txt
@@ -0,0 +1,24 @@
+#G #W ~ ~~~ ~~~ ( #G
+#G ======/ ===== #W ~~ ) ~~ ) #G === === ===
+#G / // / __ \ #W )~ #r,.#W~ ( (#G // || \\ //
+#G // | | | | #W _#r,-"####`-^ #W ) #G || || || ||==:
+#G || | | | | #W ,#D###########r`W='#D###W`.#W () #G || || || ||
+#G \\_// \ -- / #W ,#D#######################D###W:#r,=. #G || || || \\===
+#G \_/ ===== #W /.#D###W,".#D#####W,".#D###########r"#W##\ #G #ov2.3.5#G
+#W ,-. _,-= /"._ ,-. #w ," #W `:' `:#D#####W[JW] ,. #G
+#W," `," `=._ `" -#w; #G The #W\#D#####W;"' V \#W __,-. ,-=.
+#W / " `-. #w / #GTroubles of #W `" `-.#W__,-""._," "--," >-=-
+#W ,-"`. #w _' #G Middle Earth#w "._ #W` _/
+ _," #y __ #w "=.".
+ _," #y _,' `-. #w `._,=-._ _,-.
+ _._ ,"._," #y ,'_,'Y`-. `. #w "-." \,-.
+-" `-" #y / / ,' `. \ #w `-
+ #y / / / \ \ #w One Ring to rule them all,
+Maintained by darkgod #y f f f l l#w One Ring to find them.
+ #o darkgod@t-o-m-e.net #y t t t j j
+ #y \ \ \ / / #w One Ring to bring them all
+ #ohttp://www.t-o-m-e.net #y \ \ \._ / /#w and in the Darkness bind them.
+ #y `_`-._J-' /
+ #y `-.___,-'
+ In the Land of Mordor, where the Shadows lie. [J.R.R. Tolkien]
+.
diff --git a/lib/file/news2.txt b/lib/file/news2.txt
new file mode 100644
index 00000000..ddcfbcef
--- /dev/null
+++ b/lib/file/news2.txt
@@ -0,0 +1,24 @@
+#G #W ~ ~~~ ~~~ ( #G
+#G ======/ ===== #W ~~ ) ~~ ) #G === === ===
+#G / // / __ \ #W )~ #r,.#W~ ( (#G // || \\ //
+#G // | | | | #W _#r,-"####`-^ #W ) #G || || || ||==:
+#G || | | | | #W ,#D###########r`W='#D###W`.#W () #G || || || ||
+#G \\_// \ -- / #W ,#D#######################D###W:#r,=. #G || || || \\===
+#G \_/ ===== #W /.#D###W,".#D#####W,".#D###########r"#W##\ #G #ov2.3.5#G
+#W ,-. _,-= /"._ ,-. #w ," #W `:' `:#D#####W[JW] ,. #G
+#W," `," `=._ `" -#w; #G The #W\#D#####W;"' V \#W __,-. ,-=.
+#W / " `-. #w / #G Tales of #W `" `-.#W__,-""._," "--," >-=-
+#W ,-"`. #w _' #G Middle Earth#w "._ #W` _/
+ _," #y __ #w "=.".
+ _," #y _,' `-. #w `._,=-._ _,-.
+ _._ ,"._," #y ,'_,'Y`-. `. #w "-." \,-.
+-" `-" #y / / ,' `. \ #w `-
+ #y / / / \ \ #w One Ring to rule them all,
+Maintained by darkgod #y f f f l l#w One Ring to find them.
+ #o darkgod@t-o-m-e.net #y t t t j j
+ #y \ \ \ / / #w One Ring to bring them all
+ #ohttp://www.t-o-m-e.net #y \ \ \._ / /#w and in the Darkness bind them.
+ #y `_`-._J-' /
+ #y `-.___,-'
+ In the Land of Mordor, where the Shadows lie. [J.R.R. Tolkien]
+.
diff --git a/lib/file/rart_f.txt b/lib/file/rart_f.txt
new file mode 100644
index 00000000..3bebf94d
--- /dev/null
+++ b/lib/file/rart_f.txt
@@ -0,0 +1,86 @@
+85
+The Bag of Tricks
+Kenault's Cantrip Generator
+The Deck of Wild Magic
+Baalzebub's Tormented Box
+Baalzebub's All-seeing Servant
+Boccob's Unfinished Works
+The Gem of Fire
+The Gem of Ice
+The Gem of Venom
+The Gem of Knowledge
+The Gem of Rage
+The Gem of Hate
+The Gem of Wisdom
+The Gem of Ghosts
+The Shrunken Head of Nightmares
+Raal's Voodoo Doll of Revenge
+The Mirror of Alternate Dimensions
+The Ebon Cube of Darkness
+The Diamond Prism of Light
+Gruumsh's Bottle of Death
+The Devil's Pentagram
+Mordekainen's Sneaking Eye
+Kelek's Practical Joke
+Kelek's Wormhole Machine
+Tenser's Alteration Manual
+Raal's Tome of Unconventional Warfare
+The Tome of Collected Weird Magic
+The Pendulum of Orcus
+Raal's Black Candle
+Mordekainen's Pocket Magician
+Benetar's Death Ray Experiment
+Valdarbon's Automatic Alchemist
+Lloth's Ceremonial Dagger
+The Tome of Elven Household Magic
+a Parchment titled ``Demigods and their Uses''
+a Parchment titled ``Magic for the Layman''
+Balrilbon's Bag of Wondrous Tricks
+Bumganir's Bag of Magic Toys
+The Skull of Ancient Wisdom
+Benetar's Mana Battery
+Benetar's Portable Plague
+Gamenlon's Summoning Manual
+Balrilbon's Soulgem
+The Lost Works of Kenault
+The Crystal Ball of Godly Sights
+The Box of Many Wonders
+Baalzebub's Tormented Skullcap
+The Jester's Cap of Insanity
+The Bottomless Bottle
+a Parchment titled ``Planar Travel Made Easy''
+The Wand Construction Kit
+The Clay Tablets of Antiquity
+Raal's Tormented Spirits
+Tenser's Mechanical Magician
+Boccob's Magical Mish-mash
+The Grail of Kenault
+a Parchment titled ``Household Magic''
+a Parchment titled ``Tenser's Last Words''
+The Hand of Vecna
+The Skull of Vecna
+The Eye of Vecna
+The Crystal Ball of The Witch-King of Angmar
+a Parchment titled ``Secrets of the Gnomish Wizards''
+The Medallion of Good Will
+The Immortal Skull of Benetar
+Heward's Excellent Experimental Earmuffs
+Bigby's Big Book of Brutality
+The Cunning Plan of Zog
+a Parchment titled ''Immortality For Dummies''
+Raistlin's Ready Ranger
+Tenser's Torch of Spontaneous Combustion
+Mordenkainen's Mysterious Mind-Masher
+a Parchment titled ''Famous Last Words''
+Jor's Buckler of Missile Attraction
+Jor's Compendium of Strange Behaviour
+Agannazar's Antique Acorn
+Cathal's Corrupting Cymbal
+Pytar's Portable Pandemonium
+The Toenail of Vecna
+Jor's Book of Impossible Occurences
+a Parchment titled ''Finer Points of Munchkinism''
+Agannazar's Altruistic Assassin
+Tenser's Top-Heavy Teaspoon
+Olive's Omnipotent Ostrich
+Cathal's Collapsible Crutch
diff --git a/lib/file/rart_s.txt b/lib/file/rart_s.txt
new file mode 100644
index 00000000..88515a84
--- /dev/null
+++ b/lib/file/rart_s.txt
@@ -0,0 +1,87 @@
+85
+a Bag
+a Shiny, Black Box
+a Deck of Cards
+a Rusty, Slimy Box
+an Eyeball
+a Red Tome
+a Red Gem
+a Blue Gem
+a Green Gem
+a White Gem
+an Orange Gem
+a Black Gem
+a Gray Gem
+a Translucent Gem
+a Shrunken Head
+a Voodoo Doll
+a Mirror
+a Black Cube
+a Prism
+a Black Bottle
+a Pentagram
+a Glass Eyeball
+something weird
+a Portable Vortex
+a Green Tome
+a Black Tome
+a White Tome
+a Pendulum
+a Black Candle
+a Tiny Doll
+a Black Staff
+a Tiny Doll
+a Slimy Dagger
+a Gray Tome
+a Parchment
+a Parchment
+a Bag
+a Bag
+a Human Skull
+a Blue Box
+a Gray Bottle
+an Orange Tome
+a Shiny Gem
+an Ancient Gray Tome
+a Crystal Ball
+a Golden Box
+a Skullcap
+a Jester's Cap
+a Broken Bottle
+an Arcane Parchment
+many Small Wooden Sticks
+some Clay Tablets
+a Smoky Vial
+a Doll
+some Multi-colored Clay
+a Clay Jar
+an Arcane Parchment
+an Arcane Parchment
+a Decayed Hand
+a Decayed Skull
+a Decayed Eye
+a Large Crystal Ball
+an Arcane Parchment
+a Medallion
+a Jewel-Encrusted Skull
+some Earmuffs
+a Battered Book
+a Small Note
+a Parchment
+a Small Figurine
+a Torch
+a Rune
+a Singed Parchment
+a Holed Buckler
+a Red Book
+an Acorn
+a Cymbal
+a Mechanical Music-Box
+a Toenail
+a Torn Book
+a Greasy Parchment
+a Blackened Figurine
+a Heavy Teaspoon
+an Avian Figurine
+a Crutch
+
diff --git a/lib/file/readme! b/lib/file/readme!
new file mode 100644
index 00000000..90b6bbf2
--- /dev/null
+++ b/lib/file/readme!
@@ -0,0 +1,36 @@
+Most files in this directory are use by the get_rnd_line function for various
+purposes in the game. They can be edited and customised by the user with any
+ascii text editor. If you add / remove lines you should modify the index (the
+first line) accordingly. If you set an invalid index or remove the buffer line
+weird messages and other things can appear, and you can crash the game. Please
+see sample.txt before you try modifying the files.
+The a_*.txt and w_*.txt are used when the game generates a random artifact.
+However, instead of picking a name from the appropriate file, the game may
+form a new name from syllables[].
+
+The files in this directory:
+
+A_CURSED TXT Possible names for randomly generated cursed armour artifacts
+A_HIGH TXT Possible names for randomly generated 'powerful' armour artifacts
+A_LOW TXT Possible names for randomly generated 'weak' armour artifacts
+A_MED TXT Possible names for randomly generated 'medium' armour artifacts
+BRAVADO TXT Possible lines for speaking uniques
+CHAINSWD TXT Possible noise for the Chainsword
+CRIME TXT Possible crimes that speaking uniques may have committed
+DEAD TXT The tombstone picture (the death screen)
+DEATH TXT Possible 'last words' when the player dies
+ELVISH TXT Syllables for the names of random artifacts
+ERROR TXT Possible random error messages (instead of "Type ? for help")
+MONDEATH TXT Possible 'last words' for speaking uniques
+MONFEAR TXT Possible lines for scared speaking uniques
+NEWS TXT The game intro screen
+README! You are reading this file right now
+RUMORS TXT Possible rumours (for scrolls or rumour and shopkeepers)
+SAMPLE TXT A sample file for the random line selecting function
+SILLY TXT Silly monster names for hallucination
+SMEAGOL TXT Smeagol lines
+SMEAGOLR TXT Smeagol fleeing
+W_CURSED TXT Possible names for randomly generated cursed weapon artifacts
+W_HIGH TXT Possible names for randomly generated 'powerful' weapon artifacts
+W_LOW TXT Possible names for randomly generated 'weak' weapon artifacts
+W_MED TXT Possible names for randomly generated 'medium' weapon artifacts
diff --git a/lib/file/rumors.txt b/lib/file/rumors.txt
new file mode 100644
index 00000000..1928670b
--- /dev/null
+++ b/lib/file/rumors.txt
@@ -0,0 +1,201 @@
+199
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+They say that you can't trust rumors.
+You have no more Black Potions of Death.
+They say that smart guys hang around at 1600'.
+They say that tough guys hang around at 1500'.
+They say that handsome guys hang around at 1200'.
+They say that a visit to 3250' can be quite an experience.
+They say that a visit to 3250' will only get you killed.
+Throw a Potion of Blindness at a monster and it cannot cast any spells!
+MAKE MONEY FAST! Find a Treasure Pit!
+Not satisfied with the artifacts you find? Then create your own!
+They say that Sauron has forged an all-powerful Ring.
+A good item will not corrode.
+They say that Nibelungs live in dark caves.
+Some weapons that slay dragons can be very deadly against them...
+Finding the Phial of Galadriel at 50' is nothing to be proud of.
+There are Black Market stores hidden deep in the dungeon, with COOL stuff!
+What a pity, you cannot read it!
+You will encounter a dark, tall stranger...
+A Mithril mail will not rust.
+An Adamantite mail will not rust.
+A Rusty Chain Mail cannot rust any further.
+If you are a mage, you will NOT want to find Raal's Tome of Destruction!
+You won't want to find Raal's Tome of Destruction!
+You won't want to find Raal's Tome of Destruction, unless you are a mage.
+A Wand of Death is useless against monsters that are tougher than you.
+A Wand of Death is of little use against foes that are dead already.
+Try taking off your armor before fighting a Gelatinous Cube!
+They say that only one sword can score *CRITICAL* hits.
+This rumor is not true.
+If you can fall like a feather, you need not care about gravity.
+They say that you should rejoice if you find a scroll labeled ""!
+You don't always have to kill everything you meet!
+If you can't beat it, leave it alone!
+An umber hulk can be a confusing sight.
+There *is* a good use for Potions of Detonations, Ruination and Death...
+Watch your step!
+It's a bad idea to throw away a Longsword (4d5).
+It's a bad idea to wield a Longsword (4d5).
+It's useless to bash monsters with bows - but there's one notable exception...
+Actually, Slime Mold Juice is not completely useless.
+Help me! I'm being held captive in a Vault at 2850'!
+Ever tried inscribing your armor {erodeproof}?
+Using a Morningstar in the evening has no effect.
+Why are you wasting time reading fortunes?
+There is a horrible, ghastly fate awaiting you... at 2700'!
+You can get the Longsword 'Ringil' by doing the following:
+You can protect yourself from Great Wyrms of Power by doing the following:
+Its true name is 249.
+You feel like someone's pulling your leg!
+AAAAAAAAAAARRRRRRRRGGGGHHHHHHH!
+Try inscribing the name of the first monster killed by it in the weapon!
+The richer the victim the happier the thief.
+Beware the Jabberwock, my son! The jaws that bite, the claws that catch...
+There's something bad about what you are carrying in your backpack...
+Thieves are more likely to appear if you are carrying a lot of money.
+Brand's sword, Werewindle, probably knows more than just one trick.
+They say that Scrolls of *Curse Weapon* can create powerful cursed artifacts.
+They say that the Chainsword makes monsters mad with its awful noise!
+They say that Ringil shines so brightly that it makes monsters angry.
+Orcs are mortally afraid of weapons that can slay them.
+There is a way to turn a Ring of Speed (-20) into a Ring of Speed (+20).
+There is no way to turn a Ring of Speed (-20) into a Ring of Speed (+20).
+VECNA LIVES!!!
+Cool guys can resist fire.
+They say that death incarnate wears heavy metal boots...
+You feel the Longsword (t) you are carrying in your backpack is special...
+If you start seeing red monsters, you have probably gained infravision.
+They say that the dungeon is deeper than the Abyss.
+When all else fails, read the instructions.
+No poison is immediately deadly.
+I have seen a Ring of Speed (+50) in the Black Market!
+Telepathy works like a two-way door.
+Elvish waybread might negate the effects of poison.
+Once uncursed, Calris will become a deadly weapon.
+If there's a stairway to hell, there must also be a stairway to heaven.
+You feel your luck is turning...
+If you thought Death swords were bad, wait until you meet Killer katanas!
+Overeating can be bad for your health if there are others nearby.
+Cave dwellers are accustomed to darkness and rarely enjoy bright light.
+A creature made of stone can be slain by a spell that turns stone to mud.
+It is often a good idea to throw items that you don't want to eat or drink.
+The faster you run the more food you will burn.
+Invisible monsters will often expose themselves if you drop items around you.
+They say that the key to killing tougher monsters is called "hit&run".
+They say that there is no such thing as free advice.
+Wearing an Amulet of Doom will take you into the Dungeons of Doom.
+You can often wrest one last charge from an empty wand if you try hard enough.
+Wands may recharge themselves if you leave them on the floor long enough.
+There is more than one way to deal with a locked door.
+Afraid of your valuables getting stolen? Carry more junk!
+Afraid of your money getting stolen? Invest it!
+If you hear something smash into splinters, you had better watch out.
+They say that you had better leave Greater hell-beasts alone.
+Selling unidentified potions to shopkeepers might be safer than quaffing them.
+Always look out for trapdoors on "special" feeling levels!
+There is a way to max out your stats with Potions of Charisma & Nexus.
+Unique opponents will recover their health faster than other creatures.
+"So when I die, the first thing I will see in heaven is a score list?"
+You're going into the morgue at midnight?
+How dare you! I will not buy that!
+A Potion of Detonations is also known as nitroglycerin...
+Operation OVERKILL has started now.
+There is a trap on this level!
+A weapon of Undead Slaying has all you need to kill a ghost.
+A weapon of Dragon Slaying may give you resistance to a dragon's breath attack.
+They say that only a Warrior will want to wear the Terror Mask.
+All that is shall come to an end - a dark day dawns for the gods.
+The One Ring is powerful, but will eventually destroy its owner.
+Having troubles with summoners? Door Creation is your friend!
+Stairway Creation may be slower than Teleport Level, but safer...
+Wands of Heal Monster are useful! Hint: ball spell, @....moo(o)ooo
+Guaranteed heal self - scenario: o'@, type c4c4c4c4
+If it can't see you, it can't hurt you!
+If it can't see you, you might still be able to hurt it...
+I love you, you love me, we are a happy family!
+No animal is interested in sex if it is mortally scared.
+The butler did it.
+The butler is innocent.
+There is a plenty of Longswords around 1000'.
+Groo is your worst nightmare.
+Freddy Krueger is your worst nightmare.
+Groo is an idiot! Groo is a dolt! He is a fool! He has no mind!
+There are often stairways in graveyards: bad people are carried to hell...
+Only a god of Thunder could ride a lightning bolt!
+When the day of Ragnarok comes, Surtur will set the world afire...
+Surtur's accursed sword, Twilight, burns with everlasting fire.
+Groo may be as dumb as an amoeba, but he knows a good sword when he sees one.
+Weapons of Flame will light your way.
+Want to invest some money? Contact $crooge McDuck, 1300'.
+Need a loan? Contact $crooge McDuck, 1300'.
+They say that the gods get angry if you pray too much.
+For any remedy there is a misery.
+Poison will kill you slowly.
+Didn't you forget to pay?
+Death is just life's way of telling you you've been fired.
+They say that nobody can defeat his own ghost.
+A greedy genocide can be a fatal mistake, especially if you are low on hits.
+PLEASE ignore the previous rumor.
+There are scrolls that can be read only by mages.
+Some undead opponents will come back if defeated, more powerful than before!
+The answer is 42.
+Your mother wears army boots!
+One level further down somebody is getting killed, right now.
+Meet me at 1900' if you are a man.
+Bashing a creature may sometimes stun it.
+And now, Groo does what Groo does best!
+One Ring to rule them all, One Ring to find them.
+One Ring to bring them all and in the darkness bind them.
+Three Rings for the Elven-kings under the sky...
+Never carry a Potion of Detonations if there is a fire trap nearby!
+Laugh to scorn the power of man, for none of woman born shall harm thee!
+All hail thee that shalt be king hereafter!
+He who laughs at Groo's brains will find there is nothing to laugh about.
+A wise man always speaks too soon...
+Let us not dwell on possible bad fortunes!
+Appearance is only the frosting, not the cake!
+A feeling of Death flows through your body.
+Violence is no solution.
+Boots of Speed (+50) are no myth!
+You will need to Restore the Constitution if the Anarchists strike.
+Drain you of your sanity: Face the Thing That Should Not Be!
+Since by curse it came to me, accursed be this Ring!
+Each shall itch to possess the Ring, but none in it shall find pleasure!
+I know whatever was; whatever is, whatever shall be.
+Barney MUST die!!!
+Pudpadnoy Tooboothokoot is possessed by a demon known only as "It".
+They say that the One Ring has a very special curse.
+They say that alcohol is bad for your health.
+What if you DON'T give a name to the artifact you create..?
+They say that ancient battlefields are often haunted.
+Beware of pits that fill the whole level!
+Liar! I have not the gold!
+They say that the true name of wall monsters is 177.
+Never mind the Phial of Galadriel - the Phial of the Gods kicks its butt!
+A Ring of Speed? Phooey! Try looking for a Ring of *Speed*!
+Thisss cccity isss guilty... the crime isss life... the ssentence isss DEATH!
+If you hear heavy steps - watch out!
+A visit to the Zoo is educational: you meet many strange animals.
+What happens if you wear a Ring of Extra Ring Fingers (-2) {cursed}?
+Oremor nhoj em llik tsum uoy emag siht niw ot.
+If I cancel tomorrow the undead will thank me today.
+Hellfire will burn your soul...
+Call the Void needs a lot of room to cast...
+Why doesn't Detect Monsters show invisible monsters? 'Cos you can't see 'em!
+I'll tell you the truth, son: your soul's gonna burn in a lake of fire!
+There is a rare spellbook called [M$ PowerFools] {cursed}
+*** LOW HITPOINT WARNING! ***
+You cruelly stab the helpless, sleeping Software bug!
+Slab: Jus' say AarrghaarrghpleeassennononoUGH.
+You feel the Windows (95) on your hard disk is broken...
+Spirit, hatch that painted spirit of the lamb sparrow.
+Gone insane from the pain that sure they know: for who the flange sound?
+With time the child dissipates within, this blinking boy made badly.
+Not to be never, never not to see, so as to dub the thee unforgiven.
+Soon in order to fill up our lungs: the warmth of twenty dead women.
+The eternal death of eons of the foreigner of the lie can die not absolutely.
+Drain you of your sanity: in front do the thing that does not have to be.
+The opinion you had were salt expresses.
+They say that the dark mists of Morgoth can both bestow and remove the curse.
diff --git a/lib/file/sample.txt b/lib/file/sample.txt
new file mode 100644
index 00000000..5ff826f7
--- /dev/null
+++ b/lib/file/sample.txt
@@ -0,0 +1,5 @@
+3
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+line # 1
+line # 2
+line # 3
diff --git a/lib/file/sfail.txt b/lib/file/sfail.txt
new file mode 100644
index 00000000..ca4d9cb5
--- /dev/null
+++ b/lib/file/sfail.txt
@@ -0,0 +1,34 @@
+32
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+rose petals
+dirty straw
+rusty metal cutlery
+small, furry animals
+assorted toy jewelry
+visions of merry, dancing gnomes
+old and dusty accounting records
+moldy crusts of bread
+grass
+wet mud
+smelly bilge water
+clean linens
+scrap metal
+rotting wood
+leaves
+small insects
+rainwater
+flowers
+perfumed water
+overcooked sausage
+twigs
+pine needles
+hard leather
+small bones
+feathers
+crumbling manuscripts
+fresh air
+stale, smelly air
+dust
+clay
+earth
+wood shavings
diff --git a/lib/file/silly.txt b/lib/file/silly.txt
new file mode 100644
index 00000000..9d46c8b8
--- /dev/null
+++ b/lib/file/silly.txt
@@ -0,0 +1,301 @@
+299
+******************BUFFER LINE -- DO NOT REMOVE!*****************************
+Borg
+Dalek
+Destructor
+Predator
+Wizard of Yendor
+Smurf
+Cosmic Horror
+Ultimate Unspeakable Lovecraftian Nightmare
+Space Invader
+Transformer
+Master of the Universe
+He-Man
+Pizza Worm
+Bogeyman
+Care Bear
+My Little Pony
+IRA Terrorist
+Nazi
+Klingon
+Cardassian
+Snark
+Luggage
+Killer penguin
+Were-penguin
+Giant were-penguin
+Peeping-Tom
+Jester
+Battlemech
+Invid
+Amazon
+Teenage Mutant Ninja Turtle
+Stork
+Hippo
+Roadrunner
+Fooglebird
+Ghoti
+Whale
+Apocalyptic Beast
+Anti-Christ
+Dark Avenger
+Evil Computer
+Finnish Sprayer
+Natas
+Poodle
+Fire Hydrant
+Multi-hued elephant
+Martian
+Purple alligator
+Space ship
+Miniature space fleet
+6-feet tall elephant
+Insurance salesman
+Benji
+Magnet
+Squid
+Typewriter
+Manitou
+Miniature Shetland pony
+Munchkin
+Mad Scientist
+Keystone Kop
+Magnificent big-game hunter
+Wicked witch
+B-1 Bomber
+Superman
+Batman
+Boy Wonder
+Incredible Hulk
+Amazing Spider-Man
+Orphan
+Fifth columnist
+Secret agent
+Spy
+Dog catcher
+Vacuum cleaner
+Lawnmower Man
+Bloodletter of Khorne
+Buzzard
+Oyster
+Wombat
+Midget elephant
+Chameleon
+Dungeon Master
+Dungeon Keeper
+Beyonder
+Robocop
+Robocod
+Paradroid
+Dominatrix
+Paranoid
+Wagtail
+Great tit
+Pope
+Tribble
+Jedi knight
+Dark Jedi
+Master of Teras Kasi
+Vulcan
+Rancor
+Sarlacc
+Warbot
+Tailgunner
+Skinhead
+Paul Bunyan Machine
+Bungee
+Sumo wrestler
+Gargantuan sumo wrestler
+Karateka
+President
+King
+Lobo
+Trashman
+Teacher
+Cheshire Cat
+Mad Hatter
+March Hare
+Voodoo doll
+Rag doll
+Scarecrow
+Porcupine
+Stone idol
+Hacker
+Samurai
+Samurai Cat
+Phantom of the Opera
+X-man
+Wumpus
+Walrus
+Silver Surfer
+Chimpanzee
+Omnipotent being
+Reaperbot
+G. I. Joe
+Cobra Commander
+Dreadnok
+Autobot
+Battlemage
+Saboteur
+Master of Sinanju
+Cyborg
+Lemming
+Green Goblin
+Galactus
+Gooey Kablooie
+Prowler
+Iron Fist
+Stuka
+Mahdi
+Xeroc
+Catwoman
+Stupendous Man
+Lost boy
+Hunter-killer
+Mad butcher
+Vore
+Rotfish
+Heresiarch
+False prophet
+Emperor
+Tumtum
+Androgyne
+Thieving magpie
+Boast of England
+Red Rose Knight
+Unholy cow
+Q
+Red Baron
+Giddy goon
+Vogon
+Lizard King
+Hutt
+Puppet master
+Wookie
+Giant sandworm
+Muad' Dib
+Ent
+Huorn
+Werepotato
+Mindless one
+Alien queen
+Alligator man
+Ancient ape
+Ancient astronaut
+Astro-zombie
+Beast from 20000 fathoms
+Beast with a million eyes
+Black goat of the woods with a thousand young
+Behemoth
+Leviathan
+Big Bug
+Blob
+Khyberdemon
+Body snatcher
+Brain from Planet Ardus
+Scatologist
+Brain of Venus
+Brain that would not die
+Breath blaster
+Chickenstein's monster
+Creature from the Black Lagoon
+Loch Ness monster
+Creeping death
+Creeping unknown
+Fifty-foot woman
+Flumsh
+4D-man
+Bride of Frankenstein
+Galaxy being
+Giant baby
+Giant chicken
+Krazy Kat
+Giant celery stalk
+Gorilla witch
+Great god Porno
+H-dial monster
+Heap
+Love lotus
+Herman munster
+Highest intelligence
+H-man
+Hound of the Baskervilles
+Wizball
+ID monster
+Mancubus
+Arch-vile
+Pain elemental
+I-ball
+Killdozer
+Killer tomato
+Lurking fear
+Madball
+M.U.L.E.
+Magnetic monster
+Mixed-up zombie
+Hunchback of Notre Dame
+Monster that challenged the World
+Monster from green hell
+Morlock
+Queen Kong
+Robot Kong
+Mecha-Godzilla
+Ghidhrah
+Saucerman
+Ethereal
+Space Brain
+Floating brain of Hitler
+Stay Puft Marshmallow Man
+Supercow
+Swamp Thing
+Thing
+Teenage Frankenstein
+Teenage Werewolf
+Terror from the year 5000
+Triffid
+Tripod
+Xenophobic man
+Undying monster
+Unknown terror
+Unnamable
+Womaneater
+E.T.
+Toxic Avenger
+Onslaught
+Pacman
+Paradroid
+Bantha
+Ass-headed fish
+Wizard of Oz
+Juggernaut
+Cheshire Cat
+Tauntaun
+Heretic
+Other
+Uncanny
+Libido
+Super-ego
+Boy Blunder
+Big nothing
+Parademon
+Zelda
+Super Mario
+Great Giana Sister
+Magnetic man
+Pink elephant
+Elephant man
+Great Unknown
+Lurking unknown
+Cenobite
+Cheerleader
+Model T-1000 Terminator
+Whippoorwill
+Moon Maniac
+Killer Clown
+Stocking Strangler
+Torture Doctor
+Beast of the Black Forest
+Demon of the Belfry
+Sex Beast
+Sunday Morning Slasher
diff --git a/lib/file/smeagol.txt b/lib/file/smeagol.txt
new file mode 100644
index 00000000..53b1955a
--- /dev/null
+++ b/lib/file/smeagol.txt
@@ -0,0 +1,29 @@
+27
+******** BUFFER LINE *******************
+sniggers.
+grovels.
+picks his nose.
+pines for his precious.
+searches his pockets.
+eats some slimy creatures.
+mutters: 'My precious, wheres my precious?'
+shouts: 'No Master Hobbitsisisisis!'
+cries: 'The ring was ours for agesisisisis!'
+says: 'Smeagol sneeking! ME! Shneekingsisis!'
+screams: 'Nasty Hobbitsisisisis...'
+says: 'Come on, quickly, follow Smeagol'
+says: 'Every way is guarded, silly foolsis!'
+says: 'Nasty Bagginis, stole my precious.'
+says: 'She will kill them oh yes she will precious.'
+whines: 'Weees wants some fishises.'
+says: 'Whats has its got in its pocketses, hmmm?'
+whimpers: 'We've lost itses we have.'
+says: 'He'll eastus all the world if he getsitses it.'
+says: 'No food, no rest; Smeagol a SNEAK!'
+says: 'What a dainty little dish you will be for her.'
+says: 'Hobbitses always SOOOO Polite.'
+screams: 'Stop, Thief!'
+says: 'Makeses him drop his weapon precious.'
+grovels: 'He has only four fingers on the black hand.'
+growls: 'Not nice Hobbits, not sensible!'
+says: 'If you findesis it, give it us back.'
diff --git a/lib/file/smeagolr.txt b/lib/file/smeagolr.txt
new file mode 100644
index 00000000..cc13c96f
--- /dev/null
+++ b/lib/file/smeagolr.txt
@@ -0,0 +1,5 @@
+3
+******** BUFFER LINE **************
+says: 'Don't hurt us, mastersisis.'
+says: 'Poor Smeagol, poor Smeagol.'
+says: 'No AH! Don't hurtsis us.'
diff --git a/lib/file/speakpet.txt b/lib/file/speakpet.txt
new file mode 100644
index 00000000..d369fe8a
--- /dev/null
+++ b/lib/file/speakpet.txt
@@ -0,0 +1,53 @@
+51
+******** BUFFER LINE *********************************** DO NOT REMOVE *******
+says: 'Oi, loan me 2 quid for a drink or I'll knock your head off!'
+says: 'Nice boots, mate.'
+says: 'Wow, isn't it dark down here?'
+says: 'I think I saw something move..'
+says: 'I really think I saw something move this time..'
+says: 'Phew, what's that smell?'
+says: 'There's slime all over the walls..'
+says: 'Isn't it dark down here?'
+says: 'Dungeon explorers should be *friends*, right?'
+says: 'I luv you, you luv me..'
+says: 'Are we there yet?'
+says: 'I'm hungry, look for a McMorgoth's..'
+says: 'Is there a 'Monster WC' vault on this level?'
+says: 'Not sure of max line length, but...'
+says: 'Excuse me, but do you know the way to vanilla?'
+says: 'I heard that the orcs just voted in a union'
+says: 'You gonna finish that?'
+says: 'You're gonna eat *that*?'
+says: 'Oops. I've got slime mold on my boot/claw/wisp of vapor.'
+says: 'It's a fantastic space. Knock in a skylight to open it up...'
+says: 'I love troll. Eat once, stay full for a week.'
+says: 'Your sword sure is shiny.'
+says: 'Hey! WATCH IT! You almost hit me.'
+says: 'So, you gonna do some abracadabra?'
+says: 'Keep that demon blade away from me.'
+says: 'Do the one where the ceiling collapses!'
+says: 'That oak tree ain't bad looking. Think it has a sister?'
+says: 'The One Ring. That sure is a silly name...'
+says: 'Groo and Stormbringer entered a bar...'
+says: 'If Lokkak asks, I'm not here.'
+says: 'buurrrrppp'
+says: 'Kill, kill, kill. Let's play chess.'
+says: 'Swordmanship: 8.4, Style: 9.0'
+says: 'When *I* was young, it was up stairs BOTH WAYS.'
+says: 'Lohengrin, schmohengrin.'
+says: 'Very fancy. Bet you can't do it again.'
+says: '10AU says I can behead that snaga!'
+says: 'I bet the chicks dig those boots.'
+says: 'Have you seen those Teletubbie uniques?'
+says: 'Were you looking for these?'
+says: 'Let's blitz 'em!'
+says: 'You da bomb!'
+says: 'Medusa: now, SHE is ugly.'
+says: 'Do you *really* like me?'
+says: 'ToME just switched to an HMO.'
+says: 'Do you like my outfit?'
+says: 'So, you're an auto-roller baby...'
+says: 'Where'd you put the snaga call?'
+says: 'I've split my reed. Bummer.'
+says: 'A wand of rockets. Yeah, that's the ticket.'
+says: 'It's Zymurgist's Time!'
diff --git a/lib/file/timefun.txt b/lib/file/timefun.txt
new file mode 100644
index 00000000..ca3f642f
--- /dev/null
+++ b/lib/file/timefun.txt
@@ -0,0 +1,92 @@
+S:0000
+E:0059
+D:It's the witching hour!
+
+S:0100
+E:0259
+D:There may be Vampires around!
+
+S:0200
+E:0459
+D:Only ToME players are up now!
+
+S:0100
+E:0459
+D:It's really *very* late!
+
+S:0500
+E:0558
+D:Aren't you sleepy yet?
+
+S:0559
+E:0559
+D:It doesn't matter what you found!
+
+S:0600
+E:0759
+D:The sun is up. Time to have fun!
+
+S:0601
+E:0800
+D:Are you having fun yet?
+
+S:0800
+E:0905
+D:@$#$@$!%@$#%$@&$^#%@$!^#&#*
+
+S:0800
+E:1059
+D:You feel there is something special about this level.
+
+S:1100
+E:1159
+D:You see a maze of twisty passages, all alike.
+
+S:1155
+E:1200
+D:Are you having fun yet?
+
+S:1159
+E:1200
+D:This fortune is broken!
+
+S:1200
+E:1205
+D:This fortune is still broken!
+
+S:1200
+E:1359
+D:Uh oh, now you've done it!
+
+S:1400
+E:1729
+D:What did you do with the Phial?
+
+S:1730
+E:1744
+D:You need your chocolate vitamin!
+
+S:1745
+E:1759
+D:Tornado Warning!
+
+S:1759
+E:1800
+D:Night is coming. Danger! Danger!
+
+S:1700
+E:1859
+D:Take a Vampire out for dinner!
+
+S:2100
+E:2159
+D:Warp Factor Nine. Now!
+
+S:2200
+E:2359
+D:PARTY!
+
+S:2359
+E:2359
+D:It's almost the witching hour!
+
diff --git a/lib/file/timenorm.txt b/lib/file/timenorm.txt
new file mode 100644
index 00000000..611da496
--- /dev/null
+++ b/lib/file/timenorm.txt
@@ -0,0 +1,83 @@
+S:0000
+E:0000
+D:It is midnight.
+
+S:0001
+E:0200
+D:It is deep night.
+
+S:0300
+E:0400
+D:It is early morning, but still dark.
+
+S:0500
+E:0544
+D:It will be day soon.
+
+S:0545
+E:0559
+D:The sun is rising.
+
+S:0600
+E:0614
+D:The sun has risen.
+
+S:0615
+E:0659
+D:Morning has broken.
+
+S:0700
+E:0859
+D:It is early morning.
+
+S:0900
+E:0959
+D:It is midmorning.
+
+S:1000
+E:1154
+D:It is late morning.
+
+S:1155
+E:1159
+D:It is almost noon.
+
+S:1200
+E:1200
+D:It is noon.
+
+S:1201
+E:1459
+D:It is early afternoon.
+
+S:1500
+E:1559
+D:It is midafternoon.
+
+S:1600
+E:1659
+D:It is late afternoon.
+
+S:1700
+E:1729
+D:It will be night soon.
+
+S:1730
+E:1759
+D:The sun is setting.
+
+S:1800
+E:1859
+D:The night has begun.
+
+S:1900
+E:2059
+D:It is early night.
+
+S:2100
+E:2358
+D:It is late night.
+
+S:2359
+E:2358
+D:It is almost midnight.
diff --git a/lib/help/TANG.txt b/lib/help/TANG.txt
new file mode 100644
index 00000000..ffbb5701
--- /dev/null
+++ b/lib/help/TANG.txt
@@ -0,0 +1,134 @@
+|||||oy
+~~~~~01|Help|Newbie help
+#####R The ToME Newbie Guide
+by Pat Gunn and others
+Based loosely off of Chris Weisieger's Angband Newbie Guide.
+
+ Welcome to ToME, a popular descendant of Moria/Angband.
+ToME has many unique features that set it apart from other
+Angband/Moria descendants, with a nice mix of races/classes available.
+This guide will walk you, a player of ToME, through your first
+game (or two), introducing you to basic features that will help your
+character survive.
+
+ After you start the game for the first time, you will be
+prompted to create a new character. For this guide, we will start
+out with simple, easy to play characters. Go through the prompts,
+and select one of the following class/race combinations that will
+make for a simple first character:
+
+ Wood Elf (Classical) Archer
+ Half-Troll (Zombie) Unbeliever
+ Half-Ogre (Barbarian) Warrior
+
+After class/race selection, you will roll your statistics. Roll a few times
+until you get decent strength, constitution, and dexterity scores (the higher
+the better). After naming your character, you will appear in the
+town.
+
+ The town is a (relatively) safe place for you to buy/sell equipment,
+start quests, drop off items for storage, and various other things. Each store
+is represented by a symbol (either a number or a '+') on the side of a
+*****bldg.txt*0[building]. To enter a store, move over that symbol. You can also 'l'ook
+around to see the identity of stores and other inhabitants of the town. At
+this level, be wary of merchants and mercenaries -- they can probably kill you
+with little difficulty.
+
+ You will want to 'w'ield the weapons/armour you have started with
+(if you chose the archer, wield the bow, and then wield the arrows). You
+can check to see what you're wearing/wielding at any time by pressing
+'e'. Ideally, throughout the game you'll always have some kind of missile
+weapon and a decent melee weapon. Initially, purchasing a short bow and
+some plain arrows might be wise (archers start with a bow and some arrows,
+but you'll probably want to buy more ammo). Choice of a melee weapon is
+much more complex, but for now, unless you start with a good melee weapon
+(unbelievers do), you might want to consider buying a whip from the
+weapon store '3' (or the temple '4'). If available, purchase a lantern
+and 2 or 3 flasks of oil from the general store '1'. If you have some
+money left, buy some of the cheaper armour pieces from the armoury '2',
+such as boots, gloves, cap, and the like. You should now be ready to
+do some adventuring.
+
+ Just west of Bree are some steps into the first dungeon. Move on top
+of these stairs and hit '>' to go down. You will notice that when you arrive
+in the dungeon, you will be on top of some stairs going back up, and in the
+lower right, you will see how deep in the dungeon you are. When you need to
+return to town, head upstairs from the top level of the dungeon (which you are
+in now). Other stairs down will take you deeper in the dungeon. For now, stay
+on the first level of the dungeon, and fight some monsters to gain some
+experience. Be careful only to fight one monster at a time -- avoid fighting
+in open rooms when monsters can gang up on you. Also, avoid floating eyes
+'e', and 'l'ook at monsters before getting involved in combat with them.
+The 'C' button will bring up a screen telling you how many experience points
+you need to go to next level, and 'l'ooking at monsters will tell you how
+many experience points they are worth.
+
+ Once you go up a level, you'll want to invest some skill points so
+that your character improves. See the *****skills.txt*0[skills] help file for details.
+
+ Grab treasure, and when you are carrying close to as much as you can
+carry, head back to Bree and sell your loot. Buy phase door scrolls, teleport
+scrolls, and potions that will cure your wounds. Use any remaining money to
+buy identify scrolls. After a few trips, and reaching experience level 3, try
+going deeper in the dungeon before coming up.
+
+ Before you start going past the 8th or 9th level down, you will
+want some means of detecting traps, as traps begin to be a problem around
+that depth. Eventually, you'll want a rod of trap location (unless you are
+an unbeliever), but scrolls or staves will do until you find a rod and a
+rod tip of the right kind. These items, when used, will display all traps
+in a radius around you. This means that you'll want to use them again
+every time you run to the edge of that radius and into an area where you
+haven't yet detected traps.
+
+ Some kinds of items grant useful resistances or powers. You can
+see your current resistances and other stats by hitting 'C' and scrolling
+through the screens that come up. If you come across a Thunderlord coat
+early in the game, they make a good choice, as they grant resistance to
+fire and cold. Resistances reduce the damage attacks of certain kinds do,
+and often reduce the effectiveness of side-effects they have.
+
+ As you progress deeper in the dungeon, you will want to start using
+scrolls of recall to move to and from the dungeon. These scrolls, when
+read, schedule your return either to the surface or to the dungeon level
+you were last exploring. They do, however, take several turns to take effect,
+so reading them in an emergency will do little good.
+
+ Eventually, once you are around level 13 or 14, you will be ready
+to make trips to some of the other towns. The easiest town to get to is
+northeast of Bree; the others are more difficult to find and reach. When
+planning a trip, be sure to carry lots of food and/or scrolls of
+satisfy hunger. Multiple light sources may also be wise, and a bow is
+almost essential. To make long trips easier, ToME has a map mode
+specifically designed for travel. To use it, hit '<' in the wilderness.
+This will change the scale of the map, and make time go by at a much
+faster rate per square of movement (each square being many normal grid
+squares). Be sure to de-equip any exhaustible light sources before
+the trip, and never allow yourself to get past hungry while in this mode --
+drop down to the normal mode (with '>') if you get a message that you are
+hungry. Eventually, you will also make surface trips to find new dungeons
+to visit.
+
+#####REquipment notation:
+#####GA Weapon (3d4) (+3,+7)
+ This weapon, when you attack an enemy, does base damage calculated
+ by rolling a 4-sided die 3 times (adding the results up). It gets a
+ +3 to hit, and +7 to damage. If the weapon is light enough and
+ you are strong/dextrous enough, you can attack with it multiple times,
+ getting the base and extra damage once for each attack.
+
+#####GA Shield [5,+4]
+ This is a piece of armour, with a base defence of 5 and a magical
+ bonus of +4. If you wear it, your armour rating will increase by 9.
+
+#####GA Weapon (Defender) (1d6) (+12,+5) [+6] (+2 to stealth)
+ This is a special type of weapon, with special powers. The powers
+ depend on the type (there are more types than just Defender),
+ and some types can grant a variety of different powers. To get the
+ full info on this kind of weapon, you can either 'x'amine it if it's
+ being sold in a store, use certain kinds of magic (*Id*), or use
+ the (very expensive) services of certain stores.
+
+Many armours also have special powers.
+Some very powerful items are unique, and are called artifacts. They are
+normally indestructible, and will prove very useful in your quest.
diff --git a/lib/help/ability.txt b/lib/help/ability.txt
new file mode 100644
index 00000000..175d6745
--- /dev/null
+++ b/lib/help/ability.txt
@@ -0,0 +1,115 @@
+|||||oy
+~~~~~01|Abilities
+#####R=== ToME Abilities ===
+As well as spending your skill points on *****skills.txt*0[skills], you can also choose
+to spend them on abilities.
+Abilities are bought once, and then have a permanent effect. You cannot
+continue adding skill points into them, (which you can with *****skills.txt*0[skills]) as there
+would be no way that these abilities can improve. They are a "one-off
+purchase".
+As a consequence of this, they are often quite powerful abilities and can
+cost quite a few skill points to buy.
+Most abilities have a prerequisite skill or stat level which you must reach
+before being able to buy.
+
+For instance, you can invest in the *****ability.txt*03[Tree walking] ability. This will allow
+you to pass through dense undergrowth. In order to purchase this skill you must
+first have your *****skills.txt*34[Nature] skill at 20 or greater, and then it will cost you 7
+skill points to buy. This means you have to "save up" enough skill points in
+order to be able to afford this ability.
+
+You can access the Ability screen by pressing 'N' (in the original keyset, or
+'\N' in the roguelike keyset). Scroll up and down the abilities and then
+navigate right to buy selected ability.
+
+Adapt your character with skills and abilities in order to make it unique,
+playable, and maybe even powerful enough to win the game!
+
+Here follows a list of all the available abilities:
+
+*****ability.txt*02[Spread blows] *****ability.txt*03[Tree walking]
+*****ability.txt*04[Perfect casting] *****ability.txt*05[Extra Max Blow(1)]
+*****ability.txt*06[Extra Max Blow(2)] *****ability.txt*07[Ammo creation]
+*****ability.txt*08[Touch of death] *****ability.txt*09[Artifact Creation]
+*****ability.txt*10[Far reaching attack] *****ability.txt*11[Trapping]
+*****ability.txt*12[Undead Form]
+
+~~~~~02|Abilities|Spread blows
+[[[[[BSpread blows]
+If a monster dies to your attack but you still have blows left
+you won't lose the full turn, allowing you to attack some other
+monster in the same turn.
+#####UPrereq: Weaponmastery skill@30, Dex@17
+#####rCost: 5
+Warriors (of all types) gain this ability for free at character level 25.
+~~~~~03|Abilities|Tree walking
+[[[[[BTree walking]
+Allows you to walk in dense forest.
+#####UPrereq: Nature skill@20
+#####rCost: 7
+Ents and Wood Elves are born with this ability.
+~~~~~04|Abilities|Perfect casting
+[[[[[BPerfect casting]
+Allows you to reach 0% failure rate on spells.
+#####UPrereq: Magic skill@35
+#####rCost: 6
+Priests and Mages (of all types) are born with this ability.
+~~~~~05|Abilities|Extra Max Blow 1
+[[[[[BExtra Max Blow(1)]
+Increases your max possible blows number by 1.
+#####UPrereq: Combat skill@10
+#####rCost: 7
+Warriors (of all types) and Paladins are born with this ability.
+Rogues (of all types) gain this ability for free at character level 10.
+~~~~~06|Abilities|Extra Max Blow 2
+[[[[[BExtra Max Blow(2)]
+Increases your max possible blows number by 1 (Cumulative with
+Extra Max Blow(1)).
+#####UPrereq: Combat skill@20, Extra Max Blow(1)
+#####rCost: 7
+Warriors (of all types) are born with this ability.
+~~~~~07|Abilities|Ammo creation
+[[[[[BAmmo creation]
+Allows you to create shots, arrows and bolts from various materials.
+You can always make shots.
+At Archery level 10 you can start making arrows.
+At Archery level 20 you can start making bolts.
+#####UPrereq: Archery skill@10
+#####rCost: 8
+Archers (of all types) gain this ability for free at character level 2.
+~~~~~08|Abilities|Touch of death
+[[[[[BTouch of death]
+Your melee blows can insta-kill, but you only receive 1/3 of the experience
+for that kill.
+You must activate this from your 'm' menu.
+#####UPrereq: Necromancy skill@50, Combat skill@40, DEX@30, STR@30
+#####rCost: 15
+~~~~~09|Abilities|Artifact Creation
+[[[[[BArtifact Creation]
+In combination with a high alchemy skill this ability will let you
+design your very own artifacts.
+Prereq: Alchemy@40, INT@35, WIS@35
+#####rCost: 70
+~~~~~10|Abilities|Far reaching attack
+[[[[[BFar reaching attack]
+You can attack an enemy one square far using a long polearm.
+At high levels of Polearm-mastery skill, you can even hit two enemies at once.
+#####UPrereq: Combat@15, Polearm-mastery@15
+#####rCost: 10
+~~~~~11|Abilities|Trapping
+[[[[[BTrapping]
+Enables you to set traps which harm monsters.
+#####UPrereq: Disarming@15
+#####rCost: 10
+Rogues are born with this ability.
+~~~~~12|Abilities|Undead Form
+[[[[[BUndead Form]
+With this ability your character receives a small amount of Death Points (DP)
+when they 'die'. Every normal (+0 speed) turn, one DP
+is lost; you can regain it like you would do with Hit Points.
+If you manage to kill enough monsters before your DP goes below 0, your
+character is brought back to life.
+#####UPrereq: Necromancy@30, INT@25
+#####rCost: 15
+Necromancers gain this ability for free at character level 25.
+
diff --git a/lib/help/advanced.hlp b/lib/help/advanced.hlp
new file mode 100644
index 00000000..3f6fe4bd
--- /dev/null
+++ b/lib/help/advanced.hlp
@@ -0,0 +1,15 @@
+|||||oy
+#####RWelcome to the ToME Advanced Help System.
+#####R=============================================
+
+Please choose one of the following help files:
+
+ *****/aoption.txt*0[(a) Options]
+ *****/bmacrofaq.txt*0[(b) Macros]
+ *****/cautomat.txt*0[(c) Automatizer help]
+ (d) Lua scripting help - coming soon
+ *****/edebug.txt*0[(e) Debug commands]
+ *****/fversion.txt*0[(f) Version information] A history of ToME's roots
+
+ *****/zhelp.hlp*0[(z) Main Help menu]
+
diff --git a/lib/help/attack.txt b/lib/help/attack.txt
new file mode 100644
index 00000000..68fce965
--- /dev/null
+++ b/lib/help/attack.txt
@@ -0,0 +1,148 @@
+|||||oy
+~~~~~01|Attacking Monsters
+~~~~~02|Monsters|Attacking
+#####R=== Attacking and Being Attacked ===
+
+{{{{{<p>}Attacking is simple in ToME; attempting to move over a creature
+attacks it. It is also possible to attack from a distance by firing a missile
+or by magical means (wand, rod, spell, etc). Creatures attack in the same way.
+This means that if you do not wish to melee with a creature, it is wise to keep
+distant from it. This strategy is not perfect -- some monsters, such as
+dragons, have a way to attack from a distance.
+
+Some creatures, such as Ghosts, have the ability to pass through walls.
+To attack creatures (that you can see) who are currently in a wall,
+attempt to move over it (even if you cannot pass through walls, the
+attack will still happen). Monsters will take less damage from attacks
+while they are in walls. Also, if you cannot see the monster (e.g. if you
+are blind, or it is invisible and you do not have see invisible), this
+will not work: you'll have to try to tunnel. Most spells and magic devices
+cannot target monsters in walls. In situations like this, it is usually wise to
+lure the monster out of the wall before attacking it.
+
+Melee attacks are handled as such:
+#####G To-hit:
+ Your strength grants a bonus or penalty to-hit
+ Your class might grant a bonus or penalty to-hit
+ Your skill with specific kinds of weapons gives a bonus
+ to-hit (e.g.: Swordmastery gives a to-hit bonus
+ when using swords)
+ Enchantments on your weapon grant a bonus or penalty to-hit
+ Certain rings (accuracy, slaying) may also grants a bonus
+ or penalty to-hit
+ Your Tactic setting may give bonuses o penalties to-hit
+ (to change it, press 'C' and then 't' or 'T')
+ Other temporary effects (berserk, etc) might affect your
+ chance to hit
+ The armor rating of the monster you're attacking makes a
+ big difference
+
+#####G Blows:
+ Your strength and dexterity affect how many blows you get
+ Your class and level might affect how many blows you get
+ The weight of the weapon very likely will affect how many
+ blows you get
+ Certain skills (e.g. Swordmastery) may affect how many blows
+ you get with particular weapons
+ Enchantments on your weapon might also affect how many
+ blows you get (this is rare)
+ Certain very rare rings (of attacks) may also affect how
+ many blows you get
+
+#####G Damage:
+ The base damage of your weapon is rolled
+ Strength grants a bonus or penalty
+ Your class might grant a bonus or penalty
+ Combat and Weaponmastery skills increase your melee damage
+ Ranged masteries increase the damage multiplier of slings,
+ bows, crossbows or boomerangs(see below)
+ Enchantments on your weapon might also grant a bonus or
+ penalty
+ Your Tactic setting may give bonuses o penalties to damage
+ (to change it, press 'C' and then 't'or'T')
+ Temporary effects also might grant a bonus or penalty
+
+So, each blow you are entitled to is checked for a hit. If this is the case,
+the damage is then applied to the monster. Note that unless you have some
+barehanded combat training or are possessing a monster, melee without a weapon
+will result in a single blow that does base damage of 1d1. This might, however,
+be useful in attacking certain rare monsters that destroy weapons.
+
+Combat with a bow/sling is similar, except ammo is used (which will eventually
+run out, requiring replacement). Bows don't have a base damage rating (ammo
+does), instead having a damage multiplier. Bows can, however, be enchanted,
+and enchantment on bows and arrows is cumulative (meaning that well-enchanted
+bows and arrows can be one of the more effective weapons in the game. They
+do, however, tend to be very expensive, as non-artifact arrows frequently break
+after being fired).
+Using ammo without the appropriate bow generally has poor results.
+~~~~~03|Armor
+#####R=== Armor ===
+
+As the armor class of a monster greatly affects how hard it is for it
+to be hit, your armor class affects how hard it is for it to hit you.
+A high armor rating will make it much easier to survive deep in the dungeon.
+For a warrior style class (Unbelievers, Fighters, Archers, etc), it is
+generally wise to wear as much and as powerful armor as possible (subject
+to weight limitations, of course). Spellcasting classes, however, have
+limits on how much armor they can wear before it disrupts their motion
+and makes it hard for them to cast spells properly. For many of these classes,
+gloves are especially bad for spellcasting. Monks and Rogues skilled
+at dodging will often find heavy armor cumbersome, too.
+Armor has a base rating and an enchantment rating. The base rating is constant
+for the type of armor (e.g. paper armor always has a base rating of 4), and
+the enchantment depends on the item. There are also ways to further enchant
+armor you have. Certain very powerful enchantments grant resistances to
+specific forms of magical attacks.
+~~~~~04|Attacking Monsters|Resistances
+~~~~~05|Armor|Resistances
+#####R=== Resistances and typed attacks===
+Many kinds of monsters, traps, and other effects do damage that has a type.
+Types can have side effects in addition to the raw damage they deal. Certain
+enchanted items can grant resistances, reducing the raw damage and possibly
+reducing or eliminating the side effects. Some monsters also have resistances,
+so watching the messages when attacking a monster can often reveal that a
+particular attack is ineffective.
+~~~~~06|Attacking Monsters|Damage Effect type (Fire/cold/nether etc)
+~~~~~09|Damage Effects
+#####GLow attacks
+ Fire - Destroys weapons, armor, scrolls, and staves. Reduces strength.
+ Cold - Shatters potions.
+ Elec - Reduces dexterity, destroys rings and wands.
+ Acid - Reduces bonuses on equipped armor, reduces charisma.
+
+#####GMiddle attacks
+ Poison - Player becomes poisoned
+ Light - Blinds player, perma-lights area
+ Dark - Blinds player, darkens area
+ Confusion - Confuses player
+
+#####GHigh attacks
+ Nether - Drains experience
+ Nexus - Scrambles statistics, teleports player randomly
+ Disenchantment - Reduces bonuses on equipped items
+ Chaos - Confuses, drains life, causes hallucination, and more
+ Sound - Shatters potions
+ Shards - Cuts player
+
+#####GUnresistable attacks
+ Water - Stuns player
+ Ice - Stuns player, shatters potions
+ Plasma - Stuns player, otherwise same as fire attacks
+ Force - Pushes player a few squares back
+ Inertia - Slows player
+ Gravity - Slows and teleports player a few squares
+ Disintegration - Destroys items on ground, destroys walls
+ Mana - Destroys items on ground
+~~~~~07|Monsters|Monster Memory
+#####R=== Monster Memory ===
+
+The thousands of different creatures in ToME have many different
+characteristics, including spells, resistances, health, attacks, and speed.
+The information you have learned about each monster from your encounters
+with them is recorded in the monster memory (accessed with '/' or by 'l'ooking
+at a monster). It is possible to eventually learn all the characteristics
+of any given monster by interacting with them enough, but this is not always
+desirable (hanging around great hell wyrms, for example, can be hazardous
+to one's health). Certain spells may help you learn faster, as well as
+research centres in town.
diff --git a/lib/help/automat.txt b/lib/help/automat.txt
new file mode 100644
index 00000000..bf6478f8
--- /dev/null
+++ b/lib/help/automat.txt
@@ -0,0 +1,504 @@
+|||||oy
+~~~~~01|Automatizer
+~~~~~02|Auto pick-up
+~~~~~03|Auto destroy
+~~~~~04|Autosquelch
+#####R /----------------------------------------\
+#####R < The Automatizer >
+#####R \----------------------------------------/
+
+#####GWhat is the Automatizer?
+The automatizer is an advanced auto-pickup or auto-squelch (auto-destroyer). At
+a basic level, it will allow you to automatically destroy things that you have
+no use for once you walk over them, providing that you have identified one of
+them with your current character.
+
+#####GIs that it?
+Well no. The automatizer is far more flexible than that. The old-fashioned auto
+squelch allowed you to destroy things dependent on how they pseudo-id'd - you
+could auto-destroy all {cursed} swords for instance.
+This is fine to start with, but once you get deep in the dungeon, and have a lot
+of money and a decent weapon, you'll be interested in destroying {average} and
+{good} items too right? Well the automatizer allows you to define destruction of
+things providing you are of a certain level.
+
+#####GSounds quite cool, but wha...
+STOP RIGHT THERE! I haven't finished yet! Let's look at some other examples.
+Most of the time, scrolls of darkness are pretty useless. Unless you are a
+vampire, or an alchemist, right? So you might think it was no good to add
+auto-destroy of scrolls of darkness to the automatizer. But you'd be wrong, for
+you can add rules that are dependent on certain conditions, like that you are
+of a certain race, or class.
+
+#####GHey this is sounding good. What if it destroys my artifacts?
+It can't. Artifacts can never be destroyed, by the automatizer. However, watch
+out for items that are VERY cool but not artifacts... you wouldn't want to go
+destroying boots of speed would you? Fortunately there are provisions for this
+too, you could set a rule that destroyed all excellent boots (providing you were
+past character level 45 say), but not if they were boots of speed.
+
+#####GWoah! This sounds amazing!
+Yes it is, isn't it.
+
+#####GSo how do I use it?
+Well the very simplest way is as follows. When you hit 'k' (^D in the roguelike
+keyset) to destroy an item, you'll see that one option is "$ new automatizer
+rule(OFF)". If you want to destroy all future items like that that you find,
+then hit the $ key. You'll see that (OFF) changes to (ON). Now pick the item you
+want to destroy. Let's say it is a Potion of Salt Water. You would now, as
+normal, see a message "You destroy a Potion of Salt Water". Following this you
+get a prompt, "Destroy all of the same [T]ype, [F]amily, or [N]ame, also use
+[S]tatus (no)?". Let's take the easy one first and hit 'n' to go with name.
+You'll now see a message, "Rule added, please go to the automatizer screen
+(press = then T) to save the modified ruleset". Let's do that then, shall we. If
+this is the first time you have used the automatizer with this savefile, you'll
+be asked to enable it as you hit T. Confirm that you would like to enable it,
+otherwise it won't work.
+
+#####GWhat's the point in having it disabled then?
+Well let's say you spotted something that you weren't sure how it would be
+affected by your rules, but didn't want to destroy it; you could just disable
+the automatizer for a moment and check it over before deciding what to do with
+it and switching the automatizer back on.
+
+#####GHmmm, ok. So I've enabled the automatizer, now what?
+Well, you'll see a screen like this:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|GsGaGlGtG GwGaGtGeGrB B B w B|G<GrGuGlGeB BnBaBmBew=w"ysyaylyty ywyaytyeyrw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G<GnGaGmGeG>wpwowtwiwownw wowfw wswawlwtw wwwawtwewrg<g/gngagmgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+
+(snipped for brevity).
+
+The automatizer rules are written in XML, so if you're familiar with that format
+you shouldn't find things too difficult. It's also similar in format to HTML, as
+you may notice from the way that there are opening tags (<name>) and closing
+tags (</name>), and that everything between those tags is affected by that
+rule.
+
+#####GXML? HTML? What is this? Isn't ToME enough acronyms to be going on with?
+OK, so you don't know anything about mark-up languages, it's no problem. Let's
+take a look at the automatizer screen bit by bit, starting with the instructions
+bottom right.
+
+up/down to scroll. Well as you move the up/down cursor keys or number keys, a
+different rule name is highlighted in the left hand window, and that rule is
+displayed in the right hand window.
+tab to switch to the rule window. Does what it says on the tin: switches to the
+rule window (the right hand pane) to allow editing of existing rules.
+u/d to move rules. Pressing 'u' or 'd' will move the rule up or down the order
+displayed in the left hand window. Purely for cosmetic reasons.
+new rule. Adds the beginning of a new rule.
+rename rule. This is handy, as every rule added from the destroy prompt (as
+explained above) is automatically named 'destroy', which gets a bit confusing
+when you have 50 or so rules... renaming your rules will make them much easier
+to edit later.
+save rules. Saves all existing rules to a filename you designate (default is
+automat.atm). Don't forget to do this after adding new rules/before exiting the
+game.
+k to disable the automatizer. Disables the automatizer, preserving the rules you
+have made.
+
+#####GYeah yeah, so what about the rule window on the right hand side itself?
+OK, here we go. This is the real juicy stuff.
+
+Anything inside pointy brackets (greater than and less than signs) is called a
+tag. You'll notice that each tag opens with a word, and then that same word
+appears in another tag later on, preceded by a slash. These are referred to as
+opening tags (like <name> ) and closing tags (like </name> ). Everything within
+a set of closing and opening tags is affected by those tags. This will make more
+sense as we continue. Tags and the things they enclose are like "mini-rules"
+which will together make up one rule. I call these mini-rules, clauses.
+
+the first line:
+<rule name="destroy" type="destroy">
+Each rule starts with the tag <rule>, and this contains the rule name, and the
+rule type. The rule name is how it is identified in the left hand window, and
+need not be unique. The rule type will be either "destroy" (destroys items when
+conditions stated below are met) or "pickup" (picks up item when conditions are
+met) or "nothing" (neither picks up, nor destroys item when conditions are met)
+
+The second line:
+ <name>Potion of Salt Water</name>
+This tells us that for the rule to be carried out, the name of the item must be
+"Potion of Salt Water"
+
+The third line:
+</rule>
+This tells us the rule is ended.
+
+In total then, the rule named "destroy" checks to see if the name of every item
+is Potion of Salt water, and if it is, it destroys it.
+
+Nice and simple huh?
+
+#####GYes Yes, very simple. It doesn't look very advanced at the moment.
+Well, we've barely scratched the surface.
+Let's take a look at those other options we got at the destroy prompt. Let's say
+I was at a stage in the game where I wanted to be able to switch on an auto-
+destroy for all swords that pseudo-id'd as {average}. So let's say I have a
+dagger in my backpack, and I want to create an auto-destroy rule for that and
+all subsequent swords... This is what I'd do:
+Hit 'k' to destroy items and hit '$' to turn on automatizer rules. Then I'd
+select the dagger and confirm the destruction. Hit 's' to switch the status
+toggle. This toggle will include (when ON) how the dagger pseudo-ids, and
+finally hit 'f' to add a rule saying destroy by family. What you'll see in the
+automatizer screen now is this:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|GdGeGsGtGrGoGyB B B B B B w B|G<GrGuGlGeB BnBaBmBew=w"ydyeysytyryoyyw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wdwewswtwrwowyB B B B B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G<GtGvGaGlG>w2w3g<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+#####GOK, well I can see the pseudo-id status is there, what's that tval thing? And
+#####Gwhere does it say swords?
+Well actually the tval thing is where it says swords! This is what is added by
+the 'destroy by family' option.
+
+It's probably worth explaining a bit here about the internal structure of ToME
+code. Don't worry it's not too scary. In ToME, all objects are divided into
+types: swords, axes, hafted-weapons, scrolls, rings etc. Every type is further
+divided into sub-types. Eg swords are divided into daggers, broad swords, two-
+handed swords and so on. Scrolls are divided into their specific actions;
+scrolls of light, scrolls of satisfy hunger etc. Each type has a number assigned
+to it, that never changes, and so does each sub-type. In this way we can
+identify an exact object using just two values: it's type, or tvalue (tval) and
+it's sub-type, or svalue (sval). You see where we're going with this?
+Now daggers have a tval of 23 and an sval of 4. So you can see that we've said
+in the rule that all things with a tval of 23 and a status of average can be
+destroyed.
+
+#####GAh, right. I see. And what's with the <and> tags?
+Well, everything in those tags must be true for the rule to carry out. If we had
+the <tval>23</tval> and the <status>average</average> lines without the <and>
+tags, it would not be clear whether we wanted just one of those clauses to be
+true for the rule to be carried out, or both of them.
+
+#####GErr...
+In other words, without the <and> tags it might look like we wanted to destroy
+a) EVERYTHING that pseudo id'd as average, and
+b) EVERY sword, regardless of how it pseudo-id'd!
+
+#####GRight. What if I did want a rule that was more general, and had either/or
+options in it?
+Then there are tags to do that - the <or> </or> tags. If ANY of the clauses
+return as true within or tags, then the rule is carried out. Substitute <or>
+tags for the <and> tags in our sword example above, and the rule will operate in
+the rather unhelpful way I explained above (all {average} things destroyed, and
+all swords destroyed, regardless of how they pseudo-id). So essentially, if your
+rule has more than one clause, you will need to include either <and> tags or
+<or> tags, or in some cases both.
+
+#####GOK and so what does the [T]ype option do?
+It merely adds the sval, thus narrowing down the parameters for the auto-
+destroy. For instance if I'd chosen to destroy by type rather than family in the
+last example, we'd have ended up with this:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|GdGeGsGtGrGoGyB B B B B B w B|G<GrGuGlGeB BnBaBmBew=w"ydyeysytyryoyyw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wdwewswtwrwowyB B B B B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GtGvGaGlG>w2w3g<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GsGvGaGlB BmBiBnw=w"y4w"B BmBaBxw=w"y4w"G>g<g/gsgvgaglg>B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+You can see in this example that we have nested <and> tags. Evaluating the tags
+from the ones nested deepest first we can see that if an object has a tval of 23
+and an sval between the values of 4 and 4 (i.e. if it is 4) then the rule will
+check against the next part, which is to see if the object identifies {average}.
+If it does, then all the clauses have been met and rule is carried out. In
+short, it destroys all average daggers, rather than all average swords. Strictly
+speaking the nested <and> tags aren't needed, but they do no harm, and are added
+automatically when destroying by [T]ype.
+
+#####GThis is all well and good but the numbers are going to get rather confusing
+#####Garen't they? Be much easier if I could just write 'swords' or 'daggers'.
+Well, you can. Kind of. Instead of using the admittedly rather obtuse numbers,
+you can use the name of that tvalue rather than the number it represents. So
+instead of <tval>23</tval> you could write <tval>TV_SWORD</tval>.
+
+#####GAh that would be better. But where can I find out what all the names, and
+#####Gnumbers of tvalues are?
+Well I've written a *****defines.txt*0[file] which lists tvalues and one which lists svalues for you
+to check on, and you may want to check the objects entry in k_info.txt in your
+lib/edit directory. If you look at the entry for dagger you'll see:
+
+N:43:& Dagger~
+G:|:W
+I:23:4:0
+W:0:0:12:10
+A:0/1:5/1:10/1:20/1
+P:0:1d4:0:0:0
+<snip>
+The only line we're interested in is the one that starts I (for Index). The
+first number is the tval, and the second is the sval.
+Of course you could always rename your rule to make things clearer.
+
+#####GOK so you mentioned something about setting rules up that happen only if a
+#####Gplayer is a certain level?
+Yeah, good point. Well, let's develop our destroy average swords rule for the
+moment. Let's say we always wanted to destroy average swords by the time we got
+to character level 20. They don't earn enough gold to make it worth carrying
+back to town, and we'll have a better weapon by then anyway. So here we are in
+the automatizer screen, with the destroy sword rule displaying in the right hand
+window. If we hit tab, the right window becomes active and the rules at the
+bottom change:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|gdgegsgtgrgogyB B B B B B w B|v<vrvuvlveB BnBaBmBew=w"ydyeysytyryoyyw"B BtByBpBew=w"ydyeysytyryoyyw"v>B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wdwewswtwrwowyB B B B B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G<GtGvGaGlG>w2w3g<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|v<v/vrvuvlvev>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW/BlBeBfBtW/BrBiBgBhBtW WtWoW WnWaWvWiWtWaWgWeW WrWuWlWeW,W B9W/B3W/B7W/B1W WtWoW WsWcWrWoWlWlw w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BtBaBbW WfWoWrW WsWwWiWtWcWhW,W BaWdWdW WcWlWaWuWsWeW,W BdWeWlWeWtWeW WcWlWaWuWsWeW/WrWuWlWew w w w w w w w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+You can see the <rule> tags have changed to purple, indicating they are the
+active ones, that all key presses will act upon. Let's just quickly scoot
+through these new commands:
+up/down/left/right to navigate rule: These will change which clause is active,
+enabling you to delete that clause, or add further clauses inside that one if it
+so allows it.
+9/3/7/1 to scroll: scrolls the whole screen which can become useful if you have
+a particularly long rule or one with lots of nested clauses.
+tab for switch: will make the left-hand window active again.
+add clause: adds a new clause within the active one, providing the active clause
+is either a <and>, <or> or <not> tag.
+delete clause/rule: deletes the active clause, and any clauses nested within
+that one. Therefore if the <rule> tags are active, the whole rule will be
+deleted. Beware!
+
+So if we now hit our right arrow we see that the <and> tags are active. We can
+now add a new clause here. Let's do so by pressing 'a'. You'll now see a list of
+different types of clauses you can add, which you simply scroll through using up
+and down keys, and select by hitting enter. A brief description of the selected
+clause is shown in the right hand window. Scroll down to the 'level' rule type
+and hit enter. You'll be asked to enter a player level. Let's go for 20. You'll
+then be asked for a maximum level, put 50, as we want the rule to be true from
+level 20 and upwards. You'll now see our rule displays as:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|gdgegsgtgrgogyB B B B B B w B|G<GrGuGlGeB BnBaBmBew=w"ydyeysytyryoyyw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wdwewswtwrwowyB B B B B B w B|v v v v v<vavnvdv>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G<GtGvGaGlG>w2w3g<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y2y0w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|v v v v v<v/vavnvdv>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW/BlBeBfBtW/BrBiBgBhBtW WtWoW WnWaWvWiWtWaWgWeW WrWuWlWeW,W B9W/B3W/B7W/B1W WtWoW WsWcWrWoWlWlw w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BtBaBbW WfWoWrW WsWwWiWtWcWhW,W BaWdWdW WcWlWaWuWsWeW,W BdWeWlWeWtWeW WcWlWaWuWsWeW/WrWuWlWew w w w w w w w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+So there we go. A rule which will destroy all {average} swords once the player
+is past character level 20.
+
+#####GHmmm I've tried this, it doesn't destroy cursed swords though...
+Nope. You haven't told it to. If you want a scaling rule, which always destroys
+cursed swords and then destroys average swords at character level 20, then {good}
+swords at character level 35, have a look at this, rather more complicated rule.
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|wswhwiwewlwdB B B B B B B w B|G<GrGuGlGeB BnBaBmBew=w"ysywyoyrydysw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wbwowwB B B B B B B B B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|whwrwdw wawrwmwowuwrB B B w B|G G G G G G G G G<GtGvGaGlG>w2w3g<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wawxwewsB B B B B B B B B w B|G G G G G G G G G<GoGrG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|whwewlwmwsB B B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswowfwtw wawrwmB B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y0w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B B w B|
+&&&&&B|wbwowlwtwsB B B B B B B B w B|G G G G G G G G G G G G G G G G G<GoGrG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wbwowowtwsB B B B B B B B w B|G G G G G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wvwewrwyw wbwawdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wgwlwowvwewsB B B B B B B w B|G G G G G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wbwawdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wpwowlwewawrwmwsB B B B B w B|g g g g g g g g g g g g g g g g g<g/gogrg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wcwlwowawkB B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|GsGwGoGrGdGsB B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|whwawfwtwewdwsB B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y1y5w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B w B|
+&&&&&B|wawrwrwowwwsB B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswhwowtB B B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wbwowowmwewrwawnwgB B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wtwowrwcwhB B B B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y2y5w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B w B|
+&&&&&B|wrwowdw wtwiwpwsB B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wgwowowdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wpwowtwiwownwsB B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wrwiwnwgwsB B B B B B B B w B|g g g g g g g g g<g/gogrg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wwwawnwdwsB B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wmwuwswhwrwowowmwsB B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswcwrwowlwlwsB B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wawmwuwlwewtwsB B B B B B w B|w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w B|
+&&&&&B|wpwawrwcwhwmwewnwtwsB B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|wswhwawpwew wpwowtB B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|wswtwawvwewsw w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+#####GWoah! What the heck is that?!
+OK ok slow down a minute. Look at it carefully and a clause at a time. It's not
+difficult. Let's take it from the top. It's a destroying rule called swords. It
+opens with some <and> tags. The object must be a sword (tval 23). Now we have an
+OR tag, so we know that there are going to be some options:
+option 1: the player is between level 0 and level 50, and the sword pseudo id's
+as either cursed or worthless.
+option 2: the player is above character level 15, and the sword pseudo id's as
+average.
+option 3: the player is above character level 25, and the sword pseudo id's as
+good.
+If any of these options are true, the rule is carried out. This rule could
+easily be copied for other weapons or pieces of armour, substituting only the
+tval, and perhaps the name.
+
+#####GHmmm ok. looks good. I might want to change those character level values
+#####Gthough. they look a bit low...
+Well yeah, that's up to your playing style I guess... If you want to edit
+clauses directly rather than delete and re-add them, you might want to edit the
+automat.atm file directly. Just open it in your text editor (it's located in
+your lib/user directory or in ~/.tome on multiuser systems) and you'll see the
+format is identical to how it is displayed in the automatizer file. Just watch
+your spellings, and keep a back-up of the original to replace if things go
+wrong. Don't mess about in there if you feel unsure of what you're doing though.
+
+#####GSo what about those examples you gave up above? Like destroying scrolls of
+#####Gdarkness unless you are a vampire or an alchemist?
+OK, let's add this rule from scratch rather than from the destroy item prompt.
+In the automatizer screen, hit 'n' for new rule. It asks for a name and a type
+of rule (destroy/pickup/nothing). I called my rule "? of darkness", and it's a
+destroy rule. It is worthwhile thinking at this point how the rule is going to
+be structured; for very complicated rules pen and paper may help. We're going to
+need to define the object (either by name, or by tval and sval) then we're going
+to say unless the player race modifier is vampire, or the player class is
+alchemist. So we are obviously going to have more than one clause, and the
+clauses are going to have to BOTH be true for the rule to take effect so the
+first clause we add is an <and> one. So hit 'a' for add clause and enter to
+select the <and> clause. Lets now hit our right arrow, so the <and> tags are
+active, and add a new rule. We can now select the <name> tags. At this point
+we're prompted for the name. Now it's not case-sensitive, but you do need to
+spell it correctly!
+With the <and> tags still highlighted we now want to add our "unless vampire or
+alchemist" clause. Seeing as this is an "unless" type clause, we start with a
+<not> tag. So again, 'a'dd a new clause, and select <not>.
+Now make the <not> tag active by moving right and down with the cursor keys. We
+want "EITHER vampire or alchemist" so we include <or> tags, again by moving
+across to make the <not> tags active and 'a'dding a new <or> clause. Then select
+the <or> tags and 'a'dd a new <subrace> clause. Enter 'vampire'.
+So the last part is to add alchemist. Now this might at first glance seem to be
+a simple case of 'a'dding a new clause of the <class> type, within the <or>
+tags, and there is certainly nothing 'wrong' with doing this. At present there
+is no way for non-alchemists to get the alchemy skill, but it is sometimes best
+to 'future-proof' against such possibilities. That's what we're going to do
+here.
+So rather than add a <class> clause, we're going to add a <skill> clause.
+With the <or> tags active, 'a'dd a new <skill> clause. You're first asked for a
+minimum skill level. Well, we can't use any skill unless we have 1.00 whole
+skill points in it or more, so we can put 1 in here. We're then asked for a
+maximum skill level, so we'll put in 50 here. The skill name must be spelled
+correctly (as it appears on the skill screen) so we put 'Alchemy' here. Your
+complete rule now appears as follows:
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|G?G GdGaGrGkGnGeGsGsB B B w B|G<GrGuGlGeB BnBaBmBew=w"y?y ydyayrykynyeysysw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswwwowrwdwsB B B B B B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswawlwtw wwwawtwewrB B B w B|G G G G G G G G G<GnGaGmGeG>wSwcwrwowlwlw wowfw wdwawrwkwnwewswsg<g/gngagmgeg>B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G<GnGoGtG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GoGrG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGuGbGrGaGcGeG>wvwawmwpwiwrweg<g/gsgugbgrgagcgeg>B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGkGiGlGlB BmBiBnw=w"y1w"B BmBaBxw=w"y5y0w"G>wAwlwcwhwewmwyg<g/gsgkgiglglg>B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g<g/gogrg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g<g/gngogtg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+You'll notice I've also renamed the rules to make things a bit more legible.
+
+#####GOK I'm getting there now, what about the boots of speed thing you talked about?
+Heh. Take a look at this, and see if you can work out what it's doing first
+before I talk you through it
+
+&&&&&B/B-B-B-B-BRBuBlBeBsB-B-B-B-B-B/B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B\
+&&&&&B|GbGoGoGtGsB B B B B B B B w B|G<GrGuGlGeB BnBaBmBew=w"ybyoyoytysw"B BtByBpBew=w"ydyeysytyryoyyw"G>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|w?w wdwawrwkwnwewswsB B B w B|G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswwwowrwdwsB B B B B B B w B|G G G G G G G G G<GtGvGaGlG>wTwVw_wBwOwOwTwSg<g/gtgvgaglg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wswawlwtw wwwawtwewrB B B w B|G G G G G G G G G<GoGrG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|wfwowowdB B B B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y0w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GoGrG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wvwewrwyw wbwawdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wbwawdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g g g g g<g/gogrg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y2y0w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wawvwewrwawgweg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y3y5w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wgwowowdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G<GaGnGdG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GlGeGvGeGlB BmBiBnw=w"y4y5w"B BmBaBxw=w"y5y0w"G>g<g/glgegvgeglg>B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGuGsG>wvwewrwyw wgwowowdg<g/gsgtgagtgugsg>B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GsGtGaGtGeG>wiwdwewnwtwiwfwiwewdg<g/gsgtgagtgeg>B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G<GnGoGtG>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|G G G G G G G G G G G G G G G G G G G G G<GcGoGnGtGaGiGnG>wswpwewewdg<g/gcgogngtgagigng>B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g g g g g<g/gngogtg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g g g g g<g/gogrg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g g g g g<g/gagngdg>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B w B|
+&&&&&B|B B B B B B B B B B B B B w B|g<g/grguglgeg>w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w B|
+&&&&&B|B B B B B B B B B B B B B w B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/
+&&&&&B|B B B B B B B B B B B B B w B|w BuBpW/BdBoBwBnW WtWoW WsWcWrWoWlWlW,W BtBaBbW WtWoW WsWwWiWtWcWhW WtWoW WtWhWeW WrWuWlWeW WwWiWnWdWoWww w w w w w w w w w w w w
+&&&&&B|w w w w w w w w w w w w w w B|w BuW/BdW WtWoW WmWoWvWeW WrWuWlWeWsW,W BnWeWwW WrWuWlWeW,W BrWeWnWaWmWeW WrWuWlWeW,W BsWaWvWeW WrWuWlWeWsw w w w w w w w w w w w
+&&&&&B\B-B-B-B-B-B-B-B-B-B-B-B-B-B-B/w RkW WtWoW rdrirsrarbrlreW WtWhWeW WaWuWtWoWmWaWtWiWzWeWrw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+The majority of this is fairly similar to the swords rule; it destroys {average}
+boots at character level 20, {good} ones at character level 35 and cursed ones
+always. The addition is at the bottom. It adds clauses which will destroy
+excellent items providing that they have been identified and that the name does
+not contain the word "speed". The <state>identified</state> bit is important
+here, as it would destroy the boots on pseudo-id otherwise, before it even saw
+the full name of the boots.
+
+#####GThis is fantastic! Where can I get more help?
+email me: fearoffours@t-o-m-e.net
diff --git a/lib/help/birth.txt b/lib/help/birth.txt
new file mode 100644
index 00000000..00b1a921
--- /dev/null
+++ b/lib/help/birth.txt
@@ -0,0 +1,593 @@
+|||||oy
+~~~~~84|Birth
+~~~~~11|Character
+#####R /----------------------------------------\
+#####R < Creating a Character >
+#####R \----------------------------------------/
+
+ *****birth.txt*01[Creating a Character] *****birth.txt*02[Character Characteristics]
+ *****birth.txt*03[Races] *****birth.txt*04[Race Modifiers]
+ *****birth.txt*05[Classes] *****birth.txt*83[Gods]
+ *****birth.txt*06[Stats] *****birth.txt*07[Abilities]
+ *****birth.txt*08[Combinations of Race and Class] *****birth.txt*09[Stat bonus tables]
+
+~~~~~01|Character|Creating a Character
+~~~~~12|Creating a Character
+#####R=== Creating a Character ===
+
+ToME is a roleplaying game, in which you, the player, control a
+character in the various dungeons and places of Arda. Perhaps the most
+important thing you control is the birth of your character, in which you
+choose or allow to be chosen various attributes that will affect the future
+life of your character.
+
+Character creation, or birth, is controlled through a variety of choices
+as to constraints on the type of character you wish to play, followed by
+a series of random calculations to generate ("roll up") a random character
+matching the appropriate constraints.
+
+Once your character has been generated, you will be given the choice to
+generate a new character obeying the same constraints, and once you have
+generated more than one character, you can switch back and forth between
+the two most recent characters, until you are presented with a personality
+that you feel comfortable with.
+
+You may start the entire process over at any time.
+
+Once you have accepted a character you will asked to provide a name for the
+character. In general, the actual choice of a name is not important, but do
+keep in mind that it may have some effect on the game itself. For example,
+on some machines, the character name determines the filename that will be
+used to save the character to disk. On others, the character name specifies
+special "pref" files. And the character name is used on the high score list.
+
+~~~~~02|Character|Characteristics
+~~~~~13|Character|Stats 1
+~~~~~14|Stats|Display
+~~~~~37|Display
+~~~~~82|Stats
+#####R=== Character Characteristics ===
+
+Each character has four primary attributes -- gender, race, race modifier and
+class -- that are chosen before the character is generated, and all but gender
+stay fixed for the entire life of that character. These attributes have many
+effects, which will be mentioned as they come up. Keep in mind that in the
+current version of ToME, your choice of race may restrict your choice
+of class.
+
+Each character has a few secondary attributes -- height, weight, social class,
+and background history -- which are randomly determined, but which are affected
+by the gender and race of the character. In general, these attributes are only
+used to provide "flavor" to the character, to assist in the role playing, but
+they do have a few minor effects on the game. For example, background history
+affects social class, which affects the amount of money the character will
+start with.
+
+Each character also has six primary "stats": strength (STR), intelligence
+(INT), wisdom (WIS), dexterity (DEX), constitution (CON), and charisma (CHR).
+
+By default, primary statistics are represented in a linear way rather than a
+percentile way. You can change to percentile via the game option sequence '=',
+'5' (ToME options), arrow down to 'stats are represented in a linear way', and
+type 'n' for no. Don't forget to save your options when you are done.
+
+These stats modify the abilities of the character in a variety of ways. Every
+stat has a numerical value, ranging from a minimum of 3, up to a normal maximum
+of 18, and even higher, into the "percentile" range, represented as "18/01"
+through "18/100". Actually, every stat can be raised even above 18/100 by
+magical means, up to a pure maximum of 18/220, which is represented as
+"18/***". Traditionally, a percentile stat such as "18/50" has been though of
+as representing a value part way between 18 and 19, and this is one way to
+think of them. However, often, the best way to view the "bonus" values after
+the "18/" is as "tenth" points, since it often takes the same magic to raise a
+stat from, say, 4 to 5, or 16 to 17, as it does from, say, 18/40 to 18/50. The
+important thing to remember is that almost all internal calculations "ignore"
+the final digit of any "bonus", so that, for example, "18/40" and "18/49"
+generally have the same effects. During character generation, each stat is
+rolled out as a number from 8 to 17, with a normal (bell-curve) distribution,
+and is then immediately modified based on the race and class of the character.
+
+Each character also has several primary "skills" -- disarming, magic devices,
+saving throws, stealth, searching ability, searching frequency, fighting skill,
+and shooting skill -- which are derived from the character's race, class, level,
+stats, and current equipment. These skills have rather obvious effects, but
+will be described more completely below.
+
+Each character may have one or more "intrinsic racial skills", based on
+the race of the character. These may include special resistances, abilities
+such as infravision, or even activatable powers such as food creation.
+~~~~~16|Gold
+~~~~~81|Abbreviations
+~~~~~17|Abbreviations|AU
+~~~~~18|Money
+Money in ToME is referred to in gold pieces, also frequently abbreviated as AU
+(the chemical symbol for gold).
+
+Each character starts with some gold, which can be used to buy items from the
+shops in town. Additionally, gold can be obtained by several means:
+
+ * selling items you have, or find, to the shops
+ * taking it from dead monsters
+ * finding it lying around on the floor in the dungeon
+ * digging it out of the walls in certain dungeons
+
+Each character starts out with some gold. The amount you start with is based on
+social class (higher is better), charisma (higher is better), and some other
+stats (less powerful characters start with more gold).
+~~~~~85|Inventory - starting info
+Inventory is what you are carrying and/or wearing at the moment. All items you
+carry/wear have a certain weight. If the weight is very heavy for your
+strength, it can slow you down, and that is not a good thing for your
+character's continuing health. When your character is first created, all items
+you are granted upon creation will be in your inventory. Sometimes starting
+inventory includes something other than a weapon or armor (for example, a light
+source, scroll, potion, or food.)
+~~~~~86|Weapons - starting info
+Some characters start with a weapon. If yours does, you will need to 'w'ield it
+in order to gain its attack capabilities.
+~~~~~23|Character|Armor Class
+~~~~~19|Armor|Armor Class
+~~~~~20|Abbreviations|AC
+#####R === Armour Class ===
+Each character has an armor class, representing how well the character can
+avoid damage. The armor class is affected by dexterity, the equipment, and
+sometimes the race. The higher the AC, the better.
+
+The numbers following a piece of armor's name indicate how good it is. A Metal
+Cap [3,+0] is not as good as an Iron Helm [5,+0], AC-wise, since the 5 is a
+bigger number than the 3. On the other hand, an Iron Helm is heavier than a
+Metal Cap, and that may make a difference to you.
+
+The plusses following the first number (e.g. the +0) indicate a magical bonus.
+If the plus number is more than zero, it should be added on to the base
+number. E.g. a Metal Cap [3,+3] has a higher AC than an Iron Helm [5,+0].
+
+Some characters start with armor. If yours does, you need will need to 'w'ield
+it in order to gain its protection.
+~~~~~21|Abbreviations|HP
+~~~~~22|Character|Hit Points
+Each character has hit points (HP), representing how much damage the character
+can sustain before death. Hit points are derived from your race, class,
+level, and constitution, and can be temporarily boosted by magical means.
+Hit points may be regained by resting, or by a variety of magical means.
+~~~~~24|Abbreviations|SN
+~~~~~25|Character|Sanity Points
+Each character has sanity points (SN), representing how much mental damage the
+character can sustain before death. Sanity points are derived from your wisdom
+and character level. Sanity points may only be regained by magical means and
+won't be regained by resting.
+~~~~~26|Abbreviations|SP
+~~~~~27|Magic|Mana
+~~~~~28|Character|Mana
+Each character has a certain amount of mana. The amount of mana represents how
+many spells of a certain difficulty a character can cast. When a spell is
+cast, you lose amount of mana corresponding to the 'cost' of the spell.
+
+When all mana is gone, or the cost of a given spell is greater than the amount
+of mana you have left, you may attempt to cast a spell; beware, as there are
+consequences to such a rash act.
+
+Spell points may be regained by resting. They can also be restored by a few
+magical means.
+
+Your spell points are derived from your Magic skill, player level and the
+greatest of INT and WIS.
+
+Your total spell points are additionally affected by:
+
+ * your character's race modifier
+ * character class
+
+Your total spell points may be affected by:
+
+ * your encumbrance
+ * what you wear
+
+~~~~~29|Abbreviations|Pt
+~~~~~30|Gods|Piety
+~~~~~31|Character|Piety
+Finally, characters that have chosen to follow a *****gods.txt*0[God] will have piety points
+(Pt). These points represent the character's standing with their God, a
+standing which may rise or fall over time. A character may spend piety points
+to cast a spell granted by his/her God. Spent piety points can be regained in
+different fashions, depending on which God is involved -- each is pleased or
+displeased by assorted actions. Pleasing your God gains you piety, while
+displeasing your god will lose you piety.
+
+In addition to forming the basis for God-granted spells, accumulated piety
+points may also confer various benefits or penalties upon your character,
+depending on the God involved. For example, followers of Eru who have
+accmulated lots of piety points gain a WIS bonus. The actual rules are
+quite specific to each God.
+~~~~~03|Races
+#####R=== Races ===
+
+There are lots different races that you can choose from in ToME. Some
+races are restricted as to what profession they may be, and each race has
+its own adjustments to a character's stats and abilities. Most races also
+have intrinsic abilities, which can be accessed via the "U" command (original
+keyset, or "O" in the roguelike keyset).
+
+ *****r_beorn.txt*0[Beorning] *****r_hafelf.txt*0[Half-Elf] *****r_orc.txt*0[Orc]
+ *****r_drkelf.txt*0[Dark Elf] *****r_hafogr.txt*0[Half-Ogre] *****r_pettyd.txt*0[Petty-Dwarf]
+ *****r_deathm.txt*0[Death Mold] *****r_hielf.txt*0[High-Elf] *****r_rohank.txt*0[Rohan Knight]
+ *****r_dunad.txt*0[Dunadan] *****r_hobbit.txt*0[Hobbit] *****r_thlord.txt*0[Thunderlord]
+ *****r_dwarf.txt*0[Dwarf] *****r_human.txt*0[Human] *****r_troll.txt*0[Troll]
+ *****r_elf.txt*0[Elf] *****r_kobold.txt*0[Kobold] *****r_wodelf.txt*0[Wood Elf]
+ *****r_ent.txt*0[Ent] *****r_maia.txt*0[Maia] *****r_yeek.txt*0[Yeek]
+ *****r_gnome.txt*0[Gnome]
+
+~~~~~04|Race Modifiers
+#####R=== Race Modifiers ===
+
+There are many different race modifiers from which you can choose in ToME.
+Some are restricted as to what race they can be used with, and each one has
+its own adjustments to a character's stats and abilities. Most also have
+intrinsic abilities. If you are not asked for a race modifier, it is because
+your race only supports the classical form.
+
+ *****rm_class.txt*0[Classical] *****rm_barb.txt*0[Barbarian]
+ *****rm_herm.txt*0[Hermit] *****rm_lsoul.txt*0[Lost Soul]
+ *****rm_skel.txt*0[Skeleton] *****rm_spec.txt*0[Spectre]
+ *****rm_vamp.txt*0[Vampire] *****rm_zomb.txt*0[Zombie]
+
+~~~~~05|Classes
+#####R=== Classes ===
+
+Once a race has been chosen, you will need to pick a class. Some classes will
+not be available to certain races, for instance, a Troll cannot become a
+Paladin. For the first few adventures it is suggested that you run a warrior
+or rogue. Spell casting generally requires a more experienced player that is
+familiar with survival techniques.
+
+ *****c_alchem.txt*0[Alchemist] *****c_mage.txt*0[Mage] *****c_rogue.txt*0[Rogue]
+ *****c_archer.txt*0[Archer] *****c_mimic.txt*0[Mimic] *****c_runecr.txt*0[Runecrafter]
+ *****c_assass.txt*0[Assassin] *****c_mindcr.txt*0[Mindcrafter] *****c_sorcer.txt*0[Sorceror]
+ *****c_axemas.txt*0[Axemaster] *****c_monk.txt*0[Monk] *****c_summon.txt*0[Summoner]
+ *****c_bard.txt*0[Bard] *****c_necro.txt*0[Necromancer] *****c_swordm.txt*0[Swordmaster]
+ *****c_pr_drk.txt*0[Dark-Priest] *****c_palad.txt*0[Paladin] *****c_symbia.txt*0[Symbiant]
+ *****c_demono.txt*0[Demonologist] *****c_polear.txt*0[Polearmmaster] *****c_thaum.txt*0[Thaumaturgist]
+ *****c_druid.txt*0[Druid] *****c_posses.txt*0[Possessor] *****c_unbel.txt*0[Unbeliever]
+ *****c_geoman.txt*0[Geomancer] *****c_pr_eru.txt*0[Priest(Eru)] *****c_warper.txt*0[Warper]
+ *****c_hafted.txt*0[Haftedmaster] *****c_pr_man.txt*0[Priest(Manwe)] *****c_warrio.txt*0[Warrior]
+ *****c_lorema.txt*0[Loremaster] *****c_ranger.txt*0[Ranger]
+~~~~~83
+#####R=== Gods ===
+
+Once a class has been chosen you may be given the option to choose a god. Some
+classes (notably most Priests) will be given a God to worship automatically.
+Some classes are not necessarily suited to following a God, and Gods are not
+recommended for new players. You can also choose your mind about who (if
+anyone) to worship during the game by finding an *****tome_faq.txt*04[altar] of that God.
+
+Read *****gods.txt*0[gods.txt] for a little more information about Gods.
+
+ *****g_eru.txt*0[Eru Iluvatar] *****g_manwe.txt*0[Manwe Sulimo]
+ *****g_yavann.txt*0[Yavanna Kementari] *****g_tulkas.txt*0[Tulkas]
+ *****g_melkor.txt*0[Melkor Bauglir]
+
+
+~~~~~39|Character|Stats 2
+~~~~~06|Stats|Individual explanations
+#####R=== Stats ===
+~~~~~32|Stats|Strength
+~~~~~34|Strength
+#####G Strength (STR)
+ Strength is important in fighting with weapons and in melee
+ combat. A high strength can improve your chances of hitting
+ as well as the amount of damage done with each hit. Char-
+ acters with low strengths may receive penalties. Strength
+ is also useful in tunnelling and in carrying heavy items.
+~~~~~33|Stats|Intelligence
+~~~~~35|Intelligence
+#####G Intelligence (INT)
+ Intelligence affects the spellcasting abilities of mage-like
+ spell schools (whether these spells are learned directly through
+ their associated skills, or indirectly through the Prayer
+ skill), as well as some of the special abilities of various
+ classes (e.g. Symbiants). Intelligence will affect the number
+ of spell points you receive. A high intelligence may also
+ improve your chances of successfully casting a spell. You cannot
+ learn spells if your intelligence is 7 or lower. A good
+ intelligence can also help with using magic devices, picking
+ locks, and disarming traps.
+~~~~~36|Stats|Wisdom
+~~~~~38|Wisdom
+#####G Wisdom (WIS)
+ The primary function of wisdom is to determine the ability
+ of a priest or paladin to use prayers (God-granted spells), just
+ like intelligence affects mage spells. Again, high wisdom will
+ increase the number of spell points you have (even though
+ prayers use piety points), and will improve the chance that a
+ prayer will be successful. A good wisdom can also help to
+ improve your chances of resisting magical spells cast
+ upon you by monsters.
+~~~~~40|Stats|Dexterity
+~~~~~41|Dexterity
+#####G Dexterity (DEX)
+ Dexterity is a combination of agility and quickness. A high
+ dexterity may allow your character to get multiple blows with
+ lighter weapons, thus greatly increasing your kill power, and
+ will increase your chances of hitting with any weapon and
+ dodging blows from enemies. Dexterity is also useful in
+ picking locks, disarming traps, and protecting yourself from
+ some of the thieves that inhabit the dungeons. The unscrupulous
+ adventurer may also find dexterity effective in obtaining items
+ from stores without rendering payment.
+~~~~~42|Stats|Constitution
+~~~~~43|Constitution
+#####G Constitution (CON)
+ Constitution is a character's ability to resist damage to his
+ body, and to recover from damage received. Therefore a
+ character with a high constitution will receive more hit
+ points and also recover them faster while resting.
+~~~~~44|Stats|Charisma
+~~~~~45|Charisma
+#####G Charisma (CHR)
+ Charisma represents a character's personality and physical
+ appearance. A character with a high charisma will receive
+ better prices from store owners, whereas a character with a
+ very low charisma may be robbed blind. A high charisma will
+ also mean more starting money for the character.
+~~~~~07
+~~~~~46|Character|Abilities
+#####R=== Abilities ===
+
+ Characters possess some different abilities which can help them
+ to survive. The starting abilities of a character are based upon
+ race and class. Abilities may be adjusted by high or low stats,
+ and increase with the corresponding *****skills.txt*0[skill] level.
+~~~~~48|Attacking monsters|Fighting ability
+#####G Fighting
+ Fighting is the ability to hit and do damage with weapons or
+ fists. Normally a character gets a single blow from any
+ weapon, but if his dexterity and strength are high enough,
+ he may receive more blows per round with lighter weapons.
+ Strength and dexterity both modify the ability to hit an
+ opponent. This skill increases with the *****skills.txt*02[Weaponmastery] skill
+ and its sub-skills.
+~~~~~50|Attacking monsters|Shooting
+#####G Shooting Ability (Bows/Throw)
+ Using ranged missile weapons (and throwing objects) is
+ included in this skill. Different stats apply to different
+ weapons, but this ability may modify the distance an object
+ is thrown/fired, the amount of damage done, and the ability
+ to hit a creature. This skill increases with the *****skills.txt*08[Archery] skill
+ and its sub-skills.
+~~~~~52|Saving throw
+#####G Saving Throw
+ A Saving Throw is the ability of a character to resist the
+ effects of a spell cast on him by another person/creature.
+ This does not include spells cast on the player by his own
+ stupidity, such as quaffing a nasty potion. This ability
+ increases with the *****skills.txt*38[Spirituality] skill,
+ A high wisdom also increases this ability.
+~~~~~54|Stealth
+#####G Stealth
+ The ability to move silently about is very useful. Charac-
+ ters with good stealth can usually surprise their opponents,
+ gaining the first blow. Also, creatures may fail to notice
+ a stealthy character entirely, allowing a player to avoid
+ certain fights. This skill is based upon race, class and the
+ *****skills.txt*15[Stealth] skill.
+~~~~~56|Disarming traps
+#####G Disarming
+ Disarming is the ability to remove traps (safely), and
+ includes picking locks on traps and doors. A successful
+ disarming will gain the character some experience. A trap
+ must be found before it can be disarmed. Dexterity and
+ intelligence both modify the ability to disarm, and this
+ ability increases with the *****skills.txt*16[Disarming] skill.
+~~~~~58|Magical Devices
+#####G Magic Device
+ Using a magical device such as a wand or staff requires
+ experience and knowledge. Spell users such as magi and
+ priests are therefore much better at using a magical device
+ than say a warrior. This skill is modified by intelligence,
+ and increases with the *****skills.txt*54[Magic-Device] skill.
+~~~~~60|Searching
+~~~~~61|Searching|Searching Frequency - Perception
+~~~~~62|Perception
+#####G Searching Frequency (Perception)
+ Perception is the ability to notice something without
+ actively seeking it out. This skill is based upon race,
+ class and the *****skills.txt*14[Sneakiness] skill.
+~~~~~63|Searching|Searching Ability
+#####G Searching Ability (Searching)
+ To search is to actively look for secret doors, floor traps,
+ and traps on chests. Rogues are the best at searching, but
+ magi, rangers, and priests are also good at it. This skill
+ is based upon race, class and the *****skills.txt*14[Sneakiness] skill.
+~~~~~66|Infra-vision
+#####G Infra-vision
+ Infra-vision is the ability to see heat sources. Since most
+ of the dungeon is cool or cold, infra-vision will not allow
+ the player to see walls and objects. Infra-vision will allow
+ a character to see any warm-blooded creatures up to a cer-
+ tain distance. This ability works equally well with or with
+ out a light source. The majority of ToME's creatures are
+ cold-blooded, and will not be detected unless lit up by a
+ light source. Most non-human races have innate infra-vision
+ ability. Humans can gain infra-vision only through magic
+ enhancement.
+
+~~~~~08|Character|Race and Class Combinations
+~~~~~67|Races|Combinations with class
+~~~~~68|Classes|Combinations with Race
+~~~~~69|Tables
+~~~~~70|Tables|Combinations of Race and Class
+#####R=== Combinations of Race and Class ===
+
+These are the classes that are recommended for different races. You can
+still select a race that is not in the chart, but these combinations are
+either rather poor (like a zombie mage), a concept so silly that they
+are not recommended, or an incredibly unfair combination of race and class.
+If you pick a combination that is not on the chart, don't complain if things
+don't turn out as you expected them to.
+
+#####B Warrior Archer Rogue Mage Priest Loremaster
+#####B
+Beorning Yes No Yes No No Yes
+Dark Elf Yes Yes Yes Yes Yes No
+Death Mold No No No Yes Yes No
+Dunadan Yes Yes Yes Yes Yes Yes
+Dwarf Yes No No No Yes No
+Elf Yes Yes No Yes Yes Yes
+Ent Yes No No No Yes Yes
+Gnome Yes No Yes Yes No No
+Half-Elf Yes Yes Yes Yes Yes Yes
+Half-Ogre Yes No No No Yes No
+High-Elf Yes Yes No Yes Yes Yes
+Hobbit Yes Yes Yes Yes No Yes
+Human Yes Yes Yes Yes Yes Yes
+Kobold Yes Yes Yes No No No
+Maia Yes Yes Yes Yes Yes Yes
+Orc Yes Yes Yes No Yes No
+Petty Dwarf Yes No Yes No No No
+RohanKnight Yes No No No Yes No
+Thunderlord Yes Yes No Yes Yes No
+Troll Yes No No No No No
+Wood Elf Yes Yes No Yes Yes Yes
+Yeek Yes Yes Yes Yes Yes Yes
+~~~~~09|Character|Stat Bonus Table
+~~~~~71|Stats|Bonus table
+~~~~~72|Tables|Stat bonuses
+#####R=== Stat Bonus Tables ===
+
+Stat, hit dice, and experience points per level modifications due to race
+are listed in the following table.
+~~~~~75|Races|Stat Bonuses
+#####GRaces:
+#####B STR INT WIS DEX CON CHR Hit Dice Rqd Exp/level
+ Beorning +4 -2 -2 -1 +3 -5 12 +50%
+ Dark Elf -1 +3 +2 +2 -2 +1 9 +50%
+ Death Mold +10 0 +10 +0 +10 -15 15 +150%
+ Dunadan +1 +2 +2 +2 +3 +2 10 +80%
+ Dwarf +2 -2 +2 -2 +2 -3 11 +25%
+ Elf -1 +2 +2 +1 -2 +2 8 +20%
+ Ent +10 -3 +2 -5 +11 -3 14 +110%
+ Gnome -1 +2 0 +2 +1 -2 8 +35%
+ Half-Elf 0 +1 +1 +1 -1 +1 9 +10%
+ Half-Ogre +3 -1 -1 -1 +3 -3 12 +30%
+ High-Elf +1 +3 +2 +3 +1 +5 10 +100%
+ Hobbit -2 +2 +1 +3 +2 +1 7 +10%
+ Human 0 0 0 0 0 0 10 +0%
+ Kobold +1 -1 0 +1 0 -4 9 +25%
+ Maia 0 0 0 0 0 0 10 +0%
+ Petty Dwarf +1 -1 +2 0 +2 -4 11 +35%
+ Orc +2 -1 0 +1 +1 -4 10 +10%
+ RohanKnight +4 -2 +3 +1 +4 +2 10 +120%
+ Thunderlord +6 +2 +1 +1 +3 +8 12 +300%
+ Troll +4 -4 -2 -4 +3 -6 12 +37%
+ Wood Elf -3 +2 +1 +5 -4 +1 7 +30%
+ Yeek -5 -5 -5 -5 -5 -5 6 -75%
+~~~~~76|Race Modifiers|Stat Bonuses
+#####GRace Modifiers:
+#####B STR INT WIS DEX CON CHR Hit Dice Rqd Exp/level
+ Classical 0 0 0 0 0 0 +0 +0%
+ Barbarian +2 -3 -2 +1 +1 -3 +1 +25%
+ Hermit -3 +1 +1 -3 -3 +1 -3 +20%
+ Lost Soul 0 0 0 0 0 0 +0 +0%
+ Skeleton 0 -2 -2 0 +1 -4 +0 +45%
+ Spectre -5 +2 +2 +2 -3 -6 -4 +80%
+ Vampire +3 +2 -3 -2 +1 -4 +1 +100%
+ Zombie +2 -6 -6 +1 +4 -5 +3 +45%
+
+~~~~~77|Classes|Stat Bonuses
+#####GClasses:
+#####B STR INT WIS DEX CON CHR
+ Axemaster +5 -2 -2 +2 +2 -1
+ Demonologist +5 -2 -2 +2 +2 -1
+ Haftedmaster +5 -2 -2 +2 +2 -1
+ Polearmmaster +5 -2 -2 +2 +2 -1
+ Swordmaster +5 -2 -2 +2 +2 -1
+ Unbeliever +5 -2 -2 +2 +2 -1
+ Warrior +5 -2 -2 +2 +2 -1
+
+ Alchemist -5 +3 0 +1 -2 +1
+ Geomancer -5 +3 0 +1 -2 +1
+ Mage -5 +3 0 +1 -2 +1
+ Necromancer -5 +3 0 +1 -2 +1
+ Runecrafter -5 +3 0 +1 -2 +1
+ Sorceror -5 +3 0 +1 -2 +1
+ Thaumaturgist -5 +3 0 +1 -2 +1
+ Warper -5 +3 0 +1 -2 +1
+
+ Archer +2 +1 0 +2 +1 +1
+ Ranger +2 +2 0 +2 +1 +1
+
+ Assassin +2 +1 -2 +3 +1 -1
+ Rogue +2 +1 -2 +3 +1 -1
+
+ Bard +1 -2 +1 +1 0 +1
+ Loremaster +1 -2 +1 +1 0 +1
+ Mimic +1 -2 +1 +1 0 +1
+ Monk +1 -2 +1 +1 0 +1
+ Possessor +1 -2 +1 +1 0 +1
+ Summoner +1 -2 +1 +1 0 +1
+ Symbiant +1 -2 +1 +1 0 +1
+
+ Dark-Priest -1 -3 +3 -1 0 +2
+ Druid -1 -3 +3 -1 0 +2
+ Mindcrafter -1 -3 +3 -1 0 +2
+ Paladin -1 -3 +3 -1 0 +2
+ Priest(Eru) -1 -3 +3 -1 0 +2
+ Priest(Manwe) -1 -3 +3 -1 0 +2
+~~~~~10|Character|Skill tables
+~~~~~74|Tables|Skill Tables
+#####R=== Skill Tables ===
+
+~~~~~78|Races|Skill table
+#####GRaces:
+#####B Disarm Devices Sprtlty Stealth Sneak Wepnmas Archery
+ Beorning -0.6 -0.8 -3.0 -2.0 -0.1 +2.5 +0.5
+ Dark-Elf +0.5 +1.5 +10.0 +3.0 +0.8 -0.5 +1.0
+ DeathMold +1.5 -0.5 +7.5 +25 0 +2.5 +2.5
+ Dunadan +0.4 +0.5 +2.5 +2.0 +0.8 +1.5 +1.0
+ Dwarf +0.2 +0.9 +5.0 -1.0 +0.7 +1.5 +0.5
+ Elf +0.5 +0.6 +3.0 +2.0 +0.8 -0.5 +1.5
+ Ent +0.5 +0.5 +10.0 -6.0 +0.5 -0.3 -0.2
+ Gnome +1.0 +1.2 +6.0 +3.0 +0.6 -0.8 +1.2
+ Half-Elf +0.2 +0.3 +1.5 +1.0 +0.6 -0.1 +0.5
+ Half-Ogre -0.3 -0.5 -2.5 -2.0 -0.1 +2.0 0
+ High-Elf +0.4 +2.0 +10.0 +4.0 +0.3 +1.0 +2.5
+ Hobbit +1.5 +1.8 +9.0 +5.0 +1.2 -1.0 +2.0
+ Human 0 0 0 0 0 0 0
+ Kobold -0.2 -0.3 -1.0 -1.0 +0.1 +1.0 -0.8
+ Maia 0 0 0 0 0 0 0
+ Orc -0.3 -0.3 -1.0 -1.0 0 +1.2 -0.5
+ Petty Dwarf +0.3 +0.5 +5.0 +1.0 +0.5 0 0
+ RohanKnight +1.0 +0.5 +2.5 -8.0 +0.1 +0.1 +0.5
+ Thunderlord +0.6 0 +5.0 -16.0 +3.0 +1.5 +0.5
+ Troll -0.5 -0.8 -4.0 -2.0 -0.1 +2.0 -1.0
+ Wood-Elf +0.5 +0.6 +3.0 +5.0 +0.8 -2.5 +4.0
+ Yeek -0.5 -0.5 -2.5 -5.0 -0.5 -0.5 -0.5
+
+In addition to the racial starting bonuses for the standard skills listed
+above, there are some special bonuses to the skill modifier:
+
+ Beorning +1.0 Bearform-combat modifier (also 1.0 points to start)
+ Dark-Elf +0.2 Magic modifier
+ DeathMold +0.2 Necromancy modifier
+ Dwarf +0.2 Axe-mastery modifier
+ Ent +0.2 Barehand-combat modifier;
+ +0.6 Boulder-throwing modifier
+ Hobbit +0.3 Sling-mastery modifier
+ Maia Not allowed to use Prayer (modifier reduced to 0.000)
+ RohanKnight +0.2 Weaponmastery modifier
+ Wood-Elf +0.2 Archery modifier
+
+(If the character's class does not normally possess the skill, this racial
+modifier bonus will grant the skill at a starting level of 0.000.)
+
+~~~~~79|Race Modifiers|Skill table
+#####GRace Modifiers:
+#####B Disarm Devices Sprtlty Stealth Sneak Wepnmas Archery
+ Classical 0 0 0 0 0 0 0
+ Barbarian -0.2 -1.0 +0.2 -2.0 +0.0 +1.2 +0.5
+ Hermit +0.5 +1.0 +0.5 +3.0 +0.4 -0.5 -0.5
+ Lost Soul 0 0 0 0 0 0 0
+ Skeleton -0.5 -0.5 +0.5 -1.0 -0.1 +0.8 0
+ Spectre +0.2 +0.8 +0.7 +2.0 +0.2 -0.5 -0.2
+ Vampire 0 0 0 0 0 0 0
+ Zombie -0.2 -0.2 +0.5 -1.0 -0.1 +0.5 0
diff --git a/lib/help/bldg.txt b/lib/help/bldg.txt
new file mode 100644
index 00000000..3a767968
--- /dev/null
+++ b/lib/help/bldg.txt
@@ -0,0 +1,59 @@
+|||||oy
+~~~~~01|Buildings
+#####R=== Historical Town View ===
+The town is composed of both stores and buildings.
+
+#####RStores
+The stores are where you can pick up the supplies you need before entering the
+depths of the dungeon. These include:
+
+[[[[[GGeneral Store (1):] food, torches, shovels... the necessities.
+[[[[[GArmoury (2):] to protect from the ravages of the dungeon.
+[[[[[GWeaponsmith (3):] they carry anything sharp and to the point.
+[[[[[GTemple (4):] prayerbooks and those items holy.
+[[[[[GAlchemist (5):] for all sorts of bubbling potions and scrolls.
+[[[[[GMagic Shop (6):] get your wands and spellbooks here.
+[[[[[GBlack Market (7):] the prices are high, but the items unique.
+[[[[[GYour Home (8):] to store your precious treasures.
+[[[[[GBook Store (9):] for all sorts of basic spell book needs.
+
+#####ROther Buildings
+In addition to the basic stores, there are some special buildings that can be
+found in some towns. These buildings (represented by +'s) include:
+
+[[[[[GMayor's Office/Castle:] The administrative center of the town.
+Adventurers looking for work besides exploring the dungeon should hunt in here.
+[[[[[GPet Shop:] Great place to purchase eggs and get pets.
+[[[[[GThe Soothsayer:] To discover what *****/afatespoi.txt*0[fates ("a")] lie in store for you.
+[[[[[GThe Inn:] Wine, dine, rest and relax!
+[[[[[GThe Nest:] Thunderlords are masters of teleportation, and will consent to bear
+you to your chosen dungeon destination for a fee.
+[[[[[GBeastmaster Shanty:] For those who enjoy trophy hunting, and to research the
+strange animals seen during their adventures.
+[[[[[GFighters Hall:] The place to reforge weapons and armour.
+[[[[[GRangers Guild:] The place to reforge bows and arrows.
+[[[[[GLibrary:] For information of all kinds.
+[[[[[GGambling House:] Read the *****/bgambling.txt*0[rules ("b")] before paying. The games are not
+rigged, just naturally difficult.
+[[[[[GTower of Magery/Wizards Spire:] The wizards will identify your items or recharge
+your magical items for a fee.
+[[[[[GInner temple/Priests Circle:] A place of healing.
+[[[[[GPaladin guild:] Some healing and enchantments available.
+[[[[[GThe Mathom House:] Donate your unwanted items to this museum.
+... and several more!
+
+Some of the places have been known to give out quests to adventurers they
+deem capable enough. While the mayor's office is the obvious place to start,
+the Sea Dome or Beastmaster Shanty may also want you to bring in various heads
+for reasons of their own. Go into every building you can find. Quests may
+pop up in unexpected places.
+
+There are misty rumours that there may be stores outside of Bree. The faintest
+speak of stores of powerful items deep in the dungeon.
+Rumours can be helpful or just plain silly.
+All buildings are made of stone and unlikely to move around.
+
+
+ File Updated for Pern 4.x.x by Dawnmist.
+ File Updated for ToME 2.1.x by Kat B.
+ File Updated for ToME 2.3.x by gwooledge
diff --git a/lib/help/c_alchem.txt b/lib/help/c_alchem.txt
new file mode 100644
index 00000000..5c923f87
--- /dev/null
+++ b/lib/help/c_alchem.txt
@@ -0,0 +1,135 @@
+|||||oy
+~~~~~01|Alchemist
+~~~~~02|Classes|Alchemist
+#####R=== Alchemists ===
+
+#####GDescription
+Alchemists are the only class that can harness the abilities of the
+essences found in the dungeon. They can add these essences to staves,
+rings, wands, rods, and sometimes weapons and armour to create new items
+or recharge old ones. They can also extract essences from magical items
+they find. Using these abilities, Alchemists can get very good items at
+low levels. The trouble is getting them to survive later on.
+
+Alchemists are extremely proficient with all kinds of magical devices,
+and have made a fine art of extracting, storing, and using these
+objects' magical energies. Because they neither fight well nor cast
+powerful spells, Alchemists rely on their craftsmanship to cope with
+the dangers of the dungeons. They will quickly learn to create damage-
+dealing wands, rods, and staffs, forge powerful weapons and armour,
+make highly useful objects of other kinds, and eventually, at great cost
+to other knowledge, they can learn the perilous art of artifact creation
+itself.
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +0%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.700]
+ Weaponmastery 0.700 [0.700]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 3.000 [0.900]
+ Magic-Device 1.000 [1.250]
+ Geomancy
+ Fire 0.000 [0.100]
+ Water 0.000 [0.100]
+ Air 0.000 [0.100]
+ Earth 0.000 [0.100]
+ Meta 0.000 [0.500]
+ Conveyance 0.000 [0.100]
+ Divination 0.000 [0.500]
+ Temporal 0.000 [0.100]
+ Mind 0.000 [0.100]
+ Nature 0.000 [0.100]
+ Necromancy 0.000 [0.100]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 0.000 [0.100]
+ Alchemy 1.000 [0.800]
+Spirituality 1.000 [0.800]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*An Alchemist cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+An Alchemist begins the game with:
+ a Dagger
+ six Essences of Explosion
+ an Empty Bottle
+ a Set of Leather Gloves
+~~~~~03|Alchemist|Alchemy powers explained
+~~~~~05|Skills|Alchemy - Alchemy powers
+#####GAlchemy
+[[[[[BThe alchemical techniques are accessed using the 'm' key.]
+Alchemists may then 'E'xtract essences or add 'P'owers. The Alchemist [[[[[vmust]
+be wearing GLOVES to use their alchemy powers.
+
+An Alchemists is also capable of [[[[[Bcreating their own artifacts], but
+this is a time-consuming, and costly, activity. To do so, he must first
+learn the ability *****ability.txt*09[Artifact Creation], which costs a whopping 70 skill points
+to learn, and requires some high pre-requisites. Once he has done so,
+he needs to imbue an ego item with a number of essences of magic (equal
+to their skill level) and then wield the item. While using the item,
+it will gain experience (which reduces the amount of exp the wearer
+gains during this time). When the Alchemist feels that the item is
+powerful enough, he can finalise the artifact by "buying" powers using
+the experience the artifact has collected. He will also require exotic
+ingredients to add the abilities.
+
+Most (but not all) potions, scrolls, wands, staffs, rods, rings, and
+amulets contain usable magical energies. An Alchemist taps that
+energy, using the technique "'E'xtract essences" to create one or more
+essences of a type appropriate to the original object.
+
+The drained object itself is now called "of nothing". Unlike any
+other kind of object, it can have new magics added to it.
+
+An Alchemist can add power to such items by using essences he made or
+found. He does this with the technique "'P'ower". He can then select
+the object he wishes to enchant, and the kind of object he wishes to
+create. Only object types for which he knows the recipe will be displayed,
+and ones for which essences are lacking will be displayed in red. Objects
+whose level exceeds his own are sometimes difficult to create, though
+he can always add gold to improve the chances of his success.
+
+[[[[[BA few pointers:]
+ -Recipes are (usually) logical. Acid essences don't make Dragon
+ Weapons. And you can always look at the recipes you know with
+ the "recipe 'B'ook" command.
+ -Not all objects or ego-item types can be made using alchemy.
+ -Alchemy is mostly reversible. Most items that you can
+ 'E'xtract from, you can later re-create, if you learn about
+ them when extracting from them. You won't always get enough
+ essences from destroying an item to recreate it, though the
+ chance of doing so will get higher as you increase in skill.
+ -*Identifying* an object that you can destroy will always teach
+ you how to create it (if creating it is possible).
+ -Since you can't create abilities in artifacts that you aren't
+ aware of, make sure to *identify* all the artifacts you can.
+ -You can't *identify* things you buy in shops, so you'll have
+ to extract from them and take your chances.
+
+[[[[[BSome Recipes:]
+Any Alchemist worth his salt knows lots of recipes. By extracting from
+items in the dungeon, he learns to create more and more items. You can
+see the recipes you know using the "recipe 'B'ook" command. The Alchemist
+starts off knowing some basic recipes, and gains more recipes as time
+goes on.
+
+More details can be found in the *****essences.txt*0[Essences SPOILER]).
+
diff --git a/lib/help/c_archer.txt b/lib/help/c_archer.txt
new file mode 100644
index 00000000..852f1742
--- /dev/null
+++ b/lib/help/c_archer.txt
@@ -0,0 +1,68 @@
+~~~~~01|Archer
+~~~~~02|Classes|Archer
+#####R=== Archers ===
+
+#####GDescription
+Archers are to bows what warriors are to melee. They are the best class
+around with any bow/crossbow/sling/boomerang.
+
+Needing a lot of ammo, they will learn early how to make it from junk found
+in the dungeons. They also gain, at skill level 20, the unique ability to make
+their arrows/bolts/shots pierce through monsters!
+
+#####GStarting Stat Modifiers
+Strength +2
+Intelligence +1
+Wisdom +0
+Dexterity +2
+Constitution +1
+Charisma +1
+Hit Die +d4
+Spell Points +0%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.800]
+ Weaponmastery 1.000 [0.500]
+ Archery 1.000 [0.850]
+ Sling-mastery 0.000 [0.500]
+ Bow-mastery 0.000 [0.500]
+ Crossbow-mastery 0.000 [0.500]
+ Boomerang-mastery 0.000 [0.500]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 0.000 [0.200]
+ Magic-Device 1.000 [1.100]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Ammo creation 2
+
+#####GStarting Equipment
+An Archer begins the game with:
+ a Short Bow
+ a Sling
+ some ammo
+~~~~~03|Creating Ammo
+#####GCreating AMmo
+Archers automatically gain the *****ability.txt*07[Ammo Creation] ability when they reach character
+level 2. (Other classes can purchase this ability when they have enough skill
+points.) This ability is accessed via the 'm' command. The first type of
+ammo you can make is sling ammo (pebbles or shots); as you increase in skill
+you'll be able to make other arrows (bow ammo) or bolts (crossbow ammo).
+
+Shots (or other sling ammo) are created from rubble piles found in the dungeons
+and other places. To make shots, stand next to a rubble pile, activate the
+ammo creation ability from the 'm' menu, select 's'hots, then specify the
+direction to the rubble pile, which will be consumed during the ammo creation.
+Arrows or bolts are made from "junk" items ('~' symbol, such as shards of
+pottery) that you can find in the dungeons and other places. To make arrows or
+bolts, assuming you have sufficient Archery skill, you must have the junk item
+in your inventory or on the ground at your feet. Specify the junk item after
+selecting 'a'rrows or 'b'olts from the ammo creation menu, and it will be
+consumed and replaced with a stack of ammo.
diff --git a/lib/help/c_assass.txt b/lib/help/c_assass.txt
new file mode 100644
index 00000000..4269e3e8
--- /dev/null
+++ b/lib/help/c_assass.txt
@@ -0,0 +1,58 @@
+~~~~~01|Assassin
+~~~~~02|Classes|Assassin
+#####R=== Assassins ===
+#####GDescription
+Assassins are similar to Rogues, but have trained their combat abilities more
+extensively by neglecting the study of magic. They also tend to be more stealthy
+and careful in their dungeon exploration, but aren't so good at stealing,
+trapping and disarming as their more "peaceful" counterparts.
+
+Assassins have access to the schools of *****m_convey.txt*0[Conveyance], *****m_divin.txt*0[Divination] and *****m_tempo.txt*0[Temporal] magic.
+
+#####GStarting Stat Modifiers
+Strength +2
+Intelligence +1
+Wisdom -2
+Dexterity +3
+Constitution +1
+Charisma -1
+Hit Die +d6
+Spell Points +0%
+Exp Penalty 25%
+
+#####GStarting Skills
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.800]
+ Weaponmastery 1.000 [0.800]
+ Sword-mastery 1.000 [0.600]
+ Critical-hits 2.000 [0.800]
+ Archery
+ Boomerang-mastery 1.000 [0.300]
+Sneakiness 1.000 [2.000]
+ Stealth 1.000 [2.000]
+ Disarming 1.000 [1.000]
+ Backstab 1.000 [2.000]
+ Stealing 1.000 [0.200]
+ Dodging 1.000 [2.000]
+Magic 1.000 [0.200]
+ Magic-Device 1.000 [0.750]
+ Conveyance 0.000 [0.100]
+ Divination 0.000 [0.100]
+ Temporal 0.000 [0.200]
+Spirituality 1.000 [0.700]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*An Assassin cannot learn the Archery skill, but it is shown in his skill
+screen because Boomerang-mastery is a sub-skill of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 10
+
+#####GStarting Equipment
+An Assassin begins the game with:
+ a Dagger
+
+
+
diff --git a/lib/help/c_axemas.txt b/lib/help/c_axemas.txt
new file mode 100644
index 00000000..cdd6ba88
--- /dev/null
+++ b/lib/help/c_axemas.txt
@@ -0,0 +1,51 @@
+~~~~~01|Axemaster
+~~~~~02|Classes|Axemaster
+#####R=== Axemasters ===
+
+#####GDescription
+The Axemaster is a Warrior who specialises in axes.
+The training is so intense and specific that Axemasters gain huge bonuses
+when fighting with their chosen weapon, dependent on their Axe-mastery skill.
+In most other respects they perform about as well as a generic Warrior.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.900]
+ Weaponmastery 1.000 [0.950]
+ Sword-mastery 0.000 [0.300]
+ Axe-mastery 1.000 [0.700]
+ Hafted-mastery 0.000 [0.300]
+ Polearm-mastery 0.000 [0.300]
+ Archery 1.000 [0.600]
+ Antimagic 0.000 [0.550]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 1.000 [0.300]
+ Magic-Device 1.000 [1.150]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+An Axemaster begins the game with:
+ a Ring of Fear Resistance
+ a Chain Mail
+ a Hatchet
diff --git a/lib/help/c_bard.txt b/lib/help/c_bard.txt
new file mode 100644
index 00000000..23ba42ca
--- /dev/null
+++ b/lib/help/c_bard.txt
@@ -0,0 +1,69 @@
+|||||oy
+~~~~~01|Bard
+~~~~~02|Classes|Bard
+#####R=== Bards ===
+
+#####GDescription
+Bards are traditional musicians. Their magical attacks are sound-based, and
+last as long as the Bard has mana. If the Bard runs out of mana, he/she stops
+singing. There is also a low-level "spell" that will cease the song.
+
+While any class can use musical instruments, only Bards can tap the
+power of voice to aid themselves and hinder, dismay, and kill their
+foes.
+
+#####GMagic Usage
+
+Songs are continuous, and the song consumes mana every turn in order to
+maintain itself. The song will continue, once played, until either the 'Stop
+Singing' song is sung, or the player's mana runs out.
+
+Each song has a magic school level associated with, just as any other magic
+spell does. Each song also has a Roman numeral (e.g. I, II, III, IV, V)
+following its name. These numerals correspond to 1, 2, 3, 4, 5. The higher the
+numeral, the more music skill the Bard must have to play that song.
+
+Each musical instrument has a value between 1 and 4 assigned to it, as well.
+The higher the number, the better the craftmanship. A Bard can only play
+higher level songs with a more powerful instrument. You would be able to cast
+"Stop Singing (I)" and "Song of the Sun (I)" with a a Harp (+1). A Harp (+2)
+would allow you to sing those songs, as well as "Flow of Life (II)".
+
+For information on song effects see the *****m_music.txt*0[Music Songs] file.
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution +0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+ Barehand-combat 1.000 [0.600]
+Sneakiness 1.000 [0.700]
+ Stealth 1.000 [0.700]
+ Disarming 1.000 [0.600]
+Magic 1.000 [0.600]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.800]
+ Prayer 0.000 [0.500]
+ Music 1.000 [0.800]
+Monster-lore 1.000 [1.100]
+ Summoning 0.000 [0.400]
+ Corpse-preservation 1.000 [0.700]
+ Symbiosis 0.000 [0.400]
+ Mimicry 0.000 [0.400]
+
+#####GStarting Equipment
+A Bard begins the game with:
+ a Harp (+1)
+ a Short Sword
+ a Robe
+ a Potion of Healing
diff --git a/lib/help/c_demono.txt b/lib/help/c_demono.txt
new file mode 100644
index 00000000..98b0bc9b
--- /dev/null
+++ b/lib/help/c_demono.txt
@@ -0,0 +1,54 @@
+|||||oy
+~~~~~01|Demonologist
+~~~~~02|Classes|Demonologist
+#####R=== Demonologists ===
+
+#####GDescription
+Masters of the Demons, members of this class can gain tremendous power
+over demonkind, either for good or for evil ends.
+
+Their spells are contained in specific blades, shields and helms (actually
+shaped in the form of horns) which when wielded allow the Demonologist to
+cast spells unique to her class; each piece of equipment holds 3 spells.
+
+See the information on the *****m_demono.txt*0[Demonology] school of magic for more details.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.750]
+ Weaponmastery 1.000 [0.750]
+ Sword-mastery 0.000 [0.600]
+ Archery 2.000 [0.400]
+Sneakiness 2.000 [1.800]
+ Stealth 0.000 [0.400]
+ Disarming 2.000 [1.800]
+Magic 2.000 [0.700]
+ Magic-Device 1.000 [1.150]
+ Demonology 1.000 [1.000]
+Spirituality 2.000 [0.700]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+A Demonologist begins the game with:
+ a Ring of Fear Resistance
+ a Demonblade
+ a Chain Mail
+
diff --git a/lib/help/c_druid.txt b/lib/help/c_druid.txt
new file mode 100644
index 00000000..0b0493e2
--- /dev/null
+++ b/lib/help/c_druid.txt
@@ -0,0 +1,55 @@
+|||||oy
+~~~~~01|Druid
+~~~~~02|Classes|Druid
+~~~~~03|Yavanna|Druid
+#####R=== Druids ===
+
+#####GDescription
+When Melkor first dug up Utumno and Angband, rivers were polluted and gave
+birth to dark clouds of stinging insects; animals changed into dark, horrible
+horned things and the forests themselves screamed in horror at their corruption.
+
+*****g_yavann.txt*0[Yavanna] heard this scream and gave to some of the children of Eru the strength
+to defend Nature; at first Ents were chosen, but later on other races were
+allowed to tread the path of the Druid.
+
+The embodiment of life itself, a Druid is a true force of nature and nothing
+can prevent him from completing his final quest: returning Angband to the
+grassy sunlit plain it once was.
+
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.700]
+ Weaponmastery 1.000 [0.750]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.600]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [1.500]
+ Mindcraft 0.000 [0.600]
+Monster-lore 1.000 [1.200]
+ Summoning 1.000 [0.700]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Druid begins the game with:
+ a Spellbook of Charm Animal
+ a Mace
diff --git a/lib/help/c_geoman.txt b/lib/help/c_geoman.txt
new file mode 100644
index 00000000..47855875
--- /dev/null
+++ b/lib/help/c_geoman.txt
@@ -0,0 +1,59 @@
+|||||oy
+~~~~~01|Geomancer
+~~~~~02|Classes|Geomancer
+#####R=== Geomancers ===
+
+#####GDescription
+Geomancers harness the power of the elements earth, air, fire and water.
+The level of their *****skills.txt*60[Geomancy] skill gives them access to their own
+*****m_geoman.txt*0[school of Geomancy], but the levels of the Fire, Water, Air, and Earth
+skills will have an effect on the outcome of each spell.
+
+Geomancers need the aid of a Mage Staff in order to use their powers.
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.200]
+ Weaponmastery 0.700 [0.400]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 1.000 [0.700]
+ Geomancy 1.000 [0.700]
+ Fire 1.000 [1.050]
+ Water 1.000 [1.050]
+ Air 1.000 [1.050]
+ Earth 1.000 [1.050]
+ Meta 0.000 [0.700]
+ Conveyance 0.000 [0.700]
+ Divination 0.000 [0.700]
+ Temporal 0.000 [0.700]
+ Mind 0.000 [0.700]
+ Nature 0.000 [0.700]
+ Necromancy 0.000 [0.700]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 0.000 [0.700]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Geomancer begins the game with:
+ a Spellbook of Geyser
+ a Mage Staff
diff --git a/lib/help/c_hafted.txt b/lib/help/c_hafted.txt
new file mode 100644
index 00000000..7e8a3f89
--- /dev/null
+++ b/lib/help/c_hafted.txt
@@ -0,0 +1,54 @@
+~~~~~01|Haftedmaster
+~~~~~02|Classes|Haftedmaster
+#####R=== Haftedmasters ===
+
+#####GDescription
+The Haftedmaster is a Warrior who specialises in blunt weapons.
+
+The training is so intense and specific that Haftedmasters gain huge bonuses
+when fighting with their chosen weapon, dependent on their *****skills.txt*06[Hafted-mastery] skill.
+
+In most other respects they perform about as well as a generic Warrior.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.900]
+ Weaponmastery 1.000 [0.950]
+ Sword-mastery 0.000 [0.300]
+ Axe-mastery 0.000 [0.300]
+ Hafted-mastery 1.000 [0.700]
+ Stunning-blows 0.000 [0.500]
+ Polearm-mastery 0.000 [0.300]
+ Archery 1.000 [0.600]
+ Antimagic 0.000 [0.550]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 1.000 [0.300]
+ Magic-Device 1.000 [1.150]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+An Haftedmaster begins the game with:
+ a Ring of Fear Resistance
+ a Chain Mail
+ a Flail
diff --git a/lib/help/c_lorema.txt b/lib/help/c_lorema.txt
new file mode 100644
index 00000000..35c2093b
--- /dev/null
+++ b/lib/help/c_lorema.txt
@@ -0,0 +1,54 @@
+|||||oy
+~~~~~01|Loremaster
+~~~~~02|Classes|Loremaster
+#####R=== Loremasters ===
+
+#####GDescription
+Loremasters are students of the creatures of Arda.
+
+To protect themselves during their observations, they usually learn how to
+pass unobserved, but should their attempt fail they have decent saving throws
+and almost always learn some kind of combat style, but the exact preference
+varies from Loremaster to Loremaster.
+
+As a result of their studies, they become familiar with a broad range of
+skills, ranging from *****skills.txt*45[Possession] and *****m_symbio.txt*0[Symbiosis] to *****skills.txt*43[Summoning] and *****skills.txt*47[Mimicry].
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution +0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+ Archery 1.000 [0.700]
+ Barehand-combat 1.000 [0.700]
+Sneakiness 1.000 [0.700]
+ Stealth 1.000 [0.700]
+ Disarming 1.000 [0.700]
+Magic 0.000 [0.600]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.700]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 1.000 [1.100]
+ Summoning 0.000 [0.500]
+ Corpse-preservation 1.000 [0.700]
+ Possession 0.000 [0.500]
+ Symbiosis 0.000 [0.500]
+ Mimicry 0.000 [0.500]
+
+#####GStarting Equipment
+A Loremaster begins the game with:
+ a Sling
+ a Hard Leather Armour
+ a Quarterstaff
+ some Rounded Pebbles
diff --git a/lib/help/c_mage.txt b/lib/help/c_mage.txt
new file mode 100644
index 00000000..949d3bcc
--- /dev/null
+++ b/lib/help/c_mage.txt
@@ -0,0 +1,67 @@
+|||||oy
+~~~~~01|Mage
+~~~~~02|Classes|Mage
+#####R=== Mages ===
+
+#####GDescription
+A Mage must live by his wits. He cannot hope to simply hack his way
+through the dungeon, and so must therefore use his magic to defeat,
+deceive, confuse, and escape. A Mage is not really complete without an
+assortment of magical devices to use in addition to his spells. He can
+master the higher level magical devices easily and has good saving throws.
+
+There is no reason a Mage cannot become a good fighter, but spells are
+his true realm. For more information on magic schools and spell effects see
+the *****magic.txt*01[Magic help file].
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.500]
+ Weaponmastery 0.700 [0.500]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.200]
+ Spell-power 0.000 [0.600]
+ Sorcery 0.000 [0.200]
+ Mana 1.000 [0.900]
+ Geomancy
+ Fire 0.000 [0.900]
+ Water 0.000 [0.900]
+ Air 0.000 [0.900]
+ Earth 0.000 [0.900]
+ Meta 0.000 [0.900]
+ Conveyance 0.000 [0.900]
+ Divination 0.000 [0.900]
+ Temporal 0.000 [0.900]
+ Mind 0.000 [0.900]
+ Nature 0.000 [0.900]
+ Necromancy 0.000 [0.700]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 0.000 [0.700]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*A Mage cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Mage begins the game with:
+ a Book of Beginner Cantrips
+ a Dagger
diff --git a/lib/help/c_merch.txt b/lib/help/c_merch.txt
new file mode 100644
index 00000000..31fb60dd
--- /dev/null
+++ b/lib/help/c_merch.txt
@@ -0,0 +1,29 @@
+#####R=== Merchants ===
+
+#####GDescription
+A Merchant is neither a warrior nor a spellcaster. They still have some great
+advantages, they can use chests to warp items into other items, they can
+indentify items, they soon learn to detect all objects in the area, and
+at higher level they can see all monsters carrying objects. They will also
+get the power to appraise items and to turn them into gold. A merchant will
+naturraly get better prices in shops and get access to the merchant guild
+services, loan and item request.
+
+#####GPrimary Stats
+Charisma
+Intelligence (Ability stat)
+
+#####GMagic Usage
+Merchants can use portable holes to carry more stuff than other classes but
+at the cost of an increased weight. To do that they must wear a portable hole
+and use it with 'm'.
+They also can use their merchants abilities and midas touch in the 'U' menu.
+
+#####GStarting Equipment
+A merchant begins the game with:
+ A portable hole
+ A small steel chest containing gold and items
+ A long sword
+ A wand of tame monsters
+
+
diff --git a/lib/help/c_mimic.txt b/lib/help/c_mimic.txt
new file mode 100644
index 00000000..b9378a03
--- /dev/null
+++ b/lib/help/c_mimic.txt
@@ -0,0 +1,53 @@
+~~~~~01|Mimic
+~~~~~02|Classes|Mimic
+#####R=== Mimics ===
+
+#####GDescription
+Mimics possess the ability to transform into various creatures using
+special cloaks. While transformed, they lose their intrinsic abilities,
+and gain those of the creature they have transformed into.
+
+At higher skill levels, Mimics gain additional Mimicry powers which help them
+to further blend in with their surroundings or modify themselves.
+
+See more on *****m_mimic.txt*0[Mimicry powers].
+
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution +0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.800]
+ Weaponmastery 1.000 [0.800]
+ Archery 1.000 [0.700]
+ Barehand-combat 1.000 [0.600]
+Sneakiness 1.000 [0.800]
+ Stealth 1.000 [0.800]
+ Disarming 1.000 [0.700]
+Magic 1.000 [0.700]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.500]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 1.000 [1.100]
+ Corpse-preservation 1.000 [0.900]
+ Possession 0.000 [0.100]
+ Mimicry 1.000 [0.800]
+
+#####GStarting Equipment
+A Mimic begins the game with:
+ a Mouse Fur
+ a Potion of Healing
+ a Dagger
+
+
+
diff --git a/lib/help/c_mindcr.txt b/lib/help/c_mindcr.txt
new file mode 100644
index 00000000..c4ed2747
--- /dev/null
+++ b/lib/help/c_mindcr.txt
@@ -0,0 +1,57 @@
+|||||oy
+~~~~~01|Mindcrafter
+~~~~~02|Classes|Mindcrafter
+#####R=== Mindcrafters ===
+
+#####GDescription
+The Mindcrafter is a priest who uses the powers of mind instead of magic.
+These abilities vary from simple extrasensory perception to mental domination of
+others. Since these powers are developed by the practice of certain
+disciplines, a Mindcrafter requires no spellbooks to use them.
+The Mindcrafter uses the Mindcraft skill to determine how well she can
+perform these psychic "spells", and available powers are simply determined by
+the skill level. In combat a Mindcrafter is roughly the equivalent of a
+priest.
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+Sneakiness 1.000 [1.100]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.150]
+ Spell-power 0.000 [0.600]
+ Necromancy 0.000 [0.400]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [0.900]
+ Mindcraft 1.000 [0.900]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GMindcraft Powers
+Although the powers of a Mindcrafter may seem like magic, this is not
+-- strictly speaking -- the case. They are mental powers, independent
+of the ordinary sources of magic. Consequently, Mindcrafters are not
+interested in 'magic' and learn no spells. These mental powers can be
+accessed through the "m" command, and you can find a full list of their
+powers in the *****m_mindcr.txt*0[Mindcraft powers] document.
+
+#####GStarting Equipment
+A Mindcrafter begins the game with:
+ a Mace
diff --git a/lib/help/c_monk.txt b/lib/help/c_monk.txt
new file mode 100644
index 00000000..87730f18
--- /dev/null
+++ b/lib/help/c_monk.txt
@@ -0,0 +1,87 @@
+|||||oy
+~~~~~01|Monk
+~~~~~02|Classes|Monk
+#####R=== Monks ===
+
+#####GDescription
+The Monk character class is very different from all other classes.
+Although they can use weapons and armour just like any other class,
+their training in martial arts makes them much more powerful with no
+armour nor weapons.
+
+As the Monk's skill level rises, new and more powerful forms of attack become
+available. It is also rumoured that the monastic training makes experienced
+monks faster than any other character class!
+
+A Monk might need to wear some kind of armour to gain the resistances necessary
+for survival at higher levels, but if that armour is too heavy, it will
+severely disturb his/her martial arts maneuvers.
+
+If skill points are invested in *****skills.txt*20[Dodging], a Monk's defensive capabilities
+(blocking and dodging) will also increase. However, if armour is being worn,
+dodging is much less effective. Fortunately, a Monk can increase his/her
+ability to fight while still wearing armor by increasing his/her
+*****skills.txt*13[Barehanded-combat] skill.
+
+Monks also have access to the schools of *****m_meta.txt*0[Meta],
+*****m_tempo.txt*0[Temporal] and *****m_mind.txt*0[Mind] magic.
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution +0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 0.000 [0.900]
+ Weaponmastery 0.000 [0.300]
+ Archery 0.000 [0.400]
+ Barehand-combat 1.000 [0.900]
+Sneakiness 1.000 [0.900]
+ Stealth 1.000 [0.900]
+ Disarming 1.000 [0.900]
+ Dodging 0.000 [0.700]
+Magic 0.000 [0.600]
+ Magic-Device 1.000 [1.000]
+ Meta 0.000 [0.500]
+ Temporal 0.000 [0.500]
+ Mind 0.000 [0.500]
+Spirituality 1.000 [0.900]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 1.000 [1.100]
+ Corpse-preservation 1.000 [0.500]
+ Possession 0.000 [0.100]
+
+#####GStarting Equipment
+A Monk begins the game with:
+ a Potion of Healing
+ a Soft Leather Armour
+~~~~~03|Monk|Monk attacks
+~~~~~04|Tables|Monk attacks
+#####GMonk Attacks
+#####BAttack Name Min.lvl Damage Stun Notes
+-----------------------------------------------------------------------------
+Punch 1 1d4 -
+Kick 2 1d6 -
+Strike 3 1d7 -
+Knee 5 2d3 * Painful to males; likely to stun them
+Elbow 7 1d8 -
+Butt 9 2d5 -
+Ankle Kick 11 3d4 - May slow down the opponent
+Uppercut 13 4d4 6
+Double-kick 16 5d4 8
+Cat's Claw 20 5d5 -
+Jump Kick 25 5d6 10
+Eagle's Claw 29 6d6 -
+Circle Kick 33 6d8 10
+Iron Fist 37 8d8 10
+Flying Kick 41 8d10 12
+Dragon Fist 45 10d10 16
+Crushing Blow 48 10d12 18
diff --git a/lib/help/c_necro.txt b/lib/help/c_necro.txt
new file mode 100644
index 00000000..f3a5ad2c
--- /dev/null
+++ b/lib/help/c_necro.txt
@@ -0,0 +1,80 @@
+|||||oy
+~~~~~01|Necromancer
+~~~~~02|Classes|Necromancer
+#####R=== Necromancers ===
+
+#####GDescription
+As a Priest devotes his life to his chosen deity, so Necromancers
+devote their lives to the study of death. Familiar with all of the
+forms of unbeing, they are able to manipulate spirit and flesh for
+great effect.
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.400]
+ Weaponmastery 0.700 [0.600]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.200]
+ Spell-power 0.000 [0.600]
+ Mana 0.000 [0.600]
+ Geomancy
+ Fire 0.000 [0.800]
+ Water 0.000 [0.700]
+ Air 0.000 [0.700]
+ Earth 0.000 [0.800]
+ Meta 0.000 [0.700]
+ Conveyance 0.000 [0.700]
+ Divination 0.000 [0.700]
+ Temporal 0.000 [0.800]
+ Mind 0.000 [0.900]
+ Nature 0.000 [0.500]
+ Necromancy 1.000 [1.000]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 0.000 [0.700]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 1.000 [1.100]
+ Corpse-preservation 5.000 [0.900]
+
+*A Necromancer cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+Undead Form 25
+
+#####GStarting Equipment
+A Necromancer begins the game with:
+ a Book of Beginner Cantrips
+ a Dagger
+
+#####GNecromancy
+*****m_necrom.txt*0[Necromancy powers] [[[[[Bare accessed using the 'm' key.]
+Even from the start of his career, an inexperienced Necromancer
+can channel forces from the underworld to assault the mind of
+living creatures, therefore terrifying them. With little effort he
+can also learn the art of reanimating a dead corpse, turning it into
+an undead slave. It is only at a later point in his career that this
+foul mage learns to manipulate his life force as well, gaining the
+ability to absorb hit points from both living and dead opponents.
+The greatest Necromancers even gain the ability to survive their own
+death: when they should be killed, they instead turn into a ghostly
+being; they then receive a set number of Death Points, which are in
+all respects similar to hit points except that they go automatically
+down each turn. If the Necromancer manages to kill a certain number
+of creatures before his Death Points reach 0 he is returned to life;
+otherwise his will dissipates and he finally achieves true death.
diff --git a/lib/help/c_palad.txt b/lib/help/c_palad.txt
new file mode 100644
index 00000000..b4cc650b
--- /dev/null
+++ b/lib/help/c_palad.txt
@@ -0,0 +1,49 @@
+|||||oy
+~~~~~01|Paladin
+~~~~~02|Classes|Paladin
+~~~~~03|Tulkas|Paladin
+#####R=== Paladins ===
+
+#####GDescription
+A Paladin is a warrior-priest at the service of *****g_tulkas.txt*0[Tulkas]. As such, his duty
+is to be ever vigilant against the forces of evil and even seek and destroy
+those monsters which are evil to the core, especially the foulest
+spawns of hell. Luckily, his quest is eased by the blessing bestowed
+by Tulkas himself.
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.800]
+ Weaponmastery 1.000 [0.800]
+ Barehand-combat 0.000 [0.900]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.600]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [1.400]
+ Mindcraft 0.000 [0.600]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+Extra Max Blow(1) 1
+
+#####GStarting Equipment
+A Paladin begins the game with:
+ a Spellbook of Divine Aim
+ a Two-Handed Sword
diff --git a/lib/help/c_polear.txt b/lib/help/c_polear.txt
new file mode 100644
index 00000000..8ea2f04a
--- /dev/null
+++ b/lib/help/c_polear.txt
@@ -0,0 +1,52 @@
+~~~~~01|Polearmmaster
+~~~~~02|Classes|Polearmmaster
+#####R=== Polearmmasters ===
+
+#####GDescription
+The Polearmmaster is a Warrior who specialises in polearms.
+
+The training is so intense and specific that Polearmmasters gain huge bonuses
+when fighting with their chosen weapon, dependent on their Polearm-mastery
+skill. In most other respects they perform about as well as a generic Warrior.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.900]
+ Weaponmastery 1.000 [0.950]
+ Sword-mastery 0.000 [0.300]
+ Axe-mastery 0.000 [0.300]
+ Hafted-mastery 0.000 [0.300]
+ Polearm-mastery 1.000 [0.700]
+ Archery 1.000 [0.600]
+ Antimagic 0.000 [0.550]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 1.000 [0.300]
+ Magic-Device 1.000 [1.150]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+A Polearmmaster begins the game with:
+ a Ring of Fear Resistance
+ a Chain Mail
+ a Pike
diff --git a/lib/help/c_posses.txt b/lib/help/c_posses.txt
new file mode 100644
index 00000000..2d67a883
--- /dev/null
+++ b/lib/help/c_posses.txt
@@ -0,0 +1,70 @@
+~~~~~01|Possessor
+~~~~~02|Classes|Possessor
+#####R=== Possessors ===
+
+#####GDescription
+Possessors are unusual; they aren't good fighters, and they can't cast
+magic. Their special ability is that of being able to leave their
+bodies and inhabit corpses. While "in" a corpse, the Possessor gains
+the abilities of the monster, and their hit points and the monster's
+are averaged. (Most monsters have no, or very few, spell points.) While
+in the incorporeal form between bodies, they have only one hitpoint.
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution +0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.600]
+ Weaponmastery 1.000 [0.600]
+ Archery 1.000 [0.400]
+Sneakiness 1.000 [0.700]
+ Stealth 1.000 [0.700]
+ Disarming 1.000 [0.500]
+Magic 0.000 [0.600]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.500]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 1.000 [1.100]
+ Corpse-preservation 1.000 [0.900]
+ Possession 1.000 [0.800]
+
+#####GStarting Equipment
+A Possessor begins the game with:
+ a Potion of Healing
+ a Short Sword
+ a Hard Leather Armour
+
+~~~~~03|Possessor|Possessor powers
+~~~~~04|Skills|Possession - Possessor powers
+#####GPossession
+The strange art of reanimating the corpse of a monster and making
+it one's own can be of extreme benefit to those skilled in it. The body
+the player possesses can grant powerful abilities, such as increased
+speed, summoning, healing, breathing, and various resistances, and often
+gives the player a large number of hit points. Possessing uniques is
+especially neat.
+
+Possessors leave their own body by using the 'm' command, and choosing
+"[I]incarnating powers". Lacking a life force to sustain it, a corpse may rot
+immediately when a Possessor leaves it, but a high Possession skill score
+may prevent this from happening. They then become a very vulnerable ghostly
+being which travels to where another corpse is lying on the floor, and
+possesses it by again using the 'm' command. Once possessed, many
+monster corpses allow the player to perform various special actions
+(such as blinking or summoning) by using the option "Use your [R]ace
+powers".
+
+All corpses alter the player's melee attacks. When they incarnate in a
+monster that allows the use of a weapon, monster blows are ignored
+[[[[[Btotally]. When they incarnate in a monster that doesn't allow use of a
+weapon (dragons for example) they use the monster blows [[[[[Band only them]!
diff --git a/lib/help/c_pr_drk.txt b/lib/help/c_pr_drk.txt
new file mode 100644
index 00000000..fa99f89f
--- /dev/null
+++ b/lib/help/c_pr_drk.txt
@@ -0,0 +1,57 @@
+|||||oy
+~~~~~01|Dark Priest
+~~~~~02|Classes|Dark Priest
+~~~~~03|Melkor|Dark Priests
+#####R=== Melkor's Priests ===
+
+#####GDescription
+All gods have priests; but those serving *****g_melkor.txt*0[Melkor], the dark enemy, are not
+like their good counterparts. While usually it takes devotion and awe to be
+inspired into serving a deity, Melkor's followers revere him because of the
+power he gives them. Some of them may even be so ambitious as to aspire to
+take his place upon the black throne of Angband. This he knows very well, but
+as long as he can use those puny mortals to inspire fear into the followers of
+the Valar and to bring destruction to Arda, he doesn't mind; he even lends power
+to the ones more bent on destruction, while sapping their minds to reduce them
+to unthinking slaves.
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.800]
+**Udun 0.000 [0.400]
+ Necromancy 0.000 [0.800]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [1.400]
+Monster-lore 0.000 [0.500]
+ Corpse-preservation 1.000 [1.000]
+
+**Actually, every character has this level of proficiency with the *****m_udun.txt*0[Udun] school,
+provided they are worshipping Melkor
+
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Priest serving Melkor begins the game with:
+ a Spellbook of Curse
+ a Mace
diff --git a/lib/help/c_pr_eru.txt b/lib/help/c_pr_eru.txt
new file mode 100644
index 00000000..ff5a0126
--- /dev/null
+++ b/lib/help/c_pr_eru.txt
@@ -0,0 +1,55 @@
+|||||oy
+~~~~~01|Priest - Eru
+~~~~~02|Classes|Priest - Eru
+~~~~~03|Eru|Priest - Eru
+#####R=== Eru's Priests ===
+
+#####GDescription
+*****g_eru.txt*0[Eru] is the father of the Valar: he created the world and all its inhabitants. He is the wisest being ever and even if he foresaw Morgoth's
+evil, his role was that of the creator; as such, he chose not to destroy
+anything on Arda.
+
+His priests are therefore expected to avoid all forms of bloodshed (so they
+can only use blunt weapons without penalty); however, Eru knows that sometimes
+destruction is unavoidable and marks a blade with his rune; his priests call
+them Blessed and use them without feeling guilty, for they know that divine
+wisdom will guide every swing of those weapons.
+
+Still, a priest serving Eru will find that his true strength lies in knowledge
+and in the use of the force of Mana to avoid close contact with evil beings,
+rather than in blind assault of Morgoth's hordes.
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.700]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [1.500]
+ Mindcraft 0.000 [0.600]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Priest serving Eru begins the game with:
+ a Spellbook of See the Music
+ a Mace
diff --git a/lib/help/c_pr_man.txt b/lib/help/c_pr_man.txt
new file mode 100644
index 00000000..3f83e8af
--- /dev/null
+++ b/lib/help/c_pr_man.txt
@@ -0,0 +1,54 @@
+|||||oy
+~~~~~01|Priest - Manwe
+~~~~~02|Classes|Priest - Manwe
+~~~~~03|Manwe|Priest - Manwe
+#####R=== Manwe's Priests ===
+
+#####GDescription
+As the forces of darkness arose, *****g_manwe.txt*0[Manwe], lord of air, realised that urgent
+action was needed to save Arda from the incoming darkness. So he started
+gathering followers from the ranks of men and elves and he instructed them to
+do battle against the forces of Udun.
+
+His priests must be quick and strike before the situation becomes
+critical, always keeping a direct line of prayer with their patron deity.
+
+Manwe doesn't tolerate laziness, but He also does not appreciate mindless
+killing; only a few measure up to his standards, but those are granted access
+to a whole series of divine powers which will help them in their enduring
+efforts.
+
+#####GStarting Stat Modifiers
+Strength -1
+Intelligence -3
+Wisdom +3
+Dexterity -1
+Constitution +0
+Charisma +2
+Hit Die +d2
+Spell Points +0%
+Exp Penalty 20%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.700]
+ Weaponmastery 1.000 [0.750]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 0.000 [0.900]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.600]
+Spirituality 1.000 [1.000]
+ Prayer 1.000 [1.500]
+ Mindcraft 0.000 [0.600]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Priest serving Manwe begins the game with:
+ a Spellbook of Manwe's Blessing
+ a Mace
diff --git a/lib/help/c_priest.txt b/lib/help/c_priest.txt
new file mode 100644
index 00000000..2054fbe5
--- /dev/null
+++ b/lib/help/c_priest.txt
@@ -0,0 +1,13 @@
+|||||oy
+~~~~~01|Priests
+#####R=== Priests ===
+
+#####GDescription
+There are 6 separate classes of Priest:
+
+*****c_pr_eru.txt*0[Priest(Eru)]
+*****c_pr_man.txt*0[Priest(Manwe)]
+*****c_druid.txt*0[Druid]
+*****c_palad.txt*0[Paladin]
+*****c_pr_drk.txt*0[Dark-Priest]
+*****c_mindcr.txt*0[Mindcrafter]
diff --git a/lib/help/c_ranger.txt b/lib/help/c_ranger.txt
new file mode 100644
index 00000000..5ca8ead9
--- /dev/null
+++ b/lib/help/c_ranger.txt
@@ -0,0 +1,55 @@
+|||||oy
+~~~~~01|Ranger
+~~~~~02|Classes|Ranger
+#####R=== Rangers ===
+
+#####GDescription
+Rangers are warrior-mages, devoted to nature. They are good fighters
+and quite effective with bows; their magic often allows them to avoid
+the worst of situations, but they have only a mild chance of resisting
+magical effects and are not terribly stealthy.
+
+They have access to the schools of *****m_divin.txt*0[Divination], *****m_convey.txt*0[Conveyance] and *****m_nature.txt*0[Nature] magic.
+
+#####GStarting Stat Modifiers
+Strength +2
+Intelligence +1
+Wisdom +0
+Dexterity +2
+Constitution +1
+Charisma +1
+Hit Die +d4
+Spell Points +0%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.800]
+ Weaponmastery 1.000 [0.500]
+ Archery 1.000 [0.750]
+ Sling-mastery 0.000 [0.300]
+ Bow-mastery 0.000 [0.300]
+ Crossbow-mastery 0.000 [0.300]
+ Boomerang-mastery 0.000 [0.300]
+Sneakiness 1.000 [0.950]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [1.600]
+Magic 1.000 [0.700]
+ Magic-Device 1.000 [1.100]
+ Conveyance 0.000 [0.500]
+ Divination 0.000 [0.500]
+ Nature 0.000 [0.500]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.700]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Ammo creation 2
+
+#####GStarting Equipment
+A Ranger begins the game with:
+ a Spellbook of Phase Door
+ a Short sword
+ a Short Bow
+ some Arrows
diff --git a/lib/help/c_rogue.txt b/lib/help/c_rogue.txt
new file mode 100644
index 00000000..b42df3d5
--- /dev/null
+++ b/lib/help/c_rogue.txt
@@ -0,0 +1,62 @@
+|||||oy
+~~~~~01|Rogue
+~~~~~02|Classes|Rogue
+#####R== Rogues ===
+
+#####GDescription
+A rogue is a jack of all trades, but the master of none. With the notable
+exception of Archery and Monster-related skills, Rogues are capable of adapting
+to almost any situation. Their strong point lies in stealth and careful
+planning: Where a Warrior would simply hack away (and risk being hacked up
+himself) or a Mage would Manathrust, a Rogue would awaken a monster with a
+dagger in the back, or would wait for the creature to be killed by the line of
+traps she had previously laid between her and her opponent.
+
+Rogues have access to the schools of *****m_convey.txt*0[Conveyance], *****m_divin.txt*0[Divination] and *****m_tempo.txt*0[Temporal] magic.
+
+#####GStarting Stat Modifiers
+Strength +2
+Intelligence +1
+Wisdom -2
+Dexterity +3
+Constitution +1
+Charisma -1
+Hit Die +d6
+Spell Points +0%
+Exp Penalty 25%
+
+#####GStarting Skills
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.700]
+ Weaponmastery 1.000 [0.700]
+ Sword-mastery 1.000 [0.300]
+ Critical-hits 1.000 [0.500]
+Sneakiness 1.000 [2.000]
+ Stealth 1.000 [1.500]
+ Disarming 1.000 [2.000]
+ Backstab 1.000 [1.000]
+ Stealing 1.000 [2.000]
+ Dodging 1.000 [2.000]
+Magic 1.000 [0.700]
+ Magic-Device 1.000 [1.550]
+ Conveyance 0.000 [0.500]
+ Divination 0.000 [0.500]
+ Temporal 0.000 [0.500]
+Spirituality 1.000 [0.700]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Trapping 1
+Extra Max Blow(1) 10
+
+#####GStarting Equipment
+A Rogue begins the game with:
+ a Dagger
+ a Catapult Trap Set
+ some Iron Shots
+
+
+
+
diff --git a/lib/help/c_runecr.txt b/lib/help/c_runecr.txt
new file mode 100644
index 00000000..8388eff9
--- /dev/null
+++ b/lib/help/c_runecr.txt
@@ -0,0 +1,110 @@
+~~~~~01|Runecrafter
+~~~~~02|Classes|Runecrafter
+#####R=== Runecrafters ===
+
+#####GDescription
+Instead of using spellbooks like the other spellcasters they instead
+use mystic runes. To cast a spell they select a primary rune of the
+elements (fire, cold, etc.) and they also choose a set of secondary runes,
+which shape the effect of the first one. The secondary runes include
+Self, Arrow, Ray, ... and Armageddon. After that they chose the amount
+of mana to use and the spell is cast! But the more secondary runes they
+chose the more mana is used to cast the spell. They also are bad
+fighters, but if they concentrate all their mana in one spell
+(especially with a mage staff of mana) they could kill nearly anything.
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.200]
+ Weaponmastery 0.700 [0.400]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 2.000 [0.950]
+ Magic-Device 1.000 [1.200]
+ Spell-power 0.000 [0.600]
+ Mana 1.000 [0.600]
+ Geomancy
+ Fire 0.000 [0.700]
+ Water 0.000 [0.700]
+ Air 0.000 [0.700]
+ Earth 0.000 [0.700]
+ Meta 0.000 [0.700]
+ Conveyance 0.000 [0.700]
+ Divination 0.000 [0.700]
+ Temporal 0.000 [0.700]
+ Mind 0.000 [0.700]
+ Nature 0.000 [0.700]
+ Necromancy 0.000 [0.700]
+ Runecraft 1.000 [1.000]
+ Thaumaturgy 0.000 [0.700]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*A Runecrafter cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+~~~~~03|Runecrafter|Runecrafter powers
+~~~~~04|Skills|Runecrafting - Runecrafter powers
+#####GRune Magic
+Runecrafters combine runes using the 'm' command. They first select a
+rune that controls magic type, then apply one or more runes to fine-tune
+effects, (pressing ESC when done), and then input the amount of mana
+they wish to expend on the spell.
+
+Runecrafters can cast the spells from their runes in several ways:
+1. On-the-fly by combining runes when they need them.
+2. Memorise rune combinations for quick use when needed (and they don't
+ need to be able to see then!), and then later cast from memory.
+3. Carving them into a Runestone, then using the Runestone later (takes
+ less mana, but they have to be able to see).
+
+[[[[[BSpell Types:]
+(Some kinds are not listed, and are left for the reader to discover...)
+ Knowledge: Identify all objects in affected grids, Self-knowledge
+ if Self rune is used.
+ Life: Heals monsters in affected grids, heals player if Self rune
+ is used.
+ Fire, Cold, Lightning, Acid: Casts magics of that element.
+ Elements: Irresistible damage.
+ Mind: A mind blast that badly effects intelligent monsters.
+ Temporary ESP if Self rune is used.
+ Gravity: A gravity spell that both does damage and whisks affected
+ creatures around.
+
+[[[[[BSpell Effects] (all are listed):
+ Self: Effects the caster. This rune can be used with any other;
+ if used alone, only the caster's grid is affected.
+ Arrow: Spell will include a bolt effect. This allows aiming.
+ Ray: Spell will include a beam effect. This allows aiming.
+ Increases difficulty slightly.
+ Sphere: Spell will end with a circular explosion. Increases
+ difficulty a bit. Can be used alone, or with Self, Arrow, or
+ Ray.
+ Power Surge: Not currently recommended for use. Increases
+ difficulty a lot.
+ Armageddon: Hurls down meteors of the magical type in the vicinity
+ of the caster. Increases difficulty noticeably, but can do a
+ great deal of damage.
+
+#####GStarting Equipment
+A Runecrafter begins the game with:
+ a Rune [Fire]
+ a Rune [Arrow]
+ a Dagger
+
diff --git a/lib/help/c_sorcer.txt b/lib/help/c_sorcer.txt
new file mode 100644
index 00000000..8a33184f
--- /dev/null
+++ b/lib/help/c_sorcer.txt
@@ -0,0 +1,68 @@
+|||||oy
+~~~~~01|Sorceror
+~~~~~02|Classes|Sorceror
+#####R=== Sorcerors ===
+
+#####GDescription
+Sorcerors are to magic what Unbelievers are to melee. They are the all-
+around best magicians, being able to cast spells from any school using
+only a single skill. They cannot comfortably use any weapon but a Mage Staff, and even with a Mage Staff, they will be unable to achieve anything remotely resembling battle effectiveness.
+
+The energies used for learning Sorcery also sap the life force of a
+Sorceror, penalising them with the loss of a percentage of their hit
+points equal to their Sorcery skill score and penalising their combat
+ability even more strongly.
+
+For more information on magic schools and spell effects see the
+*****magic.txt*01[Magic help file].
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 1.000 [1.000]
+ Magic-Device 1.000 [1.000]
+ Spell-power 0.000 [0.600]
+ Sorcery 1.000 [0.700]
+ Mana 0.000 [0.900]
+ Geomancy
+ Fire 0.000 [1.000]
+ Water 0.000 [1.000]
+ Air 0.000 [1.000]
+ Earth 0.000 [1.000]
+ Meta 0.000 [1.000]
+ Conveyance 0.000 [1.000]
+ Divination 0.000 [1.000]
+ Temporal 0.000 [1.000]
+ Mind 0.000 [1.000]
+ Nature 0.000 [1.000]
+ Necromancy 0.000 [1.000]
+ Runecraft 0.000 [0.900]
+ Thaumaturgy 0.000 [0.900]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*A Sorceror cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Sorceror begins the game with:
+ a Book of Beginner Cantrips
+ a Robe
+
diff --git a/lib/help/c_summon.txt b/lib/help/c_summon.txt
new file mode 100644
index 00000000..a3eca1de
--- /dev/null
+++ b/lib/help/c_summon.txt
@@ -0,0 +1,80 @@
+~~~~~01|Summoners
+~~~~~02|Classes|Summoners
+#####R=== Summoners ===
+
+#####GDescription
+A Summoner is, with one exception, a fairly weak class. While he starts
+out a decent enough fighter, his fighting skill doesn't improve that much,
+he doesn't cast magic and has little in the way of survival skills. However,
+this weakness doesn't trouble him much, because he can summon creatures to
+do his bidding and still gain experience from their kills.
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution 0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.600]
+ Weaponmastery 1.000 [0.600]
+ Archery 1.000 [0.400]
+Sneakiness 1.000 [0.700]
+ Stealth 1.000 [0.700]
+ Disarming 1.000 [0.500]
+Magic 1.000 [0.800]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.500]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 16.000 [1.200]
+ Summoning 1.000 [0.700]
+ Corpse-preservation 1.000 [1.000]
+
+#####GStarting Equipment
+A Summoner starts the game with:
+ A Potion of Healing
+ A Short Sword
+ A Suit of Hard Leather Armour
+~~~~~03|Summoners|Summoning
+~~~~~04|Skills|Summoning - Summoning powers
+#####GSummoning
+[[[[[BThe summoner's powers of invocation are accessed using the 'm' key.]
+In order to invoke a monster, a summoner must possess a related totem.
+
+There are two kinds of summoning, decided by the totem used:
+
+[[[[[BPartial Summoning]
+Partial summoning creates a simulacrum of the monster, with little will
+of its own. The Summoner must maintain the simulacrum using mana; when
+he runs out, or stops paying the mana, the simulacrum vanishes.
+
+[[[[[BTrue Summoning]
+True summoning is quite different in effect from Partial Summoning, but the
+two are closely related in usage. A True Totem conjures a full copy of the
+creature in question; the process tends to make the monster a loyal ally to
+the summoner, but this loyalty is not guaranteed, nor is the survival of the
+totem used in the summoning.
+
+[[[[[BTotem Creation]
+In order to summon any creature, the Summoner needs a totem. Totems cannot be
+found; they must be created through a special process which involves taking
+the corpse of a creature (the summoner need not have been involved in the
+death of the creature in question), and extracting certain essences from it.
+
+The summoner can create a totem using the 'm' command, and unless one is
+working on a unique's corpse, must choose whether the resulting totem is a
+Partial or True Totem.
+
+[[[[[BImportant Note]
+Uniques are very willful creatures by definition, and thus have three special
+rules about their summoning:
+1. No partial totem can be made from a unique's corpse.
+2. The totem in question is always destroyed.
+3. The unique is twice as likely to be disloyal.
diff --git a/lib/help/c_swordm.txt b/lib/help/c_swordm.txt
new file mode 100644
index 00000000..a3b5ed05
--- /dev/null
+++ b/lib/help/c_swordm.txt
@@ -0,0 +1,52 @@
+~~~~~01|Swordmasters
+~~~~~02|Classes|Swordmasters
+#####R=== Swordmasters ===
+
+#####GDescription
+The Swordmaster is a Warrior who specialises in swords.
+
+The training is so intense and specific that Swordmasters gain huge bonuses
+when fighting with their chosen weapon, dependent on their Sword-mastery skill.
+In most other respects they perform about as well as a generic Warrior.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.900]
+ Weaponmastery 1.000 [0.950]
+ Sword-mastery 1.000 [0.700]
+ Axe-mastery 0.000 [0.300]
+ Hafted-mastery 0.000 [0.300]
+ Polearm-mastery 0.000 [0.300]
+ Archery 1.000 [0.600]
+ Antimagic 0.000 [0.550]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 1.000 [0.300]
+ Magic-Device 1.000 [1.150]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread-blows 25
+
+#####GStarting Equipment
+A Swordmaster begins the game with:
+ a Ring of Fear Resistance
+ a Chain Mail
+ a Broad Sword
diff --git a/lib/help/c_symbia.txt b/lib/help/c_symbia.txt
new file mode 100644
index 00000000..9bbd92fd
--- /dev/null
+++ b/lib/help/c_symbia.txt
@@ -0,0 +1,68 @@
+|||||oy
+~~~~~01|Symbiant
+~~~~~02|Classes|Symbiant
+#####R=== Symbiants ===
+
+#####GDescription
+Symbiants live in harmony with all of the monsters that do not move:
+the Mushrooms, Molds, Floating Eyes, and such. They can hypnotise these
+creatures and then form a symbiotic relationship. Using other symbiotic
+powers, they can even use the magical abilities of their pets.
+
+Once hypnotised, the monster is placed onto the body, or "worn" in order to
+initiate the symbiotic relationship.
+
+#####GStarting Stat Modifiers
+Strength +1
+Intelligence -2
+Wisdom +1
+Dexterity +1
+Constitution 0
+Charisma +1
+Hit Die +d8
+Spell Points +0%
+Exp Penalty 40%
+
+#####GStarting Skills
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.800]
+ Weaponmastery 1.000 [0.800]
+ Archery 1.000 [0.700]
+ Barehand-combat 1.000 [0.600]
+Sneakiness 1.000 [0.800]
+ Stealth 1.000 [0.800]
+ Disarming 1.000 [0.700]
+Magic 1.000 [0.700]
+ Magic-Device 1.000 [1.000]
+Spirituality 1.000 [0.500]
+ Prayer 0.000 [0.500]
+ Music 0.000 [0.300]
+Monster-lore 1.000 [1.100]
+ Corpse-preservation 1.000 [0.900]
+ Possession 0.000 [0.100]
+ Symbiosis 1.000 [0.800]
+
+#####GStarting Equipment
+A Symbiant begins the game with:
+ a Dagger
+ a Scroll of Summon Never-Moving Pet
+
+
+#####GSymbiosis
+Symbiants rely on the partnerships they form, hypnotising creatures
+and then "wearing" them: "I get by with a little help from my friends".
+Depending on the monster, this does nothing except protect the player
+slightly (the worn monster takes some of the damage the player would
+otherwise) or grant some very powerful attacks and summons.
+Their "spells" are used by the 'm' command; as their Symbiosis skill
+increases, they automatically gain more powers.
+For more detail about the specific powers, look here: *****m_symbio.txt*0[Symbiosis]
+~~~~~03|Symbiant|Naming your symbiote
+#####GNaming your symbiote
+For those sentimental Symbiants who like to name your symbiotes, you
+can use the Inscribe command '{'. Inscribe your hypnotized symbiote
+with "#named Fido" (or whatever name you choose, but don't forget the
+leading '#'), and it will be listed in your equipment as "a Red Mold
+named Fido", and the game will refer to your symbiote by name ("Fido
+is healed", for instance, rather than "Your Red mold is healed").
+
diff --git a/lib/help/c_thaum.txt b/lib/help/c_thaum.txt
new file mode 100644
index 00000000..653e84fa
--- /dev/null
+++ b/lib/help/c_thaum.txt
@@ -0,0 +1,84 @@
+~~~~~01|Thaumaturgist
+~~~~~02|Classes|Thaumaturgy
+#####R=== Thaumaturgists ===
+
+#####GDescription
+A Thaumaturgist is a Mage that prefers chaos to order. As such, they tend to
+learn random spells, and since attacking something creates more chaos than
+anything else, every spell they learn is an attack spell. They have no need
+for spell-books, as they harness the spells from within themselves. However,
+they also have no ability to improve the power of a particular spell - once
+learnt it will remain at the same strength for ever. Likewise, they also have
+no ability to control what they learn, and some of their spells will cause
+them damage (like darkness spells blinding them if they do not resist
+darkness).
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.200]
+ Weaponmastery 0.700 [0.400]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 3.000 [0.950]
+ Magic-Device 1.000 [1.050]
+ Spell-power 0.000 [0.600]
+ Mana 0.000 [0.600]
+ Geomancy
+ Fire 0.000 [0.700]
+ Water 0.000 [0.700]
+ Air 0.000 [0.700]
+ Earth 0.000 [0.700]
+ Meta 0.000 [0.700]
+ Conveyance 0.000 [0.700]
+ Divination 0.000 [0.700]
+ Temporal 0.000 [0.700]
+ Mind 0.000 [0.700]
+ Nature 0.000 [0.700]
+ Necromancy 0.000 [0.700]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 1.000 [1.000]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*A Thaumaturgist cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Thaumaturgist begins the game with:
+ a Book of Beginner Cantrips
+ a Dagger
+
+
+#####GThaumaturgy
+Thaumaturgists can wreak an amazing amount of destruction, and they don't
+even need spellbooks to do it. As they gain skill they memorise new,
+randomly generated attack spells. Note that they possess no guaranteed
+utility or alteration magics, and can never alter themselves.
+[[[[[BThaumaturgists just kill.]
+
+They use their magics through the 'm' key. They then select a general
+group of spells, followed by a specific spell. Thaumaturgists can learn
+more about a specific spell by browsing it; this is very useful for
+choosing the perfect spell for the occasion.
+
+Thaumaturgy spells can take the form of a bolt, a beam, a ball (either
+centred on the caster or targetable), an area (multiple balls in the
+vicinity of the caster), or a spell that affects all monsters in line of sight.
+
+You can find a little more information here: *****m_thaum.txt*0[Thaumaturgy].
diff --git a/lib/help/c_unbel.txt b/lib/help/c_unbel.txt
new file mode 100644
index 00000000..feec5723
--- /dev/null
+++ b/lib/help/c_unbel.txt
@@ -0,0 +1,65 @@
+~~~~~01|Unbeliever
+~~~~~02|Classes|Unbeliever
+#####R=== Unbelievers ===
+
+#####GDescription
+The full opposite of Sorcerors, Unbelievers so strongly despise magic
+that not only do they refuse to use magic spells, they refuse all
+training in the use of magic items, which leaves them almost totally
+incompetent when trying to use a magic item.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.800]
+ Weaponmastery 1.000 [0.850]
+ Sword-mastery 0.000 [0.400]
+ Axe-mastery 0.000 [0.400]
+ Hafted-mastery 0.000 [0.400]
+ Polearm-mastery 0.000 [0.400]
+ Archery 1.000 [0.600]
+ Antimagic 1.000 [0.650]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+An Unbeliever begins the game with:
+ a Ring of Fear Resistance
+ a Dark Sword
+ a Chain Mail
+
+~~~~~03|Unbelievers|Antimagic
+~~~~~04|Antimagic
+~~~~~05|Skills|Antimagic powers
+#####GAntimagic
+Thought carries power. And since Unbelievers think that magic doesn't
+exist, they can suppress its manifestation around them.
+Their magic-inhibiting ability and the area of effect around them are
+determined by the skill level in Antimagic. If they wield a Dark Sword,
+the strength and radius of the magic disrupting field are increased further,
+with best results if the blade is unenchanted.
+
+High levels of proficiency in Antimagic allow them also to stabilise the
+space-time continuum, so preventing teleportation, to sense the magical
+emanations coming from traps and to destroy these around them.
+These abilities are accessed using the 'm' key.
+
+
diff --git a/lib/help/c_warper.txt b/lib/help/c_warper.txt
new file mode 100644
index 00000000..55d16be5
--- /dev/null
+++ b/lib/help/c_warper.txt
@@ -0,0 +1,60 @@
+|||||oy
+~~~~~01|Warper
+~~~~~02|Classes|Warper
+#####R=== Warpers ===
+
+#####GDescription
+A Warper is a type of mage that prefers to deal in magic that alters the
+fabric of space and time. They specialise in the schools of *****m_convey.txt*0[Conveyance],
+*****m_divin.txt*0[Divination] and *****m_tempo.txt*0[Temporal] magic.
+
+#####GStarting Stat Modifiers
+Strength -5
+Intelligence +3
+Wisdom +0
+Dexterity +1
+Constitution -2
+Charisma +1
+Hit Die +d0
+Spell Points +50%
+Exp Penalty 30%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 1.000 [0.200]
+ Weaponmastery 0.700 [0.400]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+Magic 1.000 [0.900]
+ Magic-Device 1.000 [1.050]
+ Spell-power 1.000 [0.700]
+ Mana 1.000 [0.700]
+ Geomancy
+ Fire 0.000 [0.800]
+ Water 0.000 [0.800]
+ Air 0.000 [0.800]
+ Earth 0.000 [0.800]
+ Meta 0.000 [0.800]
+ Conveyance 0.000 [1.200]
+ Divination 0.000 [1.200]
+ Temporal 0.000 [1.200]
+ Mind 0.000 [0.700]
+ Nature 0.000 [0.800]
+ Necromancy 0.000 [0.700]
+ Runecraft 0.000 [0.700]
+ Thaumaturgy 0.000 [0.700]
+Spirituality 1.000 [0.550]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+*A Warper cannot learn the Geomancy skill, but it is shown in his skill
+screen because the elemental schools are sub-skills of it.
+
+#####GInnate Abilities:
+#####BAbility Character level
+Perfect casting 1
+
+#####GStarting Equipment
+A Warper begins the game with:
+ a Book of Beginner Cantrips
+ a Dagger
diff --git a/lib/help/c_warrio.txt b/lib/help/c_warrio.txt
new file mode 100644
index 00000000..942b34bb
--- /dev/null
+++ b/lib/help/c_warrio.txt
@@ -0,0 +1,54 @@
+~~~~~01|Warrior
+~~~~~02|Classes|Warrior
+#####R=== Warriors ===
+
+#####GDescription
+A Warrior is a hack-and-slash character, who solves most of his problems
+by cutting them to pieces, but will occasionally fall back on the help
+of a magical device or a bow.
+
+A Warrior learns no magic, and can even suppress it like an Unbeliever through
+the Antimagic skill.
+
+#####GStarting Stat Modifiers
+Strength +5
+Intelligence -2
+Wisdom -2
+Dexterity +2
+Constitution +2
+Charisma -1
+Hit Die +d9
+Spell Points +0%
+Exp Penalty 0%
+
+#####GStarting Skills:
+#####BSkill Start Level Skill Point Gains
+Combat 2.000 [0.800]
+ Weaponmastery 1.000 [0.850]
+ Sword-mastery 0.000 [0.400]
+ Axe-mastery 0.000 [0.400]
+ Hafted-mastery 0.000 [0.400]
+ Polearm-mastery 0.000 [0.400]
+ Archery 1.000 [0.600]
+ Antimagic 0.000 [0.550]
+Sneakiness 1.000 [0.900]
+ Stealth 0.000 [0.400]
+ Disarming 1.000 [0.900]
+Magic 1.000 [0.300]
+ Magic-Device 1.000 [1.150]
+Spirituality 1.000 [0.400]
+ Prayer 0.000 [0.500]
+Monster-lore 0.000 [0.500]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Extra Max Blow(1) 1
+Extra Max Blow(2) 1
+Spread blows 25
+
+#####GStarting Equipment
+A Warrior begins the game with:
+ a Ring of Fear Resistance
+ a Broad Sword
+ a Chain Mail
+
diff --git a/lib/help/command.txt b/lib/help/command.txt
new file mode 100644
index 00000000..0beffd33
--- /dev/null
+++ b/lib/help/command.txt
@@ -0,0 +1,1252 @@
+|||||oy
+~~~~~99|Commands
+#####R=== List of Commands ===
+
+
+ Angband commands are entered as an "underlying command" (a single key)
+plus a variety of optional or required arguments. You may choose how the
+"keyboard keys" are mapped to the "underlying commands" by choosing one of
+two standard "keysets", the "original" keyset or the "roguelike" keyset.
+
+ The original keyset is very similar to the "underlying" command set,
+with a few additions (such as the ability to use the numeric "directions" to
+"walk" or the "5" key to "stay still"). The roguelike keyset provides similar
+additions, and also allows the use of the h/j/k/l/y/u/b/n keys to "walk" (or,
+in combination with the shift or control keys, to run or tunnel), which thus
+requires a variety of key mappings to allow access to the underlying commands
+used for walking/running/tunneling. In particular, the "roguelike" keyset
+includes many more "capital" and "control" keys, as shown below.
+
+ Note that any keys that are not required for access to the underlying
+command set may be used by the user as "command macro" triggers (see below).
+You may always specify any "underlying command" directly by pressing backslash
+("\") plus the "underlying command" key. This is normally only used in "macro"
+definitions. [[[[[BYou may often enter "control-keys" as a caret ("^") plus the key]
+(so "^" + "p" often yields "^P").
+
+ Some commands allow an optional "repeat count", which allows you to tell
+the game that you wish to do the command multiple times, unless you press a
+key or are otherwise disturbed. To enter a "repeat count", type '0', followed
+by the numerical count, followed by the command. You must type "space" before
+entering certain commands. Skipping the numerical count yields a count of 99.
+An option allows certain commands (open, disarm, tunnel, etc) to auto-repeat.
+
+ Some commands will prompt for extra information, such as a direction, an
+inventory or equipment item, a spell, a textual inscription, the symbol of a
+monster race, a sub-command, a verification, an amount of time, a quantity,
+a file name, or various other things. Normally you can hit return to choose
+the "default" response, or escape to cancel the command entirely.
+
+ Some commands will prompt for a spell or an inventory item. Pressing
+space (or '*') will give you a list of choices. Pressing "-" (minus) selects
+the item on the floor. Pressing a lowercase letter selects the given item.
+Pressing a capital letter selects the given item after verification. Pressing
+a numeric digit '#' selects the first item (if any) whose inscription contains
+"@#" or "@x#", where "x" is the current "underlying command". You may only
+specify items which are "legal" for the command. Whenever an item inscription
+contains "!*" or "!x" (with "x" as above) you must verify its selection.
+
+ In ToME, there are items which occasionally teleport you away, asking
+for permission first. The recurring "Teleport (y/n)?" can be annoying, and
+this behavior can be eliminated by inscribing the object which causes the
+teleportation with "." (or any inscription containing the character ".").
+With this inscription, the object will no longer teleport you around nor
+keep asking you. If you want to restore the teleport ability to the object,
+just remove the "." from its inscription. Note that cursed items which
+teleport you are unaffected by the inscription.
+
+ Some commands will prompt for a direction. You may enter a "compass"
+direction using any of the "direction keys" shown below. Sometimes, you may
+specify that you wish to use the current "target", by pressing "t" or "5", or
+that you wish to select a new target, by pressing "*" (see "Target" below).
+~~~~~95
+#####G Original Keyset Directions Roguelike Keyset Directions
+
+ 7 8 9 y k u
+ 4 6 h l
+ 1 2 3 b j n
+
+ Each of the standard keysets provides some short-cuts over the "underlying
+commands". For example, both keysets allow you to "walk" by simply pressing
+an "original" direction key (or a "roguelike" direction key if you are using
+the roguelike keyset), instead of using the "walk" command plus a direction.
+[[[[[BThe roguelike keyset allows you to "run" or "tunnel" by simply holding the]
+[[[[[Bshift or control modifier key down while pressing a "roguelike" direction key,]
+[[[[[Binstead of using the "run" or "tunnel" command plus a direction.] Both keysets
+allow the use of the "5" key to "stand still", which is most convenient when
+using the original keyset.
+
+ Note that on many systems, it is possible to define "macros" (or "command
+macros") to various keys, or key combinations, so that it is often possible to
+make macros which, for example, allow the use of the shift or control modifier
+keys, plus a numeric keypad key, to specify the "run" or "tunnel" command, with
+the given direction, regardless of any keymap definitions, by using the fact
+that you can always, for example, use "\" + "." + "6", to specify "run east".
+~~~~~100|Commands|Original keyset
+#####R=== Original Keyset Command Summary (4.2.x) ===
+
+ *****command.txt*1[a Aim a wand] *****command.txt*2[A Activate an artifact]
+ *****command.txt*3[b Browse a book] *****command.txt*4[B Bash a door]
+ *****command.txt*5[c Close a door] *****command.txt*6[C Character description]
+ *****command.txt*7[d Drop an item] *****command.txt*8[D Disarm a trap]
+ *****command.txt*9[e Equipment list] *****command.txt*10[E Eat some food]
+ *****command.txt*11[f Fire (shoot) an item] *****command.txt*12[F Fuel your lantern/torch]
+ *****command.txt*13[g Stay still (flip pickup)] *****command.txt*14[G Gain new skills]
+ *****command.txt*15[h Hack up a corpse] *****command.txt*16[H Drink from a fountain]
+ *****command.txt*17[i Inventory list] *****command.txt*18[I Inspect (closely examine) an item]
+ *****command.txt*19[j Jam a door] J (unused)
+ *****command.txt*20[k Destroy an item] *****command.txt*21[K Cure meat]
+ *****command.txt*22[l Look around] *****command.txt*23[L Look around dungeon by sector]
+ *****command.txt*24[m Cast a spell / use mental power] *****command.txt*25[M Full dungeon map]
+ *****command.txt*85[n Repeat last command] *****command.txt*91[N Abilities Screen]
+ *****command.txt*26[o Open a door or chest] *****command.txt*27[O Sacrifice at an altar]
+ *****command.txt*28[p Pray to your god (if any)] *****command.txt*29[P Pet commands]
+ *****command.txt*30[q Quaff a potion] *****command.txt*31[Q Quit (commit suicide)]
+ *****command.txt*32[r Read a scroll] *****command.txt*33[R Rest for a period]
+ *****command.txt*34[s Search for traps/doors] *****command.txt*35[S Toggle search mode]
+ *****command.txt*36[t Take off equipment] *****command.txt*37[T Dig a tunnel]
+ *****command.txt*38[u Use a staff] *****command.txt*39[U Use bonus power (if any)]
+ *****command.txt*40[v Throw an item] *****command.txt*41[V Version Info]
+ *****command.txt*42[w Wear/wield equipment] W (unused)
+ *****command.txt*43[x Engrave the floor] X (unused)
+ *****command.txt*44[y Give item to monster] *****command.txt*96[Y Chat with a monster]
+ *****command.txt*45[z Zap a rod] *****command.txt*46[Z Steal]
+ *****command.txt*47[! Interact with system] *****debug.txt*101[^A (special - debug command)]
+ *****command.txt*49[@ Interact with macros] ^B (unused)
+ *****command.txt*89[# Begin extended command] ^C (special - break)
+ *****command.txt*97[$ Record macros] ^D (unused)
+ *****command.txt*51[% Interact with visuals] *****command.txt*52[^E Toggle choice window]
+ ^ (special - control key) *****command.txt*53[^F Repeat level feeling]
+ *****command.txt*54[& Interact with colors] ^G (unused)
+ *****command.txt*55[* Target monster or location] ^H (unused)
+ ( (unused) ^I (special - tab)
+ ) (unused) ^J (special - linefeed)
+ *****command.txt*58[{ Inscribe an object] ^K (unused)
+ *****command.txt*59[} Uninscribe an object] ^L (unused)
+ [ (unused) ^M (special - return)
+ ] (unused) ^N (unused)
+ *****command.txt*60[- Walk (flip pickup)] ^O (unused)
+ *****command.txt*61[_ Re-Enter store] *****command.txt*62[^P Show previous messages]
+ *****command.txt*63[+ Alter grid] *****command.txt*64[^Q Quit to next midi song]
+ *****command.txt*65[= Set options] *****command.txt*66[^R Redraw the screen]
+ *****command.txt*67[; Walk (with pickup)] *****command.txt*68[^S Save and don't quit]
+ *****command.txt*69[: Take notes] *****command.txt*70[^T Time of the day]
+ ' (unused) ^U (unused)
+ *****command.txt*71[" Enter a user pref command] ^V (unused)
+ *****command.txt*72[, Stay still (with pickup)] ^W (special - wizard mode)
+ *****command.txt*74[< Go up staircase] *****command.txt*75[^X Save and quit]
+ *****command.txt*76[. Run] ^Y (unused)
+ *****command.txt*77[> Go down staircase] ^Z (special - borg command)
+ *****command.txt*79[\ (special - bypass keymap)] *****command.txt*80[| Do cmovies]
+ *****command.txt*81[` (special - escape)] *****command.txt*82[~ Display current knowledge]
+ *****command.txt*83[/ Identify symbol] *****command.txt*84[? Help]
+ *****command.txt*98[^\] Take an html screenshot]
+
+
+~~~~~101|Commands|Roguelike keyset
+#####R=== Roguelike Keyset Command Summary (4.2.x) ===
+
+ *****command.txt*45[a Zap a rod (Activate)] *****command.txt*2[A Activate an artifact]
+ *****command.txt*95[b (walk - south west)] *****command.txt*95[B (run - south west)]
+ *****command.txt*5[c Close a door] *****command.txt*6[C Character description]
+ *****command.txt*7[d Drop an item] *****command.txt*8[D Disarm a trap or chest]
+ *****command.txt*9[e Equipment list] *****command.txt*10[E Eat some food]
+ *****command.txt*4[f Bash a door (force)] *****command.txt*12[F Fuel your lantern/torch]
+ *****command.txt*13[g Stay still (flip pickup)] *****command.txt*14[G Gain new skills]
+ *****command.txt*95[h (walk - west)] *****command.txt*95[H (run - west)]
+ *****command.txt*17[i Inventory list] *****command.txt*18[I Observe an item]
+ *****command.txt*95[j (walk - south)] *****command.txt*95[J (run - south)]
+ *****command.txt*95[k (walk - north)] *****command.txt*95[K (run - north)]
+ *****command.txt*95[l (walk - east)] *****command.txt*95[L (run - east)]
+ *****command.txt*24[m Spell casting / mental power] *****command.txt*25[M Full dungeon map]
+ *****command.txt*95[n (walk - south east)] *****command.txt*95[N (run - south east)]
+ *****command.txt*26[o Open a door or chest] *****command.txt*39[O Use bonus power (if any)]
+ *****command.txt*28[p Pray to your god (if any)] *****command.txt*3[P Browse a book]
+ *****command.txt*30[q Quaff a potion] *****command.txt*31[Q Quit (commit suicide)]
+ *****command.txt*32[r Read a scroll] *****command.txt*33[R Rest for a period]
+ *****command.txt*34[s Search for traps/doors] *****command.txt*97[S Record macros]
+ *****command.txt*11[t Fire an item] *****command.txt*36[T Take off equipment]
+ *****command.txt*95[u (walk - north east)] *****command.txt*95[U (run - north east)]
+ *****command.txt*40[v Throw an item] *****command.txt*16[V Drink from a fountain]
+ *****command.txt*42[w Wear/wield equipment] *****command.txt*23[W Locate player on map (Where)]
+ *****command.txt*22[x Look around] *****command.txt*29[X Pet commands]
+ *****command.txt*95[y (walk - north west)] *****command.txt*95[Y (run - north west)]
+ *****command.txt*1[z Aim a wand (Zap)] *****command.txt*38[Z Use a staff (Zap)]
+ *****command.txt*47[! Interact with system] ^A (special - debug command)
+ *****command.txt*49[@ Interact with macros] *****command.txt*95[^B (tunnel - south west)]
+ *****command.txt*35[# Toggle search mode] ^C (special - break)
+ *****command.txt*15[$ Hack up a corpse] *****command.txt*20[^D Destroy item]
+ *****command.txt*51[% Interact with visuals] *****command.txt*52[^E Toggle choice window]
+ ^ (special - control key) *****command.txt*53[^F Repeat level feeling]
+ *****command.txt*54[& Interact with colors] *****command.txt*27[^G Sacrifice at an altar]
+ *****command.txt*55[* Target monster or location] *****command.txt*95[^H (tunnel - west)]
+ *****command.txt*96[( Chat] ^I (special - tab)
+ *****command.txt*89[) Begin extended command] *****command.txt*95[^J (tunnel - south)]
+ *****command.txt*58[{ Inscribe an object] *****command.txt*95[^K (tunnel - north)]
+ *****command.txt*59[} Uninscribe an object] *****command.txt*95[^L (tunnel - east)]
+ [*****command.txt*46[ Steal] *****command.txt*95[^M (tunnel - south)]
+ ]*****command.txt*43[ Engrave the floor] *****command.txt*95[^N (tunnel - south east)]
+ *****command.txt*60[- Walk (flip pickup)] *****command.txt*21[^O Cure meat]
+ *****command.txt*61[_ Enter store] *****command.txt*62[^P Show previous messages]
+ *****command.txt*63[+ Alter grid] *****command.txt*64[^Q Quit to next midi song]
+ *****command.txt*65[= Set options] *****command.txt*66[^R Redraw the screen]
+ *****command.txt*67[; Walk (with pickup)] *****command.txt*68[^S Save and don't quit]
+ *****command.txt*69[: Take notes] *****command.txt*37[^T Dig a Tunnel]
+ *****command.txt*44[' Give object to monster] *****command.txt*95[^U (tunnel - north east)]
+ *****command.txt*71[" Enter a user pref command] ^V (unused)
+ *****command.txt*76[, Run] ^W (special - wizard mode)
+ *****command.txt*74[< Go up staircase] *****command.txt*75[^X Save and quit]
+ *****command.txt*72[. Stay still (with pickup)] *****command.txt*95[^Y (tunnel - north west)]
+ *****command.txt*77[> Go down staircase] ^Z (special - borg command)
+ *****command.txt*79[\ (special - bypass keymap)] *****command.txt*80[| Do cmovies]
+ *****command.txt*81[` (special - escape)] *****command.txt*82[~ Display current knowledge]
+ *****command.txt*83[/ Identify symbol] *****command.txt*84[? Help]
+
+~~~~~102|Commands|Special keys
+#####R=== Special Keys ===
+
+ Certain special keys may be intercepted by the operating system or
+the host machine, causing unexpected results. In general, these special keys
+are control keys, and often, you can disable their special effects.
+
+ If you are playing on a UNIX or similar system, then Ctrl-C will
+interrupt ToME. The second and third interrupt will induce a warning
+bell, and the fourth will induce both a warning bell and a special message,
+since the fifth will quit the game, after killing your character. Also,
+Ctrl-Z will suspend the game, and return you to the original command shell,
+until you resume the game with the "fg" command. There is now a compilation
+option to force the game to prevent the "double ctrl-z escape death trick".
+The Ctrl-\ and Ctrl-D and Ctrl-S keys should not be intercepted.
+
+ It is often possible to specify "control-keys" without actually
+pressing the control key, by typing a caret ("^") followed by the key.
+This is useful for specifying control-key commands which might be caught
+by the operating system as explained above.
+~~~~~79
+ Pressing [[[[[Gbackslash ("\\")] before a command will bypass all keymaps,
+and the next keypress will be interpreted as an "underlying command" key,
+unless it is a caret ("^"), in which case the keypress after that will be
+turned into a control-key and interpreted as a command in the underlying
+ToME keyset. The backslash key is useful for creating macro actions
+which are not affected by any keymap definitions that may be in force, for
+example, the sequence "\" + "." + "6" will always mean "run east", even if
+the "." key has been mapped to a different underlying command.
+
+ The "0" and "^" and "\" keys all have special meaning when entered
+at the command prompt, and there is no "useful" way to specify any of them
+as an "underlying command", which is okay, since they would have no effect.
+~~~~~81
+ For many input requests or queries, the [[[[[Gspecial character ESCAPE]
+will abort the command. The "[y/n]" prompts may be answered with "y" or
+"n", or escape. The "-more-" message prompts may be cleared (after reading
+the displayed message) by pressing ESCAPE, SPACE, RETURN, LINEFEED, or by
+any keypress, if the "quick_messages" option is turned on.
+~~~~~103|Commands|Command counts
+~~~~~104|Commands|Repeating a command
+#####R=== Command Counts ===
+
+ Some commands can be executed a fixed number of times by preceding
+them with a count. Counted commands will execute until the count expires,
+until you type any character, or until something significant happens, such
+as being attacked. Thus, a counted command doesn't work to attack another
+creature. While the command is being repeated, the number of times left
+to be repeated will flash by on the line at the bottom of the screen.
+
+ [[[[[BTo give a count to a command, type 0, the repeat count, and then]
+[[[[[Bthe command.] If you want to give a movement command and you are using the
+original command set (where the movement commands are digits), press space
+after the count and you will be prompted for the command.
+
+ Counted commands are very useful for searching or tunneling, as
+they automatically terminate on success, or if you are attacked. You may
+also terminate any counted command (or resting or running), by typing any
+character. This character is ignored, but it is safest to use a SPACE or
+ESCAPE which are always ignored as commands in case you type the command
+just after the count expires.
+
+ You can tell ToME to automatically use a repeat count of 99
+with commands you normally want to repeat (open, disarm, tunnel, bash,
+alter, etc) by setting the "always_repeat" option.
+
+
+#####R=== Selection of Objects ===
+
+ Many commands will also prompt for a particular object to be used.
+For example, the command to read a scroll will ask you which of the
+scrolls that you are carrying that you wish to read. In such cases, the
+selection is made by typing a letter of the alphabet. The prompt will
+indicate the possible letters, and will also allow you to type the key
+"*", which causes all of the available options to be described. The list
+of choices will also be shown in the Choice window, if you are using a
+windows environment and windows are turned on. Often you will be able to
+press "/" to select an object from your equipment instead of your
+inventory. Pressing space once will have the same effect as "*", and
+the second time will cancel the command and run the "i" or "e" command.
+
+ [[[[[BThe particular object may be selected by an upper case or a lower]
+[[[[[Bcase letter. If lower case is used, the selection takes place]
+[[[[[Bimmediately. If upper case is used, then the particular option is]
+[[[[[Bdescribed, and you are given the option of confirming or retracting that]
+[[[[[Bchoice.] Upper case selection is thus safer, but requires an extra key
+stroke. Also see the "!*" and "!x" inscriptions, below.
+
+ For many commands, [[[[[Byou can also use "-" to select an object on the]
+[[[[[Bfloor where you are standing.] This lets you read scrolls or quaff
+potions, for example, off the dungeon floor without picking them up.
+~~~~~90
+ If you enter a number between 0 and 9, the first item engraved
+with "@#" where "#" is the number you entered will be selected. For example,
+if you have a shovel engraved with "@0" and you type "w" (for wield) and
+then 0, you will wield the shovel. This is very useful for macros (see
+below), since you can use this to select an object regardless of its
+location in your pack. Multiple numbers can be engraved on the same object; for
+example, if a sword is engraved with @1@0, then either "w1" or "w0" will
+wield it. Normally, you inscribe "@1@0" on your primary weapon, and
+"@2@0" on your secondary weapon. [[[[[BNote that an inscription containing]
+[[[[[B"@x#" will act like "@#" but only when the current "ToME command"]
+[[[[[Bis "x".] Thus you can put "@z4" on a rod and "@u4" on a staff, and then
+use both "z4" and "u4" as desired.
+
+ Note that any object containing "!x" in its inscription, where
+"x" is the current "ToME command" (or containing "!*" ever) will induce
+"verification" whenever that object is "selected". Thus, inscribing, say,
+"!f!k!d" on an object will greatly reduce the odds of you "losing" it by
+accident, and [[[[[Binscribing "!*" on an object] will allow you to be very paranoid
+about the object. Note that "selling" and "dropping" both use the "d" command.
+
+~~~~~105|Pref files
+#####R=== User Pref Files ===
+
+ ToME allows you to change various aspects of the game to suit
+your tastes. You may define keymaps (changing the way ToME maps your
+keypresses to underlying commands), create macros (allowing you to map a
+single keypress to a series of keypresses), modify the visuals (allowing
+you to change the appearance of monsters, objects, or terrain features),
+change the colors (allowing you to make a given color brighter, darker,
+or even completely different), or set options (turning them off or on).
+
+ ToME stores your preferences in files called "user pref files",
+which contain comments and "user pref commands", which are simple strings
+describing one aspect of the system about which the user has a preference.
+There are many ways to load a user pref file, and in fact, some of these
+files are automatically loaded for you by the game. All of the files are
+kept in the "lib/user/" directory, though you may have to use one of the
+command line arguments to redirect this directory, especially on multiuser
+systems. You may also enter single user pref commands directly, using the
+special "Enter a user pref command" command, activated by "double quote".
+You may have to use the "redraw" command (^R) after changing certain of
+the aspects of the game, to allow ToME to adapt to your changes.
+
+ When the game starts up, after you have loaded an old character,
+or created a new character, some user pref files are loaded automatically.
+First, the "pref.prf" file is loaded. This file contains some user pref
+commands which will work on all platforms. Then one of "font-xxx.prf"
+(for normal usage) or "graf-xxx.prf" (for bitmap usage) is loaded. These
+files contain attr/char changes to allow the monsters, objects, and/or
+terrain features to look "better" on your system. Then the "pref-xxx.prf"
+file is loaded. This file contains pre-defined system specific stuff
+(macros, color definitions, etc). Then, the "user-xxx.prf" file is loaded.
+This file contains user-defined system specific stuff. The "user-xxx.prf"
+file is used as the "default" user pref file in many places. The "xxx" is
+the "system suffix" for your system, taken from the "main-xxx.c" file which
+was used to generate your executable. Finally, the "Race.prf", "Class.prf",
+and "Name.prf" files are loaded, where "Race", "Class", and "Name" are
+replaced by the actual race, class, and name of the current character.
+
+ Several commands allow you to both load existing user pref files,
+create new user pref files, append information to existing user pref files,
+and/or interact with various of the user preferences in a more intuitive
+way than the user pref commands allow. The commands include "Interact with
+macros" (@), "Interact with visuals" (%), and "Interact with colors" (&),
+described below.
+~~~~~106|Pref files|Macros
+#####G--- User Pref Files (Macros) ---
+
+ The "Interact with macros" command allows you to define or remove
+"macros", which are mappings from a single logical keypress to a sequence
+of keypresses, allowing you to use special keys on the keyboard, such as
+function keys or keypad keys, possibly in conjunction with modifier keys,
+to "automate" repetitive multi-keypress commands that you use a lot.
+
+ Since macros represent keypress sequences, and not all keypresses
+have a printable representation, macro triggers and actions must often be
+"encoded" into a human readable form. This is done using several types
+of encoding, including "\xHH" for character number HH in hexidecimal, "\e"
+for the "escape" code, "\n" for the "newline" code, "\r" for the "return"
+code, "\s" for the "space" code, "\\" for backslash, "\^" for caret, and
+"^X" for the code for any "control" key "ctrl-X". Note that the "action"
+of a macro will not be checked against other macro triggers (unless the
+macro action contains a "control-backslash"), so you cannot make infinite
+loops. You may specify extremely long macros, but you are limited in
+length by the underlying input mechanisms, which in general limit you
+to about 1024 keys in both triggers and actions.
+
+ The special "\" command (which must be encoded in macros as "\\")
+is very useful in macros, since it bypasses all keymaps and allows the next
+keystroke to be considered a command in the underlying ToME command set.
+For example, a macro which maps Shift-KP6 to "\" + "." + "6" will induce
+the "run east" behavior, regardless of what keyset the user has chosen, and
+regardless of what keymaps have been defined.
+
+ Macros can be specified in user pref files as a pair of lines, one
+of the form "A:<str>", which defines the encoded macro action, and one of
+the form "P:<str>", which defines the encoded macro trigger.
+
+ A [[[[[Bcommon example of a macro] to cast the first spell in your first spell
+book at the nearest monster would be: \e\e\em1a*t where \e is an escape (to make
+sure you are not still within another command), m1 selects the spell book that
+is inscribed ({) with @m1, a selects the first spell in that book, and *t targets
+the nearest monster.
+
+ More detailed information about specific macros can be found in
+*****macrofaq.txt*0[macrofaq.txt], originally written by Jim Lyon (jplyon@attglobal.net),
+modified for ToME with Jim's permission by Dawnmist
+(angband@dawnmist.8m.com).
+~~~~~107|Pref files|Keymaps
+#####G--- User Pref Files (Keymaps) ---
+
+ The "Interact with macros" command also allows you to define
+"keymaps", which are vaguely related to macros. A keymap maps a single
+keypress to a series of keypresses, which bypass both other keymaps and
+any macros. ToME uses keymaps to map the original and the roguelike
+keysets to the underlying command set, and allows the user to modify or
+add keymaps of their own. Note that all keymap actions must be specified
+using underlying commands, not keypresses from the original or roguelike
+keysets. The original keyset is almost identical to the underlying keyset,
+except that "numbers" are mapped to ";" plus a direction, "5" is mapped to
+",", and a few control-keys are mapped to various things. See "command.txt"
+for the full set of underlying commands. Some uses for keymaps include the
+ability to "disable" a command by mapping it to "\x00",
+
+ Keymaps can be specified in user pref files as line of the form
+"M:<T> <key> <str>", where <T> is the keyset (0/1 for original/roguelike),
+<key> is the encoded trigger key, and <str> is the encoded keymap action.
+~~~~~108|Pref files|Visuals
+#####G--- User Pref Files (Visuals) ---
+
+ You can use the "Interact with visuals" command to change various
+visual information, currently including the choice of what attr/char values
+are used to represent various monsters, objects, or terrain features. Note
+that in combination appropriate support in "main-xxx.c", and with the use of
+the "use_graphics" flag, you may be able to specify that "graphic bitmaps"
+should be used instead of normal "colored characters" for various things.
+
+ When interactively modifying the attr/char values for monsters,
+objects, or terrain features, pressing "n" or "N" will change which entry
+you are changing, pressing "a" or "A" will rotate through the available
+attr values, and pressing "c" or "C" will rotate though the available char
+values. Note that attr/char values with the "high bit" set may induce the
+display of special "graphic" pictures if the "use_graphics" flag is set,
+and your system supports the "use_graphics" flag.
+
+ Note that this command can be abused in various ways, and if you
+must do so, remember that you are only cheating yourself.
+
+ Keymaps can be specified in user pref files as line of the form
+"R:<N>:<A>/<C>" or "K:<N>:<A>/<C>" or "F:<N>:<A>/<C>" or "U:<N>:<A>/<C>".
+~~~~~109|Pref files|Colors
+#####G--- User Pref Files (Colors) ---
+
+ The "Interact with colors" command allows you to change the actual
+internal values used to display various colors. This command may or may
+not have any effect on your machine. Advanced machines may allow you to
+change the actual RGB values used to represent each of the 16 colors used
+by ToME, and perhaps even allow you to define new colors which are not
+currently used by ToME.
+
+ Colors can be specified in user pref files as line of the form
+"V:<N>:<V>:<R>:<G>:<B>".
+~~~~~110|Pref files|Options
+#####G--- User Pref Files (Options) ---
+
+ The "Interact with options" command allows you to turn options
+on or off. You may turn options off or on using the user pref commands
+of the form "X:<option>" or "Y:<option>" respectively.
+
+~~~~~111|Commands|Command descriptions
+#####R=== Command Descriptions ===
+
+ The following command descriptions are listed as the command name
+plus the "underlying command" key. This is followed by the command name
+and "roguelike" keyset key, if different from the underlying command key.
+Then comes a brief description of the command, including information about
+alternative methods of specifying the command in each keyset, when needed.
+Several commands (tunnel, disarm, bash, open) are repeated 99 times if the
+"always_repeat" option is set and no repeat count is given. Some commands
+use the "repeat count" to automatically repeat the command several times,
+while others use the "repeat count" as an "argument", for example, commands
+which need a "quantity" will use the "repeat count" instead of asking for
+a quantity, allowing the use of "0d" for "drop all". Commands which ask
+for a quantity will convert any "letters" into the maximal legal value.
+~~~~~112|Commands|Inventory
+#####R--- Inventory Commands ---
+~~~~~17
+[[[[[GInventory list (i)]
+ Displays a list of objects being carried but not equipped. You
+ can carry up to 23 different items, not counting those in your
+ equipment. Often, many identical objects can be "stacked" into
+ a "pile" which will count as a single item. This is always
+ true of things like potions, scrolls, and food, but you may have
+ to set options to allow wands, staves, and other such objects to
+ stack. Each object has a weight, and if you carry more objects
+ than your strength permits, you will begin to slow down.
+~~~~~9
+[[[[[GEquipment list (e)]
+ Use this command to display a list of the objects currently being
+ used by your character. The number and type of available slots for
+ equipment may vary. A human for example has 15 slots for equipment,
+ each corresponding to a different location on the body, and each of
+ which may contain only a single object at a time, and each of which
+ may only contain objects of the proper "type".
+ If the option "show_labels" is set, the slots are labelled as follows:
+ Wielding (weapon), Shooting (missile launcher or instruments),
+ On finger (ring), Around neck (amulet), Light source (light source),
+ On body (armor), About body (cloak), On arm (shield), On head (helmet),
+ On hands (gloves), On feet (boots), Carrying (symbiote), Quiver (ammo),
+ Using (tool). You must be using an object to receive any of its special
+ powers.
+~~~~~7
+[[[[[GDrop an item (d)]
+ This command drops an item from your inventory or equipment onto the
+ dungeon floor. If the place you are standing on already has objects
+ in it, ToME will attempt to drop the item onto an adjacent space.
+ A floor spot can hold more than one object, but there is still the
+ possibility that if the floor is too full and you attempt to drop
+ something, it may disappear and be destroyed. If the selected pile
+ contains multiple items, you may specify a quantity.
+~~~~~20
+[[[[[GDestroy an item (k) or Destroy an item (^D)]
+ This destroys an item in your inventory or on the dungeon floor.
+ If the selected pile contains multiple objects, you may specify
+ a quantity. You must always verify this command, unless the item
+ is cursed or worthless and the option "auto_destroy" is set.
+~~~~~42
+[[[[[GWear/Wield equipment (w)]
+ To wear or wield an object in your inventory, use this command.
+ Since only one object can be in each slot at a time, if you wear
+ or wield an item into a slot which is already occupied, the old
+ item will be first be taken off, and may in fact be dropped if
+ there is no room for it in your inventory.
+~~~~~36
+[[[[[GTake off equipment (t) or Take off equipment (T)]
+ Use this command to take off a piece of equipment and return it
+ to your inventory. Occasionally, you will run into a cursed item
+ which cannot be removed. These items normally penalise you in some
+ way and cannot be taken off until the curse is removed. If there
+ is no room in your inventory for the item, your pack will overflow
+ and you will drop the item after taking it off.
+~~~~~113|Commands|Movement
+#####R--- Movement Commands ---
+~~~~~67
+[[[[[GWalk (with pickup) (;)]
+ Moves one step in the given direction. The square you are moving
+ into must not be blocked by walls or doors. You will pick up any
+ items in the destination grid if the "always_pickup" option is set,
+ or if the "query_pickup" option is set and you respond correctly.
+ This command can take a count and requires a direction. You may
+ also use the "original" direction keys (both keysets) or the
+ "roguelike" direction keys (roguelike keyset) to walk in a
+ direction.
+~~~~~60
+[[[[[GWalk (flip pickup) (-)]
+ This is just like normal move, except that the "Pick things up"
+ option is inverted. In other words, if you normally pick up
+ anything you encounter (the default), you will not pick things up
+ when using this command. If you normally do not pick things up,
+ you will when using this command. This command can take a count
+ and requires a direction.
+~~~~~76
+[[[[[GRun (.) or Run (,)]
+ This command will move in the given direction, following any bends
+ in the corridor, until you either have to make a "choice" between
+ two directions or you are disturbed. You can configure what will
+ disturb you by setting the disturbance options. Run requires a
+ direction. You may also use shift plus the "roguelike" direction
+ keys (roguelike keyset), or shift plus the "original" direction keys
+ on the keypad (both keysets, some machines) to run in a direction.
+~~~~~74
+[[[[[GGo up staircase (<)]
+ Climbs up an up staircase you are standing on. There is always at
+ least one staircase going up on every level (this doesn't mean it's
+ easy to find) except for the surface, where '<' will bring up the
+ wilderness map. Going up a staircase will take you to a new dungeon
+ level unless you are at the first level of the dungeon, in which case
+ you will return to the surface. Note that whenever you leave a dungeon
+ level, you will never find it again, unless the "permanent_levels"
+ option is set or the level contains a dungeon town. This means that
+ for all intents and purposes, any objects on that level are destroyed.
+ This includes unknown artifacts unless the "Create characters in
+ preserve mode" option was set when your character was created, in which
+ case the artifacts may show up again later.
+~~~~~77
+[[[[[GGo down staircase (>)]
+ Descends a down staircase you are standing on. There are always
+ at least two staircases going down on each level, except for the
+ last level of a dungeon, and some "quest" levels, which have none until
+ the quest monsters are killed. Going down a staircase will take you
+ to a new dungeon level. See "Go Up Staircase" for more info.
+
+ This command is also used to enter Void Jumpgates, and to zoom in from
+ the wilderness map.
+~~~~~114|Commands|Resting
+#####R--- Resting Commands ---
+~~~~~72
+[[[[[GStay still (with pickup) (,) or Stay still (with pickup) (.)]
+ Stays in the same square for one move. If you normally pick up
+ objects you encounter, you will pick up whatever you are standing
+ on. This command can take a count. You may also use the "5" key
+ (both keysets).
+~~~~~13
+[[[[[GStay still (flip pickup) (g)]
+ Stays in the same square for one move. If you normally pick up
+ objects you encounter, you will not pick up whatever you are
+ standing on. If you normally do not pick up objects, you will
+ pick up what you are standing on. This command is normally only
+ used when the "always_pickup" option is false. This command can
+ take a count.
+~~~~~33
+[[[[[GRest (R)]
+ Resting is better for you than repeatedly staying still, and can
+ be told to automatically stop after a certain amount of time, or
+ when various conditions are met. In any case, you always wake up
+ when anything disturbing happens, or when you press any key. To
+ rest, enter the Rest command, followed by the number of turns you
+ want to rest, or "*" to rest until your hit points and mana are
+ restored, or "&" to rest until you are fully "healed". This command
+ can take a count, which is used for the number of turns to rest.
+~~~~~61
+[[[[[GEnter store (_)]
+ When standing on the door of a store, this command allows the character
+ to enter the store again.
+~~~~~115|Commands|Searching
+#####R--- Searching Commands ---
+~~~~~34
+[[[[[GSearch (s)]
+ This command can be used to locate hidden traps and secret doors
+ in the spaces adjacent to the player. More than a single turn of
+ searching will be required in most cases. You should always
+ search a chest before trying to open it, since they are generally
+ trapped. This command can take a count, which is useful if you
+ are fairly sure of finding something eventually, since the command
+ stops as soon as anything is found. This command can take a count.
+~~~~~35
+[[[[[GToggle search mode (S) or Toggle search mode (#)]
+ This command will take you into and out of search mode. When
+ first pressed, the message "Searching" will appear at the bottom
+ of the screen. You are now taking two turns for each command, one
+ for the command and one turn to search. This means that you are
+ taking twice the time to move around the dungeon, and therefore
+ twice the food. Search mode will automatically turn off if you
+ are disturbed. You may also turn off search mode by entering the
+ Search Mode command again.
+~~~~~116|Commands|Alteration commands
+~~~~~117|Commands|Terrain interaction
+#####R--- Alter Commands ---
+~~~~~37
+[[[[[GTunnel (T) or Tunnel (^T)]
+ Tunnelling or mining is a very useful art. There are many kinds of
+ rock, with varying hardness, including permanent rock (permanent),
+ granite (very hard), quartz veins (hard), magma veins (soft), and
+ rubble (very soft). Quartz and Magma veins may be displayed in a
+ special way, and may sometimes contain treasure, in which case they
+ will be displayed in a different way. Rubble sometimes covers an
+ object. It is only possible to tunnel if you are wielding a digging
+ tool such as a shovel or a pick. Tunnelling ability increases with
+ strength and tool weight. This command can take a count, requires a
+ direction, and is affected by the "always_repeat" option.
+~~~~~26
+[[[[[GOpen a door or chest (o)]
+ To open an object such as a door or chest, you must use this
+ command. If the object is locked, you will attempt to pick the
+ lock based on your disarming ability. If you open a trapped chest
+ without disarming the traps first, the trap will be set off. Some
+ doors will be jammed shut and may have to be forced open. You may
+ need several tries to open a door or chest. Open can take a count,
+ requires a direction, and is affected by the "always_repeat" option.
+~~~~~5
+[[[[[GClose a door (c)]
+ Non-intelligent and some other creatures cannot open doors, so
+ shutting doors can be quite valuable. Broken doors cannot be closed.
+ Bashing a door open may break it. Close can take a count, requires a
+ direction, and is affected by the "always_repeat" option.
+~~~~~19
+[[[[[GJam a door (j) or Spike a door (S)]
+ Many monsters can simply open closed doors, and can eventually
+ get through a locked door. You may therefore occasionally want
+ to jam a door shut with iron spikes. Each spike used on the door
+ will make it harder to bash down the door, up to a certain limit.
+ Smaller monsters are less able to bash down doors. In order to
+ use this command, you must be carrying iron spikes. Jam or Spike
+ requires a direction.
+~~~~~4
+[[[[[GBash a door (B) or Force a door (f)]
+ This command allows you to bash down jammed doors. Your bashing
+ ability increases with strength. Bashing open a door can (briefly)
+ throw you off balance. Doors that are stuck, or which have been
+ jammed closed with spikes can only be opened by bashing, and all
+ closed doors can be bashed open if desired. Bashing a door open
+ may permanently break it so that it can never be closed. Bash or
+ Force can take a count, requires a direction, and is affected by
+ the "always_repeat" option.
+~~~~~8
+[[[[[GDisarm a trap or chest (D)]
+ You can attempt to disarm traps on the floor or on chests. If you
+ fail, there is a chance that you will blunder and set it off. You
+ can only disarm a trap after you have found it (usually with the
+ Search command). Disarm can take a count, requires a direction,
+ and is affected by the "always_repeat" option.
+~~~~~63
+[[[[[GAlter (+)]
+ This special command allows the use of a single keypress to select
+ any of the "obvious" commands above (attack, tunnel, bash, open,
+ disarm, close), and, by using macros or keymaps, to combine this
+ keypress with directions. In general, this allows the use of the
+ "control" key plus the appropriate "direction" key (including the
+ roguelike direction keys in roguelike mode) as a kind of generic
+ "alter the terrain feature of an adjacent grid" command. Alter
+ can take a count, requires a direction, and is affected by the
+ "always_repeat" option.
+~~~~~43
+[[[[[GEngrave the floor (x)]
+ The dungeon is full of magics, and as such pools of it collect on
+ the floor in places. With the "inscribe" command, it is possible
+ to create some spell effects by inscribing words you have read from
+ various parchments detailing the languages used within the dungeon.
+ Then, if there is enough mana collected on that square, walking over
+ the inscription will trigger the spell. Some spells can be triggered
+ only by the player, some only by monsters, and some are triggered by
+ both.
+~~~~~46
+[[[[[GSteal (Z)]
+ Allows the player to try to steal items from shops. Also allows
+ rogues to steal from monsters.
+~~~~~118|Commands|Spells and prayers
+#####R--- Spell and Prayer Commands ---
+~~~~~3
+[[[[[GBrowse a book (b) or Peruse a book (P)]
+ Only characters with some knowledge in the magic schools, such as
+ mages, priests, rogues, and rangers, can read magic spellbooks.
+ Warriors normally cannot read any books. When this command is used,
+ all of the spells or prayers contained in the selected book are
+ displayed, along with information such as their level, the amount of
+ mana or piety required to cast them, and whether or not you know the
+ spell or prayer.
+~~~~~14
+[[[[[GGain new skills (G)]
+ Use this command to access the skills menu and spend the skill points
+ you gain at each new character level to increase the range of things
+ your character is able to do.
+~~~~~91
+[[[[[GGain new abilities (N)]
+ Use this command to access the Abilities menu and spend the skill points
+ you gain at each new character level to increase the range of things
+ your character is able to do.
+~~~~~24
+[[[[[GCast a spell / Pray a prayer (m) / Use a mental power]
+ To cast a spell or prayer, you must have the skill level required in
+ that school of magic to be able access that spell, and a book that
+ contains that spell in your inventory (for most schools). Each spell
+ has a chance of failure which starts out fairly large but decreases
+ as you gain levels. If you don't have enough mana to cast a spell,
+ you will be told you do not have enough mana to cast it. Since in most
+ cases you must read the spell from a book, you cannot be blind or
+ confused while casting, and there must be some light present.
+
+ Some classes (for example, Thaumaturgists) have the ability to use
+ some magic without actually needing spell books of any sort. These
+ classes are able to access their magical powers through the use of
+ the 'm' command.
+~~~~~39
+[[[[[GUse bonus power (if any) (U) or (O)]
+ Some races and classes have special natural abilities. All of these
+ possible abilities are listed in an index under the U (or O) command.
+ These type of abilities can include the Vampire's bite, a DeathMold's
+ telekinesis, and a RohanKnight's light speed capabilities.
+~~~~~119|Commands|Object manipulation
+#####R--- Object Manipulation Commands ---
+~~~~~10
+[[[[[GEat some food (E)]
+ You must eat regularly to prevent starvation. As you grow hungry,
+ a message will appear at the bottom of the screen saying "Hungry".
+ If you go hungry long enough, you will become weak, then start
+ fainting, and eventually, you may will die of starvation. You
+ may use this command to eat food in your inventory. Note that
+ you can sometimes find food in the dungeon, or you can butcher
+ corpses of killed creatures to obtain raw meat, but it is not
+ always wise to eat strange food.
+~~~~~12
+[[[[[GFuel your lantern/torch (F)]
+ If you are using a torch and have more torches in your pack,
+ or you are using a lantern and have flasks of oil in your pack,
+ then your can "refuel" them with this command. Torches and Lanterns
+ are limited in their maximal fuel. In general, two flasks will fully
+ fuel a lantern and two torches will fully fuel a torch.
+~~~~~30
+[[[[[GQuaff a potion (q)]
+ Use this command to drink a potion. Potions affect the player in
+ various ways, but the effects are not always immediately obvious.
+~~~~~32
+[[[[[GRead a scroll (r)]
+ Use this command to read a scroll. Scroll spells usually have an
+ area effect, except for a few cases where they act on other objects.
+ Reading a scroll causes the parchment to disintegrate as the scroll
+ takes effect, unless you are an Alchemist. Most scrolls which prompt
+ for more information can be aborted (by pressing escape), which will
+ stop reading the scroll before it disintegrates.
+~~~~~58
+[[[[[GInscribe an object ({)]
+ This command inscribes a string on an object. The inscription is
+ displayed inside curly braces after the object description. The
+ inscription is limited to the particular object (or pile) and is
+ not automatically transferred to all similar objects. Under certain
+ circumstances, ToME will display "fake" inscriptions on certain
+ objects ("cursed", "broken", "tried", "empty", "NN% off") when
+ appropriate. These "fake" inscriptions are "covered up" by real
+ inscriptions, but will re-appear if the real inscription is removed.
+ In addition, ToME will occasionally place a "real" inscription on
+ an object for you, normally as the result of your character getting
+ a "feeling" about the item. All characters will get "feelings" about
+ weapons and armor after carrying them for a while. Warriors get the
+ most detailed feelings, and get them quicker than any other class.
+ An item labeled as "{empty}" was found to be out of charges, and an
+ item labeled as "{tried}" is a "flavoured" item which the character
+ has used, but whose effects are unknown. Certain inscriptions have
+ a meaning to the game, see "@#", "@x#", "!*", and "!x", in the section
+ on *****command.txt*90[inventory object selection.]
+~~~~~59
+[[[[[GUninscribe an object (})]
+ This command removes the inscription on an object. This command will
+ have no effect on "fake" inscriptions added by the game itself.
+~~~~~15
+[[[[[GHack up a corpse (h or $)]
+ Corpses can be cut up into smaller pieces of meat, allowing the user to
+ eat the meat, or cure it for later use.
+~~~~~21
+[[[[[GCure meat (K)]
+ Curing meat requires the use of a potion of salt water, and is used to
+ protect meat from hacked-up corpses from going bad.
+~~~~~16
+[[[[[GDrink from a fountain (H)]
+ All fountains in Arda are magical, and act like magical potions. The
+ game will ask you whether you want to quaff from a fountain or to fill
+ empty bottles. The only way to identify the type of fountain is to
+ fill your bottles from it and see what you get.
+~~~~~44
+[[[[[GGive item to monster (y)]
+ This command is used to give an item within your inventory to a monster
+ standing next to you. The monster may not accept the item you give it,
+ however.
+~~~~~96
+[[[[[GChat (Y)]
+ This command allows you to chat with someone. Be warned that most
+ monsters won't chat
+
+#####R--- Magical Object Commands ---
+~~~~~2
+[[[[[GActivate an artifact (A)]
+ You have heard rumours of special weapons and armour deep in the
+ Pits, items that can let you breath fire like a dragon or light
+ rooms with just a thought. Should you ever be lucky enough to
+ find such an item, this command will let you activate its special
+ ability. Special abilities can only be used if you are wearing or
+ wielding the item.
+ Note that there are also a few common objects that can be activated,
+ e.g. music instruments, monster eggs and spell-storing mage staves,
+ and that some artifacts, so-called "junkarts", can't be wielded, but
+ must be activated from the backpack.
+~~~~~1
+[[[[[GAim a wand (a) or Zap a wand (z)]
+ Wands must be aimed in a direction to be used. Wands are magical
+ devices, and therefore there is a chance you will not be able to
+ figure out how to use them if you aren't good with magical
+ devices. They will fire a shot that affects the first object or
+ creature encountered or fire a beam that affects anything in a
+ given direction, depending on the wand. An obstruction such as a
+ door or wall will generally stop the effects from traveling any
+ farther. This command requires a direction and can use a target.
+~~~~~38
+[[[[[GUse a staff (u) or Zap a staff (Z)]
+ This command will use a staff. A staff is normally very similar
+ to a scroll, in that they normally either have an area effect or
+ affect a specific object. Staves are magical devices, and there
+ is a chance you will not be able to figure out how to use them.
+~~~~~45
+[[[[[GZap a rod (z) or Activate a rod (a)]
+ Rods are extremely powerful magical items, which cannot be burnt
+ or shattered, and which can have either staff-like or wand-like
+ effects, but unlike staves and wands, they don't have charges.
+ Instead, they draw on the ambient magical energy to recharge
+ themselves, and therefore can only be activated once every few
+ turns. The recharging time varies depending on the type of rod.
+ This command may require a direction (depending on the type of
+ rod, and whether you are aware of its type) and can use a target.
+~~~~~120|Commands|Throwing and missile weapons
+#####R--- Throwing and Missile Weapons ---
+~~~~~11
+[[[[[GFire an item (f) or Fire an item (t)]
+ You may throw any object carried by your character. Depending on
+ the weight, it may travel across the room or drop down beside you.
+ Only one object from a pile will be thrown at a time. Note that
+ throwing an object will often cause it to break, so be careful!
+ If you throw something at a creature, your chances of hitting it
+ are determined by your pluses to hit, your ability at throwing,
+ and the object's pluses to hit. Once the creature is it, the
+ object may or may not do any damage to it. You've heard rumors
+ that some objects found in the dungeon can do huge amounts of
+ damage when thrown, but you're not sure which objects those
+ are.... Note that flasks of oil will do a fairly large chunk
+ of damage to a monster on impact, supposedly representing fire
+ damage, but it works against fire elementals too... If you are
+ wielding a missile launcher compatible with the object you are
+ throwing, then you automatically use the launcher to fire the
+ missile with much higher range, accuracy, and damage, then you
+ would get by just throwing the missile. Fire or Throw requires
+ a direction. Targeting mode (see the next command) can be invoked
+ with "*" at the "Direction?" prompt.
+~~~~~40
+[[[[[GThrow an item (v)]
+ You may throw any object carried by your character. The lighter
+ the object, the farther you can throw it. Only one object from a
+ stack may be thrown at a time. Throwing an object may break it.
+ If you throw something at a monster, your chances of hitting it
+ are determined by your pluses to hit, your ability at throwing,
+ and the object's pluses to hit. If the object hits the monster,
+ it may or may not do damage. Some objects, such as weapons, or
+ flasks of oil, can do a substantial amount of damage. This
+ command requires a direction, and can take a target.
+~~~~~55
+[[[[[GTargeting Mode (*)]
+ This will allow you to aim your spells and such at a specific
+ monster or grid, so that you can point directly towards that
+ monster or grid (even if this is not a "compass" direction) when
+ you are asked for a direction. You can set a target using this
+ command, or you can set a new target at the "Direction?" prompt when
+ appropriate. At the targeting prompt, you have many options. First
+ of all, targetting mode starts targetting nearby monsters which can
+ be reached by "projectable" spells and thrown objects. In this mode,
+ you can press "t" (or "5" or ".") to select the current monster,
+ space to advance to the next monster, "-" to back up to the previous
+ monster, direction keys to advance to a monster more or less in that
+ direction, "r" to "recall" the current monster, "q" to exit targetting
+ mode, and "p" (or "o") to stop targetting monsters and enter the mode
+ for targetting a location on the floor or in a wall. Note that if
+ there are no nearby monsters, you will automatically enter this mode.
+ Note that hitting "o" is just like "p", except that the location
+ cursor starts on the last examined monster instead of on the player.
+ In this mode, you use the "direction" keys to move around, and the
+ "q" key to quit, and the "t" (or "5" or ".") key to target the cursor
+ location. Note that targetting a location is slightly "dangerous",
+ as the target is maintained even if you are far away. To cancel an
+ old target, simply hit "*" and then ESCAPE (or "q"). Note that when
+ you cast a spell or throw an object at the target location, the path
+ chosen is the "optimal" path towards that location, which may or may
+ not be the path you want. Sometimes, by clever choice of a location
+ on the floor for your target, you may be able to convince a thrown
+ object or cast spell to squeeze through a hole or corridor that is
+ blocking direct access to a different grid. Launching a ball spell
+ or breath weapon at a location in the middle of a group of monsters
+ can often improve the effects of that attack, since ball attacks are
+ not stopped by interposed monsters if the ball is launched at a target.
+ This command takes no time.
+~~~~~121|Commands|Looking
+#####R--- Looking Commands ---
+~~~~~25
+[[[[[GFull screen map (M)]
+ This command will show a map of the entire dungeon, reduced by a
+ factor of nine, on the screen. Only the major dungeon features
+ will be visible because of the scale, so even some important
+ objects may not show up on the map. This is particularly useful
+ in locating where the stairs are relative to your current
+ position, or for identifying unexplored areas of the dungeon.
+ This command takes no time.
+~~~~~23
+[[[[[GLocate player on map (L) or Where is the player (W)]
+ This command lets you scroll your map around, looking at all sectors
+ of the current dungeon level, until you press escape, at which point
+ the map will be re-centred on the player if necessary. To scroll
+ the map around, simply press any of the "direction" keys. The top
+ line will display the sector location, and the offset from your
+ current sector. This command takes no time.
+~~~~~22
+[[[[[GLook around (l) or Examine things (x)]
+ This command is used to look around at nearby monsters (to determine
+ their type and health) and objects (to determine their type). It is
+ also used to find out what objects (if any) are under monsters, and
+ if a monster is currently inside a wall. This command takes no time.
+ When you are looking at something, you may hit space for more details,
+ or to advance to the next interesting monster or object, or minus ("-")
+ to go back to the previous monster or object, or a direction key to
+ advance to the nearest interesting monster or object (if any) in that
+ general direction, or "r" to recall information about the current
+ monster race, or "q" or escape to stop looking around. You always
+ start out looking at the "nearest" interesting monster or object.
+~~~~~18
+[[[[[GObserve an item (I)]
+ This command lets you observe a previously *identified* item.
+ This will tell you things about the special powers of the object.
+ Currently, it only makes sense for artifacts and ego-items.
+~~~~~122|Commands|Messages
+#####R--- Message Commands ---
+~~~~~53
+[[[[[GRepeat level feeling (^F)]
+ Repeats the feeling about the dungeon level that you got when you
+ first entered the level.
+~~~~~62
+[[[[[GView previous messages (^P)]
+ This command shows you all the recent messages. You can scroll
+ through them, or exit with ESCAPE. This command takes no time.
+~~~~~69
+[[[[[GTake notes (:)]
+ This command allows you to take notes, which will then appear in your
+ note file, if the birth-option "take_notes" was set (the default), or
+ in your message list (prefixed with "Note:"), if the option was not set.
+ The note file can be displayed through the "Display Current Knowledge"
+ command (~ or |). This command takes no time.
+~~~~~123|Commands|Game status
+#####R--- Game Status Commands ---
+~~~~~6
+[[[[[GCharacter Description (C)]
+ Brings up a full description of your character, including your
+ skill levels, your current and potential stats, and various other
+ information. From this screen, you can change your name or use
+ the file character description command to save your character
+ status to a file. That command saves additional information,
+ including your background, your inventory, and the contents of
+ your house.
+~~~~~82
+[[[[[GDisplay Current Knowledge (~ or |)]
+ The command opens a menu from which you can lookup information
+ collected so far. This includes known artifacts, unique monsters,
+ identified objects, killed creatures, recall depths, acquired
+ corruptions, current pets, current quests, current fates, known
+ traps, known dungeon towns and last but not least the note file.
+
+ Display known artifacts
+ This selection lists all of the artifacts that you have encountered.
+ Any artifact that appears in this list, which you cannot seem to
+ find, has been lost forever. The "preserve" mode will prevent
+ you from accidentally losing any artifacts, but will also prevent
+ you from ever getting a "special" level feeling.
+
+ Display known uniques
+ Brings up a list of known unique monsters, plus their current
+ status. Once killed, unique monsters never show up again, with a
+ few remarkable exceptions.
+
+ Display known objects
+ This list all 'flavoured' objects (such as rings, scrolls, wands,
+ potions, etc.) which you have identified.
+
+ Display kill count
+ This lists all killed creatures together with a total kill count.
+
+ Display recall depths
+ This lists all recall depths of entered dungeons as well as marks
+ the current recall dungeon with an asterisk.
+
+ Display corruptions
+ This lists all acquired corruptions with their beneficial and
+ detrimental effects.
+
+ Display current pets
+ Display current quests
+ Display current fates
+ Display known traps
+ Display known dungeon towns
+
+ Display notes
+ If the option "take_notes" is set shows you your notes file, where all
+ remarkable events are noted. You can add notes yourself by using the
+ "Take notes" command (:).
+
+~~~~~70
+[[[[[GTime of the day (^T)]
+ This command is used to give the current date and time within the game.
+ Extremely useful for characters such as Vampires to check whether
+ it is safe to leave the dungeon.
+~~~~~124|Commands|Saving and Exiting
+~~~~~125|Saving and Exiting
+#####R--- Saving and Exiting Commands ---
+~~~~~75
+[[[[[GSave and Quit (Ctrl-X)]
+ To save your game so that you can return to it later, use this
+ command. Save files will also be generated (hopefully) if the
+ game crashes due to a system error. After you die, you can use
+ your savefile to play again with the same options and such.
+~~~~~68
+[[[[[GSave (Ctrl-S)]
+ This command saves the game but doesn't exit ToME. Use this
+ frequently if you are paranoid about having the computer crash
+ while you are playing.
+~~~~~31
+[[[[[GQuit (commit suicide) (Q)]
+ Kills your character and exits ToME. You will be prompted to
+ make sure you really want to do this, and then asked to verify
+ that choice. Note that dead characters are dead forever.
+~~~~~126|Commands|Pref files
+~~~~~127|Pref files|Commands
+#####R--- User pref file commands ---
+~~~~~65
+[[[[[GInteract with options (=)]
+ Allow you to interact with options. Note that using the "cheat"
+ options may mark your savefile as unsuitable for the high score
+ list. You may change normal options using the "X" and "Y" user
+ pref commands. You must use the "redraw" command (^R) after
+ changing certain options.
+~~~~~49
+[[[[[GInteract with macros (@)]
+ Allow you to interact with macros. You may load or save macros
+ from user pref files, create macros of various types, or define
+ keymaps. You must define a "current action", shown at the bottom
+ of the screen, before you attempt to use any of the "create macro"
+ commands, which use that "current action" as their action. This
+ is a horrible interface, and will be fixed eventually.
+~~~~~51
+[[[[[GInteract with visuals (%)]
+ Allow you to interact with visuals. You may load or save visuals
+ from user pref files, or modify the attr/char mappings for the
+ monsters, objects, and terrain features. You must use the "redraw"
+ command (^R) to redraw the map after changing attr/char mappings.
+~~~~~54
+[[[[[GInteract with colors (&)]
+ Allow the user to interact with colors. This command only
+ works on some systems.
+~~~~~47
+[[[[[GInteract with the system (!)]
+ Allow the user to interact with the underlying visual system.
+ This command is currently unused.
+~~~~~71
+[[[[[GEnter a user pref command (")]
+ ToME stores your preferences in files called "user pref files",
+ which contain comments and "user pref commands", which are simple strings
+ describing one aspect of the system about which the user has a preference.
+ You may enter single user pref commands directly, using the special "Enter
+ a user pref command" command, activated by "double quote". You may have to
+ use the "redraw" command (^R) after changing certain of the aspects of the
+ game, to allow ToME to adapt to your changes.
+~~~~~128|Commands|Help
+#####R--- Help ---
+~~~~~84
+[[[[[GHelp (?)]
+ Brings up the ToME on-line help system. Note that the help
+ files are just text files in a particular format, and that other
+ help files may be available on the Net. In particular, there are
+ a variety of spoiler files which do not come with the standard
+ distribution. Check the place you got ToME from or ask on the
+ newsgroup rec.games.roguelike.angband about them.
+~~~~~83
+[[[[[GIdentify Symbol (/)]
+ Use this command to find out what a character stands for. For
+ instance, by pressing "/.", you can find out that the "." symbol
+ stands for a floor spot. When used with a symbol that represents
+ creatures, the this command will tell you only what class of
+ creature the symbol stands for, not give you specific information
+ about a creature you can see. To get that, use the Look command.
+
+ There are three special symbols you can use with the Identify
+ Symbol command to access specific parts of your monster memory.
+ Typing Ctrl-A when asked for a symbol will recall details about
+ all monsters, typing Ctrl-U will recall details about all unique
+ monsters, and typing Ctrl-N will recall details about all
+ non-unique monsters.
+
+ If the character stands for a creature, you are asked if you want
+ to recall details. If you answer yes, information about the
+ creatures you have encountered with that symbol is shown in the
+ Recall window if available, or on the screen if not. You can also
+ answer "k" to see the list sorted by number of kills, or "p" to
+ see the list sorted by dungeon level the monster is normally found
+ on. Pressing ESCAPE at any point will exit this command.
+~~~~~41
+[[[[[GGame Version (V)]
+ This command will tell you what version of ToME you are using.
+ For more information, see the "version.txt" help file.
+
+~~~~~129|Commands|Extras
+#####R--- Extra Commands ---
+~~~~~85
+[[[[[GRepeat last command (n)]
+ This will automatically repeat the last command you inputted.
+~~~~~27
+[[[[[GSacrifice at an altar (O)]
+ Altars are places dedicated to the worship of a particular God. To
+ start worshipping the God who owns the altar, you must first sacrifice
+ on their altar.
+
+ Be warned, not all Gods are equal in power, and once you have selected
+ a God to worship, it is almost impossible to change which God you worship.
+ When your God is happy with you, you will receive more benefits from them.
+ Your God's happiness will decrease over time, so you will need to accomplish
+ deeds that increase your standing. Note that there is no requirement
+ for most classes to worship any God. (See *****gods.txt*0[gods.txt] for more information)
+~~~~~28
+[[[[[GPray to your God (p)]
+ If you worship a God, you have the option of praying. The effects of
+ praying differ considerably depending on the god, ranging from the
+ battle frenzy of paladins to the self-healing powers of druids.
+ However, Gods do not like being disturbed, with negative effects on
+ your piety. See *****gods.txt*0[gods.txt] for more information.
+~~~~~29
+[[[[[GPet commands (P)]
+ From time to time, you may acquire a pet within the dungeon. Pets are able
+ (to a more or less limited extent) to follow some simple commands, like
+ follow me. These commands are all accessed through the menu under "Pet
+ Commands".
+~~~~~52
+[[[[[GToggle Choice Window (^E)]
+ Toggles the display in the choice window (if available) between
+ your inventory and your equipment. This command only applies if
+ you are running ToME under a windowing environment and the
+ choice window is available. This also redraws the choice window.
+~~~~~66
+[[[[[GRedraw Screen (^R)]
+ This command adapts to various changes in global options, and
+ redraws all of the windows. This command should be used after
+ changing various global properties (options, attr/char mappings,
+ color definitions, etc). When in doubt, use it.
+~~~~~56
+[[[[[GLoad screen dump (left-paren)]
+ This command loads a "snap-shot" of the current screen from the file
+ "dump.txt", and displays it on the screen.
+~~~~~57
+[[[[[GSave screen dump (right-paren)]
+ This command dumps a "snap-shot" of the current screen to the file
+ "dump.txt", including encoded color information.
+~~~~~64
+[[[[[GQuit to next midi song (^Q)]
+ In the DOS binary (and maybe Windows) of ToME, it is possible for
+ the game to play any midi song in the lib/xtra/music directory. This
+ command allows the player to force the game to finish the current song
+ and move on to another one (i.e. if you are tired of hearing the current
+ song, you can change it).
+~~~~~80
+[[[[[GDo cmovies (|)]
+ The cmovie command (press | key in both normal or roguelike set) allows
+ you to make a "movie" that you can send to people showing your movement
+ through a part of the dungeon (like clearing that GCV . . .)
+
+ It asks for a name (it will add the extension itself) and then if you wish
+ to play or record it.
+
+ The cmovie files (.cmv) are located in lib/cmov, note that they quickly
+ become huge and so you REALLY should compress them before sending to friends.
+~~~~~97
+[[[[[GRecord macros ($)]
+ This is an easier way to create macros. Activate it, press the key
+ sequence for your macro, reactivate it and it will create the macro
+ for you. Note than when possible using the @ key at item selection
+ is a good idea since it removes the need to inscribe items.
+~~~~~98
+[[[[[GTake html screenshot (^\])]
+ Creates an html screenshot of the current screen.
+~~~~~89
+[[[[[GBegin extended command (#)]
+ Begins an extended command. Type "help" or "?" at the prompt for a
+ list of these commands.
+
+--
+Original: Alexander Cutler and Andy Astrand
+Updated (2.7.6): Russ Allbery (rra@cs.stanford.edu)
+Updated (2.7.9): Ben Harrison (benh@phial.com)
+Updated PernAngband 5.x.x: Dawnmist (angband@dawnmist.8m.com)
+Updated for ToME 2.1
diff --git a/lib/help/corspoil.txt b/lib/help/corspoil.txt
new file mode 100644
index 00000000..baac4fae
--- /dev/null
+++ b/lib/help/corspoil.txt
@@ -0,0 +1,136 @@
+~~~~~01|Corruptions (Spoiler)
+~~~~~02|Spoilers|Corruptions
+#####R=== ToME Corruptions Spoiler ===
+
+Sometimes adventurers become exposed to the dark powers of Morgoth. If they
+are unable to resist these powers, they become corrupted. Corruptions can
+change their physical or mental abilities, some of which can be good, and
+some bad. Most corruptions will affect you permanently, although some only
+operate when they are activated (whether by player choice or as a random
+event). You can check which corruptions do you have in the knowledge screen
+6 (accessed through the '~' menu) or in a character dump.
+
+#####GGaining and (not) losing corruptions
+There are several ways that you can become corrupted.
+
+You can become corrupted by quaffing a Potion of Corruption or by drinking
+from a Fountain of Corruption. Also some strange items can be activated
+for corruption.
+
+Corruptions are permanent. Once you have one, you have it for life.
+
+[[[[[BBalrog Aura]
+ Surrounds you with a fiery aura
+ But it can burn scrolls when you read them
+[[[[[GGain message: A corrupted wall of flames surrounds you.]
+[[[[[RLose message: The wall of corrupted flames abandons you.]
+
+
+[[[[[BBalrog Wings]
+ Creates ugly, but working, wings allowing you to fly
+ But it reduces charisma by 4 and dexterity by 2
+[[[[[GGain message: Wings of shadow grow in your back.]
+[[[[[RLose message: The wings in your back fall apart.]
+
+
+[[[[[BBalrog Strength]
+ Provides 3 strength and 1 constitution
+ But it reduces charisma by 1 and dexterity by 3
+[[[[[GGain message: Your muscles get unnatural strength.]
+[[[[[RLose message: Your muscles get weaker again.]
+
+
+[[[[[BBalrog Form]
+ Allows you to turn into a Balrog at will
+ You need Balrog Aura, Balrog Wings and Balrog Strength to activate it
+[[[[[GGain message: You feel the might of a Balrog inside you.]
+[[[[[RLose message: The presence of the Balrog seems to abandon you.]
+It depends on:
+ Balrog Aura
+ Balrog Wings
+ Balrog Strength
+
+
+[[[[[BDemon Spirit]
+ Increases your intelligence by 1
+ But reduce your charisma by 2
+[[[[[GGain message: Your spirit opens to corrupted thoughts.]
+[[[[[RLose message: Your spirit closes again to the corrupted thoughts.]
+
+
+[[[[[BDemon Hide]
+ Increases your armour class by your level
+ Provides immunity to fire at level 40
+ But reduces speed by your level / 7
+[[[[[GGain message: Your skin grows into a thick hide.]
+[[[[[RLose message: Your skin returns to a natural state.]
+
+
+[[[[[BDemon Breath]
+ Provides fire breath
+ But gives a small chance to spoil potions when you quaff them
+[[[[[GGain message: Your breath becomes mephitic.]
+[[[[[RLose message: Your breath is once again normal.]
+
+
+[[[[[BDemon Realm]
+ Provides access to the demon school skill and the use of demonic equipment
+ You need Demon Spirit, Demon Hide and Demon Breath to activate it
+[[[[[GGain message: You feel more attuned to the demon realm.]
+[[[[[RLose message: You lose your attunement to the demon realm.]
+It depends on:
+ Demon Spirit
+ Demon Hide
+ Demon Breath
+
+
+[[[[[BRandom teleportation]
+ Randomly teleports you around
+[[[[[GGain message: Space seems to fizzle around you.]
+[[[[[RLose message: Space solidify again around you.]
+It is opposed to:
+ Anti-teleportation
+
+
+[[[[[BAnti-teleportation]
+ Prevents all teleportations, be it of you or monsters
+[[[[[GGain message: Space continuum freezes around you.]
+[[[[[RLose message: Space continuum can once more be altered around you.]
+It is opposed to:
+ Random teleportation
+
+
+[[[[[BTroll Blood]
+ Troll blood flows in your veins, granting increased regeneration
+ It also enables you to feel the presence of other troll beings
+ But it will make your presence more noticeable and aggravating
+[[[[[GGain message: Your blood thickens, you sense corruption in it.]
+[[[[[RLose message: Your blood returns to a normal state.]
+
+
+[[[[[BVampiric Teeth]
+ Your teeth allow you to drain blood to feed yourself
+ However your stomach now only accepts blood.
+[[[[[GGain message: You grow vampiric teeth!]
+It is not removable.
+
+
+[[[[[BVampiric Strength]
+ Your body seems somewhat dead
+ In this near-undead state it has improved strength, constitution and
+ intelligence, but also reduced dexterity, wisdom and charisma.
+[[[[[GGain message: Your body seems more dead than alive.]
+It is not removable.
+It depends on:
+ Vampiric Teeth
+
+
+[[[[[BVampire]
+ You are a Vampire. As such you resist cold, poison, darkness and nether.
+ Your life is sustained, but you cannot stand the light of the sun.
+[[[[[GGain message: You die to be reborn in a Vampire form.]
+It is not removable.
+It depends on:
+ Vampiric Strength
+
+
diff --git a/lib/help/debug.txt b/lib/help/debug.txt
new file mode 100644
index 00000000..56d57098
--- /dev/null
+++ b/lib/help/debug.txt
@@ -0,0 +1,278 @@
+|||||oy
+~~~~~99|Debug
+#####R=== Debug Commands ===
+
+
+Debug commands are entered as an "underlying command" (a single key)
+plus a variety of optional or required arguments.
+
+The debug commands are used for debugging and experimenting. The game
+will not be scored if you use debug commands.
+
+~~~~~100|Debug|Command List
+#####R=== Command List Summary ===
+
+ *****debug.txt*1[a Autorestore] *****debug.txt*2[A Show all stats]
+ *****debug.txt*3[b Teleport to target] *****debug.txt*4[B HP to zero]
+ *****debug.txt*5[c Create object] *****debug.txt*6[C Create artifact]
+ *****debug.txt*7[d Detect all] *****debug.txt*8[D Teleport to the wilderness]
+ *****debug.txt*9[e Edit character attributes] *****debug.txt*10[E Change grid's mana]
+ *****debug.txt*11[f *IDENTIFY*] *****debug.txt*12[F Features]
+ *****debug.txt*13[g Create good item] G (unused)
+ *****debug.txt*15[h Change life rating] *****debug.txt*16[H Hostile monster creation]
+ *****debug.txt*17[i Identify] I (unused)
+ *****debug.txt*19[j Jump to other level] J (unused)
+ *****debug.txt*21[k Check attributes] K (unused)
+ *****debug.txt*23[l Learn about objects] L (unused)
+ *****debug.txt*25[m Magic Mapping] *****debug.txt*26[M Gain corruption]
+ *****debug.txt*27[n Summon named monster] *****debug.txt*28[N Summon _friendly_ named monster]
+ *****debug.txt*29[o Edit object attributes] O (unused)
+ *****debug.txt*31[p Phase door] *****debug.txt*32[P Panic save]
+ *****debug.txt*33[q Get a quest] Q (unused)
+ *****debug.txt*35[r Gain reward] *****debug.txt*36[R Create a trap]
+ *****debug.txt*37[s Summon monster] *****debug.txt*38[S Change the feature of the map]
+ *****debug.txt*39[t Teleport] *****debug.txt*40[T Teleport to a town]
+ *****debug.txt*41[u Complete map] *****debug.txt*42[U Become undead]
+ *****debug.txt*43[v Random artifact/ego item] V (unused)
+ *****debug.txt*45[w Wizard light the level] *****debug.txt*46[W Wish]
+ *****debug.txt*47[x XP boost] X (unused)
+ y (unused) Y (unused)
+ *****debug.txt*51[z Zap monsters] Z (unused)
+ ! (unused) ^A (unused)
+ *****debug.txt*55[@ Increment monster level] ^B (unused)
+ # (unused) ^C (unused)
+ $ (unused) ^D (unused)
+ % (unused) ^E (unused)
+ ^ (unused) ^F (unused)
+ & (unused) ^G (unused)
+ *****debug.txt*61[* Lose special powers] ^H (unused)
+ ( (unused) ^I (unused)
+ ) (unused) ^J (unused)
+ { (unused) ^K (unused)
+ } (unused) ^L (unused)
+ [ (unused) ^M (unused)
+ ] (unused) ^N (unused)
+ *****debug.txt*67[- Create object] ^O (unused)
+ *****debug.txt*69[_ The path to the god dark] ^P (unused)
+ *****debug.txt*71[+ Gain a fate] ^Q (unused)
+ *****debug.txt*73[= Align monster] ^R (unused)
+ ; (unused) ^S (unused)
+ : (unused) ^T (unused)
+ ' (unused) ^U (unused)
+ *****debug.txt*75[" Create spoiler] ^V (unused)
+ , (unused) ^W (unused)
+ < (unused) ^X (unused)
+ . (unused) ^Y (unused)
+ *****debug.txt*81[> Lua script] ^Z (unused)
+ \ (unused) | (unused)
+ ` (unused) ~ (unused)
+ *****debug.txt*91[/ Summon monster] *****debug.txt*92[? Help]
+ ^\ (unused)
+
+~~~~~111|Debug|Command descriptions
+#####R=== Command Descriptions ===
+
+ The following command descriptions are listed as the command name
+plus the "underlying command" key. Then comes a brief description of the
+command. Some commands use the "repeat count" to automatically repeat the
+command several times, while others use the "repeat count" as an "argument",
+for example, commands which need a "quantity" will use the "repeat count"
+instead of asking for a quantity, allowing the use of "0d" for "drop all".
+Commands which ask for a quantity will convert any "letters" into the
+maximal legal value.
+~~~~~112|Debug|General
+#####R--- General Commands ---
+~~~~~1
+[[[[[GAutorestore (a)]
+ Restores all your stats. This includes HP, SP, hunger, lost levels, etc.
+~~~~~2
+[[[[[GShow all stats (A)]
+ This brings up the Character status menu, where you can view
+ all the stats about your character.
+~~~~~3
+[[[[[GTeleport to target (b)]
+ You first need to have a monster targeted, then you can use
+ this command to teleport next to the monster.
+~~~~~4
+[[[[[GHP to zero (B)]
+ Bring your health down to zero.
+~~~~~5
+[[[[[GCreate object (c)]
+ Allows you to select and create a new object where you stand.
+ This brings up a menu where you can choose what type of object
+ you want created.
+~~~~~6
+[[[[[GCreate artifact (C)]
+ Allows you to select and create a new artifact where you stand.
+ Use the "Command count", aka 0, to specify a number from
+ a_info.txt to put it on the ground where you are standing.
+ For example : 03^AC will create the Arkenstone of Thrane (+3)
+~~~~~7
+[[[[[GDetect all (d)]
+ Sense ways out/monsters/objects/traps.
+~~~~~8
+[[[[[GTeleport to the wilderness (D)]
+ From a dungeon this will teleport you to the wilderness level
+ and if used in the wilderness it acts like teleport.
+~~~~~9
+[[[[[GEdit character attributes (e)]
+ Edit character attributes including Str, Int, Dex, experience, gold, luck, etc.
+~~~~~10
+[[[[[GChange grid's mana (E)]
+ Alter how much mana a grid has.
+ Use the "Command count", aka 0, to specify the amount of mana
+ that you want.
+~~~~~11
+[[[[[G*IDENTIFY* (f)]
+ Like a Scroll of *Identify*.
+~~~~~12
+[[[[[GFeatures (F)]
+ Use the "Command count", aka 0, to specify a number from
+ f_info.txt to put a feature on the ground where you are
+ standing.
+~~~~~13
+[[[[[GCreate good item (g)]
+ Create a random good item where you stand.
+~~~~~15
+[[[[[GChange life rating (h)]
+ Change your life rating.
+~~~~~16
+[[[[[GHostile monster creation (H)]
+ Summons a Pack of Creatures of the same kind. Will only work
+ if MONSTER_HORDES has been defined at compile time.
+~~~~~17
+[[[[[GIdentify (i)]
+ Like a Scroll of Identify.
+~~~~~19
+[[[[[GJump to other level (j)]
+ Jump to other dungeon level. This does not work in the
+ wilderness as it is treated as all one level.
+~~~~~21
+[[[[[GCheck attributes (k)]
+ Displays your characters attributes.
+~~~~~23
+[[[[[GLearn about objects (l)]
+ Make you know about all objects. Not sure how this works.
+~~~~~25
+[[[[[GMagic Mapping (m)]
+ Like a Scroll of Magic mapping.
+~~~~~26
+[[[[[GGain corruption (M)]
+ Allows your character to gain a corruption.
+~~~~~27
+[[[[[GSummon named monster (n)]
+ Summon a monster that will appear next to you.
+ Use the "Command count", aka 0, to specify a number from
+ r_info.txt to summon a monster.
+~~~~~28
+[[[[[GSummon _friendly_ named monster (N)]
+ The same as n but the creature will be your pet. Try this
+ with number 861, Darkgod is now your pet.
+~~~~~29
+[[[[[GEdit object attributes (o)]
+ Allows you to alter the attributes of any object that you
+ have in your backpack.
+~~~~~31
+[[[[[GPhase door (p)]
+ Like a Scroll of Phase Door.
+~~~~~32
+[[[[[GPanic save (P)]
+ Save and quit the game, which is the same as doing a ^X.
+~~~~~33
+[[[[[GGet a quest (q)]
+ Get a quest.
+ Use the "Command count", aka 0, to specify a number from
+ 1 to 25, as defined in defines.h ( the QUEST_XXX items ).
+ For example : 04^Aq will get you the thieves quest.
+~~~~~35
+[[[[[GGain reward (r)]
+ Some high being grants you a reward.
+~~~~~36
+[[[[[GCreate a trap (R)]
+ Use the "Command count", aka 0, to specify a number from
+ tr_info.txt to put a trap on the ground where you are
+ standing.
+~~~~~37
+[[[[[GSummon monster (s)]
+ Summon a random monster, next to where you stand.
+~~~~~38
+[[[[[GChange the feature of the map (S)]
+ This allows you to change the "special" field of the current
+ grid. This special field is used to store things like quest
+ ids, dungeon entries, and so on, not to be used unless
+ one knows what it's doing.
+~~~~~39
+[[[[[GTeleport (t)]
+ Like a Scroll of Teleport.
+~~~~~40
+[[[[[GTeleport to a town (T)]
+ Teleports you to a specific town.
+ Use the "Command count", aka 0, to specify a number from
+ wf_info.txt for where you want to go.
+ standing.
+ For example : 02^AT will teleport you to Gondolin
+~~~~~41
+[[[[[GComplete map (u)]
+ Displays the complete map of the dungeon.
+~~~~~42
+[[[[[GBecome undead (U)]
+ This is supposed to make you undead (as in the Necromantic power).
+~~~~~43
+[[[[[GRandom artifact/ego item (v)]
+ Create a random artifact/ego item where you stand.
+~~~~~45
+[[[[[GWizard light the level (w)]
+ Looks like the same as u.
+~~~~~46
+[[[[[GWish (W)]
+ Makes all your wishes come true.
+
+ Read the *****wishing.txt*0[wishing spoiler] to see how these work.
+~~~~~47
+[[[[[GXP boost (x)]
+ Use the "Command count", aka 0, to specify the increment,
+ if you do not specify a parameter it doubles your XP,
+ otherwise it increments by the specified amount.
+~~~~~51
+[[[[[GZap monsters (z)]
+ All monsters in sight range vanish like Mass Genocide, only with no
+ HP price.
+~~~~~55
+[[[[[GIncrement monster level (@)]
+ Level up a monster.
+~~~~~61
+[[[[[GLose special powers (*)]
+ Returns your powers to a normal level.
+~~~~~67
+[[[[[GCreate object (-)]
+ Allows you to create a new object where you stand. You must
+ specify an object number from k_info.txt.
+~~~~~69
+[[[[[GThe path to the god dark (_)]
+ Do not use this as it is used by DarkGod as a test for Lua
+ and will CRASH the game. You have been warned.
+~~~~~71
+[[[[[GGain a fate (+)]
+ Unearth more of your prophecy.
+~~~~~73
+[[[[[GAlign monster (=)]
+ Use the "Command count", aka 0, to specify one of the following
+ alignment types:
+ 0 monster becomes enemy
+ 1 monster becomes neutral
+ 2 monster becomes friendly
+ 3 monster becomes pet
+ 4 monster becomes companion
+ You then point at an enemy and press space.
+~~~~~75
+[[[[[GCreate spoiler (")]
+ Brings up a menu that allows you to create a spoiler file.
+~~~~~81
+[[[[[GLua script (>)]
+ Allows you to run a Lua script.
+~~~~~91
+[[[[[GSummon monster (/)]
+ Summons a random monster next to you.
+~~~~~91
+[[[[[GHelp (?)]
+ Displays the main help file.
diff --git a/lib/help/def.aux b/lib/help/def.aux
new file mode 100644
index 00000000..983e9683
--- /dev/null
+++ b/lib/help/def.aux
@@ -0,0 +1,3 @@
+file_ext="html"
+link_prefix=""
+link_suffix=""
diff --git a/lib/help/defines.txt b/lib/help/defines.txt
new file mode 100644
index 00000000..ac997501
--- /dev/null
+++ b/lib/help/defines.txt
@@ -0,0 +1,639 @@
+|||||oy
+~~~~~81|Defines
+~~~~~85|Defines|Tvals
+~~~~~82|Automatizer|Defines
+~~~~~83|Tvals
+#####R /----------------------------------------\
+#####R < Tvals and svals >
+#####R \----------------------------------------/
+
+Some objects don't have svals as such. Spellbooks, wands, and staves for
+instance don't have svalues as they are defined in lua.
+
+TV_SKELETON 1 /* Skeletons ('s') */
+TV_BOTTLE 2 /* Empty bottles ('!') */
+*****defines.txt*04[TV_BATERIE] 4 /* For the Alchemists */
+TV_SPIKE 5 /* Spikes ('~') */
+TV_MSTAFF 6 /* Mage Staffs */
+TV_CHEST 7 /* Chests ('~') */
+TV_PARCHMENT 8 /* Parchments from Kamband */
+*****defines.txt*09[TV_CORPSE] 9 /* Monster corpses */
+TV_EGG 10 /* Monster Eggs */
+TV_JUNK 11 /* Sticks, Pottery, etc ('~') */
+*****defines.txt*12[TV_TOOL] 12 /* Tools */
+*****defines.txt*14[TV_INSTRUMENT] 14 /* Musical instruments */
+*****defines.txt*15[TV_BOOMERANG] 15 /* Boomerangs */
+*****defines.txt*16[TV_SHOT] 16 /* Ammo for slings */
+*****defines.txt*16[TV_ARROW] 17 /* Ammo for bows */
+*****defines.txt*16[TV_BOLT] 18 /* Ammo for x-bows */
+*****defines.txt*19[TV_BOW] 19 /* Slings/Bows/Xbows */
+*****defines.txt*20[TV_DIGGING] 20 /* Shovels/Picks */
+*****defines.txt*21[TV_HAFTED] 21 /* Priest Weapons */
+*****defines.txt*22[TV_POLEARM] 22 /* Pikes/Glaives/Spears/etc. */
+*****defines.txt*23[TV_SWORD] 23 /* Edged Weapons */
+*****defines.txt*24[TV_AXE] 24 /* Axes/Cleavers */
+*****defines.txt*30[TV_BOOTS] 30 /* Boots */
+*****defines.txt*31[TV_GLOVES] 31 /* Gloves */
+*****defines.txt*32[TV_HELM] 32 /* Helms */
+*****defines.txt*32[TV_CROWN] 33 /* Crowns */
+*****defines.txt*34[TV_SHIELD] 34 /* Shields */
+*****defines.txt*35[TV_CLOAK] 35 /* Cloaks */
+*****defines.txt*36[TV_SOFT_ARMOR] 36 /* Soft Armor */
+*****defines.txt*37[TV_HARD_ARMOR] 37 /* Hard Armor */
+*****defines.txt*38[TV_DRAG_ARMOR] 38 /* Dragon Scale Mail */
+*****defines.txt*39[TV_LITE] 39 /* Lites (including Specials) */
+*****defines.txt*40[TV_AMULET] 40 /* Amulets (including Specials) */
+*****defines.txt*45[TV_RING] 45 /* Rings (including Specials) */
+*****defines.txt*46[TV_TRAPKIT] 46 /* Trapkits */
+TV_TOTEM 54 /* Summoner totems */
+*****defines.txt*55[TV_STAFF] 55 /* Staffs */
+*****defines.txt*65[TV_WAND] 65 /* Wands */
+*****defines.txt*66[TV_ROD] 66 /* Rod tips */
+*****defines.txt*67[TV_ROD_MAIN] 67 /* Rod body's */
+*****defines.txt*70[TV_SCROLL] 70 /* Scrolls */
+*****defines.txt*71[TV_POTION] 71 /* potions */
+*****defines.txt*72[TV_POTION2] 72 /* Second set of potion */
+TV_FLASK 77 /* Flasks of oil */
+*****defines.txt*80[TV_FOOD] 80 /* Food, including mushrooms */
+TV_HYPNOS 99 /* To wield monsters !:) */
+TV_GOLD 100 /* Gold can only be picked up by players */
+TV_RANDART 102 /* Random Artifacts */
+TV_RUNE1 104 /* Base runes */
+TV_RUNE2 105 /* Modifier runes */
+TV_BOOK 111 /* spell books */
+*****defines.txt*115[TV_DAEMON_BOOK] 115 /* Demon blades, shields and horns */
+~~~~~84|Defines|Svals
+~~~~~12|Svals
+/* The "sval" codes for TV_TOOL */
+ SV_TOOL_CLIMB 0
+ SV_PORTABLE_HOLE 1
+~~~~~16
+/* The "sval" codes for TV_SHOT/TV_ARROW/TV_BOLT */
+ SV_AMMO_LIGHT 0 /* pebbles */
+ SV_AMMO_NORMAL 1 /* shots, arrows, bolts */
+ SV_AMMO_HEAVY 2 /* seeker arrows and bolts, mithril shots */
+~~~~~14
+/* The "sval" codes for TV_INSTRUMENT */
+ SV_FLUTE 1
+ SV_BANJO 2
+ SV_LUTE 3
+ SV_MANDOLIN 4
+ SV_DRUM 5
+ SV_HARP 6
+ SV_HORN 7
+~~~~~46
+/* The "sval" codes for TV_TRAPKIT */
+ SV_TRAPKIT_SLING 1
+ SV_TRAPKIT_BOW 2
+ SV_TRAPKIT_XBOW 3
+ SV_TRAPKIT_POTION 4
+ SV_TRAPKIT_SCROLL 5
+ SV_TRAPKIT_DEVICE 6
+~~~~~15
+/* The "sval" codes for TV_BOOMERANG */
+ SV_BOOM_S_WOOD 1 /* 1d4 */
+ SV_BOOM_WOOD 2 /* 1d9 */
+ SV_BOOM_S_METAL 3 /* 1d8 */
+ SV_BOOM_METAL 4 /* 2d4 */
+~~~~~19
+/* The "sval" codes for TV_BOW (note information in "sval") */
+ SV_SLING 2 /* (x2) */
+ SV_SHORT_BOW 12 /* (x2) */
+ SV_LONG_BOW 13 /* (x3) */
+ SV_LIGHT_XBOW 23 /* (x3) */
+ SV_HEAVY_XBOW 24 /* (x4) */
+~~~~~20
+/* The "sval" codes for TV_DIGGING */
+ SV_SHOVEL 1
+ SV_GNOMISH_SHOVEL 2
+ SV_DWARVEN_SHOVEL 3
+ SV_PICK 4
+ SV_ORCISH_PICK 5
+ SV_DWARVEN_PICK 6
+ SV_MATTOCK 7
+~~~~~21
+/* The "sval" values for TV_HAFTED */
+ SV_CLUB 1 /* 1d4 */
+ SV_WHIP 2 /* 1d6 */
+ SV_QUARTERSTAFF 3 /* 1d9 */
+ SV_NUNCHAKU 4 /* 2d3 */
+ SV_MACE 5 /* 2d4 */
+ SV_BALL_AND_CHAIN 6 /* 2d4 */
+ SV_WAR_HAMMER 8 /* 3d3 */
+ SV_LUCERN_HAMMER 10 /* 2d5 */
+ SV_THREE_PIECE_ROD 11 /* 3d3 */
+ SV_MORNING_STAR 12 /* 2d6 */
+ SV_FLAIL 13 /* 2d6 */
+ SV_LEAD_FILLED_MACE 15 /* 3d4 */
+ SV_TWO_HANDED_FLAIL 18 /* 3d6 */
+ SV_GREAT_HAMMER 19 /* 4d6 */
+ SV_MACE_OF_DISRUPTION 20 /* 5d8 */
+ SV_GROND 50 /* 3d4 */
+~~~~~24
+/* The "sval" values for TV_AXE */
+ SV_HATCHET 1 /* 1d5 */
+ SV_CLEAVER 2 /* 2d4 */
+ SV_LIGHT_WAR_AXE 8 /* 2d5 */
+ SV_BEAKED_AXE 10 /* 2d6 */
+ SV_BROAD_AXE 11 /* 2d6 */
+ SV_BATTLE_AXE 22 /* 2d8 */
+ SV_GREAT_AXE 25 /* 4d4 */
+ SV_LOCHABER_AXE 28 /* 3d8 */
+ SV_SLAUGHTER_AXE 30 /* 5d7 */
+~~~~~22
+/* The "sval" values for TV_POLEARM */
+ SV_SPEAR 2 /* 1d6 */
+ SV_SICKLE 3 /* 2d3 */
+ SV_AWL_PIKE 4 /* 1d8 */
+ SV_TRIDENT 5 /* 1d9 */
+ SV_FAUCHARD 6 /* 1d10 */
+ SV_BROAD_SPEAR 7 /* 1d9 */
+ SV_PIKE 8 /* 2d5 */
+ SV_GLAIVE 13 /* 2d6 */
+ SV_HALBERD 15 /* 3d4 */
+ SV_GUISARME 16 /* 2d5 */
+ SV_SCYTHE 17 /* 5d3 */
+ SV_LANCE 20 /* 2d8 */
+ SV_TRIFURCATE_SPEAR 26 /* 2d9 */
+ SV_HEAVY_LANCE 29 /* 4d8 */
+ SV_SCYTHE_OF_SLICING 30 /* 8d4 */
+~~~~~23
+/* The "sval" codes for TV_SWORD */
+ SV_BROKEN_DAGGER 1 /* 1d1 */
+ SV_BROKEN_SWORD 2 /* 1d2 */
+ SV_DAGGER 4 /* 1d4 */
+ SV_MAIN_GAUCHE 5 /* 1d5 */
+ SV_RAPIER 7 /* 1d6 */
+ SV_SMALL_SWORD 8 /* 1d6 */
+ SV_BASILLARD 9 /* 1d8 */
+ SV_SHORT_SWORD 10 /* 1d7 */
+ SV_SABRE 11 /* 1d7 */
+ SV_CUTLASS 12 /* 1d7 */
+ SV_KHOPESH 14 /* 2d4 */
+ SV_TULWAR 15 /* 2d4 */
+ SV_BROAD_SWORD 16 /* 2d5 */
+ SV_LONG_SWORD 17 /* 2d5 */
+ SV_SCIMITAR 18 /* 2d5 */
+ SV_KATANA 20 /* 3d4 */
+ SV_BASTARD_SWORD 21 /* 3d4 */
+ SV_GREAT_SCIMITAR 22 /* 4d5 */
+ SV_CLAYMORE 23 /* 2d8 */
+ SV_ESPADON 24 /* 2d9 */
+ SV_TWO_HANDED_SWORD 25 /* 3d6 */
+ SV_FLAMBERGE 26 /* 3d7 */
+ SV_EXECUTIONERS_SWORD 28 /* 4d5 */
+ SV_ZWEIHANDER 29 /* 4d6 */
+ SV_BLADE_OF_CHAOS 30 /* 6d5 */
+ SV_SHADOW_BLADE 31 /* 4d4 */
+ SV_BLUESTEEL_BLADE 32 /* 3d9 */
+ SV_DARK_SWORD 33 /* 3d7 */
+~~~~~34
+/* The "sval" codes for TV_SHIELD */
+ SV_SMALL_LEATHER_SHIELD 2
+ SV_SMALL_METAL_SHIELD 3
+ SV_LARGE_LEATHER_SHIELD 4
+ SV_LARGE_METAL_SHIELD 5
+ SV_DRAGON_SHIELD 6
+ SV_SHIELD_OF_DEFLECTION 10
+~~~~~32
+/* The "sval" codes for TV_HELM */
+ SV_HARD_LEATHER_CAP 2
+ SV_METAL_CAP 3
+ SV_IRON_HELM 5
+ SV_STEEL_HELM 6
+ SV_DRAGON_HELM 7
+ SV_IRON_CROWN 10
+ SV_GOLDEN_CROWN 11
+ SV_JEWELED_CROWN 12
+ SV_MORGOTH 50
+~~~~~30
+/* The "sval" codes for TV_BOOTS */
+ SV_PAIR_OF_SOFT_LEATHER_BOOTS 2
+ SV_PAIR_OF_HARD_LEATHER_BOOTS 3
+ SV_PAIR_OF_METAL_SHOD_BOOTS 6
+~~~~~35
+/* The "sval" codes for TV_CLOAK */
+ SV_CLOAK 1
+ SV_ELVEN_CLOAK 2
+ SV_FUR_CLOAK 3
+ SV_SHADOW_CLOAK 6
+~~~~~31
+/* The "sval" codes for TV_GLOVES */
+ SV_SET_OF_LEATHER_GLOVES 1
+ SV_SET_OF_GAUNTLETS 2
+ SV_SET_OF_CESTI 5
+~~~~~36
+/* The "sval" codes for TV_SOFT_ARMOR */
+ SV_FILTHY_RAG 1
+ SV_ROBE 2
+ SV_PAPER_ARMOR 3 /* 4 */
+ SV_SOFT_LEATHER_ARMOR 4
+ SV_SOFT_STUDDED_LEATHER 5
+ SV_HARD_LEATHER_ARMOR 6
+ SV_HARD_STUDDED_LEATHER 7
+ SV_RHINO_HIDE_ARMOR 8
+ SV_CORD_ARMOR 9 /* 6 */
+ SV_PADDED_ARMOR 10 /* 4 */
+ SV_LEATHER_SCALE_MAIL 11
+ SV_LEATHER_JACK 12
+ SV_STONE_AND_HIDE_ARMOR 15 /* 15 */
+ SV_THUNDERLORD_SUIT 16
+~~~~~37
+/* The "sval" codes for TV_HARD_ARMOR */
+ SV_RUSTY_CHAIN_MAIL 1 /* 14- */
+ SV_RING_MAIL 2 /* 12 */
+ SV_METAL_SCALE_MAIL 3 /* 13 */
+ SV_CHAIN_MAIL 4 /* 14 */
+ SV_DOUBLE_RING_MAIL 5 /* 15 */
+ SV_AUGMENTED_CHAIN_MAIL 6 /* 16 */
+ SV_DOUBLE_CHAIN_MAIL 7 /* 16 */
+ SV_BAR_CHAIN_MAIL 8 /* 18 */
+ SV_METAL_BRIGANDINE_ARMOUR 9 /* 19 */
+ SV_SPLINT_MAIL 10 /* 19 */
+ SV_PARTIAL_PLATE_ARMOUR 12 /* 22 */
+ SV_METAL_LAMELLAR_ARMOUR 13 /* 23 */
+ SV_FULL_PLATE_ARMOUR 15 /* 25 */
+ SV_RIBBED_PLATE_ARMOUR 18 /* 28 */
+ SV_MITHRIL_CHAIN_MAIL 20 /* 28+ */
+ SV_MITHRIL_PLATE_MAIL 25 /* 35+ */
+ SV_ADAMANTITE_PLATE_MAIL 30 /* 40+ */
+~~~~~38
+/* The "sval" codes for TV_DRAG_ARMOR */
+ SV_DRAGON_BLACK 1
+ SV_DRAGON_BLUE 2
+ SV_DRAGON_WHITE 3
+ SV_DRAGON_RED 4
+ SV_DRAGON_GREEN 5
+ SV_DRAGON_MULTIHUED 6
+ SV_DRAGON_SHINING 10
+ SV_DRAGON_LAW 12
+ SV_DRAGON_BRONZE 14
+ SV_DRAGON_GOLD 16
+ SV_DRAGON_CHAOS 18
+ SV_DRAGON_BALANCE 20
+ SV_DRAGON_POWER 30
+~~~~~39
+/* The sval codes for TV_LITE */
+ SV_LITE_TORCH 0
+ SV_LITE_LANTERN 1
+ SV_LITE_TORCH_EVER 2
+ SV_LITE_DWARVEN 3
+ SV_LITE_FEANORIAN 4
+ SV_LITE_GALADRIEL 100
+ SV_LITE_ELENDIL 101
+ SV_LITE_THRAIN 102
+ SV_LITE_UNDEATH 103
+ SV_LITE_PALANTIR 104
+ SV_ANCHOR_SPACETIME 105
+ SV_STONE_LORE 106
+~~~~~40
+/* The "sval" codes for TV_AMULET */
+ SV_AMULET_DOOM 0
+ SV_AMULET_TELEPORT 1
+ SV_AMULET_ADORNMENT 2
+ SV_AMULET_SLOW_DIGEST 3
+ SV_AMULET_RESIST_ACID 4
+ SV_AMULET_SEARCHING 5
+ SV_AMULET_BRILLANCE 6
+ SV_AMULET_CHARISMA 7
+ SV_AMULET_THE_MAGI 8
+ SV_AMULET_REFLECTION 9
+ SV_AMULET_CARLAMMAS 10
+ SV_AMULET_INGWE 11
+ SV_AMULET_DWARVES 12
+ SV_AMULET_NO_MAGIC 13
+ SV_AMULET_NO_TELE 14
+ SV_AMULET_RESISTANCE 15
+ SV_AMULET_NOTHING 16
+ SV_AMULET_SERPENT 17
+ SV_AMULET_TORIS_MEJISTOS 18
+ SV_AMULET_ELESSAR 19
+ SV_AMULET_EVENSTAR 20
+ SV_AMULET_SUSTENANCE 21
+ SV_AMULET_TELEPATHY 22
+ SV_AMULET_TRICKERY 23
+ SV_AMULET_WEAPONMASTERY 24
+ SV_AMULET_DEVOTION 25
+ SV_AMULET_INFRA 26
+ SV_AMULET_SPELL 27
+ SV_AMULET_WISDOM 28
+ SV_AMULET_RESIST_ELEC 29
+ SV_AMULET_REGEN 30
+~~~~~45
+/* The sval codes for TV_RING */
+ SV_RING_WOE 0
+ SV_RING_AGGRAVATION 1
+ SV_RING_WEAKNESS 2
+ SV_RING_STUPIDITY 3
+ SV_RING_TELEPORTATION 4
+ SV_RING_SPECIAL 5
+ SV_RING_SLOW_DIGESTION 6
+ SV_RING_FEATHER_FALL 7
+ SV_RING_RESIST_FIRE 8
+ SV_RING_RESIST_COLD 9
+ SV_RING_SUSTAIN_STR 10
+ SV_RING_SUSTAIN_INT 11
+ SV_RING_SUSTAIN_WIS 12
+ SV_RING_SUSTAIN_CON 13
+ SV_RING_SUSTAIN_DEX 14
+ SV_RING_SUSTAIN_CHR 15
+ SV_RING_PROTECTION 16
+ SV_RING_ACID 17
+ SV_RING_FLAMES 18
+ SV_RING_ICE 19
+ SV_RING_RESIST_POIS 20
+ SV_RING_FREE_ACTION 21
+ SV_RING_SEE_INVIS 22
+ SV_RING_SEARCHING 23
+ SV_RING_STR 24
+ SV_RING_INT 25
+ SV_RING_DEX 26
+ SV_RING_CON 27
+ SV_RING_ACCURACY 28
+ SV_RING_DAMAGE 29
+ SV_RING_SLAYING 30
+ SV_RING_SPEED 31
+ SV_RING_BARAHIR 32
+ SV_RING_TULKAS 33
+ SV_RING_NARYA 34
+ SV_RING_NENYA 35
+ SV_RING_VILYA 36
+ SV_RING_POWER 37
+ SV_RING_RES_FEAR 38
+ SV_RING_RES_LD 39
+ SV_RING_RES_NETHER 40
+ SV_RING_RES_NEXUS 41
+ SV_RING_RES_SOUND 42
+ SV_RING_RES_CONFUSION 43
+ SV_RING_RES_SHARDS 44
+ SV_RING_RES_DISENCHANT 45
+ SV_RING_RES_CHAOS 46
+ SV_RING_RES_BLINDNESS 47
+ SV_RING_LORDLY 48
+ SV_RING_ATTACKS 49
+ SV_RING_NOTHING 50
+ SV_RING_PRECONITION 51
+ SV_RING_FLAR 52
+ SV_RING_INVIS 53
+ SV_RING_FLYING 54
+ SV_RING_WRAITH 55
+ SV_RING_ELEC 56
+ SV_RING_DURIN 57
+ SV_RING_SPELL 58
+ SV_RING_CRIT 59
+~~~~~55
+/* The "sval" codes for TV_STAFF */
+ SV_STAFF_SCHOOL 1
+ SV_STAFF_NOTHING 2
+~~~~~65
+/* The "sval" codes for TV_WAND */
+ SV_WAND_SCHOOL 1
+ SV_WAND_NOTHING 2
+~~~~~66
+/* The "sval" codes for TV_ROD(Rod Tips) */
+ SV_ROD_NOTHING 0
+ SV_ROD_DETECT_DOOR 1
+ SV_ROD_IDENTIFY 2
+ SV_ROD_RECALL 3
+ SV_ROD_ILLUMINATION 4
+ SV_ROD_MAPPING 5
+ SV_ROD_DETECTION 6
+ SV_ROD_PROBING 7
+ SV_ROD_CURING 8
+ SV_ROD_HEALING 9
+ SV_ROD_RESTORATION 10
+ SV_ROD_SPEED 11
+ SV_ROD_TELEPORT_AWAY 13
+ SV_ROD_DISARMING 14
+ SV_ROD_LITE 15
+ SV_ROD_SLEEP_MONSTER 16
+ SV_ROD_SLOW_MONSTER 17
+ SV_ROD_DRAIN_LIFE 18
+ SV_ROD_POLYMORPH 19
+ SV_ROD_ACID_BOLT 20
+ SV_ROD_ELEC_BOLT 21
+ SV_ROD_FIRE_BOLT 22
+ SV_ROD_COLD_BOLT 23
+ SV_ROD_ACID_BALL 24
+ SV_ROD_ELEC_BALL 25
+ SV_ROD_FIRE_BALL 26
+ SV_ROD_COLD_BALL 27
+ SV_ROD_HAVOC 28
+ SV_ROD_DETECT_TRAP 29
+ SV_ROD_HOME 30
+~~~~~67
+/* The "sval" codes for TV_ROD_MAIN(Rods) */
+ SV_ROD_WOODEN 10
+ SV_ROD_COPPER 20
+ SV_ROD_IRON 50
+ SV_ROD_ALUMINIUM 75
+ SV_ROD_SILVER 100
+ SV_ROD_GOLDEN 125
+ SV_ROD_MITHRIL 160
+ SV_ROD_ADMANTITE 200
+~~~~~70
+/* The "sval" codes for TV_SCROLL */
+ SV_SCROLL_DARKNESS 0
+ SV_SCROLL_AGGRAVATE_MONSTER 1
+ SV_SCROLL_CURSE_ARMOR 2
+ SV_SCROLL_CURSE_WEAPON 3
+ SV_SCROLL_SUMMON_MONSTER 4
+ SV_SCROLL_SUMMON_UNDEAD 5
+ SV_SCROLL_SUMMON_MINE 6
+ SV_SCROLL_TRAP_CREATION 7
+ SV_SCROLL_PHASE_DOOR 8
+ SV_SCROLL_TELEPORT 9
+ SV_SCROLL_TELEPORT_LEVEL 10
+ SV_SCROLL_WORD_OF_RECALL 11
+ SV_SCROLL_IDENTIFY 12
+ SV_SCROLL_STAR_IDENTIFY 13
+ SV_SCROLL_REMOVE_CURSE 14
+ SV_SCROLL_STAR_REMOVE_CURSE 15
+ SV_SCROLL_ENCHANT_ARMOR 16
+ SV_SCROLL_ENCHANT_WEAPON_TO_HIT 17
+ SV_SCROLL_ENCHANT_WEAPON_TO_DAM 18
+ SV_SCROLL_ENCHANT_WEAPON_PVAL 19
+ SV_SCROLL_STAR_ENCHANT_ARMOR 20
+ SV_SCROLL_STAR_ENCHANT_WEAPON 21
+ SV_SCROLL_RECHARGING 22
+ SV_SCROLL_RESET_RECALL 23
+ SV_SCROLL_LIGHT 24
+ SV_SCROLL_MAPPING 25
+ SV_SCROLL_DETECT_GOLD 26
+ SV_SCROLL_DETECT_ITEM 27
+ SV_SCROLL_DETECT_TRAP 28
+ SV_SCROLL_DETECT_DOOR 29
+ SV_SCROLL_DETECT_INVIS 30
+ SV_SCROLL_DIVINATION 31
+ SV_SCROLL_SATISFY_HUNGER 32
+ SV_SCROLL_BLESSING 33
+ SV_SCROLL_HOLY_CHANT 34
+ SV_SCROLL_HOLY_PRAYER 35
+ SV_SCROLL_MONSTER_CONFUSION 36
+ SV_SCROLL_PROTECTION_FROM_EVIL 37
+ SV_SCROLL_RUNE_OF_PROTECTION 38
+ SV_SCROLL_TRAP_DOOR_DESTRUCTION 39
+ SV_SCROLL_DEINCARNATION 40
+ SV_SCROLL_STAR_DESTRUCTION 41
+ SV_SCROLL_DISPEL_UNDEAD 42
+ SV_SCROLL_MASS_RESURECTION 43
+ SV_SCROLL_GENOCIDE 44
+ SV_SCROLL_MASS_GENOCIDE 45
+ SV_SCROLL_ACQUIREMENT 46
+ SV_SCROLL_STAR_ACQUIREMENT 47
+ SV_SCROLL_FIRE 48
+ SV_SCROLL_ICE 49
+ SV_SCROLL_CHAOS 50
+ SV_SCROLL_RUMOR 51
+ SV_SCROLL_ARTIFACT 52
+ SV_SCROLL_NOTHING 53
+ SV_SCROLL_SPELL 54
+~~~~~71
+/* The "sval" codes for TV_POTION */
+ SV_POTION_WATER 0
+ SV_POTION_APPLE_JUICE 1
+ SV_POTION_SLIME_MOLD 2
+ SV_POTION_BLOOD 3
+ SV_POTION_SLOWNESS 4
+ SV_POTION_SALT_WATER 5
+ SV_POTION_POISON 6
+ SV_POTION_BLINDNESS 7
+ SV_POTION_INVIS 8
+ SV_POTION_CONFUSION 9
+ SV_POTION_MUTATION 10
+ SV_POTION_SLEEP 11
+ SV_POTION_LEARNING 12
+ SV_POTION_LOSE_MEMORIES 13
+ SV_POTION_RUINATION 15
+ SV_POTION_DEC_STR 16
+ SV_POTION_DEC_INT 17
+ SV_POTION_DEC_WIS 18
+ SV_POTION_DEC_DEX 19
+ SV_POTION_DEC_CON 20
+ SV_POTION_DEC_CHR 21
+ SV_POTION_DETONATIONS 22
+ SV_POTION_DEATH 23
+ SV_POTION_INFRAVISION 24
+ SV_POTION_DETECT_INVIS 25
+ SV_POTION_SLOW_POISON 26
+ SV_POTION_CURE_POISON 27
+ SV_POTION_BOLDNESS 28
+ SV_POTION_SPEED 29
+ SV_POTION_RESIST_HEAT 30
+ SV_POTION_RESIST_COLD 31
+ SV_POTION_HEROISM 32
+ SV_POTION_BESERK_STRENGTH 33
+ SV_POTION_CURE_LIGHT 34
+ SV_POTION_CURE_SERIOUS 35
+ SV_POTION_CURE_CRITICAL 36
+ SV_POTION_HEALING 37
+ SV_POTION_STAR_HEALING 38
+ SV_POTION_LIFE 39
+ SV_POTION_RESTORE_MANA 40
+ SV_POTION_RESTORE_EXP 41
+ SV_POTION_RES_STR 42
+ SV_POTION_RES_INT 43
+ SV_POTION_RES_WIS 44
+ SV_POTION_RES_DEX 45
+ SV_POTION_RES_CON 46
+ SV_POTION_RES_CHR 47
+ SV_POTION_INC_STR 48
+ SV_POTION_INC_INT 49
+ SV_POTION_INC_WIS 50
+ SV_POTION_INC_DEX 51
+ SV_POTION_INC_CON 52
+ SV_POTION_INC_CHR 53
+ SV_POTION_AUGMENTATION 55
+ SV_POTION_ENLIGHTENMENT 56
+ SV_POTION_STAR_ENLIGHTENMENT 57
+ SV_POTION_SELF_KNOWLEDGE 58
+ SV_POTION_EXPERIENCE 59
+ SV_POTION_RESISTANCE 60
+ SV_POTION_CURING 61
+ SV_POTION_INVULNERABILITY 62
+ SV_POTION_NEW_LIFE 63
+~~~~~72
+/* The "sval" codes for TV_POTION2 */
+ SV_POTION2_MIMIC_ABOMINATION 1
+ SV_POTION2_MIMIC_WOLF 2
+ SV_POTION2_MIMIC_APE 3
+ SV_POTION2_MIMIC_GOAT 4
+ SV_POTION2_MIMIC_INSECT 5
+ SV_POTION2_MIMIC_SPARROW 6
+ SV_POTION2_MIMIC_STATUE 7
+ SV_POTION2_MIMIC_VAMPIRE 8
+ SV_POTION2_MIMIC_SPIDER 9
+ SV_POTION2_MIMIC_MANA_BALL 10
+ SV_POTION2_MIMIC_FIRE_CLOUD 11
+ SV_POTION2_MIMIC_COLD_CLOUD 12
+ SV_POTION2_MIMIC_CHAOS_CLOUD 13
+ SV_POTION2_CURE_LIGHT_SANITY 14
+ SV_POTION2_CURE_SERIOUS_SANITY 15
+ SV_POTION2_CURE_CRITICAL_SANITY 16
+ SV_POTION2_CURE_SANITY 17
+ SV_POTION2_CURE_WATER 18
+~~~~~80
+/* The "sval" codes for TV_FOOD */
+ SV_FOOD_POISON 0
+ SV_FOOD_BLINDNESS 1
+ SV_FOOD_PARANOIA 2
+ SV_FOOD_CONFUSION 3
+ SV_FOOD_HALLUCINATION 4
+ SV_FOOD_PARALYSIS 5
+ SV_FOOD_WEAKNESS 6
+ SV_FOOD_SICKNESS 7
+ SV_FOOD_STUPIDITY 8
+ SV_FOOD_NAIVETY 9
+ SV_FOOD_UNHEALTH 10
+ SV_FOOD_DISEASE 11
+ SV_FOOD_CURE_POISON 12
+ SV_FOOD_CURE_BLINDNESS 13
+ SV_FOOD_CURE_PARANOIA 14
+ SV_FOOD_CURE_CONFUSION 15
+ SV_FOOD_CURE_SERIOUS 16
+ SV_FOOD_RESTORE_STR 17
+ SV_FOOD_RESTORE_CON 18
+ SV_FOOD_RESTORING 19
+ SV_FOOD_BISCUIT 32
+ SV_FOOD_JERKY 33
+ SV_FOOD_RATION 35
+ SV_FOOD_SLIME_MOLD 36
+ SV_FOOD_WAYBREAD 37
+ SV_FOOD_PINT_OF_ALE 38
+ SV_FOOD_PINT_OF_WINE 39
+ SV_FOOD_ATHELAS 40
+ SV_FOOD_GREAT_HEALTH 41
+ SV_FOOD_FORTUNE_COOKIE 42
+~~~~~04
+/* The "sval" codes for TV_BATERIE */
+ SV_BATERIE_POISON 1
+ SV_BATERIE_EXPLOSION 2
+ SV_BATERIE_TELEPORT 3
+ SV_BATERIE_COLD 4
+ SV_BATERIE_FIRE 5
+ SV_BATERIE_ACID 6
+ SV_BATERIE_LIFE 7
+ SV_BATERIE_CONFUSION 8
+ SV_BATERIE_LITE 9
+ SV_BATERIE_CHAOS 10
+ SV_BATERIE_TIME 11
+ SV_BATERIE_MAGIC 12
+ SV_BATERIE_XTRA_LIFE 13
+ SV_BATERIE_DARKNESS 14
+ SV_BATERIE_KNOWLEDGE 15
+ SV_BATERIE_FORCE 16
+ SV_BATERIE_LIGHTNING 17
+ SV_BATERIE_MANA 18
+ MAX_BATERIE_SVAL 18
+~~~~~09
+/* The "sval" codes for TV_CORPSE */
+ SV_CORPSE_CORPSE 1
+ SV_CORPSE_SKELETON 2
+ SV_CORPSE_HEAD 3
+ SV_CORPSE_SKULL 4
+ SV_CORPSE_MEAT 5
+~~~~~115
+/* The "sval" codes for TV_DAEMON_BOOK */
+ SV_DEMONBLADE 55
+ SV_DEMONSHIELD 56
+ SV_DEMONHORN 57
diff --git a/lib/help/dungeon.txt b/lib/help/dungeon.txt
new file mode 100644
index 00000000..5c3cba9f
--- /dev/null
+++ b/lib/help/dungeon.txt
@@ -0,0 +1,706 @@
+|||||oy
+~~~~~02|Dungeons
+#####R /----------------------------------------\
+#####R < The Dungeons and Places of Middle-earth >
+#####R \----------------------------------------/
+
+ *****dungeon.txt*04[Symbols On Your Map] *****dungeon.txt*07[The Town and Buildings]
+ *****dungeon.txt*01[The Wilderness] *****dungeon.txt*06[In the Dungeon]
+ *****dungeon.txt*08[Objects] *****dungeon.txt*13[Mining]
+ *****dungeon.txt*12[Doors, Rooms, Staircases etc.] *****dungeon.txt*18[Pets]
+ *****dungeon.txt*14[Winning] *****dungeon.txt*15[Dying]
+ *****dungeon.txt*16[Where to get more help]
+
+After you have *****birth.txt*0[created your character], you will begin your ToME
+adventure. Symbols appearing on your screen will represent the world's
+walls, floor, objects, features, and creatures lurking about. In order
+to direct your character through his adventure, you will enter single
+character commands (see "*****command.txt*0[command.txt]").
+
+~~~~~03|Symbols
+~~~~~04|Identifying features
+#####R=== Symbols On Your Map ===
+
+Symbols on your map can be broken down into three categories: Features of
+the world such as walls, floor, doors, and traps; Objects which can be
+picked up such as treasure, weapons, magical devices, etc; and creatures
+which may or may not move about the dungeon, but are mostly harmful to your
+character's well being.
+
+Some symbols are used to represent more than one type of entity, and some
+symbols are used to represent entities in more than one category. The "@"
+symbol (by default) is used to represent the character.
+
+It will not be necessary to remember all of the symbols and their meanings.
+The "slash" command ("/") will identify any character appearing on your map
+(see "*****command.txt*0[command.txt]").
+
+Note that you can use a *****command.txt*105["user pref file"] to change any of these symbols to
+something you are more comfortable with.
+
+
+#####G Features that do not block line of sight
+
+ . A floor space 1 Entrance to General Store
+ . A trap (hidden) 2 Entrance to Armoury
+ ^ A trap (known) 3 Entrance to Weapon Smith
+ [[[[[y;] A glyph of warding 4 Entrance to Temple
+ [[[[[U'] An open door 5 Entrance to Alchemy Shop
+ [[[[[U'] A broken door 6 Entrance to Magic Shop
+ < A staircase up 7 Entrance to the Black Market
+ [[[[[y<] A quest exit 8 Entrance to your Home
+ [[[[[r<] A quest up level 9 Entrance to Bookstore
+ [[[[[U<] A shaft up [[[[[r>] A quest down level
+ > A staircase down [[[[[U>] A shaft down
+ [[[[[y>] A quest entrance [[[[[v>] Dungeon entrance
+ _ A fountain [[[[[D_] An empty fountain
+ * Straight road start/exit [[[[[B*] Section of the Straight Road
+ [[[[[b*] Section of the Straight Road [[[[[W*] Section of the Straight Road
+ [[[[[D*] Corrupted straight road [[[[[R*] An explosive rune
+ [[[[[B~] Stream of water (shallow) [[[[[b~] Stream of water (deep)
+ [[[[[u~] Tainted stream (water) [[[[[s#] Underground tunnel
+ [[[[[U#] Pool of lava (shallow) [[[[[r#] Pool of lava (deep)
+ [[[[[D#] Dark pit [[[[[u.] Dirt
+ [[[[[g.] Patch of Grass [[[[[W.] Ice
+ [[[[[y.] Sand [[[[[D.] Ash
+ [[[[[u.] Mud [[[[[v.] Nether mist
+ [[[[[r.] Floor [[[[[D0] Altar of Darkness
+ [[[[[R0] Altar of Force [[[[[B0] Altar of Winds
+ [[[[[W0] Altar of Being [[[[[v+] Void Jumpgate
+ [[[[[v;] Monster trap [[[[[B.] Glass wall
+ [[[[[w#] Illusion wall [[[[[g;] Grass with flowers
+ [[[[[w.] Cobblestone road [[[[[g#] Small tree
+ [[[[[w*] Town (in wilderness) [[[[[U^] Underground tunnel
+ [[[[[y+] A web
+
+#####G Features that block line of sight
+
+ [[[[[w#] A secret door # A wall
+ [[[[[U+] A closed door % A mineral vein
+ [[[[[U+] A locked door [[[[[o*] A mineral vein + treasure
+ [[[[[U+] A jammed door [[[[[w:] A pile of rubble
+ [[[[[D#] A dead tree [[[[[W#] Ice wall
+ [[[[[G#] A tree [[[[[y#] Sand wall
+ [[[[[U^] A mountain chain [[[[[W^] High mountain chain
+
+
+#####G Objects
+
+ ! A potion (or flask) / A pole-arm
+ ? A scroll, book, map, parchment / Music instrument
+ ? A rune, runestone | An edged weapon
+ , A mushroom (or food) \ A hafted weapon or digger
+ - A wand, rod or rod tip } A sling, bow, or x-bow
+ _ A staff { A shot, arrow, bolt, boomerang
+ = A ring ( Soft armour/cloak
+ " An amulet [ Hard armour
+ $ Gold or gems ] Misc. armour
+ ~ Lites, Tools, Chests, etc ) A shield
+ ~ Junk, Sticks, Skeletons, etc ` Trapping kit, climbing set
+ ~ Stone, random artifact o Egg
+ * An essence & (unused)
+
+~~~~~05|Monsters
+#####G Monsters
+
+ $ Creeping Coins , Mushroom Patch
+ a Giant Ant A Angelic being
+ b Giant Bat B Bird
+ c Giant Centipede C Canine
+ d Dragon D Ancient Dragon
+ e Floating Eye E Elemental
+ f Feline F Dragon Fly
+ g Golem G Ghost
+ h Humanoids H Hybrid
+ i Icky-Thing I Insect
+ j Jelly J Snake
+ k Kobold K Killer Beetle
+ l Giant Louse L Lich
+ m Mold M Multi-Headed Hydra
+ n Naga N (unused)
+ o Orc O Ogre
+ p Human P Giant Human(oid)
+ q Quadruped Q Quylthulg
+ r Rodent R Reptile/Amphibian
+ s Skeleton S Spider/Scorpion/Tick
+ t Townsperson T Troll
+ u Minor demon U Major demon
+ v Vortex V Vampire
+ w Worm or Worm Mass W Wight/Wraith
+ x (unused) X Xorn/Xaren
+ y Yeek Y Yeti
+ z Zombie/Mummy Z Zephyr Hound
+
+
+~~~~~07|Town
+#####R=== The Town Level ===
+
+The town level is where you will begin your adventure. The town consists of
+several buildings (most with an entrance), some townspeople, and a main wall
+which surrounds the town (with gates in it). Outside the gates may be found
+unclaimed lands and wilderness, where beasts still run wild. The first time
+you are in town it will be daytime (unless you are an undead character), but
+note that the sun will rise and set (rather instantly) as time passes.
+
+There are a few different towns around the world map, and your starting town
+will eventually become too small for you (if you survive the dangers of the
+dungeon). Other towns will have some different facilities, and you can find
+your way to other towns by reading the "Adventurer's Guide to Middle-earth"
+parchment with which *every* character begins the game.
+
+
+#####R=== Townspeople ===
+
+The town contains many different kinds of people. There are the street
+urchins, young children who will mob an adventurer for money, and seem to
+come out of the woodwork when excited. Blubbering idiots are a constant
+annoyance, but not harmful. Public drunks wander about the town singing,
+and are of no threat to anyone. Sneaky rogues who work for the black
+market are always greedily eyeing your backpack for potential new
+'purchases'... And finally, what town would be complete without a
+swarm of half drunk warriors, who take offense or become annoyed just for
+the fun of it.
+
+Most of the townspeople should be avoided by the largest possible distance
+when you wander from store to store. Fights will break out, though, so be
+prepared. Since your character grew up in this world of intrigue, no
+experience is awarded for killing the town inhabitants, though you may
+acquire treasure.
+
+~~~~~21|Buildings
+#####R=== Town Buildings ===
+
+Your character will begin his adventure with some basic supplies, and some
+extra gold with which to purchase more supplies at the town stores.
+
+You may enter any open store and barter with the owner for items you can
+afford. When bartering, you enter prices you will pay (or accept) for some
+object. You can either enter the absolute amount, or precede a number with
+a plus or minus sign to give a positive or negative increment on your
+previous offer. But be warned that the owners can easily be insulted, and
+may even throw you out for a while if you insult them too often. [[[[[BTo enter]
+[[[[[Ba store, simply move onto the entrance, which is represented by a number]
+[[[[[Bfrom 1 to 9.]
+
+If you consistently bargain well in a store, that is, you reach the final
+offer much more often than not, then the store owner will eventually
+recognise that you are a superb haggler, and will go directly to the final
+offer instead of haggling with you. Items which cost less than 10 gold
+pieces do not count, as haggling well with these items is usually either
+very easy or almost impossible. The more expensive the item is, the less
+likely the store owner is to assume that you are a good haggler. Note that
+you may disable haggling with a software option, though this will inflict a
+10% "sales tax" on all purchases for which the store owner would have
+required you to haggle.
+
+Once inside a store, you will see the name and race of the store owner, the
+name of the store, the maximum amount of cash that the store owner will pay
+for any one item, and the store inventory, listed along with tentative
+prices, which will become "fixed" (at the "final offer") should you ever
+manage to haggle a store owner down to his final offer.
+
+You will also see an (incomplete) list of available commands. Note that
+many of the commands which work in the dungeon work in the stores as well,
+but some do not, especially those which involve "using" objects.
+
+Stores do not always have everything in stock. As the game progresses, they
+may get new items, so check back from time to time. Also, if you sell them
+an item, it may get sold to a customer while you are adventuring, so don't
+always expect to be able to get back everything you have sold. If you have
+a lot of spare gold, you can purchase every item in a store, which will
+induce the store owner to bring out new stock, and perhaps even retire. If
+you are low on funds (and morals), you may attempt to steal an item from
+the store, but beware -- if you are caught, the store owner will not let you
+back in for a very long time.
+
+Store owners will not buy harmful or useless items. If an object is
+unidentified, they will pay you some base price for it. Once they have
+bought it they will immediately identify the object. If it is a good object,
+they will add it to their inventory. If it was a bad bargain, they simply
+throw the item away. In any case, you may receive some knowledge of the
+item in case another is encountered.
+
+#####GThe General Store ("1")
+ The General Store sells foods, drinks, some clothing, torches, lamps,
+ oil, shovels, picks, and spikes. All of these items and some others
+ can be sold back to the General store for money.
+
+#####GThe Armoury ("2")
+ The Armoury is where the town's armour is fashioned. All sorts of
+ protective gear may be bought and sold here.
+
+#####GThe Weaponsmith's Shop ("3")
+ The Weaponsmith's Shop is where the town's weapons are fashioned. Hand
+ and missile weapons may be purchased and sold here, along with arrows,
+ bolts, and shots.
+
+#####GThe Temple ("4")
+ The Temple deals in healing and restoration potions, as well as bless
+ scrolls, word of recall scrolls, some approved priestly weapons, and
+ priest spell books.
+
+#####GThe Alchemy shop ("5")
+ The Alchemy Shop deals in all types of potions and scrolls.
+
+#####GThe Magic User's Shop ("6")
+ The Magic User's Shop deals in all sorts of rings, wands, amulets, and
+ staves, as well as spell books.
+
+#####GThe Black Market ("7")
+ The Black Market will sell and buy anything at extortionate prices.
+ However it occasionally has VERY good items in it. The shopkeepers are
+ not known for their tolerance...
+
+#####GYour Home ("8")
+ This is your house where you can store objects that you cannot carry
+ on your travels, or will need at a later date.
+
+#####GThe Bookstore ("9")
+ The Bookstore deals in all sorts of magical books. You can purchase
+ and sell spellbooks for spellcasters and priests here.
+
+
+#####ROther Buildings
+In addition to the basic stores, there are some special buildings that can be
+found in some towns. These Buildings (represented by +'s) include:
+
+#####GMayor's Office/Castle
+ The home office for the town. Adventurers looking for work besides
+ exploring the dungeon should hunt in here.
+
+#####GPet Shop
+ Great place to purchase eggs and get pets.
+
+#####GThe Soothsayer
+ To discover what *****/afatespoi.txt*0[fates ("a")] lie in store for you.
+
+#####GThe Prancing Pony
+ Wine, dine, rest and relax!
+
+#####GThe Nest
+ Thunderlords are masters of teleportation, and will consent to bear you
+ to your chosen dungeon destination for a fee.
+
+#####GBeastmaster Shanty
+ For those who enjoy trophy hunting, and to research that strange animal
+ you saw during your adventures.
+
+#####GFighters Hall
+ The place to reforge weapons and armour.
+
+#####GRangers Guild
+ The place to reforge distance weapons and their ammunition.
+
+#####GLibrary
+ For information of all kinds.
+
+#####GGambling House
+ Read the *****/bgambling.txt*0[rules ("b")] before paying. The games are
+ not rigged, just naturally difficult.
+
+#####GTower of Magery/Wizards Spire
+ The wizards will identify your items or recharge your magical items for
+ a fee.
+
+#####GInner temple/Priests Circle
+ A place of healing.
+
+#####GPaladin guild
+ Some healing and enchantments available.
+
+#####GThe Mathom House
+ Donate important, but unwanted items you find in the dungeon.
+
+
+~~~~~1|Wilderness
+#####R=== The Wilderness and the Wilderness Map ===
+
+Between the towns, the hand of civilisation has not tamed the lands, and
+wild creatures run rampant. This is another place that is worth exploring.
+Hidden within the wilderness are several interesting locations, with the
+four main ones for any adventurer - Barrow Downs, Mirkwood, Mordor and
+Angband each being located at or near one of the main towns of Middle-
+earth. These locations should be explored consecutively, as each one
+increases in difficulty from the point where the previous dungeon finished.
+A new character should not try to go at Mordor or Angband as their first
+dungeon (well, not if you wish to survive your first step, anyway)!
+
+As well as these (and other) locations, the wilderness can be a good place
+to go when you are seeking a change from the scenery of the dungeons, or just
+a bit of fast experience.
+
+Be warned - some creatures found in the wilderness can be quite dangerous,
+and travel through the wilderness can be time-consuming. If you are wishing
+to simply move to another town, there is an overview map (called the
+"Wilderness Map") that can be travelled through by going up "<" from the
+town level. While travelling through this map, your character is still having
+to actually walk through each square of the normal view, but you only see the
+end result of them moving from one 4x4 panel to the next. As such, food
+consumption will appear to be much higher in the Wilderness View than it is
+normally, and it is recommended that you travel prepared. It is also possible
+for the wild creatures within the wilderness to ambush you when travelling,
+which will force you out of the Wilderness Map so that you can safely get
+yourself out of trouble, before continuing on your way.
+
+All of the special locations can be seen as downstairs (">") on the
+Wilderness Map and towns as "*"s. This makes it *much* easier to find your
+way from one interesting place to another.
+
+The "Adventurer's Guide to Middle-earth" (a parchment with which *every*
+character begins the game) contains details about the towns and some of
+the dungeons, including rough directions on how to get there.
+
+~~~~~06|Dungeons|In the dungeon
+#####R=== Within The Dungeon ===
+
+Once your character is adequately supplied with food, light, armor, and
+weapons, he is ready to enter Barrow Downs. Move on top of the ">" symbol
+and use the "Down" command (">").
+
+Your character will enter a maze of interconnecting staircases and finally
+arrive somewhere on the first level of the dungeon. Each level of the
+dungeon is fifty feet high (thus dungeon level "Lev 1" is often called
+"50 ft"), and is divided into rectangular regions several times
+larger than the screen. Once you leave a level by a
+staircase, you will never again find your way back to that region of that
+level, but there are an infinite number of other regions at that same "depth"
+that you can explore later. So be careful that you have found all the
+treasure before you leave a level, or you may never find it again! The
+monsters, of course, can use the stairs, and you may eventually encounter
+them again.
+
+In the dungeon, there are many things to find, but your character must
+survive many horrible and challenging encounters to find the treasure lying
+about and take it safely back to the town to sell.
+
+~~~~~23|Light
+There are two sources for light once inside the dungeon: permanent light
+which has been magically placed within rooms, and a light source carried by
+the player (or some of the monsters). If neither is present, the character
+will be unable to see. This will affect searching, picking locks, disarming
+traps, reading scrolls, casting spells, browsing books, etc. So be very
+careful not to run out of light!
+
+A character must wield a torch or lamp in order to supply his own light. A
+torch or lamp burns fuel as it is used, and once it is out of fuel, it stops
+supplying light. You will be warned as the light approaches this point. You
+may use the "Fuel" command ("F") to refuel your lantern (with flasks of oil)
+or your torch (with other torches), so it is a good idea to carry extra
+torches or flasks of oil, as appropriate. There are rumours of objects of
+exceptional power which glow with their own never-ending light.
+
+~~~~~08|Objects
+#####R=== Objects Found In The Dungeon ===
+
+The mines are full of objects just waiting to be picked up and used. How
+did they get there? Well, the main source for useful items are all the
+foolish adventurers (like you?) that proceeded into the dungeon before you.
+They get killed, and the helpful creatures scatter the various treasures
+throughout the dungeon. Most cursed items are placed there by the joyful evil
+sorcerers, who enjoy a good joke when it gets you killed.
+
+You pick up objects by moving on top of them. You can carry up to 23
+different items in your backpack while wearing and wielding up to 12 others.
+Although you are limited to 23 different items, each item may actually be a
+"pile" of up to 99 similar items. If you somehow manage to stuff 24 items
+into your pack, for example, by removing an item from your head while your
+pack is full, then your pack will "overflow" and the most recently added
+item will fall out and onto the ground. You will be warned about any command
+that seems likely to induce this behaviour.
+
+You are, in addition, limited in the total amount of weight that you can
+carry. As you approach this value, you become slower, making it easier for
+monsters to chase you. Note that there is no upper bound on how much you can
+carry, if you do not mind being slow. Your weight limit is determined by your
+strength.
+
+Objects do not block the line of sight, but may stack on top of one another,
+with the one on top hiding others beneath it.
+
+ Q: I'm standing on a pile of items. How do I see what's in the pile
+ without picking it all up, moving it, or destroying it all?
+ A: 1. Stand on the pile in question
+ 2. Type shift + i (examine)
+ 3. Type - (examine items on floor)
+ 4. Type * (expand list of items on floor)
+ 5. (as needed) Type letter associated with item to look at it more
+ closely.
+
+Objects may also obscure stairs, Ways and void jumpgates.
+
+ Q: I'm standing on a pile of items. Is there a command to see if
+ there is a stair beneath the pile?
+ A: Stairs, void jumpgates and Ways that obscured by clutter still
+ function.
+ You are advised to take a good hard look at your surroundings before
+ creating lots of dungeon clutter. You can see if there is a stair
+ beneath the pile with either of these methods:
+ 1. Pick up, move, or eliminate the pile.
+ 2. Press l (look), then select the square you wish to inquire about.
+ Press <enter>; it will scroll through everything on the ground,
+ and eventually it ends with "It is in a Void Jumpgate", or
+ whatever.
+
+
+Many objects found within the dungeon have special commands for their use.
+Wands must be Aimed, staves must be Used, scrolls must be Read, and potions
+must be Quaffed. You may, in general, not only use items in your pack, but
+also items on the ground, if you are standing on top of them. For a detailed
+list of the commands to use objects, see *****command.txt*0[command.txt].
+
+Chests are complex objects, containing traps, locks, and possibly treasure
+or other objects inside them once they are opened. Many of the commands that
+apply to traps or doors also apply to chests and, like traps and doors, these
+commands do not work if you are carrying the chest.
+
+One item in particular will be discussed here. [[[[[BThe scroll of "Word of]
+[[[[[BRecall"] can be found within the dungeon, or bought at the temple in
+town. It acts in two manners, depending upon your current location. If read
+within the dungeon, it will teleport you back to town. If read in town, it
+will teleport you back down to the deepest level of the dungeon to which your
+character has previously journeyed. This makes the scroll very useful for
+getting back to the deeper levels of the dungeon. Once the scroll has been
+read it takes a while for the spell to act, so don't expect it to save you
+in a crisis. Reading a second scroll before the first has had a chance to
+take effect will cancel both scrolls. Since an accidental dive to a new depth
+(via a trapdoor, for example), may result in the Word of Recall dungeon depth
+being 'broken', so to speak (meaning that the next Word of Recall in town
+will take you back deeper than you would like to), there is a feature in
+ToME which allows you to read a scroll of Word of Recall on a different
+level and 'reset' the recall depth to that level (instead of the deepest
+level). Some dungeons cannot be recalled into, though you can still recall
+out.
+
+You may "inscribe" any object with a textual inscription of your choice.
+These inscriptions are not limited in length, though you may not be able to
+see the whole inscription on the item. The game applies special meaning to
+inscriptions containing any text of the form "@#" or "@x#" or "!x" or "!*",
+see "*****command.txt*0[command.txt]" and "*****macrofaq.txt*0[macrofaq.txt]".
+
+The game provides some "fake" inscriptions to help you keep track of your
+possessions. Wands and staves which are known to be empty will be inscribed
+with "empty". Objects which have been tried at least once but haven't been
+identified yet will be inscribed with "tried". Cursed objects are inscribed
+with "cursed". Broken objects may be inscribed with "broken". Also, any
+item which was purchased at a discount, implying that it is slightly
+"sub-standard", will be inscribed with the appropriate "discount", such as
+"25% off". Note that these inscriptions are fake, and cannot be removed,
+though they can be covered up by a real inscription if you so desire. Try
+"_" as a nice short one.
+
+Also, occasionally you will notice that something in your inventory or
+equipment list seems to be magical. High level characters are much more
+likely to notice this than beginning characters. When you do notice this,
+the item in question will be inscribed with "good" or "cursed" as is
+relevant. You can increase your ability to notice magical effects of armour
+and weapons by increasing the *****skills.txt*01[Combat] skill. You can increase your ability
+to sense particularly well enchanted magical items (potions, scrolls. wands
+etc) by increasing your *****skills.txt*21[Magic] skill. If you increase these
+high enough, you will gain a special method of "sensing" your
+inventory/equipment items, which tells you not only whether an item is "good"
+or "cursed", but also if it is "average", "special", "excellent", "terrible" or
+"worthless".
+
+~~~~~21|Objects|Colour of inventory slot letter
+The colour of the letter that identifies each item in your backpack can tell
+you something about their magical status. Grey indicates the item has not been
+identified yet. After identification, the colour changes to one of the
+following: white, indicating it is normal; blue indicates it is an ego-item
+(pseudo-id's as {excellent}); yellow indicates it is an artifact {special};
+green shows it is an artifact which is part of a set.
+
+It is rumoured that rings of power and extra rare spell books may be found
+deeper in the dungeon....
+
+And lastly, a final warning: not all objects are what they seem. The line
+between tasty food and annoying mushroom is a fine one, and sometimes a
+potion will reach out and bite you...
+~~~~~09|Objects|Cursed Objects
+~~~~~10|Cursed Objects
+#####R=== Cursed Objects ===
+
+Some objects, mainly armour and weapons, have had curses laid upon them.
+These horrible objects will look like any other normal item, but will
+detract from your character's stats or abilities if worn. They will also
+be impossible to remove until the curse is removed. In fact some are
+so badly cursed that even this will not work, and more potent methods are
+needed.
+
+If you wear or wield a cursed item, you will immediately feel something
+wrong. The item will also be inscribed "cursed".
+
+Shopkeepers will refuse to buy any known cursed item.
+~~~~~13|Mining
+~~~~~11|Dungeons|Mining
+#####R=== Digging and Mining ===
+
+It is possible for you to be trapped within the dungeon. You will not be able
+to dig your way out without a digging tool (shovel, pick, or other means of
+digging). It is absolutely essential to always carry some kind of digging tool,
+even when you are not planning on tunnelling for treasure. Do not leave the
+town level of Bree without a digger!
+
+Picks and shovels have a digging ability expressed as "(+<num>)", e.g. (+2).
+The higher the number, the better the digging ability of the tool. Diggers are
+effective against rubble, trees, and many walls. Rubble and veins may hide
+treasure; trees do not.
+
+You dig in something with the tunnel (shift + t) command. Thorough digging
+removes one ASCII square (i.e. tile) of what is being dug. This may require
+multiple attempts depending on how good your digger is (and how high your
+strength is). Once the square is removed, you will be informed if you found
+anything there. If another diggable square exists beyond the area you just dug,
+you can begin the process again.
+
+Some dungeons contain rich strikes which may be found only by mining it out of
+the walls. Quartz veins are the richest, yielding the most metals and gems, but
+magma veins may also hide hoards within them. When digging rock, granite is
+much harder to dig through than quartz or magma veins, so it is much faster to
+follow a vein exactly and dig around the granite. There is also a game option
+for highlighting magma and quartz within the walls, which makes this easier.
+
+If the character has a scroll, staff, or spell of treasure location, she can
+immediately locate all strikes of treasure within a vein shown on the screen.
+This makes mining much easier and more profitable.
+~~~~~12|Dungeons|Doors, Passages, Rooms and Staircases
+#####R=== Staircases, Ways, Void jumpgates, Secret Doors, Passages, and Rooms ===
+
+Staircases are the manner in which you get deeper or climb out of the
+dungeon. The symbols for the up and down staircases are the same as the
+commands to use them. A "<" represents an up staircase and a ">" represents
+a down staircase. You must move your character over the staircase before
+you can use it. You use it by typing the same character as the staircase
+itself (either "<" or ">".)
+
+In flat environments such as forests, Ways replace staircases. On the map, Ways
+are identical to staircases and behave the same way.
+
+Yellow down stairs and Ways are quest entrances (although not every quest
+is reached by such means).
+
+Shafts are also represented by "<" or ">", but are brown. They work similarly
+to stairs and Ways, but if you use one, you might traverse more than one
+dungeon level all in one go as a result.
+
+Stairs, impenetrable walls, and shop entrances like titanium walls, and the
+doors into shops, cannot be destroyed by any means (although their location can
+occasionally change under the right circumstances).
+~~~~~23|Void jumpgates
+A void jumpgate appears on your map as a violet "+". Jumpgates always occur in
+pairs. To activate a jumpgate, stand on it and type ">". You will instantly
+appear on top of its paired jumpgate, which will be somewhere else on the same
+dungeon level.
+
+Many secret doors are used within the dungeon to confuse and demoralise
+adventurers foolish enough to enter. But with some luck, and lots of
+concentration, you can find these secret doors. Secret doors will sometimes
+hide rooms or corridors, or even entire sections of that level of the
+dungeon. Sometimes they simply hide small empty closets or even dead ends.
+Secret doors always look like granite walls, just like traps always look
+like normal floors.
+
+Creatures in the dungeon will generally know and use these secret doors, and
+can sometimes be counted on to leave them open behind them when they pass
+through.
+
+For historical reasons, secret doors are never locked.
+
+~~~~~18|Pets
+~~~~~19|Companions
+~~~~~20|Monsters|Pets
+#####R=== Pets and Companions ===
+You may, in the course of a game, acquire friendly monsters who will help you
+defeat enemies. There are several different types of these, you can determine
+which your monster is by 'l'ooking at it.
+[[[[[vneutral] This monster will not help you by attacking other monsters, but nor
+ will it attack you.
+[[[[[vco-aligned] This monster will attack other enemy monsters, but you will not
+ gain any experience for its kills.
+[[[[[vpet] This monster will kill things for you. The amount of experience you gain
+ from its kills is determined by the level of your *****skills.txt*42[Monster-lore] skill.
+ This monster will gain levels and experience of its own, but cannot travel
+ between dungeon levels.
+[[[[[vcompanion] This type of monster will not only take experience and level up like
+ pets, but will also follow you from one dungeon level to the next. If
+ you successfully complete an adventurer quest for a lost sword and let
+ him join you, he will become a companion. Once again the amount of
+ experience you gain from a companion's kill depends upon your
+ Monster-lore skill.
+
+Your Monster-lore skill also determines the maximum number of pets and
+companions you can have at any one time.
+
+Pets, companions and co-aligned creatures cannot deliver killing blows to
+uniques or quest monsters. You must do this yourself!
+
+You can give commands to pets and companions to make them more useful, using
+the "P" command. The list of available commands is as follows:
+[[[[[vdismiss companions] Dismisses your companions. They can be difficult to get rid
+ of any other way.
+[[[[[vdismiss pets] Dismisses pets. You will be given the opportunity to dismiss all
+ current pets, or if you answer no to that first question, to
+ dismiss specific pets.
+[[[[[vcall pets] Calls your pets (and companions) to you.
+[[[[[vfollow me] Asks your pets (and companions) to follow you. They do have a mind of
+ their own, and may not be able to travel as fast as you can.
+[[[[[vseek and destroy] Selecting this will cause your pets and companions to wander
+ further from you, looking for enemies to kill.
+[[[[[vallow/disallow open doors] Selecting this toggles whether your pets and
+ companions can open doors.
+[[[[[vallow/disallow pickup items] Selecting this toggles whether your pets and
+ companions can pick up items. Disallowing it will
+ cause the monster to drop any items he is carrying on
+ the floor.
+[[[[[vgive target to a friend] Selecting this will cause one of your pets or
+ companions to attack your current target.
+[[[[[vgive target to all friends] Causes all pets or companions to attack your
+ current target.
+[[[[[vfriend forget target] All your friends will follow their normal attack
+ patterns, neglecting any targets you have given them.
+
+~~~~~14|Objectives
+#####R=== Game Objectives ===
+
+In ToME you will be required to complete a certain number of quests. Your
+first quest is to discover the true nature of the evil lurking in the Tower of
+Dol Goldur near Mirkwood.
+
+Each quest may lead on to others, and most quests can be postponed until when
+you feel ready to tackle them. Simply explore other dungeons until you feel you
+have gained enough experience to tackle your next task. Other quests are
+optional and can be used for further experience.
+
+Once you have finished your final quest, when you are ready to retire, simply
+"commit suicide" ("^Q") to have your character entered into the high score list
+as a winner. Note that until you retire, you can still be killed, so you may
+want to retire before wandering into a hoard of nasties....
+
+You may also like to make a character sheet of your winning character (by
+going through the "C"haracter screen and choosing "f"ile), and post in the
+rec.games.roguelike.angband newsgroup with a text copy of the dump pasted
+into the post. Include details about anything major that happened to your
+character - did they find a ring of speed (+10) on dungeon level 2? Or had
+they reached dungeon level 60 before finding their first artifact? Did you
+have a really scary moment that stands out from the rest of the game? And how
+*did* you actually win the game, anyway?
+
+~~~~~15|Dying
+~~~~~17|Loading old characters
+#####R=== Upon Death and Dying ===
+
+If your character falls below 0 hit points, he has died and cannot be
+restored (for most classes, anyway). A tombstone showing information about
+your character will be displayed. You are also permitted to get a record of
+your character, and all your equipment (identified) either on the screen or
+in a file.
+
+Your character will leave behind a reduced save file, which contains only
+the monster memory and your option choices. It may be restored, in which
+case the new character is generated exactly as if the file was not there,
+but the new player will find his monster memory containing all the experience
+of past incarnations.
+
+In this way, death in ToME is permanent. You cannot simply 'reload at the last
+save' as in most other contemporary games. Death is permanent, just as it is
+in real life.
+
diff --git a/lib/help/dunspoil.txt b/lib/help/dunspoil.txt
new file mode 100644
index 00000000..2da6d6b7
--- /dev/null
+++ b/lib/help/dunspoil.txt
@@ -0,0 +1,173 @@
+|||||oy
+~~~~~01|Dungeons|Spoilers
+~~~~~02|Spoilers|Dungeons
+#####R=== ToME's DUNGEONS ===
+
+There are numerous dungeons within Middle-earth, but not all
+of them are required to be ventured into. The original Angband
+dungeon has been split into 4 parts, each found near or at a
+different town. Travel between towns is usually easiest by
+using the wilderness overview map ("<" from the town level),
+but remember to take lots of food with you!
+
+#####GThe Basic Dungeons
+#####G------------------
+
+#####G1. Barrow-Downs
+Found near the outskirts of Bree (the starting town), this
+dungeon is where you should begin your adventure. It
+contains the main Dungeon levels 1 (50') to 10 (500'),
+after which it becomes necessary for the character to seek
+out a new dungeon in order to be able to descend further in
+their quest to kill Morgoth.
+
+#####G2. Mirkwood
+The Mirkwood forest contains levels 11 (550') to 33 (1650'),
+and can be found to the north-east of Lothlorien.
+
+#####G3. Mordor
+The Land of Mordor is a hot, cavernous region, containing
+levels 34 (1700') to 66 (3300') of the dungeon. Located to
+the East of Minas Anor, it is a place filled with danger,
+and only a wary adventurer will make it through to the other
+end of this dungeon.
+
+#####G4. Angband
+Only the most successful of adventurers usually make it this
+far. The Dungeon Angband contains both Sauron and Morgoth,
+who will gladly wipe out any who dare to oppose them! This
+dungeon covers levels 67 (3350') to 127 (6350'), but Sauron
+waits for you at level 99, and Morgoth at level 100. This
+dungeon can be found near Gondolin.
+
+
+#####GAdditional ToME Dungeons
+#####G------------------------
+
+In addition to the basic 4 dungeons, there are numerous other
+dungeons scattered around the world for an adventurer to explore
+while preparing for the final fight. Many of the dungeons have a
+guardian at the bottom of them, and a few have unique levels
+somewhere within them (like an orc town) with guaranteed artifacts
+and nasties within them. Other than the unique levels, all of the
+dungeons can be exited and re-entered at your leisure.
+
+Be warned though that some dungeons are partly toxic to the
+adventurer, and will damage you BY THEMSELVES just by you walking
+within them!
+
+#####GOrc Cave
+A dark tunnel leading to an Orc Cave, guarded at its base by Azog,
+King of the Uruk-Hai. Also somewhere within this dungeon is the
+hidden special level called Deathwatch.
+Equivalent to dungeon levels 10 to 22.
+
+#####GThe Old Forest
+A Forest is a haven for many animals, both of the good variety, and
+the bad. This forest is no exception. In the past, unsuccessful
+attempts have been made to cultivate this land, and it is possible
+that some of the towns may remain. It is also rumoured that Old Man
+Willow has made his home here, and is the source of the Forest's
+resistance to cultivation.
+Equivalent to dungeon levels 13 to 25.
+
+#####GHelcaraxe
+The Grinding Ice of Helcaraxe is a bitterly cold series of caverns,
+and guarded by the White Balrog.
+Equivalent to dungeon levels 20 to 40.
+
+#####GThe Sandworm lair
+A deep sandhole where most worms originated, it is guarded at its
+base by the Sandworm Queen.
+Equivalent to dungeon levels 22 to 30.
+
+#####GThe Heart of the Earth
+A dark passage leading into the heart of the world, the Heart of
+the Earth is the source of all the earth's changes. Some claim it
+to be the home of Golgarach, the Living Rock, who assists in the
+creation of new, ever-changing landforms.
+Equivalent to dungeon levels 25 to 36.
+
+#####GMaze
+A strange Maze where it becomes very difficult to remember where you
+have been, it is guarded at the bottom by The Minotaur of the Labyrinth.
+Equivalent to dungeon levels 25 to 37.
+
+#####GCirith Ungol
+The dungeon Cirith Ungol is full of poisonous fumes rising from the
+ground, and the land here looks diseased. Shelob is said to lurk
+within these depths.
+Equivalent to dungeon levels 25 to 50.
+
+#####GThe Land Of Rhun
+The Land Of Rhun is located on a large plain, and has been taken over
+by Ulfang the Black, Morgoth's first Easterling follower.
+Equivalent to dungeon levels 26 to 40.
+
+#####GThe Mines of Moria
+A stone door leads down to the depths of the Moria. Once the home of
+the dwarves, the mines have been taken over by creeping evil things, and
+unlucky adventurers may well stumble upon their training grounds. In
+the depths lurks Durin's Bane, the Balrog of Moria, and return from
+these depths can be difficult....
+Equivalent to dungeon levels 30 to 50.
+
+#####GThe Small Water Cave
+A small water cave filled with salt water, which rusts and damages an
+adventurer's equipment. This cave is not very deep, and is guarded by
+The Watcher in the Water.
+Equivalent to dungeon levels 32 to 34.
+
+#####GSubmerged Ruins
+The lost land of Numenor lies submerged here. The salt water causes
+everything to rust. These ruins are guarded by Ar-Pharazon the
+Golden.
+Equivalent to dungeon levels 35 to 50.
+
+#####GIllusory Castle
+The Illusory Castle is a very strange and confusing place for an
+adventurer to visit, and is rumoured to contain many strange
+monsters. Deep within the castle can be found The Glass Golem.
+Equivalent to dungeon levels 35 to 52.
+
+#####GPaths of the Dead
+A dark underground graveyard, this place looks extremely dangerous.
+It is claimed that the dead have all arisen in these depths, and are
+lead by Feagwath, the Undead Sorcerer.
+Equivalent to dungeon levels 40 to 70.
+
+#####GThe Sacred Land Of Mountains
+The Sacred Land Of Mountains is located in a large mountain range,
+with the remains of many old towns. Considered a perfect place to hide
+for one who could fly, it is rumoured that Trone the rebel Thunderlord
+fled into the ruins here.
+Equivalent to dungeon levels 45 to 70.
+
+#####GThe Tower of Dol Guldur
+The tower of of Dol Guldur is the last known residence of one known only
+as "the Necromancer". It is rumoured to be filled with his conjurations,
+although none have made it out of the Tower alive to confirm or deny this
+rumour.
+Equivalent to dungeon levels 57 to 70.
+
+#####GErebor, the Lonely Mountain
+A big, dark and frightening tunnel leading to the depth of the Lonely
+Mountain, this large cave is the ancestral home of the Dragons.
+Glaurung, Father of the Dragons has long made his home here.
+Equivalent to dungeon levels 60 to 72.
+
+#####GMount Doom
+A steaming cave in the centre of Mount Doom, this place is *hot*.
+It is said that Sauron forged the One Ring here and that it's the only place
+where it could be destroyed.
+Equivalent to dungeon levels 85 to 99.
+
+#####GNether Realm
+The Nether Realm is accessible only through a magic portal. Also
+known as Hell, this land is lethal to any who are unprepared for the
+ravages of Nether, and is guarded by Tik'srvzllat.
+#####BEquivalent to dungeon levels 666 to 696!!!!!
+
+
+ Created by Dawnmist for PernAngband 5.x.x
+ Updated for ToME 2.1.x
diff --git a/lib/help/essences.txt b/lib/help/essences.txt
new file mode 100644
index 00000000..f329fa80
--- /dev/null
+++ b/lib/help/essences.txt
@@ -0,0 +1,219 @@
+|||||oy
+~~~~~01|Spoilers|Essences
+~~~~~02|Alchemist|Essence Spoiler
+#####REssence Spoiler for ToME 2.2.0
+#####R------------------------------
+
+Essences are the tools of the trade for Alchemists, and unfortunately are
+useless for any other class. Alchemists use essences to create magical
+items for them to use.
+
+They can be either found on the floor while exploring the dungeon, or
+extracted from other magical items the alchemist finds during his
+adventures.
+
+To create an artifact, the alchemist will first have to have learnt the
+Artifact Creation ability. This ability costs 70 skill points (yes, 70,
+it's a very powerful ability!). And you need an alchemy skill of at least
+40, plus INT and WIS at 35 (thats 18/170 in non-linear form).
+To create the artifact, the alchemist will have to sacrifice 10 hit points,
+and an amount of magic essence similar to his skill in alchemy. The
+alchemist then allows the artifact to gain experience, and when it has
+enough, uses that experience to add abilities to the artifact. The
+alchemist can allow the artifact to continue to gain experience, thus
+keeping open the option to add more abilities later. This requires a
+similar amount of magic essence, but does not require the sacrifice of
+more hit points.
+
+Note that the experience you gain is divided among the artifacts that you
+have as well as going to yourself, so you will gain levels more slowly when
+empowering artifacts. Also, the artifact only gets 60% of the experience.
+So killing a creature worth 20xp would gain 10 for you, and 6 for the
+artifact.
+
+You can also modify existing artifacts when you attain skill level 50. Also
+at skill level 50 you will gain the ability to make temporary artifacts,
+which don't require the complex empowerments that regular items require,
+but also vanish after awhile.
+
+You cannot give an artifact an ability unless you have *Identified* an
+artifact which has that ability.
+
+For every four levels gained in the alchemy skill, the alchemist learns
+about objects of level (skill level)/4, starting by learning about level 1
+objects at skill level 0. (actually 1, but who's counting?)
+
+At skill level 5 you gain the ability to make ego items - but watch it!
+Your base failure rate will be 90%, and won't be 0% until you reach skill
+level 50. Adding gold will increase the chances of success in direct
+proportion to the value of the item you are trying to create. Note that
+this results in automatic success when the item you are trying to create
+happens to pick up a curse in the process.
+
+At skill level 5 you also gain knowledge of some basic ego item recipes.
+These are: Acidic, Shocking, Fiery, Frozen, Venomous, and Chaotic weapons,
+Resist Fire armour, and light sources of Fearlessness.
+
+At skill level 10 you will gain knowledge of digging ego items, if you have
+selected the option "always generate very unusual rooms" (ironman_rooms).
+
+At skill level 15 you can create ego wands, staves, rings, etc.
+
+At skill level 25 you gain the ability to empower double ego items.
+
+At skill level 50 you gain the ability to create temporary artifacts, which
+don't require any exotic ingredients beyond a single corpse of any type.
+
+Between skill levels 25 and 50, you will steadily gain the ability to set
+more and more flags.
+
+To finalise an artifact, you "P"ower it, and select the powers you want.
+Powers are divided into the following six categories:
+*****essences.txt*03[Stats, Sustains, Luck, Speed, Vision, etc.]
+*****essences.txt*04[Misc. (Auras, Light, See Invisibility, etc.)]
+*****essences.txt*05[Weapon Brands]
+*****essences.txt*06[Resistances and Immunities]
+*****essences.txt*07[ESP and Curses]
+*****essences.txt*08[Artifact Activations]
+
+~~~~~03
+#####GStats, Sustains, Luck, Speed, Vision, etc.
+lvl xp Power
+40 5000 Add to Strength Ring of Strength
+43 5000 Add to Intelligence Ring of Intelligence
+46 5000 Add to Wisdom Amulet of Wisdom
+46 5000 Add to Dexterity Ring of Dexterity
+42 5000 Add to Constitution Ring of Constitution
+30 5000 Add to Charisma Amulet of Adornment
+32 1000 Sustain Strength Ring of Sustain Strength
+34 1000 Sustain Intelligence Ring of Sustain Intelligence
+28 1000 Sustain Wisdom Ring of Sustain Wisdom
+36 1000 Sustain Dexterity Ring of Sustain Dexterity
+36 1000 Sustain Constitution Ring of Sustain Constitution
+25 1000 Sustain Charisma Ring of Sustain Charisma
+40 50000 Speed Ring of Speed
+38 150000 Extra Attacks Ring of Extra Attacks
+32 5000 Stealthy Left Insole from a Used Soft Boot
+29 2000 Adds to Searching Filthy Rag
+ 6 1000 Helps Infravision Brass Lantern
+30 1000 Lucky Rabbit's Left Forefoot
+25 30000 Aids in digging Pick
+40 50000 Multiplies Life Troll's Heart
+
+~~~~~04
+#####GMisc. (Auras, Light, See Invisibility, etc.)
+lvl xp Power
+20 15000 Invisibility Potion of Invisibility
+20 4000 See Invisible Potion of Invisibility
+20 30000 Free Action Iron Spike
+38 90000 Reflection Large Metal Shield
+20 30000 Aura of Fire Lungs from an Ancient Red Dragon
+25 30000 Aura of Lightning Lungs from an Ancient Blue Dragon
+ 8 1000 Light Everburning Torch
+20 10000 Bright Light Dwarven Lantern
+40 100000 Sunlight Feanorian Lamp
+40 200000 Flight Suit of Dragon Armour (any colour)
+50 10000000 Automatically IDs Morgoth's Testicles
+29 2000 Anti-Teleportation Teleport Inhibiting Amulet
+34 2000 Anti-Magic Magic Inhibiting Amulet
+50 100000 Wraith Form Potion of Invulnerability
+15 1000 Levitation Potion of Berserk Strength
+20 10000 Slow Digestion Lembas Wafer
+32 20000 Regenerate Mushroom of Unhealth
+12 20000 Teleport Mushroom of Confusion
+
+~~~~~05
+#####GWeapon Brands
+lvl xp Power
+30 20000 Extra Critical Hits Whip
+30 30000 Wounds Monsters Blade of Chaos
+26 6000 Vampiric Rod Tip of Drain Life
+16 2000 Slay Animal Dead Animal's Body
+25 2000 Slay Evil Evil Dead Thing's Remains
+30 2000 Slay Undead Remains of Undead Monster
+40 1500 Slay Demon Demon's Corpse
+10 700 Slay Orc Dead Orc
+16 700 Slay Troll Dead Troll
+25 900 Slay Giant Dead Giant
+33 2000 Slay Dragon Dead Dragon (any size will do)
+41 5000 *Slay* Dragon Mature Multi-Hued Dragon's Remains
+41 90000 *Slay* Undead Dead Summoner of Greater Undead
+41 90000 *Slay* Demon Lesser Balrog's Corpse
+36 20000 Vorpal
+40 90000 Earthquakes
+ 3 2000 Poison Brand
+12 2000 Acid Brand
+10 2000 Lightning Brand
+ 6 2000 Fire Brand
+ 8 2000 Frost Brand
+30 3000 Extra Might (Bows Only)
+35 3000 Extra Shots (Bows Only)
+
+~~~~~06
+#####GResistances and Immunities
+lvl xp Power
+49 500000 Immune to Acid Ancient Black Dragon's Foreskin
+50 500000 Immune to Lightning Ancient Blue Dragon's Foreskin
+49 500000 Immune to Fire Ancient Red Dragon's Foreskin
+50 500000 Immune to Cold Ancient White Dragon's Foreskin
+30 30000 Hold Life Amulet of the Magi
+12 10000 Resist Acid Ring of Acid
+15 10000 Resist Lightning Ring of Lightning
+13 10000 Resist Fire Potion of Resist Heat
+14 10000 Resist Cold Potion of Resist Cold
+25 30000 Resist Poison Potion of Cure Poison
+26 10000 Resist Fear Ring of Fear Resistance
+31 60000 Resist Light Ring of Light and Darkness Resistance
+31 60000 Resist Darkness Ring of Light and Darkness Resistance
+30 30000 Resist Blindness Ring of Blindness Resistance
+30 30000 Resist Confusion Ring of Confusion Resistance
+30 60000 Resist Sound Ring of Sound Resistance
+30 60000 Resist Shards Ring of Shard Resistance
+30 60000 Resist Nether Ring of Nether Resistance
+30 60000 Resist Nexus Ring of Nexus Resistance
+30 60000 Resist Chaos Ring of Chaos Resistance
+30 60000 Resist Disenchantment Ring of Disenchantment Resistance
+
+~~~~~07
+#####GESP and Curses
+lvl xp Power
+50 -100000 Temporary Item Corpse, any corpse
+10 -2000 Self-Cursing Filthy Rag
+45 -10000 Causes the Black Breath Sprig of Athelas
+40 -5000 Ancient Curse Scroll of *Remove Curse*
+40 -5000 Drains your Experience
+30 -5000 Aggravates Monsters
+30 -500 Curse Scroll of Remove Curse
+50 -5000 Permanently Cursed
+35 -2000 Can't be Dropped
+45 -5000 Drains your Hit Points
+20 -50000 Wielder Can't Move
+40 20000 Telepathy Formerly Floating Eye
+25 3000 Sense Orcs
+25 3000 Sense Trolls
+25 5000 Sense Dragons
+25 5000 Sense Giants
+25 5000 Sense Demons
+25 5000 Sense Undead
+25 5000 Sense Evil
+25 5000 Sense Animals
+25 5000 Sense Thunderlords
+25 5000 Sense Good
+25 5000 Sense Nonliving
+25 5000 Sense Unique Monsters
+25 2000 Sense Spiders
+
+~~~~~08
+#####GArtifact Activations
+lvl xp Power
+40 40000 Sunlight Brass Lantern
+20 4000 Magic Missile (1)
+30 300000 Magic Missile (2)
+40 400000 Ball of Missiles
+30 300000 Bolt of Lightning
+30 300000 Ball of Lightning
+35 350000 Ball of Lightning(2)
+40 400000 Ball of Lightning(3)
+40 400000 Ball of Lightning(4)
+45 450000 Breath Lightning
+50 40000 Fire a Rocket
diff --git a/lib/help/experien.hlp b/lib/help/experien.hlp
new file mode 100644
index 00000000..5e0bb9eb
--- /dev/null
+++ b/lib/help/experien.hlp
@@ -0,0 +1,28 @@
+|||||oy
+~~~~~01|Experience
+#####RGaining experience
+#####R==============================================
+
+The principle way for your character to gain experience (XP) is to kill
+monsters. There are a few other ways too, like lockpicking, but these only
+give small rewards.
+
+Once your character has gained enough experience to go up a level, then she
+will be given skill points to spend as you see fit. These points can be
+spent on either
+
+ *****/askills.txt*0[(a) Skills] which improve more for each point you put into them,
+or
+ *****/bability.txt*0[(b) Abilities] which are one-off purchases and grant your character new,
+ non-improvable powers
+
+Certain monsters can "drain" your experience, and thus your level. Although you
+do not lose the skill points you've already gained, you also will not gain
+further points until you reach a character level you have not already
+achieved. Luckily, you can restore drained experience through magical means,
+or by simply regaining the experience all over again.
+
+ *****/ynewbie.hlp*0[(y) New player help menu]
+ *****/zhelp.hlp*0[(z) Main menu]
+
+
diff --git a/lib/help/explore.hlp b/lib/help/explore.hlp
new file mode 100644
index 00000000..0c302ab8
--- /dev/null
+++ b/lib/help/explore.hlp
@@ -0,0 +1,16 @@
+|||||oy
+~~~~~01|Help|Exploring menu
+~~~~~02|Exploring menu
+#####RWelcome to the ToME Help System.
+#####R==============================================
+
+Please choose one of the following online help files:
+
+ *****/acommand.txt*0[(a) Available commands] How to control your character
+ *****/battack.txt*0[(b) Attacking monsters] How to attack, elemental attacks and resistances etc
+ *****/cdungeon.txt*0[(c) Exploring the dungeons] Symbols on your map, mining, pets, objects + more
+
+ *****/ynewbie.hlp*0[(y) New player help menu]
+ *****/zhelp.hlp*0[(z) Main menu]
+
+ \ No newline at end of file
diff --git a/lib/help/fatespoi.txt b/lib/help/fatespoi.txt
new file mode 100644
index 00000000..2815129e
--- /dev/null
+++ b/lib/help/fatespoi.txt
@@ -0,0 +1,28 @@
+|||||oy
+~~~~~01|Spoilers|Fates
+~~~~~02|Fates (spoiler)
+#####R Fate Spoiler
+#####R Accurate for PernAngband 5.x.x
+#####R by Dustin Ragan
+
+Numerous spirits inhabit the land of Arda, from the murderous barrow wights to
+the enigmatic Tom Bombadil. These spirits usually are bound to a specific
+geographic region, but there are exceptions to this rule. Sometimes one of
+these spirits will take interest in an adventurer. This can either be very,
+very good or very, very bad. These spirits will "rig" reality to ensure that
+something happens--or doesn't happen.
+
+In order to attract the attention of a spirit, the adventurer must be somewhat
+experienced, having attained at least the 11th level of experience. Every 10
+game turns, which corresponds to 1 normal speed player turn, there is a
+1 in 50,000 chance of gaining a fate. When this fate is chosen, there is a
+7/18 chance of being fated to find a specific mundane item on a specific
+dungeon level. A more belligerent spirit will, 7/18 of the time, summon a
+malicious monster to do battle on a specific dungeon level. There is a 1/9
+chance to be destined to find an artifact on a given level. There is also
+a 1/18 chance that you will meet your demise on a given level. Finally, there
+is a 1/18 chance of becoming invulnerable to attacks from mortals.
+
+Whenever a level is being chosen for a fate, it is always chosen within 20
+levels of your current recall depth. Items, monsters, and artifacts are all
+generated up to 10 levels out of depth for your current recall depth.
diff --git a/lib/help/foot.aux b/lib/help/foot.aux
new file mode 100644
index 00000000..47328799
--- /dev/null
+++ b/lib/help/foot.aux
@@ -0,0 +1,4 @@
+</TT></PRE>
+</FONT>
+</body>
+</html>
diff --git a/lib/help/g_eru.txt b/lib/help/g_eru.txt
new file mode 100644
index 00000000..113875b3
--- /dev/null
+++ b/lib/help/g_eru.txt
@@ -0,0 +1,65 @@
+|||||oy
+~~~~~01|Gods|Eru
+~~~~~02|Eru
+#####R === Eru Iluvatar ===
+
+Eru Iluvatar is the father of the Valar. His most faithful followers are those
+of the class *****c_pr_eru.txt*0[Priest(Eru)].
+
+#####GThe benefits of Worshipping Eru Iluvatar
+1. As you increase your piety, Eru will grant you a boost to your wisdom.
+ Eventually he will also start increasing your ability to handle magical
+ power, resulting in a boost to your spellpoints.
+2. If you are praying to him at the time, there is a chance that he will
+ deflect some blows from evil monsters (that increases with your level of
+ piety).
+3. If you are praying to him at the time, there is a chance that he will
+ resurrect you from the dead (provided you are very pious!).
+4. Your piety automatically increases over time if you are:
+ a) Not praying, and
+ b) Actively doing something (i.e. not resting or in the Wilderness map).
+
+#####GThe disadvantages of Worshipping Eru Iluvatar
+1. He doesn't like it if you destroy blessed weapons.
+2. You can only wield blunt or blessed weapons without penalty.
+3. He doesn't like it if you kill monsters that are aligned with good.
+4. He will completely abandon you if you wear The One Ring.
+~~~~~~03|Eru|Prayers
+#####GEru Iluvatar's Magic
+Worshipping Eru Iluvatar gives the adventurer access to a set of special
+spells that come directly from the hands of Eru. These spells use your piety
+to cast rather than your spellpoints, and the level of spells that Eru will
+permit you to use is determined by your Prayer skill - how skillful you are
+in asking for his help without offending him!
+
+There is a special book called the "Holy Tome of Eru Iluvatar" which
+contains instructions for the procedure for each of the prayers Eru will
+grant. There are four prayers all told, which are:
+1. [[[[[BSee the Music] (Level 1)
+ Allows you to 'see' the Great Music from which the world originates,
+ allowing you to see unseen things, and can be cast while blind.
+ At spell level 10 it allows you to see your surroundings.
+ At spell level 20 it allows you to cure blindness.
+ At spell level 30 it allows you to fully see all the level.
+2. [[[[[BListen to the Music] (Level 7)
+ Allows you to listen to the Great Music from which the world originates,
+ allowing you to understand the meaning of things.
+ At spell level 14 it allows you to identify all your pack.
+ At spell level 30 it allows you to identify all items on the level.
+3. [[[[[BKnow the Music] (Level 30)
+ Allows you to understand the Great Music from which the world originates,
+ allowing you to know the full abilities of things.
+ At spell level 10 it allows you to *identify* all your pack.
+4. [[[[[BLay of Protection] (Level 35)
+ Creates a circle of safety around you.
+
+Each of these spells can be increased in level both by improving your Prayer
+skill, and by improving your Spell-power skill.
+
+In addition to his specific magic, Eru will also assist with your ability to
+use some magic from the "standard" schools, in relation to how skilled you
+are at Prayer. These schools are as follows:
+ *****m_mana.txt*0[Mana School] at 1/2 the Prayer skill level.
+ *****m_divin.txt*0[Divination School] at 2/3 the Prayer skill level.
+ *****m_mind.txt*0[Mind School] at 1/3 the Prayer skill level.
+The spells from these schools are all cast using your normal spellpoints.
diff --git a/lib/help/g_manwe.txt b/lib/help/g_manwe.txt
new file mode 100644
index 00000000..4bbc85fd
--- /dev/null
+++ b/lib/help/g_manwe.txt
@@ -0,0 +1,62 @@
+|||||oy
+~~~~~01|Gods|Manwe
+~~~~~02|Manwe
+#####R === Manwe Sulimo ===
+
+Manwe is the strongest of the Valar, next to Morgoth. His most faithful
+followers are those of the class *****c_pr_man.txt*0[Priest(Manwe)].
+
+#####GThe benefits of Worshipping Manwe Sulimo
+1. As you increase your piety, Manwe will grant boosts to your speed (up to
+ a maximum boost of +7 speed).
+2. If you are praying, Manwe likes it when you kill monsters that are aligned
+ with evil.
+3. As your piety increases, Manwe will grant you the following abilities (in
+ order):
+ a) Levitation
+ b) Free Action (while praying)
+ c) Flying (while praying)
+4. Manwe likes elves.
+
+#####GThe disadvantages of Worshipping Manwe Sulimo
+1. Your piety slowly decreases with time, whether you are praying or not.
+2. He doesn't like it if you kill monsters that are aligned with good.
+3. He will completely abandon you if you wear The One Ring.
+~~~~~03|Manwe|Prayers
+#####GManwe Sulimo's Magic
+Worshipping Manwe Sulimo gives the adventurer access to a set of special
+spells that come directly from the hands of Manwe. These spells use your piety
+to cast rather than your spellpoints, and the level of spells that Manwe will
+permit you to use is determined by your Prayer skill - how skillful you are
+in asking for his help without offending him!
+
+There is a special book called the "Holy Tome of Manwe Sulimo" which
+contains instructions for the procedure for each of the prayers Manwe will
+grant. There are four prayers all told, which are:
+1. [[[[[BManwe's Blessing] (Level 1)
+ Manwe's Blessing removes your fears, blesses you and surrounds you with holy
+ light.
+ At spell level 10 it also grants heroism.
+ At spell level 20 it also grants super heroism.
+ At spell level 30 it also grants holy luck and life protection.
+2. [[[[[BWind Shield] (Level 10)
+ It surrounds you with a shield of wind that deflects blows from evil
+ monsters.
+ At level 10 it increases your armour rating.
+ At level 20 it retaliates against monsters that melee you.
+3. [[[[[BManwe's Call] (Level 20)
+ Manwe's Call summons a Great Eagle to help you battle the forces of
+ Morgoth.
+4. [[[[[BAvatar] (Level 35)
+ It turns you into a full grown Maia.
+
+Each of these spells can be increased in level both by improving your Prayer
+skill, and by improving your Spell-power skill.
+
+In addition to his specific magic, Manwe will also assist with your ability to
+use some magic from the "standard" schools, in relation to how skilled you
+are at Prayer. These schools are as follows:
+ *****m_air.txt*0[Air School] at 2/3 the Prayer skill level.
+ *****m_convey.txt*0[Conveyance School] at 1/2 the Prayer skill level.
+ *****m_meta.txt*0[Meta School] at 1/3 the Prayer skill level.
+The spells from these schools are all cast using your normal spellpoints.
diff --git a/lib/help/g_melkor.txt b/lib/help/g_melkor.txt
new file mode 100644
index 00000000..3f38aa32
--- /dev/null
+++ b/lib/help/g_melkor.txt
@@ -0,0 +1,64 @@
+|||||oy
+~~~~~01|Melkor
+~~~~~02|Gods|Melkor
+#####R === Melkor Bauglir ===
+
+Melkor Bauglir is Morgoth, the Dark Enemy. He once was the most powerful
+of the Valar. His most faithful followers are those of the class *****c_pr_drk.txt*0[Dark Priest].
+
+#####GThe benefits of Worshipping Melkor Bauglir
+ 1. As you increase your piety, Melkor will grant boosts to your strength,
+ constitution and charisma and will decrease intelligence and wisdom.
+ 2. As a follower of Melkor you are resistant to fire.
+ 3. If you are praying, Melkor may make you invisible and immune to fire.
+ 4. If you are praying, Melkor may cast Curse on your foes when you melee them.
+ 5. If you are praying, Melkor likes it when you kill monsters.
+ 6. If you are praying, Melkor *likes* it when you kill monsters that are
+ aligned with good.
+ 7. Melkor likes the sacrifice of corpses and books at his altars.
+ 8. Melkor likes the permanent sacrifice of your own health at his altars.
+ 9. Melkor hates elves.
+10. Melkor grants access to the *****m_udun.txt*0[Udun] school of magic.
+11. Melkor can summon undead and demons to help you when your life goes down.
+
+#####GThe disadvantages of Worshipping Melkor Bauglir
+1. Your piety decreases with time.
+2. Your piety decreases with time even more if you are praying.
+3. He will completely abandon you if you destroy The One Ring.
+~~~~~03|Melkor|Prayers
+#####GMelkor Bauglir's Magic
+Worshipping Melkor Bauglir gives the adventurer access to a set of special
+spells that come directly from the hands of Melkor. These spells use your piety
+to cast rather than your spellpoints, and the level of spells that Melkor will
+permit you to use is determined by your Prayer skill - how skillful you are
+in asking for his help without offending him!
+
+There is a special book called the "Corrupted Tome of Melkor" which
+contains instructions for the procedure for each of the prayers Melkor will
+grant. There are three prayers all told, which are:
+1. [[[[[BCurse] (Level 1)
+ It curses a monster, reducing its melee power
+ At level 5 it can be auto-casted (with no piety cost) while fighting
+ if your piety is over 5000.
+ At level 15 it also reduces armor
+ At level 25 it also reduces speed
+ At level 35 it also reduces max life (but it is never fatal)
+2. [[[[[BCorpse Explosion] (Level 10)
+ It makes corpses in an area around you explode for a percent of their hit
+ points as damage
+3. [[[[[BMind Steal] (Level 20)
+ It allows your spirit to temporarily leave your own body, which will
+ be vulnerable, to control one of your enemies body
+
+Each of these spells can be increased in level both by improving your Prayer
+skill, and by improving your Spell-power skill.
+
+In addition to his specific magic, Melkor will also assist with your ability to
+use some magic from the "standard" schools, in relation to how skilled you
+are at Prayer. This school is as follows:
+ *****m_mind.txt*0[Mind School] at 1/3 the Prayer skill level.
+
+Melkor also grants all of his followers access to the *****m_udun.txt*0[Udun] school of magic,
+but only powerful mages are able to cast all of its spells.
+
+The spells from these schools are all cast using your normal spellpoints.
diff --git a/lib/help/g_tulkas.txt b/lib/help/g_tulkas.txt
new file mode 100644
index 00000000..2c05292a
--- /dev/null
+++ b/lib/help/g_tulkas.txt
@@ -0,0 +1,45 @@
+|||||oy
+~~~~~01|Tulkas
+~~~~~02|Gods|Tulkas
+#####R === Tulkas ===
+
+Another of the Valar. His most faithful followers are *****c_palad.txt*0[Paladins].
+
+#####GThe benefits of Worshipping Tulkas
+1. As you increase your piety, Tulkas will grant boosts to your constitution
+ and your strength (up to a maximum of +3 each).
+2. He likes it when you kill monsters that are aligned with evil.
+3. He loves it when you kill evil monsters while praying.
+4. He *adores* it when you kill demons while praying.
+5. If you are praying, Tulkas may increase the damage you do in melee combat.
+
+#####GThe disadvantages of Worshipping Tulkas
+1. When you are praying, your piety slowly decreases with time.
+2. He will completely abandon you if you wear The One Ring.
+~~~~~03|Tulkas|Prayers
+#####GTulkas's Magic
+Worshipping Tulkas gives the adventurer access to a set of special spells
+that come directly from the hands of Tulkas. These spells use your piety to
+cast rather than your spellpoints, and the level of spells that Tulkas will
+permit you to use is determined by your Prayer skill - how skillful you are
+in asking for his help without offending him!
+
+There is a special book called the "War Tome of Tulkas" which contains
+instructions for the procedure for each of the prayers Tulkas will grant.
+There are three prayers all told, which are:
+1. [[[[[BDivine Aim] (Level 1)
+ It makes you more accurate in combat.
+ At spell level 20 all your blows are critical hits.
+2. [[[[[BWhirlwind] (Level 10)
+ It allows you to spin around and hit all monsters nearby.
+3. [[[[[BWave of Power] (Level 20)
+ It allows you to project a number of melee blows across a distance.
+
+Each of these spells can be increased in level both by improving your Prayer
+skill, and by improving your Spell-power skill.
+
+In addition to his specific magic, Tulkas will also assist with your ability to
+use some magic from one of the "standard" schools, in relation to how skilled
+you are at Prayer. This school is as follows:
+ *****m_earth.txt*0[Earth School] at 4/5 the Prayer skill level.
+The spells from this school are all cast using your normal spellpoints.
diff --git a/lib/help/g_yavann.txt b/lib/help/g_yavann.txt
new file mode 100644
index 00000000..6e6937ca
--- /dev/null
+++ b/lib/help/g_yavann.txt
@@ -0,0 +1,62 @@
+|||||oy
+~~~~~01|Yavanna
+~~~~~02|Gods|Yavanna
+#####R === Yavanna Kementari===
+
+Yavanna, the Giver of Fruits, created all plants and animals and awakened the
+Ents to protect the forests of Arda. Kementari, Queen of the Earth, is her
+surname. Her most faithful followers are the *****c_druid.txt*0[Druids].
+
+#####GThe benefits of Worshipping Yavanna
+1. As you increase your piety, Yavanna will grant you the ability to pass
+ trees while praying.
+2. She makes you regenerate faster while praying on grass.
+3. She likes it when you kill nonliving creatures, undead or demons.
+4. She likes it if you charm animals (except evil ones).
+5. Yavanna likes Ents.
+
+#####GThe disadvantages of Worshipping Yavanna
+1. Your piety slowly decreases with time, whether you are praying or not.
+2. She doesn't like it if you kill monsters while praying.
+3. She hates it if you kill animals while praying.
+4. She hates it if you hurt your animal pets.
+5. She hates it if you burn or destroy trees with magic or allow monsters to
+ do so.
+6. She will completely abandon you if you wear The One Ring.
+~~~~~03|Yavanna|Prayers
+#####GYavanna's Magic
+Worshipping Yavanna gives the adventurer access to a set of special spells
+that come directly from the hands of Yavanna. These spells use your piety to
+cast rather than your spellpoints, and the level of spells that Yavanna will
+permit you to use is determined by your Prayer skill - how skillful you are
+in asking for her help without offending her!
+
+There is a special book called the "Forest Tome of Yavanna" which contains
+instructions for the procedure for each of the prayers Yavanna will grant.
+There are five prayers all told, which are:
+1. [[[[[BCharm Animal] (Level 1)
+ Tries to tame animals in a zone around your target.
+2. [[[[[BGrow Grass] (Level 10)
+ Creates a floor of grass around you. While on grass and praying,
+ a worshipper of Yavanna will know a greater regeneration rate.
+3. [[[[[BTree Roots] (Level 15)
+ Creates roots deep in the floor from your feet, making you more stable and
+ able to do better attacks, but preventing any movement (even teleportation).
+ It also makes you recover from stunning almost immediately.
+4. [[[[[BWater Bite] (Level 20)
+ Imbues your melee weapon with a natural stream of water.
+ At level 25, it spreads over a 1 radius zone around your target.
+5. [[[[[BUproot] (Level 35)
+ Awakes a tree to help you battle the forces of Morgoth.
+
+Each of these spells can be increased in level both by improving your Prayer
+skill, and by improving your Spell-power skill.
+
+In addition to her specific magic, Yavanna will also assist with your ability
+to use some magic from the "standard" schools, in relation to how skilled you
+are at Prayer. These schools are as follows:
+ *****m_earth.txt*0[Earth School] at 1/2 the Prayer skill level.
+ *****m_nature.txt*0[Nature School] at 1/2 the Prayer skill level.
+ *****m_water.txt*0[Water School] at 1/2 the Prayer skill level.
+ *****m_tempo.txt*0[Temporal School] at 1/6 the Prayer skill level.
+The spells from these schools are all cast using your normal spellpoints.
diff --git a/lib/help/gambling.txt b/lib/help/gambling.txt
new file mode 100644
index 00000000..62352600
--- /dev/null
+++ b/lib/help/gambling.txt
@@ -0,0 +1,29 @@
+|||||oy
+~~~~~01|Gambling
+#####R=== Gambling Rules ===
+
+#####GBetween :
+ Three 12-sided dice rolled; 2 black, 1 red. The red
+ die must be between both black to win. If the red die
+ matches a black die, you lose. Pays 3 to 1
+#####GCraps:
+ Two 6-sided dice are rolled. On first roll, a 7 or 11
+ wins. A 2, 3 or 12 loses. Otherwise roll until the first
+ roll is matched (win) or a 7 is rolled (loss). Pays 2 to 1
+#####GWheel:
+ Pick a number from 0-9. If the number shows on wheel
+ after it stops spinning, you win. Pays 10 to 1
+
+#####GSlots:
+ Three dice rolled. Matches win gold.
+ Numbers are:
+ 1=Lemon, 2=Orange, 3=Sword, 4=Shield, 5=Plum, 6=Cherry
+ Payoffs are as follows:
+ Cherry Cherry Lemon 2-1 Cherry Cherry Orange 3-1
+ Cherry Cherry Sword 4-1 Cherry Cherry Shield 5-1
+ Cherry Cherry Plum 6-1
+ Lemon Lemon Lemon 4-1 Orange Orange Orange 16-1
+ Sword Sword Sword 6-1 Shield Shield Shield 25-1
+ Plum Plum Plum 9-1 Cherry Cherry Cherry 36-1
+
+
diff --git a/lib/help/general.txt b/lib/help/general.txt
new file mode 100644
index 00000000..17dc187c
--- /dev/null
+++ b/lib/help/general.txt
@@ -0,0 +1,39 @@
+|||||oy
+~~~~~01|Help
+#####R=== Using the Online Help ===
+
+This help system has been designed to be read whilst in-game. Printing it off
+will make it look clumsy and a little difficult to read.
+
+Any text in orange/yellow colour is likely to be a hyperlink, and pressing
+<enter> while the link is active (yellow) will take you to the relevant page.
+Navigate between viewable links by using the left-right keys. Some links also
+have bracketed letters included in the links. Pressing these letters on your
+keyboard will activate the link even if it is orange.
+
+The help files total over 850 kb, so there is a lot of information. They have
+been designed to be browsed, but you may be looking for specific information,
+in which case you should try looking at the alphabetical *****index.txt*0[index].
+
+Here are all the relevant keypresses for navigating the help system.
+
+#####GKey | Action
+-------------------------------------------------------------------
+Escape | Leave the Online Help
+Backspace | Return to previous Help File
+Space | Advance 1 page (screen)
+2, down arrow | Advance 1 line
+8, up arrow | Back up 1 line
+- | Back up 1 page (screen)
+6, right arrow | Advance 1 link
+4, left arrow | Back up 1 link
+Return | Activate the selected link
+# | Go to a specific line (defaults to line 0)
+% | Go to a specific help file (defaults to help.hlp)
+= | Highlight lines containing a string (e.g. "word")
+/ | Search for a string (e.g. "word")
+-------------------------------------------------------------------
+
+There are other sources for help playing ToME. Try http://forum.t-o-m-e.net
+and http://wiki.t-o-m-e.net . We also have an IRC channel #tome on the
+worldirc and freenode networks (they are linked) which is fairly low traffic.
diff --git a/lib/help/gods.txt b/lib/help/gods.txt
new file mode 100644
index 00000000..0d091204
--- /dev/null
+++ b/lib/help/gods.txt
@@ -0,0 +1,38 @@
+|||||oy
+~~~~~01|Gods
+#####RThe Guide to the Gods.
+
+#####G1. Introduction
+ Everybody likes to have a little helping hand now and then. What
+could be better than having a god on your side? But it's not quite that easy.
+The gods won't help just any mortal who calls for help. You have to give them
+a little something too.
+
+#####G2. How Do I Get in on This?
+ When you start a character, you get a choice of whether or not you
+wish to begin worshipping a God (unless you're something like a priest - they
+*must* start with a God to worship). If you do choose to be a follower of one
+of the Gods, you will gain certain abilities provided you do not do things
+that displease them. The measure of how happy your God is with you is your
+Piety - the Pt stat is your measure of Piety. Different actions will allow you
+to gain or lose Piety over time. You can change your mind about whom (if
+anyone) to worship during the game by finding an *****tome_faq.txt*04[altar] of that God.
+
+#####G3. What about spells?
+God-granted spells are also known as prayers, and are cast using Piety instead
+of Mana. God-spells can be increased in level by improving either your Prayer
+or Spell-power skill. The chance of successfully invoking a prayer depends
+on the Prayer skill and your wisdom.
+
+Each God also grants access to standard magical spell schools; which school(s)
+vary depending on the Gods' individual preferences. Spells from these schools
+are cast using Mana, not Piety; and success depends on your intelligence, not
+your wisdom.
+
+#####G4. So, Who Are These Gods?
+ In ToME, there are five Gods you may choose to worship, being:
+1. *****g_eru.txt*0[Eru Iluvatar] - the father of the Valar.
+2. *****g_manwe.txt*0[Manwe Sulimo] - the second strongest of the Valar (Morgoth was the strongest).
+3. *****g_yavann.txt*0[Yavanna Kementari] - the Earth Queen who created plants and animals.
+4. *****g_tulkas.txt*0[Tulkas] - another of the Valar, Tulkas values strength and courage.
+5. *****g_melkor.txt*0[Melkor Bauglir] - the Dark Enemy himself, once the most powerful of the Valar.
diff --git a/lib/help/head.aux b/lib/help/head.aux
new file mode 100644
index 00000000..92e979d3
--- /dev/null
+++ b/lib/help/head.aux
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>T.o.M.E. Documentation</title>
+ <meta name="description" content="ToME and TomeNET homepage. ToME is a roguelike dungeon exploration game, based on Angband.">
+ <meta name="keywords" content="angband, tome, tomenet, library, angband, official, roguelike">
+</head>
+<body bgcolor="#000000" text="#FFFFFF" link="#CC0000" alink="#FF9900" vlink="#FFCC66">
+<FONT text="#CCCCCC">
+<PRE><TT>
diff --git a/lib/help/help.hlp b/lib/help/help.hlp
new file mode 100644
index 00000000..7c4b431f
--- /dev/null
+++ b/lib/help/help.hlp
@@ -0,0 +1,33 @@
+|||||oy
+~~~~~01|Help|Main Menu
+~~~~~02|Main Menu
+#####RWelcome to the ToME Online Help System.
+#####R==============================================
+
+Please choose one of the following online help files:
+
+ *****/ageneral.txt*0[(a) About this help system]
+ *****/bnewbie.hlp*0[(b) Help for new players] Skills, magic, races, classes + more
+ *****/cadvanced.hlp*0[(c) Help for more experienced players] Options, Macros, Automatizer etc
+ *****/dtome_faq.txt*0[(d) ToME FAQ] Common questions
+
+ *****/sspoiler.hlp*0[(s) Spoiler menu] Dungeons, fates, luck, corruptions and stuff
+
+
+ *****/xindex.txt*0[(x) Alphabetical index] Trouble finding something? Try here
+
+#####GBasic keys:
+Space | Advance 1 page (screen)
+2, down arrow | Advance 1 line
+8, up arrow | Back up 1 line
+- | Back up 1 page (screen)
+6, right arrow | Advance 1 link
+4, left arrow | Back up 1 link
+Return | Activate the selected link
+Escape | Leave the Online Help
+Backspace, ? | Return to previous Help File
+# | Go to a specific line (defaults to line 0)
+% | Go to a specific help file (defaults to help.hlp)
+= | Highlight lines containing a string (e.g. "word")
+/ | Search for a string (e.g. "word")
+
diff --git a/lib/help/index.txt b/lib/help/index.txt
new file mode 100644
index 00000000..d306b688
--- /dev/null
+++ b/lib/help/index.txt
@@ -0,0 +1,592 @@
+|||||oy
+#####R /----------------------------------------\
+#####R < Help Index >
+#####R \----------------------------------------/
+
+This is the index of everything in the T.o.M.E. documentation.
+
+#####BHit a letter key to jump to the entries for that letter.
+
+Some entries in the index link to the same place as other entries. This is
+intentional, so that the information you want is easy to find.
+
+Don't forget you can browse the help from the *****help.hlp*02[Main menu].
+
+#####sSpotted a problem with the help files, or some content thats missing?
+#####sContact fearoffours@t-o-m-e.net .
+
+~~~~~65
+*****/Aindex.txt*65[A]
+ *****birth.txt*81[Abbreviations]
+ *****birth.txt*20[AC]
+ *****birth.txt*17[AU]
+ *****tome_faq.txt*25[FF]
+ *****birth.txt*21[HP]
+ *****birth.txt*29[Pt]
+ *****birth.txt*24[SN]
+ *****birth.txt*26[SP]
+ *****ability.txt*01[Abilities]
+ *****ability.txt*07[Ammo creation]
+ *****ability.txt*09[Artifact Creation]
+ *****ability.txt*05[Extra Max Blow 1]
+ *****ability.txt*06[Extra Max Blow 2]
+ *****ability.txt*10[Far reaching attack]
+ *****ability.txt*04[Perfect casting]
+ *****ability.txt*02[Spread blows]
+ *****ability.txt*08[Touch of death]
+ *****ability.txt*11[Trapping]
+ *****ability.txt*03[Tree walking]
+ *****ability.txt*12[Undead Form]
+ *****m_air.txt*02[Air Magic]
+ *****c_alchem.txt*01[Alchemist]
+ *****c_alchem.txt*03[Alchemy powers explained]
+ *****essences.txt*02[Essence Spoiler]
+ *****tome_faq.txt*03[Altars]
+ *****tome_faq.txt*37[Anti-magic Amulets and the Anti-magic shell]
+ *****c_unbel.txt*04[Antimagic]
+ *****c_archer.txt*01[Archer]
+ *****attack.txt*03[Armor]
+ *****birth.txt*19[Armor Class]
+ *****attack.txt*05[Resistances]
+ *****tome_faq.txt*18[Artifacts that activate but I cannot wear or wield]
+ *****c_assass.txt*01[Assassin]
+ *****attack.txt*01[Attacking Monsters]
+ *****attack.txt*06[Damage Effect type ]
+ *****attack.txt*04[Resistances]
+ *****birth.txt*48[Fighting ability]
+ *****birth.txt*50[Shooting]
+ *****automat.txt*03[Auto destroy]
+ *****automat.txt*02[Auto pick-up]
+ *****automat.txt*01[Automatizer]
+ *****defines.txt*82[Defines]
+ *****automat.txt*04[Autosquelch]
+ *****c_axemas.txt*01[Axemaster]
+~~~~~66
+*****/Bindex.txt*66[B]
+ *****rm_barb.txt*01[Barbarian]
+ *****c_bard.txt*01[Bard]
+ *****tome_faq.txt*36[Beginner strategy]
+ *****r_beorn.txt*01[Beorning]
+ *****birth.txt*84[Birth]
+ *****dungeon.txt*21[Buildings]
+~~~~~67
+*****/Cindex.txt*67[C]
+ *****birth.txt*11[Character]
+ *****birth.txt*46[Abilities]
+ *****birth.txt*10[Ability tables]
+ *****birth.txt*23[Armor Class]
+ *****birth.txt*02[Characteristics]
+ *****birth.txt*01[Creating a Character]
+ *****birth.txt*22[Hit Points]
+ *****birth.txt*28[Mana]
+ *****birth.txt*31[Piety]
+ *****birth.txt*08[Race and Class Combinations]
+ *****birth.txt*25[Sanity Points]
+ *****birth.txt*09[Stat Bonus Table]
+ *****birth.txt*13[Stats 1]
+ *****birth.txt*39[Stats 2]
+ *****tome_faq.txt*34[Character choice is too confusing]
+ *****birth.txt*45[Charisma]
+ *****birth.txt*05[Classes]
+ *****c_alchem.txt*02[Alchemist]
+ *****c_archer.txt*02[Archer]
+ *****c_assass.txt*02[Assassin]
+ *****c_axemas.txt*02[Axemaster]
+ *****c_bard.txt*02[Bard]
+ *****birth.txt*68[Combinations with Race]
+ *****c_pr_drk.txt*02[Dark Priest]
+ *****c_demono.txt*02[Demonologist]
+ *****c_druid.txt*02[Druid]
+ *****c_geoman.txt*02[Geomancer]
+ *****c_hafted.txt*02[Haftedmaster]
+ *****c_lorema.txt*02[Loremaster]
+ *****c_mage.txt*02[Mage]
+ *****c_mimic.txt*02[Mimic]
+ *****c_mindcr.txt*02[Mindcrafter]
+ *****c_monk.txt*02[Monk]
+ *****c_necro.txt*02[Necromancer]
+ *****c_palad.txt*02[Paladin]
+ *****c_polear.txt*02[Polearmmaster]
+ *****c_posses.txt*02[Possessor]
+ *****c_pr_eru.txt*02[Priest - Eru]
+ *****c_pr_man.txt*02[Priest - Manwe]
+ *****c_ranger.txt*02[Ranger]
+ *****c_rogue.txt*02[Rogue]
+ *****c_runecr.txt*02[Runecrafter]
+ *****c_sorcer.txt*02[Sorceror]
+ *****birth.txt*77[Stat Bonuses]
+ *****c_summon.txt*02[Summoners]
+ *****c_swordm.txt*02[Swordmasters]
+ *****c_symbia.txt*02[Symbiant]
+ *****c_thaum.txt*02[Thaumaturgy]
+ *****c_unbel.txt*02[Unbeliever]
+ *****c_warper.txt*02[Warper]
+ *****c_warrio.txt*02[Warrior]
+ *****rm_class.txt*01[Classical]
+ *****command.txt*99[Commands]
+ *****command.txt*116[Alteration commands]
+ *****command.txt*103[Command counts]
+ *****command.txt*111[Command descriptions ]
+ *****command.txt*129[Extras]
+ *****command.txt*123[Game status]
+ *****command.txt*128[Help]
+ *****command.txt*112[Inventory]
+ *****command.txt*121[Looking ]
+ *****command.txt*122[Messages]
+ *****command.txt*113[Movement]
+ *****command.txt*119[Object manipulation]
+ *****command.txt*100[Original keyset]
+ *****command.txt*126[Pref files]
+ *****command.txt*104[Repeating a command]
+ *****command.txt*114[Resting]
+ *****command.txt*101[Roguelike keyset]
+ *****command.txt*124[Saving and Exiting]
+ *****command.txt*115[Searching]
+ *****command.txt*102[Special keys]
+ *****command.txt*118[Spells and prayers]
+ *****command.txt*117[Terrain interaction]
+ *****command.txt*120[Throwing and missile weapons]
+ *****dungeon.txt*19[Companions]
+ *****birth.txt*43[Constitution]
+ *****m_convey.txt*02[Conveyance Magic]
+ *****corspoil.txt*01[Corruptions ]
+ *****c_archer.txt*03[Creating Ammo]
+ *****birth.txt*12[Creating a Character]
+ *****dungeon.txt*10[Cursed Objects]
+~~~~~68
+*****/Dindex.txt*68[D]
+ *****attack.txt*09[Damage Effects]
+ *****r_drkelf.txt*01[Dark Elf]
+ *****c_pr_drk.txt*01[Dark Priest]
+ *****tome_faq.txt*29[Dark grey things are difficult to see]
+ *****r_deathm.txt*01[DeathMolds]
+ *****spoil_faq.txt*19[Deathmolds on Mount Doom and other quest areas]
+ *****debug.txt*99[Debug]
+ *****debug.txt*100[Command List]
+ *****debug.txt*111[Command descriptions ]
+ *****debug.txt*112[General]
+ *****defines.txt*81[Defines]
+ *****defines.txt*84[Svals]
+ *****defines.txt*85[Tvals]
+ *****c_demono.txt*01[Demonologist]
+ *****m_demono.txt*02[Demonology Magic]
+ *****version.txt*01[Development history]
+ *****birth.txt*41[Dexterity]
+ *****birth.txt*56[Disarming traps]
+ *****birth.txt*37[Display]
+ *****m_divin.txt*02[Divination Magic]
+ *****c_druid.txt*01[Druid]
+ *****r_dunad.txt*01[Dunedain]
+ *****dungeon.txt*02[Dungeons]
+ *****dungeon.txt*12[Doors]
+ *****dungeon.txt*06[In the dungeon]
+ *****dungeon.txt*11[Mining]
+ *****dunspoil.txt*01[Spoilers]
+ *****r_dwarf.txt*01[Dwarf]
+ *****dungeon.txt*15[Dying]
+~~~~~69
+*****/Eindex.txt*69[E]
+ *****m_earth.txt*02[Earth Magic]
+ *****r_elf.txt*01[Elf]
+ *****r_ent.txt*01[Ent]
+ *****g_eru.txt*02[Eru]
+ *****g_eru.txt*03[Prayers]
+ *****c_pr_eru.txt*03[Priest - Eru]
+ *****tome_faq.txt*10[Essences]
+ *****experien.hlp*01[Experience]
+ *****explore.hlp*02[Exploring menu]
+~~~~~70
+*****/Findex.txt*70[F]
+ *****tome_faq.txt*02[FAQ - Spoiler free]
+ *****spoil_faq.txt*02[FAQ - contains spoilers]
+ *****tome_faq.txt*13[Prophets]
+ *****fatespoi.txt*02[Fates ]
+ *****m_fire.txt*02[Fire Magic]
+ *****inscrip.txt*01[Floor Inscriptions ]
+ *****tome_faq.txt*28[Floor tiles displaying incorrectly]
+ *****tome_faq.txt*05[Fountains]
+ *****tome_faq.txt*24[Fumblefingers quests]
+~~~~~71
+*****/Gindex.txt*71[G]
+ *****gambling.txt*01[Gambling]
+ *****tome_faq.txt*30[Game ]
+ *****c_geoman.txt*01[Geomancer]
+ *****m_geoman.txt*02[Geomancy spells]
+ *****r_gnome.txt*01[Gnome]
+ *****gods.txt*01[Gods]
+ *****tome_faq.txt*04[Altars]
+ *****g_eru.txt*01[Eru]
+ *****g_manwe.txt*01[Manwe]
+ *****g_melkor.txt*02[Melkor]
+ *****birth.txt*30[Piety]
+ *****spoil_faq.txt*23[Quest - Spoilers]
+ *****g_tulkas.txt*02[Tulkas]
+ *****g_yavann.txt*02[Yavanna]
+ *****birth.txt*16[Gold]
+~~~~~72
+*****/Hindex.txt*72[H]
+ *****c_hafted.txt*01[Haftedmaster]
+ *****r_hafelf.txt*01[Half-Elf]
+ *****r_hafogr.txt*01[Half-Ogre]
+ *****general.txt*01[Help]
+ *****explore.hlp*01[Exploring menu]
+ *****tome_faq.txt*01[FAQ - Spoiler free]
+ *****magic.hlp*02[Magic]
+ *****help.hlp*01[Main Menu]
+ *****newbie.hlp*01[New players]
+ *****spoil_faq.txt*01[Spoiled FAQ]
+ *****rm_herm.txt*01[Hermit]
+ *****r_hielf.txt*01[High-Elf]
+ *****r_hobbit.txt*01[Hobbit]
+ *****tome_faq.txt*12[Homes]
+ *****r_human.txt*01[Human]
+~~~~~73
+*****/Iindex.txt*73[I]
+ *****tome_faq.txt*35[I STILL keep dying]
+ *****tome_faq.txt*31[I keep dying]
+ *****dungeon.txt*04[Identifying features]
+ *****birth.txt*66[Infra-vision]
+ *****birth.txt*35[Intelligence]
+ *****birth.txt*85[Inventory - starting info]
+ *****tome_faq.txt*32[Invisible character]
+~~~~~75
+*****/Kindex.txt*75[K]
+ *****macrofaq.txt*44[Keymaps]
+ *****macrofaq.txt*46[Macro recorder]
+ *****r_kobold.txt*01[Kobold]
+~~~~~76
+*****/Lindex.txt*76[L]
+ *****dungeon.txt*23[Light]
+ *****dungeon.txt*17[Loading old characters]
+ *****c_lorema.txt*01[Loremaster]
+ *****rm_lsoul.txt*01[Lost Soul]
+ *****luckspoi.txt*01[Luck ]
+~~~~~77
+*****/Mindex.txt*77[M]
+ *****macrofaq.txt*43[Macros]
+ *****macrofaq.txt*45[Macro recorder]
+ *****c_mage.txt*01[Mage]
+ *****magic.txt*03[Magic]
+ *****m_air.txt*01[Air School]
+ *****m_convey.txt*01[Conveyance School]
+ *****m_demono.txt*01[Demonology School]
+ *****m_divin.txt*01[Divination School]
+ *****m_earth.txt*01[Earth School]
+ *****m_fire.txt*01[Fire School]
+ *****m_geoman.txt*01[Geomancy]
+ *****magic.hlp*01[Index]
+ *****birth.txt*27[Mana]
+ *****m_mana.txt*01[Mana School]
+ *****m_meta.txt*01[Meta School]
+ *****m_mimic.txt*01[Mimicry]
+ *****m_mind.txt*01[Mind School]
+ *****m_mindcr.txt*01[Mindcraft]
+ *****m_music.txt*01[Music]
+ *****m_nature.txt*01[Nature School]
+ *****m_necrom.txt*01[Necromancy]
+ *****magic.txt*01[Schools]
+ *****m_symbio.txt*01[Symbiosis]
+ *****m_tempo.txt*01[Temporal School]
+ *****m_thaum.txt*01[Thaumaturgy]
+ *****m_udun.txt*01[Udun School]
+ *****magic.txt*04[Wands and Staves]
+ *****m_water.txt*01[Water School]
+ *****birth.txt*58[Magical Devices]
+ *****r_maia.txt*01[Maia]
+ *****help.hlp*02[Main Menu]
+ *****m_mana.txt*02[Mana Magic]
+ *****g_manwe.txt*02[Manwe]
+ *****g_manwe.txt*03[Prayers]
+ *****c_pr_man.txt*03[Priest - Manwe]
+ *****tome_faq.txt*14[Mathilde]
+ *****g_melkor.txt*01[Melkor]
+ *****c_pr_drk.txt*03[Dark Priests]
+ *****g_melkor.txt*03[Prayers]
+ *****m_meta.txt*02[Meta Magic]
+ *****c_mimic.txt*01[Mimic]
+ *****m_mimic.txt*02[Mimicry powers]
+ *****m_mind.txt*02[Mind Magic]
+ *****c_mindcr.txt*01[Mindcrafter]
+ *****m_mindcr.txt*02[Mindcraft powers]
+ *****dungeon.txt*13[Mining]
+ *****birth.txt*18[Money]
+ *****c_monk.txt*01[Monk]
+ *****c_monk.txt*03[Monk attacks]
+ *****dungeon.txt*05[Monsters]
+ *****attack.txt*02[Attacking]
+ *****attack.txt*07[Monster Memory]
+ *****dungeon.txt*20[Pets]
+ *****tome_faq.txt*08[They are talking to me]
+ *****m_music.txt*02[Music]
+~~~~~78
+*****/Nindex.txt*78[N]
+ *****m_nature.txt*02[Nature Magic]
+ *****c_necro.txt*01[Necromancer]
+ *****m_necrom.txt*02[Necromancy Magic]
+~~~~~79
+*****/Oindex.txt*79[O]
+ *****dungeon.txt*14[Objectives]
+ *****dungeon.txt*08[Objects]
+ *****dungeon.txt*21[Colour of inventory slot letter]
+ *****dungeon.txt*09[Cursed Objects]
+ *****tome_faq.txt*33[Piles]
+ *****option.txt*05[Options]
+ *****option.txt*16[Automatizer]
+ *****option.txt*15[Autosave]
+ *****option.txt*13[Base Delay Factor]
+ *****option.txt*18[Cheating]
+ *****option.txt*09[Disturbance]
+ *****option.txt*19[Dump]
+ *****option.txt*11[Efficiency]
+ *****option.txt*10[Game-play]
+ *****option.txt*14[Hitpoint Warning]
+ *****option.txt*07[Ingame]
+ *****option.txt*08[Interface]
+ *****option.txt*06[Startup]
+ *****option.txt*12[ToME Options]
+ *****option.txt*17[Window Flags]
+ *****r_orc.txt*01[Orc]
+~~~~~80
+*****/Pindex.txt*80[P]
+ *****c_palad.txt*01[Paladin]
+ *****birth.txt*62[Perception]
+ *****dungeon.txt*18[Pets]
+ *****r_pettyd.txt*01[Petty Dwarf]
+ *****c_polear.txt*01[Polearmmaster]
+ *****c_posses.txt*01[Possessor]
+ *****c_posses.txt*03[Possessor powers ]
+ *****command.txt*105[Pref files]
+ *****command.txt*109[Colors]
+ *****command.txt*127[Commands]
+ *****command.txt*107[Keymaps]
+ *****command.txt*106[Macros]
+ *****command.txt*110[Options]
+ *****command.txt*108[Visuals]
+ *****c_pr_eru.txt*01[Priest - Eru]
+ *****c_pr_man.txt*01[Priest - Manwe]
+ *****c_priest.txt*01[Priests]
+~~~~~82
+*****/Rindex.txt*82[R]
+ *****birth.txt*04[Race Modifiers]
+ *****birth.txt*79[Ability table]
+ *****rm_barb.txt*02[Barbarian]
+ *****rm_class.txt*02[Classical]
+ *****rm_herm.txt*02[Hermit]
+ *****rm_lsoul.txt*02[Lost Soul]
+ *****rm_skel.txt*02[Skeleton]
+ *****rm_spec.txt*02[Spectre]
+ *****birth.txt*76[Stat Bonuses]
+ *****rm_vamp.txt*02[Vampire]
+ *****rm_zomb.txt*02[Zombie]
+ *****birth.txt*03[Races]
+ *****birth.txt*78[Ability table]
+ *****r_beorn.txt*02[Beorning]
+ *****birth.txt*67[Combinations with class]
+ *****r_drkelf.txt*02[Dark Elf]
+ *****r_deathm.txt*02[DeathMolds]
+ *****r_dunad.txt*02[Dunedain]
+ *****r_dwarf.txt*02[Dwarf]
+ *****r_elf.txt*02[Elf]
+ *****r_ent.txt*02[Ent]
+ *****r_gnome.txt*02[Gnome]
+ *****r_hafelf.txt*02[Half-Elf]
+ *****r_hafogr.txt*02[Half-Ogre]
+ *****r_hielf.txt*02[High-Elf]
+ *****r_hobbit.txt*02[Hobbit]
+ *****r_human.txt*02[Human]
+ *****r_kobold.txt*02[Kobold]
+ *****r_maia.txt*02[Maia]
+ *****r_orc.txt*02[Orc]
+ *****r_pettyd.txt*02[Petty Dwarf]
+ *****r_rohank.txt*02[RohanKnight]
+ *****birth.txt*75[Stat Bonuses]
+ *****r_thlord.txt*02[Thunderlord]
+ *****r_troll.txt*02[Troll]
+ *****r_wodelf.txt*02[Wood Elf]
+ *****r_yeek.txt*02[Yeek]
+ *****tome_faq.txt*26[Random quests are not working]
+ *****tome_faq.txt*36[Random quests strategy]
+ *****c_ranger.txt*01[Ranger]
+ *****c_rogue.txt*01[Rogue]
+ *****r_rohank.txt*01[RohanKnight]
+ *****c_runecr.txt*01[Runecrafter]
+ *****c_runecr.txt*03[Runecrafter powers]
+ *****tome_faq.txt*11[Runes]
+~~~~~83
+*****/Sindex.txt*83[S]
+ *****command.txt*125[Saving and Exiting]
+ *****birth.txt*52[Saving throw]
+ *****birth.txt*60[Searching]
+ *****birth.txt*63[Searching Ability]
+ *****birth.txt*61[Searching Frequency - Perception]
+ *****tome_faq.txt*09[Sentient weapons]
+ *****rm_skel.txt*01[Skeleton]
+ *****skills.txt*55[Skills]
+ *****skills.txt*27[Air]
+ *****m_air.txt*03[Air - Spell Info]
+ *****skills.txt*49[Alchemy]
+ *****c_alchem.txt*05[Alchemy - Alchemy powers]
+ *****skills.txt*50[Antimagic]
+ *****c_unbel.txt*05[Antimagic powers]
+ *****skills.txt*08[Archery]
+ *****skills.txt*05[Axe-mastery]
+ *****skills.txt*18[Backstab]
+ *****skills.txt*13[Barehand-combat]
+ *****skills.txt*61[Bearform-combat]
+ *****skills.txt*12[Boomerang-mastery]
+ *****skills.txt*58[Boulder-throwing]
+ *****skills.txt*10[Bow-mastery]
+ *****skills.txt*01[Combat]
+ *****skills.txt*30[Conveyance]
+ *****m_convey.txt*03[Conveyance - Spell Info]
+ *****skills.txt*44[Corpse-preservation]
+ *****skills.txt*04[Critical-Hits]
+ *****skills.txt*11[Crossbow-mastery]
+ *****skills.txt*52[Demonology]
+ *****m_demono.txt*03[Demonology - Spell Info]
+ *****skills.txt*16[Disarming]
+ *****skills.txt*31[Divination]
+ *****m_divin.txt*03[Divination - Spell Info]
+ *****skills.txt*20[Dodging]
+ *****skills.txt*28[Earth]
+ *****m_earth.txt*03[Earth - Spell Info]
+ *****skills.txt*25[Fire]
+ *****m_fire.txt*03[Fire - Spell Info]
+ *****skills.txt*60[Geomancy]
+ *****m_geoman.txt*03[Geomancy - Spell Info]
+ *****skills.txt*06[Hafted-mastery]
+ *****skills.txt*57[List of skills]
+ *****skills.txt*21[Magic]
+ *****skills.txt*54[Magic-device]
+ *****skills.txt*24[Mana]
+ *****m_mana.txt*03[Mana - Spell Info]
+ *****skills.txt*29[Meta]
+ *****m_meta.txt*03[Meta - Spell Info]
+ *****skills.txt*47[Mimicry]
+ *****m_mimic.txt*03[Mimicry - mimicry powers]
+ *****skills.txt*33[Mind]
+ *****m_mind.txt*03[Mind - Spell Info]
+ *****skills.txt*41[Mindcraft]
+ *****m_mindcr.txt*03[Mindcraft - Spell Info]
+ *****skills.txt*42[Monster-lore]
+ *****skills.txt*59[Music]
+ *****m_music.txt*03[Music - Song Info]
+ *****skills.txt*34[Nature]
+ *****m_nature.txt*03[Nature - Spell Info]
+ *****skills.txt*35[Necromancy]
+ *****m_necrom.txt*03[Necromancy - Spell Info]
+ *****skills.txt*07[Polearm-mastery]
+ *****skills.txt*45[Possession]
+ *****c_posses.txt*04[Possession - Possessor powers ]
+ *****skills.txt*39[Prayer]
+ *****skills.txt*36[Runecraft]
+ *****c_runecr.txt*04[Runecrafting - Runecrafter powers]
+ *****skills.txt*56[Screen]
+ *****skills.txt*09[Sling-mastery]
+ *****skills.txt*14[Sneakiness]
+ *****skills.txt*23[Sorcery]
+ *****skills.txt*22[Spell-power]
+ *****skills.txt*38[Spirituality]
+ *****skills.txt*19[Stealing]
+ *****skills.txt*15[Stealth]
+ *****skills.txt*53[Stunning-blows]
+ *****skills.txt*43[Summoning]
+ *****c_summon.txt*04[Summoning - Summoning powers]
+ *****skills.txt*03[Sword-mastery]
+ *****skills.txt*46[Symbiosis]
+ *****m_symbio.txt*03[Symbiosis - Symbiotic Powers]
+ *****skills.txt*32[Temporal]
+ *****m_tempo.txt*03[Temporal - Spell Info]
+ *****skills.txt*37[Thaumaturgy]
+ *****m_thaum.txt*03[Thaumaturgy - Spell Info]
+ *****skills.txt*48[Udun]
+ *****m_udun.txt*03[Udun - Spell Info]
+ *****skills.txt*26[Water]
+ *****m_water.txt*03[Water - Spell Info]
+ *****skills.txt*02[Weaponmastery]
+ *****c_sorcer.txt*01[Sorceror]
+ *****rm_spec.txt*01[Spectre]
+ *****spoiler.hlp*01[Spoilers]
+ *****corspoil.txt*02[Corruptions]
+ *****dunspoil.txt*02[Dungeons]
+ *****essences.txt*01[Essences]
+ *****fatespoi.txt*01[Fates]
+ *****inscrip.txt*02[Floor Inscriptions]
+ *****spoil_faq.txt*20[God Quest - directions]
+ *****spoil_faq.txt*22[God Quest - how many]
+ *****spoil_faq.txt*21[God Quest - relic]
+ *****spoil_faq.txt*07[Lothlorien Poisoned water quest]
+ *****luckspoi.txt*02[Luck]
+ *****spoil_faq.txt*06[Merton the lost Hobbit quest]
+ *****wishing.txt*01[Wishing]
+ *****birth.txt*82[Stats]
+ *****birth.txt*71[Bonus table]
+ *****birth.txt*44[Charisma]
+ *****birth.txt*42[Constitution]
+ *****birth.txt*40[Dexterity]
+ *****birth.txt*14[Display]
+ *****birth.txt*06[Individual explanations]
+ *****birth.txt*33[Intelligence]
+ *****birth.txt*32[Strength]
+ *****birth.txt*36[Wisdom]
+ *****magic.txt*05[Staves]
+ *****birth.txt*54[Stealth]
+ *****tome_faq.txt*17[Strange items]
+ *****birth.txt*34[Strength]
+ *****c_summon.txt*01[Summoners]
+ *****c_summon.txt*03[Summoning]
+ *****defines.txt*12[Svals]
+ *****c_swordm.txt*01[Swordmasters]
+ *****c_symbia.txt*01[Symbiant]
+ *****c_symbia.txt*03[Naming your symbiote]
+ *****m_symbio.txt*02[Symbiosis Magic]
+ *****dungeon.txt*03[Symbols]
+~~~~~84
+*****/Tindex.txt*84[T]
+ *****birth.txt*69[Tables]
+ *****birth.txt*74[Ability Tables]
+ *****birth.txt*70[Combinations of Race and Class]
+ *****c_monk.txt*04[Monk attacks]
+ *****birth.txt*72[Stat bonuses]
+ *****m_tempo.txt*02[Temporal Magic]
+ *****m_thaum.txt*02[Thaumaturgical Magic]
+ *****c_thaum.txt*01[Thaumaturgist]
+ *****r_thlord.txt*01[Thunderlord]
+ *****whattome.txt*01[ToME - a General Description]
+ *****dungeon.txt*07[Town]
+ *****r_troll.txt*01[Troll]
+ *****g_tulkas.txt*01[Tulkas]
+ *****c_palad.txt*03[Paladin]
+ *****g_tulkas.txt*03[Prayers]
+ *****defines.txt*83[Tvals]
+~~~~~85
+*****/Uindex.txt*85[U]
+ *****m_udun.txt*02[Udun Magic]
+ *****c_unbel.txt*01[Unbeliever]
+ *****c_unbel.txt*03[Antimagic]
+~~~~~86
+*****/Vindex.txt*86[V]
+ *****rm_vamp.txt*01[Vampire]
+ *****tome_faq.txt*16[Void jumpgates]
+ *****dungeon.txt*23[Void jumpgates]
+~~~~~87
+*****/Windex.txt*87[W]
+ *****magic.txt*02[Wands]
+ *****c_warper.txt*01[Warper]
+ *****c_warrio.txt*01[Warrior]
+ *****m_water.txt*02[Water Magic]
+ *****birth.txt*86[Weapons - starting info]
+ *****tome_faq.txt*27[Weird display]
+ *****dungeon.txt*1[Wilderness]
+ *****birth.txt*38[Wisdom]
+ *****r_wodelf.txt*01[Wood Elf]
+ *****tome_faq.txt*15[Wrists hurting]
+~~~~~89
+*****/Yindex.txt*89[Y]
+ *****g_yavann.txt*01[Yavanna]
+ *****c_druid.txt*03[Druid]
+ *****g_yavann.txt*03[Prayers]
+ *****r_yeek.txt*01[Yeek]
+~~~~~90
+*****/Zindex.txt*90[Z]
+ *****rm_zomb.txt*01[Zombie]
diff --git a/lib/help/inscrip.txt b/lib/help/inscrip.txt
new file mode 100644
index 00000000..517c81c2
--- /dev/null
+++ b/lib/help/inscrip.txt
@@ -0,0 +1,65 @@
+~~~~~01|Floor Inscriptions (spoiler)
+~~~~~02|Spoilers|Floor Inscriptions
+#####R=== Floor Inscriptions ===
+
+It is possible to inscribe words on the floor in ToME. If you happen
+to be lucky and inscribe a spell formula from another language, the inscription
+will use the floor's mana to cast that spell when either you walk over it, a
+monster walks over it, or both walk over it. Not all inscriptions are triggered
+by monsters, and not all can be triggered by the player.
+
+In order to write an inscription in another language, you must first have found
+and read a parchment with some of that language's words upon it. So, just
+copying the inscriptions here won't work unless you have read the words on a
+parchment first ;-).
+
+#####GLight up the Room
+Inscription: 'ure nimir' (sun shine)
+Parchment: Numenorean for Beginners (I)
+Triggered by: Player, Monster.
+Grid Mana Needed: 30
+Effect: Lights up the current room
+
+#####GDarkness in Room
+Inscription: 'lomi gimli' (night stars)
+Parchment: Numenorean for Beginners (II)
+Triggered by: Player, Monster.
+Grid Mana Needed: 10
+Effect: Casts the room into darkness
+
+#####GStorm
+Inscription: 'dulgi bawiba' (black winds)
+Parchment: Advanced Lessons of Numenorean
+Triggered by: Player, Monster.
+Grid Mana Needed: 40
+Effect: Electrical Ball of energy released around the inscription
+
+#####GProtection
+Inscription: 'pedo mellon a minno' (say friend and enter)
+Parchment: Advanced Lessons of Sindarin
+Triggered by: Monster.
+Grid Mana Needed: 8
+Effect: Prevents a monster from stepping on the affected square
+
+#####GDwarven summoning
+Inscription: 'Baruk Khazad! Khazad aimenu!' (Axes of the Dwarves, the Dwarves
+ are upon you!)
+Parchment: Khuzdul - The Hidden Tongue of the Dwarves
+Triggered by: Player.
+Grid Mana Needed: 100
+Effect: Generates friendly Dwarven Warriors to help your cause
+
+#####GOpen Chasm
+Inscription: 'dunna hrassa' (black precipice)
+Parchment: Nandorin for Dummies
+Triggered by: Monster.
+Grid Mana Needed: 50
+Effect: Creates a bottomless hole in the floor that monsters (and potentially
+ objects) fall down
+
+#####GBlast of Black Fire
+Inscription: 'burz ghash ronk' (black fire pool)
+Parchment: Advanced Lessons of Orcish
+Triggered by: Player, Monster.
+Grid Mana Needed: 60
+Effect: Releases a ball of Hellfire around the inscription
diff --git a/lib/help/lua.hlp b/lib/help/lua.hlp
new file mode 100644
index 00000000..ba61676a
--- /dev/null
+++ b/lib/help/lua.hlp
@@ -0,0 +1,34 @@
+|||||oy
+~~~~~01|Help|Lua scripting for ToME
+#####R Welcome to the ToME Lua Help System.
+#####R=============================================
+
+Please choose one of the following help files:
+
+ *****/alua_intr.txt*0[(a) An Introduction to scripting]
+ *****/blua_pow.txt*0[(b) Adding a racial power (the 'U' menu)]
+ *****/clua_skil.txt*0[(c) Adding new skills (the 'm' menu)]
+ *****/dlua_ques.txt*0[(d) Adding a quest]
+
+
+ *****/elua_mon.txt*0[(e) Useful functions in monster.pkg]
+ *****/flua_play.txt*0[(f) Useful functions in player.pkg]
+ *****/glua_spel.txt*0[(g) Useful functions in spell.pkg]
+ *****/hlua_util.txt*0[(h) Useful functions in util.pkg]
+
+ *****/ilua_gf.txt*0[(g) A list of GF_FOO flags]
+
+
+ *****/zhelp.hlp*0[(z) Main Help menu]
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/help/lua_gf.txt b/lib/help/lua_gf.txt
new file mode 100644
index 00000000..000f4af5
--- /dev/null
+++ b/lib/help/lua_gf.txt
@@ -0,0 +1,45 @@
+|||||oy
+#####R /--------------------------\
+#####R< A partial list of GF_FLAGS >
+#####R \--------------------------/
+
+GF_ARROW: arrows
+GF_MISSILE: magic missiles
+GF_MANA: mana
+GF_LITE_WEAK: light
+GF_DARK_WEAK: dark
+GF_WATER: water
+GF_PLASMA: plasma
+GF_METEOR: meteors
+GF_ICE: ice
+GF_GRAVITY: gravity
+GF_INERTIA: inertia
+GF_FORCE: force
+GF_TIME: pure time
+GF_ACID: acid
+GF_ELEC: lightning
+GF_FIRE: flames
+GF_COLD: cold
+GF_POIS: poison
+GF_LITE: pure light
+GF_DARK: pure dark
+GF_CONFUSION: confusion
+GF_SOUND: sound
+GF_SHARDS: shards
+GF_NEXUS: nexus
+GF_NETHER: nether
+GF_CHAOS: chaos
+GF_DISENCHANT: disenchantment
+GF_KILL_WALL: wall destruction
+GF_KILL_DOOR: door destruction
+GF_KILL_TRAP: trap destruction
+GF_STONE_WALL: wall creation
+GF_MAKE_DOOR: door creation
+GF_MAKE_TRAP: trap creation
+GF_DESTRUCTION: destruction
+
+Back to the *****lua.hlp*0[lua help index] .
+
+ [[[[[gThis file by fearoffours (fearoffours@moppy.co.uk)]
+
+
diff --git a/lib/help/lua_intr.txt b/lib/help/lua_intr.txt
new file mode 100644
index 00000000..ccb87067
--- /dev/null
+++ b/lib/help/lua_intr.txt
@@ -0,0 +1,133 @@
+|||||oy
+#####R /----------------------------------------\
+#####R < Scripting for ToME with lua >
+#####R \----------------------------------------/
+
+So, you want to patch ToME eh? Maybe you've had a look at how the edit files
+work, maybe even added your own race/class, but want to go further and add
+new racial (U) or magic (m) powers. Well these help files will show a little
+bit of how to do that.
+
+I am not a master at this kind of thing. I wrote a small script, with much
+help from DarkGod, and he subsequently asked me to write these help files. I
+was looking forward to when the lua help files came out so that I could look
+at them myself. Little did I know I'd be asked to write them. Therefore I
+apologise for any inaccuracies or errors that you find, and if you care to let
+me know of any improvements which could be made (especially if you're an
+experienced programmer/scripter), I'd love to know. Email me at
+[[[[[gfearoffours@moppy.co.uk].
+
+#####R=== The example scripts ===
+
+These help files take the form of a tutorial, adding a line at a time to a
+script, and explaining important concepts along the way. To see it all in
+action, I strongly suggest that you download my example script pack from
+[[[[[Ghttp://www.moppy.co.uk/angband.htm]. As well as including all the
+scripts covered in these help files, they also include the addition of my
+"hina" race which has a Lua scripted racial power which you might like to look
+at. There's also a quest which I will be including documentation for as a
+tutorial soon. Plus there's all the other lua scripts in the lib\scpt
+directory to look at. Most of what you see in these files has been learned from
+those files anyway!
+
+The source code is invaluable as well. There's a searchable and browsable
+version of the latest ToME source code available online at
+[[[[[Ghttp://www.t-o-m-e.net/cvs.php]. Use it!
+
+If you don't want to download and install the example scripts, then just
+follow the tutorials with a text editor open! But I'll say it again, it's a lot
+easier if you download and install the example scripts.
+
+This file goes on to explain the concepts of scripting, programming,
+variables and functions. If you're familiar with these concepts, you might
+as well take a look at how to add a power to the U menu in the
+*****lua_pow.txt*0[Scripting a racial power] file.
+
+
+#####R=== Defining some basic stuff ===
+
+Computers don't do anything that they're not told to do. When we script, or
+program, we must assume they know nothing. We have to tell them each little
+bit of information from the ground up.
+
+A program, or a script (we'll talk about exact differences later) is like a
+set of instructions. Let's imagine that people responded to programs, and
+that we had a program called "Housework". Its series of instructions might
+look something like this:
+
+#####BDo the Washing up.
+#####BClean the kitchen.
+#####BDust the shelves.
+#####BHoover the lounge.
+
+Each step above could be called a function, as they are all actions that
+need to be carried out. Now to you and me, we'd understand that program just
+fine, but if someone didn't know HOW to wash, or what hoovering was, they'd
+soon run into problems. For those people we'd need to define each function
+clearly. Thus "do the washing up" might be -
+
+#####BRun hot water into bowl.
+#####BAdd washing up liquid.
+#####BPut dirty plates into bowl
+#####BScrub plates till clean
+#####BPlace clean plates on rack to dry,
+
+There's still plenty of problems here though. We've not said to turn the tap
+off, or what the bowl is, or to wash any dirty cutlery, mugs, saucepans, etc.,
+etc. Whilst this might seem fairly obvious to a person, this is how we need
+to think when writing programs for computers.
+
+Lets look now at some of the terms we're going to be using, in the rest of
+these help files, and what they mean...
+
+#####R=== Variables and Constants ===
+A variable is a way to store information in a computer. Just as you store
+things in your own memory, you can store things in the computer's memory. And
+just as things change in your memory, so things can change in the computer's
+memory. This factor of change is why they're called "variables" and not
+"statics".
+
+For instance, you may have a friend's email address committed to memory, but
+things change over time, they get a new ISP or domain, and so their email
+address changes. You commit this new address to memory, and eventually
+forget the old one. The thing you have stored in your memory is the same
+(your friend's address) but the value (property) of what you have stored has
+changed (from friend@old-address.com to friend@new-address.com).
+
+Variables are the building blocks out of which you will create your patch.
+
+A variable which will *never* change its value is called a constant.
+
+#####R===Functions===
+
+A function is a series of steps or statements, grouped together and given
+one name. When you want to carry out those steps, you simply ask the
+computer to carry out that function. To go back to our original example,
+rather than saying, "I'd like you to run some hot water into a bowl, add the
+washing up liquid, put the dirty plates into it, and then scrub them till
+they're clean", we just say "do the washing up".
+
+This is where we come to the difference between scripting and programming.
+With scripting we can use the functions and variables that exist in the
+ToME code. Maintainers like DarkGod have already made sure that the
+computer knows how to "do the washing up", including turning the tap off and
+what the bowl is. All we need to do in our script is say "do the washing
+up". Or to look at it in a more relevant way, the game has been coded so
+that when a magic missile is fired, a bolt or beam spell with a black line
+of asterisks will be drawn in the direction indicated by the player, the
+mana of that spell will be used up, the monster will take the appropriate
+amount of damage, and so on. All we need to do in our script is say "fire a
+magic missile".
+
+As you script, you will still be designing your own functions, and
+variables, but the hardest parts have been done for you!
+
+Not every function and global variable in the source-code has been exported to
+use in your scripting. But the ones that have are easily identifiable by
+looking in any source files with the extension .pkg . Chris Hadgis has written
+some excellent documentation which outline the use of the most important
+functions in some of these files. They outline the functions from the
+
+OK, the first tutorial proper is on *****lua_pow.txt*0[adding a racial power] .
+
+ [[[[[gThis file by fearoffours (fearoffours@moppy.co.uk)]
diff --git a/lib/help/lua_mon.txt b/lib/help/lua_mon.txt
new file mode 100644
index 00000000..9bb363c0
--- /dev/null
+++ b/lib/help/lua_mon.txt
@@ -0,0 +1,535 @@
+|||||oy
+
+#####R /----------------------------------------\
+#####R < monster.pkg functions helper file >
+#####R \----------------------------------------/
+
+
+----------------------------------------------------------------------
+
+#####R=== race_info_idx ===
+
+#####GDeclaration
+ extern monster_race* race_info_idx(int r_idx, int ego);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Return a (monster_race*) with the combinations of the monster
+ * properties and the ego type
+ */
+
+#####GDescription
+Get monster info and ego info for monster with monster index "r_idx"
+and monster ego "ego". The ego information is applied to the monster
+information and the new monster information is returned.
+
+For example, race_info_idx(141,7) will create a brown yeek (monster)
+shaman (ego).
+
+#####GParameters
+> "r_idx" is an entry from the "r_info.txt" file. Beware: there is no
+ range checking.
+> "ego" is an entry from the "re_info.txt". Beware: there is no range
+ checking.
+
+----------------------------------------------------------------------
+
+#####R=== delete_monster_idx ===
+
+#####GDeclaration
+ extern void delete_monster_idx(int i);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Delete a monster by index.
+ *
+ * When a monster is deleted, all of its objects are deleted.
+ */
+
+#####GDescription
+Delete monster "i" from the monster array.
+
+#####GParameters
+> "i" is the index for the monster list (m_list[]). Beware: there is
+ no range checking.
+
+----------------------------------------------------------------------
+
+#####R=== m_pop ===
+
+#####GDeclaration
+ extern s16b m_pop(void);
+
+#####GFile
+ monsters2.c
+
+#####GComment
+/*
+ * Acquires and returns the index of a "free" monster.
+ *
+ * This routine should almost never fail, but it *can* happen.
+ */
+
+#####GDescription
+Get an empty slot in the monster list (m_list[]). If there are no
+empty slots, a slot will be reclaimed from a "dead" monster. If all
+slots are full, 0 is returned, which means the function has failed
+("Too many monsters!").
+
+----------------------------------------------------------------------
+
+#####R=== get_mon_num_prep ===
+
+#####GDeclaration
+ extern errr get_mon_num_prep(void);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Apply a "monster restriction function" to the "monster allocation table"
+ */
+
+#####GDescription
+There are no parameters, but there are some other variables which will
+need to be set. They are get_mon_num_hook and get_mon_num2_hook. They
+are pointers to functions.
+
+For example, get_mon_num_hook = monster_volcano means when
+get_mon_num_hook is called (*get_mon_num_hook)(index), the actual
+function called is monster_volcano(index). This particular function
+returns TRUE if the monster indicated by "index" has the
+RF8_WILD_VOLCANO flag set.
+
+It is a good idea to store the old value of get_mon_num_hook before
+setting a new one, and restoring it when your function is finished.
+
+Following is a list of functions which can be assigned to
+get_mon_num_hook:
+
+create_molds_hook
+create_townpeople_hook
+mon_hook_bounty
+monster_dungeon
+monster_grass
+monster_mountain
+monster_ocean
+monster_quest
+monster_shore
+monster_town
+monster_volcano
+monster_waste
+monster_wood
+mutate_monster_okay
+place_monster_okay
+summon_specific_okay
+vault_aux_animal
+vault_aux_chapel
+vault_aux_clone
+vault_aux_demon
+vault_aux_dragon
+vault_aux_giant
+vault_aux_jelly
+vault_aux_kennel
+vault_aux_orc
+vault_aux_symbol
+vault_aux_treasure
+vault_aux_troll
+vault_aux_undead
+
+Or you can write your own. The function must take an integer (index)
+as a parameter and return boolean (TRUE if the monster is selected,
+or FALSE if it is not).
+
+----------------------------------------------------------------------
+
+#####R=== get_mon_num ===
+
+#####GDeclaration
+ extern s16b get_mon_num(int level);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Choose a monster race that seems "appropriate" to the given level
+ *
+ * This function uses the "prob2" field of the "monster allocation table",
+ * and various local information, to calculate the "prob3" field of the
+ * same table, which is then used to choose an "appropriate" monster, in
+ * a relatively efficient manner.
+ *
+ * Note that "town" monsters will *only* be created in the town, and
+ * "normal" monsters will *never* be created in the town, unless the
+ * "level" is "modified", for example, by polymorph or summoning.
+ *
+ * There is a small chance (1/50) of "boosting" the given depth by
+ * a small amount (up to four levels), except in the town.
+ *
+ * It is (slightly) more likely to acquire a monster of the given level
+ * than one of a lower level. This is done by choosing several monsters
+ * appropriate to the given level and keeping the "hardest" one.
+ *
+ * Note that if no monsters are "appropriate", then this function will
+ * fail, and return zero, but this should *almost* never happen.
+ */
+
+Description:
+For the given level "level", return the index of an appropriate
+monster race.
+
+#####GParameters
+> "level" is a dungeon level
+
+----------------------------------------------------------------------
+
+#####R=== monster_desc ===
+
+#####GDeclaration
+ extern void monster_desc(char *desc, monster_type *m_ptr,
+ int mode);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Build a string describing a monster in some way.
+ *
+ * We can correctly describe monsters based on their visibility.
+ * We can force all monsters to be treated as visible or invisible.
+ * We can build nominatives, objectives, possessives, or reflexives.
+ * We can selectively pronominalize hidden, visible, or all monsters.
+ * We can use definite or indefinite descriptions for hidden monsters.
+ * We can use definite or indefinite descriptions for visible monsters.
+ *
+ * Pronominalization involves the gender whenever possible and allowed,
+ * so that by cleverly requesting pronominalization / visibility, you
+ * can get messages like "You hit someone. She screams in agony!".
+ *
+ * Reflexives are acquired by requesting Objective plus Possessive.
+ *
+ * If no m_ptr arg is given (?), the monster is assumed to be hidden,
+ * unless the "Assume Visible" mode is requested.
+ *
+ * If no r_ptr arg is given, it is extracted from m_ptr and r_info
+ * If neither m_ptr nor r_ptr is given, the monster is assumed to
+ * be neuter, singular, and hidden (unless "Assume Visible" is set),
+ * in which case you may be in trouble... :-)
+ *
+ * I am assuming that no monster name is more than 70 characters long,
+ * so that "char desc[80];" is sufficiently large for any result.
+ *
+ * Mode Flags:
+ * 0x01 --> Objective (or Reflexive)
+ * 0x02 --> Possessive (or Reflexive)
+ * 0x04 --> Use indefinites for hidden monsters ("something")
+ * 0x08 --> Use indefinites for visible monsters ("a kobold")
+ * 0x10 --> Pronominalize hidden monsters
+ * 0x20 --> Pronominalize visible monsters
+ * 0x40 --> Assume the monster is hidden
+ * 0x80 --> Assume the monster is visible
+ *
+ * Useful Modes:
+ * 0x00 --> Full nominative name ("the kobold") or "it"
+ * 0x04 --> Full nominative name ("the kobold") or "something"
+ * 0x80 --> Genocide resistance name ("the kobold")
+ * 0x88 --> Killing name ("a kobold")
+ * 0x22 --> Possessive, genderized if visible ("his") or "its"
+ * 0x23 --> Reflexive, genderized if visible ("himself") or "itself"
+ */
+
+#####GDescription
+Return a monster description "desc" for monster "monster_type" using
+flag "mode". The modes are described above.
+
+#####GParameters
+> "desc" is the returned description.
+> "monster type" is the monster (monster pointer).
+> "mode" is one of the modes described in the comments.
+
+----------------------------------------------------------------------
+
+#####R=== monster_race_desc ===
+
+#####GDeclaration
+ extern void monster_race_desc(char *desc, int r_idx,
+ int ego);
+
+#####GFile
+ monster2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the monster description "desc" for monster with monster index
+"r_idx" and monster ego "ego". The monster description is made up of
+the ego name (if any) and monster name, or the unique name.
+
+#####GParameters
+> "desc" is the returned description.
+> "r_idx" is an entry from the "r_info.txt" file. Beware: there is no
+ range checking.
+> "ego" is an entry from the "re_info.txt". Beware: there is no range
+ checking.
+
+----------------------------------------------------------------------
+
+#####R=== place_monster_aux ===
+
+#####GDeclaration
+ extern bool place_monster_aux(int y, int x, int r_idx,
+ bool slp, bool grp, int status);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Attempt to place a monster of the given race at the given location
+ *
+ * Note that certain monsters are now marked as requiring "friends".
+ * These monsters, if successfully placed, and if the "grp" parameter
+ * is TRUE, will be surrounded by a "group" of identical monsters.
+ *
+ * Note that certain monsters are now marked as requiring an "escort",
+ * which is a collection of monsters with similar "race" but lower
+ * level.
+ *
+ * Some monsters induce a fake "group" flag on their escorts.
+ *
+ * Note the "bizarre" use of non-recursion to prevent annoying output
+ * when running a code profiler.
+ *
+ * Note the use of the new "monster allocation table" code to restrict
+ * the "get_mon_num()" function to "legal" escort types.
+ */
+
+#####GDescription
+Attempt to place a monster at grid "y", "x". The monster has monster
+index "m_idx". The monster may be asleep ("slp"). The monster may be
+surrounded by a group of identical monsters ("grp"). The monster has
+a status of "status" (see below). The function returns TRUE if the
+monster is placed successfully, otherwise FALSE.
+
+#####GParameters
+> "y" is the y co-ordinate of the target grid.
+> "x" is the x co-ordinate of the target grid.
+> "r_idx" is an entry from the "r_info.txt" file. Beware: there is no
+ range checking.
+> "slp" is TRUE if the monster is asleep, otherwise FALSE.
+> "grp" is TRUE if the monster is surrounded by a group, otherwise
+ FALSE.
+> "status" is the status of the monster
+ *****fields.txt*0[status]
+
+----------------------------------------------------------------------
+
+#####R=== place_monster ===
+
+#####GDeclaration
+ extern bool place_monster(int y, int x, bool slp,
+ bool grp);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Hack -- attempt to place a monster at the given location
+ *
+ * Attempt to find a monster appropriate to the "monster_level"
+ */
+
+#####GDescription
+Attempt to place a monster at grid "y", "x". The monster may be asleep
+("slp"). The monster may be surrounded by a group of identical
+monsters ("grp"). The monster is of the appropriate monster level. The
+function returns TRUE if the monster is placed successfully, otherwise
+FALSE.
+
+#####GParameters
+> "y" is the y co-ordinate of the target grid.
+> "x" is the x co-ordinate of the target grid.
+> "slp" is TRUE if the monster is asleep, otherwise FALSE.
+> "grp" is TRUE if the monster is surrounded by a group, otherwise
+ FALSE.
+
+----------------------------------------------------------------------
+
+#####R=== place_monster_one ===
+
+#####GDeclaration
+ extern s16b place_monster_one(int y, int x, int r_idx,
+ int ego, bool slp, int status);
+
+#####GFile
+ monster2.c
+
+#####GComment
+/*
+ * Attempt to place a monster of the given race at the given location.
+ *
+ * To give the player a sporting chance, any monster that appears in
+ * line-of-sight and is extremely dangerous can be marked as
+ * "FORCE_SLEEP", which will cause them to be placed with low energy,
+ * which often (but not always) lets the player move before they do.
+ *
+ * This routine refuses to place out-of-depth "FORCE_DEPTH" monsters.
+ *
+ * XXX XXX XXX Use special "here" and "dead" flags for unique monsters,
+ * remove old "cur_num" and "max_num" fields.
+ *
+ * XXX XXX XXX Actually, do something similar for artifacts, to simplify
+ * the "preserve" mode, and to make the "what artifacts" flag more useful.
+ *
+ * This is the only function which may place a monster in the dungeon,
+ * except for the savefile loading code.
+ */
+
+#####GDescription
+Attempt to place a monster at grid "y", "x". The monster has monster
+index "m_idx". The monster may be asleep ("slp"). The monster may have
+an ego type ("ego"). The monster has a status of "status" (see below).
+The function returns TRUE if the monster is placed successfully,
+otherwise FALSE.
+
+#####GParameters
+> "y" is the y co-ordinate of the target grid.
+> "x" is the x co-ordinate of the target grid.
+> "r_idx" is an entry from the "r_info.txt" file. Beware: there is no
+ range checking.
+> "slp" is TRUE if the monster is asleep, otherwise FALSE.
+> "ego" is an entry from the "re_info.txt". Beware: there is no range
+ checking.
+> "status" is the status of the monster
+ *****fields.txt*0[status]
+
+----------------------------------------------------------------------
+
+#####R=== is_friend ===
+
+#####GDeclaration
+ extern int is_friend(monster_type *m_ptr);
+
+#####GFile
+ monster3.c
+
+#####GComment
+/*
+ * Is the monster in friendly state(pet, friend, ..)
+ * -1 = enemy, 0 = neutral, 1 = friend
+ */
+
+#####GDescription
+Return a value to indicate the status of monster "m_ptr".
+ *****fields.txt*0[status]
+
+#####GParameters
+> "m_ptr" is a pointer to a monster.
+
+----------------------------------------------------------------------
+
+#####R=== is_enemy ===
+
+#####GDeclaration
+ extern bool is_enemy(monster_type *m_ptr,
+ monster_type *t_ptr);
+
+#####GFile
+ monster3.c
+
+#####GComment
+/* Should they attack each others */
+
+#####GDescription
+Return TRUE if monster "m_ptr" should attack monster "t_ptr". If
+"m_ptr" is stupid and "r_ptr" is a different type of monster then the
+function will return TRUE. If "m_ptr" is not neutral and "r_ptr" is a
+breeder, and "r_ptr" is a different type of monster then the function
+will return TRUE (and vice versa). If both monsters are not neutral
+and one is friendly and the other isn't then the function will return
+TRUE. Otherwise the function returns FALSE.
+
+#####GParameters
+> "m_ptr" is a pointer to a monster.
+> "t_ptr" is a pointer to a monster (target).
+
+----------------------------------------------------------------------
+
+#####R=== change_side ===
+
+#####GDeclaration
+ extern bool change_side(monster_type *m_ptr);
+
+#####GFile
+ monster3.c
+
+#####GComment
+(none)
+
+#####GDescription
+Change the status of monster "m_ptr" from friendly to unfriendly and
+vice versa. Friends and pets become enemies. Neutral Ms become
+neutral Ps and vice versa. Companions are unaffected. The
+function returns TRUE if the status changed, otherwise FALSE.
+
+#####GParameters
+> "m_ptr" is a pointer to a monster.
+
+----------------------------------------------------------------------
+
+#####R=== find_position ===
+
+#####GDeclaration
+ extern void find_position(int y, int x, int *yy = 0,
+ int *xx = 0);
+
+#####GFile
+ lua_bind.c
+
+#####GComment
+(none)
+
+#####GDescription
+Find a new grid "yy", "xx" within 6 grids of target grid "y", "x".
+The new grid must be within line-of-sight of the target grid. A
+maximum of 5000 attempts is made.
+
+#####GParameters
+> "y" is the y co-ordinate of the target grid.
+> "x" is the x co-ordinate of the target grid.
+> "yy" is the y co-ordinate of the new grid.
+> "xx" is the x co-ordinate of the new grid.
+
+----------------------------------------------------------------------
+
+#####R=== can_create_companion ===
+
+#####GDeclaration
+ extern bool can_create_companion();
+
+#####GFile
+ monster3.c
+
+#####GComment
+/* Returns if a new companion is allowed */
+
+#####GDescription
+Return TRUE if a companion can be created, otherwise FALSE.
+
+----------------------------------------------------------------------
+
+Back to the *****lua.hlp*0[lua help index] .
+
+
+ [[[[[gThis file by Chris Hadgis]
diff --git a/lib/help/lua_play.txt b/lib/help/lua_play.txt
new file mode 100644
index 00000000..6ab64ddb
--- /dev/null
+++ b/lib/help/lua_play.txt
@@ -0,0 +1,1225 @@
+|||||oy
+
+#####R /----------------------------------------\
+#####R < player.pkg functions helper file >
+#####R \----------------------------------------/
+
+----------------------------------------------------------------------
+
+#####RFunction: set_parasite
+
+#####GDeclaration: bool set_parasite(int v, int r);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->parasite" and "p_ptr->parasite_r_idx"
+* notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until parasite with monster index "r" is created. The
+player gets the message "You feel something growing in you" if "v"
+is > 0. Otherwise the player gets the message "Your body convulse
+and spawn <monster name>" if the monster is created (80% chance) or
+"The hideous thing growing in you seems to die" if the monster dies.
+
+#####GParameters:
+>v is the time until the parasite gestates (must be between 0 and
+ 10000).
+>r is the monster index of parasite to be created.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_disrupt_shield
+
+#####GDeclaration: bool set_disrupt_shield(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->disrupt_shield"
+* notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until shield of invulnerability expires. The player gets
+the message "You feel invulnerable" if "v" is > 0. Otherwise the
+player gets the message "You are more vulnerable".
+
+#####GParameters:
+>v is the time until the shield expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_prob_travel
+
+#####GDeclaration: bool set_prob_travel(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->prob_travel"
+* notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until random teleportation expires. The player gets
+the message "You feel instable" if "v" is > 0. Otherwise the
+player gets the message "You are more stable".
+
+#####GParameters:
+>v is the time until random teleportation expires (must be between 0
+ and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_deadly
+
+#####GDeclaration: bool set_tim_deadly(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_deadly"
+*/
+
+#####GDescription:
+Set time "v" until deadly accuracy expires. The player gets the
+message "You feel extremely accurate" if "v" is > 0. Otherwise the
+player gets the message "You are suddenly much less accurate".
+
+#####GParameters:
+>v is the time until deadly accuracy expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_res_time
+
+#####GDeclaration: bool set_tim_res_time(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_res_time"
+*/
+
+#####GDescription:
+Set time "v" until space-time distortions expire. The player gets the
+message "You are now protected against the space-time distortions" if
+"v" is > 0. Otherwise the player gets the message "You are no longer
+protected against the space-time distortions".
+
+#####GParameters:
+>v is the time until space-time distortions expire (must be between
+ 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_reflect
+
+#####GDeclaration: bool set_tim_reflect(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_reflect"
+*/
+
+#####GDescription:
+Set time "v" until reflection expire. The player gets the message
+"You start reflecting the world around you" if "v" is > 0. Otherwise
+the player gets the message "You stop reflecting".
+
+#####GParameters:
+>v is the time until reflection expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_meditation
+
+#####GDeclaration: bool set_meditation(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->meditation"
+*/
+
+#####GDescription:
+Set time "v" until meditation expire. The player gets the message
+"You start meditating on yourself" if "v" is > 0. Otherwise the
+player gets the message "You stop your self meditation".
+
+#####GParameters:
+>v is the time until meditation expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_strike
+
+#####GDeclaration: bool set_strike(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->strike"
+*/
+
+#####GDescription:
+Set time "v" until accurate strikes expire. The player gets the
+message "You feel very accurate" if "v" is > 0. Otherwise the player
+gets the message "You are no longer very accurate".
+
+#####GParameters:
+>v is the time until accurate strikes expire (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_walk_water
+
+#####GDeclaration: bool set_walk_water(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->walk_water", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until walking on water expires. The player gets the
+message "You feel strangely insubmersible" if "v" is > 0. Otherwise
+the player gets the message "You are no longer insubmersible".
+
+#####GParameters:
+>v is the time until walking on water expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_ffall
+
+#####GDeclaration: bool set_tim_ffall(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_ffall"
+*/
+
+#####GDescription:
+Set time "v" until feather-fall expires. The player gets the message
+"You feel very light" if "v" is > 0. Otherwise the player gets the
+message "You are suddenly heavier".
+
+#####GParameters:
+>v is the time until feather-fall expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_fire_aura
+
+#####GDeclaration: bool set_tim_fire_aura(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_fire_aura"
+*/
+
+#####GDescription:
+Set time "v" until fiery aura expires. The player gets the message
+"You are enveloped in flames" if "v" is > 0. Otherwise the player
+gets the message "You are no longer enveloped in flames".
+
+#####GParameters:
+>v is the time until fiery aura expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_holy
+
+#####GDeclaration: bool set_holy(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->holy", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until holiness expires. The player gets the message
+"You feel a holy aura around you" if "v" is > 0. Otherwise the
+player gets the message "The holy aura vanishes".
+
+#####GParameters:
+>v is the time until holiness expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_grace
+
+#####GDeclaration: void set_grace(s32b v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->grace", notice observable changes
+*/
+
+#####GDescription:
+Set grace to value "v". Don't allow grace to fall below -30000 or
+rise above 30000.
+
+#####GParameters:
+>v is the value of grace.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_mimic
+
+#####GDeclaration: bool set_mimic(int v, int p);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_mimic", and "p_ptr->mimic_form",
+* notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until morph into monster with monster index "p" expires.
+The player gets the message "You feel your body change" if "v" is > 0.
+Otherwise the player gets the message "You are no longer transformed".
+
+#####GParameters:
+>v is the time until transformation expires (must be between 0 and
+ 10000).
+>p is the monster index of the monster the player wants to mimic.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_no_breeders
+
+#####GDeclaration: bool set_no_breeders(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "no_breeds"
+*/
+
+#####GDescription:
+Set time "v" until breeders can breed again. The player gets the
+message "You feel an anti-sexual aura" if "v" is > 0. Otherwise the
+player gets the message "You no longer feel an anti-sexual aura".
+Okay...
+
+#####GParameters:
+>v is the time until breeders can breed again (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_invis
+
+#####GDeclaration: bool set_invis(int v,int p);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_invis", and "p_ptr->tim_inv_pow",
+* notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until invisibility expires. The player gets the message
+"You feel your body fade away" if "v" is > 0. Otherwise the player
+gets the message "You are no longer invisible".
+
+#####GParameters:
+>v is the time until invisibility expires (must be between 0 and
+ 10000).
+>p is the power of timed invisibility.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_lite
+
+#####GDeclaration: bool set_lite(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_lite", notice observable changes
+*
+* Note the use of "PU_VIEW", which is needed to
+* memorise any terrain features which suddenly become "visible".
+* Note that blindness is currently the only thing which can affect
+* "player_can_see_bold()".
+*/
+
+#####GDescription:
+Set time "v" until brightness expires. The player gets the message
+"You suddenly seem brighter" if "v" is > 0. Otherwise the player
+gets the message "You are no longer bright".
+
+#####GParameters:
+>v is the time until brightness expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_blind
+
+#####GDeclaration: bool set_blind(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->blind", notice observable changes
+*
+* Note the use of "PU_UN_VIEW", which is needed to memorise any terrain
+* features which suddenly become "visible".
+* Note that blindness is currently the only thing which can affect
+* "player_can_see_bold()".
+*/
+
+#####GDescription:
+Set time "v" until blindness expires. The player gets the message "You
+are blind" if "v" is > 0. Otherwise the player gets the message "You
+can see again".
+
+#####GParameters:
+>v is the time until blindness expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_confused
+
+#####GDeclaration: bool set_confused(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->confused", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until confusion expires. The player gets the message "You
+are confused" if "v" is > 0. Otherwise the player gets the message
+"You feel less confused now".
+
+#####GParameters:
+>v is the time until confusion expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_poisoned
+
+#####GDeclaration: bool set_poisoned(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->poisoned", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until poison expires. The player gets the message "You
+are poisoned" if "v" is > 0. Otherwise the player gets the message
+"You are no longer poisoned".
+
+#####GParameters:
+>v is the time until poison expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_afraid
+
+#####GDeclaration: bool set_afraid(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->afraid", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until fear expires. The player gets the message "You are
+terrified" if "v" is > 0. Otherwise the player gets the message "You
+feel bolder now".
+
+#####GParameters:
+>v is the time until fear expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_paralyzed
+
+#####GDeclaration: bool set_paralyzed(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->paralyzed", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until paralysis expires. The player gets the message "You
+are paralyzed" if "v" is > 0. Otherwise the player gets the message
+"You can move again".
+
+#####GParameters:
+>v is the time until paralysis expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_image
+
+#####GDeclaration: bool set_image(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->image", notice observable changes
+*
+* Note that we must redraw the map when hallucination changes.
+*/
+
+#####GDescription:
+Set time "v" until hallucination expires. The player gets the message
+"Oh, wow! Everything looks so cosmic now" if "v" is > 0. Otherwise
+the player gets the message "You can see clearly again".
+
+#####GParameters:
+>v is the time until hallucination expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_fast
+
+#####GDeclaration: bool set_fast(int v, int p);
+
+#####GFile: xtra2.c
+
+#####GComment:
+(none)
+
+#####GDescription:
+Set time "v" until speed of speed factor "p" expires. The player gets
+the message "You feel yourself moving faster" if "v" is > 0. Otherwise
+the player gets the message "You feel yourself slow down".
+
+#####GParameters:
+>v is the time until speed expires (must be between 0 and 10000).
+>p is the speed factor.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_light_speed
+
+#####GDeclaration: bool set_light_speed(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->lightspeed", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until light-speed expires. The player gets the message
+"You feel as if time has stopped" if "v" is > 0. Otherwise the player
+gets the message "You feel time returning to its normal rate".
+
+#####GParameters:
+>v is the time until light-speed expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_slow
+
+#####GDeclaration: bool set_slow(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->slow", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until slowness expires. The player gets the message "You
+feel yourself moving slower" if "v" is > 0. Otherwise the player gets
+the message "You feel yourself speed up".
+
+#####GParameters:
+>v is the time until slowness expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_shield
+
+#####GDeclaration: bool set_shield(int v, int p, s16b o, s16b d1, s16b d2);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->shield", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until stone-shield expires. The player gets the message
+"Your skin turns to stone" if "v" is > 0. Otherwise the player gets
+the message "Your skin returns to normal". Stone-shield has spell
+power "p", spell option "o", and power options "d1" and "d2".
+
+#####GParameters:
+>v is the time until stone-shield expires (must be between 0 and
+ 10000).
+>p is the power of the stone-shield spell.
+>o is the option of the stone-shield spell.
+>d1 is the power for option 1 of the stone-shield spell.
+>d2 is the power for option 2 of the stone-shield spell.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_blessed
+
+#####GDeclaration: bool set_blessed(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->blessed", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until blessing expires. The player gets the message "You
+feel righteous" if "v" is > 0. Otherwise the player gets the message
+"The prayer has expired".
+
+#####GParameters:
+>v is the time until blessing expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_hero
+
+#####GDeclaration: bool set_hero(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->hero", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until heroism expires. The player gets the message "You
+feel like a hero" if "v" is > 0. Otherwise the player gets the
+message "The heroism wears off".
+
+#####GParameters:
+>v is the time until heroism expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_shero
+
+#####GDeclaration: bool set_shero(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->shero", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until berserk expires. The player gets the message "You
+feel like a killing machine" if "v" is > 0. Otherwise the player gets
+the message "You feel less Berserk".
+
+#####GParameters:
+>v is the time until berserk expires (must be between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_protevil
+
+#####GDeclaration: bool set_protevil(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->protevil", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until protection from evil expires. The player gets the
+message "You feel safe from evil" if "v" is > 0. Otherwise the player
+gets the message "You no longer feel safe from evil".
+
+#####GParameters:
+>v is the time until protection from evil expires (must be between 0
+ and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_protgood
+
+#####GDeclaration: bool set_protgood(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->protgood", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until protection from good expires. The player gets the
+message "You feel safe from good" if "v" is > 0. Otherwise the player
+gets the message "You no longer feel safe from good".
+
+#####GParameters:
+>v is the time until protection from evil expires (must be between 0
+ and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_protundead
+
+#####GDeclaration: bool set_protundead(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->protundead", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until protection from undead expires. The player gets the
+message "You feel safe from undead" if "v" is > 0. Otherwise the
+player gets the message "You no longer feel safe from undead".
+
+#####GParameters:
+>v is the time until protection from undead expires (must be between
+ 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_invuln
+
+#####GDeclaration: bool set_invuln(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->invuln", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until invulnerability expires. The player gets the
+message "Invulnerability" if "v" is > 0. Otherwise the player gets
+the message "The invulnerability wears off".
+
+#####GParameters:
+>v is the time until invulnerability expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_invis
+
+#####GDeclaration: bool set_tim_invis(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_invis", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until see invisible expires. The player gets the message
+"Your eyes feel very sensitive" if "v" is > 0. Otherwise the player
+gets the message "Your eyes feel less sensitive".
+
+#####GParameters:
+>v is the time until see invisible expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_tim_infra
+
+#####GDeclaration: bool set_tim_infra(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_infra", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until infravision expires. The player gets the message
+"Your eyes begin to tingle" if "v" is > 0. Otherwise the player gets
+the message "Your eyes stop tingling".
+
+#####GParameters:
+>v is the time until infravision expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_mental_barrier
+
+#####GDeclaration: bool set_mental_barrier(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->tim_mental_barrier", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until mental barrier expires. The player gets the message
+"Your mind grows stronger" if "v" is > 0. Otherwise the player gets
+the message "Your mind is no longer especially strong".
+
+#####GParameters:
+>v is the time until mental barrier expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_acid
+
+#####GDeclaration: bool set_oppose_acid(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+
+#####GDescription:
+Set time "v" until feather-fall expires. The player gets the message
+"You feel very light" if "v" is > 0. Otherwise the player gets the
+message "You are suddenly heavier".
+
+#####GParameters:
+>v is the time until feather-fall expires (must be between 0 and
+ 10000).
+>v is the time until feather-fall expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_elec
+
+#####GDeclaration: bool set_oppose_elec(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_elec", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until electricity resistance expires. The player gets
+the message "You feel resistant to electricity" if "v" is > 0.
+Otherwise the player gets the message "You feel less resistant to
+electricity".
+
+#####GParameters:
+>v is the time until electricity resistance expires (must be between
+ 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_fire
+
+#####GDeclaration: bool set_oppose_fire(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_fire", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until fire resistance expires. The player gets the
+message "You feel resistant to fire" if "v" is > 0. Otherwise the
+player gets the message "You feel less resistant to fire".
+
+#####GParameters:
+>v is the time until fire resistance expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_cold
+
+#####GDeclaration: bool set_oppose_cold(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_cold", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until cold resistance expires. The player gets the
+message "You feel resistant to cold" if "v" is > 0. Otherwise the
+player gets the message "You feel less resistant to cold".
+
+#####GParameters:
+>v is the time until cold resistance expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_pois
+
+#####GDeclaration: bool set_oppose_pois(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_pois", notice observable changes
+*/
+
+#####GDescription:
+Set time "v" until poison resistance expires. The player gets the
+message "You feel resistant to poison" if "v" is > 0. Otherwise the
+player gets the message "You feel less resistant to poison".
+
+#####GParameters:
+>v is the time until poison resistance expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_ld
+
+#####GDeclaration: bool set_oppose_ld(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_ld"
+*/
+
+#####GDescription:
+Set time "v" until light and dark resistance expires. The player gets
+the message "You feel protected against the light's fluctuation" if
+"v" is > 0. Otherwise the player gets the message "You are no longer
+protected against the light's fluctuation".
+
+#####GParameters:
+>v is the time until light and dark resistance expires (must be
+ between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_cc
+
+#####GDeclaration: bool set_oppose_cc(int v);
+
+#####GFile: xtra2.c
+/*
+* Set "p_ptr->oppose_cc"
+*/
+
+#####GComment:
+
+#####GDescription:
+Set time "v" until chaos resistance expires. The player gets the
+message "You feel protected against raw chaos" if "v" is > 0.
+Otherwise the player gets the message "You are no longer protected
+against chaos".
+
+#####GParameters:
+>v is the time until chaos resistance expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_ss
+
+#####GDeclaration: bool set_oppose_ss(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_ss"
+*/
+
+#####GDescription:
+Set time "v" until sound and shard resistance expires. The player gets
+the message "You feel protected against the ravages of sound and
+shards" if "v" is > 0. Otherwise the player gets the message "You are
+no longer protected against the ravages of sound and shards".
+
+#####GParameters:
+>v is the time until sound and shard resistance expires (must be
+ between 0 and 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_oppose_nex
+
+#####GDeclaration: bool set_oppose_nex(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->oppose_nex"
+*/
+
+#####GDescription:
+Set time "v" until nexus resistance expires. The player gets the
+message "You feel protected against the strange forces of nexus" if
+"v" is > 0. Otherwise the player gets the message "You are no longer
+protected against the strange forces of nexus".
+
+#####GParameters:
+>v is the time until nexus resistance expires (must be between 0 and
+ 10000).
+
+----------------------------------------------------------------------
+
+#####RFunction: set_stun
+
+#####GDeclaration: bool set_stun(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->stun", notice observable changes
+*
+* Note the special code to only notice "range" changes.
+*/
+
+#####GDescription:
+Set stun level "v". If the player race can't be stunned then the level
+is forced to 0. A value > 100 means the player is knocked out. A value
+>50 is a heavy stun. A value > 0 is a stun. If the stun level has
+increased, a message is printed. There is a small chance of stun level
+in 1000, or a 1 in 16 chance of a vicious blow which decreases
+intelligence and/or wisdom for a while.
+
+#####GParameters:
+>v is the stun level.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_cut
+
+#####GDeclaration: bool set_cut(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->cut", notice observable changes
+*
+* Note the special code to only notice "range" changes.
+*/
+
+#####GDescription:
+Set cut level "v". If the player race can't be cut then the time is
+forced to 0. A value > 1000 is a mortal wound. A value > 200 is a deep
+gash. A value > 100 is a severe cut. A value > 50 is a nasty cut. A
+value > 25 is a bad cut. A value > 10 is a light cut. A value > 0 is a
+graze. If the cut level has increased, a message is printed. There is
+a small chance of stun level in 1000, or a 1 in 16 chance of scarring
+which decreases charisma for a while.
+
+#####GParameters:
+>v is the cut level.
+
+----------------------------------------------------------------------
+
+#####RFunction: set_food
+
+#####GDeclaration: bool set_food(int v);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Set "p_ptr->food", notice observable changes
+*
+* The "p_ptr->food" variable can get as large as 20000, allowing the
+* addition of the most "filling" item, Elvish Waybread, which adds
+* 7500 food units, without overflowing the 32767 maximum limit.
+*
+* Perhaps we should disturb the player with various messages,
+* especially messages about hunger status changes. XXX XXX XXX
+*
+* Digestion of food is handled in "dungeon.c", in which, normally,
+* the player digests about 20 food units per 100 game turns, more
+* when "fast", more when "regenerating", less with "slow digestion",
+* but when the player is "gorged", he digests 100 food units per 10
+* game turns, or a full 1000 food units per 100 game turns.
+*
+* Note that the player's speed is reduced by 10 units while gorged,
+* so if the player eats a single food ration (5000 food units) when
+* full (15000 food units), he will be gorged for (5000/100)*10 = 500
+* game turns, or 500/(100/5) = 25 player turns (if nothing else is
+* affecting the player speed).
+*/
+
+#####GDescription:
+Set hunger level "v". A value < 500 is fainting. A value < 1000 is
+weak. A value < 2000 is weak. A value < 10000 is full. A value
+< 15000 is bloated. A value < 20000 is gorged. If one of these
+levels is crossed a message is printed.
+
+#####GParameters:
+>v is the hunger level (must be between 0 and 20000).
+
+----------------------------------------------------------------------
+
+#####RFunction: check_experience
+
+#####GDeclaration: void check_experience(void);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Advance experience levels and print experience
+*/
+
+#####GDescription:
+Check if player experience level has changed. If a player has achieved
+a level for the first time, give reward or corruption (1 chance in 3)
+if they apply, and increase skill points.
+
+----------------------------------------------------------------------
+
+#####RFunction: check_experience_obj
+
+#####GDeclaration: void check_experience_obj(object_type *o_ptr);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Advance experience levels and print experience
+*/
+
+#####GDescription:
+Check if object "o_ptr" experience level has changed. If an object has
+achieved a level for the first time, apply gains.
+
+#####GParameters:
+>o_ptr is the pointer to the object gaining experience.
+
+----------------------------------------------------------------------
+
+#####RFunction: gain_exp
+
+#####GDeclaration: void gain_exp(s32b amount);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Gain experience (share it to objects if needed)
+*/
+
+#####GDescription:
+Gain "amount" of experience. Count the number of objects which will
+gain experience. The objects share equally 2/3 of "amount". Give
+corruption if it applies. Gain experience. If experience is less
+than maximum, then increase maximum experience by 20% of "amount".
+Check for level change and print experience (check_experience).
+
+#####GParameters:
+>amount is the amount of experience to share.
+
+----------------------------------------------------------------------
+
+#####RFunction: lose_exp
+
+#####GDeclaration: void lose_exp(s32b amount);
+
+#####GFile: xtra2.c
+
+#####GComment:
+/*
+* Lose experience
+*/
+
+#####GDescription:
+Decrease experience by "amount". Experience can not fall below zero.
+Check for level change and print experience (check_experience).
+
+#####GParameters:
+>amount is the amount of experience to lose.
+
+----------------------------------------------------------------------
+
+
+Back to the *****lua.hlp*0[lua help index] .
+
+
+ [[[[[gThis file by Chris Hadgis]
+
+
diff --git a/lib/help/lua_pow.txt b/lib/help/lua_pow.txt
new file mode 100644
index 00000000..c221a664
--- /dev/null
+++ b/lib/help/lua_pow.txt
@@ -0,0 +1,266 @@
+|||||oy
+#####R /----------------------------------------\
+#####R < Adding new racial powers >
+#####R \----------------------------------------/
+
+#####R=== Introduction ===
+
+You *must* download and install my lua example files from
+[[[[[Ghttp://www.moppy.co.uk/angband.htm]. And also you should read the
+*****lua_intr.txt*0[scripting introduction] file if you haven't already done
+so.
+
+The (commented) accompanying script file for this tutorial is
+lib\scpt\pheonix.lua. Open it in your text editor!
+
+#####R=== The Racial Power ===
+
+Let's start with something simple. Let's say you wanted your new race (let's
+call it "Pheonix") to be able to cast fire balls as their racial power.
+
+#####R=== Starting off ===
+
+If you have a look at pheonix.lua you'll note the first lines are comments.
+I'll talk a bit more about comments later, but it's worth pointing out that any
+lines of text preceded by a double hyphen ([[[[[B--]) will be ignored by the
+scripting engine, and are therefore comments.
+After the comments, the first 10 lines of code are as follows:
+
+#####BPHEONIX_POWER = add_power
+#####B{
+#####B ["name"] = "Fire Breath",
+#####B ["desc"] = "You are able to cast fireballs",
+#####B ["desc_get"] = "Your beak glows red",
+#####B ["desc_lose"] = "Your beak goes cold again",
+#####B ["level"] = 10,
+#####B ["cost"] = 11,
+#####B ["stat"] = A_INT,
+#####B ["fail"] = 14,
+
+So, [[[[[BPHEONIX_POWER = add_power] is registering our power. We're giving it
+a name (PHEONIX_POWER) and saying that it is defined by calling the special
+function [[[[[Badd_power]. This special function is only used to define lua-
+scripted
+powers, and has attributes which are identified by their inclusion in square
+brackets.
+Note the following:
+- Lua is case sensitive. The name of our power is a constant, will never change
+so that's been named with capitals. variables and functions are named all in
+lower case. Technically speaking, Lua does not support constants, but we can
+emulate them by variables in this way. They don't have to be capitalised, but
+if you capitalise all your constants, it makes things easier to read, and
+you'll be following normal programming protocol.
+- There are no spaces in the name of the power. Use an underscore for spaces
+if you need to improve legibility.
+
+[[[[[B"name" = "Fire Breath",] This is the name of the power as it is
+displayed in the
+U menu, and as you will define it in p_info.txt (more about that later).
+
+[[[[[B"desc" = "You are able to cast fireballs",] This is what would
+appear in the
+information display list if you drank a potion of self knowledge or
+similar.
+
+[[[[[B"desc_get" = "Your beak glows red",] This is the information displayed
+when you
+gain this power.
+
+[[[[[B"desc_lose" = "Your beak goes cold again",] This is the information
+displayed when
+you lose this power. Eg After a mutation/corruption.
+
+[[[[[B"level" = 10,] Character level which must be gained in order to use
+power,
+
+[[[[[B"cost" = 11,] Amount of mana to cast this power.
+
+[[[[[B"stat" = A_INT,] stat which will define whether it works or not,
+
+[[[[[B"fail" = 14,] how high that stat must be.
+
+So our Pheonix will be able to cast PHEONIX_POWER from clvl 10, at a cost of
+11 mana, providing that the player's intelligence is 14 and upwards.
+
+#####R=== The function ===
+
+The next section is a lot longer, so we'll look at it line by line. I'll
+strip the comments for the purpose of this helpfile.
+
+#####B["power"] = function()
+#####B local ret, dir, damage
+#####B ret, dir = get_aim_dir();
+#####B if (ret == FALSE) then
+#####B return
+#####B end
+#####B damage = player.lev*3
+#####B msg_print("You breathe fire.")
+#####B fire_ball(GF_FIRE, dir, damage, 3)
+#####Bend,
+
+The [[[[[B"power"] bit is what actually happens when the player accesses this
+power
+from their 'U' menu. Every function must start with the word [[[[[Bfunction].
+Normally, we'd also declare its name at this point, but as this is contained
+within the [[[[[Badd_power] function, we just use the word [[[[[Bfunction] The
+empty
+brackets after this denote that no arguments are passed to the function.
+Lets look at the next line.
+
+#####B local ret, dir, damage
+
+The [[[[[Blocal] bit is saying that we're going to declare some local
+variables. That
+is, that there will be three variables used in this function , that apply
+exclusively to this function, and to no others. Global variables are
+variables that apply to the whole script, in multiple functions. The three
+variables will be called [[[[[Bret] (return), [[[[[Bdir] (direction), and
+[[[[[Bdamage]. They will be used to determine the direction the ball
+will fire in, and how much damage it will do. We'll see them in use when we add
+the third line:
+
+#####B ret, dir = get_aim_dir();
+
+here we're saying that the variables will take their value from the result
+of a function. The program performs the function [[[[[Bget_aim_dir] which
+essentially asks the player to choose a direction or pick a target.
+[[[[[Bget_aim_dir]
+assigns the value [[[[[Bret] to either TRUE (if the player correctly selected a
+direction) or FALSE (if the player failed to do so (maybe they changed their
+mind, or hit the wrong key!)). The value [[[[[Bdir] is the direction which was
+selected (or the path to the target if a target was selected). OK so let's add
+the next line:
+
+#####B if (ret == FALSE) then return end
+
+This introduces another fundamental scripting concept - [[[[[Bif] statements.
+They work just as you would expect them too. You say "if a certain condition is
+met, then do the following things."
+So in this function we're saying, "if the value of [[[[[Bret] is FALSE then
+[[[[[Breturn]."
+As I mentioned above, [[[[[Bret] is false if the player aborted (either
+deliberately or accidentally) the spell casting whilst choosing a direction
+for the spell. The double equals sign are used to mean "is equal to" as a
+single equals sign is used for defining variables remember? A single equals
+sign is more of a "let x be equal to y" thing.
+[[[[[Breturn] means stop the current function. And [[[[[Bend] signifies the
+close of the [[[[[Bif]
+statement. Every [[[[[Bif] statement must begin with an [[[[[Bif] and finish
+with an [[[[[Bend].
+So, what our [[[[[Bif] statement is saying is; "if the player failed to specify
+a direction or target for the spell, stop the function here."
+If the player has correctly specified a direction/target, the function
+continues to the next line:
+
+#####B damage = player.lev*3
+
+Here we're saying that the variable [[[[[Bdamage] has a value equal to the
+players current character level, multiplied by 3.
+
+#####B msg_print("You breathe fire.")
+
+Fairly easy to see what this does - displays the message "You breathe fire."
+I could have put anything there obviously, like [[[[[Bmsg_print("You open]
+[[[[[Byour mouth and everyone falls over with the smell of hot curry")] or
+some other such rubbish. But note that the message is enclosed within double
+quotes. The quotes aren't displayed in the message on screen, but signify the
+start and end of the message.
+
+#####B fire_ball(GF_FIRE, dir, damage, 3)
+
+This is the line that casts the spell. it says execute the function
+[[[[[Bfire_ball]. Now, this doesn't mean a fireball, it means fire a ball.
+There's an important distinction there! All it knows it is doing is firing a
+ball, it doesn't know what kind of ball, or where, or how big, or how much
+damage.
+The [[[[[BGF_FIRE,] bit is what tell us it is a fire ball. If it was
+[[[[[BGF_COLD,]
+ we'd have a cold ball, or [[[[[BGF_CHAOS,] it would be a chaos ball and
+so on and so on. A full list of those types can be found in *****lua_gf.txt*0[lua_gf.txt].
+[[[[[B dir,] is the direction, from the [[[[[Bget_aim_dir()] bit.
+[[[[[B damage,] is the damage. As we've already said, this will be clvl*3.
+[[[[[B 3)] is the radius.
+and finally...
+
+#####B end,
+#####B}
+
+[[[[[Bend,] tells it the function has ended. Every function must finish with
+[[[[[Bend].
+You should have spotted that after the end of each attribute is a comma. Make
+sure you include this, and don't forget the braces at the very very end to
+close the [[[[[Badd_power] function.
+
+#####R=== Finishing the LUA file ===
+
+Save this as a text file 'pheonix.lua' Put it into the lib\scrpt directory
+of ToME, and open the init.lua file which you'll find in the same
+directory.
+
+Add the following line and resave the init.lua file.
+
+#####Btome_dofile("pheonix.lua")
+
+This ensures that ToME loads your file on start-up. Because you've installed
+the example scripts, this has all been done for you.
+
+#####R=== A quick word about comments ===
+
+One of the reasons Angband has so many variants is because the source code is
+clearly commented. Almost every line of code has an accompanying comment,
+explaining what that line does. It's good practice to add comments to any code
+or script you write. It's helpful to others who are learning, anyone who takes
+over your project, and also to yourself when you come back in a month's time
+and can't remember what you did! So comment your code clearly, and well!
+
+You can also add multi line comments which should be enclosed by [[[[[B--[[]
+and
+#####B]]
+
+#####R=== Tying it all together ===
+
+You'll now need to link this 'U' power to the pheonix race via the
+p_info.txt file. Simply add a line within the class definition file that has
+the format [[[[[BR:Z:<name>]the name of the power as it appears in the
+[[[[[B"name"]
+section we did right at the beginning, remember? Seeing as there is no pheonix
+race, I've gone ahead and made one up as a demonstration. If you've downloaded
+and installed the example files from [[[[[Ghttp://www.moppy.co.uk/angband.htm/]
+then
+you'll notice you already have the pheonix race available. Printed below is
+the p_info.txt entry for it.
+
+
+#####BR:N:23:Pheonix
+#####BR:D:Born from flame, these powerful bird like creatures gain fire related
+#####BR:D:abilities as they grow.
+#####BR:S:1:0:2:1:-3:2:-5
+#####BR:K:-8:15:20:-10:5:-1:-5:-5
+#####BR:P:8:130:5:210
+#####BR:M:255:70:2:1:20:5:2:1:18:3
+#####BR:E:1:1:1:2:1:1
+#####BR:C:Warrior | Mage | Priest | Rogue | Ranger | Paladin | Blade |
+#####BR:C:Warlock | Chaos-Warrior | Monk | Mindcrafter | High-Mage |
+#####BR:C:BeastMaster | Alchemist | Power-Mage | Runecrafter |
+#####BR:C:Sorceror | Archer | Illusionist | Druid | Necromancer | Black-Knight
+|
+#####BR:C:Daemonologist | Weaponmaster | Summoner |
+#####BR:Z:Fire Ball
+#####BR:R:1:0
+#####BR:F:RES_FIRE | FEATHER |
+
+Note the [[[[[BR:Z:] line.
+
+If all is well, you should be able to start ToME now and breathe fire! Once
+you get to lvl 10 anyhow. Don't forget, this is the kind of thing wizard mode
+was invented for! Ctrl-A and confirm at the prompt, and then 'e' will allow
+you to alter stats, including experience. Approx 1000 exp should do to get you
+to clvl 10.
+
+Ready for more? How about adding a new *****lua_skil.txt*0[skill] ?
+
+ [[[[[gThis file by fearoffours (fearoffours@moppy.co.uk)]
+
+
+
+
diff --git a/lib/help/lua_ques.txt b/lib/help/lua_ques.txt
new file mode 100644
index 00000000..1d4b9c65
--- /dev/null
+++ b/lib/help/lua_ques.txt
@@ -0,0 +1,299 @@
+|||||oy
+#####R /----------------------------------------\
+#####R < Adding a new quest >
+#####R \----------------------------------------/
+
+#####R=== Introduction ===
+
+Adding a quest involves a bit more work, and there is, in some ways, rather
+more potential for things to go wrong! But it's a great way of showing just
+WHAT can be done with lua scripting. It proves just how much a lua patch can
+change the overall feel of the game. And it will give you a much better idea of
+how lua interfaces with the game source. You should have read the
+*****lua_intr.txt*0[scripting introduction], *****lua_pow.txt*0[racial power tutorial]
+and *****lua_skil.txt*0[adding new skills tutorial] before going much
+further. All of the above files contain some fairly fundamental information
+which you will find necessary for full understanding of this file.
+
+The script we're looking at is going to create a quest entrance in the middle
+of Bree. Entering the quest you see a little girl who has had her necklace
+stolen. Your job is to travel down a corridor, killing some monsters on the
+way, pick up the amulet and return it to the girl. Once done, she'll reveal the
+stairs back to Bree, and give you a (randomly generated) ring. If you feel the
+monsters are too hard, the only thing to do is talk to the little girl who will
+reveal the stairs again, failing the quest for you, and also block off the
+entrance to the amulet so that you can't cheat and make off with the amulet!
+
+#####R=== Getting started ===
+
+Open amulet.lua (you have downloaded the example scripts from
+[[[[[Ghttp://www.moppy.co.uk/angband.htm], haven't you?). The first thing you
+should see is that yet again we're calling a function that takes its arguments
+from a table, making it easy to read what's going on in the script.
+
+This time our function is add_quest and we have the following keys and values:
+
+#####B["global"] = "AMULET_QUEST",
+#####B["name"] = "Hannahs lost amulet",
+#####B["desc"] = {
+#####B "Retrieve an amulet for Hannah Cooke. It's guarded!"
+#####B },
+#####B["level"] = 5,
+#####B["hooks"] = {
+
+[[[[[B"global" = ] is a constant that we set when we refer to this quest in
+various places...
+[[[[[B"name" = ] Obviously a long name for the quest. This will appear in the
+quest screen (Ctrl-Q) and we may use in some map files too.
+[[[[[B"desc" = ] This is a long description for the quest. Again this is what
+will appear in the quest screen, and each line should be not more than 80
+characters.
+[[[[[B"level" = ] This is a rough indicator of how hard the quest is, and again,
+appears in the quest screen
+[[[[[B"hooks" = ] This is the real 'meat' of the quest. Like the [[[[[B"spell_list"] key
+in the [[[[[Badd_magic] function, this is another sub-table.
+
+To understand fully the structure of the "hooks" key it's worth taking a bit of
+a detour at this point and discussing how the scripting interface works in
+general.
+
+#####R=== How the scripts work (ish) ===
+
+Essentially there's a list of events that happen in the game. As each of these
+events happen they run a check to see if there's any functions that they need
+to run at that event. When we ran the add_mkey part of adding a new skill
+power, we essentially said "when the 'm' key is pressed in the game, perform
+the [[[[[Bexecute_magic(constructor_powers)] function". Likewise we did a similar
+thing with adding the racial power, only we hooked onto the pressing of the
+'U' key.
+
+All of this was partly hidden because of the way that the [[[[[Badd_magic] and
+[[[[[Badd_power] functions work. But here in the [[[[[Badd_quest] function it's a bit more
+specific. We are going to specify what events we're going to hook onto, and
+what functions we want to trigger at that event.
+
+A full list of hooks can be found in the source-file util.pkg.
+
+#####R=== The hooks ===
+
+#####B[HOOK_BIRTH_OBJECTS] = function()
+#####B quest(AMULET_QUEST).status = QUEST_STATUS_TAKEN
+#####Bend,
+
+So here we are with our first hook. We've declared that we're adding it to the
+birth of your character. That is, the function will be called when you create
+your character. And what we're doing here is automatically declaring the quest
+as being taken, like the Dol Guldur quest is. Each quest has 7 different
+statuses:
+
+[[[[[BQUEST_STATUS_IGNORED -1 ] This is unused, but the quest is
+ignored (will not be taken and has not been taken).
+[[[[[BQUEST_STATUS_UNTAKEN 0 ] The quest has not been accepted yet
+[[[[[BQUEST_STATUS_TAKEN 1 ] You have accepted the quest
+[[[[[BQUEST_STATUS_COMPLETED 2 ] You have completed the quest
+successfully but not been rewarded for it
+[[[[[BQUEST_STATUS_REWARDED 3 ] You've completed and rewarded the quest
+[[[[[BQUEST_STATUS_FAILED 4 ] You've failed the quest
+[[[[[BQUEST_STATUS_FINISHED 5 ] The quest is completely finished
+successfully.
+[[[[[BQUEST_STATUS_FAILED_DONE 6 ] The quest is completely finished
+unsuccessfully.
+
+You see that we've used the constant we defined in the "global" section is
+passed as an argument to [[[[[Bquest.status].
+
+Next hook then:
+
+#####B[HOOK_GEN_QUEST] = function()
+#####B if (player.inside_quest ~= AMULET_QUEST) then
+#####B return FALSE
+#####B else
+#####B load_map("amulet.map", 2, 2)
+#####B return TRUE
+#####B end
+#####Bend,
+
+Ok, we're hooking onto the generation of the quest here. This is specifically
+triggered in this instance by going down the quest entrance stairs in Bree.
+Once you've gone down the stairs, you are technically inside the quest, which
+means we can say if the person is not inside the amulet quest, then ignore this
+function, otherwise load the file 'amulet.map' at co-ordinates x=2 y=2. You'll
+find the amulet.map file in the edit directory, make sure you check it out. The
+syntax for map files is fairly simple, though I might get round to writing a
+tutorial on them some day! In the mean time holler for me at the usual email
+address if you're unsure.
+
+#####B[HOOK_FEELING] = function()
+#####B if (player.inside_quest ~= AMULET_QUEST) then
+#####B return FALSE
+#####B else
+#####B cmsg_print(TERM_L_BLUE, "Hannah speaks to you:")
+#####B cmsg_print(TERM_YELLOW, "'Some nasty monsters stole my
+#####B favourite necklace.'")
+#####B cmsg_print(TERM_YELLOW, "'It's hidden at the back of that
+#####B corridor! Please fetch it for me'")
+#####B return TRUE
+#####B end
+#####Bend,
+
+We're moving into some rather more obvious territory here, and getting into the
+meat of the quest. The [[[[[BHOOK_FEELING] is triggered at the point when the level
+feeling appears. It's important that this is run only if the player is inside
+the amulet quest, as otherwise it will trigger EVERY time a level feeling
+occurs, when you go down a level in the barrow-downs, whenever! Returning TRUE
+will replace the level feeling with what's above, returning FALSE will still
+perform the function but will amend the normal level feeling - so here if we'd
+returned false we'd still get our custom messages, but they'd follow with
+'looks like a typical quest level'. Of course returning false may cause you
+other problems (see end of this file!) depending on what else you have in your
+function.
+
+#####B[HOOK_GIVE] = function(m_idx, item)
+
+#####B m_ptr = monster(m_idx)
+#####B o_ptr = get_object(item)
+
+#####B if (m_ptr.r_idx == test_monster_name("Hannah Cooke, a little girl"))
+#####B and (o_ptr.tval == TV_AMULET) and (o_ptr.sval == 2) then
+
+#####B cmsg_print(TERM_YELLOW, "'Thank-you!'")
+
+#####B inven_item_increase(item, -1)
+#####B inven_item_optimize(item)
+
+#####B quest(AMULET_QUEST).status = QUEST_STATUS_COMPLETED
+
+#####B cave_set_feat(7, 6, 6)
+
+#####B cmsg_print(TERM_YELLOW, "'Here, take this pretty ring I found
+#####B as a token of gratitude!'")
+#####B random_type = randint(57)
+#####B reward = create_object(TV_RING, random_type)
+#####B drop_near(reward, -1, py, px)
+#####B quest(AMULET_QUEST).status = QUEST_STATUS_REWARDED
+#####B return TRUE
+#####B else
+#####B return FALSE
+#####B end
+#####Bend,
+
+This is a fairly long function, but don't be intimidated. It's not really
+difficult to understand. As you can see we're hooking into the giving of an
+object to a monster (the 'y' key). Because of this, the function takes two
+arguments - [[[[[Bm_idx] (the monster that you're giving to) and [[[[[Bitem] (the item that
+you're giving).
+
+We then make it possible to work with the monster and item variables by
+referencing them to two functions which identify them from the edit files:
+[[[[[Bmonster()] and [[[[[Bget_object()]. This enables us to now say, 'if the name of the
+monster is "Hannah Cooke, a little girl" and the type of item is an amulet and
+that amulet is an amulet of adornment, then carry out the following commands'.
+
+We then say call the function [[[[[Binven_item_increase()] which places an object in
+the inventory. It takes two arguments, the first being what object to put in
+the inventory and the second being how many of that type of objects to put in
+the inventory. You can see that by placing -1 as the second argument it fairly
+obviously subtracts that item from the inventory. The [[[[[Binven_item_optimize()]
+function checks that there are no empty inventory slots, and if there are,
+erases them.
+
+The quest is then completed, and the stairs are revealed using the
+[[[[[Bcave_set_feat()] function. This function takes three arguments, the first is the
+x co-ordinate of the cave square you wish to change (counted from top left) the
+second is the y co-ordinate, and the third is the index number of the feature
+you wish the square to become as defined in f_info.txt.
+
+We then set about rewarding the player. As you can see we call [[[[[Bcreate_object()]
+which takes two variables: the first is the type of object (these are all
+listed in object.pkg) and the second is the sub-type of that object. I searched
+k_info.txt to see how many different types of ring there were (57) and used a
+randomly selected number with a maximum value of 57 as that specific sub-type.
+
+We then drop the object (although it's been created, it has only been created
+in the game's memory, it's nowhere that the player can interact with it until
+we drop it). The [[[[[Bdrop_near()] function takes 3 variables, the first being the
+object that you wish to drop, the second being the chance that it disappears
+(like an arrow, or mimicked creature) on drop. If you set it to -1, it won't
+ever disappear. The last two are the co-ordinates at which the object will be
+dropped. py and px are the global variables defined by where the player is
+standing, so in this case it will drop under the player. You could do
+[[[[[Binven_item_increase(reward, 1)] if you wanted, but I wanted to show a variety of
+ways of handling objects.
+
+OK, let's take a look at the next hook:
+
+#####B[HOOK_CHAT] = function(m_idx)
+#####B m_ptr = monster(m_idx)
+#####B if (m_ptr.r_idx == test_monster_name("Hannah Cooke, a little girl")) then
+#####B if (quest(AMULET_QUEST).status == QUEST_STATUS_REWARDED) then
+#####B cmsg_print(TERM_YELLOW, "'Bye!'")
+#####B else
+#####B cmsg_print(TERM_YELLOW, "'Are the monsters too tough?
+#####B Do you want to leave?'")
+#####B if (get_check("Really leave and fail the quest?") ==
+#####B FALSE)
+#####B then
+#####B cmsg_print(TERM_YELLOW, "'Go and get my
+#####B amulet then!'")
+#####B else
+#####B cmsg_print(TERM_YELLOW, "'Awww. Never
+#####B mind. It was only a bit of rabbits foot'")
+#####B quest(AMULET_QUEST).status =
+#####B QUEST_STATUS_FAILED
+#####B cave_set_feat(7, 6, 6)
+#####B cave_set_feat(12, 5, 60)
+#####B end
+#####B end
+#####B return TRUE
+#####B end
+#####B return FALSE
+#####Bend,
+
+This only looks complicated because of the nested 'if' statements. It's easy to
+lose your way when doing this kind of thing, always make sure you close all the
+statements and put the returns in the right place. [[[[[BHOOK_CHAT] functions have one
+argument - the monster you are chatting to. As you can see, we perform a check
+to make sure it's the right monster and then away we go.... If the player wants
+to leave the quest without completion they talk to Hannah, who gives them a
+chance to change their mind! If the player asks to leave the entrance to the
+corridor is blocked off (the second cave_set_feat()) so that the user can't
+then go and get the amulet. Gumband or Zangband players may at this point think
+they've lost out on the rabbits foot of burglary! (they haven't though as it
+doesn't exist in ToME).
+
+#####B[HOOK_CHAR_DUMP] = function()
+#####B if (quest(AMULET_QUEST).status == QUEST_STATUS_FAILED) then
+#####B print_hook("\n You chickened out of rescuing a necklace and
+#####B made a little girl sad. ")
+#####B elseif (quest(AMULET_QUEST).status == QUEST_STATUS_COMPLETED) or
+#####B (quest(AMULET_QUEST).status == QUEST_STATUS_REWARDED) or
+#####B (quest(AMULET_QUEST).status == QUEST_STATUS_FINISHED) then
+#####B print_hook("\n You rescued little Hannah Cooke's necklace from
+#####B the nasty monsters ")
+#####B end
+#####B return FALSE
+#####Bend,
+
+This quite simply and obviously prints an appropriate line in the character
+dump based on the status of the quest. The [[[[[B\n] bit ensures the text goes on a
+new line, so make sure you include it! Also you should return FALSE as
+returning TRUE will stop executing all the other character dump lines (and you
+may get other quests not having their lines printed).
+
+=== A word about returning TRUE and FALSE ===
+
+As I mentioned above, you need to be careful what you return when dealing with
+HOOKS as you can mess up the game a bit. Bear in mind that if you add a
+function to [[[[[BHOOK_GEN_QUEST], every time a quest is generated, that function will
+run. If you return TRUE, then no further functions attached to that hook will
+run. If you return FALSE, it continues processing functions on that hook.
+
+That is pretty much it. Do take a look at the other included scripts that I
+haven't gone into any detail about in the files, as you'll pick up some useful
+techniques there too. Especially worthy of note is the hina.lua file which uses
+hooks outside of the quest structure and also global variables and variables in
+a table. If you have any questions, let me know at the email addy below.
+
+Back to the *****lua.hlp*0[lua help index] .
+
+ [[[[[gThis file by fearoffours (fearoffours@moppy.co.uk)]
diff --git a/lib/help/lua_skil.txt b/lib/help/lua_skil.txt
new file mode 100644
index 00000000..87385e5d
--- /dev/null
+++ b/lib/help/lua_skil.txt
@@ -0,0 +1,342 @@
+|||||oy
+#####R /----------------------------------------\
+#####R < Adding new skill-based powers >
+#####R \----------------------------------------/
+
+#####R=== Introduction ===
+
+This is very much in the same vein as adding a racial/extra power, but has to
+be tied into skills, and we're defining more than one spell at once. You should
+have read the *****lua_intr.txt*0[scripting introduction] and
+*****lua_pow.txt*0[racial power tutorial] before going much further. Both of the above files
+contain some fairly fundamental information which you will find necessary for
+full understanding of this file.
+
+#####R=== Getting started ===
+
+Open construc.lua (you have downloaded the example scripts from
+[[[[[Ghttp://www.moppy.co.uk/angband.htm], haven't you?). The idea behind this
+script is that it adds a skill which affects you ability to build/knock down
+stuff. It treats the equivalent of stone-to-mud and trap-door destruction
+spells as if they were "building skills". It also adds quite a few high-level
+'spells' which do funky things like carving out corridors and chambers in a
+single turn, and building doors and stuff. Just think of it as if the person
+who has plenty of skills in this area would be a builder-type with lots of
+strength and constitution...
+
+In order to add these powers we're going to edit the s_info.txt file which
+lives in the edit folder, and add a new skill, underneath the 'misc' tree,
+called construction. The powers will then be accessed through the 'm' menu, in
+a similar way to mindcraft or alchemy skills or such. (That is, no books are
+needed to cast them, as we're treating them as a craft that has been learnt,
+rather than spells.) Our fist line of the script file reads:
+
+#####BSKILL_CONSTRUCT = 57
+
+This merely links the skill index that we'll be defining in s_info.txt to this
+file. We'll come back to this at the end of the tutorial.
+
+#####Bconstructor_powers = add_magic
+
+In a similar way to the [[[[[Badd_power] function we called when we added the
+Phoenix racial ability, this line calls a special function which we use to
+define new skills. It follows a very specific, but easy to understand form. It
+starts with a brace, which indicates the add_magic function will be storing
+these values in a table. Don't worry about this too much, but understand that a
+table starts and ends with braces [[[[[B{] and [[[[[B}] respectively. Each key
+(or field name) takes the format [[[[[B"key" = value,] (the comma is
+important!).
+
+#####B ["fail"] = function()
+#####B msg_print("You decide now is a good time for a cuppa")
+#####B end,
+#####B ["stat"] = A_STR,
+#####B ["get_level"] = function()
+#####B return get_skill_scale(SKILL_CONSTRUCT, 50)
+#####B end,
+#####B ["spell_list"] =
+
+[[[[[B"fail"] is a function that is called whenever you ##fail to cast the
+spells##. Here it does nothing spectacular.
+[[[[[B"stat"] defines the stat used to cast the spells. Here it is strength.
+Any other stat can be used, prefix it with [[[[[BA_].
+[[[[[B"get_level"] is used to determine the level of the spell. It's associated
+with spells that increase in power the more points that are invested in the
+associated skill. I know that's not terribly clear, I'll come back to it in a
+moment.
+[[[[[B"spell_list"] is just that, a list of all the spells.
+Each of these four properties within the table must end with a comma. If a
+function is defined in the property itself then we add the comma after the
+closing [[[[[Bend]. Again compare with construct.lua to see it. Any line NOT
+ending with a comma will cause a lua error on startup, probably of the type
+[[[[[V'}' expected to close '{' at line <whatever>.]
+
+#####R=== The spell list ===
+
+Each spell, within the [[[[[B"spell_list"] key has its own set of properties
+that we need to define from a sub-table so we open another set of braces to
+start the spell list, and then a third set of braces to start the first spell.
+So with all this, our first spell looks like:
+
+#####B ["spell_list"] =
+#####B {
+#####B {
+#####B ["name"] =
+#####B ["desc"] =
+#####B ["mana"] =
+#####B ["level"] =
+#####B ["fail"] =
+#####B ["spell"] =
+#####B ["info"] =
+#####B },
+
+[[[[[B"name"] is, as you would expect, the name of the spell, as you want it to
+appear in the spell list when choosing a spell. The maximum number of
+characters for this is 29.
+[[[[[B"desc"] is the description received when you hit the capital letter of
+that spell in the menu. (i.e., press 'a' to cast the first spell, but press 'A'
+to receive info about the first spell.
+[[[[[B"mana"] is the amount of mana required to cast the spell.
+[[[[[B"level"] is the level required to use that spell (that's level of the (in
+this case construction) skill, not character level!).
+[[[[[B"fail"] is base fail rate.
+[[[[[B"spell"] is the function that is executed when the spell is cast. Note
+that it MUST take the form [[[[[Bfunction() blah end] even if you're calling
+a C function directly. If you have a look at the end of the file, you'll see
+the "rebuild dungeon" spell which is identical to the "alter_reality" spell.
+However, rather than reading [[[[[B"spell" = alter_reality()], it reads:
+
+#####B["spell"] = function()
+#####B alter_reality()
+#####Bend,
+
+which appears to be a long way round to do the same thing, but this is how it
+must be done.
+
+In a similar way, the [[[[[B"info"] key must begin with a [[[[[Bfunction()]
+and return the value of what is to be displayed alongside the spell name,
+level and mana in the spell list. The maximum number of characters that can be
+displayed here is dependent on the width of the user's screen, but try to keep
+it under 12 if you can, as this will fit in a standard 80x24 terminal screen.
+The first character will need to be a space otherwise you'll have the info line
+squashed right up against the fail rate and it will look odd. If you wish to
+have this part blank in the spell list, you still need to return a value, so
+just a single space will do : [[[[[Breturn " "]
+
+All of these keys are repeated for each spell, with each spell in its own
+table (therefore, it's own set of braces). Again, check the lua file for
+clarification.
+
+When entering the spells in the "spell_list", you must take care to specify
+them in the order which they are gained, otherwise they display incorrectly in
+the spell list.
+
+You should by now be experienced enough to understand most of what's going on
+in the actual spell functions (especially if you dig around in the source a
+bit, and check out Chris Hadgis' excellent *****lua_spel.txt*0[spell.pkg] helper
+files. I'm not going to go through the whole file line by line, as this is
+something you should do yourself, figuring out what's going on. I'm going to
+examine a few of the things we haven't covered before though, so pay attention.
+
+#####R=== The get_level() function ===
+
+Probably one of the most important functions that you see reappearing in the
+file is the [[[[[Bget_level()] function. All this does is return the numerical
+value of the power that is given as the first argument. So [[[[[Bget_level]
+[[[[[B(constructor_power)] will return the current level of the constructor power.
+Given that the level of this is taken directly from the construction skill, (we
+defined that in the [[[[[B"get_level"] key, by saying [[[[[Bget_skill_scale]
+[[[[[B(SKILL_CONSTRUCT, 50)] ) it will return the value of your construction skill.
+[[[[[Bconstructor_power] is the name of the whole power, we named it thus on
+the second line of the script!
+
+[[[[[Bget_level] takes the following arguments: [[[[[Bget_level(power, max, ]
+[[[[[Bmin)]. The power is obviously which power we're taking the value from, and the
+max and min allow you to define boundaries for the spell. For instance the
+current maximum value that [[[[[Bget_level(constructor_power)] can return is
+50, as that is the maximum number of skill points you can have in that skill.
+If you were using this as the basis for the damage of a low-level bolt spell,
+you might decide that having a damage of 50 would be too much (unlikely, but
+still possible). You could therefore define a maximum value of 20 so that when
+the value of the construction skill was over 50, the maximum value for
+damage of that spell would be 20. To achieve this you'd have:
+[[[[[Bget_level(constructor_power, 20)]. In a similar way, you can force the
+minimum value of the spell to be higher than the actual construction skill
+level, with a [[[[[Bget_level(constructor_power, 50, 15)]. This would be useful
+say for spells that you wanted to be available when the construction skill
+level reaches 10, but for whom you wanted a (for example) base damage of 15
+right from the word go. These re-scale values rather than capping them!
+
+You can leave out the minimum value as I have done above. You can also leave
+the maximum value out (it will default to 50). If you want to specify a minimum
+value though, you MUST specify a maximum value as well.
+
+As you have hopefully been able to tell, the [[[[[Bget_level()] function
+enables us to have spells that increase in usefulness as you gain levels. Let's
+take the "Dismantle" spell. The function in the [[[[[B"spell"] key is as
+follows:
+
+#####Bfunction()
+#####B local ret, dir, dam
+
+#####B if (get_level(constructor_powers, 50) >= 11) then
+#####B ret, dir = get_aim_dir();
+#####B if (ret == FALSE) then return end
+#####B fire_beam(GF_KILL_TRAP, dir, 1)
+#####B else
+#####B fire_ball(GF_KILL_TRAP, 0, 1, 1)
+#####B end
+#####Bend,
+
+The [[[[[Bif] statement is obviously what really interests us here. You'll
+notice that this has the amendment of an [[[[[Belse] clause, which the [[[[[Bif]
+statement we used in the previous tutorial did not. As you would expect, if the
+condition on the first line of this statement is met, then the instructions
+immediately below it are carried out. If the condition is not met, then the
+statements that follow the [[[[[Belse] are executed.
+
+Coming back to the [[[[[Bget_level] function, we learnt from above, that the
+[[[[[Bget_level] part of this function translates as, "if the value of the
+construction_power level (which happens to be identical to the construction
+skill level) is greater than or equal to 11, cast a beam of trap disarming in
+the specified direction. (The first part of this is all straightforward,
+getting a direction, and cancelling correctly if the player presses 'ESC'.)
+Otherwise, cast a ball of trap disarming with a radius of one, centred on the
+player."
+
+In the same way, as you look at the construc.lua file, you will see that
+[[[[[Bget_level()] is used many times in this way, to increase the power of
+detection spells, to change bolt spells to ball spells, to keep a constantly
+increasing damage going, and so on.
+
+#####R=== Elseif's and things ===
+
+If you want to provide more than one alternative condition, in an
+[[[[[Bif-then-else] statement, you can use [[[[[Belseif]s which do what you
+might expect. Take a look at the first spell, "Survey area", for an example of
+this:
+
+#####Bif (get_level(constructor_powers, 50) >= 28) then
+#####B wiz_lite()
+#####Belseif (get_level(constructor_powers, 50) >= 15) then
+#####B map_area()
+#####B detect_traps(DEFAULT_RADIUS)
+#####Belseif (get_level(constructor_powers, 50) >= 5) then
+#####B detect_traps(DEFAULT_RADIUS)
+#####B detect_stairs(DEFAULT_RADIUS)
+#####B detect_doors(DEFAULT_RADIUS)
+#####Belse
+#####B detect_stairs(DEFAULT_RADIUS)
+#####B detect_doors(DEFAULT_RADIUS)
+#####Bend
+
+If the level of constructor powers is greater or equal to 28, then the function
+[[[[[Bwiz_lite()] is performed, and no other part of the if statement is
+executed. [[[[[Bwiz_lite()] is just the enlightenment spell. If it is less than
+28, the next condition is examined: that if the level of constructor powers is
+greater than or equal to 15, then [[[[[Bmap_area()](Magic mapping) and detect
+traps are called. If the level of constructor power is less than 15, it moves
+onto the next condition, which says that if the level of constructor power is
+greater than 5, then detect stairs, traps and doors. If none of these
+conditions are met,(that is, if the level of construction skill is less than 5)
+then we just detect doors and stairs.
+
+You'll note that each of the detection spells includes a DEFAULT_RADIUS
+constant. You could change this to a numerical value, or a variable defined
+somewhere else in your script. eg [[[[[Bdetect_traps(2)] would detect traps
+with a radius of 2 centred on the player.
+
+#####R=== Registering the skill type ===
+
+This is what we do at the end of the file, and is what ties the powers we've
+defined to the action of pressing the 'm' key in game. Once more we're calling
+a special function [[[[[Badd_mkey()] which takes its arguments for a table.
+There are only two keys in this table though which keeps things simple.
+
+#####Badd_mkey
+#####B{
+#####B ["mkey"] = MKEY_CONSTRUCT_POWERS,
+#####B ["fct"] = function()
+#####B execute_magic(constructor_powers)
+#####B energy_use = energy_use + 100;
+#####B end
+#####B}
+
+[[[[[B"mkey"] must be a UNIQUE value > 1000 . Here I've defined it as a
+constant, [[[[[BMKEY_CONSTRUCT_POWERS], which has the value 1004. This value
+we'll call again in the s_info.txt file.
+[[[[[B"fct"] is the function that's called when the user presses the key in the
+'m' menu. So here, it calls the [[[[[Bexecute_magic] function which actually
+displays a list of powers for the user to choose from. The argument it takes is
+the powers it will use (alchemy, mindcraft, etc., or in this case constructor),
+and then the [[[[[Benergy_use] line tells the game to take one game turn to do
+the action.
+
+#####R=== Adding the skill in s_info.txt ===
+
+Take a look in the s_info.txt file, under the Misc section. You'll see,
+
+#####BN:57:Construction
+#####BD:Ability to use constructor powers
+#####BD:Construction powers use strength
+#####BA:1004:Build or knock down stuff
+#####BI:1000
+
+The first line is the index of the skill; again this must be unique. The second
+property is the name of the skill. The [[[[[BD] lines are the lines displayed
+when the skill is highlighted in the skill screen.
+The first entry on the [[[[[BA] line is the value of the [[[[[B"mkey"] we
+defined in the [[[[[Badd_mkey] function in our script. The second entry is the
+display for selecting the construction power in the 'm' menu.
+The [[[[[BI] line is currently unused, but add a 1000 there anyway. That's what
+all the others have so when it's introduced, at least it will affect your
+powers identically to how it affects all the other powers.
+
+If you scroll to the very bottom of the file now, you'll see I've placed the
+skill at the bottom of the Misc branch of the skills tree. I then made a new
+class, constructor, which you can see in p_info.txt.
+
+That is all that is NEEDED when writing a script to add a skill - defining an
+mkey using add_mkey, and defining any powers that are called in the
+[[[[[B"fct"] (generally using [[[[[Badd_magic] ).
+
+And I've added the line
+
+#####Btome_dofile("construc.lua")
+
+in init.lua so the script is loaded on start-up!
+
+Below I'm going to talk in depth about a few other functions that you may find
+useful in your scripting.
+
+#####R=== fire_bolt() and fire_beam() ===
+
+In the last help file we looked at the routine for firing a ball -
+[[[[[Bfire_ball()]. Here's a quick note about beams and bolts...
+[[[[[Bfire_beam()] and [[[[[Bfire_bolt()] take 2 arguments:
+[[[[[B(type, direction, damage)]. So in the dismantle spell we have the
+direction passed from [[[[[Bget_aim_dir()] (the function that asks the player
+for a direction), the type of damage is [[[[[BGF_KILL_TRAP], which as you might
+expect disarms traps. And the damage is only 1 because it's not going to hurt
+monsters, just dismantle traps.
+
+#####R=== set_oppose_elec() ===
+
+OK here's another thing. Wander on down to the sparky_skills spell. After the
+appropriate bolt/ball is fired, we have the line:
+
+#####Bif player.oppose_elec == 0 then
+#####B set_oppose_elec(randint(10) + 20 + get_level(constructor_powers, 20)*3)
+#####Bend
+
+This is the bit that grants temporary resist electricity. We've called the
+function [[[[[Bset_oppose_elec(turns)], which sets the player's resist
+electricity to "on" for the time specified in the argument "turns". We're only
+calling this if the player is not already granted temporary resist electricity,
+and we've linked the number of turns it is active to the level of the
+construction skill. I've limited the maximum value of get_level to 20 in this
+instance. A similar idea can be used for temporarily granting levitation,
+extended infravision, protection against evil, resist fire, stuns, cuts and so
+on and so on. Have a look in player.pkg in the source for a full list....
+
+ [[[[[gThis file by fearoffours (fearoffours@moppy.co.uk)]
diff --git a/lib/help/lua_spel.txt b/lib/help/lua_spel.txt
new file mode 100644
index 00000000..aa4a532b
--- /dev/null
+++ b/lib/help/lua_spel.txt
@@ -0,0 +1,2150 @@
+|||||oy
+
+#####R /----------------------------------------\
+#####R < spell.pkg functions helper file >
+#####R \----------------------------------------/
+
+----------------------------------------------------------------------
+
+#####R=== teleport_player_directed ===
+
+#####GDeclaration
+ extern void teleport_player_directed(int rad, int dir);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport player, using a distance and a direction as a rough guide.
+ *
+ * This function is not at all obsessive about correctness.
+ * This function allows teleporting into vaults (!)
+ */
+
+#####GDescription
+Teleport a player up to "rad" grids away roughly in "dir" direction.
+
+#####GParameters
+> "rad" must not exceed 200. The distance teleported is a minimum of a
+ quarter of "rad".
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+
+----------------------------------------------------------------------
+
+#####R=== teleport_away ===
+
+#####GDeclaration
+ extern void teleport_away(int m_idx, int dis);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport a monster, normally up to "dis" grids away.
+ *
+ * Attempt to move the monster at least "dis/2" grids away.
+ *
+ * But allow variation to prevent infinite loops.
+ */
+
+#####GDescription
+Teleport monster indicated by "m_idx" up to "dis" grids away.
+
+#####GParameters
+> "m_idx" is the index of the monster in m_list[].
+> "dis" must not exceed 200. The distance teleported is a minimum of a
+ quarter of "dis".
+
+----------------------------------------------------------------------
+
+#####R=== teleport_player ===
+
+#####GDeclaration
+ extern void teleport_player(int dis);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport the player to a location up to "dis" grids away.
+ *
+ * If no such spaces are readily available, the distance may increase.
+ * Try very hard to move the player at least a quarter that distance.
+ */
+
+#####GDescription
+Teleport player up to "dis" grids away.
+
+#####GParameters
+> "dis" must not exceed 200. The distance teleported is a minimum of a
+ quarter of "dis".
+
+----------------------------------------------------------------------
+
+#####R=== teleport_player_to ===
+
+#####GDeclaration
+ extern void teleport_player_to(int ny, int nx);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport player to a grid near the given location
+ *
+ * This function is slightly obsessive about correctness.
+ * This function allows teleporting into vaults (!)
+ */
+
+#####GDescription
+Teleport player to a grid near the given location ("ny", "nx"). If
+the location is empty, the player goes there, otherwise they go to
+a grid as close as possible to the location.
+
+#####GParameters
+> "ny" is the y co-ordinate of the location.
+> "nx" is the x co-ordinate of the location.
+
+----------------------------------------------------------------------
+
+#####R=== teleport_monster_to ===
+
+#####GDeclaration
+ extern void teleport_monster_to(int m_idx, int ny,
+ int nx);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport a monster to a grid near the given location
+ *
+ * This function is slightly obsessive about correctness.
+ */
+
+#####GDescription
+Teleport monster indicated by "m_idx" to a grid near the given
+location ("ny", "nx"). If the location is empty, the monster goes
+there, otherwise they go to a grid as close as possible to the
+location.
+
+#####GParameters
+> "m_idx" is the index of the monster in m_list[].
+> "ny" is the y co-ordinate of the location.
+> "nx" is the x co-ordinate of the location.
+
+----------------------------------------------------------------------
+
+#####R=== teleport_player_level ===
+
+#####GDeclaration
+ extern void teleport_player_level(void);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Teleport the player one level up or down (random when legal)
+ */
+
+#####GDescription
+Teleport the player one level up or down at random.
+
+----------------------------------------------------------------------
+
+#####R=== recall_player ===
+
+#####GDeclaration
+ extern void recall_player(void);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Recall the player to town or dungeon
+ */
+
+#####GDescription
+Recall the player to town (if in dungeon) or dungeon (if in town).
+
+----------------------------------------------------------------------
+
+#####R=== take_hit ===
+
+#####GDeclaration
+ extern void take_hit(int damage, cptr kb_str);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Decreases players hit points and sets death flag if necessary
+ *
+ * XXX XXX XXX Invulnerability needs to be changed into a "shield"
+ *
+ * XXX XXX XXX Hack -- this function allows the user to save (or quit)
+ * the game when he dies, since the "You die." message is shown before
+ * setting the player to "dead".
+ */
+
+#####GDescription
+Reduce the player's current hit points by "damage" points. If the
+player dies, "kb_str" is used to record what the player was killed by
+(see high-score table).
+
+#####GParameters
+> "damage" is the amount of damage.
+> "kb_str" is a string describing what killed the player.
+
+----------------------------------------------------------------------
+
+#####R=== take_sanity_hit ===
+
+#####GDeclaration
+ extern void take_sanity_hit(int damage, cptr hit_from);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/* Decrease player's sanity. This is a copy of the function above. */
+
+#####GDescription
+Reduce the player's current sanity points by "damage" points. If the
+player dies, "hit_from" is used to record what the player was killed
+by (see high-score table).
+
+#####GParameters
+> "damage" is the amount of damage.
+> "hit_from" is a string describing what killed the player.
+
+----------------------------------------------------------------------
+
+#####R=== project ===
+
+#####GDeclaration
+ extern bool project(int who, int rad, int y, int x,
+ int dam, int typ, int flg);
+
+#####GFile
+ spells1.c
+
+#####GComment
+/*
+ * Generic "beam"/"bolt"/"ball" projection routine.
+ *
+ * Input:
+ * who: Index of "source" monster (negative for "player")
+ * jk -- -2 for traps, only used with project_jump
+ * rad: Radius of explosion (0 = beam/bolt, 1 to 9 = ball)
+ * y,x: Target location (or location to travel "towards")
+ * dam: Base damage roll to apply to affected monsters (or player)
+ * typ: Type of damage to apply to monsters (and objects)
+ * flg: Extra bit flags (see PROJECT_xxxx in "defines.h")
+ *
+ * Return:
+ * TRUE if any "effects" of the projection were observed, else FALSE
+ *
+ * Allows a monster (or player) to project a beam/bolt/ball of a given kind
+ * towards a given location (optionally passing over the heads of interposing
+ * monsters), and have it do a given amount of damage to the monsters (and
+ * optionally objects) within the given radius of the final location.
+ *
+ * A "bolt" travels from source to target and affects only the target grid.
+ * A "beam" travels from source to target, affecting all grids passed through.
+ * A "ball" travels from source to the target, exploding at the target, and
+ * affecting everything within the given radius of the target location.
+ *
+ * Traditionally, a "bolt" does not affect anything on the ground, and does
+ * not pass over the heads of interposing monsters, much like a traditional
+ * missile, and will "stop" abruptly at the "target" even if no monster is
+ * positioned there, while a "ball", on the other hand, passes over the heads
+ * of monsters between the source and target, and affects everything except
+ * the source monster which lies within the final radius, while a "beam"
+ * affects every monster between the source and target, except for the casting
+ * monster (or player), and rarely affects things on the ground.
+ *
+ * Two special flags allow us to use this function in special ways, the
+ * "PROJECT_HIDE" flag allows us to perform "invisible" projections, while
+ * the "PROJECT_JUMP" flag allows us to affect a specific grid, without
+ * actually projecting from the source monster (or player).
+ *
+ * The player will only get "experience" for monsters killed by himself
+ * Unique monsters can only be destroyed by attacks from the player
+ *
+ * Only 256 grids can be affected per projection, limiting the effective
+ * "radius" of standard ball attacks to nine units (diameter nineteen).
+ *
+ * One can project in a given "direction" by combining PROJECT_THRU with small
+ * offsets to the initial location (see "line_spell()"), or by calculating
+ * "virtual targets" far away from the player.
+ *
+ * One can also use PROJECT_THRU to send a beam/bolt along an angled path,
+ * continuing until it actually hits something (useful for "stone to mud").
+ *
+ * Bolts and Beams explode INSIDE walls, so that they can destroy doors.
+ *
+ * Balls must explode BEFORE hitting walls, or they would affect monsters
+ * on both sides of a wall. Some bug reports indicate that this is still
+ * happening in 2.7.8 for Windows, though it appears to be impossible.
+ *
+ * We "pre-calculate" the blast area only in part for efficiency.
+ * More importantly, this lets us do "explosions" from the "inside" out.
+ * This results in a more logical distribution of "blast" treasure.
+ * It also produces a better (in my opinion) animation of the explosion.
+ * It could be (but is not) used to have the treasure dropped by monsters
+ * in the middle of the explosion fall "outwards", and then be damaged by
+ * the blast as it spreads outwards towards the treasure drop location.
+ *
+ * Walls and doors are included in the blast area, so that they can be
+ * "burned" or "melted" in later versions.
+ *
+ * This algorithm is intended to maximise simplicity, not necessarily
+ * efficiency, since this function is not a bottleneck in the code.
+ *
+ * We apply the blast effect from ground zero outwards, in several passes,
+ * first affecting features, then objects, then monsters, then the player.
+ * This allows walls to be removed before checking the object or monster
+ * in the wall, and protects objects which are dropped by monsters killed
+ * in the blast, and allows the player to see all affects before he is
+ * killed or teleported away. The semantics of this method are open to
+ * various interpretations, but they seem to work well in practice.
+ *
+ * We process the blast area from ground-zero outwards to allow for better
+ * distribution of treasure dropped by monsters, and because it provides a
+ * pleasing visual effect at low cost.
+ *
+ * Note that the damage done by "ball" explosions decreases with distance.
+ * This decrease is rapid, grids at radius "dist" take "1/dist" damage.
+ *
+ * Notice the "napalm" effect of "beam" weapons. First they "project" to
+ * the target, and then the damage "flows" along this beam of destruction.
+ * The damage at every grid is the same as at the "centre" of a "ball"
+ * explosion, since the "beam" grids are treated as if they ARE at the
+ * centre of a "ball" explosion.
+ *
+ * Currently, specifying "beam" plus "ball" means that locations which are
+ * covered by the initial "beam", and also covered by the final "ball", except
+ * for the final grid (the epicentre of the ball), will be "hit twice", once
+ * by the initial beam, and once by the exploding ball. For the grid right
+ * next to the epicentre, this results in 150% damage being done. The centre
+ * does not have this problem, for the same reason the final grid in a "beam"
+ * plus "bolt" does not -- it is explicitly removed. Simply removing "beam"
+ * grids which are covered by the "ball" will NOT work, as then they will
+ * receive LESS damage than they should. Do not combine "beam" with "ball".
+ *
+ * The array "gy[],gx[]" with current size "grids" is used to hold the
+ * collected locations of all grids in the "blast area" plus "beam path".
+ *
+ * Note the rather complex usage of the "gm[]" array. First, gm[0] is always
+ * zero. Second, for N>1, gm[N] is always the index (in gy[],gx[]) of the
+ * first blast grid (see above) with radius "N" from the blast centre. Note
+ * that only the first gm[1] grids in the blast area thus take full damage.
+ * Also, note that gm[rad+1] is always equal to "grids", which is the total
+ * number of blast grids.
+ *
+ * Note that once the projection is complete, (y2,x2) holds the final location
+ * of bolts/beams, and the "epicentre" of balls.
+ *
+ * Note also that "rad" specifies the "inclusive" radius of projection blast,
+ * so that a "rad" of "one" actually covers 5 or 9 grids, depending on the
+ * implementation of the "distance" function. Also, a bolt can be properly
+ * viewed as a "ball" with a "rad" of "zero".
+ *
+ * Note that if no "target" is reached before the beam/bolt/ball travels the
+ * maximum distance allowed (MAX_RANGE), no "blast" will be induced. This
+ * may be relevant even for bolts, since they have a "1x1" mini-blast.
+ *
+ * Note that for consistency, we "pretend" that the bolt actually takes "time"
+ * to move from point A to point B, even if the player cannot see part of the
+ * projection path. Note that in general, the player will *always* see part
+ * of the path, since it either starts at the player or ends on the player.
+ *
+ * Hack -- we assume that every "projection" is "self-illuminating".
+ *
+ * Hack -- when only a single monster is affected, we automatically track
+ * (and recall) that monster, unless "PROJECT_JUMP" is used.
+ *
+ * Note that all projections now "explode" at their final destination, even
+ * if they were being projected at a more distant destination. This means
+ * that "ball" spells will *always* explode.
+ *
+ * Note that we must call "handle_stuff()" after affecting terrain features
+ * in the blast radius, in case the "illumination" of the grid was changed,
+ * and "update_view()" and "update_monsters()" need to be called.
+ */
+
+#####GDescription
+Generate a beam/bolt/ball starting from "who" with a radius of "rad"
+at target grid "y,x" for "damage" points of "typ" damage. The beam/
+bolt/ball can have various properties as denoted by "flg".
+
+#####GParameters
+> "who" is > 0 (index of monster in m_list[]), < 0 and
+ not -100 or -101 (player), -100 or -101 (trap).
+> "rad" is 0 for a beam/bolt and 1-9 for a ball.
+> "y" is the y co-ordinate of the target grid.
+> "x" is the x co-ordinate of the target grid.
+> "dam" is the number of points of damage.
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "flg" is the projection effect
+ *****fields.txt*0[PROJECT_fields]
+
+----------------------------------------------------------------------
+
+#####R=== corrupt_player ===
+
+#####GDeclaration
+ extern void corrupt_player(void);
+
+#####GFile
+ spells1.c
+
+#####GComment
+(none)
+
+#####GDescription
+Swap two of the players stats at random.
+
+----------------------------------------------------------------------
+
+#####R=== grow_trees ===
+
+#####GDeclaration
+ extern void grow_trees(int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Grow trees
+ */
+
+#####GDescription
+Grow up to (("rad" x "rad") + 11) trees around the player.
+
+#####GParameters
+> "rad" is the radius of the area where trees may grow.
+
+----------------------------------------------------------------------
+
+#####R=== hp_player ===
+
+#####GDeclaration
+ extern bool hp_player(int num);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Increase players hit points, notice effects
+ */
+
+#####GDescription
+Add "num" points to the player's current hit points. The total can
+not exceed the maximum.
+
+#####GParameters
+> "num" is the number of points to add.
+
+----------------------------------------------------------------------
+
+#####R=== heal_insanity ===
+
+#####GDeclaration
+ extern bool heal_insanity(int val);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/* Heal insanity. */
+
+#####GDescription
+Add "val" points to the player's current sanity points. The total can
+not exceed the maximum.
+
+#####GParameters
+> "val" is the number of points to add.
+
+----------------------------------------------------------------------
+
+#####R=== warding_glyph ===
+
+#####GDeclaration
+ extern void warding_glyph(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Leave a "glyph of warding" which prevents monster movement
+ */
+
+#####GDescription
+Place a glyph at the player's location. The location must be bare.
+
+----------------------------------------------------------------------
+
+#####R=== explosive_rune ===
+
+#####GDeclaration
+ extern void explosive_rune(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Place a minor glyph (explosive rune) at the player's location. The
+location must be bare.
+
+----------------------------------------------------------------------
+
+#####R=== do_dec_stat ===
+
+#####GDeclaration
+ extern bool do_dec_stat(int stat, int mode);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Lose a "point"
+ */
+
+#####GDescription
+Attempt to reduce the player's "stat" statistic by a point.
+
+#####GParameters
+> "stat" is the statistic
+ *****fields.txt*0[A_fields]
+> "mode" is the type of decrease: temporary, normal, or permanent
+ *****fields.txt*0[STAT_DEC_fields]
+
+----------------------------------------------------------------------
+
+#####R=== do_res_stat ===
+
+#####GDeclaration
+ extern bool do_res_stat(int stat);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Restore lost "points" in a stat
+ */
+
+#####GDescription
+Restore the player's "stat" statistic.
+
+#####GParameters
+> "stat" is the statistic
+ *****fields.txt*0[A_fields]
+
+----------------------------------------------------------------------
+
+#####R=== do_inc_stat ===
+
+#####GDeclaration
+ extern bool do_inc_stat(int stat);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Gain a "point" in a stat
+ */
+
+#####GDescription
+Increase the player's "stat" statistic by a point.
+
+#####GParameters
+> "stat" is the statistic
+ *****fields.txt*0[A_fields]
+
+----------------------------------------------------------------------
+
+#####R=== identify_pack ===
+
+#####GDeclaration
+ extern void identify_pack(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Identify everything being carried.
+ * Done by a potion of "self knowledge".
+ */
+
+#####GDescription
+Identify all items in the inventory.
+
+----------------------------------------------------------------------
+
+#####R=== remove_curse ===
+
+#####GDeclaration
+ extern bool remove_curse(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Remove most curses
+ */
+
+#####GDescription
+Remove all curses except for heavy curses.
+
+----------------------------------------------------------------------
+
+#####R=== remove_all_curse ===
+
+#####GDeclaration
+ extern bool remove_all_curse(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Remove all curses
+ */
+
+#####GDescription
+Remove all curses including heavy curses.
+
+----------------------------------------------------------------------
+
+#####R=== restore_level ===
+
+#####GDeclaration
+ extern bool restore_level(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Restores any drained experience
+ */
+
+#####GDescription
+Restore all drained experience points (if any).
+
+----------------------------------------------------------------------
+
+#####R=== self_knowledge ===
+
+#####GDeclaration
+ extern void self_knowledge(FILE *fff);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * self-knowledge... idea from nethack. Useful for determining powers and
+ * resistances of items. It saves the screen, clears it, then starts listing
+ * attributes, a screenful at a time. (There are a LOT of attributes to
+ * list. It will probably take 2 or 3 screens for a powerful character whose
+ * using several artifacts...) -CFT
+ *
+ * It is now a lot more efficient. -BEN-
+ *
+ * See also "identify_fully()".
+ *
+ * XXX XXX XXX Use the "show_file()" method, perhaps.
+ */
+
+#####GDescription
+Show all attributes including racial powers, mutations, and equipment
+effects.
+
+#####GParameters
+> "*ffff" points to a file (write info to file) or is NULL (write info
+ to screen).
+
+----------------------------------------------------------------------
+
+#####R=== lose_all_info ===
+
+#####GDeclaration
+ extern bool lose_all_info(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Forget everything
+ */
+
+#####GDescription
+Forget about objects and the map.
+
+----------------------------------------------------------------------
+
+#####R=== detect_traps ===
+
+#####GDeclaration
+ extern bool detect_traps(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all traps on current panel
+ */
+
+#####GDescription
+Detect all traps on current panel.
+
+----------------------------------------------------------------------
+
+#####R=== detect_doors ===
+
+#####GDeclaration
+ extern bool detect_doors(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all doors on current panel
+ */
+
+#####GDescription
+Detect all doors on current panel.
+
+----------------------------------------------------------------------
+
+#####R=== detect_stairs ===
+
+#####GDeclaration
+ extern bool detect_stairs(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all stairs on current panel
+ */
+
+#####GDescription
+Detect all stairs on current panel.
+
+----------------------------------------------------------------------
+
+#####R=== detect_treasure ===
+
+#####GDeclaration
+ extern bool detect_treasure(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect any treasure on the current panel
+ */
+
+#####GDescription
+Detect any treasure on the current panel.
+
+----------------------------------------------------------------------
+
+Field: hack_no_detect_message
+Value: FALSE
+
+----------------------------------------------------------------------
+
+#####R=== detect_objects_gold ===
+
+#####GDeclaration
+ extern bool detect_objects_gold(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "gold" objects on the current panel
+ */
+
+#####GDescription
+Detect all objects with the TV_GOLD flag.
+
+----------------------------------------------------------------------
+
+#####R=== detect_objects_normal ===
+
+#####GDeclaration
+ extern bool detect_objects_normal(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "normal" objects on the current panel
+ */
+
+#####GDescription
+Detect all objects without the TV_GOLD flag.
+
+----------------------------------------------------------------------
+
+#####R=== detect_objects_magic ===
+
+#####GDeclaration
+ extern bool detect_objects_magic(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "magic" objects on the current panel.
+ *
+ * This will light up all spaces with "magic" items, including artifacts,
+ * ego-items, potions, scrolls, books, rods, wands, staves, amulets, rings,
+ * and "enchanted" items of the "good" variety.
+ *
+ * It can probably be argued that this function is now too powerful.
+ */
+
+#####GDescription
+Detect all "magic" objects which are artefacts, ego items, or have one
+of the following flags - TV_AMULET, TV_RING, TV_BATERIE, TV_STAFF,
+TV_WAND, TV_ROD, TV_ROD_MAIN, TV_SCROLL, TV_POTION, TV_POTION2,
+TV_VALARIN_BOOK, TV_MAGERY_BOOK, TV_SHADOW_BOOK, TV_CHAOS_BOOK,
+TV_SPIRIT_BOOK, TV_NETHER_BOOK, TV_DAEMON_BOOK, TV_CRUSADE_BOOK,
+TV_SIGALDRY_BOOK, TV_SYMBIOTIC_BOOK, TV_MUSIC_BOOK.
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_normal ===
+
+#####GDeclaration
+ extern bool detect_monsters_normal(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "normal" monsters on the current panel
+ */
+
+#####GDescription
+Detect all non-invisible monsters (without RF2_INVISIBLE).
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_invis ===
+
+#####GDeclaration
+ extern bool detect_monsters_invis(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "invisible" monsters on current panel
+ */
+
+#####GDescription
+Detect all invisible monsters (with RF2_INVISIBLE).
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_evil ===
+
+#####GDeclaration
+ extern bool detect_monsters_evil(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "evil" monsters on current panel
+ */
+
+#####GDescription
+Detect all evil monsters (with RF3_EVIL).
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_good ===
+
+#####GDeclaration
+ extern bool detect_monsters_good(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/* Detect good monsters */
+
+#####GDescription
+Detect all good monsters (with RF3_GOOD).
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_xxx ===
+
+#####GDeclaration
+ extern bool detect_monsters_xxx(u32b match_flag);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * A "generic" detect monsters routine, tagged to flags3
+ */
+
+#####GDescription
+Detect all monsters with "match_flag" flag.
+
+#####GParameters
+> "match_flag" can be any RF3_ flag (see defines.h) but only
+ RF3_DEMON, RF3_UNDEAD, RF3_GOOD work.
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_string ===
+
+#####GDeclaration
+ extern bool detect_monsters_string(cptr);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all (string) monsters on current panel
+ */
+
+#####GDescription
+Detect all monsters whose default monster character matches a
+character pointed to by "cptr".
+
+#####GParameters
+> "cptr" is a pointer to a single character, eg 'Z' for hounds. For
+ available characters, see the "symbol" field of the graphics (G)
+ line of r_info.txt.
+
+----------------------------------------------------------------------
+
+#####R=== detect_monsters_nonliving ===
+
+#####GDeclaration
+ extern bool detect_monsters_nonliving(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect all "nonliving", "undead" or "demonic" monsters on current panel
+ */
+
+#####GDescription
+Detect all non-living monsters (with RF3_NONLIVING, RF3_UNDEAD, or
+RF3_DEMON).
+
+----------------------------------------------------------------------
+
+#####R=== detect_all ===
+
+#####GDeclaration
+ extern bool detect_all(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Detect everything
+ */
+
+#####GDescription
+Detects traps, doors, stairs, treasure, gold objects, normal objects,
+invisible monsters, normal (visible) monsters.
+
+----------------------------------------------------------------------
+
+#####R=== stair_creation ===
+
+#####GDeclaration
+ extern void stair_creation(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Create stairs at the player location
+ */
+
+#####GDescription
+Create stairs at the player location. This is not allowed if the grid
+is not empty, the player is not in a dungeon, the player is on a
+special level, the player is in an arena or quest. If the player is
+in the town or wilderness the stairs will go down. If the player is
+on a quest level or at the bottom of a dungeon, the stairs will go up.
+Otherwise there is an even chance the stairs will go up or down.
+
+----------------------------------------------------------------------
+
+#####R=== wall_stone ===
+
+#####GDeclaration
+ extern bool wall_stone(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Create a stone wall on the player's grid. This function uses the
+project() function to create the stone wall. Apparently zero can be
+used as the "who" parameter for the player. See details for the
+project() function elsewhere in this document.
+
+----------------------------------------------------------------------
+
+#####R=== create_artifact ===
+
+#####GDeclaration
+ extern bool create_artifact(object_type *o_ptr,
+ bool a_scroll, bool get_name);
+
+#####GFile
+ randart.c
+
+#####GComment
+(none)
+
+#####GDescription
+Create an artifact from object "*optr".
+
+#####GParameters
+> "*optr* is a pointer to an object
+> "a_scroll" is true if the artifact is created by reading a scroll
+> "get_name" is true if the artifact is to be named by the player (if
+ a_scroll is true) or created randomly (a_scroll is false), or false
+ if an inscription is used.
+
+----------------------------------------------------------------------
+
+#####R=== ident_spell ===
+
+#####GDeclaration
+ extern bool ident_spell(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Identify an object in the inventory (or on the floor)
+ * This routine does *not* automatically combine objects.
+ * Returns TRUE if something was identified, else FALSE.
+ */
+
+#####GDescription
+Identify an object in the inventory (or on the floor).
+
+----------------------------------------------------------------------
+
+#####R=== identify_fully ===
+
+#####GDeclaration
+ extern bool identify_fully(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Fully "identify" an object in the inventory -BEN-
+ * This routine returns TRUE if an item was identified.
+ */
+
+#####GDescription
+Fully "identify" an object in the inventory (or on the floor).
+
+----------------------------------------------------------------------
+
+#####R=== recharge ===
+
+#####GDeclaration
+ extern bool recharge(int num);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Recharge a wand/staff/rod from the pack or on the floor.
+ * This function has been rewritten in Oangband. -LM-
+ *
+ * Mage -- Recharge I --> recharge(90)
+ * Mage -- Recharge II --> recharge(150)
+ * Mage -- Recharge III --> recharge(220)
+ *
+ * Priest or Necromancer -- Recharge --> recharge(140)
+ *
+ * Scroll of recharging --> recharge(130)
+ * Scroll of *recharging* --> recharge(200)
+ *
+ * It is harder to recharge high level, and highly charged wands,
+ * staffs, and rods. The more wands in a stack, the more easily and
+ * strongly they recharge. Staffs, however, each get fewer charges if
+ * stacked.
+ *
+ * XXX XXX XXX Beware of "sliding index errors".
+ */
+
+#####GDescription
+Recharge an object in the inventory (or on the floor) with "num"
+power.
+
+#####GParameters
+> "num" is the power used in recharging. It is compared to the
+ object's level to determine whether the item is recharged
+ successfully or destroyed. If it is recharged, it also determines
+ how many charges are added, or how much recharge time is reduced.
+
+----------------------------------------------------------------------
+
+#####R=== aggravate_monsters ===
+
+#####GDeclaration
+ extern void aggravate_monsters(int who);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Wake up all monsters, and speed up "los" monsters.
+ */
+
+#####GDescription
+Aggravate monsters, originating from "who".
+
+#####GParameters
+> "who" is the index of monster in m_list[] (1 if it is the player)
+ which triggers the aggravation;
+
+----------------------------------------------------------------------
+
+#####R=== genocide ===
+
+#####GDeclaration
+ extern bool genocide(bool player_cast);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Genocide a monster race.
+
+#####GParameters
+> "player_cast" is true if the player cast the spell so the player can
+ take damage.
+
+----------------------------------------------------------------------
+
+#####R=== mass_genocide ===
+
+#####GDeclaration
+ extern bool mass_genocide(bool player_cast);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Delete all nearby (non-unique) monsters
+ */
+
+#####GDescription
+Delete all nearby (non-unique) monsters.
+
+#####GParameters
+> "player_cast" is true if the player cast the spell so the player can
+ take damage.
+
+----------------------------------------------------------------------
+
+#####R=== probing ===
+
+#####GDeclaration
+ extern bool probing(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Probe nearby monsters
+ */
+
+#####GDescription
+Probe all nearby monsters.
+
+----------------------------------------------------------------------
+
+#####R=== banish_evil ===
+
+#####GDeclaration
+ extern bool banish_evil(int dist);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Banish evil monsters
+ */
+
+#####GDescription
+Banish nearby evil monsters doing "dist" points of GF_AWAY_EVIL
+damage.
+
+#####GParameters
+> "dist" is the amount of damage done to each monster.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_evil ===
+
+#####GDeclaration
+ extern bool dispel_evil(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel evil monsters
+ */
+
+#####GDescription
+Dispel nearby evil monsters doing "dam" points of GF_DISP_EVIL
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_good ===
+
+#####GDeclaration
+ extern bool dispel_good(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel good monsters
+ */
+
+#####GDescription
+Dispel nearby good monsters doing "dam" points of GF_DISP_GOOD
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_undead ===
+
+#####GDeclaration
+ extern bool dispel_undead(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel undead monsters
+ */
+
+#####GDescription
+Dispel nearby undead monsters doing "dam" points of GF_DISP_UNDEAD
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_monsters ===
+
+#####GDeclaration
+ extern bool dispel_monsters(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel all monsters
+ */
+
+#####GDescription
+Dispel all nearby monsters doing "dam" points of GF_DISP_ALL
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_living ===
+
+#####GDeclaration
+ extern bool dispel_living(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel 'living' monsters
+ */
+
+#####GDescription
+Dispel nearby living monsters doing "dam" points of GF_DISP_LIVING
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== dispel_demons ===
+
+#####GDeclaration
+ extern bool dispel_demons(int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Dispel demons
+ */
+
+#####GDescription
+Dispel nearby demon monsters doing "dam" points of GF_DISP_DEMON
+damage.
+
+#####GParameters
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== turn_undead ===
+
+#####GDeclaration
+ extern bool turn_undead(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Turn undead
+ */
+
+#####GDescription
+Turn nearby undead monsters doing a point of GF_TURN_UNDEAD damage for
+each player level.
+
+----------------------------------------------------------------------
+
+#####R=== wipe ===
+
+#####GDeclaration
+ extern void wipe(int y1, int x1, int r);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Wipe -- Empties a part of the dungeon
+ */
+
+#####GDescription
+Delete monsters and objects from an area of the dungeon centred at
+grid "y1,x1" for a radius "r". This does not work on special levels or
+quests. The player may be blinded. The player forgets the affected
+area and it becomes dark. All grids become floor.
+
+#####GParameters
+> "y1" is the y-coordinate of the wipe's origin.
+> "x1" is the x-coordinate of the wipe's origin.
+> "r" is the radius of the wipe.
+
+----------------------------------------------------------------------
+
+#####R=== destroy_area ===
+
+#####GDeclaration
+ extern void destroy_area(int y1, int x1, int r,
+ bool full);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * The spell of destruction
+ *
+ * This spell "deletes" monsters (instead of "killing" them).
+ *
+ * Later we may use one function for both "destruction" and
+ * "earthquake" by using the "full" to select "destruction".
+ */
+
+#####GDescription
+Delete monsters and objects from an area of the dungeon centred at
+grid "y1,x1" for a radius "r". This does not work on special levels or
+quests. The epicentre is NOT affected. The player may be blinded. The
+player forgets the affected area and it becomes dark. The grids can
+become granite, quartz, magma, or floor.
+
+#####GParameters
+> "y1" is the y-coordinate of the destruction's origin.
+> "x1" is the x-coordinate of the destruction's origin.
+> "r" is the radius of the destruction.
+> "full" is currently unused.
+
+----------------------------------------------------------------------
+
+#####R=== earthquake ===
+
+#####GDeclaration
+ extern void earthquake(int cy, int cx, int r);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Induce an "earthquake" of the given radius at the given location.
+ *
+ * This will turn some walls into floors and some floors into walls.
+ *
+ * The player will take damage and "jump" into a safe grid if possible,
+ * otherwise, he will "tunnel" through the rubble instantaneously.
+ *
+ * Monsters will take damage, and "jump" into a safe grid if possible,
+ * otherwise they will be "buried" in the rubble, disappearing from
+ * the level in the same way that they do when genocided.
+ *
+ * Note that thus the player and monsters (except eaters of walls and
+ * passers through walls) will never occupy the same grid as a wall.
+ * Note that as of now (2.7.8) no monster may occupy a "wall" grid, even
+ * for a single turn, unless that monster can pass_walls or kill_walls.
+ * This has allowed massive simplification of the "monster" code.
+ */
+
+#####GDescription
+Create an earthquake centred on grid "cy,cx" with a radius of "r".
+This does not work on quest levels. The epicentre is NOT affected.
+Only about 15% of the grids are affected. The player takes 300 points
+of damage if they can't be moved to a safe grid, otherwise damage is
+from 10 to 40 points. The player forgets the affected area and it
+becomes dark. The grids can become granite, quartz, magma, or floor.
+
+#####GParameters
+Parameters:
+> "cy" is the y-coordinate of the earthquake origin.
+> "cx" is the x-coordinate of the earthquake origin.
+> "r" is the radius of the earthquake.
+
+----------------------------------------------------------------------
+
+#####R=== map_area ===
+
+#####GDeclaration
+ extern void map_area(void);
+
+#####GFile
+ cave.c
+
+#####GComment
+/*
+ * Hack -- map the current panel (plus some) ala "magic mapping"
+ */
+
+#####GDescription
+Map the current panel plus up to 10 grids up and down, and up to 20
+grids left and right.
+
+----------------------------------------------------------------------
+
+#####R=== wiz_lite ===
+
+#####GDeclaration
+ extern void wiz_lite(void);
+
+#####GFile
+ cave.c
+
+#####GComment
+/*
+ * Light up the dungeon using "clairvoyance"
+ *
+ * This function "illuminates" every grid in the dungeon, memorises all
+ * "objects", memorises all grids as with magic mapping, and, under the
+ * standard option settings (view_perma_grids but not view_torch_grids)
+ * memorises all floor grids too.
+ *
+ * Note that if "view_perma_grids" is not set, we do not memorise floor
+ * grids, since this would defeat the purpose of "view_perma_grids", not
+ * that anyone seems to play without this option.
+ *
+ * Note that if "view_torch_grids" is set, we do not memorise floor grids,
+ * since this would prevent the use of "view_torch_grids" as a method to
+ * keep track of what grids have been observed directly.
+ */
+
+#####GDescription
+Light up the entire dungeon and show all monsters and objects.
+
+----------------------------------------------------------------------
+
+#####R=== wiz_lite_extra ===
+
+#####GDeclaration
+ extern void wiz_lite_extra(void);
+
+#####GFile
+ cave.c
+
+#####GComment
+(none)
+
+#####GDescription
+Light up the entire dungeon and show all monsters and objects. All
+squares are lit and remembered.
+
+----------------------------------------------------------------------
+
+#####R=== wiz_dark ===
+
+#####GDeclaration
+ extern void wiz_dark(void);
+
+#####GFile
+ cave.c
+
+#####GComment
+/*
+ * Forget the dungeon map (ala "Thinking of Maud...").
+ */
+
+#####GDescription
+Forget all grids and objects. All grids become dark.
+
+----------------------------------------------------------------------
+
+#####R=== lite_room ===
+
+#####GDeclaration
+ extern void lite_room(int y1, int x1);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Illuminate any room containing the given location.
+ */
+
+#####GDescription
+Light up the room (if any) of grid "y1,x1".
+
+#####GParameters
+> "y1" is the y-coordinate of the grid.
+> "x1" is the x-coordinate of the grid.
+
+----------------------------------------------------------------------
+
+#####R=== unlite_room ===
+
+#####GDeclaration
+ extern void unlite_room(int y1, int x1);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Darken all rooms containing the given location
+ */
+
+#####GDescription
+Darken all rooms (if any) of grid "y1,x1".
+
+#####GParameters
+> "y1" is the y-coordinate of the grid.
+> "x1" is the x-coordinate of the grid.
+
+----------------------------------------------------------------------
+
+#####R=== lite_area ===
+
+#####GDeclaration
+ extern bool lite_area(int dam, int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Hack -- call light around the player
+ * Affect all monsters in the projection radius
+ */
+
+#####GDescription
+Light up the room (if any) of the player's grid. Monsters take "dam"
+points of GF_LITE_WEAK damage if they are within "r" grids of the
+player.
+
+#####GParameters
+> "dam" is the number of points of damage.
+> "rad" is the radius of the effect of the damage.
+
+----------------------------------------------------------------------
+
+#####R=== unlite_area ===
+
+#####GDeclaration
+ extern bool unlite_area(int dam, int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Hack -- call darkness around the player
+ * Affect all monsters in the projection radius
+ */
+
+#####GDescription
+Darken the room (if any) of the player's grid. Monsters take "dam"
+points of GF_DARK_WEAK damage if they are within "r" grids of the
+player.
+
+#####GParameters
+> "dam" is the number of points of damage.
+> "rad" is the radius of the effect of the damage.
+
+----------------------------------------------------------------------
+
+#####R=== fire_ball_beam ===
+
+#####GDeclaration
+ extern bool fire_ball_beam(int typ, int dir, int dam,
+ int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a ball-beamed spell
+ * Stop if we hit a monster, act as a "ball"
+ * Allow "target" mode to pass over monsters
+ * Affect grids, objects, and monsters
+ */
+
+#####GDescription
+Cast a ball-beamed spell of type "typ" in direction "dir" for damage
+"dam" points with a radius of "rad" grids.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+> "rad" is the radius of the effect of the damage (must be <= 16).
+
+----------------------------------------------------------------------
+
+#####R=== fire_ball ===
+
+#####GDeclaration
+ extern bool fire_ball(int typ, int dir, int dam, int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a ball spell
+ * Stop if we hit a monster, act as a "ball"
+ * Allow "target" mode to pass over monsters
+ * Affect grids, objects, and monsters
+ */
+
+#####GDescription
+Cast a ball spell of type "typ" in direction "dir" for "dam" points of
+damage. The ball has a radius of "rad" grids.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+> "rad" is the radius of the effect of the damage (must be <= 16).
+
+----------------------------------------------------------------------
+
+#####R=== fire_bolt ===
+
+#####GDeclaration
+ extern bool fire_bolt(int typ, int dir, int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a bolt spell
+ * Stop if we hit a monster, as a "bolt"
+ * Affect monsters (not grids or objects)
+ */
+
+#####GDescription
+Cast a bolt spell of type "typ" in direction "dir" for "dam" points of
+damage.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== fire_beam ===
+
+#####GDeclaration
+ extern bool fire_beam(int typ, int dir, int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a beam spell
+ * Pass through monsters, as a "beam"
+ * Affect monsters (not grids or objects)
+ */
+
+#####GDescription
+Cast a beam spell of type "typ" in direction "dir" for "dam" points of
+damage.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== fire_druid_ball ===
+
+#####GDeclaration
+ extern bool fire_druid_ball(int typ, int dir, int dam,
+ int rad);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a druidic ball spell
+ * Stop if we hit a monster, act as a "ball"
+ * Allow "target" mode to pass over monsters
+ * Affect grids, objects, and monsters
+ */
+
+#####GDescription
+Cast a ball spell of type "typ" in direction "dir" for "dam" points of
+damage. The ball has a radius of "rad" grids. The spell follows a mana
+path.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+> "rad" is the radius of the effect of the damage (must be <= 16).
+
+----------------------------------------------------------------------
+
+#####R=== fire_druid_bolt ===
+
+#####GDeclaration
+ extern bool fire_druid_bolt(int typ, int dir, int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a druidic bolt spell
+ * Stop if we hit a monster, as a "bolt"
+ * Affect monsters (not grids or objects)
+ */
+
+#####GDescription
+Cast a bolt spell of type "typ" in direction "dir" for "dam" points of
+damage. The spell follows a mana path.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== fire_druid_beam ===
+
+#####GDeclaration
+ extern bool fire_druid_beam(int typ, int dir, int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a druidistic beam spell
+ * Pass through monsters, as a "beam"
+ * Affect monsters (not grids or objects)
+ */
+
+#####GDescription
+Cast a beam spell of type "typ" in direction "dir" for "dam" points of
+damage. The spell follows a mana path.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== fire_bolt_or_beam ===
+
+#####GDeclaration
+ extern bool fire_bolt_or_beam(int prob, int typ, int dir,
+ int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Cast a bolt spell, or rarely, a beam spell
+ */
+
+#####GDescription
+Cast a beam (chance of "prob" in 100) or bolt spell of type "typ" in
+direction "dir" for "dam" points of damage.
+
+#####GParameters
+> "prob" is the number of times out of 100 that the bolt will actually
+ be a beam. Obviously this value should range from 1 to 99 (0 will
+ always give a beam, 100 or higher will always give a beam. There are
+ separate functions for these cases).
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+#####R=== alchemy ===
+
+#####GDeclaration
+ extern bool alchemy(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/* Turns an object into gold, gain some of its value in a shop */
+
+#####GDescription
+The player selects an object (and quantity if it applies) from the
+inventory or the floor and attempts to turn it into gold. If the
+price of the item is < 0 then the player gains nothing (fool's gold),
+otherwise the player gets a third of the price in gold. Artifacts are
+not affected.
+
+----------------------------------------------------------------------
+
+#####R=== alter_reality ===
+
+#####GDeclaration
+ extern void alter_reality(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+The player leaves the level immediately.
+
+----------------------------------------------------------------------
+
+#####R=== teleport_swap ===
+
+#####GDeclaration
+ extern void teleport_swap(int dir);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Player swaps places with target in direction "dir". The target must be
+a monster. It will not work if the space-time continuum can not be
+disrupted or if the monster resists teleportation.
+
+----------------------------------------------------------------------
+
+#####R=== project_meteor ===
+
+#####GDeclaration
+ extern void project_meteor(int radius, int typ, int dam,
+ u32b flg);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Apply a "project()" a la meteor shower
+ */
+
+#####GDescription
+Generate between "rad" and "rad" x 2 ball spells of type "typ" for
+"dam" points of damage. The ball can have various properties as
+denoted by "flg".
+
+#####GParameters
+> "rad" is the minimum number of balls created. "rad" + randint("rad")
+ balls are created. Each ball has a radius of 2 grids. Each target
+ grid is within 5 grids of the player.
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dam" is the number of points of damage.
+> "flg" is the projection effect
+ *****fields.txt*0[PROJECT_fields]
+
+----------------------------------------------------------------------
+
+#####R=== passwall ===
+
+#####GDeclaration
+ extern bool passwall(int dir, bool safe);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Send the player shooting through walls in the given direction until
+ * they reach a non-wall space, or a monster, or a permanent wall.
+ */
+
+#####GDescription
+Move the player through walls in direction "dir". if "safe" then the
+player can not end up in a wall - if they do, the wall is replaced by
+a floor. This does not work in the wilderness, on quest levels, or if
+teleport is not allowed. Stopping on monsters or inside vaults is not
+allowed.
+
+#####GParameters
+> "dir" must be from 0 to 9. It can not be 5.
+ *****fields.txt*0[direction]
+> "safe" must be true if the player is not to be trapped in a wall
+ when the movement is finished.
+
+----------------------------------------------------------------------
+
+#####R=== project_hook ===
+
+#####GDeclaration
+ extern bool project_hook(int typ, int dir, int dam,
+ int flg);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Hack -- apply a "projection()" in a direction (or at the target)
+ */
+
+#####GDescription
+Generate a beam/bolt of type "typ" in direction "dir" (or at a target)
+for "dam" points of damage. The beam/bolt can have various properties
+as denoted by "flg".
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dir" must be from 0 to 9. 5 means use the current target.
+ *****fields.txt*0[direction]
+> "dam" is the number of points of damage.
+> "flg" is the projection effect
+ *****fields.txt*0[PROJECT_fields]
+
+----------------------------------------------------------------------
+
+#####R=== reset_recall ===
+
+#####GDeclaration
+ extern bool reset_recall(void);
+
+#####GFile
+ spells2.c
+
+#####GComment
+(none)
+
+#####GDescription
+Ask the player for a dungeon and appropriate level within the dungeon.
+The player can not specify a dungeon they have not gone to yet. If the
+player chooses levels 99 or 100, the level is set to 98.
+
+----------------------------------------------------------------------
+
+#####R=== get_aim_dir ===
+
+#####GDeclaration
+ extern bool get_aim_dir(int *dp = 0);
+
+#####GFile
+ xtra2.c
+
+#####GComment
+/*
+ * Get an "aiming direction" from the user.
+ *
+ * The "dir" is loaded with 1,2,3,4,6,7,8,9 for "actual direction", and
+ * "0" for "current target", and "-1" for "entry aborted".
+ *
+ * Note that "Force Target", if set, will pre-empt user interaction,
+ * if there is a usable target already set.
+ *
+ * Note that confusion over-rides any (explicit?) user choice.
+ */
+
+#####GDescription
+Get an aiming direction from the user and store it in "dp". A target
+can be selected. If the player is confused, the direction will be
+random.
+
+#####GParameters
+> "dp" = player direction.
+
+----------------------------------------------------------------------
+
+#####R=== project_hack ===
+
+#####GDeclaration
+ extern bool project_hack(int typ, int dam);
+
+#####GFile
+ spells2.c
+
+#####GComment
+/*
+ * Apply a "project()" directly to all viewable monsters
+ *
+ * Note that affected monsters are NOT auto-tracked by this usage.
+ */
+
+#####GDescription
+Generate beam/bolt spells of type "typ" for "dam" points of damage to
+all viewable monsters in line of site.
+
+#####GParameters
+> "typ" is the type of damage
+ *****fields.txt*0[GF_fields]
+> "dam" is the number of points of damage.
+
+----------------------------------------------------------------------
+
+
+Back to the *****lua.hlp*0[lua help index] .
+
+ [[[[[gThis file by Chris Hadgis]
diff --git a/lib/help/lua_util.txt b/lib/help/lua_util.txt
new file mode 100644
index 00000000..8886a2b4
--- /dev/null
+++ b/lib/help/lua_util.txt
@@ -0,0 +1,898 @@
+|||||oy
+
+#####R /----------------------------------------\
+#####R < util.pkg functions helper file >
+#####R \----------------------------------------/
+
+----------------------------------------------------------------------
+
+#####R=== bst ===
+
+#####GDeclaration
+ s32b bst(s32b what, s32b t);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+ * Break scalar time
+ */
+
+#####GDescription
+Return the minute, hour, day, or year for turn "t". One turn takes 7.5
+seconds.
+
+#####GParameters
+> "what" is the unit to be returned and must be one of
+ MINUTE (number of turns per minute, which is 8)
+ HOUR (number of turns per hour, which is 480)
+ DAY (number of turns per day, which is 11,520)
+ YEAR (number of turns per year, which is 4,204,800)
+> "t" is the number of turns.
+
+----------------------------------------------------------------------
+
+#####R=== path_build ===
+
+#####GDeclaration
+ errr path_build(char *buf, int max, cptr path, cptr file);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Create a new path by appending a file (or directory) to a path
+*
+* This requires no special processing on simple machines, except
+* for verifying the size of the filename, but note the ability to
+* bypass the given "path" with certain special file-names.
+*
+* Note that the "file" may actually be a "sub-path", including
+* a path and a file.
+*
+* Note that this function yields a path which must be "parsed"
+* using the "parse" function above.
+*/
+
+#####GDescription
+Append file "file" to path "path" and return the result in "buf". The
+length of "buf" is a maximum of "max" characters. If "file" starts
+with '~' then return "file". If "file" starts with the path separator
+and the path separator is not blank then return "file". If there is no
+path then return "file". Otherwise return "path" + path separator +
+"file". The path separator is defined in "H-config.h".
+
+#####GParameters
+> "buf" contains the new path.
+> "max" is the maximum number of characters allowed in "buf".
+> "path" is the original path.
+> "file" is the original file.
+
+----------------------------------------------------------------------
+
+#####R=== move_cursor ===
+
+#####GDeclaration
+ void move_cursor(int row, int col);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Move the cursor
+*/
+
+#####GDescription
+Move the cursor to row "row" and column "col".
+
+#####GParameters
+> "row" is the row the cursor is to be moved to.
+> "col" is the column the cursor is to be moved to.
+
+----------------------------------------------------------------------
+
+#####R=== inkey ===
+
+#####GDeclaration
+ char inkey(void);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Get a keypress from the user.
+*
+* This function recognises a few "global parameters". These are variables
+* which, if set to TRUE before calling this function, will have an effect
+* on this function, and which are always reset to FALSE by this function
+* before this function returns. Thus they function just like normal
+* parameters, except that most calls to this function can ignore them.
+*
+* If "inkey_xtra" is TRUE, then all pending keypresses will be flushed,
+* and any macro processing in progress will be aborted. This flag is
+* set by the "flush()" function, which does not actually flush anything
+* itself, but rather, triggers delayed input flushing via "inkey_xtra".
+*
+* If "inkey_scan" is TRUE, then we will immediately return "zero" if no
+* keypress is available, instead of waiting for a keypress.
+*
+* If "inkey_base" is TRUE, then all macro processing will be bypassed.
+* If "inkey_base" and "inkey_scan" are both TRUE, then this function will
+* not return immediately, but will wait for a keypress for as long as the
+* normal macro matching code would, allowing the direct entry of macro
+* triggers. The "inkey_base" flag is extremely dangerous!
+*
+* If "inkey_flag" is TRUE, then we will assume that we are waiting for a
+* normal command, and we will only show the cursor if "hilite_player" is
+* TRUE (or if the player is in a store), instead of always showing the
+* cursor. The various "main-xxx.c" files should avoid saving the game
+* in response to a "menu item" request unless "inkey_flag" is TRUE, to
+* prevent savefile corruption.
+*
+* If we are waiting for a keypress, and no keypress is ready, then we will
+* refresh (once) the window which was active when this function was called.
+*
+* Note that "back-quote" is automatically converted into "escape" for
+* convenience on machines with no "escape" key. This is done after the
+* macro matching, so the user can still make a macro for "backquote".
+*
+* Note the special handling of "ascii 30" (ctrl-caret, aka ctrl-shift-six)
+* and "ascii 31" (ctrl-underscore, aka ctrl-shift-minus), which are used to
+* provide support for simple keyboard "macros". These keys are so strange
+* that their loss as normal keys will probably be noticed by nobody. The
+* "ascii 30" key is used to indicate the "end" of a macro action, which
+* allows recursive macros to be avoided. The "ascii 31" key is used by
+* some of the "main-xxx.c" files to introduce macro trigger sequences.
+*
+* Hack -- we use "ascii 29" (ctrl-right-bracket) as a special "magic" key,
+* which can be used to give a variety of "sub-commands" which can be used
+* any time. These sub-commands could include commands to take a picture of
+* the current screen, to start/stop recording a macro action, etc.
+*
+* If "angband_term[0]" is not active, we will make it active during this
+* function, so that the various "main-xxx.c" files can assume that input
+* is only requested (via "Term_inkey()") when "angband_term[0]" is active.
+*
+* Mega-Hack -- This function is used as the entry point for clearing the
+* "signal_count" variable, and of the "character_saved" variable.
+*
+* Hack -- Note the use of "inkey_next" to allow "keymaps" to be processed.
+*
+* Mega-Hack -- Note the use of "inkey_hack" to allow the "Borg" to steal
+* control of the keyboard from the user.
+*/
+
+#####GDescription
+Get a keypress from the user.
+
+----------------------------------------------------------------------
+
+#####R=== cmsg_print ===
+
+#####GDeclaration
+ void cmsg_print(byte color, cptr msg);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Output a message to the top line of the screen.
+*
+* Break long messages into multiple pieces (40-72 chars).
+*
+* Allow multiple short messages to "share" the top line.
+*
+* Prompt the user to make sure he has a chance to read them.
+*
+* These messages are memorised for later reference (see above).
+*
+* We could do "Term_fresh()" to provide "flicker" if needed.
+*
+* The global "msg_flag" variable can be cleared to tell us to
+* "erase" any "pending" messages still on the screen.
+*
+* XXX XXX XXX Note that we must be very careful about using the
+* "msg_print()" functions without explicitly calling the special
+* "msg_print(NULL)" function, since this may result in the loss
+* of information if the screen is cleared, or if anything is
+* displayed on the top line.
+*
+* XXX XXX XXX Note that "msg_print(NULL)" will clear the top line
+* even if no messages are pending. This is probably a hack.
+*/
+
+#####GDescription
+In color "color", output message "msg" to the top line of the screen.
+If the message is blank or has more than 1000 characters, nothing is
+printed. Long messages are split after the 40th character and before
+the 72nd character.
+
+#####GParameters
+> "color" is the color of the message.
+ *****fields.txt*0[colors]
+> "msg" is the message.
+
+----------------------------------------------------------------------
+
+#####R=== msg_print ===
+
+#####GDeclaration
+ void msg_print(cptr msg);
+
+#####GFile
+ util.c
+
+#####GComment
+/* Hack -- for compatibility and easy sake */
+
+#####GDescription
+Print message "msg" in white (see cmsg_print() above).
+
+#####GParameters
+> "msg" is the message.
+
+----------------------------------------------------------------------
+
+#####R=== screen_save ===
+
+#####GDeclaration
+ void screen_save(void);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+ * Save the screen, and increase the "icky" depth.
+ *
+ * This function must match exactly one call to "screen_load()".
+ */
+
+#####GDescription
+Save a screen shot.
+
+----------------------------------------------------------------------
+
+#####R=== screen_load ===
+
+#####GDeclaration
+ void screen_load(void);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+ * Load the screen, and decrease the "icky" depth.
+ *
+ * This function must match exactly one call to "screen_save()".
+ */
+
+#####GDescription
+Load a previously saved screen shot.
+
+----------------------------------------------------------------------
+
+#####R=== c_put_str ===
+
+#####GDeclaration
+ void c_put_str(byte attr, cptr str, int row, int col);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Display a string on the screen using an attribute.
+*
+* At the given location, using the given attribute, if allowed,
+* add the given string. Do not clear the line.
+*/
+
+#####GDescription
+Put string "str" at row "row" and column "col" with attribute "attr".
+
+#####GParameters
+> "attr" is the color of the message.
+ *****fields.txt*0[colors]
+> "msg" is the message.
+> "row" is the row the message is to be printed at.
+> "col" is the column the message is to be printed at.
+
+----------------------------------------------------------------------
+
+#####R=== c_prt ===
+
+#####GDeclaration
+ void c_prt(byte attr, cptr str, int row, int col);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Display a string on the screen using an attribute, and clear
+* to the end of the line.
+*/
+
+#####GDescription
+Clear row "row" from column "col". Put string "str" at "row", "col"
+with attribute "attr".
+
+#####GParameters
+> "attr" is the color of the message.
+ *****fields.txt*0[colors]
+> "msg" is the message.
+> "row" is the row the message is to be printed at.
+> "col" is the column the message is to be printed at.
+
+----------------------------------------------------------------------
+
+#####R=== clear_from ===
+
+#####GDeclaration
+ void clear_from(int row);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Clear part of the screen
+*/
+
+#####GDescription
+Clear the screen from row "row" onwards.
+
+#####GParameters
+> "row" is the first row of the screen to be cleared.
+
+----------------------------------------------------------------------
+
+#####R=== askfor_aux ===
+
+#####GDeclaration
+ bool askfor_aux(char *buf, int len);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Get some input at the cursor location.
+* Assume the buffer is initialized to a default string.
+* Note that this string is often "empty" (see below).
+* The default buffer is displayed in yellow until cleared.
+* Pressing RETURN right away accepts the default entry.
+* Normal chars clear the default and append the char.
+* Backspace clears the default or deletes the final char.
+* ESCAPE clears the buffer and the window and returns FALSE.
+* RETURN accepts the current buffer contents and returns TRUE.
+*/
+
+#####GDescription
+Get string "buf" from the screen. "buf" is to be no more than "len"
+bytes. The string starts at the current cursor position. The length
+can not exceed the number of bytes from the cursor to the end of the
+line. Accept user input until the escape or return key is pressed.
+
+#####GParameters
+> "buf" is the string returned from the screen.
+> "len" is the length of the string. If it is <1 it is forced to 1.
+
+----------------------------------------------------------------------
+
+#####R=== get_string ===
+
+#####GDeclaration
+ bool get_string(cptr prompt, char *buf, int len);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Get a string from the user
+*
+* The "prompt" should take the form "Prompt: "
+*
+* Note that the initial contents of the string is used as
+* the default response, so be sure to "clear" it if needed.
+*
+* We clear the input, and return FALSE, on "ESCAPE".
+*/
+
+#####GDescription
+Print prompt "prompt" at the top-left corner of the screen and return
+response "buf" which will have a maximum length "length". If ESCAPE
+is entered, the function returns FALSE, otherwise it returns TRUE.
+
+#####GParameters
+> "prompt" is the prompt for input.
+> "buf" is the returned response.
+> "len" is the maximum length of the string.
+
+----------------------------------------------------------------------
+
+#####R=== get_check ===
+
+#####GDeclaration
+ bool get_check(cptr prompt);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Verify something with the user
+*
+* The "prompt" should take the form "Query? "
+*
+* Note that "[y/n]" is appended to the prompt.
+*/
+
+#####GDescription
+Ask the user question "prompt" which requires a yes/no answer. The
+prompt appears in the top-left corner of the screen. A response of
+'Y' (either case) returns TRUE. A response of 'N' (either case) or
+ESCAPE returns FALSE.
+
+#####GParameters
+> "prompt" is the question asked. It has a maximum length of 70
+ characters.
+
+----------------------------------------------------------------------
+
+#####R=== get_com_lua ===
+
+#####GDeclaration
+ bool get_com_lua @ get_com(cptr promtp, int *com);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Prompts for a keypress
+*
+* The "prompt" should take the form "Command: "
+*
+* Returns TRUE unless the character is "Escape"
+*/
+
+#####GDescription
+Ask the user for command "prompt" and return the key press "com". A
+response of ESCAPE returns FALSE. All other responses return TRUE.
+
+#####GParameters
+> "prompt" is the prompt for the key press.
+> "com" is the returned key press.
+
+----------------------------------------------------------------------
+
+#####R=== get_quantity ===
+
+#####GDeclaration
+ s32b get_quantity(cptr prompt, s32b max);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+* Request a "quantity" from the user
+*
+* Hack -- allow "command_arg" to specify a quantity
+*/
+
+#####GDescription
+Ask the user for quantity "prompt" of maximum value "max" and return
+a quantity. If the user quantity is higher than the maximum then the
+maximum is returned. If the response is a letter then the maximum is
+returned. If the user quantity is negative then zero is returned.
+
+#####GParameters
+> "prompt" is the prompt for a quantity.
+> "max" is the maximum value allowed.
+
+----------------------------------------------------------------------
+
+#####R=== test_monster_name ===
+
+#####GDeclaration
+ int test_monster_name(cptr name);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+ * Given monster name as string, return the index in r_info array. Name
+ * must exactly match (look out for commas and the like!), or else 0 is
+ * returned. Case doesn't matter. -GSN-
+ */
+
+#####GDescription
+Return the monster index for monster with name "name". If no match is
+found then zero is returned.
+
+#####GParameters
+> "name" is the monster name.
+
+----------------------------------------------------------------------
+
+#####R=== test_item_name ===
+
+#####GDeclaration
+ int test_item_name(cptr name);
+
+#####GFile
+ util.c
+
+#####GComment
+/*
+ * Given item name as string, return the index in k_info array. Name
+ * must exactly match (look out for commas and the like!), or else 0 is
+ * returned. Case doesn't matter. -DG-
+ */
+
+#####GDescription
+Return the item index for item with name "name". If no match is found
+then zero is returned.
+
+#####GParameters
+> "name" is the item name.
+
+----------------------------------------------------------------------
+
+#####R=== luck ===
+
+#####GDeclaration
+ int luck(int min, int max);
+
+#####GFile
+ xtra1.c
+
+#####GComment
+/*
+ * Return a luck number between a certain range
+ */
+
+#####GDescription
+Return a number for luck between minimum "min" and maximum "max". The
+value begins with the player's current luck. The value is forced to
+be between -30 and +30. 30 is added to give a value between 0 and 60.
+The value is multiplied by the range (maximum - minimum) and divided
+by 60. The value is increased by the minimum. The value is returned.
+
+For example, if the player's current luck is 15, the minimum is -10,
+and the maximum is 10 (range 20), then the value returned is
+(45 * 20) / 60 which is 900 / 60 which is 15 + the minimum -10 gives
+a returned value of 5.
+
+#####GParameters
+> "min" is the minimum luck.
+> "max" is the maximum luck. Beware: this should be greater than the
+ minimum but it is not checked!
+
+----------------------------------------------------------------------
+
+#####R=== get_player_race_name ===
+
+#####GDeclaration
+ cptr get_player_race_name(int pr, int ps);
+
+#####GFile
+ util.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the name for player race "pr" and player sub-race "ps".
+
+#####GParameters
+> "pr" is the index for player race.
+> "ps" is the index for player sub-race.
+
+----------------------------------------------------------------------
+
+#####R=== quit ===
+
+#####GDeclaration
+ void quit(cptr str);
+
+#####GFile
+ z-util.c
+
+#####GComment
+/*
+ * Exit (ala "exit()"). If 'str' is NULL, do "exit(0)".
+ * If 'str' begins with "+" or "-", do "exit(atoi(str))".
+ * Otherwise, plog() 'str' and exit with an error code of -1.
+ * But always use 'quit_aux', if set, before anything else.
+ */
+
+#####GDescription
+Quit the game. If "str" is a string then write the string to the
+error file or screen. If "str" is a number then exit with the
+number as the exit code.
+
+#####GParameters
+> "str" is an error message or exit code.
+
+----------------------------------------------------------------------
+
+#####R=== dump_hooks ===
+
+#####GDeclaration
+ void dump_hooks();
+
+#####GFile
+ plots.c
+
+#####GComment
+(none)
+
+#####GDescription
+Print the name and type (C or Lua) of hooks in the hook list.
+
+----------------------------------------------------------------------
+
+#####R=== add_hook_script ===
+
+#####GDeclaration
+ void add_hook_script(int h_idx, char *script, cptr name);
+
+#####GFile
+ plots.c
+
+#####GComment
+(none)
+
+#####GDescription
+To hook list with index "h_idx", add a script with script file
+"script" and name "name" as a Lua hook if a hook with that name
+does not already exist.
+
+#####GParameters
+> "h_idx" is the index of the hook list in the array of hook lists.
+> "script" is the name of the script file.
+> "name" is the name of the hook to be added.
+
+----------------------------------------------------------------------
+
+#####R=== del_hook_name ===
+
+#####GDeclaration
+ void del_hook_name(int h_idx, cptr name);
+
+#####GFile
+ plots.c
+
+#####GComment
+(none)
+
+#####GDescription
+Search hook list with index "h_idx" and remove the hook with name
+"name".
+
+#####GParameters
+> "h_idx" is the index of the hook list in the array of hook lists.
+> "name" is the name of the hook to be removed.
+
+----------------------------------------------------------------------
+
+#####R=== pern_dofile ===
+
+#####GDeclaration
+ bool pern_dofile(char *file);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Parse the Lua script file "file".
+
+#####GParameters
+> "file" is the Lua script file to be parsed.
+
+----------------------------------------------------------------------
+
+#####R=== intMod ===
+
+#####GDeclaration
+ s32b intMod(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of operation "a" mod "b" (a % b).
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intAnd ===
+
+#####GDeclaration
+ s32b intAnd(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation "a" AND "b" (a & b).
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intOr ===
+
+#####GDeclaration
+ s32b intOr(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation "a" OR "b" (a | b).
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intXor ===
+
+#####GDeclaration
+ s32b intXor(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation "a" XOR "b" (a ^ b).
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intShiftl ===
+
+#####GDeclaration
+ s32b intShiftl(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation "a" << "b".
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intShiftr ===
+
+#####GDeclaration
+ s32b intShiftr(s32b a, s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation "a" >> "b".
+
+#####GParameters
+> "a" is a number.
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== intBitNot ===
+
+#####GDeclaration
+ s32b intBitNot(s32b b);
+
+#####GFile
+ script.c
+
+#####GComment
+(none)
+
+#####GDescription
+Return the result of bitwise operation NOT "b" (~ b).
+
+#####GParameters
+> "b" is a number.
+
+----------------------------------------------------------------------
+
+#####R=== register_savefile ===
+
+#####GDeclaration
+ void register_savefile(int num);
+
+#####GFile
+ loadsave.c
+
+#####GComment
+/*
+ * Add num slots to the savefile
+ */
+
+#####GDescription
+Add "num" slots to the save file.
+
+#####GParameters
+> "num" is the number of slots to add to the savefile. If num is <0
+ then "num" is forced to zero.
+
+----------------------------------------------------------------------
+
+#####R=== save_number_key ===
+
+#####GDeclaration
+ void save_number_key(char *key, s32b val);
+
+#####GFile
+ util.c
+
+#####GComment
+(none)
+
+#####GDescription
+Save the length of key "key", the key itself, and the value "val" as
+bytes in the savefile.
+
+#####GParameters
+> "key" is the key string for the value.
+> "val" is the value to be saved.
+
+----------------------------------------------------------------------
+
+
+
+Back to the *****lua.hlp*0[lua help index] .
+
+
+ [[[[[gThis file by Chris Hadgis]
+
diff --git a/lib/help/luckspoi.txt b/lib/help/luckspoi.txt
new file mode 100644
index 00000000..50466902
--- /dev/null
+++ b/lib/help/luckspoi.txt
@@ -0,0 +1,112 @@
+|||||oy
+~~~~~01|Luck (spoiler)
+~~~~~02|Spoilers|Luck
+#####RLuck
+
+"You've got to ask yourself one question: do I feel lucky? Well do ya
+punk?"
+ --Clint Eastwood (Dirty Harry)
+
+#####G1. Starting luck
+Most races start with no luck points. Those that start with luck are listed
+below from most luck to least luck.
+
+Hobbit (+5);
+Maia (+4);
+Gnome, Dunadan, Thunderlord (+2);
+Beorning (+1);
+Half-Ogre, Dark Elf, Ent (-2);
+Orc (-3);
+Troll (-4);
+Petty Dwarf, DeathMold, Yeek (-5).
+
+Most subraces start with no luck points. Those that start with luck are listed
+below from most luck to least luck.
+
+Barbarian (+1);
+Spectre, Skeleton (-3);
+Zombie (-4).
+
+So, a Hobbit starts with 5 luck points, a Beorning Barbarian starts with 2 luck
+points, while a Yeek Zombie starts with -9 luck points.
+
+#####G2. Descriptions
+Drinking a potion of self-knowledge will tell you how lucky or unlucky your
+character is.
+
+DESCRIPTION VALUE
+incredibly unlucky less than -27
+extremely unlucky less than -18
+very unlucky less than -9
+unlucky less than 0
+normal luck 0
+lucky more than 0
+very lucky more than 9
+extremely lucky more than 18
+incredibly lucky more than 27
+
+Luck < -30 is treated as -30 and luck > 30 is treated as +30.
+
+#####G3. Items affecting luck
+Elven cloaks give a bonus to luck.
+
+Only one type of ego item is lucky, or perhaps that should be unlucky.
+All Morgul items have -10 luck.
+
+Artifacts can affect your luck. Beware: not all artifacts give you good luck.
+Listed below are the artifacts which affect your luck.
+
+The Phial of Galadriel (+4)
+The Arkenstone of Thrain (+3)
+The Ring of Power 'Narya' (+1)
+The Ring of Power 'Nenya' (+2)
+The Ring of Power 'Vilya' (+3)
+The Metal Cap of Thengel (+3)
+The Shadow Cloak of Luthien (+2)
+The Set of Cesti of Fingolfin (+4)
+The Long Sword 'Anduril' (+4)
+The Long Bow of Bard (+2)
+The Mage Staff of Eternity (+12)
+The Harp of Maglor (+3)
+The Drum of the Sky (+2)
+The Harp of Daeron (+1)
+The Long Sword of Eternity (+10)
+The Robe of Great Luck (+60)
+The Heavy Crossbow of Eternity (+5)
+The Iron Helm of Knowledge (-6)
+The Shield of Deflection of Gil-galad (+5)
+The Set of Gauntlets of Eol (+3)
+The Demonblade of Gothmog (-20)
+The Long Sword 'Durandil' (+3)
+The Phial of Undeath (-5)
+The Ring of Phasing (+15)
+The Blue Stone 'Toris Mejistos' (+2)
+The Silver Bolt 'Stone-biter' (+3)
+The Elven Cloak of Mellyrn (+4)
+The Set of Cesti 'Skycleaver' (+1)
+
+#####G4. What does it affect.
+It affects your chance to-hit in ranged combat and melee combat.
+
+It affects your chance of critical hits in ranged combat and melee combat.
+
+It affects your chance of being missed by a monster attack. This effectively
+changes armour class by -13 (incredibly unlucky) to +13 (incredibly lucky).
+
+It affects the rarity of special objects, artifacts, and ego items.
+
+It affects the number of wishes on a staff of wishing.
+
+It affects the base level for applying magic to an item.
+
+It affects the chance of an item being good or great.
+
+It affects the chance of creating a special object.
+
+It prevents the death fate if you are lucky.
+
+It affects the number of skill points you receive when quaffing the Potion of
+Learning.
+
+
+ Written for ToME 2.0 by Chris Hadgis
diff --git a/lib/help/m_air.txt b/lib/help/m_air.txt
new file mode 100644
index 00000000..ee9fa8d0
--- /dev/null
+++ b/lib/help/m_air.txt
@@ -0,0 +1,42 @@
+|||||oy
+~~~~~01|Magic|Air School
+~~~~~02|Air Magic
+~~~~~03|Skills|Air - Spell Info
+#####R === ToME Magic - Air School ===
+
+The air school of magic contains spells where the element of air is used
+to create the final spell effect. There are rumours of a "Tome of the Blowing
+Wind" which contains all the air school spells within its bindings.
+
+Worshipping the God Manwe Sulimo also gives the ability to cast spells from
+the air school at a level of 2/3 of your prayer level. E.g. if the skill
+"Spirituality: Prayer" is at level 12, you can cast up to level 8 air school
+spells.
+
+#####BAir Spells
+There are six spells available for the air school. These spells are:
+1. [[[[[BNoxious Cloud] (school level 3)
+ Creates a cloud of poison.
+ The cloud will persist for some turns, damaging all monsters passing by.
+ At spell level 30 it turns into a thick gas attacking all living beings.
+2. [[[[[BPoison Blood] (school level 12)
+ Grants resist poison.
+ At spell level 15 it provides poison branding to the wielded weapon.
+3. [[[[[BInvisibility] (school level 16)
+ Grants invisibility.
+4. [[[[[BSterilize] (school level 20)
+ Prevents explosive breeding for a while.
+5. [[[[[BWings of Winds] (dual school level 22)
+ Grants the power of levitation.
+ At spell level 16 it grants the power of controlled flight.
+#####v Your Air and Conveyance skills must have reached a combined average level
+#####v of 22 in order to cast this spell.
+6. [[[[[BThunderstorm] (dual school level 25)
+ Charges up the air around you with electricity.
+ Each turn it will throw a bolt of thunder at a random monster in sight.
+ This thunder does 3 types of damage:
+ one third of lightning
+ one third of sound
+ and one third of light.
+#####v Your Air and Nature skills must have reached a combined average level
+#####v of 25 in order to cast this spell.
diff --git a/lib/help/m_convey.txt b/lib/help/m_convey.txt
new file mode 100644
index 00000000..91ed8556
--- /dev/null
+++ b/lib/help/m_convey.txt
@@ -0,0 +1,71 @@
+|||||oy
+~~~~~01|Magic|Conveyance School
+~~~~~02|Conveyance Magic
+~~~~~03|Skills|Conveyance - Spell Info
+#####R === ToME Magic - Conveyance School ===
+
+The conveyance school of magic contains spells where the forces of space are
+manipulated by the spell. There are rumours of a "Tome of of Translocation"
+which contains all the conveyance school spells within its bindings.
+
+Worshipping the God Manwe Sulimo also gives the ability to cast spells from
+the conveyance school at a level of 1/2 of your prayer level. E.g. if the
+skill "Spirituality: Prayer" is at level 10, you can cast up to level 5
+conveyance school spells.
+
+#####sConveyance Spells
+There are six spells available for the conveyance school. These Spells are:
+1. [[[[[sPhase Door] (school level 1)
+ Teleports you on a small scale range.
+ At spell level 30 it creates void jumpgates.
+2. [[[[[sDisarm] (school level 3)
+ Destroys doors and disarms traps in adjacent tiles.
+ At spell level 10 it unlocks doors and disarms traps.
+3. [[[[[sTeleportation] (school level 10)
+ Teleports you around the level.
+ The casting time decreases with level.
+4. [[[[[sTeleport Away] (school level 23)
+ Teleports a line of monsters away.
+ At spell level 10 it turns into a ball.
+ At spell level 20 it teleports all monsters in sight.
+5. [[[[[sRecall] (school level 30)
+ Cast on yourself, it will recall you to the surface/dungeon.
+ Cast at a monster, it will make you swap positions with the monster.
+ Cast at an object, it will fetch the object to you (note that you must have
+ an empty space under your feet for the object to fall onto).
+6. [[[[[sProbability Travel] (school level 35)
+ Renders you unstable. When you hit a wall you travel through it and
+ instantly appear on the other side of it. You can also float up and down
+ at will.
+
+#####GAir spells that can be cast with Conveyance skill
+
+1. [[[[[BWings of Winds] (dual school level 22)
+ Grants the power of levitation.
+ At spell level 16 it grants the power of controlled flight.
+#####v Your Air and Conveyance skills must have reached a combined average level
+#####v of 22 in order to cast this spell.
+
+#####GTemporal spells that can be cast with Conveyance skill
+
+1. [[[[[sBanishment] (dual school level 30)
+ Disrupts the space/time continuum in your area and teleports all monsters
+ away.
+ At spell level 15 it also may lock them in a time bubble for some turns.
+#####v Your Temporal and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
+
+#####GMeta spells that can be cast with Conveyance skill
+
+1. [[[[[sTracker] (dual school level 30)
+ Tracks down the last teleportation that happened on the level and teleports
+ you to it.
+#####v Your Meta and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
+
+#####GUdun spells that can be cast with Conveyance skill
+
+1. [[[[[DWraithform] (dual school level 30)
+ Turns you temporarily into an immaterial being.
+#####v Your Udun and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
diff --git a/lib/help/m_demono.txt b/lib/help/m_demono.txt
new file mode 100644
index 00000000..cb32d360
--- /dev/null
+++ b/lib/help/m_demono.txt
@@ -0,0 +1,44 @@
+|||||oy
+~~~~~01|Magic|Demonology School
+~~~~~02|Demonology Magic
+~~~~~03|Skills|Demonology - Spell Info
+#####R === ToME Magic - Demonology ===
+
+Available only to Demonologists, or those sufficiently corrupted with
+demon-like powers, this school contains spells where demonic energies
+are used to create mainly devastating effects.
+
+#####oDemonic equipment
+Unlike other magic schools, the spells of a Demonologist are not written
+in spell books, but are contained within items of demonic origin known as
+Demonblades, Demonshields, and Demonhorns (helms), which when wielded allow
+the Demonologist to cast spells; each piece of equipment holds three spells.
+
+#####oDemonblade spells
+1. [[[[[oDemon Blade] (school level 1)
+ Imbues your blade with fire to deal more damage.
+ At level 30 it deals hell fire damage.
+ At level 45 it spreads over a 1 radius zone around your target.
+2. [[[[[oDemon Madness] (school level 10)
+ Fire 2 balls in opposite directions of randomly chaos, confusion or charm.
+3. [[[[[oDemon Field] (school level 20)
+ Fires a lingering cloud of deadly nexus over a radius of 7.
+
+#####oDemonshield spells
+1. [[[[[oDoom Shield] (school level 1)
+ Raises a mirror of pain around you, doing very high damage to your foes
+ that dare hit you, but greatly reduces your armour class.
+2. [[[[[oDemon Cloak] (school level 20)
+ Raises a mirror that can reflect bolts and arrows for a time.
+3. [[[[[oUnholy Word] (school level 25)
+ Kills a pet to heal you. There is a chance that the pet won't die but will
+ turn against you. This chance will decrease with higher spell levels.
+
+#####oDemonhorn spells
+1. [[[[[oSummon Demon] (school level 5)
+ Summons a leveled demon to your side.
+ At level 35 it summons a high demon.
+2. [[[[[oDischarge Minion] (school level 10)
+ The targeted pet will explode in a burst of gravity.
+3. [[[[[oControl Demon] (school level 25)
+ Attempts to control a demon.
diff --git a/lib/help/m_divin.txt b/lib/help/m_divin.txt
new file mode 100644
index 00000000..9d3455fc
--- /dev/null
+++ b/lib/help/m_divin.txt
@@ -0,0 +1,37 @@
+|||||oy
+~~~~~01|Magic|Divination School
+~~~~~02|Divination Magic
+~~~~~03|Skills|Divination - Spell Info
+#####R === ToME Magic - Divination School ===
+
+The divination school of magic contains spells where magic is used to
+psychically gain information about things. There are rumours of a "Tome of
+Knowledge" which contains all the divination school spells within its bindings.
+
+Worshipping the God Eru Iluvatar also gives the ability to cast spells from
+the divination school at a level of 2/3 of your prayer level. E.g. if the
+skill "Spirituality: Prayer" is at level 12, you can cast up to level 8
+divination school spells.
+
+#####sDivination Spells
+There are six spells available for the divination school. These Spells are:
+1. [[[[[sSense Monsters] (school level 1)
+ Detects all monsters near you.
+ At spell level 30 it allows you to sense monster minds for a while.
+2. [[[[[sSense Hidden] (school level 5)
+ Detects the traps in a certain radius around you.
+ At spell level 15 it allows you to sense invisible monsters for a while.
+3. [[[[[sIdentify] (school level 8)
+ Asks for an object and identifies it.
+ At spell level 17 it identifies all objects in the inventory.
+ At spell level 27 it identifies all objects in the inventory and in a
+ radius on the floor, as well as probing monsters in that radius.
+4. [[[[[sReveal Ways] (school level 9)
+ Detects the doors/stairs/ways in a certain radius around you.
+5. [[[[[sVision] (school level 15)
+ Detects the layout of the surrounding area.
+ At spell level 25 it maps and lights the whole level.
+6. [[[[[sGreater Identify] (school level 35)
+ Asks for an object and fully identifies it, providing the full list of
+ powers (as with a scroll of *Identify*).
+ Cast at yourself, it will reveal your powers (Self Knowledge).
diff --git a/lib/help/m_earth.txt b/lib/help/m_earth.txt
new file mode 100644
index 00000000..9c5623c3
--- /dev/null
+++ b/lib/help/m_earth.txt
@@ -0,0 +1,35 @@
+|||||oy
+~~~~~01|Magic|Earth School
+~~~~~02|Earth Magic
+~~~~~03|Skills|Earth - Spell Info
+#####R === ToME Magic - Earth School ===
+
+The earth school of magic contains spells where the element of earth is used
+to create the final spell effect. There are rumours of a "Tome of the
+Impenetrable Earth" which contains all the earth school spells within its
+bindings.
+
+Worshipping the God Tulkas or the Goddess Yavanna Kementari also gives the
+ability to cast spells from the earth school, at a level of 4/5 or 1/2,
+respectively, of your prayer level. E.g. if the skill "Spirituality: Prayer"
+is at level 10, a worshipper of Tulkas can cast up to level 8 earth school
+spells, whereas a worshipper of Yavanna can cast up to level 5 earth school
+spells.
+
+#####uEarth Spells
+There are five spells available for the earth school. These Spells are:
+1. [[[[[uStone Skin] (school level 1)
+ Creates a shield of earth around you to protect you.
+ At spell level 25 it starts dealing damage to attackers.
+2. [[[[[uDig] (school level 12)
+ Digs a hole in a wall much faster than any shovels.
+3. [[[[[uStone Prison] (school level 25)
+ Creates a prison of walls around you.
+ At spell level 10 it allows you to target a monster.
+4. [[[[[uShake] (school level 27)
+ Creates a localised earthquake.
+ At spell level 10 it can be targeted at any location.
+5. [[[[[uStrike] (school level 30)
+ Creates a micro-ball of force that will push monsters backwards.
+ If the monster is caught near a wall, it'll be crushed against it.
+ At spell level 12 it turns into a ball of radius 1.
diff --git a/lib/help/m_fire.txt b/lib/help/m_fire.txt
new file mode 100644
index 00000000..7ddda433
--- /dev/null
+++ b/lib/help/m_fire.txt
@@ -0,0 +1,49 @@
+|||||oy
+~~~~~01|Magic|Fire School
+~~~~~02|Fire Magic
+~~~~~03|Skills|Fire - Spell Info
+#####R === ToME Magic - Fire School ===
+
+The fire school of magic contains spells where the element of fire is used
+to create the final spell effect. There are rumours of a "Tome of the Eternal
+Flame" which contains all the fire school spells within its bindings.
+
+#####RFire Spells
+There are five spells available for the fire school. These spells are:
+1. [[[[[RGlobe of Light] (school level 1)
+ Creates a globe of pure light.
+ At spell level 3 it starts damaging monsters.
+ At spell level 15 it starts creating a more powerful kind of light.
+2. [[[[[RFire Golem] (dual school level 7)
+ Creates a fiery golem and controls it.
+ During the control the available keylist is:
+ Movement keys: move the golem (depending on its speed it can move more
+ than one square).
+ , : pickup all items on the floor
+ d : drop all carried items
+ i : list all carried items
+ m : end the possession/use golem powers
+ Most of the other keys are disabled; you cannot interact with your
+ real body while controlling the golem.
+ But to cast the spell you will need a lantern or a wooden torch to create
+ the golem.
+#####v Your Fire and Mind skills must have reached a combined average level
+#####v of 7 in order to cast this spell.
+3. [[[[[RFireflash] (school level 10)
+ Conjures a ball of fire to burn your foes to ashes.
+ At spell level 20 it turns into a ball of holy fire.
+4. [[[[[RFirewall] (school level 15)
+ Creates a fiery wall to incinerate monsters stupid enough to attack you.
+ At spell level 6 it turns into a wall of hell fire.
+5. [[[[[RFiery Shield] (school level 20)
+ Creates a shield of fierce flames around you.
+ At spell level 8 it turns into a greater kind of flame that cannot be
+ resisted by your foes.
+
+
+#####GUdun spells that can be cast with Fire skill
+
+1. [[[[[DFlame of Udun] (dual school level 35)
+ Turns you temporarily into a powerful Balrog.
+#####v Your Fire and Udun skills must have reached a combined average level
+#####v of 35 in order to cast this spell.
diff --git a/lib/help/m_geoman.txt b/lib/help/m_geoman.txt
new file mode 100644
index 00000000..97c1ac1a
--- /dev/null
+++ b/lib/help/m_geoman.txt
@@ -0,0 +1,75 @@
+|||||oy
+~~~~~01|Magic|Geomancy
+~~~~~02|Geomancer|Geomancy spells
+~~~~~03|Skills|Geomancy - Spell Info
+#####R === ToME Magic - Geomancy ===
+Geomancy harnesses the power of nature to awesome effect. Therefore neither
+books nor light are necessary, and as the geomancers's skill increases, so do
+his powers over the elements of nature.
+
+Because Geomancy relies so heavily on the environment, you will need
+sufficient knowledge of the elemental skills (Earth, Air, Fire and Water) in
+order to cast some of the spells, and the exact effects of a spell often
+depend upon your levels in the elemental skills and your current surroundings.
+
+The powers are accessed using the 'm' key and then selecting 'Use Geomancy';
+they are cast with spell points, like normal spells, which can be increased
+as usual through the *****skills.txt*21[Magic] skill.
+
+1. [[[[[RCall] [[[[[GThe] [[[[[BElements] (Level 1) Cost:2
+ Randomly creates various elements around you.
+ The chance for each type of element is controlled by your level in the
+ corresponding skill.
+ At level 17 it can be targeted.
+
+2. [[[[[UChannel] [[[[[GElements] (Level 3) Cost:3
+ Draws on the caster's immediate environs to form an attack or other effect.
+ Grass/Flower heals.
+ Water creates water bolt attacks.
+ Ice creates ice bolt attacks.
+ Sand creates a wall of burning sand around you, but the wall is thick and
+ blinds you.
+ Lava creates fire bolt attacks.
+ Deep lava creates fire ball attacks.
+ Chasm creates darkness bolt attacks.
+ At Earth level 18, darkness becomes nether.
+ At Water level 8, water attacks become beams with a striking effect.
+ At Water level 12, ice attacks become balls of ice shards.
+ At Water level 18, water attacks push monsters back.
+ At Fire level 15, fire becomes hellfire.
+
+3. [[[[[RElemental] [[[[[BWave] (Level 15) Cost:15
+ Draws on an adjacent special square to project a slow-moving wave of that
+ element in that direction.
+ Abyss squares cannot be channeled into a wave.
+
+4. [[[[[UElemental] [[[[[RMinion] (Level 20) Cost:40
+ Summons a minion from a nearby element.
+ Walls can summon Earth elmentals, Xorns and Xarens.
+ Dark Pits can summon Air elementals, Ancient blue dragons, Great Storm Wyrms
+ and Sky Drakes.
+ Sandwalls and lava can summon Fire elementals and Ancient red dragons.
+ Icewalls and water can summon Water elementals, Water trolls and Water
+ demons.
+
+5. [[[[[GVaporize] (Level 4) Cost:3
+ Draws upon your immediate environs to form a cloud of damaging vapors.
+#####v You must have reached at least level 4 in the Air skill to cast this
+#####v spell.
+
+6. [[[[[UGeolysis] (Level 7) Cost:15
+ Burrows deeply and slightly at random into a wall, leaving behind tailings
+ of various different sorts of walls in the passage.
+#####v You must have reached at least level 7 in the Earth skill to cast this
+#####v spell.
+
+7. [[[[[BDripping Tread] (Level 10) Cost:15
+ Causes you to leave random elemental forms behind as you walk.
+#####v You must have reached at least level 10 in the Water skill to cast this
+#####v spell.
+
+8. [[[[[UGrow Barrier] (Level 12) Cost:30
+ Creates impassable terrain (walls, trees, etc.) around you.
+ At air level 20 it can be projected around another area.
+#####v You must have reached at least level 12 in the Earth skill to cast this
+#####v spell.
diff --git a/lib/help/m_mana.txt b/lib/help/m_mana.txt
new file mode 100644
index 00000000..d4634e0e
--- /dev/null
+++ b/lib/help/m_mana.txt
@@ -0,0 +1,39 @@
+|||||oy
+~~~~~01|Magic|Mana School
+~~~~~02|Mana Magic
+~~~~~03|Skills|Mana - Spell Info
+#####R === ToME Magic - Mana School ===
+
+The mana school of magic contains spells where the raw force of magic is used
+to create the final spell effect. There are rumours of a "Tome of Magical
+Energy" which contains all the mana school spells within its bindings.
+
+Worshipping the God Eru Iluvatar also gives the ability to cast spells from
+the mana school at a level of 1/2 of your prayer level. E.g. if the skill
+"Spirituality: Prayer" is at level 10, you can cast up to level 5 mana school
+spells.
+
+#####sMana Spells
+There are four spells available for the mana school. These spells are:
+1. [[[[[sManathrust] (school level 1)
+ Conjures up mana into a powerful bolt.
+ The damage is irresistible and will increase with spell level.
+2. [[[[[sRemove Curses] (school level 10)
+ Removes curses of worn objects.
+ At spell level 20, removes heavy curses.
+3. [[[[[sElemental Shield] (school level 20)
+ Provides resistance to the four basic elements.
+4. [[[[[sDisruption Shield] (school level 45)
+ Uses mana instead of hitpoints to take damage.
+ At spell level 5 switches to Globe of Invulnerability.
+ The spell breaks as soon as a melee, shooting, throwing or magical skill
+ action is attempted, and lasts only a short time otherwise.
+
+
+#####GUdun spells that can be cast with Mana skill
+
+1. [[[[[DDrain] (dual school level 1)
+ Drains the mana contained in wands, staves and rods to increase yours.
+#####v Your Mana and Udun skills must have reached a combined average level
+#####v of 1 in order to cast this spell.
+
diff --git a/lib/help/m_meta.txt b/lib/help/m_meta.txt
new file mode 100644
index 00000000..f5570a2a
--- /dev/null
+++ b/lib/help/m_meta.txt
@@ -0,0 +1,75 @@
+|||||oy
+~~~~~01|Magic|Meta School
+~~~~~02|Meta Magic
+~~~~~03|Skills|Meta - Spell Info
+#####R === ToME Magic - Meta School ===
+
+The meta school of magic contains spells where the raw forces of magic are
+manipulated by the spell. There are rumours of a "Tome of Meta Spells" which
+contains all the meta school spells within its bindings.
+
+Worshipping the God Manwe Sulimo also gives the ability to cast spells from
+the meta school at a level of 1/3 of your prayer level. E.g. if the skill
+"Spirituality: Prayer" is at level 15, you can cast up to level 5 meta school
+spells.
+
+#####sMeta Spells
+There are five spells available for the meta school. These spells are:
+1. [[[[[sRecharge] (school level 5)
+ Taps the ambient mana to recharge an object's power (charges or mana).
+2. [[[[[sDisperse Magic] (school level 15)
+ Dispels a lot of magic that can affect you, be it good or bad:
+ Spell Level 1: blindness and light.
+ Spell Level 5: confusion and hallucination.
+ Spell Level 10: speed (either bad or good) and light speed.
+ Spell Level 15: stunning, meditation and cuts.
+ Spell Level 20: heroism, super heroism, blessing, shields, fear, parasites
+ and mimicry.
+3. [[[[[sSpellbinder] (school level 20)
+ Stores spells in a trigger.
+ When the condition is met all spells fire off at the same time. This spell
+ takes a long time to cast so you are advised to prepare it in a safe area.
+ Also it will use the mana for the Spellbinder and the mana for the selected
+ spells.
+4. [[[[[sTracker] (dual school level 30)
+ Tracks down the last teleportation that happened on the level and teleports
+ you to it.
+#####v Your Meta and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
+5. [[[[[sInertia Control] (school level 37)
+ Changes the energy flow of a spell to be continuously recasted at a given
+ interval. The inertia-controlled spell reduces your maximum mana by four
+ times its cost.
+
+#####R=== List of Controllable Spells ===
+ Armor of Fear
+ Banishment
+ Disperse Magic
+ Disruption Shield
+ Elemental Shield
+ Ent's Potion
+ Essence of Speed
+ Fiery Shield
+ Flame of Udun
+ Globe of Light
+ Grow Trees
+ Ice Storm
+ Invisibility
+ Phase Door
+ Poison Blood
+ Probability Travel
+ Recovery
+ Regeneration
+ Remove Curses
+ Reveal Ways
+ Sense Hidden
+ Sense Monsters
+ Shake
+ Stone Skin
+ Teleportation
+ Thunderstorm
+ Tidal Wave
+ Vapor
+ Vision
+ Wings of Winds
+ Wraithform
diff --git a/lib/help/m_mimic.txt b/lib/help/m_mimic.txt
new file mode 100644
index 00000000..79d39521
--- /dev/null
+++ b/lib/help/m_mimic.txt
@@ -0,0 +1,33 @@
+|||||oy
+~~~~~01|Magic|Mimicry
+~~~~~02|Mimic|Mimicry powers
+~~~~~03|Skills|Mimicry - mimicry powers
+#####R === ToME Magic - Mimicry ===
+Mimics can alter their form using special cloaks called cloaks of mimicry.
+Even though this ability can give them access to increased stats, regeneration,
+speed and resistances, there is always the risk of the shape-change going
+horribly wrong, turning the character into an abomination for some time.
+Also, you should keep in mind that any racial power or stat modifier is
+overridden during the shape-shift.
+
+As your mimicry skill increases, your character is less likely to spoil
+the transformation attempt and may even gain other powers, such as making
+his colouration match his surroundings (becoming in all respects invisible)
+or even stranger abilities... rumours abound about Tarka the Chameleon and
+her two pairs of boots of speed.
+
+The powers are accessed using the 'm' key and then selecting 'Use Mimicry';
+they are cast with spell points, like normal spells, which can be increased
+as usual through the *****skills.txt*21[Magic] skill.
+
+1. [[[[[sMimic] (Level 1) Cost:2
+ Allows you to mimic the creature whose cloak you are wearing for a time.
+2. [[[[[sInvisibility] (Level 10) Cost:6
+ Turns you invisible for a time.
+3. [[[[[sLegs Mimicry] (Level 25) Cost:20
+ Gives you an additional set of legs for a time.
+4. [[[[[sWall Mimicry] (Level 30) Cost:40
+ Allows you to move within walls, and [[[[[Bonly] walls, for a time.
+[[[[[v Be careful you don't get stuck in a wall when it runs out.]
+5. [[[[[sArms Mimicry] (Level 35) Cost:100
+ Gives you an additional set of arms for a time.
diff --git a/lib/help/m_mind.txt b/lib/help/m_mind.txt
new file mode 100644
index 00000000..b6c1196f
--- /dev/null
+++ b/lib/help/m_mind.txt
@@ -0,0 +1,49 @@
+|||||oy
+~~~~~01|Magic|Mind School
+~~~~~02|Mind Magic
+~~~~~03|Skills|Mind - Spell Info
+#####R === ToME Magic - Mind School ===
+
+The mind school of magic contains spells which alter the mind. There are
+rumours of a "Tome of the Mind" which contains all the mind school spells
+within its bindings.
+
+Worshipping the God Eru Iluvatar or the God Melkor Bauglir also gives the
+ability to cast spells from the mind school at a level of 1/3 of your prayer
+level. E.g. if the skill "Spirituality: Prayer" is at level 12, you can cast
+up to level 4 mind school spells.
+
+#####sMind Spells
+There are four spells available for the mind school. These spells are:
+1. [[[[[sCharm] (school level 1)
+ Tries to manipulate the mind of a monster to make it friendly.
+ At spell level 15 it turns into a ball.
+ At spell level 35 it affects all monsters in sight.
+2. [[[[[sConfuse] (school level 5)
+ Tries to manipulate the mind of a monster to confuse it.
+ At spell level 15 it turns into a ball.
+ At spell level 35 it affects all monsters in sight.
+3. [[[[[sArmor of Fear] (school level 10)
+ Creates a shield of pure fear around you. Any monster attempting to hit
+ you must save or flee.
+4. [[[[[sStun] (school level 15)
+ Tries to manipulate the mind of a monster to stun it.
+ At spell level 20 it turns into a ball.
+
+#####GFire spells that can be cast with Mind skill
+
+1. [[[[[RFire Golem] (school level 7)
+ Creates a fiery golem and controls it.
+ During the control the available keylist is:
+ Movement keys: move the golem (depending on its speed it can move more
+ than one square).
+ , : pickup all items on the floor
+ d : drop all carried items
+ i : list all carried items
+ m : end the possession/use golem powers
+ Most of the other keys are disabled; you cannot interact with your
+ real body while controlling the golem.
+ But to cast the spell you will need a lantern or a wooden torch to create
+ the golem.
+#####v Your Fire and Mind skills must have reached a combined average level
+#####v of 7 in order to cast this spell.
diff --git a/lib/help/m_mindcr.txt b/lib/help/m_mindcr.txt
new file mode 100644
index 00000000..4f420656
--- /dev/null
+++ b/lib/help/m_mindcr.txt
@@ -0,0 +1,54 @@
+|||||oy
+~~~~~01|Magic|Mindcraft
+~~~~~02|Mindcrafter|Mindcraft powers
+~~~~~03|Skills|Mindcraft - Spell Info
+#####R === ToME Magic - Mindcraft ===
+Mindcrafting uses the power of the mind to cast its spells. Therefore neither
+books nor light are necessary, and as the mindcrafter's skill increases, so do
+the powers of his mind.
+
+The powers are accessed using the 'm' key and then selecting 'Use Mindcraft';
+they are cast with spell points, like normal spells, which can be increased
+as usual through the *****skills.txt*21[Magic] skill.
+
+1. [[[[[sPrecognition] (Level 1) Cost:1
+ Detects monster minds around you.
+ At level 5 it also detects traps.
+ At level 15 it also allows you to see invisible monsters for a time.
+ At level 20 it maps out the surrounding area.
+ At level 25 it gives you ESP for a time.
+ At level 30 it also detects objects and treasure.
+ At level 45 it fully shows the entire level.
+2. [[[[[sNeural blast] (Level 2) Cost:1
+ Fires a bolt or beam, to stun and damage monsters.
+3. [[[[[sMinor Displacement] (Level 3) Cost:2
+ Teleports you a short distance.
+ At level 25 it grants the ability to create void jumpgates.
+4. [[[[[sMajor Displacement] (Level 7) Cost:6
+ Teleports you a good distance.
+ At level 30 it also banishes the monsters around you.
+5. [[[[[sDomination] (Level 9) Cost:7
+ Attempts to dominate the minds of your foes, scaring them.
+ At level 30 it attempts to charm monsters.
+6. [[[[[sPulverise] (Level 11) Cost:7
+ Fires pure sound at your opponents, crushing their bodies.
+7. [[[[[sCharacter Armour] (Level 13) Cost:12
+ Raises a physical shield around your body.
+ At level 15 it also grants resistance to acid.
+ At level 20 it also grants resistance to fire.
+ At level 25 it also grants resistance to cold.
+ At level 30 it also grants resistance to electricity.
+ At level 35 it also grants resistance to poison.
+8. [[[[[sPsychometry] (Level 15) Cost:12
+ Senses the quality of an item.
+ At level 40 it identifies an item.
+9. [[[[[sMindwave] (Level 18) Cost:10
+ Blasts the minds of monsters close to you.
+ At level 25 it affect all monsters in line of sight.
+10.[[[[[sAdrenaline Channeling] (Level 23) Cost:15
+ Heals you, hastes you and cures you.
+11.[[[[[sPsychic Drain] (Level 25) Cost:10
+ Drains the life of your foes into your mana reserves.
+12.[[[[[sTelekinesis] (Level 28) Cost:20
+ Projects a wave of pure telekinetic force from your body, damaging and maybe
+ banishing monsters.
diff --git a/lib/help/m_music.txt b/lib/help/m_music.txt
new file mode 100644
index 00000000..0f84f08f
--- /dev/null
+++ b/lib/help/m_music.txt
@@ -0,0 +1,77 @@
+|||||oy
+~~~~~01|Magic|Music
+~~~~~02|Music
+~~~~~03|Skills|Music - Song Info
+#####R === ToME Spells - Music ===
+
+Musical songs can have powerful effects for those who have the ability to
+play instruments, chiefly *****c_bard.txt*0[Bards].
+
+In order to continue playing a song, mana is consumed each turn, until
+either the 'Stop Singing' song is sung, or the player's mana runs out.
+
+Each song, as well as having a school level like any other magic spell, also
+has a roman numeral following its name. The higher this number, the greater the
+craftmanship of the instrument required to play it.
+
+Each musical instrument has a value assigned to it as well, between 1 and 4. The
+higher the number, the better the craftmanship; hence it will be possible
+for the bard to play higher level songs only with more powerful instruments.
+E.g. a Harp(+1) will allow you to cast "Stop Singing(I)" and "Song of the
+Sun(I)". A Harp(+2) would allow you to sing those songs, as well as "Flow of
+Life(II)".
+
+There are 3 different types of instruments: Harps, Drums and Horns. Each type
+of instrument contains a different family of musical songs:
+
+
+#####vMusical Songs
+
+#####GAll Instruments
+1. [[[[[vStop Singing(I)] (school level 1)
+ Stops the current song, if any.
+
+#####GDrums
+1. [[[[[vHolding Pattern(I)] (school level 1)
+ Slows down all monsters listening the song.
+ Consumes mana each turn.
+2. [[[[[vIllusion Pattern(II)] (school level 5)
+ Tries to confuse all monsters listening the song.
+ Consumes mana each turn.
+3. [[[[[vStun Pattern(IV)] (school level 10)
+ Stuns all monsters listening to the song.
+ Consumes mana each turn.
+
+#####GHarps
+1. [[[[[vSong of the Sun(I)] (School level 1)
+ Provides light as long as you sing.
+ Consumes mana each turn.
+2. [[[[[vFlow of Life(II)] (School level 5)
+ Heals you as long as you sing.
+ Consumes mana each turn.
+3. [[[[[vHeroic Ballad(II)] (School level 10)
+ Increases melee accuracy.
+ At level 10 it increases it even more and reduces armour a bit.
+ At level 20 it increases it still more.
+ At level 25 it grants protection against chaos and confusion.
+ Consumes mana each turn.
+4. [[[[[vHobbit Melodies(III)] (School level 20)
+ Greatly increases your reflexes allowing you to block more melee blows.
+ At level 15 it also makes you faster.
+ Consumes mana each turn.
+5. [[[[[vClairaudience(IV)] (School level 25)
+ Allows you to sense monster minds as long as you sing.
+ At level 10 it identifies all objects in a radius on the floor,
+ as well as probing monsters in that radius.
+ Consumes mana each turn.
+
+#####GHorns
+1. [[[[[vBlow(I)] (School level 4)
+ Produces a powerful, blowing sound all around you.
+2. [[[[[vGush of Wind (II)] (School level 14)
+ Produces a outgoing gush of wind that sends monsters away.
+3. [[[[[vHorns of Ylmir(III)] (School level 20)
+ Produces an earth-shaking sound.
+4. [[[[[vAmbarkanta(IV)] (School level 25)
+ Produces a reality-shaking sound that transports you to a nearly
+ identical reality.
diff --git a/lib/help/m_nature.txt b/lib/help/m_nature.txt
new file mode 100644
index 00000000..3de854e1
--- /dev/null
+++ b/lib/help/m_nature.txt
@@ -0,0 +1,53 @@
+|||||oy
+~~~~~01|Magic|Nature School
+~~~~~02|Nature Magic
+~~~~~03|Skills|Nature - Spell Info
+#####R === ToME Magic - Nature School ===
+
+The nature school of magic contains spells that interact with nature. There
+are rumours of a "Tome of the Tree" which contains all the nature school
+spells within its bindings.
+
+Worshipping the Goddess Yavanna Kementari also gives the ability to cast spells
+from the nature school at a level of 1/2 of your prayer level. E.g. if the skill
+"Spirituality: Prayer" is at level 10, you can cast up to level 5 nature school
+spells.
+
+#####GNature Spells
+There are five spells available for the nature school. These spells are:
+1. [[[[[GGrow Trees] (dual school level 6)
+ Makes trees grow extremely quickly around you.
+#####v Your Nature and Temporal skills must have reached a combined average level
+#####v of 6 in order to cast this spell.
+2. [[[[[GHealing] (school level 10)
+ Heals a portion of your hitpoints.
+3. [[[[[GRecovery] (school level 15)
+ Reduces the length of time that you are poisoned.
+ At spell level 5 it cures poison and cuts.
+ At spell level 10 it restores drained stats.
+ At spell level 15 it restores lost experience.
+4. [[[[[GRegeneration] (school level 20)
+ Increases your body's regeneration rate.
+5. [[[[[GSummon Animal] (school level 25)
+ Summons a leveled animal to your aid.
+
+
+#####GAir spells that can be cast with Nature skill
+
+1. [[[[[BThunderstorm] (dual school level 25)
+ Charges up the air around you with electricity.
+ Each turn it will throw a bolt of thunder at a random monster in sight.
+ This thunder does 3 types of damage:
+ one third of lightning
+ one third of sound
+ and one third of light.
+#####v Your Nature and Air skills must have reached a combined average level
+#####v of 25 in order to cast this spell.
+
+#####GUdun spells that can be cast with Nature skill
+
+1. [[[[[DGenocide] (dual school level 25)
+ Genocides all monsters of a specified race on the level.
+ At level 10 it can genocide all monsters near you.
+#####v Your Nature and Udun skills must have reached a combined average level
+#####v of 25 in order to cast this spell.
diff --git a/lib/help/m_necrom.txt b/lib/help/m_necrom.txt
new file mode 100644
index 00000000..8de4fd37
--- /dev/null
+++ b/lib/help/m_necrom.txt
@@ -0,0 +1,35 @@
+|||||oy
+~~~~~01|Magic|Necromancy
+~~~~~02|Necromancy Magic
+~~~~~03|Skills|Necromancy - Spell Info
+#####R === ToME Magic - Necromancy ===
+The art of Necromancy is the foul practice of manipulating the life
+force of creatures.
+
+Necromancy powers are accessed using the 'm' key and then selecting
+'Use Necromancy'; they are cast with Spell Points, like normal spells,
+and do not need light to be performed.
+
+1. [[[[[DHorrify] (Level 1) Cost:2
+ Calls upon the dark forces and opens a channel into the mind of a
+ monster, stunning and scaring it.
+ At level 21 it affects all monsters in a beam.
+ At level 36 it affects all monsters in a ball.
+ At level 46 it affects all monsters in sight.
+2. [[[[[DRaise Dead] (Level 5) Cost:6
+ This power makes corpses in a small radius around the caster rise as
+ undead ego monsters at the service of the caster. The loyalty of those
+ monsters is not guaranteed, though. It also heals all monsters within the
+ same radius.
+3. [[[[[DNecromantic Teeth] (Level 12) Cost:20
+ This conjures up a temporary vampiric weapon.
+4. [[[[[DAbsorb Soul] (Level 20) Cost:10
+ This heals you by a substantial amount every time you kill a monster within
+ its duration. It is especially useful when your character is in
+ *****ability.txt*12[Undead Form].
+5. [[[[[DVampirism] (Level 30) Cost:15
+ Drains part of the life-force from a nearby monster and gives it to you.
+6. [[[[[DDeath] (Level 35) Cost:100
+ Yes, the name is not nice. Neither are the effects: the target dies
+ immediately, but so does your character (note that death is not such a great
+ annoyance for necromancers).
diff --git a/lib/help/m_symbio.txt b/lib/help/m_symbio.txt
new file mode 100644
index 00000000..b7e04632
--- /dev/null
+++ b/lib/help/m_symbio.txt
@@ -0,0 +1,50 @@
+|||||oy
+~~~~~01|Magic|Symbiosis
+~~~~~02|Symbiosis Magic
+~~~~~03|Skills|Symbiosis - Symbiotic Powers
+#####R === ToME Magic - Symbiosis ===
+
+Symbiosis is the art of joining body, fate and sometimes even mind with
+creatures not capable of moving on their own.
+
+While a humble student of the Craft of Slime (as it's sometimes called)
+has very few options apart from asking the symbiote to help him in combat,
+master practitioners have access to an incredible array of tricks.
+
+Once hypnotised, the monster is placed onto the body, or "worn", in order to
+initiate the symbiotic relationship.
+
+#####uSymbiotic Powers
+There are nine powers a symbiant can develop. They are:
+1. [[[[[uHypnotize] (level 1) Cost:1
+ The very basis of symbiosis itself, this asks a monster to lower its
+ natural defences so that it can be safely "worn".
+2. [[[[[uRelease] (level 1) Cost:1
+ Sometimes even life-long friends part. This power allows you to revert
+ a monster on the floor to its primal state, even though the shock of waking
+ up will lower it to 0 HP.
+3. [[[[[uCharm never-moving] (level 3) Cost:2
+ A symbiant soon learns to communicate with molds and slimes.
+ This power allows him to gain the "friendship" of such a creature.
+4. [[[[[uLife share] (level 5) Cost:5
+ The cells of the symbiant and the symbiote intermingle, spreading damage
+ evenly among the two organisms.
+5. [[[[[uUse minor powers] (level 10) Cost:10
+ Allows you to tap into minor magic abilities provided by your symbiote
+ such as Blink or Slow.
+6. [[[[[uHeal symbiote] (level 15) Cost:14
+ Consciously altering the metabolism of your symbiote, you can urge its
+ bodily structure to repair itself almost instantaneously.
+7. [[[[[uUse major powers] (level 25) Cost:30
+ Highly intelligent slimes such as Quylthulgs may be more than willing to
+ employ their summoning or teleporting powers on your behalf; this power
+ can also call upon the abilities normally invoked by "Use minor powers"
+ (but this would be a waste of mana).
+8. [[[[[uSummon never-moving pet] (level 30) Cost:35
+ By releasing certain chemicals in the air, a symbiant can attract the
+ attention of slimes and mold; the better specimens are found in deeper
+ dungeons, of course.
+9. [[[[[uForce symbiosis] (level 40) Cost:60
+ An expert symbiant has such control over the cells of primitive
+ life-forms that he can temporarily "charm" part of them, thus forcing
+ their powers to manifest at his own advantage.
diff --git a/lib/help/m_tempo.txt b/lib/help/m_tempo.txt
new file mode 100644
index 00000000..d0b5a1fa
--- /dev/null
+++ b/lib/help/m_tempo.txt
@@ -0,0 +1,41 @@
+|||||oy
+~~~~~01|Magic|Temporal School
+~~~~~02|Temporal Magic
+~~~~~03|Skills|Temporal - Spell Info
+#####R === ToME Magic - Temporal School ===
+
+The temporal school of magic contains spells where magic is used to meddle
+in the relationship between time and space. There are rumours of a "Tome of
+the Time" which contains all the temporal school spells within its bindings.
+
+Worshipping the Goddess Yavanna Kementari also gives the ability to cast spells
+from the temporal school at a level of 1/6 of your prayer level. E.g. if the
+skill "Spirituality: Prayer" is at level 12, you can cast up to level 2
+temporal school spells.
+
+
+#####sTemporal Spells
+There are four spells available for the temporal school. These Spells are:
+1. [[[[[sMagelock] (school level 1)
+ Magically locks a door.
+ At spell level 30 it creates a glyph of warding.
+ At spell level 40 the glyph can be placed anywhere in the field of vision.
+2. [[[[[sSlow Monster] (school level 10)
+ Magically slows down the passing of time around a monster.
+ At level 20 it affects a zone.
+3. [[[[[sEssence of Speed] (school level 15)
+ Magically decreases the passing of time around you, allowing you to move
+ and act more quickly with respect to the rest of the universe.
+4. [[[[[sBanishment] (school level 30)
+ Disrupts the space/time continuum in your area and teleports all monsters
+ away.
+ At spell level 15 it also may lock them in a time bubble for some turns.
+#####v Your Temporal and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
+
+#####GNature spells that can be cast with Temporal skill
+
+1. [[[[[GGrow Trees] (dual school level 6)
+ Makes trees grow extremely quickly around you.
+#####v Your Nature and Temporal skills must have reached a combined average level
+#####v of 6 in order to cast this spell.
diff --git a/lib/help/m_thaum.txt b/lib/help/m_thaum.txt
new file mode 100644
index 00000000..253d52be
--- /dev/null
+++ b/lib/help/m_thaum.txt
@@ -0,0 +1,31 @@
+|||||oy
+~~~~~01|Magic|Thaumaturgy
+~~~~~02|Thaumaturgical Magic
+~~~~~03|Skills|Thaumaturgy - Spell Info
+#####R === ToME Magic - Thaumaturgy ===
+
+Thaumaturgy is a different type of magic where the spells learnt are not
+restricted to one school, nor are they read out of spellbooks. Each time an
+adventurer increases her thaumaturgy skill, she gains access to a few
+[[[[[Rrandom] attack spells, each one automatically "learnt" at a specific
+casting level. Since she doesn't need spellbooks, she does not end up with
+inventory slots being filled up so quickly by the necessary items for safe
+exploration of the dungeon, and can therefore collect more loot.
+
+The downside of this is that she has no ability to choose what spells she
+learns, and no ability to improve the power of a learnt spell. So, a bolt
+spell with damage 1d5 will remain at 1d5 damage for the whole game. And the
+spells learnt are *all* attack spells of some sort (remembering that things
+like light and stone-to-mud can damage some monsters) - so no teleporting, no
+identify, no healing spells are learnt. At most, some wall creation may be
+employed.
+
+Thaumaturgist use their magic through the 'm' key. They then select a general
+group of spells, followed by a specific spell.
+
+Thaumaturgy spells can take the form of:
+- a bolt, targeted at a single location;
+- a beam, which hits all monsters in a line;
+- a ball (either centred on the caster or targetable);
+- an meteor strike (multiple balls in the vicinity of the caster);
+- a spell that affects all monsters in line of sight.
diff --git a/lib/help/m_udun.txt b/lib/help/m_udun.txt
new file mode 100644
index 00000000..a903d9f9
--- /dev/null
+++ b/lib/help/m_udun.txt
@@ -0,0 +1,35 @@
+|||||oy
+~~~~~01|Magic|Udun School
+~~~~~02|Udun Magic
+~~~~~03|Skills|Udun - Spell Info
+#####R === ToME Magic - Udun School ===
+
+The Udun school of magic contains spells where the corrupted forces of Melkor
+Bauglir are used to create the final spell effect. There are rumours of an
+"Unholy Tome of the Hellflame" which contains all the Udun school spells within
+its bindings.
+
+The Udun school is available only to worshippers of *****g_melkor.txt*0[Melkor Bauglir]. They will also
+need some proficiency in the magic schools of Mana, Nature, Conveyance, and Fire
+(or alternatively Sorcery) to cast the Udun spells. On the other hand, the spell
+power of Udun spells is greatly increased by the level of the caster.
+
+#####DUdun Spells
+There are four spells available for the Udun school. These spells are:
+1. [[[[[DDrain] (dual school level 1)
+ Drains the mana contained in wands, staves and rods to increase yours.
+#####v Your Udun and Mana skills must have reached a combined average level
+#####v of 1 in order to cast this spell.
+2. [[[[[DGenocide] (dual school level 25)
+ Genocides all monsters of a specified race on the level.
+ At level 10 it can genocide all monsters near you.
+#####v Your Udun and Nature skills must have reached a combined average level
+#####v of 25 in order to cast this spell.
+3. [[[[[DWraithform] (dual school level 30)
+ Turns you temporarily into an immaterial being.
+#####v Your Udun and Conveyance skills must have reached a combined average level
+#####v of 30 in order to cast this spell.
+4. [[[[[DFlame of Udun] (dual school level 35)
+ Turns you temporarily into a powerful Balrog.
+#####v Your Udun and Fire skills must have reached a combined average level
+#####v of 35 in order to cast this spell.
diff --git a/lib/help/m_water.txt b/lib/help/m_water.txt
new file mode 100644
index 00000000..5daee1b1
--- /dev/null
+++ b/lib/help/m_water.txt
@@ -0,0 +1,33 @@
+|||||oy
+~~~~~01|Magic|Water School
+~~~~~02|Water Magic
+~~~~~03|Skills|Water - Spell Info
+#####R === ToME Magic - Water School ===
+
+The water school of magic contains spells where the element of water is
+used to create the final spell effect. There are rumours of a "Tome of the
+Everrunning Wave" which contains all the water school spells within its
+bindings.
+
+Worshipping the Goddess Yavanna Kementari also gives the ability to cast spells
+from the water school at a level of 1/2 of your prayer level. E.g. if the skill
+"Spirituality: Prayer" is at level 10, you can cast up to level 5 water school
+spells.
+
+#####bWater Spells
+There are four spells available for the water school. These Spells are:
+1. [[[[[bGeyser] (school level 1)
+ Shoots a geyser of water from your fingertips.
+ Sometimes it can blast through its first target.
+2. [[[[[bVapor] (school level 2)
+ Fills the air with toxic moisture to wash away annoying creatures.
+3. [[[[[bEnt's Potion] (school level 6)
+ Fills up your stomach (i.e. satisfy hunger).
+ At spell level 5 it emboldens your heart (boldness).
+ At level 12 it make you heroic.
+4. [[[[[bTidal Wave] (school level 16)
+ Summons a monstrous tidal wave that will expand and crush monsters under
+ its mighty waves.
+5. [[[[[bIce Storm] (school level 22)
+ Engulfs you in a storm of roaring cold that strikes your foes.
+ At spell level 10 it turns into shards of ice.
diff --git a/lib/help/macrofaq.txt b/lib/help/macrofaq.txt
new file mode 100644
index 00000000..ea41129f
--- /dev/null
+++ b/lib/help/macrofaq.txt
@@ -0,0 +1,2366 @@
+|||||oy
+~~~~~43|Macros
+~~~~~44|Keymaps
+#####R======================================================================
+#####B ToME Macro FAQ
+
+ Original Angband Macro FAQ by Jim Lyon
+ (jplyon@attglobal.net)
+ 09-Dec-2000
+ Compiled from usenet postings to r.g.r.a
+ and Angband source & documentation
+
+#####B Edited by Dawnmist (angband@dawnmist.8m.com)
+#####B for PernAngband 5.x.x on 03-Aug-2001
+#####B with permission from Jim Lyon
+~~~~~30
+#####R======================================================================
+#####R1. Introduction
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G1.1 About this FAQ
+#####G----------------------------------------------------------------------
+
+This FAQ is mean to be a companion to the standard ToME help files
+for using inscriptions, macros, and keymaps. The ToME help files
+which also describe them are listed in the "References" section.
+
+This documentation is for ToME, version 4.2.x.
+
+#####B==================================
+#####B SPOILER ALERT
+#####B==================================
+
+This document gives some information on how the game does or doesn't
+work that might be considered spoiling.
+(Most players advanced enough to use macros probably won't notice.)
+
+#####G----------------------------------------------------------------------
+#####G1.2 Table of contents
+#####G----------------------------------------------------------------------
+
+ *****macrofaq.txt*30[1. Introduction]
+ *****macrofaq.txt*5[2. Quick start tutorial]
+ *****macrofaq.txt*32[3. Overview]
+ *****macrofaq.txt*33[4. Common macros and techniques]
+ *****macrofaq.txt*34[5. Common questions]
+ *****macrofaq.txt*35[6. Common problems]
+ *****macrofaq.txt*36[7. Inscriptions added by the game]
+ *****macrofaq.txt*37[8. Keys and commands]
+ *****macrofaq.txt*38[9. Pref files]
+*****macrofaq.txt*39[10. Macro editing commands]
+*****macrofaq.txt*20[11. Advanced macro techniques]
+*****macrofaq.txt*41[12. Problems]
+*****macrofaq.txt*42[13. Miscellaneous]
+
+#####G----------------------------------------------------------------------
+#####G1.3 Notation
+#####G----------------------------------------------------------------------
+
+#####BSingle Quotes (')
+These are generally used to delimit a single character to be typed in.
+These shouldn't by typed in themselves.
+
+#####BDouble Quotes (")
+These are generally used to delimit a sequence of characters to be
+typed in. These shouldn't by typed in themselves.
+
+#####BParentheses ( )
+These are generally used for single-key Angband commands.
+
+#####BBraces { }
+These are used to enclose inscriptions. These aren't typed in as part
+of inscribing an item. They are added by the interface.
+
+#####G= Special Keys =
+#####G-----------------------------------
+The following abbreviations are used in this document. These keys may
+be named differently or missing on some keyboards. Some keys may be
+duplicated. These abbreviations shouldn't be typed in literally. For
+example, when F1 is encountered in a string of keys to press it means
+to press the F1 function key, not 'F','1', unless otherwise stated.
+Additional special keys may be listed later.
+
+Alt Alt
+Ctrl Control
+Del Delete
+Esc Escape
+Enter Enter / Return
+F1 Function key F1, ...
+Shift Shift
+
+#####G= System abbreviations =
+#####G-----------------------------------
+Each system that ToME compiles on has a semi-standard 3-letter
+abbreviation. These are commonly referred to in the source and docs
+using "xxx" as a "wildcard" standing for any one of them. In this
+document "***" is used instead because there are actual generic files
+not associated with any specific system that use "xxx". Sometimes this
+refers to a feature instead of a specific system: "xxx" is used for a
+generic / default file, and "new" is used for Adam Bolt's tiles.
+
+~~~~~5
+#####R======================================================================
+#####R2. Quick Start Tutorial
+#####R======================================================================
+
+This section is designed to get you quickly using the most common
+keymaps and macros. Later sections explain the techniques used in more
+detail. These examples may not be the "best" ones to use in real play.
+
+#####G----------------------------------------------------------------------
+#####G2.0 Definitions
+#####G----------------------------------------------------------------------
+
+First, you should know some fundamental terms:
+
+Actions are sequences of keypresses that the game can recognise. They
+can't be recorded by the game, but must be input manually.
+
+Macros and keymaps map a keypress to an action. They can be used to
+customise the keyboard, reduce typing, and speed up game play. Macros
+must be used when the trigger key doesn't have a system-independent
+representation. Keymap actions can only contain underlying commands.
+[[[[[BMost customisation should be done with keymaps instead of macros when]
+[[[[[Bthere is a choice.]
+
+Inscriptions are "markings" which you can put on any game item. One
+use is to label items in a way that doesn't depend on inventory
+position. Another allows verifying the selection of an item. Under the
+right conditions they can save your life.
+
+#####G----------------------------------------------------------------------
+#####G2.1 Swap weapons
+#####G----------------------------------------------------------------------
+
+First inscribe your main weapon:
+(Press the following keys in sequence)
+
+1) { Inscribe an object
+2) * Show inventory list
+3) / Switch to equipment list
+4) a Main weapon slot
+5) @w0 Wield when object 0 is chosen
+6) (Hit Enter)
+
+Now inscribe the second weapon:
+
+1) { Inscribe an object
+2) * Show inventory list
+3) (Choose letter of second weapon)
+4) @w0 Wield when object 0 is chosen
+5) (Hit Enter)
+
+Finally, ToME (unlike standard 'Vanilla' Angband) does
+not have an automatic trigger key to swap items, so it must be
+created. Select a key that is not being used for any other commands
+('X' in the normal keyset is free - see *****command.txt*0[command.txt]), and create
+the following keymap:
+
+1) @ Interact with macros
+2) 8 Create a keymap
+3) X The trigger key for the keymap
+4) w0 Wield object 0
+5) (Hit Enter)
+6) (Hit Esc to exit the editor)
+
+Now to swap weapons, just press the trigger key 'X' which is bound to
+the default keymap "w0". You may also press "w0" directly to swap.
+~~~~~45|Macros|Macro recorder
+~~~~~46|Keymaps|Macro recorder
+#####G----------------------------------------------------------------------
+#####G2.2 Using the macro-recorder
+#####G----------------------------------------------------------------------
+
+You may find all the key-presses involved in ToME a long and time-consuming way
+to play the game. There are ways to speed up repeated commands by assigning
+them to a trigger key which can help. These are called macros or keymaps.
+
+The most obvious use for these in ToME is for mage-types, especially sorcerors,
+who rely on their spells for just about everything. Typing mbaa*t in order to
+fire a Manathrust is fine if you only have to do it once or twice, but can
+quickly get annoying when you're doing it every move. Far easier to assign that
+sequence of keypresses to a single trigger key which you can then press as many
+times as you need. (Until your SP run out of course!)
+
+The easiest way to assign a macro is to use the macro-recorder. Start this by
+hitting the '$' key. You'll then receive a message telling you that the macro
+recorder has now started and you will need to press the '$' key a second time
+to stop the recorder. Preparation is all important here. It is best to be in a
+situation where you really NEED to cast the spell before recording the macro,
+so you use all the correct casting techniques and the game behaves as it would
+in a real (combat) situation (if the spell is to be generally cast in combat).
+
+So assuming we're going to create a macro for manathrust. We've walked into a
+room and there's a nasty small kobold. What do we do?
+
+1) $ Start macro recorder
+2) *t target monster (or player if no monster in Line of sight)
+3) m open skills menu
+4) @ enters verbose mode
+5) Cast a Spell selects skill to use - CASE SENSITIVE
+6) @ enters verbose mode
+7) Manathrust casts spell from any book/spell container - CASE SENSITIVE
+8) $ end macro recorder
+9) y confirms macro keystrokes[[[[[B*]
+10) (choose trigger key)
+11) @ opens macro saving/loading screen
+12) 2 appends macros to a file
+13) (choose a name for the file, e.g. sorceror.prf)
+14) (Hit Enter)
+15) (Hit Esc to exit the editor)
+
+This will search for the spell in all your books and equipment. If it is found,
+in either a book or a wielded item that contains a spell, then the spell is
+cast at the targetted monster.
+
+This technique can be used for all the other skills as well (Use Mindcraft,
+Forge Ammo) etc.
+
+[[[[[B*]If you answer no the recorder continues recording keypresses. If
+you know you have made a mistake, you need to answer yes, and then not
+save the macro!
+
+~~~~~12
+#####G----------------------------------------------------------------------
+#####G2.3 Prevent unwanted use of an item
+#####G----------------------------------------------------------------------
+
+#####BPrevent "losing" an item by "accident":
+
+1) { Inscribe an object
+2) * Show inventory list
+3) (Choose an item)
+4) !d!k!v
+ !d - don't drop (d)
+ !k - don't destroy (k)
+ !v - don't throw (v)
+5) (Hit Enter)
+
+This prevents dropping, destroying, or throwing the item. You will be
+asked if you really want to do so. This is one of the most common
+inscriptions used, and one of the most useful.
+
+#####BPrevent "using" an item at all:
+
+1) { Inscribe an object
+2) * Show inventory list
+3) (Choose an item)
+4) !* Don't do anything with this item without verifying
+5) (Hit Enter)
+
+This inscription is commonly used on Scrolls of Word of Recall...
+~~~~~8
+#####G----------------------------------------------------------------------
+#####G2.4 Saving these macros and keymaps for reuse
+#####G----------------------------------------------------------------------
+
+Save the macros and keymaps for reuse by the current character:
+
+1) @ Interact with macros
+2) 2 Append macros to a file
+ (optionally enter a filename: e.g. dump.prf or dump.txt)
+ (Hit Enter to save the file with the filename shown)
+3) 6 Append keymaps to a file
+ (Hit Enter to save the file with the filename shown)
+4) (Hit Esc to exit the editor)
+
+This pref file will be automatically loaded any time a character with
+a name, race, or class matching the filename is loaded.
+
+The "Append macros/keymaps to a file" commands will append ALL current
+macros/keymaps to the given file. They will not overwrite the file.
+
+You should edit the file to remove macros that weren't added by you,
+to reduce clutter and prevent errors. Unfortunately the best way to do
+this is still "by hand". Open up the pref file in a text editor and
+remove the duplicate macros and keymaps added. These will be added
+after the headers "# Automatic macro dump" and "# Automatic keymap
+dump". The ones you added will be the very last ones in the list. The
+others are the entire set of keymaps and macros from all other prefs
+loaded. (This step isn't necessary, but is very helpful.)
+
+~~~~~32
+#####R======================================================================
+#####R3. Overview
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G3.1 Inscriptions
+#####G----------------------------------------------------------------------
+
+Inscriptions are "markings" which you can inscribe on any game item.
+
+One common use is recording where you got one of your favorite items.
+Example: The Broad Sword 'Glamdring' (2d5) (+10,+15) {icky thing, 50'!}
+
+Another is to note important resists or activations on an item to make
+figuring out resist combinations easier.
+Example: The Nice Shiny Armor (-3) [35,+25] {resDk,resDis,A:Geno}
+
+Inscriptions can "number" an item so that you don't have to know where
+it is in your inventory.
+Example: inscribing your scrolls {@r1} lets you use '1' at the prompt
+for which scroll to read, instead of having to use the inventory letter,
+which can change unnoticed.
+
+Number inscriptions work together with macros to allow reproducible
+labeling of items independent of inventory position.
+
+Note that the game produces "fake" inscriptions, which look like real
+inscriptions, but are really just displayed the same way (e.g. "cursed").
+
+Finally, if you are in symbiosis with another creature, you can name it by
+inscribing it with "#named SomeName" (the word "#named" must be entered
+literally at the start of the inscription). This will tell the game that
+your symbiotic partner should be referred to by its name, rather than simply
+"Your white jelly". This has no effect on game play other than the aesthetic.
+
+#####G----------------------------------------------------------------------
+#####G3.2 Macros
+#####G----------------------------------------------------------------------
+
+Macros are mappings from a single "logical" keypress to a sequence of
+keypresses, allowing you to use special keys on the keyboard, such as
+function keys or keypad keys, possibly in conjunction with modifier
+keys, to "automate" repetitive multi-key commands that you use a lot.
+
+[[[[[BFor keys which don't have a system-independent representation, such as]
+[[[[[Bfunction keys, this is the only way to change their behavior.]
+
+#####G----------------------------------------------------------------------
+#####G3.3 Keymaps
+#####G----------------------------------------------------------------------
+
+Keymaps are vaguely related to macros. A keymap maps a single keypress
+to a series of keypresses, which bypass both other keymaps and any
+macros. Angband uses keymaps to map the original and the roguelike
+keysets to the underlying command set, and allows the user to modify or
+add keymaps of their own. All keymap actions must be specified using
+underlying commands. Keymaps and macros aren't expanded. The original
+keyset is almost identical to the underlying keyset, except that
+"numbers" are mapped to ";" plus a direction, "5" is mapped to ",",
+and a few control-keys are mapped to various things. See *****command.txt*0[command.txt]
+for the full set of underlying commands. Keymaps also allow the
+"disabling" of a command by mapping it to "\x00".
+
+#####G----------------------------------------------------------------------
+#####G3.4 Pref files
+#####G----------------------------------------------------------------------
+
+Preference files save commands such as macros and keymaps which are
+used to customise the game. They are used to implement the "original"
+and "roguelike" keysets. They provide default appearances for items.
+
+They also implement the default behaviors which make Angband look and
+play the same (for the most part) on different systems.
+
+Pref files can be saved with the name of a player name, class, and
+race, and anytime a player with a matching characteristic is loaded,
+the appropriate pref file is loaded. This makes some customisations
+transparent and automatic.
+
+Pref files let you do some things that could otherwise only reasonably
+be done by changing the info files or source, such as changing the
+appearance of a given terrain feature, or the symbol used for the
+player.
+
+Pref files let you set up and save your favorite game options, and
+have them available for new characters without having to redo them.
+
+~~~~~33
+#####R======================================================================
+#####R4. Common macros and techniques
+#####R======================================================================
+~~~~~13
+#####G----------------------------------------------------------------------
+#####G4.1 Clearing the command buffer
+#####G----------------------------------------------------------------------
+
+[[[[[v++++++++++ This is one of the most important techniques! ++++++++++]
+
+Almost all action strings should begin with a sequence to clear the
+buffer of existing commands and messages. These sequences are often
+omitted in usenet postings and in this FAQ because they clutter the
+description, but they should almost always be used.
+
+If an unfinished command is still waiting for input when you press the
+trigger key of a macro or keymap, the characters of its action string
+will be taken as input for the command. The command will ignore keys
+it doesn't know how to handle until it finds one that it does. This
+often leads to something completely unexpected, with embarrassing
+results such as your death, or losing a really nifty item.
+
+If there are still messages waiting, the first characters in the
+action will instead just clear the waiting messages. How this happens
+depends on whether the *****option.txt*1[option (quick_messages)] is set. Then the action
+will start executing in the middle of its action string, with equally
+dangerous results as in the above case. Note that some messages caused
+by a command are quite rare, and others could be produced by a game
+state change like becoming hungry that has nothing to do with the command.
+
+These types of problems are more common when using an action such as
+auto-firing where a trigger key is repeatedly pressed.
+
+[[[[[B"\e\e\e"]
+Multiple escapes are used to clear the command buffer. Escape cancels
+any command/input still being processed, and also clears a [single]
+message whether/not the (quick_messages) option is set. This string
+should be used to begin all action strings. It is also wise to put it
+between actions in multi-action macros. Note that this technique can
+also be dangerous, hiding warnings or important information.
+Example: an action like "*tf1" would be changed to "\e\e\e*tf1".
+
+There are a few situations in which you do not want to use escapes.
+For example, after the spell Detect Monsters, an escape will clear the
+detection. Or if the action is part of a multi-part action or is meant
+to wait for user input such as the firing action "f1" which will wait
+for targeting information.
+
+[[[[[B"\s\s\s"]
+Spaces are useful for clearing messages, but won't cancel a command
+that is waiting for an item choice. Sometimes it is useful to split
+an action into two parts and bind them to two separate trigger keys.
+Prefixing spaces before the 2nd action will discard any remaining
+messages without canceling unfinished commands from the 1st one. Some
+players create a macro consisting of a large number of spaces to be
+used to clear a flood of messages.
+
+See sections:
+- *****macrofaq.txt*1["Messages and Questions"] for how to deal with them.
+- *****macrofaq.txt*2["My macro outputs "e - Floating Eye"..."] for an example of a common
+ mistake using escape sequences.
+- *****macrofaq.txt*3["My macro drops/takes off my main weapon!"] for an example of the
+ kind of thing that can go wrong when you fail to use them.
+- *****macrofaq.txt*4["What just killed me?"] for an example of skipping over messages
+ *too* fast.
+
+#####G----------------------------------------------------------------------
+#####G4.2 Swap weapons
+#####G----------------------------------------------------------------------
+
+If you followed the *****macrofaq.txt*5[Quick-Start Tutorial] in Section 2.1, the 'X' key has
+the keymapping "w0", which will wield the first item inscribed as "@0"
+or "@w0". This will swap between 2 weapons which are both inscribed with
+{@0} or {@w0}. If there is more than one item in the inventory inscribed
+as 0, it will use the first one.
+
+This will also work for other wieldable items. For example, if you
+have a helm which gives telepathy, which can be a real pain when you
+need to rest, it can be used to swap it with another helm.
+
+Inscribing weapons with {@w1@w0}, {@w2@w0} allows directly wielding a
+specific one. If you don't want that ability, you can just inscribe
+both with {@w0}. These can also be inscribed as just {@1@0} and {@2@0}
+if you don't inscribe any other items with numbers, although this is
+not recommended.
+
+
+#####G----------------------------------------------------------------------
+#####G4.3 Resting
+#####G----------------------------------------------------------------------
+
+#####B= Rest as needed =
+"R&\r"
+R - rest
+& - until 100% healthy
+\r - return.
+
+Note that this isn't particularly dangerous, because the game will
+break out of the resting command if you are disturbed by hunger,
+sensing a monster, ...
+
+#####B= Rest for a specific duration =
+"R100\r"
+R - rest
+100 - turn count
+\r - return
+
+This version is useful if you are already healed up. For fighter
+pseudo-id, for example. Also useful for recovering a fixed amount of
+mana before/after a spell, waiting for a Recall spell to kick in,...
+
+Note that this is one of the few times when you can directly enter the
+count after the command. Usually you need to enter the count before
+the command, using the (0) count command.
+
+#####B= Maximum Rest =
+"R9999\r"
+
+The maximum number of turns you can use as an argument. This can be
+useful when waiting for shop inventory to change, etc. Be sure to take
+off any non-permanent light source, and have plenty of food when you
+rest for long periods of time.
+
+#####G----------------------------------------------------------------------
+#####G4.4 Activate the phial
+#####G----------------------------------------------------------------------
+
+"Am\s\s"
+A - Activate
+m - light source (the phial).
+\s - skip message
+\s - skip message
+
+"Am\s\sR50\r"
+Activate the phial and rest for 50 turns.
+
+This can be bound to 'F' key since you won't need to refuel lanterns
+much after you have the phial :).
+
+#####G----------------------------------------------------------------------
+#####G4.5 Kill item(s) on floor
+#####G----------------------------------------------------------------------
+
+The need to destroy large numbers of items arises as one reaches
+deeper levels of the dungeon. The auto-squelch feature only partially
+reduces the need for this. The behavior of these actions is affected
+by the option (quick_messages), and the possible presence of a pile of
+items on the floor.
+
+*****option.txt*1[(quick_messages)] allows any key to cancel a message.
+
+In ToME, multiple items on the floor are displayed in a list.
+This allows the player to select an item from the floor by entering an
+item index when there is a pile (more than one item). This generally
+complicates writing these macros.
+
+Note that space '\s' is used to clear messages in the action strings,
+but one could use escape '\e' just as well.
+
+Note: you cannot destroy artifacts, so these macros are safer and more
+useful than they might first appear. The (k) Destroy item command will
+fail when trying to destroy an artifact, leaving any following
+characters in the action string, which may be interpreted differently
+than anticipated.
+
+[[[[[B"k-yy"]
+k - Kill item
+- - Select item from floor
+y - "yes" to query "Really destroy a <item>?"
+y - skip the "you destroy the <item>" message.
+
+This version only works when (quick_messages) option is on. Here the
+last 'y' key gets rid of the last message, since any key will. This
+won't work for piles. The 'y' will be ignored as an invalid item choice.
+
+[[[[[B"k-y\s"]
+k - Kill item
+- - Select item from floor
+y - "yes" to query "Really destroy a <item>?"
+\s - skip the "you destroy the <item>" message.
+
+This version works as above, but also when (quick_messages) is off.
+
+[[[[[B"0k-y\s"]
+0 - enter count (causes to skip prompt for how many to destroy)
+k - Kill item
+- - Select item from floor
+\s - skip the "you destroy the <item>" message.
+
+Destroy a single item on floor below you. Doesn't prompt for a count.
+This won't work for piles, which will prompt you for the item. Works
+correctly when (quick_messages) is off, because there is no prompt
+for how many to destroy.
+
+[[[[[B"0k-ay\e"]
+0 - enter count (causes to skip prompt for how many to destroy)
+k - Kill item
+- - Select item from floor
+a - either item 'a', or ignored
+\e - escape (ignored), or cancel message
+
+Destroy a single item on floor below you. Doesn't ask to confirm.
+[[[[[vWARNING:] This action can destroy the first item in your inventory if
+there aren't any items on the floor below you!
+
+The leading '0' causes a prompt for a count to be skipped. If there is
+a pile, the 'a' key will select the top item in the pile. If not, the
+'a' will aim a wand, the following 'y' will be ignored, and the final
+escape will cancel the aiming.
+
+[[[[[B"0k-yay\e"]
+0 - enter count (causes to skip prompt for how many to destroy)
+k - Kill item
+- - Select item from floor
+y - "yes" to query "Really destroy a <item>?", or ignored.
+a - top item (a) in a pile, or activate wand.
+y - "yes" to query "Really destroy a <item>?" (for piles).
+\e - skip the "you destroy the <item>" message.
+
+The above action will work in most cases. This version works correctly
+for piles. If there is a pile, the 'y' is ignored and the 'a' selects
+the top item. If there isn't a pile, then the 'y' will correctly answer
+the yes/no question "Really destroy a <item>?", and the following "ay"
+will aim a rod, and then ignore the 'y' key press, and the final escape
+will cancel the aiming. Works correctly when (quick_messages) is off.
+When (quick_messages) is on, and there is no pile, the 'a' will cancel
+the message, and the following 'y' will be passed through as an
+unimplemented command, and the space will cancel the error message.
+
+Backslashes "\\" may be required to keep the 'y's from being
+interpreted as keymaps in case 'y' has been assigned one.
+
+#####G----------------------------------------------------------------------
+#####G4.6 Fire missile at nearest target
+#####G----------------------------------------------------------------------
+
+Each of these needs "\e\e\e\e" afterwards to cancel up to 4 possible
+messages. The first message will always occur. Note that adding too
+many escapes can cause you to miss the messages in which the monster
+fights back.
+- "You have NN <ammo> left. -more-"
+- "The <ammo> hits the <monster>. -more-"
+- "It was a <adj> hit! The monster ... -more-"
+- "The <monster> dies/grunts with pain/..."
+
+[[[[[B"f*t"]
+f - fire ammo from quiver slot
+* - target
+t - select first target
+
+Note that targeting is affected by the option (*****option.txt*4[use_old_target]). If
+this action is used with the (use_old_target) option set, the "f"
+part will fire the missile before the targeting part "*t" is reached.
+See section *****macrofaq.txt*6["My auto-firing macro shoots the wrong target!"].
+
+[[[[[B"*tf"]
+*t - select first target
+f - fire ammo from quiver slot
+
+If (use_old_target) is on, this works correctly, by selecting the
+target before firing. If the option is off, it will still prompt you
+to select a target, even though you just selected one.
+
+[[[[[B"*tf*t"]
+*t - select first target
+f - fire ammo from quiver slot
+*t - select first target
+
+This works correctly for (use_old_target) either on/off. If the option
+is on, this works by selecting the target before firing. If the option
+is off, the first target selection will be ignored, and firing will
+wait on the second target selection.
+
+Note that if there are no valid targets, "*t" will select the player's
+current position. Also, it is fairly easy to make safe assumptions
+about the (use_old_target) option, since a player doesn't tend to
+change back and forth. It is generally easier to make one set of
+actions that work for (use_old_target) on, and another for it off.
+
+Note also that the swapping weapon macro can be very useful for swapping
+the type of ammo in the quiver slot when you have two different sets of
+ammo you use - your standard "fire at everyone normal" ammo (usually
+not enchanted), and your big damage "Uniques and nasty monster"
+enchanted ammo.
+
+#####G----------------------------------------------------------------------
+#####G4.7 Preventing actions
+#####G----------------------------------------------------------------------
+
+#####B= Prevent selling =
+{!d}
+Prevent selling - use on main weapon, artifacts.
+
+#####B= Prevent going up/down =
+{^<}
+Verify before going up stairs.
+{^>}
+Inscribe boots to make confirm before going down stairs.
+This can also be useful on Charisma boosting items that you wear
+around town but don't want to take into the dungeon.
+{^>^r^z^m^p}
+Prevent leaving town with this item. Need to catch stairs, scrolls and
+rods of Recall, and Mage and Priest Word of Recall spells.
+
+#####G----------------------------------------------------------------------
+#####G4.8 Warrior macros and inscriptions
+#####G----------------------------------------------------------------------
+
+#####B= Identify with list =
+Inscribe Identify scrolls {@r0}.
+Then action "r0*" will cast Identify and bring up the inventory list.
+
+#####B= Identify floor =
+"r0-" will Identify without showing the inventory.
+
+#####G----------------------------------------------------------------------
+#####G4.9 Verification techniques
+#####G----------------------------------------------------------------------
+
+#####B= Verify All =
+{!*}
+verify any attempt to use this item. Useful for some things such as
+Scrolls/rods of Recall that you don't want to lose or use by accident.
+
+#####B= Verify drop, destroy, throw =
+{!d!k!v}
+don't drop, destroy, or throw this item. Prevents dropping your
+favorite weapon,... This is one of the most useful inscriptions, as it
+prevents the kind of typing accidents that can get you killed.
+
+#####B= Verify selling =
+{!d}
+Prevents selling as well as dropping.
+
+#####B= Multiple verification =
+These inscriptions can be repeated. So {!*!*} will make you confirm
+twice for any action using that item.
+
+#####G----------------------------------------------------------------------
+#####G4.10 Canceling targeting
+#####G----------------------------------------------------------------------
+
+[[[[[B"*\e\s"]
+* - start targeting
+\e - cancel targeting.
+\s - skip message "Target Aborted."
+
+OR
+
+[[[[[B"*q\r"]
+* - start targeting
+q - cancels targeting.
+\r - skip message "Target Aborted."
+
+This is useful before casting Stone to Mud, or a ball spell. For ball
+spells you usually want to target the middle of a pack, or sometimes
+to "miss" the creature in order to get the ball to detonate on a
+nearby wall.
+
+Using a targeted action after this will cause the user to be prompted
+for a target.
+
+Canceling targeting is made necessary by the existence of the option
+(use_last_target), which causes an action which requires a target to
+use the last target without prompting. See section
+*****macrofaq.txt*6["My auto-firing macro shoots the wrong target!"] for more on this.
+~~~~~15
+#####G----------------------------------------------------------------------
+#####G4.11 Automatically loading pref files
+#####G----------------------------------------------------------------------
+
+Angband automatically loads pref files when a character is loaded or
+born. Among the last ones loaded are: "<$RACE>.prf", "<$CLASS>.prf",
+and "<$PLAYER>.prf", in that order. These are the best ones to use to
+customise the game for individuals. The order is important because
+pref files which load later will overwrite options and macros/keymaps
+from previous ones.
+
+Here <$RACE> is the name of the character's race, <$CLASS> is the name
+of its class, and <$PLAYER> is the character's name. Both <$RACE> and
+<$CLASS> have a fixed number of choices. These are listed for ToME
+in section *****macrofaq.txt*7["Pref file loading order"].
+
+Your character's name is the one that appears during game play in the
+upper left hand corner of the screen. If it isn't visible there, you
+can use the (C) Character description command. Note that this name may
+be different than the filename of the character's save file.
+
+Filenames for the save and pref files are built from a "base name",
+which is the player name with all non-alphanumeric characters changed
+to underscores (_). On Windows and DOS systems the base name will also
+be truncated to 8 characters. This could lead to different characters
+having the same (default) pref files.
+Example: "Grog the Elder" and "Grog the Younger" would both try to
+load the same pref file "Grog_the.prf".
+
+In recent versions of ToME "<$PLAYER>.prf" is the default filename
+when saving your macros and keymaps from the (@) Interact with macros
+screen. Just hit Enter to accept that name.
+
+On some systems you may encounter problems automatically loading this
+file if your name is more than 8 characters, or if it contains spaces
+or special characters.
+
+See section *****macrofaq.txt*8["Saving these macros and keymaps for reuse"] for how to
+save your character's preferences.
+
+See section *****macrofaq.txt*7["Pref file loading order"] for the full list of pref files
+loaded and their order.
+
+Note: for pref files to load automatically they must end in the file
+extension "prf", which is the default when saving pref files. But it
+is possible to save and load pref files with any or no file extension,
+from the macros and visuals editor screens.
+
+#####G----------------------------------------------------------------------
+#####G4.12 Multiple macros bound to one trigger key
+#####G----------------------------------------------------------------------
+
+Angband supports using modifier keys on trigger keys. One thing this
+lets you do is easily choose between variants of an action. Another is
+to minimise the amount of moving your hands have to do, speeding up
+play and reducing stress on your wrists.
+
+[[[[[BYou can bind multiple versions of the same macro to the same trigger]
+[[[[[Bkey, using Alt, Control, Shift in different combinations] to choose
+among the different versions.
+Example: use <Alt> for targeted, and <Shift> for non-targeted.
+
+Another use is to heavily use modifiers on numeric keypad keys. The
+standard version already comes with Shift-<digit> bound to running in
+that direction. But by using various combinations of modifier keys, it
+is possibly to play with the right hand almost always on the numeric
+keypad, and the left on the modifier keys.
+
+#####G----------------------------------------------------------------------
+#####G4.13 Multi-part actions
+#####G----------------------------------------------------------------------
+
+Better to only do this when spells have ~0% failure.
+Be careful of the order of commands. Commands that leave useful info
+on the screen shouldn't be followed by ones that will clear it.
+Be careful of commands that set or clear targets.
+Use "\e\e\e\e" in-between commands to be safe.
+
+#####G----------------------------------------------------------------------
+#####G4.14 Easy running
+#####G----------------------------------------------------------------------
+
+Bind Shift+<keypad dir> to running for each of the directions.
+For example, running "North":
+
+1) @ Interact with macros
+2) 4 Create a macro
+3) Shift+8 (Trigger key for the macro)
+4) \\. Run
+ 8 "North"
+5) (Hit Enter)
+6) (Hit Esc to exit the editor)
+
+Macros for the other directions are added similarly. Remember that the
+original and roguelike keysets differ, but using the backslashes makes
+sure that the "underlying" keyset gets used:
+ 7 8 9
+ 4 6
+ 1 2 3
+
+These macros are already in the "pref-***.prf" files that ship with
+the standard Angband distribution for some systems, but not all.
+Systems "mac", "win", "x11" have them. If you aren't sure if you have
+them, just try moving in any direction with the shift key down.
+
+[[[[[BThese do have to be macros instead of keymaps], because they rely on
+keypad keys having different scan codes than the top-row number keys.
+
+There are also default macros for Ctrl+<dir> which applies the command
+(+) Alter to that direction.
+
+#####G----------------------------------------------------------------------
+#####G4.15 Farming techniques
+#####G----------------------------------------------------------------------
+
+#####v+++ NOTE: This is considered scumming! (cheating) +++
+
+Farming is the practice of automatically "harvesting" large numbers of
+weaker monsters for their experience value. This is usually done to
+advance a lower level character. There are apparently several methods
+that the "old timers" used to use. I don't know that farming is that
+popular any more. Even then it was sort of a lark.
+
+Apparently a golf ball is just the right size and weight for many
+keyboards to hold a key down and get it to auto repeat. Then you walk
+away, and the next morning you have gained several levels. Ballpoint
+pen caps are also supposed to be good at wedging a key down.
+
+Using a farming macro for long periods of time like this requires a
+way of getting food, so it really needs to be employed by a magic user
+who can create their own food.
+
+Use turn counts with attack (move) commands to move around the room,
+mowing down creatures as you move. Periodically rest enough to
+regenerate to full mana. This may not be necessary if it takes long
+enough to kill the monsters as you move.
+
+This requires an effective macro and a room full of breeders which
+can't attack for enough damage to kill you. Farming for short periods
+of time with a fighter class is quite feasible. The limitation for
+fighters is food. The limitation for spell casters is probably hit
+points. You may also need to insert action sequences for healing if
+the farmed monsters are capable of significantly damaging you.
+
+Note that red and green worm masses can knock down the doors of the
+room you're in. Blues can destroy potions and flasks, so you will need
+to stash your potions outside somewhere before farming.
+~~~~~10
+#####G----------------------------------------------------------------------
+#####G4.16 Macros can contain their own trigger key
+#####G----------------------------------------------------------------------
+
+It is permissible to make a macro or keymap which contains its own key
+in its action. It won't cause recursion, but there are a few wrinkles.
+
+Example: you can bind "*tf1" to the 'f' key, to cause it to auto-fire
+at the nearest target. You can still use the 'f' key for Fire in other
+macros or keymaps.
+
+If you bound 'f' as a keymap you will need to use "\\f" for Fire when
+it is used in a macro action string. You don't need to do anything
+special to use it in a keymap in its usual sense. Keymap and macro
+expansion isn't done inside keymap action strings.
+
+If you bound 'f' as a macro, the problem will be in entering the new
+macro or keymap in the editor. When you try to press an 'f' key for
+the action, it will expand to "*tf1", even when you don't want it to.
+You will first have to remove the macro bound to 'f', then add the
+macro or keymap that uses 'f' in its action, and then reenter the 'f'
+macro. You can also create the macro in a pref file and load it using
+the "Load pref file" command in the (@) Interact with macros screen.
+
+#####G----------------------------------------------------------------------
+#####G4.17 Changing the player's color and character (ASCII text display)
+#####G----------------------------------------------------------------------
+
+#####B= Using the Visuals Editor =
+1) % Interact with visuals.
+2) 6 Change monster attr/chars
+3) a (repeatedly) cycle thru colors (A moves backwards)
+4) c (repeatedly) cycle thru characters (C moves backwards)
+5) Esc accept changes
+6) Esc exit the editor
+
+#####B= Using the Enter User Pref command =
+1) " Enter user pref line
+2) "R:0:<attr>:<char>"
+ The user pref line.
+ <attr> - the attr (color) specified as an integer index.
+ <char> - the (ASCII) character specified as an integer.
+3) (Hit Enter)
+
+You can't directly use the Angband attr letters to specify colors, but
+must instead use their index. Eg 4 is Red. These indexes can be found
+from within the game using the (&) Interact with colors command. That
+editor also allows you to change the colors used by the game.
+
+The <char> integer is generally the index of an (ASCII) character.
+Non-ASCII characters may be available on some systems. Available
+characters can found using the (%) Interact with visuals command.
+
+These integers can be specified in decimal, hexadecimal, or octal
+notation. Decimal is the default, hexadecimal numbers are prefixed
+with "0x", and octal numbers are prefixed with 0 (zero). Example: the
+standard character for the player is '@'. This may be entered as "64",
+"0x40", or "0100". Yellow may be entered as "11", "0x0B", or "013".
+
+This pref line can be added to any pref file to save the change for
+future reuse. Changes made using the internal colors editor screen can
+be dumped from that screen. Note that colors and characters saved in
+pref dumps are in hexadecimal.
+
+After making a change, you must move the character or otherwise cause
+a screen redraw for the change to be visible.
+
+If you make a mistake, you can use the (0) command in the editor to
+reset the visuals to their original colors and characters.
+
+#####B= Changing Using the Monster Info file =
+#####B----------------------------------------
+
+This may also be done by changing the entry for the player in the info
+file "r_info.txt". The player data starts with line "N:0:Player". In
+the following line G:<c>:<a> the character <c> is entered directly,
+and the attr (color) is specified by letter. See the section "Message
+color lines" for the list of standard colors. In many versions you
+will have to delete the file "lib\data\r_info.raw" and restart the
+game for this change to take effect. Note that that char/attr pair is
+entered in the opposite order as for an R: user pref line.
+
+#####B= Options which Change Player appearance =
+#####B------------------------------------------
+
+These are accessible through the (=) Set options command.
+
+*****option.txt*2[(hilite_player)] -- causes the player's symbol to be drawn with the
+"cursor" on it. It will be drawn with the same color as the character.
+
+*****option.txt*3[(player_symbols)] -- for graphics mode only, and only works when option
+(use_graphics) is also on. This apparently varies the player graphic
+and its color based on class, race, and sex.
+
+#####G----------------------------------------------------------------------
+#####G4.18 Recharging a rod using a Recharge Item spell
+#####G----------------------------------------------------------------------
+
+(You can also recharge staffs and wands with this technique.)
+
+Inscribe the rod with {@m<d>}, where <d> is any decimal digit not
+already used as a label.
+
+The trick is that we want to use a digit to label the rod so we can
+refer to it using its label instead of its inventory letter, but we
+have usually used up many of the digits for spell books. If we were to
+label the rod with {@m1} and the first spellbook was also labeled with
+{@m1}, then the spellbook will sort first in the inventory so it will
+be found first when looking for item '1' to use with the (m) command.
+So that would try to recharge the spellbook, which will fail. Angband
+doesn't restrict itself to "appropriate" items when looking for a
+labeled item. It simply finds the first one whose command letter and
+digit match.
+
+You can't get around this by omitting the letter 'm', or using 'z'
+instead. Using no command letter means it will still match. And if you
+use a command letter it has to be 'm', because that is the built-in
+trigger for the current command.
+
+Note that the digits used with different command triggers can be
+different, so inscribing {@z1@m0} is perfectly legal. Use digit 1
+when zapping the rod, and 0 when referring to it during the casting
+of a [mage] spell.
+
+You can also use this technique with scrolls. In that case you need to
+use the inscription {@r<d>} since the item is being referred to while
+processing the (r) Read scroll command.
+
+#####G----------------------------------------------------------------------
+#####G4.19 Disabling a built-in command
+#####G----------------------------------------------------------------------
+
+At times it may be useful to disable an underlying Angband command.
+For example, a dangerous key may be too easy to press by accident.
+The macro editor commands for removing macros and keymaps can't be
+used in this situation. [[[[[BInstead bind the trigger key to the action]
+[[[[[Bstring "\x00"]. This special 'command' takes no "energy" and won't
+generate an error message. It truly does "nothing". This will work for
+both macros and keymaps. If possible you should use a keymap instead
+of a macro to disable the key. A keymap will catch occurrences of the
+key both in macros and by typing, and will still allow you to use the
+key when it isn't being interpreted as a command.
+
+If you use the "Query a macro/keymap" on a trigger key bound to this
+action, it will report having found it, but no action string will be
+printed.
+
+Another technique is to use the action "\e\e\e". This is used in some
+of the standard pref files.
+
+[[[[[BIf you need to use the built-in command again you can use the '\' key]
+[[[[[Bat any prompt to bypass its macro/keymap.]
+
+#####G----------------------------------------------------------------------
+#####G4.20 "Naming" an item (patch)
+#####G----------------------------------------------------------------------
+
+#####B= 'Fake artifact' name =
+# "Name" an item
+This isn't an actual command in the interface, but a flag character
+that alters the way an item description is generated. This isn't part
+of standard Angband. It's added by Tom Morton's 'fake artifact' patch.
+
+Example: inscription {#Thumper} will cause a Club (+8,+8) to display
+as Club 'Thumper' (+8,+8) in your inventory and messages.
+
+~~~~~34
+#####R======================================================================
+#####R5. Common Questions
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G5.1 Why can't I add a keymap for a function key?
+#####G----------------------------------------------------------------------
+
+Because keymaps can only be created for keys with system-independent
+representations. This leaves out function keys, and several other
+special keys. The "Create a keymap" command will continue waiting for
+a keypress until you press a valid keymap trigger. You can, however,
+create a macro for a function key.
+
+#####G----------------------------------------------------------------------
+#####G5.2 How can I automatically inscribe items when I pick them up?
+#####G----------------------------------------------------------------------
+
+You need to turn on the "Merge inscriptions when stacking" option.
+If you are already carrying the same item with an inscription, a new
+one will be added to the stack. Note that this WON'T merge discounts.
+Although discounts display like inscriptions, they are different.
+
+1) = Options
+2) 1 User interface options
+3) "Merge inscriptions when stacking" (stack_force_notes)
+ move down to this line and change to "yes".
+
+#####G----------------------------------------------------------------------
+#####G5.3 Can I use macros inside other macros?
+#####G----------------------------------------------------------------------
+
+No. Macros don't expand macro triggers they contain in their actions,
+in order to avoid recursion and other problems. However, keymap
+substitution is done, so you can use keymaps to alter the behavior of
+macros. This keymap expansion can be bypassed by preceding a trigger
+with "\\" in the action.
+
+Keymaps don't expand macro or keymap triggers in their actions.
+
+Also see section *****macrofaq.txt*9["Can I create an infinite loop using a macro?"].
+
+#####G----------------------------------------------------------------------
+#####G5.4 How do I find out what the standard commands are?
+#####G----------------------------------------------------------------------
+
+1) ? Angband help
+2) 6 *****command.txt*0[Command Descriptions (command.txt)]
+
+Space - moves you down by a page
+Minus - moves up by a page
+2 - moves down by a line
+8 - moves you up by a line
+
+Note that the original and roguelike command sets differ, and both are
+different from the "underlying" command set.
+
+#####G----------------------------------------------------------------------
+#####G5.5 How can I tell if a key has a keymap/macro?
+#####G----------------------------------------------------------------------
+
+#####B= Query Macro/Keymap =
+
+In ToME this is easy:
+1) @ Interact with macros
+2) 3 Query a macro
+OR 7 Query a keymap
+3) (Press the trigger key to test)
+4) Esc (Exit macro editor when done)
+
+It will report "Found no macro" or "Found a macro" at the top of the
+screen. The action it is bound to will be displayed at the bottom of
+the screen, under the "Current action..." line. You must test for both
+macros and keymaps, and keymaps will only show for the current "mode",
+i.e. original/roguelike.
+
+#####B= Notes =
+
+Note: on some machines, there are duplicate keys such as left and right
+Shift keys. These will generally produce different key codes and can
+have different macros and keymaps.
+
+Note: just because a key doesn't have a macro doesn't mean there isn't
+a command that uses that key.
+
+#####G----------------------------------------------------------------------
+#####G5.6 How can I tell if a key has a built-in command bound to it?
+#####G----------------------------------------------------------------------
+
+Er ... try pressing the key. If there is a command bound to that key
+it should usually generate a message of some kind. If there isn't one,
+it may respond: "Type '?' for help.". Some keys may not generate any
+message at all. Function keys are a good example.
+
+In ToME, the game will also generate "silly" error messages
+which may not look like error messages at first. After a few repeated
+key presses it uses the standard "Type '?' for help." message.
+
+Failing that, look in *****command.txt*0["command.txt"], which lists all
+commands, and is up-to-date. There is no specific method for checking if
+a key has a command bound to it from within the game.
+
+#####G----------------------------------------------------------------------
+#####G5.7 Can I inscribe multiple items with the same number?
+#####G----------------------------------------------------------------------
+
+You can, but it can cause problems if you aren't careful. Use the
+command letter in the inscriptions to minimise problems. For example,
+it is safe to inscribe both rods with {@z1} and a spell book with
+{@m1} because the command letter allows distinguishing the two.
+
+When the game looks for an item to use with a command, it tries the
+first one it finds that matches. If the command fails on that item, it
+doesn't continue looking. The search for a matching item also doesn't
+know how to only check the right kind of item, so if you have a Spellbook
+inscribed {@1} and scrolls inscribed {@1} or {@r1}, when you read a
+scroll it will find the spellbook first, even though it doesn't make
+sense to read it, and the command will fail.
+
+#####G----------------------------------------------------------------------
+#####G5.8 How do I convert a macro to a keymap?
+#####G----------------------------------------------------------------------
+
+You can simply remove it and re-add it "by hand", but for more complex
+actions there are faster, safer ways.
+
+#####B= Directly modifying the pref file =
+
+A macro with the following form in the pref file:
+ A:<action string>
+ P:<trigger>\r
+Should be converted to the keymap form:
+ A:<action string>
+ C:0:<trigger>
+The "\r" needs to be removed, and the 0 (zero) means standard keyset.
+Use 1 for roguelike keyset. To make a keymap for both keysets:
+ A:<action string>
+ C:0:<trigger>
+ C:1:<trigger>
+
+#####G= Using the "Interact with Macros" editor =
+
+1) @ Interact with Macros
+2) 3 Query a macro
+ <k> The trigger key for the macro
+ (its action string will now become the current action)
+3) 5 Remove a macro
+ <k> The trigger key for the macro
+4) 8 Create a keymap
+ <k> The trigger key for the keymap
+5) (Hit Enter to accept the current action)
+ (Hit Esc to clear the message "Added a keymap")
+
+This technique can also be used to move or copy actions between macros
+or keymaps of the same kind. [[[[[BAnd old macro MUST be removed from a key]
+[[[[[Bbefore it can be used as the trigger key for a keymap], otherwise the
+macro action will expand when you press the trigger key in the editor.
+Converting a keymap to a macro doesn't require removing the keymap
+first.
+
+Note that not all macros can be converted to keymaps. Keymaps don't do
+macro or keymap expansion on their action strings, so macros that rely
+on this will no longer work. Also, keymaps can only be bound to a
+trigger key with a printable internal representation. For example, a
+function key can't be a trigger for a keymap.
+~~~~~9
+#####G----------------------------------------------------------------------
+#####G5.9 Can I create an infinite loop using a macro?
+#####G----------------------------------------------------------------------
+
+No. Well, okay, you can, but only if you work *really* hard at it and
+abuse bugs in the macro handling code. This isn't something that will
+happen by accident just by using the trigger key inside its action.
+
+You also can't create recursion. So don't worry about this. See the
+section *****macrofaq.txt*10["Macros can contain their own trigger key"] for more info.
+~~~~~4
+#####G----------------------------------------------------------------------
+#####G5.10 What just killed me?
+#####G----------------------------------------------------------------------
+
+When you are using lots of escapes and spaces in your macros to skip
+over messages, you can miss important things happening. One of these
+is dying. Usually when something goes wrong, you can just use the (^P)
+Previous Messages command to see what happened. But if you died the
+escapes can take you past the tombstone screen, your last chance to
+examine the previous messages list. This also happens without macros.
+
+To examine your recall, load the savefile and start a new character.
+You will then be able to use the message recall command to see the
+last messages of that character's previous incarnation.
+
+~~~~~35
+#####R======================================================================
+#####R6. Common Problems
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G6.1 My macro works all the time when I press its key!
+#####G----------------------------------------------------------------------
+
+Macros *do* work all the time. Every time you press a key, macro
+expansion is done on it, and then keymap expansion. So if you use 'y'
+as a trigger key for a macro, and then you try and answer a yes/no
+prompt with 'y', instead you will get the macro's action string.
+
+The answer to this is to change your macro to a keymap. These can be
+bound to keys which have a system-independent representation in the
+game, which includes all keys that you would use when interacting with
+the game interface.
+
+If you don't want to change it to a keymap, try changing the trigger
+key to a "special" key, such as a function key.
+~~~~~6
+#####G----------------------------------------------------------------------
+#####G6.2 My auto-firing macro shoots the wrong target!
+#####G----------------------------------------------------------------------
+
+Your macro is probably firing at the previous target. This will happen
+if the option (*****option.txt*4[use_old_target]) is set. Then a macro will like "f1*t"
+or "m1a*t" will execute as:
+
+f Fire
+1 Ammo inscribed 1
+ (it will now fire at the last [wrong] target)
+* Choose a [new] target
+t Accept first target
+
+If there are no valid targets, the (t) targeting command will centre
+on your position. If you move, the target will still be your old
+square. The first time you use the "f1*t" macro it will fire at that
+square, even if there is now a valid target (monster) nearby.
+
+One fix is to turn off the (use_old_taret) option, since the action
+doesn't require it. This is done with the (=) Set Options command.
+
+Another is to change the action to choose the target before it fires.
+Example: "*tf1".
+
+[[[[[BNote:] just because you can "see" a monster doesn't mean you can target
+it. The code used for vision (line of sight) and firing (projection)
+is slightly different. So when shooting near corners or pillars it may
+happen that you can "see" a monster but not target it. If your action
+kills messages at the end, you could keep hitting your auto-fire macro
+and the only thing happening would be a large pile of missiles quietly
+accumulating underneath you.
+
+#####G----------------------------------------------------------------------
+#####G6.3 I used to have items inscribed, and now they aren't!
+#####G----------------------------------------------------------------------
+
+The game only knows about inscriptions that you are carrying. There is
+no way to "store" them independently of a character's save file. So if
+you lose all of an item that was inscribed, picking up another of that
+kind won't automatically inscribe it.
+
+Normal inscriptions aren't affected by your player's "memory".
+
+Note that some items, when fully identified, could have their
+descriptions grow so long that no inscription will show. In that case
+you can use the (I) Identify command. It will display the full
+description, even if nothing special is known about that item.
+
+#####G----------------------------------------------------------------------
+#####G6.4 I changed some macros in a pref file and nothing happened!
+#####G----------------------------------------------------------------------
+
+Settings loaded in later pref files will overwrite earlier ones. So if
+you add macros for the same trigger key to files "<$CLASS>.prf" and
+"<$PLAYER>.prf", the second one will get used because its file loads
+later. This affects macros, keymaps, actions, attrs/colors, and other
+info. See section *****macrofaq.txt*11["Pref lines summary"] for all the types of settings
+that can be loaded. Also see section *****macrofaq.txt*7["Pref file loading order"].
+
+#####G----------------------------------------------------------------------
+#####G6.5 I can't even FIND the macro editing commands!
+#####G----------------------------------------------------------------------
+
+Angband can be compiled without the ALLOW_MACROS symbol. This is done
+on some systems to reduce executable size. Macros and keymaps are
+still used by the game and loaded from files, but they can't be edited
+or saved from within the game. The "Interact with macros" screen only
+has the single option "Load a user pref file" in this case.
+
+#####G----------------------------------------------------------------------
+#####G6.6 It moves me when I try to use my bow/rod/wand!
+#####G----------------------------------------------------------------------
+
+Example: you type "f1" and it moves you in direction 1 (South West).
+What is happening is that the 'f' key isn't being handled correctly.
+It may be remapped to a bogus command, or one which doesn't take an
+argument. So the 'f' command is skipped/dealt with, and the '1' key is
+then treated as a direction. You can examine what is going on with the
+'f' key using the (@) Interact with macros screen to check for any
+macros or keymaps bound to that key. Use the appropriate "Remove ..."
+command to restore the built-in Angband command.
+~~~~~3
+#####G----------------------------------------------------------------------
+#####G6.7 My macro drops/takes off my main weapon!
+#####G----------------------------------------------------------------------
+
+This is probably caused by an auto-fire macro like "*tm1a" for magic
+missile. If you hold down the trigger key to repeatedly use it, and
+some game event (possibly caused by the macro) creates a message, then
+the action will be interpreted as:
+* (cancel message)
+t Take off item
+m (ignored as invalid)
+1 (ignored as invalid)
+a Item a (main weapon)
+
+If there is room in your inventory, it will be put there. If not, your
+inventory will overflow and it will be dropped on the ground. If this
+happens during combat this is a very good way to die. This is just
+another good reason to have {!d!k!v} on your main weapon. See the
+section *****macrofaq.txt*12["Prevent unwanted use of an item"].
+
+This can be fixed by using the escape sequence "\e\e\e" before and
+after the action string to cancel any pending messages or commands.
+See the section *****macrofaq.txt*13["Clearing the command buffer"].
+~~~~~2
+#####G----------------------------------------------------------------------
+#####G6.8 My macro outputs "e - Floating Eye" on the message line!
+#####G----------------------------------------------------------------------
+
+It is wise to add an escape sequence "\e\e\e" to the beginning and end
+of all macros for which this doesn't destroy useful information. See
+section *****macrofaq.txt*13["Clearing the command buffer"] for more information on this.
+
+But many players play on flavors of unix, which uses '/' as the path
+separator for files, and automatically type a forward slash when they
+mean to type a backslash. So many actions in macros/keymaps in usenet
+posts have the wrong type of slash. Angband "gurus" are perhaps more
+vulnerable to this than novices.
+
+The game sees this as:
+/ Identify a character
+e Character to be identified
+And outputs "e - Floating Eye" on the message line.
+
+If this sequence gets expanded when you are trying to select an item,
+it will lead to different behaviors.
+Example:
+/ Switch between inventory and equipment
+e Select item e.
+Or:
+/ Switch between inventory and equipment
+e (ignored because invalid) Select item e.
+/ Switch between inventory and equipment
+e Select item e.
+
+~~~~~36
+#####R======================================================================
+#####R7. Inscriptions added by the game
+#####R======================================================================
+
+Some inscriptions are added by the game itself. These can overwrite
+your inscriptions. There are also "fake" and "special" inscriptions,
+which "look" like real inscriptions to the player.
+
+#####G----------------------------------------------------------------------
+#####G7.1 Fake inscriptions
+#####G----------------------------------------------------------------------
+
+These "fake" inscriptions are "covered up" by real inscriptions, but
+will reappear if the real inscription is removed.
+
+"fake" inscriptions are unaffected by the uninscribe command (}).
+
+{cursed} - cursed item
+{empty} - item out of charges
+{tried} - a "flavored" item which the character
+ has used, but whose effects are unknown.
+{N% off} - item bought on sale
+{quest} - this item is a quest item. It may need to be taken to someone.
+
+#####G----------------------------------------------------------------------
+#####G7.2 Auto-inscriptions
+#####G----------------------------------------------------------------------
+
+These added when your character gets a "feeling" about an item.
+In ToME these are "special" inscriptions, like "fake" inscriptions
+above, which don't overwrite user inscriptions. They just hide user
+inscriptions, which are still there.
+
+{terrible} - cursed or broken artifact
+{broken} - broken item
+{cursed} - cursed item
+{uncursed} - previously cursed item
+{average}
+{good} - good (magical) item
+{excellent} - ego item
+{special} - unique item
+{on sale} - displayed only in the store
+
+~~~~~37
+#####R======================================================================
+#####R8. Keys and commands
+#####R======================================================================
+
+This section gives short descriptions of keys and commands used in
+actions and trigger key representations. They are only listed in this
+section if they aren't fully described elsewhere in this FAQ. Not all
+of these keys are actually for "commands". See the normal Angband help
+for a fuller description of these commands. The commands and keysets
+are documented in *****command.txt*0["command.txt"].
+
+#####G----------------------------------------------------------------------
+#####G8.1 Keysets
+#####G----------------------------------------------------------------------
+
+ToME supports two "keysets", which are fully customisable sets of
+keymaps. The "original" command set is close to the built-in commands,
+with some additions for ease of use such as number keys moving you in
+that direction. The "roguelike" command set allows easy movement on a
+keyboard without a numeric keypad. As a consequence its letter keys
+are almost completely "full". These used to be hard-coded by the game,
+but are now fully customisable. The default keymaps are in "pref.prf".
+
+#####G----------------------------------------------------------------------
+#####G8.2 Item selection
+#####G----------------------------------------------------------------------
+
+(*) - gives list of choices
+(-) - selects item on the floor
+(/) - toggles between the inventory and equipment lists.
+
+(space) - shows list of choices. Pressing (space) again hides the list.
+(lower) - selects the inventory item with that letter.
+(upper) - selects the inventory item with that letter, and requires
+ confirmation.
+(digit) - selects first item inscribed with "@#" or "@x#" where 'x' is
+ the command, and '#' is the digit. Only legal items are allowed.
+
+#####G----------------------------------------------------------------------
+#####G8.3 Directions and Movement
+#####G----------------------------------------------------------------------
+
+Original keyset directions
+7 8 9
+4 5 6
+1 2 3
+
+Roguelike keyset directions
+y k u
+h 5 l
+b j n
+
+#####B= Underlying command keys =
+
+;<dir> - walk (with pickup)
++<dir> - alter
+.<dir> - run
+
+Digits AREN'T built-in movement commands in ToME. They are actually
+keymaps found in the standard pref file "pref.prf". The digits are
+direction arguments to the (;) Walk command.
+
+#####G----------------------------------------------------------------------
+#####G8.4 Escape sequences
+#####G----------------------------------------------------------------------
+
+Many [non-printable] characters have a standard printable encoding
+which uses an "escape" character to change the meaning of the
+following character. The backslash character is used as in the C
+language for many keys. The caret '^' is used for control keys.
+
+#####B= Escape sequences =
+\b backspace
+\e escape
+\n newline
+\r return
+\s space
+\t tab
+\xNN hex ASCII char
+\\ (literal) backslash
+\^ (literal) caret
+
+#####B= Backslash =
+In a macro, "\\" followed by a character uses the "underlying" command
+for that character without translation. This is useful in macros to
+avoid keymaps changing the behavior of the macro. In particular this
+can be used to make macros which work for both original and roguelike
+keysets. Keymaps don't have this problem.
+
+#####B= Newline and Return =
+These two characters can be used interchangeably.
+
+#####B= ASCII chars =
+Any ASCII character can be encoded in this way. So many keys will have
+more than one representation. For example, [Enter] can be "\r", "^M",
+and "\x09". The backslash representations are case sensitive, so "\t"
+is [Tab], but "\T" will just be interpreted as "T". The hexadecimal
+number must be exactly 2 digits.
+
+#####B= Escape and Space =
+See section *****macrofaq.txt*13["Clearing the command buffer"] for their main uses.
+
+#####G----------------------------------------------------------------------
+#####G8.5 Repeats and Counts
+#####G----------------------------------------------------------------------
+
+#####B= Auto repeat =
+Some commands will automatically repeat. These are:
+(T) Tunnel
+(B) Bash
+(D) Disarm
+(o) Open
+(c) Close
+(+) Alter
+
+#####B= Number keys =
+
+0 - starts a repeat count. Some commands take a repeat count argument.
+They can be entered as "0<count><cmmd>". If the command is movement,
+it can (must) be preceded by space(s) to separate the direction
+(command) number from the count number.
+~~~~~1
+#####G----------------------------------------------------------------------
+#####G8.6 Messages and Questions
+#####G----------------------------------------------------------------------
+
+#####B= Yes/No queries =
+Yes/No questions can be answered with 'y', 'n', or Esc. These are not
+case sensitive. Only 'y' or 'Y' will respond Yes. 'n', 'N', and Esc
+are No. If the option (quick_messages) is on, any other keypress is
+also No. When the option is off, it will keep waiting for a valid key.
+
+#####B= "-more-" message prompts =
+These may be cleared by Esc(\e), Space(\s), Enter(\r), or Newline(\n).
+If the (quick_messages) option is on, they can be cleared by any key.
+
+#####G----------------------------------------------------------------------
+#####G8.7 Special keys
+#####G----------------------------------------------------------------------
+
+#####B= Function keys =
+Function keys are free for reassignment, but only as macros. [[[[[BFunction]
+[[[[[Bkeys can be modified by Alt, Ctrl, Shift like other keys.]
+
+#####B= Alt keys =
+Alt-modified keys are generally free for reassignment as either macros
+or keymaps.
+
+#####B= Control keys =
+Control keys can be entered in as "^x" where 'x' is the key. Note
+that the case of 'x' is unimportant. This also allows typing control
+keys which would be intercepted by the operating system, such as ^C.
+You must type the caret '^' and the following key separately. Note
+that some have special meanings, such as ^M for Return, and ^H for
+backspace. Some also have special Operating System meanings, such as
+"^Z" in un*x, and "^C" in DOS. Control keys can be trigger keys for
+both macros and keymaps.
+
+#####B= Interrupting the game =
+(^C) This will kill your character and quit the game, after verifying.
+
+#####G----------------------------------------------------------------------
+#####G8.8 Keys used in inscriptions
+#####G----------------------------------------------------------------------
+
+#####B= Confirm command =
+^ Confirm the following command.
+This isn't an actual command, but a character with a special meaning
+inside command strings. {^*} will confirm all actions for the item.
+
+~~~~~38
+#####R======================================================================
+#####R9. Pref files
+#####R======================================================================
+
+All pref files are loaded from and saved to folder "\lib\user". The
+folder "\lib\pref" is unused at this time! The location and name of
+this folder can be configured.
+
+Warning: the directory "\lib\pref" is unused by the game. Pref files
+moved there will never get used (unless the user has redirected the
+folder locations).
+
+Integers can be in hex "0x10", decimal "16", or octal "020" formats.
+These are converted using the C library fn strtol(), and are case
+insensitive.
+
+Decimal numbers start with '1'-'9'.
+Octal numbers must start with '0' (zero).
+Hex numbers start with '0x' or '0X'.
+
+#####G----------------------------------------------------------------------
+#####G9.1 Standard Pref files
+#####G----------------------------------------------------------------------
+
+Below "***" stands for the 3-letter system abbreviations, such as
+"acn", "mac", "win", "x11", ...
+
+"font.prf"
+Includes "font-***.prf" files.
+This file defines special attr/char mappings for "text" mode.
+
+"graf.prf"
+Includes "graf-***.prf" files.
+This file defines special attr/char mappings for "graphics" mode.
+
+"pref.prf"
+Includes "pref-***.prf" files.
+This file defines "default" actions of various kinds. This includes
+mapping the original and roguelike keysets to the underlying keyset.
+
+"user.prf"
+Includes "user-***.prf" files.
+This file defines "override" actions of various kinds. It includes the
+pref files based on system, race, and class.
+
+"xtra-***.prf"
+This file defines special attr/char mappings for "graphics" mode.
+Currently this just maps the player icon based on race and class.
+"new" refers to Adam Bolt's tiles.
+
+[[[[[vWarning:] you shouldn't edit the base pref files without a good reason,
+and understanding what you are doing. Breaking these files can make
+your game unusable. They are, however, the place to make changes that
+should affect all users.
+~~~~~7
+#####G----------------------------------------------------------------------
+#####G9.2 Pref file loading order
+#####G----------------------------------------------------------------------
+
+This loading order follows from the order of includes in "pref.prf".
+Files which are "hard-coded" in the source are preceded with an index.
+The rest are included by the other files. Files which come later will
+overwrite settings from earlier files.
+
+(1) "pref.prf"
+ "message.prf"
+ "pref-***.prf"
+
+(2) "graf.prf"
+ "font-xxx.prf"
+ "graf-***.prf"
+
+(3) "font.prf"
+ "font-xxx.prf"
+ "font-***.prf"
+
+(4) "user.prf"
+ "user-***.prf"
+ "<$RACE>.prf"
+ "<$CLASS>.prf"
+
+(5) "<$PLAYER>.prf"
+
+(6) ".angband.prf"
+
+
+= $RACE =
+Can be one of any of the races in ToME.
+
+= $CLASS =
+Can be one of any of the classes in ToME.
+
+= $PLAYER =
+The name of the current player being loaded or born. See section
+*****macrofaq.txt*15["Automatically loading pref files"] for more information.
+
+#####B= Specific pref files =
+#####B-----------------------------------
+
+"user-mac.prf"
+This is the only user pref file with example macros that ships with
+ToME. A good set of examples.
+
+"pref-win.prf"
+This is the same as (missing) "pref-dos.prf" and "pref-ibm.prf".
+
+"colours.prf"
+Amiga only. Contains Amiga palette.
+
+".angband.prf"
+Only on multi-user systems. This doesn't ship with the source. This
+file must be located in the directory contained in environ variable
+"HOME".
+~~~~~11
+#####G----------------------------------------------------------------------
+#####G9.3 Pref lines summary
+#####G----------------------------------------------------------------------
+
+Comment lines start with a '#' and extend to end of line.
+
+Note: integer values can be specified as decimal, as hexadecimal by
+preceding with an "x", or as octal by using a leading "0" (zero).
+
+E:<tv>:<a> - attr/char values for inventory objects by index
+F:<num>:<a>:<c> - attr/char values for features by index
+K:<num>:<a>:<c> - attr/char values for objects by index
+R:<num>:<a>:<c> - attr/char values for monsters by index
+S:<num>:<a>:<c> - attr/char values for special things by index
+
+A:<str> - action line
+ An action line should be followed by a keymap trigger "C:" line
+ or a macro trigger "P:" line. There can be intervening comments
+ and lines. The same action will be [re]used by all keymap and
+ command lines which follow it until there is another action line.
+P:<str> - macro line
+ <str> a macro encoding of a keypress. (system dependent)
+C:<mode>:<str> - keymap line
+ <mode> 0 = "original, 1 = "roguelike".
+ <str> logical keypress, including backslash codes such as "\e" and
+ control codes such as "^K". (system independent)
+ Note that there are 2 independent sets of keymaps now. Changing a
+ keymap in one doesn't affect the other.
+
+V:<num>:<kv>:<rv>:<gv>:<bv> - specify visual information
+ <num> is the color index (0-255, only 0-15 used)
+ <kv> black (?) value -- unused
+ <rv> red value (0-255)
+ <gv> green value (0-255)
+ <bv> blue value (0-255)
+W:<win>:<flag>:<value> - turn a window flag on/off.
+ <win> window number (1-7)
+ <flag> (0-31)
+ <value> 0 = off, 1 = on
+
+X:<str> - turn option off
+Y:<str> - turn option on
+ <str> the name of an option in option_text[].
+ These are the names displayed in the options screen (=).
+
+?: - conditional expression
+%: - include another pref file
+
+#####G----------------------------------------------------------------------
+#####G9.4 Option lines "X:" and "Y:"
+#####G----------------------------------------------------------------------
+
+Options and their descriptions are listed in help file *****option.txt*0["option.txt"].
+These options are set within the game using the (=) Options command,
+and the option names are the ones displayed within parentheses in the
+options screen.
+
+#####B= Common options =
+rogue_like_commands
+use_old_target
+always_pickup
+depth_in_feet
+alert_hitpoint
+auto_haggle
+auto_scum
+
+#####G----------------------------------------------------------------------
+#####G9.5 Conditional expression lines "?:"
+#####G----------------------------------------------------------------------
+
+expressions are lisp-like prefix notation.
+names (class, race, ...) aren't placed in quotes.
+AND - logical AND
+IOR - inclusive OR
+EQU - (string) equals
+NOT - logical negation
+LEQ - (string) less than or equal to
+GEQ - (string) greater than or equal to
+[,] - group expressions
+$CLASS - current class
+$GRAF - 3-letter graphics abbr in "graf-***.prf" (old, new)
+$PLAYER - current player name
+$RACE - current race
+$SYS - 3-letter system abbr in "pref-***.prf" (ami, mac, win,...)
+
+0 - false
+1 - true (can't just be non-zero)
+
+If the conditional expression is false all pref file commands
+encountered until the next conditional pref line are skipped.
+
+This isn't an actual command. It only works in pref files.
+
+The variables $CLASS, $GRAF, $PLAYER, $RACE, $PLAYER, $SYS and the
+string values they take on are case sensitive. The values also can't
+contain spaces. These constraints on the values hold when they are
+used in a pref file, but might not when used as pref filenames.
+
+This can be "turned back on" using the pref line "?:1", which is
+generally the last line in a file which contains conditional macros,
+to make sure that any files loaded after it don't get ignored as well.
+
+#####G----------------------------------------------------------------------
+#####G9.6 Macro trigger lines "P:"
+#####G----------------------------------------------------------------------
+
+All "special" keys are translated by "main-***.c" into encoded "macro
+triggers". These macro triggers have the encoded form "^_MMMxSS\r",
+where the "modifier" flags are stored in "MMM", and the two digit
+hexadecimal scan code of the keypress is stored in "SS". See source
+file "main-ibm.c" and others for more info. Note that because these
+scan codes are system-dependent, macro trigger encodings are as well.
+Keymaps are used for system independent mapping of triggers to actions.
+
+#####BModifier flags
+
+A - Alt
+C - Control
+S - Shift
+O - Option key (Mac)
+
+#####BIBM Scan codes
+
+x47 - keypad 7
+x48 - keypad 8
+x49 - keypad 9
+x4A - keypad -
+x4B - keypad 4
+x4C - keypad 5
+x4D - keypad 6
+x4E - keypad +
+x4F - keypad 1
+x50 - keypad 2
+x51 - keypad 3
+x52 - keypad Ins / .
+x53 - keypad Del / Enter
+x45 - Pause
+
+Others can be found using the "Query a macro" feature.
+
+Note that scan codes can't be assumed to be "in order", even for keys
+like function keys which "logically" should be!
+
+Note that you can't always just add a modifier to a known scan code
+because that combination might not be recognised by the hardware or
+the translation code in "main-***.c".
+
+Example: a Windows system will recognise function key F1, Shift-F1,
+and Ctrl-F1, but not Ctrl-Shift-F1. Similarly Pause and Alt-Pause are
+recognised, but not Ctrl-Pause, and Shift-Pause gives the same
+encoding as Pause alone.
+
+#####G----------------------------------------------------------------------
+#####G9.7 Saving to a pref file
+#####G----------------------------------------------------------------------
+
+Commands "Append macros to file" and "Append keymaps to file" don't
+erase the previous macros or keymaps. Instead they are appended. Note
+that this can produce *large* files after a while. Newer versions
+append to "<$PLAYER>.prf" by default, whereas older versions appended
+to "user.prf". The appended sections are preceded by headers of the
+form "Automatic macro/keymap dump". Using a distinctive comment line
+such as ###... after your entries can make editing the appended ones
+easier.
+
+[[[[[BNote: macros and keymaps aren't saved in the character file, so they]
+[[[[[Bmust be saved separately. All macros and keymaps entered by the user]
+[[[[[Bare lost when Angband terminates.]
+
+Note: keeping macros in the <$PLAYER>.prf files allows several users
+to share the same installation without interfering with each other.
+You can easily reuse or share preferences by moving them into a pref
+file "<my-name>.prf" and using the pref line "%:<my-name>.prf" to
+include them in "user.prf" for single user installations, or
+<$PLAYER>.prf for multi-user installations.
+
+#####G----------------------------------------------------------------------
+#####G9.8 Editing pref files
+#####G----------------------------------------------------------------------
+
+This is still most easily done in a text editor.
+
+~~~~~39
+#####R======================================================================
+#####R10. Macro editing commands
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G10.1 (") Enter a User Pref Command
+#####G----------------------------------------------------------------------
+
+This allows entering a single pref line.
+Example: "X:auto_scum" turns auto-scum off.
+
+Example "A:<str>" sets the current action string. If you open the
+"Interact with macros" screen this action will be the default used.
+Then using the (") command again with "P:<key>" will create a macro
+for the action <str> previously entered.
+
+Not all pref commands can be used here, or are meaningful.
+The "pseudo" pref commands (?), (%) cannot be used here.
+
+See section *****macrofaq.txt*20["Advanced macro techniques"] for ways to [ab]use this.
+
+#####G----------------------------------------------------------------------
+#####G10.2 (@) Interact with macros
+#####G----------------------------------------------------------------------
+
+#####B= Vanilla command set = (2.8.3 - 2.9.1)
+#####B-----------------------------------
+Load a user pref file
+Append macros to a file
+Query a macro action
+Create a macro
+Remove a macro
+Append keymaps to a file
+Query a keymap
+Create a keymap
+Remove a keymap
+Enter a new action
+
+#####B= Load a user pref file =
+#####B-----------------------------------
+Loads a user pref file from "lib\user". Defaults to the name of the
+current character. Macros/keymaps loaded will replace existing ones.
+
+#####B= Append macros to a file =
+#####B-----------------------------------
+Macros are dumped in macro list order. Newer ones are at the end.
+Macros are *appended* to the file. The old one isn't overwritten. This
+prevents you from accidentally wiping out your old pref file. However,
+the file can grow very long without your noticing it. Placing a line
+of ###'s at the end of your macros can help sort out what is what.
+Macros are labeled with comment "# Macro 'NNN' ". These numbers are the
+internal macro list numbers, and have no relation to key scan codes.
+The filename must end in ".prf". It will save correctly without this
+extension, or with a different one, but if you save as "<$NAME>"
+instead of "<$NAME>.prf", it won't be automatically loaded when you
+load the character with that name.
+
+#####B= Query a macro =
+#####B-----------------------------------
+Press the trigger key to test at the prompt.
+This will show "Found a macro" on the message line if it found one,
+and the line "Trigger: <trigger>". This will show "Found no macro"
+on the message line if it didn't find a macro. Some keys such as
+function keys won't be recognised by the prompt. It will wait until
+you hit a key it recognises.
+
+This command doesn't alter any settings. It will return to the main
+menu after you hit any key it recognises.
+
+#####B= Create a macro =
+#####B-----------------------------------
+After choosing this command, press the trigger key for the macro.
+The internal form will be shown after the "Trigger: " prompt.
+Note that some keys may not be recognised for remapping, such as the
+new Windows keys, as well as modifier keys such as Alt, Control, Shift
+pressed by themselves. In this case it will continue to wait for a
+valid trigger key.
+
+The current action (if any) will be shown *below* the "Trigger: "
+prompt line. On the prompt line ("Action: ") will be shown the last
+macro sequence entered. This is the action in the "action buffer".
+This isn't necessarily the macro sequence currently bound to this key.
+This is the action that will be bound to the current trigger key if
+you hit Enter.
+
+You may type in an action string to replace the one after the prompt.
+Hit Enter when you are finished.
+
+For ToME you can quit the command assignment by hitting
+Esc. The new action entered won't be assigned, and the previous one
+will remain unaltered.
+
+#####B= Remove a macro =
+#####B-----------------------------------
+Removes the macro from the trigger key by creating an identity macro
+on that key for itself. So the macro isn't completely removed, just
+overwritten. The new identity macro will be saved when the macros are
+appended to a file. This is different from the "Remove a keymap"
+command, which completely removes the keymap.
+
+#####B----------------------------------------------------------------------
+The following "keymap" commands only apply to the current "mode"
+(original/roguelike). Keymaps for the other mode will be unaffected.
+Because keymaps can only be bound to trigger keys which have a system
+independent representation, some key presses won't be recognised by
+these editing commands. They will instead wait until you press a valid
+trigger key.
+#####B----------------------------------------------------------------------
+
+#####B= Append keymaps to a file =
+#####B-----------------------------------
+Works just like "Append macros to a file". These are appended after a
+header comment "# Automatic keymap dump".
+
+#####B= Query a keymap =
+#####B-----------------------------------
+Works just like "Query a macro". This will show "Found a keymap" on
+the message line if it found one, and will display "Keypress: <map>".
+This will show "Found no keymap" on the message line if it didn't
+find a keymap. This command doesn't alter any settings. It will return
+to the main menu after you hit any key it recognises.
+
+#####B= Create a keymap =
+#####B-----------------------------------
+Works just like the "Create a macro" command. Keymaps can only be
+assigned to keys which have a system independent representation. Note
+that creating a keymap will cause the behavior of any macro whose
+action string contains that key to change.
+
+#####B= Remove a keymap =
+#####B-----------------------------------
+Removes the keymap completely from the trigger key. If the key had a
+built-in command it can now be used again. Note that removing a keymap
+will cause the behavior of any macro whose action string contained
+that key to change. This behaves differently from the "Remove a macro"
+command, which creates an identity macro.
+
+If the original "command" was itself a keymap, removing a user-entered
+keymap won't restore it. Example: the key (n) is bound to the built-in
+command "Repeat last action" in file "pref.prf" via a keymap. If you
+add a keymap for (n) and then remove it, the "Repeat last command"
+functionality won't be restored. You will have to add it back by hand,
+or reload a pref file that contains that stored keymap. [[[[[BIn particular]
+[[[[[Balmost all roguelike commands are now implemented as keymaps.]
+
+#####B= Enter a new action =
+#####B-----------------------------------
+Allows entering a new action. Actions are entered into a static buffer
+which is shared by both macros and keymaps. The action string entered
+will become the default action for creating a keymap or action, and
+will only change when a keymap or macro is created with a different
+action string, or when one is queried. Note that the same action can
+be bound to multiple trigger keys by hitting Enter when using the
+commands to create a keymap/macro.
+
+~~~~~20
+#####R======================================================================
+#####R11. Advanced Macro Techniques
+#####R======================================================================
+
+This section outlines advanced techniques not really required for game
+play. But macros become addictive after a while ...
+
+Action strings in this section are enclosed in braces {} because many
+use a double quote (") inside the action string. These are not
+inscriptions.
+
+#####G----------------------------------------------------------------------
+#####G11.1 Set current action using (@) command in an action
+#####G----------------------------------------------------------------------
+
+{"@0<str>\r\e}
+@ - Interact with macros
+0 - Enter a new action
+<str>- (action string)
+\r - Enter the action
+\e - Exit the macro editor
+
+This will work when bound to a macro.
+
+#####G----------------------------------------------------------------------
+#####G11.2 Set current action using (") command in an action
+#####G----------------------------------------------------------------------
+
+{"A:<action>\r} - sets the current action.
+" - Enter pref line
+A: - Action line
+<str>- (action string)
+\r - Enter the action
+
+This works in either a macro or keymap.
+
+#####G----------------------------------------------------------------------
+#####G11.3 Create a new keymap using (") command in an action
+#####G----------------------------------------------------------------------
+
+{"A:<act>\r"C:0:<key>\r}
+Here <act> can't contain an '\r' or '\e'.
+
+Example {"A:z0\r"C:0:J\r} binds action "z0" to (standard) keymap 'J'.
+
+#####G----------------------------------------------------------------------
+#####G11.4 Create a new macro using (") command in an action
+#####G----------------------------------------------------------------------
+
+{"A:<act>\r"P:<key>\r}
+Here <act> can't contain an '\r' or '\e'.
+Here <key> is a standard key. (not a "special" one like F1, \b, or ^A)
+
+Example
+{"A:<action1>\r"P:j\r} binds action <action1> to trigger 'j'.
+{"A:<action2>\r"P:j\r} binds action <action2> to trigger 'j'.
+If we bind these 2 macros to different trigger keys, the action that
+is on key (j) can be swapped back and forth.
+
+#####G----------------------------------------------------------------------
+#####G11.5 Turning an option on/off in an action
+#####G----------------------------------------------------------------------
+
+Turn an option on:
+{"Y:<option_name>\r}
+
+Turn an option of:
+{"Y:<option_name>\r}
+
+Example: Turn (quick_messages) on, do an action, and turn it back off:
+{"Y:quick_messages\r<action>"X:quick_messages\r}
+
+This will work in either a macro or keymap. <option_name> is the name
+of the option as it appears in the option editor accessed through the
+(=) command. These are also listed in the help file *****option.txt*0["option.txt"]. Note
+that option names contain underscores instead of spaces.
+
+#####G----------------------------------------------------------------------
+#####G11.6 Inscribe/Uninscribe an item in an action
+#####G----------------------------------------------------------------------
+
+(These action strings are enclosed in double quotes)
+
+Inscribe an item:
+"{<item>\s<inscr>\r"
+
+Uninscribe an item:
+"}<item>\r"
+
+<item> must be the inventory letter of the item, possibly preceded by
+a '/' to switch to the equipment list. You can't use digit labels for
+items with inscriptions that contain the command triggers '{' or '}',
+but you can use "@<digit>".
+
+This will work in either a macro or keymap.
+
+~~~~~41
+#####R======================================================================
+#####R12. Problems
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G12.1 Keys to avoid remapping
+#####G----------------------------------------------------------------------
+
+These don't really *need* to be avoided, but all carry dangers of one
+kind or another. You should think through potential problems before
+deciding to use them. You have been warned.
+
+#####B= Navigation keys =
+Enter, Esc, Backspace, ...
+These aren't a good choice unless you *really* need them. If you do it
+is far better to use keymaps. If you bind a macro to the Enter key,
+you will lose the ability to enter line-based commands like Inscribe.
+
+#####B= Commands generated internally =
+(_) Enter store
+This command is generated internally by the game when the player moves
+onto the door of a store. In some versions, if this key has a keymap
+bound to it, that will fire when you try to enter a store.
+
+#####B= Keys with important Operating System meanings =
+^Z (un*x) Suspends the game and returns to the command shell. This
+ is an operating system command, not an Angband command.
+ Command "fg" returns to Angband.
+^\, ^D, ^S
+ These are keys that shouldn't be bound to macros or have their
+ behavior altered.
+
+#####B= Keys with dangerous ToME meanings =
+(Q) Quit (commit suicide), (k) destroy item, (^A) Enter Debug mode...
+Using these as triggers is dangerous in case, for some reason, you
+wind up in a situation where the macro hasn't loaded or is disabled.
+You also don't want to get into a habit of typing these too fast.
+
+#####B= Selection keys =
+(e) Equipment, (i) Inventory, (-) Floor item, (/) Switch inventory
+lists. You should avoid binding these as macro triggers, to prevent
+making inventory and choice management next to impossible. But even as
+keymaps they hold some dangers.
+Example: you bind keymap on '-' to destroy item on the floor. Now if
+you try to do an action on a floor item, and it fails (such as using
+rod to identify), then the '-' can be taken from the input stream and
+used as a keymap, which would destroy the item you tried to identify.
+
+#####B= Response keys =
+(y) yes, (n) no, (Esc) cancel, (Space) skip message,...
+Binding macros to these is a [[[[[vVery Bad Idea.] Macro expansion will then
+be done when you answer a question like "Are you sure you want to quit
+the game without saving?". The expanded macro action string will be
+used as the input, and may not lead to the answer you were trying for.
+Keymaps don't have this problem. As a rule you should never use a
+macro instead of a keymap unless necessary.
+
+#####G----------------------------------------------------------------------
+#####G12.2 Num lock
+#####G----------------------------------------------------------------------
+
+Whether/not NumLock is on can make a difference for some macros.
+For example, if NumLock is on under X11 the 'X' macro won't work.
+
+#####G----------------------------------------------------------------------
+#####G12.3 Recovering
+#####G----------------------------------------------------------------------
+
+Restarting ToME clears all macros entered during the last session.
+
+You can use "Load a pref file" in the "Interact with macros" screen to
+reload a good set of prefs, overwriting bad ones being used. This will
+not "erase" a macro/keymap which doesn't have a corresponding saved
+one in the pref file. So if you add a macro/keymap to a trigger key
+which didn't have anything bound to it, reloading the pref file won't
+restore the key to its original state.
+
+If you still have problems, restore or edit any modified *.prf files
+that might be loaded.
+
+Try saving your macros, and examine them to see what went wrong.
+
+[[[[[BYou can use the backspace '\' key at the command prompt to use the]
+[[[[[Boriginal "underlying" command bound to that key. For example, if you]
+[[[[[Bbound the key '@' to a macro, you wouldn't be able to enter the macro]
+[[[[[Beditor to rebind it to itself.] Pressing '\' first, then '@' causes the
+command handler to use the built-in command, which allows you to enter
+the command editor. Note: when you use the backspace inside an action
+string, you have to double it as "\\". Do not use just a single back-
+slash, or it will be ignored, and possibly alter the meaning of the
+character that follows it.
+
+You can remove a macro/keymap from an essential key (such as the Esc
+key). Use the (@) "Interact with macros" command to access the remove
+commands.
+
+#####G----------------------------------------------------------------------
+#####G12.4 Unrecognised keys
+#####G----------------------------------------------------------------------
+
+#####B= Un*x =
+
+Function keys may not be recognised on some Un*x systems.
+
+#####B= PC/Dos/Windows =
+Doesn't recognise the WINDOWS key (start menu) or the APPLICATION key
+(context menu).
+
+On some systems, doesn't recognise modifier keys (Alt, Ctrl, Shift) on
+keypad keys when NumLock is on.
+
+See special_key_list[] in "main-win.c" for list of "special" keys that
+are recognised.
+
+#####G----------------------------------------------------------------------
+#####G12.5 Nonexistent commands
+#####G----------------------------------------------------------------------
+
+Macros and keymaps can only be bound to keypresses. The game state
+changing isn't a keypress, so you can't trigger an action when you
+become hungry, blind, confused, slowed, pseudo-id an item, pick up an
+item, gain a level, have a rod recharge, or any other event that isn't
+directly triggered by a keypress.
+
+"Attacking" also isn't a command, but you can use commands (+) Alter
+grid, (;) Walk, and (.) Run.
+
+So you don't really _attack_ Morgoth, you just _alter_ him. First he's
+alive, then he's not. :)
+
+#####G----------------------------------------------------------------------
+#####G12.6 File permissions
+#####G----------------------------------------------------------------------
+
+If you lack write permission to the pref file currently loaded by the
+game, try saving to a file with a new name. The macros can be copied
+over "by hand" later.
+
+~~~~~42
+#####R======================================================================
+#####R13. Miscellaneous
+#####R======================================================================
+
+#####G----------------------------------------------------------------------
+#####G13.1 References
+#####G----------------------------------------------------------------------
+
+*****command.txt*0["COMMAND.TXT"]
+- lists standard and roguelike keys and commands. full descriptions.
+- long description of command behavior.
+- intro to macros and user pref files.
+
+*****dungeon.txt*8["DUNGEON.TXT"]
+- look under "Objects Found in the Dungeon".
+
+*****option.txt*0["OPTION.TXT"]
+- list of options and their descriptions.
+
+"INSCRIPTIONS.HTML"
+- short intro by Julian Lighton. Available from
+"http://www.fragment.com/~jl8e/angband/inscriptions.html".
+
+#####G----------------------------------------------------------------------
+#####G13.2 Contributors
+#####G----------------------------------------------------------------------
+
+This FAQ was largely compiled from newsgroup postings to "r.g.r.a".
+So thanks to the generous contributors to the newsgroup! Email
+addresses have been removed to foil spam-bots.
+
+Ben Harrison -- maintainer: Angband 2.7.1 - 2.8.5, =Ben= in source.
+Robert Ruehlman -- maintainer: Angband 2.9.0 - present.
+DarkGod -- maintainer: PernAngband 2.9.9a - present
+
+Scott Bigham, DamonShawX, Jonathan Ellis, George W. Harris, Roger
+Hoyle, Graham S. Johnson, Chris Kern, Matthias Kurzke, Steve Lamb,
+Julian Lighton, Art Mruczek, Daniel Nash, Timo Pietilä, Jack Wise,
+Greg Wooledge, and others.
+
+#####G----------------------------------------------------------------------
+#####G13.3 Legalese
+#####G----------------------------------------------------------------------
+
+Copyright 2000 Jim Lyon and others. Redistribution of unaltered copies
+of this document is permitted without restriction. Distribution of
+altered copies is permitted without restriction as long as the
+alteration does not significantly alter the content. (For example,
+translation and conversion to another format is permitted.)
+Distribution of all other altered copies is permitted as long as credit
+for previous authors is maintained, the contact information is
+replaced with that of the alterer, and redistribution is not further
+restricted.
+
+Edited for PernAngband V5.x.x by Dawnmist with permission from Jim Lyon
+August 2001. All comments to angband@dawnmist.8m.com
diff --git a/lib/help/magic.hlp b/lib/help/magic.hlp
new file mode 100644
index 00000000..382451c3
--- /dev/null
+++ b/lib/help/magic.hlp
@@ -0,0 +1,41 @@
+|||||oy
+~~~~~01|Magic|Index
+~~~~~02|Help|Magic
+#####RWelcome to the ToME Magic Help System.
+#####R=============================================
+
+Please choose one of the following help files:
+
+General Info
+
+ *****/amagic.txt*0[(a) The ToME magic system]
+ *****/bmagic.txt*02[(b) Wands and Staves]
+
+Magic schools
+
+ *****/cm_air.txt*0[(c) The Air School]
+ *****/dm_convey.txt*0[(d) The Conveyance School]
+ *****/em_demono.txt*0[(e) The Demonology School]
+ *****/fm_divin.txt*0[(f) The Divination School]
+ *****/gm_earth.txt*0[(g) The Earth School]
+ *****/hm_fire.txt*0[(h) The Fire School]
+ *****/im_geoman.txt*0[(i) The Geomancy School]
+ *****/jm_mana.txt*0[(j) The Mana School]
+ *****/km_meta.txt*0[(k) The Meta School]
+ *****/lm_mind.txt*0[(l) The Mind School]
+ *****/mm_nature.txt*0[(m) The Nature School]
+ *****/nm_necrom.txt*0[(n) The Necromancy School]
+ *****/om_tempo.txt*0[(o) The Temporal School]
+ *****/pm_udun.txt*0[(p) The Udun School]
+ *****/qm_water.txt*0[(q) The Water School]
+
+Other powers accessed by the 'm' menu
+
+ *****/rm_mimic.txt*0[(r) Mimicry Powers]
+ *****/sm_mindcr.txt*0[(s) Mindcrafting Powers]
+ *****/tm_music.txt*0[(t) Musical Songs]
+ *****/um_symbio.txt*0[(u) Symbiotic Powers]
+ *****/vm_thaum.txt*0[(v) Thaumaturgical Spells]
+
+ *****/zhelp.hlp*0[(z) Main Help menu]
+ \ No newline at end of file
diff --git a/lib/help/magic.txt b/lib/help/magic.txt
new file mode 100644
index 00000000..93486f0b
--- /dev/null
+++ b/lib/help/magic.txt
@@ -0,0 +1,143 @@
+|||||oy
+~~~~~03|Magic
+#####R === ToME Magic system ===
+
+*****magic.txt*02[Wands and Staves]
+
+For the basics of how to use skills, please see *****skills.txt*0[Using Skills].
+
+In ToME you have a basic *****skills.txt*21[Magic] skill. This skill is one of the most
+important ones for a spellcaster, since it is responsible for how much mana you
+have. You can never have too much of it. If you like magical devices, the
+Magical Device skill is also important, since it controls the Magical
+Device ability of your character. This ability again dictates the fail rates
+of use of wands/rods/staffs and activation of random-artifacts/artifacts, and
+it will also increase the power of these items.
+~~~~~01|Magic|Schools
+ToME uses skills to define the various schools of magic. There are 11 primary
+schools:
+ *****m_mana.txt*0[Mana] *****m_fire.txt*0[Fire] *****m_water.txt*0[Water]
+ *****m_air.txt*0[Air] *****m_earth.txt*0[Earth] *****m_meta.txt*0[Meta]
+ *****m_convey.txt*0[Conveyance] *****m_divin.txt*0[Divination] *****m_tempo.txt*0[Temporal]
+ *****m_mind.txt*0[Mind] *****m_nature.txt*0[Nature]
+
+Other magical skills, generally being used primarily by characters of a
+specific class, are:
+ *****m_demono.txt*0[Demonology] *****m_necrom.txt*0[Necromancy] *****skills.txt*36[Runecraft]
+ *****m_thaum.txt*0[Thaumaturgy] *****skills.txt*49[Alchemy] *****m_geoman.txt*0[Geomancy]
+
+The *****m_demono.txt*0[Demonology] skill is primarily used by *****c_demono.txt*0[Demonologists] for their special
+spells, whereas the *****m_necrom.txt*0[Necromancy] skill is used by *****c_necro.txt*0[Necromancers] for their own set
+of special spells.
+The same goes for *****skills.txt*36[Runecraft], which is used by *****c_runecr.txt*0[Runecrafters] to allow use of more
+difficult runes or rune-combinations. *****m_thaum.txt*0[Thaumaturgy] gives you randomly chosen
+attack spells, and as such each game with it will be different. *****c_geoman.txt*0[Geomancers]
+harness the powers of the elements using *****m_geoman.txt*0[Geomancy]. Lastly we have
+*****skills.txt*49[Alchemy], which is used by *****c_alchem.txt*0[Alchemists].
+
+In addition to the schools of magic, you can get access to special sets of
+spells if you worship a God. There are currently four good Gods,
+*****g_eru.txt*0[Eru Iluvatar], *****g_manwe.txt*0[Manwe Sulimo], *****g_yavann.txt*0[Yavanna Kementari] and *****g_tulkas.txt*0[Tulkas]. There is also an evil
+god, *****g_melkor.txt*0[Melkor]. Each of them gives you access to different types of spells.
+
+*****c_pr_drk.txt*0[Worshippers of Melkor] also have access to the special *****m_udun.txt*0[Udun] school of magic,
+whereas other *****c_priest.txt*0[Priests] and *****c_mindcr.txt*0[Mindcrafters] can use *****m_mindcr.txt*0[Mindcrafting Powers].
+
+*****c_symbia.txt*0[Symbiants] have access to their own special brand of *****m_symbio.txt*0[magic powers], and *****c_bard.txt*0[Bards] have
+access to *****m_music.txt*0[Songs], which affect creatures in ways that can appear to be magical.
+
+The 11 different primary schools give you access to different spells of
+variable usefulness. The way they work is that adding skill points to a
+specific school will enable you to get higher level spells for that specific
+school. By level requirements for a specific spell you could actually say skill
+requirement, since they correlate exactly. Let's take a simple example:
+If you have the *****m_mana.txt*0[Mana] school skill at level 24.000, it means you can use any
+spell in the mana school up to and including those requiring level 24. [[[[[BThere are]
+[[[[[Balso some spells requiring a certain skill level in two schools, and there is a]
+[[[[[Bpossibility of spells requiring three or more. For this kind of spells the ]
+[[[[[Bspell level is determined by taking an average of the necessary skills. ]
+When calculating spell level for spells which require more than one school,
+sorcery (or god-granted access) can be used in place of the primary schools in
+the normal way. Once the average has been calculated, any bonus from the
+spell-power skill can also be applied as normal. If one of the schools required
+is the Udun school, then the appropriate bonus from character level will be
+applied. Lastly, if you look at a spell, and the spell level reads -2 or some
+other negative value while it's also grayed out, that means you need to
+increase the corresponding school's skill level by 3, since only 2 will have
+it end up on spell level 0, where it still is unusable. If it reads n/a, you
+currently have no skill points in that school.
+
+Another thing that should be explained about the skills and schools of magic
+right now, is that the skill doesn't stop being useful only for gaining spells.
+The higher the skill level, the higher the spell level will be, and the more
+powerful your spells will be. For instance, say you have the *****m_mana.txt*0[Mana] skill at
+level 24. Now, the Manathrust spell is one of the spells for that school
+that only requires skill level 1, but since you've got skill at level 24, the
+power of the spell is increased as well. For comparison, a level 1
+Manathrust costs 1 mana and does 4d2 damage, while at level 24 it costs 12
+mana and does a whopping 27d10 damage.
+
+The *****skills.txt*23[Sorcery] skill is a nice skill, since it gives you
+access to all the 11 primary schools of magic, just as if you'd spent an equal
+amount of skill points in all the skills. It's available to any mage character,
+but only a *****c_sorcer.txt*0[Sorceror] will be able to be proficient in it. Also, having this
+skill at level 1 will give you a hitpoint-penalty of 1%, all the way up to
+skill level 50, with a hitpoint-penalty of 50%. There are also ToHit and ToDam
+penalties for sorcery, so don't choose sorcery if you plan to do much fighting.
+
+There is also the *****skills.txt*22[Spell Power] skill. This skill is rather nice, since it
+will augment the power of spells you already know. The distinction between this
+and the others, is that it will not grant you new spells, but instead increases
+the levels of spells. At level 50 it grants 20 extra spell levels. [[[[[BThis skill ]
+[[[[[Bonly affects the 11 primary schools] (Mana, Earth, Air, Fire, Water, Meta,
+Mind, Temporal, Conveyance, Divination and Nature) as well as Geomancy and the
+spells granted by the Gods.
+
+There is also the Magic-Device skill which affects your ability to use wands,
+staves, rods and to activate special objects. It also affects the spell-levels
+of the staff and wand spells, as explained below.
+~~~~~02|Wands
+~~~~~04|Magic|Wands and Staves
+~~~~~05|Staves
+#####GWands and Staves
+
+Wands and staves (sticks) operate in a similar fashion, and in fact most of
+them use the same spells with the same effects. When you pick up a stick, you'll
+see it has two numbers in the format [x|y] in addition to the number of charges
+it holds. By increasing your magic-device skill you can increase the level (and
+hence the power) of the spell in that stick. The x value are skill level
+bonuses which the staff itself holds, and these are added onto your existing
+magic-device skill for the purpose of using the staff. The y value is the
+maximum possible skill level for that stick. Things are balanced by the use of a
+"minimum magic-device skill level required to raise spell level". Here's an
+example:
+A Staff of Sense Hidden [1|10]. Your magic device skill is at 6. If you were to
+identify the staff and then 'I'nspect it, you would see the following
+information:
+
+&&&&&w wSwpwewlwlw wdwewswcwrwiwbwtwiwownw:w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wDwewtwewcwtwsw wtwhwew wtwrwawpwsw wiwnw waw wcwewrwtwawiwnw wrwawdwiwuwsw wawrwowuwnwdw wywowuw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wAwtw wlwewvwewlw w1w5w wiwtw wawlwlwowwwsw wywowuw wtwow wswewnwswew wiwnwvwiwswiwbwlwew wfwowrw waw wwwhwiwlwew w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wSwpwewlwlw wlwewvwewlw:w B3w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wMwiwnwiwmwuwnw wMwawgwiwcw wDwewvwiwcwew wlwewvwewlw wtwow wiwnwcwrwewawswew wswpwewlwlw wlwewvwewlw:w B5w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wSwpwewlwlw wfwawiwlw:w g2g3w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&w wSwpwewlwlw wiwnwfwow:w yryaydy y1y3w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+
+The Spell level is the level at which the spell will actually be cast.
+Spell fail is the spell fail percentage. The spell info may contain the radius
+of effect, amount of damage, or duration the spell might last.
+The Minimum Magic Device level to increase your spell level is just that. If
+your magic device skill was less than this level, then the staff would be
+casting the spell at level one. Our magic device skill is 6. Therefore we are
+casting at level 2 (at skill level 5, we should be casting the spell at level
+1). Then we add the bonus from the staff of 1, which gives us our spell level
+of 3. If our magic device in this example had been 14, this would have given us
+a spell level of 1 + (14 - 5 + 1) = 11. This is calculated from the formula:
+spell level = staff bonus + (magic device - minimum magic device + 1)).
+However given that the maximum spell level with this staff is 10, you'll be
+casting with a spell level of 10.
+As you get deeper into the dungeons, you will find sticks with higher bonuses
+and maximum spell levels.
+
+ Written by: vrak AKA Per-Arne Holtmon Akoe
+ Wands and Staves section added by fearoffours
diff --git a/lib/help/newbie.hlp b/lib/help/newbie.hlp
new file mode 100644
index 00000000..2dda8dbc
--- /dev/null
+++ b/lib/help/newbie.hlp
@@ -0,0 +1,16 @@
+|||||oy
+~~~~~01|Help|New players
+#####RWelcome to the ToME New Players Help System.
+#####R=============================================
+
+Please choose one of the following help files:
+
+ *****/awhattome.txt*0[(a) What is ToME?]
+ *****/bbirth.txt*0[(b) Creating a character] Race, class, gods, stats + more
+ *****/cexplore.hlp*0[(c) Exploring the town and dungeon] Dungeons, commands, features
+ *****/dexperien.hlp*0[(d) Gaining experience] Skills and abilities
+ *****/emagic.hlp*0[(e) Using magic and magical items] Magic schools, the 'm' menu, wands etc
+ *****/fTANG.txt*0[(f) The ToME newbie guide]
+
+ *****/zhelp.hlp*0[(z) Main Help menu]
+
diff --git a/lib/help/option.txt b/lib/help/option.txt
new file mode 100644
index 00000000..33e0ce9e
--- /dev/null
+++ b/lib/help/option.txt
@@ -0,0 +1,715 @@
+|||||oy
+~~~~~05|Options
+#####R=== Options and Effects (ToME 2.1.x) ===
+
+Most of the options are accessible through the '=' command, which provides
+an interface to the various sets of options available to the player.
+
+In the descriptions below, each option is listed as the textual summary
+which is shown on the options screen, plus the internal name of the
+option in brackets, followed by a textual description of the option.
+
+Note that the internal name of the option can be used in user pref files
+to force the option to a given setting; see *****command.txt*105["command.txt"] for more info.
+
+Various concepts are mentioned in the descriptions below, including "disturb"
+(cancel any running, resting, or repeated commands, which are in progress),
+"flush" (forget any keypresses waiting in the keypress queue, including any
+macros in progress), and "fresh" (dump any pending output to the screen).
+
+~~~~~06|Options|Startup
+#####R=== Birth/Startup Options ===
+
+The birth or startup options are only able to be changed during character
+creation, and can be accessed by typing '=' during the creation process. They
+can also be viewed from the option menu while playing, but not changed then.
+
+#####GMaximise stats [maximize]
+ Maximise causes the race and class stat bonuses to be applied like
+ equipment bonuses. This usually makes the character harder at the
+ beginning of the game, but easier later on, since the stats are no longer
+ limited to a "natural" value of 28 (18/100).
+
+#####GPreserve artifacts [preserve]
+ Preserve artifacts cancels all level feelings of the "special" variety,
+ but allows missed artifacts to be "saved" by wandering monsters and
+ found again at a later time. This only works for non-identified artifacts.
+
+#####GSpecify 'minimal' stats [autoroll]
+ Uses the standard autoroller for character creation. This allows the player
+ to specify a set of minimum values for the stats, and the game will keep
+ rerolling until it achieves them (or 1 million rolls, whichever comes
+ first). Be warned, however, that there is a maximum total power permitted
+ for a starting character. Setting one stat to near maximum is easily
+ achievable; 2 is reasonable; but 3 would require the remaining 3 stats to
+ be near their minimum values.
+
+#####GGenerate character using a point system [point_based]
+ Allows the player to distribute a certain number of points among her stats.
+ It results in the player being able to get one or two really high stats, at
+ the expense of other not-so-important stats; or to have a well-rounded
+ character who is above average (but not great) in all stats. Unused points
+ convert into starting gold for the player.
+
+#####GGenerate persistent dungeons [permanent_levels]
+ Setting this option means that level 1 of the dungeon will always have
+ the same dungeon map each time you visit it (like the Nethack dungeon).
+
+#####GAlways generate very unusual rooms [ironman_rooms]
+ Tries to place a special room or vault on every dungeon level. Very fun,
+ but extremely deadly - imagine that Greater Checkerboard Vault with Lokkak
+ on dungeon level 1!
+
+#####GAllow notes to be written to a file [take_notes]
+ Allows any player-written notes (with the "|" command) to be written to
+ a file and kept (instead of being put in the message list).
+
+#####GAutomatically note important events [auto_notes]
+ Used in conjunction with the take_notes option, this option makes a note
+ each time you gain a level, kill a unique, find an artifact, etc.
+
+#####GFast autoroller (NOT on multiuser systems) [fast_autoroller]
+ The normal autoroller has a built-in delay that helps prevent it from
+ overloading a system. This option reduces that delay, allowing characters
+ to be rolled in a much shorter time, but should not be used on multiuser
+ systems.
+
+#####GAllow use of some 'joke' monsters [joke_monsters]
+ Allows monsters flagged as being some of DarkGod's jokes to be generated.
+
+#####GAlways make small levels [always_small_level]
+ Overrides the in-game option of small_levels, generating smaller levels
+ whenever possible.
+
+#####GYou can receive fates, good or bad [fate_option]
+ Allows the player to turn off ToME's *****fatespoi.txt*0[fates] for that character.
+
+~~~~~07|Options|Ingame
+#####RIN GAME OPTIONS
+#####R===============
+
+These options are available from within the game, and can be toggled on and
+off at will during the course of the game.
+
+~~~~~08|Options|Interface
+#####R=== Option Set 1 -- User Interface ===
+
+#####GRogue-like commands [rogue_like_commands]
+ Selects the "roguelike" command set (see *****command.txt*0["command.txt"] for info).
+~~~~~1
+#####GActivate quick messages [quick_messages]
+ Allows the use of any keypress as a response to the "-more-" prompt
+ (useful for monster farming). Allows most keys to mean "no" to any
+ "[y/n]" prompt.
+
+#####GPrompt for various information [other_query_flag]
+ No longer used.
+
+#####GPrompt before picking things up [carry_query_flag]
+ Forces the game to ask you for confirmation when you do something that
+ would normally cause an item to be picked up.
+~~~~~4
+#####GUse old target by default [use_old_target]
+ Forces all commands which normally ask for a direction to use the
+ current target if there is one. If the current target is a monster, it
+ becomes unset when that monster dies. Use of this option can be dangerous
+ if you target locations on the ground, unless you clear them when done.
+
+#####GPick things up by default [always_pickup]
+ Tells the game that walking onto an item should attempt to pick it up.
+ Otherwise, you must use the "g" command, or the "-" command while walking.
+ Combined with "carry_query_flag" (Prompt before picking things up), allows
+ you to selectively pick up all items which you step on.
+
+#####GPrompt before picking up heavy objects [prompt_pickup_heavy]
+ Generates a prompt whenever the character tries to pick up an item that
+ would slow him down.
+
+#####GRepeat obvious commands [always_repeat]
+ Tells the game that when you attempt to open a door or chest, bash
+ a door, tunnel through walls, or disarm traps or chests, that you
+ wish to repeat the command 99 times (see *****command.txt*0["command.txt"]).
+
+#####GShow dungeon level in feet [depth_in_feet]
+ Display the dungeon depth in "feet" instead of as a level number (one
+ level is equivalent to 50'). This also affects the monster memory display.
+
+#####GMerge inscriptions when stacking [stack_force_notes]
+ Force otherwise identical objects to merge, even if one has an empty
+ inscription and the other does not. The resulting stack keeps the
+ non-empty inscription.
+
+#####GMerge discounts when stacking [stack_force_costs]
+ Force otherwise identical objects to merge, even if they have different
+ discounts. The resulting stack keeps the largest discount. This option
+ may cause you to lose "value", but will give you optimal pack usage.
+
+#####GShow labels in object lists [show_labels]
+ Display the "labels" for objects in the equipment list, and in any
+ special window which is displaying the equipment. These labels
+ indicate what the player is using the object for, such as "wielding"
+ or "wearing" (in a given location). After you have played for a while,
+ this information is no longer useful, and can be annoying.
+ Note that in ToME this option no longer controls the "plain
+ flavoured object descriptions": a separate option for them has been added
+ under "ToME Options".
+
+#####GShow weights in object lists [show_weights]
+ Display the weight of objects in the inventory and equipment lists,
+ and in stores, and in any special window which is displaying any of
+ these lists.
+
+#####GShow graphics in inventory list [show_inven_graph]
+ Display the graphics of objects in the inventory list, and in any special
+ window which is displaying the inventory list.
+
+#####GShow graphics in equipment list [show_equip_graph]
+ Display the graphics of objects in the equipment list, and in any special
+ window which is displaying the equipment list.
+
+#####GShow graphics in stores [show_store_graph]
+ Display the graphics of objects in the store list.
+
+#####GShow choices in certain sub-windows [show_choices]
+ Indicate legal choices in special windows which display lists.
+
+#####GShow details in certain sub-windows [show_details]
+ Indicate extra details in special windows, currently used to activate
+ the display of death counts and monster descriptions when recalling
+ details about a monster.
+
+#####GAudible bell (on errors, etc) [ring_bell]
+ Attempt to make a "bell" noise when various errors occur.
+
+#####GUse color if possible (slow) [use_color]
+ This option enables the software support for colour. Since this makes
+ the game slower, you should always disable this option if you are using
+ a machine which is not capable of using colours.
+
+~~~~~09|Options|Disturbance
+#####R=== Option Set 2 -- Disturbance ===
+
+#####GRun past stairs [find_ignore_stairs]
+ Ignore stairs when running.
+
+#####GRun through open doors [find_ignore_doors]
+ Ignore open doors when running.
+
+#####GRun past known corners [find_cut]
+ Cut sharply around known corners when running. This will result in
+ faster running, but may cause you to run into a lurking monster.
+
+#####GRun into potential corners [find_examine]
+ Fully explore potential corners in hallways. This is strongly
+ recommended if your light source has a small radius (e.g. a torch).
+
+#####GDisturb whenever any monster moves [disturb_move]
+ Disturb the player when any monster moves, appears, or disappears.
+ This includes monsters which are only visible due to telepathy, so
+ you should probably turn this option off if you want to "rest" near
+ such monsters.
+
+#####GDisturb whenever viewable monster moves [disturb_near]
+ Disturb the player when any viewable monster moves, whenever any
+ monster becomes viewable for the first time, and also whenever any
+ viewable monster becomes no longer viewable. This option ignores
+ the existence of telepathy for the purpose of determining whether
+ a monster is viewable. See also the "view_reduce_view" option.
+
+#####GDisturb whenever map panel changes [disturb_panel]
+ This option causes you to be disturbed (stop running) when the screen
+ scrolls, as it does when you get close to the edge of the visible screen.
+
+#####GDisturb whenever leaving trap-detected area [disturb_detect]
+ This option causes you to be disturbed whenever you are leaving
+ a trap-detected area. This option is strongly recommended.
+
+#####GDisturb whenever player state changes [disturb_state]
+ This option causes you to be disturbed whenever the player state
+ changes, including changes in hunger, resistance, confusion, etc.
+
+#####GDisturb whenever boring things happen [disturb_minor]
+ This option causes you to be disturbed by various boring things,
+ including monsters bashing down doors, inventory feelings, and
+ beginning to run out of light-source fuel.
+
+#####GDisturb whenever random things happen [disturb_other]
+ In ToME, uncursed teleporting items may teleport you around sometimes,
+ asking for your confirmation (and possibly disturbing your rest). If you
+ unset this option, they will stop asking you and teleporting you randomly.
+ Cursed items will neither ask for confirmation nor stop teleporting you
+ even if this option is unset. (You may also inscribe an item with {.}
+ to suppress its random-teleportation power, unless it is cursed.)
+
+#####GAlert user to critical hitpoints [alert_hitpoint]
+ Produce a "bell" noise, and flushes all pending input, when your hitpoints
+ reach the warning point chosen elsewhere, preventing stupid deaths.
+
+#####GAlert user to various failures [alert_failure]
+ Produce a "bell" noise, and flushes all pending input, when various
+ failures occur, as described above.
+
+#####GGet last words when the character dies [last_words]
+ Display a random line from the "death.txt" file when your character
+ dies. If this option is not selected, the "You die." message is displayed
+ instead.
+
+#####GAllow shopkeepers and uniques to speak [speak_unique]
+ If this option is in use, shopkeepers may sometimes whisper rumours to
+ you. Also certain monsters start boasting as they attack you, and when
+ they die, they say their "last words".
+
+#####GNo query to destroy known worthless items [auto_destroy]
+ It can sometimes be annoying that the Destroy command asks for confirmation
+ when you are attempting to destroy a Broken sword {cursed}. If this option
+ is set, no confirmation will be asked if you attempt to destroy an object
+ which you know to be worthless. Of course, cursed artifacts cannot be
+ destroyed even if this option is set.
+
+#####GConfirm to wear/wield known cursed items [confirm_wear]
+ Some players may occasionally, due to a typing mistake, find themselves
+ wearing an item which they knew was cursed. If this option is set, you
+ should be safe from such typing mistakes: you will be prompted if you
+ attempt to wear or wield an item if your character knows it is cursed.
+
+#####GPrompt before exiting a dungeon level [confirm_stairs]
+ Some players (such as myself) often accidentally press the '<' key
+ and exit a Special feeling level. If this option is set, the program
+ asks for confirmation before you go up or down the stairs. Others may
+ find the prompt annoying; they should of course not set this option. :-)
+
+#####GDisturb when visible pets move [disturb_pets]
+ The player may wish that some of the disturbance options do not apply
+ to pets: for example, it can be annoying if your rest is always disturbed
+ by a pet dog who pops in every now and then. By default, pets do not
+ disturb you even if full monster disturbance options are set. If you
+ want your pets to disturb you like normal monsters, set this option.
+
+#####GAutomatically open doors [easy_open]
+ Opens (and unlocks) doors by walking into them. Also, if you are adjacent
+ to only one known door, using the "o"pen command will not prompt you for
+ a direction.
+
+#####GAutomatically disarm traps [easy_disarm]
+ Attempts to disarm traps by walking into/over them. Also, if you are
+ adjacent to only one known trap, using the "D"isarm command will not
+ prompt you for a direction. If your disarming ability is particularly
+ low, you should probably not enable this option, because you will often
+ fail to disarm the traps, and sometimes trigger them.
+
+#####GAutomatically tunnel walls [easy_tunnel]
+ Automatically tunnels into walls by walking into them.
+
+~~~~~10|Options|Game-play
+#####R=== Option Set 3 -- Game-play ===
+
+#####GAuto-haggle in stores [auto_haggle]
+ Disable haggling in stores, resulting in a ten percent sales tax
+ on items which you would have otherwise been forced to haggle for.
+ When this option is on, all prices listed in stores will be the
+ actual price that you pay for an item, as opposed to the price
+ that the shop-keeper will suggest.
+
+#####GAuto-scum for good levels [auto_scum]
+ This is a hack but allows you to force the generation of "good" levels
+ in the dungeon. This option may be extremely slow on some machines,
+ especially deep in the dungeon. The minimum "goodness" of the level
+ is based on the dungeon level, so the deeper you go, the better the
+ level will be.
+
+#####GAllow weapons and armor to stack [stack_allow_items]
+ Allow identical weapons and armor to be combined into a stack. This
+ also allows unidentified, but identical, ammo to be combined, which
+ may result in the auto-identification of some of the ammo, but which
+ makes it a lot easier to actually use unidentified ammo.
+
+#####GAllow wands/staffs/rods to stack [stack_allow_wands]
+ Allow identical wands/staffs/rods to be combined into a stack. This
+ may force the items to be unstacked to use them, which may result
+ in overflow of the pack. Also, the entire stack can be recharged
+ (and possibly destroyed) at the same time.
+
+#####GExpand the power of the look command [expand_look]
+ Expand the "l"ook command to allow the user to look at grids which
+ are not actually in view of the player, allowing the examination of
+ objects/monsters which have only been detected by spells, or sensed
+ via telepathy.
+
+#####GExpand the power of the list commands [expand_list]
+ Expand the "listing" commands so that they wrap at the edges of
+ the appropriate list. This allows the "l"ook and "t"arget commands
+ to cycle through all appropriate grids forever, and the "identify
+ symbol" to browse through all of the monsters of a given type.
+
+#####GMap remembers all perma-lit grids [view_perma_grids]
+ Memorise all perma-lit floor grids which are seen by the player.
+ This option allows you to keep track of which explored floor grids
+ were perma-lit, but does not distinguish between dark floor grids,
+ unexplored floor grids, and unknown grids. Turning off this option
+ allows the player to always know which lit floor grids are in line
+ of sight, but this is better accomplished by the "view_bright_lite"
+ option. Note that any non-floor grids which is seen by the player
+ are always memorised, and any object which is seen by the player is
+ memorised independently from the memorisation of the grid itself.
+
+#####GMap remembers all torch-lit grids [view_torch_grids]
+ Memorise all (torch-lit) floor grids which are seen by the player.
+ This option not only allows you to keep track of which floor grids
+ have been explored, but also which ones are dark, because the use
+ of this option activates a special color scheme for the display of
+ floor grids, in which dark grids are drawn in dark grey, lit grids
+ are drawn in white, and (if the "view_bright_lite" option is set)
+ lit grids which are also in line of sight are drawn in orange. Note
+ that grids which are currently torch-lit are considered to be "lit",
+ and are thus drawn in white, unless the "view_yellow_lite" option is
+ set, in which case they are drawn in yellow.
+
+#####GAllow some monsters to carry light [monster_lite]
+ This option allows some monsters to carry light sources around with them,
+ lighting up the space around them. It can also allow you to see when some
+ monsters are heading your way before they reach the bend in the corridor
+ where you are hiding in ambush....
+
+#####GGenerate dungeons with aligned rooms [dungeon_align]
+ Force all rooms to be aligned with the "panel" divisions. This results
+ in a much prettier dungeon, but may result in fewer greater vaults.
+
+#####GGenerate dungeons with connected stairs [dungeon_stair]
+ Always generate a staircase back to the level whence you came, if you used
+ a staircase to get to the level. This is more "realistic", and safer,
+ but less of a challenge for some people.
+
+#####GMonsters chase current location (v.slow) [flow_by_sound]
+ Allow monsters to make paths to the player when they are nearby. This
+ option is extremely slow, but can produce viciously smart monsters.
+
+#####GMonsters chase recent locations (v.slow) [flow_by_smell]
+ As above, but also allow monsters to take advantage of "old" trails
+ that you may have left in the dungeon.
+~~~~~3
+#####GUse special symbols for the player char [player_symbols]
+ If this option has been compiled in, it allows you to display your
+ character using race / class / sex dependent colours and graphical
+ symbols. Note that the support for this option may not have been
+ compiled in on all platforms.
+
+#####GPlain object descriptions [plain_descriptions]
+ In ToME, this option disables "full" names for identified flavoured
+ objects; in other words, if this option is not in use, an identified
+ Potion of Speed could be listed (for example) as a Blue Potion of Speed.
+ If you prefer simpler, less verbose descriptions, set this option.
+
+#####GMonsters learn from their mistakes [smart_learn]
+ Allow monsters to learn what spell attacks you are resistant to,
+ and to use this information to choose the best attacks.
+
+#####GMonsters exploit players weaknesses [smart_cheat]
+ Allow monsters to know what spell attacks you are resistant to, without
+ first having to observe such an attack upon you, and to use this
+ information to choose the best attacks.
+
+#####GMonsters behave stupidly [stupid_monsters]
+ ToME incorporates Keldon Jones' improved monster Artificial
+ Intelligence patch. While this patch most certainly makes monsters
+ behave more realistically, they will also be more deadly with the
+ improved AI. If you are a sissy, set this option to get the old,
+ really stupid monster AI.
+ Note that the new AI is a bit processing power expensive. If you have
+ an old computer (386sx) and ToME is running too slowly, you could
+ try turning stupid_monsters on. Or dumpster-dive for a Pentium so you can
+ run ToME. :-)
+
+#####GAllow unusually small dungeon levels [small_levels]
+ This option enables the creation of levels of varying sizes. Levels
+ that are as small as one "screen" (80x24) are possible, and they can be
+ quite dangerous, especially for a low level character, because they have
+ as many monsters and traps as their full-sized counterparts.
+ Note that this option has the side effect of enabling / disabling
+ 'destroyed' levels (they are enabled if small levels are).
+
+#####GAllow empty 'arena' levels [empty_levels]
+ Normal dungeon levels consist mostly of rock. If this option is in
+ use, levels which have empty floor instead of solid rock may also
+ be created (somewhat reminiscent of Nethack's "big-room" levels).
+ These levels can be extremely deadly, especially with breathing
+ monsters (since there are few obstructions to shield you). Arena levels
+ may have vaults, nests and pits in them like normal levels. Some
+ arena levels are dark when they are created, but most are lit.
+
+~~~~~11|Options|Efficiency
+#####R=== Option Set 4 -- Efficiency ===
+
+#####GReduce lite-radius when running [view_reduce_lite]
+ Reduce the radius of the player's light to that of a torch (radius 1)
+ when the player is running, which makes running more efficient (CPU-wise),
+ but is extremely annoying. Certain older versions of Angband used
+ this behavior always, so "purists" should turn it on.
+
+#####GReduce view-radius in town [view_reduce_view]
+ No longer in use.
+
+#####GAvoid checking for user abort [avoid_abort]
+ Avoid checking to see if the user has pressed a key during resting
+ or running or repeated commands. This not only makes the game much
+ more efficient (on many systems), but also allows the use of certain
+ obscure macro sequences, such as turning this option on, resting until
+ done, turning this option off, and casting a spell. Note that the use
+ of this option may be dangerous on certain "graphic" machines. Resting
+ for long periods of time with this option set is dangerous since the
+ resting may not stop until the user takes damage from starvation.
+
+#####GAvoid processing special colors [avoid_other]
+ Avoid processing the "multi-hued" or "clear" attributes of monsters.
+ This will cause all multi-hued monsters to appear violet and all
+ clear monsters to appear white, and will cause trappers and lurkers to
+ be visible on some machines, but it may greatly increase efficiency
+ especially when telepathy is active. Certain systems may choose to set
+ this option if they are unable to support the special color processing,
+ but if they handle graphics "correctly", by using attr/char pairs with
+ the "high bits" set, then not only will the game correctly avoid using
+ any "dangerous" color processing, but it will allow such processing to
+ occur when it is not dangerous. So if you are using graphics, and you
+ use a normal attr/char for the floor grids, then you can use the
+ "special lighting effects" for floors.
+
+#####GFlush input on various failures [flush_failure]
+ This option forces the game to flush all pending input whenever various
+ "failures" occur, such as failure to cast a spell, failure to use a wand,
+ etc. This is very useful if you use macros which include "directional"
+ components with commands that can fail, since it will prevent you from
+ walking towards monsters when your spells fail.
+
+#####GFlush input whenever disturbed [flush_disturb]
+ This option forces the game to flush all pending input whenever the
+ character is "disturbed". This is useful if you use macros which take
+ time, since it will prevent you from continuing your macro while being
+ attacked by a monster.
+
+#####GFlush input before every command [flush_command]
+ This option forces the game to flush all pending input before every
+ command. This option is silly, unless you are very paranoid.
+
+#####GFlush output before every command [fresh_before]
+ This option forces the game to flush all output before every command.
+ This will give you maximal information, but may slow down the game
+ somewhat. Note that this option is only useful when using macros,
+ resting, running, or repeating commands, since the output is always
+ flushed when the game is waiting for a keypress from the user.
+
+#####GFlush output after every command [fresh_after]
+ This option forces the game to flush all output after not only every
+ player command, but also after every round of processing monsters and
+ objects, which will give you maximal information, but may slow down
+ the game a lot, especially on slower machines; and on faster machines
+ you normally do not have a chance to see the results anyway.
+
+#####GFlush output after every message [fresh_message]
+ This option forces the game to flush all output after every message
+ displayed by the game. This will give you maximal information, but
+ may slow down the game somewhat.
+
+#####GCompress messages in savefiles [compress_savefile]
+ Compress the savefile, by only saving the most recent messages that
+ the player has received. This can cut the size of the savefile by a
+ drastic amount, but will result in the loss of message information.
+~~~~~2
+#####GHilite the player with the cursor [hilite_player]
+ Place the visible cursor on the player. This looks fine on some Unix
+ machines, but horrible on most graphics machines. Note that only some
+ machines are able to *not* show the cursor, but on those machines, hiding
+ the cursor often speeds up the game and looks better.
+
+#####GUse special colors for torch-lit grids [view_yellow_lite]
+ This option causes special colors to be used for "torch-lit" grids in
+ certain situations (see "view_granite_lite" and "view_special_lite").
+ Turning this option off will slightly improve game speed.
+
+#####GUse special colors for 'viewable' grids [view_bright_lite]
+ This option causes special colors to be used for non "viewable" grids
+ in certain situations (see "view_granite_lite" and "view_special_lite").
+ When this option is set, floor grids which are normally drawn in white
+ but which are not currently viewable by the player are instead drawn
+ in dark grey. This makes the viewable grids appear brighter than the
+ others, allowing the player to easily determine which floor grids are
+ in line of sight. Turning this option off will probably increase the
+ speed of the game.
+
+#####GUse special colors for wall grids (slow) [view_granite_lite]
+ This option activates a special color scheme for all wall grids which
+ are normally drawn in white (as walls and rubble normally are). When
+ the player is blind, we use dark grey, else if the grid is torch-lit,
+ we use yellow (or white, depending on the "view_yellow_lite" option),
+ else if the "view_bright_lite" option is set, and the grid is not in line
+ of sight, or the grid is dark, or the grid is only "partially" lit, then
+ we use grey, otherwise we use the normal white. Turning this option
+ off will probably increase the speed of the game.
+
+#####GUse special colors for floor grids (slow) [view_special_lite]
+ This option activates a special color scheme for all floor grids which
+ are normally drawn in white (as they normally are). When the player is
+ blind, we use dark grey, else if the grid is torch-lit, we use yellow
+ (or white, depending on the "view_yellow_lite" option), else if the grid
+ is dark, we use dark grey, else if the "view_bright_lite" option is
+ set, and the grid is not in line of sight, we use grey, otherwise we
+ use the normal white. Turning this option off will probably increase
+ the speed of the game.
+
+#####GCentre the view on the player (very slow) [center_player]
+ Keeps the player's character in the centre of the screen, and moves the
+ dungeon around the player. Can be useful to prevent off-screen breaths.
+
+~~~~~12|Options|ToME Options
+#####R=== ToME Options ===
+
+Features which are unique to ToME are collected in this menu.
+
+#####GIngame contextual help [ingame_help]
+ Setting this option allows the game to trigger a help message the first
+ time you come across an item or some other trigger. This is very useful
+ for new players. More experienced players may wish to switch this option
+ off.
+
+#####GShow the experience needed for the next level [exp_need]
+ Setting this option alters the display of experience on the left of
+ the main screen to the experience needed to reach the next character level,
+ instead of the character's current total experience.
+
+#####GUse the old(Z) coloring scheme(reload the game) [old_colors]
+ Setting this option toggles the ASCII game colour display from the
+ standard Angband monster colours to the Zangband-based monster colours.
+ Since this alters the display and monster memory display, you need to
+ reload the game when you alter this setting before it will display the
+ new colours.
+
+#####GAutomatically clear '-more-' prompts [auto_more]
+ Setting this option automatically clears any messages from the top
+ of the window. Be warned that this could be dangerous, as you don't
+ actually get to see the messages unless you use ^P.
+
+#####GPlayer char represent his/her health [player_char_health]
+ Setting this option only affects the game when playing without tiles.
+ As the player becomes injured, his icon changes to a figure representing
+ the percentage of health remaining; for example if he is down to 68% of
+ his maximum hitpoints, his character will be a '6' instead of an '@'.
+ The character used only starts changing once the player has lost at
+ least 30% of his maximum hitpoints.
+
+#####GStats are represented in a linear way [linear_stats]
+ Setting this option alters the display of character stats. The default
+ is 3 to 40 (linear), but the older 3 to 18/220 (Moria/Angband style) is
+ retained for players who prefer it.
+
+#####GIn option windows, just omit the select char [inventory_no_move]
+ If this option is set, the equipment/inventory windows don't move items
+ around when a prompt asks for an item.
+
+
+#####R=== Stacking Options ===
+
+In ToME items are allowed to stack on floors and monsters are allowed to
+maintain inventories. These features are enabled by default, and aren't
+accessible through the option menu, but can still be disabled through
+user pref files (see *****command.txt*105["command.txt"]).
+
+#####GAllow objects to stack on the floor [testing_stack]
+ Allows a cave grid to hold more than one object (or one kind of
+ object).
+
+#####GAllow monsters to carry objects [testing_carry]
+ If this option is set, monsters which "pick up" objects will drop
+ the objects they were carrying when you kill them. Note that monsters
+ which "crush" objects are not affected by this option.
+
+~~~~~13|Options|Base Delay Factor
+#####R=== Base Delay Factor ===
+
+The "delay_factor" value, if non-zero, is used to slow down the game, which is
+useful to allow you to observe the temporal effects of bolt, beam, and ball
+attacks. The actual delay is equal to "delay_factor" cubed, in milliseconds.
+Frequently used factors are 2 or 3.
+
+~~~~~14|Options|Hitpoint Warning
+#####R=== Hitpoint Warning ===
+
+The "hitpoint_warn" value, if non-zero, is the percentage of maximal hitpoints
+at which the player is warned that he may die. It is also used as the cut-off
+for using red to display hitpoints, mana and sanity. It is entered as a value
+between 0 and 9 (0% and 90%).
+
+~~~~~15|Options|Autosave
+#####R=== Autosave Options ===
+
+Ideally, the game should be so stable that these options are not needed
+at all. However, even if the game were 100% reliable (which, to be frank, it
+probably is not), the user might forget to save, and his hardware could fail
+him. For all of these reasons, you may want to use these options:
+
+#####GAutosave when entering new levels [autosave_l]
+ If this option is set, the program will attempt to save your
+ character every time before creating a new dungeon level. Useful
+ if you experience any game or computer crashes (or your dog enjoys
+ kicking your power cords out of the wall like mine does!).
+
+#####GTimed autosave [autosave_t]
+ If this option is set, the program will attempt to save your
+ character every n game turns, where n is the "frequency". To set
+ frequency, press n: it will increase the frequency to the next
+ category, these being every 50, 100, 250, 500, 1000, 2500, 5000,
+ 10000 or 25000 turns. (After 25000, pressing n again will cycle back
+ to 0.) Note that the frequency must be higher than 0 and the
+ "Timed autosave" set to "yes" for timed autosaves to take place.
+
+~~~~~16|Options|Automatizer
+#####R=== The Automatizer ===
+
+Allows you to set options for the game to automatically destroy or pick up
+objects when you identify them, for example skeletons, essences, cursed
+daggers, etc. Useful for reducing the clutter in the dungeon, and reducing the
+amount of loot to have to sort through. This *****automat.txt*0[Tutorial] may help you.
+
+~~~~~17|Options|Window Flags
+#####R=== Window Flags ===
+
+Selects what kind of information is displayed in which window, on platforms
+which use multiple windows.
+
+You can select a window to be able to toggle between 2 different
+sets of information (e.g. Basic Character stats and monster recall)
+by pressing the "y" key over the second display option.
+
+~~~~~18|Options|Cheating
+#####R=== Cheating Options ===
+
+#####GPeek into object creation [cheat_peek]
+ Cheaters never win. But they can peek at object creation.
+
+#####GPeek into monster creation [cheat_hear]
+ Cheaters never win. But they can peek at monster creation.
+
+#####GPeek into dungeon creation [cheat_room]
+ Cheaters never win. But they can peek at room creation.
+
+#####GPeek into something else [cheat_xtra]
+ Cheaters never win. But they can see debugging messages.
+
+#####GKnow complete monster info [cheat_know]
+ Cheaters never win. But they can know all about monsters.
+
+#####GAllow player to avoid death [cheat_live]
+ Cheaters never win. But they can cheat death.
+
+~~~~~19|Options|Dump/Load Options
+#####R=== Dump Options ===
+
+Allows the player to save the options to a file (defaults to charname.prf)
+so that they can be reloaded into other character files.
+
+
+#####R=== Load Options ===
+
+Allows you to load a preference file saved through the "Dump Options"
+command in another character file, hence saving all the initial time of having
+to reset all the options every time you wish to play.
+
+
++++ Ben +++ (Updated by Dark God and Dawnmist et al. for ToME)
diff --git a/lib/help/r_beorn.txt b/lib/help/r_beorn.txt
new file mode 100644
index 00000000..b000403f
--- /dev/null
+++ b/lib/help/r_beorn.txt
@@ -0,0 +1,33 @@
+~~~~~01|Beorning
+~~~~~02|Races|Beorning
+#####R=== Beornings ===
+
+#####GDescription
+Beornings are the descendants of Beorn, a powerful shapeshifter who
+dwells near Mirkwood. They have all inherited his shapeshifting abilities
+and can turn into powerful bears at will.
+
+#####GStat Modifiers
+Strength +4
+Intelligence -2
+Wisdom -2
+Dexterity -1
+Constitution +3
+Charisma -5
+Hit Dice Sides 12
+Exp Penalty +50%
+
+#####GSkill Bonuses (supplementary to existing skills)
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 2.500 [0.000]
+ Archery 0.500 [0.000]
+ Bearform-combat 1.000 [1.000]
+Sneakiness -0.100 [0.000]
+ Stealth -2.000 [0.000]
+ Disarming -0.600 [0.000]
+Magic
+ Magic-Device -0.800 [0.000]
+Spirituality -3.000 [0.000]
diff --git a/lib/help/r_deathm.txt b/lib/help/r_deathm.txt
new file mode 100644
index 00000000..d65403dd
--- /dev/null
+++ b/lib/help/r_deathm.txt
@@ -0,0 +1,33 @@
+~~~~~01|DeathMolds
+~~~~~02|Races|DeathMolds
+#####R=== DeathMolds ===
+
+#####GDescription
+Death Molds are incredibly powerful creatures. However, they are also
+molds. Lacking the ability to move as other creatures do, Death Molds have
+the powers of Phase Door, targeted teleportation, telekinesis, and
+controlled Teleport Level. They also intrinsically resist Nexus and Nether,
+and are more skilled at Necromancy than other races.
+
+#####GStat Modifiers
+Strength +10
+Intelligence 0
+Wisdom +10
+Dexterity 0
+Constitution +10
+Charisma -15
+Hit Dice Sides 15
+Exp Penalty +150%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 2.500 [0.000]
+ Archery 2.500 [0.000]
+Sneakiness
+ Stealth 25.000 [0.000]
+ Disarming 1.500 [0.000]
+Magic
+ Magic-Device -0.500 [0.000]
+ Necromancy 0.000 [0.200]
+Spirituality 7.500 [0.000]
diff --git a/lib/help/r_drkelf.txt b/lib/help/r_drkelf.txt
new file mode 100644
index 00000000..3f0758e5
--- /dev/null
+++ b/lib/help/r_drkelf.txt
@@ -0,0 +1,33 @@
+~~~~~01|Dark Elf
+~~~~~02|Races|Dark Elf
+#####R=== Dark Elves ===
+
+#####GDescription
+Another dark, cave-dwelling race, likewise unhampered by darkness attacks,
+the Dark Elves have a long tradition and knowledge of magic. With their
+intelligence and wisdom they can become superb mages or priests, and they
+have an inherent magic missile attack available to them at a low level. With
+their keen sight, they also learn to see invisible things as their relatives
+the High-Elves do, but at a higher level.
+
+#####GStat Modifiers
+Strength -1
+Intelligence +3
+Wisdom +2
+Dexterity +2
+Constitution -2
+Charisma +1
+Hit Dice Sides 9
+Exp Penalty +50%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.500 [0.000]
+ Archery 1.000 [0.000]
+Sneakiness 0.800 [0.000]
+ Stealth 3.000 [0.000]
+ Disarming 0.500 [0.000]
+Magic 0.000 [0.200]
+ Magic-Device 1.500 [0.000]
+Spirituality 10.000 [0.000]
diff --git a/lib/help/r_dunad.txt b/lib/help/r_dunad.txt
new file mode 100644
index 00000000..79b85049
--- /dev/null
+++ b/lib/help/r_dunad.txt
@@ -0,0 +1,32 @@
+~~~~~01|Dunedain
+~~~~~02|Races|Dunedain
+#####R=== Dunedain ===
+
+#####GDescription
+Dunedain are a race of hardy men from the West. This elder race surpasses
+human abilities in every field, especially constitution. However, being
+men of the world, very little is new to them, and levels are very hard for
+them to gain. They can play all classes. Their constitution cannot be
+reduced and they regain hit points quickly.
+
+#####GStat Modifiers
+Strength +1
+Intelligence +2
+Wisdom +2
+Dexterity +2
+Constitution +3
+Charisma +2
+Hit Dice Sides 10
+Exp Penalty +80%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.500 [0.000]
+ Archery 1.000 [0.000]
+Sneakiness 0.800 [0.000]
+ Stealth 2.000 [0.000]
+ Disarming 0.400 [0.000]
+Magic
+ Magic-Device 0.500 [0.000]
+Spirituality 2.500 [0.000]
diff --git a/lib/help/r_dwarf.txt b/lib/help/r_dwarf.txt
new file mode 100644
index 00000000..6c5a9b80
--- /dev/null
+++ b/lib/help/r_dwarf.txt
@@ -0,0 +1,39 @@
+~~~~~01|Dwarf
+~~~~~02|Races|Dwarf
+#####R=== Dwarves ===
+
+#####GDescription
+Dwarves are the headstrong miners and fighters of legend. Since dungeons
+are the natural home of a dwarf, they are excellent choices for a warrior
+or priest. Dwarves tend to be stronger and tougher but less agile and
+intelligent than humans. Because they are so headstrong and are somewhat
+wise, they resist spells which are cast on them. Dwarves also have very
+good infra-vision because they live underground. They do have one big
+drawback, though: dwarves are loud-mouthed and proud, singing in boisterous
+voices, arguing with themselves for no good reason, and screaming out
+challenges at nearby foes. In other words, dwarves have miserable
+stealth. They can never be blinded, and they can also open secret tunnels
+through rock.
+
+#####GStat Modifiers
+Strength +2
+Intelligence -2
+Wisdom +2
+Dexterity -2
+Constitution +2
+Charisma -3
+Hit Dice Sides 11
+Exp Penalty +25%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.500 [0.000]
+ Axe-mastery 0.000 [0.200]
+ Archery 0.500 [0.000]
+Sneakiness 0.700 [0.000]
+ Stealth -1.000 [0.000]
+ Disarming 0.200 [0.000]
+Magic
+ Magic-Device 0.900 [0.000]
+Spirituality 5.000 [0.000]
diff --git a/lib/help/r_elf.txt b/lib/help/r_elf.txt
new file mode 100644
index 00000000..6b4ceb3b
--- /dev/null
+++ b/lib/help/r_elf.txt
@@ -0,0 +1,32 @@
+~~~~~01|Elf
+~~~~~02|Races|Elf
+#####R=== Elves ===
+
+#####GDescription
+Elves are better magicians than humans, but not as good at fighting. They
+tend to be smarter and faster than either humans or half-elves and also
+have better wisdom. Elves are better at searching, disarming, perception,
+stealth, bows, and magic, but they are not as good at hand weapons.
+They resist light effects intrinsically.
+
+#####GStat Modifiers
+Strength -1
+Intelligence +2
+Wisdom +2
+Dexterity +1
+Constitution -2
+Charisma +2
+Hit Dice Sides 8
+Exp Penalty +20%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -5.000 [0.000]
+ Archery 1.500 [0.000]
+Sneakiness 0.800 [0.000]
+ Stealth 2.000 [0.000]
+ Disarming 0.500 [0.000]
+Magic
+ Magic-Device 0.600 [0.000]
+Spirituality 3.000 [0.000]
diff --git a/lib/help/r_ent.txt b/lib/help/r_ent.txt
new file mode 100644
index 00000000..66edf5c2
--- /dev/null
+++ b/lib/help/r_ent.txt
@@ -0,0 +1,39 @@
+~~~~~01|Ent
+~~~~~02|Races|Ent
+#####R=== Ents ===
+
+#####GDescription
+The Ents are a powerful race dating back to the beginning of the world and
+are the eldest of all animals or plants that inhabit Arda. Spirits of the land,
+they were summoned to guard the forests of Middle-earth. Being much like
+trees they are very slow but strong, and very susceptible to fire.
+As the Shepherds of the Trees, they have the innate ability to cause trees to
+rise about them for protection.
+
+#####GStat Modifiers
+Strength +10
+Intelligence -3
+Wisdom +2
+Dexterity -5
+Constitution +11
+Charisma -3
+Hit Dice Sides 14
+Exp Penalty +110%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.300 [0.000]
+ Archery -0.200 [0.000]
+ Barehand-combat 0.000 [0.200]
+ Boulder-throwing 0.000 [0.600]
+Sneakiness 0.500 [0.000]
+ Stealth -6.000 [0.000]
+ Disarming 0.500 [0.000]
+Magic
+ Magic-Device 0.500 [0.000]
+Spirituality 10.000 [0.000]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Tree-walking 1
diff --git a/lib/help/r_gnome.txt b/lib/help/r_gnome.txt
new file mode 100644
index 00000000..8272e8a5
--- /dev/null
+++ b/lib/help/r_gnome.txt
@@ -0,0 +1,36 @@
+~~~~~01|Gnome
+~~~~~02|Races|Gnome
+#####R=== Gnomes ===
+
+#####GDescription
+Gnomes are smaller than dwarves but larger than halflings. Like the hobbits,
+they live in the earth in burrow-like homes. Gnomes make excellent magi,
+and have very good saving throws. They are good at searching, disarming,
+perception, and stealth. They have lower strength than humans and they are
+not very good at fighting with hand weapons, but have developed a fondness
+for the crossbow. Gnomes have fair infra-vision, so they can detect
+warm-blooded creatures at a distance. Gnomes are intrinsically protected
+against paralysis and some slowing effects. At higher levels, gnomes learn
+to teleport at will.
+
+#####GStat Modifiers
+Strength -1
+Intelligence +2
+Wisdom 0
+Dexterity +2
+Constitution +1
+Charisma -2
+Hit Dice Sides 8
+Exp Penalty +35%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.800 [0.000]
+ Archery 1.200 [0.000]
+Sneakiness 0.600 [0.000]
+ Stealth 3.000 [0.000]
+ Disarming 1.000 [0.000]
+Magic
+ Magic-Device 1.200 [0.000]
+Spirituality 6.000 [0.000]
diff --git a/lib/help/r_hafelf.txt b/lib/help/r_hafelf.txt
new file mode 100644
index 00000000..ea748440
--- /dev/null
+++ b/lib/help/r_hafelf.txt
@@ -0,0 +1,31 @@
+~~~~~01|Half-Elf
+~~~~~02|Races|Half-Elf
+#####R=== Half-Elves ===
+
+#####GDescription
+Half-elves tend to be smarter and more agile than humans, but not as tough.
+Half-elves are slightly better at searching, disarming, saving throws,
+stealth, bows, and magic, but they are not as good at hand weapons. Half-
+elves may choose any class and do not receive any intrinsic abilities.
+
+#####GStat Modifiers
+Strength 0
+Intelligence +1
+Wisdom +1
+Dexterity +1
+Constitution -1
+Charisma +1
+Hit Dice Sides 9
+Exp Penalty +10%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -1.000 [0.000]
+ Archery 0.500 [0.000]
+Sneakiness 0.600 [0.000]
+ Stealth 1.000 [0.000]
+ Disarming 0.200 [0.000]
+Magic
+ Magic-Device 0.300 [0.000]
+Spirituality 1.500 [0.000]
diff --git a/lib/help/r_hafogr.txt b/lib/help/r_hafogr.txt
new file mode 100644
index 00000000..2a173e98
--- /dev/null
+++ b/lib/help/r_hafogr.txt
@@ -0,0 +1,31 @@
+~~~~~01|Half-Ogre
+~~~~~02|Races|Half-Ogre
+#####R=== Half-Ogres ===
+
+#####GDescription
+Half-Ogres are a crossbreed between a human and an ogre. They are big, bad, and
+stupid. For warriors, they have all the necessary attributes, and they can even
+become priests: after all, they are related to Ogre Magi, from whom they have
+learned the skill of setting trapped runes once their level is high enough. Like
+orcs, they resist darkness, and like trolls, they have their strength sustained.
+
+#####GStat Modifiers
+Strength +3
+Intelligence -1
+Wisdom -1
+Dexterity -1
+Constitution +3
+Charisma -3
+Hit Dice Sides 12
+Exp Penalty +30%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 2.000 [0.000]
+Sneakiness -0.100 [0.000]
+ Stealth -2.000 [0.000]
+ Disarming -0.300 [0.000]
+Magic
+ Magic-Device -0.500 [0.000]
+Spirituality -2.500 [0.000]
diff --git a/lib/help/r_hielf.txt b/lib/help/r_hielf.txt
new file mode 100644
index 00000000..3317a67b
--- /dev/null
+++ b/lib/help/r_hielf.txt
@@ -0,0 +1,34 @@
+~~~~~01|High-Elf
+~~~~~02|Races|High-Elf
+#####R=== High-Elves ===
+
+#####GDescription
+High-elves are a race of immortal beings dating from the beginning of
+time. They are masters of all skills, and are strong and intelligent.
+They can play all classes except rogues, and very well at that.
+High-elves begin their lives able to see the unseen, and resist light
+effects just like regular elves. However, there are few things that
+they have not seen already, and experience is very hard for them to
+gain.
+
+#####GStat Modifiers
+Strength +1
+Intelligence +3
+Wisdom +2
+Dexterity +3
+Constitution +1
+Charisma +5
+Hit Dice Sides 10
+Exp Penalty +100%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.000 [0.000]
+ Archery 2.500 [0.000]
+Sneakiness 0.300 [0.000]
+ Stealth 4.000 [0.000]
+ Disarming 0.400 [0.000]
+Magic
+ Magic-Device 2.000 [0.000]
+Spirituality 10.000 [0.000]
diff --git a/lib/help/r_hobbit.txt b/lib/help/r_hobbit.txt
new file mode 100644
index 00000000..30cd885f
--- /dev/null
+++ b/lib/help/r_hobbit.txt
@@ -0,0 +1,37 @@
+~~~~~01|Hobbit
+~~~~~02|Races|Hobbit
+#####R=== Hobbits ===
+
+#####GDescription
+Hobbits, or halflings, are very good at ranged combat (especially with slings),
+throwing, and have good saving throws. They also are very good at searching,
+disarming, perception and stealth; so they make excellent rogues, but prefer
+to be called burglars. They are much weaker than humans, and not good at melee
+fighting. Halflings have fair infra-vision, so they can detect warm creatures
+at a distance. Hobbits have their dexterity sustained and in time they learn to
+cook a delicious meal from available ingredients. Their sturdy constitutions
+also allow them to resist the insidious poison of the ring-wraiths.
+
+#####GStat Modifiers
+Strength -2
+Intelligence +2
+Wisdom +1
+Dexterity +3
+Constitution +2
+Charisma +1
+Hit Dice Sides 7
+Exp Penalty +10%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -1.000 [0.000]
+ Archery 2.000 [0.000]
+ Sling-Mastery 0.000 [0.300]
+Sneakiness 1.200 [0.000]
+ Stealth 5.000 [0.000]
+ Disarming 1.500 [0.000]
+Magic
+ Magic-Device 1.800 [0.000]
+Spirituality 9.000 [0.000]
+
diff --git a/lib/help/r_human.txt b/lib/help/r_human.txt
new file mode 100644
index 00000000..57606764
--- /dev/null
+++ b/lib/help/r_human.txt
@@ -0,0 +1,23 @@
+~~~~~01|Human
+~~~~~02|Races|Human
+#####R=== Humans ===
+
+#####GDescription
+Humans act as a baseline race -- all other races are compared to them.
+Humans can choose any class and are average at everything. Humans tend to
+go up levels faster than most other races because of their shorter life
+spans. No racial adjustments or intrinsics occur to characters choosing
+the human race.
+
+#####GStat Modifiers
+Strength 0
+Intelligence 0
+Wisdom 0
+Dexterity 0
+Constitution 0
+Charisma 0
+Hit Dice Sides 10
+Exp Penalty 0%
+
+#####GRacial Skill Modifiers:
+None. Humans are the baseline race.
diff --git a/lib/help/r_kobold.txt b/lib/help/r_kobold.txt
new file mode 100644
index 00000000..26d39f86
--- /dev/null
+++ b/lib/help/r_kobold.txt
@@ -0,0 +1,31 @@
+~~~~~01|Kobold
+~~~~~02|Races|Kobold
+#####R=== Kobolds ===
+
+#####GDescription
+Kobolds are a weak goblin race. They love poisoned weapons, and can learn
+to throw poisoned darts (of which they carry an unlimited supply). They
+are also inherently resistant to poison, and can become adequate fighters,
+although they are not one of the more powerful races.
+
+#####GStat Modifiers
+Strength +1
+Intelligence -1
+Wisdom 0
+Dexterity +1
+Constitution 0
+Charisma -4
+Hit Dice Sides 9
+Exp Penalty +25%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.000 [0.000]
+ Archery -0.800 [0.000]
+Sneakiness 0.100 [0.000]
+ Stealth -1.000 [0.000]
+ Disarming -0.200 [0.000]
+Magic
+ Magic-Device -0.300 [0.000]
+Spirituality -1.000 [0.000]
diff --git a/lib/help/r_maia.txt b/lib/help/r_maia.txt
new file mode 100644
index 00000000..fa575f82
--- /dev/null
+++ b/lib/help/r_maia.txt
@@ -0,0 +1,22 @@
+~~~~~01|Maia
+~~~~~02|Races|Maia
+#####R=== Maia ===
+
+#####GDescription
+An old race, dating from before the creation of Arda, the Maiar were created by
+Eru to help the Valar in their task. However, they can not worship a God, nor
+is experience easy to remember for them. Due to their perceived advantages,
+they are rather disliked by the denizens of the dungeon, and will find that most
+creatures take an instant dislike for the Maia. However, when they do finally
+manage to remember their encounters, they will find that their abilities will
+increase as they gain in knowledge.
+
+#####GStat Modifiers
+Strength 0
+Intelligence 0
+Wisdom 0
+Dexterity 0
+Constitution 0
+Charisma 0
+Hit Dice Sides 10
+Exp Penalty +0%
diff --git a/lib/help/r_orc.txt b/lib/help/r_orc.txt
new file mode 100644
index 00000000..c4bcf691
--- /dev/null
+++ b/lib/help/r_orc.txt
@@ -0,0 +1,35 @@
+~~~~~01|Orc
+~~~~~02|Races|Orc
+#####R=== Orcs ===
+
+#####GDescription
+Orcs make excellent warriors and decent priests, but are terrible at magic.
+They are as bad as dwarves at stealth, and horrible at searching, disarming,
+and perception. Orcs are quite ugly, and tend to pay more for goods in town.
+Orcs do make good warriors and rogues, for the simple reason that Orcs tend
+to have great constitutions and lots of hit points. Because of their
+preference for living underground rather than on the surface, orcs resist
+darkness attacks. Upon reaching experience level 3, an orc learns to dispel
+any fear that may be upon him.
+
+#####GStat Modifiers
+Strength +2
+Intelligence -1
+Wisdom 0
+Dexterity +1
+Constitution +1
+Charisma -4
+Hit Dice Sides 10
+Exp Penalty +10%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.200 [0.000]
+ Archery -0.500 [0.000]
+Sneakiness
+ Stealth -1.000 [0.000]
+ Disarming -0.300 [0.000]
+Magic
+ Magic-Device -0.300 [0.000]
+Spirituality -1.000 [0.000]
diff --git a/lib/help/r_pettyd.txt b/lib/help/r_pettyd.txt
new file mode 100644
index 00000000..c8b8eba3
--- /dev/null
+++ b/lib/help/r_pettyd.txt
@@ -0,0 +1,30 @@
+~~~~~01|Petty Dwarf
+~~~~~02|Races|Petty Dwarf
+#####R=== Petty Dwarves ===
+
+#####GDescription
+A hated and persecuted race of nocturnal dwarves, these cave-dwellers are not
+bothered much by darkness. Their natural inclination to magically augmented
+items has made them immune to effects which could drain away magical
+enchantments, and, like ordinary dwarves, they can examine the dungeon to
+discover traps and secret doors. They are quite proficient as priests,
+warriors or rogues.
+
+#####GStat Modifiers
+Strength +1
+Intelligence -1
+Wisdom +2
+Dexterity 0
+Constitution +2
+Charisma -4
+Hit Dice Sides 11
+Exp Penalty +35%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Sneakiness 0.500 [0.000]
+ Stealth 1.000 [0.000]
+ Disarming 0.300 [0.000]
+Magic
+ Magic-Device 0.500 [0.000]
+Spirituality 5.000 [0.000]
diff --git a/lib/help/r_rohank.txt b/lib/help/r_rohank.txt
new file mode 100644
index 00000000..03391d4b
--- /dev/null
+++ b/lib/help/r_rohank.txt
@@ -0,0 +1,33 @@
+~~~~~01|RohanKnight
+~~~~~02|Races|RohanKnight
+#####R=== RohanKnights ===
+
+#####GDescription
+Knights of the Riddermark, these warriors are mounted upon swift steeds.
+Thus they receive a bonus to speed from the beginning and gain in speed
+as they become more experienced in riding. Wise through their prolonged
+contact with the Dunedain, their wrath may be seen in auras of war that
+drive their foes to confusion, and in a ray of light when jumping at light
+speed.
+
+#####GStat Modifiers
+Strength +4
+Intelligence -2
+Wisdom +3
+Dexterity +1
+Constitution +4
+Charisma +2
+Hit Dice Sides 10
+Exp Penalty +120%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 0.100 [0.200]
+ Archery 0.500 [0.000]
+Sneakiness 0.100 [0.000]
+ Stealth -8.000 [0.000]
+ Disarming 1.000 [0.000]
+Magic
+ Magic-Device 0.500 [0.000]
+Spirituality 2.500 [0.000]
diff --git a/lib/help/r_thlord.txt b/lib/help/r_thlord.txt
new file mode 100644
index 00000000..6de113fe
--- /dev/null
+++ b/lib/help/r_thlord.txt
@@ -0,0 +1,32 @@
+~~~~~01|Thunderlord
+~~~~~02|Races|Thunderlord
+#####R=== Thunderlords ===
+
+#####GDescription
+The Thunderlords are supremely powerful spirits created by Manwe Sulimo,
+each riding a Great Eagle. They have the ability to conjure powerful
+thunderbolts, they are telepathic, and they gain the ability to use the
+Straight Road, which can carry them to any location they have previously been.
+Due to their special clothing, they can resist elemental damage. However,
+they take a very long time to gain levels as both rider and eagle must
+accumulate experience.
+
+#####GStat Modifiers
+Strength +6
+Intelligence +2
+Wisdom +1
+Dexterity +1
+Constitution +3
+Charisma +8
+Hit Dice Sides 12
+Exp Penalty +300%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.500 [0.000]
+ Archery 0.500 [0.000]
+Sneakiness 3.000 [0.000]
+ Stealth -16.000 [0.000]
+ Disarming 0.600 [0.000]
+Spirituality 5.000 [0.000]
diff --git a/lib/help/r_troll.txt b/lib/help/r_troll.txt
new file mode 100644
index 00000000..f35e5aa6
--- /dev/null
+++ b/lib/help/r_troll.txt
@@ -0,0 +1,34 @@
+~~~~~01|Troll
+~~~~~02|Races|Troll
+#####R=== Trolls ===
+
+#####GDescription
+Trolls are incredibly strong, and have more hit points than most other
+character races, so they make great warriors, and marginal priests. They
+are also very stupid and clumsy. They are bad at searching, disarming,
+perception, and stealth. They are so ugly that an orc grimaces in their
+presence. They also happen to be fun to play.... Trolls always have
+their strength sustained. At higher levels, trolls learn to enter a
+berserk fury, and regenerate from their wounds automatically.
+
+#####GStat Modifiers
+Strength +4
+Intelligence -4
+Wisdom -2
+Dexterity -4
+Constitution +3
+Charisma -6
+Hit Dice Sides 12
+Exp Penalty +37%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 2.000 [0.000]
+ Archery -1.000 [0.000]
+Sneakiness -0.100 [0.000]
+ Stealth -2.000 [0.000]
+ Disarming -0.500 [0.000]
+Magic
+ Magic-Device -0.800 [0.000]
+Spirituality -4.000 [0.000]
diff --git a/lib/help/r_wodelf.txt b/lib/help/r_wodelf.txt
new file mode 100644
index 00000000..d40295fa
--- /dev/null
+++ b/lib/help/r_wodelf.txt
@@ -0,0 +1,37 @@
+~~~~~01|Wood Elf
+~~~~~02|Races|Wood Elf
+#####R=== Wood Elves ===
+
+#####GDescription
+The first love of Wood Elves is hunting. As such, their skill with the bow
+is unparalleled. They train tirelessly with their bows, to the point of
+neglecting even melee skills. They resist light as with other elves, and
+do extra damage with a ranged weapon. They are almost custom made for the
+archer class, but also make interesting warriors. Even Wood Elf Mages
+are feasible, using the bow to attack and saving their magic for defence.
+
+#####GStat Modifiers
+Strength -3
+Intelligence +2
+Wisdom +1
+Dexterity +5
+Constitution -4
+Charisma +1
+Hit Dice Sides 7
+Exp Penalty +30%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -2.500 [0.000]
+ Archery 4.000 [0.000]
+Sneakiness 0.800 [0.000]
+ Stealth 5.000 [0.000]
+ Disarming 0.500 [0.000]
+Magic
+ Magic-Device 0.600 [0.000]
+Spirituality 4.000 [0.000]
+
+#####GInnate Abilities:
+#####BAbility Character level
+Tree-walking 1
diff --git a/lib/help/r_yeek.txt b/lib/help/r_yeek.txt
new file mode 100644
index 00000000..5326f604
--- /dev/null
+++ b/lib/help/r_yeek.txt
@@ -0,0 +1,30 @@
+~~~~~01|Yeek
+~~~~~02|Races|Yeek
+#####R=== Yeeks ===
+
+#####GDescription
+Yeeks are the least powerful of all the races. They suffer disadvantages
+in nearly all skills and attributes but to compensate they learn (and thus
+gain levels) extremely quickly. "Live fast, die young!"
+
+#####GStat Modifiers
+Strength -5
+Intelligence -5
+Wisdom -5
+Dexterity -5
+Constitution -5
+Charisma -5
+Hit Dice Sides 6
+Exp Penalty -75%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.500 [0.000]
+ Archery -0.500 [0.000]
+Sneakiness -0.500 [0.000]
+ Stealth -5.000 [0.000]
+ Disarming -0.500 [0.000]
+Magic
+ Magic-Device -0.500 [0.000]
+Spirituality -2.500 [0.000]
diff --git a/lib/help/rm_barb.txt b/lib/help/rm_barb.txt
new file mode 100644
index 00000000..57d793ff
--- /dev/null
+++ b/lib/help/rm_barb.txt
@@ -0,0 +1,38 @@
+~~~~~01|Barbarian
+~~~~~02|Race Modifiers|Barbarian
+#####R=== Barbarian Race ===
+
+#####GDescription
+Barbarians are hardy members of their race. They are fierce in combat, and
+their wrath is feared throughout the world. Combat is their life: they learn
+to feel no fear. Barbarians are, however, suspicious of magic, which makes
+magic devices fairly hard for them to use, and also makes it impossible for
+them to play Mages.
+
+#####GStat Modifiers
+Strength +2
+Intelligence -3
+Wisdom -2
+Dexterity +1
+Constitution +1
+Charisma -3
+Hit Dice +1 side
+Spell Points -50%
+Exp Penalty +25%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 1.200 [0.000]
+ Archery 0.500 [0.000]
+Sneakiness
+ Stealth -2.000 [0.000]
+ Disarming -0.200 [0.000]
+Magic
+ Magic-Device -1.000 [0.000]
+Spirituality 0.200 [0.000]
+
+#####GStarting Equipment
+A barbarian character begins the game with:
+ Some rations
+ Some torches
diff --git a/lib/help/rm_class.txt b/lib/help/rm_class.txt
new file mode 100644
index 00000000..81f72d87
--- /dev/null
+++ b/lib/help/rm_class.txt
@@ -0,0 +1,14 @@
+~~~~~01|Classical
+~~~~~02|Race Modifiers|Classical
+#####R=== Classical Race ===
+
+#####GDescription
+This is the normal, classical character of your chosen race.
+
+#####GStat Modifiers
+No changes to stats.
+
+#####GStarting Equipment
+A classical character begins the game with:
+ Some rations
+ Some torches
diff --git a/lib/help/rm_herm.txt b/lib/help/rm_herm.txt
new file mode 100644
index 00000000..4787b8ae
--- /dev/null
+++ b/lib/help/rm_herm.txt
@@ -0,0 +1,36 @@
+~~~~~01|Hermit
+~~~~~02|Race Modifiers|Hermit
+#####R=== Hermit Race ===
+
+#####GDescription
+Hermits live retired from the world. Spending long hours studying, they
+weaken their physical side while they strengthen their spiritual powers.
+Thus they get higher mana reserves but are much worse at physical combat.
+
+#####GStat Modifiers
+Strength -3
+Intelligence +1
+Wisdom +1
+Dexterity -3
+Constitution -3
+Charisma +1
+Hit Dice -3 sides
+Spell Points +20%
+Exp Penalty +20%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.500 [0.000]
+ Archery -0.500 [0.000]
+Sneakiness 0.400 [0.000]
+ Stealth 3.000 [0.000]
+ Disarming 0.500 [0.000]
+Magic
+ Magic-Device 1.000 [0.000]
+Spirituality 0.500 [0.000]
+
+#####GStarting Equipment
+A hermit begins the game with:
+ Some rations
+ Some torches
diff --git a/lib/help/rm_lsoul.txt b/lib/help/rm_lsoul.txt
new file mode 100644
index 00000000..8a2e8a9c
--- /dev/null
+++ b/lib/help/rm_lsoul.txt
@@ -0,0 +1,26 @@
+~~~~~01|Lost Soul
+~~~~~02|Race Modifiers|Lost Soul
+#####R=== LostSoul ===
+
+#####GDescription
+
+#####RThis is a difficult modifier. Your character will almost always die quickly.
+#####RIt's probably best only to play it after you have some experience with normal
+#####Rcharacters.
+
+There are haunting whispers of souls that have come back from the Halls of
+Mandos, for purposes unknown. These are called Lost Souls, for it is presumed
+that their real body died off long ago, leaving only a soul to wander forever...
+or until killed again.
+Lost Souls start at level 98 of the Halls of Mandos. Very few ever make it out
+again. Those that do can continue as a fairly normal character, but with the
+advantage of any treasure and experience gained.
+
+#####GStat Modifiers
+No changes to stats.
+
+#####GStarting Equipment
+A Lost Soul starts the game with:
+ Some torches.
+ Over thirty scrolls of Identify.
+ Over twenty scrolls of Satisfy Hunger.
diff --git a/lib/help/rm_skel.txt b/lib/help/rm_skel.txt
new file mode 100644
index 00000000..aff6408d
--- /dev/null
+++ b/lib/help/rm_skel.txt
@@ -0,0 +1,40 @@
+~~~~~01|Skeleton
+~~~~~02|Race Modifiers|Skeleton
+#####R=== Skeletal Race ===
+
+#####GDescription
+As undead beings, skeletons need to worry very little about poison or
+attacks that can drain life. They do not really use eyes for perceiving
+things, and are thus not fooled by invisibility. Their bones are resistant
+to sharp shrapnels (not much to cut there), and they will quickly become
+resistant to cold. It is very hard for skeletons to eat food or drink potions.
+Although the magical effects of these will affect the skeleton even without
+entering the skeleton's (non-existent) belly, the potion / food itself will
+fall through the skeleton's jaws, giving no nutritional benefit.
+
+#####GStat Modifiers
+Strength 0
+Intelligence -2
+Wisdom -2
+Dexterity 0
+Constitution +1
+Charisma -4
+Hit Dice +0 sides
+Spell Points -30%
+Exp Penalty +45%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 0.800 [0.000]
+Sneakiness -0.100 [0.000]
+ Stealth -1.000 [0.000]
+ Disarming -0.500 [0.000]
+Magic
+ Magic-Device -0.500 [0.000]
+Spirituality 0.500 [0.000]
+
+#####GStarting Equipment
+A skeletal character begins the game with:
+ Some scrolls of satisfy hunger
+ Some torches
diff --git a/lib/help/rm_spec.txt b/lib/help/rm_spec.txt
new file mode 100644
index 00000000..4a11e0fd
--- /dev/null
+++ b/lib/help/rm_spec.txt
@@ -0,0 +1,44 @@
+~~~~~01|Spectre
+~~~~~02|Race Modifiers|Spectre
+#####R=== Spectral Race ===
+
+#####GDescription
+
+Another powerful undead creature, the spectre is a ghastly apparition,
+surrounded by an unearthly glow. They exist only partially on our
+plane of existence: half-corporeal, they can pass through walls, though
+this requires a sacrifice of some of their life-force. As a result
+they cannot rest whilst passing through a wall.
+
+As undead, they have a firm hold on their life force, can see invisible, and
+resist poison and cold. They also resist nether. Spectres make superb
+spellcasters, but their physical form is very weak. Like Zombies,
+Spectres gain almost no nutrition from ordinary food.
+
+#####GStat Modifiers
+Strength -5
+Intelligence +2
+Wisdom +2
+Dexterity +2
+Constitution -3
+Charisma -6
+Hit Dice -3 sides
+Spell Points +5%
+Exp Penalty +80%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery -0.500 [0.000]
+ Archery -0.200 [0.000]
+Sneakiness 0.200 [0.000]
+ Stealth 2.000 [0.000]
+ Disarming 0.200 [0.000]
+Magic
+ Magic-Device 0.800 [0.000]
+Spirituality 0.700 [0.000]
+
+#####GStarting Equipment
+A spectral character begins the game with:
+ Some scrolls of satisfy hunger
+ Some torches
diff --git a/lib/help/rm_vamp.txt b/lib/help/rm_vamp.txt
new file mode 100644
index 00000000..22ae6514
--- /dev/null
+++ b/lib/help/rm_vamp.txt
@@ -0,0 +1,32 @@
+~~~~~01|Vampire
+~~~~~02|Race Modifiers|Vampire
+#####R=== Vampire ===
+
+#####GDescription
+One of the mightier undead creatures, the vampire is an awe-inspiring
+sight. Yet this mighty creature has a serious weakness: the bright rays of
+sun are its bane, and it will need to flee the surface to the deep
+recesses of the earth until the sun finally sets. Darkness, on the other
+hand, only makes the vampire stronger. Being undead, the vampire has a firm
+hold on its life force, and resists nether attacks. The vampire also
+resists cold and poison based attacks. It is, however, susceptible to its
+perpetual hunger for fresh blood, which can only be satiated by sucking
+the blood from a nearby monster, which is the vampire's special power.
+
+It should be noted that the vampires are so sensitive to daylight that even
+certain artifact light items which are filled with daylight will hurt them
+if they try to wield the items. Fortunately, the vampires do not really
+need these items, since they radiate an aura of 'dark light' of their own.
+Light resistance will, in any case, protect the vampire from the adverse
+effects of sunlight.
+
+#####GStat Modifiers
+Strength +3
+Intelligence +2
+Wisdom -3
+Dexterity -2
+Constitution +1
+Charisma -4
+Hit Dice +1 side
+Spell Points +0%
+Exp penalty +100%
diff --git a/lib/help/rm_zomb.txt b/lib/help/rm_zomb.txt
new file mode 100644
index 00000000..be89162b
--- /dev/null
+++ b/lib/help/rm_zomb.txt
@@ -0,0 +1,39 @@
+~~~~~01|Zombie
+~~~~~02|Race Modifiers|Zombie
+#####R=== Zombie Race ===
+
+#####GDescription
+Much like Skeletons, zombies too are undead horrors: they are resistant to
+life-draining attacks, they become resistant to cold-based attacks (actually
+earlier than skeletons), resist poison and can see invisible, while being still
+vulnerable to cuts (unlike skeletons). They also gain very little nutrition from
+the food of mortals. However, zombies are, as the name implies, practically
+mindless.
+
+#####GStat Modifiers
+Strength +2
+Intelligence -6
+Wisdom -6
+Dexterity +1
+Constitution +4
+Charisma -5
+Hit Dice +3 sides
+Spell Points -30%
+Exp Penalty +45%
+
+#####GRacial Skill Modifiers:
+#####BSkill Start Mod Skill Point Gains Mod
+Combat
+ Weaponmastery 0.500 [0.000]
+Sneakiness -0.100 [0.000]
+ Stealth -1.000 [0.000]
+ Disarming -0.200 [0.000]
+Magic
+ Magic-Device -0.200 [0.000]
+Spirituality 0.500 [0.000]
+
+#####GStarting Equipment
+A zombie character begins the game with:
+ Some scrolls of satisfy hunger
+ Some torches
+
diff --git a/lib/help/skills.txt b/lib/help/skills.txt
new file mode 100644
index 00000000..c4a02c06
--- /dev/null
+++ b/lib/help/skills.txt
@@ -0,0 +1,539 @@
+|||||oy
+~~~~~55|Skills
+#####R=== ToME Skills System ===
+One of the big differences between standard "Vanilla" Angband and ToME is the
+implementation of a skill system where the player can choose what skills she
+will improve as her character progresses. As such, many abilities such as
+spell casting, fighting and trap disarming *do not* increase automatically -
+the player must choose to use skill points to improve those abilities. This
+gives the player the chance to tailor a character to suit their playing style
+with a lot more flexibility than has existed with a fixed progression system
+in the past. However, not all types of characters are able to gain skills to
+the same degree; while a fighter can learn some magic, he's unlikely to become
+as good at it as a mage can. So the number of skill points required to raise
+a skill to the next level varies according to the starting "type" of character.
+
+You can also spend skill points in "one-off purchase" *****ability.txt*0[Abilities].
+~~~~~56|Skills|Screen
+#####GThe Skills Menu
+Each time you gain a level of experience, you receive 6 skill points to spread
+around as you wish. To use these skill points, you need to access the skills
+menu ("G" for both keysets). This opens up a long list of abilities that can
+be improved. The menu may look something like this:
+
+&&&&&w w w w w w w w w w w w w w w w w w w w w w w w w w w w wTwowMwEw wSwkwiwlwlwsw wSwcwrwewewnw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&BEBnBtBeBrW WtWoW WdWeWvWeWlWoWpW WaW WbWrWaWnWcWhW,W BuBpW/BdBoBwBnW WtWoW WmWoWvWeW,W BrBiBgBhBtW/BlBeBfBtW WtWoW WmWoWdWiWfWyW,W B?W WfWoWrW WhWeWlWpw w w w
+&&&&&BSBkBiBlBlB BpBoBiBnBtBsB BlBeBfBtB:B B6w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&yGyeynyeyryayly yaybyiylyiytyyy ytyoy yfyiygyhyty yaynydy ytyoy ypysyeyuydyoy-yiydy yayrymyoyrysy yaynydy ywyeyaypyoynysy.w w w w w w w w w w w w w w w w w w w
+&&&&&yIyty yaylysyoy yaylylyoywysy ytyoy yuysyey yhyeyayvyiyeyry yayrymyoyuyrysy ywyiytyhyoyuyty ypyeynyaylytyiyeysw w w w w w w w w w w w w w w w w w w w w w w w w
+&&&&&G[G-G]GCGoGmGbGaGtw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w G0G2G.G0G0G0G G[G0G.G8G0G0G]w w w w w w
+&&&&&w w w w w w-w wWwewawpwownwmwawswtwewrwyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w0w1w.w0w0w0w w[w0w.w8w5w0w]w w w w w w
+&&&&&w w w w w w w w o o.o oSowooorodo-omoaosotoeoroyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o4o0o0o]w w w w w w
+&&&&&w w w w w w w w o o.o oAoxoeo-omoaosotoeoroyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o4o0o0o]w w w w w w
+&&&&&w w w w w w w w o o.o oHoaofotoeodo-omoaosotoeoroyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o4o0o0o]w w w w w w
+&&&&&w w w w w w w w o o.o oPoooloeoaoromo-omoaosotoeoroyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o4o0o0o]w w w w w w
+&&&&&w w w w w w.w wAwrwcwhwewrwyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w0w1w.w0w0w0w w[w0w.w6w0w0w]w w w w w w
+&&&&&w w w w o o.o oAonotoiomoaogoiocw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o5o5o0o]w w w w w w
+&&&&&w w+w wSwnwewawkwiwnwewswsw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w0w1w.w0w0w0w w[w0w.w9w0w0w]w w w w w w
+&&&&&w w+w wMwawgwiwcw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w0w1w.w0w0w0w w[w0w.w3w0w0w]w w w w w w
+&&&&&w w-w wSwpwiwrwiwtwuwawlwiwtwyw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w0w1w.w0w0w0w w[w0w.w4w0w0w]w w w w w w
+&&&&&w w w w o o.o oPoroaoyoeorw w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o5o0o0o]w w w w w w
+&&&&&o o.o oMooonosotoeoro-oloooroew w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w o0o0o.o0o0o0o o[o0o.o5o0o0o]w w w w w w
+
+Now, looking at this screen, there are several things to be aware of. The
+first line lets you know if you have any available skill points to spend, and
+how many there are. Following that are 2 description lines for the currently
+selected skill - in this case they are describing the "Combat" skill. When
+looking at the list of skills, there are a few different colours used - the
+light green coloured skill (which also has its starting character in square
+brackets []) is the currently selected one - Combat in the example above.
+Skills that you cannot learn are omitted from the list. Skills that you are
+capable of learning, but as yet have not, are coloured in orange, while skills
+of which you have some knowledge are shown in white.
+
+At the end of each skill is a pair of numbers. The first represents your
+current level of knowledge in the skill, and the second how much an advance
+in this knowledge investing one skill point in this skill would produce. So,
+in the above example, if the player invested one skill point in their Combat
+skill, the skill would increase from 02.000 to 02.800.
+
+In addition, investing in some skills may raise your knowledge in others.
+This improvement is based on the modifier in the related class (the one which
+gets the free points). For example, a skill point put into Weaponmastery
+raises Combat by 0.5 skill points. This is actually multiplied by the skill
+modifier that your character has in the Combat skill. For example, a
+Swordmaster investing a skill point into Weaponmastery would have his Combat
+skill raised by 0.5 * [0.900] while a Runecrafter would have his Combat
+skill raised by 0.5 * [0.200].
+
+As well as this, skills are grouped together in similar types. Looking under
+the Combat skill, there are subtypes of Weaponmastery, Archery and Antimagic.
+An increase of one of these subskills may also increase the main skill by a
+small amount. You can tell which skills have subskills by the + (or -) in front
+of their name. The + indicates that there are more skills within this category.
+To open a skill category up, move the cursor up/down until the skill category
+is green, then hit the "Enter" key. Likewise, the - indicates that the category
+is already opened, and selecting this and hitting the "Enter" key will close it
+up again. Skills which don't have usable subskills start with a ".".
+
+To spend points on a skill (including skill categories), use the left/right
+arrow (right arrow or "6" adds one skill point, left arrow or "4" removes
+one). Spending points on a sub-skill will also marginally improve the parent
+skill (or skill category). When you've finished spending skill points (and any
+unspent points *will* be saved), hit the "Esc" key to finish. This will give
+a confirmation prompt to check that you really do want to spend your points as
+you've assigned them. Saying 'y' saves the changes and allows you to use or
+apply your new skills :).
+
+All skills have a maximum level of 50, and as long as you can learn a skill,
+and have enough skill points to pump into it, it is theoretically possible to
+get it to level 50 no matter what your race, class or how you learned it.
+
+Each skill affects your character differently. It may be worth getting one or
+more of your characters skills to 50, but it may not be worth investing [[[[[Bany]
+skill points in some other skills. As general and personal advice, which may
+not work for you, I'd say concentrate on a few skills, and leave the others
+empty. Just because you [[[[[Bcan] learn a skill, it doesn't mean you have to.
+It often pays to have a plan ("I'm going to make this assassin the
+stealthiest, most able-dodging, backstabber around. I'm not going to bother
+with trapping or thieving ability") which you can stick to for the whole game.
+~~~~~57|Skills|List of skills
+#####GThe Skills Themselves
+So you want to know what each of the skills do so that you can decide how to
+spend you're hard-earned points, huh? Well, each skill affects different
+abilities, and not all of them are intuitive - but they don't take all that
+long to learn :).
+If you don't find this informative enough, and would like more detailed spoilers
+on what each skill does, try [[[[[ghttp://www.killerbunnies.org/angband/skill-220.html]
+for some third party help!
+The skills are:
+
+ *****skills.txt*27[Air] *****skills.txt*49[Alchemy] *****skills.txt*50[Antimagic] *****skills.txt*08[Archery]
+ *****skills.txt*05[Axe-mastery] *****skills.txt*18[Backstab] *****skills.txt*13[Barehand-combat] *****skills.txt*61[Bearform-combat]
+ *****skills.txt*12[Boomerang-mastery] *****skills.txt*58[Boulder-throwing] *****skills.txt*10[Bow-mastery] *****skills.txt*01[Combat]
+ *****skills.txt*30[Conveyance] *****skills.txt*44[Corpse-preservation]*****skills.txt*04[Critical-hits] *****skills.txt*11[Crossbow-mastery]
+ *****skills.txt*52[Demonology] *****skills.txt*16[Disarming] *****skills.txt*31[Divination] *****skills.txt*20[Dodging]
+ *****skills.txt*28[Earth] *****skills.txt*25[Fire] *****skills.txt*60[Geomancy] *****skills.txt*06[Hafted-mastery]
+ *****skills.txt*21[Magic] *****skills.txt*54[Magic-device] *****skills.txt*24[Mana] *****skills.txt*29[Meta]
+ *****skills.txt*47[Mimicry] *****skills.txt*33[Mind] *****skills.txt*41[Mindcraft] *****skills.txt*42[Monster-lore]
+ *****skills.txt*59[Music] *****skills.txt*34[Nature] *****skills.txt*35[Necromancy] *****skills.txt*07[Polearm-mastery]
+ *****skills.txt*45[Possession] *****skills.txt*39[Prayer] *****skills.txt*36[Runecraft] *****skills.txt*09[Sling-mastery]
+ *****skills.txt*14[Sneakiness] *****skills.txt*22[Spell-power] *****skills.txt*38[Spirituality] *****skills.txt*23[Sorcery]
+ *****skills.txt*19[Stealing] *****skills.txt*15[Stealth] *****skills.txt*53[Stunning-blows] *****skills.txt*43[Summoning]
+ *****skills.txt*03[Sword-mastery] *****skills.txt*46[Symbiosis] *****skills.txt*32[Temporal] *****skills.txt*37[Thaumaturgy]
+ *****skills.txt*48[Udun] *****skills.txt*26[Water] *****skills.txt*02[Weaponmastery]
+
+
+~~~~~01|Skills|Combat
+[[[[[BCombat]
+The combat skill is used to determine the maximum combined weight of armour
+you can wear before you become encumbered by it. It also affects your general
+fighting ability, although not to as great an extent as Weaponmastery, and
+determines the speed and strength of pseudo-id of weapons and armour.
+
+Investing in the combat skill? You might be interested in the
+*****ability.txt*05[Extra Max Blow(1)] and *****ability.txt*06[(2)] abilities.
+
+Sub-skills of Combat are Weaponmastery, Archery, Barehand-combat,
+Boulder-throwing and Anti-magic.
+~~~~~02|Skills|Weaponmastery
+[[[[[BWeaponmastery]
+This skill is a sub-skill of the Combat skill. It affects your general
+ability to use melee weapons of all sorts. Spending 1 skill point on
+Weaponmastery adds 0.5 bonus skill points to Combat.
+
+Investing in the weaponmastery skill? You might be interested in the
+*****ability.txt*02[Spread Blows] ability.
+
+Sub-skills of Weaponmastery are Sword-mastery, Axe-mastery, Hafted-mastery
+and Polearm-mastery.
+~~~~~03|Skills|Sword-mastery
+[[[[[BSword-mastery]
+This skill is a sub-skill of the Weaponmastery skill. It affects your ability
+to use bladed weapons (e.g. daggers, swords). Spending 1 skill point on your
+Sword-mastery skill adds 0.25 bonus skill points to your Weaponmastery skill
+and adds 0.07 bonus skill points to your Combat skill.
+
+Critical-hits is a sub-skill of Sword-mastery.
+~~~~~04|Skills|Critical-Hits
+[[[[[BCritical-hits]
+This skill is a sub-skill of the Sword-mastery skill. It affects your ability
+to deal critical hits to monsters using a bladed weapon that weighs less than 5
+pounds. Spending one skill point on your Critical-hits skill also increases
+your Sword-mastery skill by 0.05 skill points.
+~~~~~05|Skills|Axe-mastery
+[[[[[BAxe-mastery]
+This skill is a sub-skill of the Weaponmastery skill. It affects your ability
+to use axes. Spending 1 skill point on your Axe-mastery skill adds 0.25 bonus
+skill points to your Weaponmastery skill and adds 0.07 bonus skill points to
+your Combat skill.
+~~~~~06|Skills|Hafted-mastery
+[[[[[BHafted-mastery]
+This skill is a sub-skill of the Weaponmastery skill. It affects your ability
+to use hafted weapons (e.g. whips & maces). Spending 1 skill point on your
+Hafted-mastery skill adds 0.25 bonus skill points to your Weaponmastery skill
+and adds 0.07 bonus skill points to your Combat skill.
+
+Stunning-blows is a sub-skill of Hafted-mastery.
+~~~~~53|Skills|Stunning-blows
+[[[[[BStunning-blows]
+This skill is a sub-skill of the Hafted-mastery skill. It affects your ability
+to stun opponents when doing critical hits with a hafted weapon that weighs
+more than 5 lbs. Spending one skill point on your Stunning-blows skill also
+increases your Hafted-mastery skill by 0.05 skill points.
+~~~~~07|Skills|Polearm-mastery
+[[[[[BPolearm-mastery]
+This skill is a sub-skill of the Weaponmastery skill. It affects your ability
+to use polearms (e.g. pikes & halberds). Spending 1 skill point on your
+Polearm-mastery skill adds 0.25 bonus skill points to your Weaponmastery skill
+and adds 0.07 bonus skill points to your Combat skill.
+
+Investing in the Polearm-mastery skill? You might be interested in the
+*****ability.txt*10[Far reaching attack] ability.
+~~~~~08|Skills|Archery
+[[[[[BArchery]
+This skill is a sub-skill of the Combat skill. It affects your general
+ability to use ranged weapons of all sorts. Spending one skill point on your
+Archery skill adds 0.5 bonus skill points to your Combat skill.
+
+Investing in the Archery skill? You might be interested in the
+*****ability.txt*07[Ammo creation] ability.
+
+Sub-skills of Archery include Sling-mastery, Bow-mastery, Crossbow-mastery
+and Boomerang-mastery.
+~~~~~09|Skills|Sling-mastery
+[[[[[BSling-mastery]
+This skill is a sub-skill of the Archery skill. It affects your ability to
+use Slings. Spending 1 skill point on your Sling-mastery skill adds 0.25
+bonus skill points to your Archery skill and 0.07 bonus skill points to your
+Combat skill.
+~~~~~10|Skills|Bow-mastery
+[[[[[BBow-mastery]
+This skill is a sub-skill of the Archery skill. It affects your ability to
+use both Long and Short Bows. Spending 1 skill point on your Bow-mastery
+skill adds 0.25 bonus skill points to your Archery skill and 0.07 bonus skill
+points to your Combat skill.
+~~~~~11|Skills|Crossbow-mastery
+[[[[[BCrossbow-mastery]
+This skill is a sub-skill of the Archery skill. It affects your ability
+to use both Heavy and Light Crossbows. Spending 1 skill point on your
+Crossbow-mastery skill adds 0.25 bonus skill points to your Archery skill
+and 0.07 bonus skill points to your Combat skill.
+~~~~~12|Skills|Boomerang-mastery
+[[[[[BBoomerang-mastery]
+This skill is a sub-skill of the Archery skill. It affects your ability to
+use all boomerangs. Spending 1 skill point on your Boomerang-mastery skill
+adds 0.25 bonus skill points to your Archery skill and 0.07 bonus skill
+points to your Combat skill.
+~~~~~13|Skills|Barehand-combat
+[[[[[BBarehand-combat]
+This skill is a sub-skill of the Combat skill. It affects your general ability
+to fight using martial arts. In order to utilise it, you must be capable of
+using a weapon in the first place, but choose not to. Spending 1 skill point
+on your Barehand-combat skill adds 0.5 bonus skill points to your Combat skill.
+Barehand-combat fighters develop stronger and faster attacks, and also gain
+speed bonuses, as they advance in skill. However, they cannot use this skill
+whilst wearing heavy armour.
+~~~~~61|Skills|Bearform-combat
+[[[[[BBearform-combat]
+This skill is a sub-skill of the Combat skill. It affects your ability to fight
+while in the form of a bear. In order to utilise it, you must be in bearform.
+*****r_beorn.txt*0[Beornings] are the adventurers most likely to use this form of skill.
+~~~~~58|Skills|Boulder-throwing
+[[[[[BBoulder-throwing]
+This skill is a sub-skill of the Combat skill. It affects your ability to
+throw boulders and make them from granite walls. Spending 1 skill point on
+your Boulder-throwing skill adds 0.4 bonus skill points to your Combat skill.
+~~~~~50|Skills|Antimagic
+[[[[[BAntimagic]
+This skill is a sub-skill of the Combat skill. It generates a field around
+the character within which magic cannot work. As such, it can be very useful
+to prevent monsters from casting offensive spells against you or from
+teleporting away from you just before you kill them - but it will also prevent
+you from casting spells, or teleporting away when they've almost killed you!
+It also inhibits your ability to do magic, affecting *all* the magic and
+spirituality sub-skills.
+
+This skill does not affect your ability to use scrolls and potions, but other
+items that require [Self]Magic-Device are affected. At higher levels you gain
+the ability to detect traps and disrupt all teleportation.
+~~~~~14|Skills|Sneakiness
+[[[[[BSneakiness]
+The sneakiness skill affects your searching and perception abilities.
+
+Sub-skills of Sneakiness include Stealth, Disarming, Trapping, Backstab,
+Stealing and Dodging.
+~~~~~15|Skills|Stealth
+[[[[[BStealth]
+This skill is a sub-skill of the Sneakiness skill. It affects your ability
+to move around the dungeon quietly so that you are not noticed by its
+inhabitants. Spending 1 skill point on your Stealth skill adds 0.15 bonus
+skill points to your Sneakiness skill.
+~~~~~16|Skills|Disarming
+[[[[[BDisarming]
+This skill is a sub-skill of the Sneakiness skill. It affects your ability
+to safely disarm any traps you find. Spending 1 skill point on your Disarming
+skill adds 0.1 bonus skill points to your Sneakiness skill.
+
+Investing in the Disarming skill? You might be interested in the *****ability.txt*11[Trapping]
+ability.
+~~~~~18|Skills|Backstab
+[[[[[BBackstab]
+This skill is a sub-skill of the Sneakiness skill. It affects your ability
+to sneak up on monsters and do extra damage to them before they wake up.
+It also affects monsters who have turned to flee from you. Spending 1 skill
+point on your Backstab skill adds 0.05 bonus skill points to your Sneakiness
+skill.
+~~~~~19|Skills|Stealing
+[[[[[BStealing]
+This skill is a sub-skill of the Sneakiness skill. It affects your ability
+to steal items from monsters and shops. Be careful when stealing from shops;
+if you're caught, the shopkeeper will close his doors to you and not open
+them again. I have heard that shop keepers do not stay in one shop forever
+though. Spending 1 skill point on your Stealing skill adds 0.15 bonus skill
+points to your Sneakiness skill.
+~~~~~20|Skills|Dodging
+[[[[[BDodging]
+This skill is a sub-skill of the Sneakiness skill. It affects your ability
+to dodge out of the way of monster blows and bolts. The less armour you wear
+and the less you carry, the greater your chance of dodging a blow. Rings and
+amulets do not affect your chance to dodge, but full armour will almost render
+the effect of the skill obsolete. Spending 1 skill point on your Dodging skill
+adds 0.1 bonus skill points to your Sneakiness skill.
+~~~~~21|Skills|Magic
+[[[[[BMagic]
+The Magic skill affects your general use of magic items, the amount of mana
+you can handle, and in general your ability to do magic. It can also affect
+the strength of wands and staffs.
+
+Investing in the Magic skill? You might be interested in the *****ability.txt*04[Perfect Casting]
+ability.
+
+Sub-skills include: Magic-device, Spell-power, Sorcery, Mana, Fire, Water, Air,
+Earth, Meta, Conveyance, Divination, Temporal, Mind, Nature, Udun, Demonology,
+Necromancy, Runecraft, Thaumaturgy, and Alchemy.
+~~~~~54|Skills|Magic-device
+[[[[[BMagic-device]
+This skill is a sub-skill of the Magic skill. It eases the use of magical
+devices, such as wands, staves, and rods, and boosts the casting level of spells
+stored in a wand or a staff. *****magic.txt*02[More on this]. It also helps pseudo-id of magic
+objects. Spending 1 skill point on your Magic-device skill adds 0.07 bonus skill
+points to your Magic skill.
+~~~~~22|Skills|Spell-power
+[[[[[BSpell-power]
+This skill is a sub-skill of the Magic skill. It boosts the casting level of
+most spells you are capable of casting. For example, if you have level one in
+the mana school, you could cast "Manathrust". For every 2.5 skill levels of
+Spell-power, Manathrust becomes more powerful, adding +1 casting level to the
+spell. Note that this is not exactly the same as certain magic items which
+boost spell power. Spending 1 skill point on your Spell-power skill adds 0.2
+bonus skill points to your Magic skill.
+
+[[[[[BThis skill only affects the 11 primary schools] (Mana, Earth, Air, Fire,
+Water, Meta, Mind, Temporal, Conveyance, Divination and Nature), as well as
+Geomancy and the spells granted by the Gods.
+~~~~~23|Skills|Sorcery
+[[[[[BSorcery]
+This skill is a sub-skill of the Magic skill. It allows you to access any
+spell in the 11 schools up to the sorcery skill level. For example, if you
+have a sorcery skill of 1, you could cast "Manathrust", which is a level 1
+mana school spell; and "Phase Door", which is a level 1 conveyance school
+spell. Spending 1 skill point on your Sorcery skill adds 0.2 bonus skill
+points to your Magic skill.
+
+[[[[[BThis skill only affects the 11 primary schools] (Mana, Earth, Air, Fire,
+Water, Meta, Mind, Temporal, Conveyance, Divination and Nature).
+
+However, handling that much magic is hazardous to your health, and as such
+reduces both your hit points and your fighting ability. Any ability in sorcery
+affects your Weaponmastery, Archery, Barehand-combat and gives a negative
+percentage modifier to your total hit points, equal to the level of your
+sorcery skill (i.e. if sorcery is 12.500, hit points get modified by -12.5%).
+~~~~~24|Skills|Mana
+[[[[[BMana]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_mana.txt*0[mana] school, and as it increases so does the casting level of
+spells already attained in the school. For example, if you have level 1 in
+the mana school, you could cast "Manathrust" at a casting level of 1. For
+every skill level you add to Mana, Manathrust will become more powerful,
+adding 1 casting level to the spell. Spending 1 skill point on your Mana
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~60|Skills|Geomancy
+[[[[[BGeomancy]
+This skill is a subskill of the Magic skill. It gives access to spells
+within the *****m_geoman.txt*0[Geomancy] school, and as it increases so does the casting level of
+spells already attained in the school. Most spells from this school rely
+on the Fire, Water, Air and Earth skills as well. Spending 1 skill point
+on your Geomancy skill adds 0.45 bonus skill points to your Fire, Water,
+Air and Earth skills.
+~~~~~25|Skills|Fire
+[[[[[BFire]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_fire.txt*0[fire] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Fire
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~26|Skills|Water
+[[[[[BWater]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_water.txt*0[water] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Water
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~27|Skills|Air
+[[[[[BAir]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_air.txt*0[air] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Air
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~28|Skills|Earth
+[[[[[BEarth]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_earth.txt*0[earth] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Earth
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~29|Skills|Meta
+[[[[[BMeta]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_meta.txt*0[meta] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Meta
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~30|Skills|Conveyance
+[[[[[BConveyance]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_convey.txt*0[conveyance] school, and as it increases so does the casting level
+of spells already attained in the school. Spending 1 skill point on your
+Conveyance skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~31|Skills|Divination
+[[[[[BDivination]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_divin.txt*0[divination] school, and as it increases so does the casting level
+of spells already attained in the school. Spending 1 skill point on your
+Divination skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~32|Skills|Temporal
+[[[[[BTemporal]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_tempo.txt*0[temporal] school, and as it increases so does the casting level
+of spells already attained in the school. Spending 1 skill point on your
+Temporal skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~33|Skills|Mind
+[[[[[BMind]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_mind.txt*0[mind] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Mind
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~34|Skills|Nature
+[[[[[BNature]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_nature.txt*0[nature] school, and as it increases so does the casting level of
+spells already attained in the school. Spending 1 skill point on your Nature
+skill adds 0.1 bonus skill points to your Magic skill.
+
+Investing in the Nature skill? You might be interested in the *****ability.txt*03[Tree Walking]
+ability.
+~~~~~48|Skills|Udun
+[[[[[BUdun]
+This skill is a sub-skill of the Magic skill. It gives access to spells
+within the *****m_udun.txt*0[Udun] school, and is available only to worshippers of Melkor.
+As it increases so does the casting level of spells already attained in the
+school. Spending 1 skill point on your Udun skill adds 0.1 bonus skill
+points to your Magic skill.
+~~~~~52|Skills|Demonology
+[[[[[BDemonology]
+This skill is a sub-skill of the Magic skill. *****m_demono.txt*0[Demonology] gives access to spells
+contained within special Demon-blades, -shields and -horns (helms), and as it
+increases so does the casting level of spells already attained in the school.
+This skill is available only to Demonologists, or those sufficiently
+corrupted with demon-like powers. Spending 1 skill point on your Demonology
+skill adds 0.1 bonus skill points to your Magic skill.
+~~~~~35|Skills|Necromancy
+[[[[[BNecromancy]
+This skill is a sub-skill of the Magic skill. It grants access to *****m_necrom.txt*0[necromancy]
+spells. This is the base skill of the Necromancer class. Spending 1 skill
+point on your Necromancy skill adds 0.04 bonus skill points to your Magic skill.
+
+Investing in the Necromancy skill? You might be interested in the
+*****ability.txt*08[Touch of Death] and *****ability.txt*12[Undead Form] abilities.
+~~~~~36|Skills|Runecraft
+[[[[[BRunecraft]
+This skill is a sub-skill of the Magic skill. This is the base skill of the
+Runecrafter class. Spending 1 skill point on your Runecraft skill adds 0.12
+bonus skill points to your Magic skill.
+~~~~~37|Skills|Thaumaturgy
+[[[[[BThaumaturgy]
+This skill is a sub-skill of the Magic skill. Each level of *****m_thaum.txt*0[thaumaturgy] gives
+a few random attack spells that can be cast without the use of spell books of
+any sort. However, once learned these spells do not gain in levels as the
+thaumaturgy skill or the spell-power skills are increased. Spending 1 skill
+point on your Thaumaturgy skill adds 0.06 bonus skill points to your Magic
+skill.
+~~~~~49|Skills|Alchemy
+[[[[[BAlchemy]
+The Alchemy skill affects your ability to extract and use essences to create
+magical items.
+
+Investing in the Alchemy skill? You might be interested in the *****ability.txt*09[Artifact Creation]
+ability.
+~~~~~38|Skills|Spirituality
+[[[[[BSpirituality]
+The spirituality skill influences things which have a "helping hand" from the
+Gods, like your saving throw, and the general spirituality skills.
+
+Sub-skills of Spirituality are Prayer, Mindcraft and Music.
+~~~~~39|Skills|Prayer
+[[[[[BPrayer]
+This skill is a sub-skill of the Spirituality skill. It affects what level of
+your *****gods.txt*0[God's] special magic you can access (and what levels of the additional
+schools that each God also provides). Spending 1 skill point on your Prayer
+skill adds 0.1 bonus skill points to your Spirituality skill and 0.1 bonus
+skill points to your Magic skill.
+~~~~~41|Skills|Mindcraft
+[[[[[BMindcraft]
+This skill is a sub-skill of the Spirituality skill. It affects what level of
+*****m_mindcr.txt*0[Mindcrafter powers] you can access, which is done without books and is
+available under the "m" menu. Spending 1 skill point on your Mindcraft skill
+adds 0.1 bonus skill points to your Spirituality skill and 0.1 bonus skill
+points to your Magic skill.
+~~~~~59|Skills|Music
+[[[[[BMusic]
+This skill is a sub-skill of the Spirituality skill. It affects what level of
+*****m_music.txt*0[Musical songs] you can access through instruments. This power
+is available under the "m" menu. Spending 1 skill point on your Music skill
+adds 0.1 bonus skill points to your Spirituality skill and 0.1 bonus skill
+points to your Magic skill.
+~~~~~42|Skills|Monster-lore
+[[[[[BMonster-lore]
+The monster-lore skill affects your general ability at the monster related
+skills. It determines how much experience you will gain if your *****dungeon.txt*18[pets] kill a
+monster, and how many companions you can have. At skill level 12, it allows
+you to turn a pet into a loyal companion.
+
+Sub-skills of Monster-lore are Summoning, Corpse-preservation, Possession,
+Symbiosis, and Mimicry.
+~~~~~43|Skills|Summoning
+[[[[[BSummoning]
+This skill is a sub-skill of the Monster-lore skill. It affects your ability
+to create "totems" and use them to summon monsters to your aid. Spending 1
+skill point on your Summoning skill adds 0.1 bonus skill points to your
+Monster-lore skill.
+~~~~~44|Skills|Corpse-preservation
+[[[[[BCorpse-preservation]
+This skill is a sub-skill of the Monster-lore skill. It affects your ability
+to kill monsters without destroying their bodies, so the corpses will be
+available to use. Spending 1 skill point on your Corpse-preservation skill
+adds 0.1 bonus skill points to your Monster-lore skill.
+~~~~~45|Skills|Possession
+[[[[[BPossession]
+This skill is a sub-skill of the Monster-lore skill. It affects your ability
+to possess a dead monster's corpse. Spending 1 skill point on your Possession
+skill adds 0.1 bonus skill points to your Monster-lore skill.
+~~~~~46|Skills|Symbiosis
+[[[[[BSymbiosis]
+This skill is a sub-skill of the Monster-lore skill. It affects your ability
+to go into symbiosis with monsters that cannot move, and to cast *****m_symbio.txt*0[Symbiotic]
+spells. Spending 1 skill point on your Symbiosis skill adds 0.1 bonus skill
+points to your Monster-lore skill.
+~~~~~47|Skills|Mimicry
+[[[[[BMimicry]
+This skill is a sub-skill of the Monster-lore skill. It affects your ability
+to use cloaks of mimicry to change form and to cast *****m_mimic.txt*0[Mimicry spells].
+Spending 1 skill point on your Mimicry skill adds 0.1 bonus skill points to
+your Monster-lore skill.
diff --git a/lib/help/spoil_faq.txt b/lib/help/spoil_faq.txt
new file mode 100644
index 00000000..e4a77c15
--- /dev/null
+++ b/lib/help/spoil_faq.txt
@@ -0,0 +1,73 @@
+|||||oy
+~~~~~01|Help|Spoiled FAQ
+~~~~~02|FAQ - contains spoilers
+#####R ToME Spoiler FAQ
+#####R Updated for version 2.3.x
+
+#####G------------------------------------------------------------------------------
+
+This page contains significant spoilers. Don't browse it unless you want some
+parts of the game ruined, but don't expect the spoilers to spoil you completely!
+
+~~~~~06|Spoilers|Merton the lost Hobbit quest
+#####G------------------------------------------------------------------------------
+#####GQ: I'm in the Maze, but I cannot find Merton!
+
+A: Merton appears on a *random* level between dungeon level 26 (1300') and
+36 (1800'). Each maze level is one panel by one panel in size, but *full* of
+passageways - so you may have to do quite a bit of tunnelling to search the
+whole level.
+
+#####G------------------------------------------------------------------------------
+#####GQ: I've found Merton, now what?
+
+A: There is a new command that has been added to ToME that allows you to pass
+objects to creatures. What would you try and do if you had a broken leg and
+needed to get back to the town?
+~~~~~07|Spoilers|Lothlorien Poisoned water quest
+#####G------------------------------------------------------------------------------
+#####GQ: I'm trying to find the Poisoned water quest at Lothlorien, but cannot
+#####G find the quest entrance!
+
+A: This quest is located in the wilderness. To the west of Lothlorien are 4
+water squares in an upside down L shape. One of these squares will contain the
+quest. (Viewed from the Wilderness map). There is no yellow > sign, so don't
+bother looking for one.
+~~~~~20|Spoilers|God Quest - directions
+~~~~~23|Gods|Quest - Spoilers
+#####G------------------------------------------------------------------------------
+#####GQ: I've been given directions to a temple by my God but can't find the
+#####G temple anywhere!
+
+A: It [[[[[BIS] there. However, your god's idea of compass directions that are
+not directly on the 4 main axes are probably slightly less acurate than your
+idea. In other words, if your god says it is South-East, s/he means it is
+somewhere in the quadrant that is between the south and east axes.
+~~~~~21|Spoilers|God Quest - relic
+#####G------------------------------------------------------------------------------
+#####GQ: Where is the relic by god was talking about? I've looked in the lost
+#####G temple and can't find it anywhere!
+
+A: It [[[[[BIS] there. However, when your god told you to look for it VERY
+carefully, s/he meant it. Regardless of your game settings, the relic will only
+be created once in the temple, at a random place. If you have searched the
+whole temple once over, and not located it, then you have missed it, and it is
+lost forever. Each temple has 5 dungeon levels, and the relic might be on
+any of these 5 levels.
+~~~~~22|Spoilers|God Quest - how many?
+#####G------------------------------------------------------------------------------
+#####GQ: Apparently my god has lost another piece of his relic and wants me to go
+#####G find it again. How many of these are there?
+
+A: You can receive up to five god quests, with the final piece yielding an
+extra reward. However you will only receive extra quests if you have
+sucessfully completed all the previous ones.
+~~~~~19|Deathmolds on Mount Doom and other quest areas.
+#####G------------------------------------------------------------------------------
+#####GQ: How do I complete the special no-teleport level quests with a Deathmold?
+
+A: You will need either some morphic oils, some mimicry skill, or the ring of
+Flare. Deathmolds are marked as experimental for a reason you know. Morphic
+oils can also help if you're having trouble communictaing with monsters. A very
+beautiful Elf springs to mind as possibly causing some problems if you are in
+Deathmold form.
diff --git a/lib/help/spoiler.hlp b/lib/help/spoiler.hlp
new file mode 100644
index 00000000..bc229852
--- /dev/null
+++ b/lib/help/spoiler.hlp
@@ -0,0 +1,18 @@
+|||||oy
+~~~~~01|Spoilers
+#####RWelcome to the Angband Online Spoiler System.
+#####R=============================================
+
+Please choose one of the following online spoiler files:
+
+ *****/acorspoil.txt*0[(a) Corruptions]
+ *****/bdunspoil.txt*0[(b) Dungeons]
+ *****/cessences.txt*0[(c) Essence Spoiler]
+ *****/dinscrip.txt*0[(d) Floor Inscriptions]
+ *****/eluckspoi.txt*0[(e) Luck]
+ *****/ffatespoi.txt*0[(f) Fates]
+ *****/gwishing.txt*0[(g) Wishing]
+ *****/hspoil_faq.txt*0[(h) Spoiled FAQ]
+
+
+ *****/zhelp.hlp*0[(z) Main Help menu]
diff --git a/lib/help/tome_faq.txt b/lib/help/tome_faq.txt
new file mode 100644
index 00000000..756ce639
--- /dev/null
+++ b/lib/help/tome_faq.txt
@@ -0,0 +1,381 @@
+|||||oy
+~~~~~01|Help|FAQ - Spoiler free
+~~~~~02|FAQ - Spoiler free
+#####R ToME FAQ
+#####R Updated for version 2.3.x
+
+#####G------------------------------------------------------------------------------
+
+#####R=== Differences Between ToME and Vanilla Angband ===
+
+The first main difference a new player to ToME will need to be aware of is
+that it has implemented a skills based system. Instead of the adventurer
+automatically improving in his abilities as he becomes more experienced,
+he gets 6 skill points to spend on his skills, allowing the player to
+customise what type of character she will play. See the *****skills.txt*0[skills] help file
+for details.
+
+A second major difference is that the main dungeon from Angband has been split
+into 4 "dungeons", each of which covers a different portion of the Angband
+dungeon's levels. Each of these 4 dungeons is located either in or near one of
+the four main towns so that the character can keep stocked up on supplies. As
+the adventurer advances in ability, he will need to travel overland to the next
+town/dungeon, which is most easily carried out using the wilderness map ("<"
+from town level). As well as these main places, there are a number of
+additional dungeons which the character may or may not choose to enter, which
+can have guardians, contain specific artifacts, or just be used as an
+alternative place to enjoy gaining experience. Note that not all of the places
+are actually "dungeons" - some are caves, forests, etc.
+
+ToME also offers the player the ability to undertake a series of quests.
+Random quests can be specified during start-up, and involve rescuing a princess
+from a group of monsters within the dungeon, or recovering a lost sword from
+(you guessed it...) a group of monsters. If you do not wish to play with
+random quests, simply specify "0" when asked how many you want during character
+generation. Other "fixed" quests are also available from the towns (whether
+random quests are enabled or not), usually given by the town leaders upon the
+request of the adventurer. It is not required for any adventurer to undertake
+the fixed quests, but they can result in some nice rewards.
+
+The third main difference between Vanilla Angband and ToME is the difference
+in character classes and races, as well as a very different magic system.
+See the help files on *****birth.txt*0[Creating a character] and the *****magic.txt*0[magic] system.
+Class abilities (generally referred to as skills) are generally accessed
+through the 'm' command. Most racial abilities, or corruptions, are accessed
+through the "U" command.
+
+To balance the expansion in things like player abilities and customisation, the
+list of both monsters and items has also been expanded. Be warned that items
+which were by default safe in Vanilla are not necessarily safe in ToME (a
+certain early artifact comes to mind here...), and picking on defenceless
+creatures is frowned upon....
+
+Happy adventuring!
+~~~~~03|Altars
+~~~~~04|Gods|Altars
+#####G------------------------------------------------------------------------------
+#####GQ: How do I use the altars (the 'O's) I see in the dungeon?
+
+A: ToME introduces a new system of gods.
+
+You can find altars only in Lothlorien and in the dungeon.
+The ones on the surface are dedicated to the good Valar (Eru, Manwe, Tulkas and
+Yavanna), while altars found in the dungeons are "sacred" for Melkor.
+You can use altars to convert yourself to the service of a specific Vala by
+using the "O" command while standing on them. Beware, this works only if you
+don't already have a God, and as a new convert, your God won't like you that
+much. Melkor also uses his altars as a mean of collecting sacrifices from his
+devotees; this function is likewise accomplished by the "O" command.
+
+Read *****gods.txt*0[gods.txt] for more information about Gods.
+~~~~~05|Fountains
+#####G------------------------------------------------------------------------------
+#####GQ: How do I use the fountains (the '_'s) I see in the dungeon?
+
+A: Fountains in ToME act like potions, but can only be identified by
+drinking from them. Each one can hold between 3 and 12 doses of the potion.
+Quaffing from a fountain can be done by using the 'H' command (in the standard
+keyset) and answering 'Q' at the prompt.
+
+You can also fill empty bottles at a fountain (enabling you to identify the
+potion and hence the type of fountain) by using the 'H' command and answering
+'F' at the prompt. The game will then ask you to choose bottles and how many
+bottles you want to fill. You can find empty bottles on the dungeon and
+drinking pints of fine ale/wine will give you emtpy bottles; if you are
+trained in Alchemy, you can reuse bottles after quaffing potions as well.
+
+#####G------------------------------------------------------------------------------
+#####GQ: I got killed by a Great Wyrm of Power at 50'!!! What happened?
+
+A: You killed a defenceless creature. I told you that it was frowned upon!
+~~~~~18|Artifacts that activate but I cannot wear or wield
+~~~~~17|Strange items
+#####G------------------------------------------------------------------------------
+#####GQ: I've found some strange items like a Red Tome, a Voodoo Doll, ...
+#####G What can I do with them?
+
+A: You've found an unusual artifact that cannot be wielded, but always
+has a sometimes-useful activation. It will not be listed in the known
+artifact list and its activation is chosen randomly. It would probably be
+wise for this kind of artifact be *identified* before use, as the
+activation can be something very nasty....
+
+To activate it, use the normal Activation command, but when prompted for which
+item to activate change to the backpack instead of wielded equipment.
+~~~~~10|Essences
+~~~~~11|Runes
+#####G------------------------------------------------------------------------------
+#####GQ: I keep coming across "essences" and "runes". What are they?
+
+Essences are the *****c_alchem.txt*0[Alchemist's] friend, and you can only use them if you
+have access to the *****skills.txt*49[Alchemy] skill.
+Runes are used to cast and store spells of varying types. *****c_runecr.txt*0[Runecrafters] are the
+class who are most proficient at using these. You can only use them if you
+have access to the *****skills.txt*36[Runecrafting] skill.
+~~~~~12|Homes
+#####G------------------------------------------------------------------------------
+#####GQ: Where can I store all my equipment? Theere's not enough room in my
+#####Ginventory? And what happened to the thieves quest in Bree?
+
+Nor is there supposed to be enough room in your backpack. It's not
+bottomless you know! If you go talk to the Mayor in Bree, he might let you know
+about a slight problem that there's been in town. If you can clear up the
+problem, you may find yourself with somewhere extra to keep your stuff. I've
+heard tell that there are similiar problems in other towns in Middle-Earth.
+~~~~~13|Fates|Prophets
+#####G------------------------------------------------------------------------------
+#####GQ: I spent 500 gp at the Prophet but she said nothing. Is that a bug ?
+
+A: No. Nor is it because Prophets are swindlers. She said nothing
+because you have no fate at this moment. You gain fates while playing, and
+will be warned by a message such as "You feel your fate has changed". A fate
+can be useless like finding a broken skull at level 30, deadly like dying at
+level 56, or really useful like never dying by the hand of a mortal.
+~~~~~14|Mathilde
+#####G------------------------------------------------------------------------------
+#####GQ: Who is Mathilde, the Science Student whom I see every so often in the
+#####G town?
+
+A: Most of the time she laughs and giggles. She has no loot on her, and
+she's never done you any harm. So leave her be - even if she should
+happen to shout "Drop dead, creep!"
+~~~~~15|Wrists hurting
+#####G------------------------------------------------------------------------------
+#####GQ: My wrists hurt a lot when playing the game. Should I take precautions?
+
+A: Yes, you should. Repetitive strain on wrists (which results from a badly
+placed keyboard, for example) can lead to serious injury of the wrist ligaments
+called Carpal Tunnel Syndrome. If you feel your wrists are strained, here is
+an exercise posted by Jason Maskell in rec.games.roguelike.angband which might
+help:
+
+Hold your arms out horizontally, make a fist, and then point the fist towards
+the floor, as much as you can. This will stretch one side's tendons. Hold for
+5 seconds. Then make a flat hand and hold it level with your arm, hold for 5
+seconds. Now splay your fingers and attempt to make your hand point toward the
+ceiling (this one is hard, so don't push it too much). You should feel your
+tendons stretching. Repeat this a few times. Take frequent breaks and do this
+if it starts to hurt a little bit. I was sliding very fast towards CTS and this
+corrected it.
+~~~~~16|Void jumpgates
+#####G------------------------------------------------------------------------------
+#####GQ: When I stand on void jumpgates I'm never teleported away, what's wrong?
+
+A: Void jumpgates are not automatic. You must press '>' while standing
+on one to activate it.
+
+#####G------------------------------------------------------------------------------
+#####GQ: When it panic saves it reloads an old savefile !!
+
+A: Now the panic saves use a different file to save, savefile.pnc.
+This file will be loaded first, if present, when the game is started.
+If it loads successfully, save the game immediately. Otherwise, delete
+the panic save, and your old (non-panic) savefile should be safe.
+
+~~~~~08|Monsters|They are talking to me!
+#####G------------------------------------------------------------------------------
+#####GQ: Farmer Maggot / Melinda Proudfoot keep shouting at me, and I cannot
+#####G kill them.
+
+A: Both these people need to talk to you about something. Have a chat with them
+(check the file *****command.txt*96[command.txt] for how to chat).
+~~~~~09|Sentient weapons
+#####G------------------------------------------------------------------------------
+#####GQ: I have found a sentient weapon, it says it has access to the realms
+#####G of Earth and Fire. How do I use these realms?
+
+A: You don't actually 'use' them as such. If a weapon is sentient it means it
+gains experience itself as it delivers killing blows. As it levels up it has
+the chance to gain pluses to hit and to damage, and also powers from any of the
+available 'realms'. For instance, the realm of fire gives the chance to gain
+resistance to fire, or fire branding on your weapon. The realm of earth has a
+chance to confer extra attacks or the power of causing earthquakes and so on.
+~~~~~24|Fumblefingers quests
+~~~~~25|Abbreviations|FF
+#####G------------------------------------------------------------------------------
+#####GQ: What or who is Fumblefingers? How do I get his quests?
+
+A: FF is short for Fumblefingers, the name that some players give to the
+adventurer who keeps having his sword stolen by monsters and asking you to
+find it for him. So named because he often seems to lose it to molds and
+other creatures you wouldn't expect to be able to pickpocket! During birth
+you'll be asked to specify a number of random quests you would like to
+attempt to complete. Some of these quests will take the form of princess
+quests, others will be fumble-finger quests. If you complete the task he
+sets you sucessfully, he'll offer to join you as a companion. If you do not
+want him to join you, he'll offer to teach you some new skills. Quite handy.
+~~~~~26|Random quests are not working.
+#####G------------------------------------------------------------------------------
+#####GQ: Where has the option gone to set the number of random quests?
+#####G Why aren't there any after the Barrow-downs?
+
+A: Turning on either of the options "Allow permanent dungeon levels" or "Always
+create special rooms" will disable random quests. Random quests can only be
+found in the four main dungeons (Barrowdowns, Mirkwood, Mordor and Angband).
+~~~~~27|Weird display
+~~~~~28|Floor tiles displaying incorrectly
+#####G------------------------------------------------------------------------------
+#####GQ: How do I get the dots to show up on floor tiles in Windows XP? I've tried
+#####G changing the tile character to the brighter dot. Toggling 'Bizarre Display'
+#####G mode helped with the trailing @@@@@@@@@@@@@@@@@ problem. Any suggestions? I
+#####G gave up a long time ago and play with graphics tiles now, but I'd like to be
+#####G able to fix this.
+
+A: In the file ./lib/pref/font_win.prf, either remove or comment out with # the
+lines that end in /0x1F, e.g.
+# open floor
+# F:1:0x01/0x1F
+Another possibility is to manually change the symbols used with the '%'
+command, but the previous solution is faster.
+~~~~~29|Dark grey things are difficult to see
+#####G------------------------------------------------------------------------------
+#####GQ: Many things are written in a dark grey color which is next to impossible to
+#####G read against a black background. Also, some monsters appear in dark grey and
+#####G are easy to miss! What can I do to fix this?
+
+A: Fix the gamma control of your display. If your display software does not
+include such a tool, access the 'Interact with Colors' screen in ToME via
+shift+7, type '4', and modify the gamma correction there.
+~~~~~30|Game 'balance'
+#####G------------------------------------------------------------------------------
+#####GQ: Why don't you make X class less powerful or Y class more powerful?
+
+A: In ToME the player determines how hard the game is. Classes, races, and
+subraces are neither meant nor desired to be equal in game difficulty. So no,
+we won't make Axemasters more powerful just to "balance them out", nor will we
+make Sorcerors weaker.
+~~~~~31|I keep dying!
+#####G------------------------------------------------------------------------------
+#####GQ: Why do I always start in a terribly difficult, very deep dungeon instead of
+#####G a town? Is the game really this hard?
+
+A: You have chosen a "Lost soul" character subrace. That's where Lost souls
+start. They tend to die very quickly, so don't choose them if you're new to
+ToME.
+~~~~~32|Invisible character
+#####G------------------------------------------------------------------------------
+#####GQ: My character is invisible. That's great, but how do I know where she is if
+#####G I can't see her?!
+
+A: You could seek for a way to see invisible things.
+You could also go to game options:
+ 1. Type = (game options)
+ 2. Type 4 (efficiency options)
+ 3. Arrow down to 'hilite the player with the cursor'
+ 4. Type y to toggle the option to 'yes'
+~~~~~33|Objects|Piles
+#####G------------------------------------------------------------------------------
+#####GQ: I'm standing on a pile of items. How do I see what's in the pile without
+#####G picking it all up, moving it, or destroying it all?
+A:
+ 1. Stand on the pile in question
+ 2. Type shift + I (inspect)
+ 3. Type - (examine items on floor)
+ 4. Type * (expand list of items on floor)
+ 5. (as needed) Type letter associated with item to look at it more closely.
+
+#####G------------------------------------------------------------------------------
+#####GQ: If I'm standing on a pile of items. Is there a command to see if there is a
+#####G stairway or jumpgate beneath the pile?
+
+A: Stairs/jumpgates obscured by clutter do still function. You are advised to
+take a good hard look at your surroundings before creating lots of dungeon
+clutter.
+ 1. You can pick up, move, or eliminate the pile.
+ 2. Press l (look), then select the square you wish to inquire about. Press
+<enter>; it will scroll through everything on the ground, and eventually it
+ends with "It is in a Void Jumpgate", or whatever.
+~~~~~34|Character choice is too confusing
+~~~~~36|Beginner strategy
+#####G------------------------------------------------------------------------------
+#####GQ: What is a good starting character?
+
+A: Make sure to read the parchment you start the game with!
+
+If you're new to ToME, understand that your characters are going to die a lot.
+Be prepared for that. In fact, take advantage of it by using the various
+characters you run to experiment and learn the game's various facets.
+
+Try a warrior. A Dunadan Swordmaster is an excellent combination of race and
+class.
+
+Try a priest. A Rohan Knight Paladin gives you some magic to go with strong
+combat, but your terrible stealth will give you a tougher time in some respects.
+
+Try an archer. A Wood-elf Archer will have fewer hitpoints than you're used to,
+but lets you use excellent ranged combat instead. Also note how your higher
+stealth wakes up fewer monsters, letting you fight them more on your own terms.
+
+Try a mage. A Dark-elf Mage lets you keep using weapons, while getting a taste
+of the various magic schools. You have even fewer hitpoints, though, so beware.
+
+Try another mage. A Hobbit Sorceror is a fun character, but the hitpoint
+penalties make you need to be very careful. You get high-powered magic, though,
+to more than make up for it.
+
+I would just add that for those who get frustrated in the early levels and want
+to run a more powerful character that I think the three easiest combinations
+are probably the Zombie Rohan Knight Unbeliever, the Thunderlord (or Vampire
+Half-Ogre) Sorceror, and the High-Elf (or Deathmold if you can figure it out)
+Possessor. Also, you might want to try a priest of Eru or Tulkas. Most of these
+have low stealth, but should be pretty easy to play up to around level 30, and
+they offer an attractive range of experiences for the new player.
+~~~~~35|I STILL keep dying!
+#####G------------------------------------------------------------------------------
+#####GQ: I'm getting killed a lot. Can you recommend some starting options to
+#####G make my chances a little better?
+
+A: Realize that getting killed a lot is to be expected. Having said that, try
+this. At character creation:
+ 1. Turn off "always generate very unusual rooms".
+ 2. Turn off joke monsters.
+ 3. Turn off "always make small levels".
+ 4. Regarding the number of random quests: See the Q/A below.
+ 5. Do not choose a Lost Soul character.
+
+Later, set these options:
+ 1. Turn on "expand the power of the look command".
+ 2. Turn on "allow some monsters to carry light".
+ 3. Turn on "map remembers all perma-lit grids".
+ 4. Turn on "map remembers all torch-lit grids".
+ 5. Turn off "monsters learn from their mistakes".
+ 6. Turn off "monsters exploit player weaknesses".
+ 7. Turn on "monsters behave stupidly".
+ 8. Turn off "allow unusually small dungeon levels".
+ 9. Turn off "allow empty 'arena' levels".
+
+~~~~~36|Random quests strategy
+#####G------------------------------------------------------------------------------
+#####GQ: How many random quests should I choose?
+
+A: One big question a beginner is faced with is: How many (random) optional
+quests to choose?
+
+I think this is another area where the beginner should mix it up. The early
+items from princesses are a great benefit to beginners, but coming to rely on
+those can be a problem when it comes time to enter deep dungeons and the real
+nasty quests begin.
+
+Also high counts, especially 98 quests, can be very frustrating for a beginner
+when it puts an especially difficult quest on dungeon level 1 or 2.
+
+~~~~~37|Anti-magic Amulets and the Anti-magic shell
+#####G------------------------------------------------------------------------------
+#####GQ: Are Amulets of Anti-magic and the Anti-magic skill related?
+
+A: No. The Anti-magic shell of the Amulet of Anti-magic has nothing to do with
+the Anti-magic field given off by the skill and Dark Swords.
+
+~~~~~38|Beornings and Bearform-combat
+#####G------------------------------------------------------------------------------
+#####GQ: My Beorning character doesn't have Bearform-combat! Why?
+
+A: You cannot put points into Bearform-combat unless you are transformed
+into a bear. Use the racial power ('U' in the original keyset, 'O' in
+roguelike) to transform first.
+
+#####G------------------------------------------------------------------------------
+#####GQ: The game is so slow...
+
+A: Yeah :(
+Try disabling the various options marked as (slow)
diff --git a/lib/help/version.txt b/lib/help/version.txt
new file mode 100644
index 00000000..501be7f6
--- /dev/null
+++ b/lib/help/version.txt
@@ -0,0 +1,354 @@
+|||||oy
+~~~~~01|Development history
+*****version.txt*01[The origins of ToME]
+*****version.txt*02[Zangband History and Information]
+*****version.txt*03[Brief Version History (of standard Angband)]
+*****version.txt*04[A Posting from the Original Author (of Moria)]
+*****version.txt*05[Previous Versions (outdated)]
+
+
+#####R====== ToME Brief History =======
+
+When Zangband came to its 2.2.0 version I (DarkGod) was an Angband winner and
+I had been a C programmer for a long time, so I decided to take the sources
+and to try to code my own variant. At this time I was reading the Pern
+novels from Anne McCaffrey and I found them *VERY* good, so I decided to
+include some elements of them into my variant from which it takes the name,
+PernAngband.
+
+One hard thing to decide was on which Angband to base it. Although I didn't
+like Zangband because of the Zelazny universe, which I found to be not very
+Tolkienish, I chose it because of all the good things it had (especially
+the race powers that I wasn't able to code at the time). So I removed
+much of the Zelazny stuff and replaced it with Tolkien and Pernish stuff.
+And so the history of PernAngband began with the version 2.9.9a.
+
+Now, in PernAngband 5.x.x, PernAngband is a thriving Angband variant
+with plenty of unique features.
+
+Then came some legal problems with Anne McCaffrey estate and ubisoft and
+I had to remove the Pern stuff, so the game got renamed to ToME,
+the Troubles of Middle Earth.
+~~~~~02
+#####R=== Zangband History and Information ===
+
+The seeds of Zangband lie in an obsolete and long ago vanished PC variant
+(somewhat misleadingly) dubbed Angband--. The variant was written by a
+hopeless Angband addict (previously Moria veteran and winner) who got
+bored with the standard monsters and wanted to introduce some new
+monsters. Angband-- was based on the PC Angband 1.31 sources, and
+it was set in Roger Zelazny's 'Amber' universe.
+
+Later this individual got a better computer and learned to code, and
+produced the PC Zangband, and most Angband-- monsters survived into
+PC Zangband 1.0. PC Zangband 1.0 was the first PC Angband to introduce
+(simple, font-based) graphics, which were also used in the graphical
+PC Angband 1.40.
+
+Yet this individual was still not cured of his addiction... his almost
+as strong addiction to the Civilization style fantasy strategy game
+'Master of Magic' inspired him to write a new magic system. The current
+version of Zangband (2.*) incorporates this magic system, as well as
+the best features from Angband-- and PC Zangband 1.0. It is based on
+the Angband 2.8.1 sources (by Ben Harrison), and is therefore portable
+to other systems (unlike the earlier versions which were for DOS-PC's
+only).
+
+Incidentally, this person (me, Topi Ylinen) also thought that the
+standard Angband monsters were too easy, which led him to introduce
+such monsters as Death swords, Cyberdemons and Great Wyrms of Power...
+
+Special thanks -- The current version of Zangband might not have come into
+existence without the significant help from these excellent Angband
+programmers:
+
+ Ben Harrison, for obvious reasons.
+
+ Greg Wooledge, who pointed out a bug in the dos compiler,
+ which was preventing my progress with the first 2.* version
+ of Zangband and for various patches.
+
+ Julian Lighton, who must have sent me more ideas, patches, and
+ bug reports than all the others together.
+
+ Robert Ruehlmann, whose nice new main-dos.c enables SVGA
+ graphics and even windows in MS-DOS.
+
+ Paul Sexton, who is responsible for about 50% of the new code
+ in 2.1.0.
+
+ Heino Vander Sanden, who created the quest-code and
+ Dean Anderson, whose patch showed me the quickest way to
+ implement the quests.
+
+ Adam Bolt, who created the new ZAngband tiles.
+
+ Scott Bigham, for the S-Lang patch.
+
+ Jeff Duprey for the new mutations.
+
+ Leigh Silas Hanrihan for the new items.
+
+ Benny S. Hofmann, Aram Harrow, Greg Harvey, Keldon Jones,
+ Graham Murray, Remco Gerlich, Tim Baker and many others
+ for bugreports, patches, bugfixes, and ideas.
+
+
+ZAngband 2.1.0c was Topi's last version, he has got a job and
+doesn't have enough time anymore to continue work on ZAngband.
+He asked for a new maintainer and I was the one to take over the task.
+May I introduce myself, my name is Robert Ruehlmann, I'm the creator
+of the graphical Angband versions for DOS and webmaster of
+"Thangorodrim - The Angband Page" ("http://www.thangorodrim.net").
+~~~~~03
+#####R=== Brief Version History (of standard Angband) ===
+
+First came "VMS Moria", by Robert Alan Koeneke (1985).
+
+Then came "Umoria" (Unix Moria), by James E. Wilson (1989).
+
+In 1990, Alex Cutler and Andy Astrand, with the help of other students
+at the University of Warwick, created Angband 1.0, based on the existing
+code for Umoria 5.2.1. They wanted to expand the game, keeping or even
+strengthening the grounding in Tolkien lore, while adding more monsters
+and items, including unique monsters and artifact items, plus activation,
+pseudo-sensing, level feelings, and special dungeon rooms.
+
+Over time, Sean Marsh, Geoff Hill, Charles Teague, and others, worked on
+the source, releasing a copy known as "Angband 2.4.frog_knows" at some
+point, which ran only on Unix systems, but which was ported by various
+people to various other systems.
+
+Then Charles Swiger (cs4w+@andrew.cmu.edu) attempted to clean up the mess,
+resulting in several versions, starting sometime around November, 1993, with
+Angband 2.5.1 (more or less) and leading up to Angband 2.6.2 in late 1994.
+Several people ported (the primarily Unix/NeXT centered) Angband 2.6.1 to
+other platforms, including Keith Randall, who made a Macintosh port that
+added support for color usage. Some of the changes during this period were
+based on suggestions from the "net", PC Angband 1.40, UMoria 5.5, and some
+of the Angband "variations", such as FAngband.
+
+Finally, I (Ben Harrison) took over in late 1994 when Charles Swiger left.
+Initially my intention was simply to clean up what had become, after ten
+years, a rather unholy mess, but the deeper I delved into the code, the
+more it became apparent that drastic changes were needed, so, starting
+with MacAngband 2.6.1, I began a more or less total rewrite, resulting,
+eventually, in Angband 2.7.0, released around January first, 1995.
+
+Angband 2.7.0 was a very clean (but very buggy) rewrite that, among other
+things, allowed extremely simple porting to multiple platforms, starting
+with Unix and Macintosh, and by the time most of the bugs were cleaned up,
+in Angband 2.7.2, including X11, and various IBM machines. Angband 2.7.4
+was released to the "ftp.cis.ksu.edu" site, and quickly gained acceptance,
+perhaps helped by the OS2 and Windows and Amiga and Linux ports. Angband
+2.7.5 and 2.7.6 added important capabilities such as macros and user pref
+files, and continued to clean up the source. Angband 2.7.8 was designed
+to supply another "stable" version that we can all give to our friends,
+with new "help files" and "spoiler files" for the "online help", plus a
+variety of minor tweaks and some new features. Angband 2.7.9 optimized
+a few things, and tweaked a few other things, and cleaned up a few other
+things, and introduced a few minor semantic changes.
+
+It is very hard to pin down, along the way from 2.6.2 to 2.7.0, and thence
+to 2.7.8, exactly what was added exactly when. Most of these steps involved
+so many changes as to make "diff files" not very useful, since often the diff
+files were as long as the code itself. Most of the changes, with the notable
+exception of the creation of the new "main-xxx.c" files for the various new
+platforms, and a few other exceptions generally noted in the source, were
+written by myself, either spontaneously, or, more commonly, as the result of
+a suggestion or comment by an Angband player. So if you have any problems
+with anything that you do not recognize from older versions, you can blame
+them on me. And if you like the new features and such, you can send me a
+brief little "thank you" email (to benh@phial.com) or something...
+
+The Official Angband Home Page ("http://www.phial.com/")
+was created along with Angband 2.7.9 to serve as an up to date description
+of any bugs found in various versions, and to list all of the people whose
+email addresses I kept having to look up.
+
+~~~~~04
+#####R=== A Posting from the Original Author ===
+
+From: koeneke@ionet.net (Robert Alan Koeneke)
+Newsgroups: rec.games.roguelike.angband,rec.games.roguelike.moria
+Subject: Early history of Moria
+Date: Wed, 21 Feb 1996 04:20:51 GMT
+
+I had some email show up asking about the origin of Moria, and its
+relation to Rogue. So I thought I would just post some text on the
+early days of Moria.
+
+First of all, yes, I really am the Robert Koeneke who wrote the first
+Moria. I had a lot of mail accussing me of pulling their leg and
+such. I just recently connected to Internet (yes, I work for a
+company in the dark ages where Internet is concerned) and
+was real surprised to find Moria in the news groups... Angband was an
+even bigger surprise, since I have never seen it. I probably spoke to
+its originator though... I have given permission to lots of people
+through the years to enhance, modify, or whatever as long as they
+freely distributed the results. I have always been a proponent of
+sharing games, not selling them.
+
+Anyway...
+
+Around 1980 or 81 I was enrolled in engineering courses at the
+University of Oklahoma. The engineering lab ran on a PDP 1170 under
+an early version of UNIX. I was always good at computers, so it was
+natural for me to get to know the system administrators. They invited
+me one night to stay and play some games, an early startrek game, The
+Colossal Cave Adventure (later just 'Adventure'), and late one night,
+a new dungeon game called 'Rogue'.
+
+So yes, I was exposed to Rogue before Moria was even a gleam in my
+eye. In fact, Rogue was directly responsible for millions of hours of
+play time wasted on Moria and its descendents...
+
+Soon after playing Rogue (and man, was I HOOKED), I got a job in a
+different department as a student assistant in computers. I worked on
+one of the early VAX 11/780's running VMS, and no games were available
+for it at that time. The engineering lab got a real geek of an
+administrator who thought the only purpose of a computer was WORK!
+Imagine... Soooo, no more games, and no more rogue!
+
+This was intolerable! So I decided to write my own rogue game, Moria
+Beta 1.0. I had three languages available on my VMS system. Fortran
+IV, PASCAL V1.?, and BASIC. Since most of the game was string
+manipulation, I wrote the first attempt at Moria in VMS BASIC, and it
+looked a LOT like Rogue, at least what I could remember of it. Then I
+began getting ideas of how to improve it, how it should work
+differently, and I pretty much didn't touch it for about a year.
+
+Around 1983, two things happened that caused Moria to be born in its
+recognizable form. I was engaged to be married, and the only cure for
+THAT is to work so hard you can't think about it; and I was enrolled
+for fall to take an operating systems class in PASCAL.
+
+So, I investigated the new version of VMS PASCAL and found out it had
+a new feature. Variable length strings! Wow...
+
+That summer I finished Moria 1.0 in VMS PASCAL. I learned more about
+data structures, optimization, and just plain programming that summer
+then in all of my years in school. I soon drew a crowd of devoted
+Moria players... All at OU.
+
+I asked Jimmey Todd, a good friend of mine, to write a better
+character generator for the game, and so the skills and history were
+born. Jimmey helped out on many of the functions in the game as well.
+This would have been about Moria 2.0
+
+In the following two years, I listened a lot to my players and kept
+making enhancements to the game to fix problems, to challenge them,
+and to keep them going. If anyone managed to win, I immediately found
+out how, and 'enhanced' the game to make it harder. I once vowed it
+was 'unbeatable', and a week later a friend of mine beat it! His
+character, 'Iggy', was placed into the game as 'The Evil Iggy', and
+immortalized... And of course, I went in and plugged up the trick he
+used to win...
+
+Around 1985 I started sending out source to other universities. Just
+before a OU / Texas football clash, I was asked to send a copy to the
+Univeristy of Texas... I couldn't resist... I modified it so that
+the begger on the town level was 'An OU football fan' and they moved
+at maximum rate. They also multiplied at maximum rate... So the
+first step you took and woke one up, it crossed the floor increasing
+to hundreds of them and pounded you into oblivion... I soon received
+a call and provided instructions on how to 'de-enhance' the game!
+
+Around 1986 - 87 I released Moria 4.7, my last official release. I
+was working on a Moria 5.0 when I left OU to go to work for American
+Airlines (and yes, I still work there). Moria 5.0 was a complete
+rewrite, and contained many neat enhancements, features, you name it.
+It had water, streams, lakes, pools, with water monsters. It had
+'mysterious orbs' which could be carried like torches for light but
+also gave off magical aura's (like protection from fire, or aggrivate
+monster...). It had new weapons and treasures... I left it with the
+student assistants at OU to be finished, but I guess it soon died on
+the vine. As far as I know, that source was lost...
+
+I gave permission to anyone who asked to work on the game. Several
+people asked if they could convert it to 'C', and I said fine as long
+as a complete credit history was maintained, and that it could NEVER
+be sold, only given. So I guess one or more of them succeeded in
+their efforts to rewrite it in 'C'.
+
+I have since received thousands of letters from all over the world
+from players telling about their exploits, and from administrators
+cursing the day I was born... I received mail from behind the iron
+curtain (while it was still standing) talking about the game on VAX's
+(which supposedly couldn't be there due to export laws). I used to
+have a map with pins for every letter I received, but I gave up on
+that!
+
+I am very happy to learn my creation keeps on going... I plan to
+download it and Angband and play them... Maybe something has been
+added that will surprise me! That would be nice... I never got to
+play Moria and be surprised...
+
+Robert Alan Koeneke
+koeneke@ionet.net
+
+~~~~~05
+#####R=== Previous Versions (outdated) ===
+
+
+ VMS Moria Version 4.8
+Version 0.1 : 03/25/83
+Version 1.0 : 05/01/84
+Version 2.0 : 07/10/84
+Version 3.0 : 11/20/84
+Version 4.0 : 01/20/85
+
+Modules :
+ V1.0 Dungeon Generator - RAK
+ Character Generator - RAK & JWT
+ Moria Module - RAK
+ Miscellaneous - RAK & JWT
+ V2.0 Town Level & Misc - RAK
+ V3.0 Internal Help & Misc - RAK
+ V4.0 Source Release Version - RAK
+
+Robert Alan Koeneke Jimmey Wayne Todd Jr.
+Student/University of Oklahoma Student/University of Oklahoma
+
+
+ Umoria Version 5.2 (formerly UNIX Moria)
+Version 4.83 : 5/14/87
+Version 4.85 : 10/26/87
+Version 4.87 : 5/27/88
+Version 5.0 : 11/2/89
+Version 5.2 : 5/9/90
+
+James E. Wilson, U.C. Berkeley
+ wilson@ernie.Berkeley.EDU
+ ...!ucbvax!ucbernie!wilson
+
+Other contributors:
+D. G. Kneller - MS-DOS Moria port
+Christopher J. Stuart - recall, options, inventory, and running code
+Curtis McCauley - Macintosh Moria port
+Stephen A. Jacobs - Atari ST Moria port
+William Setzer - object naming code
+David J. Grabiner - numerous bug reports, and consistency checking
+Dan Bernstein - UNIX hangup signal fix, many bug fixes
+and many others...
+
+
+
+
+Copyright (c) 1989 James E. Wilson, Robert A. Keoneke
+ This software may be copied and distributed for educational, research, and
+ not for profit purposes provided that this copyright and statement are
+ included in all such copies.
+
+Umoria Version 5.2, patch level 1
+
+Angband Version 2.0 Alex Cutler, Andy Astrand, Sean Marsh, Geoff Hill,
+ Charles Teague.
+
+Angband Version 2.4 : 5/09/93
+
+Angband Version 2.5 : 12/05/93 Charles Swiger.
+
+Angband Version 2.6 : 9/04/94
+
+Angband Version 2.7 : 1/1/95 Ben Harrison
diff --git a/lib/help/whattome.txt b/lib/help/whattome.txt
new file mode 100644
index 00000000..43ebb2e1
--- /dev/null
+++ b/lib/help/whattome.txt
@@ -0,0 +1,30 @@
+|||||oy
+~~~~~01|ToME - a General Description
+#####R /----------------------------------------\
+#####R < What is ToME? >
+#####R \----------------------------------------/
+
+Tales of Middle Earth (ToME) is a fantasy adventure game, based on the works
+of Tolkien. Focusing on game-play rather than fancy graphics that get boring
+after a week, ToME will keep you playing for years.
+
+Explore dozens of different dungeons including hundreds of randomly generated
+levels filled with multitudes of different items and treasures. Fight off
+hundreds of monsters and uniques from the stories in a complex fighting system.
+Gain experience and learn skills; choose from the dozens of races and classes
+available to the player; cast spells from simple teleportation spells to
+advanced spells that can wipe out a whole army at once. It's the only game where
+you can burn spell books by trudging in lava (unless you have gained immunity
+from some armour), dry up rivers to cast mighty spells, strike at orcs with
+blades attuned to slay them specifically, summon armies from a simple totem,
+and even enter a symbiotic relationship with a mold!
+
+Explore dungeons, gain power, and save Middle-earth!
+
+The player will begin his adventure on the town level where he may acquire
+supplies, weapons, armour, and magical devices by bartering with various shop
+owners. After preparing for his adventure, the player can descend into the
+dungeon near Bree where fantastic adventures await his coming!
+
+Make sure you read the parchment you are given when you start the game, and
+read the in-game documentation.
diff --git a/lib/help/wishing.txt b/lib/help/wishing.txt
new file mode 100644
index 00000000..d16f5ae9
--- /dev/null
+++ b/lib/help/wishing.txt
@@ -0,0 +1,24 @@
+~~~~~01|Spoilers|Wishing
+#####R=== Wishes ===
+
+Some items in ToME will grant the user the ability to "wish" for an
+object that they are interested in. As such, these are generally very rare
+and very powerful objects.
+
+#####GRules for Wishes
+Due to the powerful nature of wishes, there are some rules that govern
+what is able to be wished for. These rules are as follows:
+1. You cannot wish for a wish, or any other item which would grant more
+ wishes.
+2. A wish will always generate *one* object. So, never put a number, "a"
+ or "an" in front of the object you are wishing for.
+3. It is not possible to wish for the magical +'s to the object (i.e. you
+ cannot wish for "gloves of slaying (+10,+10)", but you can wish for
+ "gloves of slaying").
+4. You cannot wish for artifacts, but you *can* wish for excellent (ego)
+ items.
+5. You can wish for monsters and ego monsters (e.g. "cave orc", "rogue cave
+ orc").
+6. You cannot wish for unique monsters.
+7. You can wish the monster to have a specific flag - a pet, or a foe.
+ Possible flags include: enemy, neutral, friendly, pet, companion.
diff --git a/lib/info/delete.me b/lib/info/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/info/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/mods/mods_aux.lua b/lib/mods/mods_aux.lua
new file mode 100644
index 00000000..1562a566
--- /dev/null
+++ b/lib/mods/mods_aux.lua
@@ -0,0 +1,185 @@
+-- Ok some functions that we dont need are dangerous
+--[[
+execute = nil
+getenv = nil
+setlocale = nil
+exit = nil
+openfile = nil
+writeto = nil
+readfrom = nil
+appendto = nil
+remove = nil
+rename = nil
+tmpname = nil
+]]
+modules = {}
+
+current_module = nil
+
+function setup_module(mod)
+ -- For standart game, nothing needs to be done
+ if not mod.layout then return end
+
+ for k, e in mod.layout do
+ module_reset_dir(k, e)
+ end
+end
+
+function init_module(i)
+ setup_module(get_module(i))
+end
+
+function max_modules()
+ local i = 0
+ for k, e in modules do
+ if type(k) == "number" and type(e) == "table" then
+ i = i + 1
+ end
+ end
+ return i
+end
+
+function get_module_name(j)
+ local i = 0
+ for k, e in modules do
+ if type(k) == "number" and type(e) == "table" then
+ if i == j then return e.name end
+ i = i + 1
+ end
+ end
+end
+
+function get_module_desc(j)
+ local i = 0
+ for k, e in modules do
+ if type(k) == "number" and type(e) == "table" then
+ if i == j then return e.desc end
+ i = i + 1
+ end
+ end
+end
+
+function get_module(j)
+ local i = 0
+ for k, e in modules do
+ if type(k) == "number" and type(e) == "table" then
+ if i == j then return e end
+ i = i + 1
+ end
+ end
+end
+
+function find_module(name)
+ local i = 0
+ for k, e in modules do
+ if type(k) == "number" and type(e) == "table" then
+ if name == e.name then return i end
+ i = i + 1
+ end
+ end
+end
+
+function assign_current_module(name)
+ current_module = get_module(find_module(name))
+end
+
+function get_module_info(type, subtype)
+ if subtype then
+ return current_module[type][subtype]
+ else
+ return current_module[type]
+ end
+end
+
+function exec_module_info(type, ...)
+ return call(current_module[type], arg)
+end
+
+function module_savefile_loadable(savefile_mod, savefile_death)
+ for _, e in current_module.mod_savefiles do
+ if e[1] == savefile_mod then
+ if e[2] == "all" then
+ return TRUE
+ elseif e[2] == "alive" and savefile_death == FALSE then
+ return TRUE
+ elseif e[2] == "dead" and savefile_death == TRUE then
+ return TRUE
+ end
+ end
+ end
+ return FALSE
+end
+
+function scan_extra_modules()
+ scansubdir(ANGBAND_DIR_MODULES)
+ for i = 0, scansubdir_max - 1 do
+ if (scansubdir_result[i + 1] ~= ".") and (scansubdir_result[i + 1] ~= "..") then
+ local dir = path_build(ANGBAND_DIR_MODULES, scansubdir_result[i + 1])
+ local file = path_build(dir, "module.lua")
+ if file_exist(file) == TRUE then
+ tome_dofile_anywhere(dir, "module.lua")
+ end
+ end
+ end
+end
+
+function add_module(t)
+ assert(t.name, "No module name")
+ assert(type(t.version) == "table", "No module version")
+ assert(t.desc, "No module desc")
+ assert(t.author, "No module author")
+ assert(t.mod_savefiles, "No loadable savefiles module mark")
+
+ for _, e in modules do
+ if type(e) == "table" and e.name == t.name then
+ error("Module name already defined: "..t.name)
+ end
+ end
+
+ if type(t.author) == "string" then
+ t.author = { t.author, "unknown@unknown.net" }
+ end
+
+ for k, e in t.mod_savefiles do
+ if type(e) == "string" then t.mod_savefiles[k] = { e, "all" } end
+ end
+
+ if type(t.desc) == "table" then
+ local d = ""
+ for k, e in t.desc do
+ d = d .. e
+ if k < getn(t.desc) then
+ d = d .. "\n"
+ end
+ end
+ t.desc = d
+ end
+
+ if not t.rand_quest then t.rand_quest = FALSE end
+ if not t.C_quest then t.C_quest = FALSE end
+
+ if not t.base_dungeon then t.base_dungeon = 4 end
+ if not t.death_dungeon then t.death_dungeon = 28 end
+
+ if not t.astral_dungeon then t.astral_dungeon = 8 end
+ if not t.astral_wild_x then t.astral_wild_x = 45 end
+ if not t.astral_wild_y then t.astral_wild_y = 19 end
+
+ if not t.random_artifact_weapon_chance then
+ t.random_artifact_weapon_chance = 30
+ end
+ if not t.random_artifact_armor_chance then
+ t.random_artifact_armor_chance = 20
+ end
+ if not t.random_artifact_jewelry_chance then
+ t.random_artifact_jewelry_chance = 20
+ end
+
+ if not t.max_plev then t.max_plev = 50 end
+ if not t.max_skill_overage then t.max_skill_overage = 4 end
+ if not t.skill_per_level then t.skill_per_level = function() return 6 end end
+
+ if not t.allow_birth then t.allow_birth = TRUE end
+
+ tinsert(modules, t)
+end
diff --git a/lib/mods/modules.lua b/lib/mods/modules.lua
new file mode 100644
index 00000000..5deddef7
--- /dev/null
+++ b/lib/mods/modules.lua
@@ -0,0 +1,5 @@
+-- Load ToME
+tome_dofile_anywhere(ANGBAND_DIR, "module.lua")
+
+-- Look for more modules
+scan_extra_modules()
diff --git a/lib/module.lua b/lib/module.lua
new file mode 100644
index 00000000..895d79e1
--- /dev/null
+++ b/lib/module.lua
@@ -0,0 +1,36 @@
+add_module
+{
+ ["name"] = "ToME",
+ ["version"] = { 2, 3, 5 },
+ ["author"] = { "DarkGod", "darkgod@t-o-m-e.net" },
+ ["desc"] = {
+ "The Tales of Middle-earth, the standard and official game.",
+ "You are set on a quest to investigate the old tower of Dol Guldur.",
+ "But who knows what will happen...",
+ },
+
+ ["rand_quest"] = TRUE,
+ ["C_quest"] = TRUE,
+
+ ["base_dungeon"] = 4,
+ ["death_dungeon"] = 28,
+
+ ["astral_dungeon"] = 8,
+ ["astral_wild_x"] = 45,
+ ["astral_wild_y"] = 19,
+
+ ["random_artifact_weapon_chance"] = 30,
+ ["random_artifact_armor_chance"] = 20,
+ ["random_artifact_jewelry_chance"] = 20,
+
+ ["max_plev"] = 50,
+ ["max_skill_overage"] = 4,
+ ["skill_per_level"] = function()
+ return 6
+ end,
+
+ ["mod_savefiles"]=
+ {
+ "ToME",
+ },
+}
diff --git a/lib/note/delete.me b/lib/note/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/note/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/patch/delete.me b/lib/patch/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/patch/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/pref/422color.prf b/lib/pref/422color.prf
new file mode 100644
index 00000000..309c36b0
--- /dev/null
+++ b/lib/pref/422color.prf
@@ -0,0 +1,909 @@
+# Agent of the black market
+R:14:0x08:0x74
+
+# Mean-looking mercenary
+R:17:0x0c:0x74
+
+# Battle-scarred veteran
+R:18:0x04:0x74
+
+# Small kobold
+R:29:0x0d:0x6b
+
+# Kobold
+R:30:0x05:0x6b
+
+# Floating eye
+R:32:0x06:0x65
+
+# Fruit bat
+R:37:0x0a:0x62
+
+# Blubbering icky thing
+R:41:0x05:0x69
+
+# Metallic green centipede
+R:42:0x0d:0x63
+
+# Novice warrior
+R:43:0x0f:0x70
+
+# Novice rogue
+R:44:0x08:0x70
+
+# Novice priest
+R:45:0x0e:0x70
+
+# Novice mage
+R:46:0x0c:0x70
+
+# Smeagol
+R:63:0x07:0x68
+
+# Metallic blue centipede
+R:67:0x0e:0x63
+
+# Metallic red centipede
+R:77:0x0c:0x63
+
+# Novice ranger
+R:83:0x05:0x70
+
+# Snotling
+R:87:0x0d:0x6f
+
+# Skeleton kobold
+R:91:0x01:0x73
+
+# Novice mage
+R:93:0x0c:0x70
+
+# Giant leech
+R:95:0x0a:0x77
+
+# Large kobold
+R:102:0x01:0x6b
+
+# Novice priest
+R:109:0x0e:0x70
+
+# Novice warrior
+R:110:0x0f:0x70
+
+# Novice rogue
+R:116:0x08:0x70
+
+# Snaga
+R:118:0x0d:0x6f
+
+# Giant pink frog
+R:121:0x0c:0x52
+
+# Cave orc
+R:126:0x0f:0x6f
+
+# Manes
+R:128:0x0c:0x75
+
+# Red naga
+R:130:0x0c:0x6e
+
+# Red jelly
+R:131:0x0c:0x6a
+
+# Green icky thing
+R:132:0x0d:0x69
+
+# Lost soul
+R:133:0x07:0x47
+
+# Mughash, the Kobold Lord
+R:135:0x06:0x6b
+
+# Skeleton orc
+R:136:0x01:0x73
+
+# Wormtongue, Agent of Saruman
+R:137:0x08:0x70
+
+# Nurgling
+R:139:0x0f:0x75
+
+# Lagduf, the Snaga
+R:140:0x07:0x6f
+
+# Novice ranger
+R:142:0x05:0x70
+
+# Giant salamander
+R:143:0x04:0x52
+
+# Lemure
+R:148:0x03:0x75
+
+# Hill orc
+R:149:0x02:0x6f
+
+# Bandit
+R:150:0x08:0x70
+
+# Orc shaman
+R:162:0x06:0x6f
+
+# Baby blue dragon
+R:163:0x0e:0x64
+
+# Baby white dragon
+R:164:0x09:0x64
+
+# Baby green dragon
+R:165:0x0d:0x64
+
+# Baby red dragon
+R:167:0x0c:0x64
+
+# Giant red ant
+R:168:0x0c:0x61
+
+# Brodda, the Easterling
+R:169:0x03:0x70
+
+# Giant spider
+R:175:0x02:0x53
+
+# Dark elven mage
+R:178:0x0a:0x68
+
+# Kamikaze yeek
+R:179:0x07:0x79
+
+# Dark elven warrior
+R:182:0x08:0x68
+
+# Sand-dweller
+R:183:0x0f:0x75
+
+# Clear mushroom patch
+R:184:0x01:0x2c
+
+# Grishnakh, the Hill Orc
+R:186:0x07:0x6f
+
+# Hairy mold
+R:190:0x0f:0x6d
+
+# Grizzly bear
+R:191:0x07:0x71
+
+# Pseudo dragon
+R:193:0x0a:0x64
+
+# Giant fruit fly
+R:197:0x0f:0x49
+
+# Golfimbul, the Hill Orc Chief
+R:215:0x07:0x6f
+
+# Swordsman
+R:216:0x0f:0x70
+
+# Priest
+R:225:0x0e:0x70
+
+# Dark elven priest
+R:226:0x06:0x68
+
+# Skeleton human
+R:228:0x01:0x73
+
+# Moaning spirit
+R:231:0x0f:0x47
+
+# Stegocentipede
+R:232:0x06:0x63
+
+# Spotted jelly
+R:233:0x02:0x6a
+
+# Illusionist
+R:240:0x0a:0x70
+
+# Druid
+R:241:0x05:0x70
+
+# Ochre jelly
+R:245:0x0b:0x6a
+
+# Vlasta
+R:249:0x06:0x52
+
+# Snaga sapper
+R:251:0x0d:0x6f
+
+# Flesh golem
+R:256:0x03:0x67
+
+# Dark naga
+R:265:0x08:0x6e
+
+# Giant tarantula
+R:275:0x0d:0x53
+
+# Giant clear centipede
+R:276:0x01:0x63
+
+# Mirkwood spider
+R:277:0x07:0x53
+
+# Umber hulk
+R:283:0x07:0x58
+
+# Orc captain
+R:285:0x05:0x6f
+
+# Gelatinous cube
+R:286:0x0e:0x6a
+
+# Lizard man
+R:290:0x0c:0x68
+
+# Ulfast, Son of Ulfang
+R:291:0x03:0x70
+
+# Quasit
+R:294:0x09:0x75
+
+# Imp
+R:296:0x04:0x75
+
+# Forest troll
+R:297:0x0d:0x54
+
+# Giant red scorpion
+R:304:0x0c:0x53
+
+# Earth spirit
+R:305:0x0f:0x45
+
+# Fire spirit
+R:306:0x0c:0x45
+
+# Cold hound
+R:308:0x09:0x5a
+
+# Energy hound
+R:309:0x0b:0x5a
+
+# Uruk
+R:313:0x01:0x6f
+
+# Shagrat, the Orc Captain
+R:314:0x07:0x6f
+
+# Gorbag, the Orc Captain
+R:315:0x07:0x6f
+
+# Stone giant
+R:321:0x02:0x50
+
+# Giant black dragon fly
+R:322:0x08:0x46
+
+# Stone golem
+R:323:0x02:0x67
+
+# Ghast
+R:327:0x0f:0x7a
+
+# Bolg, Son of Azog
+R:330:0x0c:0x6f
+
+# Lizard king
+R:332:0x0c:0x68
+
+# Wyvern
+R:334:0x0d:0x64
+
+# Air hound
+R:338:0x0e:0x5a
+
+# Quylthulg
+R:342:0x09:0x51
+
+# Dark elven lord
+R:348:0x08:0x68
+
+# Cloud giant
+R:349:0x0e:0x50
+
+# Ugluk, the Uruk
+R:350:0x07:0x6f
+
+# Blue dragon bat
+R:351:0x0e:0x62
+
+# Water vortex
+R:355:0x06:0x76
+
+# Cold vortex
+R:358:0x09:0x76
+
+# Energy vortex
+R:359:0x0b:0x76
+
+# Mummified orc
+R:362:0x07:0x7a
+
+# Serpent man
+R:364:0x05:0x4a
+
+# Killer stag beetle
+R:366:0x02:0x4b
+
+# Iron golem
+R:367:0x09:0x67
+
+# Azog, King of the Uruk-Hai
+R:373:0x04:0x6f
+
+# Master rogue
+R:376:0x08:0x70
+
+# Angamaite of Umbar
+R:380:0x07:0x70
+
+# Forest wight
+R:381:0x0d:0x57
+
+# 4-headed hydra
+R:387:0x0f:0x4d
+
+# Mummified human
+R:390:0x0f:0x7a
+
+# Sangahyando of Umbar
+R:392:0x03:0x70
+
+# Banshee
+R:394:0x09:0x47
+
+# Pukelman
+R:398:0x07:0x67
+
+# Disenchanter beast
+R:399:0x01:0x71
+
+# Stone troll
+R:401:0x08:0x54
+
+# Troll priest
+R:403:0x06:0x54
+
+# Khufu, the Mummified King
+R:409:0x07:0x7a
+
+# Beast of Nurgle
+R:422:0x03:0x71
+
+# Creeping adamantite coins
+R:423:0x0a:0x24
+
+# Algroth
+R:424:0x02:0x54
+
+# Flamer of Tzeentch
+R:425:0x0c:0x2c
+
+# Vibration hound
+R:428:0x0f:0x5a
+
+# Ogre mage
+R:430:0x03:0x4f
+
+# Lokkak, the Ogre Chieftain
+R:431:0x05:0x4f
+
+# Colbran
+R:435:0x06:0x67
+
+# Spirit naga
+R:436:0x0e:0x6e
+
+# Corpser
+R:437:0x05:0x2c
+
+# Black knight
+R:442:0x08:0x70
+
+# Clairvoyant
+R:445:0x0e:0x70
+
+# Basilisk
+R:453:0x08:0x52
+
+# Aklash
+R:463:0x09:0x54
+
+# Skeleton troll
+R:465:0x01:0x73
+
+# Shadow drake
+R:471:0x08:0x64
+
+# Manticore
+R:472:0x03:0x48
+
+# Killer slicer beetle
+R:474:0x03:0x4b
+
+# Gug
+R:476:0x08:0x50
+
+# Death watch beetle
+R:478:0x0e:0x4b
+
+# Doombat
+R:484:0x06:0x62
+
+# Ninja
+R:485:0x08:0x70
+
+# Storm giant
+R:487:0x06:0x50
+
+# Bokrug
+R:489:0x05:0x52
+
+# Half-troll
+R:491:0x03:0x54
+
+# Bert the Stone Troll
+R:493:0x09:0x54
+
+# Bill the Stone Troll
+R:494:0x09:0x54
+
+# Tom the Stone Troll
+R:495:0x09:0x54
+
+# Barrow wight
+R:499:0x09:0x57
+
+# Law drake
+R:502:0x09:0x64
+
+# Balance drake
+R:503:0x02:0x64
+
+# Groo, the Wanderer
+R:505:0x03:0x70
+
+# Spectre
+R:508:0x0d:0x47
+
+# Cherub
+R:511:0x09:0x41
+
+# Master thief
+R:516:0x08:0x70
+
+# Lich
+R:518:0x01:0x4c
+
+# Master vampire
+R:520:0x02:0x56
+
+# Oriental vampire
+R:521:0x05:0x56
+
+# Greater mummy
+R:522:0x09:0x7a
+
+# Eog golem
+R:530:0x08:0x67
+
+# Dagashi
+R:532:0x0b:0x70
+
+# Smoke elemental
+R:537:0x08:0x45
+
+# Olog
+R:538:0x05:0x54
+
+# Gravity hound
+R:540:0x02:0x5a
+
+# Acidic cytoplasm
+R:541:0x0d:0x6a
+
+# Ooze elemental
+R:545:0x0f:0x45
+
+# Young black dragon
+R:546:0x08:0x64
+
+# Xorn
+R:550:0x03:0x58
+
+# Colossus
+R:558:0x0b:0x67
+
+# Bodak
+R:566:0x08:0x75
+
+# Lorgan, Chief of the Easterlings
+R:573:0x0c:0x70
+
+# Chaos spawn
+R:574:0x07:0x65
+
+# Crypt thing
+R:577:0x0e:0x4c
+
+# Will o' the wisp
+R:582:0x0b:0x45
+
+# Crystal drake
+R:591:0x0e:0x64
+
+# Mature black dragon
+R:592:0x08:0x64
+
+# Draebor, the Imp
+R:595:0x05:0x75
+
+# Mother Hydra
+R:596:0x05:0x75
+
+# Death knight
+R:597:0x02:0x70
+
+# Time vortex
+R:599:0x0d:0x76
+
+# Shimmering vortex
+R:600:0x0a:0x76
+
+# Beholder
+R:603:0x05:0x65
+
+# Emperor wight
+R:604:0x0b:0x57
+
+# Vargo, Tyrant of Fire
+R:606:0x0c:0x45
+
+# Nether wraith
+R:612:0x0c:0x57
+
+# Waldern, King of Water
+R:615:0x02:0x45
+
+# Ettin
+R:621:0x0b:0x54
+
+# Night mare
+R:622:0x0a:0x71
+
+# Ancient black dragon
+R:624:0x08:0x44
+
+# Shadowfax, steed of Gandalf
+R:629:0x09:0x71
+
+# Spirit troll
+R:630:0x0a:0x47
+
+# War troll
+R:631:0x05:0x54
+
+# Rotting quylthulg
+R:633:0x0f:0x51
+
+# 9-headed hydra
+R:635:0x03:0x4d
+
+# Enchantress
+R:636:0x0b:0x70
+
+# Sorcerer
+R:638:0x03:0x70
+
+# Xaren
+R:639:0x0b:0x58
+
+# Medusa, the Gorgon
+R:642:0x03:0x6e
+
+# Death drake
+R:643:0x07:0x44
+
+# Great crystal drake
+R:646:0x0e:0x44
+
+# Wyrd sister
+R:647:0x0b:0x70
+
+# Death quasit
+R:649:0x01:0x75
+
+# Fallen angel
+R:652:0x08:0x41
+
+# Judge Fire
+R:654:0x04:0x73
+
+# Master lich
+R:658:0x09:0x4c
+
+# Eol, the Dark Elf
+R:660:0x02:0x68
+
+# Undead beholder
+R:664:0x02:0x65
+
+# Dark young of Shub-Niggurath
+R:677:0x08:0x55
+
+# Dreadmaster
+R:690:0x03:0x47
+
+# Scatha the Worm
+R:692:0x01:0x44
+
+# Zoth-Ommog
+R:695:0x07:0x52
+
+# Grand master thief
+R:696:0x0e:0x70
+
+# Leprechaun fanatic
+R:700:0x08:0x68
+
+# Dracolich
+R:701:0x0e:0x44
+
+# Greater titan
+R:702:0x0a:0x50
+
+# Dracolisk
+R:703:0x04:0x44
+
+# Itangast the Fire Drake
+R:710:0x04:0x44
+
+# Glaurung, Father of the Dragons
+R:715:0x04:0x44
+
+# Behemoth
+R:716:0x05:0x48
+
+# Garm, Guardian of Hel
+R:717:0x07:0x43
+
+# Maulotaur
+R:723:0x07:0x48
+
+# Nether hound
+R:724:0x08:0x5a
+
+# Time hound
+R:725:0x0d:0x5a
+
+# Demonic quylthulg
+R:727:0x0c:0x51
+
+# Ulik the Troll
+R:729:0x03:0x54
+
+# Baphomet the Minotaur Lord
+R:730:0x08:0x48
+
+# Hell knight
+R:731:0x02:0x70
+
+# Old Sorcerer
+R:738:0x0a:0x70
+
+# Keeper of Secrets
+R:746:0x0a:0x48
+
+# Hand druj
+R:748:0x08:0x73
+
+# Eye druj
+R:749:0x08:0x73
+
+# Skull druj
+R:750:0x08:0x73
+
+# Aether vortex
+R:752:0x0e:0x76
+
+# Draconic quylthulg
+R:759:0x0d:0x51
+
+# Fundin Bluecloak
+R:762:0x0d:0x68
+
+# Gabriel, the Messenger
+R:769:0x0a:0x41
+
+# Artsi, the Champion of Chaos
+R:770:0x0d:0x68
+
+# The Cat Lord
+R:777:0x04:0x66
+
+# Vlad Dracula, Prince of Darkness
+R:780:0x06:0x56
+
+# Great Wyrm of Law
+R:784:0x09:0x44
+
+# Great Wyrm of Balance
+R:785:0x02:0x44
+
+# Glaaki
+R:788:0x05:0x7e
+
+# Greater draconic quylthulg
+R:801:0x05:0x51
+
+# Greater rotting quylthulg
+R:802:0x07:0x51
+
+# Omarax the Eye Tyrant
+R:805:0x0b:0x65
+
+# Greater Balrog
+R:807:0x0c:0x55
+
+# Aether hound
+R:811:0x0e:0x5a
+
+# Yig, Father of Serpents
+R:814:0x05:0x4a
+
+# Hela, Queen of the Dead
+R:817:0x05:0x70
+
+# Master quylthulg
+R:821:0x06:0x51
+
+# Qlzqqlzuup, the Lord of Flesh
+R:822:0x0e:0x51
+
+# F'lar, rider of the Bronze Mnementh
+R:824:0x08:0x44
+
+# Cyaegha
+R:826:0x08:0x65
+
+# Pazuzu, Lord of Air
+R:827:0x01:0x55
+
+# Cantoras, the Skeletal Lord
+R:830:0x0e:0x73
+
+# Godzilla
+R:832:0x05:0x52
+
+# Loki, the Trickster
+R:835:0x05:0x50
+
+# Lungorthin, the Balrog of White Fire
+R:839:0x01:0x55
+
+# Draugluin, Sire of All Werewolves
+R:840:0x07:0x43
+
+# Vecna, the Emperor Lich
+R:844:0x0b:0x4c
+
+# Great Wyrm of Power
+R:847:0x0b:0x44
+
+# Nodens, Lord of the Great Abyss
+R:849:0x01:0x50
+
+# Jormungand the Midgard Serpent
+R:854:0x05:0x4a
+
+# The Destroyer
+R:855:0x09:0x67
+
+# Gothmog, the High Captain of Balrogs
+R:856:0x0c:0x55
+
+# Sauron, the Sorcerer
+R:860:0x03:0x70
+
+# Human Warrior
+R:863:0x01:0x70
+
+# Elven archer
+R:864:0x0d:0x68
+
+# Death
+R:875:0x02:0x47
+
+# Famine
+R:876:0x02:0x47
+
+# Pestilence
+R:877:0x02:0x47
+
+# War
+R:878:0x02:0x47
+
+# Giant piranha
+R:884:0x0d:0x7e
+
+# Octopus
+R:891:0x02:0x7e
+
+# Giant octopus
+R:892:0x0a:0x7e
+
+# Drowned soul
+R:895:0x02:0x47
+
+# Devilfish
+R:920:0x0a:0x7e
+
+# Undead devilfish
+R:921:0x0a:0x7e
+
+# Gandalf the Grey
+R:935:0x0a:0x70
+
+# Brown Firelizard
+R:942:0x0f:0x64
+
+# Bronze Firelizard
+R:943:0x01:0x64
+
+# Elder aranea
+R:964:0x04:0x53
+
+# Bullroarer the Hobbit
+R:985:0x06:0x68
+
+# Hezrou
+R:992:0x0a:0x55
+
+# Glabrezu
+R:993:0x03:0x55
+
+# Lesser Balrog
+R:996:0x0c:0x55
+
+# The Rat King
+R:1006:0x07:0x72
+
+# Vort the Kobold Queen
+R:1007:0x06:0x6b
+
+# Fire Phantom
+R:1009:0x0c:0x47
+
+# Bone golem
+R:1013:0x08:0x67
+
+# Snake of Yig
+R:1014:0x04:0x4a
+
+# Cultist
+R:1017:0x0e:0x70
+
+# Cult leader
+R:1018:0x06:0x70
+
+# Green dragon worm
+R:1025:0x05:0x77
+
+# Red dragon worm
+R:1027:0x04:0x77
+
diff --git a/lib/pref/colors.prf b/lib/pref/colors.prf
new file mode 100644
index 00000000..fa4d3f05
--- /dev/null
+++ b/lib/pref/colors.prf
@@ -0,0 +1,53 @@
+
+
+# Color redefinitions
+
+# Color 'White'
+V:1:0x07:0xFF:0xFF:0xFF
+
+# Color 'Slate'
+V:2:0x03:0x8C:0x8C:0x8C
+
+# Color 'Orange'
+V:3:0x0C:0xFF:0x77:0x00
+
+# Color 'Red'
+V:4:0x04:0xC9:0x00:0x00
+
+# Color 'Green'
+V:5:0x02:0x00:0x86:0x45
+
+# Color 'Blue'
+V:6:0x01:0x00:0x00:0xE3
+
+# Color 'Umber'
+V:7:0x06:0x8E:0x45:0x00
+
+# Color 'Light Dark'
+V:8:0x08:0x50:0x50:0x50
+
+# Color 'Light Slate'
+V:9:0x0B:0xD1:0xD1:0xD1
+
+# Color 'Violet'
+V:10:0x05:0xC0:0x00:0xAF
+
+# Color 'Yellow'
+V:11:0x0E:0xFF:0xFF:0x00
+
+# Color 'Light Red'
+V:12:0x0D:0xFF:0x00:0x68
+
+# Color 'Light Green'
+V:13:0x0A:0x00:0xFF:0x00
+
+# Color 'Light Blue'
+V:14:0x09:0x51:0xDD:0xFF
+
+# Color 'Light Umber'
+V:15:0x06:0xD7:0x8E:0x45
+
+
+
+
+
diff --git a/lib/pref/font-ami.prf b/lib/pref/font-ami.prf
new file mode 100644
index 00000000..1c06dbb3
--- /dev/null
+++ b/lib/pref/font-ami.prf
@@ -0,0 +1,28 @@
+# File: font-ami.prf
+
+#
+# This file contains text remapping data
+# currently used in the Amiga version.
+#
+# Lars Haugseth <larshau@ifi.uio.no>
+#
+
+
+# Color palette - Text
+V:0:0x01:0x00:0x00:0x00
+V:1:0x01:0xFF:0xFF:0xFF
+V:2:0x01:0xC7:0xC7:0xC7
+V:3:0x01:0xFF:0x92:0x00
+V:4:0x01:0xFF:0x00:0x00
+V:5:0x01:0x00:0xCD:0x00
+V:6:0x01:0x00:0x00:0xFE
+V:7:0x01:0xC8:0x64:0x00
+V:8:0x01:0x8A:0x8A:0x8A
+V:9:0x01:0xE0:0xE0:0xE0
+V:10:0x01:0xA5:0x00:0xFF
+V:11:0x01:0xFF:0xFD:0x00
+V:12:0x01:0xFF:0x00:0xBC
+V:13:0x01:0x00:0xFF:0x00
+V:14:0x01:0x00:0xC8:0xFF
+V:15:0x01:0xFF:0xCC:0x80
+
diff --git a/lib/pref/font-dos.prf b/lib/pref/font-dos.prf
new file mode 100644
index 00000000..9cf1866f
--- /dev/null
+++ b/lib/pref/font-dos.prf
@@ -0,0 +1,8 @@
+# File: font-dos.prf
+
+#
+# This file is used by Angband (when it was compiled using "main-dos.c")
+# to specify simple attr/char remappings using a standard font, allowing
+# the use of special pseudo-graphic pictures for walls and such.
+#
+
diff --git a/lib/pref/font-ibm.prf b/lib/pref/font-ibm.prf
new file mode 100644
index 00000000..5111f639
--- /dev/null
+++ b/lib/pref/font-ibm.prf
@@ -0,0 +1,363 @@
+# File: font-ibm.prf
+
+#
+# This file is used by Angband (when it was compiled using "main-ibm.c")
+# to specify simple attr/char remappings using a standard font, allowing
+# the use of the IBM's built in pseudo-graphic pictures for walls and such.
+#
+
+
+##### Feature attr/char definitions #####
+
+# open floor
+F:1:0x01/0xF9
+
+# fountain
+F:2:0x01/0xF4
+
+# fountain
+F:15:0x08/0xF4
+
+# web
+F:16:0x0B/0xB2
+
+# secret door
+F:48:0x01/0xB1
+
+# magma vein
+F:50:0x02/0xB0
+
+# quartz vein
+F:51:0x01/0xB0
+
+# magma vein
+F:52:0x02/0xB0
+
+# quartz vein
+F:53:0x01/0xB0
+
+# magma vein with treasure
+F:54:0x03/0xB0
+
+# quartz vein with treasure
+F:55:0x03/0xB0
+
+# granite wall
+F:56:0x01/0xB1
+
+# granite wall
+F:57:0x01/0xB1
+
+# granite wall
+F:58:0x01/0xB1
+
+# granite wall
+F:59:0x01/0xB1
+
+# permanent wall
+F:60:0x01/0xB1
+
+# permanent wall
+F:61:0x01/0xB1
+
+# permanent wall
+F:62:0x01/0xB1
+
+# permanent wall
+F:63:0x01/0xB1
+
+# Straight Road startpoint
+F:65:0x01/0xB2
+
+# section of the Straight Road
+F:66:0x0E/0xB2
+
+# section of the Straight Road
+F:67:0x06/0xB2
+
+# section of the Straight Road
+F:68:0x0E/0xB2
+
+# section of the Straight Road
+F:69:0x06/0xB2
+
+# section of the Straight Road
+F:70:0x09/0xB2
+
+# section of the Straight Road (discharged)
+F:71:0x09/0xB2
+
+# Straight Road exit
+F:72:0x01/0xB2
+
+# corrupted section of the Straight Road
+F:73:0x08/0xB2
+
+# permanent wall
+F:75:0x01/0xB1
+
+# permanent wall
+F:76:0x01/0xB1
+
+# permanent wall
+F:77:0x01/0xB1
+
+# permanent wall
+F:78:0x01/0xB1
+
+# stream of shallow water
+F:84:0x0E/0xF7
+
+# pool of deep lava
+F:85:0x0C/0xF7
+
+# stream of shallow lava
+F:86:0x04/0xF7
+
+# dark pit
+F:87:0x08/0xDB
+
+# dirt
+F:88:0x0F/0xF9
+
+# patch of grass
+F:89:0x0D/0xF9
+
+# ice
+F:90:0x09/0xDB
+
+# sand
+F:91:0x0B/0xF9
+
+# dead tree
+F:92:0x08/0x9D
+
+# ash
+F:93:0x02/0xF9
+
+# mud
+F:94:0x07/0xF9
+
+# ice wall
+F:95:0x09/0xB1
+
+# tree
+F:96:0x0D/0x9D
+
+# sandwall
+F:98:0x0B/0xB1
+
+# sandwall
+F:99:0x0B/0xB1
+
+# sandwall with treasure
+F:100:0x03/0xB1
+
+# nether mist
+F:102:0x0A/0xB2
+
+# Void Jumpgate
+F:160:0x0A/0xEF
+
+# Altar of Being
+F:161:0x09/0xD2
+
+# Altar of Winds
+F:162:0x0E/0xD2
+
+# Altar of Force
+F:163:0x0C/0xD2
+
+# Altar of Darkness
+F:164:0x08/0xD2
+
+# floor
+F:172:0x01/0xF9
+
+# Underground Tunnel
+F:173:0x02/0xB0
+
+# stream of tainted water
+F:174:0x07/0xF7
+
+# Void Jumpgate
+F:176:0x0A/0xEF
+
+# lava wall
+F:177:0x0C/0xB1
+
+# Great Fire
+F:178:0x0A/0xF7
+
+# field
+F:181:0x05/0xF9
+
+# Ekkaia, the Encircling Sea
+F:182:0x06/0xF7
+
+# pool of deep water
+F:187:0x06/0xF7
+
+# glass wall
+F:188:0x0E/0xDB
+
+# illusion wall
+F:189:0x01/0xB1
+
+# Grass roof
+F:190:0x0B/0xB1
+
+# grass roof top
+F:191:0x0B/0xB1
+
+# grass roof chimney
+F:192:0x0B/0xB1
+
+# brick roof
+F:193:0x04/0xB1
+
+# brick roof top
+F:194:0x04/0xB1
+
+# brick roof chimney
+F:195:0x04/0xB1
+
+# window
+F:196:0x01/0x4F
+
+# small window
+F:197:0x01/0x6F
+
+# rain barrel
+F:198:0x01/0xB1
+
+# cobblestone road
+F:200:0x01/0xF9
+
+# cobblestone with outlet
+F:201:0x01/0xF9
+
+# small tree
+F:202:0x05/0x9D
+
+# Underground Tunnel
+F:204:0x0F/0xB0
+
+# a blazing fire
+F:205:0x0B/0xF7
+
+# rocky ground
+F:207:0x02/0xF9
+
+# cloud-like vapour
+F:208:0x09/0xB2
+
+# condensing water
+F:209:0x0E/0xF7
+
+# dense mist
+F:210:0x01/0xB2
+
+# hail-stone wall
+F:211:0x09/0xB1
+
+
+##### Monster attr/char definitions #####
+
+# Space monster
+R:144:0x00/0xF9
+
+# Old Man Willow
+R:206:0x02/0x9D
+
+# Lurker
+R:247:0x01/0xF9
+
+# Tangleweed
+R:248:0x05/0x9D
+
+# Poison ivy
+R:266:0x05/0x9D
+
+# Giant Venus Flytrap
+R:317:0x05/0x9D
+
+# Stunwall
+R:326:0x09/0xB1
+
+# Huorn
+R:329:0x05/0x9D
+
+# Landmine
+R:333:0x01/0xF9
+
+# Livingstone
+R:336:0x09/0xB1
+
+# Vampiric mist
+R:365:0x08/0xB2
+
+# It
+R:393:0x09/0xF9
+
+# Xiclotlan
+R:396:0x08/0x9D
+
+# Roper
+R:426:0x08/0xB1
+
+# Lesser wall monster
+R:448:0x09/0xB1
+
+# Chaos tile
+R:458:0x0A/0xF9
+
+# Mist giant
+R:552:0x0E/0xB2
+
+# Trapper
+R:565:0x01/0xF9
+
+# Time bomb
+R:567:0x01/0xF9
+
+# Weird fume
+R:625:0x0A/0xB2
+
+# Colour out of space
+R:678:0x0A/0xF9
+
+# Ent
+R:708:0x0D/0x9D
+
+# Quickbeam, the Ent
+R:714:0x0D/0x9D
+
+# Greater wall monster
+R:718:0x09/0xB1
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0x08/0xB1
+
+# Null, the Living Void
+R:803:0x00/0xF9
+
+# Rocket mine
+R:870:0x0C/0xF9
+
+# Bouncing mine
+R:871:0x0E/0xF9
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0x0D/0x9D
+
+# The Glass Golem
+R:1033:0x09/0xB1
+
+# Golgarach, the Living Rock
+R:1035:0x09/0xB1
+
+# Spirit
+R:1053:0x09/0xF9
+
+
diff --git a/lib/pref/font-mac.new b/lib/pref/font-mac.new
new file mode 100644
index 00000000..0d6dd8e1
--- /dev/null
+++ b/lib/pref/font-mac.new
@@ -0,0 +1,108 @@
+# File: font-mac.prf
+
+#
+# This file is used by Angband (when it was compiled using "main-mac.c")
+# to specify simple attr/char remappings using a standard font, allowing
+# the use of the Macintosh's special characters for some things.
+#
+
+
+##### Feature attr/char definitions #####
+
+# fountain
+F:2:0x01/0xBA
+
+# fountain
+F:15:0x08/0xBA
+
+# stream of shallow water
+F:84:0x0E/0xC5
+
+# pool of deep lava
+F:85:0x0C/0xC5
+
+# stream of shallow lava
+F:86:0x04/0xC5
+
+# dead tree
+F:92:0x08/0xB4
+
+# tree
+F:96:0x0D/0xB4
+
+# mountain chain
+F:97:0x0F/0xC6
+
+# high mountain chain
+F:101:0x09/0xC6
+
+# Void Jumpgate
+F:160:0x0A/0xBD
+
+# Altar of Being
+F:161:0x09/0xB9
+
+# Altar of Winds
+F:162:0x0E/0xB9
+
+# Altar of Force
+F:163:0x0C/0xB9
+
+# Altar of Darkness
+F:164:0x08/0xB9
+
+# stream of tainted water
+F:174:0x07/0xC5
+
+# Void Jumpgate
+F:176:0x0A/0xBD
+
+# Great Fire
+F:178:0x0A/0xC5
+
+# Ekkaia, the Encircling Sea
+F:182:0x06/0xC5
+
+# pool of deep water
+F:187:0x06/0xC5
+
+# small tree
+F:202:0x05/0xB4
+
+# a blazing fire
+F:205:0x0B/0xC5
+
+# condensing water
+F:209:0x0E/0xC5
+
+
+##### Monster attr/char definitions #####
+
+# Old Man Willow
+R:206:0x02/0xB4
+
+# Tangleweed
+R:248:0x05/0xB4
+
+# Poison ivy
+R:266:0x05/0xB4
+
+# Giant Venus Flytrap
+R:317:0x05/0xB4
+
+# Huorn
+R:329:0x05/0xB4
+
+# Xiclotlan
+R:396:0x08/0xB4
+
+# Ent
+R:708:0x0D/0xB4
+
+# Quickbeam, the Ent
+R:714:0x0D/0xB4
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0x0D/0xB4
+
+
diff --git a/lib/pref/font-mac.prf b/lib/pref/font-mac.prf
new file mode 100644
index 00000000..d15c2e47
--- /dev/null
+++ b/lib/pref/font-mac.prf
@@ -0,0 +1,18 @@
+# File: font.prf
+
+#
+# This file defines special attr/char mappings for use in "text" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+## OPTION: Display "veins" (white "%") as "normal walls" (white "#")
+## This replaces the old method of setting "notice_seams" to false,
+## which no longer works as of Angband 2.7.9, for various reasons.
+#
+#F:50:1/35
+#F:51:1/35
+#F:52:1/35
+#F:53:1/35
+
diff --git a/lib/pref/font-win.prf b/lib/pref/font-win.prf
new file mode 100644
index 00000000..00475916
--- /dev/null
+++ b/lib/pref/font-win.prf
@@ -0,0 +1,298 @@
+# File: font-win.prf
+
+#
+# This file is used by Angband (when it was compiled using "main-win.c")
+# to specify simple attr/char remappings using a standard font, allowing
+# the use of special pseudo-graphic pictures for walls and such.
+#
+# Note that this file is extremely similar to the file "font-ibm.prf",
+# but it uses different codes, since it uses the special pseudo-graphic
+# symbols defined in the "lib/xtra/font/*.FON" files, and there is only
+# one special wall type, so we have to use special "colors".
+#
+
+
+##### Feature attr/char definitions #####
+
+# open floor
+F:1:0x01/0x1F
+
+# web
+F:16:0x0B/0x7F
+
+# secret door
+F:48:0x01/0x7F
+
+# magma vein
+F:50:0x02/0x7F
+
+# quartz vein
+F:51:0x09/0x7F
+
+# magma vein
+F:52:0x02/0x7F
+
+# quartz vein
+F:53:0x09/0x7F
+
+# granite wall
+F:56:0x01/0x7F
+
+# granite wall
+F:57:0x01/0x7F
+
+# granite wall
+F:58:0x01/0x7F
+
+# granite wall
+F:59:0x01/0x7F
+
+# permanent wall
+F:60:0x01/0x7F
+
+# permanent wall
+F:61:0x01/0x7F
+
+# permanent wall
+F:62:0x01/0x7F
+
+# permanent wall
+F:63:0x01/0x7F
+
+# permanent wall
+F:75:0x01/0x7F
+
+# permanent wall
+F:76:0x01/0x7F
+
+# permanent wall
+F:77:0x01/0x7F
+
+# permanent wall
+F:78:0x01/0x7F
+
+# pool of deep lava
+F:85:0x0C/0x1F
+
+# stream of shallow lava
+F:86:0x04/0x1F
+
+# dark pit
+F:87:0x08/0x7F
+
+# dirt
+F:88:0x0F/0x1F
+
+# patch of grass
+F:89:0x0D/0x1F
+
+# ice
+F:90:0x09/0x1F
+
+# sand
+F:91:0x0B/0x1F
+
+# dead tree
+F:92:0x08/0x7F
+
+# ash
+F:93:0x02/0x1F
+
+# mud
+F:94:0x07/0x1F
+
+# ice wall
+F:95:0x09/0x7F
+
+# tree
+F:96:0x0D/0x7F
+
+# sandwall
+F:98:0x0B/0x7F
+
+# sandwall
+F:99:0x0B/0x7F
+
+# sandwall with treasure
+F:100:0x03/0x7F
+
+# nether mist
+F:102:0x0A/0x7F
+
+# Underground Tunnel
+F:173:0x02/0x7F
+
+# lava wall
+F:177:0x0C/0x7F
+
+# Great Fire
+F:178:0x0A/0x7F
+
+# field
+F:181:0x05/0x1F
+
+# glass wall
+F:188:0x0E/0x1F
+
+# illusion wall
+F:189:0x01/0x7F
+
+# Grass roof
+F:190:0x0B/0x7F
+
+# grass roof top
+F:191:0x0B/0x7F
+
+# grass roof chimney
+F:192:0x0B/0x7F
+
+# brick roof
+F:193:0x04/0x7F
+
+# brick roof top
+F:194:0x04/0x7F
+
+# brick roof chimney
+F:195:0x04/0x7F
+
+# rain barrel
+F:198:0x01/0x7F
+
+# cobblestone road
+F:200:0x01/0x1F
+
+# cobblestone with outlet
+F:201:0x01/0x1F
+
+# small tree
+F:202:0x05/0x7F
+
+# Underground Tunnel
+F:204:0x0F/0x7F
+
+# a blazing fire
+F:205:0x0B/0x7F
+
+# rocky ground
+F:207:0x02/0x1F
+
+# cloud-like vapour
+F:208:0x09/0x1F
+
+# dense mist
+F:210:0x01/0x7F
+
+# hail-stone wall
+F:211:0x09/0x7F
+
+# copper pillar
+F:213:0x07/0x7F
+
+# ethereal wall
+F:214:0x01/0x1F
+
+# glacial wall
+F:215:0x0E/0x7F
+
+# battlement
+F:216:0x01/0x7F
+
+##### Monster attr/char definitions #####
+
+# Space monster
+R:144:0x00/0x1F
+
+# Old Man Willow
+R:206:0x02/0x7F
+
+# Lurker
+R:247:0x01/0x1F
+
+# Tangleweed
+R:248:0x05/0x7F
+
+# Poison ivy
+R:266:0x05/0x7F
+
+# Giant Venus Flytrap
+R:317:0x05/0x7F
+
+# Stunwall
+R:326:0x09/0x7F
+
+# Huorn
+R:329:0x05/0x7F
+
+# Landmine
+R:333:0x01/0x1F
+
+# Livingstone
+R:336:0x09/0x7F
+
+# Vampiric mist
+R:365:0x08/0x7F
+
+# It
+R:393:0x09/0x1F
+
+# Xiclotlan
+R:396:0x08/0x7F
+
+# Roper
+R:426:0x08/0x7F
+
+# Lesser wall monster
+R:448:0x09/0x7F
+
+# Chaos tile
+R:458:0x0A/0x1F
+
+# Mist giant
+R:552:0x0E/0x7F
+
+# Trapper
+R:565:0x01/0x1F
+
+# Time bomb
+R:567:0x01/0x1F
+
+# Weird fume
+R:625:0x0A/0x7F
+
+# Colour out of space
+R:678:0x0A/0x1F
+
+# Ent
+R:708:0x0D/0x7F
+
+# Quickbeam, the Ent
+R:714:0x0D/0x7F
+
+# Greater wall monster
+R:718:0x09/0x7F
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0x08/0x7F
+
+# Null, the Living Void
+R:803:0x00/0x1F
+
+# Rocket mine
+R:870:0x0C/0x1F
+
+# Bouncing mine
+R:871:0x0E/0x1F
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0x0D/0x7F
+
+# The Glass Golem
+R:1033:0x09/0x7F
+
+# Golgarach, the Living Rock
+R:1035:0x09/0x7F
+
+# Spirit
+R:1053:0x09/0x1F
+
+
diff --git a/lib/pref/font-x11.prf b/lib/pref/font-x11.prf
new file mode 100644
index 00000000..57828a56
--- /dev/null
+++ b/lib/pref/font-x11.prf
@@ -0,0 +1,22 @@
+# File: font-x11.prf
+
+
+# Color palette - Text
+
+V:0:0x01:0x00:0x00:0x00
+V:1:0x01:0xFF:0xFF:0xFF
+V:2:0x01:0xC7:0xC7:0xC7
+V:3:0x01:0xFF:0x92:0x00
+V:4:0x01:0xC0:0x00:0x00
+V:5:0x01:0x00:0xC0:0x00
+V:6:0x01:0x00:0x00:0xFE
+V:7:0x01:0xC8:0x64:0x00
+V:8:0x01:0x8A:0x8A:0x8A
+V:9:0x01:0xE0:0xE0:0xE0
+V:10:0x01:0xA5:0x00:0xFF
+V:11:0x01:0xFF:0xFD:0x00
+V:12:0x01:0xFF:0x40:0x40
+V:13:0x01:0x00:0xFF:0x00
+V:14:0x01:0x00:0xC8:0xFF
+V:15:0x01:0xFF:0xCC:0x80
+
diff --git a/lib/pref/font-xxx.prf b/lib/pref/font-xxx.prf
new file mode 100644
index 00000000..298a8643
--- /dev/null
+++ b/lib/pref/font-xxx.prf
@@ -0,0 +1,472 @@
+# File: font-xxx.prf
+
+#
+# This file defines special attr/char mappings for use in "text" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+##### Special attr/char values #####
+
+
+## # Unused (@)
+## S:0x00:0x00/0x40
+## S:0x01:0x01/0x40
+## S:0x02:0x02/0x40
+## S:0x03:0x03/0x40
+## S:0x04:0x04/0x40
+## S:0x05:0x05/0x40
+## S:0x06:0x06/0x40
+## S:0x07:0x07/0x40
+## S:0x08:0x08/0x40
+## S:0x09:0x09/0x40
+## S:0x0A:0x0A/0x40
+## S:0x0B:0x0B/0x40
+## S:0x0C:0x0C/0x40
+## S:0x0D:0x0D/0x40
+## S:0x0E:0x0E/0x40
+## S:0x0F:0x0F/0x40
+
+## # Unused (@)
+## S:0x10:0x00/0x40
+## S:0x11:0x01/0x40
+## S:0x12:0x02/0x40
+## S:0x13:0x03/0x40
+## S:0x14:0x04/0x40
+## S:0x15:0x05/0x40
+## S:0x16:0x06/0x40
+## S:0x17:0x07/0x40
+## S:0x18:0x08/0x40
+## S:0x19:0x09/0x40
+## S:0x1A:0x0A/0x40
+## S:0x1B:0x0B/0x40
+## S:0x1C:0x0C/0x40
+## S:0x1D:0x0D/0x40
+## S:0x1E:0x0E/0x40
+## S:0x1F:0x0F/0x40
+
+## # Unused (@)
+## S:0x20:0x00/0x40
+## S:0x21:0x01/0x40
+## S:0x22:0x02/0x40
+## S:0x23:0x03/0x40
+## S:0x24:0x04/0x40
+## S:0x25:0x05/0x40
+## S:0x26:0x06/0x40
+## S:0x27:0x07/0x40
+## S:0x28:0x08/0x40
+## S:0x29:0x09/0x40
+## S:0x2A:0x0A/0x40
+## S:0x2B:0x0B/0x40
+## S:0x2C:0x0C/0x40
+## S:0x2D:0x0D/0x40
+## S:0x2E:0x0E/0x40
+## S:0x2F:0x0F/0x40
+
+# Spells (*)
+S:0x30:0x00/0x2A
+S:0x31:0x01/0x2A
+S:0x32:0x02/0x2A
+S:0x33:0x03/0x2A
+S:0x34:0x04/0x2A
+S:0x35:0x05/0x2A
+S:0x36:0x06/0x2A
+S:0x37:0x07/0x2A
+S:0x38:0x08/0x2A
+S:0x39:0x09/0x2A
+S:0x3A:0x0A/0x2A
+S:0x3B:0x0B/0x2A
+S:0x3C:0x0C/0x2A
+S:0x3D:0x0D/0x2A
+S:0x3E:0x0E/0x2A
+S:0x3F:0x0F/0x2A
+
+# Spells (|)
+S:0x40:0x00/0x7C
+S:0x41:0x01/0x7C
+S:0x42:0x02/0x7C
+S:0x43:0x03/0x7C
+S:0x44:0x04/0x7C
+S:0x45:0x05/0x7C
+S:0x46:0x06/0x7C
+S:0x47:0x07/0x7C
+S:0x48:0x08/0x7C
+S:0x49:0x09/0x7C
+S:0x4A:0x0A/0x7C
+S:0x4B:0x0B/0x7C
+S:0x4C:0x0C/0x7C
+S:0x4D:0x0D/0x7C
+S:0x4E:0x0E/0x7C
+S:0x4F:0x0F/0x7C
+
+# Spells (-)
+S:0x50:0x00/0x2D
+S:0x51:0x01/0x2D
+S:0x52:0x02/0x2D
+S:0x53:0x03/0x2D
+S:0x54:0x04/0x2D
+S:0x55:0x05/0x2D
+S:0x56:0x06/0x2D
+S:0x57:0x07/0x2D
+S:0x58:0x08/0x2D
+S:0x59:0x09/0x2D
+S:0x5A:0x0A/0x2D
+S:0x5B:0x0B/0x2D
+S:0x5C:0x0C/0x2D
+S:0x5D:0x0D/0x2D
+S:0x5E:0x0E/0x2D
+S:0x5F:0x0F/0x2D
+
+# Spells (/)
+S:0x60:0x00/0x2F
+S:0x61:0x01/0x2F
+S:0x62:0x02/0x2F
+S:0x63:0x03/0x2F
+S:0x64:0x04/0x2F
+S:0x65:0x05/0x2F
+S:0x66:0x06/0x2F
+S:0x67:0x07/0x2F
+S:0x68:0x08/0x2F
+S:0x69:0x09/0x2F
+S:0x6A:0x0A/0x2F
+S:0x6B:0x0B/0x2F
+S:0x6C:0x0C/0x2F
+S:0x6D:0x0D/0x2F
+S:0x6E:0x0E/0x2F
+S:0x6F:0x0F/0x2F
+
+# Spells (\)
+S:0x70:0x00/0x5C
+S:0x71:0x01/0x5C
+S:0x72:0x02/0x5C
+S:0x73:0x03/0x5C
+S:0x74:0x04/0x5C
+S:0x75:0x05/0x5C
+S:0x76:0x06/0x5C
+S:0x77:0x07/0x5C
+S:0x78:0x08/0x5C
+S:0x79:0x09/0x5C
+S:0x7A:0x0A/0x5C
+S:0x7B:0x0B/0x5C
+S:0x7C:0x0C/0x5C
+S:0x7D:0x0D/0x5C
+S:0x7E:0x0E/0x5C
+S:0x7F:0x0F/0x5C
+
+# Amulets (")
+S:0x80:0x00/0x22
+S:0x81:0x01/0x22
+S:0x82:0x02/0x22
+S:0x83:0x03/0x22
+S:0x84:0x04/0x22
+S:0x85:0x05/0x22
+S:0x86:0x06/0x22
+S:0x87:0x07/0x22
+S:0x88:0x08/0x22
+S:0x89:0x09/0x22
+S:0x8A:0x0A/0x22
+S:0x8B:0x0B/0x22
+S:0x8C:0x0C/0x22
+S:0x8D:0x0D/0x22
+S:0x8E:0x0E/0x22
+S:0x8F:0x0F/0x22
+
+# Rings (=)
+S:0x90:0x00/0x3D
+S:0x91:0x01/0x3D
+S:0x92:0x02/0x3D
+S:0x93:0x03/0x3D
+S:0x94:0x04/0x3D
+S:0x95:0x05/0x3D
+S:0x96:0x06/0x3D
+S:0x97:0x07/0x3D
+S:0x98:0x08/0x3D
+S:0x99:0x09/0x3D
+S:0x9A:0x0A/0x3D
+S:0x9B:0x0B/0x3D
+S:0x9C:0x0C/0x3D
+S:0x9D:0x0D/0x3D
+S:0x9E:0x0E/0x3D
+S:0x9F:0x0F/0x3D
+
+# Staffs (_)
+S:0xA0:0x00/0x5F
+S:0xA1:0x01/0x5F
+S:0xA2:0x02/0x5F
+S:0xA3:0x03/0x5F
+S:0xA4:0x04/0x5F
+S:0xA5:0x05/0x5F
+S:0xA6:0x06/0x5F
+S:0xA7:0x07/0x5F
+S:0xA8:0x08/0x5F
+S:0xA9:0x09/0x5F
+S:0xAA:0x0A/0x5F
+S:0xAB:0x0B/0x5F
+S:0xAC:0x0C/0x5F
+S:0xAD:0x0D/0x5F
+S:0xAE:0x0E/0x5F
+S:0xAF:0x0F/0x5F
+
+# Wands (-)
+S:0xB0:0x00/0x2D
+S:0xB1:0x01/0x2D
+S:0xB2:0x02/0x2D
+S:0xB3:0x03/0x2D
+S:0xB4:0x04/0x2D
+S:0xB5:0x05/0x2D
+S:0xB6:0x06/0x2D
+S:0xB7:0x07/0x2D
+S:0xB8:0x08/0x2D
+S:0xB9:0x09/0x2D
+S:0xBA:0x0A/0x2D
+S:0xBB:0x0B/0x2D
+S:0xBC:0x0C/0x2D
+S:0xBD:0x0D/0x2D
+S:0xBE:0x0E/0x2D
+S:0xBF:0x0F/0x2D
+
+# Rods (-)
+S:0xC0:0x00/0x2D
+S:0xC1:0x01/0x2D
+S:0xC2:0x02/0x2D
+S:0xC3:0x03/0x2D
+S:0xC4:0x04/0x2D
+S:0xC5:0x05/0x2D
+S:0xC6:0x06/0x2D
+S:0xC7:0x07/0x2D
+S:0xC8:0x08/0x2D
+S:0xC9:0x09/0x2D
+S:0xCA:0x0A/0x2D
+S:0xCB:0x0B/0x2D
+S:0xCC:0x0C/0x2D
+S:0xCD:0x0D/0x2D
+S:0xCE:0x0E/0x2D
+S:0xCF:0x0F/0x2D
+
+# Scrolls (?)
+S:0xD0:0x00/0x3F
+S:0xD1:0x01/0x3F
+S:0xD2:0x02/0x3F
+S:0xD3:0x03/0x3F
+S:0xD4:0x04/0x3F
+S:0xD5:0x05/0x3F
+S:0xD6:0x06/0x3F
+S:0xD7:0x07/0x3F
+S:0xD8:0x08/0x3F
+S:0xD9:0x09/0x3F
+S:0xDA:0x0A/0x3F
+S:0xDB:0x0B/0x3F
+S:0xDC:0x0C/0x3F
+S:0xDD:0x0D/0x3F
+S:0xDE:0x0E/0x3F
+S:0xDF:0x0F/0x3F
+
+# Potions (!)
+S:0xE0:0x00/0x21
+S:0xE1:0x01/0x21
+S:0xE2:0x02/0x21
+S:0xE3:0x03/0x21
+S:0xE4:0x04/0x21
+S:0xE5:0x05/0x21
+S:0xE6:0x06/0x21
+S:0xE7:0x07/0x21
+S:0xE8:0x08/0x21
+S:0xE9:0x09/0x21
+S:0xEA:0x0A/0x21
+S:0xEB:0x0B/0x21
+S:0xEC:0x0C/0x21
+S:0xED:0x0D/0x21
+S:0xEE:0x0E/0x21
+S:0xEF:0x0F/0x21
+
+# Food (,)
+S:0xF0:0x00/0x2C
+S:0xF1:0x01/0x2C
+S:0xF2:0x02/0x2C
+S:0xF3:0x03/0x2C
+S:0xF4:0x04/0x2C
+S:0xF5:0x05/0x2C
+S:0xF6:0x06/0x2C
+S:0xF7:0x07/0x2C
+S:0xF8:0x08/0x2C
+S:0xF9:0x09/0x2C
+S:0xFA:0x0A/0x2C
+S:0xFB:0x0B/0x2C
+S:0xFC:0x0C/0x2C
+S:0xFD:0x0D/0x2C
+S:0xFE:0x0E/0x2C
+S:0xFF:0x0F/0x2C
+
+
+
+##### Default inventory object colors #####
+
+
+# SKELETON
+E:1:0x01
+
+# BOTTLE
+E:2:0x01
+
+# FIRESTONE
+E:3:0x01
+
+# SPIKE
+E:5:0x02
+
+# CHEST
+E:7:0x02
+
+# JUNK
+E:11:0x01
+
+# BOOMERANG
+E:15:0x07
+
+# SHOT
+E:16:0x0F
+
+# ARROW
+E:17:0x0F
+
+# BOLT
+E:18:0x0F
+
+# BOW
+E:19:0x07
+
+# DIGGING
+E:20:0x02
+
+# HAFTED
+E:21:0x01
+
+# POLEARM
+E:22:0x01
+
+# SWORD
+E:23:0x01
+
+# AXE
+E:24:0x01
+
+# BOOTS
+E:30:0x0F
+
+# GLOVES
+E:31:0x0F
+
+# HELM
+E:32:0x0F
+
+# CROWN
+E:33:0x0F
+
+# SHIELD
+E:34:0x0F
+
+# CLOAK
+E:35:0x0F
+
+# SOFT_ARMOR
+E:36:0x02
+
+# HARD_ARMOR
+E:37:0x02
+
+# DRAG_ARMOR
+E:38:0x02
+
+# LITE
+E:39:0x0B
+
+# AMULET
+E:40:0x03
+
+# RING
+E:45:0x04
+
+# STAFF
+E:55:0x0F
+
+# WAND
+E:65:0x05
+
+# ROD
+E:66:0x0A
+
+# ROD TIP
+E:67:0x0A
+
+# SCROLL
+E:70:0x01
+
+# POTION
+E:71:0x0E
+
+# POTION2
+E:72:0x0E
+
+# FLASK
+E:77:0x0B
+
+# FOOD
+E:80:0x0F
+
+# BOOK
+E:111:0x0E
+
+# SYMBIOTIC_BOOK
+E:112:0x05
+
+# MUSIC_BOOK
+E:113:0x02
+
+# DRUID_BOOK
+E:114:0x0D
+
+# DAEMON BOOK
+E:115:0x03
+
+# POWER BATERIES
+E:4:0x0D
+
+# MAGE STAFFS
+E:6:0x0E
+
+# PARCHEMENT
+E:8:0x03
+
+# CORPSE
+E:9:0x0F
+
+# HYPNOS
+E:99:0x0F
+
+# RANDOM ARTIFACT
+E:102:0x0D
+
+# MUSICAL INSTRUMENT
+E:14:0x0A
+
+# EGG
+E:10:0x03
+
+# BASE RUNE
+E:104:0x0A
+
+# SECONDARY RUNE
+E:105:0x03
+
+# GOLD
+E:100:0x0B
+
+# TOOL
+E:12:0x0A
+
+# TRAPPING KIT
+E:46:0x08
+
+# TOTEM
+E:54:0x08
diff --git a/lib/pref/font.prf b/lib/pref/font.prf
new file mode 100644
index 00000000..505964bd
--- /dev/null
+++ b/lib/pref/font.prf
@@ -0,0 +1,60 @@
+# File: font.prf
+
+#
+# This file defines special attr/char mappings for use in "text" mode
+#
+# This file includes, if appropriate, various "sub-files"
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+## #
+## # OPTION: Display "veins" (white "%") as "normal walls" (white "#").
+## #
+## F:50:0x01/0x23
+## F:51:0x01/0x23
+## F:52:0x01/0x23
+## F:53:0x01/0x23
+
+
+##### Standard font file #####
+
+%:font-xxx.prf
+
+
+##### System Specific Subfiles #####
+
+?:[IOR [EQU $SYS xaw] [EQU $SYS x11] [EQU $SYS gtk]]
+%:font-x11.prf
+
+?:[EQU $SYS glu]
+%:font-glu.prf
+
+?:[EQU $SYS gcu]
+%:font-gcu.prf
+
+?:[EQU $SYS ami]
+%:font-ami.prf
+
+?:[EQU $SYS mac]
+%:font-mac.prf
+
+?:[EQU $SYS win]
+%:font-win.prf
+
+?:[EQU $SYS dos]
+%:font-dos.prf
+
+?:[EQU $SYS ibm]
+%:font-ibm.prf
+
+?:[EQU $SYS emx]
+%:font-emx.prf
+
+?:[EQU $SYS acn]
+%:font-acn.prf
+
+?:1
+
+
diff --git a/lib/pref/graf-ami.prf b/lib/pref/graf-ami.prf
new file mode 100644
index 00000000..d9b1b356
--- /dev/null
+++ b/lib/pref/graf-ami.prf
@@ -0,0 +1,64 @@
+# File: graf-ami.prf
+
+#
+# This file contains color definitions and
+# graphics remapping for the Amiga version.
+#
+# Lars Haugseth <larshau@ifi.uio.no>
+#
+
+
+# Color palette - Graphics
+V:0:0x01:0x00:0x00:0x00
+V:1:0x01:0xF0:0xE0:0xD0
+V:2:0x01:0x80:0x80:0x80
+V:3:0x01:0x50:0x50:0x50
+V:4:0x01:0xE0:0xB0:0x00
+V:5:0x01:0xC0:0xA0:0x70
+V:6:0x01:0x80:0x60:0x40
+V:7:0x01:0x40:0x30:0x20
+V:8:0x01:0x00:0xA0:0xF0
+V:9:0x01:0x00:0x00:0xF0
+V:10:0x01:0x00:0x00:0x70
+V:11:0x01:0xF0:0x00:0x00
+V:12:0x01:0x80:0x00:0x00
+V:13:0x01:0x90:0x00:0xB0
+V:14:0x01:0x00:0x60:0x10
+V:15:0x01:0x60:0xF0:0x40
+
+
+# Color palette - Text
+V:16:0x01:0x00:0x00:0x00
+V:17:0x01:0xFF:0xFF:0xFF
+V:18:0x01:0xC7:0xC7:0xC7
+V:19:0x01:0xFF:0x92:0x00
+V:20:0x01:0xFF:0x00:0x00
+V:21:0x01:0x00:0xCD:0x00
+V:22:0x01:0x00:0x00:0xFE
+V:23:0x01:0xC8:0x64:0x00
+V:24:0x01:0x8A:0x8A:0x8A
+V:25:0x01:0xE0:0xE0:0xE0
+V:26:0x01:0xA5:0x00:0xFF
+V:27:0x01:0xFF:0xFD:0x00
+V:28:0x01:0xFF:0x00:0xBC
+V:29:0x01:0x00:0xFF:0x00
+V:30:0x01:0x00:0xC8:0xFF
+V:31:0x01:0xFF:0xCC:0x80
+
+
+# Standard file
+%:graf-xxx.prf
+
+
+### Feature attr/char definitions
+
+# nothing
+F:0:0x01/0x20
+
+# open floor
+F:1:0x81/0x8E
+
+# invis trap
+F:2:0x81/0x8E
+
+
diff --git a/lib/pref/graf-dos.prf b/lib/pref/graf-dos.prf
new file mode 100644
index 00000000..41f38c76
--- /dev/null
+++ b/lib/pref/graf-dos.prf
@@ -0,0 +1,15 @@
+# File: graf-win.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+# Standard file
+?:[EQU $GRAF old]
+%:graf-xxx.prf
+
+# New tiles
+?:[EQU $GRAF new]
+%:graf-new.prf
diff --git a/lib/pref/graf-ibm.prf b/lib/pref/graf-ibm.prf
new file mode 100644
index 00000000..eee54a13
--- /dev/null
+++ b/lib/pref/graf-ibm.prf
@@ -0,0 +1,6237 @@
+# File: graf-ibm.prf
+
+# This file defines special attr/char mappings for use in the pseudo
+# graphics mode using character generator font redefinitions. It can
+# also be used with X11/XAW/GTK ports by generating a bdf (then pcf)
+# file from lib/xtra/angband.fnt. How to do so is beyond the scope of
+# this file.
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+##### Special attr/char values #####
+
+## # Unused
+## S:0x00:0x00/0x40
+## S:0x01:0x01/0x40
+## S:0x02:0x02/0x40
+## S:0x03:0x03/0x40
+## S:0x04:0x04/0x40
+## S:0x05:0x05/0x40
+## S:0x06:0x06/0x40
+## S:0x07:0x07/0x40
+## S:0x08:0x08/0x40
+## S:0x09:0x09/0x40
+## S:0x0A:0x0A/0x40
+## S:0x0B:0x0B/0x40
+## S:0x0C:0x0C/0x40
+## S:0x0D:0x0D/0x40
+## S:0x0E:0x0E/0x40
+## S:0x0F:0x0F/0x40
+
+## # Unused
+## S:0x10:0x00/0x40
+## S:0x11:0x01/0x40
+## S:0x12:0x02/0x40
+## S:0x13:0x03/0x40
+## S:0x14:0x04/0x40
+## S:0x15:0x05/0x40
+## S:0x16:0x06/0x40
+## S:0x17:0x07/0x40
+## S:0x18:0x08/0x40
+## S:0x19:0x09/0x40
+## S:0x1A:0x0A/0x40
+## S:0x1B:0x0B/0x40
+## S:0x1C:0x0C/0x40
+## S:0x1D:0x0D/0x40
+## S:0x1E:0x0E/0x40
+## S:0x1F:0x0F/0x40
+
+## # Unused
+## S:0x20:0x00/0x40
+## S:0x21:0x01/0x40
+## S:0x22:0x02/0x40
+## S:0x23:0x03/0x40
+## S:0x24:0x04/0x40
+## S:0x25:0x05/0x40
+## S:0x26:0x06/0x40
+## S:0x27:0x07/0x40
+## S:0x28:0x08/0x40
+## S:0x29:0x09/0x40
+## S:0x2A:0x0A/0x40
+## S:0x2B:0x0B/0x40
+## S:0x2C:0x0C/0x40
+## S:0x2D:0x0D/0x40
+## S:0x2E:0x0E/0x40
+## S:0x2F:0x0F/0x40
+
+# Spells (*)
+S:0x30:0x00/0x2A
+S:0x31:0x01/0x2A
+S:0x32:0x02/0x2A
+S:0x33:0x03/0x2A
+S:0x34:0x04/0x2A
+S:0x35:0x05/0x2A
+S:0x36:0x06/0x2A
+S:0x37:0x07/0x2A
+S:0x38:0x08/0x2A
+S:0x39:0x09/0x2A
+S:0x3A:0x0A/0x2A
+S:0x3B:0x0B/0x2A
+S:0x3C:0x0C/0x2A
+S:0x3D:0x0D/0x2A
+S:0x3E:0x0E/0x2A
+S:0x3F:0x0F/0x2A
+
+# Spells (|)
+S:0x40:0x00/0x7C
+S:0x41:0x01/0x7C
+S:0x42:0x02/0x7C
+S:0x43:0x03/0x7C
+S:0x44:0x04/0x7C
+S:0x45:0x05/0x7C
+S:0x46:0x06/0x7C
+S:0x47:0x07/0x7C
+S:0x48:0x08/0x7C
+S:0x49:0x09/0x7C
+S:0x4A:0x0A/0x7C
+S:0x4B:0x0B/0x7C
+S:0x4C:0x0C/0x7C
+S:0x4D:0x0D/0x7C
+S:0x4E:0x0E/0x7C
+S:0x4F:0x0F/0x7C
+
+# Spells (-)
+S:0x50:0x00/0x2D
+S:0x51:0x01/0x2D
+S:0x52:0x02/0x2D
+S:0x53:0x03/0x2D
+S:0x54:0x04/0x2D
+S:0x55:0x05/0x2D
+S:0x56:0x06/0x2D
+S:0x57:0x07/0x2D
+S:0x58:0x08/0x2D
+S:0x59:0x09/0x2D
+S:0x5A:0x0A/0x2D
+S:0x5B:0x0B/0x2D
+S:0x5C:0x0C/0x2D
+S:0x5D:0x0D/0x2D
+S:0x5E:0x0E/0x2D
+S:0x5F:0x0F/0x2D
+
+# Spells (/)
+S:0x60:0x00/0x2F
+S:0x61:0x01/0x2F
+S:0x62:0x02/0x2F
+S:0x63:0x03/0x2F
+S:0x64:0x04/0x2F
+S:0x65:0x05/0x2F
+S:0x66:0x06/0x2F
+S:0x67:0x07/0x2F
+S:0x68:0x08/0x2F
+S:0x69:0x09/0x2F
+S:0x6A:0x0A/0x2F
+S:0x6B:0x0B/0x2F
+S:0x6C:0x0C/0x2F
+S:0x6D:0x0D/0x2F
+S:0x6E:0x0E/0x2F
+S:0x6F:0x0F/0x2F
+
+# Spells (\)
+S:0x70:0x00/0x5C
+S:0x71:0x01/0x5C
+S:0x72:0x02/0x5C
+S:0x73:0x03/0x5C
+S:0x74:0x04/0x5C
+S:0x75:0x05/0x5C
+S:0x76:0x06/0x5C
+S:0x77:0x07/0x5C
+S:0x78:0x08/0x5C
+S:0x79:0x09/0x5C
+S:0x7A:0x0A/0x5C
+S:0x7B:0x0B/0x5C
+S:0x7C:0x0C/0x5C
+S:0x7D:0x0D/0x5C
+S:0x7E:0x0E/0x5C
+S:0x7F:0x0F/0x5C
+
+# Amulets
+S:0x80:0x00/0xE7
+S:0x81:0x01/0xE7
+S:0x82:0x02/0xE7
+S:0x83:0x03/0xE7
+S:0x84:0x04/0xE7
+S:0x85:0x05/0xE7
+S:0x86:0x06/0xE7
+S:0x87:0x07/0xE7
+S:0x88:0x08/0xE7
+S:0x89:0x09/0xE7
+S:0x8A:0x0A/0xE7
+S:0x8B:0x0B/0xE7
+S:0x8C:0x0C/0xE7
+S:0x8D:0x0D/0xE7
+S:0x8E:0x0E/0xE7
+S:0x8F:0x0F/0xE7
+
+# Rings
+S:0x90:0x00/0xE8
+S:0x91:0x01/0xE8
+S:0x92:0x02/0xE8
+S:0x93:0x03/0xE8
+S:0x94:0x04/0xE8
+S:0x95:0x05/0xE8
+S:0x96:0x06/0xE8
+S:0x97:0x07/0xE8
+S:0x98:0x08/0xE8
+S:0x99:0x09/0xE8
+S:0x9A:0x0A/0xE8
+S:0x9B:0x0B/0xE8
+S:0x9C:0x0C/0xE8
+S:0x9D:0x0D/0xE8
+S:0x9E:0x0E/0xE8
+S:0x9F:0x0F/0xE8
+
+# Staffs
+S:0xA0:0x00/0xE9
+S:0xA1:0x01/0xE9
+S:0xA2:0x02/0xE9
+S:0xA3:0x03/0xE9
+S:0xA4:0x04/0xE9
+S:0xA5:0x05/0xE9
+S:0xA6:0x06/0xE9
+S:0xA7:0x07/0xE9
+S:0xA8:0x08/0xE9
+S:0xA9:0x09/0xE9
+S:0xAA:0x0A/0xE9
+S:0xAB:0x0B/0xE9
+S:0xAC:0x0C/0xE9
+S:0xAD:0x0D/0xE9
+S:0xAE:0x0E/0xE9
+S:0xAF:0x0F/0xE9
+
+# Wands
+S:0xB0:0x00/0xEA
+S:0xB1:0x01/0xEA
+S:0xB2:0x02/0xEA
+S:0xB3:0x03/0xEA
+S:0xB4:0x04/0xEA
+S:0xB5:0x05/0xEA
+S:0xB6:0x06/0xEA
+S:0xB7:0x07/0xEA
+S:0xB8:0x08/0xEA
+S:0xB9:0x09/0xEA
+S:0xBA:0x0A/0xEA
+S:0xBB:0x0B/0xEA
+S:0xBC:0x0C/0xEA
+S:0xBD:0x0D/0xEA
+S:0xBE:0x0E/0xEA
+S:0xBF:0x0F/0xEA
+
+# Rods
+S:0xC0:0x00/0xEB
+S:0xC1:0x01/0xEB
+S:0xC2:0x02/0xEB
+S:0xC3:0x03/0xEB
+S:0xC4:0x04/0xEB
+S:0xC5:0x05/0xEB
+S:0xC6:0x06/0xEB
+S:0xC7:0x07/0xEB
+S:0xC8:0x08/0xEB
+S:0xC9:0x09/0xEB
+S:0xCA:0x0A/0xEB
+S:0xCB:0x0B/0xEB
+S:0xCC:0x0C/0xEB
+S:0xCD:0x0D/0xEB
+S:0xCE:0x0E/0xEB
+S:0xCF:0x0F/0xEB
+
+# Scrolls
+S:0xD0:0x00/0xEC
+S:0xD1:0x01/0xEC
+S:0xD2:0x02/0xEC
+S:0xD3:0x03/0xEC
+S:0xD4:0x04/0xEC
+S:0xD5:0x05/0xEC
+S:0xD6:0x06/0xEC
+S:0xD7:0x07/0xEC
+S:0xD8:0x08/0xEC
+S:0xD9:0x09/0xEC
+S:0xDA:0x0A/0xEC
+S:0xDB:0x0B/0xEC
+S:0xDC:0x0C/0xEC
+S:0xDD:0x0D/0xEC
+S:0xDE:0x0E/0xEC
+S:0xDF:0x0F/0xEC
+
+# Potions
+S:0xE0:0x00/0xED
+S:0xE1:0x01/0xED
+S:0xE2:0x02/0xED
+S:0xE3:0x03/0xED
+S:0xE4:0x04/0xED
+S:0xE5:0x05/0xED
+S:0xE6:0x06/0xED
+S:0xE7:0x07/0xED
+S:0xE8:0x08/0xED
+S:0xE9:0x09/0xED
+S:0xEA:0x0A/0xED
+S:0xEB:0x0B/0xED
+S:0xEC:0x0C/0xED
+S:0xED:0x0D/0xED
+S:0xEE:0x0E/0xED
+S:0xEF:0x0F/0xED
+
+# Food
+S:0xF0:0x00/0xEE
+S:0xF1:0x01/0xEE
+S:0xF2:0x02/0xEE
+S:0xF3:0x03/0xEE
+S:0xF4:0x04/0xEE
+S:0xF5:0x05/0xEE
+S:0xF6:0x06/0xEE
+S:0xF7:0x07/0xEE
+S:0xF8:0x08/0xEE
+S:0xF9:0x09/0xEE
+S:0xFA:0x0A/0xEE
+S:0xFB:0x0B/0xEE
+S:0xFC:0x0C/0xEE
+S:0xFD:0x0D/0xEE
+S:0xFE:0x0E/0xEE
+S:0xFF:0x0F/0xEE
+
+
+##### Feature attr/char definitions #####
+
+# nothing
+# F:0:0x01/0x20
+
+# open floor
+F:1:0x01/0xB5
+
+# fountain
+F:2:0x0E/0xC8
+
+# glyph of warding
+F:3:0x0B/0xC6
+
+# open door
+F:4:0x0F/0xB9
+
+# broken door
+F:5:0x0F/0xBA
+
+# up staircase
+F:6:0x01/0xB6
+
+# down staircase
+F:7:0x01/0xB7
+
+# quest entrance
+F:8:0x0B/0xB7
+
+# quest exit
+F:9:0x0B/0xB6
+
+# quest down level
+F:10:0x04/0xB7
+
+# quest up level
+F:11:0x04/0xB6
+
+# town exit
+F:12:0x05/0xB7
+
+# shaft down
+F:13:0x0F/0xB7
+
+# shaft up
+F:14:0x0F/0xB6
+
+# fountain
+F:15:0x08/0xC8
+
+# web
+F:16:0x0B/0xCA
+
+# trap
+F:17:0x01/0xC7
+
+# door
+F:32:0x0F/0xB8
+
+# locked door
+F:33:0x0F/0xB8
+
+# locked door
+F:34:0x0F/0xB8
+
+# locked door
+F:35:0x0F/0xB8
+
+# locked door
+F:36:0x0F/0xB8
+
+# locked door
+F:37:0x0F/0xB8
+
+# locked door
+F:38:0x0F/0xB8
+
+# locked door
+F:39:0x0F/0xB8
+
+# jammed door
+F:40:0x0F/0xB8
+
+# jammed door
+F:41:0x0F/0xB8
+
+# jammed door
+F:42:0x0F/0xB8
+
+# jammed door
+F:43:0x0F/0xB8
+
+# jammed door
+F:44:0x0F/0xB8
+
+# jammed door
+F:45:0x0F/0xB8
+
+# jammed door
+F:46:0x0F/0xB8
+
+# jammed door
+F:47:0x0F/0xB8
+
+# secret door
+F:48:0x02/0xBC
+
+# pile of rubble
+F:49:0x02/0xBB
+
+# magma vein
+F:50:0x01/0xBC
+
+# quartz vein
+F:51:0x09/0xBC
+
+# magma vein
+F:52:0x01/0xBC
+
+# quartz vein
+F:53:0x09/0xBC
+
+# magma vein with treasure
+F:54:0x03/0xBC
+
+# quartz vein with treasure
+F:55:0x03/0xBC
+
+# granite wall
+F:56:0x02/0xBC
+
+# granite wall
+F:57:0x02/0xBC
+
+# granite wall
+F:58:0x02/0xBC
+
+# granite wall
+F:59:0x02/0xBC
+
+# permanent wall
+F:60:0x02/0xBC
+
+# permanent wall
+F:61:0x02/0xBC
+
+# permanent wall
+F:62:0x02/0xBC
+
+# permanent wall
+F:63:0x02/0xBC
+
+# explosive rune
+F:64:0x0C/0xC6
+
+# Straight Road startpoint
+F:65:0x01/0xCA
+
+# section of the Straight Road
+F:66:0x0E/0xCA
+
+# section of the Straight Road
+F:67:0x06/0xCA
+
+# section of the Straight Road
+F:68:0x0E/0xCA
+
+# section of the Straight Road
+F:69:0x06/0xCA
+
+# section of the Straight Road
+F:70:0x09/0xCA
+
+# section of the Straight Road (discharged)
+F:71:0x09/0xCA
+
+# Straight Road exit
+F:72:0x01/0xCA
+
+# corrupted section of the Straight Road
+F:73:0x08/0xCA
+
+# Building
+F:74:0x0F/0xC5
+
+# permanent wall
+F:75:0x02/0xBC
+
+# permanent wall
+F:76:0x02/0xBC
+
+# permanent wall
+F:77:0x02/0xBC
+
+# permanent wall
+F:78:0x02/0xBC
+
+# stream of shallow water
+F:84:0x0E/0xCB
+
+# pool of deep lava
+F:85:0x04/0xCB
+
+# stream of shallow lava
+F:86:0x0C/0xCB
+
+# dark pit
+F:87:0x08/0xD0
+
+# dirt
+F:88:0x07/0xB5
+
+# patch of grass
+F:89:0x0D/0xC9
+
+# ice
+F:90:0x01/0xD0
+
+# sand
+F:91:0x0F/0xB5
+
+# dead tree
+F:92:0x08/0xCC
+
+# ash
+F:93:0x02/0xB5
+
+# mud
+F:94:0x07/0xB5
+
+# ice wall
+F:95:0x01/0xCF
+
+# tree
+F:96:0x05/0xCC
+
+# mountain chain
+F:97:0x02/0xCE
+
+# sandwall
+F:98:0x0F/0xCF
+
+# sandwall
+F:99:0x0F/0xCF
+
+# sandwall with treasure
+F:100:0x03/0xCF
+
+# high mountain chain
+F:101:0x01/0xCE
+
+# nether mist
+F:102:0x0A/0xCA
+
+# Void Jumpgate
+F:160:0x0A/0xB9
+
+# Altar of Being
+F:161:0x09/0xD1
+
+# Altar of Winds
+F:162:0x0E/0xD1
+
+# Altar of Force
+F:163:0x0C/0xD1
+
+# Altar of Darkness
+F:164:0x08/0xD1
+
+# Altar of Nature
+# F:165:0x05/0x30
+
+# floor
+F:172:0x01/0xB5
+
+# Underground Tunnel
+F:173:0x02/0xB9
+
+# stream of tainted water
+F:174:0x0A/0xCB
+
+# monster trap
+F:175:0x0A/0xC6
+
+# Void Jumpgate
+F:176:0x0A/0xB9
+
+# lava wall
+F:177:0x0C/0xBC
+
+# Great Fire
+F:178:0x0C/0xCB
+
+# path to the next area
+F:179:0x01/0xB7
+
+# path to the previous area
+F:180:0x01/0xB6
+
+# field
+F:181:0x05/0xB5
+
+# Ekkaia, the Encircling Sea
+F:182:0x06/0xCB
+
+# pool of deep water
+F:187:0x06/0xCB
+
+# glass wall
+F:188:0x0E/0xD0
+
+# illusion wall
+F:189:0x02/0xBC
+
+# Grass roof
+F:190:0x0F/0xCA
+
+# grass roof top
+F:191:0x0F/0xCA
+
+# grass roof chimney
+F:192:0x0F/0xCA
+
+# brick roof
+F:193:0x04/0xCF
+
+# brick roof top
+F:194:0x04/0xCF
+
+# brick roof chimney
+F:195:0x04/0xCF
+
+# window
+F:196:0x01/0x4F
+
+# small window
+F:197:0x01/0x6F
+
+# rain barrel
+F:198:0x02/0xBC
+
+# grass with flowers
+F:199:0x04/0xC9
+
+# cobblestone road
+F:200:0x02/0xB5
+
+# cobblestone with outlet
+F:201:0x02/0xB5
+
+# small tree
+F:202:0x0D/0xCD
+
+# town
+F:203:0x01/0xC5
+
+# Underground Tunnel
+F:204:0x02/0xB9
+
+# a blazing fire
+F:205:0x0C/0xCB
+
+# pile of rubble
+F:206:0x02/0xBB
+
+# rocky ground
+F:207:0x02/0xB5
+
+# cloud-like vapour
+F:208:0x09/0xCA
+
+# condensing water
+F:209:0x0E/0xCB
+
+# dense mist
+F:210:0x01/0xCA
+
+# hail-stone wall
+F:211:0x09/0xBC
+
+
+##### Building attr/char definitions #####
+
+# General Store
+B:0:0x0F/0xBD
+
+# Armoury
+B:1:0x02/0xBE
+
+# Weaponsmith
+B:2:0x01/0xBF
+
+# Temple
+B:3:0x05/0xC0
+
+# Alchemy shop
+B:4:0x06/0xC1
+
+# Magic shop
+B:5:0x04/0xC4
+
+# Black Market
+B:6:0x08/0xC3
+
+# Home
+B:7:0x0B/0xB8
+
+# Book Store
+B:8:0x03/0xC2
+
+# Pet Shop
+B:9:0x06/0xB8
+
+# Mayor's Office
+B:10:0x03/0xB8
+
+# Inn
+B:11:0x01/0xB8
+
+# The Soothsayer
+B:12:0x0E/0xB8
+
+# Library
+B:13:0x0F/0xC2
+
+# Castle
+B:14:0x03/0xB8
+
+# Casino
+B:15:0x02/0xB8
+
+# Beastmaster Shanty
+B:16:0x05/0xB8
+
+# Fighters Hall
+B:17:0x02/0xB8
+
+# Tower of Magery
+B:18:0x06/0xB8
+
+# Inner Temple
+B:19:0x0D/0xC0
+
+# Paladins Guild
+B:20:0x05/0xB8
+
+# Rangers Guild
+B:21:0x07/0xB8
+
+# Thunderlords' Nest
+B:22:0x0F/0xB8
+
+# The Mirror
+B:23:0x0F/0xB8
+
+# Seat of Ruling
+B:24:0x0F/0xCC
+
+# Wizards Spire
+B:25:0x0F/0xB8
+
+# Priests Circle
+B:26:0x03/0xB8
+
+# Tower of the King
+B:27:0x0F/0xB8
+
+# Library
+B:28:0x0F/0xC2
+
+# The White Tree
+B:29:0x01/0xCC
+
+# Craftsmaster
+B:30:0x02/0xB8
+
+# Earth-Dome (Nature)
+B:31:0x0F/0xB8
+
+# Minstrels Haven
+B:32:0x0F/0xB8
+
+# Star-Dome
+B:33:0x0F/0xB8
+
+# Valarin Temple
+B:34:0x0F/0xC0
+
+# Sea-Dome
+B:35:0x0F/0xB8
+
+# The Golden Flower
+B:36:0x0F/0xB8
+
+# The Fountain
+B:37:0x0F/0xC8
+
+# Axe Smith
+B:38:0x01/0xBF
+
+# Hafted Smith
+B:39:0x01/0xBF
+
+# Polearm Smith
+B:40:0x01/0xBF
+
+# Sword Smith
+B:41:0x01/0xBF
+
+# Rare Jewelry Shop
+B:42:0x0A/0xC4
+
+# Jewelry Shop
+B:43:0x0B/0xC4
+
+# Footwear Shop
+B:44:0x04/0xBE
+
+# Rare Footwear Shop
+B:45:0x04/0xBE
+
+# Library
+B:46:0x0B/0xC2
+
+# Forbidden Library
+B:47:0x0A/0xC2
+
+# Expensive Black Market
+B:48:0x0A/0xC3
+
+# Common Shop
+B:49:0x0F/0xBD
+
+# Dragon Hunter
+B:50:0x0A/0xBE
+
+# Speed Ring Market
+B:51:0x0D/0xC4
+
+# Scribe
+B:52:0x0E/0xC1
+
+# Potion Store
+B:53:0x0E/0xC1
+
+# Recaller
+B:54:0x06/0xB8
+
+# Master Archer
+B:55:0x05/0xBF
+
+# Merchants Guild
+B:56:0x05/0xB8
+
+# The Mathom-house
+B:57:0x05/0xB8
+
+# The Prancing Pony
+B:58:0x01/0xB8
+
+# Mining Supply store
+B:59:0x02/0xB8
+
+
+##### Object attr/char definitions #####
+
+# something
+# K:0:0x01/0x26
+
+# Blindness
+K:1:0x00/0xEE
+
+# Paranoia
+K:2:0x00/0xEE
+
+# Confusion
+K:3:0x00/0xEE
+
+# Hallucination
+K:4:0x00/0xEE
+
+# Cure Poison
+K:5:0x00/0xEE
+
+# Cure Blindness
+K:6:0x00/0xEE
+
+# Cure Paranoia
+K:7:0x00/0xEE
+
+# Cure Confusion
+K:8:0x00/0xEE
+
+# Weakness
+K:9:0x00/0xEE
+
+# Unhealth
+K:10:0x00/0xEE
+
+# Restore Constitution
+K:11:0x00/0xEE
+
+# Restoring
+K:12:0x00/0xEE
+
+# Stupidity
+K:13:0x00/0xEE
+
+# Naivety
+K:14:0x00/0xEE
+
+# Poison
+K:15:0x00/0xEE
+
+# Sickness
+K:16:0x00/0xEE
+
+# Paralysis
+K:17:0x00/0xEE
+
+# Restore Strength
+K:18:0x00/0xEE
+
+# Disease
+K:19:0x00/0xEE
+
+# Cure Serious Wounds
+K:20:0x00/0xEE
+
+# & Ration~ of Food
+K:21:0x0F/0xF2
+
+# & Hard Biscuit~
+K:22:0x0F/0xF2
+
+# & Strip~ of Venison
+K:23:0x07/0xF2
+
+# & Slime Mold~
+K:24:0x05/0xF2
+
+# & Lembas~
+K:25:0x0E/0xF2
+
+# & Pint~ of Fine Ale
+K:26:0x0B/0xED
+
+# & Pint~ of Fine Wine
+K:27:0x04/0xED
+
+# & Mattock~
+K:28:0x08/0xD9
+
+# & Blue Stone~
+K:29:0x0E/0xE7
+
+# & Broken Dagger~
+K:30:0x08/0xDC
+
+# & Bastard Sword~
+K:31:0x09/0xDC
+
+# & Scimitar~
+K:32:0x09/0xDC
+
+# & Tulwar~
+K:33:0x09/0xDC
+
+# & Broad Sword~
+K:34:0x09/0xDC
+
+# & Short Sword~
+K:35:0x09/0xDC
+
+# & Blade~ of Chaos
+K:36:0x0A/0xDC
+
+# & Two-Handed Sword~
+K:37:0x09/0xDC
+
+# & Main Gauche~
+K:38:0x09/0xDC
+
+# & Cutlass~
+K:39:0x09/0xDC
+
+# & Executioner's Sword~
+K:40:0x04/0xDC
+
+# & Katana~
+K:41:0x09/0xDC
+
+# & Long Sword~
+K:42:0x09/0xDC
+
+# & Dagger~
+K:43:0x09/0xDC
+
+# & Rapier~
+K:44:0x09/0xDC
+
+# & Sabre~
+K:45:0x09/0xDC
+
+# & Small Sword~
+K:46:0x09/0xDC
+
+# & Broken Sword~
+K:47:0x08/0xDC
+
+# & Ball-and-Chain~
+K:48:0x08/0xDA
+
+# & Whip~
+K:49:0x08/0xDA
+
+# & Flail~
+K:50:0x08/0xDA
+
+# & Two-Handed Flail~
+K:51:0x0B/0xDA
+
+# & Morning Star~
+K:52:0x08/0xDA
+
+# & Mace~
+K:53:0x08/0xDA
+
+# & Quarterstaff~
+K:54:0x0F/0xDA
+
+# & War Hammer~
+K:55:0x08/0xDA
+
+# & Lead-Filled Mace~
+K:56:0x08/0xDA
+
+# & Mace~ of Disruption
+K:57:0x0A/0xDA
+
+# & Lucerne Hammer~
+K:58:0x0E/0xDA
+
+# & Beaked Axe~
+K:59:0x02/0xDB
+
+# & Glaive~
+K:60:0x02/0xDB
+
+# & Halberd~
+K:61:0x02/0xDB
+
+# & Awl-Pike~
+K:62:0x02/0xDB
+
+# & Pike~
+K:63:0x02/0xDB
+
+# & Spear~
+K:64:0x02/0xDB
+
+# & Trident~
+K:65:0x0B/0xDB
+
+# & Lance~
+K:66:0x02/0xDB
+
+# & Great Axe~
+K:67:0x02/0xDB
+
+# & Battle Axe~
+K:68:0x02/0xDB
+
+# & Lochaber Axe~
+K:69:0x08/0xDB
+
+# & Broad Axe~
+K:70:0x02/0xDB
+
+# & Scythe~
+K:71:0x02/0xDB
+
+# & Scythe~ of Slicing
+K:72:0x04/0xDB
+
+# & Short Bow~
+K:73:0x0F/0xD8
+
+# & Long Bow~
+K:74:0x0F/0xD8
+
+# & Light Crossbow~
+K:75:0x02/0xD8
+
+# & Heavy Crossbow~
+K:76:0x02/0xD8
+
+# & Sling~
+K:77:0x07/0xD8
+
+# & Arrow~
+K:78:0x0F/0xD7
+
+# & Seeker Arrow~
+K:79:0x0D/0xD7
+
+# & Bolt~
+K:80:0x02/0xD7
+
+# & Seeker Bolt~
+K:81:0x0E/0xD7
+
+# & Rounded Pebble~
+K:82:0x02/0xD6
+
+# & Iron Shot~
+K:83:0x02/0xD6
+
+# & Shovel~
+K:84:0x02/0xD9
+
+# & Gnomish Shovel~
+K:85:0x0D/0xD9
+
+# & Dwarven Shovel~
+K:86:0x0E/0xD9
+
+# & Pick~
+K:87:0x02/0xD9
+
+# & Orcish Pick~
+K:88:0x05/0xD9
+
+# & Dwarven Pick~
+K:89:0x06/0xD9
+
+# & Elven Cloak~
+K:90:0x0D/0xE2
+
+# & Pair~ of Soft Leather Boots
+K:91:0x0F/0xDD
+
+# & Pair~ of Hard Leather Boots
+K:92:0x0F/0xDD
+
+# & Pair~ of Metal Shod Boots
+K:93:0x02/0xDD
+
+# & Hard Leather Cap~
+K:94:0x07/0xDF
+
+# & Metal Cap~
+K:95:0x02/0xDF
+
+# & Iron Helm~
+K:96:0x02/0xDF
+
+# & Steel Helm~
+K:97:0x09/0xDF
+
+# & Iron Crown~
+K:98:0x02/0xE0
+
+# & Golden Crown~
+K:99:0x0B/0xE0
+
+# & Jewel Encrusted Crown~
+K:100:0x0A/0xE0
+
+# & Robe~
+K:101:0x06/0xE3
+
+# & Filthy Rag~
+K:102:0x08/0xE3
+
+# Soft Leather Armour~
+K:103:0x0F/0xE3
+
+# Soft Studded Leather~
+K:104:0x0F/0xE3
+
+# Hard Leather Armour~
+K:105:0x0F/0xE3
+
+# Hard Studded Leather~
+K:106:0x0F/0xE3
+
+# Leather Scale Mail~
+K:107:0x0F/0xE3
+
+# Metal Scale Mail~
+K:108:0x02/0xE4
+
+# Chain Mail~
+K:109:0x02/0xE4
+
+# Rusty Chain Mail~
+K:110:0x04/0xE4
+
+# Augmented Chain Mail~
+K:111:0x02/0xE4
+
+# Bar Chain Mail~
+K:112:0x02/0xE4
+
+# Metal Brigandine Armour~
+K:113:0x02/0xE4
+
+# Partial Plate Armour~
+K:114:0x09/0xE4
+
+# Metal Lamellar Armour~
+K:115:0x09/0xE4
+
+# Full Plate Armour~
+K:116:0x09/0xE4
+
+# Ribbed Plate Armour~
+K:117:0x09/0xE4
+
+# Adamantite Plate Mail~
+K:118:0x0D/0xE4
+
+# Mithril Plate Mail~
+K:119:0x0E/0xE4
+
+# Mithril Chain Mail~
+K:120:0x0E/0xE4
+
+# Double Chain Mail~
+K:121:0x02/0xE4
+
+# & Shield~ of Deflection
+K:122:0x0E/0xE1
+
+# & Cloak~
+K:123:0x05/0xE2
+
+# & Shadow Cloak~
+K:124:0x08/0xE2
+
+# & Set~ of Leather Gloves
+K:125:0x0F/0xDE
+
+# & Set~ of Gauntlets
+K:126:0x0F/0xDE
+
+# & Set~ of Cesti
+K:127:0x09/0xDE
+
+# & Small Leather Shield~
+K:128:0x0F/0xE1
+
+# & Large Leather Shield~
+K:129:0x0F/0xE1
+
+# & Small Metal Shield~
+K:130:0x02/0xE1
+
+# & Large Metal Shield~
+K:131:0x02/0xE1
+
+# Strength
+K:132:0x00/0xE8
+
+# Dexterity
+K:133:0x00/0xE8
+
+# Constitution
+K:134:0x00/0xE8
+
+# Intelligence
+K:135:0x00/0xE8
+
+# Speed
+K:136:0x00/0xE8
+
+# Searching
+K:137:0x00/0xE8
+
+# Teleportation
+K:138:0x00/0xE8
+
+# Slow Digestion
+K:139:0x00/0xE8
+
+# Fire Resistance
+K:140:0x00/0xE8
+
+# Cold Resistance
+K:141:0x00/0xE8
+
+# Levitation
+K:142:0x00/0xE8
+
+# Poison Resistance
+K:143:0x00/0xE8
+
+# Free Action
+K:144:0x00/0xE8
+
+# Weakness
+K:145:0x00/0xE8
+
+# Flames
+K:146:0x00/0xE8
+
+# Acid
+K:147:0x00/0xE8
+
+# Ice
+K:148:0x00/0xE8
+
+# Woe
+K:149:0x00/0xE8
+
+# Stupidity
+K:150:0x00/0xE8
+
+# Damage
+K:151:0x00/0xE8
+
+# Accuracy
+K:152:0x00/0xE8
+
+# Protection
+K:153:0x00/0xE8
+
+# Aggravate Monster
+K:154:0x00/0xE8
+
+# See Invisible
+K:155:0x00/0xE8
+
+# Sustain Strength
+K:156:0x00/0xE8
+
+# Sustain Intelligence
+K:157:0x00/0xE8
+
+# Sustain Wisdom
+K:158:0x00/0xE8
+
+# Sustain Constitution
+K:159:0x00/0xE8
+
+# Sustain Dexterity
+K:160:0x00/0xE8
+
+# Sustain Charisma
+K:161:0x00/0xE8
+
+# Slaying
+K:162:0x00/0xE8
+
+# Brilliance
+K:163:0x00/0xE7
+
+# Charisma
+K:164:0x00/0xE7
+
+# Searching
+K:165:0x00/0xE7
+
+# Teleportation
+K:166:0x00/0xE7
+
+# Slow Digestion
+K:167:0x00/0xE7
+
+# Acid Resistance
+K:168:0x00/0xE7
+
+# Adornment
+K:169:0x00/0xE7
+
+# Double Ring Mail~
+K:170:0x02/0xE4
+
+# the Magi
+K:171:0x00/0xE7
+
+# Doom
+K:172:0x00/0xE7
+
+# Enchant Weapon To-Hit
+K:173:0x00/0xEC
+
+# Enchant Weapon To-Dam
+K:174:0x00/0xEC
+
+# Enchant Armor
+K:175:0x00/0xEC
+
+# Identify
+K:176:0x00/0xEC
+
+# *Identify*
+K:177:0x00/0xEC
+
+# Rumour
+K:178:0x00/0xEC
+
+# Chaos
+K:179:0x00/0xEC
+
+# Remove Curse
+K:180:0x00/0xEC
+
+# Light
+K:181:0x00/0xEC
+
+# Fire
+K:182:0x00/0xEC
+
+# Ice
+K:183:0x00/0xEC
+
+# Summon Monster
+K:184:0x00/0xEC
+
+# Phase Door
+K:185:0x00/0xEC
+
+# Teleportation
+K:186:0x00/0xEC
+
+# Teleport Level
+K:187:0x00/0xEC
+
+# Monster Confusion
+K:188:0x00/0xEC
+
+# Magic Mapping
+K:189:0x00/0xEC
+
+# Rune of Protection
+K:190:0x00/0xEC
+
+# *Remove Curse*
+K:191:0x00/0xEC
+
+# Treasure Detection
+K:192:0x00/0xEC
+
+# Object Detection
+K:193:0x00/0xEC
+
+# Trap Detection
+K:194:0x00/0xEC
+
+# & Sheaf Arrow~
+K:195:0x03/0xD7
+
+# & Mithril Shot~
+K:196:0x0E/0xD6
+
+# Door/Stair Location
+K:197:0x00/0xEC
+
+# Acquirement
+K:198:0x00/0xEC
+
+# *Acquirement*
+K:199:0x00/0xEC
+
+# Mass Genocide
+K:200:0x00/0xEC
+
+# Detect Invisible
+K:201:0x00/0xEC
+
+# Aggravate Monster
+K:202:0x00/0xEC
+
+# Trap Creation
+K:203:0x00/0xEC
+
+# Trap/Door Destruction
+K:204:0x00/0xEC
+
+# Artifact Creation
+K:205:0x00/0xEC
+
+# Recharging
+K:206:0x00/0xEC
+
+# Genocide
+K:207:0x00/0xEC
+
+# Darkness
+K:208:0x00/0xEC
+
+# Protection from Evil
+K:209:0x00/0xEC
+
+# Satisfy Hunger
+K:210:0x00/0xEC
+
+# Dispel Undead
+K:211:0x00/0xEC
+
+# *Enchant Weapon*
+K:212:0x00/0xEC
+
+# Curse Weapon
+K:213:0x00/0xEC
+
+# *Enchant Armor*
+K:214:0x00/0xEC
+
+# Curse Armor
+K:215:0x00/0xEC
+
+# Summon Undead
+K:216:0x00/0xEC
+
+# Blessing
+K:217:0x00/0xEC
+
+# Holy Chant
+K:218:0x00/0xEC
+
+# Holy Prayer
+K:219:0x00/0xEC
+
+# Word of Recall
+K:220:0x00/0xEC
+
+# *Destruction*
+K:221:0x00/0xEC
+
+# Slime Mold Juice
+K:222:0x00/0xED
+
+# Apple Juice
+K:223:0x00/0xED
+
+# Water
+K:224:0x00/0xED
+
+# Strength
+K:225:0x00/0xED
+
+# Weakness
+K:226:0x00/0xED
+
+# Restore Strength
+K:227:0x00/0xED
+
+# Intelligence
+K:228:0x00/0xED
+
+# Stupidity
+K:229:0x00/0xED
+
+# Restore Intelligence
+K:230:0x00/0xED
+
+# Wisdom
+K:231:0x00/0xED
+
+# Naivety
+K:232:0x00/0xED
+
+# Restore Wisdom
+K:233:0x00/0xED
+
+# Charisma
+K:234:0x00/0xED
+
+# Ugliness
+K:235:0x00/0xED
+
+# Restore Charisma
+K:236:0x00/0xED
+
+# Curing
+K:237:0x00/0xED
+
+# Invulnerability
+K:238:0x00/0xED
+
+# New Life
+K:239:0x00/0xED
+
+# Cure Serious Wounds
+K:240:0x00/0xED
+
+# Cure Critical Wounds
+K:241:0x00/0xED
+
+# Healing
+K:242:0x00/0xED
+
+# Constitution
+K:243:0x00/0xED
+
+# Experience
+K:244:0x00/0xED
+
+# Sleep
+K:245:0x00/0xED
+
+# Blindness
+K:246:0x00/0xED
+
+# Booze
+K:247:0x00/0xED
+
+# Poison
+K:248:0x00/0xED
+
+# Speed
+K:249:0x00/0xED
+
+# Slowness
+K:250:0x00/0xED
+
+# Dexterity
+K:251:0x00/0xED
+
+# Restore Dexterity
+K:252:0x00/0xED
+
+# Restore Constitution
+K:253:0x00/0xED
+
+# Lose Memories
+K:254:0x00/0xED
+
+# Salt Water
+K:255:0x00/0xED
+
+# Enlightenment
+K:256:0x00/0xED
+
+# Heroism
+K:257:0x00/0xED
+
+# Berserk Strength
+K:258:0x00/0xED
+
+# Boldness
+K:259:0x00/0xED
+
+# Restore Life Levels
+K:260:0x00/0xED
+
+# Resist Heat
+K:261:0x00/0xED
+
+# Resist Cold
+K:262:0x00/0xED
+
+# Detect Invisible
+K:263:0x00/0xED
+
+# Slow Poison
+K:264:0x00/0xED
+
+# Neutralise Poison
+K:265:0x00/0xED
+
+# Restore Mana
+K:266:0x00/0xED
+
+# Infra-vision
+K:267:0x00/0xED
+
+# Resistance
+K:268:0x00/0xED
+
+# Spell
+K:269:0x00/0xEA
+
+# Manathrust
+K:270:0x00/0xEA
+
+# Fireflash
+K:271:0x00/0xEA
+
+# Firewall
+K:272:0x00/0xEA
+
+# Tidal Wave
+K:273:0x00/0xEA
+
+# Ice Storm
+K:274:0x00/0xEA
+
+# Noxious Cloud
+K:275:0x00/0xEA
+
+# Poison Blood
+K:276:0x00/0xEA
+
+# Thunderstorm
+K:277:0x00/0xEA
+
+# Dig
+K:278:0x00/0xEA
+
+# Stone Prison
+K:279:0x00/0xEA
+
+# Strike
+K:280:0x00/0xEA
+
+# Teleport Away
+K:281:0x00/0xEA
+
+# Summon Animal
+K:282:0x00/0xEA
+
+# Magelock
+K:283:0x00/0xEA
+
+# Slow Monster
+K:284:0x00/0xEA
+
+# Essence of Speed
+K:285:0x00/0xEA
+
+# Banishment
+K:286:0x00/0xEA
+
+# Disperse Magic
+K:287:0x00/0xEA
+
+# Charm
+K:288:0x00/0xEA
+
+# Confuse
+K:289:0x00/0xEA
+
+# Demon Blade
+K:290:0x00/0xEA
+
+# Heal Monster
+K:291:0x00/0xEA
+
+# Haste Monster
+K:292:0x00/0xEA
+
+# & Flight Arrow~
+K:293:0x0B/0xD7
+
+# Spell
+K:300:0x00/0xE9
+
+# Nothing
+K:301:0x00/0xE9
+
+# Globe of Light
+K:302:0x00/0xE9
+
+# Fiery Shield
+K:303:0x00/0xE9
+
+# Remove Curses
+K:304:0x00/0xE9
+
+# Wings of Winds
+K:305:0x00/0xE9
+
+# Shake
+K:306:0x00/0xE9
+
+# Disarm
+K:307:0x00/0xE9
+
+# Teleportation
+K:308:0x00/0xE9
+
+# Probability Travel
+K:309:0x00/0xE9
+
+# Recovery
+K:310:0x00/0xE9
+
+# Healing
+K:311:0x00/0xE9
+
+# Vision
+K:312:0x00/0xE9
+
+# Identify
+K:313:0x00/0xE9
+
+# Sense Hidden
+K:314:0x00/0xE9
+
+# Reveal Ways
+K:315:0x00/0xE9
+
+# Sense Monsters
+K:316:0x00/0xE9
+
+# Genocide
+K:317:0x00/0xE9
+
+# Summon
+K:318:0x00/0xE9
+
+# Wish
+K:320:0x00/0xE9
+
+# Mana
+K:321:0x00/0xE9
+
+# & Tome~ of Magical Energy
+K:330:0x0E/0xEF
+
+# & Tome~ of the Eternal Flame
+K:331:0x0C/0xEF
+
+# & Tome~ of the Blowing Wind
+K:332:0x06/0xEF
+
+# & Tome~ of the Impenetrable Earth
+K:333:0x0F/0xEF
+
+# & Tome~ of the Everrunning Wave
+K:334:0x0E/0xEF
+
+# & Tome~ of Translocation
+K:335:0x0E/0xEF
+
+# & Tome~ of the Tree
+K:336:0x0D/0xEF
+
+# & Tome~ of Knowledge
+K:337:0x08/0xEF
+
+# & Small wooden chest~
+K:338:0x02/0xD5
+
+# & Large wooden chest~
+K:339:0x02/0xD5
+
+# & Small iron chest~
+K:340:0x02/0xD5
+
+# & Large iron chest~
+K:341:0x02/0xD5
+
+# & Small steel chest~
+K:342:0x02/0xD5
+
+# & Large steel chest~
+K:343:0x02/0xD5
+
+# & Ruined chest~
+K:344:0x02/0xD5
+
+# & Iron Spike~
+K:345:0x09/0xD4
+
+# & Wooden Torch~
+K:346:0x07/0xF1
+
+# & Brass Lantern~
+K:347:0x0F/0xE6
+
+# & Flask~ of oil
+K:348:0x0B/0xED
+
+# & Empty Bottle~
+K:349:0x01/0xED
+
+# Havoc
+K:350:0x00/0xEB
+
+# Door/Stair Location
+K:351:0x00/0xEB
+
+# Trap Location
+K:352:0x00/0xEB
+
+# Probing
+K:353:0x00/0xEB
+
+# Recall
+K:354:0x00/0xEB
+
+# Illumination
+K:355:0x00/0xEB
+
+# Light
+K:356:0x00/0xEB
+
+# Lightning Bolts
+K:357:0x00/0xEB
+
+# Frost Bolts
+K:358:0x00/0xEB
+
+# Fire Bolts
+K:359:0x00/0xEB
+
+# Polymorph
+K:360:0x00/0xEB
+
+# Slow Monster
+K:361:0x00/0xEB
+
+# Sleep Monster
+K:362:0x00/0xEB
+
+# Drain Life
+K:363:0x00/0xEB
+
+# Teleport Other
+K:364:0x00/0xEB
+
+# Disarming
+K:365:0x00/0xEB
+
+# Lightning Balls
+K:366:0x00/0xEB
+
+# Cold Balls
+K:367:0x00/0xEB
+
+# Fire Balls
+K:368:0x00/0xEB
+
+# Acid Balls
+K:369:0x00/0xEB
+
+# Acid Bolts
+K:370:0x00/0xEB
+
+# Enlightenment
+K:371:0x00/0xEB
+
+# Perception
+K:372:0x00/0xEB
+
+# Curing
+K:373:0x00/0xEB
+
+# Healing
+K:374:0x00/0xEB
+
+# Detection
+K:375:0x00/0xEB
+
+# Restoration
+K:376:0x00/0xEB
+
+# Speed
+K:377:0x00/0xEB
+
+# Spell
+K:378:0x00/0xE8
+
+# Spell
+K:379:0x00/0xE7
+
+# & Broken Skull~
+K:391:0x01/0xD3
+
+# & Broken Bone~
+K:392:0x01/0xD3
+
+# & Canine Skeleton~
+K:393:0x01/0xD3
+
+# & Rodent Skeleton~
+K:394:0x01/0xD3
+
+# & Human Skeleton~
+K:395:0x01/0xD3
+
+# & Dwarf Skeleton~
+K:396:0x01/0xD3
+
+# & Elf Skeleton~
+K:397:0x01/0xD3
+
+# & Gnome Skeleton~
+K:398:0x01/0xD3
+
+# & Great Hammer~
+K:399:0x08/0xDA
+
+# Black Dragon Scale Mail~
+K:400:0x02/0xE5
+
+# Blue Dragon Scale Mail~
+K:401:0x06/0xE5
+
+# White Dragon Scale Mail~
+K:402:0x01/0xE5
+
+# Red Dragon Scale Mail~
+K:403:0x04/0xE5
+
+# Green Dragon Scale Mail~
+K:404:0x05/0xE5
+
+# Multi-Hued Dragon Scale Mail~
+K:405:0x0A/0xE5
+
+# Pseudo Dragon Scale Mail~
+K:406:0x0A/0xE5
+
+# Law Dragon Scale Mail~
+K:407:0x0E/0xE5
+
+# Bronze Dragon Scale Mail~
+K:408:0x0F/0xE5
+
+# Gold Dragon Scale Mail~
+K:409:0x0B/0xE5
+
+# Chaos Dragon Scale Mail~
+K:410:0x0A/0xE5
+
+# Balance Dragon Scale Mail~
+K:411:0x0A/0xE5
+
+# Power Dragon Scale Mail~
+K:412:0x0A/0xE5
+
+# & Dragon Helm~
+K:413:0x0D/0xDF
+
+# & Dragon Shield~
+K:414:0x0D/0xE1
+
+# Death
+K:415:0x00/0xED
+
+# Ruination
+K:416:0x00/0xED
+
+# Detonations
+K:417:0x00/0xED
+
+# Augmentation
+K:418:0x00/0xED
+
+# *Healing*
+K:419:0x00/0xED
+
+# Life
+K:420:0x00/0xED
+
+# Self Knowledge
+K:421:0x00/0xED
+
+# *Enlightenment*
+K:422:0x00/0xED
+
+# Fear Resistance
+K:425:0x00/0xE8
+
+# Light and Darkness Resistance
+K:426:0x00/0xE8
+
+# Nether Resistance
+K:427:0x00/0xE8
+
+# Nexus Resistance
+K:428:0x00/0xE8
+
+# Sound Resistance
+K:429:0x00/0xE8
+
+# Confusion Resistance
+K:430:0x00/0xE8
+
+# Shard Resistance
+K:431:0x00/0xE8
+
+# Disenchantment Resistance
+K:432:0x00/0xE8
+
+# Chaos Resistance
+K:433:0x00/0xE8
+
+# Blindness Resistance
+K:434:0x00/0xE8
+
+# Lordly Protection
+K:435:0x00/0xE8
+
+# Extra Attacks
+K:436:0x00/0xE8
+
+# Cure Light Wounds
+K:437:0x00/0xED
+
+# Clumsiness
+K:438:0x00/0xED
+
+# Sickliness
+K:439:0x00/0xED
+
+# Map of Bree
+K:440:0x02/0xEC
+
+# Map of Gondolin
+K:441:0x02/0xEC
+
+# Map of Lothlorien
+K:442:0x02/0xEC
+
+# Map of Minas Anor
+K:443:0x02/0xEC
+
+# & Silver Arrow~
+K:465:0x09/0xD7
+
+# & Silver Bolt~
+K:466:0x01/0xD7
+
+# Lightning Resistance
+K:467:0x00/0xE7
+
+# Wisdom
+K:468:0x00/0xE7
+
+# Regeneration
+K:469:0x00/0xE7
+
+# Infravision
+K:470:0x00/0xE7
+
+# Devotion
+K:471:0x00/0xE7
+
+# Weaponmastery
+K:472:0x00/0xE7
+
+# Trickery
+K:473:0x00/0xE7
+
+# Telepathy
+K:474:0x00/0xE7
+
+# Sustenance
+K:475:0x00/0xE7
+
+# & Palantir~
+K:476:0x0B/0xF0
+
+# & Elfstone~
+K:477:0x05/0xE7
+
+# & Jewel~
+K:478:0x01/0xE7
+
+# & Ring~
+K:479:0x00/0xE8
+
+# copper
+K:480:0x07/0xF3
+
+# copper
+K:481:0x07/0xF3
+
+# copper
+K:482:0x07/0xF3
+
+# silver
+K:483:0x02/0xF3
+
+# silver
+K:484:0x02/0xF3
+
+# silver
+K:485:0x02/0xF3
+
+# garnets
+K:486:0x04/0xF4
+
+# garnets
+K:487:0x04/0xF4
+
+# gold
+K:488:0x0B/0xF3
+
+# gold
+K:489:0x0B/0xF3
+
+# gold
+K:490:0x0B/0xF3
+
+# opals
+K:491:0x09/0xF4
+
+# sapphires
+K:492:0x06/0xF4
+
+# rubies
+K:493:0x04/0xF4
+
+# diamonds
+K:494:0x01/0xF4
+
+# emeralds
+K:495:0x05/0xF4
+
+# mithril
+K:496:0x0E/0xF3
+
+# adamantite
+K:497:0x0D/0xF3
+
+# & Mighty Hammer~
+K:498:0x08/0xDA
+
+# & Massive Iron Crown~
+K:499:0x08/0xE0
+
+# & Phial~
+K:500:0x0B/0xF0
+
+# & Star~
+K:501:0x0E/0xF0
+
+# & Arkenstone~
+K:502:0x0C/0xF0
+
+# & Amulet~
+K:503:0x00/0xE7
+
+# & Amulet~
+K:504:0x00/0xE7
+
+# & Necklace~
+K:505:0x00/0xE7
+
+# & Ring~
+K:506:0x00/0xE8
+
+# & Ring~
+K:507:0x00/0xE8
+
+# & Ring~
+K:508:0x00/0xE8
+
+# & Ring~
+K:509:0x00/0xE8
+
+# & Ring~
+K:510:0x00/0xE8
+
+# & Ring~
+K:511:0x0B/0xE8
+
+# Reflection
+K:520:0x00/0xE7
+
+# Anti-Magic
+K:521:0x00/0xE7
+
+# Anti-Teleportation
+K:522:0x00/0xE7
+
+# Resistance
+K:523:0x00/0xE7
+
+# & Zweihander~
+K:524:0x01/0xDC
+
+# & Dwarven Lantern~
+K:525:0x06/0xE6
+
+# Splint Mail~
+K:526:0x08/0xE4
+
+# & Everburning Torch~
+K:527:0x0C/0xF1
+
+# & Trifurcate Spear~
+K:528:0x03/0xDB
+
+# & Three Piece Rod~
+K:529:0x07/0xDA
+
+# & Feanorian Lamp~
+K:530:0x0E/0xE6
+
+# & Fur Cloak~
+K:531:0x09/0xE2
+
+# Water Curing
+K:532:0x00/0xED
+
+# & Hatchet~
+K:533:0x02/0xDB
+
+# Rhino Hide Armour~
+K:535:0x02/0xE3
+
+# Leather Jacket~
+K:536:0x0F/0xE3
+
+# & Sickle~
+K:537:0x02/0xDB
+
+# & Club~
+K:542:0x07/0xDA
+
+# & Broad Spear~
+K:543:0x01/0xDB
+
+# & Khopesh~
+K:544:0x09/0xDC
+
+# & Flamberge~
+K:545:0x09/0xDC
+
+# & Claymore~
+K:546:0x09/0xDC
+
+# & Espadon~
+K:547:0x09/0xDC
+
+# & Great Scimitar~
+K:548:0x09/0xDC
+
+# Arrow
+K:549:0x04/0xF8
+
+# Bolt
+K:550:0x03/0xF8
+
+# & Fauchard~
+K:551:0x02/0xDB
+
+# & Guisarme~
+K:552:0x02/0xDB
+
+# & Heavy Lance~
+K:553:0x02/0xDB
+
+# & Basillard~
+K:554:0x01/0xDC
+
+# Catapult
+K:555:0x0C/0xF8
+
+# Ring Mail~
+K:556:0x02/0xE4
+
+# Cord Armour~
+K:557:0x0B/0xE3
+
+# Paper Armour~
+K:558:0x01/0xE3
+
+# Padded Armour~
+K:559:0x0B/0xE3
+
+# Fumes
+K:560:0x0D/0xF8
+
+# Stone and Hide Armour~
+K:561:0x0F/0xE3
+
+# Magic
+K:562:0x05/0xF8
+
+# Device
+K:563:0x0A/0xF8
+
+# Nothing
+K:564:0x00/0xEC
+
+# Poison
+K:565:0x0D/0xF6
+
+# Nothing
+K:566:0x00/0xEA
+
+# Nothing
+K:567:0x00/0xE8
+
+# Nothing
+K:568:0x00/0xE9
+
+# Nothing
+K:569:0x00/0xEB
+
+# Explosion
+K:570:0x0D/0xF6
+
+# Teleport
+K:571:0x0D/0xF6
+
+# Nothing
+K:572:0x00/0xE7
+
+# & Blood~ of Life
+K:573:0x00/0xED
+
+# Cold
+K:574:0x0D/0xF6
+
+# Fire
+K:575:0x0D/0xF6
+
+# Acid
+K:576:0x0D/0xF6
+
+# & Mage Staff~
+K:577:0x0E/0xE9
+
+# Lightning
+K:578:0x00/0xE8
+
+# Life
+K:579:0x0D/0xF6
+
+# Confusion
+K:580:0x0D/0xF6
+
+# Light
+K:581:0x0D/0xF6
+
+# & Ring~
+K:582:0x0B/0xE8
+
+# Invisibility
+K:583:0x00/0xED
+
+# Chaos
+K:584:0x0D/0xF6
+
+# Corruption
+K:585:0x00/0xED
+
+# Invisibility
+K:586:0x00/0xE8
+
+# Time
+K:587:0x0D/0xF6
+
+# Deep Thoughts
+K:588:0x03/0xEC
+
+# More Deep Thoughts
+K:589:0x03/0xEC
+
+# Compendium of Deep Thoughts
+K:590:0x03/0xEC
+
+# Artifact Lore Vol. I
+K:591:0x03/0xEC
+
+# Artifact Lore Vol. II
+K:592:0x03/0xEC
+
+# Artifact Lore Vol. III
+K:593:0x03/0xEC
+
+# Monstrous Compendium 1
+K:594:0x03/0xEC
+
+# Monstrous Compendium 2
+K:595:0x03/0xEC
+
+# Monstrous Compendium 3
+K:596:0x03/0xEC
+
+# Monstrous Compendium 4
+K:597:0x03/0xEC
+
+# Monstrous Compendium 5
+K:598:0x03/0xEC
+
+# Monstrous Compendium 6
+K:599:0x03/0xEC
+
+# Monstrous Compendium 7
+K:600:0x03/0xEC
+
+# Monstrous Compendium 8
+K:601:0x03/0xEC
+
+# Monstrous Compendium 9
+K:602:0x03/0xEC
+
+# Monstrous Compendium 10
+K:603:0x03/0xEC
+
+# Monstrous Compendium 11
+K:604:0x03/0xEC
+
+# Abomination
+K:605:0x00/0xED
+
+# Shape of Wolf
+K:606:0x00/0xED
+
+# Shape of Ape
+K:607:0x00/0xED
+
+# Shape of Goat
+K:608:0x00/0xED
+
+# Shape of Insect
+K:609:0x00/0xED
+
+# Shape of Sparrow
+K:610:0x00/0xED
+
+# Shape of Ent
+K:611:0x00/0xED
+
+# Shape of Vampire
+K:612:0x00/0xED
+
+# Shape of Spider
+K:613:0x00/0xED
+
+# Shape of Mana ball
+K:614:0x00/0xED
+
+# Shape of Fire cloud
+K:615:0x00/0xED
+
+# Shape of Cold cloud
+K:616:0x00/0xED
+
+# Shape of Chaos cloud
+K:617:0x00/0xED
+
+# [Wolf]
+K:618:0x0B/0xE2
+
+# [Ape]
+K:619:0x0B/0xE2
+
+# [Goat]
+K:620:0x0B/0xE2
+
+# [Insect]
+K:621:0x0B/0xE2
+
+# [Sparrow]
+K:622:0x0B/0xE2
+
+# [Ent]
+K:623:0x0B/0xE2
+
+# [Vampire]
+K:624:0x0B/0xE2
+
+# [Spider]
+K:625:0x0B/0xE2
+
+# [Mana ball]
+K:626:0x0B/0xE2
+
+# [Fire cloud]
+K:627:0x0B/0xE2
+
+# [Cold cloud]
+K:628:0x0B/0xE2
+
+# [Chaos Cloud]
+K:629:0x0B/0xE2
+
+# [Ghost]
+K:630:0x0B/0xE2
+
+# [Kobold]
+K:631:0x0B/0xE2
+
+# [Dragon]
+K:632:0x0B/0xE2
+
+# [Demon]
+K:633:0x0B/0xE2
+
+# [Hound]
+K:634:0x0B/0xE2
+
+# [Quylthulg]
+K:635:0x0B/0xE2
+
+# [Maia]
+K:636:0x0B/0xE2
+
+# [Serpent]
+K:637:0x0B/0xE2
+
+# [Giant]
+K:638:0x0B/0xE2
+
+# [Vala]
+K:639:0x0B/0xE2
+
+# Magic
+K:640:0x0D/0xF6
+
+# corpse
+K:641:0x0F/0xD2
+
+# skeleton
+K:642:0x0F/0xD2
+
+# head
+K:643:0x0F/0xD2
+
+# skull
+K:644:0x0F/0xD2
+
+# raw meat
+K:645:0x0F/0xD2
+
+# & Thunderlord Coat~
+K:646:0x0B/0xE3
+
+# & Stone~
+K:647:0x05/0xF0
+
+# & Small Wooden Boomerang~
+K:648:0x0B/0xD8
+
+# & Wooden Boomerang~
+K:649:0x0B/0xD8
+
+# & Small Metal Boomerang~
+K:650:0x0B/0xD8
+
+# & metal Boomerang~
+K:651:0x0B/0xD8
+
+# & Anchor~
+K:652:0x0A/0xF0
+
+# & ~
+K:653:0x0B/0xD2
+
+# Summon Never-Moving Pet
+K:654:0x00/0xEC
+
+# Cure Light Insanity
+K:657:0x00/0xED
+
+# Cure Serious Insanity
+K:658:0x00/0xED
+
+# Cure Critical Insanity
+K:659:0x00/0xED
+
+# Cure Insanity
+K:660:0x00/0xED
+
+# & Phial~
+K:661:0x0B/0xF0
+
+# Random Artifact
+K:662:0x03/0xD3
+
+# Craftmanship
+K:663:0x00/0xEC
+
+# The One Ring
+K:664:0x02/0xEC
+
+# & Book~ of the Lays of the Heroes
+K:665:0x0B/0xEF
+
+# & Book~ of Sound Patterns
+K:666:0x0B/0xEF
+
+# & Flute~
+K:669:0x09/0xF7
+
+# & Drum~
+K:670:0x09/0xF7
+
+# & Harp~
+K:671:0x09/0xF7
+
+# & Banjo~
+K:672:0x09/0xF7
+
+# & Lute~
+K:673:0x09/0xF7
+
+# & Mandolin~
+K:674:0x09/0xF7
+
+# & Palantir~
+K:675:0x0B/0xF0
+
+# Egg
+K:676:0x09/0xD6
+
+# Reset Recall
+K:677:0x00/0xEC
+
+# Divination
+K:678:0x00/0xEC
+
+# Self
+K:679:0x06/0xF5
+
+# Ray
+K:680:0x06/0xF5
+
+# Sphere
+K:681:0x06/0xF5
+
+# Knowledge
+K:682:0x06/0xF5
+
+# Life
+K:683:0x08/0xF5
+
+# Fire
+K:684:0x04/0xF5
+
+# Cold
+K:685:0x06/0xF5
+
+# Lightning
+K:686:0x09/0xF5
+
+# Acid
+K:687:0x0E/0xF5
+
+# Element
+K:688:0x05/0xF5
+
+# Chaos
+K:689:0x0A/0xF5
+
+# Mind
+K:690:0x08/0xF5
+
+# Holding
+K:691:0x0E/0xF5
+
+# Arrow
+K:692:0x06/0xF5
+
+# Power Surge
+K:693:0x06/0xF5
+
+# Armageddon
+K:694:0x06/0xF5
+
+# Gravity
+K:695:0x0D/0xF5
+
+# Extra Life
+K:696:0x0D/0xF6
+
+# Undeath
+K:697:0x0D/0xF5
+
+# Protection
+K:698:0x0D/0xF5
+
+# & Horn~
+K:699:0x09/0xF7
+
+# & Ring~ of Precognition
+K:700:0x00/0xE8
+
+# & Sprig~ of Athelas
+K:701:0x05/0xF2
+
+# & Old Scroll~ of Deincarnation
+K:720:0x00/0xEC
+
+# & Dark Sword~
+K:721:0x08/0xDC
+
+# Numenorean for Beginners (I)
+K:722:0x02/0xEC
+
+# Numenorean for Beginners (II)
+K:723:0x02/0xEC
+
+# Advanced lessons of Numenorean
+K:724:0x02/0xEC
+
+# Advanced lessons of Sindarin
+K:725:0x02/0xEC
+
+# & Shard~ of Pottery
+K:726:0x04/0xD3
+
+# & Broken Stick~
+K:727:0x04/0xD3
+
+# & Book~ of Beginner Cantrips
+K:738:0x01/0xEF
+
+# & Book~ of Teleportation
+K:739:0x01/0xEF
+
+# & Book~ of Recall
+K:740:0x01/0xEF
+
+# & Book~ of Summoning
+K:741:0x01/0xEF
+
+# & Book~ of Fireflash
+K:742:0x01/0xEF
+
+# & Potion~ of Learning
+K:743:0x00/0xED
+
+# Spell
+K:749:0x00/0xEC
+
+# Khuzdul - The Hidden Tongue of the Dwarves
+K:751:0x02/0xEC
+
+# Nandorin for Dummies
+K:752:0x02/0xEC
+
+# Advanced Lessons of Orcish
+K:753:0x02/0xEC
+
+# Flying
+K:755:0x00/0xE8
+
+# & Tome~ of the Time
+K:756:0x06/0xEF
+
+# & Spellbook~ of #
+K:757:0x01/0xEF
+
+# & Tome~ of Meta Spells
+K:758:0x0A/0xEF
+
+# & Tome~ of the Mind
+K:759:0x0E/0xEF
+
+# & Holy Tome~ of Eru Iluvatar
+K:760:0x0D/0xEF
+
+# & Holy Tome~ of Manwe Sulimo
+K:761:0x0E/0xEF
+
+# & War Tome~ of Tulkas
+K:762:0x0C/0xEF
+
+# & Unholy Tome~ of the Hellflame
+K:763:0x0A/0xEF
+
+# & Corrupted Tome~ of Melkor
+K:764:0x08/0xEF
+
+# & Forest Tome~ of Yavanna
+K:768:0x0D/0xEF
+
+# & Ring~
+K:770:0x00/0xE8
+
+# [Earth]
+K:771:0x0C/0xEF
+
+# [Fire]
+K:772:0x0C/0xEF
+
+# [Air]
+K:773:0x04/0xEF
+
+# [Water]
+K:774:0x04/0xEF
+
+# [Mana]
+K:775:0x04/0xEF
+
+# Home Summoning
+K:776:0x00/0xEB
+
+# & Shadow Blade~
+K:777:0x08/0xDC
+
+# & Bluesteel Blade~
+K:778:0x06/0xDC
+
+# the Serpents
+K:779:0x0D/0xE7
+
+# Darkness
+K:780:0x0D/0xF6
+
+# Knowledge
+K:781:0x0D/0xF6
+
+# Force
+K:782:0x0D/0xF6
+
+# Lightning
+K:783:0x0D/0xF6
+
+# Mana
+K:784:0x0D/0xF6
+
+# Ring~ of Power
+K:785:0x00/0xE8
+
+# Climbing Set~
+K:786:0x0E/0xF8
+
+# Adventurer's Guide to Middle-earth
+K:787:0x03/0xEC
+
+# & Demonblade~
+K:788:0x0C/0xEF
+
+# & Demonshield~
+K:789:0x0C/0xEF
+
+# & Demonhorn~
+K:790:0x0C/0xEF
+
+# & Wooden Rod~ of#
+K:793:0x07/0xEB
+
+# & Copper Rod~ of#
+K:794:0x02/0xEB
+
+# & Iron Rod~ of#
+K:795:0x08/0xEB
+
+# & Moonstone Rod~ of#
+K:796:0x0F/0xEB
+
+# & Silver Rod~ of#
+K:797:0x02/0xEB
+
+# & Golden Rod~ of#
+K:798:0x0B/0xEB
+
+# & Mithril Rod~ of#
+K:799:0x0E/0xEB
+
+# & Adamantite Rod~ of#
+K:800:0x0A/0xEB
+
+# & Greater Ration~ of Health
+K:801:0x05/0xF2
+
+# & Crumpled Scroll~ of Mass Resurrection
+K:802:0x00/0xEC
+
+# & Cleaver~
+K:803:0x02/0xDB
+
+# & Light War Axe~
+K:804:0x02/0xDB
+
+# & Slaughter Axe~
+K:805:0x0D/0xDB
+
+# & Runestone~
+K:806:0x0A/0xF5
+
+# & Fortune cookie~
+K:807:0x0F/0xF2
+
+# Portable hole
+K:808:0x0E/0xF8
+
+# Critical Hits
+K:809:0x00/0xE8
+
+# & Wand~ of Digging of Thrain
+K:810:0x00/0xEA
+
+# & Gnarled Staff~ of Holy Fire of Mithrandir
+K:811:0x00/0xE9
+
+# Partial Totem
+K:812:0x0A/0xF8
+
+# True Totem
+K:813:0x0A/0xF8
+
+# & Piece~ of the Relic of Eru
+K:814:0x0A/0xD3
+
+# & Piece~ of the Relic of Manwe
+K:815:0x0A/0xD3
+
+# & Piece~ of the Relic of Tulkas
+K:816:0x0A/0xD3
+
+# & Piece~ of the Relic of Melkor
+K:817:0x0A/0xD3
+
+# & Piece~ of the Relic of Yavanna
+K:818:0x0A/0xD3
+
+
+##### Monster attr/char definitions #####
+
+# Player
+R:0:0x01/0x80
+
+# Filthy street urchin
+R:1:0x08/0xAE
+
+# Scrawny cat
+R:2:0x0F/0xA0
+
+# Sparrow
+R:3:0x0F/0x82
+
+# Chaffinch
+R:4:0x04/0x82
+
+# Wild rabbit
+R:5:0x0F/0xAC
+
+# Woodsman
+R:6:0x05/0xAE
+
+# Scruffy little dog
+R:7:0x0F/0x83
+
+# Farmer Maggot
+R:8:0x01/0xA2
+
+# Blubbering idiot
+R:9:0x09/0xAE
+
+# Boil-covered wretch
+R:10:0x05/0xAE
+
+# Village idiot
+R:11:0x0D/0xAE
+
+# Pitiful-looking beggar
+R:12:0x0F/0xAE
+
+# Mangy-looking leper
+R:13:0x07/0xAE
+
+# Agent of the black market
+R:14:0x06/0xAE
+
+# Singing, happy drunk
+R:15:0x0B/0xAE
+
+# Aimless-looking merchant
+R:16:0x03/0xAE
+
+# Mean-looking mercenary
+R:17:0x04/0xAE
+
+# Battle-scarred veteran
+R:18:0x0E/0xAE
+
+# Martti Ihrasaari
+R:19:0x01/0x90
+
+# Grey mold
+R:20:0x02/0xA7
+
+# Large white snake
+R:21:0x01/0x8A
+
+# Grey mushroom patch
+R:22:0x02/0xEE
+
+# Newt
+R:23:0x0B/0x92
+
+# Giant white centipede
+R:24:0x01/0x9D
+
+# White icky thing
+R:25:0x01/0xA3
+
+# Clear icky thing
+R:26:0x0E/0xA3
+
+# Giant white mouse
+R:27:0x01/0xAC
+
+# Large brown snake
+R:28:0x07/0x8A
+
+# Small kobold
+R:29:0x0B/0xA5
+
+# Kobold
+R:30:0x0D/0xA5
+
+# White worm mass
+R:31:0x01/0xB1
+
+# Floating eye
+R:32:0x03/0x9F
+
+# Rock lizard
+R:33:0x0F/0x92
+
+# Grid bug
+R:34:0x0A/0x89
+
+# Jackal
+R:35:0x0F/0x83
+
+# Soldier ant
+R:36:0x07/0x9B
+
+# Fruit bat
+R:37:0x03/0x9C
+
+# Insect swarm
+R:38:0x07/0x89
+
+# The Greater hell-beast
+R:39:0x02/0x95
+
+# Shrieker mushroom patch
+R:40:0x0C/0xEE
+
+# Blubbering icky thing
+R:41:0x09/0xA3
+
+# Metallic green centipede
+R:42:0x05/0x9D
+
+# Novice warrior
+R:43:0x07/0xAA
+
+# Novice rogue
+R:44:0x06/0xAA
+
+# Novice priest
+R:45:0x05/0xAA
+
+# Novice mage
+R:46:0x04/0xAA
+
+# Yellow mushroom patch
+R:47:0x0B/0xEE
+
+# White jelly
+R:48:0x01/0xA4
+
+# Giant black ant
+R:49:0x08/0x9B
+
+# Salamander
+R:50:0x03/0x92
+
+# White harpy
+R:51:0x01/0x88
+
+# Blue yeek
+R:52:0x06/0xB3
+
+# Grip, Farmer Maggot's dog
+R:53:0x01/0x83
+
+# Wolf, Farmer Maggot's dog
+R:54:0x01/0x83
+
+# Fang, Farmer Maggot's dog
+R:55:0x01/0x83
+
+# Giant green frog
+R:56:0x05/0x92
+
+# Freesia
+R:57:0x07/0xA0
+
+# Green worm mass
+R:58:0x05/0xB1
+
+# Large yellow snake
+R:59:0x0B/0x8A
+
+# Cave spider
+R:60:0x08/0x93
+
+# Crow
+R:61:0x02/0x82
+
+# Wild cat
+R:62:0x0F/0xA0
+
+# Smeagol
+R:63:0x0E/0xA2
+
+# Green ooze
+R:64:0x05/0xA4
+
+# Poltergeist
+R:65:0x02/0x87
+
+# Yellow jelly
+R:66:0x0B/0xA4
+
+# Metallic blue centipede
+R:67:0x06/0x9D
+
+# Raven
+R:68:0x08/0x82
+
+# Giant white louse
+R:69:0x01/0x89
+
+# Giant yellow centipede
+R:70:0x0B/0x9D
+
+# Black naga
+R:71:0x08/0xA8
+
+# Spotted mushroom patch
+R:72:0x03/0xEE
+
+# Silver jelly
+R:73:0x09/0xA4
+
+# Scruffy-looking hobbit
+R:74:0x02/0xA2
+
+# Giant white ant
+R:75:0x01/0x9B
+
+# Yellow mold
+R:76:0x0B/0xA7
+
+# Metallic red centipede
+R:77:0x04/0x9D
+
+# Yellow worm mass
+R:78:0x0B/0xB1
+
+# Clear worm mass
+R:79:0x0E/0xB1
+
+# Radiation eye
+R:80:0x0C/0x9F
+
+# Yellow light
+R:81:0x0B/0xF0
+
+# Cave lizard
+R:82:0x07/0x92
+
+# Novice ranger
+R:83:0x09/0xAA
+
+# Blue jelly
+R:84:0x06/0xA4
+
+# Creeping copper coins
+R:85:0x07/0xF3
+
+# Giant white rat
+R:86:0x09/0xAC
+
+# Snotling
+R:87:0x0F/0xA9
+
+# Swordfish
+R:88:0x09/0x7E
+
+# Blue worm mass
+R:89:0x06/0xB1
+
+# Large grey snake
+R:90:0x02/0x8A
+
+# Skeleton kobold
+R:91:0x09/0xAD
+
+# Ewok
+R:92:0x0D/0xA2
+
+# Novice mage
+R:93:0x04/0xAA
+
+# Green naga
+R:94:0x05/0xA8
+
+# Giant leech
+R:95:0x07/0xB1
+
+# Barracuda
+R:96:0x0D/0x7E
+
+# Novice paladin
+R:97:0x01/0xAA
+
+# Zog
+R:98:0x06/0xA2
+
+# Blue ooze
+R:99:0x06/0xA4
+
+# Green glutton ghost
+R:100:0x05/0x87
+
+# Green jelly
+R:101:0x05/0xA4
+
+# Large kobold
+R:102:0x06/0xA5
+
+# Grey icky thing
+R:103:0x02/0xA3
+
+# Disenchanter eye
+R:104:0x0A/0x9F
+
+# Red worm mass
+R:105:0x04/0xB1
+
+# Copperhead snake
+R:106:0x03/0x8A
+
+# Death sword
+R:107:0x09/0xDC
+
+# Purple mushroom patch
+R:108:0x0A/0xEE
+
+# Novice priest
+R:109:0x05/0xAA
+
+# Novice warrior
+R:110:0x07/0xAA
+
+# Nibelung
+R:111:0x08/0xA2
+
+# The disembodied hand that strangled people
+R:112:0x05/0xB4
+
+# Brown mold
+R:113:0x07/0xA7
+
+# Giant brown bat
+R:114:0x07/0x9C
+
+# Rat-thing
+R:115:0x0C/0xAC
+
+# Novice rogue
+R:116:0x06/0xAA
+
+# Creeping silver coins
+R:117:0x02/0xF3
+
+# Snaga
+R:118:0x0F/0xA9
+
+# Rattlesnake
+R:119:0x04/0x8A
+
+# Giant slug
+R:120:0x0F/0xB1
+
+# Giant pink frog
+R:121:0x04/0x92
+
+# Dark elf
+R:122:0x08/0xA2
+
+# Zombified kobold
+R:123:0x02/0xB4
+
+# Crypt creep
+R:124:0x08/0xAD
+
+# Rotting corpse
+R:125:0x0C/0xB4
+
+# Cave orc
+R:126:0x0D/0xA9
+
+# Wood spider
+R:127:0x0F/0x93
+
+# Manes
+R:128:0x04/0xAF
+
+# Bloodshot eye
+R:129:0x04/0x9F
+
+# Red naga
+R:130:0x04/0xA8
+
+# Red jelly
+R:131:0x04/0xA4
+
+# Green icky thing
+R:132:0x05/0xA3
+
+# Lost soul
+R:133:0x09/0x87
+
+# Night lizard
+R:134:0x06/0x92
+
+# Mughash, the Kobold Lord
+R:135:0x0A/0xA5
+
+# Skeleton orc
+R:136:0x09/0xAD
+
+# Wormtongue, Agent of Saruman
+R:137:0x0E/0xAA
+
+# Robin Hood, the Outlaw
+R:138:0x0D/0xAA
+
+# Nurgling
+R:139:0x03/0xAF
+
+# Lagduf, the Snaga
+R:140:0x0B/0xA9
+
+# Brown yeek
+R:141:0x07/0xB3
+
+# Novice ranger
+R:142:0x09/0xAA
+
+# Giant salamander
+R:143:0x0C/0x92
+
+# Space monster
+R:144:0x00/0xB5
+
+# Carnivorous flying monkey
+R:145:0x0C/0x88
+
+# Green mold
+R:146:0x05/0xA7
+
+# Novice paladin
+R:147:0x01/0xAA
+
+# Lemure
+R:148:0x0F/0xAF
+
+# Hill orc
+R:149:0x07/0xA9
+
+# Bandit
+R:150:0x06/0xAA
+
+# Hunting hawk
+R:151:0x07/0x82
+
+# Phantom warrior
+R:152:0x0E/0x87
+
+# Gremlin
+R:153:0x07/0xAF
+
+# Yeti
+R:154:0x01/0x99
+
+# Bloodshot icky thing
+R:155:0x04/0xA3
+
+# Giant grey rat
+R:156:0x02/0xAC
+
+# Black harpy
+R:157:0x08/0x88
+
+# Skaven
+R:158:0x0D/0xAC
+
+# The wounded bear
+R:159:0x04/0xAB
+
+# Cave bear
+R:160:0x07/0xAB
+
+# Rock mole
+R:161:0x02/0xAC
+
+# Mindcrafter
+R:162:0x0B/0xAA
+
+# Baby blue dragon
+R:163:0x06/0x9E
+
+# Baby white dragon
+R:164:0x01/0x9E
+
+# Baby green dragon
+R:165:0x05/0x9E
+
+# Baby black dragon
+R:166:0x02/0x9E
+
+# Baby red dragon
+R:167:0x04/0x9E
+
+# Giant red ant
+R:168:0x04/0x9B
+
+# Brodda, the Easterling
+R:169:0x0F/0xAA
+
+# Bloodfang, the Wolf
+R:170:0x0C/0x83
+
+# King cobra
+R:171:0x05/0x8A
+
+# Eagle
+R:172:0x07/0x82
+
+# War bear
+R:173:0x07/0xAB
+
+# Killer bee
+R:174:0x0B/0x89
+
+# Giant spider
+R:175:0x0A/0x93
+
+# Giant white tick
+R:176:0x01/0x93
+
+# The Borshin
+R:177:0x01/0xA1
+
+# Dark elven mage
+R:178:0x04/0xA2
+
+# Kamikaze yeek
+R:179:0x04/0xB3
+
+# Orfax, Son of Boldor
+R:180:0x0E/0xB3
+
+# Servant of Glaaki
+R:181:0x0D/0xB4
+
+# Dark elven warrior
+R:182:0x07/0xA2
+
+# Sand-dweller
+R:183:0x0B/0xAF
+
+# Clear mushroom patch
+R:184:0x0E/0xEE
+
+# Quiver slot
+R:185:0x0F/0xEE
+
+# Grishnakh, the Hill Orc
+R:186:0x0B/0xA9
+
+# Giant tan bat
+R:187:0x0F/0x9C
+
+# Owlbear
+R:188:0x03/0x88
+
+# Blue horror
+R:189:0x0E/0xAF
+
+# Hairy mold
+R:190:0x03/0xA7
+
+# Grizzly bear
+R:191:0x0F/0xAB
+
+# Disenchanter mold
+R:192:0x0A/0xA7
+
+# Pseudo dragon
+R:193:0x03/0x9E
+
+# Tengu
+R:194:0x06/0xAF
+
+# Creeping gold coins
+R:195:0x0B/0xF3
+
+# Wolf
+R:196:0x07/0x83
+
+# Giant fruit fly
+R:197:0x0D/0x89
+
+# Panther
+R:198:0x08/0xA0
+
+# Brigand
+R:199:0x06/0xAA
+
+# Hobbes the Tiger
+R:200:0x0B/0xA0
+
+# Shadow Creature of Fiona
+R:201:0x02/0xA2
+
+# Undead mass
+R:202:0x07/0xA4
+
+# Chaos shapechanger
+R:203:0x0A/0x88
+
+# Baby multi-hued dragon
+R:204:0x0A/0x9E
+
+# Vorpal bunny
+R:205:0x01/0xAC
+
+# Old Man Willow
+R:206:0x02/0xCC
+
+# Hippocampus
+R:207:0x0E/0x88
+
+# Zombified orc
+R:208:0x02/0xB4
+
+# Hippogriff
+R:209:0x0F/0x88
+
+# Black mamba
+R:210:0x08/0x8A
+
+# White wolf
+R:211:0x01/0x83
+
+# Grape jelly
+R:212:0x0A/0xA4
+
+# Nether worm mass
+R:213:0x08/0xB1
+
+# Abyss worm mass
+R:214:0x08/0xB1
+
+# Golfimbul, the Hill Orc Chief
+R:215:0x0B/0xA9
+
+# Swordsman
+R:216:0x07/0xAA
+
+# Skaven shaman
+R:217:0x05/0xAC
+
+# Baby bronze dragon
+R:218:0x0F/0x9E
+
+# Baby gold dragon
+R:219:0x0B/0x9E
+
+# Evil eye
+R:220:0x08/0x9F
+
+# Mine-dog
+R:221:0x07/0x83
+
+# Hellcat
+R:222:0x0C/0xA0
+
+# Moon beast
+R:223:0x09/0xAB
+
+# Master yeek
+R:224:0x05/0xB3
+
+# Priest
+R:225:0x05/0xAA
+
+# Dark elven priest
+R:226:0x05/0xA2
+
+# Air spirit
+R:227:0x0E/0x85
+
+# Skeleton human
+R:228:0x09/0xAD
+
+# Zombified human
+R:229:0x02/0xB4
+
+# Tiger
+R:230:0x03/0xA0
+
+# Moaning spirit
+R:231:0x07/0x87
+
+# Stegocentipede
+R:232:0x07/0x9D
+
+# Spotted jelly
+R:233:0x03/0xA4
+
+# Drider
+R:234:0x06/0x93
+
+# Mongbat
+R:235:0x0F/0x9C
+
+# Killer brown beetle
+R:236:0x07/0x8B
+
+# Boldor, King of the Yeeks
+R:237:0x0A/0xB3
+
+# Ogre
+R:238:0x0F/0x8F
+
+# Creeping mithril coins
+R:239:0x0E/0xF3
+
+# Illusionist
+R:240:0x0C/0xAA
+
+# Druid
+R:241:0x0D/0xAA
+
+# Pink horror
+R:242:0x0C/0xAF
+
+# Cloaker
+R:243:0x05/0xE2
+
+# Black orc
+R:244:0x08/0xA9
+
+# Ochre jelly
+R:245:0x0F/0xA4
+
+# Software bug
+R:246:0x04/0x89
+
+# Lurker
+R:247:0x01/0xB5
+
+# Tangleweed
+R:248:0x05/0xCC
+
+# Vlasta
+R:249:0x0E/0x92
+
+# Giant white dragon fly
+R:250:0x01/0x86
+
+# Snaga sapper
+R:251:0x0F/0xA9
+
+# Blue icky thing
+R:252:0x06/0xA3
+
+# Gibbering mouther
+R:253:0x03/0xA4
+
+# Wolfhound of Flora
+R:254:0x02/0x83
+
+# Hill giant
+R:255:0x0F/0x90
+
+# Flesh golem
+R:256:0x0C/0xA1
+
+# Warg
+R:257:0x08/0x83
+
+# Cheerful leprechaun
+R:258:0x0D/0xA2
+
+# Giant flea
+R:259:0x02/0x89
+
+# Ufthak of Cirith Ungol
+R:260:0x05/0xA9
+
+# Clay golem
+R:261:0x0F/0xA1
+
+# Black ogre
+R:262:0x08/0x8F
+
+# Dweller on the threshold
+R:263:0x02/0x99
+
+# Half-orc
+R:264:0x02/0xA9
+
+# Dark naga
+R:265:0x02/0xA8
+
+# Poison ivy
+R:266:0x05/0xCC
+
+# Magic mushroom patch
+R:267:0x0E/0xEE
+
+# Plaguebearer of Nurgle
+R:268:0x03/0xB4
+
+# Guardian naga
+R:269:0x0B/0xA8
+
+# Wererat
+R:270:0x08/0xAC
+
+# Light hound
+R:271:0x03/0x9A
+
+# Dark hound
+R:272:0x08/0x9A
+
+# Flying skull
+R:273:0x02/0xAD
+
+# Mi-Go
+R:274:0x0C/0x89
+
+# Giant tarantula
+R:275:0x03/0x93
+
+# Giant clear centipede
+R:276:0x0E/0x9D
+
+# Mirkwood spider
+R:277:0x0D/0x93
+
+# Frost giant
+R:278:0x01/0x90
+
+# Griffon
+R:279:0x07/0x88
+
+# Homunculus
+R:280:0x0B/0xAF
+
+# Gnome mage
+R:281:0x0C/0xA2
+
+# Clear hound
+R:282:0x0E/0x9A
+
+# Umber hulk
+R:283:0x0F/0x98
+
+# Rust monster
+R:284:0x03/0xAB
+
+# Ogrillon
+R:285:0x09/0x8F
+
+# Gelatinous cube
+R:286:0x0D/0xA4
+
+# Giant green dragon fly
+R:287:0x0D/0x86
+
+# Fire giant
+R:288:0x04/0x90
+
+# Hummerhorn
+R:289:0x0B/0x89
+
+# Lizard man
+R:290:0x0D/0xA2
+
+# Ulfast, Son of Ulfang
+R:291:0x0F/0xAA
+
+# Crebain
+R:292:0x08/0x82
+
+# Berserker
+R:293:0x07/0xAA
+
+# Quasit
+R:294:0x03/0xAF
+
+# Sphinx
+R:295:0x03/0x88
+
+# Imp
+R:296:0x05/0xAF
+
+# Forest troll
+R:297:0x05/0x94
+
+# Freezing sphere
+R:298:0x01/0xF0
+
+# Jumping fireball
+R:299:0x04/0xF0
+
+# Ball lightning
+R:300:0x0E/0xF0
+
+# 2-headed hydra
+R:301:0x07/0x8D
+
+# Swamp thing
+R:302:0x05/0x88
+
+# Water spirit
+R:303:0x06/0x85
+
+# Giant red scorpion
+R:304:0x04/0x93
+
+# Earth spirit
+R:305:0x07/0x85
+
+# Fire spirit
+R:306:0x04/0x85
+
+# Fire hound
+R:307:0x04/0x9A
+
+# Cold hound
+R:308:0x01/0x9A
+
+# Energy hound
+R:309:0x06/0x9A
+
+# Lesser Mimic
+R:310:0x0B/0xA7
+
+# Door mimic
+R:311:0x0F/0xB8
+
+# Blink dog
+R:312:0x0E/0x83
+
+# Uruk
+R:313:0x0E/0xA9
+
+# Shagrat, the Orc Captain
+R:314:0x05/0xA9
+
+# Gorbag, the Orc Captain
+R:315:0x05/0xA9
+
+# Shambling mound
+R:316:0x05/0xEE
+
+# Giant Venus Flytrap
+R:317:0x05/0xCC
+
+# Chaos beastman
+R:318:0x07/0x88
+
+# Daemonette of Slaanesh
+R:319:0x0C/0xAF
+
+# Giant bronze dragon fly
+R:320:0x0F/0x86
+
+# Stone giant
+R:321:0x09/0x90
+
+# Giant black dragon fly
+R:322:0x02/0x86
+
+# Stone golem
+R:323:0x09/0xA1
+
+# Red mold
+R:324:0x04/0xA7
+
+# Giant gold dragon fly
+R:325:0x0B/0x86
+
+# Stunwall
+R:326:0x09/0xBC
+
+# Ghast
+R:327:0x07/0xB4
+
+# Neekerbreeker
+R:328:0x08/0x89
+
+# Huorn
+R:329:0x05/0xCC
+
+# Bolg, Son of Azog
+R:330:0x0A/0xA9
+
+# Phase spider
+R:331:0x0E/0x93
+
+# Lizard king
+R:332:0x05/0xA2
+
+# Landmine
+R:333:0x01/0xB5
+
+# Wyvern
+R:334:0x05/0x9E
+
+# Great eagle
+R:335:0x07/0x82
+
+# Livingstone
+R:336:0x09/0xBC
+
+# Earth hound
+R:337:0x07/0x9A
+
+# Air hound
+R:338:0x05/0x9A
+
+# Sabre-tooth tiger
+R:339:0x0B/0xA0
+
+# Acid hound
+R:340:0x02/0x9A
+
+# Chimaera
+R:341:0x04/0x88
+
+# Quylthulg
+R:342:0x0B/0x91
+
+# Sasquatch
+R:343:0x09/0x99
+
+# Weir
+R:344:0x09/0x83
+
+# Ranger
+R:345:0x09/0xAA
+
+# Paladin
+R:346:0x01/0xAA
+
+# Werewolf
+R:347:0x08/0x83
+
+# Dark elven lord
+R:348:0x02/0xA2
+
+# Cloud giant
+R:349:0x06/0x90
+
+# Ugluk, the Uruk
+R:350:0x0A/0xA9
+
+# Blue dragon bat
+R:351:0x06/0x9C
+
+# Mimic
+R:352:0x0B/0xA7
+
+# Ultimate Mimic
+R:353:0x0B/0xA7
+
+# Fire vortex
+R:354:0x04/0xB0
+
+# Acid vortex
+R:355:0x02/0xB0
+
+# Lugdush, the Uruk
+R:356:0x0A/0xA9
+
+# Arch-vile
+R:357:0x09/0xAF
+
+# Cold vortex
+R:358:0x01/0xB0
+
+# Energy vortex
+R:359:0x06/0xB0
+
+# Globefish
+R:360:0x01/0x7E
+
+# Giant firefly
+R:361:0x04/0x89
+
+# Mummified orc
+R:362:0x01/0xB4
+
+# Wolf chieftain
+R:363:0x08/0x83
+
+# Serpent man
+R:364:0x0D/0x8A
+
+# Vampiric mist
+R:365:0x08/0xCA
+
+# Killer stag beetle
+R:366:0x05/0x8B
+
+# Iron golem
+R:367:0x02/0xA1
+
+# Auto-roller
+R:368:0x02/0xA1
+
+# Giant yellow scorpion
+R:369:0x0B/0x93
+
+# Jade monk
+R:370:0x0D/0xAA
+
+# Black ooze
+R:371:0x08/0xA4
+
+# Hardened warrior
+R:372:0x07/0xAA
+
+# Azog, King of the Uruk-Hai
+R:373:0x0A/0xA9
+
+# Fleshhound of Khorne
+R:374:0x0C/0x83
+
+# Dark elven warlock
+R:375:0x0A/0xA2
+
+# Master rogue
+R:376:0x06/0xAA
+
+# Red dragon bat
+R:377:0x04/0x9C
+
+# Killer white beetle
+R:378:0x01/0x8B
+
+# Ice skeleton
+R:379:0x01/0xAD
+
+# Angamaite of Umbar
+R:380:0x0F/0xAA
+
+# Forest wight
+R:381:0x05/0x97
+
+# Khim, Son of Mim
+R:382:0x03/0xA2
+
+# Ibun, Son of Mim
+R:383:0x03/0xA2
+
+# Meneldor the Swift
+R:384:0x07/0x82
+
+# Phantom beast
+R:385:0x0E/0x87
+
+# Giant silver ant
+R:386:0x09/0x9B
+
+# 4-headed hydra
+R:387:0x0B/0x8D
+
+# Lesser hell-beast
+R:388:0x02/0x95
+
+# Tyrannosaur
+R:389:0x05/0x92
+
+# Mummified human
+R:390:0x01/0xB4
+
+# Vampire bat
+R:391:0x08/0x9C
+
+# Sangahyando of Umbar
+R:392:0x0F/0xAA
+
+# It
+R:393:0x09/0xB5
+
+# Banshee
+R:394:0x06/0x87
+
+# Carrion crawler
+R:395:0x03/0x9D
+
+# Xiclotlan
+R:396:0x08/0xCC
+
+# Silent watcher
+R:397:0x02/0xA1
+
+# Pukelman
+R:398:0x08/0xA1
+
+# Disenchanter beast
+R:399:0x0A/0xAB
+
+# Dark elven druid
+R:400:0x0D/0xA2
+
+# Stone troll
+R:401:0x09/0x94
+
+# Black
+R:402:0x00/0xA4
+
+# Hill troll
+R:403:0x02/0x94
+
+# Wereworm
+R:404:0x07/0xB1
+
+# Killer red beetle
+R:405:0x04/0x8B
+
+# Disenchanter bat
+R:406:0x0A/0x9C
+
+# Gnoph-Keh
+R:407:0x02/0xAB
+
+# Giant grey ant
+R:408:0x02/0x9B
+
+# Khufu, the Mummified King
+R:409:0x0A/0xB4
+
+# Gwaihir the Windlord
+R:410:0x07/0x82
+
+# Giant fire tick
+R:411:0x0C/0x93
+
+# Displacer beast
+R:412:0x06/0xA0
+
+# Ulwarth, Son of Ulfang
+R:413:0x0F/0xAA
+
+# Werebear
+R:414:0x08/0xAB
+
+# Cave ogre
+R:415:0x07/0x8F
+
+# White wraith
+R:416:0x01/0x97
+
+# Angel
+R:417:0x03/0x81
+
+# Ghoul
+R:418:0x0F/0xB4
+
+# Mim, Betrayer of Turin
+R:419:0x03/0xA2
+
+# Hellblade
+R:420:0x0A/0xDC
+
+# Killer fire beetle
+R:421:0x0C/0x8B
+
+# Beast of Nurgle
+R:422:0x0B/0xAB
+
+# Creeping adamantite coins
+R:423:0x0D/0xF3
+
+# Algroth
+R:424:0x03/0x94
+
+# Flamer of Tzeentch
+R:425:0x04/0xEE
+
+# Roper
+R:426:0x08/0xBC
+
+# Headless
+R:427:0x07/0x88
+
+# Vibration hound
+R:428:0x0B/0x9A
+
+# Nexus hound
+R:429:0x0A/0x9A
+
+# Half-ogre
+R:430:0x03/0x8F
+
+# Lokkak, the Ogre Chieftain
+R:431:0x0A/0x8F
+
+# Vampire
+R:432:0x09/0x96
+
+# Gorgimaera
+R:433:0x03/0x88
+
+# Shantak
+R:434:0x08/0x88
+
+# Colbran
+R:435:0x0B/0xA1
+
+# Spirit naga
+R:436:0x01/0xA8
+
+# Corpser
+R:437:0x08/0xEE
+
+# Fiend of Slaanesh
+R:438:0x0C/0x93
+
+# Stairway to Hell
+R:439:0x09/0xB7
+
+# 5-headed hydra
+R:440:0x05/0x8D
+
+# Barney the Dinosaur
+R:441:0x0A/0x92
+
+# Black knight
+R:442:0x02/0xAA
+
+# Seahorse
+R:443:0x03/0x7E
+
+# Cyclops
+R:444:0x07/0x90
+
+# Clairvoyant
+R:445:0x0B/0xAA
+
+# Purple worm
+R:446:0x0A/0xB1
+
+# Catoblepas
+R:447:0x05/0xAB
+
+# Lesser wall monster
+R:448:0x09/0xBC
+
+# Mage
+R:449:0x04/0xAA
+
+# Mind flayer
+R:450:0x0A/0xA2
+
+# The Ultimate Dungeon Cleaner
+R:451:0x08/0xA1
+
+# Deep one
+R:452:0x05/0xAF
+
+# Basilisk
+R:453:0x02/0x92
+
+# Ice troll
+R:454:0x01/0x94
+
+# Dhole
+R:455:0x02/0xB1
+
+# Archangel
+R:456:0x0E/0x81
+
+# Greater Mimic
+R:457:0x0B/0xA7
+
+# Chaos tile
+R:458:0x0A/0xB5
+
+# Young blue dragon
+R:459:0x06/0x9E
+
+# Young white dragon
+R:460:0x01/0x9E
+
+# Young green dragon
+R:461:0x05/0x9E
+
+# Young bronze dragon
+R:462:0x0F/0x9E
+
+# Aklash
+R:463:0x0C/0x94
+
+# Mithril golem
+R:464:0x0E/0xA1
+
+# Skeleton troll
+R:465:0x09/0xAD
+
+# Skeletal tyrannosaur
+R:466:0x01/0x92
+
+# Beorn, the Shape-Changer
+R:467:0x08/0xAB
+
+# Thorondor, Lord of Eagles
+R:468:0x07/0x82
+
+# Giant blue ant
+R:469:0x06/0x9B
+
+# Grave wight
+R:470:0x06/0x97
+
+# Shadow drake
+R:471:0x0D/0x9E
+
+# Manticore
+R:472:0x0B/0x88
+
+# Giant army ant
+R:473:0x03/0x9B
+
+# Killer slicer beetle
+R:474:0x0B/0x8B
+
+# Gorgon
+R:475:0x06/0x88
+
+# Gug
+R:476:0x0D/0x90
+
+# Ghost
+R:477:0x01/0x87
+
+# Death watch beetle
+R:478:0x08/0x8B
+
+# Mountain ogre
+R:479:0x02/0x8F
+
+# Nexus quylthulg
+R:480:0x0A/0x91
+
+# Shelob, Spider of Darkness
+R:481:0x08/0x93
+
+# Giant squid
+R:482:0x05/0x7E
+
+# Ghoulking
+R:483:0x08/0xB4
+
+# Doombat
+R:484:0x0C/0x9C
+
+# Ninja
+R:485:0x07/0xAA
+
+# Memory moss
+R:486:0x06/0xEE
+
+# Storm giant
+R:487:0x0E/0x90
+
+# Spectator
+R:488:0x0E/0x9F
+
+# Bokrug
+R:489:0x0A/0x92
+
+# Biclops
+R:490:0x07/0x90
+
+# Half-troll
+R:491:0x0F/0x94
+
+# Ivory monk
+R:492:0x01/0xAA
+
+# Bert the Stone Troll
+R:493:0x09/0x94
+
+# Bill the Stone Troll
+R:494:0x09/0x94
+
+# Tom the Stone Troll
+R:495:0x09/0x94
+
+# Cave troll
+R:496:0x07/0x94
+
+# Anti-paladin
+R:497:0x08/0xAA
+
+# Chaos master
+R:498:0x0A/0xAA
+
+# Barrow wight
+R:499:0x0A/0x97
+
+# Skeleton ettin
+R:500:0x09/0xAD
+
+# Chaos drake
+R:501:0x0A/0x9E
+
+# Law drake
+R:502:0x0E/0x9E
+
+# Balance drake
+R:503:0x0A/0x9E
+
+# Ethereal drake
+R:504:0x03/0x9E
+
+# Groo, the Wanderer
+R:505:0x0F/0xAA
+
+# Fasolt the Giant
+R:506:0x07/0x90
+
+# Shade
+R:507:0x08/0x87
+
+# Spectre
+R:508:0x0F/0x87
+
+# Water troll
+R:509:0x0E/0x94
+
+# Fire elemental
+R:510:0x04/0x85
+
+# Cherub
+R:511:0x0D/0x81
+
+# Water elemental
+R:512:0x06/0x85
+
+# Multi-hued hound
+R:513:0x0A/0x9A
+
+# Invisible stalker
+R:514:0x0B/0x85
+
+# Carrion crawler
+R:515:0x03/0x9D
+
+# Master thief
+R:516:0x06/0xAA
+
+# The Watcher in the Water
+R:517:0x0A/0x7E
+
+# Lich
+R:518:0x03/0x8C
+
+# Gas spore
+R:519:0x05/0x9F
+
+# Master vampire
+R:520:0x05/0x96
+
+# Oriental vampire
+R:521:0x02/0x96
+
+# Greater mummy
+R:522:0x0B/0xB4
+
+# Bloodletter of Khorne
+R:523:0x04/0x95
+
+# Giant grey scorpion
+R:524:0x02/0x93
+
+# Earth elemental
+R:525:0x07/0x85
+
+# Air elemental
+R:526:0x0E/0x85
+
+# Shimmering mold
+R:527:0x06/0xA7
+
+# Gargoyle
+R:528:0x02/0xAF
+
+# Malicious leprechaun
+R:529:0x0A/0xA2
+
+# Eog golem
+R:530:0x07/0xA1
+
+# Little Boy
+R:531:0x08/0xD6
+
+# Dagashi
+R:532:0x07/0xAA
+
+# Headless ghost
+R:533:0x07/0x87
+
+# Dread
+R:534:0x03/0x87
+
+# Leng spider
+R:535:0x0A/0x93
+
+# Gauth
+R:536:0x02/0x9F
+
+# Smoke elemental
+R:537:0x0C/0x85
+
+# Olog
+R:538:0x0B/0x94
+
+# Halfling slinger
+R:539:0x0F/0xA2
+
+# Gravity hound
+R:540:0x09/0x9A
+
+# Acidic cytoplasm
+R:541:0x02/0xA4
+
+# Inertia hound
+R:542:0x09/0x9A
+
+# Impact hound
+R:543:0x07/0x9A
+
+# Shardstorm
+R:544:0x07/0xB0
+
+# Ooze elemental
+R:545:0x05/0x85
+
+# Young black dragon
+R:546:0x02/0x9E
+
+# Mumak
+R:547:0x02/0xAB
+
+# Giant fire ant
+R:548:0x0C/0x9B
+
+# Mature white dragon
+R:549:0x01/0x9E
+
+# Xorn
+R:550:0x07/0x98
+
+# Rogrog the Black Troll
+R:551:0x08/0x94
+
+# Mist giant
+R:552:0x0E/0xCA
+
+# Phantom
+R:553:0x0A/0x87
+
+# Grey wraith
+R:554:0x02/0x97
+
+# Revenant
+R:555:0x07/0x97
+
+# Young multi-hued dragon
+R:556:0x0A/0x9E
+
+# Raal's Tome of Destruction
+R:557:0x04/0xEF
+
+# Colossus
+R:558:0x0D/0xA1
+
+# Young gold dragon
+R:559:0x0B/0x9E
+
+# Mature blue dragon
+R:560:0x06/0x9E
+
+# Mature green dragon
+R:561:0x05/0x9E
+
+# Mature bronze dragon
+R:562:0x0F/0x9E
+
+# Young red dragon
+R:563:0x04/0x9E
+
+# Nightblade
+R:564:0x08/0xA2
+
+# Trapper
+R:565:0x01/0xB5
+
+# Bodak
+R:566:0x04/0xAF
+
+# Time bomb
+R:567:0x01/0xB5
+
+# Mezzodaemon
+R:568:0x03/0xAF
+
+# Elder thing
+R:569:0x0D/0xAF
+
+# Ice elemental
+R:570:0x01/0x85
+
+# Necromancer
+R:571:0x0C/0xAA
+
+# The Greater hell magic mushroom were-quylthulg
+R:572:0x02/0x91
+
+# Lorgan, Chief of the Easterlings
+R:573:0x0A/0xAA
+
+# Chaos spawn
+R:574:0x02/0x9F
+
+# Mummified troll
+R:575:0x01/0xB4
+
+# Storm of Unmagic
+R:576:0x0A/0xB0
+
+# Crypt thing
+R:577:0x0D/0x8C
+
+# Chaos butterfly
+R:578:0x0D/0x89
+
+# Time elemental
+R:579:0x0D/0x85
+
+# Flying polyp
+R:580:0x0C/0x7E
+
+# The Queen Ant
+R:581:0x0A/0x9B
+
+# Will o' the wisp
+R:582:0x09/0x85
+
+# Shan
+R:583:0x0E/0x89
+
+# Magma elemental
+R:584:0x03/0x85
+
+# Black pudding
+R:585:0x08/0xA4
+
+# Killer iridescent beetle
+R:586:0x0A/0x8B
+
+# Nexus vortex
+R:587:0x0A/0xB0
+
+# Plasma vortex
+R:588:0x0C/0xB0
+
+# Mature red dragon
+R:589:0x04/0x9E
+
+# Mature gold dragon
+R:590:0x0B/0x9E
+
+# Crystal drake
+R:591:0x07/0x9E
+
+# Mature black dragon
+R:592:0x02/0x9E
+
+# Mature multi-hued dragon
+R:593:0x0A/0x9E
+
+# Sky whale
+R:594:0x0D/0x7E
+
+# Draebor, the Imp
+R:595:0x0A/0xAF
+
+# Mother Hydra
+R:596:0x0A/0xAF
+
+# Death knight
+R:597:0x08/0xAA
+
+# Castamir the Usurper
+R:598:0x0C/0xAA
+
+# Time vortex
+R:599:0x0E/0xB0
+
+# Shimmering vortex
+R:600:0x03/0xB0
+
+# Ancient blue dragon
+R:601:0x06/0x84
+
+# Ancient bronze dragon
+R:602:0x0F/0x84
+
+# Beholder
+R:603:0x0F/0x9F
+
+# Emperor wight
+R:604:0x04/0x97
+
+# Seraph
+R:605:0x04/0x81
+
+# Vargo, Tyrant of Fire
+R:606:0x04/0x85
+
+# Black wraith
+R:607:0x08/0x97
+
+# Nightgaunt
+R:608:0x08/0x95
+
+# Baron of hell
+R:609:0x0F/0x95
+
+# Scylla
+R:610:0x0E/0x8D
+
+# Monastic lich
+R:611:0x07/0x8C
+
+# Nether wraith
+R:612:0x0D/0x97
+
+# Hellhound
+R:613:0x04/0x83
+
+# 7-headed hydra
+R:614:0x0D/0x8D
+
+# Waldern, King of Water
+R:615:0x06/0x85
+
+# Kavlax the Many-Headed
+R:616:0x0A/0x9E
+
+# Ancient white dragon
+R:617:0x01/0x84
+
+# Ancient green dragon
+R:618:0x05/0x84
+
+# Chthonian
+R:619:0x08/0xB1
+
+# Eldrak
+R:620:0x04/0x94
+
+# Ettin
+R:621:0x06/0x94
+
+# Night mare
+R:622:0x0D/0xAB
+
+# Vampire lord
+R:623:0x06/0x96
+
+# Ancient black dragon
+R:624:0x02/0x84
+
+# Weird fume
+R:625:0x0A/0xCA
+
+# Spawn of Ubbo-Sathla
+R:626:0x0A/0xA4
+
+# Fat Man
+R:627:0x08/0xD6
+
+# Malekith the Accursed
+R:628:0x0A/0xA2
+
+# Shadowfax, steed of Gandalf
+R:629:0x0A/0xAB
+
+# Spirit troll
+R:630:0x0D/0x87
+
+# War troll
+R:631:0x06/0x94
+
+# Disenchanter worm mass
+R:632:0x0A/0xB1
+
+# Rotting quylthulg
+R:633:0x07/0x91
+
+# Lesser titan
+R:634:0x0B/0x90
+
+# 9-headed hydra
+R:635:0x04/0x8D
+
+# Enchantress
+R:636:0x0C/0xAA
+
+# Ranger chieftain
+R:637:0x09/0xAA
+
+# Sorcerer
+R:638:0x0C/0xAA
+
+# Xaren
+R:639:0x02/0x98
+
+# Giant roc
+R:640:0x07/0x82
+
+# Minotaur
+R:641:0x0F/0x88
+
+# Medusa, the Gorgon
+R:642:0x0A/0xA8
+
+# Death drake
+R:643:0x0D/0x84
+
+# Ancient red dragon
+R:644:0x04/0x84
+
+# Ancient gold dragon
+R:645:0x0B/0x84
+
+# Great crystal drake
+R:646:0x0F/0x84
+
+# Wyrd sister
+R:647:0x0A/0xAA
+
+# Vrock
+R:648:0x02/0x95
+
+# Death quasit
+R:649:0x08/0xAF
+
+# Giganto, the Gargantuan
+R:650:0x02/0x7E
+
+# Strygalldwir
+R:651:0x09/0x95
+
+# Fallen angel
+R:652:0x02/0x81
+
+# Giant headless
+R:653:0x07/0x88
+
+# Judge Fire
+R:654:0x0C/0xAD
+
+# Ubbo-Sathla, the Unbegotten Source
+R:655:0x09/0xA4
+
+# Judge Mortis
+R:656:0x0D/0xB4
+
+# Dark elven sorcerer
+R:657:0x0C/0xA2
+
+# Master lich
+R:658:0x04/0x8C
+
+# Byakhee
+R:659:0x08/0x95
+
+# Eol, the Dark Elf
+R:660:0x08/0xA2
+
+# Archon
+R:661:0x0B/0x81
+
+# Formless spawn of Tsathoggua
+R:662:0x08/0x95
+
+# Hunting horror
+R:663:0x08/0x95
+
+# Undead beholder
+R:664:0x07/0x9F
+
+# Shadow
+R:665:0x08/0x87
+
+# Iron lich
+R:666:0x02/0x8C
+
+# Dread
+R:667:0x03/0x87
+
+# Greater basilisk
+R:668:0x08/0x92
+
+# Charybdis
+R:669:0x04/0x7E
+
+# Jack of Shadows
+R:670:0x02/0xAA
+
+# Zephyr Lord
+R:671:0x0A/0x97
+
+# Juggernaut of Khorne
+R:672:0x08/0xA1
+
+# Mumak
+R:673:0x02/0xAB
+
+# Judge Fear
+R:674:0x08/0x97
+
+# Ancient multi-hued dragon
+R:675:0x0A/0x84
+
+# Ethereal dragon
+R:676:0x03/0x84
+
+# Dark young of Shub-Niggurath
+R:677:0x05/0x95
+
+# Colour out of space
+R:678:0x0A/0xB5
+
+# Quaker, Master of Earth
+R:679:0x07/0x85
+
+# Death leprechaun
+R:680:0x08/0xA2
+
+# Chaugnar Faugn, Horror from the Hills
+R:681:0x08/0xAB
+
+# Lloigor
+R:682:0x0E/0xB0
+
+# Utgard-Loke
+R:683:0x0A/0x90
+
+# Quachil Uttaus, Treader of the Dust
+R:684:0x08/0xB4
+
+# Shoggoth
+R:685:0x08/0xA4
+
+# Judge Death
+R:686:0x08/0x97
+
+# Ariel, Queen of Air
+R:687:0x0E/0x85
+
+# 11-headed hydra
+R:688:0x0C/0x8D
+
+# Patriarch
+R:689:0x0D/0xAA
+
+# Dreadmaster
+R:690:0x0B/0x87
+
+# Drolem
+R:691:0x05/0xA1
+
+# Scatha the Worm
+R:692:0x09/0x84
+
+# Warrior of the Dawn
+R:693:0x0C/0xAA
+
+# Lesser black reaver
+R:694:0x08/0x8C
+
+# Zoth-Ommog
+R:695:0x0A/0x92
+
+# Grand master thief
+R:696:0x06/0xAA
+
+# Smaug the Golden
+R:697:0x0C/0x84
+
+# The Stormbringer
+R:698:0x08/0xDC
+
+# Knight Templar
+R:699:0x01/0xAA
+
+# Leprechaun fanatic
+R:700:0x04/0xA2
+
+# Dracolich
+R:701:0x0D/0x84
+
+# Greater titan
+R:702:0x03/0x90
+
+# Dracolisk
+R:703:0x0C/0x84
+
+# Winged Horror
+R:704:0x08/0x82
+
+# Spectral tyrannosaur
+R:705:0x0D/0x92
+
+# Yibb-Tstll, the Patient One
+R:706:0x08/0x90
+
+# Ghatanothoa
+R:707:0x08/0xB0
+
+# Ent
+R:708:0x0D/0xCC
+
+# Hru
+R:709:0x02/0x90
+
+# Itangast the Fire Drake
+R:710:0x0C/0x84
+
+# Death mold
+R:711:0x08/0xA7
+
+# Fafner the Dragon
+R:712:0x0D/0x84
+
+# Charon, Boatman of the Styx
+R:713:0x0E/0x97
+
+# Quickbeam, the Ent
+R:714:0x0D/0xCC
+
+# Glaurung, Father of the Dragons
+R:715:0x0C/0x84
+
+# Behemoth
+R:716:0x0E/0x88
+
+# Garm, Guardian of Hel
+R:717:0x06/0x83
+
+# Greater wall monster
+R:718:0x09/0xBC
+
+# Nycadaemon
+R:719:0x03/0x95
+
+# Barbazu
+R:720:0x0D/0x95
+
+# Goat of Mendes
+R:721:0x08/0xAB
+
+# Nightwing
+R:722:0x08/0x97
+
+# Maulotaur
+R:723:0x02/0x88
+
+# Nether hound
+R:724:0x0D/0x9A
+
+# Time hound
+R:725:0x0E/0x9A
+
+# Plasma hound
+R:726:0x0C/0x9A
+
+# Demonic quylthulg
+R:727:0x04/0x91
+
+# Great Storm Wyrm
+R:728:0x06/0x84
+
+# Ulik the Troll
+R:729:0x0A/0x94
+
+# Baphomet the Minotaur Lord
+R:730:0x0A/0x88
+
+# Hell knight
+R:731:0x08/0xAA
+
+# Bull Gates
+R:732:0x08/0xAA
+
+# Santa Claus
+R:733:0x04/0xA2
+
+# Eihort, the Thing in the Labyrinth
+R:734:0x0C/0xA4
+
+# The King in Yellow
+R:735:0x0B/0x8C
+
+# Great unclean one
+R:736:0x05/0x95
+
+# Lord of Chaos
+R:737:0x0A/0xAA
+
+# Old Sorcerer
+R:738:0x0C/0xAA
+
+# Ethereal hound
+R:739:0x0D/0x9A
+
+# Lesser kraken
+R:740:0x0D/0x7E
+
+# Great Ice Wyrm
+R:741:0x01/0x84
+
+# Demilich
+R:742:0x0F/0x8C
+
+# The Phoenix
+R:743:0x04/0x82
+
+# Nightcrawler
+R:744:0x08/0x97
+
+# Lord of Change
+R:745:0x0A/0x95
+
+# Keeper of Secrets
+R:746:0x0D/0x88
+
+# Shudde M'ell
+R:747:0x02/0xB1
+
+# Hand druj
+R:748:0x0B/0xAD
+
+# Eye druj
+R:749:0x04/0xAD
+
+# Skull druj
+R:750:0x03/0xAD
+
+# Chaos vortex
+R:751:0x0A/0xB0
+
+# Aether vortex
+R:752:0x0A/0xB0
+
+# Nidhogg, the Hel-Drake
+R:753:0x08/0x84
+
+# The Lernaean Hydra
+R:754:0x0A/0x8D
+
+# Thuringwethil, the Vampire Messenger
+R:755:0x0A/0x96
+
+# Great Hell Wyrm
+R:756:0x04/0x84
+
+# Hastur the Unspeakable
+R:757:0x06/0x88
+
+# Bloodthirster
+R:758:0x04/0x95
+
+# Draconic quylthulg
+R:759:0x05/0x91
+
+# Nyogtha, the Thing that Should not Be
+R:760:0x08/0xA4
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0x08/0xBC
+
+# Fundin Bluecloak
+R:762:0x0E/0xA2
+
+# Bile Demon
+R:763:0x0C/0x95
+
+# Uriel, Angel of Fire
+R:764:0x0C/0x81
+
+# Azriel, Angel of Death
+R:765:0x08/0x81
+
+# Ancalagon the Black
+R:766:0x08/0x84
+
+# Daoloth, the Render of the Veils
+R:767:0x02/0x95
+
+# Nightwalker
+R:768:0x08/0x97
+
+# Gabriel, the Messenger
+R:769:0x01/0x81
+
+# Artsi, the Champion of Chaos
+R:770:0x0A/0xA2
+
+# Saruman of Many Colours
+R:771:0x0A/0xAA
+
+# Harowen the Black Hand
+R:772:0x0E/0xAA
+
+# Osyluth
+R:773:0x09/0x95
+
+# Dreadlord
+R:774:0x04/0x87
+
+# Greater kraken
+R:775:0x0D/0x7E
+
+# Archlich
+R:776:0x0E/0x8C
+
+# The Cat Lord
+R:777:0x0A/0xA0
+
+# Jabberwock
+R:778:0x0A/0x88
+
+# Chaos hound
+R:779:0x0A/0x9A
+
+# Vlad Dracula, Prince of Darkness
+R:780:0x08/0x96
+
+# Beholder hive-mother
+R:781:0x0B/0x9F
+
+# Leviathan
+R:782:0x0A/0x7E
+
+# Great Wyrm of Chaos
+R:783:0x0A/0x84
+
+# Great Wyrm of Law
+R:784:0x0E/0x84
+
+# Great Wyrm of Balance
+R:785:0x0A/0x84
+
+# Shambler
+R:786:0x09/0x85
+
+# Gelugon
+R:787:0x01/0x95
+
+# Glaaki
+R:788:0x0A/0x7E
+
+# Trone, the Rebel Thunderlord
+R:789:0x08/0x82
+
+# Great Wyrm of Many Colours
+R:790:0x0A/0x84
+
+# Marda, rider of gold Laronth
+R:791:0x0B/0x82
+
+# Tselakus, the Dreadlord
+R:792:0x0C/0x87
+
+# Sky Drake
+R:793:0x0E/0x84
+
+# Eilinel the Entrapped
+R:794:0x08/0xAA
+
+# Horned Reaper
+R:795:0x0E/0x95
+
+# The Norsa
+R:796:0x0E/0x88
+
+# Rhan-Tegoth
+R:797:0x06/0x93
+
+# Black reaver
+R:798:0x08/0x8C
+
+# Master mindcrafter
+R:799:0x0B/0xAA
+
+# Greater demonic quylthulg
+R:800:0x0C/0x91
+
+# Greater draconic quylthulg
+R:801:0x0D/0x91
+
+# Greater rotting quylthulg
+R:802:0x0F/0x91
+
+# Null, the Living Void
+R:803:0x00/0xB5
+
+# Feagwath, the Undead Sorcerer
+R:804:0x0B/0x8C
+
+# Omarax the Eye Tyrant
+R:805:0x0A/0x9F
+
+# Tsathoggua, the Sleeper of N'kai
+R:806:0x08/0x92
+
+# Greater Balrog
+R:807:0x0A/0x95
+
+# Ungoliant, the Unlight
+R:808:0x08/0x93
+
+# Atlach-Nacha, the Spider God
+R:809:0x08/0x93
+
+# Y'golonac
+R:810:0x0C/0x88
+
+# Aether hound
+R:811:0x0A/0x9A
+
+# Pit Fiend
+R:812:0x03/0x95
+
+# The Serpent of Chaos
+R:813:0x0A/0x8A
+
+# Yig, Father of Serpents
+R:814:0x06/0x8A
+
+# Unmaker
+R:815:0x0A/0x85
+
+# Cyberdemon
+R:816:0x07/0x95
+
+# Hela, Queen of the Dead
+R:817:0x0D/0xAA
+
+# The Mouth of Sauron
+R:818:0x0A/0xAA
+
+# The Necromancer of Dol Guldur
+R:819:0x0A/0xAA
+
+# Lisa, rider of gold Romth
+R:820:0x0B/0x82
+
+# Master quylthulg
+R:821:0x0E/0x91
+
+# Qlzqqlzuup, the Lord of Flesh
+R:822:0x0A/0x91
+
+# Cthugha, the Living Flame
+R:823:0x0C/0x85
+
+# Flare, rider of bronze Moonth
+R:824:0x0F/0x82
+
+# Maeglin, the Traitor of Gondolin
+R:825:0x08/0xA2
+
+# Cyaegha
+R:826:0x0D/0x9F
+
+# Pazuzu, Lord of Air
+R:827:0x06/0x95
+
+# Ithaqua the Windwalker
+R:828:0x0E/0x99
+
+# Greater Hellhound
+R:829:0x04/0x83
+
+# Cantoras, the Skeletal Lord
+R:830:0x0A/0xAD
+
+# Mephistopheles, Lord of Hell
+R:831:0x04/0x95
+
+# Godzilla
+R:832:0x0A/0x92
+
+# Abhoth, Source of Uncleanness
+R:833:0x0D/0xA4
+
+# Ymir, the Ice Giant
+R:834:0x01/0x90
+
+# Loki, the Trickster
+R:835:0x08/0x90
+
+# Star-spawn of Cthulhu
+R:836:0x0D/0x95
+
+# Surtur, the Fire Giant
+R:837:0x04/0x90
+
+# The Tarrasque
+R:838:0x0A/0x92
+
+# Lungorthin, the Balrog of White Fire
+R:839:0x0A/0x95
+
+# Draugluin, Sire of All Werewolves
+R:840:0x0A/0x83
+
+# Shuma-Gorath
+R:841:0x0D/0x9F
+
+# Tulzscha, the Green Flame
+R:842:0x0D/0x85
+
+# Oremorj, the Cyberdemon Lord
+R:843:0x07/0x95
+
+# Vecna, the Emperor Lich
+R:844:0x0A/0x8C
+
+# Yog-Sothoth, the All-in-One
+R:845:0x0A/0xA4
+
+# Fenris Wolf
+R:846:0x08/0x83
+
+# Great Wyrm of Power
+R:847:0x0A/0x84
+
+# Shub-Niggurath, Black Goat of the Woods
+R:848:0x08/0x95
+
+# Nodens, Lord of the Great Abyss
+R:849:0x09/0x90
+
+# Carcharoth, the Jaws of Thirst
+R:850:0x08/0x83
+
+# Nyarlathotep, the Crawling Chaos
+R:851:0x04/0x95
+
+# Azathoth, the Daemon Sultan
+R:852:0x0E/0x85
+
+# Huan, Wolfhound of the Valar
+R:853:0x09/0x83
+
+# Jormungand the Midgard Serpent
+R:854:0x0A/0x8A
+
+# The Destroyer
+R:855:0x0A/0xA1
+
+# Gothmog, the High Captain of Balrogs
+R:856:0x0A/0x95
+
+# Great Cthulhu
+R:857:0x05/0x95
+
+# Sarko, rider of gold Foronth
+R:858:0x0B/0x82
+
+# The Unicorn of Order
+R:859:0x01/0xAB
+
+# Sauron, the Sorcerer
+R:860:0x0A/0xAA
+
+# DarkGod, the Mighty Coder of Hell
+R:861:0x0E/0x90
+
+# Morgoth, Lord of Darkness
+R:862:0x08/0x90
+
+# Human Warrior
+R:863:0x07/0xAA
+
+# Elven archer
+R:864:0x09/0xA2
+
+# Dwarven warrior
+R:865:0x0F/0xA2
+
+# Elite uruk
+R:866:0x01/0xA9
+
+# The Philosophy Teacher
+R:867:0x04/0xAA
+
+# The Variant Maintainer
+R:868:0x0E/0xAA
+
+# Random Number Generator
+R:869:0x06/0x89
+
+# Rocket mine
+R:870:0x0C/0xB5
+
+# Bouncing mine
+R:871:0x0E/0xB5
+
+# Durin's Bane
+R:872:0x0A/0x95
+
+# The Icky Queen
+R:873:0x0A/0xA3
+
+# Rot jelly
+R:874:0x07/0xA4
+
+# Death
+R:875:0x08/0x87
+
+# Famine
+R:876:0x0F/0x87
+
+# Pestilence
+R:877:0x0D/0x87
+
+# War
+R:878:0x04/0x87
+
+# Pike
+R:879:0x02/0x7E
+
+# Electric eel
+R:880:0x0E/0x8A
+
+# Giant crayfish
+R:881:0x0C/0x7E
+
+# Mermaid
+R:882:0x0D/0xA2
+
+# Box jellyfish
+R:883:0x0E/0x7E
+
+# Giant piranha
+R:884:0x05/0x7E
+
+# Piranha
+R:885:0x05/0x7E
+
+# Bullywug
+R:886:0x05/0xA2
+
+# Bullywug warrior
+R:887:0x05/0xA2
+
+# Bullywug shaman
+R:888:0x05/0xA2
+
+# Whale
+R:889:0x0D/0x7E
+
+# Sand mite
+R:890:0x0E/0x7E
+
+# Octopus
+R:891:0x05/0x7E
+
+# Giant octopus
+R:892:0x05/0x7E
+
+# Eye of the deep
+R:893:0x06/0x9F
+
+# Murk dweller
+R:894:0x02/0x93
+
+# Drowned soul
+R:895:0x0E/0x87
+
+# Tiger shark
+R:896:0x05/0x7E
+
+# Hammerhead shark
+R:897:0x05/0x7E
+
+# Great white shark
+R:898:0x01/0x7E
+
+# Aquatic golem
+R:899:0x06/0xA1
+
+# Aquatic kobold
+R:900:0x0E/0xA5
+
+# White shark
+R:901:0x09/0x7E
+
+# Scrag
+R:902:0x0E/0x94
+
+# Jaws
+R:903:0x01/0x7E
+
+# Aquatic elf
+R:904:0x06/0xA2
+
+# Aquatic elven warrior
+R:905:0x06/0xA2
+
+# Aquatic elven shaman
+R:906:0x06/0xA2
+
+# Stargazer
+R:907:0x0B/0x7E
+
+# Elder stargazer
+R:908:0x0B/0x7E
+
+# Flounder
+R:909:0x02/0x7E
+
+# Giant turtle
+R:910:0x0D/0x92
+
+# Baby dragon turtle
+R:911:0x09/0x9E
+
+# Young dragon turtle
+R:912:0x09/0x9E
+
+# Mature dragon turtle
+R:913:0x09/0x9E
+
+# Ancient dragon turtle
+R:914:0x09/0x84
+
+# Fastitocalon
+R:915:0x05/0x84
+
+# Undead stargazer
+R:916:0x0B/0x7E
+
+# Killer whale
+R:917:0x01/0x7E
+
+# Merrow
+R:918:0x0E/0x8F
+
+# Water naga
+R:919:0x0E/0xA8
+
+# Devilfish
+R:920:0x02/0x7E
+
+# Undead devilfish
+R:921:0x08/0x7E
+
+# Moby Dick, the White Whale
+R:922:0x01/0x7E
+
+# Aquatic hound
+R:923:0x0E/0x9A
+
+# Water demon
+R:924:0x0E/0x95
+
+# Ixitxachitl
+R:925:0x02/0x7E
+
+# Ixitxachitl priest
+R:926:0x02/0x7E
+
+# Vampiric ixitxachitl
+R:927:0x08/0x7E
+
+# Mathilde, the Science Student
+R:928:0x0B/0xA2
+
+# Child spirit
+R:929:0x09/0x87
+
+# Young spirit
+R:930:0x09/0x87
+
+# Mature spirit
+R:931:0x09/0x87
+
+# Experienced spirit
+R:932:0x09/0x87
+
+# Wise spirit
+R:933:0x09/0x87
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0x0D/0xCC
+
+# Gandalf the Grey
+R:935:0x02/0xAA
+
+# Nar, the Dwarf
+R:936:0x0B/0xA2
+
+# Novice mindcrafter
+R:937:0x0B/0xAA
+
+# Great Swamp Wyrm
+R:938:0x05/0x84
+
+# Great Bile Wyrm
+R:939:0x02/0x84
+
+# Blue Firebird
+R:940:0x0E/0x82
+
+# Green Firebird
+R:941:0x0D/0x82
+
+# Brown Firebird
+R:942:0x07/0x82
+
+# Bronze Firebird
+R:943:0x0F/0x82
+
+# Gold Firebird
+R:944:0x0B/0x82
+
+# High-elven ranger
+R:945:0x0D/0xA2
+
+# Uvatha the Horseman
+R:946:0x08/0x97
+
+# Adunaphel the Quiet
+R:947:0x08/0x97
+
+# Akhorahil the Blind
+R:948:0x08/0x97
+
+# Ren the Unclean
+R:949:0x08/0x97
+
+# Ji Indur Dawndeath
+R:950:0x08/0x97
+
+# Dwar, Dog Lord of Waw
+R:951:0x08/0x97
+
+# Hoarmurath of Dir
+R:952:0x08/0x97
+
+# Khamul, the Black Easterling
+R:953:0x08/0x97
+
+# The Witch-King of Angmar
+R:954:0x08/0x97
+
+# Green Thunderlord
+R:955:0x05/0x82
+
+# Blue Thunderlord
+R:956:0x06/0x82
+
+# Brown Thunderlord
+R:957:0x07/0x82
+
+# Bronze Thunderlord
+R:958:0x0F/0x82
+
+# Gold Thunderlord
+R:959:0x0B/0x82
+
+# Blood Sprout
+R:960:0x05/0xEE
+
+# Gorlim, Betrayer of Barahir
+R:961:0x02/0xAA
+
+# The Blubbering idiot, agent of black market, Simon the weak
+R:962:0x09/0xAE
+
+# Aranea
+R:963:0x04/0x93
+
+# Elder aranea
+R:964:0x0A/0x93
+
+# Giant brown tick
+R:965:0x07/0x93
+
+# Wavelord
+R:966:0x06/0xAA
+
+# Novice possessor (soul)
+R:967:0x08/0x87
+
+# Bat of Gorgoroth
+R:968:0x05/0x9C
+
+# The Princess
+R:969:0x0B/0xAA
+
+# Merton Proudfoot, the lost hobbit
+R:970:0x0A/0xA2
+
+# The Wight-King of the Barrow-downs
+R:971:0x0A/0x97
+
+# Adventurer
+R:972:0x0F/0x80
+
+# Experienced possessor (soul)
+R:973:0x08/0x87
+
+# Old possessor (soul)
+R:974:0x08/0x87
+
+# Death orb
+R:975:0x08/0x85
+
+# Bronze dragon worm
+R:976:0x0F/0xB1
+
+# Gold dragon worm
+R:977:0x0B/0xB1
+
+# Moldoux, the Defenceless Mold
+R:978:0x0A/0xA7
+
+# The Physics Teacher
+R:979:0x01/0xAA
+
+# Ar-Pharazon the Golden
+R:980:0x0B/0xAA
+
+# Doppelganger
+R:981:0x01/0x80
+
+# Marylene, Heartbreakeress of the Netherworld
+R:982:0x09/0x90
+
+# The Greater Lag Monster
+R:983:0x0A/0x95
+
+# Hrungnir, the Stone Giant
+R:984:0x09/0x90
+
+# Bullroarer the Hobbit
+R:985:0x0F/0xA2
+
+# 3-headed hydra
+R:986:0x03/0x8D
+
+# Uldor the Accursed
+R:987:0x0F/0xAA
+
+# Mystic
+R:988:0x03/0xAA
+
+# Elder vampire
+R:989:0x04/0x96
+
+# Ulfang the Black
+R:990:0x0F/0xAA
+
+# Demonologist
+R:991:0x0C/0xAA
+
+# Hezrou
+R:992:0x05/0x95
+
+# Glabrezu
+R:993:0x0F/0x95
+
+# Nalfeshnee
+R:994:0x04/0x95
+
+# Marilith
+R:995:0x0B/0x95
+
+# Lesser Balrog
+R:996:0x0A/0x95
+
+# Master mystic
+R:997:0x03/0xAA
+
+# Grand master mystic
+R:998:0x03/0xAA
+
+# Erinyes
+R:999:0x07/0x95
+
+# Novice mindcrafter
+R:1000:0x0B/0xAA
+
+# Polyphemus, the Blind Cyclops
+R:1001:0x05/0x90
+
+# Great Wyrm of Perplexity
+R:1002:0x0F/0x84
+
+# Hound of Tindalos
+R:1003:0x02/0x9A
+
+# Great Wyrm of Thunder
+R:1004:0x0B/0x84
+
+# Silver mouse
+R:1005:0x09/0xAC
+
+# The Rat King
+R:1006:0x0A/0xAC
+
+# Vort the Kobold Queen
+R:1007:0x0A/0xA5
+
+# Giant black louse
+R:1008:0x08/0x89
+
+# Fire Phantom
+R:1009:0x04/0x87
+
+# The Insane Player
+R:1010:0x0A/0xAA
+
+# Glaryssa, Succubus Queen
+R:1011:0x09/0x95
+
+# Vermicious Knid
+R:1012:0x02/0xA4
+
+# Bone golem
+R:1013:0x01/0xA1
+
+# Snake of Yig
+R:1014:0x06/0x8A
+
+# Bronze golem
+R:1015:0x03/0xA1
+
+# Dimensional shambler
+R:1016:0x0E/0xA2
+
+# Cultist
+R:1017:0x0D/0xAA
+
+# Cult leader
+R:1018:0x0D/0xAA
+
+# Servitor of the outer gods
+R:1019:0x0B/0x88
+
+# Avatar of Nyarlathotep
+R:1020:0x0C/0xAA
+
+# Thiazi, the Storm Giant
+R:1021:0x0E/0x90
+
+# Hypnos, Lord of Sleep
+R:1022:0x0D/0xAA
+
+# Blue dragon worm
+R:1023:0x0E/0xB1
+
+# White dragon worm
+R:1024:0x09/0xB1
+
+# Green dragon worm
+R:1025:0x0D/0xB1
+
+# Black dragon worm
+R:1026:0x02/0xB1
+
+# Red dragon worm
+R:1027:0x0C/0xB1
+
+# Multi-hued dragon worm
+R:1028:0x0A/0xB1
+
+# The Minotaur of the Labyrinth
+R:1029:0x02/0x88
+
+# The Sandworm Queen
+R:1030:0x0A/0xB1
+
+# Sandworm
+R:1031:0x0B/0xB1
+
+# Tik'srvzllat
+R:1032:0x0A/0x87
+
+# The Glass Golem
+R:1033:0x09/0xBC
+
+# The White Balrog
+R:1034:0x09/0x95
+
+# Golgarach, the Living Rock
+R:1035:0x09/0xBC
+
+# Atlas, the Titan
+R:1036:0x02/0x90
+
+# Kronos, Lord of the Titans
+R:1037:0x0A/0x90
+
+# Water hound
+R:1038:0x04/0x9A
+
+# Improv, the mighty MoLD
+R:1039:0x0A/0xA7
+
+# Emperor Mimic
+R:1040:0x0B/0xA7
+
+# Melinda Proudfoot
+R:1041:0x0A/0xA2
+
+# Thrain, the King Under the Mountain
+R:1042:0x0E/0xA2
+
+# Fire golem
+R:1043:0x04/0xA1
+
+# Melkor, Lord of Darkness
+R:1044:0x0A/0x87
+
+# Spirit
+R:1045:0x0A/0x87
+
+# Spirit
+R:1046:0x0E/0x87
+
+# Spirit
+R:1047:0x0E/0x87
+
+# Spirit
+R:1048:0x0A/0x87
+
+# Spirit
+R:1049:0x0F/0x87
+
+# Spirit
+R:1050:0x0A/0x87
+
+# Spirit
+R:1051:0x05/0x87
+
+# Spirit
+R:1052:0x0A/0x87
+
+# Spirit
+R:1053:0x09/0xB5
+
+# Spirit
+R:1054:0x05/0x87
+
+# Spirit
+R:1055:0x09/0x87
+
+# Spirit
+R:1056:0x00/0x87
+
+# Spirit
+R:1057:0x07/0x87
+
+# Spirit
+R:1058:0x04/0x87
+
+# Spirit
+R:1059:0x0D/0x87
+
+# Spirit
+R:1060:0x09/0x87
+
+# Spirit
+R:1061:0x02/0x87
+
+# Spirit
+R:1062:0x06/0x87
+
+# Spirit
+R:1063:0x04/0x87
+
+# Spirit
+R:1064:0x01/0x87
+
+# Spirit
+R:1065:0x02/0x87
+
+# Spirit
+R:1066:0x06/0x87
+
+# Spirit
+R:1067:0x0A/0x87
+
+# Spirit
+R:1068:0x00/0x87
+
+# Spirit
+R:1069:0x09/0x87
+
+# Spirit
+R:1070:0x0A/0x87
+
+# Spirit
+R:1071:0x0D/0x87
+
+# Spirit
+R:1072:0x0B/0x87
+
+# Spirit
+R:1073:0x08/0x87
+
+# Spirit
+R:1074:0x03/0x87
+
+# Spirit
+R:1075:0x0A/0x87
+
+
diff --git a/lib/pref/graf-iso.prf b/lib/pref/graf-iso.prf
new file mode 100644
index 00000000..86cf8cc8
--- /dev/null
+++ b/lib/pref/graf-iso.prf
@@ -0,0 +1,6875 @@
+%:trap-iso.prf
+
+# General Store
+B:0:0x80:0xB1
+
+# Armoury
+B:1:0x80:0xB2
+
+# Weapon Smiths
+B:2:0x80:0xB3
+
+# Temple
+B:3:0x80:0xB4
+
+# Alchemy Shop
+B:4:0x80:0xB5
+
+# Magic Shop
+B:5:0x80:0xB6
+
+# Black Market
+B:6:0x80:0xB7
+
+# Home
+B:7:0x80:0xB8
+
+# Bookstore
+B:8:0x80:0xB9
+
+# Pet shop
+B:9:0x80:0xAB
+
+# Mayors office
+B:10:0x80:0xAB
+
+# Inn
+B:11:0x80:0xB0
+
+# The Soothsayer
+B:12:0x80:0xAB
+
+# Library
+B:13:0x80:0xAB
+
+# Castle
+B:14:0x80:0xAB
+
+# Casino
+B:15:0x80:0xAB
+
+# Beastmaster Shanty
+B:16:0x80:0xAB
+
+# Fighters Hall
+B:17:0x80:0xAB
+
+# Tower of Magery
+B:18:0x80:0xAB
+
+# Inner Temple
+B:19:0x80:0xAB
+
+# Paladins Guild
+B:20:0x80:0xAB
+
+# Rangers Guild
+B:21:0x80:0xAB
+
+# Thunderlords' Hide
+B:22:0x80:0xAB
+
+# The Mirror
+B:23:0x80:0xAB
+
+# Seat of Ruling
+B:24:0x80:0xAB
+
+# Wizards Spire
+B:25:0x80:0xAB
+
+# Priests Circle
+B:26:0x80:0xAB
+
+# Tower of the King
+B:27:0x80:0xAB
+
+# Library
+B:28:0x80:0xAB
+
+# The White Tree
+B:29:0x80:0xAB
+
+# Craftsmaster
+B:30:0x80:0xAB
+
+# Earth-Dome (Nature)
+B:31:0x80:0xAB
+
+# Minstrels Haven
+B:32:0x80:0xAB
+
+# Star-Dome
+B:33:0x80:0xAB
+
+# Valarin Temple
+B:34:0x80:0xAB
+
+# Sea-Dome
+B:35:0x80:0xAB
+
+# The Golden Flower
+B:36:0x80:0xAB
+
+# The Fountain
+B:37:0x80:0xAB
+
+# Axe Smith
+B:38:0x80:0xAB
+
+# Hafted Smith
+B:39:0x80:0xAB
+
+# Polearm Smith
+B:40:0x80:0xAB
+
+# Sword Smith
+B:41:0x80:0xAB
+
+# Rare Jewelry Shop
+B:42:0x80:0xAB
+
+# Jewelry Shop
+B:43:0x80:0xAB
+
+# Footwear Shop
+B:44:0x80:0xAB
+
+# Rare Footwear Shop
+B:45:0x80:0xAB
+
+# Library
+B:46:0x80:0xAB
+
+# Forbidden Library
+B:47:0x80:0xAB
+
+# Expensive Black Market
+B:48:0x80:0xAB
+
+# Common Shop
+B:49:0x80:0xAB
+
+# Dragon Hunter
+B:50:0x80:0xAB
+
+# Speed Ring Market
+B:51:0x80:0xAB
+
+# Scribe
+B:52:0x80:0xAB
+
+# Potion Store
+B:53:0x80:0xAB
+
+# Recaller
+B:54:0x80:0xAB
+
+# Master Archer
+B:55:0x80:0xAB
+
+# Merchants Guild
+B:56:0x80:0xAB
+
+# The Mathom-house
+B:57:0x80:0xAB
+
+# The Prancing Pony
+B:58:0x80:0xAB
+
+# nothing
+F:0:0x80:0xA0
+
+# open floor
+F:1:0x82:0xBC
+
+# fountain
+F:2:0x81:0x8D
+
+# glyph of warding
+F:3:0x8A:0xE1
+
+# open door
+F:4:0x80:0xA7
+
+# broken door
+F:5:0x80:0xA7
+
+# up staircase
+F:6:0x80:0xBC
+
+# down staircase
+F:7:0x80:0xBE
+
+# quest entrance
+F:8:0x80:0xBE
+
+# quest exit
+F:9:0x80:0xBC
+
+# quest down level
+F:10:0x80:0xBE
+
+# quest up level
+F:11:0x80:0xBC
+
+# town exit
+F:12:0x80:0xBE
+
+# shaft down
+F:13:0x80:0xBE
+
+# shaft up
+F:14:0x80:0xBC
+
+# fountain
+F:15:0x81:0x8D
+
+# web
+F:15:0x81:0x8D
+
+# trap
+F:17:0x8A:0xF9
+
+# visible trap -- spiked pit
+F:18:0x8A:0xF9
+
+# visible trap -- poison pit
+F:19:0x8A:0xF8
+
+# visible trap -- rune -- summon
+F:20:0x8A:0xF8
+
+# visible trap -- rune -- teleport
+F:21:0x8A:0xF8
+
+# visible trap -- spot -- fire
+F:22:0x8A:0xFD
+
+# visible trap -- spot -- acid
+F:23:0x8A:0xFA
+
+# visible trap -- dart -- slow
+F:24:0x8A:0xF3
+
+# visible trap -- dart -- lose str
+F:25:0x8A:0xF3
+
+# visible trap -- dart -- lose dex
+F:26:0x8A:0xF3
+
+# visible trap -- dart -- lose con
+F:27:0x8A:0xF3
+
+# visible trap -- gas -- blind
+F:28:0x8A:0xF6
+
+# visible trap -- gas -- confuse
+F:29:0x8A:0xF6
+
+# visible trap -- gas -- poison
+F:30:0x8A:0xF6
+
+# visible trap -- gas -- sleep
+F:31:0x8A:0xF6
+
+# door
+F:32:0x80:0xAB
+
+# locked door
+F:33:0x80:0xAB
+
+# locked door
+F:34:0x80:0xAB
+
+# locked door
+F:35:0x80:0xAB
+
+# locked door
+F:36:0x80:0xAB
+
+# locked door
+F:37:0x80:0xAB
+
+# locked door
+F:38:0x80:0xAB
+
+# locked door
+F:39:0x80:0xAB
+
+# jammed door
+F:40:0x80:0xAB
+
+# jammed door
+F:41:0x80:0xAB
+
+# jammed door
+F:42:0x80:0xAB
+
+# jammed door
+F:43:0x80:0xAB
+
+# jammed door
+F:44:0x80:0xAB
+
+# jammed door
+F:45:0x80:0xAB
+
+# jammed door
+F:46:0x80:0xAB
+
+# jammed door
+F:47:0x80:0xAB
+
+# secret door
+F:48:0x80:0xA3
+
+# pile of rubble
+F:49:0x8A:0xEF
+
+# magma vein
+F:50:0x80:0xA5
+
+# quartz vein
+F:51:0x81:0xF3
+
+# magma vein
+F:52:0x81:0xF3
+
+# quartz vein
+F:53:0x81:0xF3
+
+# magma vein with treasure
+F:54:0x80:0xAA
+
+# quartz vein with treasure
+F:55:0x80:0xAA
+
+# granite wall
+F:56:0x81:0xF0
+
+# granite wall
+F:57:0x81:0xF0
+
+# granite wall
+F:58:0x81:0xF0
+
+# granite wall
+F:59:0x81:0xF0
+
+# permanent wall
+F:60:0x81:0xF3
+
+# permanent wall
+F:61:0x81:0xF3
+
+# permanent wall
+F:62:0x81:0xF3
+
+# permanent wall
+F:63:0x81:0xF3
+
+# explosive rune
+F:64:0x80:0xAA
+
+# Straight Road startpoint
+F:65:0x80:0xAA
+
+# section of the Straight Road
+F:66:0x80:0xAA
+
+# section of the Straight Road
+F:67:0x80:0xAA
+
+# section of the Straight Road
+F:68:0x80:0xAA
+
+# section of the Straight Road
+F:69:0x80:0xAA
+
+# section of the Straight Road
+F:70:0x80:0xAA
+
+# section of the Straight Road (discharged)
+F:71:0x80:0xAA
+
+# Straight Road exit
+F:72:0x80:0xAA
+
+# corrupted section of the Straight Road
+F:73:0x80:0xAA
+
+# Building
+F:74:0x80:0xB1
+
+# permanent wall
+F:75:0x81:0xF3
+
+# permanent wall
+F:76:0x81:0xF3
+
+# permanent wall
+F:77:0x81:0xF3
+
+# permanent wall
+F:78:0x81:0xF3
+
+# stream of shallow water
+F:84:0x82:0xEB
+
+# pool of deep lava
+F:85:0x82:0xAB
+
+# stream of shallow lava
+F:86:0x82:0xAB
+
+# dark pit
+F:87:0x83:0x8B
+
+# dirt
+F:88:0x82:0xF3
+
+# patch of grass
+F:89:0x82:0xE8
+
+# ice
+F:90:0x80:0xAE
+
+# sand
+F:91:0x80:0xAE
+
+# dead tree
+F:92:0x80:0xA3
+
+# ash
+F:93:0x80:0xAE
+
+# mud
+F:94:0x80:0xAE
+
+# ice wall
+F:95:0x80:0x80
+
+# tree
+F:96:0x83:0x88
+
+# mountain chain
+F:97:0x81:0x9D
+
+# sandwall
+F:98:0x80:0xA3
+
+# sandwall
+F:99:0x80:0xA5
+
+# sandwall with treasure
+F:100:0x80:0xAA
+
+# high mountain chain
+F:101:0x80:0xDE
+
+# nether mist
+F:102:0x80:0x80
+
+# Void Jumpgate
+F:160:0x81:0x8C
+
+# Altar of Being
+F:161:0x81:0x94
+
+# Altar of Winds
+F:162:0x81:0x94
+
+# Altar of Force
+F:163:0x81:0x94
+
+# Altar of Darkness
+F:164:0x81:0x94
+
+# Altar of Nature
+F:165:0x81:0x94
+
+# Altar of Sun
+F:166:0x81:0x94
+
+# Altar of Rage
+F:167:0x81:0x94
+
+# Altar of Winds
+F:168:0x81:0x94
+
+# Altar of Stars
+F:169:0x81:0x94
+
+# Altar of Being
+F:170:0x81:0x94
+
+# Altar of Randomness
+F:171:0x81:0x94
+
+# floor
+F:172:0x80:0x81
+
+# Underground Tunnel
+F:173:0x80:0x82
+
+# stream of tainted water
+F:174:0x80:0x80
+
+# monster trap
+F:175:0x81:0x9C
+
+# Void Jumpgate
+F:176:0x80:0x80
+
+# lava wall
+F:177:0x80:0x80
+
+# Great Fire
+F:178:0x80:0x80
+
+# Path to next area
+F:179:0x80:0xBE
+
+# Path to previous area
+F:180:0x80:0xBC
+
+# field
+F:181:0x80:0x80
+
+# Ekkaia, the Encircling Sea
+F:182:0x80:0x80
+
+# Altar of Energy
+F:183:0x80:0x80
+
+# Altar of Matter
+F:184:0x80:0x80
+
+# Altar of Being
+F:185:0x80:0x80
+
+# Altar of Unbeing
+F:186:0x80:0x80
+
+# pool of deep water
+F:187:0x82:0xF0
+
+# glass wall
+F:188:0x80:0xAE
+
+# illusion wall
+F:189:0x80:0xA3
+
+# Grass roof
+F:190:0x82:0xF6
+
+# grass roof top
+F:191:0x82:0xF6
+
+# grass roof chimney
+F:192:0x82:0xF7
+
+# brick roof
+F:193:0x82:0xEE
+
+# brick roof top
+F:194:0x82:0xEE
+
+# brick roof chimney
+F:195:0x82:0xF7
+
+# window
+F:196:0x80:0xA3
+
+# small window
+F:197:0x80:0xA3
+
+# rain barrel
+F:198:0x80:0xA3
+
+# grass with flowers
+F:199:0x82:0xF8
+
+# cobblestone road
+F:200:0x83:0x83
+
+# cobblestone with outlet
+F:201:0x80:0xAE
+
+# small tree
+F:202:0x83:0x88
+
+# town
+F:203:0x80:0xAA
+
+# Underground Tunnel
+F:204:0x80:0x82
+
+# a blazing fire
+F:205:0x80:0x80
+
+# pile of rubble
+F:206:0x8A:0xEF
+
+# rocky ground
+F:207:0x80:0x80
+
+# cloud-like vapour
+F:208:0x80:0x80
+
+# condensing water
+F:209:0x80:0x80
+
+# dense mist
+F:210:0x80:0x80
+
+# hail-stone wall
+F:211:0x80:0x80
+
+# dead small tree
+F:212:0x80:0x80
+
+# something
+K:0:0x80:0x80
+
+# Blindness
+K:1:0x86:0x8C
+
+# Paranoia
+K:2:0x86:0x8C
+
+# Confusion
+K:3:0x86:0x8C
+
+# Hallucination
+K:4:0x86:0x8C
+
+# Cure Poison
+K:5:0x86:0x8C
+
+# Cure Blindness
+K:6:0x86:0x8C
+
+# Cure Paranoia
+K:7:0xA6:0xBB
+
+# Cure Confusion
+K:8:0x86:0x8C
+
+# Weakness
+K:9:0x86:0x8C
+
+# Unhealth
+K:10:0x86:0x8C
+
+# Restore Constitution
+K:11:0x86:0x8C
+
+# Restoring
+K:12:0x86:0x8C
+
+# Stupidity
+K:13:0x86:0x8C
+
+# Naivety
+K:14:0x86:0x8C
+
+# Poison
+K:15:0x86:0x8C
+
+# Sickness
+K:16:0x86:0x8C
+
+# Paralysis
+K:17:0x86:0x8C
+
+# Restore Strength
+K:18:0x86:0x8C
+
+# Disease
+K:19:0x86:0x8C
+
+# Cure Serious Wounds
+K:20:0x86:0x8C
+
+# & Ration~ of Food
+K:21:0x8A:0xBC
+
+# & Hard Biscuit~
+K:22:0x8A:0xBA
+
+# & Strip~ of Venison
+K:23:0x8A:0xBB
+
+# & Slime Mold~
+K:24:0x8A:0xBD
+
+# & Lembas~
+K:25:0x8A:0xBE
+
+# & Pint~ of Fine Ale
+K:26:0x8A:0xB8
+
+# & Pint~ of Fine Wine
+K:27:0x8A:0xB8
+
+# & Mattock~
+K:28:0x9E:0xC4
+
+# & Blue Stone~
+K:29:0xA6:0x8B
+
+# & Broken Dagger~
+K:30:0x88:0xC5
+
+# & Bastard Sword~
+K:31:0x88:0xC6
+
+# & Scimitar~
+K:32:0x88:0xCF
+
+# & Tulwar~
+K:33:0x88:0xCD
+
+# & Broad Sword~
+K:34:0x88:0xD0
+
+# & Short Sword~
+K:35:0x88:0xCC
+
+# & Blade~ of Chaos
+K:36:0x88:0xD6
+
+# & Two-Handed Sword~
+K:37:0x88:0xD4
+
+# & Main Gauche~
+K:38:0x88:0xC8
+
+# & Cutlass~
+K:39:0x88:0xCE
+
+# & Executioner's Sword~
+K:40:0x88:0xD5
+
+# & Katana~
+K:41:0x88:0xD3
+
+# & Long Sword~
+K:42:0x88:0xD1
+
+# & Dagger~
+K:43:0x88:0xC7
+
+# & Rapier~
+K:44:0x88:0xC9
+
+# & Sabre~
+K:45:0x88:0xCB
+
+# & Small Sword~
+K:46:0x88:0xCA
+
+# & Broken Sword~
+K:47:0x88:0xC6
+
+# & Ball-and-Chain~
+K:48:0x88:0xFE
+
+# & Whip~
+K:49:0x88:0xD7
+
+# & Flail~
+K:50:0x88:0xFB
+
+# & Two-Handed Flail~
+K:51:0x88:0xFF
+
+# & Morning Star~
+K:52:0x88:0xFC
+
+# & Mace~
+K:53:0x88:0xF9
+
+# & Quarterstaff~
+K:54:0x88:0xFA
+
+# & War Hammer~
+K:55:0x88:0xF8
+
+# & Lead-Filled Mace~
+K:56:0x88:0xFD
+
+# & Mace~ of Disruption
+K:57:0x89:0x80
+
+# & Lucerne Hammer~
+K:58:0x89:0x85
+
+# & Beaked Axe~
+K:59:0x89:0x88
+
+# & Glaive~
+K:60:0x89:0x8A
+
+# & Halberd~
+K:61:0x89:0x8B
+
+# & Awl-Pike~
+K:62:0x89:0x83
+
+# & Pike~
+K:63:0x89:0x87
+
+# & Spear~
+K:64:0x89:0x81
+
+# & Trident~
+K:65:0x89:0x82
+
+# & Lance~
+K:66:0x89:0x84
+
+# & Great Axe~
+K:67:0x89:0x8D
+
+# & Battle Axe~
+K:68:0x89:0x86
+
+# & Lochaber Axe~
+K:69:0x89:0x8C
+
+# & Broad Axe~
+K:70:0x89:0x89
+
+# & Scythe~
+K:71:0x89:0x8E
+
+# & Scythe~ of Slicing
+K:72:0x89:0x8F
+
+# & Short Bow~
+K:73:0x89:0x90
+
+# & Long Bow~
+K:74:0x89:0x91
+
+# & Light Crossbow~
+K:75:0x89:0x92
+
+# & Heavy Crossbow~
+K:76:0x89:0x93
+
+# & Sling~
+K:77:0x89:0x94
+
+# & Arrow~
+K:78:0x89:0xB8
+
+# & Seeker Arrow~
+K:79:0x89:0xB9
+
+# & Bolt~
+K:80:0x89:0xBA
+
+# & Seeker Bolt~
+K:81:0x89:0xBB
+
+# & Rounded Pebble~
+K:82:0x89:0xBC
+
+# & Iron Shot~
+K:83:0x89:0xBD
+
+# & Shovel~
+K:84:0x8A:0xC7
+
+# & Gnomish Shovel~
+K:85:0x8A:0xC8
+
+# & Dwarven Shovel~
+K:86:0x8A:0xC9
+
+# & Pick~
+K:87:0x8A:0xC4
+
+# & Orcish Pick~
+K:88:0x8A:0xC5
+
+# & Dwarven Pick~
+K:89:0x8A:0xC9
+
+# & Elven Cloak~
+K:90:0x88:0x81
+
+# & Pair~ of Soft Leather Boots
+K:91:0x87:0xC6
+
+# & Pair~ of Hard Leather Boots
+K:92:0x87:0xC7
+
+# & Pair~ of Metal Shod Boots
+K:93:0x87:0xC8
+
+# & Hard Leather Cap~
+K:94:0x87:0x90
+
+# & Metal Cap~
+K:95:0x87:0x91
+
+# & Iron Helm~
+K:96:0x87:0x92
+
+# & Steel Helm~
+K:97:0x87:0x93
+
+# & Iron Crown~
+K:98:0x87:0x94
+
+# & Golden Crown~
+K:99:0x87:0x95
+
+# & Jewel Encrusted Crown~
+K:100:0x87:0x96
+
+# & Robe~
+K:101:0x88:0x84
+
+# & Filthy Rag~
+K:102:0x88:0x83
+
+# Soft Leather Armour~
+K:103:0x88:0x85
+
+# Soft Studded Leather~
+K:104:0x88:0x86
+
+# Hard Leather Armour~
+K:105:0x88:0x87
+
+# Hard Studded Leather~
+K:106:0x88:0x88
+
+# Leather Scale Mail~
+K:107:0x88:0x89
+
+# Metal Scale Mail~
+K:108:0x88:0x8A
+
+# Chain Mail~
+K:109:0x88:0x8C
+
+# Rusty Chain Mail~
+K:110:0x88:0x8B
+
+# Augmented Chain Mail~
+K:111:0x88:0x8E
+
+# Bar Chain Mail~
+K:112:0x88:0x8F
+
+# Metal Brigandine Armour~
+K:113:0x88:0x90
+
+# Partial Plate Armour~
+K:114:0x88:0x91
+
+# Metal Lamellar Armour~
+K:115:0x88:0x92
+
+# Full Plate Armour~
+K:116:0x88:0x93
+
+# Ribbed Plate Armour~
+K:117:0x88:0x94
+
+# Adamantite Plate Mail~
+K:118:0x88:0x97
+
+# Mithril Plate Mail~
+K:119:0x88:0x96
+
+# Mithril Chain Mail~
+K:120:0x88:0x95
+
+# Double Chain Mail~
+K:121:0x88:0x8D
+
+# & Shield~ of Deflection
+K:122:0x87:0xD0
+
+# & Cloak~
+K:123:0x88:0x80
+
+# & Shadow Cloak~
+K:124:0x88:0x81
+
+# & Set~ of Leather Gloves
+K:125:0x87:0xC9
+
+# & Set~ of Gauntlets
+K:126:0x87:0xCA
+
+# & Set~ of Cesti
+K:127:0x87:0xCB
+
+# & Small Leather Shield~
+K:128:0x87:0xCC
+
+# & Large Leather Shield~
+K:129:0x87:0xCD
+
+# & Small Metal Shield~
+K:130:0x87:0xCE
+
+# & Large Metal Shield~
+K:131:0x87:0xCF
+
+# Strength
+K:132:0x85:0xB9
+
+# Dexterity
+K:133:0x85:0xBB
+
+# Constitution
+K:134:0x85:0xBB
+
+# Intelligence
+K:135:0x85:0xBB
+
+# Speed
+K:136:0x85:0xBB
+
+# Searching
+K:137:0x85:0xBB
+
+# Teleportation
+K:138:0x85:0xBB
+
+# Slow Digestion
+K:139:0x85:0xBB
+
+# Fire Resistance
+K:140:0x85:0xBB
+
+# Cold Resistance
+K:141:0x85:0xBB
+
+# Levitation
+K:142:0x85:0xBB
+
+# Poison Resistance
+K:143:0x85:0xBB
+
+# Free Action
+K:144:0x85:0xBB
+
+# Weakness
+K:145:0x85:0xBB
+
+# Flames
+K:146:0x85:0xBB
+
+# Acid
+K:147:0x85:0xBB
+
+# Ice
+K:148:0x85:0xBB
+
+# Woe
+K:149:0x85:0xBB
+
+# Stupidity
+K:150:0x85:0xBB
+
+# Damage
+K:151:0x85:0xBB
+
+# Accuracy
+K:152:0x85:0xBB
+
+# Protection
+K:153:0x85:0xBB
+
+# Aggravate Monster
+K:154:0x85:0xBB
+
+# See Invisible
+K:155:0x85:0xBB
+
+# Sustain Strength
+K:156:0x85:0xBB
+
+# Sustain Intelligence
+K:157:0x85:0xBB
+
+# Sustain Wisdom
+K:158:0x85:0xBB
+
+# Sustain Constitution
+K:159:0x85:0xBB
+
+# Sustain Dexterity
+K:160:0x85:0xBB
+
+# Sustain Charisma
+K:161:0x85:0xBB
+
+# Slaying
+K:162:0x85:0xBB
+
+# Brilliance
+K:163:0x86:0xFB
+
+# Charisma
+K:164:0x86:0xFB
+
+# Searching
+K:165:0x86:0xFB
+
+# Teleportation
+K:166:0x86:0xFB
+
+# Slow Digestion
+K:167:0x86:0xFB
+
+# Acid Resistance
+K:168:0x86:0xFB
+
+# Adornment
+K:169:0x86:0xFB
+
+# Double Ring Mail~
+K:170:0x88:0x93
+
+# the Magi
+K:171:0x86:0xFB
+
+# Doom
+K:172:0x86:0xFB
+
+# Enchant Weapon To-Hit
+K:173:0x85:0x94
+
+# Enchant Weapon To-Dam
+K:174:0x85:0x94
+
+# Enchant Armor
+K:175:0x85:0x94
+
+# Identify
+K:176:0x85:0x94
+
+# *Identify*
+K:177:0x85:0x94
+
+# Rumour
+K:178:0x85:0x94
+
+# Chaos
+K:179:0x85:0x94
+
+# Remove Curse
+K:180:0x85:0x94
+
+# Light
+K:181:0x85:0x94
+
+# Fire
+K:182:0x85:0x94
+
+# Ice
+K:183:0x85:0x94
+
+# Summon Monster
+K:184:0x85:0x94
+
+# Phase Door
+K:185:0x85:0x94
+
+# Teleportation
+K:186:0x85:0x94
+
+# Teleport Level
+K:187:0x85:0x94
+
+# Monster Confusion
+K:188:0x85:0x94
+
+# Magic Mapping
+K:189:0x85:0x94
+
+# Rune of Protection
+K:190:0x85:0x94
+
+# *Remove Curse*
+K:191:0x85:0x94
+
+# Treasure Detection
+K:192:0x85:0x94
+
+# Object Detection
+K:193:0x85:0x94
+
+# Trap Detection
+K:194:0x85:0x94
+
+# & Sheaf Arrow~
+K:195:0x89:0xB9
+
+# & Mithril Shot~
+K:196:0x89:0xBD
+
+# Door
+K:197:0x85:0x94
+
+# Acquirement
+K:198:0x85:0x94
+
+# *Acquirement*
+K:199:0x85:0x94
+
+# Mass Genocide
+K:200:0x85:0x94
+
+# Detect Invisible
+K:201:0x85:0x94
+
+# Aggravate Monster
+K:202:0x85:0x94
+
+# Trap Creation
+K:203:0x85:0x94
+
+# Trap
+K:204:0x85:0x94
+
+# Artifact Creation
+K:205:0x85:0x94
+
+# Recharging
+K:206:0x85:0x94
+
+# Genocide
+K:207:0x85:0x94
+
+# Darkness
+K:208:0x85:0x94
+
+# Protection from Evil
+K:209:0x85:0x94
+
+# Satisfy Hunger
+K:210:0x85:0x94
+
+# Dispel Undead
+K:211:0x85:0x94
+
+# *Enchant Weapon*
+K:212:0x85:0x94
+
+# Curse Weapon
+K:213:0x85:0x94
+
+# *Enchant Armor*
+K:214:0x85:0x94
+
+# Curse Armor
+K:215:0x85:0x94
+
+# Summon Undead
+K:216:0x85:0x94
+
+# Blessing
+K:217:0x85:0x94
+
+# Holy Chant
+K:218:0x85:0x94
+
+# Holy Prayer
+K:219:0x85:0x94
+
+# Word of Recall
+K:220:0x85:0x94
+
+# *Destruction*
+K:221:0x85:0x94
+
+# Slime Mold Juice
+K:222:0x85:0xFD
+
+# Apple Juice
+K:223:0x85:0xFD
+
+# Water
+K:224:0x85:0xFD
+
+# Strength
+K:225:0x85:0xFD
+
+# Weakness
+K:226:0x85:0xFD
+
+# Restore Strength
+K:227:0x85:0xFD
+
+# Intelligence
+K:228:0x85:0xFD
+
+# Stupidity
+K:229:0x85:0xFD
+
+# Restore Intelligence
+K:230:0x85:0xFD
+
+# Wisdom
+K:231:0x85:0xFD
+
+# Naivety
+K:232:0x85:0xFD
+
+# Restore Wisdom
+K:233:0x85:0xFD
+
+# Charisma
+K:234:0x85:0xFD
+
+# Ugliness
+K:235:0x85:0xFD
+
+# Restore Charisma
+K:236:0x85:0xFD
+
+# Curing
+K:237:0x85:0xFD
+
+# Invulnerability
+K:238:0x85:0xFD
+
+# New Life
+K:239:0x85:0xFD
+
+# Cure Serious Wounds
+K:240:0x85:0xFD
+
+# Cure Critical Wounds
+K:241:0x85:0xFD
+
+# Healing
+K:242:0x85:0xFD
+
+# Constitution
+K:243:0x85:0xFD
+
+# Experience
+K:244:0x85:0xFD
+
+# Sleep
+K:245:0x85:0xFD
+
+# Blindness
+K:246:0x85:0xFD
+
+# Booze
+K:247:0x85:0xFD
+
+# Poison
+K:248:0x85:0xFD
+
+# Speed
+K:249:0x85:0xFD
+
+# Slowness
+K:250:0x85:0xFD
+
+# Dexterity
+K:251:0x85:0xFD
+
+# Restore Dexterity
+K:252:0x85:0xFD
+
+# Restore Constitution
+K:253:0x85:0xFD
+
+# Lose Memories
+K:254:0x85:0xFD
+
+# Salt Water
+K:255:0x85:0xFD
+
+# Enlightenment
+K:256:0x85:0xFD
+
+# Heroism
+K:257:0x85:0xFD
+
+# Berserk Strength
+K:258:0x85:0xFD
+
+# Boldness
+K:259:0x85:0xFD
+
+# Restore Life Levels
+K:260:0x85:0xFD
+
+# Resist Heat
+K:261:0x85:0xFD
+
+# Resist Cold
+K:262:0x85:0xFD
+
+# Detect Invisible
+K:263:0x85:0xFD
+
+# Slow Poison
+K:264:0x85:0xFD
+
+# Neutralise Poison
+K:265:0x85:0xFD
+
+# Restore Mana
+K:266:0x85:0xFD
+
+# Infra-vision
+K:267:0x85:0xFD
+
+# Resistance
+K:268:0x85:0xFD
+
+# Spell
+K:269:0x86:0xCB
+
+# Manathrust
+K:270:0x86:0xCB
+
+# Fireflash
+K:271:0x86:0xCB
+
+# Firewall
+K:272:0x86:0xCB
+
+# Tidal Wave
+K:273:0x86:0xCB
+
+# Ice Storm
+K:274:0x86:0xCB
+
+# Noxious Cloud
+K:275:0x86:0xCB
+
+# Poison Blood
+K:276:0x86:0xCB
+
+# Thunderstorm
+K:277:0x86:0xCB
+
+# Dig
+K:278:0x86:0xCB
+
+# Stone Prison
+K:279:0x86:0xCB
+
+# Strike
+K:280:0x86:0xCB
+
+# Teleport Away
+K:281:0x86:0xCB
+
+# Summon Animal
+K:282:0x86:0xCB
+
+# Magelock
+K:283:0x86:0xCB
+
+# Slow Monster
+K:284:0x86:0xCB
+
+# Essence of Speed
+K:285:0x9F:0x84
+
+# Banishment
+K:286:0x86:0xCB
+
+# Disperse Magic
+K:287:0x86:0xCB
+
+# Charm
+K:288:0x86:0xCB
+
+# Confuse
+K:289:0x86:0xCB
+
+# Demon Blade
+K:290:0x86:0xCB
+
+# Heal Monster
+K:291:0x86:0xCB
+
+# Haste Monster
+K:292:0x86:0xCB
+
+# & Flight Arrow~
+K:293:0x89:0xB9
+
+# Acid Bolts
+K:294:0x86:0xCB
+
+# Dragon's Flame
+K:295:0x86:0xCB
+
+# Dragon's Frost
+K:296:0x86:0xCB
+
+# Dragon's Breath
+K:297:0x86:0xCB
+
+# Annihilation
+K:298:0x86:0xCB
+
+# Rockets
+K:299:0x86:0xCB
+
+# Spell
+K:300:0x87:0x8A
+
+# Nothing
+K:301:0x87:0x8A
+
+# Globe of Light
+K:302:0x87:0x8A
+
+# Fiery Shield
+K:303:0x87:0x8A
+
+# Remove Curses
+K:304:0x87:0x8A
+
+# Wings of Winds
+K:305:0x87:0x8A
+
+# Shake
+K:306:0x87:0x8A
+
+# Disarm
+K:307:0x87:0x8A
+
+# Teleportation
+K:308:0x87:0x8A
+
+# Probability Travel
+K:309:0x87:0x8A
+
+# Recovery
+K:310:0x87:0x8A
+
+# Healing
+K:311:0x87:0x8A
+
+# Vision
+K:312:0x87:0x8A
+
+# Identify
+K:313:0x87:0x8A
+
+# Sense Hidden
+K:314:0x87:0x8A
+
+# Reveal Ways
+K:315:0x87:0x8A
+
+# Sense Monsters
+K:316:0x87:0x8A
+
+# Genocide
+K:317:0x87:0x8A
+
+# Summon
+K:318:0x87:0x8A
+
+# Curing
+K:319:0x87:0x8A
+
+# Wish
+K:320:0x87:0x8A
+
+# Mana
+K:321:0x87:0x8A
+
+# Darkness
+K:322:0x87:0x8A
+
+# Genocide
+K:323:0x87:0x8A
+
+# Power
+K:324:0x87:0x8A
+
+# the Magi
+K:325:0x87:0x8A
+
+# Perception
+K:326:0x87:0x8A
+
+# Holiness
+K:327:0x87:0x8A
+
+# Enlightenment
+K:328:0x87:0x8A
+
+# Healing
+K:329:0x87:0x8A
+
+# & Tome~ of Magical Energy
+K:330:0x8B:0xD8
+
+# & Tome~ of the Eternal Flame
+K:331:0x8B:0xD9
+
+# & Tome~ of the Blowing Wind
+K:332:0x8B:0xDA
+
+# & Tome~ of the Impenetrable Earth
+K:333:0x8B:0xDB
+
+# & Tome~ of the Everrunning Wave
+K:334:0x8B:0xDC
+
+# & Tome~ of Translocation
+K:335:0x8B:0xDD
+
+# & Tome~ of the Tree
+K:336:0x8B:0xDE
+
+# & Tome~ of Knowledge
+K:337:0x8B:0xDF
+
+# & Small wooden chest~
+K:338:0x85:0xD1
+
+# & Large wooden chest~
+K:339:0x85:0xD2
+
+# & Small iron chest~
+K:340:0x85:0xD3
+
+# & Large iron chest~
+K:341:0x85:0xD4
+
+# & Small steel chest~
+K:342:0x85:0xD5
+
+# & Large steel chest~
+K:343:0x85:0xD6
+
+# & Ruined chest~
+K:344:0x85:0xD7
+
+# & Iron Spike~
+K:345:0x8A:0xC1
+
+# & Wooden Torch~
+K:346:0x8A:0xC3
+
+# & Brass Lantern~
+K:347:0x8A:0xC2
+
+# & Flask~ of oil
+K:348:0x8A:0xC0
+
+# & Empty Bottle~
+K:349:0x8A:0xBF
+
+# Havoc
+K:350:0x86:0xBB
+
+# Door
+K:351:0x86:0xBB
+
+# Trap Location
+K:352:0x86:0xBB
+
+# Probing
+K:353:0x86:0xBB
+
+# Recall
+K:354:0x86:0xBB
+
+# Illumination
+K:355:0x86:0xBB
+
+# Light
+K:356:0x86:0xBB
+
+# Lightning Bolts
+K:357:0x86:0xBB
+
+# Frost Bolts
+K:358:0x86:0xBB
+
+# Fire Bolts
+K:359:0x86:0xBB
+
+# Polymorph
+K:360:0x86:0xBB
+
+# Slow Monster
+K:361:0x86:0xBB
+
+# Sleep Monster
+K:362:0x86:0xBB
+
+# Drain Life
+K:363:0x86:0xBB
+
+# Teleport Other
+K:364:0x86:0xBB
+
+# Disarming
+K:365:0x86:0xBB
+
+# Lightning Balls
+K:366:0x86:0xBB
+
+# Cold Balls
+K:367:0x86:0xBB
+
+# Fire Balls
+K:368:0x86:0xBB
+
+# Acid Balls
+K:369:0x86:0xBB
+
+# Acid Bolts
+K:370:0x86:0xBB
+
+# Enlightenment
+K:371:0x86:0xBB
+
+# Perception
+K:372:0x86:0xBB
+
+# Curing
+K:373:0x86:0xBB
+
+# Healing
+K:374:0x86:0xBB
+
+# Detection
+K:375:0x86:0xBB
+
+# Restoration
+K:376:0x86:0xBB
+
+# Speed
+K:377:0x86:0xBB
+
+# Spell
+K:378:0xA3:0xFC
+
+# Spell
+K:379:0x89:0xF8
+
+# [Beings of Darkness]
+K:380:0x89:0xF9
+
+# [Material Shadow]
+K:381:0x89:0xFA
+
+# [Nature's Wrath]
+K:382:0x89:0xFB
+
+# [Sign of Chaos]
+K:383:0x89:0xD0
+
+# [Chaos Mastery]
+K:384:0x89:0xD1
+
+# [Chaos Channels]
+K:385:0x89:0xD2
+
+# [Armageddon Tome]
+K:386:0x89:0xD3
+
+# [Nether Openings]
+K:387:0x8A:0x80
+
+# [Unholy Blessings]
+K:388:0x8A:0x81
+
+# & Firestone~
+K:389:0x8A:0xCA
+
+# & Small Firestone~
+K:390:0x8A:0xCB
+
+# & Broken Skull~
+K:391:0x8A:0xCC
+
+# & Broken Bone~
+K:392:0x8A:0xCD
+
+# & Canine Skeleton~
+K:393:0x8A:0xD2
+
+# & Rodent Skeleton~
+K:394:0x8A:0xD3
+
+# & Human Skeleton~
+K:395:0x8A:0xCE
+
+# & Dwarf Skeleton~
+K:396:0x8A:0xD0
+
+# & Elf Skeleton~
+K:397:0x8A:0xCF
+
+# & Gnome Skeleton~
+K:398:0x8A:0xD1
+
+# & Great Hammer~
+K:399:0x9E:0xC2
+
+# Black Dragon Scale Mail~
+K:400:0x88:0xBA
+
+# Blue Dragon Scale Mail~
+K:401:0x88:0xB8
+
+# White Dragon Scale Mail~
+K:402:0x88:0xB9
+
+# Red Dragon Scale Mail~
+K:403:0x88:0xBB
+
+# Green Dragon Scale Mail~
+K:404:0x88:0xBC
+
+# Multi-Hued Dragon Scale Mail~
+K:405:0x88:0xC3
+
+# Pseudo Dragon Scale Mail~
+K:406:0x88:0xBF
+
+# Law Dragon Scale Mail~
+K:407:0x88:0xC1
+
+# Bronze Dragon Scale Mail~
+K:408:0x88:0xBD
+
+# Gold Dragon Scale Mail~
+K:409:0x88:0xBE
+
+# Chaos Dragon Scale Mail~
+K:410:0x88:0xC0
+
+# Balance Dragon Scale Mail~
+K:411:0x88:0xC2
+
+# Power Dragon Scale Mail~
+K:412:0x88:0xC4
+
+# & Dragon Helm~
+K:413:0x87:0xBA
+
+# & Dragon Shield~
+K:414:0x87:0xD4
+
+# Death
+K:415:0x85:0xFD
+
+# Ruination
+K:416:0x85:0xFD
+
+# Detonations
+K:417:0x85:0xFD
+
+# Augmentation
+K:418:0x85:0xFD
+
+# *Healing*
+K:419:0x85:0xFD
+
+# Life
+K:420:0x85:0xFD
+
+# Self Knowledge
+K:421:0x85:0xFD
+
+# *Enlightenment*
+K:422:0x85:0xFD
+
+# [Necromantic Incantations]
+K:423:0x8A:0x82
+
+# [Curses of Angmar]
+K:424:0x8A:0x83
+
+# Fear Resistance
+K:425:0x85:0xBB
+
+# Light and Darkness Resistance
+K:426:0x85:0xBB
+
+# Nether Resistance
+K:427:0x85:0xBB
+
+# Nexus Resistance
+K:428:0x85:0xBB
+
+# Sound Resistance
+K:429:0x85:0xBB
+
+# Confusion Resistance
+K:430:0x85:0xBB
+
+# Shard Resistance
+K:431:0x85:0xBB
+
+# Disenchantment Resistance
+K:432:0x85:0xBB
+
+# Chaos Resistance
+K:433:0x85:0xBB
+
+# Blindness Resistance
+K:434:0x85:0xBB
+
+# Lordly Protection
+K:435:0x85:0xBB
+
+# Extra Attacks
+K:436:0x85:0xBB
+
+# Cure Light Wounds
+K:437:0x85:0xFD
+
+# Clumsiness
+K:438:0x85:0xFD
+
+# Sickliness
+K:439:0x85:0xFD
+
+# Map of Bree
+K:440:0xA5:0xB8
+
+# Map of Gondolin
+K:441:0xA5:0xB8
+
+# Map of Lothlorien
+K:442:0xA5:0xB8
+
+# Map of Minas Anor
+K:443:0xA5:0xB8
+
+# & Silver Arrow~
+K:465:0xA6:0xB9
+
+# & Silver Bolt~
+K:466:0xA6:0xBA
+
+# Lightning Resistance
+K:467:0x86:0xF8
+
+# Wisdom
+K:468:0x86:0xF8
+
+# Regeneration
+K:469:0x86:0xF8
+
+# Infravision
+K:470:0x86:0xF8
+
+# Devotion
+K:471:0x86:0xF8
+
+# Weaponmastery
+K:472:0x86:0xF8
+
+# Trickery
+K:473:0x86:0xF8
+
+# Telepathy
+K:474:0x86:0xF8
+
+# Sustenance
+K:475:0x86:0xF8
+
+# & Palantir~
+K:476:0xA6:0xBF
+
+# & Elfstone~
+K:477:0xA6:0xBB
+
+# & Jewel~
+K:478:0xA6:0xBC
+
+# & Ring~
+K:479:0xA6:0xBD
+
+# copper
+K:480:0x85:0x89
+
+# copper
+K:481:0x85:0x89
+
+# copper
+K:482:0x85:0x89
+
+# silver
+K:483:0x85:0x8A
+
+# silver
+K:484:0x85:0x8A
+
+# silver
+K:485:0x85:0x8A
+
+# garnets
+K:486:0x85:0x8E
+
+# garnets
+K:487:0x85:0x8E
+
+# gold
+K:488:0x85:0x8B
+
+# gold
+K:489:0x85:0x8B
+
+# gold
+K:490:0x85:0x8B
+
+# opals
+K:491:0x85:0x8F
+
+# sapphires
+K:492:0x85:0x90
+
+# rubies
+K:493:0x85:0x91
+
+# diamonds
+K:494:0x85:0x92
+
+# emeralds
+K:495:0x85:0x93
+
+# mithril
+K:496:0x85:0x8C
+
+# adamantite
+K:497:0x85:0x8D
+
+# & Mighty Hammer~
+K:498:0x9E:0xC2
+
+# & Massive Iron Crown~
+K:499:0x87:0x94
+
+# & Phial~
+K:500:0x8A:0xD5
+
+# & Star~
+K:501:0x8A:0xD6
+
+# & Arkenstone~
+K:502:0x8A:0xD7
+
+# & Amulet~
+K:503:0x85:0xCE
+
+# & Amulet~
+K:504:0x85:0xCF
+
+# & Necklace~
+K:505:0x85:0xD0
+
+# & Ring~
+K:506:0x85:0xC7
+
+# & Ring~
+K:507:0x85:0xC8
+
+# & Ring~
+K:508:0x85:0xCA
+
+# & Ring~
+K:509:0x85:0xCB
+
+# & Ring~
+K:510:0x85:0xCC
+
+# & Ring~
+K:511:0x85:0xCD
+
+# [Rites of Initiation]
+K:512:0x8A:0x88
+
+# [Ways of War]
+K:513:0x8A:0x89
+
+# [Divine Retribution]
+K:514:0x8A:0x8A
+
+# [Essence of Fury]
+K:515:0x8A:0x8B
+
+# [Novice Crafts]
+K:516:0x8A:0x84
+
+# [Arcane Channels]
+K:517:0x8A:0x85
+
+# [Sigils of Wizardry]
+K:518:0x8A:0x86
+
+# [Mana Focus]
+K:519:0x8A:0x87
+
+# Reflection
+K:520:0x86:0xFB
+
+# Anti-Magic
+K:521:0x86:0xFB
+
+# Anti-Teleportation
+K:522:0x86:0xFB
+
+# Resistance
+K:523:0x86:0xFB
+
+# & Zweihander~
+K:524:0x9E:0xC4
+
+# & Dwarven Lantern~
+K:525:0xA6:0x8C
+
+# Splint Mail~
+K:526:0x88:0x94
+
+# & Everburning Torch~
+K:527:0xA6:0x8D
+
+# & Trifurcate Spear~
+K:528:0x9E:0xBD
+
+# & Three Piece Rod~
+K:529:0x9E:0xB8
+
+# & Feanorian Lamp~
+K:530:0xA6:0x8E
+
+# & Fur Cloak~
+K:531:0x88:0x81
+
+# Water Curing
+K:532:0x9E:0xBE
+
+# & Hatchet~
+K:533:0x9E:0xC7
+
+# Rhino Hide Armour~
+K:535:0x88:0x90
+
+# Leather Jacket~
+K:536:0x88:0x87
+
+# & Sickle~
+K:537:0x9E:0xC8
+
+# [Psychoportation]
+K:538:0x9E:0xBF
+
+# [Clairsentience]
+K:539:0x9E:0xC9
+
+# [Telekinesis]
+K:540:0x9E:0xCB
+
+# [Empathy]
+K:541:0x9E:0xCA
+
+# & Club~
+K:542:0x9E:0xCA
+
+# & Broad Spear~
+K:543:0x9E:0xBC
+
+# & Khopesh~
+K:544:0x9E:0xCC
+
+# & Flamberge~
+K:545:0x9E:0xBB
+
+# & Claymore~
+K:546:0x9E:0xC5
+
+# & Espadon~
+K:547:0x9E:0xC6
+
+# & Great Scimitar~
+K:548:0x9E:0xC3
+
+# Arrow
+K:549:0x8A:0xD8
+
+# Bolt
+K:550:0x8A:0xD9
+
+# & Fauchard~
+K:551:0x9E:0xCD
+
+# & Guisarme~
+K:552:0x9E:0xCE
+
+# & Heavy Lance~
+K:553:0x9E:0xBA
+
+# & Basillard~
+K:554:0x9E:0xD1
+
+# Catapult
+K:555:0x8A:0xDA
+
+# Ring Mail~
+K:556:0x88:0x94
+
+# Cord Armour~
+K:557:0x88:0x88
+
+# Paper Armour~
+K:558:0x88:0xB9
+
+# Padded Armour~
+K:559:0x88:0x89
+
+# Fumes
+K:560:0x8A:0xDB
+
+# Stone and Hide Armour~
+K:561:0x88:0x8F
+
+# Magic
+K:562:0x8A:0xDC
+
+# Device
+K:563:0x8A:0xDD
+
+# Nothing
+K:564:0xA6:0xD4
+
+# Poison
+K:565:0x9E:0xF8
+
+# Nothing
+K:566:0xA6:0xD4
+
+# Nothing
+K:567:0xA6:0xD4
+
+# Nothing
+K:568:0xA6:0xD4
+
+# Nothing
+K:569:0xA6:0xD4
+
+# Explosion
+K:570:0x9E:0xF9
+
+# Teleport
+K:571:0x9E:0xFA
+
+# Nothing
+K:572:0xA6:0xD4
+
+# & Blood~ of Life
+K:573:0x85:0xFD
+
+# Cold
+K:574:0x9E:0xFB
+
+# Fire
+K:575:0x9E:0xFC
+
+# Acid
+K:576:0x9E:0xFD
+
+# & Mage Staff~
+K:577:0x9F:0xB8
+
+# Lightning
+K:578:0x85:0xB8
+
+# Life
+K:579:0x9E:0xFE
+
+# Confusion
+K:580:0x9E:0xFF
+
+# Light
+K:581:0x9F:0x80
+
+# & Ring~
+K:582:0x85:0xBD
+
+# Invisibility
+K:583:0x85:0xFD
+
+# Chaos
+K:584:0x9F:0x81
+
+# Corruption
+K:585:0x85:0xFD
+
+# Invisibility
+K:586:0x85:0xFD
+
+# Time
+K:587:0x9F:0x82
+
+# Deep Thoughts
+K:588:0x85:0x94
+
+# More Deep Thoughts
+K:589:0x85:0x95
+
+# Compendium of Deep Thoughts
+K:590:0x85:0x96
+
+# Artifact Lore Vol. I
+K:591:0x85:0x94
+
+# Artifact Lore Vol. II
+K:592:0x85:0x95
+
+# Artifact Lore Vol. III
+K:593:0x85:0x97
+
+# Monstrous Compendium 1
+K:594:0x85:0x97
+
+# Monstrous Compendium 2
+K:595:0x85:0x96
+
+# Monstrous Compendium 3
+K:596:0x85:0x95
+
+# Monstrous Compendium 4
+K:597:0x85:0x94
+
+# Monstrous Compendium 5
+K:598:0x85:0x97
+
+# Monstrous Compendium 6
+K:599:0x85:0x96
+
+# Monstrous Compendium 7
+K:600:0x85:0x95
+
+# Monstrous Compendium 8
+K:601:0x85:0x94
+
+# Monstrous Compendium 9
+K:602:0x85:0x95
+
+# Monstrous Compendium 10
+K:603:0x85:0x96
+
+# Monstrous Compendium 11
+K:604:0x85:0x97
+
+# Abomination
+K:605:0x85:0xFD
+
+# Shape of Wolf
+K:606:0x85:0xFD
+
+# Shape of Ape
+K:607:0x85:0xFD
+
+# Shape of Goat
+K:608:0x85:0xFD
+
+# Shape of Insect
+K:609:0x85:0xFD
+
+# Shape of Sparrow
+K:610:0x85:0xFD
+
+# Shape of Ent
+K:611:0x85:0xFD
+
+# Shape of Vampire
+K:612:0x85:0xFD
+
+# Shape of Spider
+K:613:0x85:0xFD
+
+# Shape of Mana ball
+K:614:0x85:0xFD
+
+# Shape of Fire cloud
+K:615:0x85:0xFD
+
+# Shape of Cold cloud
+K:616:0x85:0xFD
+
+# Shape of Chaos cloud
+K:617:0x85:0xFD
+
+# [Wolf]
+K:618:0x8B:0x98
+
+# [Ape]
+K:619:0x8B:0x99
+
+# [Goat]
+K:620:0x8B:0x9A
+
+# [Insect]
+K:621:0x8B:0x9B
+
+# [Sparrow]
+K:622:0x8B:0x9C
+
+# [Ent]
+K:623:0x8B:0x9D
+
+# [Vampire]
+K:624:0x8B:0x9E
+
+# [Spider]
+K:625:0x8B:0x9F
+
+# [Mana ball]
+K:626:0x8B:0xA0
+
+# [Fire cloud]
+K:627:0x8B:0xA1
+
+# [Cold cloud]
+K:628:0x8B:0xA2
+
+# [Chaos Cloud]
+K:629:0x8B:0xA3
+
+# [Ghost]
+K:630:0x8B:0xA4
+
+# [Kobold]
+K:631:0x8B:0xA5
+
+# [Dragon]
+K:632:0x8B:0xA6
+
+# [Demon]
+K:633:0x8B:0xA7
+
+# [Hound]
+K:634:0x8B:0xA8
+
+# [Quylthulg]
+K:635:0x8B:0xA9
+
+# [Maia]
+K:636:0x8B:0xAA
+
+# [Serpent]
+K:637:0x8B:0xAB
+
+# [Giant]
+K:638:0x8B:0xAC
+
+# [Vala]
+K:639:0x8B:0xAD
+
+# Magic
+K:640:0x9F:0x83
+
+# corpse
+K:641:0x9F:0xB9
+
+# skeleton
+K:642:0x8A:0xCE
+
+# head
+K:643:0x8A:0xCC
+
+# skull
+K:644:0x8A:0xCC
+
+# raw meat
+K:645:0x8A:0xBB
+
+# & Thunderlord Coat~
+K:646:0x88:0xBE
+
+# & Stone~
+K:647:0x8A:0xD4
+
+# & small wooden Boomerang~
+K:648:0x9F:0xBA
+
+# & wooden Boomerang~
+K:649:0x9F:0xBB
+
+# & small metal Boomerang~
+K:650:0x9F:0xBC
+
+# & metal Boomerang~
+K:651:0x9F:0xBD
+
+# & Anchor~
+K:652:0x8A:0x96
+
+# & ~
+K:653:0xA6:0xD4
+
+# Summon never-moving pet
+K:654:0x85:0x95
+
+# [Life in symbiosis]
+K:655:0x9F:0xBE
+
+# [Perfect Symbiosis]
+K:656:0x9F:0xBE
+
+# Cure Light Insanity
+K:657:0x85:0xFD
+
+# Cure Serious Insanity
+K:658:0x85:0xFD
+
+# Cure Critical Insanity
+K:659:0x85:0xFD
+
+# Cure Insanity
+K:660:0x85:0xFD
+
+# & Phial~
+K:661:0x8A:0xD5
+
+# Random Artifact
+K:662:0xA6:0xD4
+
+# Craftmanship
+K:663:0x85:0x97
+
+# The One Ring
+K:664:0x85:0x96
+
+# & Book~ of the Lays of the Heroes
+K:665:0x9F:0xBF
+
+# & Book~ of Sound Patterns
+K:666:0x9F:0xBF
+
+# [Harps of Rivendell]
+K:667:0x9F:0xBF
+
+# [Lays of Beleriand]
+K:668:0x9F:0xBF
+
+# & Flute~
+K:669:0x9F:0xC0
+
+# & Drum~
+K:670:0x9F:0xC1
+
+# & Harp~
+K:671:0x9F:0xC2
+
+# & Banjo~
+K:672:0x9F:0xC4
+
+# & Lute~
+K:673:0x9F:0xC3
+
+# & Mandolin~
+K:674:0x9F:0xC3
+
+# & Palantir~
+K:675:0x8A:0x97
+
+# Egg
+K:676:0x9F:0x85
+
+# Reset Recall
+K:677:0x85:0x95
+
+# Divination
+K:678:0x85:0x95
+
+# Self
+K:679:0x9F:0x86
+
+# Ray
+K:680:0x9F:0x87
+
+# Sphere
+K:681:0x9F:0x88
+
+# Knowledge
+K:682:0x9F:0x8C
+
+# Life
+K:683:0x9F:0x8D
+
+# Fire
+K:684:0x9F:0x8E
+
+# Cold
+K:685:0x9F:0x8F
+
+# Lightning
+K:686:0x9F:0x90
+
+# Acid
+K:687:0x9F:0x91
+
+# Element
+K:688:0x9F:0x92
+
+# Chaos
+K:689:0x9F:0x93
+
+# Mind
+K:690:0x9F:0x94
+
+# Holding
+K:691:0x9F:0x95
+
+# Arrow
+K:692:0x9F:0x89
+
+# Power Surge
+K:693:0x9F:0x8A
+
+# Armageddon
+K:694:0x9F:0x8B
+
+# Gravity
+K:695:0x9F:0x96
+
+# Extra Life
+K:696:0x9F:0x97
+
+# Undeath
+K:697:0x9E:0xD3
+
+# Protection
+K:698:0x9E:0xD4
+
+# & Horn~
+K:699:0x9F:0xC5
+
+# & Ring~ of Precognition
+K:700:0x85:0xBB
+
+# & Sprig~ of Athelas
+K:701:0x9F:0xC6
+
+# [Magic for Beginners]
+K:702:0x9F:0xC7
+
+# [Conjurings and Tricks]
+K:703:0x9F:0xC7
+
+# [Incantations and Illusions]
+K:704:0x9F:0xC7
+
+# [Sorcery and Evocations]
+K:705:0x9F:0xC7
+
+# [Beginners Handbook]
+K:706:0x9F:0xC8
+
+# [Words of Wisdom]
+K:707:0x9F:0xC8
+
+# [Chants and Blessings]
+K:708:0x9F:0xC8
+
+# [Exorcism and Dispelling]
+K:709:0x9F:0xC8
+
+# [Resistance of Scarabtarices]
+K:710:0x9F:0xCA
+
+# [Mordenkainen's Escapes]
+K:711:0x9F:0xCA
+
+# [Kelek's Grimoire of Power]
+K:712:0x9F:0xCA
+
+# [Tenser's Transformations]
+K:713:0x9F:0xCA
+
+# [Raal's Tome of Destruction]
+K:714:0x9F:0xCA
+
+# [Ethereal Openings]
+K:715:0x9F:0xCA
+
+# [Godly Insights]
+K:716:0x9F:0xC9
+
+# [Purifications and Healing]
+K:717:0x9F:0xC9
+
+# [Holy Infusions]
+K:718:0x9F:0xC9
+
+# [Wrath of God]
+K:719:0x9F:0xC9
+
+# & Old Scroll~ of Deincarnation
+K:720:0x85:0x97
+
+# & Dark Sword~
+K:721:0xA5:0xB9
+
+# Numenorean for beginners (I)
+K:722:0xA3:0xF8
+
+# Numenorean for beginners (II)
+K:723:0xA3:0xF9
+
+# Advanced lessons of Numenorean
+K:724:0xA3:0xF8
+
+# Advanced lessons of Sindarin
+K:725:0xA3:0xF9
+
+# & Shard~ of Pottery
+K:726:0x8A:0xCA
+
+# & Broken Stick~
+K:727:0x8A:0xCB
+
+# Wall Creation
+K:728:0x85:0x97
+
+# [Illusions for Beginners]
+K:729:0xA3:0xFA
+
+# [Tricks and Visions]
+K:730:0xA3:0xFA
+
+# [Phantasms and Illusions]
+K:731:0xA3:0xFA
+
+# [Shadows and Prisms]
+K:732:0xA3:0xFA
+
+# [Serten's Immunities]
+K:733:0xA3:0xFB
+
+# [Knowledge of Kenault]
+K:734:0xA3:0xFB
+
+# [Otiluke's Spheres]
+K:735:0xA3:0xFA
+
+# [Boccob's Book of Shadows]
+K:736:0xA3:0xFC
+
+# [Bigby's Handbook]
+K:737:0xA3:0xFC
+
+# & Book~ of Beginner Cantrips
+K:738:0xA3:0xFD
+
+# & Book~ of Teleportation
+K:739:0xA3:0xFE
+
+# & Book~ of Recall
+K:740:0xA3:0xFF
+
+# & Book~ of Summoning
+K:741:0xA3:0xF8
+
+# & Book~ of Fireflash
+K:742:0xA3:0xF9
+
+# & Potion~ of Learning
+K:743:0xA3:0xFA
+
+# [Eye of Sauron]
+K:744:0xA3:0xFB
+
+# [Flame of Udun]
+K:745:0xA3:0xFC
+
+# [Corruptions of Melkor]
+K:746:0xA3:0xFD
+
+# [Crescent of Morgul]
+K:747:0xA3:0xFE
+
+# [Morgoth's Ring]
+K:748:0xA3:0xFF
+
+# Spell
+K:749:0x86:0xC8
+
+# Wishing
+K:750:0x86:0xC8
+
+# Khuzdul - The hidden tongue of the Dwarves
+K:751:0x85:0x95
+
+# Nandorin for dummies
+K:752:0xA3:0xF9
+
+# Advanced lessons of Orcish
+K:753:0xA3:0xFA
+
+# & Ancient Tome~
+K:754:0xA3:0xFE
+
+# Flying
+K:755:0x85:0xC0
+
+# & Tome~ of the Time
+K:756:0xA3:0xF8
+
+# & Spellbook~ of #
+K:757:0x8C:0x9C
+
+# & Tome~ of Meta Spells
+K:758:0xA3:0xF9
+
+# & Tome~ of the Mind
+K:759:0xA3:0xFA
+
+# & Holy Tome~ of Eru Iluvatar
+K:760:0xA3:0xFB
+
+# & Holy Tome~ of Manwe Sulimo
+K:761:0xA3:0xFC
+
+# & War Tome~ of Tulkas
+K:762:0xA3:0xFD
+
+# & Unholy Tome~ of the Hellflame
+K:763:0xA3:0xFE
+
+# & Corrupted Tome~ of Melkor
+K:764:0xA3:0xFF
+
+# [Aiding Shades]
+K:765:0xA3:0xF8
+
+# [Morgoth's Space-Time Warpings]
+K:766:0xA3:0xF9
+
+# [Murazor's Tome of Conjuring & Dispelling]
+K:767:0xA3:0xFA
+
+# & Forest Tome~ of Yavanna
+K:768:0xA3:0xFB
+
+# [Sauron's Forgotten Tome]
+K:769:0xA3:0xFF
+
+# & Ring~
+K:770:0x85:0xBC
+
+# [Earth]
+K:771:0xA4:0x80
+
+# [Fire]
+K:772:0xA4:0x81
+
+# [Air]
+K:773:0xA4:0x82
+
+# [Water]
+K:774:0xA4:0x83
+
+# [Mana]
+K:775:0xA4:0x84
+
+# Home Summoning
+K:776:0x85:0x97
+
+# & Shadow Blade~
+K:777:0xA4:0x89
+
+# & Bluesteel Blade~
+K:778:0xA4:0x8A
+
+# the Serpents
+K:779:0xA5:0xC0
+
+# Darkness
+K:780:0xA5:0xC1
+
+# Knowledge
+K:781:0xA5:0xC2
+
+# Force
+K:782:0xA5:0xC3
+
+# Lightning
+K:783:0xA5:0xC4
+
+# Mana
+K:784:0xA5:0xC5
+
+# Ring~ of Power
+K:785:0xA5:0xC6
+
+# Climbing Set~
+K:786:0xA4:0x8B
+
+# Adventurer's guide to Middle-earth
+K:787:0x85:0x96
+
+# & Demonblade~
+K:788:0x8B:0xE0
+
+# & Demonshield~
+K:789:0x8B:0xE1
+
+# & Demonhorn~
+K:790:0x8B:0xE2
+
+# [Demonthoughts]
+K:791:0xA3:0xFB
+
+# [Hellfire Tome]
+K:792:0xA4:0x8C
+
+# & Wooden Rod~ of#
+K:793:0xA4:0x8D
+
+# & Copper Rod~ of#
+K:794:0xA4:0x8E
+
+# & Iron Rod~ of#
+K:795:0xA4:0x8F
+
+# & Moonstone Rod~ of#
+K:796:0xA4:0x90
+
+# & Silver Rod~ of#
+K:797:0xA4:0x91
+
+# & Golden Rod~ of#
+K:798:0xA4:0x93
+
+# & Mithril Rod~ of#
+K:799:0xA4:0x94
+
+# & Adamantite Rod~ of#
+K:800:0xA4:0x95
+
+# & Greater Ration~ of Health
+K:801:0xA5:0xBF
+
+# & Crumpled Scroll~ of Mass Resurrection
+K:802:0x85:0x96
+
+# & Cleaver~
+K:803:0xA5:0xBA
+
+# & Light War Axe~
+K:804:0xA5:0xBB
+
+# & Slaughter Axe~
+K:805:0xA5:0xBC
+
+# & Runestone~
+K:806:0xA5:0xBD
+
+# & Fortune cookie~
+K:807:0xA6:0xBE
+
+# Portable hole
+K:808:0xA6:0xC1
+
+# Critical Hits
+K:809:0xA6:0xD4
+
+# & Wand~ of Digging of Thrain
+K:810:0xA6:0xD4
+
+# & Gnarled Staff~ of Holy Fire of Mithrandir
+K:811:0xA6:0xD4
+
+# Partial Totem
+K:812:0xA6:0xD5
+
+# True Totem
+K:813:0xA6:0xD6
+
+# & piece~ of a Relic of Eru
+K:814:0x89:0xDA
+
+# & piece~ of a Relic of Manwe
+K:815:0x89:0xDB
+
+# & piece~ of a Relic of Tulkas
+K:816:0x89:0xDC
+
+# & piece~ of a Relic of Melkor
+K:817:0x89:0xDD
+
+# & piece~ of a Relic of Yavanna
+K:818:0x89:0xDE
+
+# Player
+R:0:0x80:0xC0
+
+# Filthy street urchin
+R:1:0x98:0xB8
+
+# Scrawny cat
+R:2:0x96:0xFA
+
+# Sparrow
+R:3:0x9D:0xD6
+
+# Chaffinch
+R:4:0x9D:0xD6
+
+# Wild rabbit
+R:5:0x9D:0xD7
+
+# Woodsman
+R:6:0x98:0xC9
+
+# Scruffy little dog
+R:7:0x92:0x92
+
+# Farmer Maggot
+R:8:0x98:0xB9
+
+# Blubbering idiot
+R:9:0x98:0xBA
+
+# Boil-covered wretch
+R:10:0x98:0xBB
+
+# Village idiot
+R:11:0x98:0xBC
+
+# Pitiful-looking beggar
+R:12:0x98:0xBD
+
+# Mangy-looking leper
+R:13:0x98:0xBE
+
+# Agent of the black market
+R:14:0x98:0xBF
+
+# Singing, happy drunk
+R:15:0x98:0xC0
+
+# Aimless-looking merchant
+R:16:0x98:0xC1
+
+# Mean-looking mercenary
+R:17:0x98:0xC2
+
+# Battle-scarred veteran
+R:18:0x98:0xC3
+
+# Martti Ihrasaari
+R:19:0x9B:0xB8
+
+# Grey mold
+R:20:0x97:0xD7
+
+# Large white snake
+R:21:0x94:0xBD
+
+# Grey mushroom patch
+R:22:0x9B:0xB9
+
+# Newt
+R:23:0x9B:0xBA
+
+# Giant white centipede
+R:24:0x96:0x8D
+
+# White icky thing
+R:25:0x97:0xBB
+
+# Clear icky thing
+R:26:0x97:0xBC
+
+# Giant white mouse
+R:27:0x99:0xBD
+
+# Large brown snake
+R:28:0x94:0xBC
+
+# Small kobold
+R:29:0x97:0xD1
+
+# Kobold
+R:30:0x97:0xD2
+
+# White worm mass
+R:31:0x99:0xD5
+
+# Floating eye
+R:32:0x96:0xD3
+
+# Rock lizard
+R:33:0x94:0xBE
+
+# Grid bug
+R:34:0x9B:0xBC
+
+# Jackal
+R:35:0x92:0x93
+
+# Soldier ant
+R:36:0x95:0xFF
+
+# Fruit bat
+R:37:0x96:0x87
+
+# Insect swarm
+R:38:0x9E:0x96
+
+# The Greater hell-beast
+R:39:0x9B:0xBB
+
+# Shrieker mushroom patch
+R:40:0x91:0xFE
+
+# Blubbering icky thing
+R:41:0x97:0xBD
+
+# Metallic green centipede
+R:42:0x96:0x8E
+
+# Novice warrior
+R:43:0x98:0xC4
+
+# Novice rogue
+R:44:0x98:0xC5
+
+# Novice priest
+R:45:0x98:0xC6
+
+# Novice mage
+R:46:0x98:0xC7
+
+# Yellow mushroom patch
+R:47:0x91:0xFF
+
+# White jelly
+R:48:0x97:0xC2
+
+# Giant black ant
+R:49:0x96:0x80
+
+# Salamander
+R:50:0x94:0xC0
+
+# White harpy
+R:51:0x93:0xC0
+
+# Blue yeek
+R:52:0x99:0xFF
+
+# Grip, Farmer Maggot's dog
+R:53:0x92:0x94
+
+# Wolf, Farmer Maggot's dog
+R:54:0x92:0x95
+
+# Fang, Farmer Maggot's dog
+R:55:0x92:0x95
+
+# Giant green frog
+R:56:0x94:0xBF
+
+# Freesia
+R:57:0x9B:0xBD
+
+# Green worm mass
+R:58:0x99:0xD6
+
+# Large yellow snake
+R:59:0x94:0xC1
+
+# Cave spider
+R:60:0x94:0xD5
+
+# Crow
+R:61:0x9E:0x97
+
+# Wild cat
+R:62:0x96:0xFB
+
+# Smeagol
+R:63:0x98:0xC8
+
+# Green ooze
+R:64:0x97:0xC3
+
+# Poltergeist
+R:65:0x93:0x91
+
+# Yellow jelly
+R:66:0x97:0xC5
+
+# Metallic blue centipede
+R:67:0x96:0x8F
+
+# Raven
+R:68:0x9E:0x97
+
+# Giant white louse
+R:69:0x97:0xD5
+
+# Giant yellow centipede
+R:70:0x96:0x8C
+
+# Black naga
+R:71:0x98:0x80
+
+# Spotted mushroom patch
+R:72:0x92:0x80
+
+# Silver jelly
+R:73:0x97:0xC4
+
+# Scruffy-looking hobbit
+R:74:0x97:0x8B
+
+# Giant white ant
+R:75:0x96:0x81
+
+# Yellow mold
+R:76:0x97:0xF8
+
+# Metallic red centipede
+R:77:0x96:0x90
+
+# Yellow worm mass
+R:78:0x99:0xD7
+
+# Clear worm mass
+R:79:0x99:0xF8
+
+# Radiation eye
+R:80:0x96:0xD4
+
+# Yellow light
+R:81:0x9F:0xCB
+
+# Cave lizard
+R:82:0x94:0xC2
+
+# Novice ranger
+R:83:0x98:0xC9
+
+# Blue jelly
+R:84:0x97:0xC6
+
+# Creeping copper coins
+R:85:0x91:0xF8
+
+# Giant white rat
+R:86:0x99:0xBE
+
+# Snotling
+R:87:0xA0:0x81
+
+# Swordfish
+R:88:0x9E:0xD6
+
+# Blue worm mass
+R:89:0x99:0xF9
+
+# Large grey snake
+R:90:0x94:0xC3
+
+# Skeleton kobold
+R:91:0x99:0xC1
+
+# Ewok
+R:92:0x9B:0xBE
+
+# Novice mage
+R:93:0x98:0xC7
+
+# Green naga
+R:94:0x98:0x81
+
+# Giant leech
+R:95:0x9F:0xCC
+
+# Barracuda
+R:96:0x9E:0xD7
+
+# Novice paladin
+R:97:0x98:0xCA
+
+# Zog
+R:98:0x93:0xF8
+
+# Blue ooze
+R:99:0x97:0xC7
+
+# Green glutton ghost
+R:100:0x93:0x92
+
+# Green jelly
+R:101:0x97:0xC8
+
+# Large kobold
+R:102:0x97:0xD3
+
+# Grey icky thing
+R:103:0x97:0xBE
+
+# Disenchanter eye
+R:104:0x96:0xD5
+
+# Red worm mass
+R:105:0x99:0xFA
+
+# Copperhead snake
+R:106:0x94:0xC4
+
+# Death sword
+R:107:0x9B:0xBF
+
+# Purple mushroom patch
+R:108:0x92:0x81
+
+# Novice priest
+R:109:0x98:0xC6
+
+# Novice warrior
+R:110:0x98:0xC4
+
+# Nibelung
+R:111:0x9B:0xC0
+
+# The disembodied hand that strangled people
+R:112:0x9B:0xC1
+
+# Brown mold
+R:113:0x97:0xF9
+
+# Giant brown bat
+R:114:0x96:0x88
+
+# Rat-thing
+R:115:0x99:0xC0
+
+# Novice rogue
+R:116:0x98:0xBF
+
+# Creeping silver coins
+R:117:0x91:0xF9
+
+# Snaga
+R:118:0x98:0x86
+
+# Rattlesnake
+R:119:0x94:0xC5
+
+# Giant slug
+R:120:0x9F:0xCC
+
+# Giant pink frog
+R:121:0x9F:0xCD
+
+# Dark elf
+R:122:0x8C:0xCC
+
+# Zombified kobold
+R:123:0x99:0xC1
+
+# Crypt creep
+R:124:0x9B:0xC2
+
+# Rotting corpse
+R:125:0x9B:0xC3
+
+# Cave orc
+R:126:0x98:0x87
+
+# Wood spider
+R:127:0x94:0xD6
+
+# Manes
+R:128:0x93:0xC9
+
+# Bloodshot eye
+R:129:0x96:0xD6
+
+# Red naga
+R:130:0x98:0x82
+
+# Red jelly
+R:131:0x97:0xC9
+
+# Green icky thing
+R:132:0x97:0xBF
+
+# Lost soul
+R:133:0x93:0x93
+
+# Night lizard
+R:134:0x94:0xC7
+
+# Mughash, the Kobold Lord
+R:135:0x97:0xD4
+
+# Skeleton orc
+R:136:0x99:0xC2
+
+# Wormtongue, Agent of Saruman
+R:137:0x98:0xD0
+
+# Robin Hood, the Outlaw
+R:138:0x9B:0xC4
+
+# Nurgling
+R:139:0x9F:0xCF
+
+# Lagduf, the Snaga
+R:140:0x98:0x88
+
+# Brown yeek
+R:141:0x9A:0x80
+
+# Novice ranger
+R:142:0x98:0xC9
+
+# Giant salamander
+R:143:0x94:0xC8
+
+# Space monster
+R:144:0x9B:0xC5
+
+# Carnivorous flying monkey
+R:145:0x9F:0xD0
+
+# Green mold
+R:146:0x97:0xFA
+
+# Novice paladin
+R:147:0x98:0xCA
+
+# Lemure
+R:148:0x93:0xCA
+
+# Hill orc
+R:149:0x98:0x89
+
+# Bandit
+R:150:0x98:0xD3
+
+# Hunting hawk
+R:151:0x9B:0xC6
+
+# Phantom warrior
+R:152:0x9B:0xC7
+
+# Gremlin
+R:153:0x9B:0xC8
+
+# Yeti
+R:154:0x95:0xC9
+
+# Bloodshot icky thing
+R:155:0x97:0xC0
+
+# Giant grey rat
+R:156:0x99:0xBF
+
+# Black harpy
+R:157:0x93:0xC1
+
+# Skaven
+R:158:0x9F:0xD1
+
+# The wounded bear
+R:159:0xA0:0xB8
+
+# Cave bear
+R:160:0xA5:0xC7
+
+# Rock mole
+R:161:0xA0:0xBA
+
+# Mindcrafter
+R:162:0x98:0xCB
+
+# Baby blue dragon
+R:163:0x96:0x95
+
+# Baby white dragon
+R:164:0x96:0x96
+
+# Baby green dragon
+R:165:0x96:0x97
+
+# Baby black dragon
+R:166:0x96:0xB8
+
+# Baby red dragon
+R:167:0x96:0xB9
+
+# Giant red ant
+R:168:0x96:0x85
+
+# Brodda, the Easterling
+R:169:0x98:0xD4
+
+# Bloodfang, the Wolf
+R:170:0xA0:0xBB
+
+# King cobra
+R:171:0x94:0xC9
+
+# Eagle
+R:172:0x9D:0xD6
+
+# War bear
+R:173:0x9B:0xC9
+
+# Killer bee
+R:174:0x9B:0xCA
+
+# Giant spider
+R:175:0x94:0xD7
+
+# Giant white tick
+R:176:0x97:0xD5
+
+# The Borshin
+R:177:0xA0:0xBC
+
+# Dark elven mage
+R:178:0x97:0x8E
+
+# Kamikaze yeek
+R:179:0xA0:0xCC
+
+# Orfax, Son of Boldor
+R:180:0x9A:0x81
+
+# Servant of Glaaki
+R:181:0xA0:0xBD
+
+# Dark elven warrior
+R:182:0x97:0x8F
+
+# Sand-dweller
+R:183:0xA0:0xBE
+
+# Clear mushroom patch
+R:184:0x9F:0xCE
+
+# Quiver slot
+R:185:0x9B:0xCB
+
+# Grishnakh, the Hill Orc
+R:186:0x98:0x8B
+
+# Giant tan bat
+R:187:0xA5:0xC8
+
+# Owlbear
+R:188:0xA0:0xBF
+
+# Blue horror
+R:189:0x9F:0xD2
+
+# Hairy mold
+R:190:0x97:0xFB
+
+# Grizzly bear
+R:191:0xA0:0xC0
+
+# Disenchanter mold
+R:192:0x97:0xFC
+
+# Pseudo dragon
+R:193:0x96:0xBA
+
+# Tengu
+R:194:0x93:0xCB
+
+# Creeping gold coins
+R:195:0x91:0xFA
+
+# Wolf
+R:196:0x92:0x96
+
+# Giant fruit fly
+R:197:0x93:0x89
+
+# Panther
+R:198:0x96:0xFC
+
+# Brigand
+R:199:0x9B:0xCC
+
+# Hobbes the Tiger
+R:200:0x9B:0xCD
+
+# Shadow Creature of Fiona
+R:201:0x9B:0xCE
+
+# Undead mass
+R:202:0x9B:0xCF
+
+# Chaos shapechanger
+R:203:0x9B:0xD0
+
+# Baby multi-hued dragon
+R:204:0x96:0xBB
+
+# Vorpal bunny
+R:205:0x9D:0xD7
+
+# Old Man Willow
+R:206:0xA0:0xC1
+
+# Hippocampus
+R:207:0xA0:0xC2
+
+# Zombified orc
+R:208:0x99:0xC4
+
+# Hippogriff
+R:209:0x93:0xC2
+
+# Black mamba
+R:210:0x94:0xCA
+
+# White wolf
+R:211:0x92:0x97
+
+# Grape jelly
+R:212:0x97:0xCA
+
+# Nether worm mass
+R:213:0x99:0xFB
+
+# Abyss worm mass
+R:214:0x9B:0xD1
+
+# Golfimbul, the Hill Orc Chief
+R:215:0x98:0x8C
+
+# Swordsman
+R:216:0x8E:0xF9
+
+# Skaven shaman
+R:217:0x90:0xBC
+
+# Baby bronze dragon
+R:218:0x96:0xBA
+
+# Baby gold dragon
+R:219:0x96:0xBA
+
+# Evil eye
+R:220:0xA5:0xC9
+
+# Mine-dog
+R:221:0xA0:0x83
+
+# Hellcat
+R:222:0x9B:0xD2
+
+# Moon beast
+R:223:0x9B:0xD3
+
+# Master yeek
+R:224:0x9A:0x82
+
+# Priest
+R:225:0x98:0xD6
+
+# Dark elven priest
+R:226:0x97:0x91
+
+# Air spirit
+R:227:0x92:0xD7
+
+# Skeleton human
+R:228:0x99:0xC3
+
+# Zombified human
+R:229:0x9A:0x86
+
+# Tiger
+R:230:0x96:0xFD
+
+# Moaning spirit
+R:231:0x93:0x94
+
+# Stegocentipede
+R:232:0x96:0x91
+
+# Spotted jelly
+R:233:0x97:0xCB
+
+# Drider
+R:234:0x94:0xF8
+
+# Mongbat
+R:235:0x9B:0xD4
+
+# Killer brown beetle
+R:236:0x93:0xD3
+
+# Boldor, King of the Yeeks
+R:237:0x9A:0x83
+
+# Ogre
+R:238:0x94:0x83
+
+# Creeping mithril coins
+R:239:0x91:0xFB
+
+# Illusionist
+R:240:0x98:0xF8
+
+# Druid
+R:241:0x98:0xF9
+
+# Pink horror
+R:242:0x9F:0xD3
+
+# Cloaker
+R:243:0x88:0x80
+
+# Black orc
+R:244:0x98:0x8D
+
+# Ochre jelly
+R:245:0x97:0xCC
+
+# Software bug
+R:246:0x9B:0xD5
+
+# Lurker
+R:247:0x83:0xB9
+
+# Tangleweed
+R:248:0xA5:0xCA
+
+# Vlasta
+R:249:0x95:0xFC
+
+# Giant white dragon fly
+R:250:0x93:0x8B
+
+# Snaga sapper
+R:251:0xA0:0x84
+
+# Blue icky thing
+R:252:0x97:0xC1
+
+# Gibbering mouther
+R:253:0x9B:0xD6
+
+# Wolfhound of Flora
+R:254:0x9B:0xD7
+
+# Hill giant
+R:255:0x94:0x89
+
+# Flesh golem
+R:256:0x97:0x81
+
+# Warg
+R:257:0x92:0xB8
+
+# Cheerful leprechaun
+R:258:0x9B:0xF8
+
+# Giant flea
+R:259:0x93:0x8A
+
+# Ufthak of Cirith Ungol
+R:260:0xA0:0xC4
+
+# Clay golem
+R:261:0x9F:0xD5
+
+# Black ogre
+R:262:0x94:0x84
+
+# Dweller on the threshold
+R:263:0xA0:0x85
+
+# Half-orc
+R:264:0xA0:0xC5
+
+# Dark naga
+R:265:0x9F:0xD6
+
+# Poison ivy
+R:266:0xA5:0xCB
+
+# Magic mushroom patch
+R:267:0x92:0x83
+
+# Plaguebearer of Nurgle
+R:268:0x9A:0x85
+
+# Guardian naga
+R:269:0x98:0x83
+
+# Wererat
+R:270:0xA0:0xC6
+
+# Light hound
+R:271:0x95:0xCB
+
+# Dark hound
+R:272:0x95:0xCC
+
+# Flying skull
+R:273:0x9B:0xF9
+
+# Mi-Go
+R:274:0x9B:0xFA
+
+# Giant tarantula
+R:275:0x94:0xF9
+
+# Giant clear centipede
+R:276:0x96:0x92
+
+# Mirkwood spider
+R:277:0x94:0xFA
+
+# Frost giant
+R:278:0x94:0x8A
+
+# Griffon
+R:279:0x93:0xC3
+
+# Homunculus
+R:280:0x93:0xCC
+
+# Gnome mage
+R:281:0x97:0x90
+
+# Clear hound
+R:282:0x95:0xCD
+
+# Umber hulk
+R:283:0x95:0x91
+
+# Rust monster
+R:284:0xA0:0x87
+
+# Ogrillon
+R:285:0x98:0x90
+
+# Gelatinous cube
+R:286:0x97:0xCD
+
+# Giant green dragon fly
+R:287:0x93:0x8C
+
+# Fire giant
+R:288:0x94:0x8B
+
+# Hummerhorn
+R:289:0xA0:0xC7
+
+# Lizard man
+R:290:0xA0:0x88
+
+# Ulfast, Son of Ulfang
+R:291:0x98:0xFA
+
+# Crebain
+R:292:0xA5:0xCC
+
+# Berserker
+R:293:0x98:0x8F
+
+# Quasit
+R:294:0x93:0xCD
+
+# Sphinx
+R:295:0xA0:0x89
+
+# Imp
+R:296:0x93:0xCE
+
+# Forest troll
+R:297:0x95:0x81
+
+# Freezing sphere
+R:298:0xA0:0xC9
+
+# Jumping fireball
+R:299:0xA0:0x8A
+
+# Ball lightning
+R:300:0xA0:0xCA
+
+# 2-headed hydra
+R:301:0x94:0xCB
+
+# Swamp thing
+R:302:0xA0:0x8B
+
+# Water spirit
+R:303:0x92:0xF8
+
+# Giant red scorpion
+R:304:0x94:0xFB
+
+# Earth spirit
+R:305:0x92:0xF9
+
+# Fire spirit
+R:306:0x92:0xFA
+
+# Fire hound
+R:307:0x95:0xCE
+
+# Cold hound
+R:308:0x95:0xCF
+
+# Energy hound
+R:309:0x95:0xD0
+
+# Lesser Mimic
+R:310:0x92:0x86
+
+# Door mimic
+R:311:0x84:0xBB
+
+# Blink dog
+R:312:0x92:0xB9
+
+# Uruk
+R:313:0x98:0x91
+
+# Shagrat, the Orc Captain
+R:314:0x98:0x92
+
+# Gorbag, the Orc Captain
+R:315:0x98:0x93
+
+# Shambling mound
+R:316:0x92:0x84
+
+# Giant Venus Flytrap
+R:317:0xA5:0xCD
+
+# Chaos beastman
+R:318:0xA0:0x8D
+
+# Daemonette of Slaanesh
+R:319:0xA0:0x8C
+
+# Giant bronze dragon fly
+R:320:0x93:0x90
+
+# Stone giant
+R:321:0x94:0x8C
+
+# Giant black dragon fly
+R:322:0x93:0x8E
+
+# Stone golem
+R:323:0x97:0x83
+
+# Red mold
+R:324:0x97:0xFD
+
+# Giant gold dragon fly
+R:325:0x93:0x8F
+
+# Stunwall
+R:326:0x83:0xCB
+
+# Ghast
+R:327:0xA0:0xCD
+
+# Neekerbreeker
+R:328:0xA5:0xCE
+
+# Huorn
+R:329:0xA0:0xCE
+
+# Bolg, Son of Azog
+R:330:0x98:0x94
+
+# Phase spider
+R:331:0x94:0xFC
+
+# Lizard king
+R:332:0xA0:0x8F
+
+# Landmine
+R:333:0xA0:0xCF
+
+# Wyvern
+R:334:0x9B:0xFB
+
+# Great eagle
+R:335:0xA0:0x90
+
+# Livingstone
+R:336:0x9B:0xFC
+
+# Earth hound
+R:337:0x95:0xD1
+
+# Air hound
+R:338:0x95:0xD2
+
+# Sabre-tooth tiger
+R:339:0x96:0xFE
+
+# Acid hound
+R:340:0x95:0xD3
+
+# Chimaera
+R:341:0x93:0xC4
+
+# Quylthulg
+R:342:0x94:0x92
+
+# Sasquatch
+R:343:0x95:0xCA
+
+# Weir
+R:344:0x9B:0xFD
+
+# Ranger
+R:345:0x98:0xCF
+
+# Paladin
+R:346:0x99:0x8A
+
+# Werewolf
+R:347:0xA0:0xD1
+
+# Dark elven lord
+R:348:0x97:0x94
+
+# Cloud giant
+R:349:0x94:0x8E
+
+# Ugluk, the Uruk
+R:350:0x98:0x95
+
+# Blue dragon bat
+R:351:0x96:0x89
+
+# Mimic
+R:352:0x85:0x95
+
+# Ultimate Mimic
+R:353:0x85:0xD6
+
+# Fire vortex
+R:354:0x99:0xCC
+
+# Acid vortex
+R:355:0x99:0xCD
+
+# Lugdush, the Uruk
+R:356:0xA0:0x92
+
+# Arch-vile
+R:357:0xA0:0xD2
+
+# Cold vortex
+R:358:0x99:0xCE
+
+# Energy vortex
+R:359:0x99:0xCF
+
+# Globefish
+R:360:0xA0:0x93
+
+# Giant firefly
+R:361:0x93:0x8D
+
+# Mummified orc
+R:362:0x94:0x80
+
+# Wolf chieftain
+R:363:0xA5:0xCF
+
+# Serpent man
+R:364:0xA0:0xD4
+
+# Vampiric mist
+R:365:0xA0:0x95
+
+# Killer stag beetle
+R:366:0x93:0xD5
+
+# Iron golem
+R:367:0x97:0x84
+
+# Auto-roller
+R:368:0x9B:0xFE
+
+# Giant yellow scorpion
+R:369:0x94:0xFD
+
+# Jade monk
+R:370:0xA0:0xD5
+
+# Black ooze
+R:371:0x97:0xCE
+
+# Hardened warrior
+R:372:0x98:0xFB
+
+# Azog, King of the Uruk-Hai
+R:373:0x98:0x97
+
+# Fleshhound of Khorne
+R:374:0xA0:0x96
+
+# Dark elven warlock
+R:375:0x9B:0xFF
+
+# Master rogue
+R:376:0x98:0xFC
+
+# Red dragon bat
+R:377:0x96:0x8A
+
+# Killer white beetle
+R:378:0xA0:0xD6
+
+# Ice skeleton
+R:379:0xA0:0x97
+
+# Angamaite of Umbar
+R:380:0xA0:0xF8
+
+# Forest wight
+R:381:0x9C:0x80
+
+# Khim, Son of Mim
+R:382:0x9C:0x81
+
+# Ibun, Son of Mim
+R:383:0x9C:0x82
+
+# Meneldor the Swift
+R:384:0xA0:0xF9
+
+# Phantom beast
+R:385:0x9C:0x83
+
+# Giant silver ant
+R:386:0x93:0xD4
+
+# 4-headed hydra
+R:387:0x94:0xCD
+
+# Lesser hell-beast
+R:388:0xA0:0xFB
+
+# Tyrannosaur
+R:389:0x9C:0x84
+
+# Mummified human
+R:390:0x94:0x81
+
+# Vampire bat
+R:391:0x96:0x8B
+
+# Sangahyando of Umbar
+R:392:0x98:0xFD
+
+# It
+R:393:0x9C:0x85
+
+# Banshee
+R:394:0x93:0x95
+
+# Carrion crawler
+R:395:0x96:0x93
+
+# Xiclotlan
+R:396:0xA0:0xFC
+
+# Silent watcher
+R:397:0x9C:0x86
+
+# Pukelman
+R:398:0x97:0x85
+
+# Disenchanter beast
+R:399:0xA0:0xD7
+
+# Dark elven druid
+R:400:0x97:0x97
+
+# Stone troll
+R:401:0x95:0x82
+
+# Black
+R:402:0x9B:0xC5
+
+# Hill troll
+R:403:0x95:0x83
+
+# Wereworm
+R:404:0x99:0xFC
+
+# Killer red beetle
+R:405:0x93:0xD7
+
+# Disenchanter bat
+R:406:0xA5:0xD0
+
+# Gnoph-Keh
+R:407:0xA0:0xFE
+
+# Giant grey ant
+R:408:0x96:0x84
+
+# Khufu, the Mummified King
+R:409:0x9C:0x87
+
+# Gwaihir the Windlord
+R:410:0xA0:0xF9
+
+# Giant fire tick
+R:411:0xA0:0xFF
+
+# Displacer beast
+R:412:0x96:0xFF
+
+# Ulwarth, Son of Ulfang
+R:413:0x98:0xD1
+
+# Werebear
+R:414:0xA5:0xC7
+
+# Cave ogre
+R:415:0x94:0x85
+
+# White wraith
+R:416:0x95:0x97
+
+# Angel
+R:417:0x92:0x87
+
+# Ghoul
+R:418:0x9D:0xC7
+
+# Mim, Betrayer of Turin
+R:419:0x9C:0x88
+
+# Hellblade
+R:420:0x9C:0x89
+
+# Killer fire beetle
+R:421:0x93:0xF8
+
+# Beast of Nurgle
+R:422:0xA1:0x80
+
+# Creeping adamantite coins
+R:423:0x91:0xFC
+
+# Algroth
+R:424:0x95:0x84
+
+# Flamer of Tzeentch
+R:425:0x9F:0xD7
+
+# Roper
+R:426:0x9F:0xF8
+
+# Headless
+R:427:0x9C:0x8A
+
+# Vibration hound
+R:428:0x95:0xD4
+
+# Nexus hound
+R:429:0x95:0xD5
+
+# Half-ogre
+R:430:0x94:0x86
+
+# Lokkak, the Ogre Chieftain
+R:431:0x94:0x88
+
+# Vampire
+R:432:0x95:0x92
+
+# Gorgimaera
+R:433:0x93:0xC5
+
+# Shantak
+R:434:0x9C:0x8B
+
+# Colbran
+R:435:0x97:0x86
+
+# Spirit naga
+R:436:0x98:0x84
+
+# Corpser
+R:437:0x9F:0xF9
+
+# Fiend of Slaanesh
+R:438:0x94:0xCF
+
+# Stairway to Hell
+R:439:0x9C:0x8C
+
+# 5-headed hydra
+R:440:0x94:0xCE
+
+# Barney the Dinosaur
+R:441:0x9C:0x8D
+
+# Black knight
+R:442:0x99:0x80
+
+# Seahorse
+R:443:0xA1:0x81
+
+# Cyclops
+R:444:0xA1:0x82
+
+# Clairvoyant
+R:445:0x98:0xFE
+
+# Purple worm
+R:446:0x9F:0xFA
+
+# Catoblepas
+R:447:0x99:0xB9
+
+# Lesser wall monster
+R:448:0x9C:0x8E
+
+# Mage
+R:449:0x99:0x82
+
+# Mind flayer
+R:450:0x99:0x83
+
+# The Ultimate Dungeon Cleaner
+R:451:0x9C:0x8F
+
+# Deep one
+R:452:0x95:0xBE
+
+# Basilisk
+R:453:0x94:0xCF
+
+# Ice troll
+R:454:0x95:0x85
+
+# Dhole
+R:455:0x9C:0x91
+
+# Archangel
+R:456:0x92:0x88
+
+# Greater Mimic
+R:457:0x9A:0x96
+
+# Chaos tile
+R:458:0x9C:0x92
+
+# Young blue dragon
+R:459:0x96:0xBC
+
+# Young white dragon
+R:460:0x96:0xBD
+
+# Young green dragon
+R:461:0x96:0xBE
+
+# Young bronze dragon
+R:462:0x96:0xBF
+
+# Aklash
+R:463:0xA4:0x96
+
+# Mithril golem
+R:464:0x97:0x87
+
+# Skeleton troll
+R:465:0x99:0xC5
+
+# Skeletal tyrannosaur
+R:466:0xA1:0x83
+
+# Beorn, the Shape-Changer
+R:467:0xA5:0xD1
+
+# Thorondor, Lord of Eagles
+R:468:0xA0:0xF9
+
+# Giant blue ant
+R:469:0x96:0x83
+
+# Grave wight
+R:470:0x9A:0x94
+
+# Shadow drake
+R:471:0x96:0xC0
+
+# Manticore
+R:472:0x93:0xC6
+
+# Giant army ant
+R:473:0x9A:0xB9
+
+# Killer slicer beetle
+R:474:0x93:0xF9
+
+# Gorgon
+R:475:0xA1:0x85
+
+# Gug
+R:476:0xA1:0x86
+
+# Ghost
+R:477:0x93:0x96
+
+# Death watch beetle
+R:478:0x93:0xFA
+
+# Mountain ogre
+R:479:0x94:0x87
+
+# Nexus quylthulg
+R:480:0x94:0x93
+
+# Shelob, Spider of Darkness
+R:481:0x94:0xFE
+
+# Giant squid
+R:482:0x9F:0xFB
+
+# Ghoulking
+R:483:0x9A:0x84
+
+# Doombat
+R:484:0x9F:0xFC
+
+# Ninja
+R:485:0x99:0x84
+
+# Memory moss
+R:486:0x97:0xFE
+
+# Storm giant
+R:487:0x94:0x8D
+
+# Spectator
+R:488:0x9C:0x93
+
+# Bokrug
+R:489:0xA1:0x87
+
+# Biclops
+R:490:0xA1:0x88
+
+# Half-troll
+R:491:0x98:0x96
+
+# Ivory monk
+R:492:0x98:0xCB
+
+# Bert the Stone Troll
+R:493:0x95:0x88
+
+# Bill the Stone Troll
+R:494:0x95:0x89
+
+# Tom the Stone Troll
+R:495:0x95:0x8A
+
+# Cave troll
+R:496:0x95:0x86
+
+# Anti-paladin
+R:497:0x9C:0x94
+
+# Chaos master
+R:498:0x9C:0x95
+
+# Barrow wight
+R:499:0x95:0xB9
+
+# Skeleton ettin
+R:500:0xA5:0xD2
+
+# Chaos drake
+R:501:0x96:0xC1
+
+# Law drake
+R:502:0x96:0xC2
+
+# Balance drake
+R:503:0x96:0xC3
+
+# Ethereal drake
+R:504:0x96:0xC4
+
+# Groo, the Wanderer
+R:505:0x9C:0x96
+
+# Fasolt the Giant
+R:506:0x9C:0x97
+
+# Shade
+R:507:0x95:0xC1
+
+# Spectre
+R:508:0x93:0xB8
+
+# Water troll
+R:509:0x95:0x8B
+
+# Fire elemental
+R:510:0x92:0xFB
+
+# Cherub
+R:511:0x92:0x89
+
+# Water elemental
+R:512:0x92:0xFC
+
+# Multi-hued hound
+R:513:0x9C:0xB9
+
+# Invisible stalker
+R:514:0x92:0xFD
+
+# Carrion crawler
+R:515:0x96:0x94
+
+# Master thief
+R:516:0x99:0x86
+
+# The Watcher in the Water
+R:517:0x9B:0x8D
+
+# Lich
+R:518:0x93:0xFB
+
+# Gas spore
+R:519:0x9C:0xC6
+
+# Master vampire
+R:520:0x95:0x93
+
+# Oriental vampire
+R:521:0x9C:0xBB
+
+# Greater mummy
+R:522:0x94:0x82
+
+# Bloodletter of Khorne
+R:523:0x93:0xD0
+
+# Giant grey scorpion
+R:524:0x94:0xFF
+
+# Earth elemental
+R:525:0x92:0xFE
+
+# Air elemental
+R:526:0x92:0xFF
+
+# Shimmering mold
+R:527:0x9A:0xF9
+
+# Gargoyle
+R:528:0xA1:0x89
+
+# Malicious leprechaun
+R:529:0x9C:0xBD
+
+# Eog golem
+R:530:0x97:0x88
+
+# Little Boy
+R:531:0x9F:0xFD
+
+# Dagashi
+R:532:0x99:0x88
+
+# Headless ghost
+R:533:0xA1:0x8A
+
+# Dread
+R:534:0x9F:0xFF
+
+# Leng spider
+R:535:0xA1:0x8B
+
+# Gauth
+R:536:0xA5:0xD3
+
+# Smoke elemental
+R:537:0x93:0x88
+
+# Olog
+R:538:0x95:0x8C
+
+# Halfling slinger
+R:539:0x9C:0xBE
+
+# Gravity hound
+R:540:0x95:0xD6
+
+# Acidic cytoplasm
+R:541:0x97:0xCF
+
+# Inertia hound
+R:542:0x95:0xD7
+
+# Impact hound
+R:543:0x95:0xF8
+
+# Shardstorm
+R:544:0xA5:0xD4
+
+# Ooze elemental
+R:545:0x93:0x80
+
+# Young black dragon
+R:546:0x96:0xC5
+
+# Mumak
+R:547:0x99:0xBC
+
+# Giant fire ant
+R:548:0x96:0x82
+
+# Mature white dragon
+R:549:0x96:0xC6
+
+# Xorn
+R:550:0x95:0xC7
+
+# Rogrog the Black Troll
+R:551:0x95:0x87
+
+# Mist giant
+R:552:0x97:0x89
+
+# Phantom
+R:553:0x9C:0xBF
+
+# Grey wraith
+R:554:0x95:0xBA
+
+# Revenant
+R:555:0x95:0xC0
+
+# Young multi-hued dragon
+R:556:0x96:0xC7
+
+# Raal's Tome of Destruction
+R:557:0x9C:0xC0
+
+# Colossus
+R:558:0x9C:0xC1
+
+# Young gold dragon
+R:559:0x96:0xC8
+
+# Mature blue dragon
+R:560:0x96:0xC9
+
+# Mature green dragon
+R:561:0x96:0xCA
+
+# Mature bronze dragon
+R:562:0x96:0xCB
+
+# Young red dragon
+R:563:0x96:0xCC
+
+# Nightblade
+R:564:0x9C:0xC2
+
+# Trapper
+R:565:0x9A:0x97
+
+# Bodak
+R:566:0x93:0xD0
+
+# Time bomb
+R:567:0xA1:0x8E
+
+# Mezzodaemon
+R:568:0x9A:0x88
+
+# Elder thing
+R:569:0x9C:0xC3
+
+# Ice elemental
+R:570:0x93:0x82
+
+# Necromancer
+R:571:0x9C:0xC4
+
+# The Greater hell magic mushroom were-quylthulg
+R:572:0x9F:0xFE
+
+# Lorgan, Chief of the Easterlings
+R:573:0x9C:0xC5
+
+# Chaos spawn
+R:574:0x9C:0xC6
+
+# Mummified troll
+R:575:0xA1:0x8F
+
+# Storm of Unmagic
+R:576:0xA5:0xD5
+
+# Crypt thing
+R:577:0x95:0xB8
+
+# Chaos butterfly
+R:578:0x80:0x80
+
+# Time elemental
+R:579:0x9C:0xC7
+
+# Flying polyp
+R:580:0xA1:0x91
+
+# The Queen Ant
+R:581:0x96:0x86
+
+# Will o' the wisp
+R:582:0x93:0x83
+
+# Shan
+R:583:0xA1:0x92
+
+# Magma elemental
+R:584:0x93:0x84
+
+# Black pudding
+R:585:0x97:0xD0
+
+# Killer iridescent beetle
+R:586:0x9D:0xC8
+
+# Nexus vortex
+R:587:0x9A:0xB8
+
+# Plasma vortex
+R:588:0x99:0xD0
+
+# Mature red dragon
+R:589:0x96:0xCD
+
+# Mature gold dragon
+R:590:0x96:0xCE
+
+# Crystal drake
+R:591:0x96:0xCF
+
+# Mature black dragon
+R:592:0x96:0xD0
+
+# Mature multi-hued dragon
+R:593:0x96:0xD1
+
+# Sky whale
+R:594:0xA1:0x93
+
+# Draebor, the Imp
+R:595:0xA4:0x97
+
+# Mother Hydra
+R:596:0x94:0xD0
+
+# Death knight
+R:597:0x99:0x8C
+
+# Castamir the Usurper
+R:598:0x9C:0xC8
+
+# Time vortex
+R:599:0x99:0xD1
+
+# Shimmering vortex
+R:600:0x99:0xD2
+
+# Ancient blue dragon
+R:601:0x92:0xC0
+
+# Ancient bronze dragon
+R:602:0x92:0xC1
+
+# Beholder
+R:603:0x96:0xD7
+
+# Emperor wight
+R:604:0x95:0xBB
+
+# Seraph
+R:605:0x92:0x8A
+
+# Vargo, Tyrant of Fire
+R:606:0x93:0x85
+
+# Black wraith
+R:607:0x95:0xBC
+
+# Nightgaunt
+R:608:0x9C:0xC9
+
+# Baron of hell
+R:609:0x9C:0xCA
+
+# Scylla
+R:610:0xA1:0x94
+
+# Monastic lich
+R:611:0x93:0xFF
+
+# Nether wraith
+R:612:0x95:0xBD
+
+# Hellhound
+R:613:0x9A:0x8E
+
+# 7-headed hydra
+R:614:0x94:0xD1
+
+# Waldern, King of Water
+R:615:0x93:0x86
+
+# Kavlax the Many-Headed
+R:616:0x96:0xD2
+
+# Ancient white dragon
+R:617:0x92:0xC2
+
+# Ancient green dragon
+R:618:0x92:0xC3
+
+# Chthonian
+R:619:0x9C:0xCB
+
+# Eldrak
+R:620:0x95:0x8F
+
+# Ettin
+R:621:0x95:0x8E
+
+# Night mare
+R:622:0x99:0xBB
+
+# Vampire lord
+R:623:0x95:0x94
+
+# Ancient black dragon
+R:624:0x92:0xC4
+
+# Weird fume
+R:625:0x9A:0xF8
+
+# Spawn of Ubbo-Sathla
+R:626:0xA1:0x95
+
+# Fat Man
+R:627:0x9F:0xFD
+
+# Malekith the Accursed
+R:628:0x97:0x8D
+
+# Shadowfax, steed of Gandalf
+R:629:0xA1:0x96
+
+# Spirit troll
+R:630:0x95:0x90
+
+# War troll
+R:631:0x9C:0xCC
+
+# Disenchanter worm mass
+R:632:0x99:0xFE
+
+# Rotting quylthulg
+R:633:0x94:0x94
+
+# Lesser titan
+R:634:0x94:0x8F
+
+# 9-headed hydra
+R:635:0x94:0xD1
+
+# Enchantress
+R:636:0x99:0x8E
+
+# Ranger chieftain
+R:637:0x99:0x8F
+
+# Sorcerer
+R:638:0x99:0x90
+
+# Xaren
+R:639:0x95:0xC8
+
+# Giant roc
+R:640:0x92:0x8F
+
+# Minotaur
+R:641:0x93:0xC7
+
+# Medusa, the Gorgon
+R:642:0x98:0x85
+
+# Death drake
+R:643:0x92:0xC5
+
+# Ancient red dragon
+R:644:0x92:0xC6
+
+# Ancient gold dragon
+R:645:0x92:0xC7
+
+# Great crystal drake
+R:646:0x92:0xC8
+
+# Wyrd sister
+R:647:0x97:0x95
+
+# Vrock
+R:648:0x9C:0xCD
+
+# Death quasit
+R:649:0x93:0xD1
+
+# Giganto, the Gargantuan
+R:650:0xA1:0x97
+
+# Strygalldwir
+R:651:0x9C:0xCE
+
+# Fallen angel
+R:652:0x98:0xC6
+
+# Giant headless
+R:653:0xA1:0xB8
+
+# Judge Fire
+R:654:0x99:0x8B
+
+# Ubbo-Sathla, the Unbegotten Source
+R:655:0xA1:0xB9
+
+# Judge Mortis
+R:656:0xA1:0xBA
+
+# Dark elven sorcerer
+R:657:0x97:0xB9
+
+# Master lich
+R:658:0x93:0xFC
+
+# Byakhee
+R:659:0x9C:0xCF
+
+# Eol, the Dark Elf
+R:660:0x9C:0xD1
+
+# Archon
+R:661:0x92:0x8B
+
+# Formless spawn of Tsathoggua
+R:662:0x9C:0xD2
+
+# Hunting horror
+R:663:0x9C:0xD3
+
+# Undead beholder
+R:664:0x96:0xF8
+
+# Shadow
+R:665:0x93:0xB9
+
+# Iron lich
+R:666:0x9C:0xD4
+
+# Dread
+R:667:0x9F:0xFF
+
+# Greater basilisk
+R:668:0xA1:0xBB
+
+# Charybdis
+R:669:0xA1:0xBC
+
+# Jack of Shadows
+R:670:0x99:0x94
+
+# Zephyr Lord
+R:671:0x99:0x89
+
+# Juggernaut of Khorne
+R:672:0xA1:0xBD
+
+# Mumak
+R:673:0x99:0xBA
+
+# Judge Fear
+R:674:0x97:0x80
+
+# Ancient multi-hued dragon
+R:675:0x92:0xC9
+
+# Ethereal dragon
+R:676:0x92:0xCA
+
+# Dark young of Shub-Niggurath
+R:677:0x9C:0xD5
+
+# Colour out of space
+R:678:0x8C:0x91
+
+# Quaker, Master of Earth
+R:679:0x93:0x87
+
+# Death leprechaun
+R:680:0x97:0x96
+
+# Chaugnar Faugn, Horror from the Hills
+R:681:0xA1:0xCC
+
+# Lloigor
+R:682:0xA1:0xCD
+
+# Utgard-Loke
+R:683:0xA1:0xCE
+
+# Quachil Uttaus, Treader of the Dust
+R:684:0xA1:0xCF
+
+# Shoggoth
+R:685:0xA1:0xD0
+
+# Judge Death
+R:686:0xA1:0xD1
+
+# Ariel, Queen of Air
+R:687:0x93:0x89
+
+# 11-headed hydra
+R:688:0x94:0xD2
+
+# Patriarch
+R:689:0x99:0x92
+
+# Dreadmaster
+R:690:0x93:0xBD
+
+# Drolem
+R:691:0x97:0x8A
+
+# Scatha the Worm
+R:692:0x9A:0x93
+
+# Warrior of the Dawn
+R:693:0x9C:0xD6
+
+# Lesser black reaver
+R:694:0x95:0xBF
+
+# Zoth-Ommog
+R:695:0xA2:0xC1
+
+# Grand master thief
+R:696:0xA4:0xC2
+
+# Smaug the Golden
+R:697:0x92:0xCB
+
+# The Stormbringer
+R:698:0x9C:0xF8
+
+# Knight Templar
+R:699:0x9C:0xF9
+
+# Leprechaun fanatic
+R:700:0x97:0xB8
+
+# Dracolich
+R:701:0x92:0xCD
+
+# Greater titan
+R:702:0x94:0x90
+
+# Dracolisk
+R:703:0x92:0xCC
+
+# Winged Horror
+R:704:0xA5:0xD6
+
+# Spectral tyrannosaur
+R:705:0x9C:0xFA
+
+# Yibb-Tstll, the Patient One
+R:706:0xA1:0xD3
+
+# Ghatanothoa
+R:707:0xA1:0xD4
+
+# Ent
+R:708:0xA1:0xBE
+
+# Hru
+R:709:0xA1:0xD5
+
+# Itangast the Fire Drake
+R:710:0x92:0xCE
+
+# Death mold
+R:711:0x97:0xFF
+
+# Fafner the Dragon
+R:712:0x9C:0xFB
+
+# Charon, Boatman of the Styx
+R:713:0xA1:0xD6
+
+# Quickbeam, the Ent
+R:714:0xA1:0xD7
+
+# Glaurung, Father of the Dragons
+R:715:0x9A:0x92
+
+# Behemoth
+R:716:0xA1:0xF8
+
+# Garm, Guardian of Hel
+R:717:0x92:0xBC
+
+# Greater wall monster
+R:718:0x9C:0xFC
+
+# Nycadaemon
+R:719:0x9A:0x89
+
+# Barbazu
+R:720:0x9A:0x8D
+
+# Goat of Mendes
+R:721:0x9C:0xFD
+
+# Nightwing
+R:722:0x9A:0x95
+
+# Maulotaur
+R:723:0x9C:0xFE
+
+# Nether hound
+R:724:0x95:0xF9
+
+# Time hound
+R:725:0x95:0xFA
+
+# Plasma hound
+R:726:0x95:0xFB
+
+# Demonic quylthulg
+R:727:0x94:0x95
+
+# Great Storm Wyrm
+R:728:0x92:0xCF
+
+# Ulik the Troll
+R:729:0xA1:0xF9
+
+# Baphomet the Minotaur Lord
+R:730:0x93:0xC8
+
+# Hell knight
+R:731:0xA1:0xFA
+
+# Bull Gates
+R:732:0x9C:0xFF
+
+# Santa Claus
+R:733:0x9D:0x80
+
+# Eihort, the Thing in the Labyrinth
+R:734:0xA2:0xC2
+
+# The King in Yellow
+R:735:0xA2:0xC3
+
+# Great unclean one
+R:736:0xA2:0xC4
+
+# Lord of Chaos
+R:737:0x9D:0x81
+
+# Old Sorcerer
+R:738:0x91:0xC2
+
+# Ethereal hound
+R:739:0x9D:0x82
+
+# Lesser kraken
+R:740:0xA1:0xFB
+
+# Great Ice Wyrm
+R:741:0x92:0xD0
+
+# Demilich
+R:742:0x95:0xC2
+
+# The Phoenix
+R:743:0x92:0x90
+
+# Nightcrawler
+R:744:0x95:0xC4
+
+# Lord of Change
+R:745:0xA1:0xBF
+
+# Keeper of Secrets
+R:746:0xA2:0xC5
+
+# Shudde M'ell
+R:747:0xA2:0xC6
+
+# Hand druj
+R:748:0x99:0xC6
+
+# Eye druj
+R:749:0x99:0xC7
+
+# Skull druj
+R:750:0x99:0xC8
+
+# Chaos vortex
+R:751:0x99:0xD3
+
+# Aether vortex
+R:752:0x99:0xD4
+
+# Nidhogg, the Hel-Drake
+R:753:0xA2:0xC7
+
+# The Lernaean Hydra
+R:754:0x94:0xD3
+
+# Thuringwethil, the Vampire Messenger
+R:755:0x95:0x95
+
+# Great Hell Wyrm
+R:756:0x92:0xD1
+
+# Hastur the Unspeakable
+R:757:0x9D:0x83
+
+# Bloodthirster
+R:758:0xA1:0xFC
+
+# Draconic quylthulg
+R:759:0x94:0x96
+
+# Nyogtha, the Thing that Should not Be
+R:760:0x9D:0x84
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0xA2:0xC8
+
+# Fundin Bluecloak
+R:762:0xA2:0xC9
+
+# Bile Demon
+R:763:0xA5:0xF8
+
+# Uriel, Angel of Fire
+R:764:0x92:0x8C
+
+# Azriel, Angel of Death
+R:765:0x92:0x8D
+
+# Ancalagon the Black
+R:766:0x92:0xD2
+
+# Daoloth, the Render of the Veils
+R:767:0xA2:0xCA
+
+# Nightwalker
+R:768:0xA1:0xFD
+
+# Gabriel, the Messenger
+R:769:0x92:0x8E
+
+# Artsi, the Champion of Chaos
+R:770:0xA2:0xCB
+
+# Saruman of Many Colours
+R:771:0x99:0x96
+
+# Harowen the Black Hand
+R:772:0xA2:0xCC
+
+# Osyluth
+R:773:0xA5:0xF9
+
+# Dreadlord
+R:774:0x93:0xBE
+
+# Greater kraken
+R:775:0xA1:0xFE
+
+# Archlich
+R:776:0x95:0xC5
+
+# The Cat Lord
+R:777:0x9D:0x87
+
+# Jabberwock
+R:778:0xA5:0xFA
+
+# Chaos hound
+R:779:0x95:0xFD
+
+# Vlad Dracula, Prince of Darkness
+R:780:0xA2:0xCD
+
+# Beholder hive-mother
+R:781:0xA2:0xCE
+
+# Leviathan
+R:782:0xA1:0xFF
+
+# Great Wyrm of Chaos
+R:783:0x92:0xD3
+
+# Great Wyrm of Law
+R:784:0x92:0xD4
+
+# Great Wyrm of Balance
+R:785:0x92:0xD5
+
+# Shambler
+R:786:0x9D:0x89
+
+# Gelugon
+R:787:0xA5:0xFB
+
+# Glaaki
+R:788:0xA0:0x80
+
+# T'ron, the Rebel Dragonrider
+R:789:0x9D:0x8A
+
+# Great Wyrm of Many Colours
+R:790:0x9D:0x8B
+
+# Mardra, rider of the Gold Loranth
+R:791:0x9D:0x8C
+
+# Tselakus, the Dreadlord
+R:792:0x93:0xBF
+
+# Sky Drake
+R:793:0x9D:0x8D
+
+# Eilinel the Entrapped
+R:794:0x93:0xBB
+
+# Horned Reaper
+R:795:0xA5:0xFC
+
+# The Norsa
+R:796:0x9D:0x8F
+
+# Rhan-Tegoth
+R:797:0xA2:0xD1
+
+# Black reaver
+R:798:0x93:0xFD
+
+# Master mindcrafter
+R:799:0x99:0x97
+
+# Greater demonic quylthulg
+R:800:0x94:0x97
+
+# Greater draconic quylthulg
+R:801:0x94:0xB8
+
+# Greater rotting quylthulg
+R:802:0x94:0xB9
+
+# Null, the Living Void
+R:803:0xA1:0xC0
+
+# Feagwath, the Undead Sorcerer
+R:804:0x93:0xFE
+
+# Omarax the Eye Tyrant
+R:805:0x96:0xF9
+
+# Tsathoggua, the Sleeper of N'kai
+R:806:0xA2:0xD2
+
+# Greater Balrog
+R:807:0x9A:0x8B
+
+# Ungoliant, the Unlight
+R:808:0x95:0x80
+
+# Atlach-Nacha, the Spider God
+R:809:0x9D:0x92
+
+# Y'golonac
+R:810:0xA2:0xD3
+
+# Aether hound
+R:811:0x95:0xFE
+
+# Pit Fiend
+R:812:0x9A:0x8A
+
+# The Serpent of Chaos
+R:813:0x9D:0xC5
+
+# Yig, Father of Serpents
+R:814:0xA2:0xD4
+
+# Unmaker
+R:815:0x9D:0x94
+
+# Cyberdemon
+R:816:0x9D:0x95
+
+# Hela, Queen of the Dead
+R:817:0xA2:0xD5
+
+# The Mouth of Sauron
+R:818:0xA2:0xD6
+
+# The Necromancer of Dol Guldur
+R:819:0x9D:0x96
+
+# Lessa, rider of the Gold Ramoth
+R:820:0x9D:0x97
+
+# Master quylthulg
+R:821:0x94:0xBA
+
+# Qlzqqlzuup, the Lord of Flesh
+R:822:0x94:0xBB
+
+# Cthugha, the Living Flame
+R:823:0xA2:0xD7
+
+# F'lar, rider of the Bronze Mnementh
+R:824:0x9D:0xB8
+
+# Maeglin, the Traitor of Gondolin
+R:825:0x95:0xC6
+
+# Cyaegha
+R:826:0xA2:0xF8
+
+# Pazuzu, Lord of Air
+R:827:0xA2:0xF9
+
+# Ithaqua the Windwalker
+R:828:0x9D:0xB9
+
+# Greater Hellhound
+R:829:0x92:0xBB
+
+# Cantoras, the Skeletal Lord
+R:830:0x99:0xC9
+
+# Mephistopheles, Lord of Hell
+R:831:0x9D:0xBA
+
+# Godzilla
+R:832:0x9D:0xBB
+
+# Abhoth, Source of Uncleanness
+R:833:0xA2:0xFA
+
+# Ymir, the Ice Giant
+R:834:0xA2:0xFB
+
+# Loki, the Trickster
+R:835:0xA2:0xFC
+
+# Star-spawn of Cthulhu
+R:836:0x9D:0xBC
+
+# Surtur, the Fire Giant
+R:837:0xA2:0xFD
+
+# The Tarrasque
+R:838:0xA1:0xCB
+
+# Lungorthin, the Balrog of White Fire
+R:839:0xA2:0xFE
+
+# Draugluin, Sire of All Werewolves
+R:840:0xA2:0xFF
+
+# Shuma-Gorath
+R:841:0xA3:0x80
+
+# Tulzscha, the Green Flame
+R:842:0xA1:0xCA
+
+# Oremorj, the Cyberdemon Lord
+R:843:0xA1:0xC9
+
+# Vecna, the Emperor Lich
+R:844:0x9D:0xBD
+
+# Yog-Sothoth, the All-in-One
+R:845:0x9D:0xBE
+
+# Fenris Wolf
+R:846:0xA1:0xC8
+
+# Great Wyrm of Power
+R:847:0x9D:0xBF
+
+# Shub-Niggurath, Black Goat of the Woods
+R:848:0x9D:0xC0
+
+# Nodens, Lord of the Great Abyss
+R:849:0x99:0x85
+
+# Carcharoth, the Jaws of Thirst
+R:850:0x92:0xBE
+
+# Nyarlathotep, the Crawling Chaos
+R:851:0x9D:0xC1
+
+# Azathoth, the Daemon Sultan
+R:852:0x9D:0xC2
+
+# Huan, Wolfhound of the Valar
+R:853:0x92:0xBF
+
+# Jormungand the Midgard Serpent
+R:854:0xA1:0xC7
+
+# The Destroyer
+R:855:0xA1:0xC6
+
+# Gothmog, the High Captain of Balrogs
+R:856:0x9A:0x90
+
+# Great Cthulhu
+R:857:0x9D:0xC3
+
+# Sorka, rider of the Gold Faranth
+R:858:0x9D:0xC4
+
+# The Unicorn of Order
+R:859:0xA1:0xC5
+
+# Sauron, the Sorcerer
+R:860:0x99:0xB8
+
+# DarkGod, the Mighty Coder of Hell
+R:861:0xA3:0xD5
+
+# Morgoth, Lord of Darkness
+R:862:0x9D:0xC6
+
+# Human Warrior
+R:863:0x9D:0xF8
+
+# Elven archer
+R:864:0x9D:0xF9
+
+# Dwarven warrior
+R:865:0x9D:0xFA
+
+# Elite uruk
+R:866:0x9D:0xFB
+
+# The Philosophy Teacher
+R:867:0xA1:0xC4
+
+# The Variant Maintainer
+R:868:0xA1:0xC3
+
+# Random Number Generator
+R:869:0xA1:0xC2
+
+# Rocket mine
+R:870:0xA2:0x80
+
+# Bouncing mine
+R:871:0xA2:0x81
+
+# Durin's Bane
+R:872:0xA3:0x81
+
+# The Icky Queen
+R:873:0xA3:0x82
+
+# Rot jelly
+R:874:0xA2:0x82
+
+# Death
+R:875:0xA2:0x83
+
+# Famine
+R:876:0xA2:0x85
+
+# Pestilence
+R:877:0xA2:0x84
+
+# War
+R:878:0xA2:0x86
+
+# Pike
+R:879:0xA2:0x87
+
+# Electric eel
+R:880:0xA2:0x88
+
+# Giant crayfish
+R:881:0xA2:0x89
+
+# Mermaid
+R:882:0xA2:0x8A
+
+# Box jellyfish
+R:883:0xA0:0xB9
+
+# Giant piranha
+R:884:0x9E:0xD5
+
+# Piranha
+R:885:0x9E:0xD5
+
+# Bullywug
+R:886:0xA2:0x8C
+
+# Bullywug warrior
+R:887:0xA2:0x8D
+
+# Bullywug shaman
+R:888:0xA2:0x8E
+
+# Whale
+R:889:0xA0:0xD0
+
+# Sand mite
+R:890:0xA2:0x90
+
+# Octopus
+R:891:0xA2:0x91
+
+# Giant octopus
+R:892:0xA2:0x92
+
+# Eye of the deep
+R:893:0xA2:0x93
+
+# Murk dweller
+R:894:0xA3:0x83
+
+# Drowned soul
+R:895:0xA3:0x84
+
+# Tiger shark
+R:896:0xA3:0x85
+
+# Hammerhead shark
+R:897:0xA0:0xC8
+
+# Great white shark
+R:898:0xA0:0xFA
+
+# Aquatic golem
+R:899:0xA3:0x86
+
+# Aquatic kobold
+R:900:0xA3:0x87
+
+# White shark
+R:901:0xA0:0xFA
+
+# Scrag
+R:902:0xA3:0x89
+
+# Jaws
+R:903:0xA1:0x84
+
+# Aquatic elf
+R:904:0xA3:0x8B
+
+# Aquatic elven warrior
+R:905:0xA3:0x8C
+
+# Aquatic elven shaman
+R:906:0xA3:0x8D
+
+# Stargazer
+R:907:0xA3:0x8E
+
+# Elder stargazer
+R:908:0xA3:0x8F
+
+# Flounder
+R:909:0xA3:0x90
+
+# Giant turtle
+R:910:0xA3:0x91
+
+# Baby dragon turtle
+R:911:0xA3:0x92
+
+# Young dragon turtle
+R:912:0xA3:0x93
+
+# Mature dragon turtle
+R:913:0xA3:0x94
+
+# Ancient dragon turtle
+R:914:0xA3:0x95
+
+# Fastitocalon
+R:915:0xA3:0x96
+
+# Undead stargazer
+R:916:0xA3:0x97
+
+# Killer whale
+R:917:0xA0:0x94
+
+# Merrow
+R:918:0xA5:0xFD
+
+# Water naga
+R:919:0xA3:0xB9
+
+# Devilfish
+R:920:0xA3:0xBA
+
+# Undead devilfish
+R:921:0xA3:0xBB
+
+# Moby Dick, the White Whale
+R:922:0xA3:0xB8
+
+# Aquatic hound
+R:923:0xA3:0xBD
+
+# Water demon
+R:924:0xA3:0xBE
+
+# Ixitxachitl
+R:925:0x9F:0xD4
+
+# Ixitxachitl priest
+R:926:0xA3:0xC0
+
+# Vampiric ixitxachitl
+R:927:0xA3:0xC1
+
+# Mathilde, the Science Student
+R:928:0xA2:0x94
+
+# Child spirit
+R:929:0xA2:0x95
+
+# Young spirit
+R:930:0xA2:0x96
+
+# Mature spirit
+R:931:0xA2:0x97
+
+# Experienced spirit
+R:932:0xA2:0xB8
+
+# Wise spirit
+R:933:0xA2:0xB9
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0xA3:0xC2
+
+# Gandalf the Grey
+R:935:0xA3:0xC3
+
+# Nar, the Dwarf
+R:936:0xA3:0xC4
+
+# Novice mindcrafter
+R:937:0x98:0xD2
+
+# Great Swamp Wyrm
+R:938:0xA5:0xFE
+
+# Great Bile Wyrm
+R:939:0xA5:0xFF
+
+# Blue Firelizard
+R:940:0xA2:0xBA
+
+# Green Firelizard
+R:941:0xA2:0xBB
+
+# Brown Firelizard
+R:942:0xA2:0xBC
+
+# Bronze Firelizard
+R:943:0xA2:0xBD
+
+# Gold Firelizard
+R:944:0xA2:0xBE
+
+# High-elven ranger
+R:945:0xA2:0xBF
+
+# Uvatha the Horseman
+R:946:0xA3:0xC8
+
+# Adunaphel the Quiet
+R:947:0xA3:0xC9
+
+# Akhorahil the Blind
+R:948:0xA3:0xCA
+
+# Ren the Unclean
+R:949:0xA3:0xCB
+
+# Ji Indur Dawndeath
+R:950:0xA3:0xCC
+
+# Dwar, Dog Lord of Waw
+R:951:0xA3:0xCD
+
+# Hoarmurath of Dir
+R:952:0xA3:0xCE
+
+# Khamul, the Black Easterling
+R:953:0xA3:0xCF
+
+# The Witch-King of Angmar
+R:954:0xA3:0xD0
+
+# Green Dragonrider
+R:955:0x9D:0x8E
+
+# Blue Dragonrider
+R:956:0x9D:0x86
+
+# Brown Dragonrider
+R:957:0x9D:0x90
+
+# Bronze Dragonrider
+R:958:0x9D:0x90
+
+# Gold Dragonrider
+R:959:0x9D:0x8C
+
+# Thread
+R:960:0xA2:0xC0
+
+# Gorlim, Betrayer of Barahir
+R:961:0xA3:0xD1
+
+# The Blubbering idiot, agent of black market, Simon the weak
+R:962:0x98:0xBA
+
+# Aranea
+R:963:0xA4:0x92
+
+# Elder aranea
+R:964:0xA3:0xD2
+
+# Giant brown tick
+R:965:0xA6:0x80
+
+# Dolphiner
+R:966:0xA3:0xD4
+
+# Novice possessor (soul)
+R:967:0xA5:0xBE
+
+# Bat of Gorgoroth
+R:968:0xA6:0x8F
+
+# The Princess
+R:969:0xA6:0x90
+
+# Merton Proudfoot, the lost hobbit
+R:970:0xA6:0x91
+
+# The Wight-King of the Barrow-downs
+R:971:0xA6:0x92
+
+# Adventurer
+R:972:0xA6:0x93
+
+# Experienced possessor (soul)
+R:973:0xA6:0x94
+
+# Old possessor (soul)
+R:974:0xA6:0x95
+
+# Death orb
+R:975:0xA6:0x96
+
+# Bronze dragon worm
+R:976:0xA6:0xB8
+
+# Gold dragon worm
+R:977:0xA6:0x97
+
+# Moldoux, the Defenceless Mold
+R:978:0xA1:0xC1
+
+# The Physics Teacher
+R:979:0xA2:0xCF
+
+# Ar-Pharazon the Golden
+R:980:0xA3:0xD6
+
+# Doppelganger
+R:981:0x8F:0x84
+
+# Marylene, Heartbreakeress of the Netherworld
+R:982:0xA4:0x85
+
+# The Greater Lag Monster
+R:983:0xA4:0xC5
+
+# Hrungnir, the Stone Giant
+R:984:0x97:0x82
+
+# Bullroarer the Hobbit
+R:985:0x97:0x93
+
+# 3-headed hydra
+R:986:0x94:0xCC
+
+# Uldor the Accursed
+R:987:0x99:0x8D
+
+# Mystic
+R:988:0x99:0x93
+
+# Elder vampire
+R:989:0x94:0x91
+
+# Ulfang the Black
+R:990:0x98:0xCE
+
+# Demonologist
+R:991:0x97:0xBA
+
+# Hezrou
+R:992:0x94:0xD4
+
+# Glabrezu
+R:993:0x94:0xC6
+
+# Nalfeshnee
+R:994:0xA4:0xC6
+
+# Marilith
+R:995:0xA4:0xC7
+
+# Lesser Balrog
+R:996:0x9A:0x8D
+
+# Master mystic
+R:997:0x98:0xCC
+
+# Grand master mystic
+R:998:0x99:0x95
+
+# Erinyes
+R:999:0x93:0xBC
+
+# Novice mindcrafter
+R:1000:0x98:0xD2
+
+# Polyphemus, the Blind Cyclops
+R:1001:0xA6:0x81
+
+# Great Wyrm of Perplexity
+R:1002:0xA4:0xCA
+
+# Hound of Tindalos
+R:1003:0xA4:0xCB
+
+# Great Wyrm of Thunder
+R:1004:0xA6:0x82
+
+# Silver mouse
+R:1005:0xA6:0x83
+
+# The Rat King
+R:1006:0xA4:0xCE
+
+# Vort the Kobold Queen
+R:1007:0xA4:0xCF
+
+# Giant black louse
+R:1008:0xA4:0xD0
+
+# Fire Phantom
+R:1009:0xA4:0xD1
+
+# The Insane Player
+R:1010:0x8C:0xB9
+
+# Glaryssa, Succubus Queen
+R:1011:0xA4:0xD2
+
+# Vermicious Knid
+R:1012:0xA4:0xD3
+
+# Bone golem
+R:1013:0xA4:0xD4
+
+# Snake of Yig
+R:1014:0xA4:0xD5
+
+# Bronze golem
+R:1015:0xA6:0x84
+
+# Dimensional shambler
+R:1016:0xA4:0xD7
+
+# Cultist
+R:1017:0x8D:0xD1
+
+# Cult leader
+R:1018:0x90:0x8F
+
+# Servitor of the outer gods
+R:1019:0xA5:0x82
+
+# Avatar of Nyarlathotep
+R:1020:0xA5:0x83
+
+# Thiazi, the Storm Giant
+R:1021:0xA6:0x85
+
+# Hypnos, Lord of Sleep
+R:1022:0xA5:0x85
+
+# Blue dragon worm
+R:1023:0xA5:0x86
+
+# White dragon worm
+R:1024:0xA5:0x87
+
+# Green dragon worm
+R:1025:0xA5:0x8A
+
+# Black dragon worm
+R:1026:0xA5:0x89
+
+# Red dragon worm
+R:1027:0xA5:0x88
+
+# Multi-hued dragon worm
+R:1028:0xA5:0x8B
+
+# The Minotaur of the Labyrinth
+R:1029:0xA5:0x8C
+
+# The Sandworm Queen
+R:1030:0xA5:0x93
+
+# Sandworm
+R:1031:0xA5:0x94
+
+# Tik'srvzllat
+R:1032:0xA5:0x95
+
+# The Glass Golem
+R:1033:0xA6:0x86
+
+# The White Balrog
+R:1034:0xA6:0x87
+
+# Golgarach, the Living Rock
+R:1035:0x83:0xBC
+
+# Atlas, the Titan
+R:1036:0xA6:0x88
+
+# Kronos, Lord of the Titans
+R:1037:0xA6:0x89
+
+# Water hound
+R:1038:0xA6:0xC0
+
+# Improv, the mighty MoLD
+R:1039:0xA6:0xC6
+
+# Emperor Mimic
+R:1040:0xA6:0xD4
+
+# Melinda Proudfoot
+R:1041:0x87:0xE2
+
+# Thrain, the King Under the Mountain
+R:1042:0x87:0xE3
+
+# Fire golem
+R:1043:0x89:0xD8
+
+# Melkor, Lord of Darkness
+R:1044:0x89:0xD9
+
+# Spirit
+R:1045:0x8C:0xD7
+
+# Spirit
+R:1046:0x8C:0xD8
+
+# Spirit
+R:1047:0x8C:0xD9
+
+# Spirit
+R:1048:0x8C:0xDA
+
+# Spirit
+R:1049:0x8C:0xDB
+
+# Spirit
+R:1050:0x8C:0xDC
+
+# Spirit
+R:1051:0x8C:0xDD
+
+# Spirit
+R:1052:0x8C:0xDE
+
+# Spirit
+R:1053:0x8C:0xDF
+
+# Spirit
+R:1054:0x8C:0xE0
+
+# Spirit
+R:1055:0x8C:0xE1
+
+# Spirit
+R:1056:0x8C:0xE2
+
+# Spirit
+R:1057:0x8C:0xDB
+
+# Spirit
+R:1058:0x8C:0xE3
+
+# Spirit
+R:1059:0x8C:0xE4
+
+# Spirit
+R:1060:0x8C:0xE5
+
+# Spirit
+R:1061:0x8C:0xE6
+
+# Spirit
+R:1062:0x8C:0xE7
+
+# Spirit
+R:1063:0x8C:0xE8
+
+# Spirit
+R:1064:0x8C:0xE9
+
+# Spirit
+R:1065:0x8C:0xEA
+
+# Spirit
+R:1066:0x8C:0xEB
+
+# Spirit
+R:1067:0x8C:0xEC
+
+# Spirit
+R:1068:0x8C:0xED
+
+# Spirit
+R:1069:0x8C:0xEE
+
+# Spirit
+R:1070:0x8C:0xEF
+
+# Spirit
+R:1071:0x8C:0xF0
+
+# Spirit
+R:1072:0x8C:0xF1
+
+# Spirit
+R:1073:0x8C:0xF2
+
+# Spirit
+R:1074:0x8C:0xF3
+
+# Spirit
+R:1075:0x8C:0xF4
+
+# Spells (*)
+S:48:0x8C:0x80
+
+# Spells (*)
+S:49:0x8C:0x81
+
+# Spells (*)
+S:50:0x8C:0x82
+
+# Spells (*)
+S:51:0x8C:0x83
+
+# Spells (*)
+S:52:0x8C:0x84
+
+# Spells (*)
+S:53:0x8C:0x85
+
+# Spells (*)
+S:54:0x8C:0x86
+
+# Spells (*)
+S:55:0x8C:0x87
+
+# Spells (*)
+S:56:0x8C:0x88
+
+# Spells (*)
+S:57:0x8C:0x89
+
+# Spells (*)
+S:58:0x8C:0x8A
+
+# Spells (*)
+S:59:0x8C:0x8B
+
+# Spells (*)
+S:60:0x8C:0x8C
+
+# Spells (*)
+S:61:0x8C:0x8D
+
+# Spells (*)
+S:62:0x8C:0x8E
+
+# Spells (*)
+S:63:0x8C:0x8F
+
+# Spells (|)
+S:64:0x8A:0xF8
+
+# Spells (|)
+S:65:0x8A:0xFC
+
+# Spells (|)
+S:66:0x8B:0x80
+
+# Spells (|)
+S:67:0x8B:0x84
+
+# Spells (|)
+S:68:0x8B:0x88
+
+# Spells (|)
+S:69:0x8B:0x8C
+
+# Spells (|)
+S:70:0x8B:0x90
+
+# Spells (|)
+S:71:0x8B:0x94
+
+# Spells (|)
+S:72:0x8B:0xB8
+
+# Spells (|)
+S:73:0x8B:0xBC
+
+# Spells (|)
+S:74:0x8B:0xC0
+
+# Spells (|)
+S:75:0x8B:0xC4
+
+# Spells (|)
+S:76:0x8B:0xC8
+
+# Spells (|)
+S:77:0x8B:0xCC
+
+# Spells (|)
+S:78:0x8B:0xD0
+
+# Spells (|)
+S:79:0x8B:0xD4
+
+# Spells (-)
+S:80:0x8A:0xF9
+
+# Spells (-)
+S:81:0x8A:0xFD
+
+# Spells (-)
+S:82:0x8B:0x81
+
+# Spells (-)
+S:83:0x8B:0x85
+
+# Spells (-)
+S:84:0x8B:0x89
+
+# Spells (-)
+S:85:0x8B:0x8D
+
+# Spells (-)
+S:86:0x8B:0x91
+
+# Spells (-)
+S:87:0x8B:0x95
+
+# Spells (-)
+S:88:0x8B:0xB9
+
+# Spells (-)
+S:89:0x8B:0xBD
+
+# Spells (-)
+S:90:0x8B:0xC1
+
+# Spells (-)
+S:91:0x8B:0xC5
+
+# Spells (-)
+S:92:0x8B:0xC9
+
+# Spells (-)
+S:93:0x8B:0xCD
+
+# Spells (-)
+S:94:0x8B:0xD1
+
+# Spells (-)
+S:95:0x8B:0xD5
+
+# Spells (:)
+S:96:0x8A:0xFA
+
+# Spells (:)
+S:97:0x8A:0xFE
+
+# Spells (:)
+S:98:0x8B:0x82
+
+# Spells (:)
+S:99:0x8B:0x86
+
+# Spells (:)
+S:100:0x8B:0x8A
+
+# Spells (:)
+S:101:0x8B:0x8E
+
+# Spells (:)
+S:102:0x8B:0x92
+
+# Spells (:)
+S:103:0x8B:0x96
+
+# Spells (:)
+S:104:0x8B:0xBA
+
+# Spells (:)
+S:105:0x8B:0xBE
+
+# Spells (:)
+S:106:0x8B:0xC2
+
+# Spells (:)
+S:107:0x8B:0xC6
+
+# Spells (:)
+S:108:0x8B:0xCA
+
+# Spells (:)
+S:109:0x8B:0xCE
+
+# Spells (:)
+S:110:0x8B:0xD2
+
+# Spells (:)
+S:111:0x8B:0xD6
+
+# Spells (\)
+S:112:0x8A:0xFB
+
+# Spells (\)
+S:113:0x8A:0xFF
+
+# Spells (\)
+S:114:0x8B:0x83
+
+# Spells (\)
+S:115:0x8B:0x87
+
+# Spells (\)
+S:116:0x8B:0x8B
+
+# Spells (\)
+S:117:0x8B:0x8F
+
+# Spells (\)
+S:118:0x8B:0x93
+
+# Spells (\)
+S:119:0x8B:0x97
+
+# Spells (\)
+S:120:0x8B:0xBB
+
+# Spells (\)
+S:121:0x8B:0xBF
+
+# Spells (\)
+S:122:0x8B:0xC3
+
+# Spells (\)
+S:123:0x8B:0xC7
+
+# Spells (\)
+S:124:0x8B:0xCB
+
+# Spells (\)
+S:125:0x8B:0xCF
+
+# Spells (\)
+S:126:0x8B:0xD3
+
+# Spells (\)
+S:127:0x8B:0xD7
+
+# Amulets (
+S:128:0x86:0xFF
+
+# Amulets (
+S:129:0x86:0xF8
+
+# Amulets (
+S:130:0x87:0x80
+
+# Amulets (
+S:131:0x86:0xFA
+
+# Amulets (
+S:132:0x86:0xFB
+
+# Amulets (
+S:133:0x86:0xFC
+
+# Amulets (
+S:134:0x86:0xFD
+
+# Amulets (
+S:135:0x86:0xFE
+
+# Amulets (
+S:136:0x86:0xF9
+
+# Amulets (
+S:137:0x86:0xF9
+
+# Amulets (
+S:138:0x87:0x81
+
+# Amulets (
+S:139:0x87:0x82
+
+# Amulets (
+S:140:0x87:0x83
+
+# Amulets (
+S:141:0x87:0x84
+
+# Amulets (
+S:142:0x87:0x85
+
+# Amulets (
+S:143:0x87:0x86
+
+# Rings (=)
+S:144:0x85:0xBF
+
+# Rings (=)
+S:145:0x85:0xB8
+
+# Rings (=)
+S:146:0x85:0xC0
+
+# Rings (=)
+S:147:0x85:0xBA
+
+# Rings (=)
+S:148:0x85:0xBB
+
+# Rings (=)
+S:149:0x85:0xBC
+
+# Rings (=)
+S:150:0x85:0xBD
+
+# Rings (=)
+S:151:0x85:0xBE
+
+# Rings (=)
+S:152:0x85:0xB9
+
+# Rings (=)
+S:153:0x85:0xB9
+
+# Rings (=)
+S:154:0x85:0xC1
+
+# Rings (=)
+S:155:0x85:0xC2
+
+# Rings (=)
+S:156:0x85:0xC3
+
+# Rings (=)
+S:157:0x85:0xC4
+
+# Rings (=)
+S:158:0x85:0xC5
+
+# Rings (=)
+S:159:0x85:0xC6
+
+# Staffs (_)
+S:160:0x87:0x8E
+
+# Staffs (_)
+S:161:0x87:0x8D
+
+# Staffs (_)
+S:162:0x87:0x8D
+
+# Staffs (_)
+S:163:0x87:0x8A
+
+# Staffs (_)
+S:164:0x87:0x8A
+
+# Staffs (_)
+S:165:0x87:0x8B
+
+# Staffs (_)
+S:166:0x87:0x8D
+
+# Staffs (_)
+S:167:0x87:0x88
+
+# Staffs (_)
+S:168:0x87:0x8D
+
+# Staffs (_)
+S:169:0x87:0x8D
+
+# Staffs (_)
+S:170:0x87:0x8A
+
+# Staffs (_)
+S:171:0x87:0x8C
+
+# Staffs (_)
+S:172:0x87:0x8A
+
+# Staffs (_)
+S:173:0x87:0x8B
+
+# Staffs (_)
+S:174:0x87:0x8E
+
+# Staffs (_)
+S:175:0x87:0x88
+
+# Wands (-)
+S:176:0x86:0xCF
+
+# Wands (-)
+S:177:0x86:0xC8
+
+# Wands (-)
+S:178:0x86:0xD0
+
+# Wands (-)
+S:179:0x86:0xCA
+
+# Wands (-)
+S:180:0x86:0xCB
+
+# Wands (-)
+S:181:0x86:0xCC
+
+# Wands (-)
+S:182:0x86:0xCD
+
+# Wands (-)
+S:183:0x86:0xCE
+
+# Wands (-)
+S:184:0x86:0xC9
+
+# Wands (-)
+S:185:0x86:0xC9
+
+# Wands (-)
+S:186:0x86:0xD1
+
+# Wands (-)
+S:187:0x86:0xD2
+
+# Wands (-)
+S:188:0x86:0xD3
+
+# Wands (-)
+S:189:0x86:0xD4
+
+# Wands (-)
+S:190:0x86:0xD5
+
+# Wands (-)
+S:191:0x86:0xD6
+
+# Rods (-)
+S:192:0x86:0xBF
+
+# Rods (-)
+S:193:0x86:0xB8
+
+# Rods (-)
+S:194:0x86:0xC0
+
+# Rods (-)
+S:195:0x86:0xBA
+
+# Rods (-)
+S:196:0x86:0xBB
+
+# Rods (-)
+S:197:0x86:0xBC
+
+# Rods (-)
+S:198:0x86:0xBD
+
+# Rods (-)
+S:199:0x86:0xBE
+
+# Rods (-)
+S:200:0x86:0xB9
+
+# Rods (-)
+S:201:0x86:0xB9
+
+# Rods (-)
+S:202:0x86:0xC1
+
+# Rods (-)
+S:203:0x86:0xC2
+
+# Rods (-)
+S:204:0x86:0xC3
+
+# Rods (-)
+S:205:0x86:0xC4
+
+# Rods (-)
+S:206:0x86:0xC5
+
+# Rods (-)
+S:207:0x86:0xC6
+
+# Scrolls (?)
+S:208:0x85:0x94
+
+# Scrolls (?)
+S:209:0x85:0x95
+
+# Scrolls (?)
+S:210:0x85:0x96
+
+# Scrolls (?)
+S:211:0x85:0x97
+
+# Scrolls (?)
+S:212:0x85:0x94
+
+# Scrolls (?)
+S:213:0x85:0x95
+
+# Scrolls (?)
+S:214:0x85:0x96
+
+# Scrolls (?)
+S:215:0x85:0x97
+
+# Scrolls (?)
+S:216:0x85:0x94
+
+# Scrolls (?)
+S:217:0x85:0x95
+
+# Scrolls (?)
+S:218:0x85:0x96
+
+# Scrolls (?)
+S:219:0x85:0x97
+
+# Scrolls (?)
+S:220:0x85:0x94
+
+# Scrolls (?)
+S:221:0x85:0x95
+
+# Scrolls (?)
+S:222:0x85:0x96
+
+# Scrolls (?)
+S:223:0x85:0x97
+
+# Potions (!)
+S:224:0x85:0xFF
+
+# Potions (!)
+S:225:0x85:0xF8
+
+# Potions (!)
+S:226:0x86:0x80
+
+# Potions (!)
+S:227:0x85:0xFA
+
+# Potions (!)
+S:228:0x85:0xFB
+
+# Potions (!)
+S:229:0x85:0xFC
+
+# Potions (!)
+S:230:0x85:0xFD
+
+# Potions (!)
+S:231:0x85:0xFE
+
+# Potions (!)
+S:232:0x85:0xF9
+
+# Potions (!)
+S:233:0x85:0xF9
+
+# Potions (!)
+S:234:0x86:0x81
+
+# Potions (!)
+S:235:0x86:0x82
+
+# Potions (!)
+S:236:0x86:0x83
+
+# Potions (!)
+S:237:0x86:0x84
+
+# Potions (!)
+S:238:0x86:0x85
+
+# Potions (!)
+S:239:0x86:0x86
+
+# Food (,)
+S:240:0x86:0x8F
+
+# Food (,)
+S:241:0x86:0x88
+
+# Food (,)
+S:242:0x86:0x90
+
+# Food (,)
+S:243:0x86:0x8A
+
+# Food (,)
+S:244:0x86:0x8B
+
+# Food (,)
+S:245:0x86:0x8C
+
+# Food (,)
+S:246:0x86:0x8D
+
+# Food (,)
+S:247:0x86:0x8E
+
+# Food (,)
+S:248:0x86:0x89
+
+# Food (,)
+S:249:0x86:0x89
+
+# Food (,)
+S:250:0x86:0x91
+
+# Food (,)
+S:251:0x86:0x92
+
+# Food (,)
+S:252:0x86:0x93
+
+# Food (,)
+S:253:0x86:0x94
+
+# Food (,)
+S:254:0x86:0x95
+
+# Food (,)
+S:255:0x86:0x96
+
diff --git a/lib/pref/graf-mac.prf b/lib/pref/graf-mac.prf
new file mode 100644
index 00000000..7bb84141
--- /dev/null
+++ b/lib/pref/graf-mac.prf
@@ -0,0 +1,15 @@
+# File: graf-mac.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+# Standard file
+?:[EQU $GRAF old]
+%:graf-xxx.prf
+
+# New tiles
+?:[EQU $GRAF new]
+%:graf-new.prf
diff --git a/lib/pref/graf-new.prf b/lib/pref/graf-new.prf
new file mode 100644
index 00000000..3df5caa9
--- /dev/null
+++ b/lib/pref/graf-new.prf
@@ -0,0 +1,6844 @@
+# PRF file generated by Andreas Koch`s Tile Assigner
+# 23/06/2004 Edited manually
+
+# 2460 items
+# 2312 probably mapped correctly
+# 147 imported but not yet defined
+# 1 defined to value(s) lower than 0x80
+# Old header :
+# File: graf-new.prf
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+# with Adam Bolt's 16x16 tiles.
+#
+# By Robert Ruehlmann < rr9@angband.org >
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+# General Store
+B:0:0x82/0x87
+
+# Armoury
+B:1:0x82/0x88
+
+# Weaponsmith
+B:2:0x82/0x89
+
+# Temple
+B:3:0x82/0x8A
+
+# Alchemy shop
+B:4:0x82/0x8B
+
+# Magic shop
+B:5:0x82/0x8C
+
+# Black Market
+B:6:0x82/0x8D
+
+# Home
+B:7:0x82/0x8E
+
+# Book Store
+B:8:0x82/0x8F
+
+# Pet Shop
+B:9:0x82/0x90
+
+# Mayor's Office
+B:10:0x86/0xA0
+
+# Inn
+B:11:0x86/0xA1
+
+# The Soothsayer
+B:12:0x86/0xA2
+
+# Library
+B:13:0x86/0xA3
+
+# Castle
+B:14:0x86/0xA4
+
+# Casino
+B:15:0x86/0xA5
+
+# Beastmaster Shanty
+B:16:0x86/0xA6
+
+# Fighters Hall
+B:17:0x86/0xA7
+
+# Tower of Magery
+B:18:0x86/0xA8
+
+# Inner Temple
+B:19:0x86/0xA9
+
+# Paladins Guild
+B:20:0x86/0xAA
+
+# Rangers Guild
+B:21:0x86/0xAB
+
+# Thunderlords' Hide
+B:22:0x86/0xAC
+
+# The Mirror
+B:23:0x86/0xAD
+
+# Seat of Ruling
+B:24:0x86/0xAE
+
+# Wizards Spire
+B:25:0x86/0xAF
+
+# Priests Circle
+B:26:0x86/0xB0
+
+# Tower of the King
+B:27:0x86/0xB1
+
+# Library
+B:28:0x86/0xA3
+
+# The White Tree
+B:29:0x86/0xB2
+
+# Craftsmaster
+B:30:0x86/0xB3
+
+# Earth-Dome (Nature)
+B:31:0x86/0xB4
+
+# Minstrels Haven
+B:32:0x86/0xB5
+
+# Star-Dome
+B:33:0x86/0xB6
+
+# Valarin Temple
+B:34:0x86/0xB7
+
+# Sea-Dome
+B:35:0x86/0xB8
+
+# The Golden Flower
+B:36:0x86/0xB9
+
+# The Fountain
+B:37:0x86/0xBA
+
+# Axe Smith
+B:38:0x86/0xBB
+
+# Hafted Smith
+B:39:0x86/0xBC
+
+# Polearm Smith
+B:40:0x86/0xBD
+
+# Sword Smith
+B:41:0x86/0xBE
+
+# Rare Jewelry Shop
+B:42:0x86/0xBF
+
+# Jewelry Shop
+B:43:0x87/0xA0
+
+# Footwear Shop
+B:44:0x87/0xA1
+
+# Rare Footwear Shop
+B:45:0x87/0xA2
+
+# Library
+B:46:0x86/0xA3
+
+# Forbidden Library
+B:47:0x87/0xA3
+
+# Expensive Black Market
+B:48:0x87/0xA4
+
+# Common Shop
+B:49:0x87/0xA5
+
+# Dragon Hunter
+B:50:0x87/0xA6
+
+# Speed Ring Market
+B:51:0x87/0xA7
+
+# Scribe
+B:52:0x87/0xA8
+
+# Potion Store
+B:53:0x87/0xA9
+
+# Recaller
+B:54:0x87/0xAA
+
+# Master Archer
+B:55:0x87/0xAB
+
+# Merchants Guild
+B:56:0x87/0xAC
+
+# The Mathom-house
+B:57:0x87/0xAD
+
+# The Prancing Pony
+B:58:0x86/0xA1
+
+# nothing
+F:0:0x80/0x80
+
+# open floor
+F:1:0x80/0x81
+
+# fountain
+F:2:0xC3/0x9A
+
+# glyph of warding
+F:3:0x8D/0x95
+
+# open door
+F:4:0x82/0x84
+
+# broken door
+F:5:0x82/0x85
+
+# up staircase
+F:6:0x80/0x96
+
+# down staircase
+F:7:0x80/0x99
+
+# quest entrance
+F:8:0x80/0x9A
+
+# quest exit
+F:9:0x80/0x97
+
+# quest down level
+F:10:0x80/0x9B
+
+# quest up level
+F:11:0x80/0x98
+
+# town exit
+F:12:0x82/0x84
+
+# shaft down
+F:13:0xC3/0x84
+
+# shaft up
+F:14:0xC3/0x85
+
+# fountain
+F:15:0xC3/0x99
+
+# web
+F:16:0x81/0x8C
+
+# trap
+F:17:0x81/0x89
+
+# visible trap -- spiked pit
+F:18:0x81/0x89
+
+# visible trap -- poison pit
+F:19:0x81/0x89
+
+# visible trap -- rune -- summon
+F:20:0x81/0x8F
+
+# visible trap -- rune -- teleport
+F:21:0x81/0x92
+
+# visible trap -- spot -- fire
+F:22:0x81/0x86
+
+# visible trap -- spot -- acid
+F:23:0x81/0x86
+
+# visible trap -- dart -- slow
+F:24:0x81/0x80
+
+# visible trap -- dart -- lose str
+F:25:0x81/0x80
+
+# visible trap -- dart -- lose dex
+F:26:0x81/0x80
+
+# visible trap -- dart -- lose con
+F:27:0x81/0x80
+
+# visible trap -- gas -- blind
+F:28:0x81/0x83
+
+# visible trap -- gas -- confuse
+F:29:0x81/0x83
+
+# visible trap -- gas -- poison
+F:30:0x81/0x83
+
+# visible trap -- gas -- sleep
+F:31:0x81/0x83
+
+# door
+F:32:0x82/0x83
+
+# locked door
+F:33:0x82/0x83
+F:34:0x82/0x83
+F:35:0x82/0x83
+F:36:0x82/0x83
+F:37:0x82/0x83
+F:38:0x82/0x86
+F:39:0x82/0x86
+
+# jammed door
+F:40:0x82/0x83
+F:41:0x82/0x83
+F:42:0x82/0x83
+F:43:0x82/0x83
+F:44:0x82/0x83
+F:45:0x82/0x86
+F:46:0x82/0x86
+F:47:0x82/0x86
+
+# secret door
+F:48:0x80/0x84
+
+# pile of rubble
+F:49:0x80/0x9C
+
+# magma vein
+F:50:0x80/0x8D
+
+# quartz vein
+F:51:0x80/0x87
+
+# magma vein
+F:52:0x80/0x90
+
+# quartz vein
+F:53:0x80/0x87
+
+# magma vein with treasure
+F:54:0x80/0x90
+
+# quartz vein with treasure
+F:55:0x80/0x8A
+
+# granite wall
+F:56:0x80/0x84
+F:57:0x80/0x84
+F:58:0x80/0x84
+F:59:0x80/0x84
+
+# permanent wall
+F:60:0x80/0x93
+F:61:0x80/0x93
+F:62:0x80/0x93
+F:63:0x80/0x93
+
+# explosive rune
+F:64:0x8D/0x9E
+
+# Straight Road startpoint
+F:65:0x81/0x95
+
+# section of the Straight Road
+F:66:0x81/0x95
+F:67:0x81/0x95
+F:68:0x81/0x95
+F:69:0x81/0x95
+F:70:0x81/0x95
+
+# section of the Straight Road (discharged)
+F:71:0x81/0x98
+
+# Straight Road exit
+F:72:0x81/0x9B
+
+# corrupted section of the Straight Road
+F:73:0x81/0x9E
+
+# Building
+F:74:0x82/0x93
+
+# permanent wall
+F:75:0x82/0x93
+F:76:0x82/0x94
+F:77:0x82/0x95
+F:78:0x82/0x96
+
+# stream of shallow water
+F:84:0xB4/0x97
+
+# pool of deep lava
+F:85:0x83/0x8D
+
+# stream of shallow lava
+F:86:0xB4/0x9A
+
+# dark pit
+F:87:0x80/0x80
+
+# dirt
+F:88:0xB4/0x91
+
+# patch of grass
+F:89:0xB4/0x94
+
+# ice
+F:90:0xC3/0x83
+
+# sand
+F:91:0xC3/0x88
+
+# dead tree
+F:92:0xC3/0x98
+
+# ash
+F:93:0xC3/0x97
+
+# mud
+F:94:0xC3/0x96
+
+# ice wall
+F:95:0xC5/0x92
+
+# tree
+F:96:0x82/0x9A
+
+# mountain chain
+F:97:0x8D/0x98
+
+# sandwall
+F:98:0xC3/0x86
+F:99:0xC3/0x86
+
+# sandwall with treasure
+F:100:0xC3/0x87
+
+# high mountain chain
+F:101:0xC3/0x9E
+
+# nether mist
+F:102:0xC3/0x9F
+
+# Void Jumpgate
+F:160:0x91/0x84
+
+# Altar of Being
+F:161:0xC1/0x8E
+
+# Altar of Winds
+F:162:0xB5/0x8A
+
+# Altar of Force
+F:163:0xB5/0x86
+
+# Altar of Darkness
+F:164:0xB5/0x86
+
+# Altar of Nature
+F:165:0xB5/0x91
+
+# Altar of Sun
+F:166:0xB5/0x8F
+
+# Altar of Rage
+F:167:0xB5/0x8C
+
+# Altar of Winds
+F:168:0xB5/0x92
+
+# Altar of Stars
+F:169:0xC1/0x8F
+
+# Altar of Being
+F:170:0xB5/0x8D
+
+# Altar of Randomness
+F:171:0xB5/0x88
+
+# floor
+F:172:0x80/0x81
+
+# Underground Tunnel
+F:173:0x80/0x82
+
+# stream of tainted water
+F:174:0xAF/0x8E
+
+# monster trap
+F:175:0x81/0x9C
+
+# Void Jumpgate
+F:176:0xAF/0x8C
+
+# lava wall
+F:177:0xC6/0x8C
+
+# Great Fire
+F:178:0xC6/0x8A
+
+# path to the next area
+F:179:0x88/0xA1
+
+# path to the previous area
+F:180:0x88/0xA0
+
+# field
+F:181:0x88/0xA2
+
+# Ekkaia, the Encircling Sea
+F:182:0x88/0xA3
+
+# Altar of Energy
+F:183:0xB5/0x9A
+
+# Altar of Matter
+F:184:0xB5/0x9B
+
+# Altar of Being
+F:185:0xB5/0x9C
+
+# Altar of Unbeing
+F:186:0xB5/0x9D
+
+# pool of deep water
+F:187:0x83/0x80
+
+# glass wall
+F:188:0xC0/0x9F
+
+# illusion wall
+F:189:0x80/0x84
+
+# Grass roof
+F:190:0xC2/0x80
+
+# grass roof top
+F:191:0xC2/0x81
+
+# grass roof chimney
+F:192:0xC2/0x82
+
+# brick roof
+F:193:0xC3/0x80
+
+# brick roof top
+F:194:0xC3/0x81
+
+# brick roof chimney
+F:195:0xC3/0x82
+
+# window
+F:196:0xC2/0x83
+
+# small window
+F:197:0xC2/0x84
+
+# rain barrel
+F:198:0xC2/0x85
+
+# grass with flowers
+F:199:0xC2/0x86
+
+# cobblestone road
+F:200:0xC2/0x87
+
+# cobblestone with outlet
+F:201:0xC2/0x88
+
+# small tree
+F:202:0x82/0x9D
+
+# town
+F:203:0xC3/0x95
+
+# Underground Tunnel
+F:204:0x80/0x82
+
+# a blazing fire
+F:205:0xC6/0x8A
+
+# pile of rubble
+F:206:0xC6/0x8B
+
+# ethereal wall
+F:214:0x80/0x81
+
+# glacial wall
+F:215:0xC5/0x92
+
+# Skeleton
+G:M:1:0xC6/0x91
+
+# Zombie
+G:M:2:0xC6/0x92
+
+# Lich
+G:M:3:0xC6/0x93
+
+# Spectral
+G:M:4:0xC6/0x94
+
+# Captain
+G:M:5:0xC6/0x95
+
+# Chieftain
+G:M:6:0xC6/0x96
+
+# Shaman
+G:M:7:0xC6/0x97
+
+# Priest
+G:M:8:0xC6/0x98
+
+# Mage
+G:M:9:0xC6/0x99
+
+# Archer
+G:M:10:0xC6/0x9A
+
+# Rogue
+G:M:11:0xC6/0x9B
+
+# Vampire
+G:P:1:0x88/0xA4
+
+# Spectre
+G:P:2:0x88/0xA5
+
+# Skeleton
+G:P:3:0xC6/0x91
+
+# Zombie
+G:P:4:0xC6/0x92
+
+# Barbarian
+G:P:5:0x88/0xA6
+
+# Hermit
+G:P:6:0x88/0xA7
+
+# Corrupted
+G:P:7:0x88/0xA8
+
+# LostSoul
+G:P:8:0x88/0xA9
+
+# something
+K:0:0x01/0x20
+
+# Blindness
+K:1:0x85/0x94
+
+# Paranoia
+K:2:0x85/0x94
+
+# Confusion
+K:3:0x85/0x94
+
+# Hallucination
+K:4:0x85/0x94
+
+# Cure Poison
+K:5:0x85/0x94
+
+# Cure Blindness
+K:6:0x85/0x94
+
+# Cure Paranoia
+K:7:0xC6/0x83
+
+# Cure Confusion
+K:8:0x85/0x94
+
+# Weakness
+K:9:0x85/0x94
+
+# Unhealth
+K:10:0x85/0x94
+
+# Restore Constitution
+K:11:0x85/0x94
+
+# Restoring
+K:12:0x85/0x94
+
+# Stupidity
+K:13:0x85/0x94
+
+# Naivety
+K:14:0x85/0x94
+
+# Poison
+K:15:0x85/0x94
+
+# Sickness
+K:16:0x85/0x94
+
+# Paralysis
+K:17:0x85/0x94
+
+# Restore Strength
+K:18:0x85/0x94
+
+# Disease
+K:19:0x85/0x94
+
+# Cure Serious Wounds
+K:20:0x85/0x94
+
+# & Ration~ of Food
+K:21:0x8E/0x84
+
+# & Hard Biscuit~
+K:22:0x8E/0x82
+
+# & Strip~ of Venison
+K:23:0x8E/0x83
+
+# & Slime Mold~
+K:24:0x8E/0x85
+
+# & Lembas~
+K:25:0x8E/0x86
+
+# & Pint~ of Fine Ale
+K:26:0x8E/0x80
+
+# & Pint~ of Fine Wine
+K:27:0x8E/0x80
+
+# & Mattock~
+K:28:0xB6/0x8C
+
+# & Blue Stone~
+K:29:0xC5/0x93
+
+# & Broken Dagger~
+K:30:0x8A/0x8D
+
+# & Bastard Sword~
+K:31:0x8A/0x8E
+
+# & Scimitar~
+K:32:0x8A/0x97
+
+# & Tulwar~
+K:33:0x8A/0x95
+
+# & Broad Sword~
+K:34:0x8A/0x98
+
+# & Short Sword~
+K:35:0x8A/0x94
+
+# & Blade~ of Chaos
+K:36:0x8A/0x9E
+
+# & Two-Handed Sword~
+K:37:0x8A/0x9C
+
+# & Main Gauche~
+K:38:0x8A/0x90
+
+# & Cutlass~
+K:39:0x8A/0x96
+
+# & Executioner's Sword~
+K:40:0x8A/0x9D
+
+# & Katana~
+K:41:0x8A/0x9B
+
+# & Long Sword~
+K:42:0x8A/0x99
+
+# & Dagger~
+K:43:0x8A/0x8F
+
+# & Rapier~
+K:44:0x8A/0x91
+
+# & Sabre~
+K:45:0x8A/0x93
+
+# & Small Sword~
+K:46:0x8A/0x92
+
+# & Broken Sword~
+K:47:0x8A/0x8E
+
+# & Ball-and-Chain~
+K:48:0x8B/0x86
+
+# & Whip~
+K:49:0x8A/0x9F
+
+# & Flail~
+K:50:0x8B/0x83
+
+# & Two-Handed Flail~
+K:51:0x8B/0x87
+
+# & Morning Star~
+K:52:0x8B/0x84
+
+# & Mace~
+K:53:0x8B/0x81
+
+# & Quarterstaff~
+K:54:0x8B/0x82
+
+# & War Hammer~
+K:55:0x8B/0x80
+
+# & Lead-Filled Mace~
+K:56:0x8B/0x85
+
+# & Mace~ of Disruption
+K:57:0x8B/0x88
+
+# & Lucerne Hammer~
+K:58:0x8B/0x8D
+
+# & Beaked Axe~
+K:59:0x8B/0x90
+
+# & Glaive~
+K:60:0x8B/0x92
+
+# & Halberd~
+K:61:0x8B/0x93
+
+# & Awl-Pike~
+K:62:0x8B/0x8B
+
+# & Pike~
+K:63:0x8B/0x8F
+
+# & Spear~
+K:64:0x8B/0x89
+
+# & Trident~
+K:65:0x8B/0x8A
+
+# & Lance~
+K:66:0x8B/0x8C
+
+# & Great Axe~
+K:67:0x8B/0x95
+
+# & Battle Axe~
+K:68:0x8B/0x8E
+
+# & Lochaber Axe~
+K:69:0x8B/0x94
+
+# & Broad Axe~
+K:70:0x8B/0x91
+
+# & Scythe~
+K:71:0x8B/0x96
+
+# & Scythe~ of Slicing
+K:72:0x8B/0x97
+
+# & Short Bow~
+K:73:0x8B/0x98
+
+# & Long Bow~
+K:74:0x8B/0x99
+
+# & Light Crossbow~
+K:75:0x8B/0x9A
+
+# & Heavy Crossbow~
+K:76:0x8B/0x9B
+
+# & Sling~
+K:77:0x8B/0x9C
+
+# & Arrow~
+K:78:0x8C/0x80
+
+# & Seeker Arrow~
+K:79:0x8C/0x81
+
+# & Bolt~
+K:80:0x8C/0x82
+
+# & Seeker Bolt~
+K:81:0x8C/0x83
+
+# & Rounded Pebble~
+K:82:0x8C/0x84
+
+# & Iron Shot~
+K:83:0x8C/0x85
+
+# & Shovel~
+K:84:0x8E/0x8F
+
+# & Gnomish Shovel~
+K:85:0x8E/0x90
+
+# & Dwarven Shovel~
+K:86:0x8E/0x91
+
+# & Pick~
+K:87:0x8E/0x8C
+
+# & Orcish Pick~
+K:88:0x8E/0x8D
+
+# & Dwarven Pick~
+K:89:0x8E/0x91
+
+# & Elven Cloak~
+K:90:0x89/0x89
+
+# & Pair~ of Soft Leather Boots
+K:91:0x88/0x8E
+
+# & Pair~ of Hard Leather Boots
+K:92:0x88/0x8F
+
+# & Pair~ of Metal Shod Boots
+K:93:0x88/0x90
+
+# & Hard Leather Cap~
+K:94:0x87/0x98
+
+# & Metal Cap~
+K:95:0x87/0x99
+
+# & Iron Helm~
+K:96:0x87/0x9A
+
+# & Steel Helm~
+K:97:0x87/0x9B
+
+# & Iron Crown~
+K:98:0x87/0x9C
+
+# & Golden Crown~
+K:99:0x87/0x9D
+
+# & Jewel Encrusted Crown~
+K:100:0x87/0x9E
+
+# & Robe~
+K:101:0x89/0x8C
+
+# & Filthy Rag~
+K:102:0x89/0x8B
+
+# Soft Leather Armour~
+K:103:0x89/0x8D
+
+# Soft Studded Leather~
+K:104:0x89/0x8E
+
+# Hard Leather Armour~
+K:105:0x89/0x8F
+
+# Hard Studded Leather~
+K:106:0x89/0x90
+
+# Leather Scale Mail~
+K:107:0x89/0x91
+
+# Metal Scale Mail~
+K:108:0x89/0x92
+
+# Chain Mail~
+K:109:0x89/0x94
+
+# Rusty Chain Mail~
+K:110:0x89/0x93
+
+# Augmented Chain Mail~
+K:111:0x89/0x96
+
+# Bar Chain Mail~
+K:112:0x89/0x97
+
+# Metal Brigandine Armour~
+K:113:0x89/0x98
+
+# Partial Plate Armour~
+K:114:0x89/0x99
+
+# Metal Lamellar Armour~
+K:115:0x89/0x9A
+
+# Full Plate Armour~
+K:116:0x89/0x9B
+
+# Ribbed Plate Armour~
+K:117:0x89/0x9C
+
+# Adamantite Plate Mail~
+K:118:0x89/0x9F
+
+# Mithril Plate Mail~
+K:119:0x89/0x9E
+
+# Mithril Chain Mail~
+K:120:0x89/0x9D
+
+# Double Chain Mail~
+K:121:0x89/0x95
+
+# & Shield~ of Deflection
+K:122:0x88/0x98
+
+# & Cloak~
+K:123:0x89/0x88
+
+# & Shadow Cloak~
+K:124:0x89/0x89
+
+# & Set~ of Leather Gloves
+K:125:0x88/0x91
+
+# & Set~ of Gauntlets
+K:126:0x88/0x92
+
+# & Set~ of Cesti
+K:127:0x88/0x93
+
+# & Small Leather Shield~
+K:128:0x88/0x94
+
+# & Large Leather Shield~
+K:129:0x88/0x95
+
+# & Small Metal Shield~
+K:130:0x88/0x96
+
+# & Large Metal Shield~
+K:131:0x88/0x97
+
+# Strength
+K:132:0x84/0x81
+
+# Dexterity
+K:133:0x84/0x83
+
+# Constitution
+K:134:0x84/0x83
+
+# Intelligence
+K:135:0x84/0x83
+
+# Speed
+K:136:0x84/0x83
+
+# Searching
+K:137:0x84/0x83
+
+# Teleportation
+K:138:0x84/0x83
+
+# Slow Digestion
+K:139:0x84/0x83
+
+# Fire Resistance
+K:140:0x84/0x83
+
+# Cold Resistance
+K:141:0x84/0x83
+
+# Levitation
+K:142:0x84/0x83
+
+# Poison Resistance
+K:143:0x84/0x83
+
+# Free Action
+K:144:0x84/0x83
+
+# Weakness
+K:145:0x84/0x83
+
+# Flames
+K:146:0x84/0x83
+
+# Acid
+K:147:0x84/0x83
+
+# Ice
+K:148:0x84/0x83
+
+# Woe
+K:149:0x84/0x83
+
+# Stupidity
+K:150:0x84/0x83
+
+# Damage
+K:151:0x84/0x83
+
+# Accuracy
+K:152:0x84/0x83
+
+# Protection
+K:153:0x84/0x83
+
+# Aggravate Monster
+K:154:0x84/0x83
+
+# See Invisible
+K:155:0x84/0x83
+
+# Sustain Strength
+K:156:0x84/0x83
+
+# Sustain Intelligence
+K:157:0x84/0x83
+
+# Sustain Wisdom
+K:158:0x84/0x83
+
+# Sustain Constitution
+K:159:0x84/0x83
+
+# Sustain Dexterity
+K:160:0x84/0x83
+
+# Sustain Charisma
+K:161:0x84/0x83
+
+# Slaying
+K:162:0x84/0x83
+
+# Brilliance
+K:163:0x87/0x83
+
+# Charisma
+K:164:0x87/0x83
+
+# Searching
+K:165:0x87/0x83
+
+# Teleportation
+K:166:0x87/0x83
+
+# Slow Digestion
+K:167:0x87/0x83
+
+# Acid Resistance
+K:168:0x87/0x83
+
+# Adornment
+K:169:0x87/0x83
+
+# Double Ring Mail~
+K:170:0x89/0x9B
+
+# the Magi
+K:171:0x87/0x83
+
+# Doom
+K:172:0x87/0x83
+
+# Enchant Weapon To-Hit
+K:173:0x83/0x9C
+
+# Enchant Weapon To-Dam
+K:174:0x83/0x9C
+
+# Enchant Armor
+K:175:0x83/0x9C
+
+# Identify
+K:176:0x83/0x9C
+
+# *Identify*
+K:177:0x83/0x9C
+
+# Rumour
+K:178:0x83/0x9C
+
+# Chaos
+K:179:0x83/0x9C
+
+# Remove Curse
+K:180:0x83/0x9C
+
+# Light
+K:181:0x83/0x9C
+
+# Fire
+K:182:0x83/0x9C
+
+# Ice
+K:183:0x83/0x9C
+
+# Summon Monster
+K:184:0x83/0x9C
+
+# Phase Door
+K:185:0x83/0x9C
+
+# Teleportation
+K:186:0x83/0x9C
+
+# Teleport Level
+K:187:0x83/0x9C
+
+# Monster Confusion
+K:188:0x83/0x9C
+
+# Magic Mapping
+K:189:0x83/0x9C
+
+# Rune of Protection
+K:190:0x83/0x9C
+
+# *Remove Curse*
+K:191:0x83/0x9C
+
+# Treasure Detection
+K:192:0x83/0x9C
+
+# Object Detection
+K:193:0x83/0x9C
+
+# Trap Detection
+K:194:0x83/0x9C
+
+# & Sheaf Arrow~
+K:195:0x8C/0x81
+
+# & Mithril Shot~
+K:196:0x8C/0x85
+
+# Door
+K:197:0x83/0x9C
+
+# Acquirement
+K:198:0x83/0x9C
+
+# *Acquirement*
+K:199:0x83/0x9C
+
+# Mass Genocide
+K:200:0x83/0x9C
+
+# Detect Invisible
+K:201:0x83/0x9C
+
+# Aggravate Monster
+K:202:0x83/0x9C
+
+# Trap Creation
+K:203:0x83/0x9C
+
+# Trap
+K:204:0x83/0x9C
+
+# Artifact Creation
+K:205:0x83/0x9C
+
+# Recharging
+K:206:0x83/0x9C
+
+# Genocide
+K:207:0x83/0x9C
+
+# Darkness
+K:208:0x83/0x9C
+
+# Protection from Evil
+K:209:0x83/0x9C
+
+# Satisfy Hunger
+K:210:0x83/0x9C
+
+# Dispel Undead
+K:211:0x83/0x9C
+
+# *Enchant Weapon*
+K:212:0x83/0x9C
+
+# Curse Weapon
+K:213:0x83/0x9C
+
+# *Enchant Armor*
+K:214:0x83/0x9C
+
+# Curse Armor
+K:215:0x83/0x9C
+
+# Summon Undead
+K:216:0x83/0x9C
+
+# Blessing
+K:217:0x83/0x9C
+
+# Holy Chant
+K:218:0x83/0x9C
+
+# Holy Prayer
+K:219:0x83/0x9C
+
+# Word of Recall
+K:220:0x83/0x9C
+
+# *Destruction*
+K:221:0x83/0x9C
+
+# Slime Mold Juice
+K:222:0x85/0x85
+
+# Apple Juice
+K:223:0x85/0x85
+
+# Water
+K:224:0x85/0x85
+
+# Strength
+K:225:0x85/0x85
+
+# Weakness
+K:226:0x85/0x85
+
+# Restore Strength
+K:227:0x85/0x85
+
+# Intelligence
+K:228:0x85/0x85
+
+# Stupidity
+K:229:0x85/0x85
+
+# Restore Intelligence
+K:230:0x85/0x85
+
+# Wisdom
+K:231:0x85/0x85
+
+# Naivety
+K:232:0x85/0x85
+
+# Restore Wisdom
+K:233:0x85/0x85
+
+# Charisma
+K:234:0x85/0x85
+
+# Ugliness
+K:235:0x85/0x85
+
+# Restore Charisma
+K:236:0x85/0x85
+
+# Curing
+K:237:0x85/0x85
+
+# Invulnerability
+K:238:0x85/0x85
+
+# New Life
+K:239:0x85/0x85
+
+# Cure Serious Wounds
+K:240:0x85/0x85
+
+# Cure Critical Wounds
+K:241:0x85/0x85
+
+# Healing
+K:242:0x85/0x85
+
+# Constitution
+K:243:0x85/0x85
+
+# Experience
+K:244:0x85/0x85
+
+# Sleep
+K:245:0x85/0x85
+
+# Blindness
+K:246:0x85/0x85
+
+# Booze
+K:247:0x85/0x85
+
+# Poison
+K:248:0x85/0x85
+
+# Speed
+K:249:0x85/0x85
+
+# Slowness
+K:250:0x85/0x85
+
+# Dexterity
+K:251:0x85/0x85
+
+# Restore Dexterity
+K:252:0x85/0x85
+
+# Restore Constitution
+K:253:0x85/0x85
+
+# Lose Memories
+K:254:0x85/0x85
+
+# Salt Water
+K:255:0x85/0x85
+
+# Enlightenment
+K:256:0x85/0x85
+
+# Heroism
+K:257:0x85/0x85
+
+# Berserk Strength
+K:258:0x85/0x85
+
+# Boldness
+K:259:0x85/0x85
+
+# Restore Life Levels
+K:260:0x85/0x85
+
+# Resist Heat
+K:261:0x85/0x85
+
+# Resist Cold
+K:262:0x85/0x85
+
+# Detect Invisible
+K:263:0x85/0x85
+
+# Slow Poison
+K:264:0x85/0x85
+
+# Neutralise Poison
+K:265:0x85/0x85
+
+# Restore Mana
+K:266:0x85/0x85
+
+# Infra-vision
+K:267:0x85/0x85
+
+# Resistance
+K:268:0x85/0x85
+
+# Spell
+K:269:0x86/0x93
+
+# Manathrust
+K:270:0x86/0x93
+
+# Fireflash
+K:271:0x86/0x93
+
+# Firewall
+K:272:0x86/0x93
+
+# Tidal Wave
+K:273:0x86/0x93
+
+# Ice Storm
+K:274:0x86/0x93
+
+# Noxious Cloud
+K:275:0x86/0x93
+
+# Poison Blood
+K:276:0x86/0x93
+
+# Thunderstorm
+K:277:0x86/0x93
+
+# Dig
+K:278:0x86/0x93
+
+# Stone Prison
+K:279:0x86/0x93
+
+# Strike
+K:280:0x86/0x93
+
+# Teleport Away
+K:281:0x86/0x93
+
+# Summon Animal
+K:282:0x86/0x93
+
+# Magelock
+K:283:0x86/0x93
+
+# Slow Monster
+K:284:0x86/0x93
+
+# Essence of Speed
+K:285:0xB7/0x8C
+
+# Banishment
+K:286:0x86/0x93
+
+# Disperse Magic
+K:287:0x86/0x93
+
+# Charm
+K:288:0x86/0x93
+
+# Confuse
+K:289:0x86/0x93
+
+# Demon Blade
+K:290:0x86/0x93
+
+# Heal Monster
+K:291:0x86/0x93
+
+# Haste Monster
+K:292:0x86/0x93
+
+# & Flight Arrow~
+K:293:0x8C/0x81
+
+# Acid Bolts
+K:294:0x86/0x93
+
+# Dragon's Flame
+K:295:0x86/0x93
+
+# Dragon's Frost
+K:296:0x86/0x93
+
+# Dragon's Breath
+K:297:0x86/0x93
+
+# Annihilation
+K:298:0x86/0x93
+
+# Rockets
+K:299:0x86/0x93
+
+# Spell
+K:300:0x87/0x92
+
+# Nothing
+K:301:0x87/0x92
+
+# Globe of Light
+K:302:0x87/0x92
+
+# Fiery Shield
+K:303:0x87/0x92
+
+# Remove Curses
+K:304:0x87/0x92
+
+# Wings of Winds
+K:305:0x87/0x92
+
+# Shake
+K:306:0x87/0x92
+
+# Disarm
+K:307:0x87/0x92
+
+# Teleportation
+K:308:0x87/0x92
+
+# Probability Travel
+K:309:0x87/0x92
+
+# Recovery
+K:310:0x87/0x92
+
+# Healing
+K:311:0x87/0x92
+
+# Vision
+K:312:0x87/0x92
+
+# Identify
+K:313:0x87/0x92
+
+# Sense Hidden
+K:314:0x87/0x92
+
+# Reveal Ways
+K:315:0x87/0x92
+
+# Sense Monsters
+K:316:0x87/0x92
+
+# Genocide
+K:317:0x87/0x92
+
+# Summon
+K:318:0x87/0x92
+
+# Curing
+K:319:0x87/0x92
+
+# Wish
+K:320:0x87/0x92
+
+# Mana
+K:321:0x87/0x92
+
+# Darkness
+K:322:0x87/0x92
+
+# Genocide
+K:323:0x87/0x92
+
+# Power
+K:324:0x87/0x92
+
+# the Magi
+K:325:0x87/0x92
+
+# Perception
+K:326:0x87/0x92
+
+# Holiness
+K:327:0x87/0x92
+
+# Enlightenment
+K:328:0x87/0x92
+
+# Healing
+K:329:0x87/0x92
+
+# & Tome~ of Magical Energy
+K:330:0x90/0xA0
+
+# & Tome~ of the Eternal Flame
+K:331:0x90/0xA1
+
+# & Tome~ of the Blowing Wind
+K:332:0x90/0xA2
+
+# & Tome~ of the Impenetrable Earth
+K:333:0x90/0xA3
+
+# & Tome~ of the Everrunning Wave
+K:334:0x90/0xA4
+
+# & Tome~ of Translocation
+K:335:0x90/0xA5
+
+# & Tome~ of the Tree
+K:336:0x90/0xA6
+
+# & Tome~ of Knowledge
+K:337:0x90/0xA7
+
+# & Small wooden chest~
+K:338:0x84/0x99
+
+# & Large wooden chest~
+K:339:0x84/0x9A
+
+# & Small iron chest~
+K:340:0x84/0x9B
+
+# & Large iron chest~
+K:341:0x84/0x9C
+
+# & Small steel chest~
+K:342:0x84/0x9D
+
+# & Large steel chest~
+K:343:0x84/0x9E
+
+# & Ruined chest~
+K:344:0x84/0x9F
+
+# & Iron Spike~
+K:345:0x8E/0x89
+
+# & Wooden Torch~
+K:346:0x8E/0x8B
+
+# & Brass Lantern~
+K:347:0x8E/0x8A
+
+# & Flask~ of oil
+K:348:0x8E/0x88
+
+# & Empty Bottle~
+K:349:0x8E/0x87
+
+# Havoc
+K:350:0x86/0x83
+
+# Door
+K:351:0x86/0x83
+
+# Trap Location
+K:352:0x86/0x83
+
+# Probing
+K:353:0x86/0x83
+
+# Recall
+K:354:0x86/0x83
+
+# Illumination
+K:355:0x86/0x83
+
+# Light
+K:356:0x86/0x83
+
+# Lightning Bolts
+K:357:0x86/0x83
+
+# Frost Bolts
+K:358:0x86/0x83
+
+# Fire Bolts
+K:359:0x86/0x83
+
+# Polymorph
+K:360:0x86/0x83
+
+# Slow Monster
+K:361:0x86/0x83
+
+# Sleep Monster
+K:362:0x86/0x83
+
+# Drain Life
+K:363:0x86/0x83
+
+# Teleport Other
+K:364:0x86/0x83
+
+# Disarming
+K:365:0x86/0x83
+
+# Lightning Balls
+K:366:0x86/0x83
+
+# Cold Balls
+K:367:0x86/0x83
+
+# Fire Balls
+K:368:0x86/0x83
+
+# Acid Balls
+K:369:0x86/0x83
+
+# Acid Bolts
+K:370:0x86/0x83
+
+# Enlightenment
+K:371:0x86/0x83
+
+# Perception
+K:372:0x86/0x83
+
+# Curing
+K:373:0x86/0x83
+
+# Healing
+K:374:0x86/0x83
+
+# Detection
+K:375:0x86/0x83
+
+# Restoration
+K:376:0x86/0x83
+
+# Speed
+K:377:0x86/0x83
+
+# Spell
+K:378:0xC1/0x84
+K:379:0x8D/0x80
+
+# [Beings of Darkness]
+K:380:0x8D/0x81
+
+# [Material Shadow]
+K:381:0x8D/0x82
+
+# [Nature's Wrath]
+K:382:0x8D/0x83
+
+# [Sign of Chaos]
+K:383:0x8C/0x98
+
+# [Chaos Mastery]
+K:384:0x8C/0x99
+
+# [Chaos Channels]
+K:385:0x8C/0x9A
+
+# [Armageddon Tome]
+K:386:0x8C/0x9B
+
+# [Nether Openings]
+K:387:0x8D/0x88
+
+# [Unholy Blessings]
+K:388:0x8D/0x89
+
+# & Firestone~
+K:389:0x8E/0x92
+
+# & Small Firestone~
+K:390:0x8E/0x93
+
+# & Broken Skull~
+K:391:0x8E/0x94
+
+# & Broken Bone~
+K:392:0x8E/0x95
+
+# & Canine Skeleton~
+K:393:0x8E/0x9A
+
+# & Rodent Skeleton~
+K:394:0x8E/0x9B
+
+# & Human Skeleton~
+K:395:0x8E/0x96
+
+# & Dwarf Skeleton~
+K:396:0x8E/0x98
+
+# & Elf Skeleton~
+K:397:0x8E/0x97
+
+# & Gnome Skeleton~
+K:398:0x8E/0x99
+
+# & Great Hammer~
+K:399:0xB6/0x8A
+
+# Black Dragon Scale Mail~
+K:400:0x8A/0x82
+
+# Blue Dragon Scale Mail~
+K:401:0x8A/0x80
+
+# White Dragon Scale Mail~
+K:402:0x8A/0x81
+
+# Red Dragon Scale Mail~
+K:403:0x8A/0x83
+
+# Green Dragon Scale Mail~
+K:404:0x8A/0x84
+
+# Multi-Hued Dragon Scale Mail~
+K:405:0x8A/0x8B
+
+# Pseudo Dragon Scale Mail~
+K:406:0x8A/0x87
+
+# Law Dragon Scale Mail~
+K:407:0x8A/0x89
+
+# Bronze Dragon Scale Mail~
+K:408:0x8A/0x85
+
+# Gold Dragon Scale Mail~
+K:409:0x8A/0x86
+
+# Chaos Dragon Scale Mail~
+K:410:0x8A/0x88
+
+# Balance Dragon Scale Mail~
+K:411:0x8A/0x8A
+
+# Power Dragon Scale Mail~
+K:412:0x8A/0x8C
+
+# & Dragon Helm~
+K:413:0x88/0x82
+
+# & Dragon Shield~
+K:414:0x88/0x9C
+
+# Death
+K:415:0x85/0x85
+
+# Ruination
+K:416:0x85/0x85
+
+# Detonations
+K:417:0x85/0x85
+
+# Augmentation
+K:418:0x85/0x85
+
+# *Healing*
+K:419:0x85/0x85
+
+# Life
+K:420:0x85/0x85
+
+# Self Knowledge
+K:421:0x85/0x85
+
+# *Enlightenment*
+K:422:0x85/0x85
+
+# [Necromantic Incantations]
+K:423:0x8D/0x8A
+
+# [Curses of Angmar]
+K:424:0x8D/0x8B
+
+# Fear Resistance
+K:425:0x84/0x83
+
+# Light and Darkness Resistance
+K:426:0x84/0x83
+
+# Nether Resistance
+K:427:0x84/0x83
+
+# Nexus Resistance
+K:428:0x84/0x83
+
+# Sound Resistance
+K:429:0x84/0x83
+
+# Confusion Resistance
+K:430:0x84/0x83
+
+# Shard Resistance
+K:431:0x84/0x83
+
+# Disenchantment Resistance
+K:432:0x84/0x83
+
+# Chaos Resistance
+K:433:0x84/0x83
+
+# Blindness Resistance
+K:434:0x84/0x83
+
+# Lordly Protection
+K:435:0x84/0x83
+
+# Extra Attacks
+K:436:0x84/0x83
+
+# Cure Light Wounds
+K:437:0x85/0x85
+
+# Clumsiness
+K:438:0x85/0x85
+
+# Sickliness
+K:439:0x85/0x85
+
+# Map of Bree
+K:440:0xC4/0x80
+
+# Map of Gondolin
+K:441:0xC4/0x80
+
+# Map of Lothlorien
+K:442:0xC4/0x80
+
+# Map of Minas Anor
+K:443:0xC4/0x80
+
+# & Silver Arrow~
+K:465:0xC6/0x81
+
+# & Silver Bolt~
+K:466:0xC6/0x82
+
+# Lightning Resistance
+K:467:0x87/0x80
+
+# Wisdom
+K:468:0x87/0x80
+
+# Regeneration
+K:469:0x87/0x80
+
+# Infravision
+K:470:0x87/0x80
+
+# Devotion
+K:471:0x87/0x80
+
+# Weaponmastery
+K:472:0x87/0x80
+
+# Trickery
+K:473:0x87/0x80
+
+# Telepathy
+K:474:0x87/0x80
+
+# Sustenance
+K:475:0x87/0x80
+
+# & Palantir~
+K:476:0xC6/0x87
+
+# & Elfstone~
+K:477:0xC6/0x83
+
+# & Jewel~
+K:478:0xC6/0x84
+
+# & Ring~
+K:479:0xC6/0x85
+
+# copper
+K:480:0x83/0x91
+K:481:0x83/0x91
+K:482:0x83/0x91
+
+# silver
+K:483:0x83/0x92
+K:484:0x83/0x92
+K:485:0x83/0x92
+
+# garnets
+K:486:0x83/0x96
+K:487:0x83/0x96
+
+# gold
+K:488:0x83/0x93
+K:489:0x83/0x93
+K:490:0x83/0x93
+
+# opals
+K:491:0x83/0x97
+
+# sapphires
+K:492:0x83/0x98
+
+# rubies
+K:493:0x83/0x99
+
+# diamonds
+K:494:0x83/0x9A
+
+# emeralds
+K:495:0x83/0x9B
+
+# mithril
+K:496:0x83/0x94
+
+# adamantite
+K:497:0x83/0x95
+
+# & Mighty Hammer~
+K:498:0xB6/0x8A
+
+# & Massive Iron Crown~
+K:499:0x87/0x9C
+
+# & Phial~
+K:500:0x8E/0x9D
+
+# & Star~
+K:501:0x8E/0x9E
+
+# & Arkenstone~
+K:502:0x8E/0x9F
+
+# & Amulet~
+K:503:0x84/0x96
+K:504:0x84/0x97
+
+# & Necklace~
+K:505:0x84/0x98
+
+# & Ring~
+K:506:0x84/0x8F
+K:507:0x84/0x90
+K:508:0x84/0x92
+K:509:0x84/0x93
+K:510:0x84/0x94
+K:511:0x84/0x95
+
+# [Rites of Initiation]
+K:512:0x8D/0x90
+
+# [Ways of War]
+K:513:0x8D/0x91
+
+# [Divine Retribution]
+K:514:0x8D/0x92
+
+# [Essence of Fury]
+K:515:0x8D/0x93
+
+# [Novice Crafts]
+K:516:0x8D/0x8C
+
+# [Arcane Channels]
+K:517:0x8D/0x8D
+
+# [Sigils of Wizardry]
+K:518:0x8D/0x8E
+
+# [Mana Focus]
+K:519:0x8D/0x8F
+
+# Reflection
+K:520:0x87/0x83
+
+# Anti-Magic
+K:521:0x87/0x83
+
+# Anti-Teleportation
+K:522:0x87/0x83
+
+# Resistance
+K:523:0x87/0x83
+
+# & Zweihander~
+K:524:0xB6/0x8C
+
+# & Dwarven Lantern~
+K:525:0xC5/0x94
+
+# Splint Mail~
+K:526:0x89/0x9C
+
+# & Everburning Torch~
+K:527:0xC5/0x95
+
+# & Trifurcate Spear~
+K:528:0xB6/0x85
+
+# & Three Piece Rod~
+K:529:0xB6/0x80
+
+# & Feanorian Lamp~
+K:530:0xC5/0x96
+
+# & Fur Cloak~
+K:531:0x89/0x89
+
+# Water Curing
+K:532:0xB6/0x86
+
+# & Hatchet~
+K:533:0xB6/0x8F
+
+# Rhino Hide Armour~
+K:535:0x89/0x98
+
+# Leather Jacket~
+K:536:0x89/0x8F
+
+# & Sickle~
+K:537:0xB6/0x90
+
+# [Psychoportation]
+K:538:0xB6/0x87
+
+# [Clairsentience]
+K:539:0xB6/0x91
+
+# [Telekinesis]
+K:540:0xB6/0x93
+
+# [Empathy]
+K:541:0xB6/0x92
+
+# & Club~
+K:542:0xB6/0x92
+
+# & Broad Spear~
+K:543:0xB6/0x84
+
+# & Khopesh~
+K:544:0xB6/0x94
+
+# & Flamberge~
+K:545:0xB6/0x83
+
+# & Claymore~
+K:546:0xB6/0x8D
+
+# & Espadon~
+K:547:0xB6/0x8E
+
+# & Great Scimitar~
+K:548:0xB6/0x8B
+
+# Arrow
+K:549:0x8E/0xA0
+
+# Bolt
+K:550:0x8E/0xA1
+
+# & Fauchard~
+K:551:0xB6/0x95
+
+# & Guisarme~
+K:552:0xB6/0x96
+
+# & Heavy Lance~
+K:553:0xB6/0x82
+
+# & Basillard~
+K:554:0xB6/0x99
+
+# Catapult
+K:555:0x8E/0xA2
+
+# Ring Mail~
+K:556:0x89/0x9C
+
+# Cord Armour~
+K:557:0x89/0x90
+
+# Paper Armour~
+K:558:0x8A/0x81
+
+# Padded Armour~
+K:559:0x89/0x91
+
+# Fumes
+K:560:0x8E/0xA3
+
+# Stone and Hide Armour~
+K:561:0x89/0x97
+
+# Magic
+K:562:0x8E/0xA4
+
+# Device
+K:563:0x8E/0xA5
+
+# Nothing
+K:564:0xC6/0x9C
+
+# Poison
+K:565:0xB7/0x80
+
+# Nothing
+K:566:0xC6/0x9C
+K:567:0xC6/0x9C
+K:568:0xC6/0x9C
+K:569:0xC6/0x9C
+
+# Explosion
+K:570:0xB7/0x81
+
+# Teleport
+K:571:0xB7/0x82
+
+# Nothing
+K:572:0xC6/0x9C
+
+# & Blood~ of Life
+K:573:0x85/0x85
+
+# Cold
+K:574:0xB7/0x83
+
+# Fire
+K:575:0xB7/0x84
+
+# Acid
+K:576:0xB7/0x85
+
+# & Mage Staff~
+K:577:0xB8/0x80
+
+# Lightning
+K:578:0x84/0x80
+
+# Life
+K:579:0xB7/0x86
+
+# Confusion
+K:580:0xB7/0x87
+
+# Light
+K:581:0xB7/0x88
+
+# & Ring~
+K:582:0x84/0x85
+
+# Invisibility
+K:583:0x85/0x85
+
+# Chaos
+K:584:0xB7/0x89
+
+# Corruption
+K:585:0x85/0x85
+
+# Invisibility
+K:586:0x85/0x85
+
+# Time
+K:587:0xB7/0x8A
+
+# Deep Thoughts
+K:588:0x83/0x9C
+
+# More Deep Thoughts
+K:589:0x83/0x9D
+
+# Compendium of Deep Thoughts
+K:590:0x83/0x9E
+
+# Artifact Lore Vol. I
+K:591:0x83/0x9C
+
+# Artifact Lore Vol. II
+K:592:0x83/0x9D
+
+# Artifact Lore Vol. III
+K:593:0x83/0x9F
+
+# Monstrous Compendium 1
+K:594:0x83/0x9F
+
+# Monstrous Compendium 2
+K:595:0x83/0x9E
+
+# Monstrous Compendium 3
+K:596:0x83/0x9D
+
+# Monstrous Compendium 4
+K:597:0x83/0x9C
+
+# Monstrous Compendium 5
+K:598:0x83/0x9F
+
+# Monstrous Compendium 6
+K:599:0x83/0x9E
+
+# Monstrous Compendium 7
+K:600:0x83/0x9D
+
+# Monstrous Compendium 8
+K:601:0x83/0x9C
+
+# Monstrous Compendium 9
+K:602:0x83/0x9D
+
+# Monstrous Compendium 10
+K:603:0x83/0x9E
+
+# Monstrous Compendium 11
+K:604:0x83/0x9F
+
+# Abomination
+K:605:0x85/0x85
+
+# Shape of Wolf
+K:606:0x85/0x85
+
+# Shape of Ape
+K:607:0x85/0x85
+
+# Shape of Goat
+K:608:0x85/0x85
+
+# Shape of Insect
+K:609:0x85/0x85
+
+# Shape of Sparrow
+K:610:0x85/0x85
+
+# Shape of Ent
+K:611:0x85/0x85
+
+# Shape of Vampire
+K:612:0x85/0x85
+
+# Shape of Spider
+K:613:0x85/0x85
+
+# Shape of Mana ball
+K:614:0x85/0x85
+
+# Shape of Fire cloud
+K:615:0x85/0x85
+
+# Shape of Cold cloud
+K:616:0x85/0x85
+
+# Shape of Chaos cloud
+K:617:0x85/0x85
+
+# [Wolf]
+K:618:0x8F/0xA0
+
+# [Ape]
+K:619:0x8F/0xA1
+
+# [Goat]
+K:620:0x8F/0xA2
+
+# [Insect]
+K:621:0x8F/0xA3
+
+# [Sparrow]
+K:622:0x8F/0xA4
+
+# [Ent]
+K:623:0x8F/0xA5
+
+# [Vampire]
+K:624:0x8F/0xA6
+
+# [Spider]
+K:625:0x8F/0xA7
+
+# [Mana ball]
+K:626:0x8F/0xA8
+
+# [Fire cloud]
+K:627:0x8F/0xA9
+
+# [Cold cloud]
+K:628:0x8F/0xAA
+
+# [Chaos Cloud]
+K:629:0x8F/0xAB
+
+# [Ghost]
+K:630:0x8F/0xAC
+
+# [Kobold]
+K:631:0x8F/0xAD
+
+# [Dragon]
+K:632:0x8F/0xAE
+
+# [Demon]
+K:633:0x8F/0xAF
+
+# [Hound]
+K:634:0x8F/0xB0
+
+# [Quylthulg]
+K:635:0x8F/0xB1
+
+# [Maia]
+K:636:0x8F/0xB2
+
+# [Serpent]
+K:637:0x8F/0xB3
+
+# [Giant]
+K:638:0x8F/0xB4
+
+# [Vala]
+K:639:0x8F/0xB5
+
+# Magic
+K:640:0xB7/0x8B
+
+# corpse
+K:641:0xB8/0x81
+
+# skeleton
+K:642:0x8E/0x96
+
+# head
+K:643:0x8E/0x94
+
+# skull
+K:644:0x8E/0x94
+
+# raw meat
+K:645:0x8E/0x83
+
+# & Thunderlord Coat~
+K:646:0x8A/0x86
+
+# & Stone~
+K:647:0x8E/0x9C
+
+# & small wooden Boomerang~
+K:648:0xB8/0x82
+
+# & wooden Boomerang~
+K:649:0xB8/0x83
+
+# & small metal Boomerang~
+K:650:0xB8/0x84
+
+# & metal Boomerang~
+K:651:0xB8/0x85
+
+# & Anchor~
+K:652:0x8D/0x9E
+
+# & ~
+K:653:0xC6/0x9C
+
+# Summon never-moving pet
+K:654:0x83/0x9D
+
+# [Life in symbiosis]
+K:655:0xB8/0x86
+
+# [Perfect Symbiosis]
+K:656:0xB8/0x86
+
+# Cure Light Insanity
+K:657:0x85/0x85
+
+# Cure Serious Insanity
+K:658:0x85/0x85
+
+# Cure Critical Insanity
+K:659:0x85/0x85
+
+# Cure Insanity
+K:660:0x85/0x85
+
+# & Phial~
+K:661:0x8E/0x9D
+
+# Random Artifact
+K:662:0xC6/0x9C
+
+# Craftmanship
+K:663:0x83/0x9F
+
+# The One Ring
+K:664:0x83/0x9E
+
+# & Book~ of the Lays of the Heroes
+K:665:0xB8/0x87
+
+# & Book~ of Sound Patterns
+K:666:0xB8/0x87
+
+# [Harps of Rivendell]
+K:667:0xB8/0x87
+
+# [Lays of Beleriand]
+K:668:0xB8/0x87
+
+# & Flute~
+K:669:0xB8/0x88
+
+# & Drum~
+K:670:0xB8/0x89
+
+# & Harp~
+K:671:0xB8/0x8A
+
+# & Banjo~
+K:672:0xB8/0x8C
+
+# & Lute~
+K:673:0xB8/0x8B
+
+# & Mandolin~
+K:674:0xB8/0x8B
+
+# & Palantir~
+K:675:0x8D/0x9F
+
+# Egg
+K:676:0xB7/0x8D
+
+# Reset Recall
+K:677:0x83/0x9D
+
+# Divination
+K:678:0x83/0x9D
+
+# Self
+K:679:0xB7/0x8E
+
+# Ray
+K:680:0xB7/0x8F
+
+# Sphere
+K:681:0xB7/0x90
+
+# Knowledge
+K:682:0xB7/0x94
+
+# Life
+K:683:0xB7/0x95
+
+# Fire
+K:684:0xB7/0x96
+
+# Cold
+K:685:0xB7/0x97
+
+# Lightning
+K:686:0xB7/0x98
+
+# Acid
+K:687:0xB7/0x99
+
+# Element
+K:688:0xB7/0x9A
+
+# Chaos
+K:689:0xB7/0x9B
+
+# Mind
+K:690:0xB7/0x9C
+
+# Holding
+K:691:0xB7/0x9D
+
+# Arrow
+K:692:0xB7/0x91
+
+# Power Surge
+K:693:0xB7/0x92
+
+# Armageddon
+K:694:0xB7/0x93
+
+# Gravity
+K:695:0xB7/0x9E
+
+# Extra Life
+K:696:0xB7/0x9F
+
+# Undeath
+K:697:0xB6/0x9B
+
+# Protection
+K:698:0xB6/0x9C
+
+# & Horn~
+K:699:0xB8/0x8D
+
+# & Ring~ of Precognition
+K:700:0x84/0x83
+
+# & Sprig~ of Athelas
+K:701:0xB8/0x8E
+
+# [Magic for Beginners]
+K:702:0xB8/0x8F
+
+# [Conjurings and Tricks]
+K:703:0xB8/0x8F
+
+# [Incantations and Illusions]
+K:704:0xB8/0x8F
+
+# [Sorcery and Evocations]
+K:705:0xB8/0x8F
+
+# [Beginners Handbook]
+K:706:0xB8/0x90
+
+# [Words of Wisdom]
+K:707:0xB8/0x90
+
+# [Chants and Blessings]
+K:708:0xB8/0x90
+
+# [Exorcism and Dispelling]
+K:709:0xB8/0x90
+
+# [Resistance of Scarabtarices]
+K:710:0xB8/0x92
+
+# [Mordenkainen's Escapes]
+K:711:0xB8/0x92
+
+# [Kelek's Grimoire of Power]
+K:712:0xB8/0x92
+
+# [Tenser's Transformations]
+K:713:0xB8/0x92
+
+# [Raal's Tome of Destruction]
+K:714:0xB8/0x92
+
+# [Ethereal Openings]
+K:715:0xB8/0x92
+
+# [Godly Insights]
+K:716:0xB8/0x91
+
+# [Purifications and Healing]
+K:717:0xB8/0x91
+
+# [Holy Infusions]
+K:718:0xB8/0x91
+
+# [Wrath of God]
+K:719:0xB8/0x91
+
+# & Old Scroll~ of Deincarnation
+K:720:0x83/0x9F
+
+# & Dark Sword~
+K:721:0xC4/0x81
+
+# Numenorean for beginners (I)
+K:722:0xC1/0x80
+
+# Numenorean for beginners (II)
+K:723:0xC1/0x81
+
+# Advanced lessons of Numenorean
+K:724:0xC1/0x80
+
+# Advanced lessons of Sindarin
+K:725:0xC1/0x81
+
+# & Shard~ of Pottery
+K:726:0x8E/0x92
+
+# & Broken Stick~
+K:727:0x8E/0x93
+
+# Wall Creation
+K:728:0x83/0x9F
+
+# [Illusions for Beginners]
+K:729:0xC1/0x82
+
+# [Tricks and Visions]
+K:730:0xC1/0x82
+
+# [Phantasms and Illusions]
+K:731:0xC1/0x82
+
+# [Shadows and Prisms]
+K:732:0xC1/0x82
+
+# [Serten's Immunities]
+K:733:0xC1/0x83
+
+# [Knowledge of Kenault]
+K:734:0xC1/0x83
+
+# [Otiluke's Spheres]
+K:735:0xC1/0x82
+
+# [Boccob's Book of Shadows]
+K:736:0xC1/0x84
+
+# [Bigby's Handbook]
+K:737:0xC1/0x84
+
+# & Book~ of Beginner Cantrips
+K:738:0xC1/0x85
+
+# & Book~ of Teleportation
+K:739:0xC1/0x86
+
+# & Book~ of Recall
+K:740:0xC1/0x87
+
+# & Book~ of Summoning
+K:741:0xC1/0x80
+
+# & Book~ of Fireflash
+K:742:0xC1/0x81
+
+# & Potion~ of Learning
+K:743:0xC1/0x82
+
+# [Eye of Sauron]
+K:744:0xC1/0x83
+
+# [Flame of Udun]
+K:745:0xC1/0x84
+
+# [Corruptions of Melkor]
+K:746:0xC1/0x85
+
+# [Crescent of Morgul]
+K:747:0xC1/0x86
+
+# [Morgoth's Ring]
+K:748:0xC1/0x87
+
+# Spell
+K:749:0x86/0x90
+
+# Wishing
+K:750:0x86/0x90
+
+# Khuzdul - The hidden tongue of the Dwarves
+K:751:0x83/0x9D
+
+# Nandorin for dummies
+K:752:0xC1/0x81
+
+# Advanced lessons of Orcish
+K:753:0xC1/0x82
+
+# & Ancient Tome~
+K:754:0xC1/0x86
+
+# Flying
+K:755:0x84/0x88
+
+# & Tome~ of the Time
+K:756:0xC1/0x80
+
+# & Tome~ of Meta Spells
+K:758:0xC1/0x81
+
+# & Tome~ of the Mind
+K:759:0xC1/0x82
+
+# & Holy Tome~ of Eru Iluvatar
+K:760:0xC1/0x83
+
+# & Holy Tome~ of Manwe Sulimo
+K:761:0xC1/0x84
+
+# & War Tome~ of Tulkas
+K:762:0xC1/0x85
+
+# & Unholy Tome~ of the Hellflame
+K:763:0xC1/0x86
+
+# & Corrupted Tome~ of Melkor
+K:764:0xC1/0x87
+
+# [Aiding Shades]
+K:765:0xC1/0x80
+
+# [Morgoth's Space-Time Warpings]
+K:766:0xC1/0x81
+
+# [Murazor's Tome of Conjuring & Dispelling]
+K:767:0xC1/0x82
+
+# & Forest Tome~ of Yavanna
+K:768:0xC1/0x83
+
+# [Sauron's Forgotten Tome]
+K:769:0xC1/0x87
+
+# & Ring~
+K:770:0x84/0x84
+
+# [Earth]
+K:771:0xC1/0x88
+
+# [Fire]
+K:772:0xC1/0x89
+
+# [Air]
+K:773:0xC1/0x8A
+
+# [Water]
+K:774:0xC1/0x8B
+
+# [Mana]
+K:775:0xC1/0x8C
+
+# Home Summoning
+K:776:0x83/0x9F
+
+# & Shadow Blade~
+K:777:0xC1/0x91
+
+# & Bluesteel Blade~
+K:778:0xC1/0x92
+
+# the Serpents
+K:779:0xC4/0x88
+
+# Darkness
+K:780:0xC4/0x89
+
+# Knowledge
+K:781:0xC4/0x8A
+
+# Force
+K:782:0xC4/0x8B
+
+# Lightning
+K:783:0xC4/0x8C
+
+# Mana
+K:784:0xC4/0x8D
+
+# Ring~ of Power
+K:785:0xC4/0x8E
+
+# Climbing Set~
+K:786:0xC1/0x93
+
+# Adventurer's guide to Middle-earth
+K:787:0x83/0x9E
+
+# & Demonblade~
+K:788:0x90/0xA8
+
+# & Demonshield~
+K:789:0x90/0xA9
+
+# & Demonhorn~
+K:790:0x90/0xAA
+
+# [Demonthoughts]
+K:791:0xC1/0x83
+
+# [Hellfire Tome]
+K:792:0xC1/0x94
+
+# & Wooden Rod~ of#
+K:793:0xC1/0x95
+
+# & Copper Rod~ of#
+K:794:0xC1/0x96
+
+# & Iron Rod~ of#
+K:795:0xC1/0x97
+
+# & Moonstone Rod~ of#
+K:796:0xC1/0x98
+
+# & Silver Rod~ of#
+K:797:0xC1/0x99
+
+# & Golden Rod~ of#
+K:798:0xC1/0x9B
+
+# & Mithril Rod~ of#
+K:799:0xC1/0x9C
+
+# & Adamantite Rod~ of#
+K:800:0xC1/0x9D
+
+# & Greater Ration~ of Health
+K:801:0xC4/0x87
+
+# & Crumpled Scroll~ of Mass Resurrection
+K:802:0x83/0x9E
+
+# & Cleaver~
+K:803:0xC4/0x82
+
+# & Light War Axe~
+K:804:0xC4/0x83
+
+# & Slaughter Axe~
+K:805:0xC4/0x84
+
+# & Runestone~
+K:806:0xC4/0x85
+
+# & Fortune cookie~
+K:807:0xC6/0x86
+
+# Portable hole
+K:808:0xC6/0x89
+
+# Critical Hits
+K:809:0xC6/0x9C
+
+# & Wand~ of Digging of Thrain
+K:810:0xC6/0x9C
+
+# & Gnarled Staff~ of Holy Fire of Mithrandir
+K:811:0xC6/0x9C
+
+# Partial Totem
+K:812:0xC6/0x9D
+
+# True Totem
+K:813:0xC6/0x9E
+
+# Player
+R:0:0x8E/0x80
+
+# Filthy street urchin
+R:1:0xAA/0x80
+
+# Scrawny cat
+R:2:0xA7/0x82
+
+# Sparrow
+R:3:0xB4/0x9E
+
+# Chaffinch
+R:4:0xB4/0x9E
+
+# Wild rabbit
+R:5:0xB4/0x9F
+
+# Woodsman
+R:6:0xAA/0x91
+
+# Scruffy little dog
+R:7:0x9D/0x9A
+
+# Farmer Maggot
+R:8:0xAA/0x81
+
+# Blubbering idiot
+R:9:0xAA/0x82
+
+# Boil-covered wretch
+R:10:0xAA/0x83
+
+# Village idiot
+R:11:0xAA/0x84
+
+# Pitiful-looking beggar
+R:12:0xAA/0x85
+
+# Mangy-looking leper
+R:13:0xAA/0x86
+
+# Agent of the black market
+R:14:0xAA/0x87
+
+# Singing, happy drunk
+R:15:0xAA/0x88
+
+# Aimless-looking merchant
+R:16:0xAA/0x89
+
+# Mean-looking mercenary
+R:17:0xAA/0x8A
+
+# Battle-scarred veteran
+R:18:0xAA/0x8B
+
+# Martti Ihrasaari
+R:19:0xB0/0x80
+
+# Grey mold
+R:20:0xA8/0x9F
+
+# Large white snake
+R:21:0xA2/0x85
+
+# Grey mushroom patch
+R:22:0xB0/0x81
+
+# Newt
+R:23:0xB0/0x82
+
+# Giant white centipede
+R:24:0xA5/0x95
+
+# White icky thing
+R:25:0xA8/0x83
+
+# Clear icky thing
+R:26:0xA8/0x84
+
+# Giant white mouse
+R:27:0xAC/0x85
+
+# Large brown snake
+R:28:0xA2/0x84
+
+# Small kobold
+R:29:0xA8/0x99
+
+# Kobold
+R:30:0xA8/0x9A
+
+# White worm mass
+R:31:0xAC/0x9D
+
+# Floating eye
+R:32:0xA6/0x9B
+
+# Rock lizard
+R:33:0xA2/0x86
+
+# Grid bug
+R:34:0xB0/0x84
+
+# Jackal
+R:35:0x9D/0x9B
+
+# Soldier ant
+R:36:0xA5/0x87
+
+# Fruit bat
+R:37:0xA5/0x8F
+
+# Insect swarm
+R:38:0xB5/0x9E
+
+# The Greater hell-beast
+R:39:0xB0/0x83
+
+# Shrieker mushroom patch
+R:40:0x9D/0x86
+
+# Blubbering icky thing
+R:41:0xA8/0x85
+
+# Metallic green centipede
+R:42:0xA5/0x96
+
+# Novice warrior
+R:43:0xAA/0x8C
+
+# Novice rogue
+R:44:0xAA/0x8D
+
+# Novice priest
+R:45:0xAA/0x8E
+
+# Novice mage
+R:46:0xAA/0x8F
+
+# Yellow mushroom patch
+R:47:0x9D/0x87
+
+# White jelly
+R:48:0xA8/0x8A
+
+# Giant black ant
+R:49:0xA5/0x88
+
+# Salamander
+R:50:0xA2/0x88
+
+# White harpy
+R:51:0xA0/0x88
+
+# Blue yeek
+R:52:0xAD/0x87
+
+# Grip, Farmer Maggot's dog
+R:53:0x9D/0x9C
+
+# Wolf, Farmer Maggot's dog
+R:54:0x9D/0x9D
+
+# Fang, Farmer Maggot's dog
+R:55:0x9D/0x9D
+
+# Giant green frog
+R:56:0xA2/0x87
+
+# Freesia
+R:57:0xB0/0x85
+
+# Green worm mass
+R:58:0xAC/0x9E
+
+# Large yellow snake
+R:59:0xA2/0x89
+
+# Cave spider
+R:60:0xA2/0x9D
+
+# Crow
+R:61:0xB5/0x9F
+
+# Wild cat
+R:62:0xA7/0x83
+
+# Smeagol
+R:63:0xAA/0x90
+
+# Green ooze
+R:64:0xA8/0x8B
+
+# Poltergeist
+R:65:0x9F/0x99
+
+# Yellow jelly
+R:66:0xA8/0x8D
+
+# Metallic blue centipede
+R:67:0xA5/0x97
+
+# Raven
+R:68:0xB5/0x9F
+
+# Giant white louse
+R:69:0xA8/0x9D
+
+# Giant yellow centipede
+R:70:0xA5/0x94
+
+# Black naga
+R:71:0xA9/0x88
+
+# Spotted mushroom patch
+R:72:0x9D/0x88
+
+# Silver jelly
+R:73:0xA8/0x8C
+
+# Scruffy-looking hobbit
+R:74:0xA7/0x93
+
+# Giant white ant
+R:75:0xA5/0x89
+
+# Yellow mold
+R:76:0xA9/0x80
+
+# Metallic red centipede
+R:77:0xA5/0x98
+
+# Yellow worm mass
+R:78:0xAC/0x9F
+
+# Clear worm mass
+R:79:0xAD/0x80
+
+# Radiation eye
+R:80:0xA6/0x9C
+
+# Yellow light
+R:81:0xB8/0x93
+
+# Cave lizard
+R:82:0xA2/0x8A
+
+# Novice ranger
+R:83:0xAA/0x91
+
+# Blue jelly
+R:84:0xA8/0x8E
+
+# Creeping copper coins
+R:85:0x9D/0x80
+
+# Giant white rat
+R:86:0xAC/0x86
+
+# Snotling
+R:87:0xB9/0x89
+
+# Swordfish
+R:88:0xB6/0x9E
+
+# Blue worm mass
+R:89:0xAD/0x81
+
+# Large grey snake
+R:90:0xA2/0x8B
+
+# Skeleton kobold
+R:91:0xAC/0x89
+
+# Ewok
+R:92:0xB0/0x86
+
+# Novice mage
+R:93:0xAA/0x8F
+
+# Green naga
+R:94:0xA9/0x89
+
+# Giant leech
+R:95:0xB8/0x94
+
+# Barracuda
+R:96:0xB6/0x9F
+
+# Novice paladin
+R:97:0xAA/0x92
+
+# Zog
+R:98:0xA1/0x80
+
+# Blue ooze
+R:99:0xA8/0x8F
+
+# Green glutton ghost
+R:100:0x9F/0x9A
+
+# Green jelly
+R:101:0xA8/0x90
+
+# Large kobold
+R:102:0xA8/0x9B
+
+# Grey icky thing
+R:103:0xA8/0x86
+
+# Disenchanter eye
+R:104:0xA6/0x9D
+
+# Red worm mass
+R:105:0xAD/0x82
+
+# Copperhead snake
+R:106:0xA2/0x8C
+
+# Death sword
+R:107:0xB0/0x87
+
+# Purple mushroom patch
+R:108:0x9D/0x89
+
+# Novice priest
+R:109:0xAA/0x8E
+
+# Novice warrior
+R:110:0xAA/0x8C
+
+# Nibelung
+R:111:0xB0/0x88
+
+# The disembodied hand that strangled people
+R:112:0xB0/0x89
+
+# Brown mold
+R:113:0xA9/0x81
+
+# Giant brown bat
+R:114:0xA5/0x90
+
+# Rat-thing
+R:115:0xAC/0x88
+
+# Novice rogue
+R:116:0xAA/0x87
+
+# Creeping silver coins
+R:117:0x9D/0x81
+
+# Snaga
+R:118:0xA9/0x8E
+
+# Rattlesnake
+R:119:0xA2/0x8D
+
+# Giant slug
+R:120:0xB8/0x94
+
+# Giant pink frog
+R:121:0xB8/0x95
+
+# Dark elf
+R:122:0x92/0x94
+
+# Zombified kobold
+R:123:0xAC/0x89
+
+# Crypt creep
+R:124:0xB0/0x8A
+
+# Rotting corpse
+R:125:0xB0/0x8B
+
+# Cave orc
+R:126:0xA9/0x8F
+
+# Wood spider
+R:127:0xA2/0x9E
+
+# Manes
+R:128:0xA0/0x91
+
+# Bloodshot eye
+R:129:0xA6/0x9E
+
+# Red naga
+R:130:0xA9/0x8A
+
+# Red jelly
+R:131:0xA8/0x91
+
+# Green icky thing
+R:132:0xA8/0x87
+
+# Lost soul
+R:133:0x9F/0x9B
+
+# Night lizard
+R:134:0xA2/0x8F
+
+# Mughash, the Kobold Lord
+R:135:0xA8/0x9C
+
+# Skeleton orc
+R:136:0xAC/0x8A
+
+# Wormtongue, Agent of Saruman
+R:137:0xAA/0x98
+
+# Robin Hood, the Outlaw
+R:138:0xB0/0x8C
+
+# Nurgling
+R:139:0xB8/0x97
+
+# Lagduf, the Snaga
+R:140:0xA9/0x90
+
+# Brown yeek
+R:141:0xAD/0x88
+
+# Novice ranger
+R:142:0xAA/0x91
+
+# Giant salamander
+R:143:0xA2/0x90
+
+# Space monster
+R:144:0xB0/0x8D
+
+# Carnivorous flying monkey
+R:145:0xB8/0x98
+
+# Green mold
+R:146:0xA9/0x82
+
+# Novice paladin
+R:147:0xAA/0x92
+
+# Lemure
+R:148:0xA0/0x92
+
+# Hill orc
+R:149:0xA9/0x91
+
+# Bandit
+R:150:0xAA/0x9B
+
+# Hunting hawk
+R:151:0xB0/0x8E
+
+# Phantom warrior
+R:152:0xB0/0x8F
+
+# Gremlin
+R:153:0xB0/0x90
+
+# Yeti
+R:154:0xA4/0x91
+
+# Bloodshot icky thing
+R:155:0xA8/0x88
+
+# Giant grey rat
+R:156:0xAC/0x87
+
+# Black harpy
+R:157:0xA0/0x89
+
+# Skaven
+R:158:0xB8/0x99
+
+# The wounded bear
+R:159:0xBA/0x80
+
+# Cave bear
+R:160:0xC4/0x8F
+
+# Rock mole
+R:161:0xBA/0x82
+
+# Mindcrafter
+R:162:0xAA/0x93
+
+# Baby blue dragon
+R:163:0xA5/0x9D
+
+# Baby white dragon
+R:164:0xA5/0x9E
+
+# Baby green dragon
+R:165:0xA5/0x9F
+
+# Baby black dragon
+R:166:0xA6/0x80
+
+# Baby red dragon
+R:167:0xA6/0x81
+
+# Giant red ant
+R:168:0xA5/0x8D
+
+# Brodda, the Easterling
+R:169:0xAA/0x9C
+
+# Bloodfang, the Wolf
+R:170:0xBA/0x83
+
+# King cobra
+R:171:0xA2/0x91
+
+# Eagle
+R:172:0xB4/0x9E
+
+# War bear
+R:173:0xB0/0x91
+
+# Killer bee
+R:174:0xB0/0x92
+
+# Giant spider
+R:175:0xA2/0x9F
+
+# Giant white tick
+R:176:0xA8/0x9D
+
+# The Borshin
+R:177:0xBA/0x84
+
+# Dark elven mage
+R:178:0xA7/0x96
+
+# Kamikaze yeek
+R:179:0xBA/0x94
+
+# Orfax, Son of Boldor
+R:180:0xAD/0x89
+
+# Servant of Glaaki
+R:181:0xBA/0x85
+
+# Dark elven warrior
+R:182:0xA7/0x97
+
+# Sand-dweller
+R:183:0xBA/0x86
+
+# Clear mushroom patch
+R:184:0xB8/0x96
+
+# Quiver slot
+R:185:0xB0/0x93
+
+# Grishnakh, the Hill Orc
+R:186:0xA9/0x93
+
+# Giant tan bat
+R:187:0xC4/0x90
+
+# Owlbear
+R:188:0xBA/0x87
+
+# Blue horror
+R:189:0xB8/0x9A
+
+# Hairy mold
+R:190:0xA9/0x83
+
+# Grizzly bear
+R:191:0xBA/0x88
+
+# Disenchanter mold
+R:192:0xA9/0x84
+
+# Pseudo dragon
+R:193:0xA6/0x82
+
+# Tengu
+R:194:0xA0/0x93
+
+# Creeping gold coins
+R:195:0x9D/0x82
+
+# Wolf
+R:196:0x9D/0x9E
+
+# Giant fruit fly
+R:197:0x9F/0x91
+
+# Panther
+R:198:0xA7/0x84
+
+# Brigand
+R:199:0xB0/0x94
+
+# Hobbes the Tiger
+R:200:0xB0/0x95
+
+# Shadow Creature of Fiona
+R:201:0xB0/0x96
+
+# Undead mass
+R:202:0xB0/0x97
+
+# Chaos shapechanger
+R:203:0xB0/0x98
+
+# Baby multi-hued dragon
+R:204:0xA6/0x83
+
+# Vorpal bunny
+R:205:0xB4/0x9F
+
+# Old Man Willow
+R:206:0xBA/0x89
+
+# Hippocampus
+R:207:0xBA/0x8A
+
+# Zombified orc
+R:208:0xAC/0x8C
+
+# Hippogriff
+R:209:0xA0/0x8A
+
+# Black mamba
+R:210:0xA2/0x92
+
+# White wolf
+R:211:0x9D/0x9F
+
+# Grape jelly
+R:212:0xA8/0x92
+
+# Nether worm mass
+R:213:0xAD/0x83
+
+# Abyss worm mass
+R:214:0xB0/0x99
+
+# Golfimbul, the Hill Orc Chief
+R:215:0xA9/0x94
+
+# Swordsman
+R:216:0x97/0x81
+
+# Skaven shaman
+R:217:0x9A/0x84
+
+# Baby bronze dragon
+R:218:0xA6/0x82
+
+# Baby gold dragon
+R:219:0xA6/0x82
+
+# Evil eye
+R:220:0xC4/0x91
+
+# Mine-dog
+R:221:0xB9/0x8B
+
+# Hellcat
+R:222:0xB0/0x9A
+
+# Moon beast
+R:223:0xB0/0x9B
+
+# Master yeek
+R:224:0xAD/0x8A
+
+# Priest
+R:225:0xAA/0x9E
+
+# Dark elven priest
+R:226:0xA7/0x99
+
+# Air spirit
+R:227:0x9E/0x9F
+
+# Skeleton human
+R:228:0xAC/0x8B
+
+# Zombified human
+R:229:0xAD/0x8E
+
+# Tiger
+R:230:0xA7/0x85
+
+# Moaning spirit
+R:231:0x9F/0x9C
+
+# Stegocentipede
+R:232:0xA5/0x99
+
+# Spotted jelly
+R:233:0xA8/0x93
+
+# Drider
+R:234:0xA3/0x80
+
+# Mongbat
+R:235:0xB0/0x9C
+
+# Killer brown beetle
+R:236:0xA0/0x9B
+
+# Boldor, King of the Yeeks
+R:237:0xAD/0x8B
+
+# Ogre
+R:238:0xA1/0x8B
+
+# Creeping mithril coins
+R:239:0x9D/0x83
+
+# Illusionist
+R:240:0xAB/0x80
+
+# Druid
+R:241:0xAB/0x81
+
+# Pink horror
+R:242:0xB8/0x9B
+
+# Cloaker
+R:243:0x89/0x88
+
+# Black orc
+R:244:0xA9/0x95
+
+# Ochre jelly
+R:245:0xA8/0x94
+
+# Software bug
+R:246:0xB0/0x9D
+
+# Lurker
+R:247:0x80/0x81
+
+# Tangleweed
+R:248:0xC4/0x92
+
+# Vlasta
+R:249:0xA5/0x84
+
+# Giant white dragon fly
+R:250:0x9F/0x93
+
+# Snaga sapper
+R:251:0xB9/0x8C
+
+# Blue icky thing
+R:252:0xA8/0x89
+
+# Gibbering mouther
+R:253:0xB0/0x9E
+
+# Wolfhound of Flora
+R:254:0xB0/0x9F
+
+# Hill giant
+R:255:0xA1/0x91
+
+# Flesh golem
+R:256:0xA7/0x89
+
+# Warg
+R:257:0x9E/0x80
+
+# Cheerful leprechaun
+R:258:0xB1/0x80
+
+# Giant flea
+R:259:0x9F/0x92
+
+# Ufthak of Cirith Ungol
+R:260:0xBA/0x8C
+
+# Clay golem
+R:261:0xB8/0x9D
+
+# Black ogre
+R:262:0xA1/0x8C
+
+# Dweller on the threshold
+R:263:0xB9/0x8D
+
+# Half-orc
+R:264:0xBA/0x8D
+
+# Dark naga
+R:265:0xB8/0x9E
+
+# Poison ivy
+R:266:0xC4/0x93
+
+# Magic mushroom patch
+R:267:0x9D/0x8B
+
+# Plaguebearer of Nurgle
+R:268:0xAD/0x8D
+
+# Guardian naga
+R:269:0xA9/0x8B
+
+# Wererat
+R:270:0xBA/0x8E
+
+# Light hound
+R:271:0xA4/0x93
+
+# Dark hound
+R:272:0xA4/0x94
+
+# Flying skull
+R:273:0xB1/0x81
+
+# Mi-Go
+R:274:0xB1/0x82
+
+# Giant tarantula
+R:275:0xA3/0x81
+
+# Giant clear centipede
+R:276:0xA5/0x9A
+
+# Mirkwood spider
+R:277:0xA3/0x82
+
+# Frost giant
+R:278:0xA1/0x92
+
+# Griffon
+R:279:0xA0/0x8B
+
+# Homunculus
+R:280:0xA0/0x94
+
+# Gnome mage
+R:281:0xA7/0x98
+
+# Clear hound
+R:282:0xA4/0x95
+
+# Umber hulk
+R:283:0xA3/0x99
+
+# Rust monster
+R:284:0xB9/0x8F
+
+# Ogrillon
+R:285:0xA9/0x98
+
+# Gelatinous cube
+R:286:0xA8/0x95
+
+# Giant green dragon fly
+R:287:0x9F/0x94
+
+# Fire giant
+R:288:0xA1/0x93
+
+# Hummerhorn
+R:289:0xBA/0x8F
+
+# Lizard man
+R:290:0xB9/0x90
+
+# Ulfast, Son of Ulfang
+R:291:0xAB/0x82
+
+# Crebain
+R:292:0xC4/0x94
+
+# Berserker
+R:293:0xA9/0x97
+
+# Quasit
+R:294:0xA0/0x95
+
+# Sphinx
+R:295:0xB9/0x91
+
+# Imp
+R:296:0xA0/0x96
+
+# Forest troll
+R:297:0xA3/0x89
+
+# Freezing sphere
+R:298:0xBA/0x91
+
+# Jumping fireball
+R:299:0xB9/0x92
+
+# Ball lightning
+R:300:0xBA/0x92
+
+# 2-headed hydra
+R:301:0xA2/0x93
+
+# Swamp thing
+R:302:0xB9/0x93
+
+# Water spirit
+R:303:0x9F/0x80
+
+# Giant red scorpion
+R:304:0xA3/0x83
+
+# Earth spirit
+R:305:0x9F/0x81
+
+# Fire spirit
+R:306:0x9F/0x82
+
+# Fire hound
+R:307:0xA4/0x96
+
+# Cold hound
+R:308:0xA4/0x97
+
+# Energy hound
+R:309:0xA4/0x98
+
+# Lesser Mimic
+R:310:0x9D/0x8E
+
+# Door mimic
+R:311:0x82/0x83
+
+# Blink dog
+R:312:0x9E/0x81
+
+# Uruk
+R:313:0xA9/0x99
+
+# Shagrat, the Orc Captain
+R:314:0xA9/0x9A
+
+# Gorbag, the Orc Captain
+R:315:0xA9/0x9B
+
+# Shambling mound
+R:316:0x9D/0x8C
+
+# Giant Venus Flytrap
+R:317:0xC4/0x95
+
+# Chaos beastman
+R:318:0xB9/0x95
+
+# Daemonette of Slaanesh
+R:319:0xB9/0x94
+
+# Giant bronze dragon fly
+R:320:0x9F/0x98
+
+# Stone giant
+R:321:0xA1/0x94
+
+# Giant black dragon fly
+R:322:0x9F/0x96
+
+# Stone golem
+R:323:0xA7/0x8B
+
+# Red mold
+R:324:0xA9/0x85
+
+# Giant gold dragon fly
+R:325:0x9F/0x97
+
+# Stunwall
+R:326:0x80/0x93
+
+# Ghast
+R:327:0xBA/0x95
+
+# Neekerbreeker
+R:328:0xC4/0x96
+
+# Huorn
+R:329:0xBA/0x96
+
+# Bolg, Son of Azog
+R:330:0xA9/0x9C
+
+# Phase spider
+R:331:0xA3/0x84
+
+# Lizard king
+R:332:0xB9/0x97
+
+# Landmine
+R:333:0xBA/0x97
+
+# Wyvern
+R:334:0xB1/0x83
+
+# Great eagle
+R:335:0xB9/0x98
+
+# Livingstone
+R:336:0xB1/0x84
+
+# Earth hound
+R:337:0xA4/0x99
+
+# Air hound
+R:338:0xA4/0x9A
+
+# Sabre-tooth tiger
+R:339:0xA7/0x86
+
+# Acid hound
+R:340:0xA4/0x9B
+
+# Chimaera
+R:341:0xA0/0x8C
+
+# Quylthulg
+R:342:0xA1/0x9A
+
+# Sasquatch
+R:343:0xA4/0x92
+
+# Weir
+R:344:0xB1/0x85
+
+# Ranger
+R:345:0xAA/0x97
+
+# Paladin
+R:346:0xAB/0x92
+
+# Werewolf
+R:347:0xBA/0x99
+
+# Dark elven lord
+R:348:0xA7/0x9C
+
+# Cloud giant
+R:349:0xA1/0x96
+
+# Ugluk, the Uruk
+R:350:0xA9/0x9D
+
+# Blue dragon bat
+R:351:0xA5/0x91
+
+# Mimic
+R:352:0x83/0x9D
+
+# Ultimate Mimic
+R:353:0x84/0x9E
+
+# Fire vortex
+R:354:0xAC/0x94
+
+# Acid vortex
+R:355:0xAC/0x95
+
+# Lugdush, the Uruk
+R:356:0xB9/0x9A
+
+# Arch-vile
+R:357:0xBA/0x9A
+
+# Cold vortex
+R:358:0xAC/0x96
+
+# Energy vortex
+R:359:0xAC/0x97
+
+# Globefish
+R:360:0xB9/0x9B
+
+# Giant firefly
+R:361:0x9F/0x95
+
+# Mummified orc
+R:362:0xA1/0x88
+
+# Wolf chieftain
+R:363:0xC4/0x97
+
+# Serpent man
+R:364:0xBA/0x9C
+
+# Vampiric mist
+R:365:0xB9/0x9D
+
+# Killer stag beetle
+R:366:0xA0/0x9D
+
+# Iron golem
+R:367:0xA7/0x8C
+
+# Auto-roller
+R:368:0xB1/0x86
+
+# Giant yellow scorpion
+R:369:0xA3/0x85
+
+# Jade monk
+R:370:0xBA/0x9D
+
+# Black ooze
+R:371:0xA8/0x96
+
+# Hardened warrior
+R:372:0xAB/0x83
+
+# Azog, King of the Uruk-Hai
+R:373:0xA9/0x9F
+
+# Fleshhound of Khorne
+R:374:0xB9/0x9E
+
+# Dark elven warlock
+R:375:0xB1/0x87
+
+# Master rogue
+R:376:0xAB/0x84
+
+# Red dragon bat
+R:377:0xA5/0x92
+
+# Killer white beetle
+R:378:0xBA/0x9E
+
+# Ice skeleton
+R:379:0xB9/0x9F
+
+# Angamaite of Umbar
+R:380:0xBB/0x80
+
+# Forest wight
+R:381:0xB1/0x88
+
+# Khim, Son of Mim
+R:382:0xB1/0x89
+
+# Ibun, Son of Mim
+R:383:0xB1/0x8A
+
+# Meneldor the Swift
+R:384:0xBB/0x81
+
+# Phantom beast
+R:385:0xB1/0x8B
+
+# Giant silver ant
+R:386:0xA0/0x9C
+
+# 4-headed hydra
+R:387:0xA2/0x95
+
+# Lesser hell-beast
+R:388:0xBB/0x83
+
+# Tyrannosaur
+R:389:0xB1/0x8C
+
+# Mummified human
+R:390:0xA1/0x89
+
+# Vampire bat
+R:391:0xA5/0x93
+
+# Sangahyando of Umbar
+R:392:0xAB/0x85
+
+# It
+R:393:0xB1/0x8D
+
+# Banshee
+R:394:0x9F/0x9D
+
+# Carrion crawler
+R:395:0xA5/0x9B
+
+# Xiclotlan
+R:396:0xBB/0x84
+
+# Silent watcher
+R:397:0xB1/0x8E
+
+# Pukelman
+R:398:0xA7/0x8D
+
+# Disenchanter beast
+R:399:0xBA/0x9F
+
+# Dark elven druid
+R:400:0xA7/0x9F
+
+# Stone troll
+R:401:0xA3/0x8A
+
+# Black
+R:402:0xB0/0x8D
+
+# Hill troll
+R:403:0xA3/0x8B
+
+# Wereworm
+R:404:0xAD/0x84
+
+# Killer red beetle
+R:405:0xA0/0x9F
+
+# Disenchanter bat
+R:406:0xC4/0x98
+
+# Gnoph-Keh
+R:407:0xBB/0x86
+
+# Giant grey ant
+R:408:0xA5/0x8C
+
+# Khufu, the Mummified King
+R:409:0xB1/0x8F
+
+# Gwaihir the Windlord
+R:410:0xBB/0x81
+
+# Giant fire tick
+R:411:0xBB/0x87
+
+# Displacer beast
+R:412:0xA7/0x87
+
+# Ulwarth, Son of Ulfang
+R:413:0xAA/0x99
+
+# Werebear
+R:414:0xC4/0x8F
+
+# Cave ogre
+R:415:0xA1/0x8D
+
+# White wraith
+R:416:0xA3/0x9F
+
+# Angel
+R:417:0x9D/0x8F
+
+# Ghoul
+R:418:0xB4/0x8F
+
+# Mim, Betrayer of Turin
+R:419:0xB1/0x90
+
+# Hellblade
+R:420:0xB1/0x91
+
+# Killer fire beetle
+R:421:0xA1/0x80
+
+# Beast of Nurgle
+R:422:0xBB/0x88
+
+# Creeping adamantite coins
+R:423:0x9D/0x84
+
+# Algroth
+R:424:0xA3/0x8C
+
+# Flamer of Tzeentch
+R:425:0xB8/0x9F
+
+# Roper
+R:426:0xB9/0x80
+
+# Headless
+R:427:0xB1/0x92
+
+# Vibration hound
+R:428:0xA4/0x9C
+
+# Nexus hound
+R:429:0xA4/0x9D
+
+# Half-ogre
+R:430:0xA1/0x8E
+
+# Lokkak, the Ogre Chieftain
+R:431:0xA1/0x90
+
+# Vampire
+R:432:0xA3/0x9A
+
+# Gorgimaera
+R:433:0xA0/0x8D
+
+# Shantak
+R:434:0xB1/0x93
+
+# Colbran
+R:435:0xA7/0x8E
+
+# Spirit naga
+R:436:0xA9/0x8C
+
+# Corpser
+R:437:0xB9/0x81
+
+# Fiend of Slaanesh
+R:438:0xA2/0x97
+
+# Stairway to Hell
+R:439:0xB1/0x94
+
+# 5-headed hydra
+R:440:0xA2/0x96
+
+# Barney the Dinosaur
+R:441:0xB1/0x95
+
+# Black knight
+R:442:0xAB/0x88
+
+# Seahorse
+R:443:0xBB/0x89
+
+# Cyclops
+R:444:0xBB/0x8A
+
+# Clairvoyant
+R:445:0xAB/0x86
+
+# Purple worm
+R:446:0xB9/0x82
+
+# Catoblepas
+R:447:0xAC/0x81
+
+# Lesser wall monster
+R:448:0xB1/0x96
+
+# Mage
+R:449:0xAB/0x8A
+
+# Mind flayer
+R:450:0xAB/0x8B
+
+# The Ultimate Dungeon Cleaner
+R:451:0xB1/0x97
+
+# Deep one
+R:452:0xA4/0x86
+
+# Basilisk
+R:453:0xA2/0x97
+
+# Ice troll
+R:454:0xA3/0x8D
+
+# Dhole
+R:455:0xB1/0x99
+
+# Archangel
+R:456:0x9D/0x90
+
+# Greater Mimic
+R:457:0xAD/0x9E
+
+# Chaos tile
+R:458:0xB1/0x9A
+
+# Young blue dragon
+R:459:0xA6/0x84
+
+# Young white dragon
+R:460:0xA6/0x85
+
+# Young green dragon
+R:461:0xA6/0x86
+
+# Young bronze dragon
+R:462:0xA6/0x87
+
+# Aklash
+R:463:0xC1/0x9E
+
+# Mithril golem
+R:464:0xA7/0x8F
+
+# Skeleton troll
+R:465:0xAC/0x8D
+
+# Skeletal tyrannosaur
+R:466:0xBB/0x8B
+
+# Beorn, the Shape-Changer
+R:467:0xC4/0x99
+
+# Thorondor, Lord of Eagles
+R:468:0xBB/0x81
+
+# Giant blue ant
+R:469:0xA5/0x8B
+
+# Grave wight
+R:470:0xAD/0x9C
+
+# Shadow drake
+R:471:0xA6/0x88
+
+# Manticore
+R:472:0xA0/0x8E
+
+# Giant army ant
+R:473:0xAE/0x81
+
+# Killer slicer beetle
+R:474:0xA1/0x81
+
+# Gorgon
+R:475:0xBB/0x8D
+
+# Gug
+R:476:0xBB/0x8E
+
+# Ghost
+R:477:0x9F/0x9E
+
+# Death watch beetle
+R:478:0xA1/0x82
+
+# Mountain ogre
+R:479:0xA1/0x8F
+
+# Nexus quylthulg
+R:480:0xA1/0x9B
+
+# Shelob, Spider of Darkness
+R:481:0xA3/0x86
+
+# Giant squid
+R:482:0xB9/0x83
+
+# Ghoulking
+R:483:0xAD/0x8C
+
+# Doombat
+R:484:0xB9/0x84
+
+# Ninja
+R:485:0xAB/0x8C
+
+# Memory moss
+R:486:0xA9/0x86
+
+# Storm giant
+R:487:0xA1/0x95
+
+# Spectator
+R:488:0xB1/0x9B
+
+# Bokrug
+R:489:0xBB/0x8F
+
+# Biclops
+R:490:0xBB/0x90
+
+# Half-troll
+R:491:0xA9/0x9E
+
+# Ivory monk
+R:492:0xAA/0x93
+
+# Bert the Stone Troll
+R:493:0xA3/0x90
+
+# Bill the Stone Troll
+R:494:0xA3/0x91
+
+# Tom the Stone Troll
+R:495:0xA3/0x92
+
+# Cave troll
+R:496:0xA3/0x8E
+
+# Anti-paladin
+R:497:0xB1/0x9C
+
+# Chaos master
+R:498:0xB1/0x9D
+
+# Barrow wight
+R:499:0xA4/0x81
+
+# Skeleton ettin
+R:500:0xC4/0x9A
+
+# Chaos drake
+R:501:0xA6/0x89
+
+# Law drake
+R:502:0xA6/0x8A
+
+# Balance drake
+R:503:0xA6/0x8B
+
+# Ethereal drake
+R:504:0xA6/0x8C
+
+# Groo, the Wanderer
+R:505:0xB1/0x9E
+
+# Fasolt the Giant
+R:506:0xB1/0x9F
+
+# Shade
+R:507:0xA4/0x89
+
+# Spectre
+R:508:0xA0/0x80
+
+# Water troll
+R:509:0xA3/0x93
+
+# Fire elemental
+R:510:0x9F/0x83
+
+# Cherub
+R:511:0x9D/0x91
+
+# Water elemental
+R:512:0x9F/0x84
+
+# Multi-hued hound
+R:513:0xB2/0x81
+
+# Invisible stalker
+R:514:0x9F/0x85
+
+# Carrion crawler
+R:515:0xA5/0x9C
+
+# Master thief
+R:516:0xAB/0x8E
+
+# The Watcher in the Water
+R:517:0xAF/0x95
+
+# Lich
+R:518:0xA1/0x83
+
+# Gas spore
+R:519:0xB2/0x8E
+
+# Master vampire
+R:520:0xA3/0x9B
+
+# Oriental vampire
+R:521:0xB2/0x83
+
+# Greater mummy
+R:522:0xA1/0x8A
+
+# Bloodletter of Khorne
+R:523:0xA0/0x98
+
+# Giant grey scorpion
+R:524:0xA3/0x87
+
+# Earth elemental
+R:525:0x9F/0x86
+
+# Air elemental
+R:526:0x9F/0x87
+
+# Shimmering mold
+R:527:0xAF/0x81
+
+# Gargoyle
+R:528:0xBB/0x91
+
+# Malicious leprechaun
+R:529:0xB2/0x85
+
+# Eog golem
+R:530:0xA7/0x90
+
+# Little Boy
+R:531:0xB9/0x85
+
+# Dagashi
+R:532:0xAB/0x90
+
+# Headless ghost
+R:533:0xBB/0x92
+
+# Dread
+R:534:0xB9/0x87
+
+# Leng spider
+R:535:0xBB/0x93
+
+# Gauth
+R:536:0xC4/0x9B
+
+# Smoke elemental
+R:537:0x9F/0x90
+
+# Olog
+R:538:0xA3/0x94
+
+# Halfling slinger
+R:539:0xB2/0x86
+
+# Gravity hound
+R:540:0xA4/0x9E
+
+# Acidic cytoplasm
+R:541:0xA8/0x97
+
+# Inertia hound
+R:542:0xA4/0x9F
+
+# Impact hound
+R:543:0xA5/0x80
+
+# Shardstorm
+R:544:0xC4/0x9C
+
+# Ooze elemental
+R:545:0x9F/0x88
+
+# Young black dragon
+R:546:0xA6/0x8D
+
+# Mumak
+R:547:0xAC/0x84
+
+# Giant fire ant
+R:548:0xA5/0x8A
+
+# Mature white dragon
+R:549:0xA6/0x8E
+
+# Xorn
+R:550:0xA4/0x8F
+
+# Rogrog the Black Troll
+R:551:0xA3/0x8F
+
+# Mist giant
+R:552:0xA7/0x91
+
+# Phantom
+R:553:0xB2/0x87
+
+# Grey wraith
+R:554:0xA4/0x82
+
+# Revenant
+R:555:0xA4/0x88
+
+# Young multi-hued dragon
+R:556:0xA6/0x8F
+
+# Raal's Tome of Destruction
+R:557:0xB2/0x88
+
+# Colossus
+R:558:0xB2/0x89
+
+# Young gold dragon
+R:559:0xA6/0x90
+
+# Mature blue dragon
+R:560:0xA6/0x91
+
+# Mature green dragon
+R:561:0xA6/0x92
+
+# Mature bronze dragon
+R:562:0xA6/0x93
+
+# Young red dragon
+R:563:0xA6/0x94
+
+# Nightblade
+R:564:0xB2/0x8A
+
+# Trapper
+R:565:0xAD/0x9F
+
+# Bodak
+R:566:0xA0/0x98
+
+# Time bomb
+R:567:0xBB/0x96
+
+# Mezzodaemon
+R:568:0xAD/0x90
+
+# Elder thing
+R:569:0xB2/0x8B
+
+# Ice elemental
+R:570:0x9F/0x8A
+
+# Necromancer
+R:571:0xB2/0x8C
+
+# The Greater hell magic mushroom were-quylthulg
+R:572:0xB9/0x86
+
+# Lorgan, Chief of the Easterlings
+R:573:0xB2/0x8D
+
+# Chaos spawn
+R:574:0xB2/0x8E
+
+# Mummified troll
+R:575:0xBB/0x97
+
+# Storm of Unmagic
+R:576:0xC4/0x9D
+
+# Crypt thing
+R:577:0xA4/0x80
+
+# Chaos butterfly
+R:578:0xBB/0x98
+
+# Time elemental
+R:579:0xB2/0x8F
+
+# Flying polyp
+R:580:0xBB/0x99
+
+# The Queen Ant
+R:581:0xA5/0x8E
+
+# Will o' the wisp
+R:582:0x9F/0x8B
+
+# Shan
+R:583:0xBB/0x9A
+
+# Magma elemental
+R:584:0x9F/0x8C
+
+# Black pudding
+R:585:0xA8/0x98
+
+# Killer iridescent beetle
+R:586:0xB4/0x90
+
+# Nexus vortex
+R:587:0xAE/0x80
+
+# Plasma vortex
+R:588:0xAC/0x98
+
+# Mature red dragon
+R:589:0xA6/0x95
+
+# Mature gold dragon
+R:590:0xA6/0x96
+
+# Crystal drake
+R:591:0xA6/0x97
+
+# Mature black dragon
+R:592:0xA6/0x98
+
+# Mature multi-hued dragon
+R:593:0xA6/0x99
+
+# Sky whale
+R:594:0xBB/0x9B
+
+# Draebor, the Imp
+R:595:0xC1/0x9F
+
+# Mother Hydra
+R:596:0xA2/0x98
+
+# Death knight
+R:597:0xAB/0x94
+
+# Castamir the Usurper
+R:598:0xB2/0x90
+
+# Time vortex
+R:599:0xAC/0x99
+
+# Shimmering vortex
+R:600:0xAC/0x9A
+
+# Ancient blue dragon
+R:601:0x9E/0x88
+
+# Ancient bronze dragon
+R:602:0x9E/0x89
+
+# Beholder
+R:603:0xA6/0x9F
+
+# Emperor wight
+R:604:0xA4/0x83
+
+# Seraph
+R:605:0x9D/0x92
+
+# Vargo, Tyrant of Fire
+R:606:0x9F/0x8D
+
+# Black wraith
+R:607:0xA4/0x84
+
+# Nightgaunt
+R:608:0xB2/0x91
+
+# Baron of hell
+R:609:0xB2/0x92
+
+# Scylla
+R:610:0xBB/0x9C
+
+# Monastic lich
+R:611:0xA1/0x87
+
+# Nether wraith
+R:612:0xA4/0x85
+
+# Hellhound
+R:613:0xAD/0x96
+
+# 7-headed hydra
+R:614:0xA2/0x99
+
+# Waldern, King of Water
+R:615:0x9F/0x8E
+
+# Kavlax the Many-Headed
+R:616:0xA6/0x9A
+
+# Ancient white dragon
+R:617:0x9E/0x8A
+
+# Ancient green dragon
+R:618:0x9E/0x8B
+
+# Chthonian
+R:619:0xB2/0x93
+
+# Eldrak
+R:620:0xA3/0x97
+
+# Ettin
+R:621:0xA3/0x96
+
+# Night mare
+R:622:0xAC/0x83
+
+# Vampire lord
+R:623:0xA3/0x9C
+
+# Ancient black dragon
+R:624:0x9E/0x8C
+
+# Weird fume
+R:625:0xAF/0x80
+
+# Spawn of Ubbo-Sathla
+R:626:0xBB/0x9D
+
+# Fat Man
+R:627:0xB9/0x85
+
+# Malekith the Accursed
+R:628:0xA7/0x95
+
+# Shadowfax, steed of Gandalf
+R:629:0xBB/0x9E
+
+# Spirit troll
+R:630:0xA3/0x98
+
+# War troll
+R:631:0xB2/0x94
+
+# Disenchanter worm mass
+R:632:0xAD/0x86
+
+# Rotting quylthulg
+R:633:0xA1/0x9C
+
+# Lesser titan
+R:634:0xA1/0x97
+
+# 9-headed hydra
+R:635:0xA2/0x99
+
+# Enchantress
+R:636:0xAB/0x96
+
+# Ranger chieftain
+R:637:0xAB/0x97
+
+# Sorcerer
+R:638:0xAB/0x98
+
+# Xaren
+R:639:0xA4/0x90
+
+# Giant roc
+R:640:0x9D/0x97
+
+# Minotaur
+R:641:0xA0/0x8F
+
+# Medusa, the Gorgon
+R:642:0xA9/0x8D
+
+# Death drake
+R:643:0x9E/0x8D
+
+# Ancient red dragon
+R:644:0x9E/0x8E
+
+# Ancient gold dragon
+R:645:0x9E/0x8F
+
+# Great crystal drake
+R:646:0x9E/0x90
+
+# Wyrd sister
+R:647:0xA7/0x9D
+
+# Vrock
+R:648:0xB2/0x95
+
+# Death quasit
+R:649:0xA0/0x99
+
+# Giganto, the Gargantuan
+R:650:0xBB/0x9F
+
+# Strygalldwir
+R:651:0xB2/0x96
+
+# Fallen angel
+R:652:0xAA/0x8E
+
+# Giant headless
+R:653:0xBC/0x80
+
+# Judge Fire
+R:654:0xAB/0x93
+
+# Ubbo-Sathla, the Unbegotten Source
+R:655:0xBC/0x81
+
+# Judge Mortis
+R:656:0xBC/0x82
+
+# Dark elven sorcerer
+R:657:0xA8/0x81
+
+# Master lich
+R:658:0xA1/0x84
+
+# Byakhee
+R:659:0xB2/0x97
+
+# Eol, the Dark Elf
+R:660:0xB2/0x99
+
+# Archon
+R:661:0x9D/0x93
+
+# Formless spawn of Tsathoggua
+R:662:0xB2/0x9A
+
+# Hunting horror
+R:663:0xB2/0x9B
+
+# Undead beholder
+R:664:0xA7/0x80
+
+# Shadow
+R:665:0xA0/0x81
+
+# Iron lich
+R:666:0xB2/0x9C
+
+# Dread
+R:667:0xB9/0x87
+
+# Greater basilisk
+R:668:0xBC/0x83
+
+# Charybdis
+R:669:0xBC/0x84
+
+# Jack of Shadows
+R:670:0xAB/0x9C
+
+# Zephyr Lord
+R:671:0xAB/0x91
+
+# Juggernaut of Khorne
+R:672:0xBC/0x85
+
+# Mumak
+R:673:0xAC/0x82
+
+# Judge Fear
+R:674:0xA7/0x88
+
+# Ancient multi-hued dragon
+R:675:0x9E/0x91
+
+# Ethereal dragon
+R:676:0x9E/0x92
+
+# Dark young of Shub-Niggurath
+R:677:0xB2/0x9D
+
+# Colour out of space
+R:678:0x91/0x99
+
+# Quaker, Master of Earth
+R:679:0x9F/0x8F
+
+# Death leprechaun
+R:680:0xA7/0x9E
+
+# Chaugnar Faugn, Horror from the Hills
+R:681:0xBC/0x94
+
+# Lloigor
+R:682:0xBC/0x95
+
+# Utgard-Loke
+R:683:0xBC/0x96
+
+# Quachil Uttaus, Treader of the Dust
+R:684:0xBC/0x97
+
+# Shoggoth
+R:685:0xBC/0x98
+
+# Judge Death
+R:686:0xBC/0x99
+
+# Ariel, Queen of Air
+R:687:0x9F/0x91
+
+# 11-headed hydra
+R:688:0xA2/0x9A
+
+# Patriarch
+R:689:0xAB/0x9A
+
+# Dreadmaster
+R:690:0xA0/0x85
+
+# Drolem
+R:691:0xA7/0x92
+
+# Scatha the Worm
+R:692:0xAD/0x9B
+
+# Warrior of the Dawn
+R:693:0xB2/0x9E
+
+# Lesser black reaver
+R:694:0xA4/0x87
+
+# Zoth-Ommog
+R:695:0xBE/0x89
+
+# Grand master thief
+R:696:0xC2/0x8A
+
+# Smaug the Golden
+R:697:0x9E/0x93
+
+# The Stormbringer
+R:698:0xB3/0x80
+
+# Knight Templar
+R:699:0xB3/0x81
+
+# Leprechaun fanatic
+R:700:0xA8/0x80
+
+# Dracolich
+R:701:0x9E/0x95
+
+# Greater titan
+R:702:0xA1/0x98
+
+# Dracolisk
+R:703:0x9E/0x94
+
+# Winged Horror
+R:704:0xC4/0x9E
+
+# Spectral tyrannosaur
+R:705:0xB3/0x82
+
+# Yibb-Tstll, the Patient One
+R:706:0xBC/0x9B
+
+# Ghatanothoa
+R:707:0xBC/0x9C
+
+# Ent
+R:708:0xBC/0x86
+
+# Hru
+R:709:0xBC/0x9D
+
+# Itangast the Fire Drake
+R:710:0x9E/0x96
+
+# Death mold
+R:711:0xA9/0x87
+
+# Fafner the Dragon
+R:712:0xB3/0x83
+
+# Charon, Boatman of the Styx
+R:713:0xBC/0x9E
+
+# Quickbeam, the Ent
+R:714:0xBC/0x9F
+
+# Glaurung, Father of the Dragons
+R:715:0xAD/0x9A
+
+# Behemoth
+R:716:0xBD/0x80
+
+# Garm, Guardian of Hel
+R:717:0x9E/0x84
+
+# Greater wall monster
+R:718:0xB3/0x84
+
+# Nycadaemon
+R:719:0xAD/0x91
+
+# Barbazu
+R:720:0xAD/0x95
+
+# Goat of Mendes
+R:721:0xB3/0x85
+
+# Nightwing
+R:722:0xAD/0x9D
+
+# Maulotaur
+R:723:0xB3/0x86
+
+# Nether hound
+R:724:0xA5/0x81
+
+# Time hound
+R:725:0xA5/0x82
+
+# Plasma hound
+R:726:0xA5/0x83
+
+# Demonic quylthulg
+R:727:0xA1/0x9D
+
+# Great Storm Wyrm
+R:728:0x9E/0x97
+
+# Ulik the Troll
+R:729:0xBD/0x81
+
+# Baphomet the Minotaur Lord
+R:730:0xA0/0x90
+
+# Hell knight
+R:731:0xBD/0x82
+
+# Bull Gates
+R:732:0xB3/0x87
+
+# Santa Claus
+R:733:0xB3/0x88
+
+# Eihort, the Thing in the Labyrinth
+R:734:0xBE/0x8A
+
+# The King in Yellow
+R:735:0xBE/0x8B
+
+# Great unclean one
+R:736:0xBE/0x8C
+
+# Lord of Chaos
+R:737:0xB3/0x89
+
+# Old Sorcerer
+R:738:0x9C/0x8A
+
+# Ethereal hound
+R:739:0xB3/0x8A
+
+# Lesser kraken
+R:740:0xBD/0x83
+
+# Great Ice Wyrm
+R:741:0x9E/0x98
+
+# Demilich
+R:742:0xA4/0x8A
+
+# The Phoenix
+R:743:0x9D/0x98
+
+# Nightcrawler
+R:744:0xA4/0x8C
+
+# Lord of Change
+R:745:0xBC/0x87
+
+# Keeper of Secrets
+R:746:0xBE/0x8D
+
+# Shudde M'ell
+R:747:0xBE/0x8E
+
+# Hand druj
+R:748:0xAC/0x8E
+
+# Eye druj
+R:749:0xAC/0x8F
+
+# Skull druj
+R:750:0xAC/0x90
+
+# Chaos vortex
+R:751:0xAC/0x9B
+
+# Aether vortex
+R:752:0xAC/0x9C
+
+# Nidhogg, the Hel-Drake
+R:753:0xBE/0x8F
+
+# The Lernaean Hydra
+R:754:0xA2/0x9B
+
+# Thuringwethil, the Vampire Messenger
+R:755:0xA3/0x9D
+
+# Great Hell Wyrm
+R:756:0x9E/0x99
+
+# Hastur the Unspeakable
+R:757:0xB3/0x8B
+
+# Bloodthirster
+R:758:0xBD/0x84
+
+# Draconic quylthulg
+R:759:0xA1/0x9E
+
+# Nyogtha, the Thing that Should not Be
+R:760:0xB3/0x8C
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0xBE/0x90
+
+# Fundin Bluecloak
+R:762:0xBE/0x91
+
+# Bile Demon
+R:763:0xC5/0x80
+
+# Uriel, Angel of Fire
+R:764:0x9D/0x94
+
+# Azriel, Angel of Death
+R:765:0x9D/0x95
+
+# Ancalagon the Black
+R:766:0x9E/0x9A
+
+# Daoloth, the Render of the Veils
+R:767:0xBE/0x92
+
+# Nightwalker
+R:768:0xBD/0x85
+
+# Gabriel, the Messenger
+R:769:0x9D/0x96
+
+# Artsi, the Champion of Chaos
+R:770:0xBE/0x93
+
+# Saruman of Many Colours
+R:771:0xAB/0x9E
+
+# Harowen the Black Hand
+R:772:0xBE/0x94
+
+# Osyluth
+R:773:0xC5/0x81
+
+# Dreadlord
+R:774:0xA0/0x86
+
+# Greater kraken
+R:775:0xBD/0x86
+
+# Archlich
+R:776:0xA4/0x8D
+
+# The Cat Lord
+R:777:0xB3/0x8F
+
+# Jabberwock
+R:778:0xC5/0x82
+
+# Chaos hound
+R:779:0xA5/0x85
+
+# Vlad Dracula, Prince of Darkness
+R:780:0xBE/0x95
+
+# Beholder hive-mother
+R:781:0xBE/0x96
+
+# Leviathan
+R:782:0xBD/0x87
+
+# Great Wyrm of Chaos
+R:783:0x9E/0x9B
+
+# Great Wyrm of Law
+R:784:0x9E/0x9C
+
+# Great Wyrm of Balance
+R:785:0x9E/0x9D
+
+# Shambler
+R:786:0xB3/0x91
+
+# Gelugon
+R:787:0xC5/0x83
+
+# Glaaki
+R:788:0xB9/0x88
+
+# T'ron, the Rebel Dragonrider
+R:789:0xB3/0x92
+
+# Great Wyrm of Many Colours
+R:790:0xB3/0x93
+
+# Mardra, rider of the Gold Loranth
+R:791:0xB3/0x94
+
+# Tselakus, the Dreadlord
+R:792:0xA0/0x87
+
+# Sky Drake
+R:793:0xB3/0x95
+
+# Eilinel the Entrapped
+R:794:0xA0/0x83
+
+# Horned Reaper
+R:795:0xC5/0x84
+
+# The Norsa
+R:796:0xB3/0x97
+
+# Rhan-Tegoth
+R:797:0xBE/0x99
+
+# Black reaver
+R:798:0xA1/0x85
+
+# Master mindcrafter
+R:799:0xAB/0x9F
+
+# Greater demonic quylthulg
+R:800:0xA1/0x9F
+
+# Greater draconic quylthulg
+R:801:0xA2/0x80
+
+# Greater rotting quylthulg
+R:802:0xA2/0x81
+
+# Null, the Living Void
+R:803:0xBC/0x88
+
+# Feagwath, the Undead Sorcerer
+R:804:0xA1/0x86
+
+# Omarax the Eye Tyrant
+R:805:0xA7/0x81
+
+# Tsathoggua, the Sleeper of N'kai
+R:806:0xBE/0x9A
+
+# Greater Balrog
+R:807:0xAD/0x93
+
+# Ungoliant, the Unlight
+R:808:0xA3/0x88
+
+# Atlach-Nacha, the Spider God
+R:809:0xB3/0x9A
+
+# Y'golonac
+R:810:0xBE/0x9B
+
+# Aether hound
+R:811:0xA5/0x86
+
+# Pit Fiend
+R:812:0xAD/0x92
+
+# The Serpent of Chaos
+R:813:0xB4/0x8D
+
+# Yig, Father of Serpents
+R:814:0xBE/0x9C
+
+# Unmaker
+R:815:0xB3/0x9C
+
+# Cyberdemon
+R:816:0xB3/0x9D
+
+# Hela, Queen of the Dead
+R:817:0xBE/0x9D
+
+# The Mouth of Sauron
+R:818:0xBE/0x9E
+
+# The Necromancer of Dol Guldur
+R:819:0xB3/0x9E
+
+# Lessa, rider of the Gold Ramoth
+R:820:0xB3/0x9F
+
+# Master quylthulg
+R:821:0xA2/0x82
+
+# Qlzqqlzuup, the Lord of Flesh
+R:822:0xA2/0x83
+
+# Cthugha, the Living Flame
+R:823:0xBE/0x9F
+
+# F'lar, rider of the Bronze Mnementh
+R:824:0xB4/0x80
+
+# Maeglin, the Traitor of Gondolin
+R:825:0xA4/0x8E
+
+# Cyaegha
+R:826:0xBF/0x80
+
+# Pazuzu, Lord of Air
+R:827:0xBF/0x81
+
+# Ithaqua the Windwalker
+R:828:0xB4/0x81
+
+# Greater Hellhound
+R:829:0x9E/0x83
+
+# Cantoras, the Skeletal Lord
+R:830:0xAC/0x91
+
+# Mephistopheles, Lord of Hell
+R:831:0xB4/0x82
+
+# Godzilla
+R:832:0xB4/0x83
+
+# Abhoth, Source of Uncleanness
+R:833:0xBF/0x82
+
+# Ymir, the Ice Giant
+R:834:0xBF/0x83
+
+# Loki, the Trickster
+R:835:0xBF/0x84
+
+# Star-spawn of Cthulhu
+R:836:0xB4/0x84
+
+# Surtur, the Fire Giant
+R:837:0xBF/0x85
+
+# The Tarrasque
+R:838:0xBC/0x93
+
+# Lungorthin, the Balrog of White Fire
+R:839:0xBF/0x86
+
+# Draugluin, Sire of All Werewolves
+R:840:0xBF/0x87
+
+# Shuma-Gorath
+R:841:0xBF/0x88
+
+# Tulzscha, the Green Flame
+R:842:0xBC/0x92
+
+# Oremorj, the Cyberdemon Lord
+R:843:0xBC/0x91
+
+# Vecna, the Emperor Lich
+R:844:0xB4/0x85
+
+# Yog-Sothoth, the All-in-One
+R:845:0xB4/0x86
+
+# Fenris Wolf
+R:846:0xBC/0x90
+
+# Great Wyrm of Power
+R:847:0xB4/0x87
+
+# Shub-Niggurath, Black Goat of the Woods
+R:848:0xB4/0x88
+
+# Nodens, Lord of the Great Abyss
+R:849:0xAB/0x8D
+
+# Carcharoth, the Jaws of Thirst
+R:850:0x9E/0x86
+
+# Nyarlathotep, the Crawling Chaos
+R:851:0xB4/0x89
+
+# Azathoth, the Daemon Sultan
+R:852:0xB4/0x8A
+
+# Huan, Wolfhound of the Valar
+R:853:0x9E/0x87
+
+# Jormungand the Midgard Serpent
+R:854:0xBC/0x8F
+
+# The Destroyer
+R:855:0xBC/0x8E
+
+# Gothmog, the High Captain of Balrogs
+R:856:0xAD/0x98
+
+# Great Cthulhu
+R:857:0xB4/0x8B
+
+# Sorka, rider of the Gold Faranth
+R:858:0xB4/0x8C
+
+# The Unicorn of Order
+R:859:0xBC/0x8D
+
+# Sauron, the Sorcerer
+R:860:0xAC/0x80
+
+# DarkGod, the Mighty Coder of Hell
+R:861:0xC0/0x9D
+
+# Morgoth, Lord of Darkness
+R:862:0xB4/0x8E
+
+# Human Warrior
+R:863:0xB5/0x80
+
+# Elven archer
+R:864:0xB5/0x81
+
+# Dwarven warrior
+R:865:0xB5/0x82
+
+# Elite uruk
+R:866:0xB5/0x83
+
+# The Philosophy Teacher
+R:867:0xBC/0x8C
+
+# The Variant Maintainer
+R:868:0xBC/0x8B
+
+# Random Number Generator
+R:869:0xBC/0x8A
+
+# Rocket mine
+R:870:0xBD/0x88
+
+# Bouncing mine
+R:871:0xBD/0x89
+
+# Durin's Bane
+R:872:0xBF/0x89
+
+# The Icky Queen
+R:873:0xBF/0x8A
+
+# Rot jelly
+R:874:0xBD/0x8A
+
+# Death
+R:875:0xBD/0x8B
+
+# Famine
+R:876:0xBD/0x8D
+
+# Pestilence
+R:877:0xBD/0x8C
+
+# War
+R:878:0xBD/0x8E
+
+# Pike
+R:879:0xBD/0x8F
+
+# Electric eel
+R:880:0xBD/0x90
+
+# Giant crayfish
+R:881:0xBD/0x91
+
+# Mermaid
+R:882:0xBD/0x92
+
+# Box jellyfish
+R:883:0xBA/0x81
+
+# Giant piranha
+R:884:0xB6/0x9D
+
+# Piranha
+R:885:0xB6/0x9D
+
+# Bullywug
+R:886:0xBD/0x94
+
+# Bullywug warrior
+R:887:0xBD/0x95
+
+# Bullywug shaman
+R:888:0xBD/0x96
+
+# Whale
+R:889:0xBA/0x98
+
+# Sand mite
+R:890:0xBD/0x98
+
+# Octopus
+R:891:0xBD/0x99
+
+# Giant octopus
+R:892:0xBD/0x9A
+
+# Eye of the deep
+R:893:0xBD/0x9B
+
+# Murk dweller
+R:894:0xBF/0x8B
+
+# Drowned soul
+R:895:0xBF/0x8C
+
+# Tiger shark
+R:896:0xBF/0x8D
+
+# Hammerhead shark
+R:897:0xBA/0x90
+
+# Great white shark
+R:898:0xBB/0x82
+
+# Aquatic golem
+R:899:0xBF/0x8E
+
+# Aquatic kobold
+R:900:0xBF/0x8F
+
+# White shark
+R:901:0xBB/0x82
+
+# Scrag
+R:902:0xBF/0x91
+
+# Jaws
+R:903:0xBB/0x8C
+
+# Aquatic elf
+R:904:0xBF/0x93
+
+# Aquatic elven warrior
+R:905:0xBF/0x94
+
+# Aquatic elven shaman
+R:906:0xBF/0x95
+
+# Stargazer
+R:907:0xBF/0x96
+
+# Elder stargazer
+R:908:0xBF/0x97
+
+# Flounder
+R:909:0xBF/0x98
+
+# Giant turtle
+R:910:0xBF/0x99
+
+# Baby dragon turtle
+R:911:0xBF/0x9A
+
+# Young dragon turtle
+R:912:0xBF/0x9B
+
+# Mature dragon turtle
+R:913:0xBF/0x9C
+
+# Ancient dragon turtle
+R:914:0xBF/0x9D
+
+# Fastitocalon
+R:915:0xBF/0x9E
+
+# Undead stargazer
+R:916:0xBF/0x9F
+
+# Killer whale
+R:917:0xB9/0x9C
+
+# Merrow
+R:918:0xC5/0x85
+
+# Water naga
+R:919:0xC0/0x81
+
+# Devilfish
+R:920:0xC0/0x82
+
+# Undead devilfish
+R:921:0xC0/0x83
+
+# Moby Dick, the White Whale
+R:922:0xC0/0x80
+
+# Aquatic hound
+R:923:0xC0/0x85
+
+# Water demon
+R:924:0xC0/0x86
+
+# Ixitxachitl
+R:925:0xB8/0x9C
+
+# Ixitxachitl priest
+R:926:0xC0/0x88
+
+# Vampiric ixitxachitl
+R:927:0xC0/0x89
+
+# Mathilde, the Science Student
+R:928:0xBD/0x9C
+
+# Child spirit
+R:929:0xBD/0x9D
+
+# Young spirit
+R:930:0xBD/0x9E
+
+# Mature spirit
+R:931:0xBD/0x9F
+
+# Experienced spirit
+R:932:0xBE/0x80
+
+# Wise spirit
+R:933:0xBE/0x81
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0xC0/0x8A
+
+# Gandalf the Grey
+R:935:0xC0/0x8B
+
+# Nar, the Dwarf
+R:936:0xC0/0x8C
+
+# Novice mindcrafter
+R:937:0xAA/0x9A
+
+# Great Swamp Wyrm
+R:938:0xC5/0x86
+
+# Great Bile Wyrm
+R:939:0xC5/0x87
+
+# Blue Firelizard
+R:940:0xBE/0x82
+
+# Green Firelizard
+R:941:0xBE/0x83
+
+# Brown Firelizard
+R:942:0xBE/0x84
+
+# Bronze Firelizard
+R:943:0xBE/0x85
+
+# Gold Firelizard
+R:944:0xBE/0x86
+
+# High-elven ranger
+R:945:0xBE/0x87
+
+# Uvatha the Horseman
+R:946:0xC0/0x90
+
+# Adunaphel the Quiet
+R:947:0xC0/0x91
+
+# Akhorahil the Blind
+R:948:0xC0/0x92
+
+# Ren the Unclean
+R:949:0xC0/0x93
+
+# Ji Indur Dawndeath
+R:950:0xC0/0x94
+
+# Dwar, Dog Lord of Waw
+R:951:0xC0/0x95
+
+# Hoarmurath of Dir
+R:952:0xC0/0x96
+
+# Khamul, the Black Easterling
+R:953:0xC0/0x97
+
+# The Witch-King of Angmar
+R:954:0xC0/0x98
+
+# Green Dragonrider
+R:955:0xB3/0x96
+
+# Blue Dragonrider
+R:956:0xB3/0x8E
+
+# Brown Dragonrider
+R:957:0xB3/0x98
+
+# Bronze Dragonrider
+R:958:0xB3/0x98
+
+# Gold Dragonrider
+R:959:0xB3/0x94
+
+# Thread
+R:960:0xBE/0x88
+
+# Gorlim, Betrayer of Barahir
+R:961:0xC0/0x99
+
+# The Blubbering idiot, agent of black market, Simon the weak
+R:962:0xAA/0x82
+
+# Aranea
+R:963:0xC1/0x9A
+
+# Elder aranea
+R:964:0xC0/0x9A
+
+# Giant brown tick
+R:965:0xC5/0x88
+
+# Dolphiner
+R:966:0xC0/0x9C
+
+# Novice possessor (soul)
+R:967:0xC4/0x86
+
+# Bat of Gorgoroth
+R:968:0xC5/0x97
+
+# The Princess
+R:969:0xC5/0x98
+
+# Merton Proudfoot, the lost hobbit
+R:970:0xC5/0x99
+
+# The Wight-King of the Barrow-downs
+R:971:0xC5/0x9A
+
+# Adventurer
+R:972:0xC5/0x9B
+
+# Experienced possessor (soul)
+R:973:0xC5/0x9C
+
+# Old possessor (soul)
+R:974:0xC5/0x9D
+
+# Death orb
+R:975:0xC5/0x9E
+
+# Bronze dragon worm
+R:976:0xC6/0x80
+
+# Gold dragon worm
+R:977:0xC5/0x9F
+
+# Moldoux, the Defenceless Mold
+R:978:0xBC/0x89
+
+# The Physics Teacher
+R:979:0xBE/0x97
+
+# Ar-Pharazon the Golden
+R:980:0xC0/0x9E
+
+# Doppelganger
+R:981:0x97/0x8C
+
+# Marylene, Heartbreakeress of the Netherworld
+R:982:0xC1/0x8D
+
+# The Greater Lag Monster
+R:983:0xC2/0x8D
+
+# Hrungnir, the Stone Giant
+R:984:0xA7/0x8A
+
+# Bullroarer the Hobbit
+R:985:0xA7/0x9B
+
+# 3-headed hydra
+R:986:0xA2/0x94
+
+# Uldor the Accursed
+R:987:0xAB/0x95
+
+# Mystic
+R:988:0xAB/0x9B
+
+# Elder vampire
+R:989:0xA1/0x99
+
+# Ulfang the Black
+R:990:0xAA/0x96
+
+# Demonologist
+R:991:0xA8/0x82
+
+# Hezrou
+R:992:0xA2/0x9C
+
+# Glabrezu
+R:993:0xA2/0x8E
+
+# Nalfeshnee
+R:994:0xC2/0x8E
+
+# Marilith
+R:995:0xC2/0x8F
+
+# Lesser Balrog
+R:996:0xAD/0x95
+
+# Master mystic
+R:997:0xAA/0x94
+
+# Grand master mystic
+R:998:0xAB/0x9D
+
+# Erinyes
+R:999:0xA0/0x84
+
+# Novice mindcrafter
+R:1000:0xAA/0x9A
+
+# Polyphemus, the Blind Cyclops
+R:1001:0xC5/0x89
+
+# Great Wyrm of Perplexity
+R:1002:0xC2/0x92
+
+# Hound of Tindalos
+R:1003:0xC2/0x93
+
+# Great Wyrm of Thunder
+R:1004:0xC5/0x8A
+
+# Silver mouse
+R:1005:0xC5/0x8B
+
+# The Rat King
+R:1006:0xC2/0x96
+
+# Vort the Kobold Queen
+R:1007:0xC2/0x97
+
+# Giant black louse
+R:1008:0xC2/0x98
+
+# Fire Phantom
+R:1009:0xC2/0x99
+
+# The Insane Player
+R:1010:0x92/0x81
+
+# Glaryssa, Succubus Queen
+R:1011:0xC2/0x9A
+
+# Vermicious Knid
+R:1012:0xC2/0x9B
+
+# Bone golem
+R:1013:0xC2/0x9C
+
+# Snake of Yig
+R:1014:0xC2/0x9D
+
+# Bronze golem
+R:1015:0xC5/0x8C
+
+# Dimensional shambler
+R:1016:0xC2/0x9F
+
+# Cultist
+R:1017:0x94/0x99
+
+# Cult leader
+R:1018:0x99/0x97
+
+# Servitor of the outer gods
+R:1019:0xC3/0x8A
+
+# Avatar of Nyarlathotep
+R:1020:0xC3/0x8B
+
+# Thiazi, the Storm Giant
+R:1021:0xC5/0x8D
+
+# Hypnos, Lord of Sleep
+R:1022:0xC3/0x8D
+
+# Blue dragon worm
+R:1023:0xC3/0x8E
+
+# White dragon worm
+R:1024:0xC3/0x8F
+
+# Green dragon worm
+R:1025:0xC3/0x92
+
+# Black dragon worm
+R:1026:0xC3/0x91
+
+# Red dragon worm
+R:1027:0xC3/0x90
+
+# Multi-hued dragon worm
+R:1028:0xC3/0x93
+
+# The Minotaur of the Labyrinth
+R:1029:0xC3/0x94
+
+# The Sandworm Queen
+R:1030:0xC3/0x9B
+
+# Sandworm
+R:1031:0xC3/0x9C
+
+# Tik'srvzllat
+R:1032:0xC3/0x9D
+
+# The Glass Golem
+R:1033:0xC5/0x8E
+
+# The White Balrog
+R:1034:0xC5/0x8F
+
+# Golgarach, the Living Rock
+R:1035:0x80/0x84
+
+# Atlas, the Titan
+R:1036:0xC5/0x90
+
+# Kronos, Lord of the Titans
+R:1037:0xC5/0x91
+
+# Water hound
+R:1038:0xC6/0x88
+
+# Improv, the mighty MoLD
+R:1039:0xC6/0x8E
+
+# Emperor Mimic
+R:1040:0xC6/0x9C
+
+# Melinda Proudfoot
+R:1041:0x88/0xAA
+
+# Thrain, the King Under the Mountain
+R:1042:0x88/0xAB
+
+# Spells (*)
+S:48:0x91/0x88
+S:49:0x91/0x89
+S:50:0x91/0x8A
+S:51:0x91/0x8B
+S:52:0x91/0x8C
+S:53:0x91/0x8D
+S:54:0x91/0x8E
+S:55:0x91/0x8F
+S:56:0x91/0x90
+S:57:0x91/0x91
+S:58:0x91/0x92
+S:59:0x91/0x93
+S:60:0x91/0x94
+S:61:0x91/0x95
+S:62:0x91/0x96
+S:63:0x91/0x97
+
+# Spells (|)
+S:64:0x8F/0x80
+S:65:0x8F/0x84
+S:66:0x8F/0x88
+S:67:0x8F/0x8C
+S:68:0x8F/0x90
+S:69:0x8F/0x94
+S:70:0x8F/0x98
+S:71:0x8F/0x9C
+S:72:0x90/0x80
+S:73:0x90/0x84
+S:74:0x90/0x88
+S:75:0x90/0x8C
+S:76:0x90/0x90
+S:77:0x90/0x94
+S:78:0x90/0x98
+S:79:0x90/0x9C
+
+# Spells (-)
+S:80:0x8F/0x81
+S:81:0x8F/0x85
+S:82:0x8F/0x89
+S:83:0x8F/0x8D
+S:84:0x8F/0x91
+S:85:0x8F/0x95
+S:86:0x8F/0x99
+S:87:0x8F/0x9D
+S:88:0x90/0x81
+S:89:0x90/0x85
+S:90:0x90/0x89
+S:91:0x90/0x8D
+S:92:0x90/0x91
+S:93:0x90/0x95
+S:94:0x90/0x99
+S:95:0x90/0x9D
+
+# Spells (/)
+S:96:0x8F/0x82
+S:97:0x8F/0x86
+S:98:0x8F/0x8A
+S:99:0x8F/0x8E
+S:100:0x8F/0x92
+S:101:0x8F/0x96
+S:102:0x8F/0x9A
+S:103:0x8F/0x9E
+S:104:0x90/0x82
+S:105:0x90/0x86
+S:106:0x90/0x8A
+S:107:0x90/0x8E
+S:108:0x90/0x92
+S:109:0x90/0x96
+S:110:0x90/0x9A
+S:111:0x90/0x9E
+
+# Spells (\)
+S:112:0x8F/0x83
+S:113:0x8F/0x87
+S:114:0x8F/0x8B
+S:115:0x8F/0x8F
+S:116:0x8F/0x93
+S:117:0x8F/0x97
+S:118:0x8F/0x9B
+S:119:0x8F/0x9F
+S:120:0x90/0x83
+S:121:0x90/0x87
+S:122:0x90/0x8B
+S:123:0x90/0x8F
+S:124:0x90/0x93
+S:125:0x90/0x97
+S:126:0x90/0x9B
+S:127:0x90/0x9F
+
+# Amulets (")
+S:128:0x87/0x87
+S:129:0x87/0x80
+S:130:0x87/0x88
+S:131:0x87/0x82
+S:132:0x87/0x83
+S:133:0x87/0x84
+S:134:0x87/0x85
+S:135:0x87/0x86
+S:136:0x87/0x81
+S:137:0x87/0x81
+S:138:0x87/0x89
+S:139:0x87/0x8A
+S:140:0x87/0x8B
+S:141:0x87/0x8C
+S:142:0x87/0x8D
+S:143:0x87/0x8E
+
+# Rings (=)
+S:144:0x84/0x87
+S:145:0x84/0x80
+S:146:0x84/0x88
+S:147:0x84/0x82
+S:148:0x84/0x83
+S:149:0x84/0x84
+S:150:0x84/0x85
+S:151:0x84/0x86
+S:152:0x84/0x81
+S:153:0x84/0x81
+S:154:0x84/0x89
+S:155:0x84/0x8A
+S:156:0x84/0x8B
+S:157:0x84/0x8C
+S:158:0x84/0x8D
+S:159:0x84/0x8E
+
+# Staffs (_)
+S:160:0x87/0x96
+S:161:0x87/0x95
+S:162:0x87/0x95
+S:163:0x87/0x92
+S:164:0x87/0x92
+S:165:0x87/0x93
+S:166:0x87/0x95
+S:167:0x87/0x90
+S:168:0x87/0x95
+S:169:0x87/0x95
+S:170:0x87/0x92
+S:171:0x87/0x94
+S:172:0x87/0x92
+S:173:0x87/0x93
+S:174:0x87/0x96
+S:175:0x87/0x90
+
+# Wands (-)
+S:176:0x86/0x97
+S:177:0x86/0x90
+S:178:0x86/0x98
+S:179:0x86/0x92
+S:180:0x86/0x93
+S:181:0x86/0x94
+S:182:0x86/0x95
+S:183:0x86/0x96
+S:184:0x86/0x91
+S:185:0x86/0x91
+S:186:0x86/0x99
+S:187:0x86/0x9A
+S:188:0x86/0x9B
+S:189:0x86/0x9C
+S:190:0x86/0x9D
+S:191:0x86/0x9E
+
+# Rods (-)
+S:192:0x86/0x87
+S:193:0x86/0x80
+S:194:0x86/0x88
+S:195:0x86/0x82
+S:196:0x86/0x83
+S:197:0x86/0x84
+S:198:0x86/0x85
+S:199:0x86/0x86
+S:200:0x86/0x81
+S:201:0x86/0x81
+S:202:0x86/0x89
+S:203:0x86/0x8A
+S:204:0x86/0x8B
+S:205:0x86/0x8C
+S:206:0x86/0x8D
+S:207:0x86/0x8E
+
+# Scrolls (?)
+S:208:0x83/0x9C
+S:209:0x83/0x9D
+S:210:0x83/0x9E
+S:211:0x83/0x9F
+S:212:0x83/0x9C
+S:213:0x83/0x9D
+S:214:0x83/0x9E
+S:215:0x83/0x9F
+S:216:0x83/0x9C
+S:217:0x83/0x9D
+S:218:0x83/0x9E
+S:219:0x83/0x9F
+S:220:0x83/0x9C
+S:221:0x83/0x9D
+S:222:0x83/0x9E
+S:223:0x83/0x9F
+
+# Potions (!)
+S:224:0x85/0x87
+S:225:0x85/0x80
+S:226:0x85/0x88
+S:227:0x85/0x82
+S:228:0x85/0x83
+S:229:0x85/0x84
+S:230:0x85/0x85
+S:231:0x85/0x86
+S:232:0x85/0x81
+S:233:0x85/0x81
+S:234:0x85/0x89
+S:235:0x85/0x8A
+S:236:0x85/0x8B
+S:237:0x85/0x8C
+S:238:0x85/0x8D
+S:239:0x85/0x8E
+
+# Food (,)
+S:240:0x85/0x97
+S:241:0x85/0x90
+S:242:0x85/0x98
+S:243:0x85/0x92
+S:244:0x85/0x93
+S:245:0x85/0x94
+S:246:0x85/0x95
+S:247:0x85/0x96
+S:248:0x85/0x91
+S:249:0x85/0x91
+S:250:0x85/0x99
+S:251:0x85/0x9A
+S:252:0x85/0x9B
+S:253:0x85/0x9C
+S:254:0x85/0x9D
+S:255:0x85/0x9E
+
+# Fire golem
+R:1043:0x8C/0xA0
+
+# Melkor, Lord of Darkness
+R:1044:0x8C/0xA1
+
+# & piece~ of a Relic of Eru
+K:814:0x8C/0xA2
+
+# & piece~ of a Relic of Manwe
+K:815:0x8C/0xA3
+
+# & piece~ of a Relic of Tulkas
+K:816:0x8C/0xA4
+
+# & piece~ of a Relic of Melkor
+K:817:0x8C/0xA5
+
+# rocky ground
+F:207:0x8D/0xA0
+
+# cloud-like vapour
+F:208:0x8D/0xA1
+
+# condensing water
+F:209:0x8D/0xA2
+
+# dense mist
+F:210:0x8D/0xA3
+
+# hail-stone wall
+F:211:0x8D/0xA4
+
+# Mining Supply store
+B:59:0x87/0xAE
+
+# & piece~ of a Relic of Yavanna
+K:818:0x8C/0xA6
+
+# Elven
+G:M:12:0x91/0xA1
+
+# Dwarven
+G:M:13:0x91/0xA0
+
+# Spirit
+R:1045:0x92/0x9F
+R:1046:0x92/0xA0
+R:1047:0x92/0xA1
+R:1048:0x92/0xA2
+R:1049:0x92/0xA3
+R:1050:0x92/0xA4
+R:1051:0x92/0xA5
+R:1052:0x92/0xA6
+R:1053:0x92/0xA7
+R:1054:0x92/0xA8
+R:1055:0x92/0xA9
+R:1056:0x92/0xAA
+R:1057:0x92/0xA3
+R:1058:0x92/0xAB
+R:1059:0x92/0xAC
+R:1060:0x92/0xAD
+R:1061:0x92/0xAE
+R:1062:0x92/0xAF
+R:1063:0x92/0xB0
+R:1064:0x92/0xB1
+R:1065:0x92/0xB2
+R:1066:0x92/0xB3
+R:1067:0x92/0xB4
+R:1068:0x92/0xB5
+R:1069:0x92/0xB6
+R:1070:0x92/0xB7
+R:1071:0x92/0xB8
+R:1072:0x92/0xB9
+R:1073:0x92/0xBA
+R:1074:0x92/0xBB
+R:1075:0x92/0xBC
+
+# & Spellbook~ of #
+K:757:0x91/0xA4
+
+# Weakness Trap
+#G:T:1:0xFF/0xFF
+#G:T:2:0xFF/0xFF
+#G:T:3:0xFF/0xFF
+
+# Intelligence Trap
+#G:T:4:0xFF/0xFF
+#G:T:5:0xFF/0xFF
+#G:T:6:0xFF/0xFF
+
+# Wisdom Trap
+#G:T:7:0xFF/0xFF
+#G:T:8:0xFF/0xFF
+#G:T:9:0xFF/0xFF
+
+# Fumbling Fingers Trap
+#G:T:10:0xFF/0xFF
+#G:T:11:0xFF/0xFF
+#G:T:12:0xFF/0xFF
+
+# Wasting Trap
+#G:T:13:0xFF/0xFF
+#G:T:14:0xFF/0xFF
+#G:T:15:0xFF/0xFF
+
+# Beauty Trap
+#G:T:16:0xFF/0xFF
+#G:T:17:0xFF/0xFF
+#G:T:18:0xFF/0xFF
+
+# Trap of Curse Weapon
+#G:T:20:0xFF/0xFF
+
+# Trap of Curse Armor
+#G:T:21:0xFF/0xFF
+
+# Earthquake Trap
+#G:T:22:0xFF/0xFF
+
+# Poison Needle Trap
+#G:T:23:0xFF/0xFF
+
+# Summon Monster Trap
+#G:T:24:0xFF/0xFF
+
+# Summon Undead Trap
+#G:T:25:0xFF/0xFF
+
+# Summon Greater Undead Trap
+#G:T:26:0xFF/0xFF
+
+# Teleport Trap
+#G:T:27:0xFF/0xFF
+
+# Paralyzing Trap
+#G:T:28:0xFF/0xFF
+
+# Explosive Device
+#G:T:29:0xFF/0xFF
+
+# Teleport Item Trap
+#G:T:30:0xFF/0xFF
+
+# Lose Memory Trap
+#G:T:31:0xFF/0xFF
+
+# Bitter Regret Trap
+#G:T:32:0xFF/0xFF
+
+# Bowel Cramps Trap
+#G:T:33:0xFF/0xFF
+
+# Blindness
+#G:T:34:0xFF/0xFF
+
+# Aggravation Trap
+#G:T:35:0xFF/0xFF
+
+# Multiplication Trap
+#G:T:36:0xFF/0xFF
+
+# Steal Item Trap
+#G:T:37:0xFF/0xFF
+
+# Summon Fast Quylthulgs Trap
+#G:T:38:0xFF/0xFF
+
+# Trap of Sinking
+#G:T:39:0xFF/0xFF
+
+# Trap of Mana Drain
+#G:T:40:0xFF/0xFF
+
+# Trap of Missing Money
+#G:T:41:0xFF/0xFF
+
+# Trap of No Return
+#G:T:42:0xFF/0xFF
+
+# Trap of Silent Switching
+#G:T:43:0xFF/0xFF
+
+# Trap of Walls
+#G:T:44:0xFF/0xFF
+
+# Trap of Calling Out
+#G:T:45:0xFF/0xFF
+
+# Trap of Sliding
+#G:T:46:0xFF/0xFF
+
+# Trap of Charges Drain
+#G:T:47:0xFF/0xFF
+
+# Trap of Stair Movement
+#G:T:48:0xFF/0xFF
+
+# Trap of New Trap
+#G:T:49:0xFF/0xFF
+
+# Trap of Scatter Items
+#G:T:50:0xFF/0xFF
+
+# Trap of Decay
+#G:T:51:0xFF/0xFF
+
+# Trap of Wasting Wands
+#G:T:52:0xFF/0xFF
+
+# Trap of Filling
+#G:T:53:0xFF/0xFF
+
+# Trap of Drain Speed
+#G:T:54:0xFF/0xFF
+
+# Lightning Bolt Trap
+#G:T:60:0xFF/0xFF
+
+# Poison Bolt Trap
+#G:T:61:0xFF/0xFF
+
+# Acid Bolt Trap
+#G:T:62:0xFF/0xFF
+
+# Cold Bolt Trap
+#G:T:63:0xFF/0xFF
+
+# Fire Bolt Trap
+#G:T:64:0xFF/0xFF
+
+# Plasma Bolt Trap
+#G:T:65:0xFF/0xFF
+
+# Water Bolt Trap
+#G:T:66:0xFF/0xFF
+
+# Lite Bolt Trap
+#G:T:67:0xFF/0xFF
+
+# Dark Bolt Trap
+#G:T:68:0xFF/0xFF
+
+# Shards Bolt Trap
+#G:T:69:0xFF/0xFF
+
+# Sound Bolt Trap
+#G:T:70:0xFF/0xFF
+
+# Confusion Bolt Trap
+#G:T:71:0xFF/0xFF
+
+# Force Bolt Trap
+#G:T:72:0xFF/0xFF
+
+# Inertia Bolt Trap
+#G:T:73:0xFF/0xFF
+
+# Mana Bolt Trap
+#G:T:74:0xFF/0xFF
+
+# Ice Bolt Trap
+#G:T:75:0xFF/0xFF
+
+# Chaos Bolt Trap
+#G:T:76:0xFF/0xFF
+
+# Nether Bolt Trap
+#G:T:77:0xFF/0xFF
+
+# Disenchantment Bolt Trap
+#G:T:78:0xFF/0xFF
+
+# Nexus Bolt Trap
+#G:T:79:0xFF/0xFF
+
+# Time Bolt Trap
+#G:T:80:0xFF/0xFF
+
+# Gravity Bolt Trap
+#G:T:81:0xFF/0xFF
+
+# Lightning Ball Trap
+#G:T:82:0xFF/0xFF
+
+# Poison Ball Trap
+#G:T:83:0xFF/0xFF
+
+# Acid Ball Trap
+#G:T:84:0xFF/0xFF
+
+# Cold Ball Trap
+#G:T:85:0xFF/0xFF
+
+# Fire Ball Trap
+#G:T:86:0xFF/0xFF
+
+# Plasma Ball Trap
+#G:T:87:0xFF/0xFF
+
+# Water Ball Trap
+#G:T:88:0xFF/0xFF
+
+# Light Ball Trap
+#G:T:89:0xFF/0xFF
+
+# Darkness Ball Trap
+#G:T:90:0xFF/0xFF
+
+# Shards Ball Trap
+#G:T:91:0xFF/0xFF
+
+# Sound Ball Trap
+#G:T:92:0xFF/0xFF
+
+# Confusion Ball Trap
+#G:T:93:0xFF/0xFF
+
+# Force Ball Trap
+#G:T:94:0xFF/0xFF
+
+# Inertia Ball Trap
+#G:T:95:0x82/0xBF
+
+# Mana Ball Trap
+#G:T:96:0xFF/0xFF
+
+# Ice Ball Trap
+#G:T:97:0xFF/0xFF
+
+# Chaos Ball Trap
+#G:T:98:0xFF/0xFF
+
+# Nether Ball Trap
+#G:T:99:0xFF/0xFF
+
+# Disenchantment Ball Trap
+#G:T:100:0xFF/0xFF
+
+# Nexus Ball Trap
+#G:T:101:0xFF/0xFF
+
+# Time Ball Trap
+#G:T:102:0xFF/0xFF
+
+# Gravity Ball Trap
+#G:T:103:0xFF/0xFF
+
+# Arrow Trap
+#G:T:110:0xFF/0xFF
+
+# Bolt Trap
+#G:T:111:0xFF/0xFF
+
+# Seeker Arrow Trap
+#G:T:112:0xFF/0xFF
+
+# Seeker Bolt Trap
+#G:T:113:0xFF/0xFF
+
+# Poison Arrow Trap
+#G:T:114:0xFF/0xFF
+
+# Poison Bolt Trap
+#G:T:115:0xFF/0xFF
+
+# Poison Seeker Arrow Trap
+#G:T:116:0xFF/0xFF
+
+# Poison Seeker Bolt Trap
+#G:T:117:0xFF/0xFF
+
+# Broken Dagger Trap
+#G:T:118:0xFF/0xFF
+
+# Dagger Trap
+#G:T:119:0xFF/0xFF
+
+# Poison Broken Dagger Trap
+#G:T:120:0xFF/0xFF
+
+# Poison Dagger Trap
+#G:T:121:0xFF/0xFF
+
+# Arrows Trap
+#G:T:122:0xFF/0xFF
+
+# Bolts Trap
+#G:T:123:0xFF/0xFF
+
+# Seeker Arrow Trap
+#G:T:124:0xFF/0xFF
+
+# Seeker Bolt Trap
+#G:T:125:0xFF/0xFF
+
+# Poison Arrows Trap
+#G:T:126:0xFF/0xFF
+
+# Poison Bolt Trap
+#G:T:127:0xFF/0xFF
+
+# Poison Seeker Arrows Trap
+#G:T:128:0xFF/0xFF
+
+# Poison Seeker Bolts Trap
+#G:T:129:0xFF/0xFF
+
+# Broken Daggers Trap
+#G:T:130:0xFF/0xFF
+
+# Dagger Trap
+#G:T:131:0xFF/0xFF
+
+# Poison Broken Daggers Trap
+#G:T:132:0xFF/0xFF
+
+# Poison Daggers Trap
+#G:T:133:0xFF/0xFF
+
+# Trap of Drop Item
+#G:T:140:0xFF/0xFF
+
+# Trap of Drop Items
+#G:T:141:0xFF/0xFF
+
+# Trap of Drop Everything
+#G:T:142:0xFF/0xFF
+
+# Trap of Femininity
+#G:T:150:0xFF/0xFF
+
+# Trap of Masculinity
+#G:T:151:0xFF/0xFF
+
+# Trap of Neutrality
+#G:T:152:0xFF/0xFF
+
+# Trap of Aging
+#G:T:153:0xFF/0xFF
+
+# Trap of Growing
+#G:T:154:0xFF/0xFF
+
+# Trap of Shrinking
+#G:T:155:0xFF/0xFF
+
+# Trap of Tanker Drain
+#G:T:157:0xFF/0xFF
+
+# Trap of Divine Anger
+#G:T:158:0xFF/0xFF
+
+# Trap of Divine Wrath
+#G:T:159:0xFF/0xFF
+
+# Hallucination Trap
+#G:T:160:0xFF/0xFF
+
+# Greater Magic Missile Trap
+#G:T:161:0xFF/0xFF
+
+# Foulness Trap
+#G:T:162:0xFF/0xFF
+
+# Trap of Holy Fire
+#G:T:164:0xFF/0xFF
+
+# Trap of Hell Fire
+#G:T:165:0xFF/0xFF
+
+# Psi Bolt Trap
+#G:T:166:0xFF/0xFF
+
+# Psi Drain Trap
+#G:T:167:0xFF/0xFF
+
+# Plasma Ball Trap
+#G:T:168:0xFF/0xFF
+
+# Psi Ball Trap
+#G:T:169:0xFF/0xFF
+
+# Acquirement Trap
+#G:T:170:0xFF/0xFF
+
+# Greater Lightning Bolt Trap
+#G:T:171:0xFF/0xFF
+
+# Greater Poison Bolt Trap
+#G:T:172:0xFF/0xFF
+
+# Greater Acid Bolt Trap
+#G:T:173:0xFF/0xFF
+
+# Greater Cold Bolt Trap
+#G:T:174:0xFF/0xFF
+
+# Greater Fire Bolt Trap
+#G:T:175:0xFF/0xFF
+# non-defines encountered :
+# Load the special player pictures
+%:xtra-new.prf
diff --git a/lib/pref/graf-sdl.prf b/lib/pref/graf-sdl.prf
new file mode 100644
index 00000000..818f876a
--- /dev/null
+++ b/lib/pref/graf-sdl.prf
@@ -0,0 +1,37 @@
+# File: graf-x11.prf
+
+
+# Font stuff
+%:font-x11.prf
+
+
+# Color palette - Graphics
+
+#V:16:0x01:0x00:0x00:0x00
+#V:17:0x01:0xF0:0xE0:0xD0
+#V:18:0x01:0x80:0x80:0x80
+#V:19:0x01:0x50:0x50:0x50
+#V:20:0x01:0xE0:0xB0:0x00
+#V:21:0x01:0xC0:0xA0:0x70
+#V:22:0x01:0x80:0x60:0x40
+#V:23:0x01:0x50:0x3C:0x28
+#V:24:0x01:0x00:0xA0:0xF0
+#V:25:0x01:0x00:0x00:0xF0
+#V:26:0x01:0x00:0x00:0x70
+#V:27:0x01:0xF0:0x00:0x00
+#V:28:0x01:0x80:0x00:0x00
+#V:29:0x01:0x90:0x00:0xB0
+#V:30:0x01:0x00:0x60:0x10
+#V:31:0x01:0x60:0xF0:0x40
+
+
+# Standard file
+?:[EQU $GRAF old]
+%:graf-xxx.prf
+
+# New tiles
+?:[EQU $GRAF new]
+%:graf-new.prf
+
+?:1
+
diff --git a/lib/pref/graf-win.prf b/lib/pref/graf-win.prf
new file mode 100644
index 00000000..f59edb35
--- /dev/null
+++ b/lib/pref/graf-win.prf
@@ -0,0 +1,16 @@
+# File: graf-win.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+# Standard file
+?:[EQU $GRAF old]
+%:graf-xxx.prf
+
+# New tiles
+?:[EQU $GRAF new]
+%:graf-new.prf
diff --git a/lib/pref/graf-x11.prf b/lib/pref/graf-x11.prf
new file mode 100644
index 00000000..818f876a
--- /dev/null
+++ b/lib/pref/graf-x11.prf
@@ -0,0 +1,37 @@
+# File: graf-x11.prf
+
+
+# Font stuff
+%:font-x11.prf
+
+
+# Color palette - Graphics
+
+#V:16:0x01:0x00:0x00:0x00
+#V:17:0x01:0xF0:0xE0:0xD0
+#V:18:0x01:0x80:0x80:0x80
+#V:19:0x01:0x50:0x50:0x50
+#V:20:0x01:0xE0:0xB0:0x00
+#V:21:0x01:0xC0:0xA0:0x70
+#V:22:0x01:0x80:0x60:0x40
+#V:23:0x01:0x50:0x3C:0x28
+#V:24:0x01:0x00:0xA0:0xF0
+#V:25:0x01:0x00:0x00:0xF0
+#V:26:0x01:0x00:0x00:0x70
+#V:27:0x01:0xF0:0x00:0x00
+#V:28:0x01:0x80:0x00:0x00
+#V:29:0x01:0x90:0x00:0xB0
+#V:30:0x01:0x00:0x60:0x10
+#V:31:0x01:0x60:0xF0:0x40
+
+
+# Standard file
+?:[EQU $GRAF old]
+%:graf-xxx.prf
+
+# New tiles
+?:[EQU $GRAF new]
+%:graf-new.prf
+
+?:1
+
diff --git a/lib/pref/graf-xxx.prf b/lib/pref/graf-xxx.prf
new file mode 100644
index 00000000..08661544
--- /dev/null
+++ b/lib/pref/graf-xxx.prf
@@ -0,0 +1,6345 @@
+# PRF file generated by Andreas Koch`s Tile Assigner
+# 23/06/2004 : Edited manually
+
+# 2185 items
+# 2185 probably mapped correctly
+# 0 imported but not yet defined
+# 0 defined to value(s) lower than 0x80
+# Old header :
+### Special attr:char values ###
+# # Unused (@)
+# S:0x00:0x00:0x40
+# S:0x01:0x01:0x40
+# S:0x02:0x02:0x40
+# S:0x03:0x03:0x40
+# S:0x04:0x04:0x40
+# S:0x05:0x05:0x40
+# S:0x06:0x06:0x40
+# S:0x07:0x07:0x40
+# S:0x08:0x08:0x40
+# S:0x09:0x09:0x40
+# S:0x0A:0x0A:0x40
+# S:0x0B:0x0B:0x40
+# S:0x0C:0x0C:0x40
+# S:0x0D:0x0D:0x40
+# S:0x0E:0x0E:0x40
+# S:0x0F:0x0F:0x40
+# # Unused (@)
+# S:0x10:0x00:0x40
+# S:0x11:0x01:0x40
+# S:0x12:0x02:0x40
+# S:0x13:0x03:0x40
+# S:0x14:0x04:0x40
+# S:0x15:0x05:0x40
+# S:0x16:0x06:0x40
+# S:0x17:0x07:0x40
+# S:0x18:0x08:0x40
+# S:0x19:0x09:0x40
+# S:0x1A:0x0A:0x40
+# S:0x1B:0x0B:0x40
+# S:0x1C:0x0C:0x40
+# S:0x1D:0x0D:0x40
+# S:0x1E:0x0E:0x40
+# S:0x1F:0x0F:0x40
+# # Unused (@)
+# S:0x20:0x00:0x40
+# S:0x21:0x01:0x40
+# S:0x22:0x02:0x40
+# S:0x23:0x03:0x40
+# S:0x24:0x04:0x40
+# S:0x25:0x05:0x40
+# S:0x26:0x06:0x40
+# S:0x27:0x07:0x40
+# S:0x28:0x08:0x40
+# S:0x29:0x09:0x40
+# S:0x2A:0x0A:0x40
+# S:0x2B:0x0B:0x40
+# S:0x2C:0x0C:0x40
+# S:0x2D:0x0D:0x40
+# S:0x2E:0x0E:0x40
+# S:0x2F:0x0F:0x40
+
+# General Store
+B:0:0x81/0x91
+
+# Armoury
+B:1:0x81/0x92
+
+# Weapon Smiths
+B:2:0x81/0x93
+
+# Temple
+B:3:0x81/0x94
+
+# Alchemy Shop
+B:4:0x81/0x95
+
+# Magic Shop
+B:5:0x81/0x96
+
+# Black Market
+B:6:0x81/0x97
+
+# Home
+B:7:0x81/0x98
+
+# Bookstore
+B:8:0x82/0x93
+
+# Pet Shop
+B:9:0xCB/0x96
+
+# Mayor's Office
+B:10:0xCB/0x92
+
+# Inn
+B:11:0xCB/0x95
+
+# The Soothsayer
+B:12:0xD4/0x85
+
+# Library
+B:13:0xD4/0x89
+
+# Castle
+B:14:0xCB/0x92
+
+# Casino
+B:15:0xD5/0x81
+
+# Beastmaster Shanty
+B:16:0xD3/0x8B
+
+# Fighters Hall
+B:17:0xD3/0x8C
+
+# Tower of Magery
+B:18:0xD4/0x8B
+
+# Inner Temple
+B:19:0xD4/0x9D
+
+# Paladins Guild
+B:20:0xCB/0x8F
+
+# Rangers Guild
+B:21:0xD3/0x83
+
+# Weyr
+B:22:0xCB/0x93
+
+# The Mirror
+B:23:0xD4/0x89
+
+# Seat of Ruling
+B:24:0xCB/0x92
+
+# Wizards Spire
+B:25:0xD4/0x8A
+
+# Priests Circle
+B:26:0xD4/0x92
+
+# Tower of the King
+B:27:0xCB/0x92
+
+# Library
+B:28:0xD4/0x89
+
+# The White Tree
+B:29:0xCB/0x95
+
+# Craftsmaster
+B:30:0xCB/0x97
+
+# Earth-Dome (Nature)
+B:31:0xCB/0x9A
+
+# Minstrels Haven
+B:32:0xD3/0x9F
+
+# Star-Dome
+B:33:0xD4/0x8C
+
+# Valarin Temple
+B:34:0xD4/0x90
+
+# Sea-Dome
+B:35:0xD4/0x91
+
+# The Golden Flower
+B:36:0xD3/0x83
+
+# The Fountain
+B:37:0xD4/0x9D
+
+# Axe Smith
+B:38:0xCC/0x96
+
+# Hafted Smith
+B:39:0xCC/0x97
+
+# Polearm Smith
+B:40:0xCC/0x98
+
+# Sword Smith
+B:41:0xCC/0x80
+
+# Rare Jewelry Shop
+B:42:0xD3/0x96
+
+# Jewelry Shop
+B:43:0xD3/0x93
+
+# Footwear Shop
+B:44:0xD3/0x9D
+
+# Rare Footwear Shop
+B:45:0xD3/0x9E
+
+# Library
+B:46:0xD3/0x9C
+
+# Forbidden Library
+B:47:0xD4/0x8F
+
+# Expensive Black Market
+B:48:0xD4/0x95
+
+# Common Shop
+B:49:0xD4/0x93
+
+# Dragon Hunter
+B:50:0xCC/0x89
+
+# Speed Ring Market
+B:51:0xD3/0x97
+
+# Scribe
+B:52:0xD4/0x86
+
+# Potion Store
+B:53:0xD4/0x80
+
+# Recaller
+B:54:0xD4/0x88
+
+# Master Archer
+B:55:0xD3/0x85
+
+# Merchants Guild
+B:56:0xD4/0x9B
+
+# The Mathom-house
+B:57:0xCB/0x9B
+
+# The Prancing Pony
+B:58:0xCB/0x95
+
+# nothing
+F:0:0x81/0x80
+
+# open floor
+F:1:0x80/0x80
+
+# fountain - wet
+F:2:0xD1/0x83
+
+# glyph of warding
+F:3:0xA2/0x88
+
+# open door
+F:4:0x81/0x87
+
+# broken door
+F:5:0x81/0x87
+
+# up staircase
+F:6:0x81/0x9C
+
+# down staircase
+F:7:0x81/0x9E
+
+# quest entrance
+F:8:0x82/0x8E
+
+# quest exit
+F:9:0x82/0x8B
+
+# quest down level
+F:10:0x82/0x8F
+
+# quest up level
+F:11:0x82/0x8C
+
+# town exit
+F:12:0x82/0x91
+
+# shaft down
+F:13:0x82/0x90
+
+# shaft up
+F:14:0x82/0x8D
+
+# fountain
+F:15:0xD1/0x82
+
+# web
+F:16:0x82/0x92
+
+# Open pit
+F:17:0xA2/0x96
+
+# Spiked Pit
+F:18:0xA2/0x96
+
+# Poison Pit
+F:19:0xA2/0x96
+
+# Summon Rune
+F:20:0x8A/0x9C
+
+# Teleport Rune
+F:21:0x8A/0x9C
+
+# Fire spot
+F:22:0x8A/0x9B
+
+# Acid spot
+F:23:0x8A/0x9B
+
+# Slow dart trap
+F:24:0x82/0x9E
+
+# Lose str dart
+F:25:0xA2/0x89
+
+# Lose dex dart
+F:26:0xA2/0x8D
+
+# Lose con dart
+F:27:0xA2/0x92
+
+# gas trap - blind
+F:28:0xA2/0x8E
+
+# gas trap - confuse
+F:29:0xA2/0x8F
+
+# gas trap - poison
+F:30:0xA2/0x90
+
+# gas trap - sleep
+F:31:0xA2/0x91
+
+# door
+F:32:0x81/0x8B
+
+# locked door
+F:33:0x81/0x8B
+F:34:0x81/0x8B
+F:35:0x81/0x8B
+F:36:0x81/0x8B
+F:37:0x81/0x8B
+F:38:0x81/0x8B
+F:39:0x81/0x8B
+
+# jammed door
+F:40:0x81/0x8B
+F:41:0x81/0x8B
+F:42:0x81/0x8B
+F:43:0x81/0x8B
+F:44:0x81/0x8B
+F:45:0x81/0x8B
+F:46:0x81/0x8B
+F:47:0x81/0x8B
+
+# secret door
+F:48:0x80/0x82
+
+# pile of rubble
+F:49:0x81/0x9A
+
+# magma vein
+F:50:0x81/0x83
+
+# quartz vein
+F:51:0x80/0x83
+
+# magma vein
+F:52:0x81/0x83
+
+# quartz vein
+F:53:0x80/0x83
+
+# magma vein with treasure
+F:54:0x80/0x84
+
+# quartz vein with treasure
+F:55:0x80/0x84
+
+# granite wall
+F:56:0x80/0x82
+F:57:0x80/0x82
+F:58:0x80/0x82
+F:59:0x80/0x82
+
+# permanent wall
+F:60:0x80/0x95
+F:61:0x80/0x95
+F:62:0x80/0x95
+F:63:0x80/0x95
+
+# explosive rune
+F:64:0xA2/0x87
+
+# Straight Road startpoint
+F:65:0xA3/0x9D
+
+# section of the Straight Road
+F:66:0xA3/0x97
+F:67:0xA3/0x9C
+F:68:0xA3/0x9B
+F:69:0xA3/0x9A
+F:70:0xA3/0x98
+
+# section of the Straight Road (discharged)
+F:71:0xA3/0x98
+
+# Straight Road exit
+F:72:0xA3/0x9D
+
+# corrupted section of the Straight Road
+F:73:0xA3/0x99
+
+# Building
+F:74:0x81/0x91
+
+# permanent wall
+F:75:0x80/0x95
+F:76:0x80/0x95
+F:77:0x80/0x95
+F:78:0x80/0x95
+
+# Deep water
+F:83:0xD2/0x83
+
+# stream of shallow water
+F:84:0xD2/0x81
+
+# pool of deep lava
+F:85:0xCB/0x89
+
+# stream of shallow lava
+F:86:0xCB/0x88
+
+# dark pit
+F:87:0x81/0x80
+
+# dirt
+F:88:0xCB/0x84
+
+# patch of grass
+F:89:0xD0/0x8E
+
+# ice
+F:90:0xCF/0x81
+
+# sand
+F:91:0xCF/0x8E
+
+# dead tree
+F:92:0xCF/0x85
+
+# ash
+F:93:0xCF/0x95
+
+# mud
+F:94:0xCF/0x8D
+
+# ice wall
+F:95:0xD0/0x88
+
+# tree
+F:96:0xCB/0x86
+
+# mountain chain
+F:97:0xCB/0x87
+
+# sandwall
+F:98:0xD0/0x87
+F:99:0xD0/0x87
+
+# sandwall with treasure
+F:100:0xD0/0x8A
+
+# high mountain chain
+F:101:0xCB/0x87
+
+# nether mist
+F:102:0xC5/0x8C
+
+# Between gate
+F:160:0x8A/0x9D
+
+# Altar of Forests
+F:161:0xD1/0x85
+
+# Altar of Water
+F:162:0xD1/0x86
+
+# Altar of Earth
+F:163:0xD1/0x8E
+
+# Altar of Darkness
+F:164:0xD1/0x88
+
+# Altar of Moon
+F:165:0xD1/0x89
+
+# Altar of Sun
+F:166:0xD1/0x8C
+
+# Altar of Rage
+F:167:0xD1/0x8A
+
+# Altar of Winds
+F:168:0xD1/0x8B
+
+# Altar of Stars
+F:169:0xD1/0x8D
+
+# Altar of Being
+F:170:0xD1/0x87
+
+# Altar of Randomness
+F:171:0xD1/0x8F
+
+# floor
+F:172:0x80/0x80
+
+# Underground Tunnel
+F:173:0xCF/0x97
+
+# stream of tainted water
+F:174:0xD2/0x82
+
+# monster trap
+F:175:0x82/0x94
+
+# Between gate
+F:176:0x8A/0x9D
+
+# lava wall
+F:177:0xD0/0x86
+
+# Great Fire
+F:178:0xD1/0x90
+
+# Path to next area
+F:179:0xCF/0x9C
+
+# Path to previous area
+F:180:0xCF/0x9B
+
+# field
+F:181:0xCF/0x8A
+
+# Ekkaia, the Encircling Sea
+F:182:0xD2/0x84
+
+# pool of deep water
+F:187:0xD2/0x80
+
+# glass wall
+F:188:0xD0/0x89
+
+# illusion wall
+F:189:0xD0/0x8C
+
+# Grass roof
+F:190:0xD0/0x8F
+
+# grass roof top
+F:191:0xD0/0x8F
+
+# grass roof chimney
+F:192:0xD0/0x8F
+
+# brick roof
+F:193:0xD0/0x90
+
+# brick roof top
+F:194:0xD0/0x90
+
+# brick roof chimney
+F:195:0xD0/0x90
+
+# window
+F:196:0xD0/0x91
+
+# small window
+F:197:0xD0/0x92
+
+# rain barrel
+F:198:0xD0/0x93
+
+# grass with flowers
+F:199:0xD0/0x8D
+
+# cobblestone road
+F:200:0x82/0x8A
+
+# cobblestone with outlet
+F:201:0x82/0x8A
+
+# small tree
+F:202:0xD0/0x8B
+
+# town
+F:203:0xD0/0x94
+
+# Underground Tunnel
+F:204:0xD0/0x95
+
+# a blazing fire
+F:205:0xD1/0x84
+
+# pile of rubble
+F:206:0x81/0x9A
+
+# ethereal wall
+F:214:0x80/0x80
+
+# glacial wall
+F:215:0xD0/0x88
+
+# something
+K:0:0x80/0x80
+
+# Blindness
+K:1:0xBA/0x81
+
+# Paranoia
+K:2:0xBA/0x81
+
+# Confusion
+K:3:0xBA/0x81
+
+# Hallucination
+K:4:0xBA/0x81
+
+# Cure Poison
+K:5:0xBA/0x81
+
+# Cure Blindness
+K:6:0xBA/0x81
+
+# Cure Paranoia
+K:7:0xBA/0x81
+
+# Cure Confusion
+K:8:0xBA/0x81
+
+# Weakness
+K:9:0xBA/0x81
+
+# Unhealth
+K:10:0xBA/0x81
+
+# Restore Constitution
+K:11:0xBA/0x81
+
+# Restoring
+K:12:0xBA/0x81
+
+# Stupidity
+K:13:0xBA/0x81
+
+# Naivety
+K:14:0xBA/0x81
+
+# Poison
+K:15:0xBA/0x81
+
+# Sickness
+K:16:0xBA/0x81
+
+# Paralysis
+K:17:0xBA/0x81
+
+# Restore Strength
+K:18:0xBA/0x81
+
+# Disease
+K:19:0xBA/0x81
+
+# Cure Serious Wounds
+K:20:0xBA/0x81
+
+# & Ration~ of Food
+K:21:0x8B/0x82
+
+# & Hard Biscuit~
+K:22:0x8B/0x82
+
+# & Strip~ of Venison
+K:23:0x8B/0x82
+
+# & Slime Mold~
+K:24:0x8A/0x9F
+
+# & Piece~ of Elvish Waybread
+K:25:0x8B/0x80
+
+# & Pint~ of Fine Ale
+K:26:0x8A/0x95
+
+# & Pint~ of Fine Wine
+K:27:0x8A/0x96
+
+# & Mattock~
+K:28:0xCD/0x80
+
+# The Blue Stone 'Toris Mejistos'
+K:29:0xB6/0x89
+
+# & Broken Dagger~
+K:30:0x89/0x83
+
+# & Bastard Sword~
+K:31:0x89/0x85
+
+# & Scimitar~
+K:32:0x89/0x85
+
+# & Tulwar~
+K:33:0x89/0x84
+
+# & Broad Sword~
+K:34:0x89/0x85
+
+# & Short Sword~
+K:35:0x89/0x84
+
+# & Blade~ of Chaos
+K:36:0x89/0x87
+
+# & Two-Handed Sword~
+K:37:0x89/0x85
+
+# & Main Gauche~
+K:38:0x89/0x83
+
+# & Cutlass~
+K:39:0x89/0x84
+
+# & Executioner's Sword~
+K:40:0x89/0x86
+
+# & Katana~
+K:41:0x89/0x85
+
+# & Long Sword~
+K:42:0x89/0x85
+
+# & Dagger~
+K:43:0x89/0x83
+
+# & Rapier~
+K:44:0x89/0x84
+
+# & Sabre~
+K:45:0x89/0x84
+
+# & Small Sword~
+K:46:0x89/0x84
+
+# & Broken Sword~
+K:47:0x89/0x83
+
+# & Ball-and-Chain~
+K:48:0x89/0x88
+
+# & Whip~
+K:49:0x89/0x89
+
+# & Flail~
+K:50:0x89/0x8B
+
+# & Two-Handed Flail~
+K:51:0x89/0x8B
+
+# & Morning Star~
+K:52:0x89/0x8B
+
+# & Mace~
+K:53:0x89/0x8C
+
+# & Quarterstaff~
+K:54:0x89/0x8E
+
+# & War Hammer~
+K:55:0x89/0x8F
+
+# & Lead-Filled Mace~
+K:56:0x89/0x8C
+
+# & Mace~ of Disruption
+K:57:0x89/0x8D
+
+# & Lucerne Hammer~
+K:58:0x89/0x90
+
+# & Beaked Axe~
+K:59:0x89/0x90
+
+# & Glaive~
+K:60:0x89/0x90
+
+# & Halberd~
+K:61:0x89/0x90
+
+# & Awl-Pike~
+K:62:0x89/0x91
+
+# & Pike~
+K:63:0x89/0x91
+
+# & Spear~
+K:64:0x89/0x91
+
+# & Trident~
+K:65:0x89/0x92
+
+# & Lance~
+K:66:0x89/0x93
+
+# & Great Axe~
+K:67:0x89/0x90
+
+# & Battle Axe~
+K:68:0x89/0x90
+
+# & Lochaber Axe~
+K:69:0x89/0x90
+
+# & Broad Axe~
+K:70:0x89/0x90
+
+# & Scythe~
+K:71:0x89/0x94
+
+# & Scythe~ of Slicing
+K:72:0x89/0x94
+
+# & Short Bow~
+K:73:0x89/0x95
+
+# & Long Bow~
+K:74:0x89/0x96
+
+# & Light Crossbow~
+K:75:0x89/0x97
+
+# & Heavy Crossbow~
+K:76:0x89/0x98
+
+# & Sling~
+K:77:0x89/0x99
+
+# & Arrow~
+K:78:0x89/0x9A
+
+# & Seeker Arrow~
+K:79:0x89/0x9B
+
+# & Bolt~
+K:80:0x89/0x9C
+
+# & Seeker Bolt~
+K:81:0x89/0x9D
+
+# & Rounded Pebble~
+K:82:0x89/0x9E
+
+# & Iron Shot~
+K:83:0x89/0x9F
+
+# & Shovel~
+K:84:0x8A/0x98
+
+# & Gnomish Shovel~
+K:85:0x8B/0x8F
+
+# & Dwarven Shovel~
+K:86:0x8B/0x90
+
+# & Pick~
+K:87:0x8A/0x97
+
+# & Orcish Pick~
+K:88:0x8B/0x8D
+
+# & Dwarven Pick~
+K:89:0x8B/0x8E
+
+# & Elven Cloak~
+K:90:0x88/0x81
+
+# & Pair~ of Soft Leather Boots
+K:91:0x88/0x89
+
+# & Pair~ of Hard Leather Boots
+K:92:0x88/0x8A
+
+# & Pair~ of Metal Shod Boots
+K:93:0x88/0x8B
+
+# & Hard Leather Cap~
+K:94:0x88/0x82
+
+# & Metal Cap~
+K:95:0x88/0x83
+
+# & Iron Helm~
+K:96:0x88/0x84
+
+# & Steel Helm~
+K:97:0x88/0x85
+
+# & Iron Crown~
+K:98:0x88/0x86
+
+# & Golden Crown~
+K:99:0x88/0x87
+
+# & Jewel Encrusted Crown~
+K:100:0x88/0x88
+
+# & Robe~
+K:101:0x88/0x95
+
+# & Filthy Rag~
+K:102:0x88/0x94
+
+# Soft Leather Armour~
+K:103:0x88/0x96
+
+# Soft Studded Leather~
+K:104:0x88/0x96
+
+# Hard Leather Armour~
+K:105:0x88/0x97
+
+# Hard Studded Leather~
+K:106:0x88/0x97
+
+# Leather Scale Mail~
+K:107:0x88/0x98
+
+# Metal Scale Mail~
+K:108:0x88/0x98
+
+# Chain Mail~
+K:109:0x88/0x99
+
+# Rusty Chain Mail~
+K:110:0x88/0x9A
+
+# Augmented Chain Mail~
+K:111:0x88/0x99
+
+# Bar Chain Mail~
+K:112:0x88/0x99
+
+# Metal Brigandine Armour~
+K:113:0x88/0x99
+
+# Partial Plate Armour~
+K:114:0x88/0x9B
+
+# Metal Lamellar Armour~
+K:115:0x88/0x9B
+
+# Full Plate Armour~
+K:116:0xCD/0x82
+
+# Ribbed Plate Armour~
+K:117:0x88/0x9B
+
+# Adamantite Plate Mail~
+K:118:0xA3/0x96
+
+# Mithril Plate Mail~
+K:119:0x88/0x9C
+
+# Mithril Chain Mail~
+K:120:0x88/0x9C
+
+# Double Chain Mail~
+K:121:0x88/0x99
+
+# & Shield~ of Deflection
+K:122:0x88/0x93
+
+# & Cloak~
+K:123:0x88/0x80
+
+# & Shadow Cloak~
+K:124:0x88/0x81
+
+# & Set~ of Leather Gloves
+K:125:0x88/0x8C
+
+# & Set~ of Gauntlets
+K:126:0x88/0x8D
+
+# & Set~ of Cesti
+K:127:0x88/0x8E
+
+# & Small Leather Shield~
+K:128:0x88/0x8F
+
+# & Large Leather Shield~
+K:129:0x88/0x90
+
+# & Small Metal Shield~
+K:130:0x88/0x91
+
+# & Large Metal Shield~
+K:131:0x88/0x92
+
+# Strength
+K:132:0xB5/0x81
+
+# Dexterity
+K:133:0xB5/0x81
+
+# Constitution
+K:134:0xB5/0x81
+
+# Intelligence
+K:135:0xB5/0x81
+
+# Speed
+K:136:0xB5/0x83
+
+# Searching
+K:137:0xB5/0x80
+
+# Teleportation
+K:138:0xB5/0x80
+
+# Slow Digestion
+K:139:0xB5/0x80
+
+# Fire Resistance
+K:140:0xB5/0x80
+
+# Cold Resistance
+K:141:0xB5/0x80
+
+# Levitation
+K:142:0xB5/0x80
+
+# Poison Resistance
+K:143:0xB5/0x82
+
+# Free Action
+K:144:0xB5/0x80
+
+# Weakness
+K:145:0xB5/0x80
+
+# Flames
+K:146:0xB5/0x82
+
+# Acid
+K:147:0xB5/0x82
+
+# Ice
+K:148:0xB5/0x82
+
+# Woe
+K:149:0xB5/0x82
+
+# Stupidity
+K:150:0xB5/0x80
+
+# Damage
+K:151:0xB5/0x81
+
+# Accuracy
+K:152:0xB5/0x81
+
+# Protection
+K:153:0xB5/0x80
+
+# Aggravate Monster
+K:154:0xB5/0x80
+
+# See Invisible
+K:155:0xB5/0x81
+
+# Sustain Strength
+K:156:0xB5/0x81
+
+# Sustain Intelligence
+K:157:0xB5/0x81
+
+# Sustain Wisdom
+K:158:0xB5/0x81
+
+# Sustain Constitution
+K:159:0xB5/0x81
+
+# Sustain Dexterity
+K:160:0xB5/0x81
+
+# Sustain Charisma
+K:161:0xB5/0x81
+
+# Slaying
+K:162:0xB5/0x81
+
+# Brilliance
+K:163:0xB6/0x9F
+
+# Charisma
+K:164:0xB6/0x9F
+
+# Searching
+K:165:0xB6/0x9E
+
+# Teleportation
+K:166:0xB6/0x9E
+
+# Slow Digestion
+K:167:0xB6/0x9E
+
+# Acid Resistance
+K:168:0xB6/0x9E
+
+# Adornment
+K:169:0xB6/0x9E
+
+# Double Ring Mail~
+K:170:0xCD/0x83
+
+# the Magi
+K:171:0xB6/0x80
+
+# Doom
+K:172:0xB6/0x80
+
+# Enchant Weapon To-Hit
+K:173:0x86/0x80
+
+# Enchant Weapon To-Dam
+K:174:0x86/0x80
+
+# Enchant Armor
+K:175:0x86/0x80
+
+# Identify
+K:176:0x86/0x80
+
+# *Identify*
+K:177:0x86/0x82
+
+# Rumour
+K:178:0x86/0x80
+
+# Chaos
+K:179:0x86/0x80
+
+# Remove Curse
+K:180:0x86/0x80
+
+# Light
+K:181:0x86/0x80
+
+# Fire
+K:182:0x86/0x80
+
+# Ice
+K:183:0x86/0x80
+
+# Summon Monster
+K:184:0x86/0x80
+
+# Phase Door
+K:185:0x86/0x80
+
+# Teleportation
+K:186:0x86/0x80
+
+# Teleport Level
+K:187:0x86/0x80
+
+# Monster Confusion
+K:188:0x86/0x80
+
+# Magic Mapping
+K:189:0x86/0x80
+
+# Rune of Protection
+K:190:0x86/0x82
+
+# *Remove Curse*
+K:191:0x86/0x82
+
+# Treasure Detection
+K:192:0x86/0x80
+
+# Object Detection
+K:193:0x86/0x80
+
+# Trap Detection
+K:194:0x86/0x80
+
+# & Sheaf Arrow~
+K:195:0xCD/0x84
+
+# & Mithril Shot~
+K:196:0xCD/0x85
+
+# Door
+K:197:0x86/0x80
+
+# Acquirement
+K:198:0x86/0x80
+
+# *Acquirement*
+K:199:0x86/0x82
+
+# Mass Genocide
+K:200:0x86/0x82
+
+# Detect Invisible
+K:201:0x86/0x80
+
+# Aggravate Monster
+K:202:0x86/0x80
+
+# Trap Creation
+K:203:0x86/0x80
+
+# Trap
+K:204:0x86/0x80
+
+# Artifact Creation
+K:205:0x86/0x82
+
+# Recharging
+K:206:0x86/0x81
+
+# Genocide
+K:207:0x86/0x81
+
+# Darkness
+K:208:0x86/0x80
+
+# Protection from Evil
+K:209:0x86/0x81
+
+# Satisfy Hunger
+K:210:0x86/0x80
+
+# Dispel Undead
+K:211:0x86/0x81
+
+# *Enchant Weapon*
+K:212:0x86/0x82
+
+# Curse Weapon
+K:213:0x86/0x82
+
+# *Enchant Armor*
+K:214:0x86/0x82
+
+# Curse Armor
+K:215:0x86/0x82
+
+# Summon Undead
+K:216:0x86/0x80
+
+# Blessing
+K:217:0x86/0x80
+
+# Holy Chant
+K:218:0x86/0x80
+
+# Holy Prayer
+K:219:0x86/0x81
+
+# Word of Recall
+K:220:0x86/0x80
+
+# *Destruction*
+K:221:0x86/0x82
+
+# Slime Mold Juice
+K:222:0xBC/0x85
+
+# Apple Juice
+K:223:0xBC/0x85
+
+# Water
+K:224:0xBC/0x85
+
+# Strength
+K:225:0xBC/0x86
+
+# Weakness
+K:226:0xBC/0x85
+
+# Restore Strength
+K:227:0xBC/0x86
+
+# Intelligence
+K:228:0xBC/0x86
+
+# Stupidity
+K:229:0xBC/0x85
+
+# Restore Intelligence
+K:230:0xBC/0x86
+
+# Wisdom
+K:231:0xBC/0x86
+
+# Naivety
+K:232:0xBC/0x85
+
+# Restore Wisdom
+K:233:0xBC/0x86
+
+# Charisma
+K:234:0xBC/0x86
+
+# Ugliness
+K:235:0xBC/0x86
+
+# Restore Charisma
+K:236:0xBC/0x86
+
+# Curing
+K:237:0xBC/0x86
+
+# Invulnerability
+K:238:0xBC/0x86
+
+# New Life
+K:239:0xBC/0x86
+
+# Cure Serious Wounds
+K:240:0xBC/0x85
+
+# Cure Critical Wounds
+K:241:0xBC/0x85
+
+# Healing
+K:242:0xBC/0x85
+
+# Constitution
+K:243:0xBC/0x86
+
+# Experience
+K:244:0xBC/0x87
+
+# Sleep
+K:245:0xBC/0x85
+
+# Blindness
+K:246:0xBC/0x85
+
+# Booze
+K:247:0xBC/0x85
+
+# Poison
+K:248:0xBC/0x85
+
+# Speed
+K:249:0xBC/0x85
+
+# Slowness
+K:250:0xBC/0x85
+
+# Dexterity
+K:251:0xBC/0x86
+
+# Restore Dexterity
+K:252:0xBC/0x86
+
+# Restore Constitution
+K:253:0xBC/0x86
+
+# Lose Memories
+K:254:0xBC/0x85
+
+# Salt Water
+K:255:0xBC/0x85
+
+# Enlightenment
+K:256:0xBC/0x85
+
+# Heroism
+K:257:0xBC/0x85
+
+# Berserk Strength
+K:258:0xBC/0x85
+
+# Boldness
+K:259:0xBC/0x85
+
+# Restore Life Levels
+K:260:0xBC/0x87
+
+# Resist Heat
+K:261:0xBC/0x85
+
+# Resist Cold
+K:262:0xBC/0x85
+
+# Detect Invisible
+K:263:0xBC/0x85
+
+# Slow Poison
+K:264:0xBC/0x85
+
+# Neutralise Poison
+K:265:0xBC/0x85
+
+# Restore Mana
+K:266:0xBC/0x86
+
+# Infra-vision
+K:267:0xBC/0x85
+
+# Resistance
+K:268:0xBC/0x85
+
+# Light
+K:269:0xB7/0x8F
+
+# Tame Monster
+K:270:0xB7/0x8F
+
+# Frost Bolts
+K:271:0xB7/0x8F
+
+# Fire Bolts
+K:272:0xB7/0x90
+
+# Stone to Mud
+K:273:0xB7/0x8F
+
+# Polymorph
+K:274:0xB7/0x8F
+
+# Heal Monster
+K:275:0xB7/0x8F
+
+# Haste Monster
+K:276:0xB7/0x8F
+
+# Slow Monster
+K:277:0xB7/0x8F
+
+# Confuse Monster
+K:278:0xB7/0x8F
+
+# Sleep Monster
+K:279:0xB7/0x8F
+
+# Drain Life
+K:280:0xB7/0x91
+
+# Trap
+K:281:0xB7/0x8F
+
+# Magic Missile
+K:282:0xB7/0x8F
+
+# Clone Monster
+K:283:0xB7/0x90
+
+# Scare Monster
+K:284:0xB7/0x90
+
+# Teleport Other
+K:285:0xB7/0x8F
+
+# Disarming
+K:286:0xB7/0x8F
+
+# Lightning Balls
+K:287:0xB7/0x90
+
+# Cold Balls
+K:288:0xB7/0x90
+
+# Fire Balls
+K:289:0xB7/0x91
+
+# Stinking Cloud
+K:290:0xB7/0x8F
+
+# Acid Balls
+K:291:0xB7/0x91
+
+# Wonder
+K:292:0xB7/0x8F
+
+# & Flight Arrow~
+K:293:0xCD/0x86
+
+# Acid Bolts
+K:294:0xB7/0x90
+
+# Dragon's Flame
+K:295:0xB7/0x91
+
+# Dragon's Frost
+K:296:0xB7/0x91
+
+# Dragon's Breath
+K:297:0xB7/0x91
+
+# Annihilation
+K:298:0xB7/0x91
+
+# Rockets
+K:299:0xB7/0x91
+
+# Trap Location
+K:300:0xB9/0x99
+
+# Treasure Location
+K:301:0xB9/0x99
+
+# Object Location
+K:302:0xB9/0x99
+
+# Teleportation
+K:303:0xB9/0x99
+
+# Earthquakes
+K:304:0xB9/0x9A
+
+# Summoning
+K:305:0xB9/0x99
+
+# Light
+K:306:0xB9/0x99
+
+# *Destruction*
+K:307:0xB9/0x9B
+
+# Starlight
+K:308:0xB9/0x99
+
+# Haste Monsters
+K:309:0xB9/0x99
+
+# Slow Monsters
+K:310:0xB9/0x99
+
+# Sleep Monsters
+K:311:0xB9/0x99
+
+# Cure Light Wounds
+K:312:0xB9/0x99
+
+# Detect Invisible
+K:313:0xB9/0x99
+
+# Speed
+K:314:0xB9/0x9A
+
+# Slowness
+K:315:0xB9/0x99
+
+# Door
+K:316:0xB9/0x99
+
+# Remove Curse
+K:317:0xB9/0x9A
+
+# Detect Evil
+K:318:0xB9/0x99
+
+# Curing
+K:319:0xB9/0x9A
+
+# Dispel Evil
+K:320:0xB9/0x9B
+
+# Probing
+K:321:0xB9/0x9A
+
+# Darkness
+K:322:0xB9/0x99
+
+# Genocide
+K:323:0xB9/0x9B
+
+# Power
+K:324:0xB9/0x9C
+
+# the Magi
+K:325:0xB9/0x9C
+
+# Perception
+K:326:0xB9/0x99
+
+# Holiness
+K:327:0xB9/0x9C
+
+# Enlightenment
+K:328:0xB9/0x9A
+
+# Healing
+K:329:0xB9/0x9C
+
+# [Call of the West]
+K:330:0xA3/0x8A
+
+# [Light of Valinor]
+K:331:0xA3/0x8A
+
+# [Divine Mastery]
+K:332:0xA3/0x8A
+
+# [Words of Power]
+K:333:0xA3/0x8A
+
+# [Apprentice Handbook]
+K:334:0xA3/0x8C
+
+# [Mystical Words]
+K:335:0xA3/0x8C
+
+# [Arcane Chants]
+K:336:0xA3/0x8C
+
+# [Locus of Force]
+K:337:0xA3/0x8C
+
+# & Small wooden chest~
+K:338:0x80/0x96
+
+# & Large wooden chest~
+K:339:0x80/0x97
+
+# & Small iron chest~
+K:340:0x80/0x98
+
+# & Large iron chest~
+K:341:0x80/0x99
+
+# & Small steel chest~
+K:342:0x80/0x9A
+
+# & Large steel chest~
+K:343:0x80/0x9B
+
+# & Ruined chest~
+K:344:0x80/0x9C
+
+# & Iron Spike~
+K:345:0x8B/0x84
+
+# & Wooden Torch~
+K:346:0x8B/0x86
+
+# & Brass Lantern~
+K:347:0x8B/0x85
+
+# & Flask~ of oil
+K:348:0xBC/0x90
+
+# & Empty Bottle~
+K:349:0x8A/0x99
+
+# Havoc
+K:350:0xB8/0x94
+
+# Door
+K:351:0xB8/0x94
+
+# Trap Location
+K:352:0xB8/0x94
+
+# Probing
+K:353:0xB8/0x97
+
+# Recall
+K:354:0xB8/0x96
+
+# Illumination
+K:355:0xB8/0x95
+
+# Light
+K:356:0xB8/0x94
+
+# Lightning Bolts
+K:357:0xB8/0x94
+
+# Frost Bolts
+K:358:0xB8/0x95
+
+# Fire Bolts
+K:359:0xB8/0x95
+
+# Polymorph
+K:360:0xB8/0x95
+
+# Slow Monster
+K:361:0xB8/0x95
+
+# Sleep Monster
+K:362:0xB8/0x95
+
+# Drain Life
+K:363:0xB8/0x97
+
+# Teleport Other
+K:364:0xB8/0x96
+
+# Disarming
+K:365:0xB8/0x95
+
+# Lightning Balls
+K:366:0xB8/0x96
+
+# Cold Balls
+K:367:0xB8/0x96
+
+# Fire Balls
+K:368:0xB8/0x97
+
+# Acid Balls
+K:369:0xB8/0x97
+
+# Acid Bolts
+K:370:0xB8/0x95
+
+# Enlightenment
+K:371:0xB8/0x97
+
+# Perception
+K:372:0xB8/0x96
+
+# Curing
+K:373:0xB8/0x97
+
+# Healing
+K:374:0xB8/0x97
+
+# Detection
+K:375:0xB8/0x95
+
+# Restoration
+K:376:0xB8/0x97
+
+# Speed
+K:377:0xB8/0x97
+
+# [Inner Void]
+K:378:0xA3/0x8E
+
+# [Lurkings of the Night]
+K:379:0xA3/0x8E
+
+# [Beings of Darkness]
+K:380:0xA3/0x8E
+
+# [Material Shadow]
+K:381:0xA3/0x8E
+
+# [Sign of Chaos]
+K:383:0xA3/0x90
+
+# [Chaos Mastery]
+K:384:0xA3/0x90
+
+# [Chaos Channels]
+K:385:0xA3/0x91
+
+# [Armageddon Tome]
+K:386:0xA3/0x91
+
+# [Nether Openings]
+K:387:0xA3/0x92
+
+# [Unholy Blessings]
+K:388:0xA3/0x92
+
+# & Firestone~
+K:389:0x8B/0x88
+
+# & Small Firestone~
+K:390:0x8B/0x89
+
+# & Broken Skull~
+K:391:0x8B/0x8A
+
+# & Broken Bone~
+K:392:0x8B/0x8B
+
+# & Canine Skeleton~
+K:393:0x8B/0x87
+
+# & Rodent Skeleton~
+K:394:0x8B/0x87
+
+# & Human Skeleton~
+K:395:0x8B/0x87
+
+# & Dwarf Skeleton~
+K:396:0x8B/0x87
+
+# & Elf Skeleton~
+K:397:0x8B/0x87
+
+# & Gnome Skeleton~
+K:398:0x8B/0x87
+
+# & Great Hammer~
+K:399:0xCD/0x87
+
+# Black Dragon Scale Mail~
+K:400:0x88/0x9F
+
+# Blue Dragon Scale Mail~
+K:401:0x88/0x9D
+
+# White Dragon Scale Mail~
+K:402:0x88/0x9E
+
+# Red Dragon Scale Mail~
+K:403:0x89/0x81
+
+# Green Dragon Scale Mail~
+K:404:0x89/0x80
+
+# Multi-Hued Dragon Scale Mail~
+K:405:0x89/0x82
+
+# Pseudo Dragon Scale Mail~
+K:406:0xBB/0x9C
+
+# Law Dragon Scale Mail~
+K:407:0x88/0x9F
+
+# Bronze Dragon Scale Mail~
+K:408:0x88/0x96
+
+# Gold Dragon Scale Mail~
+K:409:0x88/0x9C
+
+# Chaos Dragon Scale Mail~
+K:410:0x89/0x80
+
+# Balance Dragon Scale Mail~
+K:411:0x88/0x99
+
+# Power Dragon Scale Mail~
+K:412:0xA2/0x9E
+
+# & Dragon Helm~
+K:413:0xA2/0x9D
+
+# & Dragon Shield~
+K:414:0xA2/0x9C
+
+# Death
+K:415:0xBC/0x88
+
+# Ruination
+K:416:0xBC/0x87
+
+# Detonations
+K:417:0xBC/0x87
+
+# Augmentation
+K:418:0xBC/0x87
+
+# *Healing*
+K:419:0xBC/0x87
+
+# Life
+K:420:0xBC/0x88
+
+# Self Knowledge
+K:421:0xBC/0x87
+
+# *Enlightenment*
+K:422:0xBC/0x88
+
+# [Necromantic Incantations]
+K:423:0xA3/0x92
+
+# [Curses of Angmar]
+K:424:0xA3/0x92
+
+# Fear Resistance
+K:425:0xB5/0x81
+
+# Light and Darkness Resistance
+K:426:0xB5/0x81
+
+# Nether Resistance
+K:427:0xB5/0x81
+
+# Nexus Resistance
+K:428:0xB5/0x81
+
+# Sound Resistance
+K:429:0xB5/0x81
+
+# Confusion Resistance
+K:430:0xB5/0x81
+
+# Shard Resistance
+K:431:0xB5/0x81
+
+# Disenchantment Resistance
+K:432:0xB5/0x81
+
+# Chaos Resistance
+K:433:0xB5/0x81
+
+# Blindness Resistance
+K:434:0xB5/0x81
+
+# Lordly Protection
+K:435:0xB5/0x81
+
+# Extra Attacks
+K:436:0xB5/0x81
+
+# Cure Light Wounds
+K:437:0xBC/0x85
+
+# Clumsiness
+K:438:0xBC/0x85
+
+# Sickliness
+K:439:0xBC/0x85
+
+# Map of Bree
+K:440:0xD8/0x81
+
+# Map of Gondolin
+K:441:0xD8/0x81
+
+# Map of Lothlorien
+K:442:0xD8/0x81
+
+# Map of Minas Anor
+K:443:0xD8/0x81
+
+# & Silver Arrow~
+K:465:0xCE/0x91
+
+# & Silver Bolt~
+K:466:0xCE/0x92
+
+# Lightning Resistance
+K:467:0x87/0x80
+
+# Wisdom
+K:468:0x87/0x80
+
+# Regeneration
+K:469:0x87/0x80
+
+# Infravision
+K:470:0x87/0x80
+
+# Devotion
+K:471:0x87/0x80
+
+# Weaponmastery
+K:472:0x87/0x80
+
+# Trickery
+K:473:0x87/0x80
+
+# ESP
+K:474:0x87/0x80
+
+# Sustenance
+K:475:0x87/0x80
+
+# Palantir
+K:476:0xD8/0x8F
+
+# Elfstone 'Elessar'
+K:477:0xB6/0x8F
+
+# Jewel 'Evenstar'
+K:478:0xB6/0x90
+
+# Ring of Durin
+K:479:0xB5/0x8E
+
+# copper
+K:480:0x80/0x8B
+K:481:0x80/0x8B
+K:482:0x80/0x8B
+
+# silver
+K:483:0x80/0x8C
+K:484:0x80/0x8C
+K:485:0x80/0x8C
+
+# garnets
+K:486:0x80/0x8F
+K:487:0x80/0x8F
+
+# gold
+K:488:0x80/0x8D
+K:489:0x80/0x8D
+K:490:0x80/0x8D
+
+# opals
+K:491:0x80/0x90
+
+# sapphires
+K:492:0x80/0x91
+
+# rubies
+K:493:0x80/0x92
+
+# diamonds
+K:494:0x80/0x93
+
+# emeralds
+K:495:0x80/0x94
+
+# mithril
+K:496:0x80/0x8E
+
+# adamantite
+K:497:0xA3/0x95
+
+# & Mighty Hammer~
+K:498:0x87/0x9A
+
+# & Massive Iron Crown~
+K:499:0x87/0x9B
+
+# & Phial~
+K:500:0x87/0x9D
+
+# & Star~
+K:501:0x87/0x9E
+
+# & Arkenstone~
+K:502:0x87/0x9F
+
+# & Amulet~
+K:503:0xB6/0x82
+K:504:0xB6/0x83
+
+# & Necklace~
+K:505:0xB6/0x84
+
+# & Ring~
+K:506:0xB5/0x83
+K:507:0xB5/0x83
+K:508:0xB5/0x84
+K:509:0xB5/0x85
+K:510:0xB5/0x86
+K:511:0xB5/0x87
+
+# [Rites of Initiation]
+K:512:0xBC/0x91
+
+# [Ways of War]
+K:513:0xBC/0x91
+
+# [Divine Retribution]
+K:514:0xBC/0x92
+
+# [Essence of Fury]
+K:515:0xBC/0x92
+
+# [Novice Crafts]
+K:516:0xBC/0x95
+
+# [Arcane Channels]
+K:517:0xBC/0x95
+
+# [Sigils of Wizardry]
+K:518:0xBC/0x95
+
+# [Mana Focus]
+K:519:0xBC/0x95
+
+# Reflection
+K:520:0xB6/0x80
+
+# Anti-Magic
+K:521:0xB6/0x80
+
+# Anti-Teleportation
+K:522:0xB6/0x80
+
+# Resistance
+K:523:0xB6/0x80
+
+# & Zweihander~
+K:524:0xCD/0x88
+
+# & Dwarven Lantern~
+K:525:0xD8/0x86
+
+# Splint Mail~
+K:526:0xCD/0x8A
+
+# & Everburning Torch~
+K:527:0xD8/0x87
+
+# & Trifurcate Spear~
+K:528:0xCD/0x96
+
+# & Three Piece Rod~
+K:529:0xCD/0x8C
+
+# & Feanorian Lamp~
+K:530:0xD8/0x85
+
+# & Fur Cloak~
+K:531:0xCD/0x8E
+
+# Potion: Water Curing
+K:532:0xBC/0x84
+
+# & Hatchet~
+K:533:0xCD/0x90
+
+# Rhino Hide Armour~
+K:535:0xCD/0x91
+
+# Leather Jacket~
+K:536:0xCD/0x92
+
+# & Sickle~
+K:537:0xCD/0x93
+
+# [Psychoportation]
+K:538:0xA3/0x88
+
+# [Clairsentience]
+K:539:0xA3/0x88
+
+# [Telekinesis]
+K:540:0xA3/0x89
+
+# [Empathy]
+K:541:0xA3/0x89
+
+# & Club~
+K:542:0xCD/0x99
+
+# & Broad Spear~
+K:543:0xCD/0x9A
+
+# & Khopesh~
+K:544:0xCD/0x9B
+
+# & Flamberge~
+K:545:0xCD/0x9C
+
+# & Claymore~
+K:546:0xCD/0x9D
+
+# & Espadon~
+K:547:0xCD/0x9E
+
+# & Great Scimitar~
+K:548:0xCD/0x9F
+
+# Trapping Kit: Arrow
+K:549:0xD7/0x84
+
+# Trapping Kit: Bolt
+K:550:0xD7/0x83
+
+# & Fauchard~
+K:551:0xCE/0x82
+
+# & Guisarme~
+K:552:0xCE/0x83
+
+# & Heavy Lance~
+K:553:0xCE/0x84
+
+# & Basillard~
+K:554:0xCE/0x85
+
+# Trapping Kit: Catapult
+K:555:0xD7/0x82
+
+# Ring Mail~
+K:556:0xCE/0x87
+
+# Cord Armour~
+K:557:0xCE/0x88
+
+# Paper Armour~
+K:558:0xCE/0x89
+
+# Padded Armour~
+K:559:0xCE/0x8A
+
+# Trap Kit: Fumes
+K:560:0xD7/0x80
+
+# Stone and Hide Armour~
+K:561:0xCE/0x8C
+
+# Trap Kit: Magic
+K:562:0xD7/0x81
+
+# Trap Kit: Device
+K:563:0xD7/0x85
+
+# Scroll: Nothing
+K:564:0x86/0x80
+
+# Poison
+K:565:0xD9/0x82
+
+# Wand: Nothing
+K:566:0xB7/0x90
+
+# Ring: Nothing
+K:567:0xB5/0x80
+
+# Staff: Nothing
+K:568:0xB8/0x96
+
+# Rod Tip: Nothing
+K:569:0xB8/0x95
+
+# Explosion
+K:570:0xD9/0x82
+
+# Teleport
+K:571:0xD9/0x82
+
+# Amulet: Nothing
+K:572:0x87/0x80
+
+# & Blood~ of Life
+K:573:0x87/0x88
+
+# Cold
+K:574:0xD9/0x82
+
+# Fire
+K:575:0xD9/0x82
+
+# Acid
+K:576:0xD9/0x82
+
+# Mage Staff
+K:577:0xCE/0x97
+
+# Lightning
+K:578:0xB5/0x81
+
+# Life
+K:579:0xD9/0x82
+
+# Confusion
+K:580:0xD9/0x82
+
+# Light
+K:581:0xD9/0x82
+
+# Ring of F'Lar
+K:582:0xB5/0x8F
+
+# Invisibility
+K:583:0xB8/0x85
+
+# Chaos
+K:584:0xD9/0x82
+
+# Corruption
+K:585:0xB8/0x85
+
+# Invisibility
+K:586:0xB5/0x81
+
+# Time
+K:587:0xD9/0x82
+
+# Deep Thoughts
+K:588:0xD8/0x80
+
+# More Deep Thoughts
+K:589:0xD8/0x80
+
+# Compendium of Deep Thoughts
+K:590:0xD8/0x80
+
+# Artifact Lore Vol. I
+K:591:0xD8/0x80
+
+# Artifact Lore Vol. II
+K:592:0xD8/0x80
+
+# Artifact Lore Vol. III
+K:593:0xD8/0x80
+
+# Monstrous Compendium 1
+K:594:0xD8/0x80
+
+# Monstrous Compendium 2
+K:595:0xD8/0x80
+
+# Monstrous Compendium 3
+K:596:0xD8/0x80
+
+# Monstrous Compendium 4
+K:597:0xD8/0x80
+
+# Monstrous Compendium 5
+K:598:0xD8/0x80
+
+# Monstrous Compendium 6
+K:599:0xD8/0x80
+
+# Monstrous Compendium 7
+K:600:0xD8/0x80
+
+# Monstrous Compendium 8
+K:601:0xD8/0x80
+
+# Monstrous Compendium 9
+K:602:0xD8/0x80
+
+# Monstrous Compendium 10
+K:603:0xD8/0x80
+
+# Monstrous Compendium 11
+K:604:0xD8/0x80
+
+# Abomination
+K:605:0xBC/0x85
+
+# Shape of Wolf
+K:606:0xBC/0x85
+
+# Shape of Ape
+K:607:0xBC/0x85
+
+# Shape of Goat
+K:608:0xBC/0x85
+
+# Shape of Insect
+K:609:0xBC/0x85
+
+# Shape of Sparrow
+K:610:0xBC/0x85
+
+# Shape of Ent
+K:611:0xBC/0x85
+
+# Shape of Vampire
+K:612:0xBC/0x85
+
+# Shape of Spider
+K:613:0xBC/0x85
+
+# Shape of Mana ball
+K:614:0xBC/0x85
+
+# Shape of Fire cloud
+K:615:0xBC/0x85
+
+# Shape of Cold cloud
+K:616:0xBC/0x85
+
+# Shape of Chaos cloud
+K:617:0xBC/0x85
+
+# [Wolf]
+K:618:0xCE/0x93
+
+# [Ape]
+K:619:0xCE/0x93
+
+# [Goat]
+K:620:0xCE/0x93
+
+# [Insect]
+K:621:0xCE/0x93
+
+# [Sparrow]
+K:622:0xCE/0x93
+
+# [Ent]
+K:623:0xCE/0x93
+
+# [Vampire]
+K:624:0xCE/0x93
+
+# [Spider]
+K:625:0xCE/0x93
+
+# [Mana ball]
+K:626:0xCE/0x93
+
+# [Fire cloud]
+K:627:0xCE/0x93
+
+# [Cold cloud]
+K:628:0xCE/0x93
+
+# [Chaos Cloud]
+K:629:0xCE/0x93
+
+# [Ghost]
+K:630:0xCE/0x93
+
+# [Kobold]
+K:631:0xCE/0x93
+
+# [Dragon]
+K:632:0xCE/0x93
+
+# [Demon]
+K:633:0xCE/0x93
+
+# [Hound]
+K:634:0xCE/0x93
+
+# [Quylthulg]
+K:635:0xCE/0x93
+
+# [Maia]
+K:636:0xCE/0x93
+
+# [Serpent]
+K:637:0xCE/0x93
+
+# [Giant]
+K:638:0xCE/0x93
+
+# [Vala]
+K:639:0xCE/0x93
+
+# Magic
+K:640:0xD9/0x82
+
+# corpse
+K:641:0xB4/0x90
+
+# skeleton
+K:642:0xB4/0x8B
+
+# head
+K:643:0xB4/0x8E
+
+# skull
+K:644:0xB4/0x8F
+
+# raw meat
+K:645:0xB4/0x8C
+
+# Dragonrider Coat
+K:646:0xCE/0x98
+
+# Stone of Lore
+K:647:0xD8/0x90
+
+# small wooden boomerang
+K:648:0xCE/0x99
+
+# large wooden boomerang
+K:649:0xCE/0x9A
+
+# small metal boomerang
+K:650:0xCE/0x9B
+
+# large metal boomerang
+K:651:0xCE/0x9C
+
+# The Space-Time Anchor
+K:652:0xD8/0x91
+
+# Summon never-moving pet
+K:654:0x86/0x80
+
+# [Life in symbiosis]
+K:655:0xA3/0x84
+
+# [Perfect Symbiosis]
+K:656:0xA3/0x85
+
+# Cure Light Insanity
+K:657:0xBC/0x85
+
+# Cure Serious Insanity
+K:658:0xBC/0x85
+
+# Cure Critical Insanity
+K:659:0xBC/0x85
+
+# Cure Insanity
+K:660:0xBC/0x85
+
+# & Phial~
+K:661:0x87/0x9D
+
+# Craftmanship
+K:663:0x86/0x82
+
+# The One Ring
+K:664:0xD8/0x81
+
+# [Apprentice Handbook]
+K:665:0xA3/0x81
+
+# [Minstrel's Music]
+K:666:0xA3/0x81
+
+# [Harps of Rivendell]
+K:667:0x8A/0x90
+
+# [Lays of Beleriand]
+K:668:0x8A/0x90
+
+# & Flute~
+K:669:0xD8/0x88
+
+# & Drum~
+K:670:0xD8/0x89
+
+# & Harp~
+K:671:0xD8/0x8A
+
+# & Banjo~
+K:672:0xD8/0x8B
+
+# & Lute~
+K:673:0xD8/0x8C
+
+# & Mandolin~
+K:674:0xD8/0x8D
+
+# Palantir of Orthanc
+K:675:0xD8/0x8F
+
+# Egg
+K:676:0xD8/0x84
+
+# Reset Recall
+K:677:0x86/0x81
+
+# Divination
+K:678:0x86/0x81
+
+# Rune: Self
+K:679:0xDA/0x80
+
+# Rune: Ray
+K:680:0xDA/0x80
+
+# Rune: Sphere
+K:681:0xDA/0x80
+
+# Rune: Knowledge
+K:682:0xDA/0x80
+
+# Rune: Life
+K:683:0xDA/0x84
+
+# Rune: Fire
+K:684:0xDA/0x81
+
+# Rune: Cold
+K:685:0xDA/0x80
+
+# Rune: Lightning
+K:686:0xDA/0x85
+
+# Rune: Acid
+K:687:0xDA/0x88
+
+# Rune: Element
+K:688:0xDA/0x89
+
+# Rune: Chaos
+K:689:0xDA/0x83
+
+# Rune: Mind
+K:690:0xDA/0x84
+
+# Rune: Holding
+K:691:0xDA/0x84
+
+# Rune: Arrow
+K:692:0xDA/0x80
+
+# Rune: Power Surge
+K:693:0xDA/0x80
+
+# Rune: Armageddon
+K:694:0xDA/0x80
+
+# Rune: Gravity
+K:695:0xDA/0x82
+
+# Essence: Extra Life
+K:696:0xD9/0x82
+
+# Rune: Undeath
+K:697:0xDA/0x82
+
+# Rune: Protection
+K:698:0xDA/0x82
+
+# Horn
+K:699:0xD8/0x8E
+
+# The Ring of Precognition
+K:700:0xB5/0x8E
+
+# Sprig of Athelas
+K:701:0xCE/0x96
+
+# [Magic for Beginners]
+K:702:0x8A/0x80
+
+# [Conjurings and Tricks]
+K:703:0x8A/0x80
+
+# [Incantations and Illusions]
+K:704:0x8A/0x80
+
+# [Sorcery and Evocations]
+K:705:0x8A/0x80
+
+# [Beginners Handbook]
+K:706:0x8A/0x89
+
+# [Words of Wisdom]
+K:707:0x8A/0x89
+
+# [Chants and Blessings]
+K:708:0x8A/0x89
+
+# [Exorcism and Dispelling]
+K:709:0x8A/0x89
+
+# [Resistance of Scarabtarices]
+K:710:0x8A/0x88
+
+# [Mordenkainen's Escapes]
+K:711:0x8A/0x88
+
+# [Kelek's Grimoire of Power]
+K:712:0x8A/0x88
+
+# [Tenser's Transformations]
+K:713:0x8A/0x88
+
+# [Raal's Tome of Destruction]
+K:714:0x8A/0x88
+
+# [Ethereal Openings]
+K:715:0x8A/0x85
+
+# [Godly Insights]
+K:716:0x8A/0x85
+
+# [Purifications and Healing]
+K:717:0x8A/0x85
+
+# [Holy Infusions]
+K:718:0x8A/0x85
+
+# [Wrath of God]
+K:719:0x8A/0x85
+
+# & Old Scroll~ of Deincarnation
+K:720:0x85/0x80
+
+# Dark Sword
+K:721:0xCE/0x9D
+
+# Numenorean for beginners (I)
+K:722:0xD8/0x81
+
+# Numenorean for beginners (II)
+K:723:0xD8/0x81
+
+# Advanced lessons of Numenorean
+K:724:0xD8/0x81
+
+# Advanced lessons of Sindarin
+K:725:0xD8/0x81
+
+# & Shard~ of Pottery
+K:726:0x8B/0x88
+
+# & Broken Stick~
+K:727:0x8B/0x89
+
+# Wall Creation
+K:728:0xB5/0x80
+
+# [Illusions for Beginners]
+K:729:0xA3/0x86
+
+# [Tricks and Visions]
+K:730:0xA3/0x86
+
+# [Phantasms and Illusions]
+K:731:0xA3/0x86
+
+# [Shadows and Prisms]
+K:732:0xA3/0x86
+
+# [Serten's Immunities]
+K:733:0xA3/0x87
+
+# [Knowledge of Kenault]
+K:734:0xA3/0x87
+
+# [Otiluke's Spheres]
+K:735:0xA3/0x87
+
+# [Boccob's Book of Shadows]
+K:736:0xA3/0x87
+
+# [Bigby's Handbook]
+K:737:0xA3/0x87
+
+# [Hunt of Orome]
+K:738:0xA3/0x8B
+
+# [Holy Sanctifications]
+K:739:0xA3/0x8B
+
+# [Secrets of the Feanturi]
+K:740:0xA3/0x8B
+
+# [War of Wrath]
+K:741:0xA3/0x8B
+
+# [Gifts of Iluvatar]
+K:742:0xA3/0x8B
+
+# & Potion~ of Learning
+K:743:0x87/0x86
+
+# [Eye of Sauron]
+K:744:0xA3/0x93
+
+# [Flame of Udun]
+K:745:0xA3/0x93
+
+# [Corruptions of Melkor]
+K:746:0xA3/0x93
+
+# [Crescent of Morgul]
+K:747:0xA3/0x93
+
+# [Morgoth's Ring]
+K:748:0xA3/0x93
+
+# Scroll: Spell
+K:749:0x86/0x82
+
+# Staff: Wishing
+K:750:0xB9/0x9B
+
+# Khuzdul - The hidden tongue of the Dwarves
+K:751:0xD8/0x81
+
+# Nandorin for dummies
+K:752:0xD8/0x81
+
+# Advanced lessons of Orcish
+K:753:0xD8/0x81
+
+# Ring: Flying
+K:755:0xB5/0x80
+
+# [Powerful Sigils]
+K:756:0xA3/0x8D
+
+# [Disruptive Forces]
+K:758:0xA3/0x8D
+
+# [Forces of the Mind]
+K:759:0xA3/0x8D
+
+# [Power of Ancient Sorcerors]
+K:760:0xA3/0x8D
+
+# [Tricks of the Wild]
+K:761:0xBC/0x93
+
+# [Mastering the Rituals]
+K:762:0xBC/0x93
+
+# [Rites of Power]
+K:763:0xBC/0x94
+
+# [Tribal Power]
+K:764:0xBC/0x94
+
+# [Aiding Shades]
+K:765:0xA3/0x8F
+
+# [Morgoth's Space-Time Warpings]
+K:766:0xA3/0x8F
+
+# [Murazor's Tome of Conjuring & Dispelling]
+K:767:0xA3/0x8F
+
+# [Channeling the Void]
+K:768:0xA3/0x8F
+
+# [Sauron's Forgotten Tome]
+K:769:0xA3/0x8F
+
+# Ring of Phasing
+K:770:0xB5/0x8E
+
+# [Earth]
+K:771:0xD8/0x82
+
+# [Fire]
+K:772:0xD8/0x82
+
+# [Air]
+K:773:0xD8/0x83
+
+# [Water]
+K:774:0xD8/0x83
+
+# [Mana]
+K:775:0xD8/0x83
+
+# Rod Tip: Home Summoning
+K:776:0xB8/0x84
+
+# Shadow Blade
+K:777:0xCD/0x9C
+
+# Bluesteel Blade
+K:778:0xCE/0x9E
+
+# Amulet: of the Serpents
+K:779:0xB6/0x9F
+
+# Darkness
+K:780:0xD9/0x82
+
+# Knowledge
+K:781:0xD9/0x82
+
+# Force
+K:782:0xD9/0x82
+
+# Lightning
+K:783:0xD9/0x82
+
+# Mana
+K:784:0xD9/0x82
+
+# Nazgul Ring
+K:785:0xB5/0x85
+
+# Climbing Set
+K:786:0xD8/0x92
+
+# Adventurer's guide to Middle-earth
+K:787:0xD8/0x80
+
+# [Dark Incantations]
+K:788:0xCE/0x94
+
+# [Immortal Rituals]
+K:789:0xCE/0x94
+
+# [Minions of Azathoth]
+K:790:0xCE/0x95
+
+# [Demonthoughts]
+K:791:0xCE/0x95
+
+# [Hellfire Tome]
+K:792:0xCE/0x95
+
+# Rod: Wooden
+K:793:0xDB/0x80
+
+# Rod: Copper
+K:794:0xDB/0x81
+
+# Rod: Iron
+K:795:0xDB/0x82
+
+# Rod: Aluminium
+K:796:0xDB/0x83
+
+# Rod: Silver
+K:797:0xDB/0x84
+
+# Rod: Golden
+K:798:0xDB/0x85
+
+# Rod: Mithril
+K:799:0xDB/0x86
+
+# Rod: Adamantite
+K:800:0xDB/0x87
+
+# Greater Ration of Health
+K:801:0x8A/0x9E
+
+# Scroll of Mass Ressurrection
+K:802:0x86/0x82
+
+# Cleaver
+K:803:0xD8/0x93
+
+# Light War Axe
+K:804:0xD8/0x94
+
+# Slaughter Axe
+K:805:0xD8/0x95
+
+# Runestone
+K:806:0xDA/0x83
+
+# Fortune Cookie
+K:807:0x8A/0x93
+
+# Portable Hole
+K:808:0xD8/0x96
+
+# Ring: Critical Hits
+K:809:0xB5/0x82
+
+# Wand of Digging of Thrain
+K:810:0xB8/0x97
+
+# Gnarled Staff of Holy Fire of Mithrandir
+K:811:0xCE/0x9F
+
+# Partial Totem
+K:812:0xB4/0x82
+
+# True Totem
+K:813:0xB4/0x85
+
+# Player
+R:0:0x8C/0x81
+
+# Filthy street urchin
+R:1:0x9B/0x8A
+
+# Scrawny cat
+R:2:0x98/0x8B
+
+# Sparrow
+R:3:0xBD/0x87
+
+# Chaffinch
+R:4:0xBD/0x86
+
+# Wild rabbit
+R:5:0xBF/0x85
+
+# Woodsman
+R:6:0xBD/0x88
+
+# Scruffy little dog
+R:7:0x8E/0x9D
+
+# Farmer Maggot
+R:8:0x9B/0x8B
+
+# Blubbering idiot
+R:9:0x9B/0x8C
+
+# Boil-covered wretch
+R:10:0x9B/0x8D
+
+# Village idiot
+R:11:0x9B/0x8E
+
+# Pitiful-looking beggar
+R:12:0xBB/0x82
+
+# Mangy-looking leper
+R:13:0x9B/0x90
+
+# Agent of the black market
+R:14:0xA2/0x94
+
+# Singing, happy drunk
+R:15:0x9B/0x92
+
+# Aimless-looking merchant
+R:16:0x9B/0x93
+
+# Mean-looking mercenary
+R:17:0x9B/0x94
+
+# Battle-scarred veteran
+R:18:0x9B/0x95
+
+# Martti Ihrasaari
+R:19:0xA1/0x8D
+
+# Grey mold
+R:20:0x9A/0x88
+
+# Large white snake
+R:21:0x93/0x8A
+
+# Grey mushroom patch
+R:22:0x8E/0x85
+
+# Newt
+R:23:0xA0/0x86
+
+# Giant white centipede
+R:24:0x96/0x9E
+
+# White icky thing
+R:25:0x99/0x8C
+
+# Clear icky thing
+R:26:0x99/0x8D
+
+# Giant white mouse
+R:27:0x9D/0x8F
+
+# Large brown snake
+R:28:0x93/0x92
+
+# Small kobold
+R:29:0x9A/0x82
+
+# Kobold
+R:30:0x9A/0x83
+
+# White worm mass
+R:31:0x9E/0x88
+
+# Floating eye
+R:32:0x98/0x84
+
+# Rock lizard
+R:33:0x93/0x8B
+
+# Grid bug
+R:34:0xA2/0x9B
+
+# Jackal
+R:35:0x8E/0x9E
+
+# Soldier ant
+R:36:0x96/0x8F
+
+# Fruit bat
+R:37:0x96/0x98
+
+# Insect swarm
+R:38:0xBD/0x89
+
+# The Greater hell-beast
+R:39:0xA2/0x82
+
+# Shrieker mushroom patch
+R:40:0x8E/0x86
+
+# Blubbering icky thing
+R:41:0x99/0x8E
+
+# Metallic green centipede
+R:42:0x96/0x9F
+
+# Novice warrior
+R:43:0x9B/0x96
+
+# Novice rogue
+R:44:0x9B/0x97
+
+# Novice priest
+R:45:0x9B/0x98
+
+# Novice mage
+R:46:0x9B/0x99
+
+# Yellow mushroom patch
+R:47:0x8E/0x87
+
+# White jelly
+R:48:0x99/0x93
+
+# Giant black ant
+R:49:0x96/0x90
+
+# Salamander
+R:50:0x93/0x8D
+
+# White harpy
+R:51:0x91/0x8C
+
+# Blue yeek
+R:52:0x9E/0x92
+
+# Grip, Farmer Maggot's dog
+R:53:0x8E/0x9F
+
+# Wolf, Farmer Maggot's dog
+R:54:0xBD/0x8A
+
+# Fang, Farmer Maggot's dog
+R:55:0x8F/0x80
+
+# Giant green frog
+R:56:0x93/0x8C
+
+# Freesia
+R:57:0xBC/0x98
+
+# Green worm mass
+R:58:0x9E/0x89
+
+# Large yellow snake
+R:59:0x93/0x91
+
+# Cave spider
+R:60:0x94/0x82
+
+# Crow
+R:61:0xBD/0x8B
+
+# Wild cat
+R:62:0x98/0x8C
+
+# Smeagol
+R:63:0x9B/0x9A
+
+# Green ooze
+R:64:0x99/0x94
+
+# Poltergeist
+R:65:0x90/0x9D
+
+# Yellow jelly
+R:66:0x99/0x96
+
+# Metallic blue centipede
+R:67:0x97/0x80
+
+# Raven
+R:68:0xBD/0x8C
+
+# Giant white louse
+R:69:0x9A/0x86
+
+# Giant yellow centipede
+R:70:0x96/0x9D
+
+# Black naga
+R:71:0x9A/0x91
+
+# Spotted mushroom patch
+R:72:0x8E/0x88
+
+# Silver jelly
+R:73:0x99/0x95
+
+# Scruffy-looking hobbit
+R:74:0x98/0x9C
+
+# Giant white ant
+R:75:0x96/0x91
+
+# Yellow mold
+R:76:0x9A/0x89
+
+# Metallic red centipede
+R:77:0x97/0x81
+
+# Yellow worm mass
+R:78:0x9E/0x8A
+
+# Clear worm mass
+R:79:0x9E/0x8B
+
+# Radiation eye
+R:80:0x98/0x85
+
+# Yellow light
+R:81:0xBD/0x92
+
+# Cave lizard
+R:82:0x93/0x8F
+
+# Novice ranger
+R:83:0x9B/0x9B
+
+# Blue jelly
+R:84:0x99/0x97
+
+# Creeping copper coins
+R:85:0x8E/0x80
+
+# Giant white rat
+R:86:0x9D/0x90
+
+# Snotling
+R:87:0xBD/0x8D
+
+# Swordfish
+R:88:0xBE/0x81
+
+# Blue worm mass
+R:89:0x9E/0x8C
+
+# Large grey snake
+R:90:0x93/0x90
+
+# Skeleton kobold
+R:91:0x9D/0x93
+
+# Ewok
+R:92:0xBB/0x90
+
+# Novice mage
+R:93:0x9B/0x9D
+
+# Green naga
+R:94:0x9A/0x92
+
+# Giant leech
+R:95:0xBD/0x8E
+
+# Barracuda
+R:96:0xBE/0x82
+
+# Novice paladin
+R:97:0x9B/0x9C
+
+# Zog
+R:98:0xBD/0x8F
+
+# Blue ooze
+R:99:0x99/0x98
+
+# Green glutton ghost
+R:100:0x90/0x9E
+
+# Green jelly
+R:101:0x99/0x99
+
+# Large kobold
+R:102:0x9A/0x84
+
+# Grey icky thing
+R:103:0x99/0x8F
+
+# Disenchanter eye
+R:104:0x98/0x86
+
+# Red worm mass
+R:105:0x9E/0x8D
+
+# Copperhead snake
+R:106:0x93/0x91
+
+# Death sword
+R:107:0x89/0x85
+
+# Purple mushroom patch
+R:108:0x8E/0x89
+
+# Novice priest
+R:109:0x9B/0x9E
+
+# Novice warrior
+R:110:0x9B/0x9F
+
+# Nibelung
+R:111:0xBB/0x8E
+
+# The disembodied hand that strangled people
+R:112:0x9F/0x87
+
+# Brown mold
+R:113:0x9A/0x8A
+
+# Giant brown bat
+R:114:0x96/0x99
+
+# Rat-thing
+R:115:0xBD/0x90
+
+# Novice rogue
+R:116:0x9C/0x81
+
+# Creeping silver coins
+R:117:0x8E/0x81
+
+# Snaga
+R:118:0x9A/0x97
+
+# Rattlesnake
+R:119:0x93/0x92
+
+# Giant slug
+R:120:0xBD/0x93
+
+# Giant pink frog
+R:121:0x93/0x93
+
+# Dark elf
+R:122:0x98/0x9E
+
+# Zombified kobold
+R:123:0x9E/0x97
+
+# Crypt creep
+R:124:0x9F/0x93
+
+# Rotting corpse
+R:125:0xBB/0x8B
+
+# Cave orc
+R:126:0x9A/0x98
+
+# Wood spider
+R:127:0x94/0x83
+
+# Manes
+R:128:0x91/0x96
+
+# Bloodshot eye
+R:129:0x98/0x87
+
+# Red naga
+R:130:0x9A/0x93
+
+# Red jelly
+R:131:0x99/0x9A
+
+# Green icky thing
+R:132:0x99/0x90
+
+# Lost soul
+R:133:0x90/0x9F
+
+# Night lizard
+R:134:0x93/0x94
+
+# Mughash, the Kobold Lord
+R:135:0x9A/0x85
+
+# Skeleton orc
+R:136:0x9D/0x94
+
+# Wormtongue, Agent of Saruman
+R:137:0xBC/0x9A
+
+# Robin Hood, the Outlaw
+R:138:0xBB/0x88
+
+# Nurgling
+R:139:0xBD/0x94
+
+# Lagduf, the Snaga
+R:140:0x9A/0x99
+
+# Brown yeek
+R:141:0x9E/0x93
+
+# Novice ranger
+R:142:0x9B/0x9B
+
+# Giant salamander
+R:143:0x93/0x95
+
+# Space monster
+R:144:0x8A/0x9B
+
+# Carnivorous flying monkey
+R:145:0xBD/0x95
+
+# Green mold
+R:146:0x9A/0x8B
+
+# Novice paladin
+R:147:0x9B/0x9C
+
+# Lemure
+R:148:0x91/0x97
+
+# Hill orc
+R:149:0x9A/0x9A
+
+# Bandit
+R:150:0x9C/0x85
+
+# Hunting hawk
+R:151:0x96/0x99
+
+# Phantom warrior
+R:152:0xA0/0x83
+
+# Gremlin
+R:153:0xA1/0x86
+
+# Yeti
+R:154:0x95/0x99
+
+# Bloodshot icky thing
+R:155:0x99/0x91
+
+# Giant grey rat
+R:156:0x9D/0x91
+
+# Black harpy
+R:157:0x91/0x8D
+
+# Skaven
+R:158:0xBD/0x96
+
+# The wounded bear
+R:159:0xBD/0x98
+
+# Cave bear
+R:160:0xB0/0x82
+
+# Rock mole
+R:161:0xBD/0x99
+
+# Mindcrafter
+R:162:0xB0/0x85
+
+# Baby blue dragon
+R:163:0x97/0x86
+
+# Baby white dragon
+R:164:0x97/0x87
+
+# Baby green dragon
+R:165:0x97/0x88
+
+# Baby black dragon
+R:166:0x97/0x89
+
+# Baby red dragon
+R:167:0x97/0x8A
+
+# Giant red ant
+R:168:0x96/0x96
+
+# Brodda, the Easterling
+R:169:0x9C/0x86
+
+# Bloodfang, the Wolf
+R:170:0xBD/0x9A
+
+# King cobra
+R:171:0x93/0x96
+
+# Eagle
+R:172:0xBD/0x9B
+
+# War bear
+R:173:0x9F/0x9D
+
+# Killer bee
+R:174:0xA0/0x88
+
+# Giant spider
+R:175:0x94/0x87
+
+# Giant white tick
+R:176:0x9D/0x9C
+
+# The Borshin
+R:177:0xBD/0x9C
+
+# Dark elven mage
+R:178:0x98/0x9F
+
+# Kamikaze yeek
+R:179:0xBD/0x9D
+
+# Orfax, Son of Boldor
+R:180:0x9E/0x94
+
+# Servant of Glaaki
+R:181:0xBD/0x9E
+
+# Dark elven warrior
+R:182:0x99/0x80
+
+# Sand-dweller
+R:183:0xBF/0x80
+
+# Clear mushroom patch
+R:184:0x8E/0x8A
+
+# Quiver slot
+R:185:0x89/0x9A
+
+# Grishnakh, the Hill Orc
+R:186:0x9A/0x9C
+
+# Giant tan bat
+R:187:0x96/0x99
+
+# Owlbear
+R:188:0xBF/0x81
+
+# Blue horror
+R:189:0xBF/0x82
+
+# Hairy mold
+R:190:0x9A/0x8C
+
+# Grizzly bear
+R:191:0xBF/0x83
+
+# Disenchanter mold
+R:192:0x9A/0x8D
+
+# Pseudo dragon
+R:193:0xBB/0x9B
+
+# Tengu
+R:194:0x91/0x98
+
+# Creeping gold coins
+R:195:0x8E/0x82
+
+# Wolf
+R:196:0x8F/0x81
+
+# Giant fruit fly
+R:197:0x90/0x95
+
+# Panther
+R:198:0x98/0x8D
+
+# Brigand
+R:199:0x9C/0x87
+
+# Hobbes the Tiger
+R:200:0x98/0x8E
+
+# Shadow Creature of Fiona
+R:201:0xBB/0x8F
+
+# Undead mass
+R:202:0xA0/0x89
+
+# Chaos shapechanger
+R:203:0xA0/0x8E
+
+# Baby multi-hued dragon
+R:204:0x97/0x8C
+
+# Vorpal bunny
+R:205:0xBF/0x84
+
+# Old Man Willow
+R:206:0xBF/0x86
+
+# Hippocampus
+R:207:0xBE/0x85
+
+# Zombified orc
+R:208:0x9E/0x98
+
+# Hippogriff
+R:209:0x91/0x8E
+
+# Black mamba
+R:210:0x93/0x97
+
+# White wolf
+R:211:0x8F/0x82
+
+# Grape jelly
+R:212:0x99/0x9B
+
+# Nether worm mass
+R:213:0x9E/0x8E
+
+# Abyss worm mass
+R:214:0xA0/0x8C
+
+# Golfimbul, the Hill Orc Chief
+R:215:0x9A/0x9D
+
+# Swordsman
+R:216:0x9C/0x89
+
+# Skaven shaman
+R:217:0xBD/0x97
+
+# Baby bronze dragon
+R:218:0xB0/0x89
+
+# Baby gold dragon
+R:219:0xB0/0x8A
+
+# Evil eye
+R:220:0xB0/0x8B
+
+# Mine-dog
+R:221:0xBF/0x88
+
+# Hellcat
+R:222:0xBC/0x97
+
+# Moon beast
+R:223:0xBB/0x9E
+
+# Master yeek
+R:224:0x9E/0x95
+
+# Priest
+R:225:0x9C/0x88
+
+# Dark elven priest
+R:226:0x99/0x82
+
+# Air spirit
+R:227:0x90/0x83
+
+# Skeleton human
+R:228:0x9D/0x95
+
+# Zombified human
+R:229:0x9E/0x99
+
+# Tiger
+R:230:0x98/0x8E
+
+# Moaning spirit
+R:231:0x91/0x80
+
+# Stegocentipede
+R:232:0x97/0x82
+
+# Spotted jelly
+R:233:0x99/0x9C
+
+# Drider
+R:234:0x94/0x85
+
+# Mongbat
+R:235:0xC4/0x80
+
+# Killer brown beetle
+R:236:0x92/0x80
+
+# Boldor, King of the Yeeks
+R:237:0x9E/0x96
+
+# Ogre
+R:238:0x92/0x90
+
+# Creeping mithril coins
+R:239:0x8E/0x83
+
+# Illusionist
+R:240:0x9C/0x8A
+
+# Druid
+R:241:0x9C/0x8B
+
+# Pink horror
+R:242:0xBF/0x89
+
+# Cloaker
+R:243:0xBF/0x8A
+
+# Black orc
+R:244:0x9A/0x9E
+
+# Ochre jelly
+R:245:0x99/0x9D
+
+# Software bug
+R:246:0xA0/0x92
+
+# Lurker
+R:247:0x80/0x80
+
+# Tangleweed
+R:248:0xBE/0x9E
+
+# Vlasta
+R:249:0xBF/0x8C
+
+# Giant white dragon fly
+R:250:0x90/0x97
+
+# Snaga sapper
+R:251:0xBF/0x8D
+
+# Blue icky thing
+R:252:0x99/0x92
+
+# Gibbering mouther
+R:253:0xA0/0x8A
+
+# Wolfhound of Flora
+R:254:0xA0/0x91
+
+# Hill giant
+R:255:0x92/0x96
+
+# Flesh golem
+R:256:0x98/0x92
+
+# Warg
+R:257:0x8F/0x83
+
+# Cheerful leprechaun
+R:258:0xA0/0x93
+
+# Giant flea
+R:259:0x90/0x96
+
+# Ufthak of Cirith Ungol
+R:260:0x9A/0x9F
+
+# Clay golem
+R:261:0x98/0x93
+
+# Black ogre
+R:262:0x92/0x91
+
+# Dweller on the threshold
+R:263:0xC4/0x83
+
+# Half-orc
+R:264:0x9B/0x80
+
+# Dark naga
+R:265:0xBF/0x8E
+
+# Poison ivy
+R:266:0xBE/0x9C
+
+# Magic mushroom patch
+R:267:0x8E/0x8B
+
+# Plaguebearer of Nurgle
+R:268:0xBF/0x8F
+
+# Guardian naga
+R:269:0x9A/0x94
+
+# Wererat
+R:270:0x9D/0x92
+
+# Light hound
+R:271:0x95/0x9B
+
+# Dark hound
+R:272:0x95/0x9C
+
+# Flying skull
+R:273:0xA0/0x95
+
+# Mi-Go
+R:274:0x9F/0x9F
+
+# Giant tarantula
+R:275:0x94/0x86
+
+# Giant clear centipede
+R:276:0x97/0x83
+
+# Mirkwood spider
+R:277:0x94/0x84
+
+# Frost giant
+R:278:0x92/0x97
+
+# Griffon
+R:279:0x91/0x8F
+
+# Homunculus
+R:280:0x91/0x99
+
+# Gnome mage
+R:281:0x99/0x83
+
+# Clear hound
+R:282:0x95/0x9D
+
+# Umber hulk
+R:283:0x94/0x9E
+
+# Rust monster
+R:284:0xBF/0x90
+
+# Ogrillon
+R:285:0xB0/0x8C
+
+# Gelatinous cube
+R:286:0x99/0x9E
+
+# Giant green dragon fly
+R:287:0x90/0x98
+
+# Fire giant
+R:288:0x92/0x98
+
+# Hummerhorn
+R:289:0x90/0x99
+
+# Lizard man
+R:290:0xBF/0x91
+
+# Ulfast, Son of Ulfang
+R:291:0x9C/0x8C
+
+# Crebain
+R:292:0xC4/0x94
+
+# Berserker
+R:293:0xBF/0x92
+
+# Quasit
+R:294:0x91/0x9A
+
+# Sphinx
+R:295:0xBF/0x93
+
+# Imp
+R:296:0x91/0x9B
+
+# Forest troll
+R:297:0x94/0x8E
+
+# Freezing sphere
+R:298:0xBF/0x94
+
+# Jumping fireball
+R:299:0xBF/0x95
+
+# Ball lightning
+R:300:0xBF/0x96
+
+# 2-headed hydra
+R:301:0x93/0x98
+
+# Swamp thing
+R:302:0xBF/0x97
+
+# Water spirit
+R:303:0x90/0x84
+
+# Giant red scorpion
+R:304:0x94/0x8C
+
+# Earth spirit
+R:305:0x90/0x85
+
+# Fire spirit
+R:306:0x90/0x86
+
+# Fire hound
+R:307:0x95/0x9E
+
+# Cold hound
+R:308:0x95/0x9F
+
+# Energy hound
+R:309:0x96/0x80
+
+# Lesser Mimic
+R:310:0x8E/0x8F
+
+# Door mimic
+R:311:0xBF/0x98
+
+# Blink dog
+R:312:0x8F/0x84
+
+# Uruk
+R:313:0x9B/0x82
+
+# Shagrat, the Orc Captain
+R:314:0x9B/0x83
+
+# Gorbag, the Orc Captain
+R:315:0x9B/0x84
+
+# Shambling mound
+R:316:0x8E/0x8C
+
+# Giant Venus Flytrap
+R:317:0xBE/0x9D
+
+# Chaos beastman
+R:318:0xBF/0x99
+
+# Daemonette of Slaanesh
+R:319:0xBF/0x9A
+
+# Giant bronze dragon fly
+R:320:0x90/0x9C
+
+# Stone giant
+R:321:0x92/0x99
+
+# Giant black dragon fly
+R:322:0x90/0x9A
+
+# Stone golem
+R:323:0x98/0x94
+
+# Red mold
+R:324:0x9A/0x8E
+
+# Giant gold dragon fly
+R:325:0x90/0x9B
+
+# Stunwall
+R:326:0xBF/0x9B
+
+# Ghast
+R:327:0xBF/0x9C
+
+# Neekerbreeker
+R:328:0xBE/0x86
+
+# Huorn
+R:329:0xBF/0x9D
+
+# Bolg, Son of Azog
+R:330:0x9B/0x85
+
+# Phase spider
+R:331:0x94/0x89
+
+# Lizard king
+R:332:0xBF/0x9E
+
+# Landmine
+R:333:0xBF/0x9F
+
+# Wyvern
+R:334:0xA0/0x97
+
+# Great eagle
+R:335:0xC0/0x80
+
+# Livingstone
+R:336:0x80/0x82
+
+# Earth hound
+R:337:0x96/0x81
+
+# Air hound
+R:338:0x96/0x82
+
+# Sabre-tooth tiger
+R:339:0x98/0x8F
+
+# Acid hound
+R:340:0x96/0x83
+
+# Chimaera
+R:341:0x91/0x90
+
+# Quylthulg
+R:342:0x92/0x9F
+
+# Sasquatch
+R:343:0x95/0x9A
+
+# Weir
+R:344:0xA0/0x96
+
+# Ranger
+R:345:0x9C/0x83
+
+# Paladin
+R:346:0x8D/0x9C
+
+# Werewolf
+R:347:0x8F/0x85
+
+# Dark elven lord
+R:348:0x99/0x85
+
+# Cloud giant
+R:349:0x92/0x9A
+
+# Ugluk, the Uruk
+R:350:0x9B/0x86
+
+# Blue dragon bat
+R:351:0x96/0x9A
+
+# Mimic
+R:352:0x86/0x82
+
+# Ultimate Mimic
+R:353:0xC0/0x83
+
+# Fire vortex
+R:354:0x9D/0x9E
+
+# Acid vortex
+R:355:0x9D/0x9F
+
+# Lugdush, the Uruk
+R:356:0x9B/0x87
+
+# Arch-vile
+R:357:0xC0/0x84
+
+# Cold vortex
+R:358:0x9E/0x80
+
+# Energy vortex
+R:359:0x9E/0x81
+
+# Globefish
+R:360:0xBE/0x8D
+
+# Giant firefly
+R:361:0xB0/0x8D
+
+# Mummified orc
+R:362:0x92/0x8D
+
+# Wolf chieftain
+R:363:0xBE/0x8E
+
+# Serpent man
+R:364:0xC0/0x85
+
+# Vampiric mist
+R:365:0xC0/0x86
+
+# Killer stag beetle
+R:366:0x92/0x81
+
+# Iron golem
+R:367:0x98/0x95
+
+# Auto-roller
+R:368:0xA0/0x98
+
+# Giant yellow scorpion
+R:369:0x94/0x8A
+
+# Jade monk
+R:370:0xC0/0x87
+
+# Black ooze
+R:371:0x99/0x9F
+
+# Hardened warrior
+R:372:0x9C/0x8D
+
+# Azog, King of the Uruk-Hai
+R:373:0x9B/0x88
+
+# Fleshhound of Khorne
+R:374:0xC0/0x89
+
+# Dark elven warlock
+R:375:0xA0/0x81
+
+# Master rogue
+R:376:0x9C/0x8E
+
+# Red dragon bat
+R:377:0x96/0x9B
+
+# Killer white beetle
+R:378:0x96/0x91
+
+# Ice skeleton
+R:379:0xC0/0x8A
+
+# Angamaite of Umbar
+R:380:0x9C/0x90
+
+# Forest wight
+R:381:0x95/0x83
+
+# Khim, Son of Mim
+R:382:0x99/0x87
+
+# Ibun, Son of Mim
+R:383:0x99/0x86
+
+# Meneldor the Swift
+R:384:0xC0/0x8B
+
+# Phantom beast
+R:385:0xA0/0x84
+
+# Giant silver ant
+R:386:0xB0/0x87
+
+# 4-headed hydra
+R:387:0x93/0x9A
+
+# Lesser hell-beast
+R:388:0xC0/0x8C
+
+# Tyrannosaur
+R:389:0x9F/0x94
+
+# Mummified human
+R:390:0x92/0x8E
+
+# Vampire bat
+R:391:0x96/0x9C
+
+# Sangahyando of Umbar
+R:392:0x9C/0x8F
+
+# It
+R:393:0x80/0x80
+
+# Banshee
+R:394:0x91/0x81
+
+# Carrion crawler
+R:395:0x97/0x84
+
+# Xiclotlan
+R:396:0xC0/0x8D
+
+# Silent watcher
+R:397:0xA0/0x9A
+
+# Pukelman
+R:398:0x98/0x96
+
+# Disenchanter beast
+R:399:0xC0/0x8E
+
+# Dark elven druid
+R:400:0x99/0x88
+
+# Stone troll
+R:401:0x94/0x9A
+
+# Black
+R:402:0xC0/0x8F
+
+# Hill troll
+R:403:0xB0/0x8F
+
+# Wereworm
+R:404:0x9E/0x8F
+
+# Killer red beetle
+R:405:0x92/0x83
+
+# Disenchanter bat
+R:406:0xB0/0x9B
+
+# Gnoph-Keh
+R:407:0xC0/0x90
+
+# Giant grey ant
+R:408:0x96/0x95
+
+# Khufu, the Mummified King
+R:409:0xA0/0x9C
+
+# Gwaihir the Windlord
+R:410:0xC0/0x91
+
+# Giant fire tick
+R:411:0x9D/0x9D
+
+# Displacer beast
+R:412:0x98/0x90
+
+# Ulwarth, Son of Ulfang
+R:413:0x9C/0x91
+
+# Werebear
+R:414:0xB1/0x96
+
+# Cave ogre
+R:415:0x92/0x92
+
+# White wraith
+R:416:0x95/0x84
+
+# Angel
+R:417:0x8E/0x92
+
+# Ghoul
+R:418:0xBB/0x8C
+
+# Mim, Betrayer of Turin
+R:419:0x99/0x89
+
+# Hellblade
+R:420:0x89/0x87
+
+# Killer fire beetle
+R:421:0x92/0x84
+
+# Beast of Nurgle
+R:422:0xC0/0x92
+
+# Creeping adamantite coins
+R:423:0x8E/0x84
+
+# Algroth
+R:424:0x94/0x91
+
+# Flamer of Tzeentch
+R:425:0xC0/0x93
+
+# Roper
+R:426:0xC0/0x94
+
+# Headless
+R:427:0x9F/0x86
+
+# Vibration hound
+R:428:0x96/0x84
+
+# Nexus hound
+R:429:0x96/0x8A
+
+# Half-ogre
+R:430:0xB0/0x9E
+
+# Lokkak, the Ogre Chieftain
+R:431:0xA1/0x80
+
+# Vampire
+R:432:0x94/0x9F
+
+# Gorgimaera
+R:433:0x91/0x91
+
+# Shantak
+R:434:0xA0/0x9D
+
+# Colbran
+R:435:0x98/0x97
+
+# Spirit naga
+R:436:0x9A/0x95
+
+# Corpser
+R:437:0xC0/0x95
+
+# Fiend of Slaanesh
+R:438:0xC0/0x96
+
+# Stairway to Hell
+R:439:0x81/0x9E
+
+# 5-headed hydra
+R:440:0x93/0x9B
+
+# Barney the Dinosaur
+R:441:0x9F/0x96
+
+# Black knight
+R:442:0x9C/0x92
+
+# Seahorse
+R:443:0xBE/0x91
+
+# Cyclops
+R:444:0xC0/0x97
+
+# Clairvoyant
+R:445:0xC0/0x98
+
+# Purple worm
+R:446:0x9E/0x90
+
+# Catoblepas
+R:447:0x9D/0x8B
+
+# Lesser wall monster
+R:448:0x80/0x82
+
+# Mage
+R:449:0x9C/0x94
+
+# Mind flayer
+R:450:0x9C/0x95
+
+# The Ultimate Dungeon Cleaner
+R:451:0xA0/0x99
+
+# Deep one
+R:452:0xC0/0x99
+
+# Basilisk
+R:453:0xBB/0x9F
+
+# Ice troll
+R:454:0x94/0x92
+
+# Dhole
+R:455:0xA1/0x82
+
+# Archangel
+R:456:0x8E/0x93
+
+# Greater Mimic
+R:457:0x82/0x81
+
+# Chaos tile
+R:458:0xA2/0x86
+
+# Young blue dragon
+R:459:0x97/0x8D
+
+# Young white dragon
+R:460:0x97/0x8E
+
+# Young green dragon
+R:461:0x97/0x8F
+
+# Young bronze dragon
+R:462:0x97/0x90
+
+# Aklash
+R:463:0xC0/0x9A
+
+# Mithril golem
+R:464:0x98/0x98
+
+# Skeleton troll
+R:465:0x9D/0x96
+
+# Skeletal tyrannosaur
+R:466:0xC0/0x9B
+
+# Beorn, the Shape-Changer
+R:467:0xA1/0x92
+
+# Thorondor, Lord of Eagles
+R:468:0xC0/0x9C
+
+# Giant blue ant
+R:469:0x96/0x94
+
+# Grave wight
+R:470:0x95/0x85
+
+# Shadow drake
+R:471:0x97/0x91
+
+# Manticore
+R:472:0x91/0x92
+
+# Giant army ant
+R:473:0x96/0x95
+
+# Killer slicer beetle
+R:474:0x92/0x85
+
+# Gorgon
+R:475:0xC0/0x9D
+
+# Gug
+R:476:0xC0/0x9E
+
+# Ghost
+R:477:0x91/0x82
+
+# Death watch beetle
+R:478:0x92/0x86
+
+# Mountain ogre
+R:479:0x92/0x95
+
+# Nexus quylthulg
+R:480:0x93/0x80
+
+# Shelob, Spider of Darkness
+R:481:0x94/0x8B
+
+# Giant squid
+R:482:0xBE/0x87
+
+# Ghoulking
+R:483:0xC0/0x9F
+
+# Doombat
+R:484:0xC1/0x80
+
+# Ninja
+R:485:0x9C/0x96
+
+# Memory moss
+R:486:0x9A/0x8F
+
+# Storm giant
+R:487:0x92/0x9B
+
+# Spectator
+R:488:0xA0/0x85
+
+# Bokrug
+R:489:0xC1/0x81
+
+# Biclops
+R:490:0xC1/0x82
+
+# Half-troll
+R:491:0x94/0x94
+
+# Ivory monk
+R:492:0xC0/0x88
+
+# Bert the Stone Troll
+R:493:0x94/0x95
+
+# Bill the Stone Troll
+R:494:0x94/0x96
+
+# Tom the Stone Troll
+R:495:0x94/0x97
+
+# Cave troll
+R:496:0x94/0x93
+
+# Anti-paladin
+R:497:0xA1/0x84
+
+# Chaos master
+R:498:0xBB/0x84
+
+# Barrow wight
+R:499:0x95/0x86
+
+# Skeleton ettin
+R:500:0x9D/0x97
+
+# Chaos drake
+R:501:0xBB/0x9A
+
+# Law drake
+R:502:0x97/0x93
+
+# Balance drake
+R:503:0x97/0x94
+
+# Ethereal drake
+R:504:0x97/0x95
+
+# Groo, the Wanderer
+R:505:0xA1/0x81
+
+# Fasolt the Giant
+R:506:0xBB/0x83
+
+# Shade
+R:507:0x91/0x83
+
+# Spectre
+R:508:0xA2/0x85
+
+# Water troll
+R:509:0x94/0x98
+
+# Fire elemental
+R:510:0x90/0x87
+
+# Cherub
+R:511:0x8E/0x94
+
+# Water elemental
+R:512:0x90/0x88
+
+# Multi-hued hound
+R:513:0xA2/0x83
+
+# Invisible stalker
+R:514:0x90/0x89
+
+# Carrion crawler
+R:515:0x97/0x85
+
+# Master thief
+R:516:0x9C/0x98
+
+# The Watcher in the Water
+R:517:0xBB/0x87
+
+# Lich
+R:518:0x92/0x88
+
+# Gas spore
+R:519:0xC1/0x83
+
+# Master vampire
+R:520:0x95/0x80
+
+# Oriental vampire
+R:521:0xA1/0x88
+
+# Greater mummy
+R:522:0xC1/0x84
+
+# Bloodletter of Khorne
+R:523:0xC1/0x85
+
+# Giant grey scorpion
+R:524:0xBB/0x9D
+
+# Earth elemental
+R:525:0x90/0x8A
+
+# Air elemental
+R:526:0x90/0x8B
+
+# Shimmering mold
+R:527:0xA2/0x93
+
+# Gargoyle
+R:528:0xC1/0x86
+
+# Malicious leprechaun
+R:529:0xA0/0x94
+
+# Eog golem
+R:530:0x98/0x99
+
+# Little Boy
+R:531:0xC0/0x81
+
+# Dagashi
+R:532:0x9C/0x9A
+
+# Headless ghost
+R:533:0xC1/0x87
+
+# Dread
+R:534:0x91/0x85
+
+# Gauth
+R:536:0xC5/0x8D
+
+# Leng spider
+R:535:0xC1/0x88
+
+# Smoke elemental
+R:537:0x90/0x8D
+
+# Olog
+R:538:0x94/0x99
+
+# Halfling slinger
+R:539:0xBB/0x91
+
+# Gravity hound
+R:540:0x96/0x86
+
+# Acidic cytoplasm
+R:541:0x9A/0x80
+
+# Inertia hound
+R:542:0x96/0x87
+
+# Impact hound
+R:543:0x96/0x88
+
+# Shardstorm
+R:544:0xB0/0x9F
+
+# Ooze elemental
+R:545:0x90/0x8C
+
+# Young black dragon
+R:546:0x97/0x96
+
+# Mumak
+R:547:0x9D/0x8C
+
+# Giant fire ant
+R:548:0x96/0x96
+
+# Mature white dragon
+R:549:0x97/0x97
+
+# Xorn
+R:550:0x95/0x97
+
+# Rogrog the Black Troll
+R:551:0x94/0x9A
+
+# Mist giant
+R:552:0xC1/0x8A
+
+# Phantom
+R:553:0x91/0x87
+
+# Grey wraith
+R:554:0x95/0x87
+
+# Revenant
+R:555:0xC1/0x8B
+
+# Young multi-hued dragon
+R:556:0x97/0x98
+
+# Raal's Tome of Destruction
+R:557:0xA3/0x91
+
+# Colossus
+R:558:0xA0/0x80
+
+# Young gold dragon
+R:559:0x97/0x99
+
+# Mature blue dragon
+R:560:0x97/0x9A
+
+# Mature green dragon
+R:561:0x97/0x9B
+
+# Mature bronze dragon
+R:562:0x97/0x9C
+
+# Young red dragon
+R:563:0x97/0x9D
+
+# Nightblade
+R:564:0xBB/0x92
+
+# Trapper
+R:565:0x8E/0x8E
+
+# Bodak
+R:566:0x91/0x9D
+
+# Time bomb
+R:567:0xC1/0x8C
+
+# Mezzodaemon
+R:568:0xC1/0x8D
+
+# Elder thing
+R:569:0x9F/0x9E
+
+# Ice elemental
+R:570:0x90/0x8E
+
+# Necromancer
+R:571:0x9C/0x9B
+
+# The Greater hell magic mushroom were-quylthulg
+R:572:0xB1/0x97
+
+# Lorgan, Chief of the Easterlings
+R:573:0x9C/0x9C
+
+# Chaos spawn
+R:574:0x9F/0x85
+
+# Mummified troll
+R:575:0x92/0x8F
+
+# Storm of Unmagic
+R:576:0xB1/0x98
+
+# Crypt thing
+R:577:0xC1/0x90
+
+# Chaos butterfly
+R:578:0xC1/0x92
+
+# Time elemental
+R:579:0xA2/0x84
+
+# Flying polyp
+R:580:0xC1/0x93
+
+# The Queen Ant
+R:581:0x96/0x97
+
+# Will o' the wisp
+R:582:0x90/0x8F
+
+# Shan
+R:583:0xC1/0x94
+
+# Magma elemental
+R:584:0x90/0x90
+
+# Black pudding
+R:585:0x9A/0x81
+
+# Killer iridescent beetle
+R:586:0xA3/0x94
+
+# Nexus vortex
+R:587:0xA1/0x9D
+
+# Plasma vortex
+R:588:0x9E/0x83
+
+# Mature red dragon
+R:589:0x97/0x9E
+
+# Mature gold dragon
+R:590:0x97/0x9F
+
+# Crystal drake
+R:591:0xBB/0x99
+
+# Mature black dragon
+R:592:0x98/0x81
+
+# Mature multi-hued dragon
+R:593:0x98/0x82
+
+# Sky whale
+R:594:0xC1/0x95
+
+# Draebor, the Imp
+R:595:0x91/0x9C
+
+# Mother Hydra
+R:596:0xC1/0x97
+
+# Death knight
+R:597:0x9C/0x9E
+
+# Castamir the Usurper
+R:598:0x9C/0x9F
+
+# Time vortex
+R:599:0x9E/0x82
+
+# Shimmering vortex
+R:600:0x9E/0x85
+
+# Ancient blue dragon
+R:601:0x8F/0x8B
+
+# Ancient bronze dragon
+R:602:0x8F/0x8C
+
+# Beholder
+R:603:0x98/0x88
+
+# Emperor wight
+R:604:0x95/0x88
+
+# Seraph
+R:605:0x8E/0x95
+
+# Vargo, Tyrant of Fire
+R:606:0x90/0x91
+
+# Black wraith
+R:607:0x95/0x89
+
+# Nightgaunt
+R:608:0xA0/0x9E
+
+# Baron of hell
+R:609:0x9F/0x8F
+
+# Scylla
+R:610:0xC1/0x98
+
+# Monastic lich
+R:611:0xC1/0x91
+
+# Nether wraith
+R:612:0x95/0x8A
+
+# Hellhound
+R:613:0x8F/0x87
+
+# 7-headed hydra
+R:614:0x93/0x9D
+
+# Waldern, King of Water
+R:615:0x90/0x92
+
+# Kavlax the Many-Headed
+R:616:0x98/0x83
+
+# Ancient white dragon
+R:617:0x8F/0x8D
+
+# Ancient green dragon
+R:618:0x8F/0x8E
+
+# Chthonian
+R:619:0xA1/0x83
+
+# Eldrak
+R:620:0x94/0x9B
+
+# Ettin
+R:621:0x94/0x9C
+
+# Night mare
+R:622:0x9D/0x8D
+
+# Vampire lord
+R:623:0x95/0x81
+
+# Ancient black dragon
+R:624:0x8F/0x8F
+
+# Weird fume
+R:625:0xC1/0x9A
+
+# Spawn of Ubbo-Sathla
+R:626:0xC1/0x9B
+
+# Fat Man
+R:627:0xC0/0x82
+
+# Malekith the Accursed
+R:628:0xBD/0x91
+
+# Shadowfax, steed of Gandalf
+R:629:0xC1/0x9C
+
+# Spirit troll
+R:630:0xC4/0x84
+
+# War troll
+R:631:0xA1/0x8C
+
+# Disenchanter worm mass
+R:632:0x9E/0x91
+
+# Rotting quylthulg
+R:633:0x93/0x81
+
+# Lesser titan
+R:634:0x92/0x9C
+
+# 9-headed hydra
+R:635:0x93/0x9E
+
+# Enchantress
+R:636:0xBB/0x81
+
+# Ranger chieftain
+R:637:0xB1/0x99
+
+# Sorcerer
+R:638:0x9D/0x82
+
+# Xaren
+R:639:0x95/0x98
+
+# Giant roc
+R:640:0x8E/0x9A
+
+# Minotaur
+R:641:0x91/0x93
+
+# Medusa, the Gorgon
+R:642:0x9A/0x96
+
+# Death drake
+R:643:0xBB/0x98
+
+# Ancient red dragon
+R:644:0x8F/0x91
+
+# Ancient gold dragon
+R:645:0x8F/0x92
+
+# Great crystal drake
+R:646:0xBB/0x97
+
+# Wyrd sister
+R:647:0xC1/0x9D
+
+# Vrock
+R:648:0x9E/0x9D
+
+# Death quasit
+R:649:0x91/0x9E
+
+# Giganto, the Gargantuan
+R:650:0xBE/0x95
+
+# Strygalldwir
+R:651:0x8E/0x9C
+
+# Fallen angel
+R:652:0xC1/0x9E
+
+# Giant headless
+R:653:0xC1/0x9F
+
+# Judge Fire
+R:654:0xC2/0x80
+
+# Ubbo-Sathla, the Unbegotten Source
+R:655:0xC2/0x81
+
+# Judge Mortis
+R:656:0xC2/0x82
+
+# Dark elven sorcerer
+R:657:0x99/0x8A
+
+# Master lich
+R:658:0x92/0x89
+
+# Byakhee
+R:659:0xA0/0x9F
+
+# Eol, the Dark Elf
+R:660:0xB2/0x8A
+
+# Archon
+R:661:0x8E/0x96
+
+# Formless spawn of Tsathoggua
+R:662:0x9F/0x9C
+
+# Hunting horror
+R:663:0x9F/0x98
+
+# Undead beholder
+R:664:0x98/0x89
+
+# Shadow
+R:665:0x91/0x86
+
+# Iron lich
+R:666:0xA1/0x8B
+
+# Dread
+R:667:0x91/0x85
+
+# Greater basilisk
+R:668:0xC2/0x83
+
+# Charybdis
+R:669:0xBE/0x96
+
+# Jack of Shadows
+R:670:0xC2/0x84
+
+# Zephyr Lord
+R:671:0xC2/0x85
+
+# Juggernaut of Khorne
+R:672:0xC2/0x86
+
+# Mumak
+R:673:0x9D/0x8E
+
+# Judge Fear
+R:674:0xC2/0x87
+
+# Ancient multi-hued dragon
+R:675:0x8F/0x94
+
+# Ethereal dragon
+R:676:0x8F/0x95
+
+# Dark young of Shub-Niggurath
+R:677:0xA1/0x8F
+
+# Colour out of space
+R:678:0xC2/0x88
+
+# Quaker, Master of Earth
+R:679:0x90/0x93
+
+# Death leprechaun
+R:680:0xBD/0x82
+
+# Chaugnar Faugn, Horror from the Hills
+R:681:0xC2/0x89
+
+# Lloigor
+R:682:0xC2/0x8A
+
+# Utgard-Loke
+R:683:0xC2/0x8B
+
+# Quachil Uttaus, Treader of the Dust
+R:684:0xC2/0x8C
+
+# Shoggoth
+R:685:0xA1/0x8E
+
+# Judge Death
+R:686:0xC2/0x8D
+
+# Ariel, Queen of Air
+R:687:0x90/0x94
+
+# 11-headed hydra
+R:688:0x93/0x9F
+
+# Patriarch
+R:689:0x9D/0x84
+
+# Dreadmaster
+R:690:0x91/0x89
+
+# Drolem
+R:691:0x98/0x9B
+
+# Scatha the Worm
+R:692:0x8F/0x93
+
+# Warrior of the Dawn
+R:693:0xA1/0x8A
+
+# Lesser black reaver
+R:694:0xC2/0x8E
+
+# Zoth-Ommog
+R:695:0xC2/0x8F
+
+# Grand master thief
+R:696:0x9C/0x84
+
+# Smaug the Golden
+R:697:0xBB/0x96
+
+# The Stormbringer
+R:698:0xA0/0x9B
+
+# Knight Templar
+R:699:0xB1/0x9A
+
+# Leprechaun fanatic
+R:700:0xC2/0x90
+
+# Dracolich
+R:701:0x8F/0x98
+
+# Greater titan
+R:702:0x92/0x9D
+
+# Dracolisk
+R:703:0x8F/0x9E
+
+# Winged Horror
+R:704:0xC4/0x85
+
+# Spectral tyrannosaur
+R:705:0x9F/0x95
+
+# Yibb-Tstll, the Patient One
+R:706:0xC2/0x91
+
+# Ghatanothoa
+R:707:0xC2/0x92
+
+# Ent
+R:708:0xC2/0x93
+
+# Hru
+R:709:0xC2/0x94
+
+# Itangast the Fire Drake
+R:710:0x8F/0x99
+
+# Death mold
+R:711:0x9A/0x90
+
+# Fafner the Dragon
+R:712:0xA1/0x90
+
+# Charon, Boatman of the Styx
+R:713:0xB1/0x9B
+
+# Quickbeam, the Ent
+R:714:0xB1/0x9C
+
+# Glaurung, Father of the Dragons
+R:715:0x8F/0x99
+
+# Behemoth
+R:716:0xC2/0x97
+
+# Garm, Guardian of Hel
+R:717:0xC2/0x98
+
+# Greater wall monster
+R:718:0x80/0x82
+
+# Nycadaemon
+R:719:0xC2/0x99
+
+# Barbazu
+R:720:0xB2/0x9D
+
+# Goat of Mendes
+R:721:0x9F/0x8D
+
+# Nightwing
+R:722:0x95/0x91
+
+# Maulotaur
+R:723:0xA0/0x8B
+
+# Nether hound
+R:724:0x96/0x89
+
+# Time hound
+R:725:0x96/0x85
+
+# Plasma hound
+R:726:0x96/0x8B
+
+# Demonic quylthulg
+R:727:0x93/0x82
+
+# Great Storm Wyrm
+R:728:0x8F/0x9B
+
+# Ulik the Troll
+R:729:0xC2/0x9A
+
+# Baphomet the Minotaur Lord
+R:730:0x91/0x95
+
+# Hell knight
+R:731:0xC2/0x9B
+
+# Bull Gates
+R:732:0xBC/0x9B
+
+# Santa Claus
+R:733:0x9F/0x89
+
+# Eihort, the Thing in the Labyrinth
+R:734:0xC2/0x9C
+
+# The King in Yellow
+R:735:0xC2/0x9D
+
+# Great unclean one
+R:736:0xC2/0x9E
+
+# Lord of Chaos
+R:737:0xBB/0x85
+
+# Old Sorcerer
+R:738:0xB1/0x9E
+
+# Ethereal hound
+R:739:0x96/0x8C
+
+# Lesser kraken
+R:740:0xBE/0x98
+
+# Great Ice Wyrm
+R:741:0x8F/0x9C
+
+# Demilich
+R:742:0xC2/0x9F
+
+# The Phoenix
+R:743:0x8E/0x9B
+
+# Nightcrawler
+R:744:0x95/0x94
+
+# Lord of Change
+R:745:0xC3/0x80
+
+# Keeper of Secrets
+R:746:0xC3/0x81
+
+# Shudde M'ell
+R:747:0xC3/0x82
+
+# Hand druj
+R:748:0x9D/0x98
+
+# Eye druj
+R:749:0x9D/0x99
+
+# Skull druj
+R:750:0x9D/0x9A
+
+# Chaos vortex
+R:751:0xBB/0x93
+
+# Aether vortex
+R:752:0x9E/0x87
+
+# Nidhogg, the Hel-Drake
+R:753:0xC3/0x83
+
+# The Lernaean Hydra
+R:754:0x94/0x80
+
+# Thuringwethil, the Vampire Messenger
+R:755:0x95/0x82
+
+# Great Hell Wyrm
+R:756:0x8F/0x9D
+
+# Hastur the Unspeakable
+R:757:0x9F/0x8C
+
+# Bloodthirster
+R:758:0xC3/0x84
+
+# Draconic quylthulg
+R:759:0x93/0x83
+
+# Nyogtha, the Thing that Should not Be
+R:760:0xA1/0x91
+
+# Ahtu, Avatar of Nyarlathotep
+R:761:0xC3/0x85
+
+# Fundin Bluecloak
+R:762:0x99/0x8B
+
+# Bile Demon
+R:763:0xB1/0x9F
+
+# Uriel, Angel of Fire
+R:764:0x8E/0x97
+
+# Azriel, Angel of Death
+R:765:0x8E/0x98
+
+# Ancalagon the Black
+R:766:0x8F/0x90
+
+# Daoloth, the Render of the Veils
+R:767:0xC3/0x86
+
+# Nightwalker
+R:768:0x95/0x95
+
+# Gabriel, the Messenger
+R:769:0x8E/0x99
+
+# Artsi, the Champion of Chaos
+R:770:0xC3/0x87
+
+# Saruman of Many Colours
+R:771:0x9D/0x88
+
+# Harowen the Black Hand
+R:772:0x9D/0x86
+
+# Osyluth
+R:773:0xB2/0x8E
+
+# Dreadlord
+R:774:0x91/0x8A
+
+# Greater kraken
+R:775:0xBE/0x99
+
+# Archlich
+R:776:0xC3/0x89
+
+# The Cat Lord
+R:777:0x98/0x91
+
+# Jabberwock
+R:778:0x91/0x9F
+
+# Chaos hound
+R:779:0xBB/0x94
+
+# Vlad Dracula, Prince of Darkness
+R:780:0xC3/0x8B
+
+# Beholder hive-mother
+R:781:0xC3/0x8C
+
+# Leviathan
+R:782:0xBE/0x9A
+
+# Great Wyrm of Chaos
+R:783:0xBB/0x95
+
+# Great Wyrm of Law
+R:784:0x90/0x80
+
+# Great Wyrm of Balance
+R:785:0x90/0x81
+
+# Shambler
+R:786:0x9F/0x92
+
+# Gelugon
+R:787:0xB2/0x8B
+
+# Glaaki
+R:788:0xC3/0x8E
+
+# T'ron, the Rebel Dragonrider
+R:789:0xB2/0x88
+
+# Great Wyrm of Many Colours
+R:790:0xA2/0x95
+
+# Mardra, rider of the Gold Loranth
+R:791:0xB2/0x85
+
+# Tselakus, the Dreadlord
+R:792:0x91/0x8B
+
+# Sky Drake
+R:793:0xA2/0x80
+
+# Eilinel the Entrapped
+R:794:0xB2/0x80
+
+# Horned Reaper
+R:795:0xB2/0x81
+
+# The Norsa
+R:796:0xBB/0x80
+
+# Rhan-Tegoth
+R:797:0xC3/0x8F
+
+# Black reaver
+R:798:0x92/0x8A
+
+# Master mindcrafter
+R:799:0xB0/0x86
+
+# Greater demonic quylthulg
+R:800:0x93/0x87
+
+# Greater draconic quylthulg
+R:801:0x93/0x85
+
+# Greater rotting quylthulg
+R:802:0x93/0x86
+
+# Null, the Living Void
+R:803:0xC3/0x90
+
+# Feagwath, the Undead Sorcerer
+R:804:0x92/0x8C
+
+# Omarax the Eye Tyrant
+R:805:0x98/0x8A
+
+# Tsathoggua, the Sleeper of N'kai
+R:806:0xC3/0x91
+
+# Greater Balrog
+R:807:0xB2/0x9E
+
+# Ungoliant, the Unlight
+R:808:0x94/0x8D
+
+# Atlach-Nacha, the Spider God
+R:809:0x94/0x8D
+
+# Y'golonac
+R:810:0xC3/0x92
+
+# Aether hound
+R:811:0x96/0x8E
+
+# Pit Fiend
+R:812:0xB2/0x9F
+
+# The Serpent of Chaos
+R:813:0x9F/0x8E
+
+# Yig, Father of Serpents
+R:814:0xC3/0x94
+
+# Unmaker
+R:815:0xA1/0x9E
+
+# Cyberdemon
+R:816:0x9F/0x91
+
+# Hela, Queen of the Dead
+R:817:0xC3/0x95
+
+# The Mouth of Sauron
+R:818:0x9D/0x89
+
+# The Necromancer of Dol Guldur
+R:819:0xC5/0x8B
+
+# Lessa, rider of the Gold Ramoth
+R:820:0xB2/0x86
+
+# Master quylthulg
+R:821:0x93/0x84
+
+# Qlzqqlzuup, the Lord of Flesh
+R:822:0x93/0x88
+
+# Cthugha, the Living Flame
+R:823:0xC3/0x96
+
+# F'lar, rider of the Bronze Mnementh
+R:824:0xB2/0x87
+
+# Maeglin, the Traitor of Gondolin
+R:825:0xA1/0x9C
+
+# Cyaegha
+R:826:0xBD/0x81
+
+# Pazuzu, Lord of Air
+R:827:0x8E/0x9C
+
+# Ithaqua the Windwalker
+R:828:0xA0/0x82
+
+# Hellhound
+R:829:0x8F/0x87
+
+# Cantoras, the Skeletal Lord
+R:830:0x9D/0x9B
+
+# Mephistopheles, Lord of Hell
+R:831:0x9F/0x90
+
+# Godzilla
+R:832:0x9F/0x97
+
+# Abhoth, Source of Uncleanness
+R:833:0xC3/0x97
+
+# Ymir, the Ice Giant
+R:834:0xBD/0x84
+
+# Loki, the Trickster
+R:835:0xC3/0x98
+
+# Star-spawn of Cthulhu
+R:836:0x9F/0x8A
+
+# Surtur, the Fire Giant
+R:837:0xBD/0x85
+
+# The Tarrasque
+R:838:0x94/0x81
+
+# Lungorthin, the Balrog of White Fire
+R:839:0x9F/0x82
+
+# Draugluin, Sire of All Werewolves
+R:840:0x8F/0x88
+
+# Shuma-Gorath
+R:841:0xBD/0x80
+
+# Tulzscha, the Green Flame
+R:842:0xC3/0x99
+
+# Oremorj, the Cyberdemon Lord
+R:843:0xC3/0x9A
+
+# Vecna, the Emperor Lich
+R:844:0x92/0x8B
+
+# Yog-Sothoth, the All-in-One
+R:845:0x9F/0x8B
+
+# Fenris Wolf
+R:846:0xC3/0x9B
+
+# Great Wyrm of Power
+R:847:0xA2/0x81
+
+# Shub-Niggurath, Black Goat of the Woods
+R:848:0x9F/0x99
+
+# Nodens, Lord of the Great Abyss
+R:849:0xC3/0x9C
+
+# Carcharoth, the Jaws of Thirst
+R:850:0x8F/0x89
+
+# Nyarlathotep, the Crawling Chaos
+R:851:0x9F/0x9B
+
+# Azathoth, the Daemon Sultan
+R:852:0xC4/0x8C
+
+# Huan, Wolfhound of the Valar
+R:853:0xB2/0x83
+
+# Jormungand the Midgard Serpent
+R:854:0xBE/0x9B
+
+# The Destroyer
+R:855:0xBD/0x83
+
+# Gothmog, the High Captain of Balrogs
+R:856:0x9F/0x81
+
+# Great Cthulhu
+R:857:0x9F/0x84
+
+# Sorka, rider of the Gold Faranth
+R:858:0xB2/0x84
+
+# The Unicorn of Order
+R:859:0xC3/0x9D
+
+# Sauron, the Sorcerer
+R:860:0x9D/0x8A
+
+# DarkGod, the Mighty Coder of Hell
+R:861:0xA1/0x93
+
+# Morgoth, Lord of Darkness
+R:862:0x92/0x9E
+
+# Human Warrior
+R:863:0xB2/0x82
+
+# Elven archer
+R:864:0x9C/0x81
+
+# Dwarven warrior
+R:865:0xB2/0x89
+
+# Elite uruk
+R:866:0x9B/0x81
+
+# The Philosophy Teacher
+R:867:0xC4/0x82
+
+# The Variant Maintainer
+R:868:0xA1/0x99
+
+# Random Number Generator
+R:869:0xBD/0x9F
+
+# Rocket mine
+R:870:0xB2/0x8C
+
+# Bouncing mine
+R:871:0xB2/0x8D
+
+# The Balrog of Moria
+R:872:0xB2/0x8F
+
+# The Icky Queen
+R:873:0xB2/0x90
+
+# Rot jelly
+R:874:0xB1/0x91
+
+# Death
+R:875:0xB2/0x91
+
+# Famine
+R:876:0xB2/0x92
+
+# Pestilence
+R:877:0xB2/0x93
+
+# War
+R:878:0xB2/0x94
+
+# Pike
+R:879:0xB2/0x95
+
+# Electric eel
+R:880:0xBE/0x8C
+
+# Giant crayfish
+R:881:0xB2/0x96
+
+# Mermaid
+R:882:0xB1/0x9D
+
+# Box jellyfish
+R:883:0xBE/0x83
+
+# Giant piranha
+R:884:0xBE/0x84
+
+# Piranha
+R:885:0xBE/0x80
+
+# Bullywug
+R:886:0xB2/0x97
+
+# Bullywug warrior
+R:887:0xB2/0x98
+
+# Bullywug shaman
+R:888:0xB2/0x99
+
+# Whale
+R:889:0xBE/0x8B
+
+# Sand mite
+R:890:0xB0/0x9D
+
+# Octopus
+R:891:0xB2/0x9A
+
+# Giant octopus
+R:892:0xBE/0x93
+
+# Eye of the deep
+R:893:0xB2/0x9B
+
+# Murk dweller
+R:894:0xB2/0x9C
+
+# Drowned soul
+R:895:0xC5/0x8F
+
+# Tiger shark
+R:896:0xC5/0x8E
+
+# Hammerhead shark
+R:897:0xBE/0x88
+
+# Great white shark
+R:898:0xBE/0x8F
+
+# Aquatic golem
+R:899:0xC5/0x95
+
+# Aquatic kobold
+R:900:0xC5/0x96
+
+# White shark
+R:901:0xBE/0x89
+
+# Scrag
+R:902:0xC5/0x97
+
+# Jaws
+R:903:0xBE/0x92
+
+# Aquatic elf
+R:904:0xC5/0x98
+
+# Aquatic elven warrior
+R:905:0xC5/0x99
+
+# Aquatic elven shaman
+R:906:0xC5/0x9A
+
+# Stargazer
+R:907:0xC5/0x9E
+
+# Elder stargazer
+R:908:0xC5/0x9F
+
+# Flounder
+R:909:0xC6/0x81
+
+# Giant turtle
+R:910:0xC6/0x82
+
+# Baby dragon turtle
+R:911:0xC6/0x83
+
+# Young dragon turtle
+R:912:0xC6/0x84
+
+# Mature dragon turtle
+R:913:0xC6/0x85
+
+# Ancient dragon turtle
+R:914:0xC6/0x86
+
+# Fastitocalon
+R:915:0xBE/0x97
+
+# Undead stargazer
+R:916:0xC6/0x80
+
+# Killer whale
+R:917:0xBE/0x8E
+
+# Merrow
+R:918:0xC5/0x9D
+
+# Water naga
+R:919:0xC6/0x87
+
+# Devilfish
+R:920:0xC6/0x88
+
+# Undead devilfish
+R:921:0xC6/0x89
+
+# Moby Dick, the White Whale
+R:922:0xC5/0x9C
+
+# Aquatic hound
+R:923:0xC4/0x9E
+
+# Water demon
+R:924:0xC6/0x8B
+
+# Ixitxachitl
+R:925:0xBE/0x86
+
+# Ixitxachitl priest
+R:926:0xBE/0x8A
+
+# Vampiric ixitxachitl
+R:927:0xBE/0x90
+
+# Mathilde, the Science Student
+R:928:0x9D/0x80
+
+# Child spirit
+R:929:0xC5/0x90
+
+# Young spirit
+R:930:0xC5/0x91
+
+# Mature spirit
+R:931:0xC5/0x92
+
+# Experienced spirit
+R:932:0xC5/0x93
+
+# Wise spirit
+R:933:0xC5/0x94
+
+# Fangorn the Treebeard, Lord of the Ents
+R:934:0xC2/0x95
+
+# Gandalf the Grey
+R:935:0xC3/0x88
+
+# Nar, the Dwarf
+R:936:0x99/0x84
+
+# Novice mindcrafter
+R:937:0xB0/0x84
+
+# Great Swamp Wyrm
+R:938:0x8F/0x9A
+
+# Great Bile Wyrm
+R:939:0x8F/0x9F
+
+# Blue Firelizard
+R:940:0xB0/0x99
+
+# Green Firelizard
+R:941:0xB0/0x98
+
+# Brown Firelizard
+R:942:0xB0/0x97
+
+# Bronze Firelizard
+R:943:0xB0/0x96
+
+# Gold Firelizard
+R:944:0xB0/0x95
+
+# High-elven ranger
+R:945:0xC6/0x93
+
+# Uvatha the Horseman
+R:946:0x95/0x8B
+
+# Adunaphel the Quiet
+R:947:0x95/0x8C
+
+# Akhorahil the Blind
+R:948:0x95/0x8D
+
+# Ren the Unclean
+R:949:0x95/0x82
+
+# Ji Indur Dawndeath
+R:950:0x95/0x8F
+
+# Dwar, Dog Lord of Waw
+R:951:0x95/0x8F
+
+# Hoarmurath of Dir
+R:952:0x95/0x92
+
+# Khamul, the Black Easterling
+R:953:0x95/0x93
+
+# The Witch-King of Angmar
+R:954:0x95/0x96
+
+# Green Dragonrider
+R:955:0xB0/0x91
+
+# Blue Dragonrider
+R:956:0xB0/0x94
+
+# Brown Dragonrider
+R:957:0xB0/0x92
+
+# Bronze Dragonrider
+R:958:0xB0/0x93
+
+# Gold Dragonrider
+R:959:0xB0/0x90
+
+# Thread
+R:960:0xB0/0x9A
+
+# Gorlim, Betrayer of Barahir
+R:961:0x9D/0x83
+
+# The Blubbering idiot, agent of black market, Simon the weak
+R:962:0x9B/0x8F
+
+# Aranea
+R:963:0xB0/0x80
+
+# Elder aranea
+R:964:0xB0/0x81
+
+# Giant brown tick
+R:965:0xC5/0x9B
+
+# Dolphiner
+R:966:0xC6/0x98
+
+# Novice possessor (soul)
+R:967:0xC6/0x8E
+
+# Bat of Gorgoroth
+R:968:0xC6/0x94
+
+# The Princess
+R:969:0xA2/0x9F
+
+# Merton Proudfoot, the lost hobbit
+R:970:0xC6/0x9E
+
+# The Wight-King of the Barrow-downs
+R:971:0xC6/0x91
+
+# Adventurer
+R:972:0xA9/0x86
+
+# Experienced possessor (soul)
+R:973:0xC6/0x8F
+
+# Old possessor (soul)
+R:974:0xC6/0x90
+
+# Death orb
+R:975:0xC6/0x99
+
+# Bronze dragon worm
+R:976:0xB1/0x80
+
+# Gold dragon worm
+R:977:0xB1/0x81
+
+# Moldoux, the Defenceless Mold
+R:978:0xB1/0x8A
+
+# The Physics Teacher
+R:979:0xC6/0x9A
+
+# Ar-Pharazon the Golden
+R:980:0xA1/0x9B
+
+# Doppelganger
+R:981:0x8C/0x81
+
+# Marylene, Heartbreakeress of the Netherworld
+R:982:0xA3/0x9E
+
+# The Greater Lag Monster
+R:983:0xC6/0x96
+
+# Hrungnir, the Stone Giant
+R:984:0xB1/0x8B
+
+# Bullroarer the Hobbit
+R:985:0x98/0x9D
+
+# 3-headed hydra
+R:986:0x93/0x99
+
+# Uldor the Accursed
+R:987:0x9C/0x93
+
+# Mystic
+R:988:0x9C/0x97
+
+# Elder vampire
+R:989:0xA1/0x9F
+
+# Ulfang the Black
+R:990:0x9C/0x99
+
+# Demonologist
+R:991:0x9C/0x9D
+
+# Hezrou
+R:992:0x9E/0x9C
+
+# Glabrezu
+R:993:0x9E/0x9D
+
+# Nalfeshnee
+R:994:0x9E/0x9E
+
+# Marilith
+R:995:0x9E/0x9F
+
+# Lesser Balrog
+R:996:0x9F/0x80
+
+# Master mystic
+R:997:0x9D/0x85
+
+# Grand master mystic
+R:998:0x9D/0x87
+
+# Erinyes
+R:999:0x9E/0x9A
+
+# Novice mindcrafter
+R:1000:0xB0/0x84
+
+# Polyphemus, the Blind Cyclops
+R:1001:0xC6/0x92
+
+# Great Wyrm of Perplexity
+R:1002:0xB1/0x8C
+
+# Hound of Tindalos
+R:1003:0xB0/0x8E
+
+# Great Wyrm of Thunder
+R:1004:0xB1/0x8D
+
+# Silver mouse
+R:1005:0xB0/0x83
+
+# The Rat King
+R:1006:0xB1/0x8E
+
+# Vort the Kobold Queen
+R:1007:0xB0/0x88
+
+# Giant black louse
+R:1008:0x9A/0x87
+
+# Fire Phantom
+R:1009:0xB1/0x8F
+
+# The Insane Player
+R:1010:0xBC/0x99
+
+# Glaryssa, Succubus Queen
+R:1011:0xA3/0x9F
+
+# Vermicious Knid
+R:1012:0xB1/0x90
+
+# Bone golem
+R:1013:0xB1/0x92
+
+# Snake of Yig
+R:1014:0xC6/0x8A
+
+# Bronze golem
+R:1015:0xB1/0x93
+
+# Dimensional shambler
+R:1016:0xB0/0x9C
+
+# Cultist
+R:1017:0xC6/0x8C
+
+# Cult leader
+R:1018:0xC6/0x8D
+
+# Servitor of the outer gods
+R:1019:0xC6/0x95
+
+# Avatar of Nyarlathotep
+R:1020:0xC3/0x85
+
+# Thiazi, the Storm Giant
+R:1021:0xB1/0x94
+
+# Hypnos, Lord of Sleep
+R:1022:0xC3/0x8D
+
+# Blue dragon worm
+R:1023:0xB1/0x82
+
+# White dragon worm
+R:1024:0xB1/0x83
+
+# Green dragon worm
+R:1025:0xB1/0x84
+
+# Black dragon worm
+R:1026:0xB1/0x85
+
+# Red dragon worm
+R:1027:0xB1/0x86
+
+# Multi-hued dragon worm
+R:1028:0xB1/0x87
+
+# The Minotaur of the Labyrinth
+R:1029:0x91/0x95
+
+# The Sandworm Queen
+R:1030:0xB1/0x88
+
+# Sandworm
+R:1031:0xB1/0x89
+
+# Tik'srvzllat
+R:1032:0xC6/0x9B
+
+# The Glass Golem
+R:1033:0xB1/0x95
+
+# The White Balrog
+R:1034:0x9F/0x82
+
+# Golgarach, the Living Rock
+R:1035:0x80/0x95
+
+# Atlas, the Titan
+R:1036:0xC6/0x9C
+
+# Kronos, Lord of the Titans
+R:1037:0xC6/0x9D
+
+# Water hound
+R:1038:0x96/0x83
+
+# Improv, the mighty MoLD
+R:1039:0xB1/0x8A
+
+# Emperor Mimic
+R:1040:0xA3/0x8D
+
+# Melinda Proudfoot
+R:1041:0xC6/0x9F
+
+# Thrain, the King Under the Mountain
+R:1042:0xC6/0x97
+
+## Fire golem
+R:1043:0xBC/0x9C
+
+# Spells (*)
+S:0x30:0x85/0x93
+S:0x31:0x85/0x92
+S:0x32:0x85/0x92
+S:0x33:0x85/0x8D
+S:0x34:0x85/0x8C
+S:0x35:0x85/0x8F
+S:0x36:0x85/0x90
+S:0x37:0x85/0x95
+S:0x38:0x85/0x93
+S:0x39:0x85/0x92
+S:0x3A:0x85/0x91
+S:0x3B:0x85/0x8E
+S:0x3C:0x85/0x8D
+S:0x3D:0x85/0x8F
+S:0x3E:0x85/0x90
+S:0x3F:0x85/0x95
+
+# Spells (|)
+S:0x40:0x84/0x9C
+S:0x41:0x84/0x98
+S:0x42:0x84/0x98
+S:0x43:0x85/0x88
+S:0x44:0x84/0x80
+S:0x45:0x84/0x8C
+S:0x46:0x84/0x90
+S:0x47:0x85/0x84
+S:0x48:0x84/0x9C
+S:0x49:0x84/0x98
+S:0x4A:0x84/0x94
+S:0x4B:0x84/0x88
+S:0x4C:0x85/0x88
+S:0x4D:0x84/0x8C
+S:0x4E:0x84/0x90
+S:0x4F:0x85/0x84
+
+# Spells (-)
+S:0x50:0x84/0x9D
+S:0x51:0x84/0x99
+S:0x52:0x84/0x99
+S:0x53:0x85/0x89
+S:0x54:0x84/0x81
+S:0x55:0x84/0x8D
+S:0x56:0x84/0x91
+S:0x57:0x85/0x85
+S:0x58:0x84/0x9D
+S:0x59:0x84/0x99
+S:0x5A:0x84/0x95
+S:0x5B:0x84/0x89
+S:0x5C:0x85/0x89
+S:0x5D:0x84/0x8D
+S:0x5E:0x84/0x91
+S:0x5F:0x85/0x85
+
+# Spells (:)
+S:0x60:0x84/0x9E
+S:0x61:0x84/0x9A
+S:0x62:0x84/0x9A
+S:0x63:0x85/0x8A
+S:0x64:0x84/0x82
+S:0x65:0x84/0x8E
+S:0x66:0x84/0x92
+S:0x67:0x85/0x86
+S:0x68:0x84/0x9E
+S:0x69:0x84/0x9A
+S:0x6A:0x84/0x96
+S:0x6B:0x84/0x8A
+S:0x6C:0x85/0x8A
+S:0x6D:0x84/0x8E
+S:0x6E:0x84/0x92
+S:0x6F:0x85/0x86
+
+# Spells (\)
+S:0x70:0x84/0x9F
+S:0x71:0x84/0x9B
+S:0x72:0x84/0x9B
+S:0x73:0x85/0x8B
+S:0x74:0x84/0x83
+S:0x75:0x84/0x8F
+S:0x76:0x84/0x93
+S:0x77:0x85/0x87
+S:0x78:0x84/0x9F
+S:0x79:0x84/0x9B
+S:0x7A:0x84/0x97
+S:0x7B:0x84/0x8B
+S:0x7C:0x85/0x8B
+S:0x7D:0x84/0x8F
+S:0x7E:0x84/0x93
+S:0x7F:0x85/0x87
+
+# Amulets (")
+S:0x80:0xB6/0x87
+S:0x81:0xB6/0x88
+S:0x82:0xB6/0x85
+S:0x83:0xB6/0x86
+S:0x84:0xB6/0x81
+S:0x85:0xB6/0x82
+S:0x86:0xB6/0x83
+S:0x87:0xB6/0x84
+S:0x88:0xB6/0x87
+S:0x89:0xB6/0x88
+S:0x8A:0xB6/0x8E
+S:0x8B:0xB6/0x86
+S:0x8C:0xB6/0x81
+S:0x8D:0xB6/0x82
+S:0x8E:0xB6/0x8B
+S:0x8F:0xB6/0x8C
+
+# Rings (=)
+S:0x90:0xB5/0x8B
+S:0x91:0xB5/0x8C
+S:0x92:0xB5/0x89
+S:0x93:0xB5/0x8A
+S:0x94:0xB5/0x81
+S:0x95:0xB5/0x82
+S:0x96:0xB5/0x83
+S:0x97:0xB5/0x88
+S:0x98:0xB5/0x8B
+S:0x99:0xB5/0x8C
+S:0x9A:0xB5/0x80
+S:0x9B:0xB5/0x8A
+S:0x9C:0xB5/0x81
+S:0x9D:0xB5/0x82
+S:0x9E:0xB5/0x83
+S:0x9F:0xB5/0x88
+
+# Staffs (_)
+S:0xA0:0xB9/0x84
+S:0xA1:0xB9/0x85
+S:0xA2:0xB9/0x85
+S:0xA3:0xB9/0x81
+S:0xA4:0xB9/0x81
+S:0xA5:0xB9/0x82
+S:0xA6:0xB9/0x80
+S:0xA7:0xB9/0x87
+S:0xA8:0xB9/0x84
+S:0xA9:0xB9/0x85
+S:0xAA:0xB9/0x83
+S:0xAB:0xB9/0x87
+S:0xAC:0xB9/0x81
+S:0xAD:0xB9/0x82
+S:0xAE:0xB9/0x80
+S:0xAF:0xB9/0x87
+
+# Wands (-)
+S:0xB0:0xB7/0x84
+S:0xB1:0xB7/0x85
+S:0xB2:0xB7/0x85
+S:0xB3:0xB7/0x86
+S:0xB4:0xB7/0x81
+S:0xB5:0xB7/0x82
+S:0xB6:0xB7/0x80
+S:0xB7:0xB7/0x87
+S:0xB8:0xB7/0x84
+S:0xB9:0xB7/0x85
+S:0xBA:0xB7/0x83
+S:0xBB:0xB7/0x86
+S:0xBC:0xB7/0x81
+S:0xBD:0xB7/0x82
+S:0xBE:0xB7/0x80
+S:0xBF:0xB7/0x87
+
+# Rods (-)
+S:0xC0:0xB8/0x84
+S:0xC1:0xB8/0x85
+S:0xC2:0xB8/0x85
+S:0xC3:0xB8/0x86
+S:0xC4:0xB8/0x81
+S:0xC5:0xB8/0x82
+S:0xC6:0xB8/0x80
+S:0xC7:0xB8/0x87
+S:0xC8:0xB8/0x84
+S:0xC9:0xB8/0x85
+S:0xCA:0xB8/0x83
+S:0xCB:0xB8/0x86
+S:0xCC:0xB8/0x81
+S:0xCD:0xB8/0x82
+S:0xCE:0xB8/0x80
+S:0xCF:0xB8/0x87
+
+# Scrolls (?)
+S:0xD0:0x86/0x82
+S:0xD1:0x86/0x82
+S:0xD2:0x86/0x82
+S:0xD3:0x86/0x82
+S:0xD4:0x86/0x82
+S:0xD5:0x86/0x82
+S:0xD6:0x86/0x82
+S:0xD7:0x86/0x82
+S:0xD8:0x86/0x82
+S:0xD9:0x86/0x82
+S:0xDA:0x86/0x82
+S:0xDB:0x86/0x82
+S:0xDC:0x86/0x82
+S:0xDD:0x86/0x82
+S:0xDE:0x86/0x82
+S:0xDF:0x86/0x82
+
+# Potions (!)
+S:0xE0:0xBC/0x84
+S:0xE1:0xBC/0x83
+S:0xE2:0xBC/0x8A
+S:0xE3:0xBC/0x8B
+S:0xE4:0xBC/0x87
+S:0xE5:0xBC/0x86
+S:0xE6:0xBC/0x85
+S:0xE7:0xBC/0x89
+S:0xE8:0xBC/0x84
+S:0xE9:0xBC/0x83
+S:0xEA:0xBC/0x8E
+S:0xEB:0xBC/0x88
+S:0xEC:0xBC/0x8B
+S:0xED:0xBC/0x8C
+S:0xEE:0xBC/0x8D
+S:0xEF:0xBC/0x89
+
+# Food (,)
+S:0xF0:0xBA/0x84
+S:0xF1:0xBA/0x85
+S:0xF2:0xBA/0x85
+S:0xF3:0xBA/0x86
+S:0xF4:0xBA/0x81
+S:0xF5:0xBA/0x82
+S:0xF6:0xBA/0x80
+S:0xF7:0xBA/0x87
+S:0xF8:0xBA/0x84
+S:0xF9:0xBA/0x85
+S:0xFA:0xBA/0x83
+S:0xFB:0xBA/0x86
+S:0xFC:0xBA/0x81
+S:0xFD:0xBA/0x82
+S:0xFE:0xBA/0x80
+S:0xFF:0xBA/0x87
+
+# Unknown Amulet
+U:40:0xB6/0x81
+
+# Unknown Ring
+U:45:0xB5/0x81
+
+# Unknown Staff
+U:55:0xB9/0x81
+
+# Unknown Wand
+U:65:0xB7/0x81
+
+# Unknown Rod
+U:66:0xB8/0x81
+
+# Unknown Scroll
+U:70:0x86/0x82
+
+# Unknown Potion
+U:75:0xBC/0x85
+
+# Unknown Food
+U:80:0x8B/0x81
+# non-defines encountered :
+# Load the special player pictures
+%:xtra-xxx.prf
+# Load the Trap image definitions
+%:trap-xxx.prf
diff --git a/lib/pref/graf.prf b/lib/pref/graf.prf
new file mode 100644
index 00000000..a82ce364
--- /dev/null
+++ b/lib/pref/graf.prf
@@ -0,0 +1,51 @@
+# File: graf.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# This file includes, if appropriate, various "sub-files"
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+##### Standard font file #####
+
+%:font-xxx.prf
+
+
+##### System Specific Subfiles #####
+
+?:[IOR [EQU $SYS xaw] [EQU $SYS x11] [EQU $SYS gtk]]
+%:graf-x11.prf
+
+?:[EQU $SYS gcu]
+%:graf-gcu.prf
+
+?:[EQU $SYS ami]
+%:graf-ami.prf
+
+?:[EQU $SYS mac]
+%:graf-mac.prf
+
+?:[EQU $SYS dos]
+%:graf-dos.prf
+
+?:[EQU $SYS win]
+%:graf-win.prf
+
+?:[EQU $SYS ibm]
+%:graf-ibm.prf
+
+?:[EQU $SYS emx]
+%:graf-emx.prf
+
+?:[EQU $SYS acn]
+%:graf-acn.prf
+
+?:[EQU $SYS sdl]
+%:graf-sdl.prf
+
+?:1
+
+
diff --git a/lib/pref/pref-acn.prf b/lib/pref/pref-acn.prf
new file mode 100644
index 00000000..ae95fe26
--- /dev/null
+++ b/lib/pref/pref-acn.prf
@@ -0,0 +1,24 @@
+# File: pref-acn.prf
+
+# This is a minimal "pref" file for RISC OS
+
+
+# Map cursor keys onto keypad
+
+A:4
+P:^_18C\r
+
+A:6
+P:^_18D\r
+
+A:2
+P:^_18E\r
+
+A:8
+P:^_18F\r
+
+
+# Map F3 to ^S (to be a bit RISC OS-ey)
+
+A:^S
+P:^_183\r
diff --git a/lib/pref/pref-ami.prf b/lib/pref/pref-ami.prf
new file mode 100644
index 00000000..08a1c310
--- /dev/null
+++ b/lib/pref/pref-ami.prf
@@ -0,0 +1,7 @@
+# File: pref-ami.prf
+
+#
+# This file contains various default macros for use with
+# the executable built from "main-ami.c".
+#
+
diff --git a/lib/pref/pref-emx.prf b/lib/pref/pref-emx.prf
new file mode 100644
index 00000000..555c0dbc
--- /dev/null
+++ b/lib/pref/pref-emx.prf
@@ -0,0 +1,19 @@
+# File: pref-emx.prf
+
+#
+# Include "pref-ibm.prf" to get the default macros.
+#
+# Note that, while most key-to-trigger mappings are the same as DOS/Win,
+# some few odd keys will be different or not available at all.
+#
+# Examples: Ctrl-Escape, Alt-PrintScreen
+#
+# What's NOT working: color palette redefinitions.
+#
+
+%:pref-win.prf
+
+
+# shift-5 - rest
+A:R\r
+P:^_Sx4C\r
diff --git a/lib/pref/pref-gcu.prf b/lib/pref/pref-gcu.prf
new file mode 100644
index 00000000..cbc80ada
--- /dev/null
+++ b/lib/pref/pref-gcu.prf
@@ -0,0 +1,70 @@
+# File: pref-gcu.prf
+
+#
+# This file may be included by "pref.prf", when using "main-gcu.prf".
+#
+# It contains macro definitions to allow the VT100 cursor keys to be
+# recognized by Angband. This will also make the "escape" key take a
+# few seconds to recognize, so you may want to use the "`" key instead.
+#
+
+
+### VT100 Keypad ###
+
+
+# Special keypad keys (delete, insert)
+
+A:.
+P:\e[3~
+
+A:0
+P:\e[2~
+
+
+# Numerical keypad keys (map to appropriate number)
+
+A:1
+P:\e[4~
+P:\e[F
+
+A:2
+P:\e[B
+
+A:3
+P:\e[6~
+
+A:4
+P:\e[D
+
+A:5
+P:\e[G
+
+A:6
+P:\e[C
+
+A:7
+P:\e[1~
+P:\e[H
+
+A:8
+P:\e[A
+
+A:9
+P:\e[5~
+
+
+# Basic function keys (F1 - F4)
+
+A:\e
+P:\eOP
+
+A:\e
+P:\eOQ
+
+A:\e
+P:\eOR
+
+A:\e
+P:\eOS
+
+
diff --git a/lib/pref/pref-iso.prf b/lib/pref/pref-iso.prf
new file mode 100644
index 00000000..a6bad2e3
--- /dev/null
+++ b/lib/pref/pref-iso.prf
@@ -0,0 +1,118 @@
+# File: pref-sdl.prf
+
+#
+# This file provides some macros for use with versions of Angband compiled
+# using the "main-x11.c" (or "main-xaw.c") file.
+#
+# Note the use of "\e\e\e\e" (four escapes) to allow the macros to work
+# even if the game is not yet ready for a command.
+#
+# Note the use of "\\." (for "run") and "\\+" (for "alter"), to make sure
+# that the macros will work regardless of the "keymap" being used.
+#
+
+
+
+# Keypad (0-9)
+
+A:0
+P:^__100\r
+
+A:1
+P:^__101\r
+
+A:2
+P:^__112\r
+P:^__102\r
+
+A:3
+P:^__103\r
+
+A:4
+P:^__114\r
+P:^__104\r
+
+A:5
+P:^__105\r
+
+A:6
+P:^__113\r
+P:^__106\r
+
+A:7
+P:^__107\r
+
+A:8
+P:^__111\r
+P:^__108\r
+
+A:9
+P:^__109\r
+
+
+# Shift-Keypad (0-9)
+
+A:\e\e\e\e\\.0
+P:^_S_100\r
+
+A:\e\e\e\e\\.1
+P:^_S_101\r
+
+A:\e\e\e\e\\.2
+P:^_S_102\r
+
+A:\e\e\e\e\\.3
+P:^_S_103\r
+
+A:\e\e\e\e\\.4
+P:^_S_104\r
+
+A:\e\e\e\e\\.5
+P:^_S_105\r
+
+A:\e\e\e\e\\.6
+P:^_S_106\r
+
+A:\e\e\e\e\\.7
+P:^_S_107\r
+
+A:\e\e\e\e\\.8
+P:^_S_108\r
+
+A:\e\e\e\e\\.9
+P:^_S_109\r
+
+
+
+# Control-Keypad (0-9)
+
+A:\e\e\e\e\\+0
+P:^_N_100\r
+
+A:\e\e\e\e\\+1
+P:^_N_101\r
+
+A:\e\e\e\e\\+2
+P:^_N_102\r
+
+A:\e\e\e\e\\+3
+P:^_N_103\r
+
+A:\e\e\e\e\\+4
+P:^_N_104\r
+
+A:\e\e\e\e\\+5
+P:^_N_105\r
+
+A:\e\e\e\e\\+6
+P:^_N_106\r
+
+A:\e\e\e\e\\+7
+P:^_N_107\r
+
+A:\e\e\e\e\\+8
+P:^_N_108\r
+
+A:\e\e\e\e\\+9
+P:^_N_109\r
+
diff --git a/lib/pref/pref-mac.prf b/lib/pref/pref-mac.prf
new file mode 100644
index 00000000..88e5618e
--- /dev/null
+++ b/lib/pref/pref-mac.prf
@@ -0,0 +1,243 @@
+# File: pref-mac.prf
+
+#
+# This file is included by "pref.prf" when "main-mac.c" is used.
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+#
+# Macro Trigger configuration
+#
+# T:<trigger template>:<modifiers>:<modifier name1>:<modifier name2>:....
+# '&' in <trigger template> specifies location of modifier character.
+# '#' in <trigger template> specifies location of key code.
+#
+# If <trigger template> is null string, all trigger difinition will be cleared.
+
+T:&#:CSOX:control-:shift-:option-:command-
+
+# T:<trigger name>:<keycode>:<keycode with shiftkey>
+# '\' in <trigger name> is escape character.
+
+T:KP_Decimal:1
+T:KP_Multiply:3
+T:KP_Add:5
+T:KP_Clear:7
+T:KP_Divide:11
+T:KP_Enter:12
+T:KP_Subtract:14
+T:KP_Equal:17
+T:KP_0:18
+T:KP_1:19
+T:KP_2:20
+T:KP_3:21
+T:KP_4:22
+T:KP_5:23
+T:KP_6:24
+T:KP_7:25
+T:KP_8:27
+T:KP_9:28
+T:F5:32
+T:F6:33
+T:F7:34
+T:F3:35
+T:F8:36
+T:F10:37
+T:F11:39
+T:F13:41
+T:F14:43
+T:F9:45
+T:F12:47
+T:F15:49
+T:Help:50
+T:Home:51
+T:Page_Up:52
+T:Delete:53
+T:F4:54
+T:End:55
+T:F2:56
+T:Page_Down:57
+T:F1:58
+T:Left:59
+T:Right:60
+T:Down:61
+T:Up:62
+
+##### Simple Macros #####
+
+
+#
+# Keypad -- (/,*,7,8,9,-,4,5,6,+,1,2,3,0,.)
+#
+
+A:/
+P:^_K/\r
+
+A:*
+P:^_K*\r
+
+A:7
+P:^_K7\r
+
+A:8
+P:^_K8\r
+
+A:9
+P:^_K9\r
+
+A:-
+P:^_K-\r
+
+A:4
+P:^_K4\r
+
+A:5
+P:^_K5\r
+
+A:6
+P:^_K6\r
+
+A:+
+P:^_K+\r
+
+A:1
+P:^_K1\r
+
+A:2
+P:^_K2\r
+
+A:3
+P:^_K3\r
+
+A:0
+P:^_K0\r
+
+A:.
+P:^_K.\r
+
+
+#
+# Shift-Keypad -- Directed running
+#
+
+A:\e\e\\.1
+P:^_S19\r
+
+A:\e\e\\.2
+P:^_S20\r
+
+A:\e\e\\.3
+P:^_S21\r
+
+A:\e\e\\.4
+P:^_S22\r
+
+A:\e\e\\.5
+P:^_S23\r
+
+A:\e\e\\.6
+P:^_S24\r
+
+A:\e\e\\.7
+P:^_S25\r
+
+A:\e\e\\.8
+P:^_S27\r
+
+A:\e\e\\.9
+P:^_S28\r
+
+
+#
+# Control-Keypad -- Directed tunneling
+#
+
+A:\e\e\\+1
+P:^_C19\r
+
+A:\e\e\\+2
+P:^_C20\r
+
+A:\e\e\\+3
+P:^_C21\r
+
+A:\e\e\\+4
+P:^_C22\r
+
+A:\e\e\\+5
+P:^_C23\r
+
+A:\e\e\\+6
+P:^_C24\r
+
+A:\e\e\\+7
+P:^_C25\r
+
+A:\e\e\\+8
+P:^_C27\r
+
+A:\e\e\\+9
+P:^_C28\r
+
+
+
+#
+# Option-Control-Keypad -- wield {@0} and tunnel
+#
+
+A:\e\ew0\s\s\\+1
+P:^_CO19\r
+
+A:\e\ew0\s\s\\+2
+P:^_CO20\r
+
+A:\e\ew0\s\s\\+3
+P:^_CO21\r
+
+A:\e\ew0\s\s\\+4
+P:^_CO22\r
+
+A:\e\ew0\s\s\\+5
+P:^_CO23\r
+
+A:\e\ew0\s\s\\+6
+P:^_CO24\r
+
+A:\e\ew0\s\s\\+7
+P:^_CO25\r
+
+A:\e\ew0\s\s\\+8
+P:^_CO27\r
+
+A:\e\ew0\s\s\\+9
+P:^_CO28\r
+
+
+#
+# Option-Control-Keypad-Zero -- wield {@0}
+#
+
+A:\e\ew0\s
+P:^_CO18\r
+
+
+
+#
+# Hack -- Arrow-Keys
+#
+
+A:4
+P:^_59\r
+
+A:6
+P:^_60\r
+
+A:2
+P:^_61\r
+
+A:8
+P:^_62\r
+
+
diff --git a/lib/pref/pref-sdl.prf b/lib/pref/pref-sdl.prf
new file mode 100644
index 00000000..3bc0f030
--- /dev/null
+++ b/lib/pref/pref-sdl.prf
@@ -0,0 +1,144 @@
+# File: pref-sdl.prf
+
+# This file implements macros for extended keyboard commands (characters not
+# within the 128 character ASCII set).
+# Basically, if you have to hold down control or alt or it's an arrow key,
+# it will be handled here. This means that we can let SDL worry about figuring
+# out what key is which; all it needs to do is give us the name and we'll map
+# it here.
+#
+# Note the use of "\e\e\e\e" (four escapes) to allow the macros to work
+# even if the game is not yet ready for a command.
+#
+# Note the use of "\\." (for "run") and "\\+" (for "alter"), to make sure
+# that the macros will work regardless of the "keymap" being used.
+#
+
+# Basic Arrow Movement
+
+A:8
+P:\[up]
+
+A:6
+P:\[right]
+
+A:4
+P:\[left]
+
+A:2
+P:\[down]
+
+# Basic Arrows with Shift Down
+
+A:\e\e\e\e\\.8
+P:\[shift-up]
+
+A:\e\e\e\e\\.6
+P:\[shift-right]
+
+A:\e\e\e\e\\.4
+P:\[shift-left]
+
+A:\e\e\e\e\\.2
+P:\[shift-down]
+
+# Basic Arrows with Control Down
+
+A:\e\e\e\e\\+8
+P:\[ctrl-up]
+
+A:\e\e\e\e\\+6
+P:\[ctrl-right]
+
+A:\e\e\e\e\\+4
+P:\[ctrl-left]
+
+A:\e\e\e\e\\+2
+P:\[ctrl-down]
+
+# Keypad
+
+A:1
+P:\[[1]]
+
+A:2
+P:\[[2]]
+
+A:3
+P:\[[3]]
+
+A:4
+P:\[[4]]
+
+A:5
+P:\[[5]]
+
+A:6
+P:\[[6]]
+
+A:7
+P:\[[7]]
+
+A:8
+P:\[[8]]
+
+A:9
+P:\[[9]]
+
+# Keypad With Shift
+
+A:\e\e\e\e\\.1
+P:\[shift-[1]]
+
+A:\e\e\e\e\\.2
+P:\[shift-[2]]
+
+A:\e\e\e\e\\.3
+P:\[shift-[3]]
+
+A:\e\e\e\e\\.4
+P:\[shift-[4]]
+
+A:\e\e\e\e\\.5
+P:\[shift-[5]]
+
+A:\e\e\e\e\\.6
+P:\[shift-[6]]
+
+A:\e\e\e\e\\.7
+P:\[shift-[7]]
+
+A:\e\e\e\e\\.8
+P:\[shift-[8]]
+
+A:\e\e\e\e\\.9
+P:\[shift-[9]]
+
+# Keypad With Control
+
+A:\e\e\e\e\\+1
+P:\[ctrl-[1]]
+
+A:\e\e\e\e\\+2
+P:\[ctrl-[2]]
+
+A:\e\e\e\e\\+3
+P:\[ctrl-[3]]
+
+A:\e\e\e\e\\+4
+P:\[ctrl-[4]]
+
+A:\e\e\e\e\\+5
+P:\[ctrl-[5]]
+
+A:\e\e\e\e\\+6
+P:\[ctrl-[6]]
+
+A:\e\e\e\e\\+7
+P:\[ctrl-[7]]
+
+A:\e\e\e\e\\+8
+P:\[ctrl-[8]]
+
+A:\e\e\e\e\\+9
+P:\[ctrl-[9]]
diff --git a/lib/pref/pref-win.prf b/lib/pref/pref-win.prf
new file mode 100644
index 00000000..7b1501f1
--- /dev/null
+++ b/lib/pref/pref-win.prf
@@ -0,0 +1,534 @@
+# File: pref-ibm.prf
+
+#
+# This file is used by Angband (when it was compiled using "main-ibm.c"
+# or "main-dos.c" or "main-win.c") to specify various "user preferences",
+# including "macros".
+#
+# This file defines some basic macros, which allow the use of the "keypad",
+# alone, and with the shift and/or control modifier keys. All "special"
+# keys are translated by "main-ibm.c" (or "main-win.c") into special "macro
+# triggers" of the encoded form "^_MMMxSS\r", where the "modifier" flags are
+# stored in "MMM", and the two digit hexidecimal scan code of the keypress is
+# stored in "SS".
+#
+# The "main-ibm.prf" and "main-dos.prf" files may not be able to recognize
+# the "/" and "*" keys on the keypad, because it mistakenly classifies the
+# "0x35" and "0x37" codes as the keycodes of "normal" keys.
+#
+# The "main-win.prf" file should not be using the final "control + keypad"
+# section in this file, it was created for "main-ibm.c" and "main-dos.c".
+#
+# The "main-win.prf" file may actually send the "ascii" equivalent of some
+# keypad keys after the keypad key itself, especially if "numlock" is down,
+# which may cause problems. Or it may not, it is hard to tell. This is bad.
+#
+# See "main-ibm.c" and "main-dos.c" and "main-win.c" for more info.
+#
+
+#
+# Macro Trigger configuration
+#
+# T:<trigger template>:<modifiers>:<modifier name1>:<modifier name2>:....
+# '&' in <trigger template> specifies location of modifier character.
+# '#' in <trigger template> specifies location of key code.
+#
+# If <trigger template> is null string, all trigger difinition will be cleared.
+
+T:&x#:CSA:control-:shift-:alt-
+
+# T:<trigger name>:<keycode>:<keycode with shiftkey>
+# '\' in <trigger name> is escape character.
+
+# These keycodes are actually direct keyboard scan code taken from the 'dinput.h'.
+
+?:[EQU $KEYBOARD JAPAN]
+# For Japanese keyboard.
+T:-:0C
+T:^:0D
+T:@:1A
+T:[:1B
+T:;:27
+T:\::28
+T:]:2B
+T:,:33
+T:.:34
+T:\/:35
+T:_:73
+?:1
+
+?:[EQU $KEYBOARD 0]
+# For US keyboard.
+T:-:0C
+T:=:0D
+T:[:1A
+T:]:1B
+T:;:27
+T:\':28
+T:`:29
+T:\\:2B
+T:,:33
+T:.:34
+T:\/:35
+?:1
+
+############
+# Common keycodes (except NEC PC-98x1)
+
+?:[NOT [EQU $KEYBOARD NEC98]]
+T:1:02
+T:2:03
+T:3:04
+T:4:05
+T:5:06
+T:6:07
+T:7:08
+T:8:09
+T:9:0A
+T:0:0B
+T:Backspace:0E
+T:Q:10
+T:W:11
+T:E:12
+T:R:13
+T:T:14
+T:Y:15
+T:U:16
+T:I:17
+T:O:18
+T:P:19
+T:Enter:1C
+T:A:1E
+T:S:1F
+T:D:20
+T:F:21
+T:G:22
+T:H:23
+T:J:24
+T:K:25
+T:L:26
+T:Zenkaku_Hankaku:29
+T:Z:2C
+T:X:2D
+T:C:2E
+T:V:2F
+T:B:30
+T:N:31
+T:M:32
+T:KP_Multiply:37
+T:CapsLock:3A
+T:F1:3B
+T:F2:3C
+T:F3:3D
+T:F4:3E
+T:F5:3F
+T:F6:40
+T:F7:41
+T:F8:42
+T:F9:43
+T:F10:44
+T:Numlock:45
+T:Scroll:46
+#T:KP_7:47
+T:Home:47
+#T:KP_8:48
+T:Up:48
+#T:KP_9:49
+T:Page_Up:49
+T:KP_Subtract:4A
+#T:KP_4:4B
+T:Left:4B
+T:KP_5:4C
+#T:KP_6:4D
+T:Right:4D
+T:KP_Add:4E
+#T:KP_1:4F
+T:End:4F
+#T:KP_2:50
+T:Down:50
+#T:KP_3:51
+T:Page_Down:51
+#T:KP_0:52
+T:Insert:52
+#T:KP_Decimal:53
+T:Delete:53
+T:Oem_102:56
+T:F11:57
+T:F12:58
+T:Menu:5D
+T:F13:64
+T:F14:65
+T:F15:66
+T:Hiragana_Katakana:70
+T:Abnt_C1:73
+T:Henkan:79
+T:Muhenkan:7B
+T:Yen:7D
+T:Abnt_C2:7E
+T:KP_equals:8D
+T:Prevtrack:90
+T:Kanji:94
+T:Stop:95
+T:Ax:96
+T:Unlabeled:97
+T:Nexttrack:99
+T:KP_Enter:9C
+T:Mute:A0
+T:Calculator:A1
+T:Playpause:A2
+T:Mediastop:A4
+T:Volumedown:AE
+T:Volumeup:B0
+T:Webhome:B2
+T:KP_Comma:B3
+T:KP_Divide:B5
+T:Sys_Req:B7
+T:Pause:C5
+#T:Home:C7
+#T:Up:C8
+#T:Prior:C9
+#T:Left:CB
+#T:Right:CD
+#T:End:CF
+#T:Down:D0
+#T:Next:D1
+#T:Insert:D2
+#T:Delete:D3
+T:Lwin:DB
+T:Rwin:DC
+T:Apps:DD
+T:Power:DE
+T:Sleep:DF
+T:Wake:E3
+T:Websearch:E5
+T:Webfavorites:E6
+T:Webrefresh:E7
+T:Webstop:E8
+T:Webforward:E9
+T:Webback:EA
+T:Mycomputer:EB
+T:Mail:EC
+T:Mediaselect:ED
+?:1
+
+
+######################
+# For NEC PC-98x1
+
+?:[EQU $KEYBOARD NEC98]
+T:1:01
+T:2:02
+T:3:03
+T:4:04
+T:5:05
+T:6:06
+T:7:07
+T:8:08
+T:9:09
+T:0:0A
+T:-:0B
+T:^:0C
+T:Yen:0D
+T:Backspace:0E
+T:Q:10
+T:W:11
+T:E:12
+T:R:13
+T:T:14
+T:Y:15
+T:U:16
+T:I:17
+T:O:18
+T:P:19
+T:@:1a
+T:[:1b
+T:Enter:1C
+T:A:1D
+T:S:1E
+T:D:1F
+T:F:20
+T:G:21
+T:H:22
+T:J:23
+T:K:24
+T:L:25
+T:;:26
+T:\::27
+T:[:28
+T:Z:29
+T:X:2A
+T:C:2B
+T:V:2C
+T:B:2D
+T:N:2E
+T:M:2F
+T:,:30
+T:.:31
+T:\/:32
+T:_:33
+T:Henkan:35
+T:Page_Down:36
+T:Page_Up:37
+T:Insert:38
+T:Delete:39
+T:Up:3A
+T:Left:3B
+T:Right:3C
+T:Down:3D
+T:Home:3E
+T:End:3F
+T:KP_Subtract:40
+T:KP_Divide:41
+T:KP_7:42
+T:KP_8:43
+T:KP_9:44
+T:KP_Multiply:45
+T:KP_4:46
+T:KP_5:47
+T:KP_6:48
+T:KP_Add:49
+T:KP_1:4A
+T:KP_2:4B
+T:KP_3:4C
+T:KP_Equal:4D
+T:KP_0:4E
+T:KP_Comma:4F
+T:KP_Decimal:50
+T:Muhenkan:51
+T:F11:52
+T:F12:53
+T:F13:54
+T:F14:55
+T:F15:56
+T:Pause:60
+T:F1:62
+T:F2:63
+T:F3:64
+T:F4:65
+T:F5:66
+T:F6:67
+T:F7:68
+T:F8:69
+T:F9:6A
+T:F10:6B
+T:CapsLock:71
+T:Hiragana_Katakana:72
+T:Menu:79
+
+?:[NOT [EQU $KEYBOARD NEC98]]
+
+
+#
+# Hack -- Some foreign keyboards have a special key on the keyboard, which
+# is used to generate the "<", ">", and "|" keys (alone, shifted, alt-ed).
+#
+
+A:<
+P:^_x56\r
+
+A:>
+P:^_Sx56\r
+
+A:|
+P:^_Ax56\r
+
+
+#
+# Keypad (/,*,7,8,9,-,4,5,6,+,1,2,3,0,.)
+#
+
+A:/
+P:^_x35\r
+
+A:*
+P:^_x37\r
+
+A:7
+P:^_x47\r
+
+A:8
+P:^_x48\r
+
+A:9
+P:^_x49\r
+
+A:-
+P:^_x4A\r
+
+A:4
+P:^_x4B\r
+
+A:5
+P:^_x4C\r
+
+A:6
+P:^_x4D\r
+
+A:+
+P:^_x4E\r
+
+A:1
+P:^_x4F\r
+
+A:2
+P:^_x50\r
+
+A:3
+P:^_x51\r
+
+A:0
+P:^_x52\r
+
+A:.
+P:^_x53\r
+
+
+#
+# Shift + Keypad (/,*,7,8,9,-,4,5,6,+,1,2,3,0,.)
+#
+
+A:\e\e\e
+P:^_Sx35\r
+
+A:\e\e\e
+P:^_Sx37\r
+
+A:\e\e\\.7
+P:^_Sx47\r
+
+A:\e\e\\.8
+P:^_Sx48\r
+
+A:\e\e\\.9
+P:^_Sx49\r
+
+A:\e\e\e
+P:^_Sx4A\r
+
+A:\e\e\\.4
+P:^_Sx4B\r
+
+A:\e\e\\.5
+P:^_Sx4C\r
+
+A:\e\e\\.6
+P:^_Sx4D\r
+
+A:\e\e\e
+P:^_Sx4E\r
+
+A:\e\e\\.1
+P:^_Sx4F\r
+
+A:\e\e\\.2
+P:^_Sx50\r
+
+A:\e\e\\.3
+P:^_Sx51\r
+
+A:\e\e\e
+P:^_Sx52\r
+
+A:\e\e\e
+P:^_Sx53\r
+
+
+#
+# Control + Keypad (/,*,7,8,9,-,4,5,6,+,1,2,3,0,.)
+#
+
+A:\e\e\e
+P:^_Cx35\r
+
+A:\e\e\e
+P:^_Cx37\r
+
+A:\e\e\\+7
+P:^_Cx47\r
+
+A:\e\e\\+8
+P:^_Cx48\r
+
+A:\e\e\\+9
+P:^_Cx49\r
+
+A:\e\e\e
+P:^_Cx4A\r
+
+A:\e\e\\+4
+P:^_Cx4B\r
+
+A:\e\e\\+5
+P:^_Cx4C\r
+
+A:\e\e\\+6
+P:^_Cx4D\r
+
+A:\e\e\e
+P:^_Cx4E\r
+
+A:\e\e\\+1
+P:^_Cx4F\r
+
+A:\e\e\\+2
+P:^_Cx50\r
+
+A:\e\e\\+3
+P:^_Cx51\r
+
+A:\e\e\e
+P:^_Cx52\r
+
+A:\e\e\e
+P:^_Cx53\r
+
+
+#
+# Control + Keypad (/,*,7,8,9,-,4,5,6,+,1,2,3,0,.)
+#
+
+A:\e\e\e
+P:^_Cx95\r
+
+A:\e\e\e
+P:^_Cx96\r
+
+A:\e\e\\+7
+P:^_Cx77\r
+
+A:\e\e\\+8
+P:^_Cx8D\r
+
+A:\e\e\\+9
+P:^_Cx84\r
+
+A:\e\e\e
+P:^_Cx8E\r
+
+A:\e\e\\+4
+P:^_Cx73\r
+
+A:\e\e\\+5
+P:^_Cx8F\r
+
+A:\e\e\\+6
+P:^_Cx74\r
+
+A:\e\e\e
+P:^_Cx90\r
+
+A:\e\e\\+1
+P:^_Cx75\r
+
+A:\e\e\\+2
+P:^_Cx91\r
+
+A:\e\e\\+3
+P:^_Cx76\r
+
+A:\e\e\e
+P:^_Cx92\r
+
+A:\e\e\e
+P:^_Cx93\r
+
diff --git a/lib/pref/pref-x11.prf b/lib/pref/pref-x11.prf
new file mode 100644
index 00000000..f4df9376
--- /dev/null
+++ b/lib/pref/pref-x11.prf
@@ -0,0 +1,413 @@
+# File: pref-x11.prf
+
+#
+# This file provides some macros for use with versions of Angband compiled
+# using the "main-x11.c" (or "main-xaw.c") file.
+#
+# Note the use of "\e\e\e\e" (four escapes) to allow the macros to work
+# even if the game is not yet ready for a command.
+#
+# Note the use of "\\." (for "run") and "\\+" (for "alter"), to make sure
+# that the macros will work regardless of the "keymap" being used.
+#
+
+#
+# Macro Trigger configuration
+#
+# T:<trigger template>:<modifiers>:<modifier name1>:<modifier name2>:....
+# '&' in <trigger template> specifies location of modifier character.
+# '#' in <trigger template> specifies location of key code.
+#
+# If <trigger template> is null string, all trigger difinition will be cleared.
+
+T:&_#:NSOM:control-:shift-:alt-:mod2-
+
+# T:<trigger name>:<keycode>:<keycode with shiftkey>
+# '\' in <trigger name> is escape character.
+
+T:Clear:FF0B
+T:Pause:FF13
+T:Scroll_Lock:FF14
+T:Sys_Req:FF15
+T:Escape:FF1B
+T:Delete:FFFF
+T:Multi_Key:FF20
+T:Codeinput:FF37
+T:SingleCandidate:FF3C
+T:MultipleCandidate:FF3D
+T:PreviousCandidate:FF3E
+T:Kanji:FF21
+T:Muhenkan:FF22
+T:Henkan:FF23
+T:Henkan_Mode:FF23
+T:Romaji:FF24
+T:Hiragana:FF25
+T:Katakana:FF26
+T:Hiragana_Katakana:FF27
+T:Zenkaku:FF28
+T:Hankaku:FF29
+T:Zenkaku_Hankaku:FF2A
+T:Touroku:FF2B
+T:Massyo:FF2C
+T:Kana_Lock:FF2D
+T:Kana_Shift:FF2E
+T:Eisu_Shift:FF2F
+T:Eisu_Toggle:FF30
+T:Kanji_Bangou:FF37
+T:Zen_Koho:FF3D
+T:Mae_Koho:FF3E
+T:Home:FF50
+T:Left:FF51
+T:Up:FF52
+T:Right:FF53
+T:Down:FF54
+T:Page_Up:FF55
+T:Page_Down:FF56
+T:End:FF57
+T:Begin:FF58
+T:Select:FF60
+T:Print:FF61
+T:Execute:FF62
+T:Insert:FF63
+T:Undo:FF65
+T:Redo:FF66
+T:Menu:FF67
+T:Find:FF68
+T:Cancel:FF69
+T:Help:FF6A
+T:Break:FF6B
+T:Mode_Switch:FF7E
+T:Num_Lock:FF7F
+T:KP_Space:FF80
+T:KP_Tab:FF89
+T:KP_Enter:FF8D
+T:KP_F1:FF91
+T:KP_F2:FF92
+T:KP_F3:FF93
+T:KP_F4:FF94
+T:KP_Home:FF95
+T:KP_Left:FF96
+T:KP_Up:FF97
+T:KP_Right:FF98
+T:KP_Down:FF99
+T:KP_Page_Up:FF9A
+T:KP_Page_Down:FF9B
+T:KP_End:FF9C
+T:KP_Begin:FF9D
+T:KP_Insert:FF9E
+T:KP_Delete:FF9F
+T:KP_Equal:FFBD
+T:KP_Multiply:FFAA
+T:KP_Add:FFAB
+T:KP_Comma:FFAC
+T:KP_Subtract:FFAD
+T:KP_Decimal:FFAE
+T:KP_Divide:FFAF
+T:KP_0:FFB0
+T:KP_1:FFB1
+T:KP_2:FFB2
+T:KP_3:FFB3
+T:KP_4:FFB4
+T:KP_5:FFB5
+T:KP_6:FFB6
+T:KP_7:FFB7
+T:KP_8:FFB8
+T:KP_9:FFB9
+T:F1:FFBE
+T:F2:FFBF
+T:F3:FFC0
+T:F4:FFC1
+T:F5:FFC2
+T:F6:FFC3
+T:F7:FFC4
+T:F8:FFC5
+T:F9:FFC6
+T:F10:FFC7
+T:F11:FFC8
+T:F12:FFC9
+T:F13:FFCA
+T:F14:FFCB
+T:F15:FFCC
+T:F16:FFCD
+T:F17:FFCE
+T:F18:FFCF
+T:F19:FFD0
+T:F20:FFD1
+T:F21:FFD2
+T:F22:FFD3
+T:F23:FFD4
+T:F24:FFD5
+T:F25:FFD6
+T:F26:FFD7
+T:F27:FFD8
+T:F28:FFD9
+T:F29:FFDA
+T:F30:FFDB
+T:F31:FFDC
+T:F32:FFDD
+T:F33:FFDE
+T:F34:FFDF
+T:F35:FFE0
+
+T:\::3A:2A
+T:*:3A:2A
+T:;:3B:2B
+T:+:3B:2B
+T:,:2C:3C
+T:<:2C:3C
+T:-:2D:3D
+T:=:2D:3D
+T:.:2E:3E
+T:>:2E:3E
+T:\/:2F:3F
+T:?:2F:3F
+T:0:30:7E
+T:~:30:7E
+T:1:31:21
+T:!:31:21
+T:2:32:22
+T:":32:22
+T:3:33:23
+T:#:33:23
+T:4:34:24
+T:$:34:24
+T:5:35:25
+T:%:35:25
+T:6:36:26
+T:&:36:26
+T:7:37:27
+T:\':37:27
+T:8:38:28
+T:(:38:28
+T:9:39:29
+T:):39:29
+T:@:40:60
+T:`:40:60
+T:A:61:41
+T:B:62:42
+T:C:63:43
+T:D:64:44
+T:E:65:45
+T:F:66:46
+T:G:67:47
+T:H:68:48
+T:I:69:49
+T:J:6A:4A
+T:K:6B:4B
+T:L:6C:4C
+T:M:6D:4D
+T:N:6E:4E
+T:O:6F:4F
+T:P:70:50
+T:Q:71:51
+T:R:72:52
+T:S:73:53
+T:T:74:54
+T:U:75:55
+T:V:76:56
+T:W:77:57
+T:X:78:58
+T:Y:79:59
+T:Z:7A:5A
+T:[:5B:7B
+T:{:5B:7B
+T:\\:5C:5F
+T:_:5C:5F
+T:]:5D:7D
+T:}:5D:7D
+T:^:5E:7E
+T:~:5E:7E
+T:|:A5:7C
+
+
+# Keypad (0-9)
+
+A:0
+P:^__FFB0\r
+P:^__FF63\r
+P:^__????\r
+P:^__FF9E\r
+
+A:1
+P:^__FFB1\r
+P:^__FF57\r
+P:^__FFDE\r
+P:^__FF9C\r
+
+A:2
+P:^__FFB2\r
+P:^__FF54\r
+P:^__FFDF\r
+P:^__FF99\r
+
+A:3
+P:^__FFB3\r
+P:^__FF56\r
+P:^__FFE0\r
+P:^__FF9B\r
+
+A:4
+P:^__FFB4\r
+P:^__FF51\r
+P:^__FFDB\r
+P:^__FF96\r
+
+A:5
+P:^__FFB5\r
+P:^__FF80\r
+P:^__FFDC\r
+P:^__FF9D\r
+
+A:6
+P:^__FFB6\r
+P:^__FF53\r
+P:^__FFDD\r
+P:^__FF98\r
+
+A:7
+P:^__FFB7\r
+P:^__FF50\r
+P:^__FFD8\r
+P:^__FF95\r
+
+A:8
+P:^__FFB8\r
+P:^__FF52\r
+P:^__FFD9\r
+P:^__FF97\r
+
+A:9
+P:^__FFB9\r
+P:^__FF55\r
+P:^__FFDA\r
+P:^__FF9A\r
+
+
+# Shift-Keypad (0-9)
+
+A:\e\e\e\e\\.0
+P:^_S_FFB0\r
+P:^_S_FF63\r
+P:^_S_????\r
+P:^_S_FF9E\r
+
+A:\e\e\e\e\\.1
+P:^_S_FFB1\r
+P:^_S_FF57\r
+P:^_S_FFDE\r
+P:^_S_FF9C\r
+
+A:\e\e\e\e\\.2
+P:^_S_FFB2\r
+P:^_S_FF54\r
+P:^_S_FFDF\r
+P:^_S_FF99\r
+
+A:\e\e\e\e\\.3
+P:^_S_FFB3\r
+P:^_S_FF56\r
+P:^_S_FFE0\r
+P:^_S_FF9B\r
+
+A:\e\e\e\e\\.4
+P:^_S_FFB4\r
+P:^_S_FF51\r
+P:^_S_FFDB\r
+P:^_S_FF96\r
+
+A:\e\e\e\e\\.5
+P:^_S_FFB5\r
+P:^_S_FF80\r
+P:^_S_FFDC\r
+P:^_S_????\r
+
+A:\e\e\e\e\\.6
+P:^_S_FFB6\r
+P:^_S_FF53\r
+P:^_S_FFDD\r
+P:^_S_FF98\r
+
+A:\e\e\e\e\\.7
+P:^_S_FFB7\r
+P:^_S_FF50\r
+P:^_S_FFD8\r
+P:^_S_FF95\r
+
+A:\e\e\e\e\\.8
+P:^_S_FFB8\r
+P:^_S_FF52\r
+P:^_S_FFD9\r
+P:^_S_FF97\r
+
+A:\e\e\e\e\\.9
+P:^_S_FFB9\r
+P:^_S_FF55\r
+P:^_S_FFDA\r
+P:^_S_FF9A\r
+
+
+# Control-Keypad (0-9)
+
+A:\e\e\e\e\\+0
+P:^_N_FFB0\r
+P:^_N_FF63\r
+P:^_N_????\r
+P:^_N_FF9E\r
+
+A:\e\e\e\e\\+1
+P:^_N_FFB1\r
+P:^_N_FF57\r
+P:^_N_FFDE\r
+P:^_N_FF9C\r
+
+A:\e\e\e\e\\+2
+P:^_N_FFB2\r
+P:^_N_FF54\r
+P:^_N_FFDF\r
+P:^_N_FF99\r
+
+A:\e\e\e\e\\+3
+P:^_N_FFB3\r
+P:^_N_FF56\r
+P:^_N_FFE0\r
+P:^_N_FF9B\r
+
+A:\e\e\e\e\\+4
+P:^_N_FFB4\r
+P:^_N_FF51\r
+P:^_N_FFDB\r
+P:^_N_FF96\r
+
+A:\e\e\e\e\\+5
+P:^_N_FFB5\r
+P:^_N_FF80\r
+P:^_N_FFDC\r
+P:^_N_????\r
+
+A:\e\e\e\e\\+6
+P:^_N_FFB6\r
+P:^_N_FF53\r
+P:^_N_FFDD\r
+P:^_N_FF98\r
+
+A:\e\e\e\e\\+7
+P:^_N_FFB7\r
+P:^_N_FF50\r
+P:^_N_FFD8\r
+P:^_N_FF95\r
+
+A:\e\e\e\e\\+8
+P:^_N_FFB8\r
+P:^_N_FF52\r
+P:^_N_FFD9\r
+P:^_N_FF97\r
+
+A:\e\e\e\e\\+9
+P:^_N_FFB9\r
+P:^_N_FF55\r
+P:^_N_FFDA\r
+P:^_N_FF9A\r
+
+
+
+
diff --git a/lib/pref/pref.prf b/lib/pref/pref.prf
new file mode 100644
index 00000000..a6bfdbe1
--- /dev/null
+++ b/lib/pref/pref.prf
@@ -0,0 +1,311 @@
+# File: pref.prf
+
+#
+# This file defines "default" actions of various kinds
+#
+# This file includes, if appropriate, various "sub-files"
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+# Note that the "X" key is mapped in both keysets to the key sequence
+# "w0", which will "swap weapons" as long as both weapons contain the
+# inscription "@0". For example, inscribe your main weapon as "@1@0"
+# and your digger (or secondary weapon) as "@2@0".
+#
+
+
+##### Force certain options #####
+
+## # Option -- Default to original commands
+## X:rogue_like_commands
+
+## # Option -- Default to roguelike commands
+## Y:rogue_like_commands
+
+
+##### Original Keyset Mappings #####
+
+# Stay still
+A:,
+C:0:5
+
+# Movement
+A:;1
+C:0:1
+A:;2
+C:0:2
+A:;3
+C:0:3
+A:;4
+C:0:4
+A:;6
+C:0:6
+A:;7
+C:0:7
+A:;8
+C:0:8
+A:;9
+C:0:9
+
+# Hack -- Return
+A:\r
+C:0:^J
+
+# Hack -- Commit suicide
+A:Q
+C:0:^K
+
+# Hack -- Commit suicide
+A:Q
+C:0:^C
+
+
+##### Roguelike Keyset Mappings #####
+
+# Run
+A:.
+C:1:,
+
+# Stay still
+A:,
+C:1:.
+
+# Stay still
+A:,
+C:1:5
+
+# Movement
+A:;1
+C:1:1
+A:;2
+C:1:2
+A:;3
+C:1:3
+A:;4
+C:1:4
+A:;6
+C:1:6
+A:;7
+C:1:7
+A:;8
+C:1:8
+A:;9
+C:1:9
+
+# Movement (rogue keys)
+A:;1
+C:1:b
+A:;2
+C:1:j
+A:;3
+C:1:n
+A:;4
+C:1:h
+A:;6
+C:1:l
+A:;7
+C:1:y
+A:;8
+C:1:k
+A:;9
+C:1:u
+
+# Running (shift + rogue keys)
+A:.1
+C:1:B
+A:.2
+C:1:J
+A:.3
+C:1:N
+A:.4
+C:1:H
+A:.6
+C:1:L
+A:.7
+C:1:Y
+A:.8
+C:1:K
+A:.9
+C:1:U
+
+# Altering (control + rogue keys)
+A:+1
+C:1:^B
+A:+2
+C:1:^J
+A:+3
+C:1:^N
+A:+4
+C:1:^H
+A:+6
+C:1:^L
+A:+7
+C:1:^Y
+A:+8
+C:1:^K
+A:+9
+C:1:^U
+
+# Allow use of the "tunnel" command
+A:T
+C:1:^T
+
+# Allow use of the "destroy" command
+A:k
+C:1:^D
+
+# Locate player on map
+A:L
+C:1:W
+
+# Browse a book (Peruse)
+A:b
+C:1:P
+
+# Toggle search mode
+A:S
+C:1:#
+
+# Use a staff (Zap)
+A:u
+C:1:Z
+
+# Take off equipment
+A:t
+C:1:T
+
+# Fire an item
+A:f
+C:1:t
+
+# Bash a door (Force)
+A:B
+C:1:f
+
+# Look around (examine)
+A:l
+C:1:x
+
+# Aim a wand (Zap)
+A:a
+C:1:z
+
+# Zap a rod (Activate)
+A:z
+C:1:a
+
+# Hack -- Commit suicide
+A:Q
+C:1:^C
+
+# Hack - race/mutation power activation
+A:U
+C:1:O
+
+# Sacrifice at an altar
+A:O
+C:1:^g
+
+# Hack up a corpse
+A:h
+C:1:$
+
+# Cure meat
+A:K
+C:1:^O
+
+# Pet commands
+A:P
+C:1:X
+
+# Engrave
+A:x
+C:1:]
+
+# Steal
+A:Z
+C:1:[
+
+# Drink from a fountain
+A:H
+C:1:V
+
+# Give item
+A:y
+C:1:'
+
+# Chat
+A:Y
+C:1:(
+
+# Command line
+A:#
+C:1:)
+
+# Record command
+A:$
+C:1:S
+
+
+### Extended macros ###
+
+# Note that : and ' can only be included in triggers if they are
+# within quotes (i.e. as ':' or ''').
+
+L:-8192:help:Show this help
+L:-8192:?
+L:-8192:'''
+L:-8191:irc_on:Connect to IRC
+L:-8191:C
+L:-8190:irc_say:Speak on IRC
+L:-8190:@
+L:-8190:':'
+L:-8189:irc_off:Disconnect from IRC
+L:-8188:time:Get the current game time
+L:-8188:T
+L:-8187:skills:Check skills
+L:-8187:S
+L:-8186:html-dump:Save an html screenshot
+L:-8186:D
+L:-8184:quest:Show quest list
+L:-8184:Q
+L:-8183:blunder:Walk without disarming
+L:-8183:B
+L:-8182:ability:Check abilities
+L:-8182:A
+L:y:give:Give an object to a monster
+L:Y:chat:Talk to a monster
+L:j:jam:Jam a door
+
+##### System Specific Subfiles #####
+
+?:[IOR [EQU $SYS xaw] [EQU $SYS x11] [EQU $SYS gtk2]]
+%:pref-x11.prf
+
+?:[EQU $SYS gcu]
+%:pref-gcu.prf
+
+?:[EQU $SYS ami]
+%:pref-ami.prf
+
+?:[EQU $SYS mac]
+%:pref-mac.prf
+
+?:[IOR [EQU $SYS win] [EQU $SYS dos] [EQU $SYS ibm]]
+%:pref-win.prf
+
+?:[EQU $SYS emx]
+%:pref-emx.prf
+
+?:[EQU $SYS acn]
+%:pref-acn.prf
+
+?:[EQU $SYS sdl]
+%:pref-sdl.prf
+
+?:[EQU $SYS pgu]
+%:pref-pgu.prf
+
+?:1
+
+
diff --git a/lib/pref/trap-iso.prf b/lib/pref/trap-iso.prf
new file mode 100644
index 00000000..a2b77aec
--- /dev/null
+++ b/lib/pref/trap-iso.prf
@@ -0,0 +1,429 @@
+# Prf file for use with the 8x8 tiles to define
+# trap image locations. Separated out from main
+# graphics definitions due to the G:T:num:y:x
+# instead of T:num:y:x (major problems if this
+# file is opened in the TileAssigner)
+
+# Weakness Traps
+G:T:1:0x8A:0xF6
+G:T:2:0x8A:0xF6
+G:T:3:0x8A:0xF6
+
+# Intelligence Traps
+G:T:4:0x8A:0xF6
+G:T:5:0x8A:0xF6
+G:T:6:0x8A:0xF6
+
+# Wisdom Traps
+G:T:7:0x8A:0xF6
+G:T:8:0x8A:0xF6
+G:T:9:0x8A:0xF6
+
+# Fumbling Fingers Traps
+G:T:10:0x8A:0xF6
+G:T:11:0x8A:0xF6
+G:T:12:0x8A:0xF6
+
+# Wasting Traps
+G:T:13:0x8A:0xF6
+G:T:14:0x8A:0xF6
+G:T:15:0x8A:0xF6
+
+# Beauty Traps
+G:T:16:0x8A:0xF6
+G:T:17:0x8A:0xF6
+G:T:18:0x8A:0xF6
+
+# Trap of Curse Weapon
+G:T:20:0x8A:0xF7
+
+# Trap of Curse Armor
+G:T:21:0x8A:0xF7
+
+# Earthquake Trap
+G:T:22:0x8A:0xFC
+
+# Poison Needle Trap
+G:T:23:0x8A:0xF8
+
+# Summon Monster Trap
+G:T:24:0x8A:0xFA
+
+# Summon Undead Trap
+G:T:25:0x8A:0xFA
+
+# Summon Greater Undead Trap
+G:T:26:0x8A:0xFA
+
+# Teleport Trap
+G:T:27:0x8A:0xFA
+
+# Paralyzing Trap
+G:T:28:0x8A:0xF8
+
+# Explosive Device
+G:T:29:0x8A:0xF8
+
+# Teleport Item Trap
+G:T:30:0x8A:0xFA
+
+# Lose Memory Trap
+G:T:31:0x8A:0xF8
+
+# Bitter Regret Trap
+G:T:32:0x8A:0xF8
+
+# Bowel Cramps Trap
+G:T:33:0x8A:0xF8
+
+# Blindness/Confusion Trap
+G:T:34:0x8A:0xF8
+
+# Aggravation Trap
+G:T:35:0x8A:0xFC
+
+# Multiplication Trap
+G:T:36:0x8A:0xFC
+
+# Steal Item Trap
+G:T:37:0x8A:0xF7
+
+# Summon Fast Quylthulgs Trap
+G:T:38:0x8A:0xFA
+
+# Trap of Sinking
+G:T:39:0x8A:0xFA
+
+# Trap of Mana Drain
+G:T:40:0x8A:0xF8
+
+# Trap of Missing Money
+#G:T:41:0x8A:0xF7
+G:T:41:0x8A:0xF9
+
+# Trap of No Return
+G:T:42:0x8A:0xF7
+
+# Trap of Silent Switching
+G:T:43:0x8A:0xF7
+
+# Trap of Walls
+G:T:44:0x8A:0xFC
+
+# Trap of Calling Out
+G:T:45:0x8A:0xFA
+
+# Trap of Sliding
+G:T:46:0x8A:0xF8
+
+# Trap of Charges Drain
+G:T:47:0x8A:0xF7
+
+# Trap of Stair Movement
+G:T:48:0x8A:0xFC
+
+# Trap of New Trap
+G:T:49:0x8A:0xFC
+
+# Trap of Scatter Items
+G:T:50:0x8A:0xFA
+
+# Trap of Decay
+G:T:51:0x8A:0xF8
+
+# Trap of Wasting Wands
+G:T:52:0x8A:0xF7
+
+# Trap of Filling
+G:T:53:0x8A:0xFC
+
+# Trap of Drain Speed
+G:T:54:0x8A:0xF7
+
+# Lightning Bolt Trap
+G:T:60:0x8A:0xF9
+
+# Poison Bolt Trap
+G:T:61:0x8A:0xF9
+
+# Acid Bolt Trap
+G:T:62:0x8A:0xF9
+
+# Cold Bolt Trap
+G:T:63:0x8A:0xF9
+
+# Fire Bolt Trap
+G:T:64:0x8A:0xF9
+
+# Plasma Bolt Trap
+G:T:65:0x8A:0xF9
+
+# Water Bolt Trap
+G:T:66:0x8A:0xF9
+
+# Lite Bolt Trap
+G:T:67:0x8A:0xF9
+
+# Dark Bolt Trap
+G:T:68:0x8A:0xF9
+
+# Shards Bolt Trap
+G:T:69:0x8A:0xF9
+
+# Sound Bolt Trap
+G:T:70:0x8A:0xF9
+
+# Confusion Bolt Trap
+G:T:71:0x8A:0xF9
+
+# Force Bolt Trap
+G:T:72:0x8A:0xF9
+
+# Inertia Bolt Trap
+G:T:73:0x8A:0xF9
+
+# Mana Bolt Trap
+G:T:74:0x8A:0xF9
+
+# Ice Bolt Trap
+G:T:75:0x8A:0xF9
+
+# Chaos Bolt Trap
+G:T:76:0x8A:0xF9
+
+# Nether Bolt Trap
+G:T:77:0x8A:0xF9
+
+# Disenchantment Bolt Trap
+G:T:78:0x8A:0xF9
+
+# Nexus Bolt Trap
+G:T:79:0x8A:0xF9
+
+# Time Bolt Trap
+G:T:80:0x8A:0xF9
+
+# Gravity Bolt Trap
+G:T:81:0x8A:0xF9
+
+# Lightning Ball Trap
+G:T:82:0x8A:0xFA
+
+# Poison Ball Trap
+G:T:83:0x8A:0xFA
+
+# Acid Ball Trap
+G:T:84:0x8A:0xFA
+
+# Cold Ball Trap
+G:T:85:0x8A:0xFA
+
+# Fire Ball Trap
+G:T:86:0x8A:0xFA
+
+# Plasma Ball Trap
+G:T:87:0x8A:0xFA
+
+# Water Ball Trap
+G:T:88:0x8A:0xFA
+
+# Light Ball Trap
+G:T:89:0x8A:0xFA
+
+# Darkness Ball Trap
+G:T:90:0x8A:0xFA
+
+# Shards Ball Trap
+G:T:91:0x8A:0xFA
+
+# Sound Ball Trap
+G:T:92:0x8A:0xFA
+
+# Confusion Ball Trap
+G:T:93:0x8A:0xFA
+
+# Force Ball Trap
+G:T:94:0x8A:0xFA
+
+# Inertia Ball Trap
+G:T:95:0x8A:0xFA
+
+# Mana Ball Trap
+G:T:96:0x8A:0xFA
+
+# Ice Ball Trap
+G:T:97:0x8A:0xFA
+
+# Chaos Ball Trap
+G:T:98:0x8A:0xFA
+
+# Nether Ball Trap
+G:T:99:0x8A:0xFA
+
+# Disenchantment Ball Trap
+G:T:100:0x8A:0xFA
+
+# Nexus Ball Trap
+G:T:101:0x8A:0xFA
+
+# Time Ball Trap
+G:T:102:0x8A:0xFA
+
+# Gravity Ball Trap
+G:T:103:0x8A:0xFA
+
+# Arrow Trap
+G:T:110:0x8A:0xFC
+
+# Bolt Trap
+G:T:111:0x8A:0xFC
+
+# Seeker Arrow Trap
+G:T:112:0x8A:0xFC
+
+# Seeker Bolt Trap
+G:T:113:0x8A:0xFC
+
+# Poison Arrow Trap
+G:T:114:0x8A:0xFC
+
+# Poison Bolt Trap
+G:T:115:0x8A:0xFC
+
+# Poison Seeker Arrow Trap
+G:T:116:0x8A:0xFC
+
+# Poison Seeker Bolt Trap
+G:T:117:0x8A:0xFC
+
+# Broken Dagger Trap
+G:T:118:0x8A:0xFC
+
+# Dagger Trap
+G:T:119:0x8A:0xFC
+
+# Poison Broken Dagger Trap
+G:T:120:0x8A:0xFC
+
+# Poison Dagger Trap
+G:T:121:0x8A:0xFC
+
+# Arrows Trap
+G:T:122:0x8A:0xFC
+
+# Bolts Trap
+G:T:123:0x8A:0xFC
+
+# Seeker Arrow Trap
+G:T:124:0x8A:0xFC
+
+# Seeker Bolt Trap
+G:T:125:0x8A:0xFC
+
+# Poison Arrows Trap
+G:T:126:0x8A:0xFC
+
+# Poison Bolt Trap
+G:T:127:0x8A:0xFC
+
+# Poison Seeker Arrows Trap
+G:T:128:0x8A:0xFC
+
+# Poison Seeker Bolts Trap
+G:T:129:0x8A:0xFC
+
+# Broken Daggers Trap
+G:T:130:0x8A:0xFC
+
+# Dagger Trap
+G:T:131:0x8A:0xFC
+
+# Poison Broken Daggers Trap
+G:T:132:0x8A:0xFC
+
+# Poison Daggers Trap
+G:T:133:0x8A:0xFC
+
+# Trap of Drop Item
+G:T:140:0x8A:0xF7
+
+# Trap of Drop Items
+G:T:141:0x8A:0xF7
+
+# Trap of Drop Everything
+G:T:142:0x8A:0xF7
+
+# Trap of Femininity
+G:T:150:0x8A:0xF8
+
+# Trap of Masculinity
+G:T:151:0x8A:0xF8
+
+# Trap of Neutrality
+G:T:152:0x8A:0xF8
+
+# Trap of Aging
+G:T:153:0x8A:0xF8
+
+# Trap of Growing
+G:T:154:0x8A:0xF8
+
+# Trap of Shrinking
+G:T:155:0x8A:0xF8
+
+# Trap of Tanker Drain
+G:T:157:0x8A:0xF8
+
+# Trap of Divine Anger
+G:T:158:0x8A:0xFB
+
+# Trap of Divine Wrath
+G:T:159:0x8A:0xFB
+
+# Hallucination Trap
+G:T:160:0x8A:0xF8
+
+# Greater Magic Missile Trap
+G:T:161:0x8A:0xF9
+
+# Foulness Trap
+G:T:162:0x8A:0xF9
+
+# Trap of Death Ray
+G:T:163:0x8A:0xF9
+
+# Trap of Holy Fire
+G:T:164:0x8A:0xF9
+
+# Trap of Hell Fire
+G:T:165:0x8A:0xF9
+
+# Psi Bolt Trap
+G:T:166:0x8A:0xF9
+
+# Psi Drain Trap
+G:T:167:0x8A:0xF8
+
+# Plasma (Nuke) Ball Trap
+G:T:168:0x8A:0xFA
+
+# Psi Ball Trap
+G:T:169:0x8A:0xFA
+
+# Aquirement Trap
+G:T:170:0x8A:0xFA
+
+# Greater Lightning Bolt Trap
+G:T:171:0x8A:0xF9
+
+# Greater Poison Bolt Trap
+G:T:172:0x8A:0xF9
+
+# Greater Acid Bolt Trap
+G:T:173:0x8A:0xF9
+
+# Greater Cold Bolt Trap
+G:T:174:0x8A:0xF9
+
+# Greater Fire Bolt Trap
+G:T:175:0x8A:0xF9
diff --git a/lib/pref/trap-xxx.prf b/lib/pref/trap-xxx.prf
new file mode 100644
index 00000000..f4d699a0
--- /dev/null
+++ b/lib/pref/trap-xxx.prf
@@ -0,0 +1,428 @@
+# Prf file for use with the 8x8 tiles to define
+# trap image locations. Separated out from main
+# graphics definitions due to the G:T:num:y:x
+# instead of T:num:y:x (major problems if this
+# file is opened in the TileAssigner)
+
+# Weakness Traps
+G:T:1:0x82:0x9E
+G:T:2:0x82:0x9E
+G:T:3:0x82:0x9E
+
+# Intelligence Traps
+G:T:4:0x82:0x9E
+G:T:5:0x82:0x9E
+G:T:6:0x82:0x9E
+
+# Wisdom Traps
+G:T:7:0x82:0x9E
+G:T:8:0x82:0x9E
+G:T:9:0x82:0x9E
+
+# Fumbling Fingers Traps
+G:T:10:0x82:0x9E
+G:T:11:0x82:0x9E
+G:T:12:0x82:0x9E
+
+# Wasting Traps
+G:T:13:0x82:0x9E
+G:T:14:0x82:0x9E
+G:T:15:0x82:0x9E
+
+# Beauty Traps
+G:T:16:0x82:0x9E
+G:T:17:0x82:0x9E
+G:T:18:0x82:0x9E
+
+# Trap of Curse Weapon
+G:T:20:0xA2:0x92
+
+# Trap of Curse Armor
+G:T:21:0xA2:0x92
+
+# Earthquake Trap
+G:T:22:0xA2:0x87
+
+# Poison Needle Trap
+G:T:23:0xA2:0x8B
+
+# Summon Monster Trap
+G:T:24:0xA2:0x89
+
+# Summon Undead Trap
+G:T:25:0xA2:0x89
+
+# Summon Greater Undead Trap
+G:T:26:0xA2:0x89
+
+# Teleport Trap
+G:T:27:0x8A:0x9C
+
+# Paralyzing Trap
+G:T:28:0xA2:0x8B
+
+# Explosive Device
+G:T:29:0xA2:0x8B
+
+# Teleport Item Trap
+G:T:30:0x8A:0x9C
+
+# Lose Memory Trap
+G:T:31:0xA2:0x8B
+
+# Bitter Regret Trap
+G:T:32:0xA2:0x8B
+
+# Bowel Cramps Trap
+G:T:33:0xA2:0x8B
+
+# Blindness/Confusion Trap
+G:T:34:0xA2:0x8B
+
+# Aggravation Trap
+G:T:35:0xA2:0x87
+
+# Multiplication Trap
+G:T:36:0xA2:0x87
+
+# Steal Item Trap
+G:T:37:0xA2:0x92
+
+# Summon Fast Quylthulgs Trap
+G:T:38:0xA2:0x89
+
+# Trap of Sinking
+G:T:39:0x8A:0x9C
+
+# Trap of Mana Drain
+G:T:40:0xA2:0x8B
+
+# Trap of Missing Money
+G:T:41:0xA2:0x92
+
+# Trap of No Return
+G:T:42:0xA2:0x92
+
+# Trap of Silent Switching
+G:T:43:0xA2:0x92
+
+# Trap of Walls
+G:T:44:0xA2:0x87
+
+# Trap of Calling Out
+G:T:45:0xA2:0x89
+
+# Trap of Sliding
+G:T:46:0xA2:0x8B
+
+# Trap of Charges Drain
+G:T:47:0xA2:0x92
+
+# Trap of Stair Movement
+G:T:48:0xA2:0x87
+
+# Trap of New Trap
+G:T:49:0xA2:0x87
+
+# Trap of Scatter Items
+G:T:50:0x8A:0x9C
+
+# Trap of Decay
+G:T:51:0xA2:0x8B
+
+# Trap of Wasting Wands
+G:T:52:0xA2:0x92
+
+# Trap of Filling
+G:T:53:0xA2:0x87
+
+# Trap of Drain Speed
+G:T:54:0xA2:0x92
+
+# Lightning Bolt Trap
+G:T:60:0xA2:0x8C
+
+# Poison Bolt Trap
+G:T:61:0xA2:0x8C
+
+# Acid Bolt Trap
+G:T:62:0xA2:0x8C
+
+# Cold Bolt Trap
+G:T:63:0xA2:0x8C
+
+# Fire Bolt Trap
+G:T:64:0xA2:0x8C
+
+# Plasma Bolt Trap
+G:T:65:0xA2:0x8C
+
+# Water Bolt Trap
+G:T:66:0xA2:0x8C
+
+# Lite Bolt Trap
+G:T:67:0xA2:0x8C
+
+# Dark Bolt Trap
+G:T:68:0xA2:0x8C
+
+# Shards Bolt Trap
+G:T:69:0xA2:0x8C
+
+# Sound Bolt Trap
+G:T:70:0xA2:0x8C
+
+# Confusion Bolt Trap
+G:T:71:0xA2:0x8C
+
+# Force Bolt Trap
+G:T:72:0xA2:0x8C
+
+# Inertia Bolt Trap
+G:T:73:0xA2:0x8C
+
+# Mana Bolt Trap
+G:T:74:0xA2:0x8C
+
+# Ice Bolt Trap
+G:T:75:0xA2:0x8C
+
+# Chaos Bolt Trap
+G:T:76:0xA2:0x8C
+
+# Nether Bolt Trap
+G:T:77:0xA2:0x8C
+
+# Disenchantment Bolt Trap
+G:T:78:0xA2:0x8C
+
+# Nexus Bolt Trap
+G:T:79:0xA2:0x8C
+
+# Time Bolt Trap
+G:T:80:0xA2:0x8C
+
+# Gravity Bolt Trap
+G:T:81:0xA2:0x8C
+
+# Lightning Ball Trap
+G:T:82:0xA2:0x8D
+
+# Poison Ball Trap
+G:T:83:0xA2:0x8D
+
+# Acid Ball Trap
+G:T:84:0xA2:0x8D
+
+# Cold Ball Trap
+G:T:85:0xA2:0x8D
+
+# Fire Ball Trap
+G:T:86:0xA2:0x8D
+
+# Plasma Ball Trap
+G:T:87:0xA2:0x8D
+
+# Water Ball Trap
+G:T:88:0xA2:0x8D
+
+# Light Ball Trap
+G:T:89:0xA2:0x8D
+
+# Darkness Ball Trap
+G:T:90:0xA2:0x8D
+
+# Shards Ball Trap
+G:T:91:0xA2:0x8D
+
+# Sound Ball Trap
+G:T:92:0xA2:0x8D
+
+# Confusion Ball Trap
+G:T:93:0xA2:0x8D
+
+# Force Ball Trap
+G:T:94:0xA2:0x8D
+
+# Inertia Ball Trap
+G:T:95:0xA2:0x8D
+
+# Mana Ball Trap
+G:T:96:0xA2:0x8D
+
+# Ice Ball Trap
+G:T:97:0xA2:0x8D
+
+# Chaos Ball Trap
+G:T:98:0xA2:0x8D
+
+# Nether Ball Trap
+G:T:99:0xA2:0x8D
+
+# Disenchantment Ball Trap
+G:T:100:0xA2:0x8D
+
+# Nexus Ball Trap
+G:T:101:0xA2:0x8D
+
+# Time Ball Trap
+G:T:102:0xA2:0x8D
+
+# Gravity Ball Trap
+G:T:103:0xA2:0x8D
+
+# Arrow Trap
+G:T:110:0xA2:0x8E
+
+# Bolt Trap
+G:T:111:0xA2:0x8E
+
+# Seeker Arrow Trap
+G:T:112:0xA2:0x8E
+
+# Seeker Bolt Trap
+G:T:113:0xA2:0x8E
+
+# Poison Arrow Trap
+G:T:114:0xA2:0x8E
+
+# Poison Bolt Trap
+G:T:115:0xA2:0x8E
+
+# Poison Seeker Arrow Trap
+G:T:116:0xA2:0x8E
+
+# Poison Seeker Bolt Trap
+G:T:117:0xA2:0x8E
+
+# Broken Dagger Trap
+G:T:118:0xA2:0x8E
+
+# Dagger Trap
+G:T:119:0xA2:0x8E
+
+# Poison Broken Dagger Trap
+G:T:120:0xA2:0x8E
+
+# Poison Dagger Trap
+G:T:121:0xA2:0x8E
+
+# Arrows Trap
+G:T:122:0xA2:0x8E
+
+# Bolts Trap
+G:T:123:0xA2:0x8E
+
+# Seeker Arrow Trap
+G:T:124:0xA2:0x8E
+
+# Seeker Bolt Trap
+G:T:125:0xA2:0x8E
+
+# Poison Arrows Trap
+G:T:126:0xA2:0x8E
+
+# Poison Bolt Trap
+G:T:127:0xA2:0x8E
+
+# Poison Seeker Arrows Trap
+G:T:128:0xA2:0x8E
+
+# Poison Seeker Bolts Trap
+G:T:129:0xA2:0x8E
+
+# Broken Daggers Trap
+G:T:130:0xA2:0x8E
+
+# Dagger Trap
+G:T:131:0xA2:0x8E
+
+# Poison Broken Daggers Trap
+G:T:132:0xA2:0x8E
+
+# Poison Daggers Trap
+G:T:133:0xA2:0x8E
+
+# Trap of Drop Item
+G:T:140:0xA2:0x92
+
+# Trap of Drop Items
+G:T:141:0xA2:0x92
+
+# Trap of Drop Everything
+G:T:142:0xA2:0x92
+
+# Trap of Femininity
+G:T:150:0xA2:0x8B
+
+# Trap of Masculinity
+G:T:151:0xA2:0x8B
+
+# Trap of Neutrality
+G:T:152:0xA2:0x8B
+
+# Trap of Aging
+G:T:153:0xA2:0x8B
+
+# Trap of Growing
+G:T:154:0xA2:0x8B
+
+# Trap of Shrinking
+G:T:155:0xA2:0x8B
+
+# Trap of Tanker Drain
+G:T:157:0xA2:0x8B
+
+# Trap of Divine Anger
+G:T:158:0xA2:0x88
+
+# Trap of Divine Wrath
+G:T:159:0xA2:0x88
+
+# Hallucination Trap
+G:T:160:0xA2:0x8B
+
+# Greater Magic Missile Trap
+G:T:161:0xA2:0x8C
+
+# Foulness Trap
+G:T:162:0xA2:0x8C
+
+# Trap of Death Ray
+G:T:163:0xA2:0x8C
+
+# Trap of Holy Fire
+G:T:164:0xA2:0x8C
+
+# Trap of Hell Fire
+G:T:165:0xA2:0x8C
+
+# Psi Bolt Trap
+G:T:166:0xA2:0x8C
+
+# Psi Drain Trap
+G:T:167:0xA2:0x8B
+
+# Plasma (Nuke) Ball Trap
+G:T:168:0xA2:0x8D
+
+# Psi Ball Trap
+G:T:169:0xA2:0x8D
+
+# Aquirement Trap
+G:T:170:0xA2:0x89
+
+# Greater Lightning Bolt Trap
+G:T:171:0xA2:0x8C
+
+# Greater Poison Bolt Trap
+G:T:172:0xA2:0x8C
+
+# Greater Acid Bolt Trap
+G:T:173:0xA2:0x8C
+
+# Greater Cold Bolt Trap
+G:T:174:0xA2:0x8C
+
+# Greater Fire Bolt Trap
+G:T:175:0xA2:0x8C \ No newline at end of file
diff --git a/lib/pref/user.prf b/lib/pref/user.prf
new file mode 100644
index 00000000..9e10b2ac
--- /dev/null
+++ b/lib/pref/user.prf
@@ -0,0 +1,50 @@
+# File: user.prf
+
+#
+# This file defines "override" actions of various kinds
+#
+# This file includes, if appropriate, various "sub-files"
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+## Option -- Force the use of original commands
+#X:rogue_like_commands
+
+## Option -- Force the use of roguelike commands
+#Y:rogue_like_commands
+
+
+##### System Specific Subfiles #####
+
+?:[IOR [EQU $SYS xaw] [EQU $SYS x11]]
+%:user-x11.prf
+
+?:[EQU $SYS gcu]
+%:user-gcu.prf
+
+?:[EQU $SYS ami]
+%:user-ami.prf
+
+?:[EQU $SYS mac]
+%:user-mac.prf
+
+?:[EQU $SYS dos]
+%:user-dos.prf
+
+?:[EQU $SYS ibm]
+%:user-ibm.prf
+
+?:[EQU $SYS win]
+%:user-win.prf
+
+?:[EQU $SYS emx]
+%:user-emx.prf
+
+?:[EQU $SYS acn]
+%:user-acn.prf
+
+?:1
+
+
diff --git a/lib/pref/xtra-gcu.prf b/lib/pref/xtra-gcu.prf
new file mode 100644
index 00000000..7097658e
--- /dev/null
+++ b/lib/pref/xtra-gcu.prf
@@ -0,0 +1,34 @@
+# File: xtra-gcu.prf
+
+# Rename this file to "pref-gcu.prf" to allow the VT100 cursor keys
+# to be recognized by Angband. This will also make the "escape" key
+# take a few seconds to recognize, so you may want to use the "`" key
+# instead, or make a macro from escape+escape to escape.
+
+### VT100 Keypad ###
+
+# Special keypad keys (delete, insert)
+A:.
+P:\e[3~
+A:0
+P:\e[2~
+
+# Numerical keypad keys (map to appropriate number)
+A:1
+P:\e[4~
+A:2
+P:\e[B
+A:3
+P:\e[6~
+A:4
+P:\e[D
+A:5
+P:\e[G
+A:6
+P:\e[C
+A:7
+P:\e[1~
+A:8
+P:\e[A
+A:9
+P:\e[5~
diff --git a/lib/pref/xtra-new.prf b/lib/pref/xtra-new.prf
new file mode 100644
index 00000000..de82b976
--- /dev/null
+++ b/lib/pref/xtra-new.prf
@@ -0,0 +1,1128 @@
+# File: xtra-new.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# Edited for use with Adam Bolt's new graphics by Robert Ruehlmann < rr9@angband.org >
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+##### AK 20011216 Default pictures for all races that
+# are not handled below, without caring for class
+
+
+?:[EQU $RACE Human]
+R:0:0x89/0xA0
+?:[EQU $RACE Half-Elf]
+R:0:0x89/0xA1
+?:[EQU $RACE Elf]
+R:0:0x89/0xA2
+?:[EQU $RACE Hobbit]
+R:0:0x89/0xA3
+?:[EQU $RACE Gnome]
+R:0:0x89/0xA4
+?:[EQU $RACE Dwarf]
+R:0:0x89/0xA5
+?:[EQU $RACE Orc]
+R:0:0x89/0xA6
+?:[EQU $RACE Troll]
+R:0:0x89/0xA7
+?:[EQU $RACE Dunadan]
+R:0:0x89/0xA8
+?:[EQU $RACE High-Elf]
+R:0:0x89/0xA9
+?:[EQU $RACE Half-Ogre]
+R:0:0x89/0xAA
+?:[EQU $RACE Beorning]
+R:0:0x89/0xAB
+?:[EQU $RACE Kobold]
+R:0:0x89/0xAC
+?:[EQU $RACE Petty-Dwarf]
+R:0:0x89/0xAD
+?:[EQU $RACE Dark-Elf]
+R:0:0x89/0xAE
+?:[EQU $RACE Ent]
+R:0:0x89/0xAF
+?:[EQU $RACE RohanKnight]
+R:0:0x89/0xB0
+?:[EQU $RACE Thunderlord]
+R:0:0x89/0xB1
+?:[EQU $RACE DeathMold]
+R:0:0x89/0xB2
+?:[EQU $RACE Yeek]
+R:0:0x89/0xB3
+?:[EQU $RACE Wood-Elf]
+R:0:0x89/0xB4
+?:[EQU $RACE Maia]
+R:0:0x89/0xB5
+
+##### Remap the player icon #####
+
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Human] ]
+R:0:0x92/0x80
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Elf] ]
+R:0:0x92/0x81
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Elf] ]
+R:0:0x92/0x82
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Hobbit] ]
+R:0:0x92/0x83
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Gnome] ]
+R:0:0x92/0x84
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dwarf] ]
+R:0:0x92/0x85
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Orc] ]
+R:0:0x92/0x86
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Troll] ]
+R:0:0x92/0x87
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dunadan] ]
+R:0:0x92/0x88
+?:[AND [EQU $CLASS Warrior] [EQU $RACE High-Elf] ]
+R:0:0x92/0x89
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dunadan] ]
+R:0:0x92/0x8A
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Barbarian] ]
+R:0:0x92/0x8B
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Ogre] ]
+R:0:0x92/0x8C
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Giant] ]
+R:0:0x92/0x8D
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Titan] ]
+R:0:0x92/0x8E
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Kobold] ]
+R:0:0x92/0x92
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Nibelung] ]
+R:0:0x92/0x93
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dark Elf] ]
+R:0:0x92/0x94
+?:[AND [EQU $CLASS Warrior] [EQU $RACE RohanKnight] ]
+R:0:0x93/0x91
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Thunderlord] ]
+R:0:0x92/0x95
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Mindflayer] ]
+R:0:0x92/0x96
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Imp] ]
+R:0:0x92/0x97
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Ent] ]
+R:0:0x92/0x98
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Skeleton] ]
+R:0:0x92/0x99
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Zombie] ]
+R:0:0x92/0x9A
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Vampire] ]
+R:0:0x92/0x9B
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Spectre] ]
+R:0:0x92/0x9C
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Sprite] ]
+R:0:0x92/0x9D
+?:[AND [EQU $CLASS Warrior] [EQU $RACE DeathMold] ]
+R:0:0x92/0x9E
+
+?:[AND [EQU $CLASS Mage] [EQU $RACE Human] ]
+R:0:0x93/0x80
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Elf] ]
+R:0:0x93/0x81
+?:[AND [EQU $CLASS Mage] [EQU $RACE Elf] ]
+R:0:0x93/0x82
+?:[AND [EQU $CLASS Mage] [EQU $RACE Hobbit] ]
+R:0:0x93/0x83
+?:[AND [EQU $CLASS Mage] [EQU $RACE Gnome] ]
+R:0:0x93/0x84
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dwarf] ]
+R:0:0x93/0x85
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Orc] ]
+R:0:0x93/0x86
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Troll] ]
+R:0:0x93/0x87
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dunadan] ]
+R:0:0x93/0x88
+?:[AND [EQU $CLASS Mage] [EQU $RACE High-Elf] ]
+R:0:0x93/0x89
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dunadan] ]
+R:0:0x93/0x8A
+?:[AND [EQU $CLASS Mage] [EQU $RACE Barbarian] ]
+R:0:0x93/0x8B
+?:[AND [EQU $CLASS Mage] [EQU $RACE Ogre] ]
+R:0:0x93/0x8C
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Giant] ]
+R:0:0x93/0x8D
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Titan] ]
+R:0:0x93/0x8E
+?:[AND [EQU $CLASS Mage] [EQU $RACE Cyclops] ]
+R:0:0x93/0x8F
+?:[AND [EQU $CLASS Mage] [EQU $RACE Yeek] ]
+R:0:0x93/0x90
+?:[AND [EQU $CLASS Mage] [EQU $RACE RohanKnight] ]
+R:0:0x93/0x91
+?:[AND [EQU $CLASS Mage] [EQU $RACE Kobold] ]
+R:0:0x93/0x92
+?:[AND [EQU $CLASS Mage] [EQU $RACE Nibelung] ]
+R:0:0x93/0x93
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dark Elf] ]
+R:0:0x93/0x94
+?:[AND [EQU $CLASS Mage] [EQU $RACE Thunderlord] ]
+R:0:0x93/0x95
+?:[AND [EQU $CLASS Mage] [EQU $RACE Mindflayer] ]
+R:0:0x93/0x96
+?:[AND [EQU $CLASS Mage] [EQU $RACE Imp] ]
+R:0:0x93/0x97
+?:[AND [EQU $CLASS Mage] [EQU $RACE Ent] ]
+R:0:0x93/0x98
+?:[AND [EQU $CLASS Mage] [EQU $RACE Skeleton] ]
+R:0:0x93/0x99
+?:[AND [EQU $CLASS Mage] [EQU $RACE Zombie] ]
+R:0:0x93/0x9A
+?:[AND [EQU $CLASS Mage] [EQU $RACE Vampire] ]
+R:0:0x93/0x9B
+?:[AND [EQU $CLASS Mage] [EQU $RACE Spectre] ]
+R:0:0x93/0x9C
+?:[AND [EQU $CLASS Mage] [EQU $RACE Sprite] ]
+R:0:0x93/0x9D
+?:[AND [EQU $CLASS Mage] [EQU $RACE DeathMold] ]
+R:0:0x93/0x9E
+
+?:[AND [EQU $CLASS Priest] [EQU $RACE Human] ]
+R:0:0x94/0x80
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Elf] ]
+R:0:0x94/0x81
+?:[AND [EQU $CLASS Priest] [EQU $RACE Elf] ]
+R:0:0x94/0x82
+?:[AND [EQU $CLASS Priest] [EQU $RACE Hobbit] ]
+R:0:0x94/0x83
+?:[AND [EQU $CLASS Priest] [EQU $RACE Gnome] ]
+R:0:0x94/0x84
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dwarf] ]
+R:0:0x94/0x85
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Orc] ]
+R:0:0x94/0x86
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Troll] ]
+R:0:0x94/0x87
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dunadan] ]
+R:0:0x94/0x88
+?:[AND [EQU $CLASS Priest] [EQU $RACE High-Elf] ]
+R:0:0x94/0x89
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dunadan] ]
+R:0:0x94/0x8A
+?:[AND [EQU $CLASS Priest] [EQU $RACE Barbarian] ]
+R:0:0x94/0x8B
+?:[AND [EQU $CLASS Priest] [EQU $RACE Ogre] ]
+R:0:0x94/0x8C
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Giant] ]
+R:0:0x94/0x8D
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Titan] ]
+R:0:0x94/0x8E
+?:[AND [EQU $CLASS Priest] [EQU $RACE Cyclops] ]
+R:0:0x94/0x8F
+?:[AND [EQU $CLASS Priest] [EQU $RACE Yeek] ]
+R:0:0x94/0x90
+?:[AND [EQU $CLASS Priest] [EQU $RACE RohanKnight] ]
+R:0:0x94/0x91
+?:[AND [EQU $CLASS Priest] [EQU $RACE Kobold] ]
+R:0:0x94/0x92
+?:[AND [EQU $CLASS Priest] [EQU $RACE Nibelung] ]
+R:0:0x94/0x93
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dark Elf] ]
+R:0:0x94/0x94
+?:[AND [EQU $CLASS Priest] [EQU $RACE Thunderlord] ]
+R:0:0x94/0x95
+?:[AND [EQU $CLASS Priest] [EQU $RACE Mindflayer] ]
+R:0:0x94/0x96
+?:[AND [EQU $CLASS Priest] [EQU $RACE Imp] ]
+R:0:0x94/0x97
+?:[AND [EQU $CLASS Priest] [EQU $RACE Ent] ]
+R:0:0x94/0x98
+?:[AND [EQU $CLASS Priest] [EQU $RACE Skeleton] ]
+R:0:0x94/0x99
+?:[AND [EQU $CLASS Priest] [EQU $RACE Zombie] ]
+R:0:0x94/0x9A
+?:[AND [EQU $CLASS Priest] [EQU $RACE Vampire] ]
+R:0:0x94/0x9B
+?:[AND [EQU $CLASS Priest] [EQU $RACE Spectre] ]
+R:0:0x94/0x9C
+?:[AND [EQU $CLASS Priest] [EQU $RACE Sprite] ]
+R:0:0x94/0x9D
+?:[AND [EQU $CLASS Priest] [EQU $RACE DeathMold] ]
+R:0:0x94/0x9E
+
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Human] ]
+R:0:0x95/0x80
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Elf] ]
+R:0:0x95/0x81
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Elf] ]
+R:0:0x95/0x82
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Hobbit] ]
+R:0:0x95/0x83
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Gnome] ]
+R:0:0x95/0x84
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dwarf] ]
+R:0:0x95/0x85
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Orc] ]
+R:0:0x95/0x86
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Troll] ]
+R:0:0x95/0x87
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dunadan] ]
+R:0:0x95/0x88
+?:[AND [EQU $CLASS Rogue] [EQU $RACE High-Elf] ]
+R:0:0x95/0x89
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dunadan] ]
+R:0:0x95/0x8A
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Barbarian] ]
+R:0:0x95/0x8B
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Ogre] ]
+R:0:0x95/0x8C
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Giant] ]
+R:0:0x95/0x8D
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Titan] ]
+R:0:0x95/0x8E
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Cyclops] ]
+R:0:0x95/0x8F
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Yeek] ]
+R:0:0x95/0x90
+?:[AND [EQU $CLASS Rogue] [EQU $RACE RohanKnight] ]
+R:0:0x95/0x91
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Kobold] ]
+R:0:0x95/0x92
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Nibelung] ]
+R:0:0x95/0x93
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dark Elf] ]
+R:0:0x95/0x94
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Thunderlord] ]
+R:0:0x95/0x95
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Mindflayer] ]
+R:0:0x95/0x96
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Imp] ]
+R:0:0x95/0x97
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Ent] ]
+R:0:0x95/0x98
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Skeleton] ]
+R:0:0x95/0x99
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Zombie] ]
+R:0:0x95/0x9A
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Vampire] ]
+R:0:0x95/0x9B
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Spectre] ]
+R:0:0x95/0x9C
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Sprite] ]
+R:0:0x95/0x9D
+?:[AND [EQU $CLASS Rogue] [EQU $RACE DeathMold] ]
+R:0:0x95/0x9E
+
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Human] ]
+R:0:0x96/0x80
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Elf] ]
+R:0:0x96/0x81
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Elf] ]
+R:0:0x96/0x82
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Hobbit] ]
+R:0:0x96/0x83
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Gnome] ]
+R:0:0x96/0x84
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dwarf] ]
+R:0:0x96/0x85
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Orc] ]
+R:0:0x96/0x86
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Troll] ]
+R:0:0x96/0x87
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dunadan] ]
+R:0:0x96/0x88
+?:[AND [EQU $CLASS Ranger] [EQU $RACE High-Elf] ]
+R:0:0x96/0x89
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dunadan] ]
+R:0:0x96/0x8A
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Barbarian] ]
+R:0:0x96/0x8B
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Ogre] ]
+R:0:0x96/0x8C
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Giant] ]
+R:0:0x96/0x8D
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Titan] ]
+R:0:0x96/0x8E
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Cyclops] ]
+R:0:0x96/0x8F
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Yeek] ]
+R:0:0x96/0x90
+?:[AND [EQU $CLASS Ranger] [EQU $RACE RohanKnight] ]
+R:0:0x96/0x91
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Kobold] ]
+R:0:0x96/0x92
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Nibelung] ]
+R:0:0x96/0x93
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dark Elf] ]
+R:0:0x96/0x94
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Thunderlord] ]
+R:0:0x96/0x95
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Mindflayer] ]
+R:0:0x96/0x96
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Imp] ]
+R:0:0x96/0x97
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Ent] ]
+R:0:0x96/0x98
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Skeleton] ]
+R:0:0x96/0x99
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Zombie] ]
+R:0:0x96/0x9A
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Vampire] ]
+R:0:0x96/0x9B
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Spectre] ]
+R:0:0x96/0x9C
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Sprite] ]
+R:0:0x96/0x9D
+?:[AND [EQU $CLASS Ranger] [EQU $RACE DeathMold] ]
+R:0:0x96/0x9E
+
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Human] ]
+R:0:0x97/0x80
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Elf] ]
+R:0:0x97/0x81
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Elf] ]
+R:0:0x97/0x82
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Hobbit] ]
+R:0:0x97/0x83
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Gnome] ]
+R:0:0x97/0x84
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dwarf] ]
+R:0:0x97/0x85
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Orc] ]
+R:0:0x97/0x86
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Troll] ]
+R:0:0x97/0x87
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dunadan] ]
+R:0:0x97/0x88
+?:[AND [EQU $CLASS Paladin] [EQU $RACE High-Elf] ]
+R:0:0x97/0x89
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dunadan] ]
+R:0:0x97/0x8A
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Barbarian] ]
+R:0:0x97/0x8B
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Ogre] ]
+R:0:0x97/0x8C
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Giant] ]
+R:0:0x97/0x8D
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Titan] ]
+R:0:0x97/0x8E
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Cyclops] ]
+R:0:0x97/0x8F
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Yeek] ]
+R:0:0x97/0x90
+?:[AND [EQU $CLASS Paladin] [EQU $RACE RohanKnight] ]
+R:0:0x97/0x91
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Kobold] ]
+R:0:0x97/0x92
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Nibelung] ]
+R:0:0x97/0x93
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dark Elf] ]
+R:0:0x97/0x94
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Thunderlord] ]
+R:0:0x97/0x95
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Mindflayer] ]
+R:0:0x97/0x96
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Imp] ]
+R:0:0x97/0x97
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Ent] ]
+R:0:0x97/0x98
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Skeleton] ]
+R:0:0x97/0x99
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Zombie] ]
+R:0:0x97/0x9A
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Vampire] ]
+R:0:0x97/0x9B
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Spectre] ]
+R:0:0x97/0x9C
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Sprite] ]
+R:0:0x97/0x9D
+?:[AND [EQU $CLASS Paladin] [EQU $RACE DeathMold] ]
+R:0:0x97/0x9E
+
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Human] ]
+R:0:0x98/0x80
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Half-Elf] ]
+R:0:0x98/0x81
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Elf] ]
+R:0:0x98/0x82
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Hobbit] ]
+R:0:0x98/0x83
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Gnome] ]
+R:0:0x98/0x84
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Dwarf] ]
+R:0:0x98/0x85
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Half-Orc] ]
+R:0:0x98/0x86
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Half-Troll] ]
+R:0:0x98/0x87
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Dunadan] ]
+R:0:0x98/0x88
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE High-Elf] ]
+R:0:0x98/0x89
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Dunadan] ]
+R:0:0x98/0x8A
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Barbarian] ]
+R:0:0x98/0x8B
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Ogre] ]
+R:0:0x98/0x8C
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Half-Giant] ]
+R:0:0x98/0x8D
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Half-Titan] ]
+R:0:0x98/0x8E
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Cyclops] ]
+R:0:0x98/0x8F
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Yeek] ]
+R:0:0x98/0x90
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE RohanKnight] ]
+R:0:0x98/0x91
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Kobold] ]
+R:0:0x98/0x92
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Nibelung] ]
+R:0:0x98/0x93
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Dark Elf] ]
+R:0:0x98/0x94
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Thunderlord] ]
+R:0:0x98/0x95
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Mindflayer] ]
+R:0:0x98/0x96
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Imp] ]
+R:0:0x98/0x97
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Ent] ]
+R:0:0x98/0x98
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Skeleton] ]
+R:0:0x98/0x99
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Zombie] ]
+R:0:0x98/0x9A
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Vampire] ]
+R:0:0x98/0x9B
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Spectre] ]
+R:0:0x98/0x9C
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE Sprite] ]
+R:0:0x98/0x9D
+?:[AND [EQU $CLASS Warrior-Mage] [EQU $RACE DeathMold] ]
+R:0:0x98/0x9E
+
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Human] ]
+R:0:0x99/0x80
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Half-Elf] ]
+R:0:0x99/0x81
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Elf] ]
+R:0:0x99/0x82
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Hobbit] ]
+R:0:0x99/0x83
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Gnome] ]
+R:0:0x99/0x84
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Dwarf] ]
+R:0:0x99/0x85
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Half-Orc] ]
+R:0:0x99/0x86
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Half-Troll] ]
+R:0:0x99/0x87
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Dunadan] ]
+R:0:0x99/0x88
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE High-Elf] ]
+R:0:0x99/0x89
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Dunadan] ]
+R:0:0x99/0x8A
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Barbarian] ]
+R:0:0x99/0x8B
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Ogre] ]
+R:0:0x99/0x8C
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Half-Giant] ]
+R:0:0x99/0x8D
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Half-Titan] ]
+R:0:0x99/0x8E
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Cyclops] ]
+R:0:0x99/0x8F
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Yeek] ]
+R:0:0x99/0x90
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE RohanKnight] ]
+R:0:0x99/0x91
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Kobold] ]
+R:0:0x99/0x92
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Nibelung] ]
+R:0:0x99/0x93
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Dark Elf] ]
+R:0:0x99/0x94
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Thunderlord] ]
+R:0:0x99/0x95
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Mindflayer] ]
+R:0:0x99/0x96
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Imp] ]
+R:0:0x99/0x97
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Ent] ]
+R:0:0x99/0x98
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Skeleton] ]
+R:0:0x99/0x99
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Zombie] ]
+R:0:0x99/0x9A
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Vampire] ]
+R:0:0x99/0x9B
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Spectre] ]
+R:0:0x99/0x9C
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE Sprite] ]
+R:0:0x99/0x9D
+?:[AND [EQU $CLASS Chaos-Warrior] [EQU $RACE DeathMold] ]
+R:0:0x99/0x9E
+
+?:[AND [EQU $CLASS Monk] [EQU $RACE Human] ]
+R:0:0x9A/0x80
+?:[AND [EQU $CLASS Monk] [EQU $RACE Half-Elf] ]
+R:0:0x9A/0x81
+?:[AND [EQU $CLASS Monk] [EQU $RACE Elf] ]
+R:0:0x9A/0x82
+?:[AND [EQU $CLASS Monk] [EQU $RACE Hobbit] ]
+R:0:0x9A/0x83
+?:[AND [EQU $CLASS Monk] [EQU $RACE Gnome] ]
+R:0:0x9A/0x84
+?:[AND [EQU $CLASS Monk] [EQU $RACE Dwarf] ]
+R:0:0x9A/0x85
+?:[AND [EQU $CLASS Monk] [EQU $RACE Half-Orc] ]
+R:0:0x9A/0x86
+?:[AND [EQU $CLASS Monk] [EQU $RACE Half-Troll] ]
+R:0:0x9A/0x87
+?:[AND [EQU $CLASS Monk] [EQU $RACE Dunadan] ]
+R:0:0x9A/0x88
+?:[AND [EQU $CLASS Monk] [EQU $RACE High-Elf] ]
+R:0:0x9A/0x89
+?:[AND [EQU $CLASS Monk] [EQU $RACE Dunadan] ]
+R:0:0x9A/0x8A
+?:[AND [EQU $CLASS Monk] [EQU $RACE Barbarian] ]
+R:0:0x9A/0x8B
+?:[AND [EQU $CLASS Monk] [EQU $RACE Ogre] ]
+R:0:0x9A/0x8C
+?:[AND [EQU $CLASS Monk] [EQU $RACE Half-Giant] ]
+R:0:0x9A/0x8D
+?:[AND [EQU $CLASS Monk] [EQU $RACE Half-Titan] ]
+R:0:0x9A/0x8E
+?:[AND [EQU $CLASS Monk] [EQU $RACE Cyclops] ]
+R:0:0x9A/0x8F
+?:[AND [EQU $CLASS Monk] [EQU $RACE Yeek] ]
+R:0:0x9A/0x90
+?:[AND [EQU $CLASS Monk] [EQU $RACE RohanKnight] ]
+R:0:0x9A/0x91
+?:[AND [EQU $CLASS Monk] [EQU $RACE Kobold] ]
+R:0:0x9A/0x92
+?:[AND [EQU $CLASS Monk] [EQU $RACE Nibelung] ]
+R:0:0x9A/0x93
+?:[AND [EQU $CLASS Monk] [EQU $RACE Dark Elf] ]
+R:0:0x9A/0x94
+?:[AND [EQU $CLASS Monk] [EQU $RACE Thunderlord] ]
+R:0:0x9A/0x95
+?:[AND [EQU $CLASS Monk] [EQU $RACE Mindflayer] ]
+R:0:0x9A/0x96
+?:[AND [EQU $CLASS Monk] [EQU $RACE Imp] ]
+R:0:0x9A/0x97
+?:[AND [EQU $CLASS Monk] [EQU $RACE Ent] ]
+R:0:0x9A/0x98
+?:[AND [EQU $CLASS Monk] [EQU $RACE Skeleton] ]
+R:0:0x9A/0x99
+?:[AND [EQU $CLASS Monk] [EQU $RACE Zombie] ]
+R:0:0x9A/0x9A
+?:[AND [EQU $CLASS Monk] [EQU $RACE Vampire] ]
+R:0:0x9A/0x9B
+?:[AND [EQU $CLASS Monk] [EQU $RACE Spectre] ]
+R:0:0x9A/0x9C
+?:[AND [EQU $CLASS Monk] [EQU $RACE Sprite] ]
+R:0:0x9A/0x9D
+?:[AND [EQU $CLASS Monk] [EQU $RACE DeathMold] ]
+R:0:0x9A/0x9E
+
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Human] ]
+R:0:0x9B/0x80
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Half-Elf] ]
+R:0:0x9B/0x81
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Elf] ]
+R:0:0x9B/0x82
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Hobbit] ]
+R:0:0x9B/0x83
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Gnome] ]
+R:0:0x9B/0x84
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Dwarf] ]
+R:0:0x9B/0x85
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Half-Orc] ]
+R:0:0x9B/0x86
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Half-Troll] ]
+R:0:0x9B/0x87
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Dunadan] ]
+R:0:0x9B/0x88
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE High-Elf] ]
+R:0:0x9B/0x89
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Dunadan] ]
+R:0:0x9B/0x8A
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Barbarian] ]
+R:0:0x9B/0x8B
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Ogre] ]
+R:0:0x9B/0x8C
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Half-Giant] ]
+R:0:0x9B/0x8D
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Half-Titan] ]
+R:0:0x9B/0x8E
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Cyclops] ]
+R:0:0x9B/0x8F
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Yeek] ]
+R:0:0x9B/0x90
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE RohanKnight] ]
+R:0:0x9B/0x91
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Kobold] ]
+R:0:0x9B/0x92
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Nibelung] ]
+R:0:0x9B/0x93
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Dark Elf] ]
+R:0:0x9B/0x94
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Thunderlord] ]
+R:0:0x9B/0x95
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Mindflayer] ]
+R:0:0x9B/0x96
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Imp] ]
+R:0:0x9B/0x97
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Ent] ]
+R:0:0x9B/0x98
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Skeleton] ]
+R:0:0x9B/0x99
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Zombie] ]
+R:0:0x9B/0x9A
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Vampire] ]
+R:0:0x9B/0x9B
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Spectre] ]
+R:0:0x9B/0x9C
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE Sprite] ]
+R:0:0x9B/0x9D
+?:[AND [EQU $CLASS Mindcrafter] [EQU $RACE DeathMold] ]
+R:0:0x9B/0x9E
+
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Human] ]
+R:0:0x9C/0x80
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Half-Elf] ]
+R:0:0x9C/0x81
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Elf] ]
+R:0:0x9C/0x82
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Hobbit] ]
+R:0:0x9C/0x83
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Gnome] ]
+R:0:0x9C/0x84
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Dwarf] ]
+R:0:0x9C/0x85
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Half-Orc] ]
+R:0:0x9C/0x86
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Half-Troll] ]
+R:0:0x9C/0x87
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Dunadan] ]
+R:0:0x9C/0x88
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE High-Elf] ]
+R:0:0x9C/0x89
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Dunadan] ]
+R:0:0x9C/0x8A
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Barbarian] ]
+R:0:0x9C/0x8B
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Ogre] ]
+R:0:0x9C/0x8C
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Half-Giant] ]
+R:0:0x9C/0x8D
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Half-Titan] ]
+R:0:0x9C/0x8E
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Cyclops] ]
+R:0:0x9C/0x8F
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Yeek] ]
+R:0:0x9C/0x90
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE RohanKnight] ]
+R:0:0x9C/0x91
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Kobold] ]
+R:0:0x9C/0x92
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Nibelung] ]
+R:0:0x9C/0x93
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Dark Elf] ]
+R:0:0x9C/0x94
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Thunderlord] ]
+R:0:0x9C/0x95
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Mindflayer] ]
+R:0:0x9C/0x96
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Imp] ]
+R:0:0x9C/0x97
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Ent] ]
+R:0:0x9C/0x98
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Skeleton] ]
+R:0:0x9C/0x99
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Zombie] ]
+R:0:0x9C/0x9A
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Vampire] ]
+R:0:0x9C/0x9B
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Spectre] ]
+R:0:0x9C/0x9C
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE Sprite] ]
+R:0:0x9C/0x9D
+?:[AND [EQU $CLASS High-Mage] [EQU $RACE DeathMold] ]
+R:0:0x9C/0x9E
+
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Human] ]
+R:0:0x9C/0x80
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Elf] ]
+R:0:0x9C/0x81
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Elf] ]
+R:0:0x9C/0x82
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Hobbit] ]
+R:0:0x9C/0x83
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Gnome] ]
+R:0:0x9C/0x84
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dwarf] ]
+R:0:0x9C/0x85
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Orc] ]
+R:0:0x9C/0x86
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Troll] ]
+R:0:0x9C/0x87
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dunadan] ]
+R:0:0x9C/0x88
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE High-Elf] ]
+R:0:0x9C/0x89
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dunadan] ]
+R:0:0x9C/0x8A
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Barbarian] ]
+R:0:0x9C/0x8B
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Ogre] ]
+R:0:0x9C/0x8C
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Giant] ]
+R:0:0x9C/0x8D
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Titan] ]
+R:0:0x9C/0x8E
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Cyclops] ]
+R:0:0x9C/0x8F
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Yeek] ]
+R:0:0x9C/0x90
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE RohanKnight] ]
+R:0:0x9C/0x91
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Kobold] ]
+R:0:0x9C/0x92
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Nibelung] ]
+R:0:0x9C/0x93
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dark Elf] ]
+R:0:0x9C/0x94
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Thunderlord] ]
+R:0:0x9C/0x95
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Mindflayer] ]
+R:0:0x9C/0x96
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Imp] ]
+R:0:0x9C/0x97
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Ent] ]
+R:0:0x9C/0x98
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Skeleton] ]
+R:0:0x9C/0x99
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Zombie] ]
+R:0:0x9C/0x9A
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Vampire] ]
+R:0:0x9C/0x9B
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Spectre] ]
+R:0:0x9C/0x9C
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Sprite] ]
+R:0:0x9C/0x9D
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE DeathMold] ]
+R:0:0x9C/0x9E
+
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Human] ]
+R:0:0x96/0x80
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Half-Elf] ]
+R:0:0x96/0x81
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Elf] ]
+R:0:0x96/0x82
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Hobbit] ]
+R:0:0x96/0x83
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Gnome] ]
+R:0:0x96/0x84
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Dwarf] ]
+R:0:0x96/0x85
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Half-Orc] ]
+R:0:0x96/0x86
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Half-Troll] ]
+R:0:0x96/0x87
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Dunadan] ]
+R:0:0x96/0x88
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE High-Elf] ]
+R:0:0x96/0x89
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Dunadan] ]
+R:0:0x96/0x8A
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Barbarian] ]
+R:0:0x96/0x8B
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Ogre] ]
+R:0:0x96/0x8C
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Half-Giant] ]
+R:0:0x96/0x8D
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Half-Titan] ]
+R:0:0x96/0x8E
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Cyclops] ]
+R:0:0x96/0x8F
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Yeek] ]
+R:0:0x96/0x90
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE RohanKnight] ]
+R:0:0x96/0x91
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Kobold] ]
+R:0:0x96/0x92
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Nibelung] ]
+R:0:0x96/0x93
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Dark Elf] ]
+R:0:0x96/0x94
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Thunderlord] ]
+R:0:0x96/0x95
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Mindflayer] ]
+R:0:0x96/0x96
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Imp] ]
+R:0:0x96/0x97
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Ent] ]
+R:0:0x96/0x98
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Skeleton] ]
+R:0:0x96/0x99
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Zombie] ]
+R:0:0x96/0x9A
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Vampire] ]
+R:0:0x96/0x9B
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Spectre] ]
+R:0:0x96/0x9C
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE Sprite] ]
+R:0:0x96/0x9D
+?:[AND [EQU $CLASS BeastMaster] [EQU $RACE DeathMold] ]
+R:0:0x96/0x9E
+
+?:[EQU $CLASS Mimic]
+R:0:0x91/0x95
+
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Human] ]
+R:0:0x93/0x80
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Elf] ]
+R:0:0x93/0x81
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Elf] ]
+R:0:0x93/0x82
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Hobbit] ]
+R:0:0x93/0x83
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Gnome] ]
+R:0:0x93/0x84
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dwarf] ]
+R:0:0x93/0x85
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Orc] ]
+R:0:0x93/0x86
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Troll] ]
+R:0:0x93/0x87
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dunadan] ]
+R:0:0x93/0x88
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE High-Elf] ]
+R:0:0x93/0x89
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dunadan] ]
+R:0:0x93/0x8A
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Barbarian] ]
+R:0:0x93/0x8B
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Ogre] ]
+R:0:0x93/0x8C
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Giant] ]
+R:0:0x93/0x8D
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Half-Titan] ]
+R:0:0x93/0x8E
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Cyclops] ]
+R:0:0x93/0x8F
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Yeek] ]
+R:0:0x93/0x90
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE RohanKnight] ]
+R:0:0x93/0x91
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Kobold] ]
+R:0:0x93/0x92
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Nibelung] ]
+R:0:0x93/0x93
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Dark Elf] ]
+R:0:0x93/0x94
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Thunderlord] ]
+R:0:0x93/0x95
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Mindflayer] ]
+R:0:0x93/0x96
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Imp] ]
+R:0:0x93/0x97
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Ent] ]
+R:0:0x93/0x98
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Skeleton] ]
+R:0:0x93/0x99
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Zombie] ]
+R:0:0x93/0x9A
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Vampire] ]
+R:0:0x93/0x9B
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Spectre] ]
+R:0:0x93/0x9C
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE Sprite] ]
+R:0:0x93/0x9D
+?:[AND [EQU $CLASS Alchemist] [EQU $RACE DeathMold] ]
+R:0:0x93/0x9E
+
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Human] ]
+R:0:0x93/0x80
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Half-Elf] ]
+R:0:0x93/0x81
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Elf] ]
+R:0:0x93/0x82
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Hobbit] ]
+R:0:0x93/0x83
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Gnome] ]
+R:0:0x93/0x84
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Dwarf] ]
+R:0:0x93/0x85
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Half-Orc] ]
+R:0:0x93/0x86
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Half-Troll] ]
+R:0:0x93/0x87
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Dunadan] ]
+R:0:0x93/0x88
+?:[AND [EQU $CLASS Wizard] [EQU $RACE High-Elf] ]
+R:0:0x93/0x89
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Dunadan] ]
+R:0:0x93/0x8A
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Barbarian] ]
+R:0:0x93/0x8B
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Ogre] ]
+R:0:0x93/0x8C
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Half-Giant] ]
+R:0:0x93/0x8D
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Half-Titan] ]
+R:0:0x93/0x8E
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Cyclops] ]
+R:0:0x93/0x8F
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Yeek] ]
+R:0:0x93/0x90
+?:[AND [EQU $CLASS Wizard] [EQU $RACE RohanKnight] ]
+R:0:0x93/0x91
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Kobold] ]
+R:0:0x93/0x92
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Nibelung] ]
+R:0:0x93/0x93
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Dark Elf] ]
+R:0:0x93/0x94
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Thunderlord] ]
+R:0:0x93/0x95
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Mindflayer] ]
+R:0:0x93/0x96
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Imp] ]
+R:0:0x93/0x97
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Ent] ]
+R:0:0x93/0x98
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Skeleton] ]
+R:0:0x93/0x99
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Zombie] ]
+R:0:0x93/0x9A
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Vampire] ]
+R:0:0x93/0x9B
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Spectre] ]
+R:0:0x93/0x9C
+?:[AND [EQU $CLASS Wizard] [EQU $RACE Sprite] ]
+R:0:0x93/0x9D
+?:[AND [EQU $CLASS Wizard] [EQU $RACE DeathMold] ]
+R:0:0x93/0x9E
+
+?:[AND [EQU $CLASS Prior] [EQU $RACE Human] ]
+R:0:0x94/0x80
+?:[AND [EQU $CLASS Prior] [EQU $RACE Half-Elf] ]
+R:0:0x94/0x81
+?:[AND [EQU $CLASS Prior] [EQU $RACE Elf] ]
+R:0:0x94/0x82
+?:[AND [EQU $CLASS Prior] [EQU $RACE Hobbit] ]
+R:0:0x94/0x83
+?:[AND [EQU $CLASS Prior] [EQU $RACE Gnome] ]
+R:0:0x94/0x84
+?:[AND [EQU $CLASS Prior] [EQU $RACE Dwarf] ]
+R:0:0x94/0x85
+?:[AND [EQU $CLASS Prior] [EQU $RACE Half-Orc] ]
+R:0:0x94/0x86
+?:[AND [EQU $CLASS Prior] [EQU $RACE Half-Troll] ]
+R:0:0x94/0x87
+?:[AND [EQU $CLASS Prior] [EQU $RACE Dunadan] ]
+R:0:0x94/0x88
+?:[AND [EQU $CLASS Prior] [EQU $RACE High-Elf] ]
+R:0:0x94/0x89
+?:[AND [EQU $CLASS Prior] [EQU $RACE Dunadan] ]
+R:0:0x94/0x8A
+?:[AND [EQU $CLASS Prior] [EQU $RACE Barbarian] ]
+R:0:0x94/0x8B
+?:[AND [EQU $CLASS Prior] [EQU $RACE Ogre] ]
+R:0:0x94/0x8C
+?:[AND [EQU $CLASS Prior] [EQU $RACE Half-Giant] ]
+R:0:0x94/0x8D
+?:[AND [EQU $CLASS Prior] [EQU $RACE Half-Titan] ]
+R:0:0x94/0x8E
+?:[AND [EQU $CLASS Prior] [EQU $RACE Cyclops] ]
+R:0:0x94/0x8F
+?:[AND [EQU $CLASS Prior] [EQU $RACE Yeek] ]
+R:0:0x94/0x90
+?:[AND [EQU $CLASS Prior] [EQU $RACE RohanKnight] ]
+R:0:0x94/0x91
+?:[AND [EQU $CLASS Prior] [EQU $RACE Kobold] ]
+R:0:0x94/0x92
+?:[AND [EQU $CLASS Prior] [EQU $RACE Nibelung] ]
+R:0:0x94/0x93
+?:[AND [EQU $CLASS Prior] [EQU $RACE Dark Elf] ]
+R:0:0x94/0x94
+?:[AND [EQU $CLASS Prior] [EQU $RACE Thunderlord] ]
+R:0:0x94/0x95
+?:[AND [EQU $CLASS Prior] [EQU $RACE Mindflayer] ]
+R:0:0x94/0x96
+?:[AND [EQU $CLASS Prior] [EQU $RACE Imp] ]
+R:0:0x94/0x97
+?:[AND [EQU $CLASS Prior] [EQU $RACE Ent] ]
+R:0:0x94/0x98
+?:[AND [EQU $CLASS Prior] [EQU $RACE Skeleton] ]
+R:0:0x94/0x99
+?:[AND [EQU $CLASS Prior] [EQU $RACE Zombie] ]
+R:0:0x94/0x9A
+?:[AND [EQU $CLASS Prior] [EQU $RACE Vampire] ]
+R:0:0x94/0x9B
+?:[AND [EQU $CLASS Prior] [EQU $RACE Spectre] ]
+R:0:0x94/0x9C
+?:[AND [EQU $CLASS Prior] [EQU $RACE Sprite] ]
+R:0:0x94/0x9D
+?:[AND [EQU $CLASS Prior] [EQU $RACE DeathMold] ]
+R:0:0x94/0x9E
+
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Human] ]
+R:0:0x92/0x80
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Half-Elf] ]
+R:0:0x92/0x81
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Elf] ]
+R:0:0x92/0x82
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Hobbit] ]
+R:0:0x92/0x83
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Gnome] ]
+R:0:0x92/0x84
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Dwarf] ]
+R:0:0x92/0x85
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Half-Orc] ]
+R:0:0x92/0x86
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Half-Troll] ]
+R:0:0x92/0x87
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Dunadan] ]
+R:0:0x92/0x88
+?:[AND [EQU $CLASS Possessor] [EQU $RACE High-Elf] ]
+R:0:0x92/0x89
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Dunadan] ]
+R:0:0x92/0x8A
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Barbarian] ]
+R:0:0x92/0x8B
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Ogre] ]
+R:0:0x92/0x8C
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Half-Giant] ]
+R:0:0x92/0x8D
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Half-Titan] ]
+R:0:0x92/0x8E
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Kobold] ]
+R:0:0x92/0x92
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Nibelung] ]
+R:0:0x92/0x93
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Dark Elf] ]
+R:0:0x92/0x94
+?:[AND [EQU $CLASS Possessor] [EQU $RACE RohanKnight] ]
+R:0:0x93/0x91
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Thunderlord] ]
+R:0:0x92/0x95
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Mindflayer] ]
+R:0:0x92/0x96
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Imp] ]
+R:0:0x92/0x97
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Ent] ]
+R:0:0x92/0x98
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Skeleton] ]
+R:0:0x92/0x99
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Zombie] ]
+R:0:0x92/0x9A
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Vampire] ]
+R:0:0x92/0x9B
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Spectre] ]
+R:0:0x92/0x9C
+?:[AND [EQU $CLASS Possessor] [EQU $RACE Sprite] ]
+R:0:0x92/0x9D
+?:[AND [EQU $CLASS Possessor] [EQU $RACE DeathMold] ]
+R:0:0x92/0x9E
+
diff --git a/lib/pref/xtra-xxx.prf b/lib/pref/xtra-xxx.prf
new file mode 100644
index 00000000..0c6186de
--- /dev/null
+++ b/lib/pref/xtra-xxx.prf
@@ -0,0 +1,137 @@
+# File: xtra-xxx.prf
+
+#
+# This file defines special attr/char mappings for use in "graphics" mode
+#
+# See "lib/help/command.txt" and "src/files.c" for more information.
+#
+
+
+##### Remap the player icon #####
+
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Human] ]
+R:0:0x8C/0x80
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Elf] ]
+R:0:0x8C/0x81
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Elf] ]
+R:0:0x8C/0x82
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Hobbit] ]
+R:0:0x8C/0x83
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Gnome] ]
+R:0:0x8C/0x84
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dwarf] ]
+R:0:0x8C/0x85
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Orc] ]
+R:0:0x8C/0x86
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Half-Troll] ]
+R:0:0x8C/0x87
+?:[AND [EQU $CLASS Warrior] [EQU $RACE Dunadan] ]
+R:0:0x8C/0x88
+?:[AND [EQU $CLASS Warrior] [EQU $RACE High-Elf] ]
+R:0:0x8C/0x89
+
+?:[AND [EQU $CLASS Mage] [EQU $RACE Human] ]
+R:0:0x8C/0x8A
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Elf] ]
+R:0:0x8C/0x8B
+?:[AND [EQU $CLASS Mage] [EQU $RACE Elf] ]
+R:0:0x8C/0x8C
+?:[AND [EQU $CLASS Mage] [EQU $RACE Hobbit] ]
+R:0:0x8C/0x8D
+?:[AND [EQU $CLASS Mage] [EQU $RACE Gnome] ]
+R:0:0x8C/0x8E
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dwarf] ]
+R:0:0x8C/0x8F
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Orc] ]
+R:0:0x8C/0x90
+?:[AND [EQU $CLASS Mage] [EQU $RACE Half-Troll] ]
+R:0:0x8C/0x91
+?:[AND [EQU $CLASS Mage] [EQU $RACE Dunadan] ]
+R:0:0x8C/0x92
+?:[AND [EQU $CLASS Mage] [EQU $RACE High-Elf] ]
+R:0:0x8C/0x93
+
+?:[AND [EQU $CLASS Priest] [EQU $RACE Human] ]
+R:0:0x8C/0x94
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Elf] ]
+R:0:0x8C/0x95
+?:[AND [EQU $CLASS Priest] [EQU $RACE Elf] ]
+R:0:0x8C/0x96
+?:[AND [EQU $CLASS Priest] [EQU $RACE Hobbit] ]
+R:0:0x8C/0x97
+?:[AND [EQU $CLASS Priest] [EQU $RACE Gnome] ]
+R:0:0x8C/0x98
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dwarf] ]
+R:0:0x8C/0x99
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Orc] ]
+R:0:0x8C/0x9A
+?:[AND [EQU $CLASS Priest] [EQU $RACE Half-Troll] ]
+R:0:0x8C/0x9B
+?:[AND [EQU $CLASS Priest] [EQU $RACE Dunadan] ]
+R:0:0x8C/0x9C
+?:[AND [EQU $CLASS Priest] [EQU $RACE High-Elf] ]
+R:0:0x8C/0x9D
+
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Human] ]
+R:0:0x8C/0x9E
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Elf] ]
+R:0:0x8C/0x9F
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Elf] ]
+R:0:0x8D/0x80
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Hobbit] ]
+R:0:0x8D/0x81
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Gnome] ]
+R:0:0x8D/0x82
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dwarf] ]
+R:0:0x8D/0x83
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Orc] ]
+R:0:0x8D/0x84
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Half-Troll] ]
+R:0:0x8D/0x85
+?:[AND [EQU $CLASS Rogue] [EQU $RACE Dunadan] ]
+R:0:0x8D/0x86
+?:[AND [EQU $CLASS Rogue] [EQU $RACE High-Elf] ]
+R:0:0x8D/0x87
+
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Human] ]
+R:0:0x8D/0x88
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Elf] ]
+R:0:0x8D/0x89
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Elf] ]
+R:0:0x8D/0x8A
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Hobbit] ]
+R:0:0x8D/0x8B
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Gnome] ]
+R:0:0x8D/0x8C
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dwarf] ]
+R:0:0x8D/0x8D
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Orc] ]
+R:0:0x8D/0x8E
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Half-Troll] ]
+R:0:0x8D/0x8F
+?:[AND [EQU $CLASS Ranger] [EQU $RACE Dunadan] ]
+R:0:0x8D/0x90
+?:[AND [EQU $CLASS Ranger] [EQU $RACE High-Elf] ]
+R:0:0x8D/0x91
+
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Human] ]
+R:0:0x8D/0x92
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Elf] ]
+R:0:0x8D/0x93
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Elf] ]
+R:0:0x8D/0x94
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Hobbit] ]
+R:0:0x8D/0x95
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Gnome] ]
+R:0:0x8D/0x96
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dwarf] ]
+R:0:0x8D/0x97
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Orc] ]
+R:0:0x8D/0x98
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Half-Troll] ]
+R:0:0x8D/0x99
+?:[AND [EQU $CLASS Paladin] [EQU $RACE Dunadan] ]
+R:0:0x8D/0x9A
+?:[AND [EQU $CLASS Paladin] [EQU $RACE High-Elf] ]
+R:0:0x8D/0x9B
+
diff --git a/lib/save/delete.me b/lib/save/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/save/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/scpt/bounty.lua b/lib/scpt/bounty.lua
new file mode 100644
index 00000000..94c15598
--- /dev/null
+++ b/lib/scpt/bounty.lua
@@ -0,0 +1,90 @@
+-- The bounty quest! bring back corpses to increase your monster lore skill
+
+add_quest
+{
+ ["global"] = "BOUNTY_QUEST",
+ ["name"] = "Bounty quest",
+ ["desc"] = function()
+ if quest(BOUNTY_QUEST).status == QUEST_STATUS_TAKEN then
+ print_hook("#####yBounty quest!\n")
+ print_hook("You must bring back "..monster_race_desc(bounty_quest_monster, 0).." corpse to the beastmaster.\n")
+ print_hook("\n")
+ end
+ end,
+ ["level"] = -1,
+ ["data"] = {
+ ["bounty_quest_monster"] = 0,
+ },
+ ["hooks"] = {
+ -- Start the game without the quest, need to request it
+ [HOOK_BIRTH_OBJECTS] = function()
+ quest(BOUNTY_QUEST).status = QUEST_STATUS_UNTAKEN
+ end,
+ },
+}
+
+add_building_action
+{
+ -- Index is used in ba_info.txt to set the actions
+ ["index"] = 54,
+ ["action"] = function()
+ if quest(BOUNTY_QUEST).status == QUEST_STATUS_UNTAKEN then
+ quest(BOUNTY_QUEST).status = QUEST_STATUS_TAKEN
+ bounty_quest_monster = get_new_bounty_monster(3 + ((player.lev * 3) / 2))
+
+ msg_print("You must bring me back "..monster_race_desc(bounty_quest_monster, 0).." corpse.")
+ else
+ msg_print("You still must bring me back "..monster_race_desc(bounty_quest_monster, 0).." corpse.")
+ end
+ end
+}
+
+add_building_action
+{
+ -- Index is used in ba_info.txt to set the actions
+ ["index"] = 55,
+ ["action"] = function()
+ if quest(BOUNTY_QUEST).status == QUEST_STATUS_TAKEN then
+ local ret, item
+
+ -- Ask for an item
+ ret, item = get_item("What corpse to return?",
+ "You have no corpse to return.",
+ bor(USE_INVEN),
+ function (obj)
+ if (obj.tval == TV_CORPSE) and (obj.pval2 == bounty_quest_monster) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+
+ -- Ok we got the corpse!
+ if ret == TRUE then
+ -- Take the corpse from the inventory
+ inven_item_increase(item, -1)
+ inven_item_optimize(item)
+
+ msg_print("Ah well done adventurer!")
+ msg_print("As a reward I will teach you a bit of monster lore.")
+
+ if skill(SKILL_LORE).mod == 0 then
+ skill(SKILL_LORE).mod = 900
+ skill(SKILL_LORE).dev = TRUE
+ end
+ skill(SKILL_LORE).value = skill(SKILL_LORE).value + skill(SKILL_LORE).mod
+ if skill(SKILL_PRESERVATION).mod == 0 then
+ skill(SKILL_PRESERVATION).value = 800
+ skill(SKILL_PRESERVATION).mod = 800
+ skill(SKILL_PRESERVATION).dev = TRUE
+ msg_print("I see you don't know the corpse preservation skill, I shall teach you it too.")
+ end
+
+ quest(BOUNTY_QUEST).status = QUEST_STATUS_UNTAKEN
+ bounty_quest_monster = 0
+ end
+ else
+ msg_print("You do not have any bounty quest yet.")
+ end
+ end
+}
diff --git a/lib/scpt/corrupt.lua b/lib/scpt/corrupt.lua
new file mode 100644
index 00000000..6a7ae0e5
--- /dev/null
+++ b/lib/scpt/corrupt.lua
@@ -0,0 +1,440 @@
+-- Definition of the corruptions
+
+-- The Balrog corruptions
+CORRUPT_BALROG_AURA = add_corruption
+{
+ ["color"] = TERM_ORANGE,
+ ["name"] = "Balrog Aura",
+ ["get_text"] = "A corrupted wall of flames surrounds you.",
+ ["lose_text"] = "The wall of corrupted flames abandons you.",
+ ["desc"] =
+ {
+ " Surrounds you with a fiery aura",
+ " But it can burn scrolls when you read them"
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.xtra_f3 = bor(player.xtra_f3, TR3_SH_FIRE)
+ player.xtra_f3 = bor(player.xtra_f3, TR3_LITE1)
+ end,
+ [HOOK_READ] = function(obj)
+ if magik(5) == TRUE then
+ msg_print("Your demon aura burns the scroll before you read it!")
+ return TRUE, TRUE, FALSE
+ else
+ return FALSE
+ end
+ end,
+ },
+}
+
+CORRUPT_BALROG_WINGS = add_corruption
+{
+ ["color"] = TERM_ORANGE,
+ ["name"] = "Balrog Wings",
+ ["get_text"] = "Wings of shadow grow in your back.",
+ ["lose_text"] = "The wings in your back fall apart.",
+ ["desc"] =
+ {
+ " Creates ugly, but working, wings allowing you to fly",
+ " But it reduces charisma by 4 and dexterity by 2"
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.xtra_f4 = bor(player.xtra_f4, TR4_FLY)
+ player.modify_stat(A_CHR, -4)
+ player.modify_stat(A_DEX, -2)
+ end,
+ },
+}
+
+CORRUPT_BALROG_STRENGTH = add_corruption
+{
+ ["color"] = TERM_ORANGE,
+ ["name"] = "Balrog Strength",
+ ["get_text"] = "Your muscles get unnatural strength.",
+ ["lose_text"] = "Your muscles get weaker again.",
+ ["desc"] =
+ {
+ " Provides 3 strength and 1 constitution",
+ " But it reduces charisma by 1 and dexterity by 3"
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.modify_stat(A_STR, 3)
+ player.modify_stat(A_CON, 1)
+ player.modify_stat(A_DEX, -3)
+ player.modify_stat(A_CHR, -1)
+ end,
+ },
+}
+
+CORRUPT_BALROG_FORM = add_corruption
+{
+ ["color"] = TERM_YELLOW,
+ ["name"] = "Balrog Form",
+ ["get_text"] = "You feel the might of a Balrog inside you.",
+ ["lose_text"] = "The presence of the Balrog seems to abandon you.",
+ ["desc"] =
+ {
+ " Allows you to turn into a Balrog at will",
+ " You need Balrog Wings, Balrog Aura and Balrog Strength to activate it"
+ },
+ ["depends"] =
+ {
+ [CORRUPT_BALROG_AURA] = TRUE,
+ [CORRUPT_BALROG_WINGS] = TRUE,
+ [CORRUPT_BALROG_STRENGTH] = TRUE
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ACID)
+ player.xtra_f2 = bor(player.xtra_f2, TR2_IM_FIRE)
+ player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ELEC)
+ player.xtra_f2 = bor(player.xtra_f2, TR2_RES_DARK)
+ player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CHAOS)
+ end,
+ [HOOK_CALC_POWERS] = function()
+ player.add_power(PWR_BALROG)
+ end,
+ },
+}
+
+
+-- The Demon corruptions
+CORRUPT_DEMON_SPIRIT = add_corruption
+{
+ ["color"] = TERM_RED,
+ ["name"] = "Demon Spirit",
+ ["get_text"] = "Your spirit opens to corrupted thoughts.",
+ ["lose_text"] = "Your spirit closes again to the corrupted thoughts.",
+ ["desc"] =
+ {
+ " Increases your intelligence by 1",
+ " But reduce your charisma by 2",
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.modify_stat(A_INT, 1)
+ player.modify_stat(A_CHR, -2)
+ end,
+ },
+}
+
+CORRUPT_DEMON_HIDE = add_corruption
+{
+ ["color"] = TERM_RED,
+ ["name"] = "Demon Hide",
+ ["get_text"] = "Your skin grows into a thick hide.",
+ ["lose_text"] = "Your skin returns to a natural state.",
+ ["desc"] =
+ {
+ " Increases your armour class by your level",
+ " Provides immunity to fire at level 40",
+ " But reduces speed by your level / 7",
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.to_a = player.to_a + player.lev
+ player.dis_to_a = player.dis_to_a + player.lev
+ player.pspeed = player.pspeed - (player.lev / 7)
+ if player.lev >= 40 then player.xtra_f2 = bor(player.xtra_f2, TR2_IM_FIRE) end
+ end,
+ },
+}
+
+CORRUPT_DEMON_BREATH = add_corruption
+{
+ ["color"] = TERM_RED,
+ ["name"] = "Demon Breath",
+ ["get_text"] = "Your breath becomes mephitic.",
+ ["lose_text"] = "Your breath is once again normal.",
+ ["desc"] =
+ {
+ " Provides fire breath",
+ " But gives a small chance to spoil potions when you quaff them",
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_POWERS] = function()
+ player.add_power(PWR_BR_FIRE)
+ end,
+ [HOOK_QUAFF] = function(obj)
+ if magik(9) == TRUE then
+ msg_print("Your demon breath spoils the potion!")
+ return TRUE, FALSE
+ else
+ return FALSE
+ end
+ end,
+ },
+}
+
+CORRUPT_DEMON_REALM = add_corruption
+{
+ ["color"] = TERM_L_RED,
+ ["name"] = "Demon Realm",
+ ["get_text"] = "You feel more attuned to the demon realm.",
+ ["lose_text"] = "You lose your attunement to the demon realm.",
+ ["desc"] =
+ {
+ " Provides access to the demon school skill and the use of demonic equipment",
+ " You need Demon Spirit, Demon Hide and Demon Breath to activate it"
+ },
+ ["depends"] =
+ {
+ [CORRUPT_DEMON_SPIRIT] = TRUE,
+ [CORRUPT_DEMON_HIDE] = TRUE,
+ [CORRUPT_DEMON_BREATH] = TRUE
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ -- 1500 may seem a lot, but people are rather unlikely to get the corruption very soon
+ -- due to the dependencies
+ if s_info[SKILL_DAEMON + 1].mod == 0 then s_info[SKILL_DAEMON + 1].mod = 1500 end
+ s_info[SKILL_DAEMON + 1].hidden = FALSE;
+ end,
+ },
+}
+
+
+-- Teleportation corruptions
+
+-- Random teleportation will ask for confirmation 70% of the time
+-- But 30% of the time it will teleport, without asking
+CORRUPT_RANDOM_TELEPORT = add_corruption
+{
+ ["color"] = TERM_GREEN,
+ ["name"] = "Random teleportation",
+ ["get_text"] = "Space seems to fizzle around you.",
+ ["lose_text"] = "Space solidify again around you.",
+ ["desc"] =
+ {
+ " Randomly teleports you around",
+ },
+ -- No oppose field, it will be automatically set when we declare the anti-telep corruption to oppose us
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.xtra_f3 = bor(player.xtra_f3, TR3_TELEPORT)
+ end,
+ [HOOK_PROCESS_WORLD] = function()
+ if rand_int(300) == 1 then
+ if magik(70) == TRUE then
+ if get_check("Teleport?") == TRUE then
+ teleport_player(50)
+ end
+ else
+ disturb(0, 0)
+ msg_print("Your corruption takes over you, you teleport!")
+ teleport_player(50)
+ end
+ end
+ end,
+ },
+}
+
+-- Anti-teleportation corruption, can be stopped with this power
+CORRUPT_ANTI_TELEPORT = add_corruption
+{
+ ["color"] = TERM_GREEN,
+ ["name"] = "Anti-teleportation",
+ ["get_text"] = "Space continuum freezes around you.",
+ ["lose_text"] = "Space continuum can once more be altered around you.",
+ ["desc"] =
+ {
+ " Prevents all teleportations, be it of you or monsters",
+ },
+ ["oppose"] =
+ {
+ [CORRUPT_RANDOM_TELEPORT] = TRUE
+ },
+ ["hooks"] =
+ {
+ [HOOK_BIRTH_OBJECTS] = function()
+ player.corrupt_anti_teleport_stopped = FALSE
+ end,
+ [HOOK_CALC_POWERS] = function()
+ player.add_power(POWER_COR_SPACE_TIME)
+ end,
+ [HOOK_CALC_BONUS] = function()
+ if player.corrupt_anti_teleport_stopped == FALSE then
+ player.resist_continuum = TRUE
+ end
+ end,
+ [HOOK_PROCESS_WORLD] = function()
+ if player.corrupt_anti_teleport_stopped == TRUE then
+ local amt = player.msp + player.csp
+ amt = amt / 100
+ if (amt < 1) then amt = 1 end
+ increase_mana(-amt)
+ if player.csp == 0 then
+ player.corrupt_anti_teleport_stopped = FALSE
+ msg_print("You stop controlling your corruption.")
+ player.update = bor(player.update, PU_BONUS)
+ end
+ end
+ end,
+ },
+}
+
+
+-- Troll blood
+CORRUPT_TROLL_BLOOD = add_corruption
+{
+ ["color"] = TERM_GREEN,
+ ["name"] = "Troll Blood",
+ ["get_text"] = "Your blood thickens, you sense corruption in it.",
+ ["lose_text"] = "Your blood returns to a normal state.",
+ ["desc"] =
+ {
+ " Troll blood flows in your veins, granting increased regeneration",
+ " It also enables you to feel the presence of other troll beings",
+ " But it will make your presence more noticeable and aggravating",
+ },
+ ["can_gain"] = function()
+ -- Ok trolls should not get this one. never.
+ if get_race_name() == "Troll" then
+ return nil
+ else
+ return not nil
+ end
+ end,
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN, TR3_AGGRAVATE)
+ player.xtra_esp = bor(player.xtra_esp, ESP_TROLL)
+ end,
+ },
+}
+
+-- The vampire corruption set
+CORRUPT_VAMPIRE_TEETH = add_corruption
+{
+ ["group"] = "Vampire",
+ ["removable"] = FALSE,
+ ["color"] = TERM_L_DARK,
+ ["name"] = "Vampiric Teeth",
+ ["get_text"] = "You grow vampiric teeth!",
+ ["lose_text"] = "BUG! this should not happen",
+ ["desc"] =
+ {
+ " Your teeth allow you to drain blood to feed yourself",
+ " However your stomach now only accepts blood.",
+ },
+ ["allow"] = function()
+ if test_race_flags(1, PR1_NO_SUBRACE_CHANGE) == FALSE then return not nil else return nil end
+ end,
+ ["gain"] = function()
+ switch_subrace(SUBRACE_SAVE, TRUE);
+
+ subrace_add_power(subrace(SUBRACE_SAVE), PWR_VAMPIRISM)
+ subrace(SUBRACE_SAVE).flags1 = bor(subrace(SUBRACE_SAVE).flags1, PR1_VAMPIRE, PR1_UNDEAD, PR1_NO_SUBRACE_CHANGE)
+ end,
+ ["hooks"] =
+ {
+ },
+}
+CORRUPT_VAMPIRE_STRENGTH = add_corruption
+{
+ ["group"] = "Vampire",
+ ["removable"] = FALSE,
+ ["color"] = TERM_L_DARK,
+ ["name"] = "Vampiric Strength",
+ ["get_text"] = "Your body seems more dead than alive.",
+ ["lose_text"] = "BUG! this should not happen",
+ ["desc"] =
+ {
+ " Your body seems somewhat dead",
+ " In this near undead state it has improved strength, constitution and intelligence",
+ " But reduced dexterity, wisdom and charisma.",
+ },
+ ["depends"] =
+ {
+ [CORRUPT_VAMPIRE_TEETH] = TRUE,
+ },
+ ["gain"] = function()
+ -- Apply the bonuses/penalities
+ subrace(SUBRACE_SAVE).r_mhp = subrace(SUBRACE_SAVE).r_mhp + 1
+ subrace(SUBRACE_SAVE).r_exp = subrace(SUBRACE_SAVE).r_exp + 100
+
+ subrace(SUBRACE_SAVE).r_adj[A_STR + 1] = subrace(SUBRACE_SAVE).r_adj[A_STR + 1] + 3
+ subrace(SUBRACE_SAVE).r_adj[A_INT + 1] = subrace(SUBRACE_SAVE).r_adj[A_INT + 1] + 2
+ subrace(SUBRACE_SAVE).r_adj[A_WIS + 1] = subrace(SUBRACE_SAVE).r_adj[A_WIS + 1] - 3
+ subrace(SUBRACE_SAVE).r_adj[A_DEX + 1] = subrace(SUBRACE_SAVE).r_adj[A_DEX + 1] - 2
+ subrace(SUBRACE_SAVE).r_adj[A_CON + 1] = subrace(SUBRACE_SAVE).r_adj[A_CON + 1] + 1
+ subrace(SUBRACE_SAVE).r_adj[A_CHR + 1] = subrace(SUBRACE_SAVE).r_adj[A_CHR + 1] - 4
+
+ -- be reborn!
+ do_rebirth()
+ cmsg_print(TERM_L_DARK, "You feel death slipping inside.")
+ end,
+ ["hooks"] =
+ {
+ },
+}
+CORRUPT_VAMPIRE_VAMPIRE = add_corruption
+{
+ ["group"] = "Vampire",
+ ["removable"] = FALSE,
+ ["color"] = TERM_L_DARK,
+ ["name"] = "Vampire",
+ ["get_text"] = "You die to be reborn in a Vampire form.",
+ ["lose_text"] = "BUG! this should not happen",
+ ["desc"] =
+ {
+ " You are a Vampire. As such you resist cold, poison, darkness and nether.",
+ " Your life is sustained, but you cannot stand the light of the sun."
+ },
+ ["depends"] =
+ {
+ [CORRUPT_VAMPIRE_STRENGTH] = TRUE,
+ },
+ ["gain"] = function()
+ -- Be a Vampire and be proud of it
+ local title = get_subrace_title(SUBRACE_SAVE)
+ if title == " " or title == "Vampire" then
+ title = "Vampire"
+ subrace(SUBRACE_SAVE).place = FALSE
+ else
+ title = "Vampire "..title
+ end
+ set_subrace_title(SUBRACE_SAVE, title)
+
+ -- Bonus/and .. not bonus :)
+ subrace(SUBRACE_SAVE).flags1 = bor(subrace(SUBRACE_SAVE).flags1, PR1_HURT_LITE)
+ subrace(SUBRACE_SAVE).oflags2[2] = bor(subrace(SUBRACE_SAVE).oflags2[2], TR2_RES_POIS, TR2_RES_NETHER, TR2_RES_COLD, TR2_RES_DARK, TR2_HOLD_LIFE)
+ subrace(SUBRACE_SAVE).oflags3[2] = bor(subrace(SUBRACE_SAVE).oflags3[2], TR3_LITE1)
+ end,
+ ["hooks"] =
+ {
+ },
+}
+
+
+--[[
+CORRUPT_ = add_corruption
+{
+ ["color"] = TERM_GREEN,
+ ["name"] = "",
+ ["get_text"] = "",
+ ["lose_text"] = "",
+ ["desc"] =
+ {
+ " ",
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ end,
+ },
+}
+]]
diff --git a/lib/scpt/drunk.lua b/lib/scpt/drunk.lua
new file mode 100644
index 00000000..7d90af8d
--- /dev/null
+++ b/lib/scpt/drunk.lua
@@ -0,0 +1,21 @@
+-- silly function that allows a drunk to take a bottle of wine/ale from the player
+
+function drunk_takes_wine(m_idx, item)
+
+ m_ptr = monster(m_idx)
+ o_ptr = get_object(item)
+
+ if (m_ptr.r_idx == test_monster_name("Singing, happy drunk"))
+ and (o_ptr.tval == TV_FOOD) and ((o_ptr.sval == 38) or (o_ptr.sval == 39)) then
+
+ cmsg_print(TERM_YELLOW, "'Hic!'")
+
+ inven_item_increase(item, -1)
+ inven_item_optimize(item)
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+add_hook_script(HOOK_GIVE, "drunk_takes_wine", "drunk_takes_wine")
diff --git a/lib/scpt/fireprof.lua b/lib/scpt/fireprof.lua
new file mode 100644
index 00000000..79a0747b
--- /dev/null
+++ b/lib/scpt/fireprof.lua
@@ -0,0 +1,480 @@
+-- The Old Mages/Fireproofing quest: Bring back an essence from a fiery cave and get some books/scrolls/staves fireproofed in return
+
+fireproof_quest = {}
+
+-- The map definition itself
+fireproof_quest.MAP =
+[[#!map
+# Created by fearoffours (fearoffours@moppy.co.uk)
+# Made for ToME 2.1.x on 03/09/02
+
+# Permanent wall
+F:X:63:3
+
+# Floor with dirt
+F:.:88:3
+
+# shallow lava
+F:f:86:3
+
+# Deep lava
+F:F:85:3
+
+### Random Monsters and/or Items
+# Random object (upto 3 levels ood)
+F:!:88:5:0:*21
+
+# red mold
+F:m:88:5:324
+
+# Chimaera
+F:H:88:5:341
+
+# Red dragon bat
+F:b:88:5:377
+
+# Hellhound and
+# Random object (upto 7 levels ood) on normal floor
+F:C:88:5:613:*25
+
+# Quest exit
+F:<:6:3
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X......m.................H.........b...m......X
+D:X.............b...............................X
+D:X.......................m.....m.......H...b.C.X
+D:X...............m.!........b.............FFFf.X
+D:X.........m!............H....!........fffFFFffX
+D:X..................................fffFFFFFFfFX
+D:XFFf..............................fFFFFff..fffX
+D:XFFFff........FFFFFF...........fffFFFfff......X
+D:XfFFFFfff....FFFFFFFf.......fffFFFFFf.........X
+D:X.fFFFFFFff.FFFFFFFFFfF..fffFFFFFFff..........X
+D:X..fFFFFFFFffFFFfffFFFfffFFFFFFFFf............X
+D:X...fFFFFFFFFFFff.ffFFFFFFFFFFFff.............X
+D:X....fffFFFFFFff...ffFFFFFFFFFf...............X
+D:X.......ffFFFf.......ffffFFfff................X
+D:X.........fff.................................X
+D:X.............................................X
+D:X.............................................X
+D:X.............................................X
+D:X..................................<..........X
+D:X.............................................X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:22:26
+]]
+
+
+-- change this constant (and the FOO_POINTS ones) to adjust the no of items fire-proofed as a reward
+fireproof_quest.TOTAL_ITEM_POINTS = 12
+
+-- These constants are how many 'points' each type of item will take up. So currently, you can fireproof 3 books, 4 staves or 12 scrolls.
+fireproof_quest.BOOK_POINTS = 4
+fireproof_quest.STAFF_POINTS = 3
+fireproof_quest.SCROLL_POINTS = 1
+
+add_quest
+{
+ ["global"] = "FIREPROOF_QUEST",
+ ["name"] = "Old Mages quest",
+ ["desc"] = function()
+ local num_books, num_staff, num_scroll
+
+ num_books = fireproof_quest.item_points_remaining / fireproof_quest.BOOK_POINTS
+ num_staff = fireproof_quest.item_points_remaining / fireproof_quest.STAFF_POINTS
+ num_scroll = fireproof_quest.item_points_remaining / fireproof_quest.SCROLL_POINTS
+
+ -- Quest taken
+ if (quest(FIREPROOF_QUEST).status == QUEST_STATUS_TAKEN) then
+ print_hook("#####yAn Old Mages Quest!\n")
+ print_hook("Retrieve the strange essence for the old mage in Lothlorien.\n")
+ print_hook("\n")
+ -- essence retrieved, not taken to mage
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_COMPLETED) then
+ print_hook("#####yAn Old Mages Quest!\n")
+ print_hook("You have retrieved the essence for the old mage in Lothlorien. Perhaps you \n")
+ print_hook("should see about a reward.\n")
+ print_hook("\n")
+ -- essence returned, not all books fireproofed
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_FINISHED) and (fireproof_quest.item_points_remaining > 0) then
+ print_hook("#####yAn Old Mages Quest!\n")
+ print_hook("You have retrieved the essence for the old mage in Lothlorien. He will still \n")
+ print_hook("fireproof "..num_books.." book(s) or "..num_staff.." staff/staves or "..num_scroll.." scroll(s) for you.\n")
+ print_hook("\n")
+ end
+ end,
+ ["level"] = 20,
+ ["data"] = {
+ -- store some variables
+ ["fireproof_quest.item_points_remaining"] = fireproof_quest.TOTAL_ITEM_POINTS,
+ ["fireproof_quest.essence"] = 0,
+ },
+ ["hooks"] = {
+ -- Start the game without the quest, need to request it
+ [HOOK_BIRTH_OBJECTS] = function()
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_UNTAKEN
+
+ -- reset some variables on birth
+ fireproof_quest.item_points_remaining = fireproof_quest.TOTAL_ITEM_POINTS
+ fireproof_quest.essence = 0
+ end,
+ [HOOK_GEN_QUEST] = function()
+ local essence, y, x, traps, tries, trap_y, trap_x, grid
+
+ -- Only if player doing this quest
+ if (player.inside_quest ~= FIREPROOF_QUEST) then
+ return FALSE
+ else
+ -- load the map
+ load_map(fireproof_quest.MAP, 2, 2)
+
+ -- no teleport
+ level_flags2 = DF2_NO_TELEPORT
+
+ -- determine type of essence
+ fireproof_quest.essence = randint(18)
+
+ -- create essence
+ essence = create_object(TV_BATERIE, fireproof_quest.essence)
+
+ -- mark essence
+ essence.pval2 = fireproof_quest.essence
+ essence.note = quark_add("quest")
+
+ -- roll for co-ordinates in top half of map
+ y = randint(3) + 2
+ x = randint(45) + 2
+
+ -- drop it
+ drop_near(essence, -1, y, x)
+
+ -- how many traps to generate
+ traps = rand_range(10, 30)
+
+ -- generate the traps
+ while (traps > 0) do
+
+ -- initialise tries variable
+ tries = 0
+
+ -- make sure it's a safe place
+ while (tries == 0) do
+
+ -- get grid coordinates
+ trap_y = randint(19) + 2
+ trap_x = randint(45) + 2
+ grid = cave(trap_y, trap_x)
+
+ -- are the coordinates on a stair, or a wall?
+ if (cave_is(grid, FF1_PERMANENT) ~= 0) or (cave_is(grid, FF1_FLOOR) == 0) then
+
+ -- try again
+ tries = 0
+ else
+ -- not a stair, then stop this 'while'
+ tries = 1
+ end
+ end
+
+ -- randomise level of trap
+ trap_level = rand_range(20, 40)
+
+ -- put the trap there
+ place_trap(trap_y, trap_x, trap_level)
+
+ -- that's one less trap to place
+ traps = traps - 1
+ end
+ return TRUE
+ end
+ end,
+ [HOOK_STAIR] = function()
+ local ret
+
+ -- only ask this if player about to go up stairs of quest and hasn;t retrieved essence
+ if (player.inside_quest ~= FIREPROOF_QUEST) or
+ (quest(FIREPROOF_QUEST).status == QUEST_STATUS_COMPLETED) then
+ return FALSE
+ else
+ if cave(player.py, player.px).feat ~= FEAT_LESS then return end
+
+ -- flush all pending input
+ flush()
+
+ -- confirm
+ ret = get_check("Really abandon the quest?")
+
+ -- if yes, then
+ if (ret == TRUE) then
+
+ -- fail the quest
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_FAILED
+ return FALSE
+ else
+ -- if no, they stay in the quest
+ return TRUE
+ end
+ end
+ end,
+ [HOOK_GET] = function(o_ptr)
+
+ -- if they're in the quest and haven't picked up the essence already, continue
+ if (player.inside_quest ~= FIREPROOF_QUEST) or
+ (quest(FIREPROOF_QUEST).status == QUEST_STATUS_COMPLETED) then
+ return FALSE
+ else
+
+ -- check that it's the real essence and not another one generated via the random object placing in fireproof.map
+ if (o_ptr.pval2 == fireproof_quest.essence) then
+
+ -- ok mark the quest 'completed'
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_COMPLETED
+ msg_print(TERM_YELLOW, "Fine! Looks like you've found it.")
+ end
+ end
+ end,
+
+ },
+}
+
+-- add the bit that determines what happens when the request 'q'uest bit is done in the wizard spire
+add_building_action
+{
+ -- Index is used in ba_info.txt to set the actions
+ ["index"] = 56,
+ ["action"] = function()
+
+ local num_books, num_staff, num_scroll
+
+ num_books = fireproof_quest.item_points_remaining / fireproof_quest.BOOK_POINTS
+ num_staff = fireproof_quest.item_points_remaining / fireproof_quest.STAFF_POINTS
+ num_scroll = fireproof_quest.item_points_remaining / fireproof_quest.SCROLL_POINTS
+
+ -- the quest hasn;t been requested already, right?
+ if quest(FIREPROOF_QUEST).status == QUEST_STATUS_UNTAKEN then
+
+ -- quest has been taken now
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_TAKEN
+ fireproof_quest.item_points_remaining = fireproof_quest.TOTAL_ITEM_POINTS
+
+ -- issue instructions
+ msg_print("I need a very special essence for a spell I am working on. I am too old to ")
+ msg_print("fetch it myself. Please bring it back to me. You can find it north of here.")
+ msg_print("Be careful with it, it's fragile and might be destroyed easily.")
+
+ return TRUE, FALSE, TRUE
+ -- if quest completed (essence was retrieved)
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_COMPLETED) then
+
+ -- ask for essence
+ ret, item = get_item("Which essence?",
+ "You have no essences to return",
+ bor(USE_INVEN),
+ function (obj)
+
+ -- check it's the 'marked' essence
+ if (obj.tval == TV_BATERIE) and (obj.sval == fireproof_quest.essence) and (obj.pval2 == fireproof_quest.essence) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+
+ -- didn't get the essence?
+ if (ret == FALSE) then
+ return TRUE
+
+ -- got the essence!
+ else
+
+ -- take essence
+ inven_item_increase(item, -1)
+ inven_item_optimize(item)
+ msg_print("Great! Let me fireproof some of your items in thanks. I can do "..num_books.." books, ")
+ msg_print(num_staff.." staves, or "..num_scroll.." scrolls.")
+
+ -- how many items to proof?
+ local items = fireproof_quest.item_points_remaining
+
+ -- repeat till up to 3 (value defined as TOTAL_ITEM_POINTS constant) books fireproofed
+ while items > 0 do
+ ret = fireproof()
+
+ -- don't loop the fireproof if there's nothing to fireproof
+ if ret == FALSE then
+ break
+ end
+
+ -- subtract item points
+ items = fireproof_quest.item_points_remaining
+ end
+
+ -- have they all been done?
+ if (fireproof_quest.item_points_remaining == 0) then
+ -- mark quest to make sure no more quests are given
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_REWARDED
+ else
+ -- mark in preparation of anymore books to fireproof
+ quest(FIREPROOF_QUEST).status = QUEST_STATUS_FINISHED
+ end
+
+
+ end
+
+ -- if the player asks for a quest when they already have it, but haven't failed it, give them some extra instructions
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_TAKEN) then
+ msg_print("The essence is in a cave just behind the shop.")
+
+ -- ok not all books have been fireproofed... lets do the rest
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_FINISHED) then
+
+ -- how many books still to proof?
+ local items = fireproof_quest.item_points_remaining
+
+ -- repeat as necessary
+ while items > 0 do
+ ret = fireproof()
+
+ -- don't loop the fireproof if there's nothing to fireproof
+ if ret == FALSE then
+ break
+ else
+ -- have they all been done?
+ if (fireproof_quest.item_points_remaining == 0) then quest(FIREPROOF_QUEST).status = QUEST_STATUS_REWARDED end
+ end
+
+ -- subtract item points
+ items = fireproof_quest.item_points_remaining
+ end
+
+ -- quest failed or completed, then give no more quests
+ elseif (quest(FIREPROOF_QUEST).status == QUEST_STATUS_FAILED) or (quest(FIREPROOF_QUEST).status == QUEST_STATUS_REWARDED) then
+ msg_print("I have no more quests for you")
+ end
+ return TRUE
+ end,
+}
+
+-- the routine that checks for a book and actually fireproofs it
+function fireproof()
+
+ local ret, item, obj2, stack, obj3, carry_it
+
+ ret, item = get_item("Which item shall I fireproof?",
+ "You have no more items I can fireproof, come back when you have some.",
+ bor(USE_INVEN),
+ function (obj)
+
+ -- get some flags
+ local f1, f2, f3, f4, f5, esp = object_flags(obj)
+
+ -- is it a book/staff/scroll, is it already fireproof?
+ if ((obj.tval == TV_BOOK) or (obj.tval == TV_SCROLL) or (obj.tval == TV_STAFF)) and (band(f3, TR3_IGNORE_FIRE) == 0) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+
+ -- get the object type from the number
+ obj2 = get_object(item)
+
+ -- check we have enough points (if we 'got' an item)
+ if (ret == TRUE) then
+ ret2, stack = enough_points(obj2)
+ end
+
+ -- did either routine fail?
+ if (ret == FALSE) or (ret2 == FALSE) then
+ return FALSE
+ else
+
+ -- are we part of the items from a stack?
+ if (obj2.number ~= stack) then
+
+ -- make a new object to handle
+ object_copy(obj_forge, obj2)
+
+ -- give it the right number of items
+ obj_forge.number = stack
+
+ -- adjust for number of items in pack not to be fireproofed
+ obj2.number = obj2.number - stack
+ obj3 = obj_forge
+
+ -- we'll need to add this to the inventory after fireproofing
+ carry_it = TRUE
+ else
+
+ -- use the whole stack
+ obj3 = obj2
+
+ -- we'll be dealing this while it's still in the inventory
+ carry_it = FALSE
+ end
+
+ -- make it fireproof
+ obj3.name2 = 149
+
+ -- apply it, making sure the pvals don't change with apply_magic (it would change the type of book!)
+ local oldpval = obj3.pval
+ local oldpval2 = obj3.pval2
+ local oldpval3 = obj3.pval3
+ apply_magic(obj3, -1, FALSE, FALSE, FALSE)
+ obj3.pval = oldpval
+ obj3.pval2 = oldpval2
+ obj3.pval3 = oldpval3
+
+ -- put it in the inventory if it's only part of a stack
+ if (carry_it == TRUE) then
+ inven_carry(obj3, TRUE)
+ end
+
+ -- id and notice it
+ set_known(obj3)
+ set_aware(obj3)
+
+ return TRUE
+ end
+end
+
+-- This function makes sure the player has enough 'points' left to fireproof stuff.
+function enough_points(obj)
+ local item_value, stack
+
+ -- are the items in a stack?
+ if (obj.number > 1) then
+
+ -- how many to fireproof?
+ stack = get_quantity("How many would you like fireproofed?", obj.number)
+ else
+ stack = 1
+ end
+
+ -- check for item type and multiply number in the stack by the amount of points per item of that type
+ if (obj.tval == TV_BOOK) then
+ item_value = fireproof_quest.BOOK_POINTS * stack
+ elseif (obj.tval == TV_STAFF) then
+ item_value = fireproof_quest.STAFF_POINTS * stack
+ elseif (obj.tval == TV_SCROLL) then
+ item_value = fireproof_quest.SCROLL_POINTS * stack
+ end
+
+ -- do we have enough points?
+ if (item_value > fireproof_quest.item_points_remaining) then
+ msg_print("I do not have enough fireproofing material for that.")
+ return FALSE
+ else
+ -- if so then subtract those points before we do the fireproofing
+ fireproof_quest.item_points_remaining = fireproof_quest.item_points_remaining - item_value
+ end
+
+ -- Used all the points? the quest is completely rewarded.
+ if fireproof_quest.item_points_remaining == 0 then quest(FIREPROOF_QUEST).status = QUEST_STATUS_REWARDED end
+
+ return TRUE, stack
+end
+
diff --git a/lib/scpt/god.lua b/lib/scpt/god.lua
new file mode 100644
index 00000000..3f32888b
--- /dev/null
+++ b/lib/scpt/god.lua
@@ -0,0 +1,640 @@
+-- The god quest: find randomly placed relic in a randomly placed dungeon!
+
+-- set some global variables (stored in the save file via the ["data"] key)
+god_quest = {}
+
+-- increase this number to make god quests more common, to a max value of 100
+god_quest.CHANCE_OF_GOD_QUEST = 21
+
+-- increase this number to make more quests
+god_quest.MAX_NUM_GOD_QUESTS = 5
+
+-- d_idx of the god_quest (Lost Temple) dungeon
+god_quest.DUNGEON_GOD = 30
+
+add_quest
+{
+ ["global"] = "GOD_QUEST",
+ ["name"] = "God quest",
+ ["desc"] = function()
+
+ if quest(GOD_QUEST).status == QUEST_STATUS_TAKEN then
+
+ -- get the direction that the dungeon lies from lothlorien/angband
+ local home, home_axis, home_distance, home2, home2_axis, home2_distance = get_god_quest_axes()
+
+ print_hook("#####yGod quest "..god_quest.quests_given.."!\n")
+ print_hook("Thou art to find the lost temple of thy God and\n");
+ print_hook("to retrieve the lost part of the relic for thy God! \n")
+ if home_axis ~= "close" then
+ print_hook("The temple lies "..home_distance.." to the "..home_axis.." of "..home..", \n")
+ else
+ print_hook("The temple lies very close to "..home..", \n")
+ end
+ if home2_axis ~= "close" then
+ print_hook( "and "..home2_distance.." to the "..home2_axis.." of "..home2..".\n")
+ else
+ print_hook("and very close to "..home2..".\n")
+ end
+ print_hook("\n")
+ end
+ end,
+ ["level"] = -1,
+ ["data"] = {
+ ["god_quest.relic_num"] = 1,
+ ["god_quest.quests_given"] = 0,
+ ["god_quest.relics_found"] = 0,
+ ["god_quest.dun_mindepth"] = 1,
+ ["god_quest.dun_maxdepth"] = 4,
+ ["god_quest.dun_minplev"] = 0,
+ ["god_quest.relic_gen_tries"] = 0,
+ ["god_quest.relic_generated"] = FALSE,
+ ["god_quest.dung_x"] = 1,
+ ["god_quest.dung_y"] = 1,
+ ["god_quest.player_x"] = 0,
+ ["god_quest.player_y"] = 0,
+ },
+ ["hooks"] = {
+ -- Start the game without the quest, given it by chance
+ [HOOK_BIRTH_OBJECTS] = function()
+ quest(GOD_QUEST).status = QUEST_STATUS_UNTAKEN
+
+ -- initialise save-file stored variables when new character is created
+ god_quest.relic_num = 1
+ god_quest.quests_given = 0
+ god_quest.relics_found = 0
+ god_quest.dun_mindepth = 1
+ god_quest.dun_maxdepth = 4
+ god_quest.dun_minplev = 0
+ god_quest.relic_gen_tries = 0
+ god_quest.relic_generated = FALSE
+ end,
+ [HOOK_PLAYER_LEVEL] = function(gained)
+ local home_axis, home
+
+ if gained > 0 then
+ -- roll for chance of quest
+ local give_god_quest = magik(god_quest.CHANCE_OF_GOD_QUEST)
+
+ -- check player is worshipping a god, not already on a god quest.
+ if (player.astral ~= FALSE) or (player.pgod <= 0)
+ or (quest(GOD_QUEST).status == QUEST_STATUS_TAKEN) or (quest(GOD_QUEST).status == QUEST_STATUS_FAILED)
+ or (god_quest.quests_given >= god_quest.MAX_NUM_GOD_QUESTS) or (give_god_quest == FALSE)
+ or ((current_dungeon_idx == god_quest.DUNGEON_GOD) and (dun_level > 0)) or (player.lev <= god_quest.dun_minplev) then
+ -- Don't let a player get quests with trickery
+ if player.lev > god_quest.dun_minplev then
+ god_quest.dun_minplev = player.lev
+ end
+ return
+ else
+ -- each god has different characteristics, so the quests are differnet depending on your god
+ if player.pgod == GOD_ERU then
+ god_quest.relic_num = 7
+ elseif player.pgod == GOD_MANWE then
+ god_quest.relic_num = 8
+ elseif player.pgod == GOD_TULKAS then
+ god_quest.relic_num = 9
+ elseif player.pgod == GOD_MELKOR then
+ god_quest.relic_num = 10
+ elseif player.pgod == GOD_YAVANNA then
+ god_quest.relic_num =11
+ end
+
+ -- This var will need resetting
+ god_quest.relic_generated = FALSE
+ quest(GOD_QUEST).status = QUEST_STATUS_TAKEN
+ god_quest.quests_given = god_quest.quests_given + 1
+
+ -- actually place the dungeon in a random place
+ place_rand_dung()
+
+ -- store the variables of the coords where the player was given the quest
+ god_quest.player_y, god_quest.player_x = player.get_wild_coord()
+
+ -- establish direction of player and 'home' from dungeon
+ local home, home_axis, home_distance, home2, home2_axis, home2_distance = get_god_quest_axes()
+
+ -- God issues instructions
+ cmsg_print(TERM_L_BLUE, "The voice of "..deity(player.pgod).name.." booms in your head:")
+
+ cmsg_print(TERM_YELLOW, "'I have a task for thee.")
+ cmsg_print(TERM_YELLOW, "Centuries ago an ancient relic of mine was broken apart.")
+ cmsg_print(TERM_YELLOW, "The pieces of it have been lost in fallen temples.")
+ cmsg_print(TERM_YELLOW, "Thou art to find my lost temple and retrieve a piece of the relic.")
+ cmsg_print(TERM_YELLOW, "When thy task is done, thou art to lift it in the air and call upon my name.")
+ cmsg_print(TERM_YELLOW, "I shall then come to reclaim what is mine!")
+ if home_axis ~= "close" then
+ cmsg_print(TERM_YELLOW, "The temple lies "..home_distance.." to the "..home_axis.." of "..home..", ")
+ else
+ cmsg_print(TERM_YELLOW, "The temple lies very close to "..home..",")
+ end
+
+ if home2_axis ~= "close" then
+ cmsg_print(TERM_YELLOW, "and "..home2_distance.." to the "..home2_axis.." of "..home2..", I can feel it.'")
+ else
+ cmsg_print(TERM_YELLOW, "and very close to "..home2..", I can feel it.'")
+ end
+
+ -- Prepare depth of dungeon. If this was generated in set_god_dungeon_attributes(),
+ -- then we'd have trouble if someone levelled up in the dungeon!
+ god_quest.dun_mindepth = player.lev*2/3
+ god_quest.dun_maxdepth = god_quest.dun_mindepth + 4
+ end
+ end
+ end,
+ [HOOK_LEVEL_END_GEN] = function()
+ local chance
+
+ -- Check for dungeon
+ if (current_dungeon_idx ~= god_quest.DUNGEON_GOD) or (quest(GOD_QUEST).status == QUEST_STATUS_UNTAKEN) then
+ return
+ -- if the relic has been created at this point, then it was created on the *PREVIOUS* call of HOOK_LEVEL_END_GEN, and
+ -- therefore the player has caused another level generation in the temple and hence failed the quest.
+ elseif (god_quest.relic_generated == TRUE) and quest(GOD_QUEST).status ~= QUEST_STATUS_FAILED then
+
+ -- fail the quest, don't give another one, don't give this message again
+ quest(GOD_QUEST).status = QUEST_STATUS_FAILED
+ -- God issues instructions
+ cmsg_print(TERM_L_BLUE, "The voice of "..deity(player.pgod).name.." booms in your head:")
+
+ cmsg_print(TERM_YELLOW, "'Thou art a fool!")
+ cmsg_print(TERM_YELLOW, "I told thee to look carefully for the relic. It appears thou hast missed the")
+ cmsg_print(TERM_YELLOW, "opportunity to claim it in my name, as I sense that those monsters who ")
+ cmsg_print(TERM_YELLOW, "have overrun my temple have destroyed it themselves.")
+ cmsg_print(TERM_YELLOW, "I shall not ask thee to do such a thing again, as thou hast failed me in this")
+ cmsg_print(TERM_YELLOW, "simple task!'")
+ else
+ -- Force relic generation on 5th attempt if others have been unsuccessful.
+ if (god_quest.relic_gen_tries == 4) and (god_quest.relic_generated == FALSE) then
+ generate_relic()
+ else
+ -- 1/5 chance of generation
+ chance = randint(5)
+ if (chance == 5) then
+ generate_relic()
+ else
+ god_quest.relic_gen_tries = god_quest.relic_gen_tries + 1
+ end
+ end
+ end
+ end,
+ [HOOK_ENTER_DUNGEON] = function(d_idx)
+ -- call the function to set the dungeon variables (dependant on pgod) the first time we enter the dungeon
+ if d_idx ~= god_quest.DUNGEON_GOD then
+ return
+ else
+ set_god_dungeon_attributes()
+ end
+ end,
+ [HOOK_GEN_LEVEL_BEGIN] = function()
+ -- call the function to set the dungeon variables (dependant on pgod) when we WoR back into the dungeon
+ if current_dungeon_idx ~= god_quest.DUNGEON_GOD then
+ return
+ else
+ set_god_dungeon_attributes()
+ end
+ end,
+ [HOOK_STAIR] = function()
+ -- call the function to set the dungeon variables (dependant on pgod) every time we go down a level
+ if current_dungeon_idx ~= god_quest.DUNGEON_GOD then
+ return
+ else
+ set_god_dungeon_attributes()
+ end
+ end,
+ [HOOK_GET] = function(o_ptr, item)
+ -- Is it the relic, and check to make sure the relic hasn't already been identified
+ if (quest(GOD_QUEST).status == QUEST_STATUS_TAKEN) and (o_ptr.tval == TV_JUNK) and (o_ptr.sval == god_quest.relic_num)
+ and (o_ptr.pval ~= TRUE) and (god_quest.relics_found < god_quest.quests_given) then
+
+ -- more God talky-talky
+ cmsg_print(TERM_L_BLUE, deity(player.pgod).name.." speaks to you:")
+
+ -- Is it the last piece of the relic?
+ if (god_quest.quests_given == god_quest.MAX_NUM_GOD_QUESTS) then
+ cmsg_print(TERM_YELLOW, "'At last! Thou hast found all of the relic pieces.")
+
+ -- reward player by increasing prayer skill
+ cmsg_print(TERM_YELLOW, "Thou hast done exceptionally well! I shall increase thy prayer skill even more!'")
+ skill(SKILL_PRAY).value = skill(SKILL_PRAY).value + (10 * (skill(SKILL_PRAY).mod))
+
+ -- Take the relic piece
+ floor_item_increase(item, -1)
+ floor_item_optimize(item)
+ else
+ cmsg_print(TERM_YELLOW, "'Well done! Thou hast found part of the relic.")
+ cmsg_print(TERM_YELLOW, "I shall surely ask thee to find more of it later!")
+ cmsg_print(TERM_YELLOW, "I will take it from thee for now'")
+
+ -- Take the relic piece
+ floor_item_increase(item, -1)
+ floor_item_optimize(item)
+
+ -- reward player by increasing prayer skill
+ cmsg_print(TERM_YELLOW, "'As a reward, I shall teach thee how to pray better'")
+ skill(SKILL_PRAY).value = skill(SKILL_PRAY).value + (5 * (skill(SKILL_PRAY).mod))
+ end
+
+ -- relic piece has been identified
+ o_ptr.pval = TRUE
+ god_quest.relics_found = god_quest.relics_found + 1
+
+ -- Make sure quests can be given again if neccesary
+ quest(GOD_QUEST).status = QUEST_STATUS_UNTAKEN
+ return TRUE
+ end
+ end,
+ [HOOK_CHAR_DUMP] = function()
+
+ if (god_quest.quests_given > 0) then
+
+ local relics = god_quest.relics_found
+ local append_text = ""
+ if (god_quest.relics_found == god_quest.MAX_NUM_GOD_QUESTS) then
+ relics = "all"
+ append_text = " and pleased your god"
+ else
+ if (god_quest.relics_found == 0) then
+ relics = "none"
+ end
+ if (quest(GOD_QUEST).status == QUEST_STATUS_FAILED) then
+ append_text = " and failed in your quest"
+ end
+ end
+
+ print_hook("\n You found "..(relics).." of the relic pieces"..(append_text)..".")
+
+ end
+ end,
+ },
+}
+
+-- this function places the lost temple at a randomly determined place.
+function place_rand_dung()
+ local tries, grid
+
+ -- erase old dungeon
+ if (god_quest.quests_given > 0) then
+ place_dungeon(god_quest.dung_y, god_quest.dung_x)
+
+ -- erase old recall level
+ max_dlv[god_quest.DUNGEON_GOD + 1] = 0
+ end
+
+ -- initialise tries variable
+ tries = 1000
+
+ while tries > 0 do
+
+ tries = tries - 1
+ -- get grid coordinates, within a range which prevents dungeon being generated at the very edge of the wilderness (would crash the game).
+ god_quest.dung_x = rand_range(1, max_wild_x-2)
+ god_quest.dung_y = rand_range(1, max_wild_y-2)
+
+ -- Is there a town/dungeon/potentially impassable feature there, ?
+ if (wild_map(god_quest.dung_y, god_quest.dung_x).entrance ~= 0)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).entrance ~= 0)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_EDGE)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_DEEP_WATER)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_TREES)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_SHALLOW_LAVA)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_DEEP_LAVA)
+ or (wild_feat(wild_map(god_quest.dung_y, god_quest.dung_x)).terrain_idx == TERRAIN_MOUNTAIN) then
+ -- try again
+ else
+ --neither player, nor wall, then stop this 'while'
+ break
+ end
+ end
+
+ -- Uhuh BAD ! lets use the default location up bree
+ if tries == 0 then
+ god_quest.dung_x = 32
+ god_quest.dung_y = 19
+ end
+
+ -- create god dungeon in that place
+ place_dungeon(god_quest.dung_y, god_quest.dung_x, god_quest.DUNGEON_GOD)
+
+end
+
+-- this function generates the relic at a randomly determined place in the temple.
+function generate_relic()
+ local tries, grid, x, y, relic
+
+ -- initialise tries variable
+ tries = 1000
+
+ while (tries > 0) do
+
+ tries = tries - 1
+ -- get grid coordinates from current height/width, minus one to prevent relic being generated in outside wall. (would crash the game)
+ y = randint(cur_hgt-1)
+ x = randint(cur_wid-1)
+ grid = cave(y, x)
+
+ -- are the coordinates on a floor, not on a permanent feature (eg stairs), and not on a trap ?
+ if (cave_is(grid, FF1_FLOOR) == TRUE) and (cave_is(grid, FF1_PERMANENT) == FALSE) and (grid.t_idx == 0) then break end
+
+ end
+
+ -- create relic
+ relic = create_object(TV_JUNK, god_quest.relic_num)
+
+ -- inscribe it to prevent automatizer 'accidents'
+ relic.note = quark_add("quest")
+
+ -- If no safe co-ords were found, put it in the players backpack
+ if tries == 0 then
+
+ -- explain it
+ msg_print(TERM_L_BLUE, "You luckily stumble across the relic on the stairs!")
+
+ if (inven_carry_okay(relic)) then
+ inven_carry(relic, FALSE)
+ else
+ -- no place found, drop it on the stairs
+ drop_near(relic, -1, player.py, player.px)
+ end
+
+ else
+ -- drop it
+ drop_near(relic, -1, y, x)
+ end
+
+ -- Only generate once!
+ god_quest.relic_generated = TRUE
+
+ -- Reset some variables
+ god_quest.relic_gen_tries = 0
+
+end
+
+
+
+
+function set_god_dungeon_attributes()
+
+ -- dungeon properties altered according to which god player is worshipping,
+ if player.pgod == GOD_ERU then
+
+ -- The Eru temple is based on Meneltarma.
+ -- W: Not too many monsters (they'll be tough though, with big levels)
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_level = 14
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_chance = 200
+
+ -- L: Dirt and grass. More dirt at bottom, more grass at top. rocky ground would be nice
+ dungeon(god_quest.DUNGEON_GOD).floor1 = 88
+ dungeon(god_quest.DUNGEON_GOD).floor2 = 89
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[1] = 70
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[1] = 30
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[2] = 10
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[2] = 90
+
+ -- A: Outer wall mountain chain. other walls granite
+ dungeon(god_quest.DUNGEON_GOD).fill_type1 = 97
+ dungeon(god_quest.DUNGEON_GOD).fill_percent1[1] = 100
+ dungeon(god_quest.DUNGEON_GOD).outer_wall = 57
+ dungeon(god_quest.DUNGEON_GOD).inner_wall = 97
+ dungeon(god_quest.DUNGEON_GOD).fill_method = 2
+
+ -- O: "At Meneltarma no weapon or tool had ever been borne" (but invaders would have left a small number)
+ dungeon(god_quest.DUNGEON_GOD).objs.treasure = 45
+ dungeon(god_quest.DUNGEON_GOD).objs.combat = 5
+ dungeon(god_quest.DUNGEON_GOD).objs.magic = 45
+ dungeon(god_quest.DUNGEON_GOD).objs.tools = 5
+
+ -- F: A large pillar, with stairs created at edges. (You can't climb a rock through the middle, can you?)
+ dungeon(god_quest.DUNGEON_GOD).flags1 = bor(DF1_BIG, DF1_NO_DOORS, DF1_CIRCULAR_ROOMS, DF1_EMPTY, DF1_TOWER, DF1_FLAT, DF1_ADJUST_LEVEL_2)
+ dungeon(god_quest.DUNGEON_GOD).flags2 = bor(DF2_ADJUST_LEVEL_1_2, DF2_NO_SHAFT, DF2_ADJUST_LEVEL_PLAYER)
+
+ -- R:
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[1].percent = 50
+
+ -- M: We want evil or flying characters
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mflags3 = RF3_EVIL
+
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[2].percent = 50
+
+ -- M: We want evil or flying characters
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mflags7 = RF7_CAN_FLY
+
+
+ elseif player.pgod == GOD_MANWE then
+
+ -- Manwe's lost temple is high in the clouds
+ -- W: Has average number of monsters.
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_level = 18
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_chance = 160
+
+
+ -- L: floor will be 'cloud-like vapour' and pools of 'condensing water'
+ dungeon(god_quest.DUNGEON_GOD).floor1 = 208
+ dungeon(god_quest.DUNGEON_GOD).floor2 = 209
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[1] = 85
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[1] = 15
+
+ -- A: Outer wall is 'hail stone wall', inner wall 'dense fog'. FIlled at max smoothing, like islands.
+ dungeon(god_quest.DUNGEON_GOD).fill_type1 = 211
+ dungeon(god_quest.DUNGEON_GOD).fill_percent1[1] = 100
+ dungeon(god_quest.DUNGEON_GOD).outer_wall = 210
+ dungeon(god_quest.DUNGEON_GOD).inner_wall = 211
+ dungeon(god_quest.DUNGEON_GOD).fill_method = 4
+
+ -- O: Can't imagine Manwe having much treasure. Little need for tools in a cloud temple. lots of magical stuff though...
+ dungeon(god_quest.DUNGEON_GOD).objs.treasure = 15
+ dungeon(god_quest.DUNGEON_GOD).objs.combat = 25
+ dungeon(god_quest.DUNGEON_GOD).objs.magic = 55
+ dungeon(god_quest.DUNGEON_GOD).objs.tools = 5
+
+ -- F: It's open, goes up like a tower, give it a few interesting rooms, make the monsters hard(ish).
+ dungeon(god_quest.DUNGEON_GOD).flags1 = bor(DF1_NO_DOORS, DF1_TOWER, DF1_CAVERN, DF1_ADJUST_LEVEL_2)
+ dungeon(god_quest.DUNGEON_GOD).flags2 = bor(DF2_NO_SHAFT, DF2_ADJUST_LEVEL_PLAYER)
+
+ -- R:
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[1].percent = 20
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[2].percent = 20
+ dungeon(god_quest.DUNGEON_GOD).rules[3].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[3].percent = 20
+ dungeon(god_quest.DUNGEON_GOD).rules[4].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[4].percent = 20
+ dungeon(god_quest.DUNGEON_GOD).rules[5].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[5].percent = 20
+
+ -- M: We want air(poison-type) or flying characters. Orcs too. They would have ransacked his elf-loving temple :)
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mflags2 = RF2_INVISIBLE
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mflags3 = bor(RF3_ORC, RF3_IM_POIS)
+ dungeon(god_quest.DUNGEON_GOD).rules[3].mflags4 = bor(RF4_BR_POIS, RF4_BR_GRAV)
+ dungeon(god_quest.DUNGEON_GOD).rules[4].mflags5 = RF5_BA_POIS
+ dungeon(god_quest.DUNGEON_GOD).rules[5].mflags7 = RF7_CAN_FLY
+
+
+ elseif player.pgod == GOD_TULKAS then
+
+ -- Tulkas dungeon is quite normal, possibly a bit boring to be honest. Maybe I should add something radical to it.
+ -- 'The house of Tulkas in the midmost of Valmar was a house of mirth and revelry. It sprang into the air with many storeys,
+ -- and had a tower of bronze and pillars of copper in a wide arcade'
+ -- W: but with lots of monsters
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_level = 20
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_chance = 120
+
+ -- L: floor is normal
+ dungeon(god_quest.DUNGEON_GOD).floor1 = 1
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[1] = 100
+
+ -- A: Granite walls
+ dungeon(god_quest.DUNGEON_GOD).fill_type1 = 56
+ dungeon(god_quest.DUNGEON_GOD).fill_percent1[1] = 100
+ dungeon(god_quest.DUNGEON_GOD).outer_wall = 58
+ dungeon(god_quest.DUNGEON_GOD).inner_wall = 57
+ dungeon(god_quest.DUNGEON_GOD).fill_method = 0
+
+ -- O: Loads of combat drops
+ dungeon(god_quest.DUNGEON_GOD).objs.treasure = 10
+ dungeon(god_quest.DUNGEON_GOD).objs.combat = 70
+ dungeon(god_quest.DUNGEON_GOD).objs.magic = 5
+ dungeon(god_quest.DUNGEON_GOD).objs.tools = 15
+
+ -- F: fairly standard
+ dungeon(god_quest.DUNGEON_GOD).flags1 = bor(DF1_NO_DESTROY, DF1_ADJUST_LEVEL_2)
+ dungeon(god_quest.DUNGEON_GOD).flags2 = DF2_ADJUST_LEVEL_PLAYER
+
+ -- R:
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[1].percent = 100
+
+ -- M: plenty demons please
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mflags3 = bor(RF3_DEMON, RF3_EVIL)
+
+
+ elseif player.pgod == GOD_MELKOR then
+
+ -- Melkors dungeon will be dark, fiery and stuff
+ -- Many many monsters! (but prob ADJUST_LEVEL_1_2)
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_level = 24
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_chance = 80
+
+
+ -- L: floor is dirt/mud/nether
+ dungeon(god_quest.DUNGEON_GOD).floor1 = 88
+ dungeon(god_quest.DUNGEON_GOD).floor2 = 94
+ dungeon(god_quest.DUNGEON_GOD).floor3 = 102
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[1] = 45
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[1] = 45
+ dungeon(god_quest.DUNGEON_GOD).floor_percent3[1] = 10
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[2] = 35
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[2] = 35
+ dungeon(god_quest.DUNGEON_GOD).floor_percent3[2] = 30
+
+ -- A: Granite walls to fill but glass walls for room perimeters (you can see the nasty monsters coming)
+ dungeon(god_quest.DUNGEON_GOD).fill_type1 = 188
+ dungeon(god_quest.DUNGEON_GOD).fill_percent1[1] = 100
+ dungeon(god_quest.DUNGEON_GOD).outer_wall = 188
+ dungeon(god_quest.DUNGEON_GOD).inner_wall = 57
+ dungeon(god_quest.DUNGEON_GOD).fill_method = 1
+
+ -- O: Even drops
+ dungeon(god_quest.DUNGEON_GOD).objs.treasure = 25
+ dungeon(god_quest.DUNGEON_GOD).objs.combat = 25
+ dungeon(god_quest.DUNGEON_GOD).objs.magic = 25
+ dungeon(god_quest.DUNGEON_GOD).objs.tools = 25
+
+ -- F: Small, lava rivers, nasty monsters hehehehehe
+ dungeon(god_quest.DUNGEON_GOD).flags1 = bor(DF1_SMALL, DF1_LAVA_RIVERS, DF1_ADJUST_LEVEL_1)
+ dungeon(god_quest.DUNGEON_GOD).flags2 = bor(DF2_ADJUST_LEVEL_1_2, DF2_ADJUST_LEVEL_PLAYER)
+
+ -- R: No restrictions on monsters here
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mode = 0
+ dungeon(god_quest.DUNGEON_GOD).rules[1].percent = 80
+
+ -- R: Apart from making sure we have some GOOD ones
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[2].percent = 20
+
+ -- M:
+ dungeon(god_quest.DUNGEON_GOD).rules[2].mflags3 = RF3_GOOD
+
+ elseif player.pgod == GOD_YAVANNA then
+
+ -- Yavannas dungeon will be very natural, tress and stuff.
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_level = 22
+ dungeon(god_quest.DUNGEON_GOD).min_m_alloc_chance = 100
+
+ -- L: floor is grass/flowers, plus dirt so not always regenerating quick!
+ dungeon(god_quest.DUNGEON_GOD).floor1 = 89
+ dungeon(god_quest.DUNGEON_GOD).floor2 = 199
+ dungeon(god_quest.DUNGEON_GOD).floor3 = 88
+ dungeon(god_quest.DUNGEON_GOD).floor_percent1[1] = 40
+ dungeon(god_quest.DUNGEON_GOD).floor_percent2[1] = 15
+ dungeon(god_quest.DUNGEON_GOD).floor_percent3[1] = 45
+
+ -- A: Tree walls to fill, small trees for inner walls
+ dungeon(god_quest.DUNGEON_GOD).fill_type1 = 96
+ dungeon(god_quest.DUNGEON_GOD).fill_percent1[1] = 100
+ dungeon(god_quest.DUNGEON_GOD).outer_wall = 202
+ dungeon(god_quest.DUNGEON_GOD).inner_wall = 96
+ dungeon(god_quest.DUNGEON_GOD).fill_method = 1
+
+ -- O: nt much combat.. tools where ransackers have tried to chop trees down.
+ dungeon(god_quest.DUNGEON_GOD).objs.treasure = 20
+ dungeon(god_quest.DUNGEON_GOD).objs.combat = 10
+ dungeon(god_quest.DUNGEON_GOD).objs.magic = 30
+ dungeon(god_quest.DUNGEON_GOD).objs.tools = 40
+
+ -- F: Natural looking
+ dungeon(god_quest.DUNGEON_GOD).flags1 = bor(DF1_NO_DOORS, DF1_WATER_RIVERS, DF1_NO_DESTROY, DF1_ADJUST_LEVEL_1, DF1_NO_RECALL)
+ dungeon(god_quest.DUNGEON_GOD).flags2 = bor(DF2_ADJUST_LEVEL_1_2, DF2_NO_SHAFT, DF2_NO_GENO, DF2_ADJUST_LEVEL_PLAYER)
+
+ -- R: Demons, Undead, non-living
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mode = 3
+ dungeon(god_quest.DUNGEON_GOD).rules[1].percent = 100
+
+ -- M:
+ dungeon(god_quest.DUNGEON_GOD).rules[1].mflags3 = bor(RF3_DEMON, RF3_UNDEAD, RF3_NONLIVING)
+
+ end
+
+ -- W: All dungeons are 5 levels deep, and created at 2/3 of the player clvl when the quest is given
+ dungeon(god_quest.DUNGEON_GOD).mindepth = god_quest.dun_mindepth
+ dungeon(god_quest.DUNGEON_GOD).maxdepth = god_quest.dun_maxdepth
+ dungeon(god_quest.DUNGEON_GOD).minplev = god_quest.dun_minplev
+
+end
+
+-- Calling this function returns the direction the dungeon is in from the players position at the time
+-- the quest was given, and also the direction from angband (if the player is worshipping Melkor) or lothlorien.
+function get_god_quest_axes()
+ local home, home_y_coord, home_x_coord, home_axis, home2, home2_y_coord, home2_x_coord, home2_axis, mydistance
+
+ -- different values for different gods...
+ if player.pgod ~= GOD_MELKOR then
+
+ -- one of the valar, "home" is lothlorien, home2 is Minas Arnor
+ home = "Bree"
+ home_y_coord = 21
+ home_x_coord = 34
+ home2 = "Minas Anor"
+ home2_y_coord = 56
+ home2_x_coord = 60
+ else
+ -- Melkor, "home" is angband, home2 is Barad-dur
+ home = "the Pits of Angband"
+ home_y_coord = 7
+ home_x_coord = 34
+ home2 = "the Land of Mordor"
+ home2_y_coord = 58
+ home2_x_coord = 65
+ end
+
+ home_axis = compass(home_y_coord, home_x_coord, god_quest.dung_y, god_quest.dung_x)
+ home2_axis = compass(home2_y_coord, home2_x_coord, god_quest.dung_y, god_quest.dung_x)
+
+ home_distance = approximate_distance(home_y_coord, home_x_coord, god_quest.dung_y, god_quest.dung_x)
+ home2_distance = approximate_distance(home2_y_coord, home2_x_coord, god_quest.dung_y, god_quest.dung_x)
+
+ return home, home_axis, home_distance, home2, home2_axis, home2_distance
+end
diff --git a/lib/scpt/gods.lua b/lib/scpt/gods.lua
new file mode 100644
index 00000000..014a4423
--- /dev/null
+++ b/lib/scpt/gods.lua
@@ -0,0 +1,26 @@
+add_hooks
+{
+ [HOOK_FOLLOW_GOD] = function(god, action)
+ if action == "ask" then
+ if not (god == GOD_MELKOR) then
+ local i = INVEN_WIELD
+ while i < INVEN_TOTAL do
+ -- 13 is ART_POWER
+ if player.inventory(i).name1 == 13 then
+ msg_print("The One Ring has corrupted you, and you are rejected.")
+ return TRUE
+ end
+ i = i + 1
+ end
+ end
+ end
+ return FALSE
+ end,
+ [HOOK_RECALC_SKILLS] = function()
+ if not (player.pgod == GOD_NONE) and (get_skill(SKILL_ANTIMAGIC) > 0) then
+ msg_print("You no longer believe.")
+ abandon_god(GOD_ALL)
+ end
+ return FALSE
+ end,
+}
diff --git a/lib/scpt/help.lua b/lib/scpt/help.lua
new file mode 100644
index 00000000..5350fec8
--- /dev/null
+++ b/lib/scpt/help.lua
@@ -0,0 +1,411 @@
+-- Ingame contextual help
+
+-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
+-----------------------Here comes the definition of help-----------------------
+-------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+ingame_help
+{
+ ["hook"] = HOOK_MOVE,
+ ["event"] = function(y, x) if cave(y, x).feat == FEAT_BETWEEN then return TRUE end end,
+ ["desc"] =
+ {
+ "Void Jumpgates can be entered by pressing the > key. They will transport",
+ "you to another jumpgate, but beware of the cold damage that might kill you.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_MOVE,
+ ["event"] = function(y, x) if cave(y, x).feat == FEAT_FOUNTAIN then return TRUE end end,
+ ["desc"] =
+ {
+ "Fountains are always magical. You can quaff from them by pressing H.",
+ "Beware that unlike potions they cannot be identified.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_MOVE,
+ ["event"] = function(y, x) if cave(y, x).o_idx ~= 0 then return TRUE end end,
+ ["desc"] =
+ {
+ "So you found your first item! Nice, eh? Now when you stumble across",
+ "objects, you can pick them up by pressing g, and if you are wondering",
+ "what they do, press I (then *, then the letter for the item) to get",
+ "some basic information. You may also want to identify them with scrolls,",
+ "staves, rods or spells.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_MOVE,
+ ["event"] = function(y, x) if (cave(y, x).feat >= FEAT_ALTAR_HEAD) and (cave(y, x).feat <= FEAT_ALTAR_TAIL) then return TRUE end end,
+ ["desc"] =
+ {
+ "Altars are the way to reach the Valar, powers of the world,",
+ "usualy called Gods. You can press O to become a follower.",
+ "Beware that once you follow a god, you are not allowed to change.",
+ "For an exact description of what gods do and want, read the documentation."
+ }
+}
+
+-- Beware this one, if Bree is moved from 21, 34 (y, x) on the wilderness map it will break
+ingame_help
+{
+ ["hook"] = HOOK_END_TURN,
+ ["event"] = function(y, x)
+ if ((player.wilderness_x ~= 34) or (player.wilderness_y ~= 21) and (player.astral == FALSE)) then return TRUE end
+ end,
+ ["desc"] =
+ {
+ "Ahh wilderness travel... The overview mode will allow you to travel",
+ "fast, but that comes to the cost of GREATLY increased food consumption.",
+ "So you should bring lots of food and really watch your hunger status.",
+ "To enter the overview mode, press < while in the wilderness.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_PLAYER_LEVEL,
+ ["event"] = function(y, x) if player.lev > 1 then return TRUE end end,
+ ["desc"] =
+ {
+ "Ok, so you now gained a level, and you have skill points to spend.",
+ "To do so simply press G to learn skills. Reading the documentation",
+ "about skills and abilities is also strongly recommended.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_MOVE,
+ ["event"] = function(y, x) if cave(y, x).feat == FEAT_MORE then return TRUE end end,
+ ["desc"] =
+ {
+ "Ah, this is a stair, or a way into something. Press > to enter it.",
+ "But be ready to fight what lies within, for it might not be too friendly.",
+ }
+}
+
+ingame_help
+{
+ ["callback"] = "monster_chat",
+ ["desc"] =
+ {
+ "Somebody is speaking to you it seems. You can talk back with the Y key.",
+ "This can lead to quests. You can also give items to 'monsters' with the y key.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_END_TURN,
+ ["event"] = function(y, x) return TRUE end,
+ ["desc"] =
+ {
+ "Welcome to ToME! I am the spirit of knowledge and my task is to help you",
+ "to get used to how to play. I have prepared a #vparchment#y for you to #vread#y.",
+ "Press r, then space then select it. You can also check the documentation",
+ "by pressing ? at (nearly) any time.",
+ "The first place you can explore is Barrow-downs. Go to the west of town",
+ "and you should see a #v>#y there.",
+ "If you miss any of this you can press ctrl+p to see your message log.",
+ "Now I must reveal your task here. You are on a quest to investigate",
+ "the dreadful tower of Dol Guldur in the Mirkwood forest to see what evil",
+ "lurks there, but beware, you are not yet ready.",
+ "If you do not want me to bother you any more with tips, press = then go",
+ "into the ToME options and deactivate the ingame_help option.",
+ "You can see your quest log by pressing ctrl+q. Now go to your destiny!",
+ }
+}
+
+ingame_help
+{
+ ["no_test"] = TRUE,
+ ["callback"] = "select_context",
+ ["fct"] = function(typ, name)
+ -- list of files for classes, { filename, anchor }
+ local t =
+ {
+ ["race"] =
+ {
+ ["Beorning"] = { "r_beorn.txt", 0 },
+ ["DeathMold"] = { "r_deathm.txt", 0 },
+ ["Dark-Elf"] = { "r_drkelf.txt", 0 },
+ ["Dunadan"] = { "r_dunad.txt", 0 },
+ ["Dwarf"] = { "r_dwarf.txt", 0 },
+ ["Elf"] = { "r_elf.txt", 0 },
+ ["Ent"] = { "r_ent.txt", 0 },
+ ["Gnome"] = { "r_gnome.txt", 0 },
+ ["Half-Elf"] = { "r_hafelf.txt", 0 },
+ ["Half-Ogre"] = { "r_hafogr.txt", 0 },
+ ["High-Elf"] = { "r_hielf.txt", 0 },
+ ["Hobbit"] = { "r_hobbit.txt", 0 },
+ ["Human"] = { "r_human.txt", 0 },
+ ["Kobold"] = { "r_kobold.txt", 0 },
+ ["Maia"] = { "r_maia.txt", 0 },
+ ["Orc"] = { "r_orc.txt", 0 },
+ ["Petty-Dwarf"] = { "r_pettyd.txt", 0 },
+ ["RohanKnight"] = { "r_rohank.txt", 0 },
+ ["Thunderlord"] = { "r_thlord.txt", 0 },
+ ["Troll"] = { "r_troll.txt", 0 },
+ ["Wood-Elf"] = { "r_wodelf.txt", 0 },
+ ["Yeek"] = { "r_yeek.txt", 0 },
+ },
+ ["subrace"] =
+ {
+ ["Barbarian"] = { "rm_barb.txt", 0 },
+ ["Classical"] = { "rm_class.txt", 0 },
+ ["Corrupted"] = { "rm_corru.txt", 0 },
+ ["Hermit"] = { "rm_herm.txt", 0 },
+ ["LostSoul"] = { "rm_lsoul.txt", 0 },
+ ["Skeleton"] = { "rm_skel.txt", 0 },
+ ["Spectre"] = { "rm_spec.txt", 0 },
+ ["Vampire"] = { "rm_vamp.txt", 0 },
+ ["Zombie"] = { "rm_zomb.txt", 0 },
+ },
+ ["class"] =
+ {
+ ["Alchemist"] = { "c_alchem.txt", 0 },
+ ["Archer"] = { "c_archer.txt", 0 },
+ ["Assassin"] = { "c_assass.txt", 0 },
+ ["Axemaster"] = { "c_axemas.txt", 0 },
+ ["Bard"] = { "c_bard.txt", 0 },
+ ["Dark-Priest"] = { "c_pr_drk.txt", 0 },
+ ["Demonologist"] = { "c_demono.txt", 0 },
+ ["Druid"] = { "c_druid.txt", 0 },
+ ["Geomancer"] = { "c_geoman.txt", 0 },
+ ["Haftedmaster"] = { "c_hafted.txt", 0 },
+ ["Loremaster"] = { "c_lorema.txt", 0 },
+ ["Mage"] = { "c_mage.txt", 0 },
+ ["Mimic"] = { "c_mimic.txt", 0 },
+ ["Mindcrafter"] = { "c_mindcr.txt", 0 },
+ ["Monk"] = { "c_monk.txt", 0 },
+ ["Necromancer"] = { "c_necro.txt", 0 },
+ ["Paladin"] = { "c_palad.txt", 0 },
+ ["Polearmmaster"] = { "c_polear.txt", 0 },
+ ["Possessor"] = { "c_posses.txt", 0 },
+ ["Priest"] = { "c_priest.txt", 0 },
+ ["Priest(Eru)"] = { "c_pr_eru.txt", 0 },
+ ["Priest(Manwe)"] = { "c_pr_man.txt", 0 },
+ ["Ranger"] = { "c_ranger.txt", 0 },
+ ["Rogue"] = { "c_rogue.txt", 0 },
+ ["Runecrafter"] = { "c_runecr.txt", 0 },
+ ["Sorceror"] = { "c_sorcer.txt", 0 },
+ ["Summoner"] = { "c_summon.txt", 0 },
+ ["Swordmaster"] = { "c_swordm.txt", 0 },
+ ["Symbiant"] = { "c_symbia.txt", 0 },
+ ["Thaumaturgist"] = { "c_thaum.txt", 0 },
+ ["Unbeliever"] = { "c_unbel.txt", 0 },
+ ["Warper"] = { "c_warper.txt", 0 },
+ ["Warrior"] = { "c_warrio.txt", 0 },
+ },
+ ["god"] =
+ {
+ ["Eru Iluvatar"] = { "g_eru.txt", 0 },
+ ["Manwe Sulimo"] = { "g_manwe.txt", 0 },
+ ["Tulkas"] = { "g_tulkas.txt", 0 },
+ ["Melkor Bauglir"] = { "g_melkor.txt", 0 },
+ ["Yavanna Kementari"] = { "g_yavann.txt", 0 },
+ },
+ ["skill"] =
+ {
+ ["Air"] = { "skills.txt", 27 },
+ ["Alchemy"] = { "skills.txt", 49 },
+ ["Antimagic"] = { "skills.txt", 50 },
+ ["Archery"] = { "skills.txt", 08 },
+ ["Axe-mastery"] = { "skills.txt", 05 },
+ ["Backstab"] = { "skills.txt", 18 },
+ ["Barehand-combat"] = { "skills.txt", 13 },
+ ["Boomerang-mastery"] = { "skills.txt", 12 },
+ ["Boulder-throwing"] = { "skills.txt", 58 },
+ ["Bow-mastery"] = { "skills.txt", 10 },
+ ["Combat"] = { "skills.txt", 01 },
+ ["Conveyance"] = { "skills.txt", 30 },
+ ["Corpse-preservation"] = { "skills.txt", 44 },
+ ["Critical-hits"] = { "skills.txt", 04 },
+ ["Crossbow-mastery"] = { "skills.txt", 11 },
+ ["Demonology"] = { "skills.txt", 52 },
+ ["Disarming"] = { "skills.txt", 16 },
+ ["Divination"] = { "skills.txt", 31 },
+ ["Dodging"] = { "skills.txt", 20 },
+ ["Druidistic"] = { "skills.txt", 40 },
+ ["Earth"] = { "skills.txt", 28 },
+ ["Fire"] = { "skills.txt", 25 },
+ ["Geomancy"] = { "skills.txt", 60 },
+ ["Hafted-mastery"] = { "skills.txt", 06 },
+ ["Magic"] = { "skills.txt", 21 },
+ ["Magic-Device"] = { "skills.txt", 54 },
+ ["Mana"] = { "skills.txt", 24 },
+ ["Meta"] = { "skills.txt", 29 },
+ ["Mimicry"] = { "skills.txt", 47 },
+ ["Mind"] = { "skills.txt", 33 },
+ ["Mindcraft"] = { "skills.txt", 41 },
+ ["Monster-lore"] = { "skills.txt", 42 },
+ ["Music"] = { "skills.txt", 59 },
+ ["Nature"] = { "skills.txt", 34 },
+ ["Necromancy"] = { "skills.txt", 35 },
+ ["Polearm-mastery"] = { "skills.txt", 07 },
+ ["Possession"] = { "skills.txt", 45 },
+ ["Prayer"] = { "skills.txt", 39 },
+ ["Runecraft"] = { "skills.txt", 36 },
+ ["Sling-mastery"] = { "skills.txt", 09 },
+ ["Sneakiness"] = { "skills.txt", 14 },
+ ["Spell-power"] = { "skills.txt", 22 },
+ ["Spirituality"] = { "skills.txt", 38 },
+ ["Sorcery"] = { "skills.txt", 23 },
+ ["Stealing"] = { "skills.txt", 19 },
+ ["Stealth"] = { "skills.txt", 15 },
+ ["Stunning-blows"] = { "skills.txt", 53 },
+ ["Summoning"] = { "skills.txt", 43 },
+ ["Sword-mastery"] = { "skills.txt", 03 },
+ ["Symbiosis"] = { "skills.txt", 46 },
+ ["Temporal"] = { "skills.txt", 32 },
+ ["Thaumaturgy"] = { "skills.txt", 37 },
+ ["Udun"] = { "skills.txt", 48 },
+ ["Weaponmastery"] = { "skills.txt", 02 },
+ ["Water"] = { "skills.txt", 26 },
+ },
+ ["ability"] =
+ {
+ ["Spread blows"] = { "ability.txt", 02 },
+ ["Tree walking"] = { "ability.txt", 03 },
+ ["Perfect casting"] = { "ability.txt", 04 },
+ ["Extra Max Blow(1)"] = { "ability.txt", 05 },
+ ["Extra Max Blow(2)"] = { "ability.txt", 06 },
+ ["Ammo creation"] = { "ability.txt", 07 },
+ ["Touch of death"] = { "ability.txt", 08 },
+ ["Artifact Creation"] = { "ability.txt", 09 },
+ ["Far reaching attack"] = { "ability.txt", 10 },
+ ["Trapping"] = { "ability.txt", 11 },
+ ["Undead Form"] = { "ability.txt", 12 },
+ },
+ }
+
+ if t[typ][name] then ingame_help_doc(t[typ][name][1], t[typ][name][2])
+ else ingame_help_doc("help.hlp", 0)
+ end
+ end,
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_IDENTIFY,
+ ["event"] = function(i, mode)
+ if mode == "full" then
+ local obj = get_object(i)
+ local f1, f2, f3, f4, f5, esp = object_flags(obj)
+ if band(f5, TR5_SPELL_CONTAIN) ~= 0 then return TRUE end
+ end
+ end,
+ ["desc"] =
+ {
+ "Ah, an item that can contain a spell. To use it you must have some levels of",
+ "Magic skill and then you get the option to copy a spell when pressing m.",
+ "Then just select which spell to copy and to which object. Note that doing so",
+ "is permanent; the spell cannot be removed or changed later.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_BATERIE then return TRUE end end,
+ ["desc"] =
+ {
+ "Ah, an essence! Those magical containers stores energies. They are used",
+ "with the Alchemy skill to create or modify the powers of items.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_RUNE1 or obj.tval == TV_RUNE2 then return TRUE end end,
+ ["desc"] =
+ {
+ "Ah, a rune! Runes are used with the Runecraft skill to allow you to",
+ "create spells on your own.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_ROD_MAIN then return TRUE end end,
+ ["desc"] =
+ {
+ "This is a rod. You will need to attach a rod tip to it before you",
+ "can use it. This main part of the rod may give the rod bonuses",
+ "like quicker charging time, or a larger capacity for charges.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_ROD then return TRUE end end,
+ ["desc"] =
+ {
+ "You've found a rod-tip! You will need to attach it to a rod base",
+ "before you can use it. Once it has been attatched (use the 'z' key)",
+ "you cannot unattach it! The rod tip will determine the effect of",
+ "the rod. To use your rod, 'z'ap it once it has been assembled.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_TRAPKIT then return TRUE end end,
+ ["desc"] =
+ {
+ "Ooooh, a trapping kit. If you have ability in the trapping skill,",
+ "you can lay this trap (via the 'm' key) to harm unsuspecting foes.",
+ "You'll generally need either some ammo or magic device depending",
+ "on the exact type of trap kit.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_RECALC_SKILLS,
+ ["event"] = function() if game.started and (get_melee_skills() > 1) then return TRUE end end,
+ ["desc"] =
+ {
+ "Ah, you now possess more than one melee type. To switch between them press m",
+ "and select the switch melee type option.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_GET,
+ ["event"] = function(obj, idx) if obj.tval == TV_WAND or obj.tval == TV_STAFF then return TRUE end end,
+ ["desc"] =
+ {
+ "You've found a magical device, either a staff or a wand. Each staff",
+ "contains a spell, often from one of the primary magic schools. There",
+ "is a lot of information you can find about this object if you identify",
+ "it and 'I'nspect it. Check the help file on Magic for more about these.",
+ }
+}
+
+ingame_help
+{
+ ["hook"] = HOOK_PLAYER_LEVEL,
+ ["event"] = function(y, x) if player.lev >= 20 then return TRUE end end,
+ ["desc"] =
+ {
+ "I see you are now at least level 20. Nice! If you want to gloat about your",
+ "character you could press 'C' then 'f' to make a character dump and post it to",
+ "http://angband.oook.cz/ where it will end up in the ladder.",
+ }
+}
diff --git a/lib/scpt/init.lua b/lib/scpt/init.lua
new file mode 100644
index 00000000..a6f3f8ab
--- /dev/null
+++ b/lib/scpt/init.lua
@@ -0,0 +1,46 @@
+--
+-- This file is loaded at the initialisation of ToME
+--
+
+-- Load the class specific stuff
+tome_dofile("player.lua")
+
+-- Load the ingame contextual help
+tome_dofile("help.lua")
+
+-- let the store specific stuff happen!
+tome_dofile("stores.lua")
+
+-- Add various 'U' powers
+tome_dofile("powers.lua")
+
+-- Add the mimic shapes
+tome_dofile("mimic.lua")
+
+-- Add the corruptions
+tome_dofile("corrupt.lua")
+
+-- Add the mkey activations
+tome_dofile("mkeys.lua")
+
+-- Add the schools of magic
+tome_dofile("spells.lua")
+
+-- Add god stuff
+tome_dofile("gods.lua")
+
+-- Add some quests
+tome_dofile("bounty.lua")
+tome_dofile("god.lua")
+tome_dofile("fireprof.lua")
+tome_dofile("library.lua")
+
+-- Add joke stuff
+tome_dofile("drunk.lua")
+tome_dofile("joke.lua")
+
+-- Some tests, if the file is not present, this is fine
+tome_dofile_anywhere(ANGBAND_DIR_SCPT, "dg_test.lua", FALSE)
+
+-- A nice custom intro :)
+tome_dofile("intro.lua")
diff --git a/lib/scpt/intro.lua b/lib/scpt/intro.lua
new file mode 100644
index 00000000..2c4d3def
--- /dev/null
+++ b/lib/scpt/intro.lua
@@ -0,0 +1,105 @@
+function drop_text_left(c, str, y, o)
+ local i = strlen(str)
+ local x = 39 - (strlen(str) / 2) + o
+ while (i > 0)
+ do
+ local a = 0
+ local time = 0
+
+ if (strbyte(str, i) ~= strbyte(" ", 1)) then
+ while (a < x + i - 1)
+ do
+ Term_putch(a - 1, y, c, 32)
+ Term_putch(a, y, c, strbyte(str, i))
+ time = time + 1
+ if time >= 4 then
+ Term_xtra(TERM_XTRA_DELAY, 1)
+ time = 0
+ end
+ Term_redraw_section(a - 1, y, a, y)
+ a = a + 1
+
+ inkey_scan = TRUE
+ if (inkey() ~= 0) then
+ return TRUE
+ end
+ end
+ end
+
+ i = i - 1
+ end
+ return FALSE
+end
+
+function drop_text_right(c, str, y, o)
+ local x = 39 - (strlen(str) / 2) + o
+ local i = 1
+ while (i <= strlen(str))
+ do
+ local a = 79
+ local time = 0
+
+ if (strbyte(str, i) ~= strbyte(" ", 1)) then
+ while (a >= x + i - 1)
+ do
+ Term_putch(a + 1, y, c, 32)
+ Term_putch(a, y, c, strbyte(str, i))
+ time = time + 1
+ if time >= 4 then
+ Term_xtra(TERM_XTRA_DELAY, 1)
+ time = 0
+ end
+ Term_redraw_section(a, y, a + 1, y)
+ a = a - 1
+
+ inkey_scan = TRUE
+ if (inkey() ~= 0) then
+ return TRUE
+ end
+ end
+ end
+
+ i = i + 1
+ end
+ return FALSE
+end
+
+function tome_intro()
+ screen_save()
+ Term_clear()
+
+ if (TRUE == drop_text_left(TERM_L_BLUE, "Art thou an adventurer,", 10, 0)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_L_BLUE, "One who passes through the waterfalls we call danger", 11, -1)) then screen_load() return end
+ if (TRUE == drop_text_left(TERM_L_BLUE, "to find the true nature of the legends beyond them?", 12, 0)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_L_BLUE, "If this is so, then seeketh me.", 13, -1)) then screen_load() return end
+
+ if (TRUE == drop_text_left(TERM_WHITE, "[Press any key to continue]", 23, -1)) then screen_load() return end
+
+ Term_putch(0, 0, TERM_DARK, 32)
+ inkey_scan = FALSE
+ inkey()
+
+ Term_clear()
+
+ if (TRUE == drop_text_left(TERM_L_BLUE, "DarkGod", 8, 0)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_WHITE, "in collaboration with", 9, -1)) then screen_load() return end
+ if (TRUE == drop_text_left(TERM_L_GREEN, "Eru Iluvatar,", 10, 0)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_L_GREEN, "Manwe", 11, -1)) then screen_load() return end
+ if (TRUE == drop_text_left(TERM_WHITE, "and", 12, 0)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_L_GREEN, "All the T.o.M.E. contributors(see credits.txt)", 13, -1)) then screen_load() return end
+
+ if (TRUE == drop_text_left(TERM_WHITE, "present", 15, 1)) then screen_load() return end
+ if (TRUE == drop_text_right(TERM_YELLOW, "T.o.M.E.", 16, 0)) then screen_load() return end
+
+ if (TRUE == drop_text_left(TERM_WHITE, "[Press any key to continue]", 23, -1)) then screen_load() return end
+ Term_putch(0, 0, TERM_DARK, 32)
+
+ inkey_scan = FALSE
+
+ inkey()
+
+ screen_load()
+ return
+end
+
+add_hook_script(HOOK_INIT, "tome_intro", "lua_intro_init")
diff --git a/lib/scpt/joke.lua b/lib/scpt/joke.lua
new file mode 100644
index 00000000..2d87b651
--- /dev/null
+++ b/lib/scpt/joke.lua
@@ -0,0 +1,31 @@
+-- Place a monster in a good spot
+function gen_joke_place_monster(r_idx)
+ local try = 1000
+ local x
+ local y
+ while try > 0 do
+ x = randint(cur_hgt - 4) + 2
+ y = randint(cur_wid - 4) + 2
+ if not (0 == place_monster_one(y, x, r_idx, 0, FALSE, MSTATUS_ENEMY)) then
+ return
+ end
+ try = try - 1
+ end
+end
+
+-- Check if a special joke monster can be generated here
+function gen_joke_monsters()
+ if joke_monsters == FALSE then
+ return
+ end
+
+ -- Neil
+ if (current_dungeon_idx == 20) and (dun_level == 72) then
+ neil = test_monster_name("Neil, the Sorceror")
+ m_allow_special[neil + 1] = TRUE
+ gen_joke_place_monster(neil)
+ m_allow_special[neil + 1] = FALSE
+ end
+end
+
+add_hook_script(HOOK_LEVEL_END_GEN, "gen_joke_monsters", "gen_joke_monsters")
diff --git a/lib/scpt/library.lua b/lib/scpt/library.lua
new file mode 100644
index 00000000..99c2c0f4
--- /dev/null
+++ b/lib/scpt/library.lua
@@ -0,0 +1,513 @@
+-- Library quest in Minas Anor
+
+-- Partially based on Fireproofing quest
+
+library_quest = {}
+
+-- The map definition itself
+library_quest.MAP =
+[[#!map
+
+# Permanent wall
+F:X:63:3
+
+# Granite Wall
+F:#:57:3
+
+# Cobblestone Road
+F:O:200:3
+
+# Floor
+F:.:1:3
+
+# Lich
+F:l:200:3:518
+
+# Master lich
+F:L:200:3:658
+
+# Quest exit
+F:<:6:3
+
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+D:X###############################################################X
+D:X#<OlOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#O#.###.#.###.#.###.#.###.#.###.O.###.#.###.#.###.#.###.#.###O#X
+D:X#OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL#X
+D:X###############################################################X
+D:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# Starting position
+P:4:4
+]]
+
+-- Map helper
+library_quest.place_random = function(minY, minX, maxY, maxX, monster)
+ y = randint(maxY - minY + 1) + minY
+ x = randint(maxX - minX + 1) + minX
+ return place_monster_one(y, x, monster, 0, TRUE, MSTATUS_ENEMY)
+end
+
+-- Book creation helpers
+library_quest.bookable_spells =
+{
+ MANATHRUST, DELCURSES,
+ GLOBELIGHT, FIREGOLEM, FIREFLASH, FIREWALL,
+ GEYSER, VAPOR, ENTPOTION,
+ NOXIOUSCLOUD, POISONBLOOD,
+ STONESKIN, DIG,
+ RECHARGE, DISPERSEMAGIC,
+ BLINK, DISARM, TELEPORT,
+ SENSEMONSTERS, SENSEHIDDEN, REVEALWAYS, IDENTIFY, VISION,
+ MAGELOCK, SLOWMONSTER, ESSENCESPEED,
+ CHARM, CONFUSE, ARMOROFFEAR, STUN,
+ GROWTREE, HEALING, RECOVERY,
+ ERU_SEE, ERU_LISTEN,
+ MANWE_BLESS, MANWE_SHIELD,
+ YAVANNA_CHARM_ANIMAL, YAVANNA_GROW_GRASS, YAVANNA_TREE_ROOTS,
+ TULKAS_AIM, TULKAS_SPIN,
+ MELKOR_CURSE, MELKOR_CORPSE_EXPLOSION,
+ DRAIN
+}
+
+library_quest.get_term_size = function()
+ local width = 0
+ local height = 0
+ ret, width, height = Term_get_size(width, height)
+ return width, height
+end
+
+library_quest.book_slots_left = function()
+ if school_book[61][1] == -1 then
+ return 3
+ elseif school_book[61][2] == -1 then
+ return 2
+ elseif school_book[61][3] == -1 then
+ return 1
+ else
+ return 0
+ end
+end
+
+library_quest.book_contains_spell = function(spell)
+ if school_book[61][1] == spell then
+ return TRUE
+ elseif school_book[61][2] == spell then
+ return TRUE
+ elseif school_book[61][3] == spell then
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+library_quest.add_spell = function(spell)
+ if school_book[61][1] == -1 then
+ school_book[61][1] = spell
+ return TRUE
+ elseif school_book[61][2] == -1 then
+ school_book[61][2] = spell
+ return TRUE
+ elseif school_book[61][3] == -1 then
+ school_book[61][3] = spell
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+library_quest.remove_spell = function(spell)
+ if school_book[61][1] == spell then
+ school_book[61][1] = school_book[61][2]
+ school_book[61][2] = school_book[61][3]
+ school_book[61][3] = -1
+ return TRUE
+ elseif school_book[61][2] == spell then
+ school_book[61][2] = school_book[61][3]
+ school_book[61][3] = -1
+ return TRUE
+ elseif school_book[61][3] == spell then
+ school_book[61][3] = -1
+ return TRUE
+ else
+ return FALSE
+ end
+end
+
+-- Print a spell (taken from s_aux)
+function library_quest.print_spell(color, y, spl)
+ local x, index, sch, size, s
+
+ x = 0
+ size = 0
+ book = 255
+ obj = nil
+
+ -- Hack if the book is 255 it is a random book
+ if book == 255 then
+ school_book[book] = {spl}
+ end
+
+ -- Parse all spells
+ for index, s in school_book[book] do
+ local lvl, na = get_level_school(s, 50, -50)
+ local xx, sch_str
+
+ xx = nil
+ sch_str = ""
+ for index, sch in __spell_school[s] do
+ if xx then
+ sch_str = sch_str.."/"..school(sch).name
+ else
+ xx = 1
+ sch_str = sch_str..school(sch).name
+ end
+ end
+
+ if s == spl then
+ if na then
+ c_prt(color, format("%-20s%-16s %3s %4s %3d%s %s", spell(s).name, sch_str, na, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x)
+ else
+ c_prt(color, format("%-20s%-16s %3d %4s %3d%s %s", spell(s).name, sch_str, lvl, get_mana(s), spell_chance(s), "%", __spell_info[s]()), y, x)
+ end
+ y = y + 1
+ size = size + 1
+ end
+ end
+ return y
+end
+
+-- spell selection routines inspired by skills.c
+library_quest.print_spells = function(first, current)
+ Term_clear()
+ width, height = library_quest.get_term_size()
+ slots = library_quest.book_slots_left()
+
+ c_prt(TERM_WHITE, "Book Creation Screen", 0, 0);
+ c_prt(TERM_WHITE, "Up/Down to move, Right/Left to modify, I to describe, Esc to Save/Cancel", 1, 0);
+
+ if slots == 0 then
+ c_prt(TERM_L_RED, "The book can hold no more spells.", 2, 0);
+ elseif slots == 1 then
+ c_prt(TERM_L_BLUE, "The book can hold 1 more spell.", 2, 0);
+ else
+ c_prt(TERM_L_BLUE, "The book can hold "..slots.." more spells.", 2, 0);
+ end
+
+ row = 3;
+ for index, spell in library_quest.bookable_spells do
+ if index >= first then
+ if index == current then
+ color = TERM_GREEN
+ elseif library_quest.book_contains_spell(spell) == TRUE then
+ color = TERM_WHITE
+ else
+ color = TERM_ORANGE
+ end
+ library_quest.print_spell(color, row, spell)
+
+ if row == height - 1 then
+ return
+ end
+ row = row + 1
+ end
+ end
+end
+
+library_quest.fill_book = function()
+ -- Always start with a cleared book
+ school_book[61] = {-1, -1, -1}
+
+ screen_save()
+ width, height = library_quest.get_term_size()
+ -- room for legend
+ margin = 3
+
+ first = 1
+ current = 1
+ done = FALSE
+
+ while done == FALSE do
+ library_quest.print_spells(first, current)
+
+ inkey_scan = FALSE
+ inkey_base = TRUE
+ char = inkey()
+ dir = get_keymap_dir(char)
+ if char == ESCAPE then
+ if library_quest.book_slots_left() == 0 then
+ flush()
+ done = get_check("Really create the book?")
+ else
+ done = TRUE
+ end
+ elseif char == strbyte('\r') then
+ -- TODO: make tree of schools
+ elseif char == strbyte('n') then
+ current = current + height
+ elseif char == strbyte('p') then
+ current = current - height
+ elseif char == strbyte('I') then
+ print_spell_desc(library_quest.bookable_spells[current], 0)
+ inkey()
+ elseif dir == 2 then
+ current = current + 1
+ elseif dir == 8 then
+ current = current - 1
+ elseif dir == 6 then
+ if library_quest.book_contains_spell(library_quest.bookable_spells[current]) == FALSE then
+ library_quest.add_spell(library_quest.bookable_spells[current])
+ end
+ elseif dir == 4 then
+ library_quest.remove_spell(library_quest.bookable_spells[current])
+ end
+ total = getn(library_quest.bookable_spells)
+ if current > total then
+ current = total
+ elseif current < 1 then
+ current = 1
+ end
+
+ if current > (first + height - margin - 1) then
+ first = current - height + margin + 1
+ elseif first > current then
+ first = current
+ end
+ end
+
+ screen_load()
+end
+
+-- Quest data and hooks
+add_quest
+{
+ ["global"] = "LIBRARY_QUEST",
+ ["name"] = "Library quest",
+ ["desc"] = function()
+ -- Quest taken
+ if (quest(LIBRARY_QUEST).status == QUEST_STATUS_TAKEN) then
+ print_hook("#####yAn Old Mages Quest! (Danger Level: 35)\n")
+ print_hook("Make the library safe for the old mage in Minas Anor.\n")
+ print_hook("\n")
+ -- Quest done, book not gotten yet
+ elseif (quest(LIBRARY_QUEST).status == QUEST_STATUS_COMPLETED) then
+ print_hook("#####yAn Old Mages Quest!\n")
+ print_hook("You have made the library safe for the old mage in Minas Anor.\n")
+ print_hook("Perhaps you should see about a reward.\n")
+ print_hook("\n")
+ end
+ end,
+ ["level"] = 35,
+ ["data"] =
+ {
+ ["school_book[61][1]"] = -1,
+ ["school_book[61][2]"] = -1,
+ ["school_book[61][3]"] = -1
+ },
+ ["hooks"] =
+ {
+ -- Start the game without the quest, need to request it
+ [HOOK_BIRTH_OBJECTS] = function()
+ quest(LIBRARY_QUEST).status = QUEST_STATUS_UNTAKEN
+ school_book[61] = {-1, -1, -1}
+ end,
+
+ [HOOK_GEN_QUEST] = function()
+ -- Only if player doing this quest
+ if (player.inside_quest ~= LIBRARY_QUEST) then
+ return FALSE
+ end
+
+ load_map(library_quest.MAP, 2, 2)
+ level_flags2 = DF2_NO_GENO
+
+ -- generate the Liches 518
+ liches = damroll(4, 2) -- plus one on the map
+ while(liches > 0) do
+ if 0 < library_quest.place_random(4, 4, 14, 37, 518) then
+ liches = liches - 1
+ end
+ end
+
+ -- generate the Monastic liches 611
+ liches = damroll(1, 2)
+ while(liches > 0) do
+ if 0 < library_quest.place_random(14, 34, 37, 67, 611) then
+ liches = liches - 1
+ end
+ end
+
+ -- generate more Monastic liches 611
+ liches = damroll(1, 2) - 1
+ while(liches > 0) do
+ if 0 < library_quest.place_random(4, 34, 14, 67, 611) then
+ liches = liches - 1
+ end
+ end
+
+ -- generate even more Monastic liches 611
+ liches = damroll(1, 2) - 1
+ while(liches > 0) do
+ if 0 < library_quest.place_random(14, 4, 37, 34, 611) then
+ liches = liches - 1
+ end
+ end
+
+ -- Flesh golem 256
+ golems = 2
+ while(golems > 0) do
+ if 0 < library_quest.place_random(10, 10, 37, 67, 256) then
+ golems = golems - 1
+ end
+ end
+
+ -- Clay golem 261
+ golems = 2
+ while(golems > 0) do
+ if 0 < library_quest.place_random(10, 10, 37, 67, 261) then
+ golems = golems - 1
+ end
+ end
+
+ -- Iron golem 367
+ golems = 2
+ while(golems > 0) do
+ if 0 < library_quest.place_random(10, 10, 37, 67, 367) then
+ golems = golems - 1
+ end
+ end
+
+ -- Mithril Golem 464
+ golems = 1
+ while(golems > 0) do
+ if 0 < library_quest.place_random(10, 10, 37, 67, 464) then
+ golems = golems - 1
+ end
+ end
+
+ -- one Master lich is on the map
+
+ return TRUE
+ end,
+ [HOOK_STAIR] = function()
+ local ret
+
+ -- only ask this if player about to go up stairs of quest and hasn't won yet
+ if (player.inside_quest ~= LIBRARY_QUEST) or (quest(LIBRARY_QUEST).status == QUEST_STATUS_COMPLETED) then
+ return FALSE
+ end
+
+ if cave(player.py, player.px).feat ~= FEAT_LESS then return end
+
+ -- flush all pending input
+ flush()
+
+ -- confirm
+ ret = get_check("Really abandon the quest?")
+
+ -- if yes, then
+ if ret == TRUE then
+ -- fail the quest
+ quest(LIBRARY_QUEST).status = QUEST_STATUS_FAILED
+ return FALSE
+ else
+ -- if no, they stay in the quest
+ return TRUE
+ end
+ end,
+ [HOOK_MONSTER_DEATH] = function()
+ -- if they're in the quest and haven't won, continue
+ if (player.inside_quest ~= LIBRARY_QUEST) or (quest(LIBRARY_QUEST).status == QUEST_STATUS_COMPLETED) then
+ return FALSE
+ end
+
+ i = 1
+ count = -1
+ while i <= m_max do
+ local monster = m_list[i]
+ if (monster.r_idx > 0) and (monster.status <= MSTATUS_ENEMY) then
+ count = count + 1
+ end
+ i = i + 1
+ end
+
+ if count == 0 then
+ quest(LIBRARY_QUEST).status = QUEST_STATUS_COMPLETED
+ msg_print(TERM_YELLOW, "The library is safe now.")
+ end
+ end,
+ },
+}
+
+-- Library store action
+add_building_action
+{
+ ["index"] = 61,
+ ["action"] = function()
+ -- the quest hasn't been requested already, right?
+ if quest(LIBRARY_QUEST).status == QUEST_STATUS_UNTAKEN then
+ -- quest has been taken now
+ quest(LIBRARY_QUEST).status = QUEST_STATUS_TAKEN
+
+ -- issue instructions
+ msg_print("I need get some stock from my main library, but it is infested with monsters!")
+ msg_print("Please use the side entrance and vanquish the intruders for me.")
+
+ return TRUE, FALSE, TRUE
+ -- if quest completed
+ elseif (quest(LIBRARY_QUEST).status == QUEST_STATUS_COMPLETED) then
+ msg_print("Thank you! Let me make a special book for you.")
+ msg_print("Tell me three spells and I will write them in the book.")
+ library_quest.fill_book()
+ if library_quest.book_slots_left() == 0 then
+ quest(LIBRARY_QUEST).status = QUEST_STATUS_REWARDED
+ book = create_object(TV_BOOK, 61)
+ book.art_name = quark_add(player_name())
+ book.found = OBJ_FOUND_REWARD
+ set_aware(book)
+ set_known(book)
+ inven_carry(book, FALSE)
+ end
+
+ -- if the player asks for a quest when they already have it, but haven't failed it, give them some extra instructions
+ elseif (quest(LIBRARY_QUEST).status == QUEST_STATUS_TAKEN) then
+ msg_print("Please use the side entrance and vanquish the intruders for me.")
+
+ -- quest failed or completed, then give no more quests
+ elseif (quest(LIBRARY_QUEST).status == QUEST_STATUS_FAILED) or (quest(LIBRARY_QUEST).status == QUEST_STATUS_REWARDED) then
+ msg_print("I have no more quests for you.")
+ end
+ return TRUE
+ end,
+}
diff --git a/lib/scpt/mimic.lua b/lib/scpt/mimic.lua
new file mode 100644
index 00000000..be969ad5
--- /dev/null
+++ b/lib/scpt/mimic.lua
@@ -0,0 +1,385 @@
+-- Define the various possible mimic shapes
+
+-- Nature shapes
+add_mimic_shape
+{
+ ["name"] = "Mouse",
+ ["obj_name"] = "Mouse Fur",
+ ["desc"] = "Mice are small, fast and very stealthy",
+ ["realm"] = "nature",
+ ["level"] = 1,
+ ["rarity"] = 10,
+ ["duration"] = {20, 40},
+ ["calc"] = function ()
+ -- Mice run!
+ player.pspeed = player.pspeed + 5 + (player.mimic_level / 7)
+
+ -- They can crtawl under your armor to hit you ;)
+ player.to_h = player.to_h + 10 + (player.mimic_level / 5)
+ player.dis_to_h = player.dis_to_h + 10 + (player.mimic_level / 5)
+
+ -- But they are not very powerfull
+ player.to_d = player.to_d / 5
+ player.dis_to_d = player.dis_to_d / 5
+
+ -- But they are stealthy
+ player.skill_stl = player.skill_stl + 10 + (player.mimic_level / 5)
+
+ -- Stat mods
+ player.modify_stat(A_STR, -5)
+ player.modify_stat(A_DEX, 3)
+ player.modify_stat(A_CON, 1)
+
+ end,
+ ["power"] = function()
+ if player.mimic_level >= 30 then
+ player.add_power(POWER_INVISIBILITY)
+ end
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Eagle",
+ ["obj_name"] = "Feathers Cloak",
+ ["desc"] = "Eagles are master of the air, good hunters with excellent vision.",
+ ["realm"] = "nature",
+ ["level"] = 10,
+ ["rarity"] = 30,
+ ["duration"] = {10, 50},
+ ["calc"] = function ()
+ player.ffall = TRUE
+ player.pspeed = player.pspeed + 2 + (player.mimic_level / 6)
+
+ player.modify_stat(A_STR, -3)
+ player.modify_stat(A_DEX, 2 + (player.mimic_level / 15))
+ player.modify_stat(A_CON, 4 + (player.mimic_level / 20))
+ player.modify_stat(A_INT, -1)
+ player.modify_stat(A_WIS, 1)
+ player.modify_stat(A_CHR, -1)
+
+ if player.mimic_level >= 20 then player.fly = TRUE end
+ if player.mimic_level >= 20 then player.see_inv = TRUE end
+ if player.mimic_level >= 25 then player.free_act = TRUE end
+ if player.mimic_level >= 30 then player.resist_elec = TRUE end
+ if player.mimic_level >= 40 then player.sh_elec = TRUE end
+
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Wolf",
+ ["obj_name"] = "Wolf Pelt",
+ ["desc"] = "Wolves are masters of movement, strong and have excellent eyesight.",
+ ["realm"] = "nature",
+ ["level"] = 20,
+ ["rarity"] = 40,
+ ["duration"] = {10, 50},
+ ["calc"] = function ()
+ player.modify_stat(A_STR, 2 + (player.mimic_level / 20))
+ player.modify_stat(A_DEX, 3 + (player.mimic_level / 20))
+ player.modify_stat(A_INT, -3)
+ player.modify_stat(A_CHR, -2)
+
+ player.pspeed = player.pspeed + 10 + (player.mimic_level / 5)
+
+ player.free_act = TRUE
+ player.resist_fear = TRUE
+
+ if player.mimic_level >= 10 then player.resist_cold = TRUE end
+ if player.mimic_level >= 15 then player.see_inv = TRUE end
+ if player.mimic_level >= 30 then player.resist_dark = TRUE end
+ if player.mimic_level >= 35 then player.resist_conf = TRUE end
+
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Spider",
+ ["obj_name"] = "Spider Web",
+ ["desc"] = "Spiders are clever and become good climbers.",
+ ["realm"] = "nature",
+ ["level"] = 25,
+ ["rarity"] = 50,
+ ["duration"] = {10, 50},
+ ["calc"] = function ()
+ player.modify_stat(A_STR, -4)
+ player.modify_stat(A_DEX, 1 + (player.mimic_level / 8))
+ player.modify_stat(A_INT, 1 + (player.mimic_level / 5))
+ player.modify_stat(A_WIS, 1 + (player.mimic_level / 5))
+ player.modify_stat(A_CON, -5)
+ player.modify_stat(A_CHR, -10)
+
+ player.pspeed = player.pspeed + 5
+
+ player.resist_pois = TRUE
+ player.resist_fear = TRUE
+ player.resist_dark = TRUE
+
+ if player.mimic_level >= 40 then player.climb = TRUE end
+
+ end,
+ ["power"] = function()
+ if player.mimic_level >= 25 then
+ player.add_power(POWER_WEB)
+ end
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Elder Ent",
+ ["obj_name"] = "Entish Bark",
+ ["desc"] = "Ents are powerful tree-like beings dating from the dawn of time.",
+ ["realm"] = "nature",
+ ["level"] = 40,
+ ["rarity"] = 60,
+ ["duration"] = {10, 30},
+ ["limit"] = TRUE,
+ ["calc"] = function ()
+ player.pspeed = player.pspeed - 5 - (player.mimic_level / 10)
+
+ player.to_a = player.to_a + 10 + player.mimic_level
+ player.dis_to_a = player.dis_to_a + 10 + player.mimic_level
+
+ player.resist_pois = TRUE
+ player.resist_cold = TRUE
+ player.free_act = TRUE
+ player.regenerate = TRUE
+ player.see_inv = TRUE
+ player.sensible_fire = TRUE
+
+ player.modify_stat(A_STR, player.mimic_level / 5)
+ player.modify_stat(A_INT, - (player.mimic_level / 7))
+ player.modify_stat(A_WIS, - (player.mimic_level / 7))
+ player.modify_stat(A_DEX, -4)
+ player.modify_stat(A_CON, player.mimic_level / 5)
+ player.modify_stat(A_CHR, -7)
+
+ end,
+ ["power"] = function ()
+ player.add_power(PWR_GROW_TREE)
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Vapour",
+ ["obj_name"] = "Cloak of Mist",
+ ["desc"] = "A sentient cloud, darting around",
+ ["realm"] = "nature",
+ ["level"] = 15,
+ ["rarity"] = 10,
+ ["duration"] = {10, 40},
+ ["calc"] = function ()
+
+ player.pspeed = player.pspeed + 5
+
+ --Try to hit a cloud!
+ player.to_a = player.to_a + 40 + player.mimic_level
+ player.dis_to_a = player.dis_to_a + 40 + player.mimic_level
+
+ --Try to hit WITH a cloud!
+ player.to_h = player.to_h - 40
+ player.dis_to_h = player.dis_to_h -40
+
+ -- But they are stealthy
+ player.skill_stl = player.skill_stl + 10 + (player.mimic_level / 5)
+ player.resist_pois = TRUE
+ player.immune_cold = TRUE
+ player.resist_shard = TRUE
+ player.free_act = TRUE
+ player.regenerate = TRUE
+ player.see_inv = TRUE
+ player.sensible_fire = TRUE
+ player.levitate = TRUE
+
+ -- Stat mods
+ player.modify_stat(A_STR, -4)
+ player.modify_stat(A_DEX, 5)
+ player.modify_stat(A_CON, -4)
+ player.modify_stat(A_CHR, -10)
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Serpent",
+ ["obj_name"] = "Snakeskin Cloak",
+ ["desc"] = "Serpents are fast, lethal predators.",
+ ["realm"] = "nature",
+ ["level"] = 30,
+ ["rarity"] = 25,
+ ["duration"] = {15, 20},
+ ["calc"] = function ()
+ player.pspeed = player.pspeed + 10 + (player.mimic_level / 6)
+ player.to_a = player.to_a + 3 + (player.mimic_level / 8)
+ player.dis_to_a = player.dis_to_a + 3 + (player.mimic_level / 8)
+
+ player.modify_stat(A_STR, player.mimic_level / 8)
+ player.modify_stat(A_INT, -6)
+ player.modify_stat(A_WIS, -6)
+ player.modify_stat(A_DEX, -4)
+ player.modify_stat(A_CON, player.mimic_level / 7)
+ player.modify_stat(A_CHR, -6)
+
+ player.resist_pois = TRUE
+ if player.mimic_level >= 25 then player.free_act = TRUE end
+ end,
+}
+
+add_mimic_shape
+{
+ ["name"] = "Mumak",
+ ["obj_name"] = "Mumak Hide",
+ ["desc"] = "A giant, elaphantine form.",
+ ["realm"] = "nature",
+ ["level"] = 40,
+ ["rarity"] = 40,
+ ["duration"] = {15, 20},
+ ["calc"] = function ()
+ player.pspeed = player.pspeed - 5 - (player.mimic_level / 10)
+ player.to_a = player.to_a + 10 + (player.mimic_level / 6)
+ player.dis_to_a = player.dis_to_a + 10 + (player.mimic_level / 6)
+ player.to_d = player.to_d + 5 + ((player.mimic_level * 2) / 3)
+ player.dis_to_d = player.dis_to_d + 5 + ((player.mimic_level * 2) / 3)
+
+ player.modify_stat(A_STR, player.mimic_level / 4)
+ player.modify_stat(A_INT, -8)
+ player.modify_stat(A_WIS, -4)
+ player.modify_stat(A_DEX, -5)
+ player.modify_stat(A_CON, player.mimic_level / 3)
+ player.modify_stat(A_CHR, -10)
+
+ if player.mimic_level >= 10 then player.resist_fear = TRUE end
+ if player.mimic_level >= 25 then player.resist_conf = TRUE end
+ if player.mimic_level >= 30 then player.free_act = TRUE end
+ if player.mimic_level >= 35 then player.resist_nexus = TRUE end
+ end,
+}
+
+--------- Extra shapes -----------
+
+-- For Beornings
+add_mimic_shape
+{
+ ["name"] = "Bear",
+ ["desc"] = "A fierce, terrible bear.",
+ ["realm"] = nil,
+ ["level"] = 1,
+ ["rarity"] = 101,
+ ["duration"] = {50, 200},
+ ["limit"] = TRUE,
+ ["calc"] = function ()
+ player.pspeed = player.pspeed - 5 + (player.mimic_level / 5)
+
+ player.to_a = player.to_a + 5 + ((player.mimic_level * 2) / 3)
+ player.dis_to_a = player.dis_to_a + 5 + ((player.mimic_level * 2) / 3)
+
+ player.modify_stat(A_STR, player.mimic_level / 11)
+ player.modify_stat(A_INT, player.mimic_level / 11)
+ player.modify_stat(A_WIS, player.mimic_level / 11)
+ player.modify_stat(A_DEX, -1)
+ player.modify_stat(A_CON, player.mimic_level / 11)
+ player.modify_stat(A_CHR, -10)
+
+ if player.mimic_level >= 10 then player.free_act = TRUE end
+ if player.mimic_level >= 20 then player.regenerate = TRUE end
+ if player.mimic_level >= 30 then player.resist_conf = TRUE end
+ if player.mimic_level >= 35 then player.resist_nexus = TRUE end
+
+ -- activate the skill
+ skill(SKILL_BEAR).hidden = FALSE
+ end,
+}
+
+-- For balrog corruptions
+add_mimic_shape
+{
+ ["name"] = "Balrog",
+ ["desc"] = "A corrupted maia.",
+ ["realm"] = nil,
+ ["level"] = 1,
+ ["rarity"] = 101,
+ ["duration"] = {30, 70},
+ ["limit"] = TRUE,
+ ["calc"] = function ()
+ player.modify_stat(A_STR, 5 + player.mimic_level / 5)
+ player.modify_stat(A_INT, player.mimic_level / 10)
+ player.modify_stat(A_WIS, - ( 5 + player.mimic_level / 10))
+ player.modify_stat(A_DEX, player.mimic_level / 10)
+ player.modify_stat(A_CON, 5 + player.mimic_level / 5)
+ player.modify_stat(A_CHR, - ( 5 + player.mimic_level / 10))
+
+ player.immune_fire = TRUE
+ player.immune_elec = TRUE
+ player.immune_acid = TRUE
+ player.resist_pois = TRUE
+ player.resist_dark = TRUE
+ player.resist_chaos = TRUE
+ player.hold_life = TRUE
+ player.ffall = TRUE
+ player.regenerate = TRUE
+ player.sh_fire = TRUE
+ return 1
+ end,
+}
+
+-- For avatar spell
+add_mimic_shape
+{
+ ["name"] = "Maia",
+ ["desc"] = "A near god-like being.",
+ ["realm"] = nil,
+ ["level"] = 1,
+ ["rarity"] = 101,
+ ["duration"] = {30, 70},
+ ["limit"] = TRUE,
+ ["calc"] = function ()
+ player.modify_stat(A_STR, 5 + player.mimic_level / 5)
+ player.modify_stat(A_INT, 5 + player.mimic_level / 5)
+ player.modify_stat(A_WIS, 5 + player.mimic_level / 5)
+ player.modify_stat(A_DEX, 5 + player.mimic_level / 5)
+ player.modify_stat(A_CON, 5 + player.mimic_level / 5)
+ player.modify_stat(A_CHR, 5 + player.mimic_level / 5)
+
+ player.immune_fire = TRUE
+ player.immune_elec = TRUE
+ player.immune_acid = TRUE
+ player.immune_cold = TRUE
+ player.resist_pois = TRUE
+ player.resist_lite = TRUE
+ player.resist_dark = TRUE
+ player.resist_chaos = TRUE
+ player.hold_life = TRUE
+ player.ffall = TRUE
+ player.regenerate = TRUE
+ return 2
+ end,
+}
+
+-- For Geomancy
+add_mimic_shape
+{
+ ["name"] = "Fire Elem.",
+ ["desc"] = "A towering column of flames",
+ ["realm"] = nil,
+ ["level"] = 1,
+ ["rarity"] = 101,
+ ["duration"] = {10, 10},
+ ["limit"] = TRUE,
+ ["calc"] = function ()
+ player.modify_stat(A_STR, 5 + (player.mimic_level / 5))
+ player.modify_stat(A_DEX, 5 + (player.mimic_level / 5))
+ player.modify_stat(A_WIS, -5 - (player.mimic_level / 5))
+
+ player.immune_fire = TRUE
+ -- was immune to poison in the 3.0.0 version
+ player.resist_pois = TRUE
+ player.sh_fire = TRUE
+ player.lite = TRUE
+ return 0
+ end,
+}
diff --git a/lib/scpt/mkeys.lua b/lib/scpt/mkeys.lua
new file mode 100644
index 00000000..15e23546
--- /dev/null
+++ b/lib/scpt/mkeys.lua
@@ -0,0 +1,95 @@
+-- Mkeys for skills & abilities
+
+GF_INSTA_DEATH = add_spell_type
+{
+ ["color"] = { TERM_DARK, 0 },
+ ["angry"] = function() return TRUE, TRUE end,
+ ["monster"] = function(who, dam, rad, y, x, monst)
+ local race = race_info_idx(monst.r_idx, monst.ego)
+ if magik(5) == FALSE or band(race.flags1, RF1_UNIQUE) ~= FALSE or band(race.flags3, RF3_UNDEAD) ~= FALSE or band(race.flags3, RF3_NONLIVING) ~= FALSE then
+ return TRUE, FALSE
+ else
+ -- Reduce the exp gained this way
+ monst.level = monst.level / 3
+ return TRUE, FALSE, 32535, 0, 0, 0, 0, 0, 0, 0, " faints.", " is sucked out of life."
+ end
+ end,
+}
+
+-- Death touch ability
+add_mkey
+{
+ ["mkey"] = 100,
+ ["fct"] = function()
+ if player.csp > 40 then
+ increase_mana(-40)
+ set_project(randint(30) + 10, GF_INSTA_DEATH, 1, 0, bor(PROJECT_STOP, PROJECT_KILL))
+ energy_use = 100
+ else
+ msg_print("You need at least 40 mana.")
+ end
+ end,
+}
+
+
+-- Geomancy skill
+add_mkey
+{
+ ["mkey"] = 101,
+ ["fct"] = function()
+ local s
+
+ -- No magic
+ if (player.antimagic > 0) then
+ msg_print("Your anti-magic field disrupts any magic attempts.")
+ return
+ end
+
+ local obj = get_object(INVEN_WIELD)
+ if (obj.k_idx <= 0) or (obj.tval ~= TV_MSTAFF) then
+ msg_print('You must wield a magestaff to use Geomancy.')
+ return
+ end
+
+ s = get_school_spell("cast", "is_ok_spell", 62);
+
+ -- Actualy cast the choice
+ if (s ~= -1) then
+ cast_school_spell(s, spell(s))
+ end
+ end,
+}
+
+-- Far reaching attack of polearms
+add_mkey
+{
+ ["mkey"] = 102,
+ ["fct"] = function()
+ local weapon = get_object(INVEN_WIELD);
+ if weapon.tval == TV_POLEARM and (weapon.sval == SV_HALBERD or weapon.sval == SV_PIKE or weapon.sval == SV_HEAVY_LANCE or weapon.sval == SV_LANCE) then
+ else
+ msg_print("You will need a long polearm for this!")
+ return
+ end
+
+ ret, dir = get_rep_dir()
+ if ret == FALSE then return end
+
+ local dy, dx = explode_dir(dir)
+ dy = dy * 2
+ dx = dx * 2
+ targety = player.py + dy
+ targetx = player.px + dx
+
+ local max_blows = get_skill_scale(SKILL_POLEARM, player.num_blow / 2)
+ if max_blows == 0 then max_blows = 1 end
+
+ if get_skill(SKILL_POLEARM) >= 40 then
+ energy_use = energy_use + 200
+ return project(0, 0, targety, targetx, max_blows, GF_ATTACK, bor(PROJECT_BEAM, PROJECT_KILL))
+ else
+ energy_use = energy_use + 200
+ return project(0, 0, targety, targetx, max_blows, GF_ATTACK, bor(PROJECT_BEAM, PROJECT_STOP, PROJECT_KILL))
+ end
+ end,
+}
diff --git a/lib/scpt/player.lua b/lib/scpt/player.lua
new file mode 100644
index 00000000..2a617608
--- /dev/null
+++ b/lib/scpt/player.lua
@@ -0,0 +1,76 @@
+------------------------------------------------------------------------------
+----------------------- Hook to create birth objects -------------------------
+------------------------------------------------------------------------------
+function __birth_hook_objects()
+ -- Provide a book of blink to rangers
+ if get_class_name() == "Ranger" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Phase Door")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+
+ -- Provide a book of Geyser to Geomancers
+ if get_class_name() == "Geomancer" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Geyser")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+
+ -- Provide a book of prayer to priests
+ if get_class_name() == "Priest(Eru)" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("See the Music")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+ if get_class_name() == "Priest(Manwe)" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Manwe's Blessing")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+ if get_class_name() == "Druid" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Charm Animal")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+ if get_class_name() == "Dark-Priest" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Curse")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+ if get_class_name() == "Paladin" then
+ local obj = create_object(TV_BOOK, 255);
+ obj.pval = find_spell("Divine Aim")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+ if get_class_name() == "Mimic" then
+ local obj = create_object(TV_CLOAK, 100);
+ obj.pval2 = resolve_mimic_name("Mouse")
+ obj.ident = bor(obj.ident, IDENT_MENTAL, IDENT_KNOWN)
+ inven_carry(obj, FALSE)
+ end_object(obj)
+ end
+
+ -- Start the undeads, as undeads with the corruptions
+ if get_subrace_name() == "Vampire" then
+ player.corruption(CORRUPT_VAMPIRE_TEETH, TRUE)
+ player.corruption(CORRUPT_VAMPIRE_STRENGTH, TRUE)
+ player.corruption(CORRUPT_VAMPIRE_VAMPIRE, TRUE)
+ end
+end
+
+-- Register in the hook list
+add_hook_script(HOOK_BIRTH_OBJECTS, "__birth_hook_objects", "__birth_hook_objects")
diff --git a/lib/scpt/powers.lua b/lib/scpt/powers.lua
new file mode 100644
index 00000000..ff4c62c5
--- /dev/null
+++ b/lib/scpt/powers.lua
@@ -0,0 +1,61 @@
+-- Various 'U' powers
+
+-- Invisibility power, for the mouse mimic shape
+POWER_INVISIBILITY = add_power
+{
+ ["name"] = "invisibility",
+ ["desc"] = "You are able melt into the shadows to become invisible.",
+ ["desc_get"] = "You suddenly become able to melt into the shadows.",
+ ["desc_lose"] = "You lose your shadow-melting ability.",
+ ["level"] = 30,
+ ["cost"] = 10,
+ ["stat"] = A_DEX,
+ ["fail"] = 20,
+ ["power"] = function()
+ set_invis(20 + randint(30), 30)
+ end,
+}
+
+-- Web power, for the spider mimic shape
+POWER_WEB = add_power
+{
+ ["name"] = "web",
+ ["desc"] = "You are able throw a thick and very resistant spider web.",
+ ["desc_get"] = "You suddenly become able to weave webs.",
+ ["desc_lose"] = "You lose your web-weaving capability.",
+ ["level"] = 25,
+ ["cost"] = 30,
+ ["stat"] = A_DEX,
+ ["fail"] = 20,
+ ["power"] = function()
+ -- Warning, beware of f_info changes .. I hate to do that ..
+ grow_things(16, 1 + (player.lev / 10))
+ end,
+}
+
+-- Activating/stopping space-continuum
+-- When stopped it will induce constant mana loss
+player.corrupt_anti_teleport_stopped = FALSE
+add_loadsave("player.corrupt_anti_teleport_stopped", FALSE)
+POWER_COR_SPACE_TIME = add_power
+{
+ ["name"] = "control space/time continuum",
+ ["desc"] = "You are able to control the space/time continuum.",
+ ["desc_get"] = "You become able to control the space/time continuum.",
+ ["desc_lose"] = "You are no more able to control the space/time continuum.",
+ ["level"] = 1,
+ ["cost"] = 10,
+ ["stat"] = A_WIS,
+ ["fail"] = 10,
+ ["power"] = function()
+ if player.corrupt_anti_teleport_stopped == TRUE then
+ player.corrupt_anti_teleport_stopped = FALSE
+ msg_print("You stop controlling your corruption.")
+ player.update = bor(player.update, PU_BONUS)
+ else
+ player.corrupt_anti_teleport_stopped = TRUE
+ msg_print("You start controlling your corruption, teleportation works once more.")
+ player.update = bor(player.update, PU_BONUS)
+ end
+ end,
+}
diff --git a/lib/scpt/s_air.lua b/lib/scpt/s_air.lua
new file mode 100644
index 00000000..afd1f584
--- /dev/null
+++ b/lib/scpt/s_air.lua
@@ -0,0 +1,193 @@
+-- handle the air school
+
+NOXIOUSCLOUD = add_spell
+{
+ ["name"] = "Noxious Cloud",
+ ["school"] = {SCHOOL_AIR},
+ ["level"] = 3,
+ ["mana"] = 3,
+ ["mana_max"] = 30,
+ ["fail"] = 20,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 7 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 15,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 25, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir, type
+
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ if get_level(NOXIOUSCLOUD, 50) >= 30 then type = GF_UNBREATH
+ else type = GF_POIS end
+ fire_cloud(type, dir, 7 + get_level(NOXIOUSCLOUD, 150), 3, 5 + get_level(NOXIOUSCLOUD, 40))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(7 + get_level(NOXIOUSCLOUD, 150)).." rad 3 dur "..(5 + get_level(NOXIOUSCLOUD, 40))
+ end,
+ ["desc"] = {
+ "Creates a cloud of poison",
+ "The cloud will persist for some turns, damaging all monsters passing by",
+ "At spell level 30 it turns into a thick gas attacking all living beings"
+ }
+}
+
+AIRWINGS = add_spell
+{
+ ["name"] = "Wings of Winds",
+ ["school"] = {SCHOOL_AIR, SCHOOL_CONVEYANCE},
+ ["level"] = 22,
+ ["mana"] = 30,
+ ["mana_max"] = 40,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 5 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 27,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ if get_level(AIRWINGS, 50) >= 16 then
+ if player.tim_fly == 0 then return set_tim_fly(randint(10) + 5 + get_level(AIRWINGS, 25)) end
+ else
+ if player.tim_ffall == 0 then return set_tim_ffall(randint(10) + 5 + get_level(AIRWINGS, 25)) end
+ end
+ return FALSE
+ end,
+ ["info"] = function()
+ return "dur "..(5 + get_level(AIRWINGS, 25)).."+d10"
+ end,
+ ["desc"] = {
+ "Grants the power of levitation",
+ "At level 16 it grants the power of controlled flight"
+ }
+}
+
+INVISIBILITY = add_spell
+{
+ ["name"] = "Invisibility",
+ ["school"] = {SCHOOL_AIR},
+ ["level"] = 16,
+ ["mana"] = 10,
+ ["mana_max"] = 20,
+ ["fail"] = 50,
+ ["inertia"] = { 1, 30 },
+ ["spell"] = function()
+ if player.tim_invisible == 0 then return set_invis(randint(20) + 15 + get_level(INVISIBILITY, 50), 20 + get_level(INVISIBILITY, 50)) end
+ end,
+ ["info"] = function()
+ return "dur "..(15 + get_level(INVISIBILITY, 50)).."+d20 power "..(20 + get_level(INVISIBILITY, 50))
+ end,
+ ["desc"] = {
+ "Grants invisibility"
+ }
+}
+
+POISONBLOOD = add_spell
+{
+ ["name"] = "Poison Blood",
+ ["school"] = {SCHOOL_AIR},
+ ["level"] = 12,
+ ["mana"] = 10,
+ ["mana_max"] = 20,
+ ["fail"] = 30,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 15 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 45,
+ ["base_level"] = { 1, 25 },
+ ["max_level"] = { 35, 50 },
+ },
+ },
+ ["inertia"] = { 1, 35 },
+ ["spell"] = function()
+ local obvious = nil
+ if player.oppose_pois == 0 then obvious = set_oppose_pois(randint(30) + 25 + get_level(POISONBLOOD, 25)) end
+ if (player.tim_poison == 0) and (get_level(POISONBLOOD, 50) >= 15) then obvious = is_obvious(set_poison(randint(30) + 25 + get_level(POISONBLOOD, 25)), obvious) end
+ return obvious
+ end,
+ ["info"] = function()
+ return "dur "..(25 + get_level(POISONBLOOD, 25)).."+d30"
+ end,
+ ["desc"] = {
+ "Grants resist poison",
+ "At level 15 it provides poison branding to wielded weapon"
+ }
+}
+
+THUNDERSTORM = add_spell
+{
+ ["name"] = "Thunderstorm",
+ ["school"] = {SCHOOL_AIR, SCHOOL_NATURE},
+ ["level"] = 25,
+ ["mana"] = 40,
+ ["mana_max"] = 60,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 85,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 25, 50 },
+ },
+ },
+ ["inertia"] = { 2, 15 },
+ ["spell"] = function()
+ if player.tim_thunder == 0 then return set_tim_thunder(randint(10) + 10 + get_level(THUNDERSTORM, 25), 5 + get_level(THUNDERSTORM, 10), 10 + get_level(THUNDERSTORM, 25)) end
+ return FALSE
+ end,
+ ["info"] = function()
+ return "dam "..(5 + get_level(THUNDERSTORM, 10)).."d"..(10 + get_level(THUNDERSTORM, 25)).." dur "..(10 + get_level(THUNDERSTORM, 25)).."+d10"
+ end,
+ ["desc"] = {
+ "Charges up the air around you with electricity",
+ "Each turn it will throw a thunder bolt at a random monster in sight",
+ "The thunder does 3 types of damage, one third of lightning",
+ "one third of sound and one third of light"
+ }
+}
+
+STERILIZE = add_spell
+{
+ ["name"] = "Sterilize",
+ ["school"] = {SCHOOL_AIR},
+ ["level"] = 20,
+ ["mana"] = 10,
+ ["mana_max"] = 100,
+ ["fail"] = 50,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 5 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 20,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["spell"] = function()
+ set_no_breeders((30) + 20 + get_level(STERILIZE, 70))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dur "..(20 + get_level(STERILIZE, 70)).."+d30"
+ end,
+ ["desc"] = {
+ "Prevents explosive breeding for a while."
+ }
+}
diff --git a/lib/scpt/s_convey.lua b/lib/scpt/s_convey.lua
new file mode 100644
index 00000000..e7856c43
--- /dev/null
+++ b/lib/scpt/s_convey.lua
@@ -0,0 +1,227 @@
+-- handle the conveyance school
+
+BLINK = add_spell
+{
+ ["name"] = "Phase Door",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 3,
+ ["fail"] = 10,
+ ["inertia"] = { 1, 5 },
+ ["spell"] = function()
+ if get_level(BLINK, 50) >= 30 then
+ local oy, ox = player.py, player.px
+
+ teleport_player(10 + get_level(BLINK, 8))
+ create_between_gate(0, oy, ox)
+ return TRUE
+ else
+ teleport_player(10 + get_level(BLINK, 8))
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return "distance "..(10 + get_level(BLINK, 8))
+ end,
+ ["desc"] = {
+ "Teleports you on a small scale range",
+ "At level 30 it creates void jumpgates",
+ }
+}
+
+DISARM = add_spell
+{
+ ["name"] = "Disarm",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 3,
+ ["mana"] = 2,
+ ["mana_max"] = 4,
+ ["fail"] = 15,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 15 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 4,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 10, 50 },
+ },
+ },
+ ["spell"] = function()
+ local obvious
+ obvious = destroy_doors_touch()
+ if get_level(DISARM, 50) >= 10 then obvious = is_obvious(destroy_traps_touch(), obvious) end
+ return obvious
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Destroys doors and traps",
+ "At level 10 it destroys doors and traps, then reveals and unlocks any secret",
+ "doors"
+ }
+}
+
+TELEPORT = add_spell
+{
+ ["name"] = "Teleportation",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 10,
+ ["mana"] = 8,
+ ["mana_max"] = 14,
+ ["fail"] = 30,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 7 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 50,
+ ["base_level"] = { 1, 20 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ player.energy = player.energy - (25 - get_level(TELEPORT, 50))
+ teleport_player(100 + get_level(TELEPORT, 100))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "distance "..(100 + get_level(TELEPORT, 100))
+ end,
+ ["desc"] = {
+ "Teleports you around the level. The casting time decreases with level",
+ }
+}
+
+TELEAWAY = add_spell
+{
+ ["name"] = "Teleport Away",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 23,
+ ["mana"] = 15,
+ ["mana_max"] = 40,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 75,
+ ["base_level"] = { 1, 20 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir
+
+ if get_level(TELEAWAY, 50) >= 20 then
+ return project_los(GF_AWAY_ALL, 100)
+ elseif get_level(TELEAWAY, 50) >= 10 then
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(GF_AWAY_ALL, dir, 100, 3 + get_level(TELEAWAY, 4))
+ else
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return teleport_monster(dir)
+ end
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Teleports a line of monsters away",
+ "At level 10 it turns into a ball",
+ "At level 20 it teleports all monsters in sight"
+ }
+}
+
+RECALL = add_spell
+{
+ ["name"] = "Recall",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 30,
+ ["mana"] = 25,
+ ["mana_max"] = 25,
+ ["fail"] = 60,
+ ["spell"] = function()
+ local ret, x, y, c_ptr
+ ret, x, y = tgt_pt()
+ if ret == FALSE then return end
+ c_ptr = cave(y, x)
+ if (y == player.py) and (x == player.px) then
+ local d = 21 - get_level(RECALL, 15)
+ if d < 0 then
+ d = 0
+ end
+ local f = 15 - get_level(RECALL, 10)
+ if f < 1 then
+ f = 1
+ end
+ recall_player(d, f)
+ return TRUE
+ elseif c_ptr.m_idx > 0 then
+ swap_position(y, x)
+ return TRUE
+ elseif c_ptr.o_idx > 0 then
+ set_target(y, x)
+ if get_level(RECALL, 50) >= 15 then
+ fetch(5, 10 + get_level(RECALL, 150), FALSE)
+ else
+ fetch(5, 10 + get_level(RECALL, 150), TRUE)
+ end
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ local d = 21 - get_level(RECALL, 15)
+ if d < 0 then
+ d = 0
+ end
+ local f = 15 - get_level(RECALL, 10)
+ if f < 1 then
+ f = 1
+ end
+ return "dur "..f.."+d"..d.." weight "..(1 + get_level(RECALL, 15)).."lb"
+ end,
+ ["desc"] = {
+ "Cast on yourself it will recall you to the surface/dungeon.",
+ "Cast at a monster you will swap positions with the monster.",
+ "Cast at an object it will fetch the object to you."
+ }
+}
+
+PROBABILITY_TRAVEL = add_spell
+{
+ ["name"] = "Probability Travel",
+ ["school"] = {SCHOOL_CONVEYANCE},
+ ["level"] = 35,
+ ["mana"] = 30,
+ ["mana_max"] = 50,
+ ["fail"] = 90,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 2 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 97,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 8, 25 },
+ },
+ },
+ ["inertia"] = { 6, 40 },
+ ["spell"] = function()
+ return set_prob_travel(randint(20) + get_level(PROBABILITY_TRAVEL, 60))
+ end,
+ ["info"] = function()
+ return "dur "..get_level(PROBABILITY_TRAVEL, 60).."+d20"
+ end,
+ ["desc"] = {
+ "Renders you immaterial, when you hit a wall you travel through it and",
+ "instantly appear on the other side of it. You can also float up and down",
+ "at will"
+ }
+}
diff --git a/lib/scpt/s_demon.lua b/lib/scpt/s_demon.lua
new file mode 100644
index 00000000..ada97310
--- /dev/null
+++ b/lib/scpt/s_demon.lua
@@ -0,0 +1,337 @@
+-- handle the demonology school
+
+-- Demonblade
+DEMON_BLADE = add_spell
+{
+ ["name"] = "Demon Blade",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 1,
+ ["mana"] = 4,
+ ["mana_max"] = 44,
+ ["fail"] = 10,
+ ["random"] = 0,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 7 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 75,
+ ["base_level"] = { 1, 17 },
+ ["max_level"] = { 20, 40 },
+ },
+ },
+ ["spell"] = function()
+ local type, rad
+
+ type = GF_FIRE
+ if get_level(DEMON_BLADE) >= 30 then type = GF_HELL_FIRE end
+
+ rad = 0
+ if get_level(DEMON_BLADE) >= 45 then rad = 1 end
+
+ return set_project(randint(20) + get_level(DEMON_BLADE, 80),
+ type,
+ 4 + get_level(DEMON_BLADE, 40),
+ rad,
+ bor(PROJECT_STOP, PROJECT_KILL))
+ end,
+ ["info"] = function()
+ return "dur "..(get_level(DEMON_BLADE, 80)).."+d20 dam "..(4 + get_level(DEMON_BLADE, 40)).."/blow"
+ end,
+ ["desc"] = {
+ "Imbues your blade with fire to deal more damage",
+ "At level 30 it deals hellfire damage",
+ "At level 45 it spreads over a 1 radius zone around your target",
+ }
+}
+
+DEMON_MADNESS = add_spell
+{
+ ["name"] = "Demon Madness",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 10,
+ ["mana"] = 5,
+ ["mana_max"] = 20,
+ ["fail"] = 25,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, dir, type, y1, x1, y2, x2
+
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ type = GF_CHAOS
+ if magik(33) == TRUE then type = GF_CONFUSION end
+ if magik(33) == TRUE then type = GF_CHARM end
+
+ -- Calc the coordinates of arrival
+ y1, x1 = get_target(dir)
+ y2 = player.py - (y1 - player.py)
+ x2 = player.px - (x1 - player.px)
+
+ local obvious = nil
+ obvious = project(0, 1 + get_level(DEMON_MADNESS, 4, 0),
+ y1, x1,
+ 20 + get_level(DEMON_MADNESS, 200),
+ type, bor(PROJECT_STOP, PROJECT_GRID, PROJECT_ITEM, PROJECT_KILL))
+ obvious = is_obvious(project(0, 1 + get_level(DEMON_MADNESS, 4, 0),
+ y2, x2,
+ 20 + get_level(DEMON_MADNESS, 200),
+ type, bor(PROJECT_STOP, PROJECT_GRID, PROJECT_ITEM, PROJECT_KILL)), obvious)
+ return obvious
+ end,
+ ["info"] = function()
+ return "dam "..(20 + get_level(DEMON_MADNESS, 200)).." rad "..(1 + get_level(DEMON_MADNESS, 4, 0))
+ end,
+ ["desc"] = {
+ "Fire 2 balls in opposite directions of randomly chaos, confusion or charm",
+ }
+}
+
+DEMON_FIELD = add_spell
+{
+ ["name"] = "Demon Field",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 20,
+ ["mana"] = 20,
+ ["mana_max"] = 60,
+ ["fail"] = 60,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, dir
+
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_cloud(GF_NEXUS, dir, 20 + get_level(DEMON_FIELD, 70), 7, 30 + get_level(DEMON_FIELD, 100))
+ end,
+ ["info"] = function()
+ return "dam "..(20 + get_level(DEMON_FIELD, 70)).." dur "..(30 + get_level(DEMON_FIELD, 100))
+ end,
+ ["desc"] = {
+ "Fires a cloud of deadly nexus over a radius of 7",
+ }
+}
+
+-- Demonshield
+
+DOOM_SHIELD = add_spell
+{
+ ["name"] = "Doom Shield",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 1,
+ ["mana"] = 2,
+ ["mana_max"] = 30,
+ ["fail"] = 10,
+ ["random"] = 0,
+ ["spell"] = function()
+ return set_shield(randint(10) + 20 + get_level(DOOM_SHIELD, 100), -300 + get_level(DOOM_SHIELD, 100), SHIELD_COUNTER, 1 + get_level(DOOM_SHIELD, 14), 10 + get_level(DOOM_SHIELD, 15))
+ end,
+ ["info"] = function()
+ return "dur "..(20 + get_level(DOOM_SHIELD, 100)).."+d10 dam "..(1 + get_level(DOOM_SHIELD, 14)).."d"..(10 + get_level(DOOM_SHIELD, 15))
+ end,
+ ["desc"] = {
+ "Raises a mirror of pain around you, doing very high damage to your foes",
+ "that dare hit you, but greatly reduces your armour class",
+ }
+}
+
+UNHOLY_WORD = add_spell
+{
+ ["name"] = "Unholy Word",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 25,
+ ["mana"] = 15,
+ ["mana_max"] = 45,
+ ["fail"] = 55,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, x, y, c_ptr
+ ret, x, y = tgt_pt()
+ if ret == FALSE then return end
+ c_ptr = cave(y, x)
+
+ -- ok that is a monster
+ if c_ptr.m_idx > 0 then
+ local m_ptr = monster(c_ptr.m_idx)
+ if m_ptr.status ~= MSTATUS_PET then
+ msg_print("You can only target a pet.")
+ return
+ end
+
+ -- Oups he is angry now
+ if magik(30 - get_level(UNHOLY_WORD, 25, 0)) == TRUE then
+ local m_name = monster_desc(m_ptr, 0).." turns against you."
+ msg_print(strupper(strsub(m_name, 0, 1))..strsub(m_name, 2))
+ else
+ local m_name = monster_desc(m_ptr, 0)
+ msg_print("You consume "..m_name..".")
+
+ local heal = (m_ptr.hp * 100) / m_ptr.maxhp
+ heal = ((30 + get_level(UNHOLY_WORD, 50, 0)) * heal) / 100
+
+ hp_player(heal)
+
+ delete_monster_idx(c_ptr.m_idx)
+ end
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return "heal mhp% of "..(30 + get_level(UNHOLY_WORD, 50, 0)).."%"
+ end,
+ ["desc"] = {
+ "Kills a pet to heal you",
+ "There is a chance that the pet won't die but will turn against you",
+ "it will decrease with higher level",
+ }
+}
+
+DEMON_CLOAK = add_spell
+{
+ ["name"] = "Demon Cloak",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 20,
+ ["mana"] = 10,
+ ["mana_max"] = 40,
+ ["fail"] = 70,
+ ["random"] = 0,
+ ["spell"] = function()
+ return set_tim_reflect(randint(5) + 5 + get_level(DEMON_CLOAK, 15, 0))
+ end,
+ ["info"] = function()
+ return "dur "..(5 + get_level(DEMON_CLOAK, 15, 0)).."+d5"
+ end,
+ ["desc"] = {
+ "Raises a mirror that can reflect bolts and arrows for a time",
+ }
+}
+
+
+-- Demonhorn
+DEMON_SUMMON = add_spell
+{
+ ["name"] = "Summon Demon",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 5,
+ ["mana"] = 10,
+ ["mana_max"] = 50,
+ ["fail"] = 30,
+ ["random"] = 0,
+ ["spell"] = function()
+ local type = SUMMON_DEMON
+ local level = dun_level
+ local minlevel = 4
+ if level < minlevel then level=minlevel end
+ summon_specific_level = 5 + get_level(DEMON_SUMMON, 100)
+ if get_level(DEMON_SUMMON) >= 35 then type = SUMMON_HI_DEMON end
+ if summon_monster(player.py, player.px, level, TRUE, type) == TRUE then
+ return TRUE
+ else
+ msg_print("Something blocks your summoning!")
+ return FALSE
+ end
+ end,
+ ["info"] = function()
+ return "level "..(5 + get_level(DEMON_SUMMON, 100))
+ end,
+ ["desc"] = {
+ "Summons a leveled demon to your side",
+ "At level 35 it summons a high demon",
+ }
+}
+
+DISCHARGE_MINION = add_spell
+{
+ ["name"] = "Discharge Minion",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 10,
+ ["mana"] = 20,
+ ["mana_max"] = 50,
+ ["fail"] = 30,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, x, y, c_ptr
+ ret, x, y = tgt_pt()
+ if ret == FALSE then return end
+ c_ptr = cave(y, x)
+
+ -- ok that is a monster
+ if c_ptr.m_idx > 0 then
+ local m_ptr = monster(c_ptr.m_idx)
+ if m_ptr.status ~= MSTATUS_PET then
+ msg_print("You can only target a pet.")
+ return
+ end
+
+ local dam = m_ptr.hp
+ delete_monster_idx(c_ptr.m_idx)
+ dam = (dam * (20 + get_level(DISCHARGE_MINION, 60, 0))) / 100
+ if dam > 100 + get_level(DISCHARGE_MINION, 500, 0) then
+ dam = 100 + get_level(DISCHARGE_MINION, 500, 0)
+ end
+
+ -- We use project instead of fire_ball because we must tell it exactly where to land
+ return project(0, 2,
+ y, x,
+ dam,
+ GF_GRAVITY, bor(PROJECT_STOP, PROJECT_GRID, PROJECT_ITEM, PROJECT_KILL))
+ end
+ end,
+ ["info"] = function()
+ return "dam "..(20 + get_level(DISCHARGE_MINION, 60, 0)).."% max "..(100 + get_level(DISCHARGE_MINION, 500, 0))
+ end,
+ ["desc"] = {
+ "The targeted pet will explode in a burst of gravity",
+ }
+}
+
+CONTROL_DEMON = add_spell
+{
+ ["name"] = "Control Demon",
+ ["school"] = {SCHOOL_DEMON},
+ ["level"] = 25,
+ ["mana"] = 30,
+ ["mana_max"] = 70,
+ ["fail"] = 55,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ return fire_ball(GF_CONTROL_DEMON, dir, 50 + get_level(CONTROL_DEMON, 250), 0)
+ end,
+ ["info"] = function()
+ return "power "..(50 + get_level(CONTROL_DEMON, 250))
+ end,
+ ["desc"] = {
+ "Attempts to control a demon",
+ }
+}
+
+-- ok we need to have different wield slots
+add_hooks
+{
+ [HOOK_WIELD_SLOT] = function (obj, ideal)
+ if (obj.tval == TV_DAEMON_BOOK) then
+ local slot
+ if (obj.sval == SV_DEMONBLADE) then
+ if(ideal == TRUE) then
+ slot = INVEN_WIELD
+ else
+ slot = get_slot(INVEN_WIELD)
+ end
+ elseif (obj.sval == SV_DEMONSHIELD) then
+ if(ideal == TRUE) then
+ slot = INVEN_ARM
+ else
+ slot = get_slot(INVEN_ARM)
+ end
+ elseif (obj.sval == SV_DEMONHORN) then
+ if(ideal == TRUE) then
+ slot = INVEN_HEAD
+ else
+ slot = get_slot(INVEN_HEAD)
+ end
+ end
+ return TRUE, slot
+ end
+ end,
+}
diff --git a/lib/scpt/s_divin.lua b/lib/scpt/s_divin.lua
new file mode 100644
index 00000000..60b0275f
--- /dev/null
+++ b/lib/scpt/s_divin.lua
@@ -0,0 +1,230 @@
+-- Handles thhe divination school
+
+
+STARIDENTIFY = add_spell
+{
+ ["name"] = "Greater Identify",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 35,
+ ["mana"] = 30,
+ ["mana_max"] = 30,
+ ["fail"] = 80,
+ ["spell"] = function()
+ if get_check("Cast on yourself?") == TRUE then
+ self_knowledge()
+ else
+ identify_fully()
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Asks for an object and fully identify it, providing the full list of powers",
+ "Cast at yourself it will reveal your powers"
+ }
+}
+
+IDENTIFY = add_spell
+{
+ ["name"] = "Identify",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 8,
+ ["mana"] = 10,
+ ["mana_max"] = 50,
+ ["fail"] = 40,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 10 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 45,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 15, 40 },
+ },
+ },
+ ["spell"] = function()
+ if get_level(IDENTIFY, 50) >= 27 then
+ local obvious
+ obvious = identify_pack()
+ obvious = is_obvious(fire_ball(GF_IDENTIFY, 0, 1, get_level(IDENTIFY, 3)), obvious)
+ if obvious == TRUE then
+ player.notice = bor(player.notice, PN_COMBINE, PN_REORDER)
+ end
+ return obvious
+ elseif get_level(IDENTIFY, 50) >= 17 then
+ local obvious
+ obvious = identify_pack()
+ obvious = is_obvious(fire_ball(GF_IDENTIFY, 0, 1, 0), obvious)
+ if obvious == TRUE then
+ player.notice = bor(player.notice, PN_COMBINE, PN_REORDER)
+ end
+ return obvious
+ else
+ if ident_spell() == TRUE then return TRUE else return end
+ end
+ end,
+ ["info"] = function()
+ if get_level(IDENTIFY, 50) >= 27 then
+ return "rad "..(get_level(IDENTIFY, 3))
+ else
+ return ""
+ end
+ end,
+ ["desc"] = {
+ "Asks for an object and identifies it",
+ "At level 17 it identifies all objects in the inventory",
+ "At level 27 it identifies all objects in the inventory and in a",
+ "radius on the floor, as well as probing monsters in that radius"
+ }
+}
+
+VISION = add_spell
+{
+ ["name"] = "Vision",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 15,
+ ["mana"] = 7,
+ ["mana_max"] = 55,
+ ["fail"] = 45,
+ ["stick"] =
+ {
+ ["charge"] = { 4, 6 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 60,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 10, 30 },
+ },
+ },
+ ["inertia"] = { 2, 200 },
+ ["spell"] = function()
+ if get_level(VISION, 50) >= 25 then
+ wiz_lite_extra()
+ else
+ map_area()
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Detects the layout of the surrounding area",
+ "At level 25 it maps and lights the whole level",
+ }
+}
+
+SENSEHIDDEN = add_spell
+{
+ ["name"] = "Sense Hidden",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 5,
+ ["mana"] = 2,
+ ["mana_max"] = 10,
+ ["fail"] = 25,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 15 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 20,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 10, 50 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ local obvious = nil
+ obvious = detect_traps(15 + get_level(SENSEHIDDEN, 40, 0))
+ if get_level(SENSEHIDDEN, 50) >= 15 then
+ obvious = is_obvious(set_tim_invis(10 + randint(20) + get_level(SENSEHIDDEN, 40)), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ if get_level(SENSEHIDDEN, 50) >= 15 then
+ return "rad "..(15 + get_level(SENSEHIDDEN, 40)).." dur "..(10 + get_level(SENSEHIDDEN, 40)).."+d20"
+ else
+ return "rad "..(15 + get_level(SENSEHIDDEN, 40))
+ end
+ end,
+ ["desc"] = {
+ "Detects the traps in a certain radius around you",
+ "At level 15 it allows you to sense invisible for a while"
+ }
+}
+
+REVEALWAYS = add_spell
+{
+ ["name"] = "Reveal Ways",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 9,
+ ["mana"] = 3,
+ ["mana_max"] = 15,
+ ["fail"] = 20,
+ ["stick"] =
+ {
+ ["charge"] = { 6, 6 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 35,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 25, 50 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ local obvious
+ obvious = detect_doors(10 + get_level(REVEALWAYS, 40, 0))
+ obvious = is_obvious(detect_stairs(10 + get_level(REVEALWAYS, 40, 0)), obvious)
+ return obvious
+ end,
+ ["info"] = function()
+ return "rad "..(10 + get_level(REVEALWAYS, 40))
+ end,
+ ["desc"] = {
+ "Detects the doors/stairs/ways in a certain radius around you",
+ }
+}
+
+SENSEMONSTERS = add_spell
+{
+ ["name"] = "Sense Monsters",
+ ["school"] = {SCHOOL_DIVINATION},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 20,
+ ["fail"] = 10,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 10 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 37,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 15, 40 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ local obvious
+ obvious = detect_monsters_normal(10 + get_level(SENSEMONSTERS, 40, 0))
+ if get_level(SENSEMONSTERS, 50) >= 30 then
+ obvious = is_obvious(set_tim_esp(10 + randint(10) + get_level(SENSEMONSTERS, 20)), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ if get_level(SENSEMONSTERS, 50) >= 30 then
+ return "rad "..(10 + get_level(SENSEMONSTERS, 40)).." dur "..(10 + get_level(SENSEMONSTERS, 20)).."+d10"
+ else
+ return "rad "..(10 + get_level(SENSEMONSTERS, 40))
+ end
+ end,
+ ["desc"] = {
+ "Detects all monsters near you",
+ "At level 30 it allows you to sense monster minds for a while"
+ }
+}
diff --git a/lib/scpt/s_earth.lua b/lib/scpt/s_earth.lua
new file mode 100644
index 00000000..23aa001c
--- /dev/null
+++ b/lib/scpt/s_earth.lua
@@ -0,0 +1,184 @@
+-- The earth school
+
+STONESKIN = add_spell
+{
+ ["name"] = "Stone Skin",
+ ["school"] = SCHOOL_EARTH,
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 50,
+ ["fail"] = 10,
+ ["inertia"] = { 2, 50 },
+ ["spell"] = function()
+ local type
+ if get_level(STONESKIN, 50) >= 25 then
+ type = SHIELD_COUNTER
+ else
+ type = 0
+ end
+ return set_shield(randint(10) + 10 + get_level(STONESKIN, 100), 10 + get_level(STONESKIN, 50), type, 2 + get_level(STONESKIN, 5), 3 + get_level(STONESKIN, 5))
+ end,
+ ["info"] = function()
+ if get_level(STONESKIN, 50) >= 25 then
+ return "dam "..(2 + get_level(STONESKIN, 5)).."d"..(3 + get_level(STONESKIN, 5)).." dur "..(10 + get_level(STONESKIN, 100)).."+d10 AC "..(10 + get_level(STONESKIN, 50))
+ else
+ return "dur "..(10 + get_level(STONESKIN, 100)).."+d10 AC "..(10 + get_level(STONESKIN, 50))
+ end
+ end,
+ ["desc"] = {
+ "Creates a shield of earth around you to protect you",
+ "At level 25 it starts dealing damage to attackers"
+ }
+}
+
+DIG = add_spell
+{
+ ["name"] = "Dig",
+ ["school"] = SCHOOL_EARTH,
+ ["level"] = 12,
+ ["mana"] = 14,
+ ["mana_max"] = 14,
+ ["fail"] = 20,
+ ["stick"] =
+ {
+ ["charge"] = { 15, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 25,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 1, 1 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return wall_to_mud(dir)
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Digs a hole in a wall much faster than any shovels",
+ }
+}
+
+STONEPRISON = add_spell
+{
+ ["name"] = "Stone Prison",
+ ["school"] = SCHOOL_EARTH,
+ ["level"] = 25,
+ ["mana"] = 30,
+ ["mana_max"] = 50,
+ ["fail"] = 65,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 3 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 57,
+ ["base_level"] = { 1, 3 },
+ ["max_level"] = { 5, 20 },
+ },
+ },
+ ["spell"] = function()
+ local ret, x, y
+ if get_level(STONEPRISON, 50) >= 10 then
+ ret, x, y = tgt_pt()
+ else
+ y = player.py
+ x = player.px
+ end
+ wall_stone(y, x)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Creates a prison of walls around you",
+ "At level 10 it allows you to target a monster"
+ }
+}
+
+STRIKE = add_spell
+{
+ ["name"] = "Strike",
+ ["school"] = {SCHOOL_EARTH},
+ ["level"] = 30,
+ ["mana"] = 30,
+ ["mana_max"] = 50,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 2, 6 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 635,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 10, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir, rad
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ if get_level(STRIKE, 50) >= 12 then
+ return fire_ball(GF_FORCE, dir, 50 + get_level(STRIKE, 50), 1)
+ else
+ return fire_ball(GF_FORCE, dir, 50 + get_level(STRIKE, 50), 0)
+ end
+ end,
+ ["info"] = function()
+ if get_level(STRIKE, 50) >= 12 then
+ return "dam "..(50 + get_level(STRIKE, 50)).." rad 1"
+ else
+ return "dam "..(50 + get_level(STRIKE, 50))
+ end
+ end,
+ ["desc"] = {
+ "Creates a micro-ball of force that will push monsters backwards",
+ "If the monster is caught near a wall, it'll be crushed against it",
+ "At level 12 it turns into a ball of radius 1"
+ }
+}
+
+SHAKE = add_spell
+{
+ ["name"] = "Shake",
+ ["school"] = {SCHOOL_EARTH},
+ ["level"] = 27,
+ ["mana"] = 25,
+ ["mana_max"] = 30,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 10 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 75,
+ ["base_level"] = { 1, 3 },
+ ["max_level"] = { 9, 20 },
+ },
+ },
+ ["inertia"] = { 2, 50 },
+ ["spell"] = function()
+ local ret, x, y
+ if get_level(SHAKE, 50) >= 10 then
+ ret, x, y = tgt_pt()
+ if ret == FALSE then return end
+ else
+ x = player.px
+ y = player.py
+ end
+ earthquake(y, x, 4 + get_level(SHAKE, 10));
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(4 + get_level(SHAKE, 10))
+ end,
+ ["desc"] = {
+ "Creates a localised earthquake",
+ "At level 10 it can be targeted at any location"
+ }
+}
diff --git a/lib/scpt/s_eru.lua b/lib/scpt/s_eru.lua
new file mode 100644
index 00000000..c0cb0aaf
--- /dev/null
+++ b/lib/scpt/s_eru.lua
@@ -0,0 +1,130 @@
+-- Handle Eru Iluvatar magic school
+
+ERU_SEE = add_spell
+{
+ ["name"] = "See the Music",
+ ["school"] = {SCHOOL_ERU},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 50,
+ ["fail"] = 20,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local obvious
+ obvious = set_tim_invis(randint(20) + 10 + get_level(ERU_SEE, 100))
+ if get_level(ERU_SEE) >= 30 then
+ wiz_lite_extra()
+ obvious = TRUE
+ elseif get_level(ERU_SEE) >= 10 then
+ map_area()
+ obvious = TRUE
+ end
+ if get_level(ERU_SEE) >= 20 then
+ obvious = is_obvious(set_blind(0), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return "dur "..(10 + get_level(ERU_SEE, 100)).."+d20"
+ end,
+ ["desc"] = {
+ "Allows you to 'see' the Great Music from which the world",
+ "originates, allowing you to see unseen things",
+ "At level 10 it allows you to see your surroundings",
+ "At level 20 it allows you to cure blindness",
+ "At level 30 it allows you to fully see all the level"
+ }
+}
+
+ERU_LISTEN = add_spell
+{
+ ["name"] = "Listen to the Music",
+ ["school"] = {SCHOOL_ERU},
+ ["level"] = 7,
+ ["mana"] = 15,
+ ["mana_max"] = 200,
+ ["fail"] = 25,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ if get_level(ERU_LISTEN) >= 30 then
+ ident_all()
+ identify_pack()
+ return TRUE
+ elseif get_level(ERU_LISTEN) >= 14 then
+ identify_pack()
+ return TRUE
+ else
+ return ident_spell()
+ end
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Allows you to listen to the Great Music from which the world",
+ "originates, allowing you to understand the meaning of things",
+ "At level 14 it allows you to identify all your pack",
+ "At level 30 it allows you to identify all items on the level",
+ }
+}
+
+ERU_UNDERSTAND = add_spell
+{
+ ["name"] = "Know the Music",
+ ["school"] = {SCHOOL_ERU},
+ ["level"] = 30,
+ ["mana"] = 200,
+ ["mana_max"] = 600,
+ ["fail"] = 50,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ if get_level(ERU_UNDERSTAND) >= 10 then
+ identify_pack_fully()
+ return TRUE
+ else
+ return identify_fully()
+ end
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Allows you to understand the Great Music from which the world",
+ "originates, allowing you to know the full abilities of things",
+ "At level 10 it allows you to *identify* all your pack",
+ }
+}
+
+ERU_PROT = add_spell
+{
+ ["name"] = "Lay of Protection",
+ ["school"] = {SCHOOL_ERU},
+ ["level"] = 35,
+ ["mana"] = 400,
+ ["mana_max"] = 400,
+ ["fail"] = 80,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ return fire_ball(GF_MAKE_GLYPH, 0, 1, 1 + get_level(ERU_PROT, 2, 0))
+ end,
+ ["info"] = function()
+ return "rad "..(1 + get_level(ERU_PROT, 2, 0))
+ end,
+ ["desc"] = {
+ "Creates a circle of safety around you",
+ }
+}
diff --git a/lib/scpt/s_fire.lua b/lib/scpt/s_fire.lua
new file mode 100644
index 00000000..dbbf7604
--- /dev/null
+++ b/lib/scpt/s_fire.lua
@@ -0,0 +1,227 @@
+-- handle the fire school
+
+GLOBELIGHT = add_spell
+{
+ ["name"] = "Globe of Light",
+ ["school"] = {SCHOOL_FIRE},
+ ["level"] = 1,
+ ["mana"] = 2,
+ ["mana_max"] = 15,
+ ["fail"] = 10,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 5 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 7,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 10, 45 },
+ },
+ },
+ ["inertia"] = { 1, 40 },
+ ["spell"] = function()
+ local obvious
+ if get_level(GLOBELIGHT, 50) >= 3 then
+ obvious = lite_area(10, 4)
+ else
+ lite_room(player.py, player.px)
+ obvious = TRUE
+ end
+ if get_level(GLOBELIGHT, 50) >= 15 then
+ obvious = is_obvious(fire_ball(GF_LITE, 0, 10 + get_level(GLOBELIGHT, 100), 5 + get_level(GLOBELIGHT, 6)), obvious)
+ player.update = bor(player.update, PU_VIEW)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ if get_level(GLOBELIGHT, 50) >= 15 then
+ return "dam "..(10 + get_level(GLOBELIGHT, 100)).." rad "..(5 + get_level(GLOBELIGHT, 6))
+ else
+ return ""
+ end
+ end,
+ ["desc"] = {
+ "Creates a globe of pure light",
+ "At level 3 it starts damaging monsters",
+ "At level 15 it starts creating a more powerful kind of light",
+ }
+}
+
+FIREFLASH = add_spell
+{
+ ["name"] = "Fireflash",
+ ["school"] = {SCHOOL_FIRE},
+ ["level"] = 10,
+ ["mana"] = 5,
+ ["mana_max"] = 70,
+ ["fail"] = 35,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 35,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 15, 35 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir, type
+ if (get_level(FIREFLASH, 50) >= 20) then
+ type = GF_HOLY_FIRE
+ else
+ type = GF_FIRE
+ end
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(type, dir, 20 + get_level(FIREFLASH, 500), 2 + get_level(FIREFLASH, 5))
+ end,
+ ["info"] = function()
+ return "dam "..(20 + get_level(FIREFLASH, 500)).." rad "..(2 + get_level(FIREFLASH, 5))
+ end,
+ ["desc"] = {
+ "Conjures a ball of fire to burn your foes to ashes",
+ "At level 20 it turns into a ball of holy fire"
+ }
+}
+
+FIERYAURA = add_spell
+{
+ ["name"] = "Fiery Shield",
+ ["school"] = {SCHOOL_FIRE},
+ ["level"] = 20,
+ ["mana"] = 20,
+ ["mana_max"] = 60,
+ ["fail"] = 50,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 5 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 50,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 5, 40 },
+ },
+ },
+ ["inertia"] = { 2, 15 },
+ ["spell"] = function()
+ local type
+ if (get_level(FIERYAURA, 50) >= 8) then
+ type = SHIELD_GREAT_FIRE
+ else
+ type = SHIELD_FIRE
+ end
+ return set_shield(randint(20) + 10 + get_level(FIERYAURA, 70), 10, type, 5 + get_level(FIERYAURA, 10), 5 + get_level(FIERYAURA, 7))
+ end,
+ ["info"] = function()
+ return "dam "..(5 + get_level(FIERYAURA, 15)).."d"..(5 + get_level(FIERYAURA, 7)).." dur "..(10 + get_level(FIERYAURA, 70)).."+d20"
+ end,
+ ["desc"] = {
+ "Creates a shield of fierce flames around you",
+ "At level 8 it turns into a greater kind of flame that can not be resisted"
+ }
+}
+
+FIREWALL = add_spell
+{
+ ["name"] = "Firewall",
+ ["school"] = {SCHOOL_FIRE},
+ ["level"] = 15,
+ ["mana"] = 25,
+ ["mana_max"] = 100,
+ ["fail"] = 40,
+ ["stick"] =
+ {
+ ["charge"] = { 4, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 55,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 5, 40 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir, type
+ if (get_level(FIREWALL, 50) >= 6) then
+ type = GF_HELL_FIRE
+ else
+ type = GF_FIRE
+ end
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ fire_wall(type, dir, 40 + get_level(FIREWALL, 150), 10 + get_level(FIREWALL, 14))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(40 + get_level(FIREWALL, 150)).." dur "..(10 + get_level(FIREWALL, 14))
+ end,
+ ["desc"] = {
+ "Creates a fiery wall to incinerate monsters stupid enough to attack you",
+ "At level 6 it turns into a wall of hell fire"
+ }
+}
+
+FIREGOLEM = add_spell
+{
+ ["name"] = "Fire Golem",
+ ["school"] = {SCHOOL_FIRE, SCHOOL_MIND},
+ ["level"] = 7,
+ ["mana"] = 16,
+ ["mana_max"] = 70,
+ ["fail"] = 40,
+ ["spell"] = function()
+ local m_idx, y, x, ret, item
+
+ -- Can we reconnect ?
+ if do_control_reconnect() == TRUE then
+ msg_print("Control re-established.")
+ return
+ end
+
+ ret, item = get_item("Which light source do you want to use to create the golem?",
+ "You have no light source for the golem",
+ bor(USE_INVEN, USE_EQUIP),
+ function (obj)
+ if (obj.tval == TV_LITE) and ((obj.sval == SV_LITE_TORCH) or (obj.sval == SV_LITE_LANTERN)) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+ if ret == FALSE then return TRUE end
+ inven_item_increase(item, -1)
+ inven_item_describe(item)
+ inven_item_optimize(item)
+
+ -- Summon it
+ m_allow_special[1043 + 1] = TRUE
+ y, x = find_position(player.py, player.px)
+ m_idx = place_monster_one(y, x, 1043, 0, FALSE, MSTATUS_FRIEND)
+ m_allow_special[1043 + 1] = FALSE
+
+ -- level it
+ if m_idx ~= 0 then
+ monster_set_level(m_idx, 7 + get_level(FIREGOLEM, 70))
+ player.control = m_idx
+ monster(m_idx).mflag = bor(monster(m_idx).mflag, MFLAG_CONTROL)
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return "golem level "..(7 + get_level(FIREGOLEM, 70))
+ end,
+ ["desc"] = {
+ "Creates a fiery golem and controls it",
+ "During the control the available keylist is:",
+ "Movement keys: movement of the golem(depending on its speed",
+ " it can move more than one square)",
+ ", : pickup all items on the floor",
+ "d : drop all carried items",
+ "i : list all carried items",
+ "m : end the possession/use golem powers",
+ "Most of the other keys are disabled, you cannot interact with your",
+ "real body while controlling the golem",
+ "But to cast the spell you will need a lantern or a wooden torch to",
+ "Create the golem from"
+ }
+}
diff --git a/lib/scpt/s_geom.lua b/lib/scpt/s_geom.lua
new file mode 100644
index 00000000..b9730318
--- /dev/null
+++ b/lib/scpt/s_geom.lua
@@ -0,0 +1,656 @@
+-- Geomancy school
+
+function geomancy_random_wall(y, x)
+ local c_ptr = cave(y, x)
+
+ -- Do not destroy permanent things
+ if cave_is(c_ptr, FF1_PERMANENT) ~= FALSE then return end
+
+ local feat = nil
+ local table =
+ {
+ [1] = { SKILL_FIRE, FEAT_SANDWALL, 1},
+
+ [2] = { SKILL_WATER, FEAT_TREES, 1},
+ [3] = { SKILL_WATER, FEAT_ICE_WALL, 12},
+
+ [4] = { SKILL_EARTH, FEAT_WALL_EXTRA, 1},
+ }
+
+ while feat == nil do
+ local t = table[randint(getn(table))]
+
+ -- Do we meet the requirements ?
+ -- And then select the features based on skill proportions
+ if get_skill(t[1]) >= t[3] and magik(get_skill_scale(t[1], 100)) == TRUE then
+ feat = t[2]
+ end
+ end
+
+ cave_set_feat(y, x, feat)
+end
+
+
+GF_ELEMENTAL_WALL = add_spell_type
+{
+ ["color"] = { TERM_GREEN, 0 },
+ ["angry"] = function() return TRUE, FALSE end,
+ ["grid"] = function(who, dam, rad, y, x)
+ if player.py ~= y or player.px ~= x then
+ geomancy_random_wall(y, x)
+ end
+ end,
+}
+
+function geomancy_random_floor(y, x, kill_wall)
+ local c_ptr = cave(y, x)
+
+ -- Do not destroy permanent things
+ if cave_is(c_ptr, FF1_PERMANENT) ~= FALSE then return end
+ if not kill_wall then
+ if cave_is(c_ptr, FF1_FLOOR) ~= TRUE then return end
+ end
+
+ local feat = nil
+ local table =
+ {
+ [1] = { SKILL_FIRE, FEAT_SAND, 1},
+ [2] = { SKILL_FIRE, FEAT_SHAL_LAVA, 8},
+ [3] = { SKILL_FIRE, FEAT_DEEP_LAVA, 18},
+
+ [4] = { SKILL_WATER, FEAT_SHAL_WATER, 1},
+ [5] = { SKILL_WATER, FEAT_DEEP_WATER, 8},
+ [6] = { SKILL_WATER, FEAT_ICE, 18},
+
+ [7] = { SKILL_EARTH, FEAT_GRASS, 1},
+ [8] = { SKILL_EARTH, FEAT_FLOWER, 8},
+ [9] = { SKILL_EARTH, FEAT_DARK_PIT, 18},
+ }
+
+ while feat == nil do
+ local t = table[randint(getn(table))]
+
+ -- Do we meet the requirements ?
+ -- And then select the features based on skill proportions
+ if get_skill(t[1]) >= t[3] and magik(get_skill_scale(t[1], 100)) == TRUE then
+ feat = t[2]
+ end
+ end
+
+ cave_set_feat(y, x, feat)
+end
+
+
+GF_ELEMENTAL_GROWTH = add_spell_type
+{
+ ["color"] = { TERM_GREEN, 0 },
+ ["angry"] = function() return TRUE, FALSE end,
+ ["grid"] = function(who, dam, rad, y, x)
+ geomancy_random_floor(y, x)
+ end,
+}
+
+CALL_THE_ELEMENTS = add_spell
+{
+ ["name"] = "Call the Elements",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 1,
+ ["mana"] = 2,
+ ["mana_max"] = 20,
+ ["fail"] = 10,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, dir = 0, 0
+
+ if get_level(CALL_THE_ELEMENTS) >= 17 then
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ end
+
+ fire_ball(GF_ELEMENTAL_GROWTH, dir, 1, 1 + get_level(CALL_THE_ELEMENTS, 5, 0))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(1 + get_level(CALL_THE_ELEMENTS, 5, 0))
+ end,
+ ["desc"] = {
+ "Randomly creates various elements around you",
+ "Each type of element chance is controlled by your level",
+ "in the corresponding skill",
+ "At level 17 it can be targeted",
+ }
+}
+
+-- Seperate function because an other spell needs it
+function channel_the_elements(y, x, level, silent)
+ local t =
+ {
+ -- Earth stuff
+ [FEAT_GRASS] = function()
+ hp_player(player.mhp * (5 + get_skill_scale(SKILL_EARTH, 20)) / 100)
+ end,
+ [FEAT_FLOWER] = function()
+ hp_player(player.mhp * (5 + get_skill_scale(SKILL_EARTH, 30)) / 100)
+ end,
+ [FEAT_DARK_PIT] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ local type = GF_DARK
+ if get_skill(SKILL_EARTH) >= 18 then type = GF_NETHER end
+ fire_bolt(type, dir, damroll(10, get_skill(SKILL_EARTH)))
+ end,
+
+ -- Water stuff
+ [FEAT_SHAL_WATER] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ local type = GF_WATER
+ if get_skill(SKILL_WATER) >= 18 then type = GF_WAVE end
+
+ if get_skill(SKILL_WATER) >= 8 then
+ fire_beam(type, dir, damroll(3, get_skill(SKILL_WATER)))
+ else
+ fire_bolt(type, dir, damroll(3, get_skill(SKILL_WATER)))
+ end
+ end,
+ [FEAT_DEEP_WATER] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ local type = GF_WATER
+ if get_skill(SKILL_WATER) >= 18 then type = GF_WAVE end
+
+ if get_skill(SKILL_WATER) >= 8 then
+ fire_beam(type, dir, damroll(5, get_skill(SKILL_WATER)))
+ else
+ fire_bolt(type, dir, damroll(5, get_skill(SKILL_WATER)))
+ end
+ end,
+ [FEAT_ICE] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ if get_skill(SKILL_WATER) >= 12 then
+ fire_ball(GF_ICE, dir, get_skill_scale(SKILL_WATER, 340), 3)
+ else
+ fire_bolt(GF_ICE, dir, damroll(3, get_skill(SKILL_WATER)))
+ end
+ end,
+
+ -- Fire stuff
+ [FEAT_SAND] = function()
+ local type
+ if (get_level(FIERYAURA, 50) >= 8) then
+ type = SHIELD_GREAT_FIRE
+ else
+ type = SHIELD_FIRE
+ end
+ local dur = randint(20) + %level + get_skill(SKILL_AIR)
+ set_shield(dur, 0, type, 5 + get_skill_scale(SKILL_FIRE, 20), 5 + get_skill_scale(SKILL_FIRE, 14))
+ set_blind(dur)
+ end,
+ [FEAT_SHAL_LAVA] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ if get_skill(SKILL_FIRE) >= 15 then
+ fire_bolt(GF_HELL_FIRE, dir, damroll(get_skill_scale(SKILL_FIRE, 30), 15))
+ else
+ fire_bolt(GF_FIRE, dir, damroll(get_skill_scale(SKILL_FIRE, 30), 15))
+ end
+ end,
+ [FEAT_DEEP_LAVA] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ if get_skill(SKILL_FIRE) >= 15 then
+ fire_ball(GF_HELL_FIRE, dir, damroll(get_skill_scale(SKILL_FIRE, 30), 15), 3)
+ else
+ fire_ball(GF_FIRE, dir, damroll(get_skill_scale(SKILL_FIRE, 30), 15), 3)
+ end
+ end,
+ }
+
+ if t[cave(y, x).feat] then
+ t[cave(y, x).feat]()
+
+ if magik(100 - level) == TRUE then
+ if cave(y, x).feat == FEAT_FLOWER then
+ cave_set_feat(y, x, FEAT_GRASS)
+ else
+ cave_set_feat(y, x, FEAT_FLOOR)
+ end
+ msg_print("The area is drained.")
+ end
+ elseif not silent then
+ msg_print("You cannot channel this area.")
+ end
+end
+
+CHANNEL_ELEMENTS = add_spell
+{
+ ["name"] = "Channel Elements",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 3,
+ ["mana"] = 3,
+ ["mana_max"] = 30,
+ ["fail"] = 20,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ ["spell"] = function()
+ channel_the_elements(player.py, player.px, get_level(CHANNEL_ELEMENTS), nil)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Draws on the caster's immediate environs to form an attack or other effect.",
+ "Grass/Flower heals.",
+ "Water creates water bolt attacks.",
+ "Ice creates ice bolt attacks.",
+ "Sand creates a wall of thick, blinding, burning sand around you.",
+ "Lava creates fire bolt attacks.",
+ "Deep lava creates fire ball attacks.",
+ "Chasm creates darkness bolt attacks.",
+ "At Earth level 18, darkness becomes nether.",
+ "At Water level 8, water attacks become beams with a striking effect.",
+ "At Water level 12, ice attacks become balls of ice shards.",
+ "At Water level 18, water attacks push monsters back.",
+ "At Fire level 15, fire become hellfire.",
+ }
+}
+
+ELEMENTAL_WAVE = add_spell
+{
+ ["name"] = "Elemental Wave",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 15,
+ ["mana"] = 15,
+ ["mana_max"] = 50,
+ ["fail"] = 20,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ ["spell"] = function()
+ local ret, dir = get_rep_dir()
+ if ret == FALSE then return end
+
+ local y, x = explode_dir(dir)
+ y = y + player.py
+ x = x + player.px
+
+ local t =
+ {
+ -- Earth stuff
+ [FEAT_GRASS] = { GF_POIS, GF_POIS, 10 + get_skill_scale(SKILL_EARTH, 200) },
+ [FEAT_FLOWER] = { GF_POIS, GF_POIS, 10 + get_skill_scale(SKILL_EARTH, 300) },
+ -- cannot turn chasm into a wave
+
+ -- Water stuff
+ [FEAT_SHAL_WATER] = { GF_WATER, GF_WATER, 10 + get_skill_scale(SKILL_WATER, 200) },
+ [FEAT_DEEP_WATER] = { GF_WATER, GF_WATER, 10 + get_skill_scale(SKILL_WATER, 300) },
+ [FEAT_ICE] = { GF_ICE, GF_ICE, 10 + get_skill_scale(SKILL_WATER, 200) },
+
+ -- Fire stuff
+ [FEAT_SAND] = { GF_LITE, GF_LITE, 10 + get_skill_scale(SKILL_FIRE, 400) },
+ [FEAT_SHAL_LAVA] = { GF_FIRE, GF_HOLY_FIRE, 10 + get_skill_scale(SKILL_FIRE, 200) },
+ [FEAT_DEEP_LAVA] = { GF_FIRE, GF_HOLY_FIRE, 10 + get_skill_scale(SKILL_FIRE, 300) },
+ }
+
+
+ local effect = t[cave(y, x).feat]
+ if not effect then
+ msg_print("You cannot channel this area.")
+ else
+ local typ = effect[1]
+ if get_level(ELEMENTAL_WAVE) >= 20 then typ = effect[2] end
+
+ cave_set_feat(y, x, FEAT_FLOOR)
+
+ fire_wave(typ, 0, effect[3], 0, 6 + get_level(ELEMENTAL_WAVE, 20), EFF_WAVE + EFF_LAST + getglobal("EFF_DIR"..dir))
+ end
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Draws on an adjacent special square to project a slow-moving",
+ "wave of that element in that direction",
+ "Abyss squares cannot be channeled into a wave.",
+ }
+}
+
+VAPORIZE = add_spell
+{
+ ["name"] = "Vaporize",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 4,
+ ["mana"] = 3,
+ ["mana_max"] = 30,
+ ["fail"] = 15,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ -- Must have at least 4 Air
+ ["random"] = 0,
+ ["depend"] = function()
+ if get_skill(SKILL_AIR) >= 4 then return TRUE end
+ end,
+ ["spell"] = function()
+ local t =
+ {
+ -- Earth stuff
+ [FEAT_GRASS] = { GF_POIS, GF_POIS, 5 + get_skill_scale(SKILL_EARTH, 100) },
+ [FEAT_FLOWER] = { GF_POIS, GF_POIS, 5 + get_skill_scale(SKILL_EARTH, 150) },
+ [FEAT_DARK_PIT] = { GF_DARK, GF_DARK, 5 + get_skill_scale(SKILL_EARTH, 200) },
+
+ -- Water stuff
+ [FEAT_SHAL_WATER] = { GF_WATER, GF_WATER, 5 + get_skill_scale(SKILL_WATER, 100) },
+ [FEAT_DEEP_WATER] = { GF_WATER, GF_WATER, 5 + get_skill_scale(SKILL_WATER, 150) },
+ [FEAT_ICE] = { GF_ICE, GF_ICE, 5 + get_skill_scale(SKILL_WATER, 100) },
+
+ -- Fire stuff
+ [FEAT_SAND] = { GF_LITE, GF_LITE, 5 + get_skill_scale(SKILL_FIRE, 200) },
+ [FEAT_SHAL_LAVA] = { GF_FIRE, GF_HOLY_FIRE, 5 + get_skill_scale(SKILL_FIRE, 100) },
+ [FEAT_DEEP_LAVA] = { GF_FIRE, GF_HOLY_FIRE, 5 + get_skill_scale(SKILL_FIRE, 150) },
+ }
+
+ local effect = t[cave(player.py, player.px).feat]
+ if not effect then
+ msg_print("You cannot channel this area.")
+ else
+ local typ = effect[1]
+ if get_level(VAPORIZE) >= 20 then typ = effect[2] end
+
+ cave_set_feat(player.py, player.px, FEAT_FLOOR)
+
+ fire_cloud(typ, 0, effect[3], 1 + get_level(VAPORIZE, 4), 10 + get_level(VAPORIZE, 20))
+ end
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(1 + get_level(VAPORIZE, 4)).." dur "..(10 + get_level(VAPORIZE, 20))
+ end,
+ ["desc"] = {
+ "Draws upon your immediate environs to form a cloud of damaging vapors",
+ }
+}
+
+geomancy_can_tunnel =
+{
+ [FEAT_WALL_EXTRA] = TRUE,
+ [FEAT_WALL_OUTER] = TRUE,
+ [FEAT_WALL_INNER] = TRUE,
+ [FEAT_WALL_SOLID] = TRUE,
+
+ [FEAT_MAGMA] = TRUE,
+ [FEAT_QUARTZ] = TRUE,
+ [FEAT_MAGMA_H] = TRUE,
+ [FEAT_QUARTZ_H] = TRUE,
+ [FEAT_MAGMA_K] = TRUE,
+ [FEAT_QUARTZ_K] = TRUE,
+
+ [FEAT_TREES] = TRUE,
+ [FEAT_DEAD_TREE] = TRUE,
+
+ [FEAT_SANDWALL] = TRUE,
+ [FEAT_SANDWALL_H] = TRUE,
+ [FEAT_SANDWALL_K] = TRUE,
+
+ [FEAT_ICE_WALL] = TRUE,
+}
+
+-- Dig & sprew
+function geomancy_dig(oy, ox, dir, length)
+ local dy, dx = explode_dir(dir)
+ local y = dy + oy
+ local x = dx + ox
+
+ for i = 1, length do
+ local c_ptr = cave(y, x)
+ local ox = x - dx
+ local oy = y - dy
+
+ -- stop at the end of tunnelable things
+ if not geomancy_can_tunnel[c_ptr.feat] then break end
+
+ if geomancy_can_tunnel[cave(y - 1, x - 1).feat] then geomancy_random_wall(y - 1, x - 1) end
+ if geomancy_can_tunnel[cave(y - 1, x).feat] then geomancy_random_wall(y - 1, x) end
+ if geomancy_can_tunnel[cave(y - 1, x + 1).feat] then geomancy_random_wall(y - 1, x + 1) end
+
+ if geomancy_can_tunnel[cave(y, x - 1).feat] then geomancy_random_wall(y, x - 1) end
+ if geomancy_can_tunnel[cave(y, x + 1).feat] then geomancy_random_wall(y, x + 1) end
+
+ if geomancy_can_tunnel[cave(y + 1, x - 1).feat] then geomancy_random_wall(y + 1, x - 1) end
+ if geomancy_can_tunnel[cave(y + 1, x).feat] then geomancy_random_wall(y + 1, x) end
+ if geomancy_can_tunnel[cave(y + 1, x + 1).feat] then geomancy_random_wall(y + 1, x + 1) end
+
+ y = y + dy
+ x = x + dx
+ end
+
+ y = y - dy
+ x = x - dx
+ while (y ~= oy) or (x ~= ox) do
+ geomancy_random_floor(y, x, TRUE)
+
+ -- Should we branch ?
+ if magik(20) == TRUE then
+ local rot = 1
+ if magik(50) == TRUE then rot = -1 end
+ geomancy_dig(y, x, rotate_dir(dir, rot), length / 3)
+ end
+
+ y = y - dy
+ x = x - dx
+ end
+end
+
+GEOLYSIS = add_spell
+{
+ ["name"] = "Geolysis",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 7,
+ ["mana"] = 15,
+ ["mana_max"] = 40,
+ ["fail"] = 15,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ -- Must have at least 7 Earth
+ ["depend"] = function()
+ if get_skill(SKILL_EARTH) >= 7 then return TRUE end
+ end,
+ ["spell"] = function()
+ local ret, dir = get_rep_dir()
+ if ret == FALSE then return end
+
+ msg_print("Elements recombine before you, laying down an open path.")
+ geomancy_dig(player.py, player.px, dir, 5 + get_level(GEOLYSIS, 12))
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return "length "..(5 + get_level(GEOLYSIS, 12))
+ end,
+ ["desc"] = {
+ "Burrows deeply and slightly at random into a wall,",
+ "leaving behind tailings of various different sorts of walls in the passage.",
+ }
+}
+
+player.dripping_tread = 0
+add_loadsave("player.dripping_tread", 0)
+add_hooks
+{
+ [HOOK_MOVED] = function(oy, ox)
+ if player.dripping_tread > 0 then
+ geomancy_random_floor(oy, ox)
+ player.dripping_tread = player.dripping_tread - 1
+ if player.dripping_tread == 0 then
+ msg_print("You stop dripping raw elemental energies.")
+ end
+ end
+ end
+}
+DRIPPING_TREAD = add_spell
+{
+ ["name"] = "Dripping Tread",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 10,
+ ["mana"] = 15,
+ ["mana_max"] = 25,
+ ["fail"] = 15,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ -- Must have at least 10 Water
+ ["depend"] = function()
+ if get_skill(SKILL_WATER) >= 10 then return TRUE end
+ end,
+ ["spell"] = function()
+ if player.dripping_tread == 0 then
+ player.dripping_tread = randint(15) + 10 + get_level(DRIPPING_TREAD)
+ msg_print("You start dripping raw elemental energies.")
+ else
+ player.dripping_tread = 0
+ msg_print("You stop dripping raw elemental energies.")
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dur "..(10 + get_level(DRIPPING_TREAD)).."+d15 movs"
+ end,
+ ["desc"] = {
+ "Causes you to leave random elemental forms behind as you walk",
+ }
+}
+
+GROW_BARRIER = add_spell
+{
+ ["name"] = "Grow Barrier",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 12,
+ ["mana"] = 30,
+ ["mana_max"] = 40,
+ ["fail"] = 15,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ ["random"] = 0,
+ -- Must have at least 12 Earth
+ ["depend"] = function()
+ if get_skill(SKILL_EARTH) >= 12 then return TRUE end
+ end,
+ ["spell"] = function()
+ local ret, dir = 0, 0
+
+ if get_level(GROW_BARRIER) >= 20 then
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ end
+
+ fire_ball(GF_ELEMENTAL_WALL, dir, 1, 1)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Creates impassable terrain (walls, trees, etc.) around you.",
+ "At level 20 it can be projected around another area.",
+ }
+}
+
+ELEMENTAL_MINION = add_spell
+{
+ ["name"] = "Elemental Minion",
+ ["school"] = {SCHOOL_GEOMANCY},
+ ["level"] = 20,
+ ["mana"] = 40,
+ ["mana_max"] = 80,
+ ["fail"] = 25,
+ -- Unnafected by blindness
+ ["random"] = 0,
+ -- Must have at least 12 Earth
+ ["spell"] = function()
+ local ret, dir = 0, 0
+
+ ret, dir = get_rep_dir()
+ if ret == FALSE then return end
+
+ local t =
+ {
+ [FEAT_WALL_EXTRA] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_WALL_OUTER] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_WALL_INNER] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_WALL_SOLID] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_MAGMA] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_QUARTZ] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_MAGMA_H] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_QUARTZ_H] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_MAGMA_K] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+ [FEAT_QUARTZ_K] = { SKILL_EARTH, { "Earth elemental", "Xorn", "Xaren" } },
+
+ [FEAT_DARK_PIT] = { SKILL_AIR, { "Air elemental", "Ancient blue dragon", "Great Storm Wyrm", "Sky Drake" } },
+
+ [FEAT_SANDWALL] = { SKILL_FIRE, { "Fire elemental", "Ancient red dragon" } },
+ [FEAT_SANDWALL_H] = { SKILL_FIRE, { "Fire elemental", "Ancient red dragon" } },
+ [FEAT_SANDWALL_K] = { SKILL_FIRE, { "Fire elemental", "Ancient red dragon" } },
+ [FEAT_SHAL_LAVA] = { SKILL_FIRE, { "Fire elemental", "Ancient red dragon" } },
+ [FEAT_DEEP_LAVA] = { SKILL_FIRE, { "Fire elemental", "Ancient red dragon" } },
+
+ [FEAT_ICE_WALL] = { SKILL_WATER, { "Water elemental", "Water troll", "Water demon" } },
+ [FEAT_SHAL_WATER] = { SKILL_WATER, { "Water elemental", "Water troll", "Water demon" } },
+ [FEAT_DEEP_WATER] = { SKILL_WATER, { "Water elemental", "Water troll", "Water demon" } },
+ }
+
+ local y, x = explode_dir(dir)
+ y = y + player.py
+ x = x + player.px
+
+ local effect = t[cave(y, x).feat]
+ if not effect then
+ msg_print("You cannot summon from this area.")
+ else
+ local skill = effect[1]
+ local types = effect[2]
+
+ local max = get_skill_scale(skill, getn(types))
+ if max == 0 then max = 1 end
+
+ local r_idx = test_monster_name(types[rand_range(1, max)])
+
+ -- Summon it
+ local my, mx = find_position(y, x)
+ local m_idx = place_monster_one(my, mx, r_idx, 0, FALSE, MSTATUS_FRIEND)
+
+ -- level it
+ if m_idx ~= 0 then
+ monster_set_level(m_idx, 10 + get_level(ELEMENTAL_MINION, 120))
+ end
+
+ cave_set_feat(y, x, FEAT_FLOOR)
+ end
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return "min level "..(10 + get_level(ELEMENTAL_MINION, 120))
+ end,
+ ["desc"] = {
+ "Summons a minion from a nearby element.",
+ "Walls can summon Earth elmentals, Xorns and Xarens",
+ "Dark Pits can summon Air elementals, Ancient blue dragons, Great Storm Wyrms",
+ "and Sky Drakes",
+ "Sandwalls and lava can summon Fire elementals and Ancient red dragons",
+ "Icewall, and water can summon Water elementals, Water trolls and Water demons",
+ }
+}
diff --git a/lib/scpt/s_mana.lua b/lib/scpt/s_mana.lua
new file mode 100644
index 00000000..736b06b0
--- /dev/null
+++ b/lib/scpt/s_mana.lua
@@ -0,0 +1,132 @@
+-- The mana school
+
+function get_manathrust_dam()
+ return 3 + get_level(MANATHRUST, 50), 1 + get_level(MANATHRUST, 20)
+end
+
+MANATHRUST = add_spell
+{
+ ["name"] = "Manathrust",
+ ["school"] = SCHOOL_MANA,
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 25,
+ ["fail"] = 10,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 10 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 5,
+ ["base_level"] = { 1, 20 },
+ ["max_level"] = { 15, 33 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir
+
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_bolt(GF_MANA, dir, damroll(get_manathrust_dam()))
+ end,
+ ["info"] = function()
+ local x, y
+
+ x, y = get_manathrust_dam()
+ return "dam "..x.."d"..y
+ end,
+ ["desc"] = {
+ "Conjures up mana into a powerful bolt",
+ "The damage is irresistible and will increase with level"
+ }
+}
+
+DELCURSES = add_spell
+{
+ ["name"] = "Remove Curses",
+ ["school"] = SCHOOL_MANA,
+ ["level"] = 10,
+ ["mana"] = 20,
+ ["mana_max"] = 40,
+ ["fail"] = 30,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 8 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 70,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 15, 50 },
+ },
+ },
+ ["inertia"] = { 1, 10 },
+ ["spell"] = function()
+ local done
+
+ if get_level(DELCURSES, 50) >= 20 then done = remove_all_curse()
+ else done = remove_curse() end
+ if done == TRUE then msg_print("The curse is broken!") end
+ return done
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Remove curses of worn objects",
+ "At level 20 switches to *remove curses*"
+ }
+}
+
+RESISTS = add_spell
+{
+ ["name"] = "Elemental Shield",
+ ["school"] = SCHOOL_MANA,
+ ["level"] = 20,
+ ["mana"] = 17,
+ ["mana_max"] = 20,
+ ["fail"] = 40,
+ ["inertia"] = { 2, 25 },
+ ["spell"] = function()
+ local obvious
+ if player.oppose_fire == 0 then obvious = set_oppose_fire(randint(10) + 15 + get_level(RESISTS, 50)) end
+ if player.oppose_cold == 0 then obvious = is_obvious(set_oppose_cold(randint(10) + 15 + get_level(RESISTS, 50)), obvious) end
+ if player.oppose_elec == 0 then obvious = is_obvious(set_oppose_elec(randint(10) + 15 + get_level(RESISTS, 50)), obvious) end
+ if player.oppose_acid == 0 then obvious = is_obvious(set_oppose_acid(randint(10) + 15 + get_level(RESISTS, 50)), obvious) end
+ return obvious
+ end,
+ ["info"] = function()
+ return "dur "..(15 + get_level(RESISTS, 50)).."+d10"
+ end,
+ ["desc"] = {
+ "Provide resistances to the four basic elements",
+ }
+}
+
+MANASHIELD = add_spell
+{
+ ["name"] = "Disruption Shield",
+ ["school"] = SCHOOL_MANA,
+ ["level"] = 45,
+ ["mana"] = 50,
+ ["mana_max"] = 50,
+ ["fail"] = 90,
+ ["inertia"] = { 9, 10},
+ ["spell"] = function()
+ if get_level(MANASHIELD, 50) >= 5 then
+ if (player.invuln == 0) then
+ return set_invuln(randint(5) + 3 + get_level(MANASHIELD, 10))
+ end
+ else
+ if (player.disrupt_shield == 0) then return set_disrupt_shield(randint(5) + 3 + get_level(MANASHIELD, 10)) end
+ end
+ end,
+ ["info"] = function()
+ return "dur "..(3 + get_level(MANASHIELD, 10)).."+d5"
+ end,
+ ["desc"] = {
+ "Uses mana instead of hp to take damage",
+ "At level 5 switches to Globe of Invulnerability.",
+ "The spell breaks as soon as a melee, shooting, throwing or magical",
+ "skill action is attempted, and lasts only a short time."
+ }
+}
diff --git a/lib/scpt/s_manwe.lua b/lib/scpt/s_manwe.lua
new file mode 100644
index 00000000..6f0f9661
--- /dev/null
+++ b/lib/scpt/s_manwe.lua
@@ -0,0 +1,144 @@
+-- Handle Manwe Sulimo magic school
+
+MANWE_SHIELD = add_spell
+{
+ ["name"] = "Wind Shield",
+ ["school"] = {SCHOOL_MANWE},
+ ["level"] = 10,
+ ["mana"] = 100,
+ ["mana_max"] = 500,
+ ["fail"] = 30,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local dur = get_level(MANWE_SHIELD, 50) + 10 + randint(20)
+ local obvious
+
+ obvious = set_protevil(dur)
+ if get_level(MANWE_SHIELD) >= 10 then
+ local type
+
+ type = 0
+ if get_level(MANWE_SHIELD) >= 20 then
+ type = SHIELD_COUNTER
+ end
+ obvious = is_obvious(set_shield(dur, get_level(MANWE_SHIELD, 30), type, 1 + get_level(MANWE_SHIELD, 2), 1 + get_level(MANWE_SHIELD, 6)), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ local desc = "dur "..(get_level(MANWE_SHIELD, 50) + 10).."+d20"
+
+ if get_level(MANWE_SHIELD) >= 10 then
+ desc = desc.." AC "..(get_level(MANWE_SHIELD, 30))
+ end
+ if get_level(MANWE_SHIELD) >= 20 then
+ desc = desc.." dam "..(1 + get_level(MANWE_SHIELD, 2)).."d"..(1 + get_level(MANWE_SHIELD, 6))
+ end
+ return desc
+ end,
+ ["desc"] = {
+ "It surrounds you with a shield of wind that deflects blows from evil monsters",
+ "At level 10 it increases your armour rating",
+ "At level 20 it retaliates against monsters that melee you",
+ }
+}
+
+MANWE_AVATAR = add_spell
+{
+ ["name"] = "Avatar",
+ ["school"] = {SCHOOL_MANWE},
+ ["level"] = 35,
+ ["mana"] = 1000,
+ ["mana_max"] = 1000,
+ ["fail"] = 80,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ return set_mimic(get_level(MANWE_AVATAR, 20) + randint(10), resolve_mimic_name("Maia"), player.lev)
+ end,
+ ["info"] = function()
+ return "dur "..(get_level(MANWE_AVATAR, 20)).."+d10"
+ end,
+ ["desc"] = {
+ "It turns you into a full grown Maia",
+ }
+}
+
+MANWE_BLESS = add_spell
+{
+ ["name"] = "Manwe's Blessing",
+ ["school"] = {SCHOOL_MANWE},
+ ["level"] = 1,
+ ["mana"] = 10,
+ ["mana_max"] = 100,
+ ["fail"] = 20,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local dur = get_level(MANWE_BLESS, 70) + 30 + randint(40)
+ local obvious
+
+ obvious = set_blessed(dur)
+ obvious = is_obvious(set_afraid(0), obvious)
+ obvious = is_obvious(set_lite(0), obvious)
+ if get_level(MANWE_BLESS) >= 10 then
+ obvious = is_obvious(set_hero(dur), obvious)
+ end
+ if get_level(MANWE_BLESS) >= 20 then
+ obvious = is_obvious(set_shero(dur), obvious)
+ end
+ if get_level(MANWE_BLESS) >= 30 then
+ obvious = is_obvious(set_holy(dur), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return "dur "..(get_level(MANWE_BLESS, 70) + 30).."+d40"
+ end,
+ ["desc"] = {
+ "Manwe's Blessing removes your fears, blesses you and surrounds you with",
+ "holy light",
+ "At level 10 it also grants heroism",
+ "At level 20 it also grants super heroism",
+ "At level 30 it also grants holy luck and life protection",
+ }
+}
+
+MANWE_CALL = add_spell
+{
+ ["name"] = "Manwe's Call",
+ ["school"] = {SCHOOL_MANWE},
+ ["level"] = 20,
+ ["mana"] = 200,
+ ["mana_max"] = 500,
+ ["fail"] = 40,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local y, x, m_idx
+
+ y, x = find_position(player.py, player.px)
+ m_idx = place_monster_one(y, x, test_monster_name("Great eagle"), 0, FALSE, MSTATUS_FRIEND)
+
+ if m_idx ~= 0 then
+ monster_set_level(m_idx, 20 + get_level(MANWE_CALL, 70, 0))
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return "level "..(get_level(MANWE_CALL, 70) + 20)
+ end,
+ ["desc"] = {
+ "Manwe's Call summons a Great Eagle to help you battle the forces",
+ "of Morgoth"
+ }
+}
diff --git a/lib/scpt/s_melkor.lua b/lib/scpt/s_melkor.lua
new file mode 100644
index 00000000..b2c693dd
--- /dev/null
+++ b/lib/scpt/s_melkor.lua
@@ -0,0 +1,154 @@
+-- handle the melkor school
+
+-- Not included in the spell code directly because I need to call it from somewhere else too
+function do_melkor_curse(who)
+ local m_ptr = monster(who)
+
+ if get_level(MELKOR_CURSE) >= 35 then
+ local r_ptr = race_info_idx(m_ptr.r_idx, m_ptr.ego)
+
+ m_ptr.maxhp = m_ptr.maxhp - r_ptr.hside;
+ if m_ptr.maxhp < 1 then m_ptr.maxhp = 1 end
+ if m_ptr.hp > m_ptr.maxhp then m_ptr.hp = m_ptr.maxhp end
+ player.redraw = bor(player.redraw, PR_HEALTH)
+ end
+ if get_level(MELKOR_CURSE) >= 25 then
+ m_ptr.speed = m_ptr.speed - get_level(MELKOR_CURSE, 7)
+ m_ptr.mspeed = m_ptr.mspeed - get_level(MELKOR_CURSE, 7)
+
+ if m_ptr.speed < 70 then m_ptr.speed = 70 end
+ if m_ptr.mspeed < 70 then m_ptr.mspeed = 70 end
+ end
+ if get_level(MELKOR_CURSE) >= 15 then
+ m_ptr.ac = m_ptr.ac - get_level(MELKOR_CURSE, 50)
+
+ if m_ptr.ac < -70 then m_ptr.ac = -70 end
+ end
+
+ local i, pow
+ i = 1
+ pow = get_level(MELKOR_CURSE, 2)
+ while (i <= 4) do
+ if m_ptr.blow[i].d_dice > 0 then
+ if m_ptr.blow[i].d_dice < pow then
+ pow = m_ptr.blow[i].d_dice
+ end
+ if m_ptr.blow[i].d_side < pow then
+ pow = m_ptr.blow[i].d_side
+ end
+ m_ptr.blow[i].d_dice = m_ptr.blow[i].d_dice - pow
+ end
+ i = i + 1
+ end
+
+ local m_name = monster_desc(m_ptr, 0).." looks weaker."
+ msg_print(strupper(strsub(m_name, 0, 1))..strsub(m_name, 2))
+
+ -- wake it
+ m_ptr.csleep = 0;
+end
+
+MELKOR_CURSE = add_spell
+{
+ ["name"] = "Curse",
+ ["school"] = {SCHOOL_MELKOR},
+ ["level"] = 1,
+ ["mana"] = 50,
+ ["mana_max"] = 300,
+ ["fail"] = 20,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ if target_who == -1 then
+ msg_print("You must target a monster.")
+ else
+ do_melkor_curse(target_who)
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "It curses a monster, reducing its melee power",
+ "At level 5 it can be auto-casted (with no piety cost) while fighting",
+ "At level 15 it also reduces armor",
+ "At level 25 it also reduces speed",
+ "At level 35 it also reduces max life (but it is never fatal)",
+ }
+}
+
+MELKOR_CORPSE_EXPLOSION = add_spell
+{
+ ["name"] = "Corpse Explosion",
+ ["school"] = {SCHOOL_MELKOR},
+ ["level"] = 10,
+ ["mana"] = 100,
+ ["mana_max"] = 500,
+ ["fail"] = 45,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ return fire_ball(GF_CORPSE_EXPL, 0, 20 + get_level(MELKOR_CORPSE_EXPLOSION, 70), 2 + get_level(MELKOR_CORPSE_EXPLOSION, 5))
+ end,
+ ["info"] = function()
+ return "dam "..(20 + get_level(MELKOR_CORPSE_EXPLOSION, 70)).."%"
+ end,
+ ["desc"] = {
+ "It makes corpses in an area around you explode for a percent of their",
+ "hit points as damage",
+ }
+}
+
+MELKOR_MIND_STEAL = add_spell
+{
+ ["name"] = "Mind Steal",
+ ["school"] = {SCHOOL_MELKOR},
+ ["level"] = 20,
+ ["mana"] = 1000,
+ ["mana_max"] = 3000,
+ ["fail"] = 90,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ if target_who == -1 then
+ msg_print("You must target a monster.")
+ else
+ local chance, m_ptr, r_ptr
+
+ m_ptr = monster(target_who)
+ r_ptr = race_info_idx(m_ptr.r_idx, m_ptr.ego)
+ chance = get_level(MELKOR_MIND_STEAL)
+ if (randint(m_ptr.level) < chance) and (band(r_ptr.flags1, RF1_UNIQUE) == 0) then
+ player.control = target_who
+ m_ptr.mflag = bor(m_ptr.mflag, MFLAG_CONTROL)
+
+ local m_name = monster_desc(m_ptr, 0).." falls under your control."
+ msg_print(strupper(strsub(m_name, 0, 1))..strsub(m_name, 2))
+ else
+ local m_name = monster_desc(m_ptr, 0).." resists."
+ msg_print(strupper(strsub(m_name, 0, 1))..strsub(m_name, 2))
+ end
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return "chance 1d(mlvl)<"..(get_level(MELKOR_MIND_STEAL))
+ end,
+ ["desc"] = {
+ "It allows your spirit to temporarily leave your own body, which will",
+ "be vulnerable, to control one of your enemies body."
+ }
+}
diff --git a/lib/scpt/s_meta.lua b/lib/scpt/s_meta.lua
new file mode 100644
index 00000000..eab691d8
--- /dev/null
+++ b/lib/scpt/s_meta.lua
@@ -0,0 +1,287 @@
+-- handle the meta school
+
+RECHARGE = add_spell
+{
+ ["name"] = "Recharge",
+ ["school"] = {SCHOOL_META},
+ ["level"] = 5,
+ ["mana"] = 10,
+ ["mana_max"] = 100,
+ ["fail"] = 20,
+ ["spell"] = function()
+ return recharge(60 + get_level(RECHARGE, 140))
+ end,
+ ["info"] = function()
+ return "power "..(60 + get_level(RECHARGE, 140))
+ end,
+ ["desc"] = {
+ "Taps on the ambient mana to recharge an object's power (charges or mana)",
+ }
+}
+
+function get_spellbinder_max()
+ local i
+
+ i = get_level(SPELLBINDER, 4)
+ if i > 4 then i = 4 end
+ return i
+end
+--'
+SPELLBINDER = add_spell
+{
+ ["name"] = "Spellbinder",
+ ["school"] = {SCHOOL_META},
+ ["level"] = 20,
+ ["mana"] = 100,
+ ["mana_max"] = 300,
+ ["fail"] = 85,
+ ["spell"] = function()
+ local i, ret, c
+
+ if player.spellbinder_num ~= 0 then
+ local t =
+ {
+ [SPELLBINDER_HP75] = "75% HP",
+ [SPELLBINDER_HP50] = "50% HP",
+ [SPELLBINDER_HP25] = "25% HP",
+ }
+ msg_print("The spellbinder is already active.")
+ msg_print("It will trigger at "..t[player.spellbinder_trigger]..".")
+ msg_print("With the spells: ")
+ for i = 1, player.spellbinder_num do
+ msg_print(spell(player.spellbinder[i]).name)
+ end
+ return TRUE
+ end
+
+ ret, c = get_com("Trigger at [a]75% hp [b]50% hp [c]25% hp?", strbyte("a"))
+ if ret == FALSE then return TRUE end
+
+ if c == strbyte("a") then
+ player.spellbinder_trigger = SPELLBINDER_HP75
+ elseif c == strbyte("b") then
+ player.spellbinder_trigger = SPELLBINDER_HP50
+ elseif c == strbyte("c") then
+ player.spellbinder_trigger = SPELLBINDER_HP25
+ else
+ return
+ end
+ player.spellbinder_num = get_spellbinder_max()
+ i = player.spellbinder_num
+ while i > 0 do
+ local s
+
+ s = get_school_spell("bind", "is_ok_spell", 0)
+ if s == -1 then
+ player.spellbinder_trigger = 0
+ player.spellbinder_num = 0
+ return TRUE
+ else
+ if spell(s).skill_level > 7 + get_level(SPELLBINDER, 35) then
+ msg_print("You are only allowed spells with a base level of "..(7 + get_level(SPELLBINDER, 35))..".");
+ return TRUE
+ end
+ end
+ player.spellbinder[i] = s
+ i = i - 1
+ end
+ player.energy = player.energy - 3100;
+ msg_print("Spellbinder ready.")
+ return TRUE
+ end,
+ ["info"] = function()
+ return "number "..(get_spellbinder_max()).." max level "..(7 + get_level(SPELLBINDER, 35))
+ end,
+ ["desc"] = {
+ "Stores spells in a trigger.",
+ "When the condition is met all spells fire off at the same time",
+ "This spell takes a long time to cast so you are advised to prepare it",
+ "in a safe area.",
+ "Also it will use the mana for the Spellbinder and the mana for the",
+ "selected spells"
+ }
+}
+
+DISPERSEMAGIC = add_spell
+{
+ ["name"] = "Disperse Magic",
+ ["school"] = {SCHOOL_META},
+ ["level"] = 15,
+ ["mana"] = 30,
+ ["mana_max"] = 60,
+ ["fail"] = 40,
+ -- Unnafected by blindness
+ ["blind"] = FALSE,
+ -- Unnafected by confusion
+ ["confusion"] = FALSE,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 25,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 5, 40 },
+ },
+ },
+ ["inertia"] = { 1, 5 },
+ ["spell"] = function()
+ local obvious
+ obvious = set_blind(0)
+ obvious = is_obvious(set_lite(0), obvious)
+ if get_level(DISPERSEMAGIC, 50) >= 5 then
+ obvious = is_obvious(set_confused(0), obvious)
+ obvious = is_obvious(set_image(0), obvious)
+ end
+ if get_level(DISPERSEMAGIC, 50) >= 10 then
+ obvious = is_obvious(set_slow(0), obvious)
+ obvious = is_obvious(set_fast(0, 0), obvious)
+ obvious = is_obvious(set_light_speed(0), obvious)
+ end
+ if get_level(DISPERSEMAGIC, 50) >= 15 then
+ obvious = is_obvious(set_stun(0), obvious)
+ obvious = is_obvious(set_meditation(0), obvious)
+ obvious = is_obvious(set_cut(0), obvious)
+ end
+ if get_level(DISPERSEMAGIC, 50) >= 20 then
+ obvious = is_obvious(set_hero(0), obvious)
+ obvious = is_obvious(set_shero(0), obvious)
+ obvious = is_obvious(set_blessed(0), obvious)
+ obvious = is_obvious(set_shield(0, 0, 0, 0, 0), obvious)
+ obvious = is_obvious(set_afraid(0), obvious)
+ obvious = is_obvious(set_parasite(0, 0), obvious)
+ obvious = is_obvious(set_mimic(0, 0, 0), obvious)
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Dispels a lot of magic that can affect you, be it good or bad",
+ "Level 1: blindness and light",
+ "Level 5: confusion and hallucination",
+ "Level 10: speed (both bad or good) and light speed",
+ "Level 15: stunning, meditation, cuts",
+ "Level 20: hero, super hero, bless, shields, afraid, parasites, mimicry",
+ }
+}
+
+TRACKER = add_spell
+{
+ ["name"] = "Tracker",
+ ["school"] = {SCHOOL_META, SCHOOL_CONVEYANCE},
+ ["level"] = 30,
+ ["mana"] = 50,
+ ["mana_max"] = 50,
+ ["fail"] = 95,
+ ["spell"] = function()
+ if last_teleportation_y == -1 then
+ msg_print("There has not been any teleporatation here.")
+ return TRUE
+ end
+ teleport_player_to(last_teleportation_y, last_teleportation_x)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Tracks down the last teleportation that happened on the level and teleports",
+ "you to it",
+ }
+}
+
+-- Saves the values of the timer
+save_timer("TIMER_INERTIA_CONTROL")
+add_loadsave("player.inertia_controlled_spell", -1)
+player.inertia_controlled_spell = -1
+
+-- Automatically cast the inertia controlled spells
+TIMER_INERTIA_CONTROL = new_timer
+{
+ ["enabled"] = FALSE,
+ ["delay"] = 10,
+ ["callback"] = function()
+ -- Don't cast a controlled spell in wilderness mode
+ if player.antimagic then
+ msg_print("Your anti-magic field disrupts any magic attempts.")
+ elseif player.anti_magic then
+ msg_print("Your anti-magic shell disrupts any magic attempts.")
+ elseif (player.inertia_controlled_spell ~= -1) and (player.wild_mode == FALSE) then
+ __spell_spell[player.inertia_controlled_spell]()
+ end
+ end,
+}
+
+stop_inertia_controlled_spell = function()
+ player.inertia_controlled_spell = -1
+ TIMER_INERTIA_CONTROL.enabled = FALSE
+ player.update = bor(player.update, PU_MANA)
+ return TRUE
+end
+
+add_hooks
+{
+ -- Reduce the mana by four times the cost of the spell
+ [HOOK_CALC_MANA] = function(msp)
+ if player.inertia_controlled_spell ~= -1 then
+ msp = msp - (get_mana(player.inertia_controlled_spell) * 4)
+ if msp < 0 then msp = 0 end
+ return TRUE, msp
+ end
+ end,
+
+ -- Stop a previous spell at birth
+ [HOOK_BIRTH_OBJECTS] = function()
+ stop_inertia_controlled_spell()
+ end,
+}
+
+INERTIA_CONTROL = add_spell
+{
+ ["name"] = "Inertia Control",
+ ["school"] = {SCHOOL_META},
+ ["level"] = 37,
+ ["mana"] = 300,
+ ["mana_max"] = 700,
+ ["fail"] = 95,
+ ["spell"] = function()
+ if player.inertia_controlled_spell ~= -1 then
+ msg_print("You cancel your inertia flow control.")
+ return stop_inertia_controlled_spell()
+ end
+
+ local s = get_school_spell("control", "is_ok_spell", 0)
+ if s == -1 then
+ return stop_inertia_controlled_spell()
+ end
+
+ local inertia = __tmp_spells[s].inertia
+
+ if inertia == nil then
+ msg_print("This spell inertia flow can not be controlled.")
+ return stop_inertia_controlled_spell()
+ end
+ if inertia[1] > get_level(INERTIA_CONTROL, 10) then
+ msg_print("This spell inertia flow("..inertia[1]..") is too strong to be controlled by your current spell.")
+ return stop_inertia_controlled_spell()
+ end
+
+ player.inertia_controlled_spell = s
+ TIMER_INERTIA_CONTROL.enabled = TRUE
+ TIMER_INERTIA_CONTROL.delay = inertia[2]
+ TIMER_INERTIA_CONTROL.countdown = TIMER_INERTIA_CONTROL.delay
+ player.update = bor(player.update, PU_MANA)
+ msg_print("Inertia flow controlling spell "..spell(s).name..".")
+ return TRUE
+ end,
+ ["info"] = function()
+ return "level "..get_level(INERTIA_CONTROL, 10)
+ end,
+ ["desc"] = {
+ "Changes the energy flow of a spell to be continuously recasted",
+ "at a given interval. The inertia controlled spell reduces your",
+ "maximum mana by four times its cost.",
+ }
+}
diff --git a/lib/scpt/s_mind.lua b/lib/scpt/s_mind.lua
new file mode 100644
index 00000000..d1b25e9e
--- /dev/null
+++ b/lib/scpt/s_mind.lua
@@ -0,0 +1,132 @@
+-- handle the mind school
+
+CHARM = add_spell
+{
+ ["name"] = "Charm",
+ ["school"] = {SCHOOL_MIND},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 20,
+ ["fail"] = 10,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 35,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 20, 40 },
+ },
+ },
+ ["spell"] = function()
+ if get_level(CHARM, 50) >= 35 then
+ return project_los(GF_CHARM, 10 + get_level(CHARM, 150))
+ elseif get_level(CHARM, 50) >= 15 then
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(GF_CHARM, dir, 10 + get_level(CHARM, 150), 3)
+ else
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_bolt(GF_CHARM, dir, 10 + get_level(CHARM, 150))
+ end
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(CHARM, 150))
+ end,
+ ["desc"] = {
+ "Tries to manipulate the mind of a monster to make it friendly",
+ "At level 15 it turns into a ball",
+ "At level 35 it affects all monsters in sight"
+ }
+}
+
+CONFUSE = add_spell
+{
+ ["name"] = "Confuse",
+ ["school"] = {SCHOOL_MIND},
+ ["level"] = 5,
+ ["mana"] = 5,
+ ["mana_max"] = 30,
+ ["fail"] = 20,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 4 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 45,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 20, 40 },
+ },
+ },
+ ["spell"] = function()
+ if get_level(CONFUSE, 50) >= 35 then
+ return project_los(GF_OLD_CONF, 10 + get_level(CONFUSE, 150))
+ elseif get_level(CONFUSE, 50) >= 15 then
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(GF_OLD_CONF, dir, 10 + get_level(CONFUSE, 150), 3)
+ else
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_bolt(GF_OLD_CONF, dir, 10 + get_level(CONFUSE, 150))
+ end
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(CONFUSE, 150))
+ end,
+ ["desc"] = {
+ "Tries to manipulate the mind of a monster to confuse it",
+ "At level 15 it turns into a ball",
+ "At level 35 it affects all monsters in sight"
+ }
+}
+
+ARMOROFFEAR = add_spell
+{
+ ["name"] = "Armor of Fear",
+ ["school"] = SCHOOL_MIND,
+ ["level"] = 10,
+ ["mana"] = 10,
+ ["mana_max"] = 50,
+ ["fail"] = 35,
+ ["inertia"] = { 2, 20 },
+ ["spell"] = function()
+ return set_shield(randint(10) + 10 + get_level(ARMOROFFEAR, 100), 10, SHIELD_FEAR, 1 + get_level(ARMOROFFEAR, 7), 5 + get_level(ARMOROFFEAR, 20))
+ end,
+ ["info"] = function()
+ return "dur "..(10 + get_level(ARMOROFFEAR, 100)).." power "..(1 + get_level(ARMOROFFEAR, 7)).."d"..(5 + get_level(ARMOROFFEAR, 20))
+ end,
+ ["desc"] = {
+ "Creates a shield of pure fear around you. Any monster attempting to hit you",
+ "must save or flee",
+ }
+}
+
+STUN = add_spell
+{
+ ["name"] = "Stun",
+ ["school"] = {SCHOOL_MIND},
+ ["level"] = 15,
+ ["mana"] = 10,
+ ["mana_max"] = 90,
+ ["fail"] = 45,
+ ["spell"] = function()
+ if get_level(STUN, 50) >= 20 then
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(GF_STUN, dir, 10 + get_level(STUN, 150), 3)
+ else
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_bolt(GF_STUN, dir, 10 + get_level(STUN, 150))
+ end
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(STUN, 150))
+ end,
+ ["desc"] = {
+ "Tries to manipulate the mind of a monster to stun it",
+ "At level 20 it turns into a ball",
+ }
+}
diff --git a/lib/scpt/s_music.lua b/lib/scpt/s_music.lua
new file mode 100644
index 00000000..9da6393a
--- /dev/null
+++ b/lib/scpt/s_music.lua
@@ -0,0 +1,443 @@
+-- handle the music school
+-- *ALL* lasting spell must return the mana cost in the lasting function
+
+MUSIC_STOP = add_spell
+{
+ ["name"] = "Stop singing(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = -400,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 1,
+ ["blind"] = FALSE,
+ ["spell"] = function()
+ player.start_lasting_spell(0)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Stops the current song, if any."
+ }
+}
+
+--- Drums
+MUSIC_HOLD = add_spell
+{
+ ["name"] = "Holding Pattern(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 10,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 1,
+ ["blind"] = FALSE,
+ ["lasting"] = function()
+ project_los(GF_OLD_SLOW, 10 + get_level(MUSIC_HOLD, 100))
+ return get_mana(MUSIC_HOLD)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_HOLD)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(MUSIC_HOLD, 100))
+ end,
+ ["desc"] = {
+ "Slows down all monsters listening the song.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_CONF = add_spell
+{
+ ["name"] = "Illusion Pattern(II)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 5,
+ ["mana"] = 2,
+ ["mana_max"] = 15,
+ ["fail"] = 30,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 2,
+ ["blind"] = FALSE,
+ ["lasting"] = function()
+ project_los(GF_OLD_CONF, 10 + get_level(MUSIC_CONF, 100))
+ return get_mana(MUSIC_CONF)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_CONF)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(MUSIC_CONF, 100))
+ end,
+ ["desc"] = {
+ "Tries to confuse all monsters listening the song.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_STUN = add_spell
+{
+ ["name"] = "Stun Pattern(IV)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 10,
+ ["mana"] = 3,
+ ["mana_max"] = 25,
+ ["fail"] = 45,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 4,
+ ["blind"] = FALSE,
+ ["lasting"] = function()
+ project_los(GF_STUN, 10 + get_level(MUSIC_STUN, 90))
+ return get_mana(MUSIC_STUN)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_STUN)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(MUSIC_STUN, 90))
+ end,
+ ["desc"] = {
+ "Stuns all monsters listening the song.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+--- Harps
+MUSIC_LITE = add_spell
+{
+ ["name"] = "Song of the Sun(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 1,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["blind"] = FALSE,
+ ["pval"] = 1,
+ ["lasting"] = function()
+ set_lite(5)
+ return 1
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_LITE)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Provides light as long as you sing.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_HEAL = add_spell
+{
+ ["name"] = "Flow of Life(II)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 7,
+ ["mana"] = 5,
+ ["mana_max"] = 30,
+ ["fail"] = 35,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 2,
+ ["lasting"] = function()
+ hp_player(7 + get_level(MUSIC_HEAL, 100))
+ return get_mana(MUSIC_HEAL)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_HEAL)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "heal "..(7 + get_level(MUSIC_HEAL, 100)).."/turn"
+ end,
+ ["desc"] = {
+ "Heals you as long as you sing.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_HERO = add_spell
+{
+ ["name"] = "Heroic Ballad(II)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 10,
+ ["mana"] = 4,
+ ["mana_max"] = 14,
+ ["fail"] = 45,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 2,
+ ["lasting"] = function()
+ set_hero(5)
+ if get_level(MUSIC_HERO) >= 10 then
+ set_shero(5)
+ end
+ if get_level(MUSIC_HERO) >= 20 then
+ set_strike(5)
+ end
+ if get_level(MUSIC_HERO) >= 25 then
+ set_oppose_cc(5)
+ end
+ return get_mana(MUSIC_HERO)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_HERO)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Increases melee accuracy",
+ "At level 10 it increases it even more and reduces armour a bit",
+ "At level 20 it increases it again",
+ "At level 25 it grants protection against chaos and confusion",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_TIME = add_spell
+{
+ ["name"] = "Hobbit Melodies(III)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 20,
+ ["mana"] = 10,
+ ["mana_max"] = 30,
+ ["fail"] = 70,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 3,
+ ["lasting"] = function()
+ set_shield(5, 10 + get_level(MUSIC_TIME, 50), 0, 0, 0)
+ if get_level(MUSIC_TIME) >= 15 then
+ set_fast(5, 7 + get_level(MUSIC_TIME, 10))
+ end
+ return get_mana(MUSIC_TIME)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_TIME)
+ return TRUE
+ end,
+ ["info"] = function()
+ if get_level(MUSIC_TIME) >= 15 then
+ return "AC "..(10 + get_level(MUSIC_TIME, 50)).." speed "..(7 + get_level(MUSIC_TIME, 10))
+ else
+ return "AC "..(10 + get_level(MUSIC_TIME, 50))
+ end
+ end,
+ ["desc"] = {
+ "Greatly increases your reflexes allowing you to block more melee blows.",
+ "At level 15 it also makes you faster.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+MUSIC_MIND = add_spell
+{
+ ["name"] = "Clairaudience(IV)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 25,
+ ["mana"] = 15,
+ ["mana_max"] = 30,
+ ["fail"] = 75,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 4,
+ ["lasting"] = function()
+ set_tim_esp(5)
+ if get_level(MUSIC_MIND) >= 10 then
+ fire_ball(GF_IDENTIFY, 0, 1, 1 + get_level(MUSIC_MIND, 3, 0))
+ end
+ return get_mana(MUSIC_MIND)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_MIND)
+ return TRUE
+ end,
+ ["info"] = function()
+ if get_level(MUSIC_MIND) >= 10 then
+ return "rad "..(1 + get_level(MUSIC_MIND, 3, 0))
+ else
+ return ""
+ end
+ end,
+ ["desc"] = {
+ "Allows you to sense monster minds as long as you sing.",
+ "At level 10 it identifies all objects in a radius on the floor,",
+ "as well as probing monsters in that radius.",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+--- Horns
+
+MUSIC_BLOW = add_spell
+{
+ ["name"] = "Blow(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 4,
+ ["mana"] = 3,
+ ["mana_max"] = 30,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 1,
+ ["spell"] = function()
+ fire_ball(GF_SOUND,
+ 0,
+ damroll(2 + get_level(MUSIC_BLOW, 10, 0), 4 + get_level(MUSIC_BLOW, 40, 0)),
+ 1 + get_level(MUSIC_BLOW, 12, 0)
+ )
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(2 + get_level(MUSIC_BLOW, 10, 0)).."d"..(4 + get_level(MUSIC_BLOW, 40, 0)).." rad "..(1 + get_level(MUSIC_BLOW, 12, 0))
+ end,
+ ["desc"] = {
+ "Produces a powerful, blowing, sound all around you.",
+ }
+}
+
+MUSIC_WIND = add_spell
+{
+ ["name"] = "Gush of Wind(II)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 14,
+ ["mana"] = 15,
+ ["mana_max"] = 45,
+ ["fail"] = 30,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 2,
+ ["spell"] = function()
+ fire_ball(GF_AWAY_ALL,
+ 0,
+ 10 + get_level(MUSIC_BLOW, 40, 0),
+ 1 + get_level(MUSIC_BLOW, 12, 0)
+ )
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dist "..(10 + get_level(MUSIC_BLOW, 40, 0)).." rad "..(1 + get_level(MUSIC_BLOW, 12, 0))
+ end,
+ ["desc"] = {
+ "Produces a outgoing gush of wind that sends monsters away.",
+ }
+}
+
+MUSIC_YLMIR = add_spell
+{
+ ["name"] = "Horns of Ylmir(III)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 20,
+ ["mana"] = 25,
+ ["mana_max"] = 30,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 3,
+ ["spell"] = function()
+ earthquake(player.py, player.px, 2 + get_level(SHAKE, 10))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(2 + get_level(SHAKE, 10))
+ end,
+ ["desc"] = {
+ "Produces an earth shaking sound.",
+ }
+}
+
+MUSIC_AMBARKANTA = add_spell
+{
+ ["name"] = "Ambarkanta(IV)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 25,
+ ["mana"] = 70,
+ ["mana_max"] = 70,
+ ["fail"] = 60,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 4,
+ ["spell"] = function()
+ alter_reality()
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Produces a reality shaking sound that transports you to a nearly",
+ "identical reality.",
+ }
+}
+
+
+--[[
+MUSIC_ = add_spell
+{
+ ["name"] = "(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 1,
+ ["lasting"] = function()
+ return get_mana(MUSIC_)
+ end,
+ ["spell"] = function()
+ player.start_lasting_spell(MUSIC_)
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "",
+ "Consumes the amount of mana each turn.",
+ }
+}
+
+or
+
+MUSIC_ = add_spell
+{
+ ["name"] = "(I)",
+ ["school"] = {SCHOOL_MUSIC},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 20,
+ ["stat"] = A_CHR,
+ ["random"] = SKILL_MUSIC,
+ ["pval"] = 1,
+ ["spell"] = function()
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "",
+ }
+}
+]]
diff --git a/lib/scpt/s_nature.lua b/lib/scpt/s_nature.lua
new file mode 100644
index 00000000..e71a89bf
--- /dev/null
+++ b/lib/scpt/s_nature.lua
@@ -0,0 +1,152 @@
+-- handle the nature school
+
+GROWTREE = add_spell
+{
+ ["name"] = "Grow Trees",
+ ["school"] = {SCHOOL_NATURE, SCHOOL_TEMPORAL},
+ ["level"] = 6,
+ ["mana"] = 6,
+ ["mana_max"] = 30,
+ ["fail"] = 35,
+ ["inertia"] = { 5, 50 },
+ ["spell"] = function()
+ grow_trees(2 + get_level(GROWTREE, 7))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(2 + get_level(GROWTREE, 7))
+ end,
+ ["desc"] = {
+ "Makes trees grow extremely quickly around you",
+ }
+}
+
+HEALING = add_spell
+{
+ ["name"] = "Healing",
+ ["school"] = {SCHOOL_NATURE},
+ ["level"] = 10,
+ ["mana"] = 15,
+ ["mana_max"] = 50,
+ ["fail"] = 45,
+ ["stick"] =
+ {
+ ["charge"] = { 2, 3 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 90,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 20, 40 },
+ },
+ },
+ ["spell"] = function()
+ return hp_player(player.mhp * (15 + get_level(HEALING, 35)) / 100)
+ end,
+ ["info"] = function()
+ return "heal "..(15 + get_level(HEALING, 35)).."% = "..(player.mhp * (15 + get_level(HEALING, 35)) / 100).."hp"
+ end,
+ ["desc"] = {
+ "Heals a percent of hitpoints",
+ }
+}
+
+RECOVERY = add_spell
+{
+ ["name"] = "Recovery",
+ ["school"] = {SCHOOL_NATURE},
+ ["level"] = 15,
+ ["mana"] = 10,
+ ["mana_max"] = 25,
+ ["fail"] = 60,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 10 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 50,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 10, 30 },
+ },
+ },
+ ["inertia"] = { 2, 100 },
+ ["spell"] = function()
+ local obvious
+ obvious = set_poisoned(player.poisoned / 2)
+ if get_level(RECOVERY, 50) >= 5 then
+ obvious = is_obvious(set_poisoned(0), obvious)
+ obvious = is_obvious(set_cut(0), obvious)
+ end
+ if get_level(RECOVERY, 50) >= 10 then
+ obvious = is_obvious(do_res_stat(A_STR, TRUE), obvious)
+ obvious = is_obvious(do_res_stat(A_CON, TRUE), obvious)
+ obvious = is_obvious(do_res_stat(A_DEX, TRUE), obvious)
+ obvious = is_obvious(do_res_stat(A_WIS, TRUE), obvious)
+ obvious = is_obvious(do_res_stat(A_INT, TRUE), obvious)
+ obvious = is_obvious(do_res_stat(A_CHR, TRUE), obvious)
+ end
+ if get_level(RECOVERY, 50) >= 15 then
+ obvious = is_obvious(restore_level(), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Reduces the length of time that you are poisoned",
+ "At level 5 it cures poison and cuts",
+ "At level 10 it restores drained stats",
+ "At level 15 it restores lost experience"
+ }
+}
+
+REGENERATION = add_spell
+{
+ ["name"] = "Regeneration",
+ ["school"] = {SCHOOL_NATURE},
+ ["level"] = 20,
+ ["mana"] = 30,
+ ["mana_max"] = 55,
+ ["fail"] = 70,
+ ["inertia"] = { 4, 40 },
+ ["spell"] = function()
+ if player.tim_regen == 0 then return set_tim_regen(randint(10) + 5 + get_level(REGENERATION, 50), 300 + get_level(REGENERATION, 700)) end
+ end,
+ ["info"] = function()
+ return "dur "..(5 + get_level(REGENERATION, 50)).."+d10 power "..(300 + get_level(REGENERATION, 700))
+ end,
+ ["desc"] = {
+ "Increases your body's regeneration rate",
+ }
+}
+
+
+SUMMONANNIMAL = add_spell
+{
+ ["name"] = "Summon Animal",
+ ["school"] = {SCHOOL_NATURE},
+ ["level"] = 25,
+ ["mana"] = 25,
+ ["mana_max"] = 50,
+ ["fail"] = 90,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 3 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 85,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 15, 45 },
+ },
+ },
+ ["spell"] = function()
+ summon_specific_level = 25 + get_level(SUMMONANNIMAL, 50)
+ return summon_monster(player.py, player.px, dun_level, TRUE, SUMMON_ANIMAL)
+ end,
+ ["info"] = function()
+ return "level "..(25 + get_level(SUMMONANNIMAL, 50))
+ end,
+ ["desc"] = {
+ "Summons a leveled animal to your aid",
+ }
+}
diff --git a/lib/scpt/s_stick.lua b/lib/scpt/s_stick.lua
new file mode 100644
index 00000000..e9d994e9
--- /dev/null
+++ b/lib/scpt/s_stick.lua
@@ -0,0 +1,444 @@
+-- Spells that are stick or artifacts/... only
+
+DEVICE_HEAL_MONSTER = add_spell
+{
+ ["name"] = "Heal Monster",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 3,
+ ["mana"] = 5,
+ ["mana_max"] = 20,
+ ["fail"] = 15,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 10 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 17,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ return fire_ball(GF_OLD_HEAL, dir, 20 + get_level(DEVICE_HEAL_MONSTER, 380), 0)
+ end,
+ ["info"] = function()
+ return "heal "..(20 + get_level(DEVICE_HEAL_MONSTER, 380))
+ end,
+ ["desc"] = {
+ "Heals a monster",
+ }
+}
+
+DEVICE_SPEED_MONSTER = add_spell
+{
+ ["name"] = "Haste Monster",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 10,
+ ["mana"] = 10,
+ ["mana_max"] = 10,
+ ["fail"] = 30,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 7,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ return fire_ball(GF_OLD_SPEED, dir, 1, 0)
+ end,
+ ["info"] = function()
+ return "speed +10"
+ end,
+ ["desc"] = {
+ "Haste a monster",
+ }
+}
+
+DEVICE_WISH = add_spell
+{
+ ["name"] = "Wish",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 50,
+ ["mana"] = 400,
+ ["mana_max"] = 400,
+ ["fail"] = 99,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 2 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 98,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 1, 1 },
+ },
+ },
+ ["spell"] = function()
+ make_wish()
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "This grants you a wish, beware of what you ask for!",
+ }
+}
+
+DEVICE_SUMMON = add_spell
+{
+ ["name"] = "Summon",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 5,
+ ["mana"] = 5,
+ ["mana_max"] = 25,
+ ["fail"] = 20,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 20 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 13,
+ ["base_level"] = { 1, 40 },
+ ["max_level"] = { 25, 50 },
+ },
+ },
+ ["spell"] = function()
+ local i, obvious
+ obvious = nil
+ for i = 1, 4 + get_level(DEVICE_SUMMON, 30) do
+ obvious = is_obvious(summon_specific(player.py, player.px, dun_level, 0), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Summons hostile monsters near you",
+ }
+}
+
+DEVICE_MANA = add_spell
+{
+ ["name"] = "Mana",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 30,
+ ["mana"] = 1,
+ ["mana_max"] = 1,
+ ["fail"] = 80,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 2, 3 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 78,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 20, 35 },
+ },
+ },
+ ["spell"] = function()
+ increase_mana((player.msp * (20 + get_level(DEVICE_MANA, 50))) / 100)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "restore "..(20 + get_level(DEVICE_MANA, 50)).."%"
+ end,
+ ["desc"] = {
+ "Restores a part(or all) of your mana",
+ }
+}
+
+DEVICE_NOTHING = add_spell
+{
+ ["name"] = "Nothing",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 0,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 0, 0 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 3,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 1, 1 },
+ },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 3,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 1, 1},
+ },
+ },
+ ["spell"] = function()
+ return FALSE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "It does nothing.",
+ }
+}
+
+DEVICE_LEBOHAUM = add_spell
+{
+ ["name"] = "Artifact Lebauhaum",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 0,
+ ["random"] = -1,
+ ["activate"] = 3,
+ ["spell"] = function()
+ msg_print("You hear a little song in your head in some unknown tongue:")
+ msg_print("'Avec le casque Lebohaum y a jamais d'anicroches, je parcours les dongeons,")
+ msg_print("j'en prend plein la caboche. Avec le casque Lebohaum, tout ces monstres a la")
+ msg_print("con, je leur met bien profond: c'est moi le maitre du dongeon!'")
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "sing a cheerful song",
+ }
+}
+
+DEVICE_MAGGOT = add_spell
+{
+ ["name"] = "Artifact Maggot",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 7,
+ ["mana_max"] = 7,
+ ["fail"] = 20,
+ ["random"] = -1,
+ ["activate"] = { 10, 50 },
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_ball(GF_TURN_ALL, dir, 40, 2)
+ end,
+ ["info"] = function()
+ return "power 40 rad 2"
+ end,
+ ["desc"] = {
+ "terrify",
+ }
+}
+
+DEVICE_HOLY_FIRE = add_spell
+{
+ ["name"] = "Holy Fire of Mithrandir",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 30,
+ ["mana"] = 50,
+ ["mana_max"] = 150,
+ ["fail"] = 75,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 2, 5 },
+ [TV_STAFF] =
+ {
+ -- Rarity higher than 100 to be sure to not have it generated randomly
+ ["rarity"] = 999,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 35, 35 },
+ },
+ },
+ ["spell"] = function()
+ return project_los(GF_HOLY_FIRE, 50 + get_level(DEVICE_HOLY_FIRE, 300))
+ end,
+ ["info"] = function()
+ return "dam "..(50 + get_level(DEVICE_HOLY_FIRE, 250))
+ end,
+ ["desc"] = {
+ "The Holy Fire created by this staff will deeply(double damage) burn",
+ "all that is evil.",
+ }
+}
+
+-- Ok the Eternal Flame, to craete one of the 4 ultimate arts
+-- needed to enter the last level of the Void
+DEVICE_ETERNAL_FLAME = add_spell
+{
+ ["name"] = "Artifact Eternal Flame",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 0,
+ ["random"] = -1,
+ ["activate"] = { 0, 0 },
+ ["spell"] = function(flame_item)
+ local ret, item, obj
+
+ ret, item = get_item("Which object do you want to imbue?",
+ "You have no objects to imbue.",
+ bor(USE_INVEN),
+ function (obj)
+ if obj.name1 > 0 or obj.name2 > 0 then return FALSE end
+ if (obj.tval == TV_SWORD) and (obj.sval == SV_LONG_SWORD) then
+ return TRUE
+ elseif (obj.tval == TV_MSTAFF) and (obj.sval == SV_MSTAFF) then
+ return TRUE
+ elseif (obj.tval == TV_BOW) and (obj.sval == SV_HEAVY_XBOW) then
+ return TRUE
+ elseif (obj.tval == TV_DRAG_ARMOR) and (obj.sval == SV_DRAGON_POWER) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+ if ret == FALSE then return FALSE end
+
+ obj = get_object(item)
+
+ if (obj.tval == TV_SWORD) and (obj.sval == SV_LONG_SWORD) then
+ obj.name1 = 147
+ elseif (obj.tval == TV_MSTAFF) and (obj.sval == SV_MSTAFF) then
+ obj.name1 = 127
+ elseif (obj.tval == TV_BOW) and (obj.sval == SV_HEAVY_XBOW) then
+ obj.name1 = 152
+ elseif (obj.tval == TV_DRAG_ARMOR) and (obj.sval == SV_DRAGON_POWER) then
+ obj.name1 = 17
+ end
+ apply_magic(obj, -1, TRUE, TRUE, TRUE)
+
+ obj.found = OBJ_FOUND_SELFMADE
+
+ inven_item_increase(flame_item, -1)
+ inven_item_describe(flame_item)
+ inven_item_optimize(flame_item)
+
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "imbuing an object with the eternal fire",
+ }
+}
+
+-- And one more silly activation :)
+DEVICE_DURANDIL = add_spell
+{
+ ["name"] = "Artifact Durandil",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 0,
+ ["random"] = -1,
+ ["activate"] = 3,
+ ["spell"] = function()
+ msg_print("You hear a little song in your head in some unknown tongue:")
+ msg_print("'Les epees Durandils sont forgees dans les mines par des nains.")
+ msg_print("Avec ca c'est facile de tuer un troll avec une seule main. Pas besoin")
+ msg_print("de super entrainement nis de niveau 28. Quand tu sors l'instrument")
+ msg_print("c'est l'ennemi qui prend la fuite! Avec ton epee Durandil quand tu")
+ msg_print("parcours les chemins, tu massacre sans peine les brigands et les gobelins,")
+ msg_print("les rats geants, les ogres mutants, les zombies et les liches, tu les")
+ msg_print("decoupe en tranches comme si c'etait des parts de quiches.")
+ msg_print("Les epees Durandil! Les epees Durandil!")
+ msg_print("Quand tu la sort dans un dongeon au moins t'as pas l'air debile.")
+ msg_print("C'est l'arme des bourins qui savent etre subtils.")
+ msg_print("Ne partez pas a l'aventure sans votre epee Durandil!'")
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "sing a cheerful song",
+ }
+}
+
+DEVICE_THUNDERLORDS = add_spell
+{
+ ["name"] = "Artifact Thunderlords",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 1,
+ ["fail"] = 20,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 3 },
+ [TV_STAFF] =
+ {
+ -- Rarity higher than 100 to be sure to not have it generated randomly
+ ["rarity"] = 999,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 1, 1 },
+ },
+ },
+ ["spell"] = function()
+ if dun_level > 0 then
+ msg_print("As you blow the horn a thunderlord pops out of nowhere and grabs you.")
+ recall_player(0, 1)
+ else
+ msg_print("You cannot use it there.")
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "A thunderlord will appear to transport you quickly to the surface.",
+ }
+}
+
+--[[ Template
+DEVICE_ = add_spell
+{
+ ["name"] = "",
+ ["school"] = {SCHOOL_DEVICE},
+ ["level"] = 1,
+ ["mana"] = 2,
+ ["mana_max"] = 15,
+ ["fail"] = 10,
+ ["random"] = -1,
+ ["stick"] =
+ {
+ ["charge"] = { 10, 5 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 7,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 25, 50 },
+ },
+ },
+ ["spell"] = function()
+ return FALSE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "",
+ }
+}
+]]
diff --git a/lib/scpt/s_tempo.lua b/lib/scpt/s_tempo.lua
new file mode 100644
index 00000000..d3d2fbb5
--- /dev/null
+++ b/lib/scpt/s_tempo.lua
@@ -0,0 +1,162 @@
+-- Handles thhe temporal school
+
+
+MAGELOCK = add_spell
+{
+ ["name"] = "Magelock",
+ ["school"] = {SCHOOL_TEMPORAL},
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 35,
+ ["fail"] = 10,
+ ["stick"] =
+ {
+ ["charge"] = { 7, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 30,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 15, 45 },
+ },
+ },
+ ["spell"] = function()
+ if get_level(MAGELOCK, 50) >= 30 then
+ local ret, x, y, c_ptr
+
+ if get_level(MAGELOCK, 50) >= 40 then
+ ret, x, y = tgt_pt()
+ if ret == FALSE then return end
+ if cave_is(cave(y, x), FF1_FLOOR) == FALSE or cave_is(cave(y, x), FF1_PERMANENT) == TRUE or los(player.py, player.px, y, x) == FALSE then
+ msg_print("You cannot place it there.")
+ return TRUE
+ end
+ else
+ y = player.py
+ x = player.px
+ end
+ cave_set_feat(y, x, 3)
+ return TRUE
+ else
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return wizard_lock(dir)
+ end
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Magically locks a door",
+ "At level 30 it creates a glyph of warding",
+ "At level 40 the glyph can be placed anywhere in the field of vision"
+ }
+}
+
+SLOWMONSTER = add_spell
+{
+ ["name"] = "Slow Monster",
+ ["school"] = {SCHOOL_TEMPORAL},
+ ["level"] = 10,
+ ["mana"] = 10,
+ ["mana_max"] = 15,
+ ["fail"] = 35,
+ ["stick"] =
+ {
+ ["charge"] = { 5, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 23,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["spell"] = function()
+ local ret, dir
+
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ if get_level(SLOWMONSTER, 50) >= 20 then
+ return fire_ball(GF_OLD_SLOW, dir, 40 + get_level(SLOWMONSTER, 160), 1)
+ else
+ return fire_bolt(GF_OLD_SLOW, dir, 40 + get_level(SLOWMONSTER, 160))
+ end
+ end,
+ ["info"] = function()
+ if get_level(SLOWMONSTER, 50) >= 20 then
+ return "power "..(40 + get_level(SLOWMONSTER, 160)).." rad 1"
+ else
+ return "power "..(40 + get_level(SLOWMONSTER, 160))
+ end
+ end,
+ ["desc"] = {
+ "Magically slows down the passing of time around a monster",
+ "At level 20 it affects a zone"
+ }
+}
+
+ESSENCESPEED = add_spell
+{
+ ["name"] = "Essence of Speed",
+ ["school"] = {SCHOOL_TEMPORAL},
+ ["level"] = 15,
+ ["mana"] = 20,
+ ["mana_max"] = 40,
+ ["fail"] = 50,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 3 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 80,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 10, 39 },
+ },
+ },
+ ["inertia"] = { 5, 20 },
+ ["spell"] = function()
+ if player.fast == 0 then return set_fast(10 + randint(10) + get_level(ESSENCESPEED, 50), 5 + get_level(ESSENCESPEED, 20)) end
+ end,
+ ["info"] = function()
+ return "dur "..(10 + get_level(ESSENCESPEED, 50)).."+d10 speed "..(5 + get_level(ESSENCESPEED, 20))
+ end,
+ ["desc"] = {
+ "Magically decreases the passing of time around you, making you move faster with",
+ "respect to the rest of the universe."
+ }
+}
+
+BANISHMENT = add_spell
+{
+ ["name"] = "Banishment",
+ ["school"] = {SCHOOL_TEMPORAL, SCHOOL_CONVEYANCE},
+ ["level"] = 30,
+ ["mana"] = 30,
+ ["mana_max"] = 40,
+ ["fail"] = 95,
+ ["stick"] =
+ {
+ ["charge"] = { 1, 3 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 98,
+ ["base_level"] = { 1, 15 },
+ ["max_level"] = { 10, 36 },
+ },
+ },
+ ["inertia"] = { 5, 50 },
+ ["spell"] = function()
+ local obvious
+ obvious = project_los(GF_AWAY_ALL, 40 + get_level(BANISHMENT, 160))
+ if get_level(BANISHMENT, 50) >= 15 then
+ obvious = is_obvious(project_los(GF_STASIS, 20 + get_level(BANISHMENT, 120)), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return "power "..(40 + get_level(BANISHMENT, 160))
+ end,
+ ["desc"] = {
+ "Disrupts the space/time continuum in your area and teleports all monsters away.",
+ "At level 15 it may also lock them in a time bubble for a while."
+ }
+}
diff --git a/lib/scpt/s_tulkas.lua b/lib/scpt/s_tulkas.lua
new file mode 100644
index 00000000..4afa8082
--- /dev/null
+++ b/lib/scpt/s_tulkas.lua
@@ -0,0 +1,81 @@
+-- Handle Tulkas magic school
+
+TULKAS_AIM = add_spell
+{
+ ["name"] = "Divine Aim",
+ ["school"] = {SCHOOL_TULKAS},
+ ["level"] = 1,
+ ["mana"] = 30,
+ ["mana_max"] = 500,
+ ["fail"] = 20,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local dur = get_level(TULKAS_AIM, 50) + randint(10)
+ local obvious
+
+ obvious = set_strike(dur)
+ if get_level(TULKAS_AIM) >= 20 then
+ obvious = is_obvious(set_tim_deadly(dur), obvious)
+ end
+ return obvious
+ end,
+ ["info"] = function()
+ return "dur "..(get_level(TULKAS_AIM, 50)).."+d10"
+ end,
+ ["desc"] = {
+ "It makes you more accurate in combat",
+ "At level 20 all your blows are critical hits",
+ }
+}
+
+TULKAS_WAVE = add_spell
+{
+ ["name"] = "Wave of Power",
+ ["school"] = {SCHOOL_TULKAS},
+ ["level"] = 20,
+ ["mana"] = 200,
+ ["mana_max"] = 200,
+ ["fail"] = 75,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ return fire_bolt(GF_ATTACK, dir, get_level(TULKAS_WAVE, player.num_blow))
+ end,
+ ["info"] = function()
+ return "blows "..(get_level(TULKAS_WAVE, player.num_blow))
+ end,
+ ["desc"] = {
+ "It allows you to project a number of melee blows across a distance",
+ }
+}
+
+TULKAS_SPIN = add_spell
+{
+ ["name"] = "Whirlwind",
+ ["school"] = {SCHOOL_TULKAS},
+ ["level"] = 10,
+ ["mana"] = 100,
+ ["mana_max"] = 100,
+ ["fail"] = 45,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ return fire_ball(GF_ATTACK, 0, 1, 1)
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "It allows you to spin around and hit all monsters nearby",
+ }
+}
diff --git a/lib/scpt/s_udun.lua b/lib/scpt/s_udun.lua
new file mode 100644
index 00000000..c4266239
--- /dev/null
+++ b/lib/scpt/s_udun.lua
@@ -0,0 +1,180 @@
+-- handle the udun school
+
+DRAIN = add_spell
+{
+ ["name"] = "Drain",
+ ["school"] = {SCHOOL_UDUN, SCHOOL_MANA},
+ ["level"] = 1,
+ ["mana"] = 0,
+ ["mana_max"] = 0,
+ ["fail"] = 20,
+ ["spell"] = function()
+ local ret, item, obj, o_name, add
+
+ -- Ask for an item
+ ret, item = get_item("What item to drain?", "You have nothing you can drain", USE_INVEN,
+ function (obj)
+ if (obj.tval == TV_WAND) or (obj.tval == TV_ROD_MAIN) or (obj.tval == TV_STAFF) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+
+ if ret == TRUE then
+ -- get the item
+ obj = get_object(item)
+
+ add = 0
+ if (obj.tval == TV_STAFF) or (obj.tval == TV_WAND) then
+ local kind = get_kind(obj)
+
+ add = kind.level * obj.pval * obj.number
+
+ -- Destroy it!
+ inven_item_increase(item, -99)
+ inven_item_describe(item)
+ inven_item_optimize(item)
+ end
+ if obj.tval == TV_ROD_MAIN then
+ add = obj.timeout
+ obj.timeout = 0;
+
+ --Combine / Reorder the pack (later)
+ player.notice = bor(player.notice, PN_COMBINE, PN_REORDER)
+ player.window = bor(player.window, PW_INVEN, PW_EQUIP, PW_PLAYER)
+ end
+ increase_mana(add)
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Drains the mana contained in wands, staves and rods to increase yours",
+ }
+}
+
+GENOCIDE = add_spell
+{
+ ["name"] = "Genocide",
+ ["school"] = {SCHOOL_UDUN, SCHOOL_NATURE},
+ ["level"] = 25,
+ ["mana"] = 50,
+ ["mana_max"] = 50,
+ ["fail"] = 90,
+ ["stick"] =
+ {
+ ["charge"] = { 2, 2 },
+ [TV_STAFF] =
+ {
+ ["rarity"] = 85,
+ ["base_level"] = { 1, 1 },
+ ["max_level"] = { 5, 15 },
+ },
+ },
+ ["spell"] = function()
+ local type
+
+ type = 0
+ if get_level(GENOCIDE) >= 10 then type = 1 end
+ if type == 0 then
+ genocide(TRUE)
+ return TRUE
+ else
+ if get_check("Genocide all monsters near you? ") == TRUE then
+ mass_genocide(TRUE)
+ else
+ genocide(TRUE)
+ end
+ return TRUE
+ end
+ end,
+ ["info"] = function()
+ return ""
+ end,
+ ["desc"] = {
+ "Genocides all monsters of a race on the level",
+ "At level 10 it can genocide all monsters near you"
+ }
+}
+
+WRAITHFORM = add_spell
+{
+ ["name"] = "Wraithform",
+ ["school"] = {SCHOOL_UDUN, SCHOOL_CONVEYANCE},
+ ["level"] = 30,
+ ["mana"] = 20,
+ ["mana_max"] = 40,
+ ["fail"] = 95,
+ ["inertia"] = { 4, 30 },
+ ["spell"] = function()
+ return set_shadow(randint(30) + 20 + get_level(WRAITHFORM, 40))
+ end,
+ ["info"] = function()
+ return "dur "..(20 + get_level(WRAITHFORM, 40)).."+d30"
+ end,
+ ["desc"] = {
+ "Turns you into an immaterial being",
+ }
+}
+
+FLAMEOFUDUN = add_spell
+{
+ ["name"] = "Flame of Udun",
+ ["school"] = {SCHOOL_UDUN, SCHOOL_FIRE},
+ ["level"] = 35,
+ ["mana"] = 70,
+ ["mana_max"] = 100,
+ ["fail"] = 95,
+ ["inertia"] = { 7, 15 },
+ ["spell"] = function()
+ return set_mimic(randint(15) + 5 + get_level(FLAMEOFUDUN, 30), resolve_mimic_name("Balrog"), get_level(FLAMEOFUDUN))
+ end,
+ ["info"] = function()
+ return "dur "..(5 + get_level(FLAMEOFUDUN, 30)).."+d15"
+ end,
+ ["desc"] = {
+ "Turns you into a powerful Balrog",
+ }
+}
+
+
+-- Return the number of Udun/Melkor spells in a given book
+function udun_in_book(sval, pval)
+ local i, y, index, sch, s
+
+ i = 0
+
+ -- Hack if the book is 255 it is a random book
+ if sval == 255 then
+ school_book[sval] = {pval}
+ end
+ -- Parse all spells
+ for index, s in school_book[sval] do
+ for index, sch in __spell_school[s] do
+ if sch == SCHOOL_UDUN then i = i + 1 end
+ if sch == SCHOOL_MELKOR then i = i + 1 end
+ end
+ end
+ return i
+end
+
+-- Return the total level of spells
+function levels_in_book(sval, pval)
+ local i, y, index, sch, s
+
+ i = 0
+
+ -- Hack if the book is 255 it is a random book
+ if sval == 255 then
+ school_book[sval] = {pval}
+ end
+
+ -- Parse all spells
+ for index, s in school_book[sval] do
+ i = i + __tmp_spells[s].level
+ end
+ return i
+end
diff --git a/lib/scpt/s_water.lua b/lib/scpt/s_water.lua
new file mode 100644
index 00000000..88305201
--- /dev/null
+++ b/lib/scpt/s_water.lua
@@ -0,0 +1,154 @@
+-- handle the water school
+
+TIDALWAVE = add_spell
+{
+ ["name"] = "Tidal Wave",
+ ["school"] = {SCHOOL_WATER},
+ ["level"] = 16,
+ ["mana"] = 16,
+ ["mana_max"] = 40,
+ ["fail"] = 65,
+ ["stick"] =
+ {
+ ["charge"] = { 6, 5 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 54,
+ ["base_level"] = { 1, 10 },
+ ["max_level"] = { 20, 50 },
+ },
+ },
+ ["inertia"] = { 4, 100 },
+ ["spell"] = function()
+ fire_wave(GF_WAVE, 0, 40 + get_level(TIDALWAVE, 200), 0, 6 + get_level(TIDALWAVE, 10), EFF_WAVE)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(40 + get_level(TIDALWAVE, 200)).." rad "..(6 + get_level(TIDALWAVE, 10))
+ end,
+ ["desc"] = {
+ "Summons a monstrous tidal wave that will expand and crush the",
+ "monsters under its mighty waves."
+ }
+}
+
+ICESTORM = add_spell
+{
+ ["name"] = "Ice Storm",
+ ["school"] = {SCHOOL_WATER},
+ ["level"] = 22,
+ ["mana"] = 30,
+ ["mana_max"] = 60,
+ ["fail"] = 80,
+ ["stick"] =
+ {
+ ["charge"] = { 3, 7 },
+ [TV_WAND] =
+ {
+ ["rarity"] = 65,
+ ["base_level"] = { 1, 5 },
+ ["max_level"] = { 25, 45 },
+ },
+ },
+ ["inertia"] = { 3, 40 },
+ ["spell"] = function()
+ local type
+
+ if get_level(ICESTORM, 50) >= 10 then type = GF_ICE
+ else type = GF_COLD end
+ fire_wave(type, 0, 80 + get_level(ICESTORM, 200), 1 + get_level(ICESTORM, 3, 0), 20 + get_level(ICESTORM, 70), EFF_STORM)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(80 + get_level(ICESTORM, 200)).." rad "..(1 + get_level(ICESTORM, 3, 0)).." dur "..(20 + get_level(ICESTORM, 70))
+ end,
+ ["desc"] = {
+ "Engulfs you in a storm of roaring cold that strikes your foes.",
+ "At level 10 it turns into shards of ice."
+ }
+}
+
+ENTPOTION = add_spell
+{
+ ["name"] = "Ent's Potion",
+ ["school"] = {SCHOOL_WATER},
+ ["level"] = 6,
+ ["mana"] = 7,
+ ["mana_max"] = 15,
+ ["fail"] = 35,
+ ["inertia"] = { 1, 30 },
+ ["spell"] = function()
+ set_food(PY_FOOD_MAX - 1)
+ msg_print("The Ent's Potion fills your stomach.")
+ if get_level(ENTPOTION, 50) >= 5 then
+ set_afraid(0)
+ end
+ if get_level(ENTPOTION, 50) >= 12 then
+ set_hero(player.hero + randint(25) + 25 + get_level(ENTPOTION, 40))
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ if get_level(ENTPOTION, 50) >= 12 then
+ return "dur "..(25 + get_level(ENTPOTION, 40)).."+d25"
+ else
+ return ""
+ end
+ end,
+ ["desc"] = {
+ "Fills up your stomach.",
+ "At level 5 it boldens your heart.",
+ "At level 12 it make you heroic."
+ }
+}
+
+VAPOR = add_spell
+{
+ ["name"] = "Vapor",
+ ["school"] = {SCHOOL_WATER},
+ ["level"] = 2,
+ ["mana"] = 2,
+ ["mana_max"] = 12,
+ ["fail"] = 20,
+ ["inertia"] = { 1, 30 },
+ ["spell"] = function()
+ fire_cloud(GF_WATER, 0, 3 + get_level(VAPOR, 20), 3 + get_level(VAPOR, 9, 0), 5)
+ return TRUE
+ end,
+ ["info"] = function()
+ return "dam "..(3 + get_level(VAPOR, 20)).." rad "..(3 + get_level(VAPOR, 9, 0)).." dur 5"
+ end,
+ ["desc"] = {
+ "Fills the air with toxic moisture to eradicate annoying critters."
+ }
+}
+
+function get_geyser_damage()
+ return get_level(GEYSER, 10), 3 + get_level(GEYSER, 35)
+end
+
+GEYSER = add_spell
+{
+ ["name"] = "Geyser",
+ ["school"] = SCHOOL_WATER,
+ ["level"] = 1,
+ ["mana"] = 1,
+ ["mana_max"] = 35,
+ ["fail"] = 5,
+ ["spell"] = function()
+ local ret, dir
+ ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+ return fire_bolt_or_beam(2 * get_level(GEYSER, 85), GF_WATER, dir, damroll(get_geyser_damage()))
+ end,
+ ["info"] = function()
+ local n, d
+ n, d = get_geyser_damage()
+ return "dam "..n.."d"..d
+ end,
+ ["desc"] =
+ {
+ "Shoots a geyser of water from your fingertips.",
+ "Sometimes it can blast through its first target."
+ },
+}
diff --git a/lib/scpt/s_yavann.lua b/lib/scpt/s_yavann.lua
new file mode 100644
index 00000000..2f594e85
--- /dev/null
+++ b/lib/scpt/s_yavann.lua
@@ -0,0 +1,157 @@
+-- Handle Yavanna kementari magic school
+
+YAVANNA_CHARM_ANIMAL = add_spell
+{
+ ["name"] = "Charm Animal",
+ ["school"] = {SCHOOL_YAVANNA},
+ ["level"] = 1,
+ ["mana"] = 10,
+ ["mana_max"] = 100,
+ ["fail"] = 30,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local ret, dir = get_aim_dir()
+ if ret == FALSE then return end
+
+ return fire_ball(GF_CONTROL_ANIMAL, dir, 10 + get_level(YAVANNA_CHARM_ANIMAL, 170), get_level(YAVANNA_CHARM_ANIMAL, 2))
+ end,
+ ["info"] = function()
+ return "power "..(10 + get_level(YAVANNA_CHARM_ANIMAL, 170)).." rad "..(get_level(YAVANNA_CHARM_ANIMAL, 2))
+ end,
+ ["desc"] = {
+ "It tries to tame an animal",
+ }
+}
+
+YAVANNA_GROW_GRASS = add_spell
+{
+ ["name"] = "Grow Grass",
+ ["school"] = {SCHOOL_YAVANNA},
+ ["level"] = 10,
+ ["mana"] = 70,
+ ["mana_max"] = 150,
+ ["fail"] = 65,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ grow_grass(get_level(YAVANNA_GROW_GRASS, 4))
+ return TRUE
+ end,
+ ["info"] = function()
+ return "rad "..(get_level(YAVANNA_GROW_GRASS, 4))
+ end,
+ ["desc"] = {
+ "Create a floor of grass around you. While on grass and praying",
+ "a worshipper of Yavanna will know a greater regeneration rate"
+ }
+}
+
+YAVANNA_TREE_ROOTS = add_spell
+{
+ ["name"] = "Tree Roots",
+ ["school"] = {SCHOOL_YAVANNA},
+ ["level"] = 15,
+ ["mana"] = 50,
+ ["mana_max"] = 1000,
+ ["fail"] = 70,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ return set_roots(10 + get_level(YAVANNA_TREE_ROOTS, 30), 10 + get_level(YAVANNA_TREE_ROOTS, 60), 10 + get_level(YAVANNA_TREE_ROOTS, 20))
+ end,
+ ["info"] = function()
+ return "dur "..(10 + get_level(YAVANNA_TREE_ROOTS, 30)).." AC "..(10 + get_level(YAVANNA_TREE_ROOTS, 60)).." dam "..(10 + get_level(YAVANNA_TREE_ROOTS, 20))
+ end,
+ ["desc"] = {
+ "Creates roots deep in the floor from your feet, making you more stable and able",
+ "to make stronger attacks, but prevents any movement (even teleportation).",
+ "It also makes you recover from stunning almost immediately."
+ }
+}
+
+YAVANNA_WATER_BITE = add_spell
+{
+ ["name"] = "Water Bite",
+ ["school"] = {SCHOOL_YAVANNA},
+ ["level"] = 20,
+ ["mana"] = 150,
+ ["mana_max"] = 300,
+ ["fail"] = 90,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local rad
+
+ rad = 0
+ if get_level(YAVANNA_WATER_BITE) >= 25 then rad = 1 end
+
+ return set_project(randint(30) + 30 + get_level(YAVANNA_WATER_BITE, 150),
+ GF_WATER,
+ 10 + get_level(YAVANNA_WATER_BITE),
+ rad,
+ bor(PROJECT_STOP, PROJECT_KILL))
+ end,
+ ["info"] = function()
+ return "dur "..(30 + get_level(YAVANNA_WATER_BITE, 150)).."+d30 dam "..(10 + get_level(YAVANNA_WATER_BITE)).."/blow"
+ end,
+ ["desc"] = {
+ "Imbues your melee weapon with a natural stream of water",
+ "At level 25, it spreads over a 1 radius zone around your target"
+ }
+}
+
+YAVANNA_UPROOT = add_spell
+{
+ ["name"] = "Uproot",
+ ["school"] = {SCHOOL_YAVANNA},
+ ["level"] = 35,
+ ["mana"] = 250,
+ ["mana_max"] = 350,
+ ["fail"] = 95,
+ -- Uses piety to cast
+ ["piety"] = TRUE,
+ ["stat"] = A_WIS,
+ ["random"] = SKILL_SPIRITUALITY,
+ ["spell"] = function()
+ local m_idx, x, y, c_ptr, ret, dir
+
+ ret, dir = get_rep_dir()
+ if ret == FALSE then return end
+ y, x = explode_dir(dir)
+ y, x = y + player.py, x + player.px
+ c_ptr = cave(y, x)
+
+ if c_ptr.feat == FEAT_TREES then
+ cave_set_feat(y, x, FEAT_GRASS);
+
+ -- Summon it
+ y, x = find_position(y, x)
+ m_idx = place_monster_one(y, x, test_monster_name("Ent"), 0, FALSE, MSTATUS_FRIEND)
+
+ -- level it
+ if m_idx ~= 0 then
+ monster_set_level(m_idx, 30 + get_level(YAVANNA_UPROOT, 70))
+ end
+
+ msg_print("The tree awakes!");
+ else
+ msg_print("There is no tree there.")
+ end
+ return TRUE
+ end,
+ ["info"] = function()
+ return "lev "..(30 + get_level(YAVANNA_UPROOT, 70))
+ end,
+ ["desc"] = {
+ "Awakes a tree to help you battle the forces of Morgoth",
+ }
+}
diff --git a/lib/scpt/spells.lua b/lib/scpt/spells.lua
new file mode 100644
index 00000000..8727d282
--- /dev/null
+++ b/lib/scpt/spells.lua
@@ -0,0 +1,475 @@
+--
+-- This file takes care of the schools of magic
+--
+
+-- Create the schools
+SCHOOL_MANA = add_school
+{
+ ["name"] = "Mana",
+ ["skill"] = SKILL_MANA,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Eru Iluvatar provides the Mana school at half the prayer skill
+ [GOD_ERU] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 2,
+ },
+ },
+ ["hooks"] =
+ {
+ [HOOK_CALC_MANA] = function(msp)
+ if get_skill(SKILL_MANA) >= 35 then
+ msp = msp + (msp * ((get_skill(SKILL_MANA) - 34)) / 100)
+ return TRUE, msp
+ end
+ end
+ },
+}
+SCHOOL_FIRE = add_school
+{
+ ["name"] = "Fire",
+ ["skill"] = SKILL_FIRE,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+}
+SCHOOL_AIR = add_school
+{
+ ["name"] = "Air",
+ ["skill"] = SKILL_AIR,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ if get_skill(SKILL_AIR) >= 50 then
+ player.magical_breath = TRUE
+ end
+ end,
+ },
+ ["gods"] =
+ {
+ -- Manwe Sulimo provides the Air school at 2/3 the prayer skill
+ [GOD_MANWE] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 2,
+ ["div"] = 3,
+ },
+ },
+}
+SCHOOL_WATER = add_school
+{
+ ["name"] = "Water",
+ ["skill"] = SKILL_WATER,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["hooks"] =
+ {
+ [HOOK_CALC_BONUS] = function()
+ if get_skill(SKILL_WATER) >= 30 then
+ player.water_breath = TRUE
+ end
+ end,
+ },
+ ["gods"] =
+ {
+ -- Yavanna Kementari provides the Water school at 1/2 the prayer skill
+ [GOD_YAVANNA] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 2,
+ },
+ },
+}
+SCHOOL_EARTH = add_school
+{
+ ["name"] = "Earth",
+ ["skill"] = SKILL_EARTH,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Tulkas provides the Earth school at 4/5 the prayer skill
+ [GOD_TULKAS] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 4,
+ ["div"] = 5,
+ },
+ -- Yavanna Kementari provides the Earth school at 1/2 the prayer skill
+ [GOD_YAVANNA] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 2,
+ },
+ },
+}
+SCHOOL_CONVEYANCE = add_school
+{
+ ["name"] = "Conveyance",
+ ["skill"] = SKILL_CONVEYANCE,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Manwe Sulimo provides the Conveyance school at 1/2 the prayer skill
+ [GOD_MANWE] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 2,
+ },
+ },
+}
+SCHOOL_GEOMANCY = add_school
+{
+ ["name"] = "Geomancy",
+ ["skill"] = SKILL_GEOMANCY,
+ ["spell_power"] = TRUE,
+ -- Require to wield a Mage Staff, as the spells requries the caster to stomp the floor with it
+ ["depend"] = function()
+ -- Require at least one point in each school
+ if get_skill(SKILL_FIRE) == 0 then return end
+ if get_skill(SKILL_AIR) == 0 then return end
+ if get_skill(SKILL_EARTH) == 0 then return end
+ if get_skill(SKILL_WATER) == 0 then return end
+
+ local obj = get_object(INVEN_WIELD)
+ if (obj.k_idx > 0) and (obj.tval == TV_MSTAFF) then return TRUE end
+ end,
+}
+SCHOOL_DIVINATION = add_school
+{
+ ["name"] = "Divination",
+ ["skill"] = SKILL_DIVINATION,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Eru Iluvatar provides the Divination school at 2/3 the prayer skill
+ [GOD_ERU] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 2,
+ ["div"] = 3,
+ },
+ },
+}
+SCHOOL_TEMPORAL = add_school
+{
+ ["name"] = "Temporal",
+ ["skill"] = SKILL_TEMPORAL,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Yavanna Kementari provides the Temoral school at 1/6 the prayer skill
+ [GOD_YAVANNA] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 6,
+ },
+ },
+}
+SCHOOL_NATURE = add_school
+{
+ ["name"] = "Nature",
+ ["skill"] = SKILL_NATURE,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Yavanna Kementari provides the Nature school at 1/2 the prayer skill
+ [GOD_YAVANNA] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 2,
+ },
+ },
+}
+SCHOOL_META = add_school
+{
+ ["name"] = "Meta",
+ ["skill"] = SKILL_META,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Manwe Sulimo provides the Meta school at 1/3 the prayer skill
+ [GOD_MANWE] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 3,
+ },
+ },
+}
+SCHOOL_MIND = add_school
+{
+ ["name"] = "Mind",
+ ["skill"] = SKILL_MIND,
+ ["spell_power"] = TRUE,
+ ["sorcery"] = TRUE,
+ ["gods"] =
+ {
+ -- Eru Iluvatar provides the Mind school at 1/3 the prayer skill
+ [GOD_ERU] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 3,
+ },
+ -- Melkor Bauglir provides the Mind school at 1/3 the prayer skill
+ [GOD_MELKOR] =
+ {
+ ["skill"] = SKILL_PRAY,
+ ["mul"] = 1,
+ ["div"] = 3,
+ },
+ },
+}
+SCHOOL_UDUN = add_school
+{
+ ["name"] = "Udun",
+ ["skill"] = SKILL_UDUN,
+ ["bonus_level"] = function()
+ return ((player.lev * 2) / 3)
+ end,
+}
+SCHOOL_DEMON = add_school
+{
+ ["name"] = "Demon",
+ ["skill"] = SKILL_DAEMON,
+ ["no_random"] = TRUE,
+}
+
+-- The God specific schools, all tied to the prayer skill
+SCHOOL_ERU = add_school
+{
+ ["name"] = "Eru Iluvatar",
+ ["skill"] = SKILL_PRAY,
+ ["spell_power"] = TRUE,
+ ["god"] = GOD_ERU,
+}
+SCHOOL_MANWE = add_school
+{
+ ["name"] = "Manwe Sulimo",
+ ["skill"] = SKILL_PRAY,
+ ["spell_power"] = TRUE,
+ ["god"] = GOD_MANWE,
+}
+SCHOOL_TULKAS = add_school
+{
+ ["name"] = "Tulkas",
+ ["skill"] = SKILL_PRAY,
+ ["spell_power"] = TRUE,
+ ["god"] = GOD_TULKAS,
+}
+SCHOOL_MELKOR = add_school
+{
+ ["name"] = "Melkor Bauglir",
+ ["skill"] = SKILL_PRAY,
+ ["spell_power"] = TRUE,
+ ["god"] = GOD_MELKOR,
+}
+SCHOOL_YAVANNA = add_school
+{
+ ["name"] = "Yavanna Kementari",
+ ["skill"] = SKILL_PRAY,
+ ["spell_power"] = TRUE,
+ ["god"] = GOD_YAVANNA,
+}
+
+-- Not a real school, rather a palcehodler for stick only spells
+SCHOOL_DEVICE = add_school
+{
+ ["name"] = "Device",
+ ["skill"] = SKILL_DEVICE,
+}
+
+-- Music "spells"
+SCHOOL_MUSIC = add_school
+{
+ ["name"] = "Music",
+ ["skill"] = SKILL_MUSIC,
+}
+
+-- Put some spells
+tome_dofile("s_fire.lua")
+tome_dofile("s_mana.lua")
+tome_dofile("s_water.lua")
+tome_dofile("s_air.lua")
+tome_dofile("s_earth.lua")
+tome_dofile("s_convey.lua")
+tome_dofile("s_nature.lua")
+tome_dofile("s_divin.lua")
+tome_dofile("s_tempo.lua")
+tome_dofile("s_meta.lua")
+tome_dofile("s_mind.lua")
+tome_dofile("s_udun.lua")
+tome_dofile("s_geom.lua")
+
+-- God's specific spells
+tome_dofile("s_eru.lua")
+tome_dofile("s_manwe.lua")
+tome_dofile("s_tulkas.lua")
+tome_dofile("s_melkor.lua")
+tome_dofile("s_yavann.lua")
+
+-- Specific schools
+tome_dofile("s_demon.lua")
+
+-- Device spells
+tome_dofile("s_stick.lua")
+
+-- Musics
+tome_dofile("s_music.lua")
+
+-- List of spellbooks
+
+-- Create the crystal of mana
+school_book[0] = {
+ MANATHRUST, DELCURSES, RESISTS, MANASHIELD,
+}
+
+-- The book of the eternal flame
+school_book[1] = {
+ GLOBELIGHT, FIREGOLEM, FIREFLASH, FIREWALL, FIERYAURA,
+}
+
+-- The book of the blowing winds
+school_book[2] = {
+ NOXIOUSCLOUD, POISONBLOOD, INVISIBILITY, STERILIZE, AIRWINGS, THUNDERSTORM,
+}
+
+-- The book of the impenetrable earth
+school_book[3] = {
+ STONESKIN, DIG, STONEPRISON, SHAKE, STRIKE,
+}
+
+-- The book of the unstopable wave
+school_book[4] = {
+ GEYSER, VAPOR, ENTPOTION, TIDALWAVE, ICESTORM
+}
+
+-- Create the book of translocation
+school_book[5] = {
+ BLINK, DISARM, TELEPORT, TELEAWAY, RECALL, PROBABILITY_TRAVEL,
+}
+
+-- Create the book of the tree
+school_book[6] = {
+ GROWTREE, HEALING, RECOVERY, REGENERATION, SUMMONANNIMAL,
+}
+
+-- Create the book of Knowledge
+school_book[7] = {
+ SENSEMONSTERS, SENSEHIDDEN, REVEALWAYS, IDENTIFY, VISION, STARIDENTIFY,
+}
+
+-- Create the book of the Time
+school_book[8] = {
+ MAGELOCK, SLOWMONSTER, ESSENCESPEED, BANISHMENT,
+}
+
+-- Create the book of meta spells
+school_book[9] = {
+ RECHARGE, DISPERSEMAGIC, SPELLBINDER, TRACKER, INERTIA_CONTROL,
+}
+
+-- Create the book of the mind
+school_book[10] = {
+ CHARM, CONFUSE, ARMOROFFEAR, STUN,
+}
+
+-- Create the book of hellflame
+school_book[11] = {
+ DRAIN, GENOCIDE, WRAITHFORM, FLAMEOFUDUN,
+}
+
+-- Create the book of eru
+school_book[20] = {
+ ERU_SEE, ERU_LISTEN, ERU_UNDERSTAND, ERU_PROT,
+}
+
+-- Create the book of manwe
+school_book[21] = {
+ MANWE_BLESS, MANWE_SHIELD, MANWE_CALL, MANWE_AVATAR,
+}
+
+-- Create the book of tulkas
+school_book[22] = {
+ TULKAS_AIM, TULKAS_SPIN, TULKAS_WAVE,
+}
+
+-- Create the book of melkor
+school_book[23] = {
+ MELKOR_CURSE, MELKOR_CORPSE_EXPLOSION, MELKOR_MIND_STEAL,
+}
+
+-- Create the book of yavanna
+school_book[24] = {
+ YAVANNA_CHARM_ANIMAL, YAVANNA_GROW_GRASS, YAVANNA_TREE_ROOTS, YAVANNA_WATER_BITE, YAVANNA_UPROOT,
+}
+
+-- Create the book of beginner's cantrip
+school_book[50] = {
+ MANATHRUST, GLOBELIGHT, ENTPOTION, BLINK, SENSEMONSTERS, SENSEHIDDEN,
+}
+
+-- Create the book of teleporatation
+school_book[51] = {
+ BLINK, TELEPORT, TELEAWAY
+}
+
+-- Create the book of summoning
+school_book[52] = {
+ FIREGOLEM, SUMMONANNIMAL
+}
+
+
+-- Create the Armageddon Demonblade
+school_book[55] = {
+ DEMON_BLADE, DEMON_MADNESS, DEMON_FIELD,
+}
+
+-- Create the Shield Demonblade
+school_book[56] = {
+ DOOM_SHIELD, DEMON_CLOAK, UNHOLY_WORD,
+}
+
+-- Create the Control Demonblade
+school_book[57] = {
+ DEMON_SUMMON, DISCHARGE_MINION, CONTROL_DEMON,
+}
+
+-- Create the Drums
+school_book[58] = {
+ MUSIC_STOP, MUSIC_HOLD, MUSIC_CONF, MUSIC_STUN,
+}
+
+-- Create the Harps
+school_book[59] = {
+ MUSIC_STOP, MUSIC_LITE, MUSIC_HERO, MUSIC_HEAL, MUSIC_TIME, MUSIC_MIND,
+}
+
+-- Create the Horns
+school_book[60] = {
+ MUSIC_STOP, MUSIC_BLOW, MUSIC_WIND, MUSIC_YLMIR, MUSIC_AMBARKANTA,
+}
+
+-- Book of the Player, filled in by the Library Quest
+school_book[61] = { }
+
+-- Geomancy spells, not a real book
+school_book[62] = {
+ CALL_THE_ELEMENTS, CHANNEL_ELEMENTS, ELEMENTAL_WAVE, VAPORIZE, GEOLYSIS, DRIPPING_TREAD, GROW_BARRIER, ELEMENTAL_MINION
+}
diff --git a/lib/scpt/stores.lua b/lib/scpt/stores.lua
new file mode 100644
index 00000000..713b3c01
--- /dev/null
+++ b/lib/scpt/stores.lua
@@ -0,0 +1,151 @@
+-- Whats shops can buy what
+store_buy_list
+{
+ ["General Store"] =
+ {
+ TV_CORPSE,
+ TV_FOOD,
+ TV_LITE,
+ TV_FLASK,
+ TV_SPIKE,
+ TV_SHOT,
+ TV_ARROW,
+ TV_BOLT,
+ TV_DIGGING,
+ TV_CLOAK,
+ TV_BOTTLE,
+ },
+ ["Armoury"] =
+ {
+ TV_BOOTS,
+ TV_GLOVES,
+ TV_CROWN,
+ TV_HELM,
+ TV_SHIELD,
+ TV_CLOAK,
+ TV_SOFT_ARMOR,
+ TV_HARD_ARMOR,
+ TV_DRAG_ARMOR,
+ },
+ ["Weaponsmith"] =
+ {
+ TV_SHOT,
+ TV_BOLT,
+ TV_ARROW,
+ TV_BOOMERANG,
+ TV_BOW,
+ TV_DIGGING,
+ TV_HAFTED,
+ TV_POLEARM,
+ TV_SWORD,
+ TV_AXE,
+ TV_MSTAFF,
+ },
+ -- We use a function because we want to restrict to blessed weapons and god spells
+ ["Temple"] = function (obj)
+ if obj.tval == TV_DRUID_BOOK then return TRUE
+ elseif obj.tval == TV_BOOK and obj.sval == 255 and (can_spell_random(obj.pval) == SKILL_SPIRITUALITY) then return TRUE
+ elseif obj.tval == TV_SCROLL then return TRUE
+ elseif obj.tval == TV_POTION2 then return TRUE
+ elseif obj.tval == TV_POTION then return TRUE
+ elseif obj.tval == TV_HAFTED then return TRUE
+ elseif obj.tval == TV_POLEARM and is_blessed(obj) == TRUE then return TRUE
+ elseif obj.tval == TV_SWORD and is_blessed(obj) == TRUE then return TRUE
+ elseif obj.tval == TV_AXE and is_blessed(obj) == TRUE then return TRUE
+ elseif obj.tval == TV_BOOMERANG and is_blessed(obj) == TRUE then return TRUE
+ end
+ end,
+ ["Alchemy shop"] =
+ {
+ TV_SCROLL,
+ TV_POTION2,
+ TV_POTION,
+ TV_BATERIE,
+ TV_BOTTLE,
+ },
+ -- We use a function because we dont want god spells
+ ["Magic shop"] = function (obj)
+ local buy =
+ {
+ [TV_SYMBIOTIC_BOOK] = TRUE,
+ [TV_AMULET] = TRUE,
+ [TV_RING] = TRUE,
+ [TV_STAFF] = TRUE,
+ [TV_WAND] = TRUE,
+ [TV_ROD] = TRUE,
+ [TV_ROD_MAIN] = TRUE,
+ [TV_SCROLL] = TRUE,
+ [TV_POTION2] = TRUE,
+ [TV_POTION] = TRUE,
+ [TV_MSTAFF] = TRUE,
+ [TV_RANDART] = TRUE,
+ }
+
+ if obj.tval == TV_BOOK and obj.sval == 255 and (can_spell_random(obj.pval) == SKILL_MAGIC) then return TRUE
+ elseif obj.tval == TV_BOOK and obj.sval ~= 255 then return TRUE
+ elseif buy[obj.tval] == TRUE then return TRUE
+ end
+ end,
+ -- Black markets wants ALL!
+ ["Black Market"] = function (obj)
+ return TRUE
+ end,
+ ["Book Store"] =
+ {
+ TV_BOOK,
+ TV_SYMBIOTIC_BOOK,
+ TV_MUSIC_BOOK,
+ TV_DAEMON_BOOK,
+ TV_DRUID_BOOK,
+ },
+ ["Pet Shop"] =
+ {
+ TV_EGG,
+ },
+}
+
+-- Test only
+function out_sticks()
+ local i
+ for i = 0, __tmp_spells_num - 1 do
+ if __tmp_spells[i].stick then
+ if __tmp_spells[i].stick[TV_WAND] then
+ print("Wand: " .. __tmp_spells[i].name)
+ end
+ end
+ end
+ for i = 0, __tmp_spells_num - 1 do
+ if __tmp_spells[i].stick then
+ if __tmp_spells[i].stick[TV_STAFF] then
+ print("Staff: " .. __tmp_spells[i].name)
+ end
+ end
+ end
+end
+
+-- Take care to have Magic shop/Temple have specific spells only
+add_hooks
+{
+ [HOOK_STORE_STOCK] = function (index, name, level)
+ if name == "Magic shop" then
+ -- Books
+ if magik(20) == TRUE then
+ object_prep(obj_forge, lookup_kind(TV_BOOK, 255))
+ local spell = get_random_spell(SKILL_MAGIC, 20)
+ if spell > -1 then
+ obj_forge.pval = spell
+ return TRUE, obj_forge
+ end
+ end
+ elseif name == "Temple" then
+ if magik(20) == TRUE then
+ object_prep(obj_forge, lookup_kind(TV_BOOK, 255))
+ local spell = get_random_spell(SKILL_SPIRITUALITY, 20)
+ if spell > -1 then
+ obj_forge.pval = spell
+ return TRUE, obj_forge
+ end
+ end
+ end
+ end,
+}
diff --git a/lib/scpt/test.lua b/lib/scpt/test.lua
new file mode 100644
index 00000000..81dd5c03
--- /dev/null
+++ b/lib/scpt/test.lua
@@ -0,0 +1,364 @@
+--
+-- This file takes care of providing the Shiny-Test class
+-- with .. erm .. powerful spells
+--
+
+------------------------------ MAGICTYPE -- M KEY ---------------------------------
+
+zog_magic = add_magic
+{
+ ["fail"] = function(chance)
+ msg_print("So bad, we had "..chance.." chances to succeed.")
+ msg_print("Hooo bad luck the spell backfires !.")
+ take_hit("stupidity", 5)
+ end,
+ ["stat"] = A_CON,
+ -- Must return a number between 0 and 50 representing a level
+ ["get_level"] = function()
+ return get_skill_scale(SKILL_MAGIC, 25) + get_skill_scale(SKILL_SPIRITUALITY, 25)
+ end,
+ ["spell_list"] =
+ {
+ {
+ ["name"] = "Zog1",
+ ["desc"] = "dessssc zog1",
+ ["mana"] = 1,
+ ["level"] = 1,
+ ["fail"] = 10,
+ ["spell"] = function()
+ local ret, dir
+ -- Get a direction
+ ret, dir = get_aim_dir();
+ if (ret == FALSE) then return end
+ fire_ball(GF_MANA, dir, 2000, 10)
+ end,
+ ["info"] = function()
+ return " dam 2000"
+ end,
+ },
+ {
+ ["name"] = "Zog2",
+ ["desc"] = "dessssc zog2",
+ ["mana"] = 3,
+ ["level"] = 3,
+ ["fail"] = 30,
+ ["spell"] = function()
+ local ret, item, obj, o_name
+
+ -- Ask for an item
+ ret, item = get_item("What to uber-ize?",
+ "You have nothing you can uber-ize",
+ bor(USE_INVEN, USE_EQUIP),
+ function (obj)
+ if (obj.tval == TV_HAFTED) or (obj.tval == TV_SWORD) or (obj.tval == TV_POLEARM) or (obj.tval == TV_AXE) then
+ return TRUE
+ end
+ return FALSE
+ end
+ )
+
+ if ret == TRUE then
+ -- get the item
+ obj = get_object(item)
+ -- modify it
+ obj.dd = 255
+ obj.ds = 255
+ obj.to_d = 1000
+ obj.to_h = 1000
+
+ -- get the name
+ o_name = object_desc(obj, FALSE, 0);
+ msg_print("Your "..o_name.." is hit by a pure wave of uber-ification!")
+ end
+ end,
+ ["info"] = function()
+ return " cooool"
+ end,
+ },
+ {
+ ["name"] = "Zog3",
+ ["desc"] = "dessssc zog3",
+ ["mana"] = 4,
+ ["level"] = 5,
+ ["fail"] = 50,
+ ["spell"] = function()
+ local list = {[1] = "Novice Warrior", [2] = "Novice Mage"}
+ local x, y, num, max
+
+ num = rand_range(1, 2)
+ max = damroll(1, 2)
+ while (max > 0) do
+ y, x = find_position(player.py, player.px)
+ place_monster_one(y, x, test_monster_name(list[num]), 0, FALSE, MSTATUS_FRIEND)
+ max = max - 1
+ end
+ end,
+ ["info"] = function()
+ return " summons 1d2 monsters"
+ end,
+ },
+ },
+}
+
+-- Register a new magic type
+MKEY_SHINY_TEST = 1000
+add_mkey
+{
+ ["mkey"] = MKEY_SHINY_TEST,
+ ["fct"] = function()
+ execute_magic(zog_magic)
+
+ -- use up some energy
+ energy_use = energy_use + 100;
+ end
+}
+
+
+------------------------------ EXTRA POWERS ---------------------------------
+
+
+-- Register a new power (the 'U' menu)
+POWER_TEST = add_power
+{
+ ["name"] = "Test power",
+ ["desc"] = "You are a shinny test",
+ ["desc_get"] = "You become a shinny test",
+ ["desc_lose"] = "You are no more a shinny test",
+ ["level"] = 1,
+ ["cost"] = 5,
+ ["stat"] = A_CON,
+ ["fail"] = 6,
+ ["power"] = function()
+ msg_print("Zogzog !")
+ end,
+}
+
+
+---- tests
+
+function test_write()
+ local conn = zsock:new_connection()
+ zsock:setup(conn, "192.168.0.200", 2262, ZSOCK_TYPE_TCP, FALSE)
+ zsock:open(conn)
+
+ local res, len = zsock:write(conn, "footest", FALSE)
+ msg_print("res "..res.." :: len "..len)
+
+ zsock:close(conn)
+ zsock:unsetup(conn)
+ zsock:free_connection(conn);
+end
+
+function test_read()
+ local conn = zsock:new_connection()
+ zsock:setup(conn, "192.168.0.200", 2262, ZSOCK_TYPE_TCP, FALSE)
+ zsock:open(conn)
+
+
+ zsock:wait(conn, 50)
+ local res, str, len = zsock:read(conn, 9, TRUE)
+ msg_print("res "..res.." :: len "..len.." '"..str.."'")
+
+ zsock:close(conn)
+ zsock:unsetup(conn)
+ zsock:free_connection(conn);
+end
+
+
+-- A level generator being tested
+
+CORRIDOR = 1
+ROOM = 2
+
+possible_walls = {}
+
+function level_generator_dungeon2_room(feat, y, x, h, w)
+ if feat == CORRIDOR then
+ -- Add the possible walls
+ for i = x, x + w - 1 do
+ tinsert(possible_walls, {y, i})
+ tinsert(possible_walls, {y + h - 1, i})
+ end
+ for i = x, x + w - 1 do
+ tinsert(possible_walls, {x, i})
+ tinsert(possible_walls, {x, i + h - 1})
+ end
+
+ for i = x + 1, x + w - 2 do
+ for j = y + 1, y + h - 2 do
+ place_floor(j, i)
+ end
+ end
+ else
+ -- Add the possible walls
+ for i = x, x + w - 1 do
+ tinsert(possible_walls, {y, i})
+ tinsert(possible_walls, {y + h - 1, i})
+ end
+ for i = x, x + w - 1 do
+ tinsert(possible_walls, {x, i})
+ tinsert(possible_walls, {x, i + h - 1})
+ end
+
+ for i = x, x + w - 1 do
+ for j = y, y + h - 1 do
+ cave(j, i).feat = 56
+ end
+ end
+ for i = x + 1, x + w - 2 do
+ for j = y + 1, y + h - 2 do
+ place_floor(j, i)
+ end
+ end
+ end
+end
+
+function select_feature(dir)
+ if magik(30) == TRUE then
+ return ROOM, rand_range(5, 12), rand_range(7, 17)
+
+ -- Corridor selection
+ elseif dir == "up" or dir == "down" then
+ return CORRIDOR, rand_range(5, 17), 3
+ else
+ return CORRIDOR, 3, rand_range(3, 15)
+ end
+end
+
+function put_feature(feat, y, x, h, w)
+ level_generator_dungeon2_room(feat, y, x, h, w)
+end
+
+function can_feature(y, x, h, w)
+ for i = x, x + w - 1 do
+ for j = y, y + h - 1 do
+ if j <= 0 or i <= 0 or i >= cur_wid - 1 or j >= cur_hgt - 1 then return nil end
+
+ if cave_is(cave(j, i), FF1_WALL) == FALSE then return nil end
+ end
+ end
+ return not nil
+end
+
+function is_near_wall(y, x)
+ if y <= 0 or x <= 0 or x >= cur_wid - 1 or y >= cur_hgt - 1 then return nil end
+
+ if cave_is(cave(y, x), FF1_WALL) == FALSE then return nil end
+ if cave_is(cave(y - 1, x), FF1_FLOOR) == TRUE then return "down" end
+ if cave_is(cave(y + 1, x), FF1_FLOOR) == TRUE then return "up" end
+ if cave_is(cave(y, x - 1), FF1_FLOOR) == TRUE then return "right" end
+ if cave_is(cave(y, x + 1), FF1_FLOOR) == TRUE then return "left" end
+ return nil
+end
+
+function find_spot()
+--[[ local y, x = 1, 1
+
+ while not is_near_wall(y, x) do
+ y, x = rand_range(1, cur_hgt - 2), rand_range(1, cur_wid - 2)
+ end]]
+ local i = rand_range(1, getn(possible_walls))
+ local y, x = possible_walls[i][1], possible_walls[i][2]
+
+ while not is_near_wall(y, x) do
+ i = rand_range(1, getn(possible_walls))
+ y, x = possible_walls[i][1], possible_walls[i][2]
+ end
+
+ tremove(possible_walls, i)
+ return is_near_wall(y, x), y, x
+end
+
+function adjust_dir(dir, y, x, h, w)
+ if dir == "up" then
+ y = y - (h - 1)
+ x = x - (w / 2)
+ elseif dir == "down" then
+ x = x - (w / 2)
+ elseif dir == "left" then
+ y = y - (h / 2)
+ x = x - (w - 1)
+ elseif dir == "up" then
+ y = y - (h / 2)
+ end
+ return y, x
+end
+
+level_generator
+{
+ ["name"] = "dungeon2",
+ ["stairs"] = FALSE,
+ ["monsters"] = FALSE,
+ ["objects"] = FALSE,
+ ["miscs"] = FALSE,
+ ["gen"] = function()
+ for i = 1, cur_wid - 1 do
+ for j = 1, cur_hgt - 1 do
+ place_filler(j, i)
+ end
+ end
+
+
+ -- the first room
+ level_generator_dungeon2_room(ROOM, cur_hgt / 2, cur_wid / 2, rand_range(3, 10), rand_range(5, 15))
+
+
+ -- Place 10 features
+ for nb = 1, 0 do
+ -- Find a spot near an empty space
+ local dir, y, x = find_spot()
+
+ local feat, h, w = select_feature(dir)
+
+ local sy, sx = adjust_dir(dir, y, x, h, w)
+
+ if can_feature(sy, sx, h, w) then
+ put_feature(feat, sy, sx, h, w)
+ cave(y, x).feat = 32
+ end
+ end
+
+ player.py = cur_hgt / 2
+ player.px = cur_wid / 2
+ return TRUE
+ end,
+}
+
+
+-- exmaple of display_list
+function input_list_example()
+ local list = { "a", "b", "c", "d", "e", "f", "h", "g" }
+ local sel = 1
+ local begin = 1
+ local res = nil
+
+ screen_save()
+
+ while not nil do
+ display_list(1, 0, 5, 9, "select", list, begin, sel, TERM_L_BLUE)
+
+ local key = inkey()
+
+ if key == ESCAPE then break
+ elseif key == strbyte("8") then
+ sel = sel - 1
+ if sel < 1 then sel = 1 end
+ if sel < begin then
+ begin = begin - 1
+ end
+ elseif key == strbyte("2") then
+ sel = sel + 1
+ if sel > getn(list) then sel = getn(list) end
+ if sel >= begin + 4 then
+ begin = begin + 1
+ end
+ elseif key == strbyte("\r") then
+ res = list[sel]
+ break
+ end
+ end
+
+ screen_load()
+
+ if res then msg_print("Selected: " .. res) end
+end
diff --git a/lib/user/automat.atm b/lib/user/automat.atm
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/user/automat.atm
diff --git a/lib/user/delete.me b/lib/user/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/user/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/xtra/ang16.bdf b/lib/xtra/ang16.bdf
new file mode 100644
index 00000000..f59a2eca
--- /dev/null
+++ b/lib/xtra/ang16.bdf
@@ -0,0 +1,5017 @@
+STARTFONT 2.1
+FONT -Angband-Fixed-Medium-R-Normal--16-120-100-100-C-80-Misc-Fontspecific
+SIZE 16 100 100
+FONTBOUNDINGBOX 8 16 0 -2
+STARTPROPERTIES 18
+FONTNAME_REGISTRY ""
+FOUNDRY "Angband"
+FAMILY_NAME "Fixed"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 16
+POINT_SIZE 120
+RESOLUTION_X 100
+RESOLUTION_Y 100
+SPACING "C"
+AVERAGE_WIDTH 80
+CHARSET_REGISTRY "Misc"
+CHARSET_ENCODING "Fontspecific"
+DEFAULT_CHAR 32
+FONT_DESCENT 2
+FONT_ASCENT 14
+ENDPROPERTIES
+CHARS 217
+STARTCHAR C20
+ENCODING 32
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C21
+ENCODING 33
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+30
+30
+30
+30
+30
+30
+00
+00
+30
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C22
+ENCODING 34
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+66
+42
+24
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C23
+ENCODING 35
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+6c
+6c
+6c
+fe
+6c
+6c
+6c
+fe
+6c
+6c
+6c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C24
+ENCODING 36
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+10
+7c
+d2
+d0
+f0
+7c
+3e
+1e
+16
+96
+7c
+10
+00
+00
+00
+ENDCHAR
+STARTCHAR C25
+ENCODING 37
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+62
+66
+0e
+1c
+38
+70
+e0
+cc
+8c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C26
+ENCODING 38
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+30
+68
+58
+38
+70
+f2
+d4
+c8
+d4
+76
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C27
+ENCODING 39
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+18
+08
+10
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C28
+ENCODING 40
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+08
+10
+30
+30
+30
+30
+30
+30
+30
+10
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C29
+ENCODING 41
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+10
+08
+0c
+0c
+0c
+0c
+0c
+0c
+0c
+08
+10
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C2A
+ENCODING 42
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+d6
+fe
+7c
+ee
+7c
+fe
+d6
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C2B
+ENCODING 43
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+18
+18
+18
+7e
+18
+18
+18
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C2C
+ENCODING 44
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+38
+38
+10
+20
+00
+00
+ENDCHAR
+STARTCHAR C2D
+ENCODING 45
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+7e
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C2E
+ENCODING 46
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+18
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C2F
+ENCODING 47
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+02
+06
+0e
+1c
+38
+70
+e0
+c0
+80
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C30
+ENCODING 48
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+1c
+26
+66
+66
+6e
+76
+66
+66
+64
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C31
+ENCODING 49
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+18
+38
+78
+18
+18
+18
+18
+18
+18
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C32
+ENCODING 50
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+46
+66
+06
+0c
+18
+30
+62
+7e
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C33
+ENCODING 51
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+66
+66
+06
+3c
+06
+06
+66
+66
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C34
+ENCODING 52
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+02
+06
+0e
+16
+26
+46
+ff
+06
+06
+0f
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C35
+ENCODING 53
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7e
+7e
+40
+5c
+66
+46
+06
+66
+46
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C36
+ENCODING 54
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+1c
+26
+66
+60
+7c
+66
+66
+66
+66
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C37
+ENCODING 55
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7e
+7e
+42
+06
+0c
+18
+30
+30
+30
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C38
+ENCODING 56
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+66
+62
+74
+3c
+2e
+46
+46
+66
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C39
+ENCODING 57
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+66
+66
+66
+66
+3e
+06
+66
+64
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C3A
+ENCODING 58
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+18
+00
+00
+18
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C3B
+ENCODING 59
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+30
+00
+00
+00
+38
+18
+10
+20
+00
+00
+ENDCHAR
+STARTCHAR C3C
+ENCODING 60
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+04
+0c
+18
+30
+60
+30
+18
+0c
+04
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C3D
+ENCODING 61
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7e
+00
+00
+7e
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C3E
+ENCODING 62
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+20
+30
+18
+0c
+06
+0c
+18
+30
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C3F
+ENCODING 63
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+86
+06
+0c
+18
+30
+00
+30
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C40
+ENCODING 64
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+46
+9a
+b6
+ba
+b6
+9c
+80
+c2
+7c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C41
+ENCODING 65
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+06
+0e
+0e
+16
+16
+26
+3e
+46
+46
+ef
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C42
+ENCODING 66
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+62
+66
+7c
+66
+62
+62
+66
+fc
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C43
+ENCODING 67
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3e
+46
+c2
+c0
+c0
+c0
+c0
+c2
+e6
+7c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C44
+ENCODING 68
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+6e
+66
+66
+66
+66
+66
+66
+64
+f8
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C45
+ENCODING 69
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+62
+60
+64
+7c
+64
+60
+60
+62
+fe
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C46
+ENCODING 70
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+62
+60
+64
+7c
+64
+60
+60
+60
+f0
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C47
+ENCODING 71
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+66
+c2
+c0
+ce
+c6
+c6
+c6
+e4
+78
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C48
+ENCODING 72
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e7
+66
+66
+66
+7e
+66
+66
+66
+66
+e7
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C49
+ENCODING 73
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+18
+18
+18
+18
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C4A
+ENCODING 74
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+18
+18
+18
+18
+18
+18
+18
+18
+18
+d8
+70
+00
+00
+ENDCHAR
+STARTCHAR C4B
+ENCODING 75
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e7
+62
+62
+64
+68
+7c
+6e
+66
+66
+e7
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C4C
+ENCODING 76
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+f0
+60
+60
+60
+60
+60
+60
+60
+62
+fe
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C4D
+ENCODING 77
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e7
+66
+76
+7e
+7e
+56
+46
+46
+46
+ef
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C4E
+ENCODING 78
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e7
+62
+72
+72
+5a
+5a
+4e
+4e
+46
+e6
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C4F
+ENCODING 79
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+4e
+c6
+c6
+c6
+c6
+c6
+c6
+e4
+78
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C50
+ENCODING 80
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+66
+66
+64
+78
+60
+60
+60
+f0
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C51
+ENCODING 81
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+4e
+c6
+c6
+c6
+c6
+d6
+d6
+f4
+78
+0e
+00
+00
+00
+ENDCHAR
+STARTCHAR C52
+ENCODING 82
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+66
+66
+6c
+78
+64
+66
+66
+e7
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C53
+ENCODING 83
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7a
+c6
+c2
+e0
+70
+1c
+0e
+86
+ce
+bc
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C54
+ENCODING 84
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+ff
+db
+99
+18
+18
+18
+18
+18
+18
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C55
+ENCODING 85
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e3
+62
+62
+62
+62
+62
+62
+62
+72
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C56
+ENCODING 86
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e3
+62
+64
+64
+68
+68
+70
+70
+60
+60
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C57
+ENCODING 87
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e3
+62
+62
+6a
+6a
+7e
+7e
+7e
+6c
+68
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C58
+ENCODING 88
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+f7
+62
+62
+74
+38
+1c
+2e
+46
+46
+ef
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C59
+ENCODING 89
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e3
+62
+74
+34
+38
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5A
+ENCODING 90
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+86
+0e
+1c
+38
+70
+e0
+c0
+c2
+fe
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5B
+ENCODING 91
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+30
+30
+30
+30
+30
+30
+30
+30
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5C
+ENCODING 92
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+80
+c0
+e0
+70
+38
+1c
+0e
+06
+02
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5D
+ENCODING 93
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+0c
+0c
+0c
+0c
+0c
+0c
+0c
+0c
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5E
+ENCODING 94
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+10
+38
+6c
+c6
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C5F
+ENCODING 95
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C60
+ENCODING 96
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+10
+20
+30
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C61
+ENCODING 97
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+78
+8c
+1c
+6c
+ce
+dc
+68
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C62
+ENCODING 98
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+20
+60
+e0
+60
+6c
+76
+66
+66
+66
+64
+58
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C63
+ENCODING 99
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+1c
+26
+60
+60
+62
+64
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C64
+ENCODING 100
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+04
+0c
+1c
+0c
+3c
+4c
+cc
+cc
+cc
+dc
+6e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C65
+ENCODING 101
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+1c
+22
+64
+78
+72
+64
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C66
+ENCODING 102
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+06
+0f
+16
+30
+7c
+30
+30
+30
+30
+30
+78
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C67
+ENCODING 103
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+06
+3a
+4c
+64
+38
+7c
+8e
+66
+62
+3c
+00
+00
+ENDCHAR
+STARTCHAR C68
+ENCODING 104
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+20
+60
+e0
+60
+6c
+76
+66
+66
+66
+66
+e7
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C69
+ENCODING 105
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+0c
+00
+00
+04
+0c
+1c
+0c
+0c
+0c
+1e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C6A
+ENCODING 106
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+0c
+00
+00
+04
+0c
+1c
+0c
+0c
+0c
+0c
+68
+70
+00
+00
+ENDCHAR
+STARTCHAR C6B
+ENCODING 107
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+20
+60
+e0
+60
+6e
+64
+68
+70
+78
+6c
+ee
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C6C
+ENCODING 108
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+08
+18
+38
+18
+18
+18
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C6D
+ENCODING 109
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+2a
+7f
+eb
+6b
+6b
+6b
+eb
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C6E
+ENCODING 110
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+2c
+76
+e6
+66
+66
+66
+e7
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C6F
+ENCODING 111
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+1c
+26
+66
+66
+66
+64
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C70
+ENCODING 112
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+2c
+76
+e6
+66
+64
+78
+60
+60
+f0
+00
+00
+ENDCHAR
+STARTCHAR C71
+ENCODING 113
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+34
+4c
+cc
+cc
+cc
+7c
+0c
+0c
+1e
+00
+00
+ENDCHAR
+STARTCHAR C72
+ENCODING 114
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+06
+4f
+f6
+60
+60
+60
+60
+f0
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C73
+ENCODING 115
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+1e
+32
+38
+1c
+0e
+26
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C74
+ENCODING 116
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+10
+30
+7e
+30
+30
+30
+32
+34
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C75
+ENCODING 117
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+ee
+66
+66
+66
+67
+6e
+34
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C76
+ENCODING 118
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+e6
+64
+68
+68
+70
+70
+60
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C77
+ENCODING 119
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+e3
+62
+6a
+6e
+7e
+6c
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C78
+ENCODING 120
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+ee
+64
+38
+38
+38
+4c
+ee
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C79
+ENCODING 121
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+f3
+62
+36
+3c
+1c
+08
+10
+70
+60
+00
+00
+ENDCHAR
+STARTCHAR C7A
+ENCODING 122
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7e
+46
+0c
+18
+30
+62
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C7B
+ENCODING 123
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+0e
+18
+18
+18
+18
+70
+18
+18
+18
+18
+0e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C7C
+ENCODING 124
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+30
+30
+30
+30
+00
+30
+30
+30
+30
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C7D
+ENCODING 125
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+70
+18
+18
+18
+18
+0e
+18
+18
+18
+18
+70
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C7E
+ENCODING 126
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+32
+7e
+4c
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C7F
+ENCODING 127
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+10
+38
+6c
+c6
+82
+fe
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C80
+ENCODING 128
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+c6
+de
+de
+de
+dc
+c0
+7e
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C81
+ENCODING 129
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+38
+6c
+c6
+c6
+c6
+fe
+c6
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C82
+ENCODING 130
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+66
+66
+7c
+66
+66
+66
+fc
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C83
+ENCODING 131
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+66
+c0
+c0
+c0
+c0
+c0
+66
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C84
+ENCODING 132
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+f8
+6c
+66
+66
+66
+66
+66
+6c
+f8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C85
+ENCODING 133
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+66
+60
+60
+7c
+60
+60
+66
+fe
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C86
+ENCODING 134
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+66
+60
+60
+7c
+60
+60
+60
+f0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C87
+ENCODING 135
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+c6
+c0
+c0
+ce
+c6
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C88
+ENCODING 136
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+c6
+c6
+fe
+c6
+c6
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C89
+ENCODING 137
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+18
+18
+18
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8A
+ENCODING 138
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3c
+18
+18
+18
+18
+18
+d8
+d8
+70
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8B
+ENCODING 139
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+cc
+d8
+f0
+f0
+d8
+cc
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8C
+ENCODING 140
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+f0
+60
+60
+60
+60
+60
+62
+66
+fe
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8D
+ENCODING 141
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+ee
+fe
+d6
+d6
+d6
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8E
+ENCODING 142
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+e6
+e6
+f6
+de
+ce
+ce
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C8F
+ENCODING 143
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+c6
+c6
+c6
+c6
+c6
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C90
+ENCODING 144
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+66
+66
+7c
+60
+60
+60
+f0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C91
+ENCODING 145
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+c6
+c6
+c6
+c6
+c6
+d6
+7c
+06
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C92
+ENCODING 146
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fc
+66
+66
+66
+7c
+78
+6c
+66
+e6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C93
+ENCODING 147
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+c6
+c0
+60
+38
+0c
+06
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C94
+ENCODING 148
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7e
+5a
+18
+18
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C95
+ENCODING 149
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+c6
+c6
+c6
+c6
+c6
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C96
+ENCODING 150
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+c6
+c6
+c6
+c6
+6c
+38
+10
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C97
+ENCODING 151
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+d6
+d6
+d6
+fe
+ee
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C98
+ENCODING 152
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+c6
+c6
+6c
+38
+38
+38
+6c
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C99
+ENCODING 153
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+66
+66
+66
+66
+3c
+18
+18
+18
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9A
+ENCODING 154
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+fe
+c6
+8c
+18
+30
+60
+c2
+c6
+fe
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9B
+ENCODING 155
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+78
+0c
+7c
+cc
+dc
+76
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9C
+ENCODING 156
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e0
+60
+60
+7c
+66
+66
+66
+66
+fc
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9D
+ENCODING 157
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7c
+c6
+c0
+c0
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9E
+ENCODING 158
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+1c
+0c
+0c
+7c
+cc
+cc
+cc
+cc
+7e
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C9F
+ENCODING 159
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7c
+c6
+fe
+c0
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA0
+ENCODING 160
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+1c
+36
+30
+30
+fc
+30
+30
+30
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA1
+ENCODING 161
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+76
+ce
+c6
+c6
+7e
+06
+c6
+7c
+00
+00
+00
+ENDCHAR
+STARTCHAR CA2
+ENCODING 162
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e0
+60
+60
+6c
+76
+66
+66
+66
+e6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA3
+ENCODING 163
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+18
+18
+00
+38
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA4
+ENCODING 164
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+0c
+0c
+00
+1c
+0c
+0c
+0c
+0c
+cc
+cc
+78
+00
+00
+00
+ENDCHAR
+STARTCHAR CA5
+ENCODING 165
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+e0
+60
+60
+66
+6c
+78
+6c
+66
+e6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA6
+ENCODING 166
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+38
+18
+18
+18
+18
+18
+18
+18
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA7
+ENCODING 167
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+6c
+fe
+d6
+d6
+c6
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA8
+ENCODING 168
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+dc
+66
+66
+66
+66
+66
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CA9
+ENCODING 169
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7c
+c6
+c6
+c6
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CAA
+ENCODING 170
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+dc
+66
+66
+66
+7c
+60
+60
+f0
+00
+00
+00
+ENDCHAR
+STARTCHAR CAB
+ENCODING 171
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+76
+cc
+cc
+cc
+7c
+0c
+0c
+1e
+00
+00
+00
+ENDCHAR
+STARTCHAR CAC
+ENCODING 172
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+dc
+66
+60
+60
+60
+f0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CAD
+ENCODING 173
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7c
+c6
+70
+1c
+c6
+7c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CAE
+ENCODING 174
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+30
+30
+30
+fc
+30
+30
+30
+36
+1c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CAF
+ENCODING 175
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+cc
+cc
+cc
+cc
+cc
+76
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CB0
+ENCODING 176
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+c6
+c6
+c6
+6c
+38
+10
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CB1
+ENCODING 177
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+c6
+c6
+d6
+d6
+fe
+6c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CB2
+ENCODING 178
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+c6
+6c
+38
+38
+6c
+c6
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CB3
+ENCODING 179
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+c6
+c6
+c6
+ce
+76
+06
+c6
+7c
+00
+00
+00
+ENDCHAR
+STARTCHAR CB4
+ENCODING 180
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+fe
+8c
+18
+30
+62
+fe
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CB5
+ENCODING 181
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+88
+00
+00
+00
+22
+00
+00
+00
+88
+00
+00
+00
+22
+00
+00
+00
+ENDCHAR
+STARTCHAR CB6
+ENCODING 182
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+ff
+42
+42
+7e
+42
+42
+7e
+42
+42
+7e
+42
+42
+7e
+42
+42
+ENDCHAR
+STARTCHAR CB7
+ENCODING 183
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+42
+42
+7e
+42
+42
+7e
+42
+42
+7e
+42
+42
+7e
+42
+42
+ff
+ff
+ENDCHAR
+STARTCHAR CB8
+ENCODING 184
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+ff
+95
+d5
+95
+d5
+95
+d5
+95
+d5
+95
+d5
+95
+d5
+ff
+ff
+ENDCHAR
+STARTCHAR CB9
+ENCODING 185
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+c3
+81
+81
+81
+81
+81
+81
+81
+81
+81
+81
+81
+81
+81
+81
+ENDCHAR
+STARTCHAR CBA
+ENCODING 186
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+7e
+52
+52
+52
+50
+02
+12
+00
+82
+82
+92
+92
+f6
+fe
+ff
+ENDCHAR
+STARTCHAR CBB
+ENCODING 187
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+1c
+2e
+53
+ff
+00
+00
+ENDCHAR
+STARTCHAR CBC
+ENCODING 188
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+20
+20
+20
+ff
+02
+02
+02
+ff
+20
+20
+20
+ff
+02
+02
+02
+ENDCHAR
+STARTCHAR CBD
+ENCODING 189
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+81
+81
+81
+9d
+bd
+ad
+ad
+ad
+b9
+81
+81
+42
+24
+18
+00
+ENDCHAR
+STARTCHAR CBE
+ENCODING 190
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+81
+81
+81
+81
+bd
+bd
+bd
+bd
+99
+81
+81
+42
+24
+18
+00
+ENDCHAR
+STARTCHAR CBF
+ENCODING 191
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+81
+95
+9d
+bd
+95
+91
+91
+91
+91
+91
+81
+42
+24
+18
+00
+ENDCHAR
+STARTCHAR CC0
+ENCODING 192
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+e7
+db
+db
+e7
+81
+81
+e7
+e7
+e7
+e7
+e7
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR CC1
+ENCODING 193
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+e7
+c3
+e7
+e7
+e7
+c3
+a1
+81
+81
+c3
+e7
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR CC2
+ENCODING 194
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+87
+83
+b5
+85
+85
+85
+85
+85
+85
+dd
+e1
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR CC3
+ENCODING 195
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+81
+b9
+a9
+b9
+91
+91
+91
+95
+9d
+95
+81
+42
+24
+18
+00
+ENDCHAR
+STARTCHAR CC4
+ENCODING 196
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+ff
+ef
+bb
+ef
+c7
+ef
+c7
+bb
+bb
+bb
+c7
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR CC5
+ENCODING 197
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+18
+3c
+7e
+ff
+7e
+66
+66
+66
+66
+66
+66
+66
+ff
+00
+00
+ENDCHAR
+STARTCHAR CC6
+ENCODING 198
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+04
+08
+00
+7e
+90
+20
+40
+80
+84
+82
+82
+42
+3c
+00
+00
+ENDCHAR
+STARTCHAR CC7
+ENCODING 199
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+7e
+ff
+7e
+00
+00
+00
+ENDCHAR
+STARTCHAR CC8
+ENCODING 200
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+6c
+92
+10
+10
+10
+10
+54
+92
+7c
+00
+00
+00
+ENDCHAR
+STARTCHAR CC9
+ENCODING 201
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+c0
+c0
+00
+00
+0c
+0c
+00
+00
+c0
+c0
+00
+00
+0c
+0c
+00
+00
+ENDCHAR
+STARTCHAR CCA
+ENCODING 202
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+55
+aa
+55
+aa
+55
+aa
+55
+aa
+55
+aa
+55
+aa
+55
+aa
+55
+aa
+ENDCHAR
+STARTCHAR CCB
+ENCODING 203
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+44
+aa
+11
+00
+44
+aa
+11
+00
+44
+aa
+11
+00
+44
+aa
+11
+ENDCHAR
+STARTCHAR CCC
+ENCODING 204
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+3c
+6e
+df
+ff
+bf
+ff
+ff
+ff
+7e
+18
+18
+3c
+7e
+00
+00
+ENDCHAR
+STARTCHAR CCD
+ENCODING 205
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+18
+3c
+7e
+7e
+7e
+7e
+7e
+3c
+18
+18
+3c
+00
+00
+ENDCHAR
+STARTCHAR CCE
+ENCODING 206
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+24
+5a
+91
+21
+42
+94
+69
+46
+82
+11
+aa
+44
+00
+00
+00
+ENDCHAR
+STARTCHAR CCF
+ENCODING 207
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+df
+df
+df
+00
+fd
+fd
+fd
+00
+df
+df
+df
+00
+fd
+fd
+fd
+ENDCHAR
+STARTCHAR CD0
+ENCODING 208
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ENDCHAR
+STARTCHAR CD1
+ENCODING 209
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+42
+00
+42
+42
+42
+ff
+7e
+7e
+7e
+7e
+ff
+00
+00
+ENDCHAR
+STARTCHAR CD2
+ENCODING 210
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+1c
+1c
+08
+3e
+49
+3e
+49
+3e
+49
+1c
+2a
+22
+22
+46
+00
+ENDCHAR
+STARTCHAR CD3
+ENCODING 211
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+48
+84
+02
+25
+18
+98
+64
+62
+14
+08
+12
+21
+42
+04
+08
+ENDCHAR
+STARTCHAR CD4
+ENCODING 212
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+38
+38
+10
+10
+10
+10
+10
+10
+10
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CD5
+ENCODING 213
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+3e
+43
+7d
+45
+45
+7e
+00
+00
+00
+ENDCHAR
+STARTCHAR CD6
+ENCODING 214
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+1c
+26
+5f
+5f
+5f
+2e
+1c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CD7
+ENCODING 215
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+10
+38
+54
+10
+10
+10
+10
+10
+10
+10
+28
+00
+00
+ENDCHAR
+STARTCHAR CD8
+ENCODING 216
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+60
+10
+48
+0c
+4c
+0c
+4c
+0c
+4c
+08
+50
+20
+40
+00
+00
+ENDCHAR
+STARTCHAR CD9
+ENCODING 217
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+7c
+fe
+92
+10
+10
+10
+10
+10
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CDA
+ENCODING 218
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+0f
+0f
+0f
+0f
+10
+a0
+40
+a0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CDB
+ENCODING 219
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+48
+4c
+5e
+7e
+5e
+4c
+48
+40
+40
+40
+40
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR CDC
+ENCODING 220
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+03
+07
+0e
+1c
+38
+b0
+40
+a0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CDD
+ENCODING 221
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+60
+60
+60
+60
+70
+7c
+5e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CDE
+ENCODING 222
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+28
+aa
+aa
+be
+fc
+7d
+7d
+3e
+38
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CDF
+ENCODING 223
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+1c
+3e
+7f
+41
+41
+41
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CE0
+ENCODING 224
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+18
+3c
+18
+7e
+db
+db
+7e
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CE1
+ENCODING 225
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+7e
+7e
+7e
+5a
+66
+3c
+3c
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CE2
+ENCODING 226
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+36
+77
+7f
+77
+7f
+77
+5d
+6b
+77
+7f
+00
+00
+00
+ENDCHAR
+STARTCHAR CE3
+ENCODING 227
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+66
+db
+b5
+2c
+56
+6a
+56
+6a
+7e
+00
+00
+00
+ENDCHAR
+STARTCHAR CE4
+ENCODING 228
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+66
+db
+b5
+2c
+56
+6a
+56
+6a
+7e
+00
+00
+00
+ENDCHAR
+STARTCHAR CE5
+ENCODING 229
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+66
+db
+bd
+3c
+7e
+7e
+7e
+7e
+7e
+00
+00
+00
+ENDCHAR
+STARTCHAR CE6
+ENCODING 230
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+10
+10
+10
+7c
+82
+82
+92
+82
+92
+ba
+fe
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CE7
+ENCODING 231
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+1c
+22
+42
+44
+84
+82
+82
+62
+1c
+70
+d8
+a8
+d8
+70
+ENDCHAR
+STARTCHAR CE8
+ENCODING 232
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+28
+82
+10
+38
+10
+38
+44
+44
+44
+38
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CE9
+ENCODING 233
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+01
+02
+02
+00
+00
+06
+06
+0c
+0c
+18
+18
+30
+30
+60
+60
+00
+ENDCHAR
+STARTCHAR CEA
+ENCODING 234
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+22
+24
+28
+80
+50
+10
+08
+08
+04
+04
+02
+02
+00
+00
+00
+ENDCHAR
+STARTCHAR CEB
+ENCODING 235
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+08
+10
+42
+24
+00
+18
+18
+18
+18
+18
+18
+18
+00
+00
+00
+ENDCHAR
+STARTCHAR CEC
+ENCODING 236
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+3f
+7d
+46
+7c
+44
+7c
+4c
+7c
+54
+7c
+fc
+00
+00
+00
+ENDCHAR
+STARTCHAR CED
+ENCODING 237
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+3c
+00
+18
+18
+18
+3c
+6e
+5e
+5e
+5e
+7e
+7e
+7e
+00
+00
+ENDCHAR
+STARTCHAR CEE
+ENCODING 238
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+38
+7c
+fe
+fe
+10
+10
+38
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CEF
+ENCODING 239
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+7c
+7e
+7d
+55
+7d
+4d
+7d
+7d
+7d
+7d
+7d
+43
+3f
+00
+ENDCHAR
+STARTCHAR CF0
+ENCODING 240
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+92
+54
+01
+98
+3d
+bc
+19
+40
+82
+29
+48
+00
+00
+00
+ENDCHAR
+STARTCHAR CF1
+ENCODING 241
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+01
+02
+08
+7b
+78
+08
+02
+01
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CF2
+ENCODING 242
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+10
+38
+7c
+fe
+fe
+7c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CF3
+ENCODING 243
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+3c
+76
+c1
+d7
+c1
+f5
+c1
+76
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CF4
+ENCODING 244
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+28
+28
+82
+44
+00
+7c
+c6
+7c
+38
+10
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CF5
+ENCODING 245
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+38
+10
+10
+10
+10
+38
+54
+92
+38
+54
+92
+30
+00
+00
+ENDCHAR
+STARTCHAR CF6
+ENCODING 246
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+3c
+18
+24
+42
+42
+7e
+7e
+3c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR CF7
+ENCODING 247
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+08
+0c
+0e
+0a
+0a
+0c
+08
+78
+f8
+70
+00
+00
+00
+ENDCHAR
+STARTCHAR CF8
+ENCODING 248
+SWIDTH 480 0
+DWIDTH 8 0
+BBX 8 16 0 -2
+BITMAP
+00
+00
+00
+00
+3c
+66
+66
+0c
+18
+18
+00
+18
+18
+00
+00
+00
+ENDCHAR
+ENDFONT
diff --git a/lib/xtra/angband.fnt b/lib/xtra/angband.fnt
new file mode 100644
index 00000000..d4db7bf2
--- /dev/null
+++ b/lib/xtra/angband.fnt
Binary files differ
diff --git a/lib/xtra/font/10X20.FON b/lib/xtra/font/10X20.FON
new file mode 100644
index 00000000..5a51ee9d
--- /dev/null
+++ b/lib/xtra/font/10X20.FON
Binary files differ
diff --git a/lib/xtra/font/12X24.FON b/lib/xtra/font/12X24.FON
new file mode 100644
index 00000000..7542c934
--- /dev/null
+++ b/lib/xtra/font/12X24.FON
Binary files differ
diff --git a/lib/xtra/font/5X8.FON b/lib/xtra/font/5X8.FON
new file mode 100644
index 00000000..53cdb63b
--- /dev/null
+++ b/lib/xtra/font/5X8.FON
Binary files differ
diff --git a/lib/xtra/font/6X10.FON b/lib/xtra/font/6X10.FON
new file mode 100644
index 00000000..cb93c326
--- /dev/null
+++ b/lib/xtra/font/6X10.FON
Binary files differ
diff --git a/lib/xtra/font/6X12.FON b/lib/xtra/font/6X12.FON
new file mode 100644
index 00000000..304af0b0
--- /dev/null
+++ b/lib/xtra/font/6X12.FON
Binary files differ
diff --git a/lib/xtra/font/6X13.FON b/lib/xtra/font/6X13.FON
new file mode 100644
index 00000000..9e59e40d
--- /dev/null
+++ b/lib/xtra/font/6X13.FON
Binary files differ
diff --git a/lib/xtra/font/6X13B.FON b/lib/xtra/font/6X13B.FON
new file mode 100644
index 00000000..07fa4932
--- /dev/null
+++ b/lib/xtra/font/6X13B.FON
Binary files differ
diff --git a/lib/xtra/font/6X9.FON b/lib/xtra/font/6X9.FON
new file mode 100644
index 00000000..c0913ac7
--- /dev/null
+++ b/lib/xtra/font/6X9.FON
Binary files differ
diff --git a/lib/xtra/font/7X13.FON b/lib/xtra/font/7X13.FON
new file mode 100644
index 00000000..d7f24c64
--- /dev/null
+++ b/lib/xtra/font/7X13.FON
Binary files differ
diff --git a/lib/xtra/font/7X13B.FON b/lib/xtra/font/7X13B.FON
new file mode 100644
index 00000000..6031925e
--- /dev/null
+++ b/lib/xtra/font/7X13B.FON
Binary files differ
diff --git a/lib/xtra/font/8X13.FON b/lib/xtra/font/8X13.FON
new file mode 100644
index 00000000..adf8ffaf
--- /dev/null
+++ b/lib/xtra/font/8X13.FON
Binary files differ
diff --git a/lib/xtra/font/8X13B.FON b/lib/xtra/font/8X13B.FON
new file mode 100644
index 00000000..e1d35106
--- /dev/null
+++ b/lib/xtra/font/8X13B.FON
Binary files differ
diff --git a/lib/xtra/font/9X15.FON b/lib/xtra/font/9X15.FON
new file mode 100644
index 00000000..7963de76
--- /dev/null
+++ b/lib/xtra/font/9X15.FON
Binary files differ
diff --git a/lib/xtra/font/9X15B.FON b/lib/xtra/font/9X15B.FON
new file mode 100644
index 00000000..ff5ab215
--- /dev/null
+++ b/lib/xtra/font/9X15B.FON
Binary files differ
diff --git a/lib/xtra/font/VeraMono.ttf b/lib/xtra/font/VeraMono.ttf
new file mode 100644
index 00000000..139f0b43
--- /dev/null
+++ b/lib/xtra/font/VeraMono.ttf
Binary files differ
diff --git a/lib/xtra/font/XM10X17.FNT b/lib/xtra/font/XM10X17.FNT
new file mode 100644
index 00000000..bf96f2c1
--- /dev/null
+++ b/lib/xtra/font/XM10X17.FNT
Binary files differ
diff --git a/lib/xtra/font/XM10X17B.FNT b/lib/xtra/font/XM10X17B.FNT
new file mode 100644
index 00000000..4df07431
--- /dev/null
+++ b/lib/xtra/font/XM10X17B.FNT
Binary files differ
diff --git a/lib/xtra/font/XM12X20.FNT b/lib/xtra/font/XM12X20.FNT
new file mode 100644
index 00000000..7d4b3ab9
--- /dev/null
+++ b/lib/xtra/font/XM12X20.FNT
Binary files differ
diff --git a/lib/xtra/font/XM12X20B.FNT b/lib/xtra/font/XM12X20B.FNT
new file mode 100644
index 00000000..d43c199d
--- /dev/null
+++ b/lib/xtra/font/XM12X20B.FNT
Binary files differ
diff --git a/lib/xtra/font/XM16X25.FNT b/lib/xtra/font/XM16X25.FNT
new file mode 100644
index 00000000..abe43d44
--- /dev/null
+++ b/lib/xtra/font/XM16X25.FNT
Binary files differ
diff --git a/lib/xtra/font/XM16X25B.FNT b/lib/xtra/font/XM16X25B.FNT
new file mode 100644
index 00000000..e676a37f
--- /dev/null
+++ b/lib/xtra/font/XM16X25B.FNT
Binary files differ
diff --git a/lib/xtra/font/XM5X8.FNT b/lib/xtra/font/XM5X8.FNT
new file mode 100644
index 00000000..1d3f5977
--- /dev/null
+++ b/lib/xtra/font/XM5X8.FNT
Binary files differ
diff --git a/lib/xtra/font/XM6X12.FNT b/lib/xtra/font/XM6X12.FNT
new file mode 100644
index 00000000..173a687f
--- /dev/null
+++ b/lib/xtra/font/XM6X12.FNT
Binary files differ
diff --git a/lib/xtra/font/XM6X12B.FNT b/lib/xtra/font/XM6X12B.FNT
new file mode 100644
index 00000000..81c2da41
--- /dev/null
+++ b/lib/xtra/font/XM6X12B.FNT
Binary files differ
diff --git a/lib/xtra/font/XM8X16B.FNT b/lib/xtra/font/XM8X16B.FNT
new file mode 100644
index 00000000..54b4e493
--- /dev/null
+++ b/lib/xtra/font/XM8X16B.FNT
Binary files differ
diff --git a/lib/xtra/font/xm4x6.fnt b/lib/xtra/font/xm4x6.fnt
new file mode 100644
index 00000000..f879fe42
--- /dev/null
+++ b/lib/xtra/font/xm4x6.fnt
Binary files differ
diff --git a/lib/xtra/font/xm8x13.fnt b/lib/xtra/font/xm8x13.fnt
new file mode 100644
index 00000000..57d2dd3c
--- /dev/null
+++ b/lib/xtra/font/xm8x13.fnt
Binary files differ
diff --git a/lib/xtra/font/xm8x13b.fnt b/lib/xtra/font/xm8x13b.fnt
new file mode 100644
index 00000000..00c25d6b
--- /dev/null
+++ b/lib/xtra/font/xm8x13b.fnt
Binary files differ
diff --git a/lib/xtra/font/xm8x16.fnt b/lib/xtra/font/xm8x16.fnt
new file mode 100644
index 00000000..0f7de641
--- /dev/null
+++ b/lib/xtra/font/xm8x16.fnt
Binary files differ
diff --git a/lib/xtra/graf/16x16.bmp b/lib/xtra/graf/16x16.bmp
new file mode 100644
index 00000000..2e6b0ebf
--- /dev/null
+++ b/lib/xtra/graf/16x16.bmp
Binary files differ
diff --git a/lib/xtra/graf/16x16.png b/lib/xtra/graf/16x16.png
new file mode 100644
index 00000000..9fc1681a
--- /dev/null
+++ b/lib/xtra/graf/16x16.png
Binary files differ
diff --git a/lib/xtra/graf/8x8.bmp b/lib/xtra/graf/8x8.bmp
new file mode 100644
index 00000000..02d2d1a9
--- /dev/null
+++ b/lib/xtra/graf/8x8.bmp
Binary files differ
diff --git a/lib/xtra/graf/8x8.png b/lib/xtra/graf/8x8.png
new file mode 100644
index 00000000..d56e9d6a
--- /dev/null
+++ b/lib/xtra/graf/8x8.png
Binary files differ
diff --git a/lib/xtra/graf/mask.bmp b/lib/xtra/graf/mask.bmp
new file mode 100644
index 00000000..fced8b05
--- /dev/null
+++ b/lib/xtra/graf/mask.bmp
Binary files differ
diff --git a/lib/xtra/graf/tome-128.png b/lib/xtra/graf/tome-128.png
new file mode 100644
index 00000000..31b79c31
--- /dev/null
+++ b/lib/xtra/graf/tome-128.png
Binary files differ
diff --git a/lib/xtra/music/delete.me b/lib/xtra/music/delete.me
new file mode 100644
index 00000000..2e65efe2
--- /dev/null
+++ b/lib/xtra/music/delete.me
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/lib/xtra/sound/Sound.cfg b/lib/xtra/sound/Sound.cfg
new file mode 100644
index 00000000..eb3a7f39
--- /dev/null
+++ b/lib/xtra/sound/Sound.cfg
@@ -0,0 +1,79 @@
+# sound.cfg
+#
+# Configuration file for the Angband sound events
+#
+# The format is:
+# name of the Angband event = list of the available sample-names seperated by spaces.
+#
+# Example:
+# hit = hit.wav hit1.wav
+#
+# Look at the definition of "angband_sound_name" in variable.c for a complete list of
+# all the available event names.
+
+[Sound]
+hit = hit.wav drop.wav hit1.wav
+miss = miss.wav miss1.wav
+flee = flee.wav
+drop = clunk.wav
+kill = kill.wav destroy.wav kill1.wav
+level = level.wav
+death = death.wav
+study =
+teleport =
+shoot =
+quaff =
+zap =
+walk =
+tpother =
+hitwall =
+eat = eat.wav
+store1 = money.wav
+store2 = money.wav
+store3 = money.wav
+store4 = money.wav
+dig = thump.wav
+opendoor = opendoor.wav
+shutdoor = shutdoor.wav
+tplevel = teleport.wav
+scroll =
+buy =
+sell =
+warn =
+rocket =
+n_kill =
+u_kill =
+quest =
+heal =
+x_heal =
+bite =
+claw =
+m_spell =
+summon =
+breath =
+ball =
+m_heal =
+atkspell =
+evil =
+touch =
+sting =
+crush =
+slime =
+wail =
+winner =
+fire =
+acid =
+elec =
+cold =
+illegal =
+fail =
+wakeup =
+invuln =
+fall =
+pain =
+destitem =
+moan =
+show =
+unused =
+explode =
+
diff --git a/lib/xtra/sound/readme.txt b/lib/xtra/sound/readme.txt
new file mode 100644
index 00000000..49bb86a1
--- /dev/null
+++ b/lib/xtra/sound/readme.txt
@@ -0,0 +1,33 @@
+New Sound Effect For Angband 2.8.1 Windows 95 (beta release)
+
+Changes since Alpha release:
+
+Altered sounds: breath.wav
+ death.wav
+ flee.wav
+ hit.wav
+ kill.wav
+
+
+New sounds: None (no new events yet)
+
+
+Useage:
+
+Unzip files into your angband 2.8.1 sounds directory EG:
+
+C:\angband-281\lib\xtra\sound
+
+That's it!
+
+If you wish to use the sounds for any other purpose or wish to include them as the default sounds
+in your variant of Angband, contact me at either:
+
+tim.haywood@ocean.co.uk or timothy.haywood@virgin.net
+
+Legal Stuff:
+
+This is a patch for Angband 2.8.1 (Windows95 Version).
+Copyright @ 1997 Tim Haywood
+Not for resale.
+Not for release with original version of Angband without permission.