summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoj Srivastava <srivasta@debian.org>2016-01-27 12:43:59 -0800
committerManoj Srivastava <srivasta@debian.org>2016-01-27 12:50:09 -0800
commit76fce162659078323fcd5e54b3195dae371faca2 (patch)
treec1d93d415b96238aae3c54eb83cb0815af2e4bca
parentb4456969cd02d75c599a5b86b225c0774697e85d (diff)
parent4aa1a39402c3908e9e8b6eb3fd4e2183d5e5c52e (diff)
Merge branch 'development' into upstream
Signed-off-by: Manoj Srivastava <srivasta@debian.org> # Conflicts: # src/.gitignore # src/maid-x11.c # src/quest.pkg
-rw-r--r--.gitignore5
-rw-r--r--BUGS.txt6
-rw-r--r--CMakeLists.txt59
-rw-r--r--README.md99
-rw-r--r--README.txt85
-rw-r--r--changes.old6027
-rw-r--r--changes.txt198
-rw-r--r--doc/DEBUG.txt (renamed from DEBUG.txt)0
-rw-r--r--doc/RELEASE.txt8
-rw-r--r--doc/changes.txt208
-rw-r--r--doc/credits.txt (renamed from credits.txt)0
-rw-r--r--doc/images/screenshot.pngbin0 -> 20223 bytes
-rw-r--r--lib/.gitignore2
-rw-r--r--lib/CMakeLists.txt10
-rw-r--r--lib/apex/.cvsignore1
-rw-r--r--lib/core/auto.lua859
-rw-r--r--lib/core/building.lua15
-rw-r--r--lib/core/crpt_aux.lua182
-rw-r--r--lib/core/dungeon.lua55
-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.lua83
-rw-r--r--lib/core/load.lua37
-rw-r--r--lib/core/load2.lua56
-rw-r--r--lib/core/mimc_aux.lua96
-rw-r--r--lib/core/monsters.lua16
-rw-r--r--lib/core/objects.lua45
-rw-r--r--lib/core/player.lua135
-rw-r--r--lib/core/quests.lua57
-rw-r--r--lib/core/s_aux.lua716
-rw-r--r--lib/core/stores.lua32
-rw-r--r--lib/core/util.lua158
-rw-r--r--lib/core/xml.lua375
-rw-r--r--lib/data/.cvsignore2
-rw-r--r--lib/edit/a_info.txt190
-rw-r--r--lib/edit/ab_info.txt19
-rw-r--r--lib/edit/al_info.txt2097
-rw-r--r--lib/edit/ba_info.txt50
-rw-r--r--lib/edit/d_info.txt6
-rw-r--r--lib/edit/e_info.txt22
-rw-r--r--lib/edit/f_info.txt5
-rw-r--r--lib/edit/k_info.txt193
-rw-r--r--lib/edit/misc.txt3
-rw-r--r--lib/edit/ow_info.txt146
-rw-r--r--lib/edit/p_info.txt50
-rw-r--r--lib/edit/r_info.txt4
-rw-r--r--lib/edit/ra_info.txt4
-rw-r--r--lib/edit/re_info.txt4
-rw-r--r--lib/edit/s_info.txt10
-rw-r--r--lib/edit/set_info.txt4
-rw-r--r--lib/edit/st_info.txt23
-rw-r--r--lib/edit/t_basic.txt80
-rw-r--r--lib/edit/t_bree.txt5
-rw-r--r--lib/edit/t_gondol.txt5
-rw-r--r--lib/edit/t_minas.txt5
-rw-r--r--lib/edit/tr_info.txt2
-rw-r--r--lib/edit/v_info.txt5
-rw-r--r--lib/edit/wf_info.txt4
-rw-r--r--lib/file/elvish.txt218
-rw-r--r--lib/help/ability.txt20
-rw-r--r--lib/help/advanced.hlp5
-rw-r--r--lib/help/automat.txt7
-rw-r--r--lib/help/birth.txt3
-rw-r--r--lib/help/c_alchem.txt135
-rw-r--r--lib/help/c_merch.txt29
-rw-r--r--lib/help/command.txt44
-rw-r--r--lib/help/debug.txt5
-rw-r--r--lib/help/def.aux3
-rw-r--r--lib/help/defines.txt23
-rw-r--r--lib/help/dungeon.txt2
-rw-r--r--lib/help/essences.txt219
-rw-r--r--lib/help/index.txt9
-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/macrofaq.txt16
-rw-r--r--lib/help/magic.txt5
-rw-r--r--lib/help/option.txt131
-rw-r--r--lib/help/skills.txt11
-rw-r--r--lib/help/spoiler.hlp1
-rw-r--r--lib/help/tome_faq.txt8
-rw-r--r--lib/mods/.cvsignore1
-rw-r--r--lib/mods/CMakeLists.txt1
-rw-r--r--lib/mods/mods_aux.lua185
-rw-r--r--lib/mods/modules.lua5
-rw-r--r--lib/mods/theme/CMakeLists.txt14
-rw-r--r--lib/mods/theme/core/auto.lua859
-rw-r--r--lib/mods/theme/core/building.lua15
-rw-r--r--lib/mods/theme/core/crpt_aux.lua182
-rw-r--r--lib/mods/theme/core/dungeon.lua55
-rw-r--r--lib/mods/theme/core/gen_idx.lua261
-rw-r--r--lib/mods/theme/core/gods.lua40
-rw-r--r--lib/mods/theme/core/help.lua141
-rw-r--r--lib/mods/theme/core/init.lua83
-rw-r--r--lib/mods/theme/core/load.lua37
-rw-r--r--lib/mods/theme/core/load2.lua56
-rw-r--r--lib/mods/theme/core/mimc_aux.lua96
-rw-r--r--lib/mods/theme/core/monsters.lua16
-rw-r--r--lib/mods/theme/core/objects.lua45
-rw-r--r--lib/mods/theme/core/player.lua135
-rw-r--r--lib/mods/theme/core/quests.lua57
-rw-r--r--lib/mods/theme/core/s_aux.lua716
-rw-r--r--lib/mods/theme/core/stores.lua32
-rw-r--r--lib/mods/theme/core/util.lua158
-rw-r--r--lib/mods/theme/core/xml.lua375
-rw-r--r--lib/mods/theme/edit/a_info.txt233
-rw-r--r--lib/mods/theme/edit/ab_info.txt10
-rw-r--r--lib/mods/theme/edit/al_info.txt12
-rw-r--r--lib/mods/theme/edit/ba_info.txt50
-rw-r--r--lib/mods/theme/edit/d_info.txt9
-rw-r--r--lib/mods/theme/edit/e_info.txt26
-rw-r--r--lib/mods/theme/edit/f_info.txt5
-rw-r--r--lib/mods/theme/edit/k_info.txt56
-rw-r--r--lib/mods/theme/edit/misc.txt3
-rw-r--r--lib/mods/theme/edit/ow_info.txt431
-rw-r--r--lib/mods/theme/edit/p_info.txt21
-rw-r--r--lib/mods/theme/edit/r_info.txt8
-rw-r--r--lib/mods/theme/edit/ra_info.txt4
-rw-r--r--lib/mods/theme/edit/re_info.txt4
-rw-r--r--lib/mods/theme/edit/s_info.txt4
-rw-r--r--lib/mods/theme/edit/set_info.txt4
-rw-r--r--lib/mods/theme/edit/st_info.txt20
-rw-r--r--lib/mods/theme/edit/t_basic.txt66
-rw-r--r--lib/mods/theme/edit/t_gondol.txt5
-rw-r--r--lib/mods/theme/edit/t_minas.txt2
-rw-r--r--lib/mods/theme/edit/tr_info.txt2
-rw-r--r--lib/mods/theme/edit/v_info.txt5
-rw-r--r--lib/mods/theme/edit/w_info.txt2
-rw-r--r--lib/mods/theme/edit/wf_info.txt10
-rw-r--r--lib/mods/theme/file/elvish.txt218
-rw-r--r--lib/mods/theme/help/ability.txt20
-rw-r--r--lib/mods/theme/help/advanced.hlp5
-rw-r--r--lib/mods/theme/help/automat.txt7
-rw-r--r--lib/mods/theme/help/c_alchem.txt135
-rw-r--r--lib/mods/theme/help/c_merch.txt29
-rw-r--r--lib/mods/theme/help/command.txt44
-rw-r--r--lib/mods/theme/help/debug.txt5
-rw-r--r--lib/mods/theme/help/def.aux3
-rw-r--r--lib/mods/theme/help/defines.txt23
-rw-r--r--lib/mods/theme/help/dungeon.txt2
-rw-r--r--lib/mods/theme/help/essences.txt219
-rw-r--r--lib/mods/theme/help/lua.hlp34
-rw-r--r--lib/mods/theme/help/lua_gf.txt45
-rw-r--r--lib/mods/theme/help/lua_intr.txt133
-rw-r--r--lib/mods/theme/help/lua_mon.txt535
-rw-r--r--lib/mods/theme/help/lua_play.txt1225
-rw-r--r--lib/mods/theme/help/lua_pow.txt266
-rw-r--r--lib/mods/theme/help/lua_ques.txt299
-rw-r--r--lib/mods/theme/help/lua_skil.txt342
-rw-r--r--lib/mods/theme/help/lua_spel.txt2150
-rw-r--r--lib/mods/theme/help/lua_util.txt898
-rw-r--r--lib/mods/theme/help/macrofaq.txt16
-rw-r--r--lib/mods/theme/help/magic.txt5
-rw-r--r--lib/mods/theme/help/option.txt131
-rw-r--r--lib/mods/theme/help/skills.txt11
-rw-r--r--lib/mods/theme/help/spoiler.hlp1
-rw-r--r--lib/mods/theme/help/tome_faq.txt8
-rw-r--r--lib/mods/theme/module.lua48
-rw-r--r--lib/mods/theme/pref/font-ami.prf28
-rw-r--r--lib/mods/theme/pref/font-dos.prf8
-rw-r--r--lib/mods/theme/pref/font-mac.new110
-rw-r--r--lib/mods/theme/pref/font-xxx.prf3
-rw-r--r--lib/mods/theme/pref/font.prf20
-rw-r--r--lib/mods/theme/pref/graf-ami.prf64
-rw-r--r--lib/mods/theme/pref/graf-dos.prf15
-rw-r--r--lib/mods/theme/pref/graf-ibm.prf6237
-rw-r--r--lib/mods/theme/pref/graf-iso.prf5963
-rw-r--r--lib/mods/theme/pref/graf-mac.prf15
-rw-r--r--lib/mods/theme/pref/graf-new.prf6934
-rw-r--r--lib/mods/theme/pref/graf-sdl.prf37
-rw-r--r--lib/mods/theme/pref/graf-win.prf16
-rw-r--r--lib/mods/theme/pref/graf-x11.prf37
-rw-r--r--lib/mods/theme/pref/graf-xxx.prf3267
-rw-r--r--lib/mods/theme/pref/graf.prf51
-rw-r--r--lib/mods/theme/pref/pref-acn.prf24
-rw-r--r--lib/mods/theme/pref/pref-ami.prf7
-rw-r--r--lib/mods/theme/pref/pref-emx.prf19
-rw-r--r--lib/mods/theme/pref/pref.prf16
-rw-r--r--lib/mods/theme/pref/user.prf17
-rw-r--r--lib/mods/theme/pref/xtra-new.prf63
-rw-r--r--lib/mods/theme/scpt/bounty.lua90
-rw-r--r--lib/mods/theme/scpt/corrupt.lua1089
-rw-r--r--lib/mods/theme/scpt/drunk.lua21
-rw-r--r--lib/mods/theme/scpt/fireprof.lua415
-rw-r--r--lib/mods/theme/scpt/god.lua812
-rw-r--r--lib/mods/theme/scpt/gods.lua26
-rw-r--r--lib/mods/theme/scpt/gods_new.lua454
-rw-r--r--lib/mods/theme/scpt/gondolin.lua63
-rw-r--r--lib/mods/theme/scpt/help.lua445
-rw-r--r--lib/mods/theme/scpt/init.lua56
-rw-r--r--lib/mods/theme/scpt/intro.lua43
-rw-r--r--lib/mods/theme/scpt/joke.lua31
-rw-r--r--lib/mods/theme/scpt/library.lua439
-rw-r--r--lib/mods/theme/scpt/mimic.lua419
-rw-r--r--lib/mods/theme/scpt/misc.lua213
-rw-r--r--lib/mods/theme/scpt/mkeys.lua95
-rw-r--r--lib/mods/theme/scpt/monsters.lua182
-rw-r--r--lib/mods/theme/scpt/player.lua196
-rw-r--r--lib/mods/theme/scpt/powers.lua61
-rw-r--r--lib/mods/theme/scpt/s_air.lua193
-rw-r--r--lib/mods/theme/scpt/s_aule.lua222
-rw-r--r--lib/mods/theme/scpt/s_convey.lua226
-rw-r--r--lib/mods/theme/scpt/s_demon.lua337
-rw-r--r--lib/mods/theme/scpt/s_divin.lua230
-rw-r--r--lib/mods/theme/scpt/s_earth.lua184
-rw-r--r--lib/mods/theme/scpt/s_eru.lua130
-rw-r--r--lib/mods/theme/scpt/s_fire.lua227
-rw-r--r--lib/mods/theme/scpt/s_geom.lua656
-rw-r--r--lib/mods/theme/scpt/s_mana.lua132
-rw-r--r--lib/mods/theme/scpt/s_mandos.lua186
-rw-r--r--lib/mods/theme/scpt/s_manwe.lua144
-rw-r--r--lib/mods/theme/scpt/s_melkor.lua154
-rw-r--r--lib/mods/theme/scpt/s_meta.lua287
-rw-r--r--lib/mods/theme/scpt/s_mind.lua132
-rw-r--r--lib/mods/theme/scpt/s_music.lua443
-rw-r--r--lib/mods/theme/scpt/s_nature.lua184
-rw-r--r--lib/mods/theme/scpt/s_stick.lua494
-rw-r--r--lib/mods/theme/scpt/s_tempo.lua162
-rw-r--r--lib/mods/theme/scpt/s_tulkas.lua81
-rw-r--r--lib/mods/theme/scpt/s_udun.lua180
-rw-r--r--lib/mods/theme/scpt/s_ulmo.lua147
-rw-r--r--lib/mods/theme/scpt/s_varda.lua140
-rw-r--r--lib/mods/theme/scpt/s_water.lua154
-rw-r--r--lib/mods/theme/scpt/s_yavann.lua157
-rw-r--r--lib/mods/theme/scpt/spells.lua627
-rw-r--r--lib/mods/theme/scpt/stores.lua161
-rw-r--r--lib/mods/theme/user/all.prf63
-rw-r--r--lib/module.lua36
-rw-r--r--lib/patch/.cvsignore1
-rw-r--r--lib/pref/422color.prf909
-rw-r--r--lib/pref/font-ami.prf28
-rw-r--r--lib/pref/font-dos.prf8
-rw-r--r--lib/pref/font-mac.new108
-rw-r--r--lib/pref/font-xxx.prf3
-rw-r--r--lib/pref/font.prf20
-rw-r--r--lib/pref/graf-ami.prf64
-rw-r--r--lib/pref/graf-dos.prf15
-rw-r--r--lib/pref/graf-iso.prf6878
-rw-r--r--lib/pref/graf-mac.prf15
-rw-r--r--lib/pref/graf-new.prf6847
-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.prf6348
-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-iso.prf118
-rw-r--r--lib/pref/pref.prf16
-rw-r--r--lib/pref/trap-iso.prf429
-rw-r--r--lib/pref/user.prf17
-rw-r--r--lib/pref/xtra-new.prf1128
-rw-r--r--lib/scpt/.cvsignore1
-rw-r--r--lib/scpt/bounty.lua90
-rw-r--r--lib/scpt/corrupt.lua433
-rw-r--r--lib/scpt/drunk.lua21
-rw-r--r--lib/scpt/fireprof.lua415
-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.lua39
-rw-r--r--lib/scpt/joke.lua31
-rw-r--r--lib/scpt/library.lua436
-rw-r--r--lib/scpt/mimic.lua419
-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.lua132
-rw-r--r--lib/xtra/graf/16x16.bmpbin1164238 -> 0 bytes
-rw-r--r--lib/xtra/graf/16x16.pngbin210021 -> 0 bytes
-rw-r--r--lib/xtra/graf/8x8.bmpbin203830 -> 0 bytes
-rw-r--r--lib/xtra/graf/8x8.pngbin44451 -> 0 bytes
-rw-r--r--lib/xtra/graf/mask.bmpbin1164342 -> 0 bytes
-rw-r--r--lib/xtra/graf/tome-128.pngbin45589 -> 0 bytes
-rw-r--r--lib/xtra/sound/Sound.cfg79
-rw-r--r--lib/xtra/sound/readme.txt33
-rw-r--r--src/.cvsignore8
-rw-r--r--src/.gitignore3
-rw-r--r--src/CMakeLists.txt182
-rw-r--r--src/ability_type.hpp27
-rw-r--r--src/ability_type_fwd.hpp3
-rw-r--r--src/activation.hpp13
-rw-r--r--src/alloc_entry.hpp20
-rw-r--r--src/alloc_entry_fwd.hpp3
-rw-r--r--src/angband.h20
-rw-r--r--src/angband.rc21
-rw-r--r--src/artifact_type.hpp60
-rw-r--r--src/artifact_type_fwd.hpp3
-rw-r--r--src/between_exit.hpp18
-rw-r--r--src/birth.c3825
-rw-r--r--src/birth.cc3724
-rw-r--r--src/birth.h14
-rw-r--r--src/birth.hpp9
-rw-r--r--src/birther.hpp35
-rw-r--r--src/bldg.c2198
-rw-r--r--src/bldg.cc1469
-rw-r--r--src/bldg.hpp9
-rw-r--r--src/body.hpp12
-rw-r--r--src/carbon/Angband.icnsbin66668 -> 0 bytes
-rw-r--r--src/carbon/Carbon.r1568
-rw-r--r--src/carbon/Data.icnsbin36416 -> 0 bytes
-rw-r--r--src/carbon/Edit.icnsbin35735 -> 0 bytes
-rw-r--r--src/carbon/Image-DS_Storebin6148 -> 0 bytes
-rw-r--r--src/carbon/Info.plist39
-rw-r--r--src/carbon/Save.icnsbin43952 -> 0 bytes
-rwxr-xr-xsrc/carbon/getversion2
-rw-r--r--src/cave.c5055
-rw-r--r--src/cave.cc4693
-rw-r--r--src/cave.hpp55
-rw-r--r--src/cave_type.hpp65
-rw-r--r--src/cave_type_fwd.hpp3
-rw-r--r--src/cli_comm.hpp13
-rw-r--r--src/cli_comm_fwd.hpp3
-rw-r--r--src/cmd1.c5125
-rw-r--r--src/cmd1.cc4999
-rw-r--r--src/cmd1.hpp25
-rw-r--r--src/cmd2.c5107
-rw-r--r--src/cmd2.cc5014
-rw-r--r--src/cmd2.hpp33
-rw-r--r--src/cmd3.c2331
-rw-r--r--src/cmd3.cc2110
-rw-r--r--src/cmd3.hpp24
-rw-r--r--src/cmd4.c4658
-rw-r--r--src/cmd4.cc4415
-rw-r--r--src/cmd4.hpp28
-rw-r--r--src/cmd5.c2562
-rw-r--r--src/cmd5.cc2214
-rw-r--r--src/cmd5.hpp16
-rw-r--r--src/cmd6.c7731
-rw-r--r--src/cmd6.cc7928
-rw-r--r--src/cmd6.hpp18
-rw-r--r--src/cmd7.c7652
-rw-r--r--src/cmd7.cc4466
-rw-r--r--src/cmd7.hpp28
-rw-r--r--src/cmovie.c496
-rw-r--r--src/config.h185
-rw-r--r--src/corrupt.cc1003
-rw-r--r--src/corrupt.hpp47
-rw-r--r--src/defines.h1106
-rw-r--r--src/deity_type.hpp11
-rw-r--r--src/deity_type_fwd.hpp3
-rw-r--r--src/device_allocation.cc20
-rw-r--r--src/device_allocation.hpp17
-rw-r--r--src/device_allocation_fwd.hpp8
-rw-r--r--src/dice.cc98
-rw-r--r--src/dice.hpp13
-rw-r--r--src/dice_fwd.hpp12
-rw-r--r--src/dungeon.c5664
-rw-r--r--src/dungeon.cc5565
-rw-r--r--src/dungeon.h14
-rw-r--r--src/dungeon.hpp6
-rw-r--r--src/dungeon.pkg1607
-rw-r--r--src/dungeon_info_type.hpp72
-rw-r--r--src/dungeon_info_type_fwd.hpp3
-rw-r--r--src/effect_type.hpp17
-rw-r--r--src/ego_item_type.hpp68
-rw-r--r--src/ego_item_type_fwd.hpp3
-rw-r--r--src/externs.h1851
-rw-r--r--src/fate.hpp22
-rw-r--r--src/feature_type.hpp37
-rw-r--r--src/feature_type_fwd.hpp3
-rw-r--r--src/files.c6058
-rw-r--r--src/files.cc5788
-rw-r--r--src/files.h17
-rw-r--r--src/files.hpp27
-rw-r--r--src/flags_group.hpp20
-rw-r--r--src/gen_evol.c156
-rw-r--r--src/gen_evol.cc160
-rw-r--r--src/gen_evol.hpp6
-rw-r--r--src/gen_maze.c294
-rw-r--r--src/gen_maze.cc294
-rw-r--r--src/gen_maze.hpp5
-rw-r--r--src/generate.c8890
-rw-r--r--src/generate.cc8698
-rw-r--r--src/generate.hpp12
-rw-r--r--src/gf_name_type.hpp10
-rw-r--r--src/gods.c139
-rw-r--r--src/gods.cc212
-rw-r--r--src/gods.hpp13
-rw-r--r--src/h-basic.h10
-rw-r--r--src/h-config.h208
-rw-r--r--src/h-define.h19
-rw-r--r--src/h-system.h56
-rw-r--r--src/h-type.h23
-rw-r--r--src/help.c23
-rw-r--r--src/help.cc742
-rw-r--r--src/help.hpp11
-rw-r--r--src/help_info.hpp17
-rw-r--r--src/hiscore.cc85
-rw-r--r--src/hiscore.hpp83
-rw-r--r--src/hist_type.hpp16
-rw-r--r--src/hist_type_fwd.hpp3
-rw-r--r--src/hook_build_room1_in.hpp8
-rw-r--r--src/hook_calculate_hp_in.hpp7
-rw-r--r--src/hook_calculate_hp_out.hpp7
-rw-r--r--src/hook_chardump_in.hpp7
-rw-r--r--src/hook_chat_in.hpp7
-rw-r--r--src/hook_drop_in.hpp5
-rw-r--r--src/hook_eat_in.hpp7
-rw-r--r--src/hook_eat_out.hpp7
-rw-r--r--src/hook_enter_dungeon_in.hpp7
-rw-r--r--src/hook_get_in.hpp8
-rw-r--r--src/hook_give_in.hpp6
-rw-r--r--src/hook_identify_in.hpp9
-rw-r--r--src/hook_init_quest_in.hpp5
-rw-r--r--src/hook_mon_speak_in.hpp8
-rw-r--r--src/hook_monster_ai_in.hpp9
-rw-r--r--src/hook_monster_ai_out.hpp8
-rw-r--r--src/hook_monster_death_in.hpp7
-rw-r--r--src/hook_move_in.hpp6
-rw-r--r--src/hook_new_monster_end_in.hpp7
-rw-r--r--src/hook_new_monster_in.hpp7
-rw-r--r--src/hook_player_level_in.hpp5
-rw-r--r--src/hook_quest_fail_in.hpp7
-rw-r--r--src/hook_quest_finish_in.hpp7
-rw-r--r--src/hook_stair_in.hpp7
-rw-r--r--src/hook_stair_out.hpp7
-rw-r--r--src/hook_wield_in.hpp7
-rw-r--r--src/hook_wild_gen_in.hpp7
-rw-r--r--src/hooks.cc113
-rw-r--r--src/hooks.hpp10
-rw-r--r--src/identify_mode.hpp3
-rw-r--r--src/include/tome/enum_string_map.hpp55
-rw-r--r--src/include/tome/make_array.hpp13
-rw-r--r--src/include/tome/squelch/automatizer.hpp156
-rw-r--r--src/include/tome/squelch/automatizer_fwd.hpp10
-rw-r--r--src/include/tome/squelch/condition.hpp632
-rw-r--r--src/include/tome/squelch/condition_fwd.hpp15
-rw-r--r--src/include/tome/squelch/condition_metadata.hpp12
-rw-r--r--src/include/tome/squelch/condition_metadata_fwd.hpp14
-rw-r--r--src/include/tome/squelch/cursor.hpp50
-rw-r--r--src/include/tome/squelch/cursor_fwd.hpp10
-rw-r--r--src/include/tome/squelch/object_status.hpp28
-rw-r--r--src/include/tome/squelch/object_status_fwd.hpp12
-rw-r--r--src/include/tome/squelch/rule.hpp162
-rw-r--r--src/include/tome/squelch/rule_fwd.hpp16
-rw-r--r--src/include/tome/squelch/tree_printer.hpp49
-rw-r--r--src/include/tome/squelch/tree_printer_fwd.hpp10
-rw-r--r--src/init1.c11819
-rw-r--r--src/init1.cc10225
-rw-r--r--src/init1.hpp26
-rw-r--r--src/init2.c2918
-rw-r--r--src/init2.cc1494
-rw-r--r--src/init2.h14
-rw-r--r--src/init2.hpp9
-rw-r--r--src/inscription_info_type.hpp14
-rw-r--r--src/inventory.hpp35
-rw-r--r--src/iso/.cvsignore1
-rw-r--r--src/joke.cc40
-rw-r--r--src/joke.hpp5
-rw-r--r--src/lauxlib.h100
-rw-r--r--src/levels.c234
-rw-r--r--src/levels.cc237
-rw-r--r--src/levels.hpp13
-rw-r--r--src/loadsave.c3288
-rw-r--r--src/loadsave.cc2975
-rw-r--r--src/loadsave.h16
-rw-r--r--src/loadsave.hpp7
-rw-r--r--src/lua/.cvsignore2
-rw-r--r--src/lua/.gitignore2
-rw-r--r--src/lua/CMakeLists.txt11
-rw-r--r--src/lua/array.lua203
-rw-r--r--src/lua/basic.lua190
-rw-r--r--src/lua/class.lua85
-rw-r--r--src/lua/clean.lua74
-rw-r--r--src/lua/code.lua73
-rw-r--r--src/lua/container.lua311
-rw-r--r--src/lua/declaration.lua399
-rw-r--r--src/lua/define.lua72
-rw-r--r--src/lua/doit.lua73
-rw-r--r--src/lua/enumerate.lua93
-rw-r--r--src/lua/feature.lua72
-rw-r--r--src/lua/function.lua317
-rw-r--r--src/lua/lapi.c499
-rw-r--r--src/lua/lapi.h17
-rw-r--r--src/lua/lauxlib.c216
-rw-r--r--src/lua/lauxlib.h100
-rw-r--r--src/lua/lbaselib.c651
-rw-r--r--src/lua/lcode.c701
-rw-r--r--src/lua/lcode.h70
-rw-r--r--src/lua/ldblib.c188
-rw-r--r--src/lua/ldebug.c466
-rw-r--r--src/lua/ldebug.h21
-rw-r--r--src/lua/ldo.c385
-rw-r--r--src/lua/ldo.h33
-rw-r--r--src/lua/lfunc.c109
-rw-r--r--src/lua/lfunc.h24
-rw-r--r--src/lua/lgc.c353
-rw-r--r--src/lua/lgc.h18
-rw-r--r--src/lua/liolib.c710
-rw-r--r--src/lua/llex.c411
-rw-r--r--src/lua/llex.h72
-rw-r--r--src/lua/llimits.h204
-rw-r--r--src/lua/lmem.c150
-rw-r--r--src/lua/lmem.h42
-rw-r--r--src/lua/lobject.c125
-rw-r--r--src/lua/lobject.h204
-rw-r--r--src/lua/lopcodes.h168
-rw-r--r--src/lua/lparser.c1129
-rw-r--r--src/lua/lparser.h60
-rw-r--r--src/lua/lstate.c121
-rw-r--r--src/lua/lstate.h77
-rw-r--r--src/lua/lstring.c155
-rw-r--r--src/lua/lstring.h37
-rw-r--r--src/lua/lstrlib.c621
-rw-r--r--src/lua/ltable.c303
-rw-r--r--src/lua/ltable.h34
-rw-r--r--src/lua/ltests.c543
-rw-r--r--src/lua/ltm.c163
-rw-r--r--src/lua/ltm.h59
-rw-r--r--src/lua/lua.h248
-rw-r--r--src/lua/lua2c.lua29
-rw-r--r--src/lua/luadebug.h46
-rw-r--r--src/lua/lualib.h34
-rw-r--r--src/lua/lundump.c244
-rw-r--r--src/lua/lundump.h35
-rw-r--r--src/lua/lvm.c710
-rw-r--r--src/lua/lvm.h32
-rw-r--r--src/lua/lzio.c84
-rw-r--r--src/lua/lzio.h53
-rw-r--r--src/lua/module.lua69
-rw-r--r--src/lua/operator.lua111
-rw-r--r--src/lua/package.lua222
-rw-r--r--src/lua/print.h55
-rw-r--r--src/lua/tolua.c149
-rw-r--r--src/lua/tolua.h127
-rw-r--r--src/lua/tolua_bd.c214
-rw-r--r--src/lua/tolua_eh.c66
-rw-r--r--src/lua/tolua_eh.h24
-rw-r--r--src/lua/tolua_gp.c197
-rw-r--r--src/lua/tolua_lb.c160
-rw-r--r--src/lua/tolua_rg.c243
-rw-r--r--src/lua/tolua_rg.h22
-rw-r--r--src/lua/tolua_tm.c585
-rw-r--r--src/lua/tolua_tm.h32
-rw-r--r--src/lua/tolua_tt.c316
-rw-r--r--src/lua/tolua_tt.h31
-rw-r--r--src/lua/tolualua.c2975
-rw-r--r--src/lua/tolualua.h2713
-rw-r--r--src/lua/tolualua.pkg21
-rw-r--r--src/lua/typedef.lua59
-rw-r--r--src/lua/variable.lua192
-rw-r--r--src/lua/verbatim.lua77
-rw-r--r--src/lua_bind.c691
-rw-r--r--src/lua_bind.cc277
-rw-r--r--src/lua_bind.hpp34
-rw-r--r--src/magic_power.hpp15
-rwxr-xr-xsrc/maid-x11.c855
-rw-r--r--src/main-crb.c6402
-rw-r--r--src/main-gcu.c217
-rw-r--r--src/main-gtk2.c3077
-rw-r--r--src/main-sdl.c219
-rw-r--r--src/main-sla.c455
-rw-r--r--src/main-win.c1080
-rw-r--r--src/main-x11.c832
-rw-r--r--src/main-xaw.c1888
-rw-r--r--src/main-xxx.c785
-rw-r--r--src/main.c389
-rw-r--r--src/martial_arts.hpp18
-rw-r--r--src/melee1.c3065
-rw-r--r--src/melee1.cc3048
-rw-r--r--src/melee1.hpp7
-rw-r--r--src/melee2.c7591
-rw-r--r--src/melee2.cc7475
-rw-r--r--src/melee2.hpp12
-rw-r--r--src/messages.cc368
-rw-r--r--src/messages.hpp9
-rw-r--r--src/meta_class_type.hpp10
-rw-r--r--src/meta_class_type_fwd.hpp3
-rw-r--r--src/mimic.cc728
-rw-r--r--src/mimic.hpp10
-rw-r--r--src/module_type.hpp64
-rw-r--r--src/modules.c274
-rw-r--r--src/modules.cc1279
-rw-r--r--src/modules.h15
-rw-r--r--src/modules.hpp11
-rw-r--r--src/monster.pkg2324
-rw-r--r--src/monster1.c1908
-rw-r--r--src/monster1.cc1887
-rw-r--r--src/monster1.hpp5
-rw-r--r--src/monster2.c4054
-rw-r--r--src/monster2.cc3985
-rw-r--r--src/monster2.hpp52
-rw-r--r--src/monster3.c706
-rw-r--r--src/monster3.cc722
-rw-r--r--src/monster3.hpp20
-rw-r--r--src/monster_blow.hpp19
-rw-r--r--src/monster_ego.hpp81
-rw-r--r--src/monster_ego_fwd.hpp3
-rw-r--r--src/monster_power.hpp14
-rw-r--r--src/monster_race.hpp116
-rw-r--r--src/monster_race_fwd.hpp3
-rw-r--r--src/monster_type.cc8
-rw-r--r--src/monster_type.hpp98
-rw-r--r--src/monster_type_fwd.hpp3
-rw-r--r--src/move_info_type.hpp15
-rw-r--r--src/music.hpp17
-rw-r--r--src/notes.c188
-rw-r--r--src/notes.cc185
-rw-r--r--src/notes.hpp6
-rw-r--r--src/obj_theme.hpp15
-rw-r--r--src/obj_theme_fwd.hpp3
-rw-r--r--src/object.pkg1169
-rw-r--r--src/object1.c6669
-rw-r--r--src/object1.cc6698
-rw-r--r--src/object1.hpp46
-rw-r--r--src/object2.c6617
-rw-r--r--src/object2.cc6465
-rw-r--r--src/object2.hpp69
-rw-r--r--src/object_filter.cc98
-rw-r--r--src/object_filter.hpp99
-rw-r--r--src/object_kind.hpp83
-rw-r--r--src/object_kind_fwd.hpp3
-rw-r--r--src/object_type.hpp104
-rw-r--r--src/object_type_fwd.hpp3
-rw-r--r--src/option_type.hpp40
-rw-r--r--src/options.cc89
-rw-r--r--src/options.hpp89
-rw-r--r--src/owner_type.hpp39
-rw-r--r--src/owner_type_fwd.hpp3
-rw-r--r--src/player.pkg3519
-rw-r--r--src/player_c.pkg1060
-rw-r--r--src/player_class.hpp105
-rw-r--r--src/player_class_fwd.hpp3
-rw-r--r--src/player_defs.hpp6
-rw-r--r--src/player_race.hpp83
-rw-r--r--src/player_race_fwd.hpp3
-rw-r--r--src/player_race_mod.hpp87
-rw-r--r--src/player_race_mod_fwd.hpp3
-rw-r--r--src/player_sex.hpp17
-rw-r--r--src/player_sex_fwd.hpp3
-rw-r--r--src/player_spec.hpp38
-rw-r--r--src/player_spec_fwd.hpp3
-rw-r--r--src/player_type.hpp423
-rw-r--r--src/player_type_fwd.hpp3
-rw-r--r--src/plots.c473
-rw-r--r--src/plots.h48
-rw-r--r--src/power_type.hpp19
-rw-r--r--src/powers.c1388
-rw-r--r--src/powers.cc1221
-rw-r--r--src/powers.hpp74
-rw-r--r--src/q_betwen.c188
-rw-r--r--src/q_betwen.cc212
-rw-r--r--src/q_betwen.hpp5
-rw-r--r--src/q_bounty.cc170
-rw-r--r--src/q_bounty.hpp8
-rw-r--r--src/q_dragons.c150
-rw-r--r--src/q_dragons.cc164
-rw-r--r--src/q_dragons.hpp5
-rw-r--r--src/q_eol.c195
-rw-r--r--src/q_eol.cc226
-rw-r--r--src/q_eol.hpp5
-rw-r--r--src/q_evil.c117
-rw-r--r--src/q_evil.cc132
-rw-r--r--src/q_evil.hpp5
-rw-r--r--src/q_fireprof.cc577
-rw-r--r--src/q_fireprof.hpp7
-rw-r--r--src/q_god.cc1212
-rw-r--r--src/q_god.hpp6
-rw-r--r--src/q_haunted.c147
-rw-r--r--src/q_haunted.cc163
-rw-r--r--src/q_haunted.hpp5
-rw-r--r--src/q_hobbit.c195
-rw-r--r--src/q_hobbit.cc230
-rw-r--r--src/q_hobbit.hpp5
-rw-r--r--src/q_invas.c201
-rw-r--r--src/q_invas.cc222
-rw-r--r--src/q_invas.hpp5
-rw-r--r--src/q_library.cc526
-rw-r--r--src/q_library.hpp8
-rw-r--r--src/q_main.c176
-rw-r--r--src/q_main.cc210
-rw-r--r--src/q_main.hpp7
-rw-r--r--src/q_narsil.c108
-rw-r--r--src/q_narsil.cc122
-rw-r--r--src/q_narsil.hpp5
-rw-r--r--src/q_nazgul.c116
-rw-r--r--src/q_nazgul.cc145
-rw-r--r--src/q_nazgul.hpp5
-rw-r--r--src/q_nirna.c109
-rw-r--r--src/q_nirna.cc125
-rw-r--r--src/q_nirna.hpp5
-rw-r--r--src/q_one.c354
-rw-r--r--src/q_one.cc378
-rw-r--r--src/q_one.hpp5
-rw-r--r--src/q_poison.c238
-rw-r--r--src/q_poison.cc263
-rw-r--r--src/q_poison.hpp5
-rw-r--r--src/q_rand.c465
-rw-r--r--src/q_rand.cc655
-rw-r--r--src/q_rand.hpp8
-rw-r--r--src/q_shroom.c293
-rw-r--r--src/q_shroom.cc311
-rw-r--r--src/q_shroom.hpp5
-rw-r--r--src/q_spider.c108
-rw-r--r--src/q_spider.cc127
-rw-r--r--src/q_spider.hpp5
-rw-r--r--src/q_thief.c172
-rw-r--r--src/q_thief.cc193
-rw-r--r--src/q_thief.hpp5
-rw-r--r--src/q_thrain.c230
-rw-r--r--src/q_thrain.cc261
-rw-r--r--src/q_thrain.hpp5
-rw-r--r--src/q_troll.c178
-rw-r--r--src/q_troll.cc194
-rw-r--r--src/q_troll.hpp5
-rw-r--r--src/q_ultrae.c11
-rw-r--r--src/q_ultrae.cc8
-rw-r--r--src/q_ultrae.hpp5
-rw-r--r--src/q_ultrag.c276
-rw-r--r--src/q_ultrag.cc292
-rw-r--r--src/q_ultrag.hpp5
-rw-r--r--src/q_wight.c156
-rw-r--r--src/q_wight.cc179
-rw-r--r--src/q_wight.hpp5
-rw-r--r--src/q_wolves.c130
-rw-r--r--src/q_wolves.cc146
-rw-r--r--src/q_wolves.hpp5
-rw-r--r--src/quark.cc96
-rw-r--r--src/quark.hpp12
-rw-r--r--src/quest.cc17
-rw-r--r--src/quest.hpp3
-rwxr-xr-xsrc/quest.pkg170
-rw-r--r--src/quest_type.hpp27
-rw-r--r--src/randart.c476
-rw-r--r--src/randart.cc481
-rw-r--r--src/randart.hpp9
-rw-r--r--src/randart_gen_type.hpp9
-rw-r--r--src/randart_gen_type_fwd.hpp3
-rw-r--r--src/randart_part_type.hpp43
-rw-r--r--src/randart_part_type_fwd.hpp3
-rw-r--r--src/random_artifact.hpp18
-rw-r--r--src/random_quest.hpp10
-rw-r--r--src/random_spell.hpp21
-rw-r--r--src/range.cc11
-rw-r--r--src/range.hpp15
-rw-r--r--src/range_fwd.hpp4
-rw-r--r--src/readdib.c342
-rw-r--r--src/readdib.h21
-rw-r--r--src/rule_type.hpp22
-rw-r--r--src/rune_spell.hpp15
-rw-r--r--src/rune_spell_fwd.hpp3
-rw-r--r--src/school_book.hpp15
-rw-r--r--src/school_book_fwd.hpp3
-rw-r--r--src/school_type.hpp21
-rw-r--r--src/school_type_fwd.hpp3
-rw-r--r--src/script.c535
-rw-r--r--src/script.cc30
-rw-r--r--src/script.h12
-rw-r--r--src/set_type.hpp28
-rw-r--r--src/set_type_fwd.hpp3
-rw-r--r--src/skill_type.hpp37
-rw-r--r--src/skill_type_fwd.hpp3
-rw-r--r--src/skills.c1661
-rw-r--r--src/skills.cc1829
-rw-r--r--src/skills.hpp27
-rw-r--r--src/skills_defs.hpp63
-rw-r--r--src/spell_type.cc433
-rw-r--r--src/spell_type.hpp86
-rw-r--r--src/spell_type_fwd.hpp16
-rw-r--r--src/spells.pkg2448
-rw-r--r--src/spells1.c9327
-rw-r--r--src/spells1.cc9275
-rw-r--r--src/spells1.hpp32
-rw-r--r--src/spells2.c8076
-rw-r--r--src/spells2.cc6837
-rw-r--r--src/spells2.hpp115
-rw-r--r--src/spells3.cc4606
-rw-r--r--src/spells3.hpp445
-rw-r--r--src/spells4.cc541
-rw-r--r--src/spells4.hpp42
-rw-r--r--src/spells5.cc2395
-rw-r--r--src/spells5.hpp9
-rw-r--r--src/spells6.cc402
-rw-r--r--src/spells6.hpp7
-rw-r--r--src/squelch/CMakeLists.txt9
-rw-r--r--src/squelch/automatizer.cc278
-rw-r--r--src/squelch/condition.cc1078
-rw-r--r--src/squelch/condition_metadata.cc496
-rw-r--r--src/squelch/cursor.cc96
-rw-r--r--src/squelch/object_status.cc153
-rw-r--r--src/squelch/rule.cc332
-rw-r--r--src/squelch/tree_printer.cc89
-rw-r--r--src/squeltch.c553
-rw-r--r--src/squeltch.cc593
-rw-r--r--src/squeltch.hpp13
-rw-r--r--src/stairs_direction.hpp3
-rw-r--r--src/stats.hpp11
-rw-r--r--src/status.c773
-rw-r--r--src/status.cc783
-rw-r--r--src/status.hpp3
-rw-r--r--src/store.c4458
-rw-r--r--src/store.cc3878
-rw-r--r--src/store.hpp12
-rw-r--r--src/store_action_type.hpp17
-rw-r--r--src/store_action_type_fwd.hpp3
-rw-r--r--src/store_info_type.hpp32
-rw-r--r--src/store_info_type_fwd.hpp3
-rw-r--r--src/store_type.hpp43
-rw-r--r--src/store_type_fwd.hpp3
-rw-r--r--src/tables.c4792
-rw-r--r--src/tables.cc4506
-rw-r--r--src/tables.h12
-rw-r--r--src/tables.hpp82
-rw-r--r--src/tactic_info_type.hpp17
-rw-r--r--src/terrain.hpp19
-rw-r--r--src/timer_type.hpp18
-rw-r--r--src/timer_type_fwd.hpp3
-rw-r--r--src/town_type.hpp21
-rw-r--r--src/town_type_fwd.hpp3
-rw-r--r--src/trap_type.hpp24
-rw-r--r--src/trap_type_fwd.hpp3
-rw-r--r--src/traps.c3169
-rw-r--r--src/traps.cc3174
-rw-r--r--src/traps.hpp13
-rw-r--r--src/tval_desc.hpp17
-rw-r--r--src/types.h2522
-rw-r--r--src/util.c4479
-rw-r--r--src/util.cc3685
-rw-r--r--src/util.h22
-rw-r--r--src/util.hpp74
-rw-r--r--src/util.pkg2683
-rw-r--r--src/variable.c1604
-rw-r--r--src/variable.cc1065
-rw-r--r--src/variable.h39
-rw-r--r--src/variable.hpp308
-rw-r--r--src/vault_type.hpp24
-rw-r--r--src/vault_type_fwd.hpp3
-rw-r--r--src/wild.c1275
-rw-r--r--src/wild.cc1301
-rw-r--r--src/wild.hpp6
-rw-r--r--src/wilderness_map.hpp15
-rw-r--r--src/wilderness_map_fwd.hpp3
-rw-r--r--src/wilderness_type_info.hpp25
-rw-r--r--src/wilderness_type_info_fwd.hpp3
-rw-r--r--src/wizard1.c2756
-rw-r--r--src/wizard1.cc2499
-rw-r--r--src/wizard1.hpp3
-rw-r--r--src/wizard2.c1950
-rw-r--r--src/wizard2.cc1868
-rw-r--r--src/wizard2.hpp8
-rw-r--r--src/xtra1.c4772
-rw-r--r--src/xtra1.cc4684
-rw-r--r--src/xtra1.hpp24
-rw-r--r--src/xtra2.c6158
-rw-r--r--src/xtra2.cc5626
-rw-r--r--src/xtra2.hpp96
-rw-r--r--src/z-form.c191
-rw-r--r--src/z-form.h21
-rw-r--r--src/z-rand.c355
-rw-r--r--src/z-rand.cc376
-rw-r--r--src/z-rand.h96
-rw-r--r--src/z-rand.hpp67
-rw-r--r--src/z-term.c1094
-rw-r--r--src/z-term.h128
-rw-r--r--src/z-util.c172
-rw-r--r--src/z-util.h60
-rw-r--r--src/z-virt.c187
-rw-r--r--src/z-virt.h168
-rw-r--r--src/z_pack.pkg398
-rw-r--r--tests/get_level_device.cc184
-rw-r--r--tests/harness.cc7
-rw-r--r--tests/lua_get_level.cc135
-rw-r--r--vendor/bandit/.travis.yml17
-rw-r--r--vendor/bandit/.vimrc0
-rw-r--r--vendor/bandit/CMakeLists.txt60
-rw-r--r--vendor/bandit/LICENSE.md21
-rw-r--r--vendor/bandit/README.md63
-rw-r--r--vendor/bandit/bandit/adapters/adapter.h12
-rw-r--r--vendor/bandit/bandit/adapters/adapters.h16
-rw-r--r--vendor/bandit/bandit/adapters/snowhouse.h22
-rw-r--r--vendor/bandit/bandit/assertion_exception.h41
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeCloseTo.h55
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeEmpty.h32
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeFalsy.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeGTE.h45
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeGreaterThan.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeLTE.h45
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeLessThan.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeNull.h29
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/BeTruthy.h35
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/Contain.h58
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h90
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/MatchProxy.h43
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/Matcher.h74
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/MatcherException.h16
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/ThrowException.h60
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/ValueProxy.h26
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/matchers.h19
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/matchers/must.h36
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/CMakeLists.txt49
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/LICENSE_1_0.txt23
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/README.md419
-rwxr-xr-xvendor/bandit/bandit/assertion_frameworks/snowhouse/cross_compile.sh50
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/basic_assertions.cpp228
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/boolean_operators.cpp48
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/container_spec.cpp85
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/custom_matchers_test.cpp69
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/exceptions_tests.cpp97
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/expression_error_handling.cpp28
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/main.cpp43
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/map_tests.cpp38
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/operator_tests.cpp137
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/sequence_container_tests.cpp192
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/string_line_tests.cpp179
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/string_tests.cpp65
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/stringize_tests.cpp111
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/example/tests.h16
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/assert.h126
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/assertionexception.h58
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/assertmacro.h22
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/constraints.h23
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/containsconstraint.h80
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/endswithconstraint.h53
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/equalsconstraint.h83
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/equalscontainerconstraint.h80
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/equalswithdeltaconstraint.h51
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/andexpression.h46
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/expression.h38
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/expression_fwd.h15
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/notexpression.h44
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/orexpression.h46
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/fulfillsconstraint.h51
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/haslengthconstraint.h60
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/isgreaterthanconstraint.h55
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/isgreaterthanorequaltoconstraint.h55
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/islessthanconstraint.h54
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/islessthanorequaltoconstraint.h55
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/startswithconstraint.h52
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/exceptions.h120
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/constraintadapter.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/constraintlist.h91
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/expressionbuilder.h357
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/fluent.h38
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/andoperator.h54
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/alloperator.h35
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/atleastoperator.h41
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/atmostoperator.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/collectionconstraintevaluator.h113
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/collectionoperator.h24
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/exactlyoperator.h39
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/noneoperator.h33
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/constraintoperator.h70
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/invalidexpressionexception.h28
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/notoperator.h53
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/oroperator.h55
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/snowhouse.h33
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/stringize.h104
-rw-r--r--vendor/bandit/bandit/assertion_frameworks/snowhouse/snowhouse/stringizers.h60
-rw-r--r--vendor/bandit/bandit/bandit.h42
-rw-r--r--vendor/bandit/bandit/context.h97
-rw-r--r--vendor/bandit/bandit/external/optionparser.h2825
-rw-r--r--vendor/bandit/bandit/failure_formatters/default_failure_formatter.h30
-rw-r--r--vendor/bandit/bandit/failure_formatters/failure_formatter.h13
-rw-r--r--vendor/bandit/bandit/failure_formatters/failure_formatters.h16
-rw-r--r--vendor/bandit/bandit/failure_formatters/visual_studio_failure_formatter.h36
-rw-r--r--vendor/bandit/bandit/grammar.h185
-rw-r--r--vendor/bandit/bandit/listener.h27
-rw-r--r--vendor/bandit/bandit/options.h111
-rw-r--r--vendor/bandit/bandit/registration/registrar.h25
-rw-r--r--vendor/bandit/bandit/registration/registration.h7
-rw-r--r--vendor/bandit/bandit/registration/spec_registry.h17
-rw-r--r--vendor/bandit/bandit/reporters/colorizer.h141
-rw-r--r--vendor/bandit/bandit/reporters/dots_reporter.h69
-rw-r--r--vendor/bandit/bandit/reporters/info_reporter.h194
-rw-r--r--vendor/bandit/bandit/reporters/progress_reporter.h116
-rw-r--r--vendor/bandit/bandit/reporters/reporters.h29
-rw-r--r--vendor/bandit/bandit/reporters/single_line_reporter.h86
-rw-r--r--vendor/bandit/bandit/reporters/spec_reporter.h126
-rw-r--r--vendor/bandit/bandit/reporters/test_run_summary.h90
-rw-r--r--vendor/bandit/bandit/reporters/xunit_reporter.h109
-rw-r--r--vendor/bandit/bandit/run_policies/always_run_policy.h16
-rw-r--r--vendor/bandit/bandit/run_policies/bandit_run_policy.h161
-rw-r--r--vendor/bandit/bandit/run_policies/never_run_policy.h14
-rw-r--r--vendor/bandit/bandit/run_policies/run_policies.h9
-rw-r--r--vendor/bandit/bandit/run_policies/run_policy.h44
-rw-r--r--vendor/bandit/bandit/runner.h103
-rw-r--r--vendor/bandit/bandit/skip_policies/always_include_policy.h16
-rw-r--r--vendor/bandit/bandit/skip_policies/always_skip_policy.h15
-rw-r--r--vendor/bandit/bandit/skip_policies/name_contains_skip_policy.h28
-rw-r--r--vendor/bandit/bandit/skip_policies/skip_policies.h9
-rw-r--r--vendor/bandit/bandit/skip_policies/skip_policy.h29
-rw-r--r--vendor/bandit/bandit/test_run_error.h12
-rw-r--r--vendor/bandit/cmake/cotire.cmake3185
-rwxr-xr-xvendor/bandit/cross_compile.sh43
-rw-r--r--vendor/bandit/specs/before_each_after_each.spec.cpp78
-rw-r--r--vendor/bandit/specs/context.spec.cpp44
-rw-r--r--vendor/bandit/specs/describe.spec.cpp117
-rw-r--r--vendor/bandit/specs/failure_formatters/default_formatter.spec.cpp21
-rw-r--r--vendor/bandit/specs/failure_formatters/visual_studio_failure_formatter.spec.cpp22
-rw-r--r--vendor/bandit/specs/fakes/fake_context.h69
-rw-r--r--vendor/bandit/specs/fakes/fake_reporter.h78
-rw-r--r--vendor/bandit/specs/fakes/fakes.h8
-rw-r--r--vendor/bandit/specs/fakes/logging_fake.h32
-rw-r--r--vendor/bandit/specs/fuzzbox.spec.cpp77
-rw-r--r--vendor/bandit/specs/it.spec.cpp355
-rw-r--r--vendor/bandit/specs/main.cpp6
-rw-r--r--vendor/bandit/specs/matchers/be_close_to.cpp112
-rw-r--r--vendor/bandit/specs/matchers/be_empty.cpp89
-rw-r--r--vendor/bandit/specs/matchers/be_falsy.cpp85
-rw-r--r--vendor/bandit/specs/matchers/be_greater_than.cpp105
-rw-r--r--vendor/bandit/specs/matchers/be_gte.cpp120
-rw-r--r--vendor/bandit/specs/matchers/be_less_than.cpp105
-rw-r--r--vendor/bandit/specs/matchers/be_lte.cpp119
-rw-r--r--vendor/bandit/specs/matchers/be_null.cpp43
-rw-r--r--vendor/bandit/specs/matchers/be_truthy.cpp85
-rw-r--r--vendor/bandit/specs/matchers/contain.cpp156
-rw-r--r--vendor/bandit/specs/matchers/equal.cpp214
-rw-r--r--vendor/bandit/specs/matchers/throw_exception.cpp104
-rw-r--r--vendor/bandit/specs/options.spec.cpp121
-rw-r--r--vendor/bandit/specs/reporters/colorizer.spec.cpp45
-rw-r--r--vendor/bandit/specs/reporters/dots_reporter.spec.cpp202
-rw-r--r--vendor/bandit/specs/reporters/single_line_reporter.spec.cpp201
-rw-r--r--vendor/bandit/specs/reporters/xunit_reporter.spec.cpp161
-rw-r--r--vendor/bandit/specs/run.spec.cpp77
-rw-r--r--vendor/bandit/specs/run_policies/bandit_run_policy.spec.cpp250
-rw-r--r--vendor/bandit/specs/specs.h10
-rw-r--r--vendor/bandit/specs/synopsis.spec.cpp54
-rw-r--r--vendor/bandit/specs/util/argv_helper.h62
-rw-r--r--vendor/bandit/specs/util/util.h6
1052 files changed, 210655 insertions, 340679 deletions
diff --git a/.gitignore b/.gitignore
index d779315..a052f12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
+.idea
*.o
+lib*.a
*.~*
*.#*
CMakeFiles
@@ -6,3 +8,6 @@ CMakeCache.txt
cmake_install.cmake
install_manifest.txt
Makefile
+compile_commands.json
+/nbproject
+tome2.cbp
diff --git a/BUGS.txt b/BUGS.txt
deleted file mode 100644
index 9a88aae..0000000
--- a/BUGS.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Known Bugs:
-===========
-
-- If you save the game during the Thieves Quest in Bree, it will not be able to load.
-- Under Linux the X11 front-end does not work properly when NumLock is on.
-- Using modules: Automatizer save (+ note save, etc.) don't autocreate the module directory in the save directory hierarchy...
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91512a6..9519785 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,20 +1,69 @@
# Project definition.
PROJECT (tome2)
-CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
# We want a readable feature summary.
INCLUDE(FeatureSummary)
-# Default flags.
+# pkg-config support
+INCLUDE(FindPkgConfig)
+
+#
+# Basic common compiler flags.
+#
+SET(COMMON_COMPILER_FLAGS "-pipe -Wall -Wno-unused-value -fsanitize=undefined -fsanitize=address")
+
+#
+# GCC/G++ flags
+#
IF(CMAKE_COMPILER_IS_GNUCC)
# Let's set sensible options.
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -Wall -Wno-unused-value")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
+ SET(CMAKE_C_FLAGS_RELEASE "-O2")
+ SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} --std=c++11 -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
+ SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
+ SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+ENDIF()
+
+#
+# Clang flags
+#
+IF("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
SET(CMAKE_C_FLAGS_RELEASE "-O2")
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
ENDIF()
+IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} --std=c++11 -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
+ SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
+ SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+ENDIF()
+
+# Add standard math library
+SET(LIBS ${LIBS} m)
-# Add definitions.
-ADD_DEFINITIONS(-DUSE_PRECISE_CMOVIE)
+#
+# JSON support
+#
+PKG_CHECK_MODULES(JANSSON REQUIRED jansson)
+IF(JANSSON_FOUND)
+ ADD_DEFINITIONS(${JANSSON_CFLAGS})
+ INCLUDE_DIRECTORIES(${JANSSON_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${JANSSON_LIBRARY_DIRS})
+ SET(LIBS ${LIBS} ${JANSSON_LIBRARIES})
+ENDIF()
+
+#
+# BOOST
+#
+FIND_PACKAGE(Boost 1.54.0 REQUIRED COMPONENTS system filesystem)
+
+IF(Boost_FOUND)
+ ADD_DEFINITIONS(-DBOOST_FILESYSTEM_NO_DEPRECATED)
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+ SET(LIBS ${LIBS} ${Boost_LIBRARIES} ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY})
+ENDIF()
#
# X11 support (OPTIONAL)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cdf11c2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,99 @@
+ToME is a [rogue-like](https://en.wikipedia.org/wiki/Roguelike) game.
+
+![Screenshot](/doc/images/screenshot.png)
+
+## Getting Started
+
+### Prerequisites
+
+See below for specific distribution-specific hints, if needed.
+
+You will need to have the following libraries installed on your system
+somewhere where CMake can find them:
+
+- [jansson](http://www.digip.org/jansson/)
+- [Boost](https://www.boost.org/)
+
+Version requirements may vary somewhat, but usually you should be
+aiming for having at least a **recent** version of the above libraries.
+
+### Option 1: Running In-Place
+
+**This is currently the recommended option**, but it means that you
+don't 'install' ToME as such, you just run it from the build
+directory.
+
+To configure for your system, run
+
+ $ cmake .
+ $ make
+
+You should now be able to run
+
+ $ ./src/tome
+
+to start ToME.
+
+**Important:** The current working directory must be at the root of
+the source tree for the above command to run -- if it isn't, then
+you'll get mysterious errors about ToME not being able to find files
+(at best).
+
+
+### Option 2: Installing System-Wide
+
+To configure for your system, run
+
+ $ cmake -DSYSTEM_INSTALL:BOOL=true .
+ $ make
+ $ sudo make install
+
+You can now run ToME from anywhere and it will always use the files
+installed in the system-specific location.
+
+
+## Compiling on Ubuntu
+
+To compile on an Ubuntu install, you'll need at least the
+
+- `cmake`
+- `build-essential`
+- `libjansson-dev`
+- `libboost-all-dev`
+
+packages.
+
+Each frontend requires the additional packages listed below:
+
+- X11: `libx11-dev`
+- SDL: `libsdl-image1.2-dev` `libsdl-ttf2.0-dev`
+- ncurses: `libncurses5-dev`
+
+
+## Compiling on OpenBSD
+
+As of February 2010, the OpenBSD package cmake-2.4.8p2 is too old for
+building ToME. You may need to compile a newer version of CMake.
+
+If you have X11, then a bug in CMake may cause a linker error when
+linking the executable. As a workaround, set the environment variable
+`LDFLAGS` when running CMake. Example:
+
+ $ env LDFLAGS=-L/usr/X11R6/lib cmake .
+ $ make
+
+The SDL frontend also requires these packages:
+
+- `sdl-image`
+- `sdl-ttf`
+
+
+## Compiling on Windows using MinGW
+
+The source **MUST** be unpacked in a directory without spaces in the
+name.
+
+To configure and compile on Windows using MinGW, use the commands
+
+ $ cmake -G "MinGW Makefiles"
+ $ mingw32-make
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 1e0ad58..0000000
--- a/README.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-Using the CMake build system
-============================
-
-There are basically two options for how to run ToME once built.
-
-
-
-Option #1 : Run ToME from the build directory
-=============================================
-
-Simply run the commands below.
-
- $ cmake .
- $ make
-
-You should now be able to run
-
- $ ./src/tome
-
-to start ToME.
-
-This is currently the recommended option.
-
-
-
-Option #2: Run ToME from a system install location
-==================================================
-
-Run
-
- $ cmake -DSYSTEM_INSTALL:BOOL=true .
- $ make
- $ sudo make install
-
-You can now run ToME from anywhere.
-
-You can also use DESTDIR when installing to a different location
-(useful with e.g. stow or when building distribution packages).
-
-
-Compiling on Ubuntu
-===================
-
-If you're having trouble compiling on an Ubuntu install you are
-probably missing the
-
- build-essential
-
-package.
-
-Each frontend requires the additional packages listed below:
-
- X11: libx11-dev
- SDL: libsdl-image1.2-dev, libsdl-ttf2.0-dev
- ncurses: libncurses5-dev
-
-
-Compiling on OpenBSD
-====================
-
-As of February 2010, the OpenBSD package cmake-2.4.8p2 is too old for
-building ToME. You may need to compile a newer version of CMake.
-
-If you have X11, then a bug in CMake may cause a linker error when
-linking the 'tome' executable. As a workaround, set the environment
-variable LDFLAGS=-L/usr/X11R6/lib when running CMake. Example:
-
- $ env LDFLAGS=-L/usr/X11R6/lib cmake .
- $ make
-
-The SDL frontend also requires these packages: sdl-image, sdl-ttf
-
-
-Compiling on Windows using MinGW
-================================
-
-(See http://www.mingw.org/)
-
-The source MUST be unpacked in a directory without spaces in the
-name.
-
-To compile on Windows using MinGW, use the commands
-
- $ cmake -G "MinGW Makefiles"
- $ mingw32-make
diff --git a/changes.old b/changes.old
deleted file mode 100644
index dabf85a..0000000
--- a/changes.old
+++ /dev/null
@@ -1,6027 +0,0 @@
-24/10/1998 - PernAngband 2.9.9a
-- Added the DragonRider from the Anne McCaffrey's Books, masters of
- teleportation.
-- The CTRL+l key leaves the game without saving
-- Added the Tanker point, like the mana point, but can only be refilled
- by eating the Firestone (for DragonRiders)
-- Added the RohanKnight race, fast and wise
-- Added the Ent race, can grow trees, but slow
-- Removed some races from Zangband which were not enough tolkienian...
-- Added the BeastMaster class which can summon pets
-- Added the Blood of Life
-- DragonRider now can choose to breathe a bolt, a beam or a ball
-- Added the Unique level patch from Glenn Vanzanden
-- Added the Mage Staves , with new ego items:
- -of Mana : multiply your max mana
- -of Spell : Increase your spell power
- -of Mana & Spell : try to find !:)
- -of Power : Activate for some spell, they carry 2 spells
- All the ego mage staves have a penalty to damage and to hit
-- Added The Mage Staff of Gandalf, extremely powerful but even rarer than
- the One Ring !
-- Added the boots of jumping activatable for phase door every 10+d10 turns
-- Added Helm of the Dwarves and of the Noldor
-- Beastmasters' pets now give kill experience to the player
-- Added the Alchemist class which use power batteries to convert magic item
-- New unique level : Treasure room at level 11
-- Replaced the Trump Hound from the Trump realm by the Trump Home spell, which
- allows the player to access to her/his home from everywhere in the dungeon
-- Added the new artifact The Ring of F'lar, which belonged to F'lar the
- powerful DragonRider
-
-26/10/1998
-- Added potions of Mutation
-- Warrior-Mage now can choose Sorcery instead of Arcane
-- Invisibility, Potion of Invisibility, Ring of Invisibility and
- The One Ring now has invisibility like in the Lord Of The Rings !!!
-- Added the parchments from Kamband
-
-30/10/1998
-- Ported PernAngband to the new Zangband 2.2.0
-- Added the mimic class
-- Some Zangband bugs are fixed
-- The DragonRider can now only teleport on known terrain, because they must
- mentally show the destination to their dragons but to do this they MUST
- have seen the destination before (like in the Anne McCaffrey books) !
-- The Ringwraiths are back!
-- Some uniques like Bert, Tom, Bill are back, while others (Gandalf, Fangorn)
- are gone!
-- Morgoth and Sauron are back as the final quests
-
-01/11/1998 - PernAngband 3.0.0
-- All reference to Zangband have been removed
-- Added monster corpses
-- Added the Beastmaster Shanty for the beastmaster, the Mimic Tower for the
- Mimic, and the Weaver Tower, where you can ask for corpse quests
-- The corpse quests require you to bring back to the weaver some corpse,
- head,... of a kind of monster, and you'll get a reward, like maybe
- the full knowledge about this monster, or some armor made with the corpse
- (maybe dragon scale mail for dragon, ...)
-- Added susceptibility to fire, for the Ents! They take twice more damage from
- fire, but it's hopefully cancelled by resist fire.
-- Changed some artifacts / unique monsters to be more pernish
-- Added a new armor type : the DragonRider flying suit[9,+0] resist fire/cold
-- New monster flag : PET , the monster is your pet when it's created
-- Added the army man which use the PET flag will be used to give you an army
- in some future quest.
-
-03/11/1998
-- The exe file is now pernang.exe(in the dos version)
-- Replaced the AMBERITE monster flag by the DRAGONRIDER flag
-- Some Unique will have the PET flag so they will help you !
-- All the Amberite are now gone and replaced by DragonRiders or uniques
- (with some of them friendly)
-- Can sell the Mage staves in the Weapon smith and Magic shop.
-- Now when an alchemist tries to extract a power from an item, if he can't
- it won't show up again in the extractable list the next time
-- The DragonRider must eat more because of their dragon
-- The Troll Fortress quest
-- Added The Battle of the five armies quest !!!
-
-05/11/1998
-- Nature spell : Stop breeders
-- New ego item sword of life, it multiplies your max hitpoints
-- Now some Mimic forms give you bonuses to blows per round like the Vala:
- +5 blows !!!
-- Added a new Unique : The Philosophy Teacher !
-- Pink horrors are replaced with 2 Blue horrors when they die
-- Bloodletters of Khorne drop a blade of chaos when they die
-- Absorb light mutation bug fixed (I think)
-- Vampires and vampire mimics no longer can get food in the inns.
-- Renamed the artifacts with their real names
-- Replaced the pattern by the Straight Road (idea from GSN-Band)
-- Replaced the pattern weapons with weapons of Valinor (idea from GSN-Band)
-- Player and monsters can't pass through the trees (unless they can fly:)
-- When a Dragonrider dies he drops some firestones
-- Added the Whip of Gothmog, which can be dropped by Gothmog when killed
-- Begin to add a new feature : the between
-- Add a great description of the Ents and the Rohan's Knights from Akhronath
-
-07/11/1998
-- The between is fully implemented now.
-- The dimension door spell is replaced by the between gate.
- It put a between gate at the player position and at the destination
- location. And when you walk on the between you are transported on the other
- between gate. But the between is SO cold that when you are in you lose some
- hp even if resistant or immune to cold! Only the dragonrider can go between
- without taking damage.
-- Stole the Stone of Lore from Oangband ! :)
-- Monsters can't use the between now because of a bug
-- Now you can eat corpses and temporarily gain some of the powers of monsters!
-- Raise Death replaces Terror in the death realm, cast it on a monster corpse
- on the floor and the monster is brought back to life!
-
-09/11/1998
-- Added the boomerang, the player wears them instead of the bow and with the 'f'
- command (like for the bow) can throw them but them come back ... if they don't
- break !
-- Add 2 boomerang artifacts
-- Add another dragonrider artifact belonging to Mardra
-- Add The Anchor of Space-Time, it prevents disruption of the space-time
- continuum
-
-11/11/1998
-- Add the carry slot in the equipment, to wield monsters that can't move :)
-- Fixed a bug that prevented dragonriders from being summoned
-- Add a Neuter sex (for the neuter players) :-)
-- Add the Death Mold race (stolen from Kamband) :-)
-
-13/11/1998
-- Add in spell description the bonus of mage staves
-- Add the scroll of summon never-moving pet for wielding them !:)
-- When a monster is wielded it can attack monsters when you attack
- It can sometimes attack the wielder too, because he/she is not in perfect
- symbiosis
-- Muar the balrog is back and will drop Calris when killed
-- Add the Symbiotic realm, like a life realm for your monster
-- Add the Symbiant class which can be in perfect symbiosis with their monster
-
-15/11/1998
-- The number of artifacts is now 132
-- Add some spells to the symbiotic realm
-- Add a spell to use the spells of the monster you wear
-- Add a light-speed (nearly stop time) spell
-- Finished the Symbiotic realm, only two books because they can use their
- monster's powers.
-
-18/11/1998
-- Warriors can now spread their attacks after level 34
-- The experience factor of the races can now be > than 255
-- The DragonRider need more experience to advance (+220%) because it's a REALLY
- powerful race.
-- Monsters can now use the between but if they are not immune to cold they
- will lose some hp
-- Added a health bar for the monster you are carrying ( MH xxxxx/xxxxx )
-- Added sanity (from Kamband) ( the line SN xxxxx/xxxxx in the window)
-- Stolen the aquatic monsters from Kamband
-- Add the Gods from Kamband and GSNBand
-- The Philosophy Teacher now causes insanity !:)
-- Now only the Symbiants can carry monsters in their inventory, in fact they
- act like "living-books" !:)
-- Add the Tactics from ADOM. You can change the tactic in the Character window
-- Add a new town unique : Mathilde, the science student, she is in my class
- and giggles all the time, don't kill her ! :)
-- Fixed bug : The carried monster cannot absorb damage done by itself !
-- The Battle of the five armies now has a reward (The Arkenstone)
-
-20/11/1998 - PernAngband 3.0.2
-- Now there will be some between gates randomly placed in the levels
-- If you are in great favor with your god they can resurrect you
-
-22/11/1998
-- Add Random artifacts from Kamband - They are junk items which can be
- activated every few turns and their activation is chosen randomly
-- Fixed (I think) a bug in the unique levels
-- Add a flooded level type (enable those levels in the PernAngband options)
- to make the aquatic monsters more useful
-- Gandalf and Fangorn are back as Friendly uniques
-- Changed the Necklace of the Dwarves into The Nauglamir to be more
- Tolkien-like
-- Changed The Serpent of the Chaos into Dark God, Mighty Coder from Hell :)
-- Reworked the corpse system (stolen from Rangband), now they all have
- different weights based on the monster weight. You can hack up the corpse
- with 'h' and cure it with 'K'.
-
-24/11/1998
-- Add a new Unique : The Physics Teacher !
-- Changed the Town layout of Gondolin with the one made by Akhronath
- with 2 quests : Hunt for Eol and Maeglin's Mine
-- Add a new Unique : Eol the Dark Elf
-- Stole the silly messages when you hit a monster from Kamband
-
-26/11/1998
-- Add a scroll of Craftmanship to enchant weapon's pval.
-- The first 300 monsters have received a weight
-- Add a new spell type : Identify, now you can have a Ball of identification !
-- Add a new set of object flags (mainly unused now) :-)
-- Add a NEVER_BLOW flag for object
-- Add the NEVER_BLOW flag to The Mage Staff of Gandalf to rebalance it.
-- Add a new ego item weapon : of Nothing (with the NEVER_BLOW flag) !! :)
-
-29/11/1998
-- Add a Harper (bard) class !!! they use music books and most
- of their spells are prolonged in time, ex: you cast a hiding song,
- and for each turn you lose some mana (breath) while the effect (invisibility)
- continues. If you start singing another song the old one is stopped.
- There is also a spell which costs no mana which is used to stop singing.
-- Stolen the *Defender* ego-item from Pziband
-- Stolen the Spectral ego-item from Pziband
-
-01/12/1998
-- Added musical instruments : you wear them in the bow slot and you can
- activate them for a song. The longer the song lasts the longer it'll be
- charging, you can stop the song by activating it when it sing.
-- Finished the Harpers
-- Now the Harper mana stat is Charisma !
-- New Artifact : The Palantir of Minas Tirith, which can be activated for
- the list of the uniques of the level !
-- Added 3 new artifacts : The Harp of Master Robinton, The Drum of Piemur,
- The Flute of Menolly
-- Added the Micro$oft quest at Minas Anor
-- Changed the niceness description of the gods
-- The Harper and ONLY the harper can use a musical instrument without any
- chance of failure.
-- The wilderness size is now taken from misc.txt
-- All the monsters have a weight now ... pfff, it was a lot of work !:)
-- The Alchemists are easier to play
-- Add the Vapor quest at Minas Anor
-- Add the Rebellion in Gondolin(from Akhronath) quest at Gondolin
-
-02/12/1998 - PernAngband 3.0.4
-- Changed certain god realm name on the suggestion of Akhronath
-- Add the bounties list like in Kamband (OK, ok, stolen from Kamband) :)
-- Add the Fire-lizards, they are friendly
-- New roguelike command : 'i' for hack up corpse, 'I' for curing meat, 'C'
- for Sacrificing at altars
-
-05/12/1998
-- Add the Power Mage class, like the Corrupted in Kamband, with 100 randomly
- generated attack spells
-- Corrected the character generation bug !!!! Thanks to Tim Baker for the fix
-- Corrected the segmentation fault bug for the object 653. Thanks to Tim baker
-- Corrected the files.c bug in get_line(). Thanks to Tim baker
-- Add the GF_DESTRUCTION type of attack to allow Power Mage to have destruction
-- Changed the names of the songs, Thanks to Akhronath
-
-07/12/1998
-- Add the Eggs, some monsters (only Firelizards for the moment) can be found
- as eggs and will hatch after a certain amount of time based on the monster
- weight, you can also stop the development by "activating" them ('A' key),
- or resume the development by activating them an other time.
-- Add the last of the Gondolin's quest from Akhronath :
- Invasion of Gondolin (Danger level 90, with some funny stuff like Gothmog,
- Muar,..., some Great hell wyrms) !!!
-- Fixed a bug which made it so when you drop your wielded monster you also
- drop Nothing if you are not a Symbiant
-- You can imprint some monsters (Firelizards for now), when it has
- been given an imprint it will follow you on each levels. They may not
- appear on a certain level but they will be back for the next. To
- imprint a monster you must find an egg, carry it on you and when it'll
- hatch you'll give it the imprint
-- The Harper will begin the game with a Blue Firelizard egg
-
-09/12/1998
-- The Black market now generate items based on your level
-- Add a new shop : The Pet Shop where you can find some eggs
-
-12/12/1998
-- Your godly favor will go down when they resurrect you
-- Repaired a stupid bug : I haven't coded the Satisfy Hunger effect of the
- Symbiant class !:)
-- Add the easy floor feature !!!
-- Add an always small dungeon option
-- The scrolls of Artifact Creation can now be used on rings and amulets
-
-15/12/1998
-- The One Ring is now "just" heavy cursed !:)
-- Add 3 new vaults
-
-18/12/1998
-- Add the fate : you can be fated to meet some monsters or to find an object
- on a certain level or ..... to DIE (very rare). You don't know your
- fate until a soothsayer or a scroll of divination shows it to you. You
-also get a feeling when entering a level where you will meet your fate.
- In the future there will be more fates, like finding a great vault, an
- artifact or even, as Murazor the Witch-King of Angmar, to never die by the
- hands of a mortal !:)
-- Changed Trump Weapon to Dragon Weapon
-- Smeagol will now drop ......... A ring of invisibility (because the One Ring
- would be a little too powerful :)
-
-23/12/1998
-- Replaced the Amber notation in the player characteristics by the old one
- from Vanilla Angband
-- When the player is on a tree he can be hit by a monster for half
- normal damage
-- Paladin and Priests are given a religion at the beginning
-- In the wizard spoiler creation (A + ") you can chose to make a spoiler for
- batteries
-- The random artifacts now have a charging time (no more mass genocide every
- turn)
-- Add a Soothsayer at Bree
-- Add the batteries of extra life, you can now make a sword of Life !
-
-25/12/1998
-- The Alchemists are now better fighters, equal to the rangers
-- New extremely powerful power for the Alchemist (level 30 and higher) :
- Artifact creation !
- They just have to chose the flags, the name and to suffer the bad side effect
- like curse equipment, permanent stat loss, high failure rate and ..... they
- have their artifact ! But they can't give it an activation !
- They can also add some bad flags (like cursed, drain exp, ...) to reduce the
- chance of failure. Merry Christmas ! :)
-- Add the Runecrafter class, they use runes instead of books (see birth.txt)
-- Cleaned the Alchemist's code
-
-27/12/1998 - PernAngband 3.0.7
-- Added (.... stolen from Sangband) the Pick of Erebor. It can be activated for
- passing through secret passages in the walls.
-- The Potion of *Enlightenment* now show every grid of the dungeon, like the
- debug command 'u', I just think it's more beautiful :)
-- WOOOOOOOH I'm sorry there was a BIG bug in the PernAngband 3.0.7 release.
- The game was sometimes hanging without any solution to stop it !
- After some hours of debugging I've found it, it resulted from the correction
- of the bug of the glyph of warding! Now everything works (I hope)
-- Change the titles of the Runecrafter with the proposition of Jonathan R Lewis
-- Add TANG, The Angband Newbie Guide made by Chris Weisiger
- (jmartin@inreach.com) It's in the help directory
-
-29/12/1998
-- Fixed a bug which allowed beastmasters to sing when they summon pets!
-- Fixed the bug in the Fate screen
-- Some cosmetic changes in the r_info.txt and birth.txt with the help of
- Chris Weisiger (jmartin@inreach.com)
-- Add new ego-items for the musical instrument and the horn, there were
- suggested by Akhronath
-- New sentence to say for the speaking unique pets
-- 4 new musical instrument artifacts from Akhronath and I'm happy to declare
- there is 143 artifacts in PernAngband!
-- Added, .... stolen, 5 new artifact from Angband/64
-
-31/12/1998
-- Add the quiver slot to wield your ammo
-- A scroll of remove curse have 1 chance into (55-level) to reverse the curse
- effect ie: a ring of speed (-2) can become a ring of speed (+2)
-
-01/01/1999
-- Add a new monster flag : MORTAL, which means that the monster is a mortal
- being. It's used for the new fate : Never to die by the hand of a mortal
- being. The orcs are considered mortal, but I'm not sure, it's not mentioned
- in the silmarillion or the Lord of The Rings, the trolls are immortals along
- with the dragons, BUT the Dragonriders are mortal and Dark God (Yes, let your
- joy explode!) :-). But well, don't be afraid your preferred monsters
- (Morgoth and Sauron) are immortals :-)
- PS: If someone thinks that a monster should or not be mortal just email me
- because I'm not certain for some (ok, ok a lot of) monsters
-
-03/01/1999
-- Add the ring of precognition which work as if the player had activated the
- cheat mode (peek into object, monster, vault creation). There is no need
- to say it's very rare :-)
-- Add the black breath concept from Tolkien. Beware now the weapons of morgul
- they confer the black breath! The undead can also give it.
-
-05/01/1999
-- Changed the harpers ranking names, some racial histories with the ones from
- Akhronath
-- The One Ring is now A LOT more powerful, because at the time you find it
- you already have one or two immunities, your stats are near the max, plus
- some other things that made it less useful. Now it confers 5 blows, mana x5
- spell power x5, after all Sauron has put the most part of his power in it.
- I also plan to change the activation.
-- Add 2 wand artifacts, The Wand of Stone to Mud of Thrain and the Wand of
- Fire Balls of Mithrandir, they can be recharged at will and will never be
- destroyed, for this purpose the new RECHARGE flags has been used (note :
- it works only for the artifacts)
-
-07/01/1999
-- The runecaster is a little more playable at low levels and starts with a
- Rune [Arrow] and a Rune [Fire]
-
-10/01/1999
-- The Chaos Warriors now get chaos resistance at level 25
-- The Maia mimics get +7 speed, the Vala mimics get +15 speed
-- Updated the Rebellion in Gondolin and Hunt for Eol quests with the help of
- Akhronath (zzhou22876@aol.com)
-
-13/01/1999
-- Reimplemented the old magic system from vanilla to complement the new one
- The old mage and priest are come back as the Wizard and the Prior
-
-17/01/1999
-- Add susceptibilities to fire, cold, acid, lightning, poison for the monsters.
- ie: Now a white dragon will take a x3 damage from a fire attack.
- Thanks to Jerome Wojcik <Jerome.Wojcik@lmcp.jussieu.fr> for his help.
-- Add the pets command (press P) from Zangband 2.2.3
-- Changed the Trump realm into the Dragon Realm (mainly just name changes)
-
-19/01/1999
-- Changed the activation of the One Ring
-- The One Ring is now Permanently cursed
-- The One Ring is no longer aggravating because of it's new summoning ability
-- It's now possible to run through the grass
-
-21/01/1999
-- Add the persistent dungeon option at birth
-- When a breeder multiplies it have a 7/100 chance of mutating into an other
- monster. (in general a worse one) This would prevent monster farming abuse :)
-
-24/01/1999
-- NEW : the body changing feature! with a new class to use it. Your spirit
- can leave your body to go into another one but while your spirit is alone
- your max hp is of 1. When in the corpse of a monster your first blows are
- the monster's one and you can use it's magical power. Your life is also
- changed by the monster's one and you gain all it's abilities and resistances
- while losing those of your real race because you have left your body.
-- Add a lot of new vaults mainly from Weisiger <jmartin@inreach.com>
-
-28/01/1999
-- Death Molds now can teleport onto store entrances
-- A new randart activation that fires light after absorbing the ambient one
-
-05/02/1999
-- Changed the Roguelike commands. Now ^G to sacrifice, $ to hack up a corpse
- ^O to Cure meat
-- Updated the command.txt file
-- Add the AB's gfx for the weapon/armor
-- Multiple dungeons : The old levels 1-33 are now in the Mirkwood forest with
- trees and grass, 34-66 are the Land of Mordor with mountain, wall and dirt
- 67-127 are the Dungeon of Angband with wall and normal floor and occasionally
- flooded levels (if chosen in the options).
- The ability to levitate is now a GREAT advantage in the Mirkwood forest !
- You can reach Mirkwood from Menegroth, Mordor from Minas Anor and Angband
- from Gondolin. In the vanilla town there are three stairs.
- When you take a staircase down in the last level of a dungeon you arrive back
- in town.
-
-07/02/1999 - PernAngband 3.0.9
-- X in the roguelike mode for the pet commands
-- Updated the magic.txt file with the new classes
-
-09/02/1999
-- Updated version.txt, modified dungeon.txt
-- Shelob is now a little bit more powerful in order to make her the quest
- monster of the last Mirkwood level.
-- The Vanilla books are now sellable in the magic shop/temple and the bookstore
-
-13/02/1999
-- New class : the Sorcerer, they can't wield any weapon useless it's a Mage
- Staff and without it they are the WORST fighters of the game even bare-handed.
- But to compensate this they are the BEST magical class : the can use any
- book of any realm without having to learn the spell, but they also don't
- gain any experience from casting a spell.
-- Added the susceptibilities flags to the monsters.
-
-15/02/1999
-- Stolen the exploring system (like the tactic one) from Angband/64
-- Fix the bug of vanilla town, now the vanilla town flag is saved
-- Ents are rebalanced, they have a -9 speed penalty
-- Tweaked the Troll Fortress quest to make it less easy
-
-21/02/1999
-- Corrected some bugs in the town files. The crashing wilderness bug
- seem to be gone.
-
-23/02/1999
-- Fixed the bug of the traps. No more grey "invisible traps" on a level
- covered with grass, same for the dirt
-- Updated the Gondolin town and quest with the Akhronath's ones
-- Enabled the S-lang support
-- A new script directory is in lib, it contain a file script.sl which indicate
- every S-lang script files that must be loaded
-- Add the event's gestion to the slang script. An event is produced in certain
- conditions (like a keypress,...) and a script can put an handle on it to have
- a function called each time the event happens. I've made a stupid example
- that use the key 'y' to shout at the monsters.
- PS: Take a look at slang.txt in the help directory
-- Add the load/save function to the script
-
-24/02/1999 - PernAngband 3.1.0
-
-26/02/1999
-- I've finally successfully compiled Python. So the S-Lang support is replaced
- with the python one. The 'y' key and the thieves quest are there too.
-- Stolen and modified intro.py from Pangband
-- The random quest bug is fixed (maybe :) ). I say maybe because as for the
- wilderness one it doesn't happens by me so I can't test it :(
-- Today one of my dream have become true! With the help of a python script
- I've made a new quest for the DragonRiders that can be given at the Weyr
- of Arda in Menegroth. You enter forest area and the only thing you can use
- is the flame of your dragon(no magic, no wands, ...). And you need to
- destroy every thread while saving at least 50% of the trees, and your own
- flame can consume them!
-
-28/02/1999
-- Yeah, the wilderness bug is now gone. And a minor bug which looks like the
- the wilderness one is gone too. It happened when you try under certain
- conditions to go in the wilderness with an imprinted pet.
-- Fixed the random quest bug
-- Fixed the inventory bug that when picking up an object said you have foo
- in slot r and reorder it after that o the letter is no more r. I know it was
- really annoying but well it's now gone :)
-- The undead races now start at night
-
-02/03/1999
-- The spectres can now pass through trees and mountains
-- A new dungeon type at Bree: The Upper reaches of Galgals(level 1-10) !
-- Changed the code for the different dungeon types. Now it's a lot easier to
- add a new dungeon type. I'll maybe make a d_info.txt to define the dungeon
- types
-- Add a new dungeon: The Volcano, you reach it by going to the north east of
- Minas Anor. Level 30-45
-
-05/03/1999
-- Spectres can't pass through trees because trees are pure and natural
- things :)
-- New dungeon type: The Hell !!! Level 500 to 530, Yes 530 ! With a little
- present for you at the bottom... if you manage to survive :) I can just
- said one more thing: don't go there with your level 1 character :)
- You can reach it near the volcano hole.
-- Now fire balls can burn the trees
-- Invisibility now consume a lot of food
-- Fixed a strange bug with the pool of deep water... It was possible to
- sacrifice at and to worship (before the crash:) one :). Thanks to Steve Dice
-- Add a very nasty surprise at level 1.... Moldoux, the defenceless mold with
- 1 hp no powers, can't move, can't attack... Oh and if it's killed there just
- one Great Wyrm of Power which can be summoned to avenge it !
-
-07/03/1999
-- The look command doesn't stop anymore on the trees, grass, ...
-
-07/03/1999 - PernAngband 3.1.2
-
-13/03/1999
-- Sorcerors have now a bad pseudo-id
-- Sorcerors have now a -25% penalty of hp
-- Add a scroll of deincarnation
-- Add the possibility to engrave the floor with some magic words found in some
- parchments. The words are in Adunaic(Numeronean), Quenya, Sindarin or any
- other tongues of Middle Earth. But the parchment also give useless words
- with the useful ones, so you have to try different combinations.
-- No more "human" sex when randomly chosen
-
-16/03/1999
-- Mathilde will say the right sentences now
-- Fixed a bug in melee2.c which could produce an x and an y out of the limits
-- Disabled the engraving command for now because it's too unbalancing...
-- If you pray while low on hitpoints (< 20%) your god will do something to help
- you, like summoning pets, curing wounds, killing enemies...
-
-19/03/1999
-- There is now a minimum level needed to enter some dungeons, to prevent
- gaining great objects easily
-- Fixed the OLD bug of the pink horrors, now only 2 blue horrors
- will be summoned
-- Fixed a bug with the tiles for the non unique DragonRiders
-
-21/03/1999
-- The Dragon realm users receive some experience for the kills of their pets
-- The Palantir of Minas Tirith now can teleport you next to the quest monster
- but it'll take more time to recharge
-- Fixed the possessor's number of blows bug. Also the town uniques corpses (
- Maggot, Martti, Mathilde) can't be used to attack because their attack is
- moan with no damage
-- Added a faq (see pern_faq.txt)
-- Added a new monster ally, the Dolphiner. They came from the planet Pern
- and can summon dragonriders, their friends. They are men riding dolphins
-
-******************** Attempts to rebalance the game **************************
-- Changed the xp modifiers of the new races in an attempt to make them more
- balanced. Thanks to Shawn Cheng <mfighter@hotmail.com>
-- Invulnerability, Wraith Form and Life Multiplier now consume a *lot* of food
-- RohanKnight's gain less speed at each levels
-- Sound attacks of the harpers are less likely to stun...
-- IMPORTANT NOTE: At the character birth if you choose a forbidden class for
- your race, you'll be considered as a cheater and the game won't be scored.
- It's mainly to prevent the too powerful combination of Deathmold Mimic or
- Deathmold Possessor. The characters made before the next release won't be
- affected by that
-- Some more attempts that I don't remember :)
-- Changed the Mana and life multipliers, now mage staff of mana(100%) will
- ADD 100% of mana to your max mana and not multiply it by 100 :)
-******************************************************************************
-
-23/03/1999
-- Replaced Menegroth by the new Lothlorien skilfully made by Akhronath
- (zzhou22876@aol.com), with 2 new quests + The Battle of the Five Armies +
- (only for DragonRiders) The Fight against a Threadfall
- Thanks again Akhronath !
-- Deathmolds can now enter wilderness
-- Radically changed the score calculation, in the future it'll serve to choose
- which characters must be turned into monsters. Note that the old score files
- are compatible but the old scores mean nothing with the new system
-
-26/03/1999
-- Changed some aspect of the python implementation to make it more portable
-- The usleep python function may react strangely
-- When you pick up the same type of ammo that you wield in your quiver it
- automatically combine with it
-- The specials levels are now restricted to a certain depth AND a certain
- dungeon type
-- The number of collected bounties now count for the final score
-- Add a new option to not pick up monster's corpses. It's yes by default.
- I've made it to avoid losing good characters by auto picking up a great
- wyrm of power corpse and getting -500 speed !
-
-28/03/1999
-- Reimplemented the player ghosts, but in a different way. First the bone files
- are a lot more complex to include more aspects of the dead character. Second,
- only the best characters are allowed to become ghosts when they die, or commit
- suicide, it's based on their final score. In the bone directory there is a new
- file which held the name of the bone files that the player want to be used.
- To add a bone file, put it in the bone directory, add it to the bones.txt file
- and increment the number of bone file in the same file.
- When a game is loaded it looks for this file, try to find some unallocated
- ghosts and modify r_info with the new info from the ghost. When this is done
-the bone file is not used anymore because all the info is saved in the
- player savefile. The race/class characteristics are not fully handled now.
-- Now even with a Mage Staff the Sorcerors have a penalty of -10 to hit/dam
-- A Vampire can now wield the Phial of Undeath without being scorched, while
- all the other light artifacts scorch them
-
-30/03/1999
-- The Arcane Zap spell now works correctly
-- Updated the FAQ with the help of Leon Marrick
-- Updated magic.txt with the help of Leon Marrick
-- WOH ! Impressive ! Great work indeed ! Well, Andreas Koch has made a
- powerful graphic editor for PernAngband !!!! And it has also drew some new
- tiles! The editor is really impressive, you load the graphic file, the prf
- file and you can assign a tile to every monsters/objects/... you want, just
- with a click ! It can even scan the *_info.txt to search for new things that
- are not in the current prf file and to add them !
- You just need a big screen resolution(1152x864x16bits works for me)
- Thanks for the great work Andreas(akoch@rbg.informatik.tu-darmstadt.de) !
-- The Archer class as suggested by Mike Hommel <jamul@hamumu.com>. They gain
- some extra shot and might with levels and can also create ammo with rubble
- and junks.
-
-05/04/1999
-- Fixed a bug in the Weyr of Arda at Lothlorien
-- Add the artifact's descriptions made by ... well I don't have his/her name.
- Anyway, great work.
-- The rings of teleportation can now be activated but they'll be destroyed in
- the process. It's like a last chance option :)
-
-08/04/1999
-- The uniques used in the special levels are no longer shown as killed in the
- list and can only be created in the special level.
- Note : This will only affect the new characters.
-- Fixed : When a Power Mage spell fails it is not cast anyway.
-- Wall creation works for Power Mage
-- Divia wrote some missing artifact descriptions
-
-12/04/1999
-- Reimplemented the engraving feature. There are some parchments in the
- dungeon which contain Adunaic/Quenya/Sindarin/... words you can use to
- engrave the floor with 'x'(']' in the roguelike keyset). You must read them
- before engraving even if you know the words from your last game. Also the
- inscription is magical and so needs some mana to work. So there is a new
- and unique feature : each grid in the dungeon have some mana on it's own.
- You can sense the mana of one grid by pressing 'X'('[' in the roguelike
- keyset), but this is not very precise nor easy, it's based on the magical
- ability. When an inscription is used it decrease the grid's mana and when
- there is not enough mana the inscription don't work anymore. The maximum
- mana of each grid is 255. i.e.: when you engrave the protection inscription
- which use 8 mana on a grid with 80 mana, a monster won't be able to walk on
- it for 80/8=10 turns, but well, this can save your life !
- Note : There are not a lot of inscriptions, if you have some ideas, don't
- hesitate, email me !
-
-14/04/1999
-- Changes in the r_info for the HAS_EGG flag as suggested by Akhronath
-- Bloodletters of Khorne only have a 20% chance of dropping Blade of Chaos
-
-17/04/1999
-- Raal's Tomes of Destruction have a 20% chance of dropping a Raal's Tome of
- Destruction
-- Symbiants are more likely to receive the grow molds mutation
-
-20/04/1999
-- Quest monsters can not be pets or breeders
-- Can now place Trees(T), Mountain(M), Shallow & Deep lava(l, L) and
- Shallow & Deep water(w, W) in the special levels
-- Add a new dungeon type: The lost city of Numenor which is mainly composed
- of water and which can be found to the west of Bree
-********************* IMPORTANT *************************
-- The savefile from the old versions of PernAngband are no longer compatible
- with the new one. It's mainly due to the new magic system but also some other
- changes. I'm sorry but this would be hard to write a converter since all
- the realm change (they have more spells) and so the books too and also the
- way to remember which spells are known, forgotten, tried...
-*********************************************************
-
-22/04/1999
-- Some new graphics from Andreas Koch
-- Fixed the wilderness generation bug which sometimes hung the computer when
- trying to go on a wilderness border
-- The features(in f_info.txt) have some flags now. This allows me to create 2
- new types of wall: The Glass walls which you can see through but that you
- can't pass and the Illusion walls that you can pass but not see through
-- The screen is now correctly redrawn when leaving/entering a body
-- Add the Wands of Wall Creation
-- Death Mold powers have moved to the activation command('U')
-
-24/04/1999
-- Your are no longer crushed when flying over trees/mountain without being a
- DragonRider
-- The Vanilla feelings are back
-
-26/04/1999
-- All the spellbooks are now placed on the top of the inventory.
-- The Sorcerors can now use the Wizard and Prior books
-- The new magic system is ready. I'm just waiting for Akhronath and Shawn
- Cheng. And now adding a new realm or an old fashioned magic system is
- performed the same way and easily
-- Add the Illusionists from Kangband. Someone has asked for them so... :)
-
-28/04/1999
-- Finished the Valarin Realm
-- Between gates are now allowed in the vaults. To place them place 2 times a
- number from 0 to 7. I.e.(from weisiger <jmartin@inreach.com>):
- D:XXXXXXXXXXXXXXXXXXXXXXXXX
- D:#,,,,,X&...@X..**&X....9X
- D:#...&1X.,,,2X..**&X3...9X
- D:#...&.X1,,,.X2.**3X....9X
- D:#,,,,,X&...@X..**&X....9X
- D:XXXXXXXXXXXXXXXXXXXXXXXXX
- But BEWARE ! You MUST put the 2 occurrences of the number, no check are done
- so it'll surely crash or bug if not ! You've been warmed.
-- You can now walk over the water with a Valarin spell
-
-30/04/1999
-- A monster on a between gate when the player is using the other is teleported
- to the player location
-- Add some Between vaults from weisiger
-- Added the Sigaldry realm
-- The Rings and Amulets are now allowed to be random artifacts
-- You can use the between gates in the special levels via the numbers 4,5,6,7,
- 8,9,0
-- Alchemists MUST wear gloves (no cesti nor gauntlets) in order to do alchemy.
- They also begin the game with some gloves
-- Add a Potion of Learning which allow you to learn one more spell than you
- normally can. No need to say that they are very rare
-- The more you learn spells in a realm the more efficient with that realm
- you are
-
-02/05/1999
-- Implemented the Nether Realm
-
-09/05/1999
-- Magical stair at the bottom of each dungeon
-- Reworked the imprinted pet system, now it will work lot better
-- Add the scrolls of spell which can cast a spell like a book. They must be
- created by the Sigaldry magic, they can't be randomly generated
-- Updated the Sigaldry realm
-- Added Staves of Wishing! You can wish for objects, monsters, spells but
- NOT FOR ARTIFACTS nor for staves of wishing
-- Flying monsters can now pass over trees and mountains
-
-11/05/1999
-- The game will ask you to choose ammo from your inventory if your quiver is
- empty
-
-26/05/1999
-- Add the Crusade Realm
-- Add some new inscriptions
-- It's now possible to add up to 32 realms
-
-03/06/1999
-- Wraith form is less powerful since it's not so rare. Now damage is only
- divided by 5 and armor raised by 50
-
-05/06/1999
-- Add the speaking patch from Matt Graham. Just edit the monspeak.txt file
- to add new entries. And don't hesitate to send me what you've added !
-
-11/06/1999
-- There are fewer gods and each god has one or two preferred races and if one of
- this race pray to him they gain better benefits. Also the praying effects
- are more differentiated (based on the different gods)
-- Add the 'only once' quest type
-- It's harder to please your deity
-- The Nazguls are MUCH more powerful (ideas from Akhronath):
- ******** Quote from Akhronath mail ********
- All weapons which are not ego-items cannot harm them, and will be destroyed if
- the character hits a Nazgul with it. Ego-items which have slay evil or slay
- undead can harm them, but each hit has a 25% chance of destroying the weapon.
- Other ego-items can't damage them, and have the same 25% chance of
- destruction. An artifact weapon will be able to hit them only if the weapon
- has slay evil or undead, but the weapon will be hit with disenchantment every
- time it connects (but this is negated with disenchantment resistance on the
- character). And even these artifacts can be destroyed, although there's only a
- 5% chance. Other artifacts, of course, can't damage the Nazgul, and still have
- the 5% destruction chance.
-
- When a character does any damage to a Nazgul or is damaged by a Nazgul, he has
- a 25% chance of being afflicted by the Black Breath. Thenceforth the character
- will slowly be drained of experience and sanity. The character can stay alive
- by using restoring and curing potions, but to cure the Black Breath he must
- either drink a Potion of Life or eat (a new item) Athelas Leaf. (Athelas isn't
- really eaten, of course, but I can't think of another simple way to implement
- it.)
-
- This will really make the player think twice before going up to a Nazgul, and
- makes it very useful to carry spare weapons.
- *******************************************
- So if you encounter a Nazgul .... RUN AWAY !
-- Sensing the grid's mana is now done by pressing 'x' key to engrave the floor
- The X key is free for some new function (maybe for the new riding system)
-
-17/06/1999
-- When browsing the spells while being a Power Mage there are no more bugs
- when pressing escape
-- Removed the forbidden race/class combination feature. But it's always
- possible to recompile PernAngband with it with the FORBID_BAD_COMBINAISON
- define(in config.h)
-- New god : The RNG
-
-19/06/1999
-- The priest/prior/paladin's god is now chosen dependent on their race
-- I have enough of hunting those damn ghost bug which makes them unable to
- move. So it's now a feature ! They don't move because they are GREAT
- adventurers who now just want to stand there to find peace :)
- Hey, fixing bugs is easy this way :))
-
-22/06/1999
-- When 'A'ctivating the first screen showed is the equipment and no more the
- inventory
-- Some new gfx drew by Andreas Koch
-
-06/07/1999
-- You can place object kind in the special levels instead of artifacts by
- using 1000+k_idx as the number instead of just the artifact index
-
-17/07/1999
-- Add the Yeek race, but not as in Zangband. It's the one from Drangband.
- I was thinking of a race who advance even quicker than the humans in levels
- since a long time and I've found it !
- So they suffer lots of disadvantages but need less exp than the other
-races, i.e.: When a DragonRider comes to level 2 a Yeek can already be at
- level 7 !!
-- Added the FLY attribute, it allows you to fly over trees and mountains
- because it's no longer possible with the levitation one. It's also a lot
- rarer since it's POWERFUL in Galgals and Mirkwood. DragonRiders have it
- by default. There is also a change in the features flags, CAN_LEVITATE
- means that you can just avoid them by floating over it (like a pit,
- water, ...) and CAN_FLY means that you must have the FLY flag to cross it.
-
-19/07/1999
-- The monster's drop are now created at the same time as the monster is
- created. First it disallows scumming of monster drops. And the most
- important thing is that it will allow me to add the new ability of stealing
- objects from monsters (everyone will be able to do it, but only Rogue will
- be excellent at it). For the point of view of the player there is no change.
- It may produce some strange object disappearance in the late game since
- all the objects are generated with the dungeon. And thus it may need to
- increment the maximum size of o_list in misc.txt. If such problems shows
- up, email me.
-- Press 'Z'('[' in roguelike mode) to STEAL an item from a monster. The
- success rate is based on your dexterity, the fact that you are or aren't
- a Rogue (being one makes it easier), the weight of the object to steal and
- the base level of the monster. A Rogue will also gain some experience
- if he/she succeeds. This made them more Rogue and less Warriors.
-
-22/07/199
-- Add more graphics from Andreas Koch along with a new version of the editor
-
-26/07/1999
-- The resurrection effect of the gods is now harder to get and decreases a lot
- more your grace. It was ... well ... too powerful for the cost of some
- crappy artifacts
-- Finished the Magery realm created by Chris Weisiger (jmartin@inreach.com)
-
-03/08/1999
-- I've finally fixed it ! You know, this ugly bug that disallows the darkening
- of the grass & mud tiles when they have been lit.
-
-18/08/1999
-- Yeah ! It's done! The new magic system is finished (I will add Spirit Realm
- later). The final form is 4 Major Realms : Valarin, Nether, Magery, Shadow
- and 4 Minor Realms : Crusade, Tribal, Sigaldry, Illusion.
- The only problem is be that it could be unbalanced, especially the
- Shadow realm since I've created it :)
- Anyway it should be great. There are still a lot of old spells but some new
- coloured funny spells for you to discover, as Control the Ring, Infuse Amulet,
- Scribe Scroll, Doppleganger, Volcano Flow, Tidal Wave, and a lot of others!
- The max number of spells a character can learn depends on his class. But
- generally the player can learn fewer spells than the total number of spells he
- has in all the books he can read.
- I want to thank Akhronath (who has the first idea and who write some realms),
- Shawn Cheng, Chris Weisiger and DSCreamer<DSCreamer@aol.com> for their great
- help.
-- Moldoux can not appear at any other level than level 1
-
-21/08/1999
-- A new version of the Tile Editor plus a full set of graphs (expect the books)!
-- Moved the dungeon types definitions from tables.c to a new info file in the
- lib directory: d_info.txt
- It allows you to add new dungeon types easily.
- There is also a brand new feature: You can specify which monster flags that
- are NEEDED for a monster to be generated in the dungeon.
- There is also an addition of dungeon flags. Here is the structure:
- N:<index>:<name>
- D:<long name>
- W:<min depth>:<min depth>:<min player level>:<next dungeon>:<flags mode>:<min alloc>:<max alloc chance>
- L:<floor1>:<%1>:<floor2>:<%2>:<floor3>:<%3>
- A:<wall1>:<%1>:<wall2>:<%2>:<wall3>:<%3>:<outer wall>:<inner wall>
- F:<flags>
- M:<monster flags>
- S:<monster spells>
-- The quest rewards are always good
-- I've finally found and fixed the Mirkwood Spiders Quest
-
-24/08/1999
-- Add the MAZE flag to the dungeon type flag list, which instead of a normal
- dungeon generate a full big maze ! And it's EVIL ! Note that there will be
- no rooms and no vaults generated, just a plain evil maze
- The algorithm is from <Pierre.Bru@spotimage.fr> on rec.games.roguelike.development
-- Note about the dungeons : A dungeon can't have more than 40 levels
-- You can use SMALLEST, SMALL and BIG as dungeon flags to specify the level's
- size
-- 6 new dungeon types: a Graveyard, an Illusory Castle, an Orc cave, a Maze
- a Dragon's Lair and A Forest with specific gfxs and monsters restrictions
-- Some new gfx form Andreas Koch mostly to add more flavor to the towns
-
-29/08/1999
-- You can add a guardian and a guardian artifact to each dungeons types with
- the following flags: FINAL_ARTIFACT_artifact_number and
- FINAL_GUARDIAN_guardian_number
-
-29/08/1999 - PernAngband 4.0.0
-
-01/09/1999
-- Fixed the max_dlv non allocation error
-- Fixed the Tribal realm spell descriptions
-
-01/09/1999 - PernAngband 4.0.0b
-- New dungeon type, the Netherworld with Muar and the Wand of Fireball of
- Mithrandir at the bottom
-- You can't gain a fate before being level 10
-- Some cosmetic changes suggested by Akhronath
-- A new Artifact by Akhronath, The Long Sword of Murazor 4d5, so ... the next
- time you see a long sword 4d5, beware ...
-
-05/09/1999
-- Add a feature flag to allow running
-- Fixed the Chaos Warriors bug (they were unable to use magic !)
-- Fixed the Chaos Realm descriptions
-- You can't rest on a between gate
-- You can now steal from stores. But beware of the consequences if you fail...
-- Fixed a bug in that when recalling to the town the player was sometimes
- placed in the upper left corner
-
-08/09/1999
-- Fixed a bug that disallowed the creation of entrances to some vaults
-
-14/09/1999
-- Fixed the Dragon Tower bug
-- Add minimum player level to the random dungeons
-- Add shafts, you can use them do go up/down for up to 4 levels(but you can't
- ignore quest levels). Original patch from Static Chaos. Idea from GSN
-- Add a dungeon flags to forbid generation of doors
-
-27/09/1999
-- Some tweaks to the possessor code as written by Static Chaos i.e:
- You must possess a monster that is able to open to door to do so. The
- same applies to bashing. Your sex is modified by your body. Lots of tweaks
- to the spells that can be used...
-- The racial power of the Dwarves is now the same as The Pick of Erebor
- activation: they can find hidden passage in the walls
-- There is 1 chance in 10 that the level is an magical level, which means that
- each grid will contain more mana than a normal level.
-- Add some new sentences to the monsters sentence lists
-
-04/10/1999
-- Began to add the Druid class. But it's TOTALLY different from the other
- variant's Druids. They make intense use of the mana flow from within the
- earth and the elements, thus their spells can regenerate the mana they have
- used by pumping it from the floor, like the Tunnel spell which will blink
- the player and will try to absorb enough mana form the grid he/she lands on.
- They can also (and they are the only to be able to do that) regenerate the
- mana flow of the earth. They also can use enhanced attack types called
- Druidic Bolt/Beam/Ball that can follow a mana flow laid by the player.
-- The Druids can sense precisely the amount of mana of a grid
-
-08/10/1999
-- Added some revised graphics by Andreas Koch
-- Added the code provided by Alexey Guzeev(aga@russia.crosswinds.net) to
- compile PernAngband under OS/2 with EMX
-- It's finally fixed ! the damn bug that was crashing the game when leaving
- a town on certain system (Mac and Windows) ! this will never happen again !
-
-27/10/1999
-- Finished the Druid class. They have 40 spells (8 * 5 books). The spells that
- activate Mana Runes is not active for now, but it will in a near future.
-- Add a slightly modified Tom Morton fake artifact patch (it won't print {} at
- the end)
-
-30/10/1999
-- You can inscribe an object with !! to notify the player when it's recharged
-- Lots of bug fixes thanks to Lothar Lange <100644.2004@compuserve.com>
-- Lots of new ideas thanks to Lothar Lange <100644.2004@compuserve.com>
-
-30/10/1999 - PernAngband 4.0.1
-- "Foolish mortal! Thou hast not pleased me! I'll doom your game with the new
- horrible DG curse !"
- Yes I've done it, the DG curse is even worse than the TY one. One of it's
- most perverse feature is that it can replicate itself to contaminate sane
- objects that can't be cured. Also if you remove the curse of a DG cursed
- object, it will recurse itself automatically !
- Beware of the horrible Long Sword of Murazor because it carries the ancient
- morgothian curse !
- Oh, there are also some monsters that give the DG Curse when dying ... but
- I'll let you find whose they are by yourself :-<|> (Dark God makes an evil
- smile). I can just say one thing : you should *REALLY* *NOT* kill Mathilde...
- But do not worry she's got much more HP, so you can't kill her anymore :)
-
-01/11/1999
-- Add the Rod of Home Summoning, which acts like the old dragon spells
- "Call Home"
-
-08/11/1999
-- Drastically reduced the recharging time of the Dragon Scale mails in order
- to render them useful.
-- Added a new weapon ego-item: of Spinning, which will make you spin around
- in order to hit every monster around you. Note that you'll only get one
- blow for each monsters whatever your normal number of blow is.
-- Added (ok stolen) the question in the GSNband FAQ about wrists hurting (it can
- be useful, so everyone should know)
-- Rogues and monks gain more and more stealth as they gain levels (SBF)
-- Added some sentences for the Dwarves (in monspeak.txt)
-- Added the support of two-handed weapons (from GSN). Thus there are weapons
- that can be handled with two or one hand (but with one hand it halves the
- damage). A 2 handed weapon can't be wielded with a shield.
-- Added the random character name generation from Cthangband
-- Added rivers (water & lava) from the Steven Fuerst fractal patch. Note that
- you have to add WATER_RIVER, LAVA_RIVER, WATER_RIVERS or LVA_RIVERS to a
- dungeon to have some rivers generated (actually in Mordor(lava), Dragon lair
- (Lava) and Forest(Multiple Water))
-- Updated generate.c to the Steven Fuerst fractal patch room generator (using
- room_alloc), in order to implement the remaining part of the patch easier.
- But I'm still having problems adapting it to my extended dungeon generator.
-- Ahah ! I've resolved the problem !! there are now fractal rooms (15%, can be
- always enabled by specifying the CAVE flag), now the orc caves looks great
-
-10/11/1999
-- Added the Caverns(enabled via the CAVERN flag)
-- Hell has been moved down, it now begins at level 666! :)
-
-12/11/1999
-- Add the Static Chaos persistent dungeon patch that save every level of a
- dungeon (which has the PERSISTENT flag) on disk and reload it instead of
- regenerating a new level.
-- Add the Outer World dungeon type (this is an entrance to a place of an
- incredible stability). It use the PERSISTENT flag and thus will be saved.
- Only level 50 characters can go there to prevent abuse(like have an old
- ultra powerful character and a new one and going into the Outer World to
- exchange some stuff). And yes the saved dungeons are the same for EVERY
- characters. But to add ... err ... variety, I've put it from level 300 to
- 305, I've put it to have at least 30 monsters from the beginning AND to have
- an higher monster generation rate(1/60 instead of 1/160 !), thus you'll
- NEVER get bored there :)
-- Implemented the much more complex trap system from Angband/64 thanks to the
- patch made by Static Chaos. There is 169 traps (see tr_info.txt).
- Beware that on average the traps are deadlier...
-- It comes along with a new feature for stat system: temporary stat drain,
- it's cool
-
-14/11/1999
-- Renamed Power Batteries to Essences
-- The DG_CURSE can put the NEVER_BLOW flag on a weapon ... sadistic !!!
-
-16/11/1999
-- DSMs now have been granted the FLY flag
-
-19/11/1999
-- The monster memory now colors some important things about the monster (like
- resists, speed, ...)
-- Fixed a wand of wishing bug, that made them sometimes NOT use a charge
-- Moved the special level DeathWatch to the Orc Cave
-- Moved the special level Treasure Room to the Maze so people are forced
- to play those dungeons if they want the artifacts
-- Random quests will only occurs on PRINCIPAL dungeons (the one created by
- splitting the vanilla dungeon into 4 smaller ones, Galgals, Mirkwood,
- Mordor and Angband itself)
-- To prevent too many YASD from the DG curse of Mathilde she has now been
- granted 22500 hp, but as usual she can't attack :))
-- Fixed a bug that disabled the guardian at the bottom of some dungeons
-
-25/11/1999
-- Added main-gcu from Angband/64 to allow larger screens
-- Added the new note command that dumps to a file from "Tom Morton"
- <tmorton@yikesstation.freeserve.co.uk>
-
-27/11/1999
-- Added funny time message from Z
-- Added object experience as suggested by Ceilti <Ceilti@aol.com>
-- Fixed a bug when the magestaves were cursed
-
-29/11/1999
-- Added the small trees (along with a new feature flag: SUPPORT_LIGHT) to
- replace the walls in the Forest and Mirkwood
-- Some new gfx from Andreas, and the town of Bree with the new tiles
-
-02/12/1999
-- Add 4 dungeons by variaz@hotmail.com: Vanilla Dungeon(only from Vanilla Town,
- The Small Water Cave, The Sacred Land Of Mountains(if you don't fly ...
- do not even plan on going there),
- The Wild Land Of Kurukar(It sure looks great)
-
-04/12/1999
-- New dungeon flags: HOT and COLD that affect object decay
-- Add YA*IF (Yet Another *_info File): wt_info.txt
- It defines wilderness features *, allowing a better wilderness map. Since
- it now defines nearly everything a wilderness need to have, the map itself
- only have to be an array of feature and seed, thus allowing a much bigger
- wilderness. I also plan to have a Omega wilderness mode where you can have
- an overview of the wilderness to travel quicker (but time will pass much
- quicker too:)
- The structure of w_info is also changed, it's uglier but well .... :)
- The wilderness size must be EXACTLY the same as the size defined in misc.txt.
-
-06/12/1999
-- Scrolls of Reset Recall are now WORKING !!!!!
-- The new wilderness mode is done ! When you reach the border of a wilderness
- screen you go to the small scale wilderness map, where you can see all
- the wilderness map with the towns/dungeons/... A lot of commands are
- disabled there and moving takes MUCH more time, so beware of the food !
- You can enter the big scale mode by pressing > (this allow you to enter towns)
- NOTE: The Death Molds CAN'T reach the small scale mode because their
- erratic movements are impossible to handle in such a scale.
- BEWARE: Your imprinted pets WON'T follow you in the wilderness !!!
-
-11/12/1999
-- Add wilderness encounters
-- Add Oangband rod/wand stacking
-- Amulets of the Serpent from Sadi Khan <sadik@christa.unh.edu>:
- Resist Poison, Dexterity, some AC and Poison breathing
-
-12/12/1999 - PernAngband 4.0.5
-
-18/12/1999
-- Updated the makefiles and renamed object3.c to traps.c
-- Add 5 new essences from Sadi Khan: Force, Darkness, Lightning, Mana and
- Knowledge
-- Fixed the bug that was placing the player at the town entrance when
- leaving a building
-
-20/12/1999
-- Add the tool slot. It's actually only used to wield a shovel/pick but I've
- some plans for it
-- You can only dig walls if you use a shovel/pick in your tool slot
-
-24/12/1999
-- Removed the player ghosts, well in fact made them a compile-time option(see
- config.h)
-
-26/12/1999
-- Added the Necromancer class. But again not quite the same as you've seen
- before. They can't be killed as easily as the other class. In fact when
- their HP comes to 0 they don't die but become undead for a while. While
- being undead their HP is replaced by DP(Death Points) that have a max
- inferior to the max HP and that are slowly decreasing(1 DP less each turn).
- They can use all the healing spells/potions/... but this won't stop them
- from being reduced again. The only way for them to come back in the world
- of the living is to kill 2 * player_level monsters.
-
-01/01/2000
-- Happy New Year !
-
-02/01/2000
-- Add a new curse(as suggested by LucFrench@aol.com). When a weapon has this
- curse and that the wielder attacks a monster with it, it can clone it !
- And it's REALLY REALLY annoying, especially when fighting some kinds of
- wyrms :)
-
-10/01/2000
-- Finally fixed the flags shown on the character display.
-- The quit without save command(CTRL + L) is now a compile time option disabled
- by default
-- The Necromancer class now has 5 spells (used the same way as the mindcrafter
- powers)
-
-17/01/2000
-- Power gained by levelling artifacts has been reduced
-- New unique monster: The Greater Lag Monster... beware :)
-- AHAHHAHAH ! I got it ! the wilderness bug that made the game crash when
- entering a town is fixed ! And the wilderness system has been greatly
- improved.
- Now to switch the wilderness mode, just press < or >.
- Everything should now works properly
-
-16/02/2000
-- Each Nazgul will now drop his Ring of Power. They are randomly generated
- and thus they don't appear in a_info.txt. They always give invisibility,
- life draining and are heavy cursed.
-
-21/02/2000
-- Changed the format of w_info.txt again, it's much more readable now.
- I also added a additional parameter to the W lines of wf_info to define
- which letter will be used in w_info.txt
-- 60x20, this is the scale of the new wilderness, it tries to looks like
- the 3rd age middle earth map. Thus some dungeons leaved the towns they
- were used to be to join their "real" place on the map. Only the Upper
- Reaches of Galgals are still reachable from Bree.
-
-24/03/2000
-- Added a small hack from Static chaos to allow running faster with the
- overhead map enabled.
-
-24/03/2000 - PernAngband 4.0.6
-- Possessors now have a MUCH better pseudo id, equal to warrior's one
-
-06/04/2000
-- Changed the wilderness map with the one provided by Gwidon S. Naskrent
- (naskrent@artemida.amu.edu.pl). It's bigger, it's better :)
-- Fixed a bug with the chasm opening inscription
-
-08/04/2000
-- Fixed a bug with the staff of wishing
-- Druids can now pass through trees
-- Stairs are now noticed again (when you see one it will stay on your screen
- even when out of torch radius)
-
-10/04/2000
-- When a Necromancer turns into an undead he/she/it gets cured of everything
-
-05/05/2000
-- MAYBE fixed the damn wild bug ... again ? oh please GREAT RNG help me !
-
-08/05/2000
-- Added the Notes patch from Chris Kern. That allows you to get a .txt file
- recording great events in your life, your notes, ...
- Very useful I think
-
-11/05/2000
-- Fixed the artifact wands stacking bug
-- Removed the Netherworld dungeon
-- Added the Moria dungeon, it's not random and can be found in ... the moria
- mountain chain :) There is Muar waiting you at the bottom, guarding the
- Quarterstaff of Olorin
-- Waldern, the king of water is back, and he is the final monster of the
- small water cave, guarding a the Trident of Ulmo. But beware it is more
- powerful than in vanilla
-- Dungeon guardians and dungeon guarding's artifacts can only be generated
- in their respective dungeons
-- Removed rumors that were still Zangbandish and some others I didn't like :)
-
-14/05/2000
-- The MONSTER_PERCENT_ flag can be added to some dungeons to specify the
- amount of monsters that are affected by the dungeon specific restrictions
-- Random dungeons now appear on the overhead wilderness view
-- COULD IT BE !!!!!! yes it could !!!! thanks to Tom Demuyt that sent me a
- savefile where he wasn't able to learn spells, I may have finally fixed the
- dreaded spell bug !!!! I say may because I'm waiting for some fellow
- mac user to compile it to see if it really fixes the bug.
-- IT WASN'T ! but now it *IS* !!!!
- That was an other bug. And now Gob, the great Gob, the powerful Gob,
- found the dreaded mac spell bug !!! thanks Gob !!!!
-- Changed the price for Runes/Essences to be more accurate
-- Changed some uniques in r_info to their former vanilla glory
-- The look command can now show the trap's types
-
-18/05/2000
-- Fixed some typos(thanks whimsy)
-- Began to add the Body parts system to allow more rings, weapons,
- everything, depending on your current corpse (dragons will have more rings,
- mariliths 2 weapons, ...)
-- If your corpse allows the use of more than one weapon, you can use them :)
- let see a Sorceror using Ringil AND Gandalf ! :) well first he has to find
- the rare scroll to change body and then to find a corpse that allows 2
- weapons
-- Changed color of shafts (brown now) because they were hardly visible
-- Flying no longer allows passing over mountains, you MUST have a Climbing Set
-
-22/05/2000
-- Fast autoroller as a birth option
-- E'x'amining books in stores now browses them if your class can read them
-- Add a bookstore to Lothlorien town
-
-26/05/2000
-- When in battle rage(berserk) and using the ascii mode the screen goes all
- red (as it is white for invulnerability and black for wraithform)
-- r_info is modified to give all monsters some inventory slots. the format is
- E:weapon:torso:arms:finger:head:legs
-
-27/05/2000 - PernAngband 4.0.7
-- add a new dir to lib, DNGN which contain the definition of the LEVELS
- not the dungeons. one file for each level named dun$dungeon$.$level$
- In it you can have some declarations, like B:dungeontype which will
- create a stairway to an other dungeon, thus allowing to have "branches"
- in the dungeons.
- L:dungeontype and L:level specify which is the "father" dungeon and at which
- level the stair appear.
- S:ext means to save the level(and thus to reload it) in the player.ext file
- so allowing the use of persistent levels(the persistent dungeons option
- is gone)
-
-29/05/2000
-- Necromancers can use the Nether realm in addition to their old set of
- powers(now accessible through 'U')
-
-01/06/2000
-- Boomerangs of spinning are no longer allowed (that was silly)
-- Increased the rarity of the ULTIMATE artifacts (Magestaff of Gandalf,
- Longsword of Eru, Seeker Bolt/Xbow of the Elves)
-- Fixed the displaying of attributes under the 'C'haracter display
-
--04/06/2000
-- Players can now choose which kinds of monsters they don't want in their game
- at birth (wipe all Pern monsters, all Cth, monsters, joke monsters, ..)
- Note that monsters in fixed quests are not affected.
- Thanks Static Chaos.
-- In the Maze you can no longer remember anything, that means everything you
- see is what it's in your light radius ! MUAHAHHAH, I'm *NASTY*
-- Archers now get a better chance of not breaking their ammo as they
- advance levels
-
-08/06/2000
-- Note taking bug should be fixed
-- Fixed a bug with the incarnation code
-
-11/06/2000
-- Added the Orc Barracks special level (level 35 of Moria) from
- Chris Weisiger (jmartin@inreach.com)
-- The maze is now guarded by The Baby Minotaur who is holding The Steel
- helm of Hammerhand
-- The graveyard is guarded by Vecna holding Doomcaller
-- You can now use the 'l'ook command in the small wilderness view
-***********IMPORTANT************
-- Between gates are no longer automatic, you must press > while standing on
- one to activate it
-********************************
-
-16/06/2000
-- Revised the Adventurer's guide thanks to Chris Weisiger(jmartin@inreach.com)
-- You can no more recall from a quest
-- You can no longer target pets
-- Re-enabled the "Control the rings" spells of the Shadow realm
-- Between gates are now purple +
-
-02/07/2000
-- Only priest-like characters can use the Valarin realm
-- Removed all the references to Logrus
-- Tunnelling rubble will place the standard floor of the current dungeon and
- not the floor feature
-- Grow trees no longer crashes when used near the dungeon edge
-
-05/07/2000
-- Fixed the character dump resistances
-- When a full character dump is requested (upon death) the self-knowledge
- screen is used instead of the grid of abilities, that looks better :)
-- Fixed a bug in the placement of stairs which sometimes led to a stairway
- to another dungeon when not requested
-- Fixed the bug that generated 'unknown' grids
-- Should now compile (nearly) without any warnings
-- Fixed the mountain bug that hung the game when entering mountain chains
- in the wilderness
-
-07/07/2000
-- Some more monsters from Angband/64 and some more work on r_info from
- Static Chaos. That brings the number of monsters to ... 1023 !
-- Damage taken from going between is divided by (ac / 50) + 1
- So between 0 and 49 ac it's full damage, between 50 and 99 it's half
- damage and so on
-- Greater Hell Beasts now have .. 1 hp :)
-
-11/07/2000
-- Add the Unbeliever class, they are anti magicians. Great warriors, they
- have the worst magic device skill of all the classes, they continuously
- generate an anti-summoning field around them disabling monsters from
- summoning. The radius of the field increase with levels. After level 20
- they can also disrupt the magic continuum, thus getting the same effects
- as Anti-Magic, Anti-Tele and The Stone of Lore(nobody on the level can
- teleport)
-
-13/07/2000
-- Add an option to auto tunnel walls when bumping into them.
- NOTE that it'll ALWAYS take a turn then, so beware...
-- Really fixed the note taking bug (ok stole the fix from Zangband :) )
-- Changed the object description so now it's "Smeagol's Corpse" instead of
- "The Smeagol's Corpse"
-
-13/07/2000 - PernAngband 4.0.9
-
-29/07/2000
-- Orc Barrack's between doors are fixed
-- God favor is reinitialized upon birth
-- Added the Daemologist class along with a brand new realm and lots of new
- cool effects(try making all your pets explode ! :)
- All made by Static Chaos
-
-31/07/2000
-- Fixed lots of compilation warnings thanks to Static Chaos
-- Added the random vaults and crypt vaults from Zangband with the help of
- Static Chaos
-- Fixed some bugs pointed out by Bablos
-- The Ray Rune now relay make a beam and not a pseudo bolt
-
-03/08/2000
-- 2 handed weapons wielded with a shield now really restrict your fighting
- abilities (I forgot to add the code before) :)
-- Possessors can't leave their body while they wear cursed items
-- Word of Destruction is no longer allowed in quests
-- Add a fate spoiler created by Dustin Ragan
-- Removed the old new player ghosts implementation
-- Added the new old player ghost implementation (stolen from Drangband)
-- Rod system have been totally reworked. Now you can find "base" rods without
- power (rods of nothing) with a certain quality (wooden, iron, ...) on which
- depends the amount of mana they contain. You can also find rod tips which
- contain the real spells but cannot be activated alone. You must attach (with
- the 'z' command) a rod tip to a base rod before using it. The spells of the
- different rod tips need different amounts of mana (so illumination is less
- mana-hungry than healing) :). You can also have base rods ego-items (artifacts
- soon) that can decrease the mana cost of the spell, increase the capacity
- of the rod, decrease the time needed to zap the rod, ...
- Oh BTW, you should be eager to get an Adamantite Rod of Healing of the
- Istari :)
- Now rods will hopefully be useful.
- Note that you have to identify the base rod to get the mana indicator
-- Note files are now playername.nte instead of playername.txt
-So if you want your note file to be carried to the next version you'd better
- rename it :)
-- Fixed a bug that prevented Azog from being generated at the bottom of the Orc
- Caves
-
-07/08/2000
-****************** IMPORTANT *****************
-- Removed the Python support because it was slowing the game, adding
- weight to the executable (and thus to the archive), was mainly unused,
- and was never present in some ports
-**********************************************
-
-09/08/2000
-- Unbelievers are now much better at perception, and actually become even
- better as they go up levels
-- Fixed several bugs thanks to Iain McFall
-- Reset recall is now much nicer to use thanks to Iain (again :)
-- When a character is infected by the Black Breath it is show in the char
- screen & dump
-
-15/08/2000
-- Cursed mage staves should no longer crash the game when identified
-- A Marilith can now drop it's corpse when killed
-- Add the gods spoiler made by Dustin Ragan
-- Fixed a bug that could eventually crash the game when looking at the quests
- screen
-- Fixed a bug in the random junk artifacts that made them cure fear when said to
- cure confusion
-- Add the squelch patch from Iain McFall
-- Boomerangs are now pseudo-id'd
-
-19/08/2000
-- The *thanc artifact daggers are less common because they are so powerful
-
-24/08/2000
-- The Midas Touch 30k gold limit has been removed (suggestion from Chris)
-- Fixed (ok ok Iain fixed :) ) several trap related bugs
-- Squelch now use the pseudo-id thanks to Iain
-- Pseudo-id inscriptions are no longer part of the real inscription of an object
- and thus ... it's better :)
-- Tribal spell "Life Drain" now reduces your stat permanently 30% of the time
- and the other 70% it can be cured via restore stats pots. The damage is now
- always 50d50 and is no longer affected by mage staves of spell
-- Tribal spell "Meditate" no longer hastes/heals you
- (it still heals your sanity) and the glyphs' radius have been decreased
-- Add the Trap of Acquirement that will give a great object and then mutate
- into an other trap. It can never be identified and the color varies.
- Idea from Iain
-- When casting charm upon monsters only the non-pet ones will be affected
-- Elder Aranea HP reduced
-- Small trees are burned by fire
-- Randomly activated mutations are no longer activated in the overview
- wilderness
-- Ghoulkings are now z instead of p
-- Thrown potions now give xp when killing by a ball effect
-- Scrolls of reincarnation have been removed now you can only find scrolls of
- deincarnation. To reincarnate into a new body 'U'se the appropriate power
-- Recharging is now useful again
-- Breeders should be a BIT slower
-- Reduced mutation chance of breeders from 7% to 3%
-
-03/09/2000
-- New, unified store/building code
-
-08/09/2000
-- Add quest plots. Feature 75, 76, 77, 78 are now permanent walls but used
- as quest plot info holders. Before the new building code quest info was
- stored in the building feature but now all stores/buildings use the same
- feature(74) and the "special" value defines them.
-- Add semi-random towns. Now if the ' ' (space) character is used in the town
- definition this grid will be replaced by the feature calculated by the
- plasma generator as if it was a normal wilderness screen. So the forest of
- Lothlorien is plasma generated and not fixed. It add variety and consistency
- with the rest of the wilderness
-- All towns are now updated to the new store/building code
-- Removed the "you are being crushed" bug when going in the overview map thanks
- to Iain McFall (as usual :) )
-
-10/09/2000
-- When you use a 2 handed weapon and press 'e' the equipment list will show
- the weapon(and some info) in the shield slot too
-- Monsters can't have fewer arms than weapons
-- Mimics have been upgraded. They now have 5 powers. First is to use books of
- lore as before. Second is invisibility. The other ones are Mimicries.
- There are 3 mimicries, legs mimicry, wall mimicry and arms mimicry.
- Legs and arms mimicry will "create" a new body part (or some) for a certain
- duration. Wall mimicry will make the caster able to walk in walls (he becomes
- a wall) but ONLY in walls .. not on floor .. so beware with this one
-
-27/09/2000
-- For your god to resurrect you need 3 times more grace and your grace
- will drop to -100000
-
-30/09/2000
-- Add exploding ammos (bolt, arrows, shots) thanks to a patch by Static Chaos
-
-13/10/2000
-- Add some patches from Kusunose Toru <kusunose@hcn.zaq.ne.jp>
-- Neuters get a weight & height
-
-13/10/2000 - PernAngband 4.1.2
-
-14/10/2000
-- Building doors can't be erased
-
-28/10/2000
-- Fixed a bug in the rod system when attaching form the floor
-- Added fountains that you can quaff from ('H' in normal mode, 'V' in roguelike
- mode, yeah I know it was for version number .. but .. mhh who is using it ?:)
- Thanks to Static Chaos for the patch
-- You can fill empty options with fountains(thanks static chaos)
-- Added the Iain McFall Show Monster patch to show all viewable monsters
-
-08/11/2000
-- Fixed numerous bugs
-- Fixed the st_info & ba_info files thanks to Kusunose Toru
-
-16/11/2000
-- Godly blasts can't be reflected anymore, so beware, puny mortal !!! :)
-- Added a whole bunch of new floor features (ice, mud, sand, sandwalls, ...)
- thanks to Static Chaos.
-- More spell effect will affect the dungeon, for example, fire will melt ice,
- nether will kill trees, fire will create ash, cold will freeze water, ...
- thanks to Static Chaos again :)
-- Cleaned up the feature code again (that was a REALLY messy part of angband...
- and especially of Zangband)
-- Note: Sandwalls can be dug WITHOUT any digging tools
-- Teleport scrolls/staves are back in the shops
-- Mages, Wizards and Sorcerors now only get a wand of fire bolt at birth
-- Finally fixed the Alchemists extracting powers
-- Fixed numerous bugs thanks to KUSUNOSE Toru
-- Desert and Glacier wilderness features now really look like desert &
- glacier :)
-
-18/11/2000
-- Debug commands are allowed in the overview map, but beware, do not create
- objects & monsters there ...
-- The wilderness map is no longer fully known, you have to explore it
-- New wild.c file to support all wilderness functions
-- Maps can be found to reveal some places of the wilderness
-
-27/11/2000
-- Exp gaining weapons will gain levels way slower
-- Ring & Amulet random artifacts will only be "Ring of foo" and not
- "Ring of Slow digestion of foo"
-
-30/11/2000
-- Level gaining Artifacts have been significantly toned down
-- Sauron lost his chances to drop The One Ring
-- Blood of Life potions & Staves of Wishing are more rare
-- Your god wont always resurrect you even if you have enough piety
-- When leaving corpses, Possessor equipment will be dropped to floor
- to prevent their form being "lost"
-- Sandworm lair, a new dungeon
-- Staves of wishing now only have 1 charge
-
-12/12/2000
-- A patch to the alchemist patch from KUSUNOSE Toru, they should now work
- perfectly
-- h-system.h fixed so it should compile fine on Linux
-
-29/12/2000
-- New r_info.txt with the HAS_LITE flag, thanks to Static Chaos :)
-- Now some monsters can have a light around them
-
-03/01/2001
-- Phial of Galadriel and Phial of Undeath now use the same symbol(yellow ~)
-
-06/01/2001
-- Fates now show up in the character dump (thanks Kusunose)
-- Scrolls of Divination are more friendly now (thanks Kusunose)
-- Artifacts in monster inventories not yet seen are not shown in the
- artifact list (thanks Kusunose)
-
-08/01/2001
-- Zweihanders are now 2-handed weapons(as they always should have been :) )
-
-11/01/2001
-- Ego Rods are now "xxx rod of egoname of power" and not
- "xxx rod of power of egoname"
-- Fixed some typos(parchEment, NumeRoNean, ...)
-- Fixed a bug with junk randarts
-
-18/01/2001
-- Gods now need more sacrifices
-- Disabled the monster lite feature right now because it's HORRIBLY buggy
-- The Sandworm Queen will now drop the Sandworm armour when killed
-
-03/02/2001
-- Now you can separate a dungeon entrance from a dungeon exit on the
- wilderness map using the WILD_ix_iy__ox_oy flag in d_info.txt.
- ix, iy are the coordinates on the wilderness map of the entrance.
- ox, oy are the coordinates of the exit.
- Note that each of them(entrance and exit) must have a physical entrance
- on the wilderness map(that is a line in w_info.txt).
- When you use the entrance to enter you get to the first level but when you
- use the exit to enter you get to the last level.
- So now you can have dungeons that create shortcuts in the map.
- Or even allow to go in previously unreachable places(like now the dungeon
- of Moria allows you to reach a secret valley in the Mountains of the Moria
- which allow getting to some other dungeons)
-- Fixed a bug with fountains (yeah, fountains of the Blood of Life were quite
- unbalancing :)
-- Priests can't use Tribal magic anymore
-- Mages can't use Crusade & Illusion Magic anymore
-- Rogues can't use Crusade anymore
-
-05/02/2001
-- Found why under certain circumstances forbidden objects could still be
- generated (and that's also fixed now :) )
-- Dungeons & Monsters can now have object themes (yeah I know, I stole that
- from Zangband, though the dungeon theme was in my head for long, but
- when I steal I do admit it ...)
- For example The Sandworm lair is really full of magical items, while the
- Orc Caves are more on the side of the weapons & armors. And the Dragon Lair
- is filled with ... oh well everything :) and so on.
- So it's now really worth to get out of the 4 basic dungeons and see the
- wild world!
- All dungeons are done with the themes, it could take a bit longer for
- the (1031) monsters... :)
- NOTE: Dragon Scale Mails are considered TREASURES
-
-07/02/2001
-- Ego Monsters, yes like Ego items but for monsters. New file re_info.txt
- defines all possible ego monsters types (skeletons, zombie, ...). It can
- modify, the flags, spells, level, speed, ac, ... of the monster that is
- turned into an ego monster.
- This will increase the randomness of the game, increase the number of
- monsters from 1031 to .. a lot... :)
- There are not much ego monsters right now, so feel free to submit them
-
-09/02/2001
-- Sorcerors can't use much armor
-- Beastmasters have been give access to the Tribal realm, the Beastmaster's
- powers are now available through the 'U' key
-- Player Raise death spells will now really create an undead. For example
- you cast raise death upon a kobold corpse and you can get a Skeleton Kobold,
- or a Zombie or a Spectre one. New Undead types will be added later. And I'm
- open to ideas naturally
-- Narya activation is now Healing (500)
-- Nenya activation is now Healing (800)
-- Vilya activation is now Healing (900) and cures Black Breath
-- Daemonologists can now wield their books (in the weapon slot). When used this
- way, spells are cast in 1/3 of a turn otherwise it takes 5 turns
-
-11/02/2001
-- Specialized ESP, like Orc ESP, Troll ESP, Dragon ESP, ...
- They are less rare than full esp, but full esp is more rare
-- Fixed a Runecrafter bug which could crash the game if no second rune was
- selected
-
-11/02/2001 - PernAngband 4.1.5
-
-11/02/2001
-- Ents get nearly no sustenance from eating
-
-15/02/2001
-- Center player option
-- Alchemist artifact creation now requires player level magic essences to
- work. The stats are permanently reduced upon failure (as it always meant to
- be). You PERMANENTLY lose 100 max hp when trying to create an artifact.
- This should reduce the number of mad alchemists :)
-- Dark Swords as a new item type. They generate an antimagic field of 50%
- minus the sum of the enchantment (a +5+5 one will only do 40%) on a
- 5 tile radius (also minus the enchantment)
-- Unbelievers now generate a (player level)% antimagic field on a distance of
- (player level / 10)
-- An antimagic field disables any form of magic on the user, and can prevent
- monsters from casting spells (not breathing). A 50% antimagic field will have
- a 50% chance of stopping a spell
-
-18/02/2001
-- Normal Artifacts. Normal Artifacts are artifacts found directly in k_info
- that doesn't require a place in a_info. That allow strange artifacts, like
- wands, rods, staff (those were possible already but ugly), ... and even
- food
-- The Rod Tip of Home Summoning is now a Normal Artifact
-- The Greater Ration of Health is the first (very rare) food artifact !
- When eaten it provide +70 hp permanently
-- The Potion of the Blood of Life is now a Normal Artifact
-- Invulnerability can no longer appear in fountains
-- The Ring of Precognition is now a Normal Artifact
-- The Ring of Wraithform is now a Normal Artifact
-- The Scroll of Deincarnation is now a Normal Artifact
-- Hell is now the Nether Realm
-- Fixed a bug that created stairs at bottoms of dungeons
-- Extra blows can only be provided by things in the weapon slots
-- The Scroll of Mass Resurrection
-- Renamed Warrior-Mage to Warlock
-
-20/02/2001
-- The Wand of Stone to Mud of Thrain and The Wand of Fireball of Gandalf
- got the EASY_USE flag, allowing them to be used even by unskilled
- characters
-- As does the Stone of lore
-
-23/02/2001
-- Fixed a bug that allowed people in quests to use the '<' key to get to the
- wilderness timescale
-- Fixed a quest bug that allowed players to regenerate the quest many times
-- The Control the Three shadow spell is now much much more effective, since
- it removes black breath and DG_CURSE. The only little annoying thing is that
- it requires that player to wear the *THREE* rings. And that can only be
- accomplished with either the Possessor class (though they CAN'T cast the
- spell -- no hope for them) or The Scroll of Deincarnation
-
-10/03/2001
-- Monks can choose which spell to learn
-- Fixed a bug with limited ESP description
-- Fixed a bug in Possessor titles
-
-09/04/2001
-- DeathMolds can now teleport onto stores & such (all features that are
- considered floor by the game)
-- Objects cannot be dropped on traps anymore
-- The Sandworm Queen no longer appears multiple times
-- Harpers wont crash at the start anymore
-- Panic saves will use the playername.pnc filename (thanks Improv)
-- Symbiants can't hypnotize monsters that aren't pets anymore
-
-15/04/2001
-- Add an old patch from SC which allows dungeons to project an attack every
- few turns. For example a player in the Nether Realm will be hurt by nether
- every 3 turns for a damage of 10d10.
- The syntax is(up to 4 lines):
- E:<dice>d<sides>:<frequency>:<attack type>
-- Volcano now does 2d10 damage each 10 turns, beware scrolls on the floor :)
-- Lost Ruins of Numenor does 1d1 acid damage each turn (water will RUST you)
-- Cirith Ungol will poison you every 20 turns for 4d4
-- Illusory Castle will confuse you every 6 turns for 6d2
-- Small Water Cave does 1d1 acid damage each 20 turns (water will RUST you)
-- Nether Realm is unlightable (as is the Maze) and always empty levels
-- Nether Realm is now guarded by Tik'srvzllat who guards the Ring of Phasing
- a powerful ring that allow wraithform and immunity to nether
-
-16/04/2001
-- New Race system, Now you select a race AND a race modifier at birth.
- For example you choose to be a human vampire, or a dwarf skeleton, ...
- Then some modifiers apply (stats, skills, extra powers, ...). Note that
- all races can't use all race modifiers
-- New race modifier, Barbarian, the old barbarian race is gone
-- New race, the Wood Elf from CathAngband, masters of the bow, with 1 extra
- might and 1 more if they use bow and are high level enough
-- Extra Might can now be > 1
-- Penalty for priests using non blessed swords/axes/polearms is now (-15,-15)
-- New weapon category: Axes
-- Add Weaponmaster class from Gumband, trained into one weapon category, being
- great with it but bad with anything else
-
-18/04/2001
-- Aranruth is a broad sword, 15lb, 3d5
-- Fixed lots of spelling errors/typos thanks to Improv
-- Add a new birth option: Astral (ghosts from Kamband, name from Gumband)
- It enforces vanilla town and makes you start at level 98, you can't recall
- and need to reach town
-- Trap doors can't appear at the last level of dungeons or in non dungeons
-- The concept of non-dungeon places: some "dungeons" got the FLAT flag
- meaning they are ... flat, like a forest
-- The concept of Towers, going up instead of down
-- Updated birth.txt to take in account the race modifiers
-- Wood Elves can go through trees
-- Ammo similar to the one in your quiver will always be picked up
-
-20/04/2001
-- The death fate is way different now. When the player enters level he is
- fated to die on he gets teleported to a special level in a special dungeon.
- the level is empty, small and full of really out of depth monsters. Recall,
- genocide, ... are forbidden. There are no stairs, the only way to leave it is
- to kill every single monster of the level. Then the player is teleported
- back to town. Chance of surviving are *LOW* but not nonexistent :)
-- The knowledge rune will now probe monsters
-- Runecrafters are now playable (new damage formula) even at low levels !
- Now lets hope they are not TOO powerful :)
-- Runecrafters upgraded. They can now:
- 1) Cast a spell on the fly (as before)
-2) Cast a runespell they memorized before (can memorize up to 100)
- 3) Cast it from a carved runestone (uses 75% mana and does NOT need the
- runes to be present in the inventory, but consumes the runes during
- creation and it must be carried around to be used)
-- Mormegil is now a Darksword and is quite nice
-- Lesser & Greater Krakens now drop corpses
-
-24/04/2001
-- Add random towns in the dungeons. There can be up to 4 towns per dungeons.
- Not all dungeons (well should say places) can hold towns. Random town shops
- are took from the possible shops in st_info.txt with the RANDOM flag
-- Stores in st_info.txt got flags
-- When carving a Runestone the involved runes are destroyed
-- Random towns can have different shapes, from vanilla one to hidden one
- (the stores are placed randomly on the level, without any buildings)
-- When the player is invisible and does not have see invisible the @ symbol
- disappears
-- Cannot locate undetected traps by simply 'l'ooking around
-- Mariliths cannot use boots
-
-26/04/2001
-- The player is no longer "teleported away" when leaving some buildings
-- Level gaining artifacts rarity have been increased
-- Death Ray will actually kill the player
-- Removed traps of death ray (now that death ray insta-kills)
-- Recharged wands/staves cannot be extracted anymore
-- Wraithform no longer reduces damage
-- New hp formula for Possessors
-- Some sentences for the DarkGod monster to say, based on #angband :)
-
-28/04/2001
-- *WARNING*, squelch list has to be checked upon importing an old savefile
-- Every item can provides blows since Alchemists can't create that many arts
- now
-- Wielding a mage staff (even non ego ones) will provide with a decrease of 20%
- of the casting speed (using 80 energy instead of 100)
-- Add makefile.bcc thanks to Arch
-
-29/04/2001
-- Some Spelling/Grammar fixes in lib/help/ -- Improv
-- Levelling artifacts will now use a new scheme:
- There are now groups of abilities (the Fire realm, the Cold Realm and so on)
- Whenever a weapon goes up a level, it gets to either:
- 1. become enchanted by +2/+1
- 2. gain another attribute from a group it already has.
- 3. gain +1 to hit, and a point.
- when a weapon gains a certain number of points, it might buy access to a new
- group. Note that some groups can contain good AND bad abilities
-- Pet shop now sells scrolls of summon never moving pets
-- Lots of fixes (ammo weight, god flags, ...) thanks to Kusunose Toru
-- Towers deactivated for the time begin
-- Rods considered good
-
-01/05/2001 - PernAngband 4.2.2
-- Force attacks will pull away monsters (from Dr)
-- Fist of Force is now a force attack
-- Unbelievers can now detect traps at level 25 and destroy them at level 35
- Press 'm'
-
-03/05/2001
-- GoI no longer protects from insanity
-- Colored messages
-- Artifact creation results in a 40hp loss
-
-05/05/2001
-- Hermit subrace, magic adepts weaker physically but have more mana reserves
-- Use upx for exe compression of the DOS version in makefile
-
-07/05/2001
-- Fixed makefile difficulties in makefile.org, and uncommented one of
- the safer sets of CFLAGS/LIBS in that file as a good default -- Improv
-- Fixed some other spelling problems, notably in cmd7.c -- Improv
-
-13/05/2001
-- Reworked the old (ugly) activatable mutations, race powers, ... system to a
- new unified one. Race, subrace, class powers are defined in the tables in
- tables.c. Now the new system will allow for artifacts to grant powers, it
- also allow intrinsic powers (i.e. you quaff The Potion of Blinking
- and from now on you can blink at will)
-- There is a 2% chance of gaining the grow mold mutation when eating a slime
- mold
-- Priests gets the curse detection power
-- Oops the Sandworm Queen wasn't confusion resistant :)
-- Added various granted powers to various artifacts and ego items
-- Sorceror allowed spellbooks are now in tables.c (Mrealm_choice)
-- Changed the install rule to do something sensible on Unix. Changed config.h
- to suit. Default dir for lib is now /usr/lib/games/pernband/
- Hopefully this won't make too many people angry -- Improv
-
-15/05/2001
-- New GFX by Andreas Koch
-- Fixed some entries in a_info
-- Monster memory now tells people when they're facing a Nazgul (Kevin W Thomas)
-- Fixed a bug in dungeon town generation (Kevin W Thomas)
-
-16/05/2001
-- Added makefile.WHICH, fixed up my earlier patches to add a real install
- rule - Improv
-- Pseudo id now works for potions, scrolls, wands, staves and rods. Magicians
-are better at pseudo id-ing those than warriors (SC)
-- Can only use one ultimate artifact at a time (not that it really
- matters given that no-one will ever find one :) )
-- Fixed a bug preventing The Baby Minotaur from being generated if it was
- already generated for a previous character using the same savefile
-
-17/05/2001
-- Upgraded to latest z-term code
-- Illusory castle got a guardian, The Glass Golem (a NASTY thing) hoarding
- The Helm of Knowledge, which auto ids every item you walk onto and activates
- for insanity + *id*
-- Crushed all oriental items(nearly) of the game, they just doesn't fit the
- general theme
-- Gigantic dungeons (flag DOUBLE) from SC
-- Ice lair as a Gigantic dungeon from SC
-- Dragon Lair is gigantic now
-- Between gates travelling damage is now /2
-
-18/05/2001
-- Checked in an EXTREMELY raw and broken version of my z-term changes that
- produce cmovie files. It's disabled by default, if you want to play with
- it, play with z-term.c ... Until I incorporate a cmovie player into
- Pernangband, you can use the one I wrote for MY roguelike MoLD, available
- at http://www.sourceforge.net/projects/mold/ . Little plug there. -- Improv
-
-21/05/2001
-- Moria WILL have downstairs at the bottom
-
-24/05/2001
-- New quest code ! Quests are no longer in *_info.txt files but are able to do
- many new things, and the code is less ugly than it was :)
-- Random Quests refitted to use new quest code, now each level with a random
- quest will have a vault with the monsters you need to kill inside, and a
- princess that is held prisoner (your goal being to save her)
-- Refitted Thieves quest
-- New Bree quest, The Lost Hobbit ! save Merton !!
-- New key, 'y' to give items to monsters
-- Elven vampires no longer get resist lite, that was silly AND unbalancing
-- Artifact arrows wont come in piles anymore
-
-26/05/2001
-- Removed Wizard & prior classes, Mages & Priests can now use their realms
-- Refitted Crusade realm, some new (fun) spells
-- cmovie changes to make it work better. Should have it all cleaned up and
- portable very soon. -- Improv
-- Updated pern_faq -- Improv
-- Power mages start with a 2d4 spells
-- Fixed a bug which made random artifacts destroyed by auto-squelch. --
- Kusunose
-- Changed spellbooks colors to be more .. accurate
-- Add the Spirit realm, taking the place that was designed for it a long time
- ago, the one that tribal used until now, between Valarin and Shadow.
- Tribal is not removed, but it can only be used by some nature-like classes
- (like beastmasters, rangers, ...). Some spell names & spellbooks names are
- took from psiband Psionicists
-
-28/05/2001
-- disturb_move option off by default
-- Bree town totally redesigned by Mynstral to be more accurate the LoTR
- description of it and to be more .. beautiful :)
-- New quest in Bree after the hobbit one, The Trolls Glade
-- Dark Horseman quest required level raised to 35
-- Massive updates to tables.c, fixed spelling of several spells, renamed a
- few, fixed spelling of several lvl-specific class names, renamed a few.
- Also working on maintainability for race/class restriction code in same
- file. -- Improv
-- Entirely replaced TANG.txt with new stuff I wrote -- Improv
-- Permanent wraithform no more do the "You feel opaque" every few turns
-- Recoded the passwall() function to be... less ugly and less buggy
-- Archers learn to protect their arrows from fire as they advance levels
-- The Toris Mejistos guarded by Ar-Pharazon the Golden at the bottom of
- the lost ruins of Numenor
-- Fixed random artifacts activation bug
-
-30/05/2001
-- Spell lists are now colored
-- Spell descriptions when browsing
-- Half magery spells descriptions done by Parak
-- The potion of learning is a k_info artifact now
-- Added color to seen unique list, quests list and a few others
-
-31/05/2001
-- Descriptions added to first five Shadow books (Shaun "arch" Sides)
-- Nazguls lost the DG_CURSE upon death
-- The Spiders of Mirkwood quest is the first Lothlorien quest
-- Magestaff of power now increases spell power while magestaff of spell
- holds 2 spells (switching their previous behaviors)
-- New ego item system, externalized everything, it's half based on Matthias
- Kurzke patch
-- Rewrote e_info.txt for the new ego system, the rarity should look like the
- same
-- Bows of Numenor & Lothlorien as new ego items
-- DSM can be ego
-- some new ego & tweaks to existing egos
-- 3 new light types: Everburning torches, Dwarven lanterns and Feanorian
- lamps
-- New ego lights: of Brightness, of *Brightness*, of Illumination, of Boldness,
- of the Shadows, of Infravision, of the Eternal Eye
-- The Phial of Galadriel is now level 20 rarity 10, the ego lights & other
- perm lights should be enough until then
-- Ego light: of Fading, will make non-permanent the permanent lights :)
-
-01/06/2001
-- Add auto curse
-- The One Ring will not be cursed when generated but will have the auto_curse
- flag, so it is possible to use it and take it off for VERY brief periods...
- but if it becomes cursed while you're wearing it .. you're stuck with it
-- The same applies for the Toris Mejistos (except that it's not permacursed)
-- Moved options around
-- No more books of lore, they are now Cloaks of Mimicry (and can be ego items
- or randart)
-- Monsters that can suicide cannot be random quest monsters
-- Alchemist artifact creation totally changed. It now takes player level
- essences of magic and 1 hp to "imbue" a normal non-artifact, non-ego item
- into a pseudo artifact.
- You will then wield/wear it and it'll gain some xp when you do
- (reducing the amount you gain)
- When you think you have enough xp, you finalize it (actually select the
- flags that now cost xp) with the xp it has and the pval you choose.
-- Did more spelling updates on this file -- Improv :)
-- Finished moving the class-race combos in tables.c to a cleaner
- format -- Improv
-
-02/06/2001
-- Copied Vanilla random artifacts name generator
-- Random ring & amulets are now "The Ring of foo"
-- Lights can be random artifacts
-- Described all Valarin spells
-- All non spellbook spells (Mindcrafters, necromancers, mimics) got a
- description
-- All harper songs described
-- DragonRiders will learn to fly at level 17 (but they always can levitate),
-that's an old Divia suggestion
-- Magestaves of Spell still carry 2 spells, but they are randomly generated
- using the runespell (magic of the Runecrafters) system
-- First draft of monsters gaining xp & levels
-- Magestaff of Mana & Power renamed to Magestaff of Wizardry (suggested by JLE)
-
-03/06/2001
-- Beginning work on unifying the load/save code to make
- maintenance easier -- Improv
-- load2.c and save.c are now one file, loadsave.c ... Will now be working on
- moving them to using unified functions so this code will be easier to
- maintain. -- Improv
-- Reworked monster AI. A monster can now be enemy, neutral(oriented toward
- player or monster or full neutral), friendly, pet or companion(will follow
- you on other levels)
-- Pets (and other friends) will be less stupid
-
-04/06/2001
-- You can now assign a target to a pet
-- The Phial will now have a similar effect to song of morning (tribal)
-- The number of companions killed is taken into account in the score
-- New quest at Lothlorien, the poisoned water, with an unique reward,
- a DSM of elvenkind (cannot be generated under normal circumstances)
-- Renamed Nibelungs to Petty Dwarves
-- New curse, you cannot drop the item
-
-06/06/2001
-- Multiple messages will show up as only one message with a multiplier
-- New Minas Anor layout (MUCH BIGGER) by Mynstral
-- Fixed the princess not appearing (she WAS there but got killed)
-
-08/06/2001
-- Fixed Mormegil (it was possible to use it with magic)
-- Companions stay even if you use the overview wilderness mode
-- Some monsters will tease the player but always stay out of melee range
-- A new pet command to make them forget their target
-- New ego type for heavy armors (Dwarven) with + to STR and maybe CON
-- Ammo & diggers doesn't add the tohit/todam to your total
-- Herbal healing at Gondolin will cure black breath
-- New store type: Master Archer
-- Rings can be ego objects now
-- Scrolls can be ego now (Fireproof)
-- Wands & Staffs (except of wishing) can be ego item: of Plenty
-
-10/06/2001
-- Possessor now have mana (based on INT) and use it to cast the spells of the
- monster they are using
-
-12/06/2001
-- Deathmolds can now use the overview wilderness map but the travel time is
- higher and there is a chance to not blink right and move onto an undesired
- square
-- Changed Summon Cyberdemon to Summon High Demon (with the incoming new JLE
- demons it'll be nasty)
-- Added Possessor monsters, they'll hunt corpses and incarnate into them !!
- Now you must fear even dead monsters
-- The Phial of Undeath now has a radius of 5
-- Unique monsters list is now sorted (but Morgoth is always at the bottom)
-- Add monster traps from PsiAngband. Rogues can now set them (with the powers
- menu, 'U' key)
- Direct quote from Psiband change file:
- Rogues can set traps for monsters. This requires a "trapping kit" as a trigger
- and something to "load" the trap with.
- All scrolls, potions, wands, staffs and rods can be used (with the appropriate
- trigger) as traps to confuse, poison, teleport, genocide, ... unwary monsters.
- But standing next to a trap with area effects will hurt the player, too.
- There are also traps that shoot ammo: hidden catapults, bows and xbows.
-
- Some monsters can disarm traps, and a monster that has disarmed one of your
- traps will learn how to disarm all of them...
-
- Ammo Traps can have (+hit,+dam) just like bows. They can also be enchanted.
- All traps can have a [+AC] showing how hard it is to disarm it.
- There are also ego and artifact traps.
-- Add the ego & artifacts trap kits from PsiAngband
-
-15/06/2001
-- Hallucination monster attack (JLE will use it for the review of r_info)
-- You can use up to 5 R_CHAR_x flags in the F: line or re_info.txt to specify
- races to which the ego powers are available
-- Crusade realm described
-- The Star of Elendil now has a light radius of 4
-
-17/06/2001
-- The dungeon info file (d_info) now allows more than one monster generation
- rule. The R: line specifies the percent of monsters affected by the rule
- and the mode of the rule(AND, NAND, OR, NOR). So it is now possible to
- have 60% of orcs, 30% of trolls and 10% dragons
-- New dungeon in Mirkwood, Dol Guldur !
-- Sorcerors cannot use Valarin (prayers should not be available to mages) and
- Tribal (instead they get Spirit)
-- Fixed some misspellings in lib/help/ -- Kusunose
-
-18/06/2001
-- Auto pickup option now defaults to false
-- Fixed bugs with the cursed ego items
-- Described the remaining Magery spells
-
-19/06/2001
-- Point based character generation
-
-20/06/2001
-- Finish cmovie support !
-- Added an interface to cmovie (press | key in both normal or roguelike set)
- 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
-- Fixed a bug that prevented mutations from being correctly cleaned
-
-21/06/2001
-- Special artifacts can be placed anywhere in a_info, they just need the
- INSTA_ART flag
-- Emptying lite warnings should work now
-- Added new quest, not found in a castle.. I won't say anything more :)
-
-23/06/2001
-- Added 2 new dungeon flags:
- LIFE_LEVEL will generate levels with a cellular automaton algorithm (looks
- like a game of life)
- EVOLVE will make a LIFE_LEVEL be continuously parsed by the cellular
- automaton algorithm while the player moves, resulting in a living effect
-- New dungeon: The Heart of the Earth, branching on level 25 of Mirkwood
- it uses the evolving algorithm :)
-- Added the new Minas Anor (one map screen total). Fully functional
- (except for the random terrain via the plasma generator *hint,
- hint -> DG*) --Mynstral
-- Moved the rarity of the Phial of Undeath to the one of Galadriel
-- Add Death Orb monster as suggested by Prfnoff a long time ago.
- They only move when in LOS. They multiply (quickly) and can hit to parasite
- which will make a new death orb spawns out of you later
-- Fixed a bug in cmovie that messed up the recording when the user specified
- different char than the normal ones
-- Loadsave work is now pretty much complete. Barring the addition of
- transparent compression, which might happen later, there shouldn't be any
- reason why savefile compatibility should ever break again. -- Improv
-
-24/06/2001
-- Several bugfixes -- Kusunose
- Player's symbol was never displayed if VARIABLE_PLAYER_GRAPH or
- USE_GRAPHICS was #undef'ed
- Eating a corpse sometimes crashed the game.
- Stealing from a monster sometimes crashed the game.
- Nether immunity won't work if player had nether resistance.
- and some minor bugfixes.
-- Birth classes selection is now more user friendly
-
-27/06/2001
-- D: line enabled in k_info.txt
-- Added ingame information about the different objects kind one can find
- It is accessed via the observe key ('I' in original keyset)
-
-28/06/2001
-- Add back the Eol quest at Gondolin, but it's now dynamically created
- (the level layout and trap places are random)
-
-30/06/2001
-- Reimplemented Nirnaeth Arnoediad quest at Gondolin, but with a different
- reward
-- Add a spoiler menu to the help menu, thanks to Dawnmist
-- Fixed a bug; Steal Item Trap sometimes crashed the game. -- Kusunose
-- Working on rewriting more documents in lib/help/ -- Improv
-
-03/07/2001
-- Fixed a long-lived bug with power mages. This greatly affects play-balance
- with them -- no longer will the cost of many of their high level spells
- be merely 1 mana. Also, removed some of their effects that never really
- worked anyhow. -- Improv
-
-07/07/2001
-- Some more misspellings on this file are fixed. -- Kusunose
-
-11/07/2001
-- Cannot add essences to artifacts
-- Object descriptions are added in the character dump
-- Notes are saved in lib/note
-- Priests and paladins begins with 10 times more grace with their god
-
-12/07/2001
-- Rods with rod tips attached sells for higher price
-- Down shafts cannot get you out of a dungeon
-- Cannot enter water and such in overview mode when too burdened
-- The no_pickup_corpse option changed to prompt_pickup_heavy which will ask
- a confirmation before picking up objects that might slow you
-- Add an menu to the option screen to dump/load options to a pref file
-- Fixed a bug with dungeon guardians being generated more than once
-
-13/07/2001
-- Unique list is now in 2 columns
-- Race selection screen made more user friendly with race desc
-
-14/07/2001
-- Reworked the spell system
- Now each spell got a level that you increase as you learn it more and more.
- The higher the spell level is the more damage it does, the more time it
- lasts and such.
- Also each class have a specific max on the number of levels they can achieve
- in each spells. This should help the high mage class since they get twice the
- max level of mages. Also illusionists gets more than mages.
- Also note that sometimes one more level wont change anything while 2 or 3
- more WILL change. And lastly some spells are not affected by levels at all
- One last thing, sorcerors cannot learn spells and thus cannot increase their
- spell level which will always be 1
-- Player races now have inherent body parts, so a deathmold cannot use
- headgear or boots but can wear more rings
-- New DarkGod sentences by Static Chaos
-- Fortune cookie by SC
-
-15/07/2001
-- The more you known a spell the faster it is to cast
-- Every class can now choose which spell/prayer to learn
-- Began reworking the spell bonuses(from spell levels or mage staves) to a much
-smoother distribution, so if a point if used it WILL have impact. Done the
- Valarin Realm
-- Done Magery Realm
-- Done Symbiotic Realm
-- Done Music Realm
-- Done Shadow Realm
-
-16/07/2001
-- Done Chaos Realm
-- Ingame contextual help(on by default, can be turned off in the options)
- Only few stuff got help right now, but that'll be extended
-
-17/07/2001
-- Spell list with levels included in the character dump
-- Updated docs thanks to Dawnmist
-
-18/07/2001
-- Hypertext help system, use up/down/space/- to scroll, left/right to move
- between links and enter to activate a link
-- Race mods selection screen upgraded
-- The k_info artifacts will have a name again(was a stupid bug)
-- Done Nether Realm
-- Unified savefile loading screen. Now when the game is started it presents
- a screen allowing to create new characters or to load/destroy existing ones
-
-19/07/2001
-- No more breeders in poisoned quest
-- Add an option to show exp needed for next level instead of total exp
-- Objects with the temporary flag will be destroyed when it's timeout
-becomes 0, allowing spells to summon fiery blades and such
-- Valarin Realm got a spell to create a temporary Holy Avenger
-
-20/07/2001
-- Created a cygwin makefile (makefile.cyg) for Windows -- Dawnmist
-- Split spoiler help files into true spoilers and newbie help files -- Dawnmist
-- Continued minor edits of help files. -- Dawnmist
-- Possessors reworked again
- Now they get between 1 and 20 mana based on the spell rate of the monster.
- When you cast a spell the failure rate is determined based on the player
- level, player wisdom, monster level and spell difficulty. If the spell
- fails it is still cast but you lose a few mana. If it succeeds you don't
- lose mana. If it takes you below 0 mana you are forced to leave your corpse.
-- Done Spirit Realm
-- Done Tribal Realm
-
-22/07/2001
-- fixed a bug in project_meteor() that crashed the game. -- Kusunose
-- Updated option.txt for exp_need option. -- Dawnmist.
-- Continued edits on help files. -- Dawnmist.
-- Done Crusade Realm
-- Rewrote bldg.txt for Pern 4.x.x. -- Dawnmist.
-
-23/07/2001
-- Redone help file colour scheme to allow orange/yellow hyperlinks -- Dawnmist.
-- Continued edits on help files -- Dawnmist.
-- Spell checked tables.c -- Dawnmist.
-- Spell checked this file :-) -- Dawnmist.
-- Updated features and objects in dungeon.txt help file. -- Dawnmist.
-- JLE reworked the monster list, some monsters are gone, some monsters are
- changed and some are new
-- Along with r_info JLE also modified d_info, big thanks to him
-- No more quest for shelob in mirkwood(she guards cirith ungol now)
- Instead you must hunt the necromancer that is said to lurk in dol guldur
-- As long as sauron his alive the nazguls cannot be permanently slain
-- Attacking a nazgul no longer destroy artifacts(well it can, but the chance
- is 1 in 1000)
-- Done Daemon and Sigaldry realms
-
-24/07/2001
-- SURPRISE!! I did something (but what it was is a surprise too) -- Mynstral
-- Added debug 'B' command, changes body -- Improv
-- Added colours and hyperlinks throughout command.txt -- Dawnmist
-- Updated most command descriptions in command.txt -- Dawnmist
-- Minor updates to some other help files -- Dawnmist
-
-25/07/2001
-- Massive merges from my internal cvs tree of loadsave.c
- Hooked experimental bzlib integration in an #ifdef
- Gutted the old 'encryption' code
- Hoping to gut RLE if bzlib changes work out
- Added nice sentinel function -- Improv
-- Fixed class selection screen bugs, fixed savefile manager so it will work
- with unix. -- Improv
-
-26/07/2001
-- Added a quest map for Gondolin. -- Mynstral
-- Gondolon last quest: Invasion of Gondolin !
-- Upgraded max suport to the new birth interface thanks to pelpel
-- Several fixes thanks to pelpel
-- Add an option to use either the new r_info coloring scheme(based on V one)
- or the old one(based on Z)
-
-28/07/2001
-- Fixed a lock problem with global.svg on multiuser system thanks to pelpel
-- Done Magic Realm
-- Done Druidisic Realm
-
-30/07/2001
-- One can press 4 (left arrow) in class selection to get back to meta-class
- selection
-
-02/08/2001
-- Updated several *_info files thanks to JLE, new arts, ego, objects, ego
- monsters
-- Fixed a bug in ego monsters, now they works perfectly :)
-
-03/08/2001
-- Done Illusion Realm
-- Added macrofaq.txt to help system -- Dawnmist.
-- Updated/fixed a few problems in the help files, and linked in new macro FAQ -- Dawnmist.
-- Increased chance for player ghost to appear
-- No more ego monsters in town
-- Spectre subrace can only use 1 ring
-- Made bree and gondolin finally use the plasma generator, and added two terrain
- features. -- Mynstral
-
-04/08/2001
-- Fixed a bug with ego monster generation that inversed ego rarities, thus
- explaining the incredible numbre of spectres running around
-
-05/08/2001
-- Fixed the orc level in the moria
-- Bladeturner is now an UNTIMATE artifact, but can be activated for invulnerability
-- Major rewrite of magic and class help files -- Dawnmist.
-- Fixed a bug with saving/loading while doing invasion of ogondolin quest
-
-07/08/2001
-- Fixed Tribal realm
-- Major rewrite of race modifier help files -- Dawnmist.
-- Spellchecked this file - Improv
-- Reintroduced water hounds - Improv
-- Major rewrite of race help files -- Dawnmist
-- Graphics for shop doors -- Kusunose
-- With help of Antimatter, squashed item bugs related to negative pvals and
- the signedness of some functions. -- Improv
-- Done Prayer Realm
-
-09/08/2001
-- Fixed a bug with evolving dungeon when saved/loaded
-- Only the quest monsters counts for quest, not clones, not normaly generated
- ones
-- undead ego monsters cannot be mortal
-- Monster ego name can appear before or after the monster name(:B or :A at the
- end of the W: line)
-- Object ego name can appear before or after the object name(B or A on the X:
- line)
-- Fixed a long-lived item-pickup bug -- Improv
-
-10/08/2001
-- Ego monsters will be drawn in gfx mode
-- Add a birth menu to select the god to worship, druids are forced to get
- Yavanna, priests and paladins are forced to have a god, others can choose
- to be atheist
-- No more multiple artifact arrows
-- Continued edits on the help files -- Dawnmist
-- Completed the spell descriptions for the Shadow Realm -- Dawnmist
-- Vampiric weapons can be sold again
-- Staff & Wand of nothing of plenty cannot exist
-- Staff of wishing CAN be of plenty
-
-11/08/2001
-- fixed a bug with esp and flags5 not being saved thanks to kevin w.thomas
-- fixed a bug in nirnaeth quest
-- Reduced sorceror hp penality to -10%
-- Removed the screen coloration when berserk/wraith/goi
-
-12/08/2001
-- Fixed invasion of gondolin quest
-- Fixed lightning res amu
-- Add the Merchant class(thanks static chaos), they can get loans(watch out if
- you dont pay back quickly) and request items at the merchant guild.
- they can appraise items, identify items, warp items in chests. They get
- an object based ESP(see monsters carrying objects) at higher levels, they
- constantly detect objects around them and they can use portable holes
- to get a bigger inventory(but items in it weights more)
-
-13/08/2001
-- Fixed font-ibm thanks to pelpel
-- Merchants gets the midas touch
-- Vanilla town option removed. Astral mode now make the player start in the
- Halls of Mandos(levels 1-98) which do not have any entrance from the
- wilderness(or any dungeons). When they get out they are in the wilderness
- and can start playing normaly. And uniques cannot be generated in the halls
- of mandos
-
-14/08/2001
-- Updated font-ibm and font-win thanks to pelpel
-- When selecting the number of random quests, * will get a random number
-- Score list now shows the subrace, but it breaks the compatibility with old
- ones
-- Reduced xp needed by monsters to gain levels
-- Ego items are wishable now. i.e you can ask for "fiery dagger"
-- Updated font-ibm and font-win thanks to pelpel
-
-14/08/2001
-- Added the map for a new quest. -- Mynstral
-- Finished the Last Alliance quest
-- Number of companion a player can have at max depends of the class
- necro gets 1 + (plev / 10), beastmasters 4 + (plev / 10, harpers 5
- all others 2
-
-16/08/2001
-- Fixed ambushes
-- Added merchant help
-- updated mac suport thanks to pelpel
-- Reduced by about 6mb the memory req
-- Hidden towns are generable
-- Fixed a bug with weapon specialty at birth -- Kusunose
-- New item ability, some rare rings can add %(based on pval) to the chance
- of getting a critical hit
-- Objects can now shimmer(ATTR_MULTI), but only base types (k_info) can have
- the flag
-- Features can now shimmer, note that this can be slow. Please report if it
- is unbearable on your machine(you can also disabled the avoid_other option)
-- Reduced memory footprint again
-- Reworked the 'U' power menu to be more nicer and intuitive while still
- allowing macros. Each powers gets a fixed number that can be used as a
- prefix to the command to bypass the menu. For example teleport is 5 so
- to directly get teleport one can always do 05U
-
-17/08/2001
-- Described Chaos realm
-- Described Nether realm
-- Described Sigaldry realm
-- described Spirit realm
-- Fixed a bug with random quests
-- Fixed a bug in note taking, thanks to pelpel
-- Fixed the interact with visuals menu thanks to pelpel(the fix is not even
- in vanilla yet :)
-- Fixed cmovie recording
-- Merchants can request ego items(same interface as wishes)
-- Towns in dungeons now get townpeople in it ... leveled townpeople
-- Eggs are now , instead of o
-
-17/08/2001 - PernAngband 5.0.0 aka "Mirmidonic Carbonizer"
-- Birth options now appear in the normal option screen, but as read only
-
-18/08/2001
-- Special levels reworked
-- Volcano is now Mount Doom and is found on level 65 of Mordor
-- fixed help system crash thanks to pelpel
-
-21/08/2001
-- fixed the hypnotic gaze bug
-- reduced between gates damage
-- daemon books can be enchanted
-
-19/08/2001
-- Beginning work on a new, better status screen. For now, it's assigned
- to the debugging menu as the 'A' command. -- Improv
-- fatespoil.txt changed to fatespoi.txt
-- rogues get some shots for their trapkit at birth
-- Cannot dismiss the princess anymore
-
-23/08/2001
-- Fixed the special levels, thanks to mynstral
-- Described Daemon realm
-
-23/08/2001 - PernAngband 5.0.0b aka "Mirmidonic Carbonizer II"
-- Default pref files are in lib/pref
-- Random quests are disabled when using ironman_room
-- Add auto_more option -- beware it can be very dangerous
-
-24/08/2001
-- Increased general store price limit
-- Trapkits added to squelch list
-- Fixed a bug when displaying some k_info artifacts
-- Wand of Gandalf and Thrain are now k_info artifacts
-- Fixed 2 bugs with rogue traps
-
-25/08/2001
-- Necromancers can turn pets into companions
-
-26/08/2001
-- Special levels are no more fully known
-- Fixed fountain bug; shape of XXX did not take effect -- Kusunose
-- Described Illusion and Tribal realm spells -- Dawnmist.
-
-27/08/2001
-- Fixed bug with scrollable list of powers
-- Added Magical diggers, they grant stone to mud power
-- Added the Corrupted subrace gaining corruptions as they level thanks to
- Luc French
-- Changed mutations to corruptions
-- Dragonriders are no more considered evil
-
-28/08/2001
-- Fixed some cmovie bugs
-- Fixed *godness* song on non artifacts
-- Greatly increased herbal healing price in gondolin, since it cures black
- breath
-- Fixed bug with store item creation -- Kusunose
-
-29/08/2001
-- Totaly rewrote the random artifact system. It now use an external ra_info
- file to define what power the artifact will get. The format is very similar
- to e_info(expect it doesnt include the 5 flags sets). Each entry define for
- which tval/sval it can be applied. Then when the game wants to create a
- randart it simply defines a number of powers to grab and randomly pick up
- the powers from ra_info(following the restriction, rarity and levels).
- This allow a totaly change of the randarts if needed, an easy addition of
- new powers, ...
-
-30/08/2001
-- Hidden doors are now hidden, in mirkwood they will look like trees, in
- barrow downs they will be mountains or trees, and so on
-- Beastmasters can turn a pet into a companion
-
-31/08/2001
-- Half elf lost the str penality
-- Half orcs and half Trolls or now Orcs and Trolls
-- Saved levels are deleted when a new character is created
-- Renamed Holy Advangers to weapons of Aman, thanks to Timo Pietila for the
- idea
-- Cannot reset recall to Mount Doom
-- The game time is now counted with the elven calendar (reckoning of Imladris)
- (It isnt PERFECT, every 12 years it should have years of 368 days, but I
- dont think many will get upset :)
- A year is 365 days, with 6 months (Tuile, Laire, Yavie, Quelle, Hrive and
- Coire), 3 middle days(Enderi) and one starting(Yestare) and one ending
- (Mettare) day.
- The game begins the 43rd Yavie the year 2890 of the third age, note that it
- is the birthday of Bilbo :)
-- Note files (mainly) use the elven calendar to record things
-
-02/09/2001
-- Fixed several bugs (runespell deletion, ego wand and staff stacking etc)
- thanks to oops -- Kusunose
-
-03/09/2001
-- Changed the 'Lev xxx' thing to a 3 letter name corresponding to the current
- place(dungeon, orc cave, ..)
-- Enabled f_info D: line with an index(0 is general desc, 1 is to (forbid)
- tunneling)
-- Changed the way total weight is calculed thanks to Kieron Dunbar
-- One can edit his background history at birth :)
-- Lich ego monsters can use the base monster powers
-- Raise death can bring a lich
-
-04/09/2001
-- Enabled E: line in f_info(same format as d_info)
-- F: lines enabled in lib/dngn files, they specify flags for the level
-- Fixed a bug with special level generation
-- Add bleeding and poisoning monster effects from EyAngband
-- The One Ring quest
-
-05/09/2001
-- Fixed the crashing bug after level 100 in angband
-- Gave Sauron 30% chances to drop The One if it is not already created
-- Code now allows bi-ego objects, thoght they are impossible to generate yet.
- It will allow additing weapon/armors qulities(crude, broken, ..) easily
-- Add a quick start option that let you use the same char as you previous one.
- Everything is the same execpt life rating
-
-06/09/2001
-- Abort menu in the Windows version is now compile option, disabled by
- default. -- Kusunose
-
-07/09/2001
-- When a new day comes the game tells the player(at midnight)
-- Drain hp and mana are cumulative
-- Fixed file existence function for dumb systems :)
-
-07/09/2001 - PernAngband 5.0.1 aka "Brunswik Disipator"
-
-09/09/2001
-[B]- Turns in scores are based upon the start of the game not of the year
-[M]- Mimic are REALLY mimics, they can look like any object and appears as
- objects when looked at. And they got an emperor
-[I]- Enhanced realm selection menu
-[B]- Farmer maggot shows up in the unique list
-[M]- Monster vs monster damage is now x3 to shorten fights
-
-10/09/2001
-[P]- Changed the boring Half-Giants race to the much more interresting
- Beorning race. Descandant of beorn they can all shapeshift into a powerful
- bear form at will. In bear form you cannot use weapons, gloves, shields
- and boots. But you get powerful stunning/slowing/wounding attacks
- (claw, bite, swat, hug) and innate blows. You also get bonuses and minuses
- to some stats and to to hit, to dam and speed
-
-12/09/2001
-[O]- One Ring cannot be dropped by traps
-[G]- Implemented luck, an invisible stat which can only be approximately known
- via self knowledge spell/potion. It affects quite a few dice rolls.
- Each race gets a luck modifier, for most it is 0, but some gets penalities
- or bonuses(hobbits are a lucky bunch).
- Some objects also can grant luck
-
-14/09/2001
-[D]- The graveyard will now project a raise death spell on all bodies, meaning
- you'll have to kill a monster, and destroy its body before it get raised
- back in the form of a skeleton, spectre, lich, ...
- PS: MOUHAHAHAHHAHA
-
-15/09/2001
-[B]- Bugfixes -- Kusunose
- A message "XXXX blocking your way" was displayed when you went through
- some walls or trees.
- Hidden doors remained hidden if they were detected by spells, or if they
- were opened by monsters and then closed. Thanks to kobayasi.
- and some minor fixes.
-
-16/09/2001
-[m]- Implemented lua scripting language! More on that on the to-be docs
- You need to get lua3.2 to make it work.
-[m]- Integrated lua3.2 source into the source, no more need for external
- librairie
-[M]- Fixed store lockup bug thanks to Kusunose toru
-[I]- Partial 8x8 tile update -- Dawnmist.
-[m]- Cygwin makefile update -- Dawnmist.
-[P]- Externalized player races and histories
-
-17/09/2001
-[P]- Elves cannot be vampire anymore
-[P]- Hobbits get intrinsinc xtra might with slings at lvl 25
-[P]- Extended the possibilities of the player races file, it is now possible to
- select what flags will be applied at what level and for what pval(if
- revelant)
-[B]- Fixed non connected stairs on quests, thanks to luc french
-[I]- Removed screen dump/load commands, redundant with cmovie, and frees to keys
-[I]- Y( ( in roguelike keyset) key to chat with monsters
-[G]- Changed the way to get the lost hobbit quest
-[B]- Fixed a bug with eat magic corruption
-
-18/09/2001
-[G]- System shock when thrown out of one's body while wzearing cursed items
-[G]- Set the joke/Z/cth monsters off by default
-[P]- Externalized subraces to p_info
-[M]- No more joke mosters as quests
-[m]- Integrated an automatic help file converter(creates html files), command
- line option -h
-
-28/09/2001
-[m]- makefile.org now supports Lua, uses Improv's installation rule
- in all cases, it also understands make depend as well.
- Read it, make necessary changes for your system, then make depend
- followed by make.
-[B]- validate_bg() referenced a null pointer.
-[m]- CodeWarrior project file for the Mac port supports Lua.
-[m]- main-xxx.c for the Mac is now in sync with my Vanilla port -- pelpel
-
-29/09/2001
-[B]- Fixed herbal healing price
-[I]- 16x16 bmp/mask added to the cvs
-[G]- Cth/Z/Joke monsters options appears in char dump
-[B]- Fixed Crusade spell book browsing bug (Bug list #33) -- pelpel
-[B]- Fixed a bug; the first harper book was never sold in the bookstore
- (Bug list #15) -- Kusunose
-
-30/09/2001
-[G]- Increased min player level for some dugneons
-[I]- Message can be multi colored
-[m]- Yesterday I got OS 10.1 and found that it fixed the new window
- position bug (search for (_ _#) in main-crb.c), so I conditionalised
- the workaround -- pelpel
-[B]- Fixed the combined rod pricing (Bug list #30) -- pelpel
-[B]- Typo in files.c: cht_monsters -> cth_monsters. Replaced non-ASCII
- 0xa0's in angdos.cfg with 0x20 (i.e. space) -- pelpel
-
-01/10/2001
-[B]- Monks and Bear form didn't have combat messages -- since many lines
- in the current flavoured messages mention weapons, I introduced a
- hack to temporarily disable flavored_attacks for them, then just
- process messages as usual, and restore the flag later (Bug list
- #44 and #53) -- pelpel
-
-02/10/2001
-[B]- The trap/door destruction spell didn't destroy doors (Bug list #25) --
- use of floor_type[rand_int(100)] results in a 'natural' terrain,
- but isn't compatible with digging etc. Do they need fixing too? -- pelpel
-[m]- The main window resist resizing in the Windows port, like the Mac
- ones (Arcum's problem, future Bug list #74 and #75) -- pelpel
-
-07/10/2001
-[B]- Fixed PowerMage mana consumption bug (Bug list #114) thanks to krosky
- -- pelpel
-
-08/10/2001
-[B]- Fixed light source stacking bug (Bug list #7) -- Kusunose
-
-21/10/2001
-[M]- Add NO_CUT to some monsters
-
-22/10/2001
-[I]- Colors to news.txt
-
-25/10/2001
-[M]- Added gamma correction function taken from V2.9.x in util.c, since
- new X11 file requires it, so does my main-gtk.c, ready to be submitted
- -- pelpel
-[G]- Cannot use overhead wild map if being recalled
-
-26/10/2001
-[B]- Fixed long-lived dragonrider bug (xtra1.c), Darkgod please check to see
- if the behavior is as you want it -- Improv
-
-27/10/2001
-[P]- Externalized classes to p_info.txt
-[P]- Externalized meta classes to p_info.txt
-
-28/10/2001
-[B]- Fixed display of race/subrace/class flags
-[I]- Add some color to the identify screen
-[I]- Ignore Acid, elec, fire and cold are merged in identify screen
-[I]- Inventory/equipment letter are color-coded when *identified*
-[O]- Item sets ! Some artifacts are working together. If you wear them
- at the same time you get bonus powers. You can get partial bonuses i.e:
- You have 2 artifacts of 3 artifacts set, you will get some bonuses for
- them but not all.
-[M]- Add NO_CUT flag to monsters needing it thanks to
- Runescrye
-
-01/11/2001
-[B]- Changed king to the actual winner name in the quest dump
-
-03/11/2001
-[m]- Upgraded to lua4
-[m]- It is now possible to define new magic powers(ala mindcrafter, necro, ..
- powers) with a small lua script
-[O]- New item set the Dragon Slayer
-[m]- New gtk port thanks to pelpel !
-[m]- Mac makefile equivalent is updated, now with lua4 for all targets -- pelpel
-[m]- src/lauxlib.h is synchronised with src/lua/lauxlib.h -- pelpel
-[m]- LUA_NUM_TYPE in makefile.org is removed because src/lua/llimits.h now
- has correct (read integer :-) default -- pelpel
-
-04/11/2001
-[M]- All dragons now shimmer, according to their breath types(took from LM's 4GAI)
- That is also thanks to the neat info editor of static chaos :)
-[m]- Change my email adress to darkgod@pernangband.net, adds ideas@pernangband.net
- and bugs@pernangband.net thanks to Tom Le
-[I]- Added gamma correction subcommand to "Interact with colours", and
- updated main-gtk.c and maid-x11.c to work with that (they formerly
- used an environment variable for this). Also added gamma correction
- support to main-ibm.c and main-dos.c. CAVEAT: tiles don't react to
- changes in gamma immediately, for performance reasons -- pelpel
-
-05/11/2001
-[m]- Removed notice of sf_extra value from savefile load code. We probably should
- make the spot where it loads it a ls_skip and remove that older family of
- versioning variables -- Improv
-[m]- Took a stab at code to make a dynamically allocated loadsave section. It's
- not called because it needs support code that presumably DG will write.
- With any luck it'll be sufficient to do the job -- Improv
-[I]- Updates to experimental new status screen -- Improv
-[B]- Fixed a bug that caused all monsters drop inappropriate things. Hydras now
- just drop money again. Yay. -- Improv
-
-06/11/2001
-[m]- Added an automatic nice changelog generator based on changes.txt. To all people
- with cvs access, please use the new format for changes.txt.
- It is activated with the -c flag: pernangband -c changes.txt changes.nice
-
-07/11/2001
-[P]- It is possible to define player power(under the U menu) with lua scripts
- (and thats easy :)
-
-09/11/2001
-[B]- (IBM, DOS, GTK) gamma_val is reset as well as old_gamma_val
- when invalid values are specified, ensuring correct reaction -- pelpel
-[B]- File-Save was never active in the Gtk port -- pelpel
-[m]- gamma correction for Windows port. I'm too lazy to save it in preferences,
- though. May be redundant since many drivers provide similar functions
- -- pelpel
-[G]- Flat places no more have stairs, they have ways to next/previous areas that
- are always placed on the edge of the level
-[D]- Level borders are now of the same type as the level walls, no more forest
- surrounded by granite walls
-[B]- Haste Monster cannot haste as much as before
-[I]- Pets infight wont disturb the player anymore if disturb_other is off
- (it is by default). In combinaison with auto_more it will totaly ignore
- pet messages
-[O]- New item set, The Trinity
-[m]- Lua-ified item types(can add new ones with simple lua script)
-
-10/11/2001
-[m]- Added Gtk entries in the system pref files, also enabled new graphics
- for X11/Gtk ports -- pelpel
-[I]- The target prompt will indicate if the targetted monster is a quest
- monster or not
-
-12/11/2001
-[m]- Updated main-xaw.c to that from the same version as main-x11.c
- i.e. 2.9.2. It now reacts pref colours and has graphics mode
- (doesn't work with 8bpp though). CAVEAT: main-x11.c and main-xaw.c
- should free unused colours after allocating new one. -- pelpel
-[G]- Troll galde quest only available at night
-[G]- Genocide is forbiden in the last alliance quest
-[G]- Invasion of gondolin quest will wait the end of the current quest to be
- generated
-
-13/11/2001
-[m]- Variable savefile ! Lua scripts(or C scripts(quests)) can now add stuff
- to the savefile without ever breaking the compatibility !
- See an example ofthat in test.lua
-[B]- SPECIAL_GENE objects were generated out of context -- pelpel
-[B]- Inappropriate monsters could be assigned to randquests in
- rare occasions. CAVEAT: it now uses an infinite loop to
- avoid illegal choices! -- pelpel
-
-14/11/2001
-[G]- New quest, try cahtting with maggot instead of killing him, you murderer !
-[m]- Re-implemented object allocation table caching -- pelpel
-
-15/11/2001
-[B]- Inserted /* Paranoia */ code in kind_is_theme() to prevent "(Nothing)"
- from generated due to missing drop theme in r_info. Player ghosts
- had this behaviour as far as I know -- pelpel
-[m]- Changed the rand quest reward generation to make it compatible with
- yesterday's fix -- pelpel
-[O]- Added new ego rod, of simplicity, thanks to Runescyre for the idea
-[m]- Max number of classes, races, subraces and realms is now 64
-
-16/11/2001
-[I]- Stole the death screen of KaMband, much nicer :)
-[P]- Removed the astral option. It is replaced by a subrace, Lostsoul, they
- have intrinsinc wraithform(until they get back to the surface), start
- with some identify scrolls and have all levels enlightened
-[B]- The find artefact fate was able to grant SPECIAL_GENE artefacts -- pelpel
-
-17/11/2001
-[D]- Dragon Lair renamed to Erebor, the misty mountains
-[P]- Rogues gets level/3% more changes of critical hits
-[D]- The wilderness "borders" are now Ekkaia, the Encircling Sea
-[I]- I ran out of keys, so I added an extended command mode. Press '#' (')' in
- roguelike command mode) to acess to it. You can then enter the command
- name or a shortcut if the command have one(usualy a command have a 1
- letter name and a complete name). You can also press ? or help to get
- the list of commands
-[I]- The time command is avaiable again for roguelike command set in the form
- of the t/time extended command
-[I]- D/html-dump extended command to take an html screenshot
-[I]- Quest list is now ordered by danger level
-
-18/11/2001
-[B]- Attempting to go down shaft gave the message "I see no down staircase
- here", thanks to Kevin W. Thomas -- pelpel
-
-19/11/2001
-[G]- Reduced the Spirit Realm Project Force spell radius as it increase levels
-[B]- Entering Nether Realm crashed the game, thanks to M.Itakura
- -- Kusunose
-[B]- Polymorphing monsters in the wall crashed the game, thanks to to
- M.Itakura -- Kusunose
-[B]- Sometimes random quest appeared on deep(dlv>98) Angband -- Kusunose
-[B]- Cursed EASY_KNOW items were not squelched -- Kusunose
-[B]- Replaced all checks against RF1_QUESTOR to MFLAG_QUEST -- Kusunose
-[B]- Shafts were not detected by detect stair spell -- Kusunose
-
-20/11/2001
-[G]- Traps have been tweaked down to be a bit less deadly, thanks Runescrye
-[P]- Summoner class! Thanks to Luc French for the idea and quite a bit of
- the code
-[I]- New splash screen made by Jans
-
-21/11/2001
-[B]- Mathilde was allowed to use wepaon(when possessed)
-[I]- Finished all spells description, thanks to Runescrye
-
-22/11/2001
-[m]- Quests are lua-ified
-[m]- flush() is called before *that* DragonRider question, to prevent
- catastrophic(?) accidents, taken from Kusunose's Japanese version
- -- pelpel
-
-25/11/2001
-[B]- (GTK)Widget instance names should have begun with lowercase letters
- -- pelpel
-[B]- (makefile)LUA_NUM_TYPE macro removed (see my 3/11/2001 mod
- for makefile.org) -- pelpel
-[D]- Museum(Mathon-house) added to Bree thanks to Kusunose
-
-27/11/2001
-[I]- Added an option to allow the @ to turn into a number when health
- drops. ideas from Mangband/PernMangband
-
-28/11/2001
-[m]- ANGBAND_DIR_USER is moved to ~/.pernangband on multiuser systems
- (Unix, GNU/Linux), according to DG's preference, and against the
- V/Z way... IMPORTANT NOTE FOR 422color USERS: please move
- 422color.prf to lib/pref directory -- pelpel
-
-30/11/2001
-[B]- I forgot to give Tom Demuyt credits for the Unbelievers idea.
-
-01/12/2001
-[m]- Updated makefile.bcc. It now supports lua4. -- Kusunose
-[B]- The broken sword quest generates the real reward, thanks
- Dawnmist
-[m]- Windows port now saves gamma_val in .INI file. -- Kusunose
-
-03/12/2001
-[M]- Rejoice ! no more nazguls as random quests
-
-04/12/2001
-[m]- Some patches from Kieron, thanks
-[I]- Kieron save squelch patch, modified to not save from chars to chars
- it can just be used to dump suqelch to a .prf file and load it
-
-05/12/2001
-[P]- New class from Luc French, the Blade, weaponless fighter able to dodge
- melee & some spells
-
-07/12/2001
-[B]- One could steal guardians' artefacts and reenter level to
- obtain multiple copies (buglist??) -- pelpel
-[B]- Fates could be lost during level regeneration (auto_scum and/or
- too many objects/monsters) -- pelpel
-[B]- (GTK)Fixed terribly stupid menu crash bug -- pelpel
-[B]- Climbing sets can now be pluralized thanks to John Q. Smith
-
-10/12/2001
-[I]- No more annoying infighting monster messages when turning disturb_other
- off
-
-11/12/2001
-[B]- Randquests and special levels must be immune to all types of level
- regeneration now -- pelpel
-
-12/12/2001
-[B]- Fixed alchemist art creation bug that allowed to use 4x exp
-
-13/12/2001
-[M]- Krakens lost their 6 ring slots, the tentacles are too big to put
- rings on them ;)
-[B]- Bashed down doors weren't revealed -- pelpel
-[B]- The Phial and other activatable items didn't have (charging) message
- -- pelpel
-[B]- There were extra spaces after names of unique corpses -- pelpel
-
-14/12/2001
-[B]- Detected traps should prevent running now -- pelpel
-[B]- The easy disarm code used easy_disarm and always_pickup flags in a very
- strange way, resulting in undesirable pickup behaviours -- pelpel
-[B]- "Grass with flowers" shouldn't disturb running now -- pelpel
-
-15/12/2001
-[B]- Entrances to vaults used dungeon-themed terrain features,
- sometimes making it impossible to dig them through -- pelpel
-[B]- DG's 27/11 mod is conditionalised to avoid doing so in the graphics
- modes, because it hardcoded characters and breaks the graphics support
- -- pelpel
-[B]- Mimic features are cleared when overwritten by streamers, to
- avoid, say, tree-looking deep water -- pelpel
-
-16/12/2001
-[I]- Added overlay graphics for ego monsters, player subraces and traps
- -- Kusunose
-[I]- Added 'search by name' feature to '/' command. -- Kusunose
-
-17/12/2001
-[I]- Player now drops out of the overhead wilderness view when becoming hungry/
- emptying lite
-[B]- Change in spell stat did not affect Mana/Spells if spell stat were
- not INT/WIS/CHR, thanks to kobayasi-san. -- Kusunose
-[B]- Change in WIS did not affect Sanity Points if WIS was not spell stat.
- -- Kusunose
-[B]- Costs of Symbiontic power were not displayed in first page, thanks to
- kobayasi-san. -- Kusunose
-[B]- Symbiontic power, scare and blind, was misordered, thanks to
- kobayasi-san. -- Kusunose
-
-18/12/2001
-[I]- Graphics overlay for the three X11 ports (untested). It requires
- USE_TRANSPARENCY and USE_EGO_GRAPHICS. USE_TRANSPARENCY was ugly,
- but this... -- pelpel
-[I]- Graphics overlay for the two Macintosh ports, again, untested -- pelpel
-[I]- Add ra_info.txt (randart generator info file) thanks to Runescrye
-
-19/12/2001
-[I]- Graphics overlay for the DOS port (USE_DOS). Also fixed a bug in
- the overlay support in the Mac ports. I removed always_pict
- code from the GTK+ port, because it's really slow, judging from
- the graphics performance on the Mac ports which use the mode
- to support tile width/height customisation -- pelpel
-[B]- Left good_item_flag for special levels, but adjusted rating boost
- a bit, because later fixes made +50 boost unnecessary
- Also toned down the rating boost for randquests -- pelpel
-[D]- New quest in Dol Guldur
-
-21/12/2001
-[B]- Fixed the very old artefact generation bug (present in
- Angband 2.7.8 -- 2.8.2) that forced "special artefacts" to be
- generated in the a_info.txt order. It is really problematic
- in Pern because of the depth of the Phial -- pelpel
-
-22/12/2001
-[B]- A Beorning's father was a Storm Giant sometime, and A Petty-Dwarve
- was one of several children of a Nibelung. -- Kusunose
-
-23/12/2001
-[B]- Fixed a bug that allowed to throw items with CURSE_NO_DROP.
- -- Kusunose
-[m]- Added spell spoiler creation in wizard mode. -- Kusunose
-
-24/12/2001
-[m]- (Mac)Eliminated busy waits in CheckEvents and TERM_XTRA_DELAY.
- It works well on my machine, but I left the original code using
- "#if 1/0" just in case -- pelpel
-[I]- Player now drops out of overhead wilderness view if a vampire and it's
- daylight
-
-25/12/2001
-[B]- Reintroduced OoD restriction on randquest monsters (until dlev 49)
- -- pelpel
-[B]- a fix for RNG problem with 64-bit machines, taken from V(?) -- pelpel
-
-27/12/2001
-[I]- Basic IRC facilities! 3 new extended commands: C to connect
- D to disconnect and : to chat. Highly experimental.
-[B]- Find artefact fate could cause permanent loss of artefacts. The code
- now tries to create a randart when there are no good choices instead
- of always defaults to the Phial -- pelpel
-[B]- Randquests sometimes requested players to kill slain uniques,
- making it impossible to continue the game -- pelpel
-[B]- (Carbon)Removed the dialogue indicating errors in AEProcessAppleEvent,
- because an r.g.r.a post pointed out that this can be quite annoying
- and Apple says they should generally be ignored -- pelpel
-[I]- DOS support for the irc client, needs libsocket:
- http://www.phekda.freeserve.co.uk/richdawe/lsck/lsck.htm
-[O]- Updated ra_info, thanks to Runescrye !
-[I]- X11 Support for the IRC client.
-
-29/12/2001
-[G]- a New randquest type !
-[B]- Companions cannot be hurt by the player anymore
-
-30/12/2001
-[B]- Reduced all force spells because of the side effects of force attacks
-[M]- Monster breathing/casting force attacks will bounce the player.
- Just like player's force attacks bounce monsters :)
-[M]- Fixed the IRC client some more.
-
-01/01/2001 - PernAngband 5.1.0 aka "Into the Fire"
-
-2002/02/19
-[B]- Normal (non-vampire) races didn't get mana regenerated at Inn -- pelpel
-[B]- The Mathom house acted like a normal shop when selling. -- Kusunose
-[B]- '-s' crashed the game. Thanks kobayashi for the fix -- pelpel
-[O]- Combining rod and rod tip now considers rod's cheapness flag.
- -- Kusunose
-[B]- Beastmaster Shanty overpayed a bounty if monster's corpses are stacked.
- -- Kusunose
-[B]- The random text code left files open in many error cases -- pelpel
-
-2002/02/20
-[B]- WeaponMasters were not restricted with their weapons. -- Kusunose
-[B]- Info text of 'disrupt mind' was described as 'dam'. -- Kusunose
-[B]- Fixed the "automatic ego filter" bug in the squeltch filter -- pelpel
-
-2002/02/26
-[B]- The polymorph random effect could crash the game. Thanks Kevin W.
- Thomas for the detailed analysis of the problem -- pelpel
-[B]- Stat draining effect of Black breath could crash the game. Thanks
- Kevin W. Thomas again for the patch -- pelpel
-[B]- With easy_disarm set, players were totally safe from detected traps,
- whatever messages might say -- pelpel
-[B]- Ego graphics code is now only active when and only when 16x16 tiles
- are selected -- pelpel
-[B]- Quest entrances/exits now require players to type '>'/'<' commands
- to move in/out -- pelpel
-[m]- Shimmering terrain features no longer shimmer while running/resting,
- to make them more bearable on slower machines and slow I/O systems
- like GCU -- pelpel
-[I]- Incorporated the hopefully improved running code from the CVS version.
- It uses CAN_RUN and DONT_NOTICE_RUNNING flags for non-conditional
- checks (i.e. not controlled by the disturbance flags or requiring
- immunity), so that most running problem can be fixed by editing
- f_info.txt -- pelpel
-
-2002/02/27
-[B]- Many room walls didn't have the CAVE_ROOM flag set -- pelpel
-[m]- The tunnel code (ordinary one) now performs double check for
- feat_wall_outer and CAVE_ROOM, so it is safe to use any terrain
- features for outer wall, including those identical to fill_type.
- Note: These two changes have very significant effect on the Sacred
- Land of Mountains. I'm not 100% sure if this is what DG intended,
- but I believe so reading flags given to it in d_info.txt -- pelpel
-[D]- There should be less not-at-all secret "secret" doors.
- This does *not* mean that ancient prob, but those mountains enbedded in
- plain wall in Barrow-Downs, for example -- pelpel
-[I]- Inven/equip/item choice in subwindows now clears to the bottom of screen,
- to avoid glitches and in accordance with the way it worked -- pelpel
-[I]- Identify and *Identify* don't list known/fully known items in
- object selection -- pelpel
-[m]- Depth/field name area is now 13 character long, so that names like
- "shallow water" will fit, and "Lothlorien" is not truncated in GCU.
- Also added short dungeon name prefix to the depth-in-feet mode -- pelpel
-
-2002/2/28
-[B]- Dungeon town generation could crash the game. Thanks Mogami
- for the analysis of the problem -- pelpel
-
-1/03/2002
-[B]- Supplied missing suid code in 1) savefile removal action in the startup
- screen, 2) time table lookup, 3) dungeon savefile removal, and
- 4) bone file removal. Thanks kobayasi for the patch -- pelpel
-[B]- Less platform-dependent savefile processing code for the game start
- menu, thanks again for kobayasi. It now uses files.c utility routines
- for building appropriate savefile names -- pelpel
-[B]- Magical branding of weapon/ammo, when successful, now sets enchanted
- item's discount rate to 100%, so that one can no longer make vast
- profit or easily gain his/her deity's favour. Code adopted from
- T.o.M.E. 2.0.0 CVS -- pelpel
-
-03/03/2002
-[P]- Give Ents scrolls of satisfy hunger instead of some food. -- Kusunose
-[M]- Added a command to dismiss companions in the pet menu. Code adopted
- from T.o.M.E. 2.0.0 CVS -- Kusunose
-
-04/03/2002
-[B]- '/' in item selection didn't update screen correctly -- pelpel
-[m]- Moved auto-squelch code from process_player() to process_world() -- pelpel
-
-05/03/2002
-[m]- CAVE_TRDT wasn't cleared when a trap is disarmed, which had some
- subtle effects and forced coders to double check c_ptr->info and
- c_ptr->t_idx in various places -- pelpel
-
-06/03/2002
-[B]- Level generation could cause infinite loop in the Sacred Land of
- Mountains -- pelpel
-[B]- Player ghosts were disabled in a way causing special feeling on
- every level -- pelpel
-[m]- Changed repeated message code to V-CVS one -- pelpel
-[m]- Added another graphics mode variable called graphics_mode :),
- somewhat like use_graphics in ZAngband, but it doesn't
- require any changes to main-xxx.c. It's set within reset_visuals()
- and used by map_info(), so that it doesn't have to do streq()
- each time it is called -- pelpel
-[B]- Took 64-bit safe RNG from Vanilla -- pelpel
-
-11/04/2002
-[B]- Gave SPECIAL_GENE flags to the k_info.txt entries of SPECIAL_GENE
- special artefacts -- pelpel
-
-20/04/2002
-[B]- Player is now guaranteed to have initialive after entering a level.
- Thanks Joseph William Dixon for the patch -- pelpel
-
-22/04/2002
-[m]- Renamed 422colors.prf to 422color.prf, to make it fit with the 8.3 naming
- convention -- pelpel
-
-24/04/2002
-[m]- Add support for multiline comments in lua: --[[ ... ]]
-
-28/04/2002
-[B]- Fixed a bug that caused gods start casting nasty effects when player's
- grace becomes negative. It should have been -60000. -- Kusunose
-[D]- The inn in Bree is now The Prancing Pony. -- Kusunose
-[m]- Improved lua interface for defining new 'm' keys, magic powers, quests, ...
-
-05/05/2002 - T.o.M.E. 1.0.0 aka "Between the Darkness and the Light"
-
-02/1/2002
-[m]- (Mac, Carbon)Graphics mode performance improvement. When a user
- chooses a fixed width font (as is almost always the case) and
- doesn't change tile width & height, the higher_pict method is
- used instead of *very* slow and inefficient always_pict to
- draw things -- pelpel
-
-04/1/2002
-[B]- Normal (non-vampire) races didn't get mana regenerated at Inn -- pelpel
-[B]- Fixed the monster casting at other monsters but targetting you bug
-
-11/01/2002
-[B]- Sacrificing wands now decreases charges
-
-12/1/2002
-[B]- The random text code left files open in many error cases -- pelpel
-[m]- The prf file loader always searches for the user directory first,
- then the pref directory if it can't find it there, so that user
- can override the system defaults keeping the distributed files
- intact. This also simpifies the pref loading codes in several
- places -- pelpel
-
-13/01/2002
-[B]- Fixed more running problems (FEAT_SAND and FEAT_ASH) -- pelpel
-[B]- Some routines called malloc/free instead of C_MAKE/C_FREE in
- the vault generation -- pelpel
-[B]- One wrong sign in the fractal cave code (vertical average) -- pelpel
-[B]- Fixed the store info file thanks to wrabhit23
-
-14/01/2002
-[B]- Ego items had extra spaces in their names -- pelpel
-[B]- (XAW)Terminals used wrong names. USE_EGO_GRAPHICS didn't even
- compile -- pelpel
-[I]- IRC code for the XAW port. Caveat: it causes a linker error
- if you USE_X11 and USE_XAW at the same time... -- pelpel
-[m]- the html help file converter now gets it's header and footer
- from head.aux and foot.aux in lib/help to help website
- designer adapt the generated files to whatever they want
-
-19/01/2002
-[B]- The Mathom house acted like a normal shop when selling. -- Kusunose
-[I]- Removed hard-coded direction keys in the skills menu -- pelpel
-[B]- Many room walls didn't have the CAVE_ROOM flag set -- pelpel
-[B]- More running problem (small trees in Mirkwood) -- pelpel
-
-20/01/2002
-[B]- final artifacts were not generated if they are k_info artifacts.
- -- Kusunose
-[B]- Fixed get_com interface for lua
-
-22/01/2002
-[B]- Squelch on sense now destroys {good} items if it's told
- "destroy good", but only when the "strong" pseudo-ID is in
- effect. Doing so for the "weak" method would be too dangerous -- pelpel
-[m]- The running code now uses DONT_NOTICE_RUNNING and CAN_RUN terrain
- feature flags for non-conditional checks, i.e. everything but doors,
- stairs and alike, and those requiring levitation or immunity -- pelpel
-
-23/01/2002
-[m]- Included the lua tutorials by Fearof4s
-
-24/01/2002
-[m]- Replaced the field of view code with that from Angband 2.8.3--
- -- pelpel
-[I]- view_special_lite and view_granite_lite that work with non-white
- terrains (for ASCII mode only, already done for 16x16 tiles) -- pelpel
-
-25/01/2002
-[B]- '-s' crashed the game. Thanks kobayashi for the fix -- pelpel
-[B]- Doors are remembered, so that they work better with easy_open.
- The easy_open code now performs checks for the perennially hard-to-handle
- feature mimic field -- pelpel
-
-27/01/2002
-[D]- A fair number of dungeon guardians lost their defined artifact drop
- and got a randart drop instead. The removed arts are back top normal
- behavior(can be found)
-[I]- Inven/equip/item choice in subwindows now clears to the bottom of screen,
- to avoid glitches and in accordance with the way it worked -- pelpel
-[I]- Identify and *Identify* don't list known/fully known items in
- object selection -- pelpel
-
-29/01/2002
-[B]- monster_carry() could cause permanant artefact loss. A similar code
- in quests and guardian artefact generation are also fixed -- pelpel
-[D]- There should be less not-at-all secret "secret" doors.
- This does *not* mean that ancient prob, but those mountains enbedded in
- plain wall in Barrow-Downs, for example -- pelpel
-
-20/01/2002
-[D]- Some spells can now stay in effect for a while, like a cloud of poison
- will stay in place and poison everything passing in it
-[P]- Changed the magic system, it now uses schools of magic instead of
- realms. A school contains much less spells than a realm. Each spell
- is unique and dont make others redundant. Also all spells tries to stay
- usefull for the whole game, by increasing in power and effects with levels.
- A spell can be assigned to more than more school, in which case all the
- schools need to be raised to obtain more power. All spells are implemented
- in lua, to make it easy to tweak them.
- All spells arent coded yet but my plans are for those schools:
- Mana, Fire, Water, Air, Earth, Mind, Conveyance, Meta, Temporal,
- Divination, Nature and Nether
- It may change somewhat but thats the general idea :)
- Books are not specific to a school, they can contain any spell from any
- schools, it is even imaginable to have randomly created books
-
-01/2/2002
-[D]- Streamers use small tress instead of trees, a la KAngband and
- variants that borrowed it's code. And they should look more like
- streamers in most dungeons -- pelpel
-[D]- Neither player or monsters can see through, breath, or cast spells
- over small trees, that are outer wall in Mirkwood -- arena levels
- were too nasty otherwise... -- pelpel
-
-02/2/2002
-[m]- los, player's field of view, and spell/breath projection now all use
- FF1_NO_VISION for the sake of consistency (in addition to the wall
- check in case of spell/breath projection) -- pelpel
-[M]- Added a command to dismiss companions in the pet menu
-
-03/2/2002
-[D]- Moved wiz_dark() implementing the maze level from move_player() to
- process_player(), so that a spellcaster can no longer do magic mapping--
- detect monsters--detect traps then casting teleport as often as s/he
- wishes to make things incredibly easy. Because of my laziness detected
- traps aren't displayed if they are out of sight. This would require
- tremendous hack. Anyway, don't worry, they are still remembered -- pelpel
-[I]- Auto-squelch menu now accepts ^R as an alternative to ^S, to be nice
- for those who USE_GCU. Thanks Skylar Thompson for the problem report
- -- pelpel
-[m]- CAVE_TRDT wasn't cleared when a trap is disarmed, which had some
- subtle effects and forced coders to double check c_ptr->info and
- c_ptr->t_idx in various places -- pelpel
-
-06/02/2002
-[B]- Do not drop from wild if player were not in wild mode in previous turn;
- it put player in wrong place and could crash the game. -- Kusunose
-[B]- Summoning monsters from totems could crash the game. -- Kusunose
-[B]- The Heavy Crossbow of the Elves was 'the ultimate armor' in the
- fully identified description. -- Kusunose
-
-07/02/2002
-[m]- Added FF1_DOOR flag to open doors for lightning effects in map_info()
- and have the trap creation code explicitly avoid them, because traps
- have and should never been performance bottlenecks -- pelpel
-
-08/02/2002
-[m]- Some process_world() sections (most notably monster generation and
- lingering spell effects) are conditionalised so that they don't run
- in the overhead map -- pelpel
-[D]- Added a dungeon flag that prevents generation of streamers, and
- gave it to those with water/lava rivers and places like Numenor
- and the Sacred Land of Mountains. Maze and evolving levels don't
- require this. Also made lava deeper (dlev 34 or below). Trees can
- appear on any flat levels. And eliminated undesirable calls to
- the RNG in the streamer code -- pelpel
-[m]- Changed all the signed (!) flags I was able to find to unsigned, because
- they don't make any sense. Savefile code should be modified as well
- if we ever care for savefile portability -- pelpel
-[m]- The tunnel code (ordinary one) now performs double check for
- feat_wall_outer and CAVE_ROOM (which was added a couple of weeks ago),
- so it is safe to use any terrain features for outer wall, including
- those identical to fill_type -- pelpel
-
-09/02/2002
-[D]- Rewrote place_new_way() so that it doesn't create unconnected dungeon
- sections, destroy outer walls of rooms, or dig room corners -- pelpel
-[I]- Hopefully finished special lighting effects. Now it works this way
- (with all lighting effects options on):
- Perma-lit grids and lit walls/doors within sight, and remembered important
- features = f_info colours, Perma-lit floors and walls/doors out of
- sight = darker colours, torch-lit "boring" floor = yellow, torch-lit
- grids out-of-sight = dark grey, blindness = B&W -- pelpel
-[D]- Angband dungeon now adjusts monster levels to the dungeon level.
- The monsters here will have a minimun level in the range of:
- level / 2 to level. So at level 67 the lowest monster you can encounter
- will be level 33. This means that if a white icky thing is generated
- it will be a level 33 white icky thing. If the base monster level is higher
- then nothing is adjusted.
-
-11/02/2002
-[m]- (Temporary note) Separated staying effect handling code from
- process_world() and made it a function, so that it can be called in
- any place with in dungeon() [can be activated by #define pelpel :)]
- I temporarily placed it after process_player(), but we have to spend
- some time testing this, seeking for the best turn structure -- pelpel
-[m]- Auto-squelch is performed *before* a player turn, just before the
- pack overflow code to prevent some interface problems. This means
- that squelching occurs as the very last action of a player turn,
- after monster drops or even after pseudo-ID, so that you don't have to
- press extra space to squelch items. Another possible arrangement
- would be within process_world(), right after sensing -- pelpel
-
-12/02/2002
-[B]- Fixed a bug in the hook code that may or may not be the cause of
- various quest-related bugs -- pelpel
-[D]- Altars now have CAN_RUN flag, so that you no longer see the
- message "You cannot run in that direction" when trying to run
- across them -- pelpel
-[m]- Added flush() before all the quest questions to prevent accidental
- loss/declination/acceptance of quest rewards/quests, also added
- very important flush_failure and flush() to the lua interface and
- put that in the spell failure code, so that spells can be macroed
- safely -- pelpel
-[B]- Fixed a bug in the 6 monster randquest thanks to Louis-Frederic Michaud
-
-13/02/2002
-[O]- Elvish waybread renamed to lembas, thanks to nimloth
-[I]- Because I find detection no longer works on panels, added DTrap status
- line as well as a new disturbance option disturb_detect. Also removed
- hardcoded row/column positions in the status line code, in preparation
- for big-screen support -- pelpel
-
-16/02/2002
-[I]- Added scrolling target/look code, which is bastardised :) form of
- Z and V ones -- pelpel
-[m]- Depth/field name area is now 13 character long, so that names like
- "shallow water" will fit, and "Lothlorien" is not truncated in GCU.
- Also added short dungeon name prefix to the depth-in-feet mode -- pelpel
-[m]- Because map_info() is the #1 bottleneck routine and because I felt
- hack_map_info_default is incredibly ugly :(, I removed
- hack_map_info_default and added specialised version of map_info()
- for use by cmovie and the HTML screen shot saver -- pelpel
-[B]- Fixed the "automatic ego filter" bug in the squeltch filter -- pelpel
-[I]- Big screen is sort of working now, but main-xxx.c (have
- to remove restrinction on size of the PernAngband window) and
- cmovie are still needing upgrade -- pelpel
-
-17/02/2002
-[B]- Made panel_bound() more paranoid about the current dungeon size,
- to prevent many big screen-related crashes -- pelpel
-
-18/02/2002
-[m]- Added 8x8 graphics support to trap display code -- pelpel
-[m]- Added another graphics mode variable called graphics_mode :),
- somewhat like use_graphics in ZAngband, but it doesn't
- require any changes to main-xxx.c. It's set within reset_visuals()
- and used by map_info(), so that it doesn't have to do streq()
- each time it is called -- pelpel
-
-19/02/2002
-[m]- Added term resize hooks so that one doesn't have to hit the redraw
- key and alike when s/he resizes windows. Hooked functions are placed
- in xtra2.c, because they are only related to big screen support
- and other panel related codes are there. Don't like the way stuffs
- are initialised -- assumption about max number of terms, setting terms
- package hooks from within the upper layer codes -- but the existing
- implementations do it this way, and the "right" way requires changes
- to main-xxx.c, which I'm too lazy to do... -- pelpel
-[I]- Big screen support for X11 and XAW ports (already done for Gtk, Mac
- and Windows ports). Also added an option -o to force the use of 8x8
- tiles in graphics mode. Say "-g -- -o" to activate it. And please note
- that because of the way transparency effect is implemented in
- X11/XAW/Gtk ports, it is available even with 8x8 tiles -- pelpel
-
-20/02/2002
-[B]- Beastmaster Shanty overpayed a bounty if monster's corpses are stacked.
- -- Kusunose
-[O]- Combining rod and rod tip now considers rod's cheapness flag.
- -- Kusunose
-
-22/02/2002
-[M]- Restored monster light code, modeled after Steven Fuerst's implementation
- insteand of APW one this time, but without his support for multiple radii.
- -- pelpel
-[M]- Made monster light a run-time option. CAVEAT: It'll cause display
- weirdness when you turn this option from ON to OFF while playing.
- Save/Restart or entering new level will fix the problem.
- Should call forget_mon_lite() when the game detects it... -- pelpel
-[M]- monster lite option is on by default
-
-23/02/2002
-[B]- A failure in disarming traps using easy-disarm caused another attempt
- at disarming traps (because it calls move_player_aux which calls
- do_cmd_disarm_aux which calls move_player_aux...), growing call
- stack infinitely. It's dangerous, and, in fact, players were totally
- safe from traps (messages said "You set off...", but traps were never
- activated) -- pelpel
-[B]- Black breath could crash the game (it's really evil, isn't it :)
- Thanks Kevin W. Thomas for the patch -- pelpel
-[m]- Ego graphics code now only tries to use graphics overlays for
- monsters and players if and only if 16x16 tiles are used -- pelpel
-[B]- map_info() had problem with walls mimicking floors -- pelpel
-[m]- Shimmering terrain features no longer shimmer while running or resting
- to make themselves somewhat more bearable on slower machines -- pelpel
-
-24/02/2002
-[m]- Updated lighting effect code so that it works the same as rr9's Angband
- versions. Also removed hardcoded IBM pseudo graphics code points, so that
- if anyone is ever interested in updating its font & prf files, s/he
- can do so freely without editing the source code.
- And map_info / map_info_default is now fully aware of c_ptr->mimic,
- so that map edges will not have strange lighting effects etc.,
- hopefully -- pelpel
-
-26/02/2002
-[B]- Polymorphing random effect of Chaos Warriors could crash the game.
- Special thanks for Kevin W. Thomas for the detailed analysis
- of the problem -- pelpel
-[I]- Moving onto quest entrance/exit no longer causes annoying automatic
- stair movements. You have to tell the game '>' or '<' to enter/leave
- -- pelpel
-[m]- Renamed see_wall() in cmd1.c to see_obstacle() also added a grid-based
- version of the function to be used by run_test(), so that those who have
- immunity and/or levitation can run over lava fields, deep water etc.
- -- pelpel
-[O]- There are 2 kinds of spellbooks for the magic schools, the ones that
- are named "a Spellbook of foo" where foo is a randomly choosen spell
- (selection is based on the dungeon level)
- and other names that are fixed books
-
-27/02/2002
-[O]- School spellbooks can be fireproof ego items
-[B]- Dungeon town generation could crash the game. Thanks Mogami
- for the analysis of the problem -- pelpel
-
-01/03/2002
-[B]- Supplied missing suid code in 1) savefile removal action in the startup
- screen, 2) dungeon savefile removal, and 3) bone file removal.
- Thanks kobayasi for the patch -- pelpel
-[m]- Less platform-dependent savefile processing code for the game start
- menu, thanks again for kobayasi. It now uses files.c utility routines
- for building appropriate savefile names -- pelpel
-
-03/03/2002
-[B]- Special level names wherent corrently displayed if the N: line was the
- first of the file in lib/dngn
-
-03/03/2002
-[m]- Added initialization code to add SPECIAL_GENE flag to final guardians
- and their artifacts (and DROP_RANDART if there are no final artifacts).
- -- Kusunose
-[D]- Put yet another fractal code (unlike the others it's quite simple)
- in the level filler generator, and added a F: parameter in d_info.txt
- to control its behaviour. Its syntax is FILL_METHOD_#, where # is
- 0: use the first filler w/o calling RNG (for Angband, Mirkwood etc.),
- 1: the same as the previous versions (default), 2: slightly smoothed,
- 3: more smoothed, or 4: max smoothing (initial step of 8 grids) -- pelpel
-
-04/03/2002
-[B]- '/' in item selection didn't update screen correctly -- pelpel
-[m]- Moved squelch-on-sense code from process_player() to process_world()
- -- pelpel
-
-04/03/2002
-[P]- High intelligence increase mana regeneration rate
-
-06/03/2002
-[B]- Level generation could cause infinite loop in the Sacred Land of
- Mountains -- pelpel
-[m]- Changed repeated message code to V-CVS one -- pelpel
-[B]- Player ghosts were disabled in a way causing special feeling on
- every level -- pelpel
-
-07/03/2002
-[m]- Trap display now uses x_attr/x_char of FEAT_TRAP (f_info N:17)
- 1) if a trap is set on a "boring" terrain in the ASCII mode, where
- only x_char is used and attr is taken from tr_info.txt XXX XXX XXX
- or 2) if attr/char for a trap is not defined in prf files in the
- graphics modes -- pelpel
-[m]- Removed FAKE_VER_*, because it has been quite long since we lost savefile
- compatibility with Angband 2.8.1 and info.txt files can be updated
- by sed/perl/whatever script in a snap -- pelpel
-[B]- Took 64-bit safe RNG from Vanilla -- pelpel
-
-08/03/2002
-[m]- To accommodate the practice of not upgrading version stamp of info.txt
- files at each release (never done in V-based variants, but common among
- Z-based ones for historical reasons), version stamp checks against game
- data files in lib/edit is made a compile time option
- (VERIFY_VERSION_STAMP), off by default. With this option off, version
- stamp checks for the binary files are still performed and they always
- have version signature of the game, not those specified by the V: lines
- -- pelpel
-[B]- Wide light radius worked in the small scale wilderness map,
- where it should have been WILDERNESS_SEE_RADIUS -- pelpel
-
-10/03/2002
-[m]- Upgraded the lua bitlib so it can handle stuff like bor(1, 2, 4, 8)
-
-11/03/2002
-[M]- Confusion, stunning, charming now works on uniques(those that dont have the
- corresponding resistance)
-
-24/03/2002
-[I]- Stats can now be displayed in a linear mode(from 3 to 37) instead of
- 3 to 18/***, the option is off by default
-
-25/03/2002
-[D]- No more shafts in the halls of mandos
-[m]- Block comments( --[[...]] ) in Lua enabled
-
-27/03/2002
-[D]- Tweaked the door code a bit so that some doors are much harder
- to find -- pelpel
-[I]- Added recall depth subcommand to the knowledge menu -- pelpel
-
-03/04/2002
-[I]- Removed the flavoured_attack option and made most 'silly' messages
- off by default. They are now controlled by 'insanity roll', which is
- d100 roll against (max_sanity - current_sanity) * 100 / max_sanity.
- The same roll is also used to determine if the game should use
- silly monster descriptions (in addition to the hallucination
- effects) -- pelpel
-
-04/04/2002
-[I]- The skill interface no longer asks question whenever you increase skills.
- Changes to skill values are made permanent if the player confirms them
- when s/he leave the skill menu, otherwise, they are simply ignored
- -- pelpel
-[P]- The skill system is ready ! Some small tweakings are needed, but it is
- mostly ready. Each level you gain a few skill points that you can spend
- on various skills(like combat, weaponmastery, magic, ...). Most actions
- are now tied to skills.
-[P]- Classes revamped as more or less skill templates. Classes now can have
- specializations which allow starting with somewhat different skill set.
-[B]- Since streamers can create unconnected dungeon sections, the code for
- it is moved after stair and player allocation -- pelpel
-[m]- Reorganised the linkage order of makefile.org a bit, so that similar
- files are grouped together, also frequently called files are not coupled
- together with rarely used ones. This *might* help on-demand-paging memory
- manager a bit -- pelpel
-[m]- Changed all occurances of " ?" in strings to "? ". --takkaria
-
-08/04/2002
-[B]- Some player_type fields and corresponding lua interface definitions
- were of different types. Fix thanks to rr9. -- pelpel
-
-09/04/2002
-[I]- Bigtile patch for windows, x11 and mac ports thanks to Takeshi Mogami
-
-11/04/2002
-[B]- Gave SPECIAL_GENE flags to the k_info.txt entries of SPECIAL_GENE
- special artefacts -- pelpel
-
-15/04/2002
-[M]- Revision of the conf/stun/sleep resists for uniques thanks to Runescrye
-
-18/04/2002
-[G]- The adventurer quest reward is now either the adventurer or some skills
-[I]- Asks for a last screenshot upon death
-
-20/04/2002
-[I]- You can now dump a frame of a cmovie as an html screenshot(while playing
- the movie)
-[P]- New god system, each god will be much more different from all others.
- Altars are less vital. There are less gods.
-[m]- Renamed inappropriately called global array 'town' to 'town_info', also
- moved some boolean town_type members into 'flags', in order to support
- dungeon town information subcommand of do_cmd_knowledge -- pelpel
-[m]- Commented out or moved many local variables causing 'unused' warnings,
- because of badly placed if 0's -- pelpel
-[B]- Player is now guaranteed to have initialive after entering a level.
- Thanks Joseph William Dixon for the patch -- pelpel
-[I]- The commands for skills and spells are swapped. Please use 'G' to learn/
- check skills and '$' ('\$' in roguelike) to learn spells.
-
-22/04/2002
-[m]- Renamed 422colors.prf to 422color.prf, to make it fit with the 8.3 naming
- convention -- pelpel
-
-23/04/2002
-[O]- Bound the wands & staves damage/power to the Magic skill, attack wands
- should actually be usefull now
-
-25/04/2002
-[P]- Magic skill now allows you to copy spells from books into various
- objects. Not all objects can contain spells naturally, but most object
- of the Magi can, and all mage staves
-[P]- Spectres loses HP while in walls, it was too abusable(and in fact, I never
- planned to remove it)
-
-28/04/2002
-[D]- The inn in Bree is now The Prancing Pony. -- Kusunose
-
-01/05/2002
-[D]- Small levels cannot generate full levels anymore
-[I]- The prompt to cast a spell now understand to press @, which will ask for
- a spell name, it'll look all books and cast it if you can.
- It EASES macros, a macro will now look like:
- 02m@Manathrust\r*t
-[I]- Message recall now understands bigscreen thanks to pav
-[I]- Help now understands bigscreen thanks to pav
-[I]- Skill screen now understands bigscreen thanks to pav
-[I]- No more pickup prompt with autopickup when inventory is full, thanks to pav
-
-03/05/2002
-[B]- The skill increase/decrease code was unable to detect underflow -- pelpel
-
-06/05/2002
-[P]- Made running commands exempt from do_nothing processing, because this
- can be abusable and makes no sense -- you could, for example, hold down
- movment keys when following Eru and use running when following other
- deities -- pelpel
-[I]- Took big screen code for horizontal scrolling of message recalls
- from Vanilla -- pelpel
-[I]- You can navigate through option menus with roguelike_keys -- in fact,
- I didn't know users of the original keyset can go up before I play
- the latest V and see its code... Taken from Vanilla CVS -- pelpel
-[m]- Entirely removed function definining macros from script.c, because
- it can confuse some compilers (a lcc case was reported), and some
- preprocessor reports syntax error for missing macro arguments -- pelpel
-[I]- Added big screen support for GCU -- pelpel
-
-12/05/2002
-[m]- Some, if not all, command line options are documented -- pelpel
-[B]- Full map command displayed only half of current dungeon level when
- bigtile mode is used. Thanks for Takeshi Mogami for tha patch
- -- Kusunose
-
-19/05/2002
-[m]- 1) Slightly reorganised menus in the Mac ports, because there were so
- many of them on the menu bar. 2) added a switch (-b) to the GCU port
- to select multiple terms or one big screen. 3) the GTK port issued
- huge number of fatal warnings if the graphics mode was turned on and off.
- 4) Compiled latest V CVS with main-gtk.c in T.o.M.E. and fixed some
- portability problems. -- pelpel
-[P]- Pseudo-id is now bound to the Combat skill(for weapons/armors) and the
- Magic skill(potions, ...)
-[P]- It is now possible to press @ at the 'm' key prompt to select a skill action
- by it's full name. Thus allowing unbreakable macro:
- m@Cast a spell\r@Manathrust\r*t
-[I]- The skill screen cannot be abused to get more skills anymore
-
-27/05/2002
-[P]- New god Melkor Bauglir
-[P]- Weaponmastery, Archery and Barehand skills increase Combat skill much more
-
-02/06/2002
-[B]- Various spell effects that polymorph monsters could crash the game.
- -- Kusunose
-[B]- Compare weapons command miscalculated muliplying bonus. -- Kusunose
-
-12/06/2002
-[P]- Deathmold fetch ability pickups gold and objects(if autopickup is set) thanks
- to "kenderband" <kenderband@hotmail.com>
-[m]- Exported cur_hgt and cur_wid to lua by request of Fearof4s. (takkaria)
-
-14/02/2002
-[m]- Updated the lua help files thanks to Fearof4s and Chris Hadgis
-
-17/06/2002
-[B]- Fixed junk artifacts and music instruments stacking bug in stores
- -- Kusunose
-
-03/07/2002
-[M]- Monsters drop stolen gold when killed
-
-04/07/2002
-[B]- Capped max number of extra blows at 2 when the limit_blow flag is set
- in two places -- pelpel
-
-09/07/2002
-[B]- Cancelling a scroll of reset recall didn't work. -- Kusunose
-[O]- Reset recall now lists all the dungeons a player has visited and
- additionally allow a player to select by name. -- Kusunose
-
-13/07/2002
-[O]- Enabled the generation of double ego items. An item cannot get 2 prefix
- or 2 suffix, it will always be a prefix and a suffix
-
-14/07/2002
-[P]- New bounty quest available at the beastmaster shanty! Bring back a corpse
- and get some monster-lore skill and the ability to learn corpse-preservation
- skill if you couldn't already
-
-15/07/2002
-[P]- Replaced first necromancy spell with Horrify from the old Nether realm and
- the third spell with absorb soul, provides some health upon monster death
-
-16/07/2002
-[m]- Updated lua_ques.txt to fix some misinformation. -- fearoffours
-
-17/07/2002
-[B]- One was able to have another entry in the score file for a dead/retired
- character by loading him/her with the -w option, then answering 'n' to
- the wizard mode confirmation. Bug report and fix (for Angband 3.0.1, but
- applicable for all variants) by Hallvard B. Furuseth, Takeshi Mogami and
- Robert Ruehlmann -- pelpel
-
-22/07/2002
-[m]- More lua documentation fixes, particularly adding square brackets to field
- names on lines that would allow this without mucking up colour formatting.
- -- fearoffours
-
-23/07/2002 - T.o.M.E 2.0.0 aka "Point of No Return"
-
-24/07/2002
-[m]- The splash screen now shows "Tales of Middle Earth" or "Troubles of Middle
- Earth" randomly. Thanks to Scott Holder for the idea and some code.
- (takkaria)
-[m]- makefile.org now defaultds to ./lib for the lib directory
-[m]- makefile.org is now makefile.std
-[B]- Fixed a silly bug preventing Polearm masstery from wroking
-
-26/07/2002
-[B]- In multiuser installations, notes and cmovie were written under the lib
- directory using the game's permission, making them inaccessible by
- the player. I moved them to ~/.tome. Note: This means that a coder
- shouldn't grab permission before opening files in these directories
- -- pelpel
-[B]- There are still inappropriate (and even unbalanced!!!) calls to
- safe_setuid_grab() and safe_setuid_drop() in the game. Thanks Neil
- for pointing out those in the macro save commands. There are so many
- places that I have to look at, but I'm trying... -- pelpel
-[I]- Better (hopefully) object identification screen
-
-28/07/2002
-[m]- Added safe_setuid_grab/safe_setuid_drop to all the functions that
- access files in the lib directory. I did so even for the game
- initialisation, knowing that it's very unorthodox. This is because
- I found some of them in the init[12].c. There's no other sure ways
- to keep them from messing multiuser installations. -- pelpel
-[m]- Added makefile.dos, which is a copy of makefile (now), in order to
- prevent overwriting accidents. Ideally, 'makefile' should be in the
- .cvsignore, so that every developper can feel at ease with his/her
- own preferred environment -- pelpel
-
-01/08/2002
-[P]- New corruption system, savefiles are compatibles but you will loose
- all your corruptions.
- Most corruptions now have a good and a bad effect. Some corruptions
- depends of others, it means that you can only get them when you have
- the ones they depend of(i.e: Balrog Form need Balrog Wings, Balrog
- Aura and balrog Strength to work). Some corruptions can be mutualy
- exclusive. The list of corruption is totaly rewrote. They are more
- in-theme now.
-[B]- Perma curse cannot happen on randarts anymore
-
-02/08/2002
-[B]- Player could not pick up items from home if he did not have enough
- gold. -- Kusunose
-[B]- Traps of wasting wand dont mess up wands
-[B]- Dragon helms get resistances
-
-03/08/2002
-[B]- No races were allowed to be loremasters
-[B]- Fixed a bug in Character classes allowed, tahnks to Alex Wilkins
-[m]- Added Melkor to the gods docs.
-[B]- Spells cannot be cast while blinded or confused(execpt for a few)
-[G]- Wielding the One Ring has some ... disadvantages now ...
-[B]- Poor Melkor didnt had his altar generated in dungeons, while he is the
- only god for a use of an altar
-
-05/08/2002
-[m]- Improved the adventurer guide and added a section for macros to it
-[P]- All Udun spells are no more multi-school spells
-[P]- Reorganized the skill tree to remove the Misc skill tree. Alchemy is now
- under Magic, Antimagic is in Combat and Music in Spirituality
-
-07/08/2002
-[B]- Fixed the -1 activation power of some mage staves of spell
-[G]- Troll Glade/Wight Grave selection is now (usualy) based on the
- Combat/Magic skills level
-
-08/08/2002
-[I]- The game asks confirmation before learning a skill that can exclude an
- already known one
-[I]- When 'I'nspecting(or upon *id*) a fully *id* weapon/ammo the game will
- tell you the damage it would do if you used it(idea from Ey)
-
-10/08/2002
-[I]- 'U' power menu is now usable with repeat key 'n'
-
-11/08/2002
-[G]- The chance for combat item pseudo-ID now improves exponentially,
- just like V Warriors (combat skill 0 == plev 0, maxed == plev 50),
- while that for magic items improves slowly, just like V Rangers
- and Mages but with higher success rate (more than ten times as
- frequent as V Rangers) -- pelpel
-
-12/08/2002
-[B]- Added missing spell frequency to Fire golem. -- Kusunose
-[B]- Symbiant cannot pickup a hypnotized pet from a pile. Thanks to kobayasi
- for the patch. -- Kusunose
-[P]- Give Ents scrolls of satisfy hunger instead of some food. -- Kusunose
-[B]- Stats more than 18/220 were displayed incorrectly if linear_stats was ON.
- -- Kusunose
-
-13/08/2002
-[m]- Made chg_to_txt in files.c conditional, so that it won't be included in
- Windows, Mac and RISCOS ports (they don't call the function, so it has
- been dead code) -- pelpel
-[D]- Since Tome generated small levels once in three times when requested,
- which I think is too often, and in Z and Ey the chance is 1/5 and 1/10
- respectively, I lowered the chance to 1/6 -- pelpel
-[B]- The small_level option had the same effect as always_small_levels
- -- pelpel
-[O]- Removed CURSE_NO_DROP from ego items. Players want new curses, and when
- they get them they complain...
-
-14/08/2002
-[I]- Added avoid_shimmer efficiency option to suppress shimmering of terrain
- features, because I have had problems with them on really big screens
- -- pelpel
-[P]- Increased the modifier of the masteries for warriors
-[P]- New Warrior subclass, the Demonologist, spell enhanced warriors. They
- use the new Demon school and the renewed Demonblades, Demonshields and
- Demonhorns. Their spells enhance their fighting potential. They can either
- be seen as a force of good, fighting against demons with their own powers
- or as a force of evil fighting to bring corruption to the world.
-[P]- Sorcerors begin with a robe instead of a dagger
-[I]- Easy close is now slightly more intelligent in their handling of
- broken doors -- pelpel
-
-15/08/2002
-[O]- Ring/Amulet of Spell, cheap, early objects that can contain a spell
-[B]- Exploding ammo dont stack with normal ammo
-
-16/08/2002
-[B]- Ammo creation is bound to Arechery skill instead of player level
-[B]- Fixed a bug in related skills, when one increased a skills sometimes the
- related skills didnt increased
-
-17/08/2002
-[m]- Do not grab/drop permissions twice. Thanks to kobayasi for the patch.
- -- Kusunose
-
-18/08/2002
-[B]- Temporal stat drain no longer cancels normal stat drain. -- Kusunose
-
-19/08/2002
-[O]- Temple will now stock random spells from god schools, Magic Shop will
- only stock non god spells and bookstore will contain both
-[O]- Stores buyable list is now lua defined
-[B]- The amount of mana in each grid was always magical level. -- Kusunose
-[P]- Changed the formula to calc the player HP when using possession so that
- a higher possession skill will be prefered
-
-20/08/2002
-[B]- Extracted essences overwrote a weapon slot when inventry was full.
- -- Kusunose
-
-21/08/2002
-[I]- Ingame contextual help is on by default(it was before, but it was bugged..)
- It is now proccessed by lua, file help.lua and should be much easier to
- add new sections to than before. So all feel free :)
-[G]- Added town of Khazad-Dum (where 'exit' from Moria was) with nice Mining
- supply shop. -- fearoffours
-
-23/08/2002
-[I]- Contextual help for the birth screens too. Press ? when over a race,
- class, ... and it'll bring the specific help for it
-[M]- Monster ego wont start awake
-[P]- lost Souls now have see invisible, I know I'm far too nice :)
-[I]- Contexual help to skill screen, press ?
-[I]- Easy macro recorder! Just press $ and press a normal key sequence!
-
-26/08/2002
-[m]- Removed the autosquelch to replace it with a new Automatizer that should
- be much more powerful. It lacks a gui, but that should soon change :)
-
-28/08/2002
-[I]- The new Automatizer got a GUI :) It should be quite easy to grasp, you
- define rules to match and action to take. But it does allow very complex
- rules.
-
-27/08/2002
-[m]- Added updated class help documents. Removed extraneous ones. Amended
- links in birth.txt to reflect changes. Added appropriate entries to
- help.lua for contextual class help at birth. Thanks to Mef. -- fearoffours
-[m]- More contextual help: races and god selection at birth, rod tips, rods and
- trapping kits. -- feaoffours
-
-29/08/2002
-[G]- Added new god quest. Given at random time by your god, you have to retrieve
- a piece of a relic generated at a random level of a randomly places dungeon.
- More than one of these quests may be given (currently up to 4), though only
- if you complete previous quests. The relic is only generated once in each
- dungeon, so look carefully for it. Diving won't help you. -- fearoffours
-
-31/08/2002
-[P]- New Water spell: Vapor, it create a low damage wide radius short lasting
- cloud of water. It is designed to be a cheap attack spell for annoying
- critters. Beware, random spellbooks & inscribed objects spells will "morph"
- to other ones, sorry, unavoidable
-
-03/09/2002
-[B]- Fix mushrooms stacking for the maggot quest
-[m]- Fix birth.txt crash -- fearoffours
-
-04/09/2002
-[O]- Scythes of Slicing are now vorpal, rarer and deeper
-
-05/09/2002
-[G]- Added the fireproofing quest. Visit the Mage tower in lothlorien to get the
- quest, bring back something for the mage, get books fireproofed in return.
- -- fearoffours
-
-08/09/2002
-[I]- Updated the forgotten IBM pseudographics, based on my unknown work for
- Pern 4.1.2. Also added an X11 BDF file so that it can be used on
- the three X ports -- copy graf-ibm.prf to font-x11.prf in your user
- directory (i.e. ~/.tome) and set the font of main window to the font
- made from lib/xtra/ang16.bdf. Instruction for installing new X fonts
- should be found in the bdftopcf, mkfontdir and xset man pages.
- -- pelpel
-
-10/09/2002
-[I]- Current location(town, level, ...) is show in orange when about to recall
-
-17/09/2002
-[m]- Updated skill docs, thanks to lemming
-[m]- More minor help file updates. thanks mef and Chris Hadgis
-
-21/09/2002
-[P]- Mindcrafters gets esp even after level 40
-
-22/09/2002
-[I]- You can press $ at object destruction prompt to automaticaly create a new rule
- for the Automatizer about the object being destroyed
-[B]- Casting "Disperse Magic" when spell level is 20 or more produced a lua
- error. -- Kusunose
-[m]- Reformatted the makefile.WHICH file. Do we really need this file anymore?
- other variants get by without it, I don't really think it's needed...
- (takkaria)
-[m]- Reformatted the todo list, removed some entries which have been done.
- Also added a section for stuff which I will do (one day). (takkaria)
-[m]- I've reformatted and reorganized a fair bit of notes.c; I've made stuff
- less hacky and made the function which writes notes to file use
- my_fputs()... Also replaced some hardcoded buffer sizes with sizeof().
- (takkaria)
-[m]- Removed hardcoded buffer sizes in wizard1.c. (takkaria)
-
-23/09/2002
-[M]- Farmer maggot quest provides a better reward, thanks to Revanant Morituri
- and Wil Hunt for the idea
-
-25/09/2002
-[B]- The centre player option failed to do so while running. Thanks Neil
- Stevens for the patch. -- pelpel
-[B]- Random Artifact arrows should now stack properly. -- wilh
-[B]- Mindcrafters lost their ESP at level 40. Now they have it permanently
- at that level. (p_info.txt) -- wilh
-[B]- Above bug was supposed to be skill level 40, not clvl 40. Fixed. :)
-
-28/09/2002
-[I]- Macro-patch from Mogami, now the macro prf files are portable between Windows,
- X11 and Mac. It also shows readable triggers like: \[shift-F1] and such
-
-29/09/2002
-[m]- Added .cvsignore to the src directory to prevent makefile overwriting
- accidents from happening. Currently it excludes makefile (developers
- are expected to update platform-specific makefile if s/he indents to
- make permanent changes to them), tome, tolua, TOME.EXE and TOLUA.EXE.
- -- pelpel
-
-01/10/2002
-[G]- Alchemy totaly changed! Thanks to John Gilmore for the patch! It has now entered
- cvs to begin being tested and "balanced" ;)
-
-05/10/2002
-[P]- Symbiotic power changed to be bookless
-
-06/10/2002
-[P]- Available skills to leanr via random quests are defined in s_info.txt
-[P]- Trying to mimic when already mimiced(with the skill) will turn you back to
- normal form
-[O]- All objects now have a description, thanks to Konijn
- When identifying an item you can then press 'I'nspect to check it. It si most
- usefull for scrolls & such, they tell you what exactly they will do
-[B]- Fixed a bug that made mage staves very costy
-
-07/10/2002
-[I]- Replaced font-ibm.prf, graf-ibm.prf, font-win.prf and font-mac.new (a
- font-mac.prf replacement that has IBM-like pseudographics definitions)
- with program-generated ones, hopefully up-to-date with recent changes
- in info.txt files -- pelpel
-
-11/10/2002
-[I]- Unusable skills do not show anymore on the skill screen
-
-17/10/2002
-[I]- New option to not have the equipment/inventory windows move items around
- when a prompt ask for an item. Thanks to John Gilmore
-[B]- Fix a bug of wands in store
-[B]- Fix an old spelling error: "droped" not "dropped" -- Neil
-
-18/10/2002
-[O]- Behold! The new Grand Scheme For Wands, Staves and Rods!;)
- Now all sticks in the game use the same system as the spells. The unified
- spell system could we say ;)
- What does it changes? sticks should now be usefull, jsut as spells are.
- For example a wand of manathrust is not to be laughed at.
- Hw does it work? 'I'nspect the stick you want to know about you'll see
- he details, each stick gets a spell and a base level. The base level
- means the spell will be cast at that level if you have 0 in the
- Magic Device skill. If you have Magic Device it increases the level.
- Works a bit like Spell-power for the spells.
- Also the distinction of wands/staves is tenuous now, wands are attack
- stuff and staves not but wands can sometimes NOT be targeted spells
-
-20/10/2002
-[P]- Yavanna Kementari as a new Vala, protectress of nature. Along with her
- priests, the Druids
-
-21/10/2002
-[m]- Updated symbiant helpfiles including full list of their new bookless spells
- in m_symbio.txt -- fearoffours
-
-23/10/2002
-[I]- Recording cmovies is now working on a microsecond timeframe, much better looking
- Let's just hope that silly systems know gettimeofday()
-
-26/10/2002
-[m]- Introduced a performance measure for process_world_hook, which I suspect
- is causing slow movement problems in the reduced map mode. Please read
- the comment in process_world() [in dungeon.c] for alternative solutions.
- -- pelpel
-
-27/10/2002
-[m]- Changed every instance of "essense" to the correctly-spelled "essence".
- Update your macros. -- neil
-[M]- Changed "The Balrog of Moria" to "Durin's Bane". Less of a mouthful, and more
- in-theme -- fearoffours
-[M]- added the "spirits". They are the inhabitants of the void. They're nasty.
- -- fearoffours
-
-28/10/2002
-[P]- Typo in Druid description: Kemenari -> Kementari. --fearoffours
-[B]- Fixed bug where ironman_rooms would give you the number of random quests
- you played last time, instead of zero. -- neil
-
-29/10/2002
-[D]- Added SPIRIT flag to The Void, so that Spirits are actually generated there now
- -- fearoffours
-
-02/11/2002
-[P]- Subraces can now have skill mods
-[P]- Spells bound to two or more schools now require at least one point in
- each of the schools to be used
-[m]- Trimmed down the size of chardumps(removed uselessness from object
- descriptions)
-
-05/11/2002
-[I]- Obvious object flags will show up when 'I'nspecting items when they are
- only identified(no more need for *id*). Obvious flags are like acid
- resisatnce on an armor of resist acid and such
-
-06/11/2002
-[P]- New skill, Stunning-blows, a haftedmastery subskill, just like critical
- hits is a subskill of swordmasery. It requires a hafted weapon > 5 lb
-[O]- Activations are now a_info/k_info/e_info definable with a: lines
- You can do a:HARDCORE=NAME where NAME is an activation name
- that is hardcoded in the C source.
- Or a:SPELL=Name where Name is a "spell" name as defined in the unified
- spell system(the first defined spell(index 0) cannot be used this way
-
-07/11/2002
-[B]- Allow non-artifact, non-ego items with activations be activated. -- neil
-[I]- Cause of death is now shown in chardumps
-
-08/11/2002
-[m]- Added descriptions to Totems, removed redundant need to identify them.
- -- neil
-[G]- Yavanna's followers now have a God quest. -- fearoffours
-[m]- Help docs for Yavanna and Druids, thanks Mef and Massimiliano Marangio.
- -- fearoffours
-
-09/11/2002
-[M]- Only gain exp from pet kills, not from every monsters, when using Monster
- Lore skill
-
-10/11/2002
-[m]- Yes, more help updates. In tome_faq.txt and TANG.txt I added links to
- skills.txt, magic.txt, birth.txt and gods.txt where appropriate. Removed
- two references to Pern that got missed in tome_faq.txt.Added a
- c_priest.txt file for contextual help at birth when choosing a main class.
- Corrected typo in r_info (SPirit became Spirit). -- fearoffours
-
-11/11/2002
-[I]- CTRL+] to save an html screenshot anytime(ie: to preserve the current
- message)
-[P]- Necromancers start with corpse preservation skill
-
-13/11/2002
-[B]- Don't let the Maggot sling be generated randomly. -- neil
-
-15/11/2002
-[m]- Added a new TERM_XTRA call, TERM_XTRA_GET_DELAY which should return the
- time in microseconds. What time exactly isnt meaningfull but it must be
- usable to compute the length of time an action takes.
-[I]- Thanks to the new TERM_XTRA_GET_DELAY the cmovie code is now cleaner
- and should work fine:) Windows and unix platforms should now be able
- of microsecond resolution cmovies!
-[m]- Made all the socket code into z-sock.[ch] and wrapped it into a
- virtualizing layer so that the rest of the code can use it independantly
- of the implementation. Currently unix and windows sockets are supported.
-
-16/11/2002
-[B]- Prevent the automatizer from treating "good" bows as "average" -- neil
-[B]- Prevent earthquake damage for characters with wraithform, and prevent
- some of the damage for characters with semi-wraithform -- neil
-[B]- Fix spelling of Book of Teleportation -- neil
-
-17/11/2002
-[P]- New Meta/Conveyance Spell: Tracker, it will track the last teleportation
- that happened on the level and teleport you to its destination
-
-18/11/2002
-[G]- The Old Mage in Lothlorien will now fireproof staves or scrolls as well as
- books, making it profitable for non-spellcasters. Currently he has enough
- errr 'fireproofing material' for 3 books or 4 staves or 12 scrolls, or a
- combination of these. Check fireprof.lua for the code. -- fearoffours
-[I]- Skills that have sub-skills in which you do not (and cannot) have points
- no longer display the redundant +/- sign. thanks lemming for the code.
- -- fearoffours
-[m]- Lots and lots of itsy-witsy help file updates. Stunning-blows, other
- references to Pern, more links to other files... -- fearoffours
-
-19/11/2002
-[m]- Compress the grid in the character dump, eliminating blank lines and only
- showing lines without '+'s for the resistances and sustains page -- neil
-[m]- Show the Mathom-house contents in the character dump -- neil
-
-21/11/2002
-[O]- When 'I'nspecting objects you'll know how you found them
-[B]- Magelock cannot override permanent walls(or walls for taht matter) and works
- only in LOS
-
-22/11/2002
-[O]- 3 new artifacts of Gothmog, regrouped in an item set
-[m]- Cleaned up the notes code a little. (takkaria)
-[P]- Summon skill doesnt caerte drops for partial summons
-[P]- Summon skill doesnt work in an antimagic field
-
-23/11/2002
-[B]- Automatizer should not treat enchanted ammo and tools as average, either.
- -- neil
-[B]- Fixed the bug that allowed to use unallowed gods
-[P]- Lost souls start with many satisfy hunger scrolls, I'm really too nice...
-[M]- Themed townspeople! In Lothlorien and GOndolin you find elven people and
- dwarven in Khazad-dum
-
-24/11/2002
-[m]- Display in the dump how interesting items were found -- neil
-[B]- Two-handed artifact weapons now act as such -- neil
-[O]- Darksword antimagic field now scales on the antimagic skill
- So using one with 0 in the skill is not worth much
-[m]- DESTDIR support in makefile.std -- neil
-
-25/11/2002
-[B]- Don't mark items as store bought until they are bought -- neil
-[O]- Distinguish stolen items from bought items -- neil
-[m]- main-net.c display module which redirects display over the z-sock layer
- and thus over any ip network to allow to create very lightweight terminals
- to play ToME everywhere. This is still experimental
-[B]- Don't show Gondolin twice in the dump -- neil
-[O]- Cut down the price of Spectral weapon given their .. usefullness
-[I]- Fixed the bug that told you you could buy more items than you really could.
- At least when using auto_haggle. Poor sods that dont use it shall burn
- in hell
-[I]- Damage info is displayed for items that are only identified
-
-26/11/2002
-[G]- OK the god quest is a little easier now, as you're told the dungeon is to
- the north/south and east/west of you. -- fearoffours
-[G]- Having autosquelch on will now not affect the essence in the fireproof
- quest. And the mage gives a warning about the fact it may be easy to
- destroy it too. -- fearoffours
-[B]- Fixed the incredible townspeople generation rate
-[B]- String fixes from lemming -- neil
-[B]- Don't print discomfort messages when examining and comparing weapons -- neil
-[I]- new <state> function to the automatizer to detect identified state
-[I]- Automatizer rules are automatically apply upon exit of the screen or
- autogeneration of a rule with the 'k' command
-
-28/11/2002
-[B]- Add experimental support to the automatizer for marking "bad" rings and
- amulets -- neil
-[m]- Distinguish average, disarmed, and empty chests in the automatizer -- neil
-[B]- Let summoners summon again (patch by masmarangio) -- neil
-[B]- Remove duplicate warning of an empty quiver (patch by masmarangio) -- neil
-
-29/11/2002
-[O]- Let Demonshields and Demonhorns be treated as armor -- neil
-[m]- Can include string terminators in help file tags i.e:
- *****foo.txt*7[see:\] it works;)]
-[m]- Can save screenshots to help file format, this is only usefull to
- documentation writters and thus the option only appears when wizard mode
- is activated. It uses the new verbatim mode &&&&& at the line beginning
-
-01/12/2002
-[m]- The helpfile typo corrections just keep coming! Added Udun school help,
- and demonologist school help, thanks Mef and masmarangio. -- fearoffours
-[m]- Some more spelling errors corrected. Updated warriors skills in the
- help files -- masmarangio
-
-02/12/2002
-[m]- Skill updates for more character classes in the help files. -- masmarangio
-[m]- Automatizer tutorial added. -- fearoffours
-[G]- God quest relic is now inscribed to prevent automatizer 'accidents'
- -- fearoffours
-
-02/12/2002
-[O]- Wands/staves are now described this way: a wand of foo[bonus|max]
- Bonus is the bonus spell levels you get, and max is the limit of spell
- levels for that wand. It means even if you have Magic Device at level 50
- you cannot get a level 50 spell from a wand with max 30. Naturally the
- max(and bonus) increase with the depth you find the wand/staff :)
-[P]- Players in monster form can now use barehanded combat, instead of
- reverting to monster attacks. -- neil
-[O]- Fix and reduce the wand and staff pricing -- neil
-[B]- Make the automatizer work independently of the player's body -- neil
-
-03/12/2002
-[m]- Clean out some unused variables and some other valid warnings -- neil
-[B]- Don't spoil things in the dump -- neil
-
-04/12/2002
-[m]- Updates of the character races help files -- masmarangio
-
-05/12/2002
-[B]- Maiar can't choose a god anymore -- masmarangio
-[I]- Added a message if you don't have powers but press 'U' -- masmarangio
-
-06/12/2002
-[B]- Staves are properly fireproofed now. -- fearoffours
-[m]- God quest gets more clues to the location, and they're printed in the
- 'Ctrl-Q'uest screen. I'm too nice. -- fearoffours
-
-07/12/2002
-[I]- Added the extended command #quest (or #Q for short) to get quest list
- because some prts catch the CTRL+Q combo
-[m]- Added contextual help for wands/staves, also added a section in the help
- about it. --fearoffours
-[m]- Some small help file updates (Muar becomes Durin's Bane) -- masmarangio
-[m]- Added full mindcrafting spell info in the same form as other schools of
- magic. Removed help on the Music skill, as this will not be included for
- 2.1.0. Added some other help stuff. -- fearoffours
-
-08/12/2002
-[B]- Correct Damage/Round display for bare and bear combat. -- neil
-[m]- Help now has an alphabetical index! -- fearoffours
-[B]- Melkor wants you to sacrifice corpses, not raw meat -- neil
-
-09/12/2002
-[B]- Fixed an off-by-one error in loadsave.c that caused savefile corruption
- if the number of monsters or objects saved was maximal -- masmarangio
-[m]- Removed help on the Druidistic skill since Druids are normal Priests now.
- Minor changes to the skill example to match human warriors.
- Updated Option help file, some other minor changes -- masmarangio
-[O]- Allow Wooden Rods to be sold at the Magic Shop -- neil
-
-10/12/2002
-[B]- Corrected the price of enchanted boomerangs and instruments. -- masmarangio
-[B]- Corrected the used multiplier while 'I'nspecting ammo.
- Fixed the damage of throwing items / boomerangs -- masmarangio
-
-11/12/2002
-[I]- 'Compare weapons' works only with melee weapons, item selection changed.
- Expanded the description of a god at birth. -- masmarangio
-
-12/12/2002
-[m]- Removed Tank Points and firestones. -- neil
-[m]- Removed PERNANGBAND monster flag and renamed as many Pern monsters,
- artifacts, and other references as I could find -- neil
-[M]- Firebirds (formerly firelizards) and Thunderlords are B, not d and D
- -- neil
-[B]- Fix some artifact activations -- neil
-[B]- Fixed (temporarily) item activation and description. Some items could
- activate for the unified activation, and display the other activation, so
- further changes are needed. -- masmarangio
-[I]- Removed the silly 'You are shooting with a flute' message. -- masmarangio
-
-13/12/2002
-[m]- Renamed instruments in luckspoi.txt, comment changes -- masmarangio
-[I]- Added OBJ_FOUND_SELFMADE for items that were created by the player.
- Alchemist should also use it (not changed yet). Replaced the plain
- description "in the Town" for items fond on the surface -- masmarangio
-
-14/12/2002
-[O]- Monster traps are disarmed by GF_KILL_TRAP and GF_KILL_DOOR -- masmarangio
-[m]- The description of ACT_DEST_DOOR includes traps, better description of
- deactivating music instruments. -- masmarangio
-[M]- Increase Thunderlord rarities -- neil
-
-14/12/2002 -- T.o.M.E 2.1.0 aka "No Surrender, No Retreat"
-
-14/12/2002
-[B]- Artifact spoiler was messed up
-
-15/12/2002
-[m]- some small help files updates (Melkor, GoI, races) -- masmarangio
-[B]- some Orc Cave crashes fixed -- masmarangio
-
-16/12/2002
-[B]- Fixed the Mushroom Quest: mushrooms are taken before creating the rewards,
- and these are created even with a full inventory -- masmarangio
-[B]- Grammar fix for breathing messages -- neil
-[B]- Changed order of level feelings, removed unused feelings. -- masmarangio
-[B]- A Rod of Drain Life is needed for vampiric artifacts instead of the Wand.
- Renamed one ego light of Boldness (now of Fearlessness). -- masmarangio
-[m]- Updated and reformatted the essence spoiler. -- masmarangio
-
-18/12/2002
-[O]- Removed the double pval for Mana-items (40%)(+2). The description of
- Mana and Life items is now with percents. -- masmarangio
-[m]- Small updates to m_demono.txt -- fearoffours
-[m]- Added mindcraft in magic.txt and a paragraph in m_mindcr.txt -- masmarangio
-
-19/12/2002
-[B]- Adjusted the melee damage shown in the status screen. -- masmarangio
-[B]- Spelling errors corrected. Thanks to markrax -- masmarangio
-[B]- Fixed bashing the trigger doors in the Thieves Quest -- masmarangio
-[B]- Allow Amulets of the Magi and *Defender* weapons to be sold -- neil
-[B]- Fix alchemist creation of ego staves, etc. (patch from "oops") -- neil
-[B]- Don't let gold into the inventory -- neil
-[B]- Temple doesn't want unblessed edged weapons -- neil
-[B]- Properly handle obvious flags on non-*ID*d objects (fixes things like
- resistances grid and selling Blessed weapons in the temple) -- neil
-[B]- Squelch at different times, to avoid destroying the wrong items -- neil
-
-20/12/2002
-[m]- Removed some compiler warnings. Thanks to markrax -- masmarangio
-[I]- Work / fixes in spoiler creation (items, essences, menu) -- masmarangio
-[B]- Automatizer: <symbol> works with graphic modes -- masmarangio
-[B]- Fixed pval3 for artifact staves and wands in apply_magic -- masmarangio
-[m]- Corrected some typos and some comments. Thanks to markrax -- masmarangio
-[m]- Spell description edit -- neil
-[B]- Exclusive skill fix (patch by markrax) -- neil
-[B]- Yet more copyediting by markrax -- neil
-
-21/12/2002
-[m]- Corrected most of the typos found by vrak. -- masmarangio
-[B]- Fixed a display bug when passing through walls, thanks jup
-[B]- Copyediting of lib/edit/* -- markrax
-[B]- Copyediting of monster description books (lib/file/book-1[0-9].txt)
- -- markrax
-[B]- Copyediting of misc. files in lib/file/ -- markrax
-[B]- Copyediting of most files in lib/help/ -- markrax
-[B]- Copyediting and description tweaks to tables.c -- markrax
-[B]- More minor copyediting -- markrax
-[m]- Minor externs.h code cleanup, remove dups -- markrax
-[B]- Let keypad 5 key work in X11 target -- markrax
-[I]- Add columns, tweak UI in character info sheet -- markrax
-[I]- Updated the artifact spoiler creation -- masmarangio
-[m]- Corrected some errors in a_info.txt -- masmarangio
-[B]- Display the arm slot when not wearing a two-handed weapon -- neil
-[I]- Cleaned up some code in the character info sheet -- masmarangio
-[B]- Fix drop message for junk artifacts (patch by jup) -- neil
-
-22/12/2002
-[m]- Copyediting of lib/edit/k_info.txt -- markrax
-[m]- Copyediting of lib/edit/al_info.txt -- markrax
-[m]- Added ENGLISH.txt file with ToME textual conventions -- markrax
-[m]- Standardized on "Middle-earth" spelling -- markrax
-[m]- More grammatical fixes (mostly "it's") -- markrax
-[m]- Removal of many Americanisms, grammatical fixes -- markrax
-[O]- Centered Map around Minas Anor -- masmarangio
-[I]- Allowed the user to abort when asked to engrave on a grid. Also, don't
- let the player engrave on a grid with no mana. Thanks to Pav of
- angband.~.cz for this patch. -- takkaria
-[m]- Updated and relocated style guide -- markrax
-[O]- CURSED two items with HEAVY_CURSE, thanks jup -- markrax
-[O]- CURSED Ring of Durin (had HEAVY_CURSE), thanks jup -- markrax
-[B]- Let *Identify* of your pack work the same as an individual *Identify*
- for the purposes of alchemists -- neil
-
-23/12/2002
-[I]- Updated the broken spell spoiler creation (works for the bookless powers).
- LUA schools should be added -- masmarangio
-[m]- Parchment titles capitalised. Spacing of artifacts and some americanisms
- and errors in a_info.txt, tables.c, and other files corrected.
- -- masmarangio
-
-24/12/2002
-[O]- Added description from Sangband to the Shield of Gil-Galad -- masmarangio
-[B]- tried to prevent printing of alchemy items in spell spoiler -- masmarangio
-[B]- Fixed two alchemy bugs: Same sval for Rings of Critical Hits and the Ring
- of Durin. Corrected the sval of Rings of Constitution -- masmarangio
-
-25/12/2002 - Mery xmass!
-[P]- Boulder throwing skill :) For Ents .. Don't get used to it as I don't know
- if I'll let it in
-[B]- Destruction cannot kill quest monsters
-[B]- The lost temple (god quest) dungeon really cannot be generated in
- inaccessible places now. -- fearoffours
-[I]- Unidentified objects are marked in slate(the inventory letter)
-
-26/12/2002
-[m]- Updated the skill gain in skills.txt, corrected some spelling errors.
- Added Boulder-throwing to the help files -- masmarangio
-
-27/12/2002
-[B]- Fixed note file problem under windows -- masmarangio
-[m]- Corrected some americanisms and spelling errors -- masmarangio
-[B]- Fixed an alchemy error with fireproofed staves, removed tabs from c_prt
- calls -- masmarangio
-
-28/12/2002
-[P]- Added dynamic subrace. This means that "things" in the game can somewhat
- change your subrace. This is used by the 3 new Vampire corruptions, which
- when combined will permanently turn you into a full blown Vampire.
- The Vampire subrace has been removed, it might come back as a template for
- the corruptions, or not. All others undead subrace will have the same
- fate. This means that soon you'll be able to turn into an undead rather
- than start as one. The penalties will be tweaked too so we don't end up
- with every char being an undead.
-[B]- Fixed a branding bug that allowed to modify artifacts and ego-items.
- -- Kusunose
-[m]- Updated corruption_spoiler_generation (includes index tags, don't show the
- Lose message for not removable corruptions) and corspoil.txt -- masmarangio
-
-29/12/2002
-[I]- Stores/homes inventory letters are colored just like inventory/equipment
- thanks to Pav
-[m]- Music system performance improvement -- neil
-[m]- Added help on pets to dungeon.txt and some clarification about Spell-power
- affecting only the 11 primary schools of magic. -- fearoffours
-[m]- Added to Spell-power the other affected Schools (Udun, Demonology, Gods),
- as well as naming Sorcery in the Udun School help file -- masmarangio
-
-30/12/2002
-[O]- init1.c: added two times OBJ_FOUND_SPECIAL -- masmarangio
-[m]- al_info.txt: removed double acid essences in amulet of resistance, grouped
- entries for ring of extra attacks, renamed some entries -- masmarangio
-[m]- wizard1.c: Added IS_CVS to header, create artifacts at 25, not 35, added
- index in Essence Spoiler. essences.txt: new spoiler file -- masmarangio
-[m]- cmd1.c: removed a compiler warning. caves.c: simplified a test -- masmarangio
-[m]- Info on spell-power and multi-school-spell interaction, typo fix in
- m_mindcr.txt -- fearoffours
-
-31/12/2002
-[B]- object2.c: Initialised Artifacts with LEVELS in apply_magic -- masmarangio
-[O]- generate.c: OBJ_FOUND_MONSTER for final artifacts / objects -- masmarangio
-[B]- al_info.txt: Svals of Ring of Sustain Con and Dex exchanged -- masmarangio
-
-01/01/2003 - Happy new year !!!
-[B]- store.c: Fixed bug with prices of wands, indentation -- masmarangio
-[I]- Better fountain command interface. -- Kusunose
-[B]- al_info.txt: Added Ammo of slay animal. Amulet of regeneration with new
- sval. Ego Weapons of Life added -- masmarangio
-
-02/01/2003
-[B]- find_ignore_stairs, set or unset, failed to handle some quest related
- stairs properly. -- pelpel
-[B]- cmd7.c: Fixed bug with TR4_ART_EXP not set correctly -- masmarangio
-[O]- cmd7.c: Added OBJ_FOUND_SELFMADE for created items/artifacts -- masmarangio
-[B]- Don't allow a change from weapon combat if a cursed weapon is wielded
- -- neil
-[m]- wizard1.c: Changed position of IS_CVS, added double ego items in essence
- spoiler. essences.txt: reflects this -- masmarangio
-
-03/01/2003
-[B]- wizard2.c: Some bound checks to prevent crashes -- masmarangio
-[B]- cmd7.c: Fixed reduced capacity of ego rods -- masmarangio
-[B]- object1.c: Added a "It cannot be destroyed" msg in place of "it has blah%
- chance of breaking upon hit" for artifact ammo. thanks lemming for fix
- -- fearoffours
-
-04/01/2003
-[O]- e_info.txt: Added indestructible and cursed amulets to simplify alchemy
- -- masmarangio
-[B]- cmd7.c: Allow creation of artifacts from single ego items; don't change
- artifacts and double ego items if you don't wish to create an artifact.
- Simplified amulet handling and other code fragments -- masmarangio
-[m]- QUITING-> QUITTING, COMBINAISON->COMBINATION: two cases of typos
- that I've long been aware of... -- pelpel
-[D]- Changed the marker(#172) to look like open floor(#1) -- masmarangio
-[B]- Updated Amulets and Rings in defines.h / defines.txt -- masmarangio
-[B]- al_info.txt: Amulet of Adornment without pval. cmd7.c: skill >= 25
- needed to create artifacts, not > 25 -- masmarangio
-[B]- Warning about leaving a trap detected zone don't cost energy -- masmarangio
-
-05/01/2003
-[m]- First update of commands.txt -- masmarangio
-[B]- spells2.c, self_knowledge(): f4 through esp were not initialised before
- referenced. -- pelpel
-[B]- cmd7.c, extern.h: changed the variable "tocreate" in alchemist_items_check()
- from bool to int -- masmarangio
-[B]- xtra1.c, apply_flags(): Added bounds checks for antimagic. -- pelpel
-[B]- xtra1.c, apply_flags(): changed the type of bit field variables from s32b
- to u32b, for obvious reasons. -- pelpel
-[G]- Princess now offer 3 reward and the player selects one
-
-06/01/2003
-[B]- cmd7.c: Fixing three bugs in Alchemy: Extracting from double ego items and
- from stacks of staves, as well as generating all leeched empty items.
- Problems may still arise when you leech a stack of objects from the floor
- and essences get dropped over them. Boomerangs can be enchanted now.
- -- masmarangio
-[B]- generate.c: Moved the room creating loop (fix from 15/12). Something better
- should be used than this brute force method -- masmarangio
-[B]- Minor spelling and grammar fix -- neil
-[B]- Changed the type of dungeon_flags to u32b, as in types.h -- masmarangio
-[B]- cmd7.c: Instruments can be enchanted now. -- masmarangio
-[G]- Applied the Artifact Activation patch -- masmarangio
-[B]- Fix activations -- neil
-[G]- Alchemists can no longer make artifacts granting Precognition or Immunity
- to Nether -- neil
-[B]- Avoid some bad periods in monster descriptions -- neil
-
-07/01/2003
-[P]- p_info.txt: Updated, compacted history-chart. Trolls, Orcs, Elves with new
- entries, some other small changes. Deleted the unused races -- masmarangio
-[m]- Added Activations to essence spoiler, new help file created -- masmarangio
-[B]- Reset the pval of extracted rings and amulets, prevent creation of cursed
- empty items -- masmarangio
-[B]- Make ego staves / wands of nothing extractable, disallow empowering of ego
- items / artifacts that are not wearable (e.g. staves) -- masmarangio
-
-08/01/2003
-[I]- squeltch.c: Ask for overwriting rules file and display saving message in the
- same box -- masmarangio
-
-10/01/2003
-[m]- Added a (conservative and preliminary) port to OS X + gcc + makefile.
- The four *.icns files are faithful conversions of the traditional Angband
- icons that have long been used by Mac ports, even before Ben.
- makefile.std itself is not updated. Please read comments in main-crb.c.
- -- pelpel
-[m]- Module support. It means that people can write ToME "modules" which will
- go in lib/mods and contain "variants" that use the same game engine but
- different lib/foo files. The module selection screen only appears when
- the game detects more than one module. The new -Mfoo command line option
- allows to bypass module selection
-[m]- 'Death' Message of a Nazgul: Choose pronoun 'she' or 'he' according to the
- sex -- masmarangio
-[G]- God quest wont trigger for Lost Souls until they reach the surface
-[m]- Turn off some ToME things when using a non-ToME module -- neil
-[B]- Fix the monster description messages even better -- neil
-[B]- Better honor the NO_TARGET flag -- neil
-[M]- Give Farmer Maggot the NO_TARGET flag -- neil
-[B]- Fixed (hopefully) the wrong activation bug -- masmarangio
-[m]- (Mac, Carbon) Modernised file system interface (currently only turned on
- for Mach-O Carbon port), improved Mach-O Carbon support, incorporated my
- 32x32 tiles support code for V3.0.2, and more gcc porting note -- pelpel
-[m]- Let the player see which game module he selected in the character
- selection screen -- neil
-
-11/01/2003
-[B]- Fixed one wrong sval in al_info.txt -- masmarangio
-[m]- Added makefile and some auxiliary files for developer CD gcc compilation
- of Carbon port -- pelpel
-[m]- (OS X Carbon) Changed the format of graphics tiles from PICT in the
- resource fork to plain PNG files, only for gcc compilation at the moment
- -- pelpel
-
-12/01/2003
-[B]- Alchemy: The song of music instruments, the type of explosive ammo and
- the level of sticks are not changed by enchanting / leeching the items.
- -- masmarangio
-[m]- Expanded the description of Antimagic, small index updates -- masmarangio
-[I]- wizard2.c: Initialised the lua command (^A >) with the help file index
- generation -- masmarangio
-[m]- (OS X Carbon) Cleaned up my recent updates. It's fairly stable now.
- To do: move to .nib based menu/dialogues, pulling sound out of resource
- fork, and better sound code. -- pelpel
-[B]- cmd7.c: Allow extraction of the charges of Sticks of Plenty -- masmarangio
-
-13/01/2003
-[m]- preliminary SCANDIR support for gcu, gtk, xaw borrowed from x11 -- neil
-
-14/01/2003
-[m]- Modules can control the number of levels over the player level a skill
- may have allocated now, using max_skill_overage. -- neil
-[m]- HOOK_FIRE added -- neil
-[m]- Changed the help files about vampires; classes, races etc. are listed
- in alphabetical order in birth.txt -- masmarangio
-[m]- Races & subraces get a starting object list in p_info, less hacks in birth.c
-[I]- Automatizer can now be used to auto-inscribe items, thanks to jepler
-[I]- Automatizer can now display rules in a more english like maner, xml mode
- is also available, switch by pressing 'x', thanks to jepler
-
-15/01/2003
-[G]- Summoner can extract totems from skeletons / carapaces. -- masmarangio
-[B]- Trap of Wasting Wands (affects also Staves) change the Wand/Staff to the of
- nothing type. Deleted SV_WAND(STAFF)_NASTY_WAND(STAFF), since in the new
- stick system the worthless sticks don't have the first svals -- masmarangio
-[B]- Fixed a fountain filling bug, simplified the item_tester -- masmarangio
-
-16/01/2003
-[B]- (Mac, OS X) Tilewidth/height code ceased to work because menu API started
- to return Unicode crap instead of holy ASCII -- pelpel
-
-17/01/2003
-[m]- HOOK_EAT added -- neil
-[O]- New artifact: The Sling of the Thain -- neil
-
-18/01/2003
-[B]- empty chests are generated as known (i.e. they were opened) -- masmarangio
-[B]- do_cmd_rest flushes input if the player can't do so for some reasons
- and flush_failure is set.
- Note: flush() doesn't seem to work as it used to do... Any changes have
- been made to inkey, or some code touches its various control variables?
- -- pelpel
-[m]- (Gtk) Added support for the "bigtile" mode. Please start the game with
- "tome -- -w" if you don't like to see horrible glitches... This is not
- Gtk-specific problem by the way. Scrolling the map and hitting ^R fixes
- it too, if you prefer menu command -- pelpel
-[G]- Trees are now passable by wraith beings. Monsters that fly will pass trees.
- Dead small trees will be dead small trees. Monsters tunneling will also
- destroy trees
-[P]- Extra HP bonus(from quest, melkor, ...) is applied before sorcery penality
-
-19/01/2003
-[B]- (Gtk) Fixed problems with wide tile mode when it is used with backing
- store. Seems more like the problem is in z-term (it only updates every
- two columns of the dungeon map...), but it works now -- pelpel
-[B]- (Mac) The asynchronous sound player unlocked and released sound data
- without confirming its completion. Wrote an alternative implementation
- that holds data until a channel it is played is reused, to avoid using
- interrupt-time code (which is quite complicated business in 68K).
- Because this means that a fairly large amount of data can be locked in
- memory for a long time, I reduced number of channels used to
- 4 in Classic and 8 for Carbon -- pelpel
-
-20/01/2003
-[G]- Trees/grass can only grow one some terrains(yes that DO exclude lava;)
-[I]- z) slot is hidden until needed -- thanks to Scott Bigham
-[I]- Some cosmetic changes and improvements to char dumps -- thanks to Scott Bigham
-
-21/01/2003
-[B]- Monster traps: Changed the code so that the new wands and staves are
- functional in device monster traps. This is commented out with #if 0 since
- the code must be tested. Perhaps a lua solution is better ? -- masmarangio
-
-22/01/2003
-[B]- Deathmolds could use their racial power without spending a turn!
-[B]- 'U' powers didn't remove Disruption Shield
-[m]- (Mac, Windows) Added an in-game menu command to view current scoreboard.
- Taken from the latest [V] (Win port only there), minus the use of
- display_scores_aux, which I regard first-degree Mega-Hack -- pelpel
-[G]- Wielding the One Ring now has real disadvantages, you've been warned :)
- What ? I didn't mention what disadvantages ? Oh yes, I didn't.
-[G]- Bump required level and difficulty rating of Minas Anor quest, as the
- trees changes have made it just a little harder. -- neil
-
-23/01/2003
-[I]- Hopeless attempts to dig will be noticed to the player -- thanks to jepler
-[B]- Potions of Cure Water are no more extractable by Alchemy
-
-25/01/2003
-[P]- Bard class is back(was called Harper before) with a new Music skill.
- Instruments carries the spells, and they work a bit like Psi foci in
- psiband. An instrument (+2) can only play songs that are marked (I) or
- (II) not (III) or (IV)
-[B]- Ordered the music songs according to the needed pval, then level.
- Fixed the svals of artifact instruments, changing the Flute to a Harp.
- Added a better description of Bards. Please check it ! -- masmarangio
-
-26/01/2003
-[B]- An Alchemist can now fireproof spellbooks -- masmarangio
-[m]- Bard and Music docs are done. Please check em. -- fearoffours
-[B]- A possessor (the creature, not the class) can only possess whole
- corpses and skeletons, not pieces of meat -- masmarangio
-
-27/01/2003
-[B]- Make wielding more than one demonshield (or demonsword I suppose) work
- -- neil
-
-28/01/2003
-[B]- Possession something while encumbered to the point of having 0 mana
- allowed free use of body spells without failure
-[P]- Mana is now function of the Magic skill and either INT or WIS, whichever
- is higher
-
-30/01/2003
-[B]- Possibly the relic in the god quest couldn't have been generated.
- Wasn't me honest guv. -- fearoffours
-[G]- The lost temples for god quests now have harder monsters to make the piety
- gain rather more substantial and obvious I hope. Deeper monsters appear
- as player clvl increases. -- fearoffours
-[m]- Help file corrections on Music skill. -- fearoffours
-
-01/02/2003
-[B]- Some menus exits when 'e' was hit on some comapilation.
- Note: '\e' for escape is compiler dependant extension so do not
- use it. Thanks kobayasi for fix. -- Kusunose
-[B]- All known staves and wands are displayed as 'Globe of Light' in
- the Known Object list. Thanks kobayasi for fix. -- Kusunose
-
-08/02/2003
-[m]- Make HOOK_QUAFF take an o_ptr, and let HOOK_EAT return the identify success
- -- neil
-
-12/02/2003
-[I]- Useless but fun, when a wield monster takes damage instead of you
- the monster will be named. If you named it(with the #foo inscription)
-
-16/02/2003
-[B]- Chaging the melee style did not update bonuses. Thanks to kobayasi for
- the patch. -- Kusunose
-[B]- <sval> in automatizer worked even when the player was not aware of
- the object. It was possible to use this as a free ID. Thanks to
- kobayasi for the patch. -- Kusunose
-
-24/02/2003
-[B]- Cancelling the reward skill sellection could crash the game. -- Kusunose
-
-26/02/2003
-[I]- Boomerangs now display damage with 'I'nspecting, thanks to Scott Bigham
-
-27/02/2003
-[B]- Inspecting or Identifying something shouldn't infect you with the
- Black Breath -- neil
-
-28/02/2003
-[I]- Genocide and genocide like effects that require monster race now allow
- targetting of a monster to select the race. Gfx users can now correctly
- genocide :)
-
-01/03/2003
-[I]- d/s and g/p work in both home & stores. Pfft.
-
-02/03/2003
-[m]- Fixed a typo in The Dragon Helm of Turin Turambar -- WeZ
-[G]- Fixed the teleport-level ability of Deathmolds, so they
- can teleport out of a dungeon, instead of getting a
- message saying there's only air above them. -- WeZ
-
-04/03/2003
-[P]- Probability travel level teleport ability & teleport level spells
- wont work in some dungeon
-
-05/03/2003
-[G]- A new quest! An ultra ending! "Falling Toward Apotheosis"
- After banning Morgoth spirit in the Void, you can pursue him
- there to forever end the darkness. But beware, it is more than
- likely that you will die. But for the few that succeed, the fame
- will be great!
- Note: you can only do it if you choosed the way of Good and thus
- destroyed the One Ring. An evil ultra ending is planned and will
- come a bit latter.
-
-06/03/2003
-[P]- Dwarves get a bonus to axe mastery, as they rightfully should
-[O]- Cloak of Air. Generates an air bubble around you so you can breath.
- Just in case you need it ..
-
-08/03/2003
-[G]- Another new quest! An old mage in Minas Anor needs help, too. -- neil
-
-12/03/2003
-[B]- Non-enemy monsters now won't hold up victory in the Spiders and Library
- quests. -- neil
-[B]- Various Library quest fixes -- neil
-
-13/03/2003
-[O]- Lebohaum activation is now true to the original material..
-[P]- All mages start with 0.1 less mod to Sorcery. Specialists dont have sorcery.
- Runecrafters dont iether, nor Alchemists. Thaumaturgists do.
- Specialists also get a bit better Spell-power
-
-16/03/2003
-[I]- Only show enemies in the uniques list -- neil
-
-20/03/2003
-[m]- The various ?_info.txt files can now include otehr files with the <:file.txt
- command. This allows people to split up too big files
-
-23/03/2003
-[I]- X11 port can now do text selection copy&paste with the mouse, thanks to kieron
-
-27/03/2003
-[B]- Mage staves, rod tips, and magic tomes are now "good" items. This should
- fix the problem of Saruman, Sauron, and others dropping nothing but rods.
- -- neil
-
-28/03/2003
-[I]- Show "ironman_rooms" setting in the character dump -- neil
-
-29/03/2003
-[P]- The adventurer quest skill reward will now only provide a modifier of 0.3
- if you dont have the skill, but if you have it it will improve the modifier
- by 0.1 if it is below 0.5
-[I]- Automatizer rules now have an module attribute, defaulting to "ToME". The
- module name is case sensitive, as always. <rule module="ToME" name="Die"
- type="destroy"> will only destroy items when you're playing the ToME
- module. -- neil
-
-02/04/2003
-[B]- Fix grammar error pointed out by "JanaRaissa" -- neil
-[B]- Prevent instrument-wielders from firing things, as pointed out by
- "Chudus" -- neil
-[B]- Those who can breathe water or don't need to breathe at all should not
- drown in pools of water, as pointed out by "Zonk" -- neil
-[B]- Fix Rods of Simplicity for those who need it most, as pointed out by
- "Zizzo" -- neil
-
-03/04/2003
-[O]- Dragon Scale Mail now has more options for egos and random artifacts
- -- neil
-
-04/04/2003
-[B]- Fix god quest temple placement error pointed out by "Fringe Worthy"
- -- neil
-
-05/04/2003
-[I]- Somewhat nicer char screen, thanks to lemmings(I think ;)
-[B]- No more (broken) pattern vaults -- neil
-
-08/04/2003
-[m]- Ability to add timers in lua
-[B]- Fix spelling: PARCHEMENT -> PARCHMENT. Automatizer rules and other scripts
- that use PARCHEMENT will still work, though. -- neil
-
-09/04/2003
-[M]- Companions and pet uniques can now be killed
-
-11/04/2003
-[P]- Trolls cannot get the troll blood corruption
-[P]- At Monster lore skill level 12 one can turn a pet in a loyal companion.
- Note that you are limited in companion number
-[P]- Reduced Necromancy spell failure damage
-
-12/04/2003
-[P]- Skill multipliers of Rogues and Assassins are higher now. -- neil
-[B]- Fixed alchemy making of xtra shots/might
-[P]- Some skills have more chances to be taugth than others by fumblefinger
-
-13/04/2003
-[P]- Melkor Curse spell autocast chance formula changed
-[O]- Wishing for dual ego items works
-
-14/04/2003
-[P]- Spellbinder spell will reveal more info about itself when cast while
- already active
-[P]- Increase Mage's Weaponmastery Multiplier by 0.1 -- neil
-[P]- Experimentally double Barehanded Combat martial arts damage dice
- to make Monks more attractive -- neil
-
-16/04/2003
-[O]- Goods stolen from stores now get a 100% discount. -- neil
-[P]- One can now steal from more places -- neil
-
-17/04/2003
-[B]- Everburning torches, Feanorian Lanterns, and Dwarven Lanterns of Fading
- couldn't be filled -- neil
-[B]- The Crumpled Scroll of Mass Resurrection no longer revives special
- monsters who won't ever appear again anyway. -- neil
-
-18/04/2003
-[B]- Gauntlets that contain spells no longer hinder spellcasters -- neil
-[I]- Some junk removed from the character resistances grid -- neil
-
-18/04/2003
-[G]- Bree house is not available from start anymore, you have to get it
- as a reward from the thieves quest
-
-20/04/2003
-[G]- The Lothlorien and Gondolin homes aren't free anymore, either -- neil
-
-21/04/2003
-[G]- The Minas Anor and Khazad-dum homes must be won, too -- neil
-
-24/04/2003
-[I]- Reworked 16x16 gfx by P_laloli@hotmail.com
-
-25/04/2003
-[B]- Fix the case where some birth items wouldn't stack -- neil
-[B]- Disarming a trap on a stair should not destroy the stair -- neil
-
-26/04/2003
-[B]- Player invisibility shouldn't hinder monsters attacking targets other
- than the player (patch by Jeff Epler) -- neil
-
-27/04/2003
-[B]- Mana and Life drains should not cause infinite rest loops -- neil
-
-28/04/2003
-[O]- Handmade items like arrows and totems are fully identified -- neil
-
-29/04/2003
-[m]- Max skills internaly increased to 200
-[G]- Random quest are now disabled when persistent dungeon levels are enabled.
- -- neil
-
-30/04/2003
-[O]- The artifact that had aggravation and a stealth bonus no longer has
- that useless stealth bonus -- neil
-[O]- It's now much harder for sentient weapons to get the Acid realm -- neil
-
-01/05/2003
-[I]- '+' command(alter terrain) wil ltry to open doors instead of tunneling
- them
-
-02/05/2003
-[P]- Shots now pierce when they used to ricochet in random directions -- neil
-[P]- Piercing shots are now togglable -- neil
-[G]- Singing happy drunks will freely accept alcoholic beverages from you.
- -- fearoffours
-[m]- Class helpfiles updated to reflect some changes in skill allocation.
- -- fearoffours
-[I]- Turned on by default the linear stats display
-[m]- Chris Hadgis submitetd the first documented package of the ToME API!
- More comming :)
-[I]- Maxxed stats now show a "!" in the character screen and dump, too -- neil
-[P]- If you play something experimental, it now shows up in the character
- dump. Alchemists and Death Molds are marked as such for now -- neil
-[P]- Necromantic magic got a new spell: Necromantic Teeth
-
-05/05/2003
-[B]- Stone Prison spell would create floor where it shouldn't, possibly
- trapping you in places like the Eol quest. -- neil
-
-06/05/2003
-[G]- Angband now blocks the magic of the Thunderlords' Nest -- neil
-[B]- Fix activation descriptions patch by Chris Hadgis -- neil
-
-09/05/2003
-[I]- ToME should try harder to use proper thematic flooring when appropriate
- -- neil
-[B]- Stone Prison should not be able to turn walls into floors. -- neil
-
-11/05/2003
-[B]- Sound effects shouldn't give knowledge the player wouldn't otherwise
- know (like the generation of the relic) -- neil
-
-12/05/2003
-[B]- Don't show silly chance to break for exploding ammo -- neil
-
-14/05/2003
-[m]- lib/patch directory to contains auto-loaded patches.
- Each patch must be contained in it's own subdirectory and
- must contain a patch.lua file with a patch_init() function in it
- that must return the patch name and version
-
-16/05/2003
-[P]- Abilities. Abilities are like skills, but are booleans. That is
- you either know them or not, there is no scale. One can learn
- abilities by spending skill points in the abilitie screen(press 'N').
- Abilities can have prerequisites to be meet before one can learn them.
- (Like some can need a stat level, a skill level, ...)
- Some classes get abilities for free at certain level. Like warriors
- will get Spread-blows ability at level 25 for free(even if they dont
- actually meet the prereqs).
-[P]- All classes now get 4 max blows. But there abilities that can increase
- the max. Warriors gets them for free at birth, and other classes also
- get some so they are not less powerful than before the change. This
- will however help people create warrior-mages for example.
-[m]- Internal change: Magic Realms are gone. -- neil
-[I]- No more spell list window flag. It hadn't done anything since ToME 2.0
- anyway -- neil
-[m]- Total savefile compatibility break. Hopefully we can do better from now
- on -- neil
-
-21/05/2003
-[I]- The player now gets warned during race/class/subrace selection that a
- class is experimental. -- neil
-
-23/05/2003
-[B]- Innate monster friendliness shoudln't take precedence over summoned pet
- or companion status -- neil
-[B]- The Helm of Knowledge and Automatizer pickup now get along -- neil
-
-26/05/2003
-[m]- Initial helpfiles update for Abilities. -- fearoffours
-
-27/05/2003
-[I]- Princess quest reward selection is not cancelable
-
-28/05/2003
-[P]- New skill: Geomancy, works in combinaison with the 4 elemental skills
- to produce various effects from the raw elements around teh caster
- (grass, sand, ...). Elementalists becomes Geomancers now.
- Thanks to Fubar Obfusco for the detailed idea
-[P]- Runecraft is not gainable from fumblefingers until it is reworked
-
-29/05/2003
-[m]- More help updates - Artifact Creation ability, plus addtions to FAQ and
- skills.txt and others. Thanks to Michael Beatty for some suggestions.
- -- fearoffours
-[I]- Autoroller now uses linear stats when requested
-[I]- Object window will now display the 'I'nspection of the last manipulated
- item
-
-30/05/2003
-[B]- Resting ignores HP or SP if a drain on HP or SP is induced by an object
-[O]- Beat down the power of randart rings yet more -- neil
-
-31/05/2003
-[m]- Geomancy help. -- fearoffours
-[O]- heavy Xbows of Siegecraft, thanks to Fang
-
-01/06/2003
-[B]- The automatic drop from wilderness should no longer be abusable. No longer
- can you hit < when you're hungry, cut, poisoned, or sensitive to light during
- the day -- neil
-[P]- Far reaching attack ability. When using a long polearm you can attack monsters
- 1 or even 2 grids away(at the cost of a reduced number of blows)
- Idea taken from Adamant
-[O]- Ingeborg S. Norden's artifact bolts added -- neil
-[P]- Trapping is now an ability instead of a skill. Rogues, but not Assassins,
- start with it -- neil
-[m]- Help updated to reflect new abilities. Deathmold question added to FAQ.
- -- fearoffours
-
-06/06/2003
-[P]- Undead Form is now an ability
-[m]- Documentation for Undead Form added. -- fearoffours
-
-08/06/2003
-[m]- Added skill tests abilities to .prf files thanks to Scott Bigham
-[B]- Thaumaturgy attacks will travel more than one grid when not targeted
- at a monster thanks to Scott Bigham
-[I]- Inscription and discount clauses for the automatizer thanks to Scott Bigham
-
-09/06/2003
-[O]- Boomerangs now have just a 1% chance to break, have their chance to hit
- improved by Boomerang-mastery, get sold in shops, and are a bit less
- rare -- neil
-
-10/06/2003
-[G]- The god quest is a (little) bit more forgiving about the direction the
- dungeon lies in, and you also get an approximation of it's distance.
- -- fearoffours
-
-11/06/2003
-[B]- Thaumaturgy spells could be too weak -- neil
-[B]- Demonologists couldn't use the Demon Summon spell -- fearoffours
-
-14/06/2003
-[P]- Thaumaturgy spell levels now range from 1-50 instead of 1-100, so now
- one won't get spells with impossible failure rates, as suggested by
- Jules Bean -- neil
-
-16/06/2003 -- T.o.M.E 2.2.0 aka "Born to the Purple"
-
-18/06/2003
-[B]- Fix manwe spell Avatar
-
-19/06/2003
-[B]- Silly silly bug in god quest fixed. -- fearoffours
-
-20/06/2003
-[B]- Mimics starts with a cloak
-[B]- Using the @ key in skill menu wont crash
-[B]- Cannot copy uncopiable spells
-[B]- Dripping Tread will put feats on the last grid, not the current one
-
-21/06/2003
-[m]- Clearer descriptions for spells which require more than one school
- -- fearoffours
-[P]- Geomancer tweaks: Geyser's mana progression now matches its damage
- progression. Geomancy now gives much larger bonuses to its child
- skills, so Geomancers are now intended to max out the elements. -- neil
-
-22/06/2003
-[B]- Potions of Cure Water are inscribed for you to prevent mishaps with
- the automatizer -- neil
-[B]- Don't let people travel with extra limbs, to prevent them losing
- weapons by mistake -- neil
-[B]- Allow hypnosis of companions, make hypnosis failure messages more
- useful - neil
-
-23/06/2003
-[m]- Mimicry help. Magic help now has it's own menu, other minor help
- updates. -- fearoffours
-
-29/06/2003
-[m]- "Investing in the <foo> skill? You might be interested in the <bar>
- ability." links in skills.txt --fearoffours
-[B]- God quest bug genuinely fixed now -- fearoffours
-[P]- Bear form will now starts at -5 speed but end at +5
-
-29/06/2003 -- T.o.M.E 2.2.1 aka "There All the Honor Lies"
-
-09/07/2003
-[B]- Prevent forbidden staves from being generated
-
-14/07/2003
-[B]- Really fix the God quest this time, we hope
-
-15/07/2003
-[m]- Mac OS X Module support
-[m]- Solaris compile workaround from Kevin W. Thomas
-
-16/07/2003
-[B]- Fix broken status in auto automatizer rules -- neil
-[m]- Valid XHTML in the HTML screenshots now -- neil
-
-17/07/2003
-[B]- HPUX support -- neil
-
-20/07/2003 -- T.o.M.E 2.2.2 aka 'And Now For a Word'
-
-20/07/2003
-[P]- No more involuntary corruptions
-
-02/08/2003
-[B]- Fixed crash on 'l'ook in rare conditions, thanks slappy0042
-[B]- Fixed inflation of ammo damage display, patch by 'Zizzo' -- neil
-
-05/08/2003
-[m]- Help updates - spectres lose hp when passing walls, thieves cannot shoot
- arrows (very well), non-geomancer mages have a 0.00 modifier to Geomancy.
- -- fearoffours
-[m]- Help updates - typo in rm_spec.txt and High-elves have good wisdom
- -- fearoffours.
-
-08/08/2003
-[B]- Tulkas piety gains now match the documentation -- jules
-
-10/08/2003
-[m]- helpfiles - Clearer geomancy skill values for non-Geomancer Mages, a note
- about effect of stealing from shops in skills.txt, and some FAQ additions
- about FF and random quests. -- fearoffours
-
-13/08/2003
-[B]- Manwe, Eru, Yavanna, and Tulkas will not yet you start following them if you
- are wearing the One -- neil
-
-24/08/2003
-[B]- Set number of charges correctly when a wand is stolen -- neil
-
-26/08/2003
-[m]- Scott Bigham's tome-autoabil.diff: Adds a new automatizer class
- <ability>, which is true when you have the given ability -- neil
-
-27/08/2003
-[m]- Riscos support thanks to Antony Sidwell
-
-30/08/2003
-[m]- Savefiles are now stores in ~/.tome/save[/modulename] on multiuser systems
-[m]- Apply patches based on those from FreeBSD ports -- neil
-
-06/09/2003
-[O]- Beaked Axes, Battle Axes and Lochaber Axes are recognized as polearms
- again. -- neil
-[O]- Misleading "polearm" description removed from non-polearm
- Quarterstaff -- neil
-
-14/09/2003
-[m]- Added help for 'repeat last command' to command.txt. -- fearoffours
-
-15/09/2003
-[B]- Fixed autopickup of ammo crash under some circumstances
-[B]- Fix monster list mimic bug
-[B]- Tree Roots incorrect bonuses fixed
-[B]- Fixed incorrect display of some skill bonuses
-
-15/09/2003 -- T.o.M.E 2.2.3 aka 'The Quality of Mercy'
-
-22/09/2003
-[B]- Detect doors and traps displays as costing 3, not 5 now. -- fearoffours
-[B]- Maeglin quest reward wording altered (saves confusion for sorcerors).
- -- fearoffours
-[I]- Adam Bolt's Tiles are now "New Tiles", as others have worked on them and
- stuff. -- fearoffours
-
-25/09/2003
-[B]- Typos in One Ring parchment and Necromancy help fixed. -- fearoffours
-
-27/09/2003
-[B]- Typos in ultra-good ending, lost-sword quest rewards and flag description
- fixed. -- fearoffours
-[O]- Restore spaces to artifact descriptions -- neil
-
-28/09/2003
-[B]- Axemasters now start with a Hatchet -- neil
-[B]- Fix "analyze monster" activation -- neil
-
-04/10/2003
-[B]- Fix library quest breakage of Melkor curses -- neil
-
-05/10/2003
-[B]- Fix failure rates for abilities in possessed bodies, patch by 'Slappy'
- -- neil
-
-06/10/2003
-[B]- Monsters detected ONLY by telepathy were not removed from visible monsters
- list after they had gone out of range. Thanks Slappy for fix. -- fearoffours
-[B]- Recharged junkarts would not always give a notification message. Thanks
- Slappy for fix. -- fearoffours
-[O]- Changed descriptions of some junkart activations. -- fearoffours
-[B]- Completion of Necromancer quest could be triggered incorrectly.
- -- fearoffours
-[D]- "The lava burns you", becomes "you move across the lava" to accomodate
- IM_FIRE and flying characters. -- fearoffours
-
-07/10/2003
-[m]- Applied Ken Dubuc's patches to parsers to make them line ending independant
-[m]- Savefiles on multiuser systems are now in HOME/.tome/2.2/save, to comply
- with the new 3.0.0 naming scheme that is coming.
- People upgrading from 2.2.x to 2.2.4 should move their savefiles there
-
-08/10/2003
-[B]- Monsters don't appear to disappear for a turn if you polymorph them -- neil
-[m]- Setting module to "all" for an automatizer rule makes the rule apply
- to all modules -- neil
-
-11/10/2003
-[B]- Flying semi-wraiths shouldn't be hurt by flying over trees -- neil
-
-13/10/2003
-[B]- Recalling to new lost temples could have crashed the game. -- fearoffours
-[B]- God quest directions could be grammatically incorrect. -- fearoffours
-
-23/10/2003
-[B]- Items containing spells should be browsable again -- neil
-[B]- Random artifact mimicry cloaks should now show up correctly -- neil
-[B]- Random artifacts that can contain spells will not come with
- Globe of Light anymore -- neil
-[B]- Certain non-random artifacts that can contain spells will not come with
- Globe of Light anymore, either -- neil
-[B]- Pack overflow/weapon disappearing bug fixed, with big thanks to Kevin
- W. Thomas for telling me where to look -- neil
-[m]- Wizard mode is now turned off at birth -- neil
-[B]- Trap of Divine Wrath would benefit you -- neil
-[B]- Blood of Life would revive necromancers in undead form -- neil
-[B]- Hostile monsters won't get free kills of friendly monsters anymore -- neil
-
-28/10/2003
-[B]- Eggs work again -- neil
-[B]- Wishing for ego rods works -- neil
-
-29/10/2003
-[B]- Temples now accept blessed boomerangs -- neil
-[O]- Non-functioning artifact instrument activations removed -- neil
-[B]- If you learn anti-magic, you stop following any Valar -- neil
-[P]- Wood Elves and Hobbits weren't getting the extra might bonuses
- they were entitled to -- neil
-[B]- typo in v_info.txt -- fearoffours
-[m]- Help updates: macros and macro recorder, dwarf racial ability, more on
- dodging, link to m_mimic.txt from skills.txt, object inventory letter
- colouring significance. -- fearoffours
-[B]- Old Mage's quest wouldn't always disappear from quest screen when fully
- rewarded. -- fearoffours
-
-30/10/2003
-[m]- Helpfiles updated to reflect that corruptions are permanent and there is
- no corrupted sub-race. --fearoffours
-
-03/11/2003
-[B]- No more shafts in certain places -- neil
-[B]- Percing shots will not grossly inflate in damage anymore -- neil
-[B]- No genocide in home quests -- neil
-
-11/11/2003
-[B]- Silent Switching can no longer take off permanently cursed items -- neil
-[B]- Fix memory error in command handling -- neil
-[B]- Hypnotizing and restoring levelled monsters now works correctly -- neil
-[B]- permanent_levels marked experimental because it is broken -- neil
-
-17/11/2003 -- T.o.M.E 2.2.4 aka 'A Bug's Life'
-
-19/11/2003
-[B]- Fix monster possessor crash -- neil
-[B]- Fix random quest skill requester -- neil
-
-20/11/2003
-[B]- Fix crash when picking up ammo into your quiver that can't be fired
- with the launcher you are wielding -- neil
-
-22/11/2003
-[B]- God quest fix -- neil
-
-24/11/2003
-[B]- Disintegrating walls should not bother Yavanna -- neil
-
-01/12/2003
-[B]- Yet another try at fixing levelled carried monsters. Their attacks
- are affected by their level now and their hitpoints are handled better.
- I should have said this for the last release, but un-hypnotize any pets
- before upgrading from 2.2.2. Otherwise compatibility is fine. -- neil
-
-05/12/2003
-[B]- Semi-wraiths should not be hurt by climbing over mountains -- neil
-
-08/12/2003
-[B]- Fixed Flame of Udun spell
-
-10/12/2003
-[B]- Diggers are not weapons and should not be displayed as such -- neil
-[O]- Some items that give damage bonuses will be more clear about it -- neil
-[M]- Drain attacks can't drain the one artifact wand, staff, or horn -- neil
-
-[V] T.o.M.E 2.2.5 aka "Death of a Bug"
-
-23/12/2003
-[B]- Prevent recall to Lost Temple before getting the quest -- neil
-
-01/01/2004
-[I]- Pressing Escape gets you out of the pet dismissal list -- neil
-
-03/01/2004
-[B]- Automatizer now accepts TV_TOTEM -- neil
-
-08/01/2004
-[m]- Helpfiles: bearform combat help, music typos, barbarian revisions.
- -- fearoffours
-[B]- Some vaults incorrectly named -- fearoffours
-
-15/01/2004
-[B]- Wight quest crash fix by 'amaurea' -- neil
-
-16/01/2004
-[B]- God choosen at random was broken -- masmarangio
-
-18/01/2004
-[B]- Typo in q_one.c (or -> of)
-
-20/01/2004
-[B]- Don't use a turn when cancelling a possessor action -- neil
-
-21/01/2004
-[B] - summon_true crashed the game with a summon skill < 1 -- masmarangio
-[B] - test_object_wish: aware status is saved and restored -- masmarangio
-
-27/01/2004
-[m] - Typos in the description of arrows, shots, bolts; punctuation in the
- mushroom quest -- masmarangio
-
-30/01/2004
-[m]- HOOK_CALC_BONUS_END hooks
-
-06/02/2004
-[m]- Helpfiles: corrected starting equipment of mindcrafters -- masmarangio
-
-07/02/2004
-[m] - Backport of old helpfile updates: no Geomancy for Alchemists and Rune-
- crafters, updated luck spoiler, corruption spoiler in crpt_aux.lua, a
- link in skills.txt, an example in automatizer.txt.
- monsters3.c: changed 'golem' to 'creature', since the Mind Steal Spell
- also allows to control a monster. -- masmarangio
-
-[m]- Typo (massage -> message) from the forum -- masmarangio
-[m]- Capitalisation in the names of junkarts -- masmarangio
-
-13/02/2004
-[m]- mindcraft_info: Corrected and expanded the info for mindcraft powers
- -- masmarangio
-[m]- Small corrections in luck spoiler, description of Manwe's Blessing and
- m_mimic.txt -- masmarangio
-
-19/02/2004
-[B]- God quest will no longer give inaccurate or misleading directions. It
- also will now give directions from two static features, and an
- approximate, relative distance from each of those points.
- -- fearoffours
-
-[V] T.o.M.E 2.2.6 "Won't Get Fooled Again"
-
-27/02/2004
-[m]- Missing space in the description of Vecna -- masmarangio
-
-12/03/2004
-[B]- Eating some corpses produced a division by 0 error -- masmarangio
-
-15/03/2004
-[B]- Wearing an item of life (-100%) reduced the mhp to 0, causing a
- division by 0 error in cave.c -- masmarangio
-
-16/03/2004
-[B]- Corrected the spell selection for monsters:
- defines.h: Added RF6_S_ANIMALS in RF6_SUMMON_MASK.
- melee2.c: Updated comments in monst_spell_monst and make_attack_spell.
- Removed the spells RF4_MULTIPLY, RF4_S_ANIMAL, RF5_SCARE from spell_attack.
- Corrected the spell numbers of RF6_TELE_AWAY and RF6_TELE_LEVEL in
- spell_escape (formerly RF6_DARKNESS and RF6_TRAPS were used).
- Corrected the spell numbers of RF6_TELE_TO, RF6_DARKNESS, RF6_TRAPS,
- RF6_FORGET in spell_annoy (formerly RF6_RAISE_DEAD, RF6_S_BUG, RF6_S_RNG
- were used).
- Added RF4_S_ANIMAL and RF6_S_ANIMALS and limited the spell number to
- 160 + 31 in spell_summon. -- masmarangio
-
-18/03/2004
-[O]- The activation of an items with the ACTIVATE_NO_WIELD flag is described
- without the line "if it is being worn. " -- masmarangio
-[B]- Barad-dur doesn't exist, it is still Mordor. Corrected god quest directions
- to reflect this. -- fearoffours
-
-20/03/2004
-[m]- Corrected some typos (mostly from the forum, thanks to Carg85)
- s_yavann.lua: spell 'grow grass' description: 'a grass' -> on grass
- q_haunted.c: cave -> building
- a_info.txt: some missing spaces in the description of artifact bolts
- corrupt.lua, corspoil.txt: 'teeth allows' -> 'teeth allow'
- k_info.txt: missing space (Golden Horn of the Thunderlords)
- s_stick.lua: 'a thunderlords' -> 'a thunderlord'
- d_info.txt: 'the the land of Rhun' -> 'the land of Rhun'
- -- masmarangio
-
-23/03/2004
-[B]- Fixed the speed of Bearform combat -- masmarangio
-[m]- Updated luck spoiler -- masmarangio
-
-26/03/2004
-[B]- Fix for Flame Imperishable from the forum -- masmarangio
-[B]- You should now receieve a message about failing the god quest at the
- correct moment, and not when in a random dungeon. -- fearoffours
-[m]- The Old Mage's quest will erase from your quest screen when fully rewarded.
- -- fearoffours
-
-29/03/2004
-[B]- Further measures taken to ensure god quest relic is created appropriately.
- -- fearoffours
-[B]- Scumming for god quests (by losing and regaining xp) is now prevented.
- -- fearoffours
-
-02/04/2004
-[m]- Backport of mostly old helpfile updates: wrong school in m_divin.txt,
- comments in spells.lua, deleted hint about shoes in r_hobbit.txt,
- ability.txt, ab_info.txt: updated Ammo-creation and Far-reaching attack,
- c_axemas.txt: starting weapon is a hatchet,
- magic.txt, skills.txt: Updated schools improved by Spell-power,
- corspoil.txt: Updated the info about permanent corruptions,
- birth.txt: removed corrupted subrace, vampires are a normal subrace,
- m_air.txt: Updated description of Noxious Cloud -- masmarangio
-
-03/04/2004
-[B]- Fixed device trapkits loaded with rods -- masmarangio
-
-05/04/2004
-[B]- Exploding ammo used in trapkits will explode after hitting a monster.
- -- masmarangio
-[m]- Corrected Alchemist, Assassin, Axemaster, Rogue helpfiles -- masmarangio
-
-08/04/2004
-[B]- Mage staves were without the WIELD_CAST flag -- masmarangio
-
-09/04/2004
-[G]- No more nuke traps -- neil
-
-21/04/2004
-[m]- skills.txt: Corrected information about Spell-power -- masmarangio
-
-02/05/2004
-[B]- Between quest crash fix, also for Thieves and Trolls quests -- masmarangio
-
-07/05/2004
-[m]- Capitalisation: Metal Boomerang, Lay of Protection.
- r_pettyd.txt: magic items -> magically enchanted items -- masmarangio
-
-08/05/2004
-[B]- god.lua: The relic could be created in a wrong position -- masmarangio
-
-09/05/2004
-[O]- object1.c: Added descriptions for SENS_FIRE (thanks to Scott Bigham)
- and IMMOVABLE, removed IM_NETHER from the resistances -- masmarangio
-
-10/05/2004
-[m]- bounty.lua: Added a period -- masmarangio
-[B]- cmd7.c: Preserve the spell stored in random spellbooks --masmarangio
-[O]- Show "to damage" and "to accuracy" messages for yet more confusing items
- -- neil
-
-11/05/2004
-[B]- xtra1.c: Lucky characters (current luck > 0) don't get death fates;
- fixed a typo in luckspoi.txt (from the forum) -- masmarangio
-[m]- spells2.c: Typo (vulerable -> vulnerable) -- masmarangio
-
-13/05/2004
-[m]- skills.txt: Fixed broken link -- masmarangio
-[B]- generate.c: Fixed arena levels by refilling the level -- masmarangio
-
-14/05/2004
-[m]- Added new help file for the debug commands -- iain_mac
-
-26/05/2004
-[B]- Correctly cap the spell levels of wands (patch by 'Sumendar') -- neil
-
-[V] T.o.M.E 2.2.7 aka "Stoke Me A Clipper"
-
-04/06/2004
-[P]- Class no longer influences the internal Angband 'skills' of Disarming,
- Magic Devices, Saving Throw, Stealth, Searching, Perception, Hand-to-Hand
- combat, Missile Combat, and Throwing. ToME skills instead have the same
- effect for all classes. -- neil
-
-05/06/2004
-[G]- Added the new Mimic shapes and updated the old ones -- masmarangio
-
-07/06/2004
-[G]- Destroying items manually now takes no time -- neil
-
-10/06/2004
-[B]- dungeon.c: Light should consume fuel at a rate of 1 / turn -- masmarangio
-
-11/06/2004
-[P]- Water Bite no longer has a damage cap -- neil
-
-12/06/2004
-[B]- A store (e.g. the mathom house) can contain up to 255 items (in defines.h
- STORE_INVEN_MAX limited the number of items to 24) (Note: the limit is
- stored in a byte in loadsaves.c) -- masmarangio
-
-21/06/2004
-[m]- a_info.txt: Updated names of artifacts in the comments -- masmarangio
-
-23/06/2004
-[m]- object.pkg: Added psychometry() for easier mindcraft testing.
-
-24/06/2004
-[m]- birth.txt, index.txt : Corrected and added abbreviations
- gen_idx.lua: removed non-existent file and sorted file list
-[G]- Added the spell Sterilize and Staves of Sterilization from ToME 3.0.0.
-[D]- Added the first new special level from ToME 3.0.0, Galleon in Helcaraxe
- -- masmarangio
-
-02/07/2004
-[D]- Added the special level Factory in the Illusory Castle -- masmarangio
-
-04/07/2004
-[G]- Added the spell Inertia Control from ToME 3.0.0 -- masmarangio
-
-05/072004
-[m]- Updated luckspoiler -- masmarangio
-
-09/07/2004
-[m]- Typo in s_fire.lua, from the wiki -- masmarangio
-[m]- rm_skeleton.txt, rm_zombie.txt: They cannot restore life force, and zombies
- are not resistant to nether -- masmarangio
-
-19/07/2004
-[P]- Except for infravision, all innate class or racial effects on skills are
- gone. All skills have equal effect for all classes, and races now give
- starting skill bonuses. -- Neil
-
-22/07/2004
-[B]- s_meta.lua: Inertia controlled spells are not casted in wilderness mode.
- s_mana.lua: Inertia level of Disruption Shield is 9 (needed spell level 45)
- m_meta.txt: Added a list of controllable spells -- masmarangio
-
-24/07/2004
-[P]- Mages are more geared toward a mix of Magic and Combat, while Sorcerors
- have more options than pure Sorcery -- Neil
-
-26/07/2004
-[B]- p_info.txt: Archers and Rangers gain the missing Spirituality skill
- p_info.txt: Removed the old Mimic Cloak (new cloak in player.lua)
-[m]- Helpfile updates for all character classes. -- masmarangio
-
-30/07/2004
-[B]- p_info.txt: Thunderlords start with Stealth -16.000 (from the wiki)
-[B]- cmd7.c: Fixed Alchemy recharging bug (thanks to Scott)
-[B]- al_info.txt: Removed the old Mimic Potions -- masmarangio
-[m]- util.pkg: Added lite_spot() and note_spot() for modules -- masmarangio
-
-31/07/2004
-[B]- monspeak.txt: Added some lines for Groo to fix a bug -- masmarangio
-[B]- files.c: Corrected display of Climb flag, immunity to Nether, negative
- pvals < -9. Added Sentient, Clone, Spider ESP flags. -- masmarangio
-
-02/08/2004
-[m]- g_melkor.txt: Added fire resistance for worshippers of Melkor
-[B]- files.c: Added flags from the gods and spell schools to the character
- screen. Added also flags from wielded symbiotes. -- masmarangio
-
-04/08/2004
-[m]- p_info.txt: Removed the useless skill Prayer for Maiar -- masmarangio
-[B]- cmd4.c: Quest list without random quests in DL > 98 -- masmarangio
-
-19/08/2004
-[m]- help file documentation restructuring, copying appropriate rewrites from
- wiki. -- fearoffours
-
-20/08/2004
-[B]- randart.c: An item with pval > 0 (e.g. an Elven Cloak) can gain parts
- with a max_pval = 0 (e.g. resistances and immunities) -- masmarangio
-
-24/08/2004
-[m]- Various minor changes to helpfiles, reflecting current changes to
- documentaiton on the wiki. --fearoffours
-
-28/08/2004
-[O]- Removed portable holes as have been useless for as long as merchants have
- been removed from game. --fearoffours
-
-30/08/2004
-[m]- k_info.txt: Fixed name of the commented out portable holes -- masmarangio
-
-14/09/2004
-[m]- Fixed some typographical errors, mostly from the wiki:
- cmd1.c: [The monster] fall -> falls, deleted space (Bug # 80 from the wiki)
- k_info.txt: Added & for Climbing sets (Bug # 81 from the wiki)
- q_one.c: You felt -> You fell (Bug # 94 from the wiki)
- monster2.c: It tries to breed but he fails: he -> it (Bug # 98 from the wiki)
- bldg.c: Changed wording of the soothsayer (Bug # 106 from the wiki)
- tables.c: Minor changes in the One Ring quest (Bug # 117 from the wiki)
- q_invas.c: jumps out of the between -> appears, deleted spaces,
- added single quotes in direct speech (Bug # 119 from the wiki)
- q_between.c: Deleted space, changed comments -- masmarangio
-
-20/09/2004
-[m]- book-4.txt: Capitalised 'Ring' (Bug # 135 from the wiki) -- masmarangio
-[B]- ow_info.txt: missing C: lines reduced the purse to 0 -- masmarangio
-[B]- object1.c: don't wield bolts with instruments and pebbles with boomerangs
- (Bug # 127 from the wiki) -- masmarangio
-
-21/09/2004
-[B]- object1.c: mention_use and describe_use list all available slots, check all
- weapon weights and distinguish between instruments and bows (Bug # 87)
- object1.c: Res Chaos implies Res Confusion (for the character screen)
- xtra1.c: Magical breath implies Water breath (from the wiki) -- masmarangio
-
-23/09/2004
-[B]- Z and Cth monster options removed, as in ToME 3. This fixes, among other
- things, the Death Orb issues. -- neil
-
-24/09/2004
-[m]- options.txt: Also removed the options from the help file -- masmarangio
-[B]- a_info.txt: Corrected two typos (Bugs # 140, 146 from the wiki)
- k_info.txt: Changed description of Bastard Sword, added RES_CHAOS to the
- known flags of a Blade of Chaos (it's mentioned in the description)
- files.c: Terminated highscore strings with \0, changed total_points
- slightly to prevent an overflow error (Bug # 139 from the wiki)
- v_info.txt: Corrected the x size of vault 99 and 104 -- masmarangio
-
-28/09/2004
-[D]- dungeon.c: Level of the Death dungeon is the minimum level from d_info.txt
-[B]- dungeon.c: Set dungeon_type to wilderness when recalling out. This should
- fix the various Moria recalling bugs (Bug # 95)
-[m]- cmd6.c: replaced the recall activation code by recall_player -- masmarangio
-[m]- monster1.c: missing spaces in description (Bug # 169) -- masmarangio
-
-
-29/09/2004
-[m]- Modules need to define three new variables to control the chance or
- random artifact generation. random_artifact_weapon_chance,
- random_artifact_armor_chance, random_artifact_jewelry_chance control
- the chance for different types of items. -- neil
-
-30/09/2004
-[B]- spells2.c: Redraw trap status after passwall (Bug # 51)
- store.c: Removed '))' when displaying a large store -- masmarangio
-
-01/10/2004
-[m]- mods_aux.lua: Added default values for random artifact generation;
- updated the skill values -- masmarangio
-
-02/10/2004
-[B]- al_info.txt: removed recipe for Scroll of Spell (Bug # 179), added recipe
- for Staff of Sterilisation (Bug # 77) -- masmarangio
-[m]- cmd6.c: protect evil -> protection from evil, s_stick.lua: town -> surface
- q_betwen.c, q_invas.c: speak -> speaks (from the forum) -- masmarangio
-
-03/10/2004
-[m]- tr_info.txt: Spelling of Lite (Bug # 182), Armor, Paralyzing -- masmarangio
-[B]- cmd6.c: Added timeout for junkarts in the activation description (ugly fix)
- tables.c: Replaced ACT_CURE_POISON by not used ACT_CURE_POIS -- masmarangio
-[B]- Once a god quest is failed, you will not receive any more god quests.
- -- fearoffours
-[m]- The (Ctrl-Q) Quest screen now shows which number god quest you have been given
- and an additional line in your character dump shows how many have been
- successfully completed. -- fearoffours
-[m]- Help updates from the wiki - lots of it Maylith's work, esp FAQ updates.
- -- fearoffours
-
-04/10/2004
-[m]- Corrected the description of the Disarm, Call the Elements and Channel
- Elements spells (without changing the code) (Bug # 175) -- masmarangio
-
-08/10/2004
-[B]- bldg.c: Research item (Bug # 191) and research monster are now paid
- correctly -- masmarangio
-[B]- spells2.c: Diggers cannot be enchanted with scrolls -- masmarangio
-[m]- tome-faq.txt, index.txt: Typo (Bug # 196) -- masmarangio
-
-10/10/2004
-[m]- s_info.txt: Antimagic: generates -> generate (Bug # 198) -- masmarangio
-[B]- files.c: Fixed displayed barehanded damage (Patch from Scott, Bug # 195)
- -- masmarangio
-
-11/10/2004
-[m]- powers.c: replaced the recall power code by recall_player
- q_troll.c: Fixed typos from the wiki (Bug # 208) -- masmarangio
-
-12/10/2004
-[m]- tables.c: Removed harpers and some other small changes (Bug # 212)
- cmd6.c: Added "and" in the description of ACT_ROHAN (Bug # 213)
- -- masmarangio
-
-13/10/2004
-[m]- m_demono.txt, s_demon.lua: armor -> armour class (Bug # 217)
-[O]- k_info.txt: Changed comments and descriptions of the items, mostly from
- the wiki (Bug # 176) and added missing descriptions (IdeaArchive)
- Added article (&) in the name of armours (Bug # 81),
- The spelling of some item names was changed: Scroll of Enchant Armour,
- *Enchant Armour*, Curse Armour, Summon Monsters, Basilard
- Added COULD2H to the Claymore and MUST2H to the Espadon.
-[m]- dun3.18: description of DimGates: fills -> fill (Bug # 223)
- -- masmarangio
-
-15/10/2004
-[B]- files.c: Remove / restore CAVE_VIEW before / after saving the game.
- This solves a long standing bug with the lighting of the dungeon
- since the temporary arrays that hold the position of the viewed
- grids are not stored in the save file (Bug # 19). -- masmarangio
-
-16/10/2004
-[m]- init1.c: The parser adds missing spaces at the end of the
- description of artifacts, like it did for objects. -- masmarangio
-[m]- Race, class and race modifier help files updates to reflect changes
- in skill bonuses. -- fearoffours
-
-18/10/2004
- Some changes to random artifact and scrolls of artifact creation
- (See Bugs # 206, 222, 226 on the wiki):
-[m]- externs.h: Moved some functions listed under spells2.c to proper sections
-[m]- k_info.txt: Added "mundane" to the description of the scroll
-[B]- cmd6.c: the selection of artifactable items can be escaped now
- randart.c: *ID* the object before listing the powers, some re-ordering
-[B]- spells2.c: Re-add diggers to item_tester_artifactable, and limit the
- selection to normal items due to complains (no ego items or artifacts)
-[O]- ra_info.txt: Added a STR-increasing part without combat bonuses for diggers
-[B]- ra_info.txt: Fixed two W-lines with 4 entries and added a missing C-line
-[O]- e_info.txt: Diggers cannot be of Earthquakes anymore (there are combat boni
- involved) - perhaps an own ego type should be added... -- masmarangio
-[m]- q_ultrag.c: Quest texts changed as reported in Bug # 210 -- masmarangio
-
-23/10/2004
-[B]- k_info.txt: Reduced throwing damage of totems to 1 -- masmarangio
-
-25/10/2004
-[P]- Priests disarm as well as Warriors do now -- neil
-[B]- st_info.txt: Fixed the changed item names in the stores (StatusReport3)
-[m]- spells.lua: Sorted the Conveyance spells by level (Bug # 233)
- -- masmarangio
-[m]- Helpfiles reflect changes to skills (priest disarming and racial
- spirituality update). -- fearoffours
-
-01/11/2004
-[m]- library.lua: Added OBJ_FOUND_REWARD to the tome (Bug # 237) -- masmarangio
-
-13/11/2004
-[B]- Fix for disappearing artifacts (especially guardian artifacts) during load / save
- thanks to SimonSorc
-
-17/11/2004
-[O]- No more blessed boomerangs -- neil
-
-[V] T.o.M.E 2.3.0 aka "One more try to get Mages working"
-
-10/12/2004
-[B]- Fix loading and saving of skills, I hope. Unfortunately this breaks save
- compatiability, though. The saves must be deleted again. -- Neil
-
-29/12/2004
-[B]- Fix negative skills -- Neil
-[B]- Don't use weaponmastery combat when weaponmastery skill is negative -- Neil
-
-[V] T.o.M.E 2.3.1 aka "2.3.0.1"
-
-2005/05/19
-[I]- If easy_disarm is off, don't trigger known traps while walking normally.
- Added a new extended command "blunder" to let players trigger traps on
- purpose. -- gwooledge
-[I]- Lots of documentation, spelling and grammar fixes, including:
- * the now-outdated race/class ability tables, replaced with skill tables
- * the missing documentation for the set of extended commands
- * far too many others to mention here
- -- gwooledge
-
-2005/05/20
-[I]- Added sanity and speed to the character screen (and hence the text dump).
- Consolidated HP and SP into one line to make room. -- gwooledge
-
-2005/05/21
-[B]- Don't allow trap doors on quest levels or on chests. -- gwooledge
-[I]- Allow shopping to use the correct keys in roguelike mode. -- gwooledge
-
-2005/05/22
-[B]- Update view after high-powered globe of light. -- gwooledge
-
-2005/05/26
-[I]- Push a certain potion type a little deeper into the dungeon -- Neil
-[I]- Make piety display light blue when praying, to make it easier to tell
- when you're praying. -- gwooledge
-
-2005/06/02
-[I]- Don't display ordinary resists when there's also an immunity to the same
- element, in an object description. -- gwooledge
-[B]- Don't allow use of stairs (any < or > movement command) while rooted
- to the floor (by the Yavanna spell). -- gwooledge
-
-2005/06/04
-[I]- Display the (colored) character for uniques in the Known Uniques list (~2).
- -- gwooledge
-
-2005/06/05
-[I]- Add "Check abilities" extended command/macro. This gives roguelike keyset
- players a way to access the ability screen other than "\N", although it's
- still one more keystroke than "\N" is.... -- gwooledge
-
-2005/06/11
-[B]- Try again to keep traps from wrecking a certain plot element -- Neil
-
-2005/06/18
-[B]- Fix module file handling for multi-user installs. Now character sheets,
- automatizer file, and the rest will be read and written in
- ~/.tome/2.3/modulename as they should. -- Neil
-
-2005/06/19
-[B]- Try harder to save persistent levels when recalling out -- Neil
-[B]- Fix all sub-racial skill bonuses, along with Maia racial skill bonuses
- -- Neil
-[O]- Prevent random artifact bolts from giving extra blows -- Neil
-
-2005/06/21
-[O]- Correct the types of certain artifact trap sets to match their weights
- and descriptions. -- gwooledge
-
-2005/07/13
-[I]- Clean up some offensive messages, patch courtesy of 'The Fury' -- Neil
-
-2005/07/14
-[I]- Include the resistances grid on character sheets dumped on death.
- This makes them consistent with the ones generated before death, and
- is more informative and useful for post mortem analyses. -- gwooledge
-
-2005/07/15
-[P]- Warriors no longer get a secret special three bonus blows spread over the
- 50 character levels. The three blows are now tied to Weaponmastery.
-
- Module authors should adjust accordingly, or their warriors may get three
- blows they didn't have before. -- Neil
-
-2005/07/16
-[O]- Potions of Cure Insanity were too cheap. -- gwooledge
-
-2005/07/24
-[I]- Examining a totem will recall the monster it summons -- Neil
-[I]- Examining a corpse will recall the monster it was -- Neil
-
-2005/07/27
-[V] T.o.M.E 2.3.2 aka "Unrealized Reality"
-
-28/07/2005
-[G]- Lost sword quest rewards always give a minimum skill modifier of 0.3.
- -- gwooledge
-
-29/07/2005
-[D]- Edit one vault to open up some inaccessible rooms -- Neil
-
-11/08/2005
-[B]- Alchemy: disallow repowering double-ego items, unless the character has
- the artifact creation ability. Based on patch by Andrey Egoshin.
- -- gwooledge
-[B]- Lost sword quest skill reward probabilities were computed incorrectly.
- Fix suggested by Dan Rosenberry. -- gwooledge
-[I]- Miscellaneous documentation, spelling and grammar fixes. -- gwooledge
-
-12/08/2005
-[B]- Don't let a player trick the Valar by getting drained and re-gaining
- levels -- Neil
-[I]- Update AC display after fixing armor in the buildings. -- gwooledge
-
-16/08/2005
-[B]- Don't allow Runecraft and Thaumaturgy spells to go explode inside walls
- and seep through -- Neil
-
-17/08/2005
-[I]- Fix damage display for Thaumaturgy ball spells. -- gwooledge
-[O]- Removed pointless slays, brands, and bonuses on Pick of Erebor -- Neil
-
-19/08/2005
-[B]- When consuming magic essences, don't stop prematurely. Based on patch
- by Andrey Egoshin. -- gwooledge
-
-30/08/2005
-[B]- Upkeep cost for partial summons was not always charged. -- gwooledge
-
-05/09/2005
-[B]- Some staves were being generated with the wrong tval, causing several bugs
- including (but not limited to) staves being unrechargeable. -- gwooledge
-
-11/09/2005
-[B]- Saving throw was not calculated correctly. -- gwooledge
-
-14/09/2005
-[P]- All new partial summon upkeep formula -- neil
-
-26/09/2005
-[B]- Disallow negative experience alchemy abuses. Based on patch by Andrey
- Egoshin. -- gwooledge
-[O]- When examining books, demonology equipment and instruments in stores, show
- both the object's powers and its spells. -- gwooledge
-[B]- Nonliving and undead pets won't be angered by lack of breathable air.
- -- gwooledge
-[D]- A certain early trap should be less deadly (and appear a bit later).
- -- gwooledge
-[I]- Honor exp_need option when displaying object experience. -- gwooledge
-
-27/09/2005
-[I]- Restored and updated some missing help files. -- gwooledge
-[G]- (Mass) Genocide damage is applied all at once to avoid bug #228.
- -- gwooledge
-
-28/09/2005
-[B]- Don't use the "POSIX" setuid calls on Mac OS X, as they apparently break
- compilation -- neil
-
-29/09/2005
-[O]- Junk should stack just like skeletons. Patch by StarweaverBlue.
- -- gwooledge
-[M]- Kavlax should be many-headed. -- gwooledge
-
-14/10/2005
-[B]- Certain monster spells were hard-coded for the wrong number of equipment
- slots. -- gwooledge
-
-18/10/2005
-[B]- Incorrect operator used in cave generation code. Effect unknown, but it
- *might* possibly fix some of the Orc cave crashes.-- gwooledge
-
-26/10/2005
-[M]- Regular (non-Joke, non-Cth, non-Z) monsters should not breathe nuke,
- because it has a side effect we don't want in ToME -- Neil
-
-29/10/2005
-[O]- Mac OS X builds now put all the game data into the bundle, storing all
- user data in the user's Library (some preferences in
- Library/Preferences/net.t-o-m-e.tome.plist, the rest in
- Library/Application Support/ToME. -- Neil
-
-16/11/2005
-[I]- Handling of Command key modified in Mac OS X UI. It should be accessible
- in macros now if it wasn't before -- Neil
-
-26/11/2005
-[B]- Don't allow uniques or quest monsters to just disappear to the move of
- another monster -- Neil
-
-14/12/2005 - ToME 2.3.3 "Realized Unreality"
-
-15/10/2006
-[B]- Remove buggy trap of Stair Movement -- Neil
-
-12/12/2005
-[B]- Fix typo in one monster's flags - Iain
-
-31/1/2005
-[I]- Fix window position saving on Mac OS, patch by John Love-Jensen
- -- Neil
-
-19/2/2005
-[B]- Fix word wrapping in character sheet, patch from "ZizzoTheInfinite"
- -- Neil
-
-[V] T.o.M.E 2.3.4 aka "An Unexpected Party"
diff --git a/changes.txt b/changes.txt
deleted file mode 100644
index d95e9b1..0000000
--- a/changes.txt
+++ /dev/null
@@ -1,198 +0,0 @@
-T.o.M.E 2.3.10 (ah)
-
-User Interface:
-
-- Always display list of selectable objects, i.e. remove the option of
- pressing '*' to hide list.
-- GTK2: Allow running with Shift + arrow keys. (Thanks to Lord
- Estraven.)
-- SDL fixes. (Thanks to Lord Estraven.)
-- System-wide character scores were removed. Use the ladder at
- http://angband.oook.cz instead.
-- Panic saves are no longer created. Saving state when memory is
- likely corrupted seems like a bad idea.
-- Remove long-obsolete front-ends.
-- Unix: Removed pointless and error-prone signal handling aimed at
- preventing cheating.
-- Removed gamma correction.
-
-Game:
-
-- Killerbunnies: Character dump now lists companions.
-- Killerbunnies: Fix dodge messages.
-- Imported Theme 1.2.0 since this excellent module by Furiosity seems
- to not be downloadable any more.
-- Further Thaumaturgy tweaks by Lord Estraven
-
-Build:
-
-- Setuid support REMOVED; do NOT install ToME as setuid!
-- Fixes for system installation. Thanks to 'darwin' for reporting.
-- Fix linking problem with the 'curses' front-end.
-- Add DEBUG.txt file for information on enabling debugging in builds.
-
-
-
-T.o.M.E 2.3.9 (ah)
-
-User Interface:
-
-- Always display list of selectable objects immediately
- instead of requiring user to press '*'.
-- Fix display issues with extremely wide terminals.
-- Automatizer: Fix memory corruption issues.
-- Remove obsolete and pointless options.
-
-Game:
-
-- Items are now immediately pseudo-identified upon pickup.
-- Psycometry now always Identifies regardless of level.
-- Remove the need to instantly leave for a certain quest. Lots
- of players would get caught out by this.
-- A few Mindcraft powers now scale with skill level. (Credit
- for these goes to Lord Estraven.)
-- "Far reaching attack" now works for *all* polearms.
-- Fixes and tweaks for Thaumaturgy to make view/area spells less
- overpowered and to make bolt/ball spells more useful. (Credit
- goes to Lord Estraven.)
-
-T.o.M.E 2.3.8 (ah)
-
-Game:
-
-- Fix duration display for the Shapeshift Mimicry power. Thanks
- to morchant for the fix.
-- Fix for creating "inventory" and "equipment" rules from the
- Automatizer UI. Thanks to morchant for the fix.
-- Fix for Lua code which should hopefully get things working better
- for OpenBSD users. Thanks to Kernigh for the patch.
-- Change "molten glass wall" to use a different internal code to
- hopefully avoid clashes with modules such as Theme.
-- Removed the check on low fuel on your light source when traveling.
- It doesn't make sense since you can already travel without any light
- equipped.
-
-Build System:
-
-- Added support for building the GTK2 interface; only lightly tested.
-- Added support for building on Windows with MinGW. Thanks to wino45
- for help with this.
-- Miscellaneous fixes to the CMake files. Thanks to Kernigh for
- contributing these.
-
-T.o.M.E 2.3.7 (ah)
-
-- Remove item pval from antimagic field strength calculation since it
- may be both non-zero and invisible (to the player).
-- Miscellaneous 64 bit fixes.
-- Fix Lua errors when hitting <ESC> while choosing spell.
-- Killerbunnies: Automatizer: Add patch which adds new <inventory/>
- and <equipment/> rules.
-- Killerbunnies: Add "you do not know all your fate" to Fate menu
- if you haven't been discovered all your fates.
-- Killerbunnies: Display a message if trying to activate Piercing Shots
- without the necessary skill levels.
-
-T.o.M.E 2.3.6 (ah)
-
-- Don't generate impassable glass walls.
-- Mark *all* quest monsters properly.
-- Avoid generating up staircases in selected dungeons.
-- Mimicry cloaks of Abomination now aggravate properly.
-- Properly handle item set effects with certain traps.
-- Fix crash bug during character dumps.
-- Misc. Mimicry fixes.
-- Prevent immunities from Balrog Form persisting too long.
-- Fix for loading/saving on Linux distribution using Fortify.
-- Fix for module directory paths.
-- Fix miscellaneous problems on 64-bit platforms.
-- Princess room should now always be generated.
-- Extra Blows applies to barehand combat too.
-
-
-
-
-
-
-T.o.M.E 2.3.5 aka "Into the unknown" changes
-
-Interface changes:
-- The X11 and Xaw interfaces now save the dungeon and player when the
- window is closed.
-- Fixed cpu churning bug that occurs when using certain window managers and
- ToME is maximized.
-
-Gameplay changes:
-- Player speed now set correctly when Demon Hide corruption is enabled.
-- ToME now correctly sets various Balrog flags when player in Balrog form.
-- ToME now correctly sets the teleport flags when teleport corruption is
- enabled.
-- ToME now uses the qrand7.map file when generating princess quests.
-- Bigs changes for generate.c to get it to produce the princess and thrain
- rooms. Also code clean up of room geranation code.
-
-Object changes:
-- Slings of Buckland can now be generated.
-- Wiki Bug 510. Added the WIELD_CAST flag to all artifact instruments to
- fix problems when casting spells.
-
-Misc changes:
-- Fixed small typo in the commands help file.
-- Added help for the Mathom House.
-- Fixed various compile time warnings in various files.
-- Added makefile support for main-gtk2.c in makefile.std
-- Values found in documentation for spectral race modifiers now match values
- found in p_info.txt.
-- Wiki Bug 837. Removed references to old inscriptions handling code in
- documentation.
-- Wiki Bug 564. Do not use the word 'restrict' as a variable name anymore.
- It conflicts with keywords used by the Sun Studio Compiler.
-- Wiki Bug 517. Fixed incorrect descriptoin of artifacts in help files.
-- Changed description of Disarm spell to more accurately reflect what it
- does.
-- ToME now correctly compiles main-gtk2.c on 64-bit machines.
-
-Bug fixes:
-- Wiki Bugs 841, 405, 360. Changes to get ToME to correctly build 64-bit
- executables.
-- Applied killerbunnies patch to identify objects on grid before squelching.
-- Applied killer bunnies patch to keep the fate "you are fated to find
- something special" from creating something special with an inappropriate
- base object.
-- Applied killerbunnies patch stops symbiotes from gaining levels simply
- by being hypnotized and released.
-- ToME now saves tim_fly, tim_poison, tim_regen and tim_regen_power.
-- Stores now display the inventory correctly after a purchase.
-- The race the legends display now works correctly with more than 10 dead
- characters in history.
-- Characters are no longer generated with 0 mana points.
-- Wiki Bug 839. ToME no longer penalizes an object when it is not actually
- cursed.
-- Wiki Bug 838. The melee style will now switch correctly from Bear to the
- primary melee style when switching out of Bear form.
-- Wiki Bug 826. The inventory and equipment windows now update when the
- player identifies the entire pack or uses the *Greater Identify* spell.
-- Wiki Bug 819. No more bogus level leaving messages.
-- Wiki Bug 722. ToME no longer crashes purple staircases have been trapped.
-- Wiki Bug 624. Ensure savefiles go to save and not scpt when using modules.
-- Wiki Bug 537. Partial fix of infinite loop during stair allocation on
- small levels.
-- Wiki Bug 530. ToME no longer drops items inappropriately when changing
- melee styles.
-- Wiki Bug 528. Character dumps now show the correct number of princess and
- lost sword quests.
-- Wiki Bug 526. ToME no longer enters an infinite loop when fighting in
- bare-hand combat sylte and bare-hand skill is < 1.
-- Wiki Bug 523. All types of recall check if the user really wants to leave
- a unique level.
-- Wiki Bug 506. ToME no longer crashes attempting to drop non-existant
- artifacts.
-- Wiki Bug 419. Use SKILL_BOULDER instead of SKILL_ARCHERY when throwing
- a boulder.
-- Wiki Bug 411. Black breath no longer gets 3 chances to happen.
-- Wiki Bug 394 and 393. Inertia Control autocasting can no longer cast a
- spell when antimagic field > 0 or when wielding a dark sword.
-- Wiki Bug 334. Companions are no longer saved in dungone save files.
-- Work around Mac OS 10.4.11 getlogin() bug - Neil
-- Wiki Bug 397. ToME no longer crashes on XP and Vista systems when viewing
- quests or other info from the knowledge menu.
diff --git a/DEBUG.txt b/doc/DEBUG.txt
index f7146c2..f7146c2 100644
--- a/DEBUG.txt
+++ b/doc/DEBUG.txt
diff --git a/doc/RELEASE.txt b/doc/RELEASE.txt
new file mode 100644
index 0000000..ab08231
--- /dev/null
+++ b/doc/RELEASE.txt
@@ -0,0 +1,8 @@
+Release Checklist:
+==================
+
+* Bump version number.
+* Update changes.txt
+* Update IS_CVS in defines.h before tagging; undo post-tagging.
+* Check that system-wide installation succeeds.
+* Disable C/C++ compiler sanitization options
diff --git a/doc/changes.txt b/doc/changes.txt
new file mode 100644
index 0000000..7835ab9
--- /dev/null
+++ b/doc/changes.txt
@@ -0,0 +1,208 @@
+T.O.M.E 2.4.x (ah)
+
+Game:
+
+- Removed Alchemist class from ToME module. They were
+ horribly broken and encouraged only scummy play. They
+ were also indirectly responsible for a lot of items
+ that were junk to every other character class.
+- Increased size of the home drastically.
+
+T.o.M.E 2.3.10 (ah)
+
+User Interface:
+
+- Always display list of selectable objects, i.e. remove the option of
+ pressing '*' to hide list.
+- GTK2: Allow running with Shift + arrow keys. (Thanks to Lord
+ Estraven.)
+- SDL fixes. (Thanks to Lord Estraven.)
+- System-wide character scores were removed. Use the ladder at
+ http://angband.oook.cz instead.
+- Panic saves are no longer created. Saving state when memory is
+ likely corrupted seems like a bad idea.
+- Remove long-obsolete front-ends.
+- Unix: Removed pointless and error-prone signal handling aimed at
+ preventing cheating.
+- Removed gamma correction.
+
+Game:
+
+- Killerbunnies: Character dump now lists companions.
+- Killerbunnies: Fix dodge messages.
+- Imported Theme 1.2.0 since this excellent module by Furiosity seems
+ to not be downloadable any more.
+- Further Thaumaturgy tweaks by Lord Estraven
+
+Build:
+
+- Setuid support REMOVED; do NOT install ToME as setuid!
+- Fixes for system installation. Thanks to 'darwin' for reporting.
+- Fix linking problem with the 'curses' front-end.
+- Add DEBUG.txt file for information on enabling debugging in builds.
+
+
+
+T.o.M.E 2.3.9 (ah)
+
+User Interface:
+
+- Always display list of selectable objects immediately
+ instead of requiring user to press '*'.
+- Fix display issues with extremely wide terminals.
+- Automatizer: Fix memory corruption issues.
+- Remove obsolete and pointless options.
+
+Game:
+
+- Items are now immediately pseudo-identified upon pickup.
+- Psycometry now always Identifies regardless of level.
+- Remove the need to instantly leave for a certain quest. Lots
+ of players would get caught out by this.
+- A few Mindcraft powers now scale with skill level. (Credit
+ for these goes to Lord Estraven.)
+- "Far reaching attack" now works for *all* polearms.
+- Fixes and tweaks for Thaumaturgy to make view/area spells less
+ overpowered and to make bolt/ball spells more useful. (Credit
+ goes to Lord Estraven.)
+
+T.o.M.E 2.3.8 (ah)
+
+Game:
+
+- Fix duration display for the Shapeshift Mimicry power. Thanks
+ to morchant for the fix.
+- Fix for creating "inventory" and "equipment" rules from the
+ Automatizer UI. Thanks to morchant for the fix.
+- Fix for Lua code which should hopefully get things working better
+ for OpenBSD users. Thanks to Kernigh for the patch.
+- Change "molten glass wall" to use a different internal code to
+ hopefully avoid clashes with modules such as Theme.
+- Removed the check on low fuel on your light source when traveling.
+ It doesn't make sense since you can already travel without any light
+ equipped.
+
+Build System:
+
+- Added support for building the GTK2 interface; only lightly tested.
+- Added support for building on Windows with MinGW. Thanks to wino45
+ for help with this.
+- Miscellaneous fixes to the CMake files. Thanks to Kernigh for
+ contributing these.
+
+T.o.M.E 2.3.7 (ah)
+
+- Remove item pval from antimagic field strength calculation since it
+ may be both non-zero and invisible (to the player).
+- Miscellaneous 64 bit fixes.
+- Fix Lua errors when hitting <ESC> while choosing spell.
+- Killerbunnies: Automatizer: Add patch which adds new <inventory/>
+ and <equipment/> rules.
+- Killerbunnies: Add "you do not know all your fate" to Fate menu
+ if you haven't been discovered all your fates.
+- Killerbunnies: Display a message if trying to activate Piercing Shots
+ without the necessary skill levels.
+
+T.o.M.E 2.3.6 (ah)
+
+- Don't generate impassable glass walls.
+- Mark *all* quest monsters properly.
+- Avoid generating up staircases in selected dungeons.
+- Mimicry cloaks of Abomination now aggravate properly.
+- Properly handle item set effects with certain traps.
+- Fix crash bug during character dumps.
+- Misc. Mimicry fixes.
+- Prevent immunities from Balrog Form persisting too long.
+- Fix for loading/saving on Linux distribution using Fortify.
+- Fix for module directory paths.
+- Fix miscellaneous problems on 64-bit platforms.
+- Princess room should now always be generated.
+- Extra Blows applies to barehand combat too.
+
+
+
+
+
+
+T.o.M.E 2.3.5 aka "Into the unknown" changes
+
+Interface changes:
+- The X11 and Xaw interfaces now save the dungeon and player when the
+ window is closed.
+- Fixed cpu churning bug that occurs when using certain window managers and
+ ToME is maximized.
+
+Gameplay changes:
+- Player speed now set correctly when Demon Hide corruption is enabled.
+- ToME now correctly sets various Balrog flags when player in Balrog form.
+- ToME now correctly sets the teleport flags when teleport corruption is
+ enabled.
+- ToME now uses the qrand7.map file when generating princess quests.
+- Bigs changes for generate.c to get it to produce the princess and thrain
+ rooms. Also code clean up of room geranation code.
+
+Object changes:
+- Slings of Buckland can now be generated.
+- Wiki Bug 510. Added the WIELD_CAST flag to all artifact instruments to
+ fix problems when casting spells.
+
+Misc changes:
+- Fixed small typo in the commands help file.
+- Added help for the Mathom House.
+- Fixed various compile time warnings in various files.
+- Added makefile support for main-gtk2.c in makefile.std
+- Values found in documentation for spectral race modifiers now match values
+ found in p_info.txt.
+- Wiki Bug 837. Removed references to old inscriptions handling code in
+ documentation.
+- Wiki Bug 564. Do not use the word 'restrict' as a variable name anymore.
+ It conflicts with keywords used by the Sun Studio Compiler.
+- Wiki Bug 517. Fixed incorrect descriptoin of artifacts in help files.
+- Changed description of Disarm spell to more accurately reflect what it
+ does.
+- ToME now correctly compiles main-gtk2.c on 64-bit machines.
+
+Bug fixes:
+- Wiki Bugs 841, 405, 360. Changes to get ToME to correctly build 64-bit
+ executables.
+- Applied killerbunnies patch to identify objects on grid before squelching.
+- Applied killer bunnies patch to keep the fate "you are fated to find
+ something special" from creating something special with an inappropriate
+ base object.
+- Applied killerbunnies patch stops symbiotes from gaining levels simply
+ by being hypnotized and released.
+- ToME now saves tim_fly, tim_poison, tim_regen and tim_regen_power.
+- Stores now display the inventory correctly after a purchase.
+- The race the legends display now works correctly with more than 10 dead
+ characters in history.
+- Characters are no longer generated with 0 mana points.
+- Wiki Bug 839. ToME no longer penalizes an object when it is not actually
+ cursed.
+- Wiki Bug 838. The melee style will now switch correctly from Bear to the
+ primary melee style when switching out of Bear form.
+- Wiki Bug 826. The inventory and equipment windows now update when the
+ player identifies the entire pack or uses the *Greater Identify* spell.
+- Wiki Bug 819. No more bogus level leaving messages.
+- Wiki Bug 722. ToME no longer crashes purple staircases have been trapped.
+- Wiki Bug 624. Ensure savefiles go to save and not scpt when using modules.
+- Wiki Bug 537. Partial fix of infinite loop during stair allocation on
+ small levels.
+- Wiki Bug 530. ToME no longer drops items inappropriately when changing
+ melee styles.
+- Wiki Bug 528. Character dumps now show the correct number of princess and
+ lost sword quests.
+- Wiki Bug 526. ToME no longer enters an infinite loop when fighting in
+ bare-hand combat sylte and bare-hand skill is < 1.
+- Wiki Bug 523. All types of recall check if the user really wants to leave
+ a unique level.
+- Wiki Bug 506. ToME no longer crashes attempting to drop non-existant
+ artifacts.
+- Wiki Bug 419. Use SKILL_BOULDER instead of SKILL_ARCHERY when throwing
+ a boulder.
+- Wiki Bug 411. Black breath no longer gets 3 chances to happen.
+- Wiki Bug 394 and 393. Inertia Control autocasting can no longer cast a
+ spell when antimagic field > 0 or when wielding a dark sword.
+- Wiki Bug 334. Companions are no longer saved in dungone save files.
+- Work around Mac OS 10.4.11 getlogin() bug - Neil
+- Wiki Bug 397. ToME no longer crashes on XP and Vista systems when viewing
+ quests or other info from the knowledge menu.
diff --git a/credits.txt b/doc/credits.txt
index 96e8ef6..96e8ef6 100644
--- a/credits.txt
+++ b/doc/credits.txt
diff --git a/doc/images/screenshot.png b/doc/images/screenshot.png
new file mode 100644
index 0000000..457c68f
--- /dev/null
+++ b/doc/images/screenshot.png
Binary files differ
diff --git a/lib/.gitignore b/lib/.gitignore
new file mode 100644
index 0000000..2de989f
--- /dev/null
+++ b/lib/.gitignore
@@ -0,0 +1,2 @@
+*.raw
+
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 44d7d1e..1559183 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,25 +1,19 @@
-INSTALL(FILES
- module.lua
- DESTINATION ${DEFAULT_PATH}
-)
INSTALL(DIRECTORY
apex
cmov
- core
data
dngn
edit
file
help
info
- mods
note
pref
save
- scpt
user
xtra
DESTINATION ${DEFAULT_PATH}
- PATTERN "*.raw" EXCLUDE
PATTERN "delete.me" EXCLUDE
)
+
+ADD_SUBDIRECTORY (mods)
diff --git a/lib/apex/.cvsignore b/lib/apex/.cvsignore
deleted file mode 100644
index dfa4396..0000000
--- a/lib/apex/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-scores.raw
diff --git a/lib/core/auto.lua b/lib/core/auto.lua
deleted file mode 100644
index b758db5..0000000
--- a/lib/core/auto.lua
+++ /dev/null
@@ -1,859 +0,0 @@
--- 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 == "inventory" then
- local f
- if not r[1] then
- f = function(object) return end
- else
- f = gen_rule_fct(r[1])
- end
- return function(object)
- local i = 0
- while i < INVEN_WIELD do
- if %f(player.inventory(i)) then
- return TRUE
- end
- i = i + 1
- end
- end
- elseif r.label == "equipment" then
- local f
- if not r[1] then
- f = function(object) return end
- else
- f = gen_rule_fct(r[1])
- end
- return function(object)
- local i = INVEN_WIELD
- while i < INVEN_TOTAL do
- if %f(player.inventory(i)) then
- return TRUE
- end
- i = i + 1
- end
- 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,
- },
- ["inventory"] =
- {
- {
- "Check is true if something in player's inventory matches",
- "the contained rule",
- },
- xml:collect([[<inventory><foo1>...</foo1></inventory>]]),
- function ()
- return xml:collect("<inventory></inventory>")
- end,
- },
- ["equipment"] =
- {
- {
- "Check is true if something in player's equipment matches",
- "the contained rule",
- },
- xml:collect([[<equipment><foo1>...</foo1></equipment>]]),
- function ()
- return xml:collect("<equipment></equipment>")
- 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
- if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "equipment") and auto_aux.rule[1] then return end
- if (auto_aux.rule.label == "rule" or auto_aux.rule.label == "inventory") 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" and auto_aux.rule.label ~= "equipment" and auto_aux.rule.label ~= "inventory" 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
deleted file mode 100644
index 8e88888..0000000
--- a/lib/core/building.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-__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
deleted file mode 100644
index 97f8d4b..0000000
--- a/lib/core/crpt_aux.lua
+++ /dev/null
@@ -1,182 +0,0 @@
--- 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
-
diff --git a/lib/core/dungeon.lua b/lib/core/dungeon.lua
deleted file mode 100644
index d91d785..0000000
--- a/lib/core/dungeon.lua
+++ /dev/null
@@ -1,55 +0,0 @@
--- 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
-
--- 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
diff --git a/lib/core/gen_idx.lua b/lib/core/gen_idx.lua
deleted file mode 100644
index 5f3af43..0000000
--- a/lib/core/gen_idx.lua
+++ /dev/null
@@ -1,261 +0,0 @@
--- 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
deleted file mode 100644
index 77e0aad..0000000
--- a/lib/core/gods.lua
+++ /dev/null
@@ -1,40 +0,0 @@
--- 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
deleted file mode 100644
index a581fe6..0000000
--- a/lib/core/help.lua
+++ /dev/null
@@ -1,141 +0,0 @@
--- 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
deleted file mode 100644
index 11b812d..0000000
--- a/lib/core/init.lua
+++ /dev/null
@@ -1,83 +0,0 @@
---
--- 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, "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
deleted file mode 100644
index 9522ec9..0000000
--- a/lib/core/load.lua
+++ /dev/null
@@ -1,37 +0,0 @@
--- 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
deleted file mode 100644
index 7e151d9..0000000
--- a/lib/core/load2.lua
+++ /dev/null
@@ -1,56 +0,0 @@
--- 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
-
--- 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
deleted file mode 100644
index cea1f4d..0000000
--- a/lib/core/mimc_aux.lua
+++ /dev/null
@@ -1,96 +0,0 @@
--- 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, 0, 0, 0, 0, -10)
- player.xtra_f3 = bor(player.xtra_f3, TR3_AGGRAVATE)
- end,
-}
diff --git a/lib/core/monsters.lua b/lib/core/monsters.lua
deleted file mode 100644
index ca2851a..0000000
--- a/lib/core/monsters.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- 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
deleted file mode 100644
index 97320b8..0000000
--- a/lib/core/objects.lua
+++ /dev/null
@@ -1,45 +0,0 @@
--- 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
deleted file mode 100644
index 1687822..0000000
--- a/lib/core/player.lua
+++ /dev/null
@@ -1,135 +0,0 @@
--- 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
diff --git a/lib/core/quests.lua b/lib/core/quests.lua
deleted file mode 100644
index dfe9db5..0000000
--- a/lib/core/quests.lua
+++ /dev/null
@@ -1,57 +0,0 @@
--- 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
deleted file mode 100644
index ec609b0..0000000
--- a/lib/core/s_aux.lua
+++ /dev/null
@@ -1,716 +0,0 @@
--- 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
-
--- 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
-
--- 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
-
--- Get spell school name(s) as a /-separated string.
-function spell_school_name(s)
- 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
- return sch_str
-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
-
- sch_str = spell_school_name(s)
-
- 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
-
-
--- 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
deleted file mode 100644
index d4a6316..0000000
--- a/lib/core/stores.lua
+++ /dev/null
@@ -1,32 +0,0 @@
--- 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
deleted file mode 100644
index eea1301..0000000
--- a/lib/core/util.lua
+++ /dev/null
@@ -1,158 +0,0 @@
--- 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
-
--- 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
-
--- 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
deleted file mode 100644
index 14f0511..0000000
--- a/lib/core/xml.lua
+++ /dev/null
@@ -1,375 +0,0 @@
--- 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 == "inventory" then
- if not_flag then
- xml.write(TERM_WHITE, tab)
- xml.write(ecol, "Nothing in your ")
- xml.write(bcol, "inventory")
- xml.write(ecol, " matches the following:")
- xml.write(TERM_WHITE, "\n")
- else
- xml.write(TERM_WHITE, tab)
- xml.write(ecol, "Something in your ")
- xml.write(bcol, "inventory")
- xml.write(ecol, " matches the following:")
- xml.write(TERM_WHITE, "\n")
- end
- elseif t.label == "equipment" then
- if not_flag then
- xml.write(TERM_WHITE, tab)
- xml.write(ecol, "Nothing in your ")
- xml.write(bcol, "equipment")
- xml.write(ecol, " matches the following:")
- xml.write(TERM_WHITE, "\n")
- else
- xml.write(TERM_WHITE, tab)
- xml.write(ecol, "Something in your ")
- xml.write(bcol, "equipment")
- xml.write(ecol, " matches the following:")
- xml.write(TERM_WHITE, "\n")
- end
- elseif t.label == "comment" then
- xml.write(TERM_WHITE, tab