Merge branch 'skillmenu'
authorShmuale Mark <shm.mark@gmail.com>
Wed, 15 Apr 2015 14:18:49 +0000 (10:18 -0400)
committerShmuale Mark <shm.mark@gmail.com>
Wed, 15 Apr 2015 14:18:49 +0000 (10:18 -0400)
Conflicts:
crawl-ref/source/skill_menu.cc

618 files changed:
.gitmodules
.mailmap
.travis.yml
.travis/apt.pl [new file with mode: 0644]
.travis/deps.pl
crawl-ref/CREDITS.txt
crawl-ref/INSTALL.txt
crawl-ref/README.md [moved from crawl-ref/README.txt with 75% similarity]
crawl-ref/docs/changelog.txt
crawl-ref/docs/crawl_manual.reST
crawl-ref/docs/develop/git/config.txt
crawl-ref/docs/develop/git/pre-commit [new file with mode: 0755]
crawl-ref/docs/develop/git/quickstart.txt
crawl-ref/docs/develop/levels/syntax.txt
crawl-ref/docs/develop/monster_speech.txt
crawl-ref/docs/develop/new_dev_checklist.txt
crawl-ref/docs/develop/patch_guide.txt
crawl-ref/docs/develop/release.txt
crawl-ref/docs/develop/save_compatibility.txt
crawl-ref/docs/develop/testing.txt
crawl-ref/docs/develop/tiles_creation.txt
crawl-ref/docs/license/lgpl.txt
crawl-ref/docs/license/libpng-LICENSE.txt
crawl-ref/docs/license/lualicense.txt
crawl-ref/docs/options_guide.txt
crawl-ref/docs/ssh_guide.txt
crawl-ref/docs/template/apt-tmpl.txt
crawl-ref/git-hooks/README.txt [deleted file]
crawl-ref/git-hooks/crawl-ref-email [deleted file]
crawl-ref/git-hooks/git_buildbot.py [deleted file]
crawl-ref/git-hooks/post-receive [deleted file]
crawl-ref/git-hooks/update [deleted file]
crawl-ref/licence.txt
crawl-ref/settings/052_monster_glyphs.txt
crawl-ref/settings/init.txt
crawl-ref/source/AppHdr.h
crawl-ref/source/MSVC/include/dirent.h
crawl-ref/source/MSVC/include/getopt.h
crawl-ref/source/Makefile
crawl-ref/source/ability.cc
crawl-ref/source/abyss.cc
crawl-ref/source/acquire.cc
crawl-ref/source/actor.cc
crawl-ref/source/actor.h
crawl-ref/source/adjust.cc
crawl-ref/source/android-project/jni/src/Android.mk
crawl-ref/source/aptitudes.h
crawl-ref/source/areas.cc
crawl-ref/source/areas.h
crawl-ref/source/arena.cc
crawl-ref/source/art-data.txt
crawl-ref/source/art-func.h
crawl-ref/source/artefact.cc
crawl-ref/source/attack.cc
crawl-ref/source/attack.h
crawl-ref/source/attitude-change.cc
crawl-ref/source/beam.cc
crawl-ref/source/beam.h
crawl-ref/source/bloodspatter.cc
crawl-ref/source/book-data.h
crawl-ref/source/branch-data.h
crawl-ref/source/butcher.cc
crawl-ref/source/chardump.cc
crawl-ref/source/cio.cc
crawl-ref/source/cio.h
crawl-ref/source/cloud.cc
crawl-ref/source/cmd-keys.h
crawl-ref/source/colour.cc
crawl-ref/source/command.cc
crawl-ref/source/coordit.h
crawl-ref/source/crash.cc
crawl-ref/source/crawl-gdb.py
crawl-ref/source/ctest.cc
crawl-ref/source/dactions.cc
crawl-ref/source/dat/database/godname.txt
crawl-ref/source/dat/database/godspeak.txt
crawl-ref/source/dat/database/help.txt
crawl-ref/source/dat/database/miscname.txt
crawl-ref/source/dat/database/monspeak.txt
crawl-ref/source/dat/database/monspell.txt
crawl-ref/source/dat/defaults/autopickup_exceptions.txt
crawl-ref/source/dat/defaults/messages.txt
crawl-ref/source/dat/defaults/misc.txt
crawl-ref/source/dat/defaults/standard_colours.txt
crawl-ref/source/dat/des/altar/ashenzari_visionary.des
crawl-ref/source/dat/des/altar/overflow.des
crawl-ref/source/dat/des/arrival/small.des
crawl-ref/source/dat/des/arrival/twisted.des
crawl-ref/source/dat/des/branches/abyss.des
crawl-ref/source/dat/des/branches/crypt.des
crawl-ref/source/dat/des/branches/geh.des
crawl-ref/source/dat/des/branches/hell.des
crawl-ref/source/dat/des/branches/lair.des
crawl-ref/source/dat/des/branches/pan.des
crawl-ref/source/dat/des/branches/shoals.des
crawl-ref/source/dat/des/branches/snake.des
crawl-ref/source/dat/des/branches/spider.des
crawl-ref/source/dat/des/branches/swamp.des
crawl-ref/source/dat/des/branches/temple.des
crawl-ref/source/dat/des/branches/tomb.des
crawl-ref/source/dat/des/branches/vaults.des
crawl-ref/source/dat/des/branches/vaults_rooms_hard.des
crawl-ref/source/dat/des/branches/vaults_rooms_standard.des
crawl-ref/source/dat/des/branches/zot.des
crawl-ref/source/dat/des/builder/alphashops.des [new file with mode: 0644]
crawl-ref/source/dat/des/builder/layout_cc.des
crawl-ref/source/dat/des/builder/rooms.des
crawl-ref/source/dat/des/builder/shops.des
crawl-ref/source/dat/des/builder/uniques.des
crawl-ref/source/dat/des/portals/bailey.des
crawl-ref/source/dat/des/portals/bazaar.des
crawl-ref/source/dat/des/portals/ossuary.des
crawl-ref/source/dat/des/portals/sewer.des
crawl-ref/source/dat/des/portals/trove.des
crawl-ref/source/dat/des/portals/volcano.des
crawl-ref/source/dat/des/portals/wizlab.des
crawl-ref/source/dat/des/serial/ponds.des [deleted file]
crawl-ref/source/dat/des/sprint/arena_sprint.des
crawl-ref/source/dat/des/sprint/linesprint.des
crawl-ref/source/dat/des/sprint/meat.des
crawl-ref/source/dat/des/sprint/pitsprint.des
crawl-ref/source/dat/des/sprint/sprint_mu.des
crawl-ref/source/dat/des/sprint/zigsprint.des
crawl-ref/source/dat/des/tutorial/lesson3.des
crawl-ref/source/dat/des/variable/ancient_champions.des [deleted file]
crawl-ref/source/dat/des/variable/compat.des
crawl-ref/source/dat/des/variable/float.des
crawl-ref/source/dat/des/variable/large_themed.des
crawl-ref/source/dat/des/variable/lemuel_castle.des
crawl-ref/source/dat/des/variable/mini_features.des
crawl-ref/source/dat/des/variable/mini_monsters.des
crawl-ref/source/dat/descript/ability.txt
crawl-ref/source/dat/descript/cs/unrand.txt
crawl-ref/source/dat/descript/da/hints.txt
crawl-ref/source/dat/descript/de/features.txt
crawl-ref/source/dat/descript/de/hints.txt
crawl-ref/source/dat/descript/de/quotes.txt
crawl-ref/source/dat/descript/es/features.txt
crawl-ref/source/dat/descript/es/monsters.txt
crawl-ref/source/dat/descript/es/tutorial.txt
crawl-ref/source/dat/descript/features.txt
crawl-ref/source/dat/descript/fr/branches.txt
crawl-ref/source/dat/descript/fr/features.txt
crawl-ref/source/dat/descript/fr/monsters.txt
crawl-ref/source/dat/descript/gods.txt
crawl-ref/source/dat/descript/items.txt
crawl-ref/source/dat/descript/ko/features.txt
crawl-ref/source/dat/descript/ko/monsters.txt
crawl-ref/source/dat/descript/monsters.txt
crawl-ref/source/dat/descript/ru/features.txt
crawl-ref/source/dat/descript/spells.txt
crawl-ref/source/dat/descript/tutorial.txt
crawl-ref/source/dat/descript/unrand.txt
crawl-ref/source/dat/descript/zh/features.txt
crawl-ref/source/dat/dlua/layout/geoelf.lua
crawl-ref/source/dat/dlua/layout/geoelf_directions.lua
crawl-ref/source/dat/dlua/layout/geoelf_glyphs.lua
crawl-ref/source/dat/dlua/layout/geoelf_rooms.lua
crawl-ref/source/dat/dlua/layout/layout.lua
crawl-ref/source/dat/dlua/layout/minimum_map_area.lua
crawl-ref/source/dat/dlua/layout/procedural.lua
crawl-ref/source/dat/dlua/lm_fog.lua
crawl-ref/source/dat/dlua/lm_mon_prop.lua
crawl-ref/source/dat/dlua/lm_monst.lua
crawl-ref/source/dat/dlua/lm_trig.lua
crawl-ref/source/dat/dlua/v_layouts.lua
crawl-ref/source/database.cc
crawl-ref/source/dbg-asrt.cc
crawl-ref/source/debian/changelog [new file with mode: 0644]
crawl-ref/source/debian/compat [new file with mode: 0644]
crawl-ref/source/debian/control [new file with mode: 0644]
crawl-ref/source/debian/copyright [new file with mode: 0644]
crawl-ref/source/debian/crawl-common.docs [new file with mode: 0644]
crawl-ref/source/debian/crawl-common.postinst [new file with mode: 0644]
crawl-ref/source/debian/crawl-common.postrm [new file with mode: 0644]
crawl-ref/source/debian/crawl-tiles.desktop [new file with mode: 0644]
crawl-ref/source/debian/crawl-tiles.menu [new file with mode: 0644]
crawl-ref/source/debian/crawl.desktop [new file with mode: 0644]
crawl-ref/source/debian/crawl.menu [new file with mode: 0644]
crawl-ref/source/debian/crawl.png [new file with mode: 0644]
crawl-ref/source/debian/crawl.postinst [new file with mode: 0644]
crawl-ref/source/debian/crawl.xpm [new file with mode: 0644]
crawl-ref/source/debian/rules [new file with mode: 0755]
crawl-ref/source/debian/source/format [new file with mode: 0644]
crawl-ref/source/debian/source/include-binaries [new file with mode: 0644]
crawl-ref/source/debian/source/options [new file with mode: 0644]
crawl-ref/source/debian/watch [new file with mode: 0644]
crawl-ref/source/decks.cc
crawl-ref/source/decks.h
crawl-ref/source/defines.h
crawl-ref/source/delay.cc
crawl-ref/source/describe-god.cc
crawl-ref/source/describe-spells.cc
crawl-ref/source/describe.cc
crawl-ref/source/dgl-message.cc
crawl-ref/source/dgn-delve.cc
crawl-ref/source/dgn-irregular-box.cc
crawl-ref/source/dgn-irregular-box.h
crawl-ref/source/dgn-overview.cc
crawl-ref/source/dgn-proclayouts.cc
crawl-ref/source/directn.cc
crawl-ref/source/dungeon.cc
crawl-ref/source/duration-data.h
crawl-ref/source/end.cc
crawl-ref/source/english.cc
crawl-ref/source/english.h
crawl-ref/source/enum.h
crawl-ref/source/env.h
crawl-ref/source/evoke.cc
crawl-ref/source/exclude.cc
crawl-ref/source/externs.h
crawl-ref/source/feature-data.h
crawl-ref/source/fight.cc
crawl-ref/source/files.cc
crawl-ref/source/fineff.cc
crawl-ref/source/fineff.h
crawl-ref/source/fontwrapper-ft.cc
crawl-ref/source/food.cc
crawl-ref/source/format.cc
crawl-ref/source/format.h
crawl-ref/source/ghost.cc
crawl-ref/source/glwrapper-ogl.cc
crawl-ref/source/godabil.cc
crawl-ref/source/godblessing.cc
crawl-ref/source/godcompanions.cc
crawl-ref/source/godconduct.cc
crawl-ref/source/godconduct.h
crawl-ref/source/goditem.cc
crawl-ref/source/godpassive.cc
crawl-ref/source/godprayer.cc
crawl-ref/source/godwrath.cc
crawl-ref/source/hints.cc
crawl-ref/source/hints.h
crawl-ref/source/hiscores.cc
crawl-ref/source/hiscores.h
crawl-ref/source/initfile.cc
crawl-ref/source/initfile.h
crawl-ref/source/invent.cc
crawl-ref/source/invent.h
crawl-ref/source/item_use.cc
crawl-ref/source/item_use.h
crawl-ref/source/itemname.cc
crawl-ref/source/itemname.h
crawl-ref/source/itemprop-enum.h
crawl-ref/source/itemprop.cc
crawl-ref/source/itemprop.h
crawl-ref/source/items.cc
crawl-ref/source/jobs.cc
crawl-ref/source/json.cc
crawl-ref/source/l_crawl.cc
crawl-ref/source/l_dgnbld.cc
crawl-ref/source/l_item.cc
crawl-ref/source/l_moninf.cc
crawl-ref/source/l_you.cc
crawl-ref/source/lang-fake.cc
crawl-ref/source/libunix.cc
crawl-ref/source/libw32c.cc
crawl-ref/source/lookup_help.cc
crawl-ref/source/los.cc
crawl-ref/source/mac/Makefile.app-bundle
crawl-ref/source/macro.cc
crawl-ref/source/main.cc
crawl-ref/source/makeitem.cc
crawl-ref/source/map_knowledge.h
crawl-ref/source/mapdef.cc
crawl-ref/source/mapdef.h
crawl-ref/source/maps.cc
crawl-ref/source/melee_attack.cc
crawl-ref/source/melee_attack.h
crawl-ref/source/menu.cc
crawl-ref/source/message.cc
crawl-ref/source/message.h
crawl-ref/source/mgen_data.h
crawl-ref/source/mgen_enum.h
crawl-ref/source/misc.cc
crawl-ref/source/misc/valgrind-suppress.txt
crawl-ref/source/mon-abil.cc
crawl-ref/source/mon-act.cc
crawl-ref/source/mon-behv.cc
crawl-ref/source/mon-cast.cc
crawl-ref/source/mon-cast.h
crawl-ref/source/mon-chimera.cc
crawl-ref/source/mon-chimera.h
crawl-ref/source/mon-clone.cc
crawl-ref/source/mon-data.h
crawl-ref/source/mon-death.cc
crawl-ref/source/mon-death.h
crawl-ref/source/mon-ench.cc
crawl-ref/source/mon-enum.h
crawl-ref/source/mon-flags.h
crawl-ref/source/mon-gear.cc
crawl-ref/source/mon-info.cc
crawl-ref/source/mon-info.h
crawl-ref/source/mon-movetarget.cc
crawl-ref/source/mon-pick-data.h
crawl-ref/source/mon-pick.cc
crawl-ref/source/mon-place.cc
crawl-ref/source/mon-place.h
crawl-ref/source/mon-poly.cc
crawl-ref/source/mon-project.cc
crawl-ref/source/mon-speak.cc
crawl-ref/source/mon-spell.h
crawl-ref/source/mon-stealth.cc
crawl-ref/source/mon-transit.cc
crawl-ref/source/mon-util.cc
crawl-ref/source/mon-util.h
crawl-ref/source/monster.cc
crawl-ref/source/monster.h
crawl-ref/source/mutation-data.h
crawl-ref/source/mutation.cc
crawl-ref/source/mutation.h
crawl-ref/source/newgame.cc
crawl-ref/source/ng-init.cc
crawl-ref/source/ng-input.cc
crawl-ref/source/ng-restr.cc
crawl-ref/source/ng-setup.cc
crawl-ref/source/ng-setup.h
crawl-ref/source/ng-wanderer.cc
crawl-ref/source/options.h
crawl-ref/source/orb.cc
crawl-ref/source/ouch.cc
crawl-ref/source/ouch.h
crawl-ref/source/output.cc
crawl-ref/source/package.cc
crawl-ref/source/place.cc
crawl-ref/source/place.h
crawl-ref/source/player-act.cc
crawl-ref/source/player-equip.cc
crawl-ref/source/player-reacts.cc
crawl-ref/source/player-stats.cc
crawl-ref/source/player-stats.h
crawl-ref/source/player.cc
crawl-ref/source/player.h
crawl-ref/source/potion.cc
crawl-ref/source/quiver.cc
crawl-ref/source/quiver.h
crawl-ref/source/random-pick.h
crawl-ref/source/random-weight.h
crawl-ref/source/random.cc
crawl-ref/source/random.h
crawl-ref/source/ranged_attack.cc
crawl-ref/source/ranged_attack.h
crawl-ref/source/religion-enum.h
crawl-ref/source/religion.cc
crawl-ref/source/religion.h
crawl-ref/source/rltiles/UNUSED/features/granite_stump.png [moved from crawl-ref/source/rltiles/dngn/statues/granite_stump.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/monsters/unborn.png [moved from crawl-ref/source/rltiles/mon/undead/unborn.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/gold_sparkles1.png [moved from crawl-ref/source/rltiles/misc/gold_sparkles1.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/gold_sparkles2.png [moved from crawl-ref/source/rltiles/misc/gold_sparkles2.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/gold_sparkles3.png [moved from crawl-ref/source/rltiles/misc/gold_sparkles3.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/goldaura0.png [moved from crawl-ref/source/rltiles/effect/goldaura0.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/goldaura1.png [moved from crawl-ref/source/rltiles/effect/goldaura1.png with 100% similarity]
crawl-ref/source/rltiles/UNUSED/other/goldaura2.png [moved from crawl-ref/source/rltiles/effect/goldaura2.png with 100% similarity]
crawl-ref/source/rltiles/dc-corpse.txt
crawl-ref/source/rltiles/dc-feat.txt
crawl-ref/source/rltiles/dc-gui.txt
crawl-ref/source/rltiles/dc-icons.txt
crawl-ref/source/rltiles/dc-item.txt
crawl-ref/source/rltiles/dc-misc.txt
crawl-ref/source/rltiles/dc-mon.txt
crawl-ref/source/rltiles/dc-player.txt
crawl-ref/source/rltiles/dc-spells.txt
crawl-ref/source/rltiles/dc-wall.txt
crawl-ref/source/rltiles/dngn/doors/closed_door.png [moved from crawl-ref/source/rltiles/dngn/closed_door.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/closed_door_crypt.png [moved from crawl-ref/source/rltiles/dngn/closed_door_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/fleshy_orifice_closed.png [new file with mode: 0644]
crawl-ref/source/rltiles/dngn/doors/fleshy_orifice_open.png [moved from crawl-ref/source/rltiles/dngn/gateways/fleshy_orifice_open.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_left.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_left.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_left_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_left_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_middle.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_middle_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_middle_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_right.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_right.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_closed_right_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_closed_right_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_left.png [moved from crawl-ref/source/rltiles/dngn/gate_open_left.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_left_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_open_left_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_middle.png [moved from crawl-ref/source/rltiles/dngn/gate_open_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_middle_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_open_middle_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_right.png [moved from crawl-ref/source/rltiles/dngn/gate_open_right.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_open_right_crypt.png [moved from crawl-ref/source/rltiles/dngn/gate_open_right_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_runed_left.png [moved from crawl-ref/source/rltiles/dngn/gate_runed_left.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_runed_middle.png [moved from crawl-ref/source/rltiles/dngn/gate_runed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_runed_right.png [moved from crawl-ref/source/rltiles/dngn/gate_runed_right.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_sealed_left.png [moved from crawl-ref/source/rltiles/dngn/gate_sealed_left.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_sealed_middle.png [moved from crawl-ref/source/rltiles/dngn/gate_sealed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/gate_sealed_right.png [moved from crawl-ref/source/rltiles/dngn/gate_sealed_right.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/open_door.png [moved from crawl-ref/source/rltiles/dngn/open_door.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/open_door_crypt.png [moved from crawl-ref/source/rltiles/dngn/open_door_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/runed_door.png [moved from crawl-ref/source/rltiles/dngn/runed_door.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/sealed_door.png [moved from crawl-ref/source/rltiles/dngn/sealed_door.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_down.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_down.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_down_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_down_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_middle.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_middle_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_middle_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_up.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_up.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_closed_up_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_closed_up_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_down.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_down.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_down_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_down_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_middle.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_middle_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_middle_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_up.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_up.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_open_up_crypt.png [moved from crawl-ref/source/rltiles/dngn/vgate_open_up_crypt.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_runed_down.png [moved from crawl-ref/source/rltiles/dngn/vgate_runed_down.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_runed_middle.png [moved from crawl-ref/source/rltiles/dngn/vgate_runed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_runed_up.png [moved from crawl-ref/source/rltiles/dngn/vgate_runed_up.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_sealed_down.png [moved from crawl-ref/source/rltiles/dngn/vgate_sealed_down.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_sealed_middle.png [moved from crawl-ref/source/rltiles/dngn/vgate_sealed_middle.png with 100% similarity]
crawl-ref/source/rltiles/dngn/doors/vgate_sealed_up.png [moved from crawl-ref/source/rltiles/dngn/vgate_sealed_up.png with 100% similarity]
crawl-ref/source/rltiles/dngn/gateways/fleshy_orifice_closed.png [deleted file]
crawl-ref/source/rltiles/effect/irradiate0.png [new file with mode: 0644]
crawl-ref/source/rltiles/effect/irradiate1.png [new file with mode: 0644]
crawl-ref/source/rltiles/effect/irradiate2.png [new file with mode: 0644]
crawl-ref/source/rltiles/effect/irradiate3.png [new file with mode: 0644]
crawl-ref/source/rltiles/item/armour/green_dragon_scale_mail.png [deleted file]
crawl-ref/source/rltiles/item/armour/green_dragon_scales.png [deleted file]
crawl-ref/source/rltiles/item/armour/red_dragon_scale_mail.png [new file with mode: 0644]
crawl-ref/source/rltiles/item/armour/red_dragon_scales.png [new file with mode: 0644]
crawl-ref/source/rltiles/mon/aberr/unseen_horror.png
crawl-ref/source/rltiles/mon/amorphous/azure_jelly.png
crawl-ref/source/rltiles/mon/animals/alligator_snapping_turtle.png
crawl-ref/source/rltiles/mon/animals/alligator_snapping_turtle_shell.png
crawl-ref/source/rltiles/mon/animals/anaconda.png
crawl-ref/source/rltiles/mon/animals/ball_python.png
crawl-ref/source/rltiles/mon/animals/bennu.png
crawl-ref/source/rltiles/mon/animals/black_bear.png
crawl-ref/source/rltiles/mon/animals/black_mamba.png
crawl-ref/source/rltiles/mon/animals/brain_worm.png
crawl-ref/source/rltiles/mon/animals/giant_mite.png [deleted file]
crawl-ref/source/rltiles/mon/animals/hell_hog.png
crawl-ref/source/rltiles/mon/animals/hog.png
crawl-ref/source/rltiles/mon/animals/holy_swine.png
crawl-ref/source/rltiles/mon/animals/moth_of_wrath.png
crawl-ref/source/rltiles/mon/animals/porcupine.png
crawl-ref/source/rltiles/mon/animals/shard_shrike.png
crawl-ref/source/rltiles/mon/animals/shock_serpent.png
crawl-ref/source/rltiles/mon/animals/worm.png
crawl-ref/source/rltiles/mon/aquatic/lava_snake.png
crawl-ref/source/rltiles/mon/boggart.png
crawl-ref/source/rltiles/mon/demons/balrug.png
crawl-ref/source/rltiles/mon/demons/hell_sentinel.png
crawl-ref/source/rltiles/mon/demons/reaper.png
crawl-ref/source/rltiles/mon/dragons/fire_dragon.png
crawl-ref/source/rltiles/mon/dragons/golden_dragon.png
crawl-ref/source/rltiles/mon/dragons/hydra1.png
crawl-ref/source/rltiles/mon/dragons/hydra2.png
crawl-ref/source/rltiles/mon/dragons/hydra3.png
crawl-ref/source/rltiles/mon/dragons/hydra4.png
crawl-ref/source/rltiles/mon/dragons/hydra5.png
crawl-ref/source/rltiles/mon/dragons/iron_dragon.png
crawl-ref/source/rltiles/mon/dragons/lindwurm.png
crawl-ref/source/rltiles/mon/entropy_weaver.png [new file with mode: 0644]
crawl-ref/source/rltiles/mon/holy/pearl_dragon.png
crawl-ref/source/rltiles/mon/nonliving/fire_elemental.png
crawl-ref/source/rltiles/mon/nonliving/water_elemental.png
crawl-ref/source/rltiles/mon/ogre.png
crawl-ref/source/rltiles/mon/ogre_mage.png
crawl-ref/source/rltiles/mon/salamander_stormcaller.png [new file with mode: 0644]
crawl-ref/source/rltiles/mon/undead/bone_dragon.png
crawl-ref/source/rltiles/mon/undead/death_scarab.png
crawl-ref/source/rltiles/mon/undead/freezing_wraith.png
crawl-ref/source/rltiles/mon/undead/ghost.png
crawl-ref/source/rltiles/mon/undead/profane_servitor.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_hydra1.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_hydra2.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_hydra3.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_hydra4.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_hydra5.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_large.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_quadruped_small.png
crawl-ref/source/rltiles/mon/undead/simulacra/simulacrum_snake.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_hydra1.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_hydra2.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_hydra3.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_hydra4.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_hydra5.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_turtle.png
crawl-ref/source/rltiles/mon/undead/skeletons/skeleton_ugly_thing.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_fish.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_hydra1.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_hydra2.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_hydra3.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_hydra4.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_hydra5.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_large.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_naga.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_quadruped_small.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_small.png
crawl-ref/source/rltiles/mon/undead/spectrals/spectral_snake.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_griffon.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_harpy.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_hydra1.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_hydra2.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_hydra3.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_hydra4.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_hydra5.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_ogre.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_snake.png
crawl-ref/source/rltiles/mon/undead/zombies/zombie_worm.png
crawl-ref/source/rltiles/mon/unique/dissolution.png
crawl-ref/source/rltiles/mon/unique/erolcha.png
crawl-ref/source/rltiles/mon/unique/geryon.png
crawl-ref/source/rltiles/mon/unique/purgy.png
crawl-ref/source/rltiles/mon/unique/royal_jelly.png
crawl-ref/source/rltiles/mon/unique/xtahua.png
crawl-ref/source/rltiles/mon/vault/draconian_monk_ghost.png
crawl-ref/source/rltiles/mon/vault/moon_troll.png [new file with mode: 0644]
crawl-ref/source/rltiles/player/body/dragonarm_green.png [deleted file]
crawl-ref/source/rltiles/player/body/dragonarm_red.png [new file with mode: 0644]
crawl-ref/source/rltiles/player/body/dragonsc_green.png [deleted file]
crawl-ref/source/rltiles/player/body/dragonsc_red.png [new file with mode: 0644]
crawl-ref/source/rltiles/player/transform/pig_form.png
crawl-ref/source/rltiles/tool/tile.cc
crawl-ref/source/rltiles/tool/tile_page.cc
crawl-ref/source/rot.cc
crawl-ref/source/sacrifice-data.h
crawl-ref/source/scripts/genmap.lua
crawl-ref/source/scripts/place-population.lua
crawl-ref/source/shopping.cc
crawl-ref/source/shout.cc
crawl-ref/source/show.cc
crawl-ref/source/showsymb.cc
crawl-ref/source/skills.cc
crawl-ref/source/skills.h
crawl-ref/source/species-data.h [new file with mode: 0644]
crawl-ref/source/species.cc
crawl-ref/source/species.h
crawl-ref/source/spl-book.cc
crawl-ref/source/spl-cast.cc
crawl-ref/source/spl-cast.h
crawl-ref/source/spl-clouds.cc
crawl-ref/source/spl-damage.cc
crawl-ref/source/spl-data.h
crawl-ref/source/spl-goditem.cc
crawl-ref/source/spl-goditem.h
crawl-ref/source/spl-miscast.cc
crawl-ref/source/spl-miscast.h
crawl-ref/source/spl-monench.cc
crawl-ref/source/spl-other.cc
crawl-ref/source/spl-summoning.cc
crawl-ref/source/spl-tornado.cc
crawl-ref/source/spl-transloc.cc
crawl-ref/source/spl-transloc.h
crawl-ref/source/spl-util.cc
crawl-ref/source/spl-util.h
crawl-ref/source/spl-wpnench.cc
crawl-ref/source/spl-wpnench.h
crawl-ref/source/spl-zap.cc
crawl-ref/source/sqldbm.cc
crawl-ref/source/stairs.cc
crawl-ref/source/stairs.h
crawl-ref/source/startup.cc
crawl-ref/source/stash.cc
crawl-ref/source/state.cc
crawl-ref/source/status.cc
crawl-ref/source/store.h
crawl-ref/source/stringutil.cc
crawl-ref/source/syscalls.cc
crawl-ref/source/tag-version.h
crawl-ref/source/tags.cc
crawl-ref/source/target.cc
crawl-ref/source/terrain.cc
crawl-ref/source/test/bounce.lua
crawl-ref/source/test/bounce2.lua
crawl-ref/source/test/findray.lua [deleted file]
crawl-ref/source/test/stress/fireworks.rc
crawl-ref/source/test/stress/qw.rc
crawl-ref/source/test/stress/woken_rest.rc
crawl-ref/source/throw.cc
crawl-ref/source/tilebuf.cc
crawl-ref/source/tilecell.cc
crawl-ref/source/tilecell.h
crawl-ref/source/tiledgnbuf.cc
crawl-ref/source/tiledoll.cc
crawl-ref/source/tilemcache.cc
crawl-ref/source/tilemcache.h
crawl-ref/source/tilepick-p.cc
crawl-ref/source/tilepick.cc
crawl-ref/source/tilepick.h
crawl-ref/source/tilereg-dgn.cc
crawl-ref/source/tilereg-menu.cc
crawl-ref/source/tilesdl.cc
crawl-ref/source/tileview.cc
crawl-ref/source/tileweb.cc
crawl-ref/source/timed_effects.cc
crawl-ref/source/transform.cc
crawl-ref/source/transform.h
crawl-ref/source/traps.cc
crawl-ref/source/travel.cc
crawl-ref/source/travel.h
crawl-ref/source/travel_defs.h
crawl-ref/source/unwind.h
crawl-ref/source/util/art-data.pl
crawl-ref/source/util/checkcommit [moved from crawl-ref/git-hooks/pre-commit with 55% similarity]
crawl-ref/source/util/checkwhite
crawl-ref/source/util/columnise-credits.pl
crawl-ref/source/util/crawl.nsi
crawl-ref/source/util/edit_vault
crawl-ref/source/util/gather_features
crawl-ref/source/util/gen-apt.pl
crawl-ref/source/util/tag-major-upgrade
crawl-ref/source/util/tiledef_lint
crawl-ref/source/util/tiles_unused
crawl-ref/source/util/unbrace
crawl-ref/source/view.cc
crawl-ref/source/viewgeom.cc
crawl-ref/source/viewmap.cc
crawl-ref/source/webserver/game_data/static/cell_renderer.js
crawl-ref/source/webserver/game_data/static/menu.js
crawl-ref/source/windowmanager-sdl.cc
crawl-ref/source/wiz-fsim.cc
crawl-ref/source/wiz-item.cc
crawl-ref/source/wiz-mon.cc
crawl-ref/source/wiz-you.cc
crawl-ref/source/worley.cc
crawl-ref/source/worley.h
crawl-ref/source/xom.cc
crawl-ref/source/xom.h
crawl-ref/source/zap-data.h
crawl-ref/source/zotdef.cc

index d4e0ca4..e415978 100644 (file)
@@ -1,33 +1,33 @@
 [submodule "crawl-ref/source/contrib/sqlite"]
        path = crawl-ref/source/contrib/sqlite
-       url = git://gitorious.org/crawl/crawl-sqlite.git
+       url = git://github.com/crawl/crawl-sqlite
 [submodule "crawl-ref/source/contrib/lua"]
        path = crawl-ref/source/contrib/lua
-       url = git://gitorious.org/crawl/crawl-lua.git
+       url = git://github.com/crawl/crawl-lua
 [submodule "crawl-ref/source/contrib/luajit"]
        path = crawl-ref/source/contrib/luajit
-       url = git://gitorious.org/crawl/crawl-luajit.git
+       url = git://github.com/crawl/crawl-luajit
 [submodule "crawl-ref/source/contrib/pcre"]
        path = crawl-ref/source/contrib/pcre
-       url = git://gitorious.org/crawl/crawl-pcre.git
+       url = git://github.com/crawl/crawl-pcre
 [submodule "crawl-ref/source/contrib/freetype"]
        path = crawl-ref/source/contrib/freetype
-       url = git://gitorious.org/crawl/crawl-freetype.git
+       url = git://github.com/crawl/crawl-freetype
 [submodule "crawl-ref/source/contrib/libpng"]
        path = crawl-ref/source/contrib/libpng
-       url = git://gitorious.org/crawl/crawl-libpng.git
+       url = git://github.com/crawl/crawl-libpng
 [submodule "crawl-ref/source/contrib/zlib"]
        path = crawl-ref/source/contrib/zlib
-       url = git://gitorious.org/crawl/crawl-zlib.git
+       url = git://github.com/crawl/crawl-zlib
 [submodule "crawl-ref/source/contrib/fonts"]
        path = crawl-ref/source/contrib/fonts
-       url = git://gitorious.org/crawl/crawl-fonts.git
+       url = git://github.com/crawl/crawl-fonts
 [submodule "crawl-ref/source/contrib/sdl2"]
        path = crawl-ref/source/contrib/sdl2
-       url = git://gitorious.org/crawl/crawl-sdl2.git
+       url = git://github.com/crawl/crawl-sdl2
 [submodule "crawl-ref/source/contrib/sdl2-image"]
        path = crawl-ref/source/contrib/sdl2-image
-       url = git://gitorious.org/crawl/crawl-sdl2-image.git
+       url = git://github.com/crawl/crawl-sdl2-image
 [submodule "crawl-ref/source/contrib/sdl2-mixer"]
        path = crawl-ref/source/contrib/sdl2-mixer
-       url = git://gitorious.org/crawl/crawl-sdl2-mixer
+       url = git://github.com/crawl/crawl-sdl2-mixer
index 1c08187..2386119 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -145,3 +145,6 @@ johnstein <boylejm@gmail.com>
 chequers <alex@jurkiewi.cz>
 ebering <trizor@gmail.com>
 zuurr <chiovolonit@gmail.com>
+knu <knu@idaemons.org>
+geekosaur <allbery.b@gmail.com>
+amalloy <alan@malloys.org>
index 21e542b..cc5583a 100644 (file)
@@ -3,11 +3,7 @@ compiler:
     - clang
     - gcc
 before_install:
-    - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
-    - sudo add-apt-repository ppa:zoogie/sdl2-snapshots -y
-    - sudo apt-get update -qq
-    - if [ "$CXX" = "clang++" ]; then sudo apt-get install -qq libstdc++-4.8-dev; fi
-    - if [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.8; fi
+    - perl .travis/apt.pl
     - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi
 env:
     - NOTHING=1
@@ -16,8 +12,8 @@ env:
     - TILES=1 FULLDEBUG=1
     - WEBTILES=1
     - WEBTILES=1 FULLDEBUG=1
-    - USE_DGAMELAUNCH=1
-    - USE_DGAMELAUNCH=1 WEBTILES=1
+    - USE_DGAMELAUNCH=1 EXTERNAL_DEFINES=-UTOURNEY
+    - USE_DGAMELAUNCH=1 WEBTILES=1 EXTERNAL_DEFINES=-UTOURNEY
     - TILES=1 BUILD_ALL=1
     - WEBTILES=1 BUILD_ALL=1
 git:
diff --git a/.travis/apt.pl b/.travis/apt.pl
new file mode 100644 (file)
index 0000000..c5864fa
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+run(qw(sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y));
+run(qw(sudo add-apt-repository ppa:zoogie/sdl2-snapshots -y));
+
+retry(qw(sudo apt-get update -qq));
+
+if ($ENV{CXX} eq "clang++") {
+    retry(qw(sudo apt-get install -qq libstdc++-4.8-dev));
+}
+elsif ($ENV{CXX} eq "g++") {
+    retry(qw(sudo apt-get install -qq g++-4.8));
+}
+
+sub run {
+    my @cmd = @_;
+
+    print "Running '@cmd'\n";
+    my $ret = system(@cmd);
+    exit($ret) if $ret;
+    return;
+}
+
+sub retry {
+    my (@cmd) = @_;
+
+    my $tries = 5;
+    my $sleep = 5;
+
+    my $ret;
+    while ($tries--) {
+        print "Running '@cmd'\n";
+        $ret = system(@cmd);
+        return if $ret == 0;
+        print "'@cmd' failed ($ret), retrying in $sleep seconds...\n";
+        sleep $sleep;
+    }
+
+    print "Failed to run '@cmd' ($ret)\n";
+    exit($ret);
+}
index 68b5697..51a2c8b 100644 (file)
@@ -7,8 +7,7 @@ my @deps = qw(
 );
 
 if ($ENV{BUILD_ALL}) {
-    system("git submodule update --init --recursive") == 0
-        or die "Couldn't update submodules: $?";
+    retry(qw(git submodule update --init --recursive));
 
     push @deps, qw(
        libegl1-mesa-dev
@@ -29,4 +28,23 @@ else {
     ) if $ENV{TILES} || $ENV{WEBTILES};
 }
 
-exec "sudo apt-get install @deps";
+retry(qw(sudo apt-get install), @deps);
+
+sub retry {
+    my (@cmd) = @_;
+
+    my $tries = 5;
+    my $sleep = 5;
+
+    my $ret;
+    while ($tries--) {
+        print "Running '@cmd'\n";
+        $ret = system(@cmd);
+        return if $ret == 0;
+        print "'@cmd' failed ($ret), retrying in $sleep seconds...\n";
+        sleep $sleep;
+    }
+
+    print "Failed to run '@cmd' ($ret)\n";
+    exit($ret);
+}
index 07cea3a..0fdb2da 100644 (file)
     Robert Vollmert
     Enne Walker
 
-* Marc H. Thoben, for setting up and maintaining our current Mantis tracker,
-  Wiki, development blog and Windows trunk builds, as well as providing public
-  telnet access to development builds, all on crawl.develz.org.
-
-* Rax E. Dillon, for all the work done in running the public telnet server
-  crawl.akrasiac.org, its associated August tourney, and other great
-  contributions.
-
-* Other administrators of public crawl servers, both present:
-    Jan Anders Bremer (crawl.lantea.net)
-    Aleksi Miikkael Luukkonen (crawl.lantea.net)
+* The administrators of public crawl servers, both present:
     John Boyle (crawl.berotato.org)
+    Jan Anders Bremer (crawl.lantea.net)
+    Rax E. Dillon (crawl.akrasiac.org)
     Wongi Hong (webzook.net / kr.dobrazupa.org)
     Alex 'chequers' Jurkiewicz (crawl.project357.org)
+    Aleksi Miikkael Luukkonen (crawl.lantea.net)
+    Neil Moore (crawl.s-z.org)
+    Marc H. Thoben (crawl.develz.org)
     dplusplus (http://lazy-life.ddo.jp/)
   and past:
     sd1989 (kr.dobrazupa.org)
@@ -75,6 +70,7 @@
     Mike Adams
     Aj Adamson
     Nikhil Addleman
+    Brandon Allbery
     Warwick Allison
     Austin Appleby
     araganzar
     Trent W. Buck
     Joe Buzzelli
     Policarpo Caballero
+    Can of Worms
     Cedor
     Rahul Chandra
     Thom Chiovoloni
     Henry Cipolla
+    Nicholas Connelly
     Vitor 'Baconkid' Costa
     Aaron Curtis
     Simon Curtis
     Lorenzo Lami
     Lantier
     Maciej Lapinski
+    Lamil Lerran
     Jordan Lewis
     Sami Liedes
     Dom Light
     Lain I. W. Madreisz
     Markus Maier
     Arien Malec
+    Alan Malloy
     Paul Maloney
     Wille Mäntylä
     James 'Eronarn' Meickle
     mikee
     Andrew Minton
     Shawn M Moore
+    Akinori Musha
     Eva Myers
     nagdon
     Naruni
     Tommy
     Mauris Van Hauwe
     Mikko Vepsäläinen
+    waylon531
     Steven Wheeler
     Thomas Willem
     Evan Williams
@@ -254,6 +256,7 @@ The Dungeon Crawl Stone Soup development team is:
     Chris Campbell
     Matthew Cline
     Florian Diebold
+    Rax E. Dillon
     Nicholas Feinberg
     Michael Gagno
     gammafunk
@@ -279,6 +282,7 @@ The Dungeon Crawl Stone Soup development team is:
     David Ploog
     reaverb
     Sage
+    Marc H. Thoben
     Jason Van
     Chris West
     Samuel Wilson
index 7dbc5e7..deecf18 100644 (file)
@@ -5,7 +5,7 @@ Getting DCSS to run
 -------------------
 
 This file describes how to compile a runtime executable of DCSS from the
-source code.  If you're trying to compile Crawl yourself, skip ahead to the
+source code. If you're trying to compile Crawl yourself, skip ahead to the
 next section, "Building Dungeon Crawl Stone Soup".
 
 If, however, you're having trouble getting a precompiled binary to run:
@@ -29,7 +29,7 @@ If, however, you're having trouble getting a precompiled binary to run:
 
 If you still can't get Crawl to run, you can ask for further help on IRC:
 ##crawl-dev on freenode, forums: https://crawl.develz.org/tavern/ or usenet:
-rec.games.roguelike.misc.  Please try to be as detailed as possible about
+rec.games.roguelike.misc. Please try to be as detailed as possible about
 any error messages you're getting.
 
 The rest of the file deals with compiling from the source.
@@ -47,7 +47,7 @@ Crawl Stone Soup is known to run on the following platforms as of version
 - Microsoft Windows 2000/XP/Vista/7/8
 
 The only officially supported compilers are gcc (4.7 or newer) and clang
-(3.4 or newer).  On Windows, gcc is usually available as MinGW; compilation
+(3.4 or newer). On Windows, gcc is usually available as MinGW; compilation
 with MSVC (Microsoft Visual Studio 2013) is supported.
 
 There's no reason Crawl shouldn't work on other modern systems, especially
@@ -61,16 +61,16 @@ Source Code Checkout
 --------------------
 
 If you don't already have the source code downloaded (in the form of a .zip
-or .tar.bz2 file), you can obtain the latest source code from Git.  MinGW
+or .tar.bz2 file), you can obtain the latest source code from Git. MinGW
 users can obtain Git by installing msysgit (described in the MinGW section).
 Linux users can just install the 'git' or 'git-core' package with whatever
-package manager they use.  Note that there used to be another package called
+package manager they use. Note that there used to be another package called
 'git' (now 'gnuit') going around which stands for 'GNU interactive tools'.
 This is not what you want.
 
 Once you have Git installed, you just need to do:
 
-    git clone git://gitorious.org/crawl/crawl.git
+    git clone https://github.com/crawl/crawl.git
 
 And then to get the contributing libraries, enter the newly cloned
 repository via 'cd crawl' and type:
@@ -90,18 +90,18 @@ Crawl can be built with some optional features:
 
 Crawl Stone Soup also uses a level compiler to compile special level
 definitions; to make changes to the level compiler, you'll need the flex and
-bison/byacc tools (Other lex/yaccs may also work).  More details are
+bison/byacc tools (Other lex/yaccs may also work). More details are
 available below.
 
 Sound can be provided by SDL2_mixer (the default), by WINMM on Windows
 (defined by WINMM_PLAY_SOUNDS in AppHdr.h), or by an external command on
-Unix systems (SOUND_PLAY_COMMAND in AppHdr.h).  To enable this, append
+Unix systems (SOUND_PLAY_COMMAND in AppHdr.h). To enable this, append
 SOUND=y to the make invocation.
 
 Stone Soup 0.6+ includes Lua 5.1.4 in its submodules. Crawl uses Lua for
-dungeon generation.  In addition, Crawl has a (rudimentary) Lua interface
+dungeon generation. In addition, Crawl has a (rudimentary) Lua interface
 for users to run scripts which can do things such as conditionalise parts of
-the .crawlrc/init.txt.  Such user Lua scripts are enabled by default, but
+the .crawlrc/init.txt. Such user Lua scripts are enabled by default, but
 can be turned off by appending NO_LUA_BINDINGS=y to the make invocation.
 
 
@@ -111,7 +111,7 @@ Building on Unix (Linux, *BSD, Solaris, etc.)
 To install or not to install:
 
 If only one user on the system (you) is going to be playing Crawl, you do
-not need to use "make install".  A simple "make" will build Crawl in the
+not need to use "make install". A simple "make" will build Crawl in the
 source directory, where you can run it as "./crawl".
 
 
@@ -122,7 +122,7 @@ typing the following as root/sudo:
 apt-get install build-essential libncursesw5-dev bison flex liblua5.1-0-dev \
   libsqlite3-dev libz-dev pkg-config libsdl2-image-dev libsdl2-mixer-dev    \
   libsdl2-dev libfreetype6-dev libpng-dev ttf-dejavu-core
-(the last five are needed only for tiles builds).  This is the complete set,
+(the last five are needed only for tiles builds). This is the complete set,
 with it you don't have a need for the bundled "contribs".
 
 If you are going to be rebuilding after doing small changes a lot, it is
@@ -138,8 +138,8 @@ by running the following as root:
 yum install gcc gcc-c++ make bison flex ncurses-devel lua-devel sqlite-devel \
   zlib-devel pkgconfig SDL-devel SDL_image-devel libpng-devel freetype-devel \
   dejavu-sans-fonts dejavu-sans-mono-fonts
-(the last six are needed only for tile builds).  As with Debian, this package
-list avoids the need for the bundled "contribs".  For Fedora 20 or later,
+(the last six are needed only for tile builds). As with Debian, this package
+list avoids the need for the bundled "contribs". For Fedora 20 or later,
 replace lua-devel by compat-lua-devel.
 
 ccache can be installed with:
@@ -167,8 +167,8 @@ Building:
 * cd to the source directory.
 
 * Most users can simply type 'make' without any extra flags, and get a
-  working build as a result.  If just typing 'make' works for you, then you
-  shouldn't need to read any further.  BSD and Solaris users may have to use
+  working build as a result. If just typing 'make' works for you, then you
+  shouldn't need to read any further. BSD and Solaris users may have to use
   'gmake' instead of 'make'.
 
 * If you want a graphical (tiled) build, then you should add 'TILES=y' to
@@ -177,7 +177,7 @@ Building:
     make TILES=y
 
   Note that the graphical build requires that you have development libraries
-  installed for SDL, SDL_image, libpng, zlib, and freetype.  If your system
+  installed for SDL, SDL_image, libpng, zlib, and freetype. If your system
   doesn't have these installed, you can usually get them via your package
   manager (apt-get, emerge, yum, etc).
 
@@ -309,7 +309,7 @@ Running MSYS and building Crawl:
 
 * If you get a message about missing SDL.h even though you do have contribs
   installed, your version of msys may suffer from a bug that has been fixed
-  since.  Please either update msys, or delete /mingw/bin/sdl-config so it
+  since. Please either update msys, or delete /mingw/bin/sdl-config so it
   won't interfere with the copy shipped with Crawl.
 
 * For you stubborn types who insist on using separate msys and git installs,
@@ -334,8 +334,8 @@ Building on Windows (cygwin)
 
 * Get Cygwin from http://www.cygwin.com/. When installing, ensure that the
   following packages are selected: gcc, g++, make, flex, bison,
-  libncurses-devel.  If you'd like to build from git, install the git-core
-  package.  You may also want to install diff, patch, and other such tools.
+  libncurses-devel. If you'd like to build from git, install the git-core
+  package. You may also want to install diff, patch, and other such tools.
 
 * Once Cygwin is installed, open a Cygwin bash shell (use the Start menu or
   desktop icon, do not double-click bash.exe in Explorer).
@@ -436,14 +436,14 @@ Crawl looks for several data files when starting up. They include:
 All these files are in the source tree under source/dat.
 
 Crawl will also look for documentation files when players invoke the help
-system.  These files are available under the docs directory.
+system. These files are available under the docs directory.
 
 Your built Crawl binary must be able to find these files, or it will not
 start.
 
 If Crawl is built without an explicit DATA_DIR_PATH (this is the most common
 setup), it will search for its data files under the current directory, and
-if it can't find them there, one level above the current directory.  In
+if it can't find them there, one level above the current directory. In
 short, it uses these search paths: ., ./dat, ./docs, .., ../dat, ../docs.
 
 
@@ -459,7 +459,7 @@ If you're using one of standard makefile, the steps described in this
 section are performed automatically:
 
 The level compiler source is in the source/util directory (levcomp.lpp and
-levcomp.ypp).  The steps involved in building the level compiler are:
+levcomp.ypp). The steps involved in building the level compiler are:
 
 * Run flex on levcomp.lpp to produce the levcomp.lex.cc lexer.
 * Run bison on levcomp.ypp to produce the levcomp.tab.cc parser and
@@ -468,7 +468,7 @@ levcomp.ypp).  The steps involved in building the level compiler are:
   files into the Crawl executable.
 
 For convenience on systems that don't have flex/bison, pre-generated
-intermediate files are provided under source/prebuilt.  The makefiles
+intermediate files are provided under source/prebuilt. The makefiles
 provided with the Crawl source distribution will use these pre-generated
 files automatically if flex/bison is not available.
 
@@ -483,12 +483,12 @@ Lua
 Security on multiuser systems (Unix):
 
 As of 0.8, setuid and setgid installs are no longer supported, thus any
-previous concerns are no longer applicable.  Lua user scripts are sandboxed
+previous concerns are no longer applicable. Lua user scripts are sandboxed
 and should be generally safe even on public servers (besides increasing the
 attack surface).
 
-As of 0.3, the Lua source is included with Crawl.  It will be used if you
-don't have Lua headers installed.  Note that we don't provide security
+As of 0.3, the Lua source is included with Crawl. It will be used if you
+don't have Lua headers installed. Note that we don't provide security
 support for Lua, and thus if you run a public server or a kiosk, it is
 strongly recommended to use system Lua which does receive security updates
 from whatever distribution you use.
@@ -496,32 +496,32 @@ from whatever distribution you use.
 
 PCRE
 ----
-As of 0.6.0, PCRE 7.9 source is included with Crawl.  It is enabled by
-default.  The sources in contrib/pcre are identical to the 7.9 distro except
+As of 0.6.0, PCRE 7.9 source is included with Crawl. It is enabled by
+default. The sources in contrib/pcre are identical to the 7.9 distro except
 for the use of a custom-made Makefile instead of the automake system that
 was in place previously.
 
 On Unixes, you're better served by the existing POSIX regular expression
-support.  If you want PCRE, your package management system is again your
-best bet.  Remember to install development headers, not just the plain
+support. If you want PCRE, your package management system is again your
+best bet. Remember to install development headers, not just the plain
 library.
 
 
 Unicode
 -------
-As of 0.8, Unicode support is included in all ports.  Still, you might need
+As of 0.8, Unicode support is included in all ports. Still, you might need
 to ensure your terminal can display non-basic glyphs.
 
-On Unix, you want an UTF-8 locale.  All modern distributions install one by
-default, but you might have somehow dropped required settings.  To check
-this, run "locale charmap", which should say "UTF-8".  If it's not, please
-ensure either LANG, LC_ALL or LC_CTYPE is set.  A typical line would be
+On Unix, you want an UTF-8 locale. All modern distributions install one by
+default, but you might have somehow dropped required settings. To check
+this, run "locale charmap", which should say "UTF-8". If it's not, please
+ensure either LANG, LC_ALL or LC_CTYPE is set. A typical line would be
 "export LC_ALL=en_US.UTF-8".
 
 On Windows, the console behaves differently for TrueType and legacy (bitmap)
-fonts.  The latter (mostly) work only on certain language editions of
+fonts. The latter (mostly) work only on certain language editions of
 Windows, such as English, and even there, they work adequately only for
-Crawl's default settings.  For anything more, please select one of TrueType
-fonts.  If, like one of our players, you are deeply attached to the looks of
+Crawl's default settings. For anything more, please select one of TrueType
+fonts. If, like one of our players, you are deeply attached to the looks of
 bitmap fonts, you can download a corrected version of the Terminal font from
 http://www.yohng.com/software/terminalvector.html
similarity index 75%
rename from crawl-ref/README.txt
rename to crawl-ref/README.md
index dccd11f..7da6efe 100644 (file)
@@ -1,3 +1,5 @@
+[![Build Status](https://travis-ci.org/crawl/crawl.svg?branch=master)](https://travis-ci.org/crawl/crawl)
+
 Dungeon Crawl Stone Soup
 ========================
 
@@ -7,23 +9,28 @@ caprice. To win, you'll need to be a master of tactics and strategy, and
 prevail against overwhelming odds.
 
 Contents:
+
 1. How to get started? (Information for new players)
 2. The file system of this version.
 3. Contact and reporting bugs.
 4. License and history information.
 5. How you can help!
 
-There is a list of frequently asked questions which you can access pressing
+There is a list of frequently asked questions which you can access by pressing
 ?Q in the game.
 
+
 1. Getting started
 ------------------
+
 If you'd like to dive in immediately, your best bets are to
+
 * start a game and pick a tutorial (select tutorial in the game menu), or
 * read quickstart.txt (in the docs/ directory), or
 * for studious readers, browse the manual (see below for all doc files).
 
-Internet play:
+#### Internet play:
+
 You can play Crawl online, both competing with other players and
 watching them. Check the homepage at
 http://crawl.develz.org/wordpress/howto for details, including
@@ -31,7 +38,8 @@ information about additional servers. You just need a ssh or telnet
 console; on Windows, the PuTTY program works very well. Read
 docs/ssh_guide.txt for a step by step guide on how to set this up.
 
-Tiles:
+#### Tiles:
+
 Crawl features an alternative to the classical ASCII display; Tile-based
 Crawl is often a lot more accessible to new players. Tiles are available for
 Linux, Windows and OS X.
@@ -41,52 +49,74 @@ although it does not support all features of local Tiles yet.
 
 2. File system
 --------------
+
 The following files in the Crawl's main folder are essential:
 
-* crawl              These start the game. (The actual name depends on your
-* crawl.exe          operating system.)
+* crawl, crawl.exe
+
+    These start the game. (The actual name depends on your operating system.)
 
 The docs/ folder contains the following helpful texts (all of which can be
 read in-game by bringing up the help menu with '?'):
 
-* quickstart.txt     A very short introduction into the game.
-* crawl_manual.txt   The complete manual; describing all aspects in detail.
-                     Contains appendices on species, backgrounds, etc.
-* options_guide.txt  Describes all options in detail. The structure of
-                     init.txt follows this text.
-* macros_guide.txt   A how-to on using macros and keymappings, with examples.
-* tiles_help.txt     An explanation of the Tiles interface.
+* quickstart.txt
+
+    A very short introduction into the game.
+
+* crawl_manual.txt
+
+    The complete manual; describing all aspects in detail. Contains appendices
+    on species, backgrounds, etc.
+
+* options_guide.txt
+
+    Describes all options in detail. The structure of init.txt follows this
+    text.
+
+* macros_guide.txt
+
+    A how-to on using macros and keymappings, with examples.
+
+* tiles_help.txt
+
+    An explanation of the Tiles interface.
 
 The settings/ folder contains, among others, the following files:
 
-* init.txt           These contain the options for the game. The defaults
-* .crawlrc           play well, so don't bother with this in the beginning.
-                     Permanent death is not an option, but a feature!
-* macro.txt          Playing Crawl can be made even more convenient by
-                     redefining keys and assigning macros. Ignore early on.
+* init.txt, .crawlrc
+
+    These contain the options for the game. The defaults play well, so don't
+    bother with this in the beginning. Permanent death is not an option, but a
+    feature!
+
+* macro.txt
+
+    Playing Crawl can be made even more convenient by redefining keys and
+    assigning macros. Ignore early on.
 
 
 3. Contact and reporting bugs
 -----------------------------
-The official webpage is at
-      http://crawl.develz.org/
-and there you can find both trackers to add bug reports, feature requests, or
-upload patches, as well as sources and binaries. This is the best way to report
-bugs or mention new ideas.
 
-There is a Usenet newsgroup dealing with roguelikes, including Crawl:
-      rec.games.roguelike.misc
-It is polite to flag your post with -crawl- as other games are discussed over
-there as well. This is a good place to ask general questions, both from new
-players as well as for spoilers, or to announce spectacular wins.
+#### http://crawl.develz.org/
+At the official webpage, you can find both trackers to add bug reports,
+feature requests, or upload patches, as well as sources and binaries. This is
+the best way to report bugs or mention new ideas.
+
+#### rec.games.roguelike.misc
+This is a Usenet newsgroup dealing with roguelikes, including Crawl. It is
+polite to flag your post with -crawl- as other games are discussed over there
+as well. This is a good place to ask general questions, both from new players
+as well as for spoilers, or to announce spectacular wins.
 
-If you want to chime in with development, you can read the mailing list
-      crawl-ref-discuss@lists.sourceforge.net
-which can get pretty busy on the occasion.
+#### crawl-ref-discuss@lists.sourceforge.net
+If you want to chime in with development, you can read the mailing list which
+can get pretty busy on the occasion.
 
 
 4. License and history information
 ----------------------------------
+
 This is a descendant of Linley's Dungeon Crawl. Development of the main branch
 stalled at version 4.0.0b26, with a final alpha of 4.1 being released by Brent
 Ross in 2005. Since 2006, the Dungeon Crawl Stone Soup team has been continuing
@@ -100,6 +130,7 @@ Stone Soup features both ASCII and graphical (Tiles) display.
 
 Crawl gladly and gratuitously uses the following open source packages; the
 text files mentioned can be found in the docs/license/ folder:
+
 * The Lua script language, see lualicense.txt.
 * The PCRE library for regular expressions, see pcre_license.txt.
 * The SQLite library as database engine; it is properly in the public domain.
@@ -109,16 +140,17 @@ text files mentioned can be found in the docs/license/ folder:
 
 5. How you can help
 -------------------
+
 If you like the game and you want to help making it better, there are a number
 of ways to do so:
 
-* Playtesting.
+#### Playtesting.
 At any time, there will be bugs -- playing and reporting these is a great help.
 There is a beta server at http://crawl.develz.org. Besides pointing out bugs,
 new ideas on how to improve interface or gameplay are welcome. You can mention
 them again at the homepage, http://crawl.develz.org/mantis/.
 
-* Vault making.
+#### Vault making.
 Crawl uses many hand-drawn (but often randomised) maps. Making them is fun and
 easy. It's best to start with simple entry vaults (look at dat/entry.des for a
 first impression). Later, you may read docs/develop/levels/introduction.txt.
@@ -126,7 +158,7 @@ If you're ambitious, new maps for branch ends are possible, as well.
 If you've made some maps, you can test them on your system (no compiling
 needed) and then just mail them to the mailing list.
 
-* Speech.
+#### Speech.
 Monster talking provides a lot of flavour. Just like vaults, speech depends
 upon a large set of entries. Since most of the speech has been outsourced, you
 can add new prose. The syntax is effective, but slightly strange, so you may
@@ -134,7 +166,7 @@ want to read docs/monster_speech.txt.
 Again, changing or adding speech is possible on your local game. If you
 have added something, send the files to the list.
 
-* Monster descriptions.
+#### Monster descriptions.
 You can look up the current monster descriptions in-game with '?/' or just read
 them in dat/descript/monsters.txt. The following conventions should be more or
 less obeyed: Descriptions ought to contain flavour text, ideally pointing out
@@ -143,13 +175,13 @@ stay away from the most generic ones.
 If you like, you can similarly modify the descriptions for features, items or
 branches.
 
-* Tiles.
+#### Tiles.
 Since version 0.4, tiles are integrated within Crawl. Having variants of
 often-used glyphs is always good. If you want to give this a shot, please
 contact us via the mailing list. In case you drew some tiles of your own,
 tell us via the list.
 
-* Patches.
+#### Patches.
 If you like to, you can download the source code and apply patches. Both
 patches for bug fixes as well as implementation of new features are very much
 welcome. If you want to code a cool feature that is likely to be accepted but
index bc4c067..6e14969 100644 (file)
@@ -1,6 +1,103 @@
-Stone Soup 0.16 (up to 0.16-a0-3944-g1fbc3e7)
+Stone Soup 0.17 (up to 0.17-a0-570-g4b92f67)
+--------------------------------------------
+
+Branches, Environment
+---------------------
+* Shadow Traps have been removed.
+* New WizLab: Lehudib's Moon Base, where the player can fight the legendary
+  Moon Troll.
+* Tukima's Studio and Eringya's Formal Garden WizLabs have been removed.
+
+Character
+---------
+* All races have had their evocations aptitudes reduced by one point.
+* MP scaling has been reworked & simplified; MP aptitudes have been adjusted.
+* Rot is now healed first, instead of last; effectively, rotting reduces the
+  effectiveness of healing until cured. The Rot status is also gone, with rot
+  taking place immediately.
+* Being at 0 in a stat no longer causes direct damage to the player.
+* Undead stat gain: Mummies get one of Str, Int, or Dex every 5 levels, and
+  Vampires get either Int or Dex every 5 levels.
+* Headbutt aux attacks no longer apply a small stun and the hooves aux kicks no
+  longer bypass AC.
+* Teleportitis only triggers when it would land the player in LOS of
+  enemies. It triggers slightly more frequently as a result, but no longer
+  triggers in Labyrinths or the Abyss.
+
+Gods
+----
+* Beogh's smite damage now scales better with invocations.
+* Finesse no longer gives contamination.
+* Lugonu and Trog no longer accept corpse sacrifices.
+* The Shining One no longer blesses allies' weapons and armour; their angel
+  summoning ability is now slightly cheaper.
+* Gozag's gold distraction is now an effect centered on the player that's
+  refreshed whenever they find (make) new corpse-gold, rather than being
+  centered on the gold piles themselves.
+* Cheibriados' slouch damage is now based on monster movement speed.
+* Ashenzari now gives the Scrying ability at 2* piety.
+
+Items
+-----
+* The Cloak of Starlight is now +2 and gives Stlth--.
+* Warding now applies to ranged attacks.
+* Troll leather armour now provides regeneration to trolls.
+* Staves of summoning no longer have a chance of abjuring on hit.
+* Staves of power now give a flat +15 mp, rather than scaling with your MP; they
+  no longer store MP when swapping.
+* For the player and for monsters, curare needles no longer have an effect that
+  prevents the use of abilities relying on breath.
+* Removed items:
+  - The Cloak of Flash.
+  - Potions of decay.
+
+Monsters
+--------
+* New monsters:
+  - Salamander stormcallers, appearing in the late Dungeon and the Vaults. They
+    chant for a few turns before calling down a Fire Storm on their victims.
+  - Entropy weavers, appearing in Spider, Vaults, and Depths. They chant for a
+    few turns before corroding their victims' equipment terribly.
+* XP and placement for many uniques has been adjusted; in general, uniques have
+  been removed from depths at which they're no longer threatening, and their XP
+  has increased considerably.
+* rElec++ has been removed; monsters that previously had it now either have
+  rElec+ or full immunity.
+* Non-magic-immune monsters are now always confuseable.
+* Revenants no longer ignore silence.
+* Phantasmal warriors' attacks no longer pierce shields & armour.
+* Death knights now have agony & haunt in addition to pain mirror.
+* Worms are less vulnerable to some forms of kiting, having more regen in
+  exchange for less max hp.
+* Liches and Ancient Liches can no longer can have Shadow Creatures in their
+  spell set.
+* Removed monsters:
+  - Unborn.
+  - Giant mites.
+
+Spells
+------
+* Enslavement is replaced by Tukima's Dance in the Enchanter starting book, and
+  by Gell's Gravitas in the Arcane Marksman starting book. Tukima's Dance no
+  longer appears in the Book of Enchantments.
+* Gell's Gravitas is now level 3 and smite-targeted, but no longer confuses
+  enemies.
+* Summon Guardian Golem is now level 3.
+* Freeze no longer has a stun effect.
+* Removed spells:
+  - Sure Blade.
+  - Enslavement.
+
+Interface
+---------
+* The level map viewer (X) now allows you to examine monsters, items & features
+  (with 'v'), just as the normal examine mode does.
+
+
+Stone Soup 0.16 (20150311)
 --------------------------------------------
 * New gods: Gozag Ym Sagoz the Greedy and Ru the Awakened.
+* Zot Defense has been removed.
 
 Branches, environment
 ---------------------
@@ -87,6 +184,7 @@ Monsters
   - Mermaids -> sirens.
   - Sirens -> merfolk avatars.
   - Meatsprint lost souls -> wretched souls.
+* The Royal Jelly now leaks a large number of jellies when polymorphed.
 * Ghost crabs have been moved from Crypt to Swamp.
 * The "misshapen and mutated" status (from Malmutate and the new Irradiate
   spell) is now temporary, but more significant.
@@ -101,6 +199,8 @@ Monsters
 * Sense invisibility has been simplified; monsters that had it now have see
   invisible + blindness immunity instead.
 * Magic immunity no longer confers confusion immunity to monsters.
+* Many monsters are no longer magic immune: notably, most plant enemies, eyes,
+  mummies, and angels.
 * Polymorphed monsters now return to their original shapes in death.
 * Liches (and ancient liches) now choose their spells randomly from a large
   set of possible spells, instead of having fixed spellbooks.
@@ -111,7 +211,7 @@ Spells
 * New spells:
   - Singularity (L9 Translocation), which summons a singularity & sucks in all
     nearby enemies, severely damaging them in the process.
-  - Gell's Gravitas (L6 Hexes/Translocation), which pulls nearby creatures
+  - Gell's Gravitas (L5 Hexes/Translocation), which pulls nearby creatures
     toward the target, causing damage if they collide & occasionally confusing
     them.
   - Hydra Form (L6 Transmutation), a short-duration form that attacks all
@@ -195,6 +295,7 @@ Items
   - Tomes of Destruction.
   - The book of Wizardry.
   - The Spear of the Botono.
+  - The blowgun of the Assassin.
 
 
 Cards
@@ -266,12 +367,11 @@ Gods
   - Does not have piety.
   - Defeated enemies turn to gold; these gold piles distract nearby
     creatures, causing them to sometimes not act.
-  - Potion Petition: purchase one set of potion effects.
+  - Potion Petition: purchase one set of potion effects. The first use is free.
   - Call Merchant: fund a merchant to set up shop somewhere near to areas
     of the dungeon you have explored.
   - Bribe Branch: send money to the inhabitants of a branch to turn them
     temporarily neutral or incite them to join you.
-  - Duplication: one non-artefact item can be duplicated at an altar.
 * New god: Ru the Awakened. Ru is a temple god, with an altar either in
   Temple or on D:2-9.
   - Periodically offers the player a choice of three permanent sacrifices in
@@ -295,6 +395,7 @@ Gods
   - Draw One and Peek at Two are no more.
   - Cards have been changed thoroughly over once more.
   - Nemelex now grants destruction decks again.
+* While following TSO, enemies will no longer be distracted by your allies.
 * TSO's Divine Shield no longer benefits from Shields skill.
 * Zin:
  - Hell effect protection halved; now capping out at 50%, down from 100%.
@@ -840,7 +941,7 @@ Monsters
     - Rakshasas gain a monster spell "Phantom Mirror", which summons
       a clone of a nearby allied monster with half the hit points, with
       a 50% chance of swapping the clone for the original; this replaces
-      their previous self-cloning abilities.  They can now also cast
+      their previous self-cloning abilities. They can now also cast
       Iskenderun's Mystic Blast and will summon two clones of themselves
       at 50% HP as a one-time effect.
     - Giant orange brains get Mass Confusion instead of Confusion.
index c2138fe..866927b 100644 (file)
@@ -44,44 +44,10 @@ You can:
 - take part in the annual tournament
 - play the most recent development version
 
-The relevant webpage, telnet and ssh addresses are:
+A full list of available servers and information on how to connect to them can
+be found at: http://crawl.develz.org/wordpress/howto
 
-akrasiac.org (located in North America) (CAO)
-  :http: ``http://crawl.akrasiac.org``
-  :tiles: ``http://webtiles.akrasiac.org``
-  :telnet: ``crawl.akrasiac.org:23``
-  :ssh: ``joshua@crawl.akrasiac.org (ssh key or password joshua)``
-
-s-z.org (located in North America) (CSZO)
-  :http: ``http://dobrazupa.org``
-  :tiles: ``https://crawl.s-z.org``
-  :ssh: ``crawl@crawl.s-z.org (ssh key or password crawlingtotheusa)``
-
-berotato.org (located in North America) (CBRO)
-  :http: ``http://crawl.berotato.org/crawl/``
-  :tiles: ``http://crawl.berotato.org``
-  :ssh: ``crawler@crawl.berotato.org (ssh key required)``
-
-develz.org (located in Europe) (CDO)
-  :http: ``http://crawl.develz.org``
-  :telnet: ``crawl.develz.org:345``
-  :ssh: ``crawl@crawl.develz.org (ssh key required)``
-
-lantea.net (located in Europe) (CLAN)
-  :http: ``http://crawl.lantea.net/crawl/``
-  :tiles: ``https://crawl.lantea.net:8080``
-  :ssh: ``terminal@crawl.lantea.net (ssh key or password terminal)``
-
-An ssh key can be obtained at:
-
-  http://crawl.develz.org/cao_key (PuTTY: http://crawl.develz.org/cao_key.ppk) (for CAO, CDO, CLAN)
-
-  http://dobrazupa.org/cszo_key (PuTTY: http://dobrazupa.org/cszo_key.ppk) (for CSZO)
-
-  http://crawl.berotato.org/crawl/keys/ (PuTTY: cbro_key.ppk, unix: cbro_key) (for CBRO)
-
-The servers carry no guarantees, though they are generally always running. More
-information is available at: http://crawl.develz.org/wordpress/howto
+The servers carry no guarantees, though they are generally always running.
 
 There is also a lively IRC channel dedicated to Crawl at ##crawl on irc.freenode.net.
 You can ask for help and there will always be someone to watch your game and
@@ -180,16 +146,16 @@ m
   shows your skills and lets you disable (or focus) training as desired
 
 i
-  the equipment
+  lists equipment and items
 
 ^
-  the text for your god, should you have started with a religion
+  displays information on your god, should you have started with a religion
 
 %
-  a general, if terse, overview of your gear and most attributes
+  gives a general, if terse, overview of your gear and most attributes
 
 Ctrl-O
-  an overview of the parts of the dungeon you have discovered so far
+  gives an overview of the parts of the dungeon you have discovered so far
 
 ****************************************
 C. Attributes and stats
@@ -200,7 +166,7 @@ starts with the character's name and title (determined by the character's
 highest skill), followed by a line listing the species. If the character
 worships a god, the name of the deity is also listed in the second line,
 together with an indicator of piety. Below these two lines follow a lot of
-numbers. These describe different aspects of the hero.
+numbers. These describe different aspects of the character.
 
 Health
   A measure of life force. Synonymous with hit points and sometimes abbreviated
@@ -231,27 +197,26 @@ Shield
   Abbreviated to "SH". This number is a measure of how good your shield (if any)
   is at blocking attacks.
 
-Your hero's primary attributes are Strength, Intelligence and Dexterity:
+Your character's primary attributes are Strength, Intelligence and Dexterity:
 
 Strength
-  Abbreviated to "Str". Affects your ability to use heavy armours effectively.
+  Abbreviated to "Str". Increases your effectiveness with melee and ranged
+  weapons. Affects your ability to use heavy armours and shields effectively.
 
 Intelligence
   Abbreviated to "Int". Affects how well you can cast spells as well as how much
   nutrition spellcasting takes.
 
 Dexterity
-  Abbreviated to "Dex". Significantly affects your ability to dodge attacks aimed
+  Abbreviated to "Dex". Somewhat increases your effectiveness with melee and
+  ranged weapons. Significantly affects your ability to dodge attacks aimed
   at you, your general effectiveness with shields, your stealth, and your
   effectiveness when stabbing unaware enemies.
 
-Strength and Dexterity also both increase your effectiveness with melee and ranged
-weapons.
+Attributes grow permanently from gaining levels, and may increase or decrease
+temporarily from mutations or while using certain artefacts or abilities.
 
-They grow permanently from gaining levels, and may increase or decrease
-temporarily from mutations or using appropriate artefacts or abilities.
-
-If any one of these drops to zero for some reason, you will experience very
+If any attribute drops to zero for some reason, you will experience very
 unpleasant side-effects, being slowed significantly and taking damage if the
 stat is drained further, as well as some stat-specific negative effects. These
 effects will persist for a short while even after the attribute is restored.
@@ -391,8 +356,7 @@ apparently nothing there, you will still attack it, just in case there's
 something invisible lurking around.
 
 A variety of dangerous and irritating traps are hidden around the dungeon. Traps
-sometimes like normal floor until discovered. Some traps can be disarmed with
-the Ctrl-direction commands.
+sometimes look like normal floor until discovered.
 
 Shops
 ========================================
@@ -606,12 +570,12 @@ The details screen shows:
 - Its difficulty level, speed (if different from average speed), size,
   resistances, and special attacks.
 
-- Its spells and special abilities.  Monster spells and abilities are
+- Its spells and special abilities. Monster spells and abilities are
   of five types:
 
   * Special abilities are innate, non-magical effects.
 
-  * Magical abilities are innate magical effects.  They are affected
+  * Magical abilities are innate magical effects. They are affected
     by antimagic.
 
   * Demonic and angelic abilities are similar to magical abilities.
@@ -619,7 +583,7 @@ The details screen shows:
   * Divine abilities call upon the monster's god for a magical effect.
     They are prevented by silence, but not affected by antimagic.
 
-  * Spells are cast using memorized magical words.  They are both
+  * Spells are cast using memorized magical words. They are both
     prevented by silence and affected by antimagic.
 
 ****************************************
@@ -663,7 +627,7 @@ g
   reassign item slot (works also for spell slots and abilities)
 
 i
-  shows inventory - pressing the key of an item shows additional information
+  show inventory - pressing the key of an item shows additional information
 
 {
   inscribe item (see Appendix `6. Inscriptions`_)
@@ -869,11 +833,11 @@ energies. Wands each have a certain amount of charges, and a wand will cease to
 function when its charges run out. You must identify a wand to find out how many
 uses it has left. This can be done with a scroll of identify; characters with a
 good Evocations skill may also deduce the number of charges simply upon evoking
-the wand. Wands are aimed in the same way as missile weapons, and you can
-release the power of a wand by evoking it with 'V'. See section I for
-targeting. There are also a number of wands that may be useful to aim at
-yourself, but it is usually prudent to know what you are evoking before you do
-so.
+the wand. Evoking a wand without having fully identified the number of charges
+remaining will waste some charges. Wands are aimed in the same way as missile
+weapons, and you can release the power of a wand by evoking it with 'V'. See
+section I for targeting. There are also a number of wands that may be useful to
+aim at yourself.
 
 =" Rings and Amulets
 ========================================
@@ -897,7 +861,7 @@ You can press '"' to quickly check what jewellery you're wearing.
 
 There are a number of types of magical staves. Some enhance your general
 spellcasting ability, while some greatly increase the power of a certain class
-of spells (and possibly reduce your effectiveness with others). They can even be
+of spells (and possibly reduce your effectiveness with others). Some can even be
 used in hand-to-hand combat, although with mediocre effectiveness unless you can
 harness their special power, using a combination of the Evocations skill and the
 skill specific to the staff's type. Staves which do not enhance a destructive
@@ -907,7 +871,8 @@ magic school tend to have no combat powers at all.
 ========================================
 
 Rods ('|') hold unique spells that you can evoke while wielding the rod,
-using the 'v' command. They have a pool of magical energy which regenerates
+using the 'v' command. The effectiveness of these spells is increased by
+Evocations skill. They have a pool of magical energy which regenerates
 according to the rod's enchantment (which can be increased using scrolls of
 recharging) and your Evocations skill. They're shorter than full-length staves
 and thus use the Maces &amp; Flails skill instead of Staves when used as cudgels.
@@ -917,12 +882,7 @@ and thus use the Maces &amp; Flails skill instead of Staves when used as cudgels
 
 Most books contain magical spells which your character may be able to learn. You
 can read a book with the 'r' command, which lets you access a description of
-each spell, or memorise spells from it with the 'M' command. Use 'z' to cast
-previously memorised spells. For spells demanding a target, the comments on
-using missile weapons apply. Many spells have a limited range and casting will
-be aborted if there are no potential targets within this range. If this case,
-neither magic nor time are expended. If, for whatever reason, you want to cast
-the spell nonetheless, you can use the 'Z' command.
+each spell, or memorise spells from it with the 'M' command.
 
 In addition to picking up new spells, your character may also wish to get rid of
 old ones. The most convenient way to do so is by reading a scroll of amnesia,
@@ -932,11 +892,6 @@ relevant pages of a book. Unfortunately, this violent procedure will inevitably
 consume the whole book. You can undertake this by 'r'eading a book, then
 selecting a spell you already have learnt, and 'F'orget it.
 
-You can also press 'I' to just have a look at all spells memorised. From this
-screen, you can read the descriptions of the spells and check various details
-about your casting abilities. Note that '=' allows you to change what spells are
-assigned to what keys.
-
 Some powerful spellbooks require a certain amount of magical skill to read their
 contents.
 
@@ -1041,13 +996,6 @@ Many of the more powerful spells carry disadvantages or risks; you should read
 the spell description (obtained by reading the spellbook in which you found the
 spell) before casting anything.
 
-There is a completely different way to use spells: via rods. These are magical
-staves holding their own unique spells. Rods store a certain number of magic
-points, which are used for powering the spells they contain; when not fully
-charged, they regenerate magic points gradually. You can spend scrolls of
-recharging on rods in order to increase the size of their magical reservoir.
-The effectiveness of your rod's spells is governed by your Evocations skill.
-
 Be careful of magic-using enemies! Some of them can use magic just as well as
 you, if not better, and often use it intelligently.
 
@@ -1103,10 +1051,10 @@ and if you find religion to be an inconvenience you can always renounce your
 faith (use the 'a' command - but most gods resent being scorned). There is also
 a second page with additional details, press '^!' to access it.
 
-The 'p' command lets you pray to your god, in order to sacrifice items. For
-example, blood gods will want you to offer corpses to them by pressing 'p' over
-the corpse(s). Praying also gives you a sense of what your god thinks of you.
-Some gods may grant a gift at their altar; if so, this is explained in the '^'
+The 'p' command lets you pray to your god. If your god asks appreciates corpse
+sacrifice, pressing 'p' over corpses will offer them to your god. Praying also
+gives you a sense of what your god thinks of you. Some gods may grant a gift
+when praying at their altar with high piety; if so, this is explained in the '^'
 and '^!' screens.
 
 To use any powers which your god deems you fit for, access the abilities menu
@@ -1125,7 +1073,7 @@ pressing '?/G'.
 Note that the good gods will not accept demonic or undead devotees.
 
 If you like to start the game with a religion, choose your background from
-Healer, Berserker, Chaos Knight, Abyssal Knight, or Death Knight.
+Berserker, Chaos Knight or Abyssal Knight.
 
 ****************************************
 K. Mutations
@@ -1931,21 +1879,10 @@ Berserkers
   prove worthy), but who forbids the use of spell magic. They enter the dungeon
   with a weapon of their choice, and dressed in animal skins.
 
-Healers
-  The Healer is a priest of Elyvilon. Healers begin with minor healing powers,
-  but can gain far greater abilities in the long run. They are able to persuade
-  monsters to abstain from bloodshed, gaining both piety and experience that
-  way.
-
 Chaos Knights
   The Chaos Knight is a plaything of Xom. Xom is a very unpredictable (and
   possibly psychotic) entity who rewards or punishes according to whim.
 
-Death Knights
-  The Death Knight is a fighter who aligns him or herself with the powers of
-  death and worships Yredelemnul the Dark, who grants followers the ability to
-  re-animate the dead and eventually many more powerful undead followers.
-
 Abyssal Knights
   The Abyssal Knight is a fighter serving Lugonu the Unformed, ruler of the
   Abyss. They are granted some power over the Abyss, and must spread death and
@@ -3163,9 +3100,6 @@ rXXX
 \-XXX
   signifies a suppressed ability
 
-XXX+
-  is a stronger version of property XXX
-
 XX+6
   means a boost to some numerical stat (similar with XX-2, etc.)
 
@@ -3192,6 +3126,9 @@ rF-
 rN+
   one level of negative energy resistance (life protection)
 
+MR++
+  two levels of magical resistance (resistance to hostile enchantments)
+
 rPois
   poison resistance
 
@@ -3216,9 +3153,6 @@ Int+3
 Slay+3
   accuracy &amp; damage modifier (to melee and ranged combat)
 
-MR
-  boost to magical resistance to hostile enchantments
-
 Stealth+
   stealth boost
 
@@ -3310,5 +3244,5 @@ Debugging inscriptions
 ========================================
 
 If you've entered wizard mode, then you can change the zapping range of a wand
-by inscribing it with 'range:number' (e.g., 'range:50').  This only works for
+by inscribing it with 'range:number' (e.g., 'range:50'). This only works for
 wands zapped by the player.
index 7921aba..c5e41ab 100644 (file)
@@ -20,7 +20,7 @@ shouldn't be global config options:
 * Always rebase when setting up a new branch:
       git config branch.autosetuprebase always
 
-* Don't translate line endings to the native format.  Necessary for
+* Don't translate line endings to the native format. Necessary for
   Visual Studio projects:
       git config core.autocrlf false
 
diff --git a/crawl-ref/docs/develop/git/pre-commit b/crawl-ref/docs/develop/git/pre-commit
new file mode 100755 (executable)
index 0000000..cde3194
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+## This pre-commit hook calls scripts to check the diff contents of the commit
+## before it's commited.
+
+crawl-ref/source/util/checkcommit || exit 1
+
+## With -n to only report the problems, not fix, and -m to only examine
+## modified files. The latter might catch problems not part of the commit, but
+## this is pretty rare.
+if ! crawl-ref/source/util/checkwhite -n -m; then
+    echo "Run checkwhite to fix bad whitespace"
+    exit 1
+fi
+
+if ! crawl-ref/source/util/unbrace -n -m; then
+    echo "Run unbrace to fix bad braces"
+    exit 1
+fi
index 4a519aa..d69c0d2 100644 (file)
@@ -1,27 +1,25 @@
-This is for those who haven't used git before and need a crash-course
-on basic operations. I'll keep this as simple as possible, and focus
-specifically on working on Stone Soup, rather than git in general.
-I've also added links to the official git docs at the end, which you
-can read instead of, or in addition to this, if you're inclined.
+This is for those who haven't used git before and need a crash-course on basic
+operations. I'll keep this as simple as possible, and focus specifically on
+working on Stone Soup, rather than git in general. I've also added links to
+the official git docs at the end, which you can read instead of, or in addition
+to this, if you're inclined.
 
 Installing git
 --------------
-I strongly recommend using at least git 1.6 or later. While you can
-use older versions, the newer versions are much more user-friendly.
-This guide assumes you're using 1.6.
+I strongly recommend using at least git 1.6 or later. While you can use older
+versions, the newer versions are much more user-friendly. This guide assumes
+you're using 1.6.
 
-Linux: Install git using your package manager. The git package is
-usually called git-core.
+Linux: Install git using your package manager. The git package is usually
+called git-core.
 
-Mac: Install git using Mac ports or Fink. The MacPorts port is
-called git-core (sudo port install git-core).
+Mac: Install git using Mac ports or Fink. The MacPorts port is called git-core
+(sudo port install git-core).
 
-Windows: Install msysgit (http://msysgit.github.io/#contribute).
-Be sure to download 'msysGit', as this also includes most of the
-necessary tools to build Crawl - other installers include only Git
-itself.
-TortoiseGit is apparently pretty usable now for those who want Windows
-explorer integration, but I have not used it myself.
+Windows: Install msysgit (http://msysgit.github.io/#contribute). See the
+detailed instructions in INSTALL.txt so that you get a recent enough GCC. Be
+sure to download 'msysGit', as this also includes most of the necessary tools
+to build Crawl - other installers include only Git itself.
 
 Using git for Stone Soup development
 ------------------------------------
@@ -34,21 +32,21 @@ Using git for Stone Soup development
    Set your email address:
    $ git config --global user.email "jdoe@users.sourceforge.net"
 
-   This sets your default e-mail id for all git work on your system. You
-   can use any e-mail address you have. In the above, John Doe is still
-   using his old sourceforge id as a spam-catching measure.
+   This sets your default e-mail id for all git work on your system. You can
+   use any e-mail address you have. In the above, John Doe is still using his
+   old sourceforge id as a spam-catching measure.
 
-1. Clone the crawl repository from gitorious (analogous to svn checkout):
+1. Clone the crawl repository from github (analogous to svn checkout):
 
    Developers (anyone with commit rights to the git repo):
-   $ git clone git@gitorious.org:crawl/crawl.git
+   $ git clone git@github.com:crawl/crawl.git
 
    Other users:
-   $ git clone git://gitorious.org/crawl/crawl.git
+   $ git clone https://github.com/crawl/crawl.git
 
-   "git clone" clones Crawl's entire git repository to your machine. When
-   it's done, you have a full local copy of the crawl repository with all
-   its history.
+   "git clone" clones Crawl's entire git repository to your machine. When it's
+   done, you have a full local copy of the crawl repository with all its
+   history.
 
    If you want to build the contributing libraries rather than using the
    versions already installed on your system, you can fetch the submodules:
@@ -57,14 +55,14 @@ Using git for Stone Soup development
 
 2. Sanity-check your cloned repository (optional):
 
-   When you come back to a git repository after a while, you may not
-   recall where you cloned it from. You can check with:
+   When you come back to a git repository after a while, you may not recall
+   where you cloned it from. You can check with:
 
    $ git remote -v
 
-   For me, this reports:
-   origin  git@gitorious.org:crawl/crawl.git (fetch)
-   origin  git@gitorious.org:crawl/crawl.git (push)
+   This reports:
+   origin  git@github.com:crawl/crawl.git (fetch)
+   origin  git@github.com:crawl/crawl.git (push)
 
    See all available branches in the repository:
    $ git branch -a
@@ -74,91 +72,85 @@ Using git for Stone Soup development
 
 3. SSH keys (for core developers):
 
-   If you want to actually push to the gitorious repository, you will
-   need to create an ssh key and upload your public key to gitorious.org.
+   If you want to push to the Github repository, you will need to create an ssh
+   key and upload your public key to github.com.
 
-   Let's create an ssh key (if you already have a key, skip this
-   step):
+   Let's create an ssh key (if you already have a key, skip this step):
    $ ssh-keygen
 
-   You can accept all the default options and use an empty passphrase
-   for convenience (don't do this on an account you share with other
-   people, or they can commit to the repository too :P)
+   You can accept all the default options and use an empty passphrase for
+   convenience (don't do this on an account you share with other people, or
+   they can commit to the repository too :P)
 
-   Once the key is generated, you'll have two files id_rsa, and
-   id_rsa.pub in your ~/.ssh (the .ssh directory in your home
-   directory). id_rsa is your private key, and should not be shared or
-   given to anyone else (or they can pretend to be you); id_rsa.pub is
-   your public key, and this is what you'll upload to gitorious.
+   Once the key is generated, you'll have two files id_rsa, and id_rsa.pub in
+   your ~/.ssh (the .ssh directory in your home directory). id_rsa is your
+   private key, and should not be shared or given to anyone else (or they can
+   pretend to be you); id_rsa.pub is your public key, and this is what you'll
+   upload to github.
 
-   Go to gitorious.org, login, and hit the "Dashboard" link to access
-   your account settings. Click on "Manage SSH keys" and then on
-   "Add SSH key".
+   Go to github.com, login, and from the menu bar, hit the setting gear icon at
+   the top-right to access your account settings. Click on "SSH keys" and then
+   on "Add SSH key".
 
-   Copy the one line in your id_rsa.pub, and paste it into the
-   public SSH keys text area. Hit Save when you're done.
+   Enter your account name or another descriptive name as the title. Copy the
+   one line in your id_rsa.pub, and paste it into the Key text area. Hit Save
+   when you're done.
 
-   Within a few minutes of uploading your key, you should be able to
-   push/pull from gitorious.org.
+   Within a few minutes of uploading your key, you should be able to push/pull
+   from github.com.
 
-   Windows users (msysgit) can follow these exact same steps in a git
-   bash prompt.
+   Windows users (msysgit) can follow these exact same steps in a git bash
+   prompt.
 
-   You can also create a DSA key instead of an RSA key (or use an
-   existing DSA key). gitorious accepts both.
-
-4. Updating your repository with the latest changes from gitorious.org:
+4. Updating your repository with the latest changes from github.com:
 
    Use
    $ git pull
-   to grab the latest commits from gitorious.org.
+   to grab the latest commits from github.com.
 
-   git pull assumes your working tree is clean; it will refuse to
-   overwrite any files that you've modified locally (unlike svn's
-   "svn update", which will happily try to modify the file anyway,
-   and add conflict markers if there are conflicts).
+   git pull assumes your working tree is clean; it will refuse to overwrite any
+   files that you've modified locally (unlike svn's "svn update", which will
+   happily try to modify the file anyway, and add conflict markers if there are
+   conflicts).
 
-   If git pull fails because you have local changes, you have two
-   options:
+   If git pull fails because you have local changes, you have two options:
 
    1. Complete your local changes and create a commit, then pull
       again.
 
-   2. Temporarily save (stash) your local changes, pull changes from
-      gitorious, and reapply your local changes:
+   2. Temporarily save (stash) your local changes, pull changes from github,
+      and reapply your local changes:
       $ git stash
       (this saves your local changes)
       $ git pull
-      (grab changes from gitorious)
+      (grab changes from github)
       $ git stash apply
       (reinstate your local changes)
 
-      If your local changes conflict with the changes from gitorious,
-      git stash apply will warn you of the conflict and add conflict
-      markers to the relevant files.
+      If your local changes conflict with the changes from github, git stash
+      apply will warn you of the conflict and add conflict markers to the
+      relevant files.
 
 5. Committing a change to the 'master' branch:
 
-   git's master branch is the equivalent of svn trunk. Immediately
-   after cloning a repository, the cloned crawl repo will be on the
-   master branch. You can check what branch you're working on at any
-   time with:
+   git's master branch is the equivalent of svn trunk. Immediately after
+   cloning a repository, the cloned crawl repo will be on the master
+   branch. You can check what branch you're working on at any time with:
 
    $ git branch
 
    The active branch will be asterisked.
 
-   Before starting work, let's make sure our working copy is not
-   dirty:
+   Before starting work, let's make sure our working copy is not dirty:
 
    $ git status
    # On branch master
    nothing to commit (working directory clean)
 
-   Looking good. For our first change, let's assume we're fixing a
-   bug in, say, stuff.cc.
+   Looking good. For our first change, let's assume we're fixing a bug in, say,
+   player.cc.
 
-   $ vim stuff.cc
+   $ vim player.cc
    <hackhackhack>
    $ make
    <test; that bugfix rocks the world>
@@ -170,24 +162,23 @@ Using git for Stone Soup development
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
-   #       modified:   stuff.cc
+   #       modified:   player.cc
    #
    no changes added to commit (use "git add" and/or "git commit -a")
 
-   git sees that we've modified stuff.cc. You can see what changes
-   you've made with:
+   git sees that we've modified player.cc. You can see what changes you've made
+   with:
 
    $ git diff
 
    Time to actually commit the change:
    $ git commit -a
 
-   git will bring up your preferred editor for you to enter your
-   commit message. On Windows, you may have to set your EDITOR
-   environment variable; alternatively, you can specify your commit
-   message on the command line:
+   git will bring up your preferred editor for you to enter your commit
+   message. On Windows, you may have to set your EDITOR environment variable;
+   alternatively, you can specify your commit message on the command line:
 
-   $ git commit -a -m "Fitted stuff.cc with warp drive"
+   $ git commit -a -m "Fitted player.cc with mountain dwarves"
 
    When you're done, your change has been committed to your local
    repository. Let's try git status again:
@@ -198,21 +189,21 @@ Using git for Stone Soup development
    #
    nothing to commit (working directory clean)
 
-   So git's telling us that we have one local commit that we haven't
-   sent to gitorious' git repository yet. Let's send in our fix
-   to gitorious.org (core devs only):
+   So git's telling us that we have one local commit that we haven't sent to
+   github's git repository yet. Let's send in our fix to github.com (core devs
+   only):
 
    $ git push
 
-   You will be prompted for your password again. git should then
-   push your commit, producing a last line that looks like:
+   You will be prompted for your password again. git should then push your
+   commit, producing a last line that looks like:
 
    54ea5f1..ec2e15e  master -> master
 
-   The exact commit ids will differ, but a successful push looks
-   like this. Your push may fail if someone has pushed changes to
-   gitorious already (git will warn you about a non-fast-forward).
-   In this case, just pull and push again:
+   The exact commit ids will differ, but a successful push looks like
+   this. Your push may fail if someone has pushed changes to github already
+   (git will warn you about a non-fast-forward). In this case, just pull and
+   push again:
 
    $ git pull
    $ git push
@@ -220,24 +211,24 @@ Using git for Stone Soup development
 6. Patching (for regular contributors, not core devs):
 
    Once you have commited and tested a change, you can create a patch for it.
-   You can then send this patch to the devs or upload it to a mantis
-   issue for review and potential addition to the game.
+   You can then send this patch to the devs or upload it to a mantis issue for
+   review and potential addition to the game.
 
    To start, make and save your changes in whatever text editor you choose.
    Then, as explained above, commit those changes:
 
    $ git commit -a
 
-   In most cases, this is a good time to compile and test the change.  Make
-   sure it works correctly, testing in Wizard Mode as appropriate.
+   In most cases, this is a good time to compile and test the change. Make sure
+   it works correctly, testing in Wizard Mode as appropriate.
 
    When you're happy with your patch, you can make a patch file with the
-   format-patch command.  For example:
+   format-patch command. For example:
 
    $ git format-patch -1
 
-   This will create a patch from the most recent commit you've made.  The
-   patch file will be placed in your base Crawl source directory.
+   This will create a patch from the most recent commit you've made. The patch
+   file will be placed in your base Crawl source directory.
 
    For a more detailed patch creation guide, check out patch_guide.txt in the
    /docs/develop/ directory.
@@ -247,131 +238,103 @@ Using git for Stone Soup development
    You can see a history of changes with
    $ git log
 
-   git log by itself may make it appear that the change history is a
-   straight line, but we know that git can handle branching
-   histories. We can request that git log show us the branching
-   history with:
+   git log by itself may make it appear that the change history is a straight
+   line, but we know that git can handle branching histories. We can request
+   that git log show us the branching history with:
 
    $ git log --graph
 
-   You can also view history using the gitk GUI (this is installed
-   by default; everyone should have it, and I recommend it):
+   You can also view history using the gitk GUI (this is installed by default;
+   everyone should have it, and I recommend it):
 
    $ gitk
 
-   The history commands normally show you the history of the current
-   branch, but you can view other branches/tags' histories by naming
-   the branch or tag:
+   The history commands normally show you the history of the current branch,
+   but you can view other branches/tags' histories by naming the branch or tag:
 
-   $ gitk origin/stone_soup-0.2
-   $ gitk release-0.5.1
+   $ gitk origin/stone_soup-0.16
 
-   If you want to annotate a file with last author and commit to
-   change each line in the file, you can use git blame, which is
-   similar to svn blame:
+   If you want to annotate a file with last author and commit to change each
+   line in the file, you can use git blame, which is similar to svn blame:
 
-   $ git blame stuff.cc
+   $ git blame player.cc
 
-8. Committing a change to the 0.5 branch:
+8. Committing a change to a different branch:
 
-   So far we've restricted our attention to 'master', which is the
-   easiest branch to work with, since it's selected by default. Now
-   let's say we have a bug report with a 0.5.1 save, and we need the
-   0.5 code to test the save with:
+   So far we've restricted our attention to 'master', which is the easiest
+   branch to work with, since it's selected by default. Now let's say we have a
+   bug report with a 0.16 save, and we need the 0.16 code to test the save
+   with:
 
    Let's take a look at the branches we have locally:
    $ git branch
    * master
 
    The only local branch in our repository is master. Let's look at
-   the branches in the remote repository (gitorious):
+   the branches in the remote repository (github):
    $ git branch -r
      origin/HEAD -> origin/master
      origin/master
      origin/stone_soup
-     origin/stone_soup-0.1.3
-     origin/stone_soup-0.1.4
-     origin/stone_soup-0.1.5
-     origin/stone_soup-0.1.6
-     origin/stone_soup-0.1.7
-     origin/stone_soup-0.2
-     origin/stone_soup-0.3
-     origin/stone_soup-0.4
-     origin/stone_soup-0.5
-
-   So our local repository has a "master" branch corresponding to
-   gitorious' "master" branch. We do not yet have a branch corresponding
-   to gitorious' "stone_soup-0.5", so let's create the branch and switch
-   to it:
-
-   $ git checkout -b stone_soup-0.5 origin/stone_soup-0.5
-   Branch stone_soup-0.5 set up to track remote branch stone_soup-0.5
-from origin.
-   Switched to a new branch 'stone_soup-0.5'
-
-   master and stone_soup-0.5 are both local branches now:
+     ...
+     origin/stone_soup-0.16
+
+   So our local repository has a "master" branch corresponding to github's
+   "master" branch. We do not yet have a branch corresponding to github's
+   "stone_soup-0.16", so let's create the branch and switch to it. By default
+   git will find find the branch origin/stone_soup-0.16 and create a local
+   branch that tracks this one:
+
+   $ git checkout stone_soup-0.16
+   Branch stone_soup-0.16 set up to track remote branch stone_soup-0.16
+   from origin.
+   Switched to a new branch 'stone_soup-0.16'
+
+   master and stone_soup-0.16 are both local branches now:
    $ git branch
      master
-   * stone_soup-0.5
+   * stone_soup-0.16
 
-   git status will also confirm that we're on 0.5 now:
+   git status will also confirm that we're on 0.16 now:
    $ git status
-   # On branch stone_soup-0.5
+   # On branch stone_soup-0.16
    nothing to commit (working directory clean)
 
-   A quick peek at the history to make really sure we're on 0.5:
+   A quick peek at the history to make really sure we're on 0.16:
    $ git log
 
-   To grab the latest changes for 0.5:
+   To grab the latest changes for 0.16:
    $ git pull
 
-   Ok, now we compile 0.5, test the 0.5 save and verify that a bug
+   Ok, now we compile 0.16, test the 0.16 save and verify that a bug
    exists. Once we've fixed the bug, we create a commit:
    $ git commit -a
 
    Check git status:
    $ git status
-   # On branch stone_soup-0.5
-   # Your branch is ahead of 'origin/stone_soup-0.5' by 1 commit.
+   # On branch stone_soup-0.16
+   # Your branch is ahead of 'origin/stone_soup-0.16' by 1 commit.
    #
    nothing to commit (working directory clean)
 
-   Right, we're ready to push our fix to gitorious. But now that we
-   have multiple local branches, let's first ask git what it plans to
-   do when we push:
+   Right, we're ready to push our fix to github.
 
    $ git push --dry-run -v
-   Pushing to git@gitorious.org:crawl/crawl.git
-   Enter passphrase for key '...':
-   To git@gitorious.org:crawl/crawl.git
-    = [up to date]      master -> master
-      b05bb66..976e722  stone_soup-0.5 -> stone_soup-0.5
-
-   So git wants to push the local master and stone_soup-0.5 branches
-   to the corresponding branches on gitorious; the master branch has
-   no new local changes, whereas the 0.5 branch does (the new change
-   is 976e722).
+   Pushing to git@github.com:crawl/crawl.git
+   To git@github.com:crawl/crawl.git
+      b05bb66..976e722  stone_soup-0.16 -> stone_soup-0.16
 
-   By default, git-push will push *all* your local branches to the
-   corresponding branches on gitorious. This is important to
-   remember; if you had local commits on master, they would also be
-   pushed to gitorious. This behaviour can be changed (the option
-   is called "push.default") if it bothers you, or you can do:
+   So git wants to push the local stone_soup-0.16 branches to the corresponding
+   branches on github. Run the same command without --dry-run to actually push
+   the commit.
 
-   git push <remote> <local branch>:<remote branch>
-
-   So for instance, if I am working on 'master' locally, but want to push
-   to a remote branch called 'fixes-for-upstream', I could do:
-
-   git push github master:fixes-for-upstream
-
-   Once you're done working on 0.5, you can switch back to "master"
+   Once you're done working on 0.16, you can switch back to "master"
    with:
    $ git checkout master
 
-   The next time you need to work on 0.5 again, you can return to it
+   The next time you need to work on 0.16 again, you can return to it
    with:
-   $ git checkout stone_soup-0.5
+   $ git checkout stone_soup-0.16
 
 9. Common operations:
 
@@ -381,7 +344,7 @@ from origin.
    want, or accidentally delete files that you did want. You can
    revert a file to its pristine version as:
 
-   $ git checkout stuff.cc
+   $ git checkout player.cc
 
    This also works to bring back files you accidentally deleted. If
    you forget these commands, "git status" will remind you:
@@ -426,78 +389,69 @@ from origin.
 
 10. Branching:
 
-   Let's say it's time to create a stable 0.6 branch. Here's how you'd
-   do it:
+   Let's say we want to create a branch with some tentative or incomplete
+   changes that we want others to look at or change. Here's how you'd do it,
+   using a branch called pizza_tornado as an example:
 
-   a) Branch 0.6 from master:
-      $ git checkout -b stone_soup-0.6 master
+   a) Branch pizza_tornado from master:
+      $ git checkout -b pizza_tornado master
 
       Let's check our local branches now:
         master
-        stone_soup-0.5
-      * stone_soup-0.6
+        stone_soup-0.16
+      * pizza_tornado
 
-      stone_soup-0.6 is currently a *local* branch. gitorious' git
-      repo doesn't have it yet.
+      pizza_tornado is currently a *local* branch. github's git repo doesn't
+      have it yet.
 
-   b) Push the local branch to gitorious with a --dry-run first to
-      make sure we're not lousing up anything:
+   b) Push the local branch to github with a --dry-run first to make sure we're
+      not lousing up anything:
 
-      $ git push --dry-run -v origin stone_soup-0.6
-      Pushing to git@gitorious.org:crawl/crawl.git
-      Enter passphrase for key '...':
-      To git@gitorious.org:crawl/crawl.git
-       * [new branch]      stone_soup-0.6 -> stone_soup-0.6
+      $ git push --dry-run -v origin pizza_tornado
+      Pushing to git@github.com:crawl/crawl.git
+      To git@github.com:crawl/crawl.git
+       * [new branch]      pizza_tornado -> pizza_tornado
 
       Now for the real push:
-      $ git push origin stone_soup-0.6
+      $ git push origin pizza_tornado
 
-   c) Point your local branch at the new branch in gitorious:
+   c) Point your local branch at the new branch in github:
 
-      Now that we've created the branch on gitorious, we want to set
-      up our local "stone_soup-0.6" to get changes from gitorious'
-      "stone_soup-0.6" when we do a git pull. We do this as:
+      Now that we've created the branch on github, we want to set up our local
+      "pizza_tornado" to get changes from github's "pizza_tornado" when we do a
+      git pull. We do this as:
 
-      Tell git that stone_soup-0.6's remote repository is on gitorious:
-      $ git config branch.stone_soup-0.6.remote origin
+      Tell git that pizza_tornado's remote repository is on github:
+      $ git config branch.pizza_tornado.remote origin
 
-      And that the corresponding branch in gitorious is stone_soup-0.6:
-      $ git config branch.stone_soup-0.6.merge refs/heads/stone_soup-0.6
+      And that the corresponding branch in github is pizza_tornado:
+      $ git config branch.pizza_tornado.merge refs/heads/pizza_tornado
 
-      Now you can pull changes from gitorious' 0.6 branch:
+      Now you can pull changes from github's pizza_tornado branch:
       $ git pull
 
-      This is only necessary for new branches that you create locally
-      and push to gitorious. This configuration is automatically set
-      up for you when you work with branches that already exist on
-      gitorious.
-
-11. Tagging:
-
-   Once 0.6 is fit for a release, you'll need to tag it:
-
-   $ git checkout stone_soup-0.6
-   $ git tag -a release-0.6 -m "0.6: Now with extra kangaroos"
+      This is only necessary for new branches that you create locally and push
+      to github. This configuration is automatically set up for you when you
+      work with branches that already exist on github.
 
-12. Committing changes from one major branch of development to another:
+11. Committing changes from one major branch of development to another:
 
-   Once we create a stable branch (say 0.5), we usually make all
-   changes to trunk, but apply bugfixes to the 0.5 branch as well.
-   You can apply changes from master to stone_soup-0.5 with git
-   cherry-pick:
+   Once we create a stable branch (say 0.16), we usually make all changes to
+   trunk, but apply bugfixes to the 0.16 branch as well. You can apply changes
+   from master to stone_soup-0.16 with git cherry-pick:
 
    $ git checkout master
    [ make the changes for the bugfix ]
    $ git commit -a
-   $ git checkout stone_soup-0.5
+   $ git checkout stone_soup-0.16
 
-   And cherry-pick the tip commit of the master branch (the bugfix
-   we just committed there):
-   $ git cherry-pick master
+   And cherry-pick the tip commit of the master branch (the bugfix we just
+   committed there):
+   $ git cherry-pick -x master
 
-   If the commit you want to cherry-pick is not the tip of a branch, just
-   use the commit's id:
-   $ git cherry-pick b0ed1449
+   If the commit you want to cherry-pick is not the tip of a branch, just use
+   the commit's id:
+   $ git cherry-pick -x b0ed1449
 
    git push will then send in the commits from both branches.
 
@@ -505,10 +459,9 @@ from origin.
 Additional Reading:
 ------------------
 
-I've intentionally kept my examples very simple and glossed over a
-lot of details. I've covered the common operations in the svn
-workflow, but git can do much more for you if you spend a little
-time learning it.
+I've intentionally kept my examples very simple and glossed over a lot of
+details. I've covered the common operations in the svn workflow, but git can do
+much more for you if you spend a little time learning it.
 
 git documentation central:
 http://git-scm.com/documentation
index fc0b7c6..59c6fa2 100644 (file)
@@ -26,7 +26,7 @@ Terrain
  n - clear stone wall                              (DNGN_CLEAR_STONE_WALL)
  o - clear permanent rock wall - always undiggable (DNGN_CLEAR_PERMAROCK_WALL)
  v - metal wall - grounds electricity                    (DNGN_METAL_WALL)
- b - crystal wall - reflects cold and fire       (DNGN_GREEN_CRYSTAL_WALL)
+ b - crystal wall - reflects cold and fire              (DNGN_CRYSTAL_WALL)
  t - tree - combustible                                        (DNGN_TREE)
 
  . - floor                                                    (DNGN_FLOOR)
@@ -405,7 +405,7 @@ TAGS:     Tags go on a TAGS: line and are space-separated. You can have several
           * "overwrite_floor_cell": Tells the dungeon builder that this vault
              intends to overwrite a single floor cell, possibly inside another
              vault, even if that vault does not have the "overwritable" tag.
-             This tag can only be applied to 1x1 vaults.  Don't use it casually.
+             This tag can only be applied to 1x1 vaults. Don't use it casually.
           * "layout": Makes the vault eligible for use as a level layout. Do
              not use this unless you know what you are doing.
           * "layout_foo": Indicates what sort of level layouts this vault is
index ad9113a..5427310 100644 (file)
@@ -42,15 +42,15 @@ and restart the game to test your changes.
 
 
 Contents:
- A.  Monster speech probabilities
- B.  A simple example
- C.  Key lookup in detail
- D.  Values in detail
- E.  Testing your changes
- F.  Publishing your changes
+ A. Monster speech probabilities
+ B. A simple example
+ C. Key lookup in detail
+ D. Values in detail
+ E. Testing your changes
+ F. Publishing your changes
 
 
-A.  Monster speech probabilities
+A. Monster speech probabilities
 ================================
 
 Not all monsters are equally likely to speak. Rather, there are
@@ -97,7 +97,7 @@ run out. In that case the monster always speaks if the player can see
 the grid the monster is on (assuming that there's a speech entry defined
 for that occasion, of course).
 
-B.  A simple example
+B. A simple example
 ====================
 
 If you have a look at some of the speech files, you'll see that all
@@ -171,7 +171,7 @@ This is a special command; it prints no message. See below for more
 details on special commands.
 
 
-C.  Key lookup in detail
+C. Key lookup in detail
 ========================
 
 Key lookup is always case-insensitive. The game will make many
@@ -422,7 +422,7 @@ monster will say nothing in that circumstance.
 Special monster speech
 ----------------------
 
-Rarely, monster speech will also rely on hard-coded keys.  If such a
+Rarely, monster speech will also rely on hard-coded keys. If such a
 hard-coded key is changed or removed, the speech in question will simply
 not be printed.
 This may look odd in the game, but will have no other effect. Sometimes,
@@ -437,7 +437,7 @@ some local synonyms have been defined as well. Hopefully, the comments
 will explain what the different speech messages are used for.
 
 
-D.  Values in detail
+D. Values in detail
 ====================
 
 Spacing
@@ -628,7 +628,7 @@ to the player.
 If you want a message to be able to apply to a foe which is another
 monster in *addition* to the player, you can replace "@player" with
 "@foe" to have the variable filled out with a string appropriate for
-the foe being either the player or another monster.  If "@foe_name@"
+the foe being either the player or another monster. If "@foe_name@"
 is present then the message will only be used on monster foes which are
 named, and if "@foe_god@" or "@god_is@" is present then it will only be
 used on priestly monsters or god gift monsters.
@@ -642,7 +642,7 @@ replaced with "your" if directed at the player, or expanded like
 If you want to indicate which monster a message is directed at, you can
 put in "@to_foe@" or "@at_foe@" to fill in the foe name when the
 message is directed at a monster; when directed at the player the
-variable will be removed.  For example, with the message:
+variable will be removed. For example, with the message:
 
     @The_monster@ says @to_foe@, "Defend yourself!"
 
@@ -822,7 +822,7 @@ Crawl looks up the noises a given monster can produce and looks for
 keys that match the string, i.e. __SHOUT, __BARK and so on.
 
 
-E.  Testing your changes
+E. Testing your changes
 ========================
 
 Get a version of Stone Soup that contains WIZARD mode. You can check
@@ -871,7 +871,7 @@ remove (or comment out) the DEBUG_MONSPEAK setting as trying to
 actually play that way would sure be annoying.
 
 
-F.  Publishing your changes
+F. Publishing your changes
 ===========================
 
 If you feel that your additions really add something to the game and
index f987d20..3099e4e 100644 (file)
@@ -1,6 +1,6 @@
 This is a checklist for when a new developer joins the team.
 
- * Commit rights: add their gitorious account to the dcss-developers group.
+ * Commit rights: add their github account to the dcss group.
  * Add them to .mailmap (in the repository root) and CREDITS.txt.
  * Upgrade their mantis account to developer.
  * Update https://crawl.develz.org/wiki/doku.php?id=dcss:admin:devteam
@@ -9,7 +9,7 @@ This is a checklist for when a new developer joins the team.
    They should first register with NickServ (/msg nickserv help register) to
    prevent others from using that nick.  /whois NICK  will show an "account"
    field if they are registered.
- * Upgrade their CAO, CDO, and CSZO accounts to administrator.  This lets
+ * Upgrade their CAO, CDO, and CSZO accounts to administrator. This lets
    them use wizmode, and on CAO and CSZO gives them access to save backups
    and the rebuild trigger:
      dgl admin add <username>
index 0b35024..c4e26ae 100644 (file)
@@ -26,7 +26,7 @@ Main steps
     text files.
 
 1.) Make a local clone of the source code:
-    git clone git://gitorious.org/crawl/crawl.git
+    git clone https://github.com/crawl/crawl.git
 
 2.) Compile the code. To do this you might have to install a compiler and/or
     additional libraries. See INSTALL.txt for details. If you have any
index c62106a..a16d653 100644 (file)
@@ -4,31 +4,39 @@ The following is a step-by-step guide for how to preceed through the releasing
 process. For minor releases (0.X.y), steps 0 and 1 have already been done, so
 for those the list begins with step 3.
 
-0.  Delay branching until all features are there
+0. Delay branching until all features are there
     It makes little sense to cherry-pick actual features, or even a major
-    amount of bug fixes.  If there are features not meant for the release,
-    please put them on a new branch.  In git, branching and merging is
+    amount of bug fixes. If there are features not meant for the release,
+    please put them on a new branch. In git, branching and merging is
     cheap.
 
-1.  Branch master into the new version
+1. Branch master into the new version
     git branch stone_soup-0.X
     git push origin stone_soup-0.X
 
-2.  Tag the branch point
+2. Tag the branch point
     git tag -s 0.X-b1
     git push origin 0.X-b1
     Also, after the next diverging commit, tag the trunk as 0.${X+1}-a0; you
     need to make sure the commits pointed to by 0.X-b1 and 0.${X+1}-a0 are
     different.
 
-3.  Wait and fix some bugs
+    Tag message formatting:
+    0.16-a0: You open the 0.16 season. It cackles and vanishes in a puff of smoke!
+        -- should include the phrase "open the 0.x season"
+    0.15-b1: You feel a great weight lift as you enter the 0.15 branch.
+        -- should include the phrases "0.x" and "branch"
+    0.15.0: 0.15 "Storm Over Zot"
+        -- should be the version number followed by the tagline in quotes.
+
+3. Wait and fix some bugs
     Wait at least 2-3 weeks for bug reports, and fix all severe old ones.
     When fixing bugs concentrate on the important ones (crashes and
     gamebreakers), but you might also want to handle the trivial ones for
-    extra polishing.  Do not EVER add any last minute features unless they
+    extra polishing. Do not EVER add any last minute features unless they
     can't possibly introduce new bugs.
 
-    Reread the entire documentation to make sure it's up to date.  Also
+    Reread the entire documentation to make sure it's up to date. Also
     update the change log!
 
     To check for candidates for cherry-picking:
@@ -36,7 +44,7 @@ for those the list begins with step 3.
     To actually take them:
     (on stone_soup.0.X) git cherry-pick -x 0123456789abc
 
-4.  Sanity testing
+4. Sanity testing
     Build the binaries (preferably on all platforms) to see if the code
     compiles correctly, then run some basic sanity tests including at least
     the following:
@@ -48,27 +56,27 @@ for those the list begins with step 3.
         * level creation for all branches/portal vaults (using &~, &L)
         * accessing all help screens (including the ? submenus)
 
-5.  Sync the documentation
+5. Sync the documentation
     Update the release date in the changelog.
     In major releases (not point ones!), use "make rest" to fetch the the
     manual from the wiki
-    (https://crawl.develz.org/wiki/doku.php?id=dcss:manual:rest).  Remember
+    (https://crawl.develz.org/wiki/doku.php?id=dcss:manual:rest). Remember
     that after the release the wiki refers to the next major version, so any
-    further changes need to be done in the git tree directly.  Commit.
+    further changes need to be done in the git tree directly. Commit.
 
-6.  Tag the release
+6. Tag the release
     In the branch you're about to tag:
     git tag -s 0.X.y
 
     Don't push the tag yet so you can make final amendments.
 
-7.  Package the source tarball, produce final builds
+7. Package the source tarball, produce final builds
 
     "make package-source" will create three source tar/zipballs.
 
     For binary builds, you need to ensure at least the dat/ subdir contains
     no foreign files (such as editor backup files, uncommitted stuff, random
-    junk, etc).  Thus, "git clean -dfx".  This is a potentially destructive
+    junk, etc). Thus, "git clean -dfx". This is a potentially destructive
     operation so if you have files lying around, you may want to do this
     from a separate clone instead.
 
@@ -78,7 +86,7 @@ for those the list begins with step 3.
     the time.
 
     The makefile targets are "package-windows" and "package-windows-zips"
-    for the installer and stand-alone zips respectively.  Unless you're on
+    for the installer and stand-alone zips respectively. Unless you're on
     msys, you need to specify CROSSHOST as well:
     make LTO=y CROSSHOST=i686-w64-mingw32 package-windows
 
@@ -88,19 +96,19 @@ for those the list begins with step 3.
     start a new game, kill a monster, save, load, die. The in-game manual
     and/or FAQ are worth checking, too.
 
-8.  Push the tag
+8. Push the tag
     Until the moment you push it to the official repository, you can delete
     it and re-tag.
     git push --tags
 
     The tags are some sort of frozen state of the source for all releases,
-    so this is the last step you take before the actual release.  All
+    so this is the last step you take before the actual release. All
     further changes make it into the next minor version.
 
-9.  Upload the files to Sourceforge
+9. Upload the files to Sourceforge
     Requires SF permissions for file releases.
 
-    FTP/rsync access is no more, you need to use the web interface.  It is
+    FTP/rsync access is no more, you need to use the web interface. It is
     pretty flaky and tends to break, often failing with specific browsers.
 
     Finally, mark it as the default download (.tar.xz source for most, .exe
index 5ee3e14..aecce72 100644 (file)
@@ -10,9 +10,9 @@ savefile compatibility, so here goes.
 1. WHY
 
 Having a savefile compatibility procedure is crucial in the stable
-branches, as it allows applying bug fix releases in mid-game.  It's
+branches, as it allows applying bug fix releases in mid-game. It's
 also important in the development trees, although we currently give
-it far less attention than it deserves.  The reason for this is that
+it far less attention than it deserves. The reason for this is that
 properly testing many features, such as the recent portal refactors
 that happened to make leaving Zot impossible, require a long game.
 If it is impossible to upgrade in the middle of a game, then all bugs
@@ -22,7 +22,7 @@ lessly complicating the bug fixing process.
 The situation is exacerbated by the public beta server (Marc Thoben's
 crawl.develz.org), since it can only be updated site-wide; it cannot
 be updated between games as there are almost always saved games on
-the server, so it is simply updated (with loss of saves) rarely.  And
+the server, so it is simply updated (with loss of saves) rarely. And
 rarely is bad.
 
 2. HOW
@@ -35,23 +35,23 @@ create any save compatibility issues.
 
 If you are changing any of the code in tags.cc (which implements load
 and save for savefiles), you probably need to be concerned about save
-compatibility.  Any code which uses the marshall* and unmarshall*
-functions is, likewise, probably unsafe to simply change.  Changing
+compatibility. Any code which uses the marshall* and unmarshall*
+functions is, likewise, probably unsafe to simply change. Changing
 the values of existing enums (for instance, adding a new option
 before existing options) is not generally safe, as saves store the
 numeric values of enum variables.
 
 By way of example, suppose you wanted to add a new field to the player
-structure, you.xyzzy.  Now you want to save this field, and without
-breaking saves.  To do this, find the functions tag_read_you and
-tag_construct_you in tags.cc.  Unfortunately, you can't just add
+structure, you.xyzzy. Now you want to save this field, and without
+breaking saves. To do this, find the functions tag_read_you and
+tag_construct_you in tags.cc. Unfortunately, you can't just add
 marshall and unmarshall calls, since if you get an old save, the wrong
 value will be unmarshalled, synchronization is lost and things
-fall apart.  So first, add a new option to the tag_minor_version enum
-in tag-version.h.  Make sure the new option is at the end, and that you
-update TAG_MINOR_VERSION to correspond to the new option.  Now, any
+fall apart. So first, add a new option to the tag_minor_version enum
+in tag-version.h. Make sure the new option is at the end, and that you
+update TAG_MINOR_VERSION to correspond to the new option. Now, any
 savefile created by the new code, or any later savefile, will have a
-minor version >= your new version number.  So, make the marshall and
+minor version >= your new version number. So, make the marshall and
 unmarshall code conditional on minorVersion, like so:
 
     if (minorVersion >= TAG_MINOR_JIYVA)
@@ -84,10 +84,10 @@ depending on version:
 
 If you want to change an enum without breaking savefile compatibility,
 the cardinal rule is that the numeric values of all existing constants
-must not change.  If you are adding an option, add it at the end; if
-you are removing a value, leave a placeholder of some kind.  Be sure
+must not change. If you are adding an option, add it at the end; if
+you are removing a value, leave a placeholder of some kind. Be sure
 to test your code well, as there are sometimes obscure requirements on
-what needs to be done for a placeholder.  Case in point: if a
+what needs to be done for a placeholder. Case in point: if a
 MUT_UNUSED_n placeholder exists in the mutation_type enumeration, but
 no mutation definition exists in mutation_defs, it will work fine until
 somebody plays with a Vampire, as generating the list of fully active
@@ -95,14 +95,14 @@ mutations requires looking at mutation definitions for all mutations.
 
 In extreme cases, it may not be possible to preserve load compatibility.
 If this is the case, and please do this sparingly, you should increase
-TAG_MAJOR_VERSION.  This will ensure that old save files are correctly
+TAG_MAJOR_VERSION. This will ensure that old save files are correctly
 rejected, instead of causing a crash.
 
 Historically TAG_MAJOR_VERSION has always been equal to the submajor
 version of Crawl itself; however, this buys us very little, as users
 do not need to identify Crawl save versions by contents under any
 normal circumstance, and has cost us dearly in time spent debugging
-startup crashes.  Therefore we should not do it; TAG_MAJOR_VERSION
+startup crashes. Therefore we should not do it; TAG_MAJOR_VERSION
 should be incremented on all incompatible changes.
 
 When TAG_MAJOR_VERSION is incremented, all existing TAG_MINOR_ checks
@@ -209,7 +209,7 @@ and the new behaviour will happen unconditionally.
 Other targets for #if TAG_MAJOR_VERSION checks include enumerators that
 are no longer used; and new enumerators that were added to the end of
 their enum for compatibility reasons but make more sense somewhere else
-in the list.  In the latter case one would use a pair of #ifs, one for
+in the list. In the latter case one would use a pair of #ifs, one for
 the current version and one for future versions:
 
         DNGN_ENTER_ABYSS,
index 0302632..901d5b2 100644 (file)
@@ -2,14 +2,14 @@ A.   Unit tests
 ===============
 
 Crawl has a set of unit tests in the source/test/ directory, with each lua
-file being a separate unit test.  To use unit tests, you must compile Crawl
+file being a separate unit test. To use unit tests, you must compile Crawl
 either with the macro DEBUG_DIAGNOSTICS defined (the debug make target) or
 with both the macros DEBUG and DEBUG_TESTS defined (the wizard make target,
-plus -DDEBUG_TESTS).  You can then do
+plus -DDEBUG_TESTS). You can then do
 
     crawl -test
 
-to run the unit tests.  To run paricular unit tests, you can do
+to run the unit tests. To run paricular unit tests, you can do
 
     crawl -test foo
 
@@ -17,7 +17,7 @@ and that will run all unit tests which have "foo" in their file name.
 
 If you want to write your own unit tests, take a look at the files in
 source/test for examples.  test/los_maps.lua and test/bounce.lua have
-examples which use vaults (maps) which are located in test/des.  You
+examples which use vaults (maps) which are located in test/des. You
 might need to create new Lua functions in the source/l_*.cc files if none of
 the crawl.foo()/dgn.foo()/etc functions do what you need.
 
@@ -28,7 +28,7 @@ B.    Testing with the arena
 ============================
 
 Crawl's arena mode can be used to pit one set of monsters against another and
-watch them fight.  For example,
+watch them fight. For example,
 
     crawl -arena "3 rat v 2 kobold"
 
@@ -37,7 +37,7 @@ pits 3 rats against 2 kobolds.
 If you put "arena_dump_msgs = true" into your crawl init file, then most
 messages generated during the fight will be dumped to the file "arena.result".
 Also adding "arena_dump_msgs_all = true" will additionally cause messages to
-the diagnostics channel to be dumped.  Messages to some channels will be
+the diagnostics channel to be dumped. Messages to some channels will be
 prefixed with the channel name, to make grepping for results easier:
 
     MSGCH_ERROR is prefixed with "ERR:"
@@ -55,8 +55,8 @@ Using the arena to test problems with specific monsters is rather easy:
 
     crawl -arena "problem monster v problem monster"
 
-For specific ego items is not much harder.  Say you had a problem with chaos
-branded melee items.  You could do
+For specific ego items is not much harder. Say you had a problem with chaos
+branded melee items. You could do
 
     crawl -arena "10 vault guard; long sword ego:chaos v
                   10 vault guard; long sword ego:chaos"
@@ -91,7 +91,7 @@ you can catch any crashes for unknown issues.
     crawl -arena "10 random v 10 random"
 
 would pit two teams of random monsters against each other, appropriate for
-D:20.  To change the place chosen for choosing random monsters, you can use
+D:20. To change the place chosen for choosing random monsters, you can use
 "arena_place:"
 
     crawl -arena "arena_place:D:27 10 random v 10 random"
@@ -108,7 +108,7 @@ Creatures as well):
     crawl -arena "random_uniques 10 random v 10 random"
 
 You might find that certain random monsters overwhelm the arena run, like
-maybe jellies are eating so many corpses that they fill the whole arena.  You
+maybe jellies are eating so many corpses that they fill the whole arena. You
 can forbid monsters with certain glyphs from being randomly generated:
 
     crawl -arena "ban_glyphs:J 10 random v 10 random"
@@ -117,10 +117,10 @@ B.3  Getting the arena to run for a long time
 ==============================================
 
 By default the arena exits when all the monsters on one team die, ending the
-round.  You can specify that multiple rounds happen by adding "t:num", but
-that's limited to 99 rounds.  A way to make it so that the arena will run
+round. You can specify that multiple rounds happen by adding "t:num", but
+that's limited to 99 rounds. A way to make it so that the arena will run
 forever (or until you press ESC to exit it) is to add the "respawn" tag to the
-arena specification.  You can then leave Crawl running under a debugger
+arena specification. You can then leave Crawl running under a debugger
 waiting for a crash, or simply grep the arena.result file after it's run for
 long enough.
 
@@ -140,7 +140,7 @@ If you do
 
     crawl -arena "respawn 10 random v 10 random"
 
-then the monsters tend to clump up in the middle in a huge brawl.  A way to
+then the monsters tend to clump up in the middle in a huge brawl. A way to
 spread this out is by adding "move_respawns":
 
     crawl -arena "respawn move_respawns 10 random v 10 random"
@@ -152,7 +152,7 @@ Finally, if you're using non-unique random monsters, you can add
 "cycle_random" so that the random monsters are chosen by linearly cycling
 through the monsters that can possibly appear in the place chosen by
 "arena_place:", rather than being chosen with the weights appropriate for that
-place.  This will cause rare monsters to be generated a lot more often.
+place. This will cause rare monsters to be generated a lot more often.
 
 B.4  Speeding up the arena
 ==========================
@@ -163,18 +163,18 @@ You can do this on the command line with "delay:":
     crawl -arena "delay:0 random v random"
 
 This will cause there to be no delay between turns, or when animating beams or
-explosions.  You can also set the option "arena_delay" in your init file to
+explosions. You can also set the option "arena_delay" in your init file to
 have it apply to all arena runs.
 
 B.5  Changing the arena terrain
 ===============================
 
-You can change the terrain used in the arena with the "arena:" tag.  For
+You can change the terrain used in the arena with the "arena:" tag. For
 example:
 
     crawl -arena "arena:smoke random v random"
 
-will cause the monsters to fight in an arena which is filled with smoke.  The
-available alternate terrains are in source/dat/arena.des.  If an arena you
+will cause the monsters to fight in an arena which is filled with smoke. The
+available alternate terrains are in source/dat/arena.des. If an arena you
 want is tagged with "arena_foo" in the des file, then you put "arena:foo" on
 the command line.
index df3b3e5..57ba1b8 100644 (file)
@@ -467,10 +467,10 @@ email containing your tiles to one of the tiles developers
 =====================
 
 (Committer only.)  When actually putting the tiles into version control,
-please minimize their file sizes.  Editors usually want to save quickly,
+please minimize their file sizes. Editors usually want to save quickly,
 often producing files 3-4 times as big as they could be without any loss of
-quality.  There are two separate steps, and there are two different programs
-which excel at them.  I found that the best effects can be obtained with
+quality. There are two separate steps, and there are two different programs
+which excel at them. I found that the best effects can be obtained with
 running them in sequence:
   optipng -o4 -i0 -fix image.png
   advpng -z4 image.png
index ca02aed..06114b5 100644 (file)
@@ -6,26 +6,26 @@
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-[This is the first released version of the Lesser GPL.  It also counts
+[This is the first released version of the Lesser GPL. It also counts
  as the successor of the GNU Library Public License, version 2, hence
  the version number 2.1.]
 
                  Preamble
 
   The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
+freedom to share and change it. By contrast, the GNU General Public
 Licenses are intended to guarantee your freedom to share and change
 free software--to make sure the software is free for all its users.
 
   This license, the Lesser General Public License, applies to some
 specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
+Free Software Foundation and other authors who decide to use it. You
 can use it too, but we suggest you first think carefully about whether
 this license or the ordinary General Public License is the better
 strategy to use in any particular case, based on the explanations below.
 
   When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
+not price. Our General Public Licenses are designed to make sure that
 you have the freedom to distribute copies of free software (and charge
 for this service if you wish); that you receive source code or can get
 it if you want it; that you can change the software and use pieces of
@@ -34,69 +34,69 @@ these things.
 
   To protect your rights, we need to make restrictions that forbid
 distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
+rights. These restrictions translate to certain responsibilities for
 you if you distribute copies of the library or if you modify it.
 
   For example, if you distribute copies of the library, whether gratis
 or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
 complete object files to the recipients, so that they can relink them
 with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
+it. And you must show them these terms so they know their rights.
 
   We protect your rights with a two-step method: (1) we copyright the
 library, and (2) we offer you this license, which gives you legal
 permission to copy, distribute and/or modify the library.
 
   To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
+there is no warranty for the free library. Also, if the library is
 modified by someone else and passed on, the recipients should know
 that what they have is not the original version, so that the original
 author's reputation will not be affected by problems that might be
 introduced by others.
 
   Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
+any free program. We wish to make sure that a company cannot
 effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
+restrictive license from a patent holder. Therefore, we insist that
 any patent license obtained for a version of the library must be
 consistent with the full freedom of use specified in this license.
 
   Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
+ordinary GNU General Public License. This license, the GNU Lesser
 General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
+is quite different from the ordinary General Public License. We use
 this license for certain libraries in order to permit linking those
 libraries into non-free programs.
 
   When a program is linked with a library, whether statically or using
 a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
+combined work, a derivative of the original library. The ordinary
 General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
+entire combination fits its criteria of freedom. The Lesser General
 Public License permits more lax criteria for linking other code with
 the library.
 
   We call this license the "Lesser" General Public License because it
 does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
 are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
+libraries. However, the Lesser license provides advantages in certain
 special circumstances.
 
   For example, on rare occasions, there may be a special need to
 encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
 case, there is little to gain by limiting the free library to free
 software only, so we use the Lesser General Public License.
 
   In other cases, permission to use a particular library in non-free
 programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
+free software. For example, permission to use the GNU C Library in
 non-free programs enables many more people to use the whole GNU
 operating system, as well as its variant, the GNU/Linux operating
 system.
@@ -107,8 +107,8 @@ linked with the Library has the freedom and the wherewithal to run
 that program using a modified version of the Library.
 
   The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
 former contains code derived from the library, whereas the latter must
 be combined with the library in order to run.
 
@@ -126,7 +126,7 @@ prepared so as to be conveniently linked with application programs
 (which use some of those functions and data) to form executables.
 
   The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
+which has been distributed under these terms. A "work based on the
 Library" means either the Library or any derivative work under
 copyright law: that is to say, a work containing the Library or a
 portion of it, either verbatim or with modifications and/or translated
@@ -134,17 +134,17 @@ straightforwardly into another language.  (Hereinafter, translation is
 included without limitation in the term "modification".)
 
   "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
+making modifications to it. For a library, complete source code means
 all the source code for all modules it contains, plus any associated
 interface definition files, plus the scripts used to control compilation
 and installation of the library.
 
   Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
+covered by this License; they are outside its scope. The act of
 running a program using the Library is not restricted, and output from
 such a program is covered only if its contents constitute a work based
 on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
+writing it). Whether that is true depends on what the Library does
 and what the program that uses the Library does.
 
   1. You may copy and distribute verbatim copies of the Library's
@@ -182,16 +182,16 @@ above, provided that you also meet all of these conditions:
 
     (For example, a function in a library to compute square roots has
     a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
+    application. Therefore, Subsection 2d requires that any
     application-supplied function or table used by this function must
     be optional: if the application does not supply it, the square
     root function must still compute square roots.)
 
-These requirements apply to the modified work as a whole.  If
+These requirements apply to the modified work as a whole. If
 identifiable sections of that work are not derived from the Library,
 and can be reasonably considered independent and separate works in
 themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
+sections when you distribute them as separate works. But when you
 distribute the same sections as part of a whole which is a work based
 on the Library, the distribution of the whole must be on the terms of
 this License, whose permissions for other licensees extend to the
@@ -209,7 +209,7 @@ a storage or distribution medium does not bring the other work under
 the scope of this License.
 
   3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
+License instead of this License to a given copy of the Library. To do
 this, you must alter all the notices that refer to this License, so
 that they refer to the ordinary GNU General Public License, version 2,
 instead of to this License.  (If a newer version than version 2 of the
@@ -239,21 +239,21 @@ compelled to copy the source along with the object code.
 
   5. A program that contains no derivative of any portion of the
 Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
+linked with it, is called a "work that uses the Library". Such a
 work, in isolation, is not a derivative work of the Library, and
 therefore falls outside the scope of this License.
 
   However, linking a "work that uses the Library" with the Library
 creates an executable that is a derivative of the Library (because it
 contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
+library". The executable is therefore covered by this License.
 Section 6 states terms for distribution of such executables.
 
   When a "work that uses the Library" uses material from a header file
 that is part of the Library, the object code for the work may be a
 derivative work of the Library even though the source code is not.
 Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
+linked without the Library, or if the work is itself a library. The
 threshold for this to be trueion of the work is made by offering access to copy
     from a designated place, offer equivalent access to copy the above
     specified materials from the same place.
@@ -263,7 +263,7 @@ threshold for this to be trueion of the work is made by offering access to copy
 
   For an executable, the required form of the "work that uses the
 Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
+reproducing the executable from it. However, as a special exception,
 the materials to be distributed need not include anything that is
 normally distributed (in either source or binary form) with the major
 components (compiler, kernel, and so on) of the operating system on
@@ -272,7 +272,7 @@ the executable.
 
   It may happen that this requirement contradicts the license
 restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
+accompany the operating system. Such a contradiction means you cannot
 use both them and the Library together in an executable that you
 distribute.
 
@@ -285,7 +285,7 @@ permitted, and provided that you do these two things:
 
     a) Accompany the combined library with a copy of the same work
     based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
+    facilities. This must be distributed under the terms of the
     Sections above.
 
     b) Give prominent notice with the combined library of the fact
@@ -293,17 +293,17 @@ permitted, and provided that you do these two things:
     where to find the accompanying uncombined form of the same work.
 
   8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
+the Library except as expressly provided under this License. Any
 attempt otherwise to copy, modify, sublicense, link with, or
 distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
+rights under this License. However, parties who have received copies,
 or rights, from you under this License will not have their licenses
 terminated so long as such parties remain in full compliance.
 
   9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
 modifying or distributing the Library (or any work based on the
 Library), you indicate your acceptance of this License to do so, and
 all its terms and conditions for copying, distributing or modifying
@@ -312,7 +312,7 @@ the Library or works based on it.
   10. Each time you redistribute the Library (or any work based on the
 Library), the recipient automatically receives a license from the
 original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
+subject to these terms and conditions. You may not impose any further
 restrictions on the recipients' exercise of the rights granted herein.
 You are not responsible for enforcing compliance by third parties with
 this License.
@@ -321,10 +321,10 @@ this License.
 infringement or for any other reason (not limited to patent issues),
 conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
+excuse you from the conditions of this License. If you cannot
 distribute so as to satisfy simultaneously your obligations under this
 License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
+may not distribute the Library at all. For example, if a patent
 license would not permit royalty-free redistribution of the Library by
 all those who receive copies directly or indirectly through you, then
 the only way you could satisfy both it and this License would be to
@@ -338,7 +338,7 @@ It is not the purpose of this section to induce you to infringe any
 patents or other property right claims or to contest validity of any
 such claims; this section has the sole purpose of protecting the
 integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
+implemented by public license practices. Many people have made
 generous contributions to the wide range of software distributed
 through that system in reliance on consistent application of that
 system; it is up to the author/donor to decide if he or she is willing
@@ -353,7 +353,7 @@ certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Library under this License may add
 an explicit geographical distribution limitation excluding those countries,
 so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
+excluded. In such case, this License incorporates the limitation as if
 written in the body of this License.
 
   13. The Free Software Foundation may publish revised and/or new
@@ -361,19 +361,19 @@ versions of the Lesser General Public License from time to time.
 Such new versions will be similar in spirit to the present version,
 but may differ in detail to address new problems or concerns.
 
-Each version is given a distinguishing version number.  If the Library
+Each version is given a distinguishing version number. If the Library
 specifies a version number of this License which applies to it and
 "any later version", you have the option of following the terms and
 conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
+the Free Software Foundation. If the Library does not specify a
 license version number, you may choose any version ever published by
 the Free Software Foundation.
 
   14. If you wish to incorporate parts of the Library into other free
 programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
+write to the author to ask for permission. For software which is
 copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
+Software Foundation; we sometimes make exceptions for this. Our
 decision will be guided by the two goals of preserving the free status
 of all derivatives of our free software and of promoting the sharing
 and reuse of software generally.
@@ -386,8 +386,8 @@ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
 KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
 THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
   16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
@@ -407,11 +407,11 @@ DAMAGES.
 
   If you develop a new library, and you want it to be of the greatest
 possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
+everyone can redistribute and change. You can do so by permitting
 redistribution under these terms (or, alternatively, under the terms of the
 ordinary General Public License).
 
-  To apply these terms, attach the following notices to the library.  It is
+  To apply these terms, attach the following notices to the library. It is
 safest to attach them to the start of each source file to most effectively
 convey the exclusion of warranty; and each file should have at least the
 "copyright" line and a pointer to where the full notice is found.
@@ -426,7 +426,7 @@ convey the exclusion of warranty; and each file should have at least the
 
     This library is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
     Lesser General Public License for more details.
 
     You should have received a copy of the GNU Lesser General Public
@@ -437,7 +437,7 @@ Also add information on how to contact you by electronic and paper mail.
 
 You should also get your employer (if you work as a programmer) or your
 school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
+necessary. Here is a sample; alter the names:
 
   Yoyodyne, Inc., hereby disclaims all copyright interest in the
   library `Frob' (a library for tweaking knobs) written by James Random Hacker.
index 93dd04a..20c7bee 100644 (file)
@@ -1,5 +1,5 @@
 
-This copy of the libpng notices is provided for your convenience.  In case of
+This copy of the libpng notices is provided for your convenience. In case of
 any discrepancy between this copy and the notices in the file png.h that is
 included in the libpng distribution, the latter shall prevail.
 
@@ -29,9 +29,9 @@ with the following individuals added to the list of Contributing Authors
 and with the following additions to the disclaimer:
 
    There is no warranty against interference with your enjoyment of the
-   library or against infringement.  There is no warranty that our
+   library or against infringement. There is no warranty that our
    efforts or the library will fulfill any of your particular purposes
-   or needs.  This library is provided with all faults, and the entire
+   or needs. This library is provided with all faults, and the entire
    risk of satisfactory quality, performance, accuracy, and effort is with
    the user.
 
@@ -68,10 +68,10 @@ is defined as the following set of individuals:
    Paul Schmidt
    Tim Wegner
 
-The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+The PNG Reference Library is supplied "AS IS". The Contributing Authors
 and Group 42, Inc. disclaim all warranties, expressed or implied,
 including, without limitation, the warranties of merchantability and of
-fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+fitness for any purpose. The Contributing Authors and Group 42, Inc.
 assume no liability for direct, indirect, incidental, special, exemplary,
 or consequential damages, which may result from the use of the PNG
 Reference Library, even if advised of the possibility of such damage.
@@ -90,7 +90,7 @@ to the following restrictions:
 
 The Contributing Authors and Group 42, Inc. specifically permit, without
 fee, and encourage the use of this source code as a component to
-supporting the PNG file format in commercial products.  If you use this
+supporting the PNG file format in commercial products. If you use this
 source code in a product, acknowledgment is not required but would be
 appreciated.
 
@@ -103,7 +103,7 @@ boxes and the like:
 Also, the PNG logo (in PNG format, of course) is supplied in the
 files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
 
-Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
 certification mark of the Open Source Initiative.
 
 Glenn Randers-Pehrson
index 84d401b..2333ca1 100644 (file)
@@ -23,7 +23,7 @@ all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
index 74e3c34..5cd221c 100644 (file)
@@ -903,6 +903,11 @@ rest_wait_both = false
         when both HP and MP are fully restored, not when either one of
         them is restored.
 
+rest_wait_percent = 100
+        When resting, if your HP or MP is below this percentage of being full,
+        it will stop resting when this percent of maximum HP or MP is refilled.
+        Resting after this point will still rest up to 100%.
+
 auto_exclude += <monster name>, <monster name>, ...
         (List option)
         Whenever you encounter a sleeping or stationary monster during
@@ -1042,7 +1047,7 @@ sort_menus = [menu:](true | false | auto:X)[:sort_order]
           (quantities, curse-status, etc.)
 
         * dbname:
-          Sorts based on an item's unqiue internal name which is linked
+          Sorts based on an item's unique internal name which is linked
           to its description. Items with the same description will be
           grouped together.
 
index 409ddfc..510400d 100644 (file)
@@ -126,20 +126,25 @@ following initial display:
 
 ________________________________________________________________
 
- ## DGL source code available on ftp://ftp.alt.org/pub/dgamelaunch/or
- ## http://dev.triplehelix.org/?root=dgamelaunch (development version)
- ## ** Games on this server are recorded for in-progress viewing and playback!
- ##
- ## This crawl server hosted and maintained by Rachel Elizabeth Dillon;
- ## more information available at http://crawl.akrasiac.org/
+ Crawl server (North America) hosted and maintained by Rax E. Dillon.
+ ------------------------------------------------------------------------------
+ Server information: http://crawl.akrasiac.org
+ Webtiles:           http://webtiles.akrasiac.org/
+ Crawl information:  http://crawl.develz.org
+ ------------------------------------------------------------------------------
+ ** Games on this server are recorded for in-progress viewing and playback! **
+ ------------------------------------------------------------------------------
 
-   Not logged in.
+ Not logged in.
 
-   l) Login
-   r) Register new user
-   w) Watch games in progress
-   q) Quit
+ W) Watch games in progress
 
+ R) Register as new user
+ L) Login
+
+ Q) Quit
+
+ =>
 ________________________________________________________________
 
 
index af736d1..d8ad1af 100644 (file)
@@ -21,8 +21,9 @@ two other ways:
  +5  exceptional aptitude
 
 There are three special values: HP, MP and Experience:
-- The HP and MP values indicate the percentages of hit points and magic
-  points that are gained per level, 100% being the Human standard.
+- The HP value indicates the percentage of hit points gained per level,
+  100% being the Human standard.
+- The MP value indicates a fixed additive modifier to magic points.
 - The Experience value indicates how much experience has to be earned in
   order to gain a new level. +1 is the Human standard, and all other
   species (apart from Halfling and Kobold) are slower. These values use
diff --git a/crawl-ref/git-hooks/README.txt b/crawl-ref/git-hooks/README.txt
deleted file mode 100644 (file)
index e7a2e3a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-As of 14/2/2011, we no longer use SourceForge as our repository hosting
-provider. Therefore, the following instructions are outdated. CIA notices and
-crawl-ref-commit emails are sent from crawl.develz.org.
-
-To update the user->username table, checkout:
-
-    git@gitorious.org:+dcss-developers/gitorious-cia/dcss-gitorious.cia
-
-and alter the "crawl.py" file. Commit and push. Then ask someone who has shell
-access to crawl.develz.org -- or if you have shell access -- to execute:
-
-    cd ~crawl/source/dcss-gitorious-cia
-    git pull
-
-###############################################################################
-###############################################################################
-###############################################################################
-
-Old instructions:
-
-This directory contains copies of the git hook scripts.  The actual hooks can
-be edited by getting an SHH shell on the sourceforge machine:
-
-    ssh -t USER,crawl-ref@shell.sourceforge.net create
-
-See http://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service
-
-Once there, cd to "/home/scm_git/c/cr/crawl-ref/crawl-ref/hooks"
diff --git a/crawl-ref/git-hooks/crawl-ref-email b/crawl-ref/git-hooks/crawl-ref-email
deleted file mode 100755 (executable)
index e5180a3..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2007 Andy Parkins
-#
-# An example hook script to mail out commit update information.  This hook
-# sends emails listing new revisions to the repository introduced by the
-# change being reported.  The rule is that (for branch updates) each commit
-# will appear on one email and one email only.
-#
-# This hook is stored in the contrib/hooks directory.  Your distribution
-# will have put this somewhere standard.  You should make this script
-# executable then link to it in the repository you would like to use it in.
-# For example, on debian the hook is stored in
-# /usr/share/doc/git-core/contrib/hooks/post-receive-email:
-#
-#  chmod a+x post-receive-email
-#  cd /path/to/your/repository.git
-#  ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email hooks/post-receive
-#
-# This hook script assumes it is enabled on the central repository of a
-# project, with all users pushing only to it and not between each other.  It
-# will still work if you don't operate in that style, but it would become
-# possible for the email to be from someone other than the person doing the
-# push.
-#
-# To help with debugging and use on pre-v1.5.1 git servers, this script will
-# also obey the interface of hooks/update, taking its arguments on the
-# command line.  Unfortunately, hooks/update is called once for each ref.
-# To avoid firing one email per ref, this script just prints its output to
-# the screen when used in this mode.  The output can then be redirected if
-# wanted.
-#
-# Config
-# ------
-# hooks.mailinglist
-#   This is the list that all pushes will go to; leave it blank to not send
-#   emails for every ref update.
-# hooks.announcelist
-#   This is the list that all pushes of annotated tags will go to.  Leave it
-#   blank to default to the mailinglist field.  The announce emails lists
-#   the short log summary of the changes since the last annotated tag.
-# hooks.envelopesender
-#   If set then the -f option is passed to sendmail to allow the envelope
-#   sender address to be set
-# hooks.emailprefix
-#   All emails have their subjects prefixed with this prefix, or "[SCM]"
-#   if emailprefix is unset, to aid filtering
-# hooks.showrev
-#   The shell command used to format each revision in the email, with
-#   "%s" replaced with the commit id.  Defaults to "git rev-list -1
-#   --pretty %s", displaying the commit id, author, date and log
-#   message.  To list full patches separated by a blank line, you
-#   could set this to "git show -C %s; echo".
-#   To list a gitweb/cgit URL *and* a full patch for each change set, use this:
-#     "t=%s; printf 'http://.../?id=%%s' \$t; echo;echo; git show -C \$t; echo"
-#   Be careful if "..." contains things that will be expanded by shell "eval"
-#   or printf.
-# hooks.emailmaxlines
-#   The maximum number of lines that should be included in the generated
-#   email body. If not specified, there is no limit.
-#   Lines beyond the limit are suppressed and counted, and a final
-#   line is added indicating the number of suppressed lines.
-#
-# Notes
-# -----
-# All emails include the headers "X-Git-Refname", "X-Git-Oldrev",
-# "X-Git-Newrev", and "X-Git-Reftype" to enable fine tuned filtering and
-# give information for debugging.
-#
-
-# ---------------------------- Functions
-
-#
-# Function to prepare for email generation. This decides what type
-# of update this is and whether an email should even be generated.
-#
-prep_for_email()
-{
-       # --- Arguments
-       oldrev=$(git rev-parse $1)
-       newrev=$(git rev-parse $2)
-       refname="$3"
-       maxlines=$4
-
-       # --- Interpret
-       # 0000->1234 (create)
-       # 1234->2345 (update)
-       # 2345->0000 (delete)
-       if expr "$oldrev" : '0*$' >/dev/null
-       then
-               change_type="create"
-       else
-               if expr "$newrev" : '0*$' >/dev/null
-               then
-                       change_type="delete"
-               else
-                       change_type="update"
-               fi
-       fi
-
-       # --- Get the revision types
-       newrev_type=$(git cat-file -t $newrev 2> /dev/null)
-       oldrev_type=$(git cat-file -t "$oldrev" 2> /dev/null)
-       case "$change_type" in
-       create|update)
-               rev="$newrev"
-               rev_type="$newrev_type"
-               ;;
-       delete)
-               rev="$oldrev"
-               rev_type="$oldrev_type"
-               ;;
-       esac
-
-       # The revision type tells us what type the commit is, combined with
-       # the location of the ref we can decide between
-       #  - working branch
-       #  - tracking branch
-       #  - unannoted tag
-       #  - annotated tag
-       case "$refname","$rev_type" in
-               refs/tags/*,commit)
-                       # un-annotated tag
-                       refname_type="tag"
-                       short_refname=${refname##refs/tags/}
-                       ;;
-               refs/tags/*,tag)
-                       # annotated tag
-                       refname_type="annotated tag"
-                       short_refname=${refname##refs/tags/}
-                       # change recipients
-                       if [ -n "$announcerecipients" ]; then
-                               recipients="$announcerecipients"
-                       fi
-                       ;;
-               refs/heads/*,commit)
-                       # branch
-                       refname_type="branch"
-                       short_refname=${refname##refs/heads/}
-                       ;;
-               refs/remotes/*,commit)
-                       # tracking branch
-                       refname_type="tracking branch"
-                       short_refname=${refname##refs/remotes/}
-                       echo >&2 "*** Push-update of tracking branch, $refname"
-                       echo >&2 "***  - no email generated."
-                       return 1
-                       ;;
-               *)
-                       # Anything else (is there anything else?)
-                       echo >&2 "*** Unknown type of update to $refname ($rev_type)"
-                       echo >&2 "***  - no email generated"
-                       return 1
-                       ;;
-       esac
-
-       # Check if we've got anyone to send to
-       if [ -z "$recipients" ]; then
-               case "$refname_type" in
-                       "annotated tag")
-                               config_name="hooks.announcelist"
-                               ;;
-                       *)
-                               config_name="hooks.mailinglist"
-                               ;;
-               esac
-               echo >&2 "*** $config_name is not set so no email will be sent"
-               echo >&2 "*** for $refname update $oldrev->$newrev"
-               return 1
-       fi
-
-       return 0
-}
-
-#
-# Top level email generation function.  This calls the appropriate
-# body-generation routine after outputting the common header.
-#
-# Note this function doesn't actually generate any email output, that is
-# taken care of by the functions it calls:
-#  - generate_email_header
-#  - generate_create_XXXX_email
-#  - generate_update_XXXX_email
-#  - generate_delete_XXXX_email
-#  - generate_email_footer
-#
-# Note also that this function cannot 'exit' from the script; when this
-# function is running (in hook script mode), the send_mail() function
-# is already executing in another process, connected via a pipe, and
-# if this function exits without, whatever has been generated to that
-# point will be sent as an email... even if nothing has been generated.
-#
-generate_email()
-{
-       # Email parameters
-       # The email subject will contain the best description of the ref
-       # that we can build from the parameters
-       describe=$(git describe $rev 2>/dev/null)
-       if [ -z "$describe" ]; then
-               describe=$rev
-       fi
-
-       generate_email_header
-
-       # Call the correct body generation function
-       fn_name=general
-       case "$refname_type" in
-       "tracking branch"|branch)
-               fn_name=branch
-               ;;
-       "annotated tag")
-               fn_name=atag
-               ;;
-       esac
-
-       if [ -z "$maxlines" ]; then
-               generate_${change_type}_${fn_name}_email
-       else
-               generate_${change_type}_${fn_name}_email | limit_lines $maxlines
-       fi
-
-       generate_email_footer
-}
-
-generate_email_header()
-{
-       # --- Email (all stdout will be the email)
-       # Generate header
-       cat <<-EOF
-       To: $recipients
-       Subject: ${emailprefix} $short_refname $refname_type ${change_type}d: $describe
-       X-Git-Refname: $refname
-       X-Git-Reftype: $refname_type
-       X-Git-Oldrev: $oldrev
-       X-Git-Newrev: $newrev
-
-       EOF
-}
-
-generate_email_footer()
-{
-       SPACE=" "
-       cat <<-EOF
-
-
-       --${SPACE}
-       $projectdesc
-       EOF
-}
-
-# --------------- Branches
-
-#
-# Called for the creation of a branch
-#
-generate_create_branch_email()
-{
-       # This is a new branch and so oldrev is not valid
-       echo "        at  $newrev ($newrev_type)"
-       echo ""
-
-       echo $LOGBEGIN
-       show_new_revisions
-       echo $LOGEND
-}
-
-#
-# Called for the change of a pre-existing branch
-#
-generate_update_branch_email()
-{
-       # Consider this:
-       #   1 --- 2 --- O --- X --- 3 --- 4 --- N
-       #
-       # O is $oldrev for $refname
-       # N is $newrev for $refname
-       # X is a revision pointed to by some other ref, for which we may
-       #   assume that an email has already been generated.
-       # In this case we want to issue an email containing only revisions
-       # 3, 4, and N.  Given (almost) by
-       #
-       #  git rev-list N ^O --not --all
-       #
-       # The reason for the "almost", is that the "--not --all" will take
-       # precedence over the "N", and effectively will translate to
-       #
-       #  git rev-list N ^O ^X ^N
-       #
-       # So, we need to build up the list more carefully.  git rev-parse
-       # will generate a list of revs that may be fed into git rev-list.
-       # We can get it to make the "--not --all" part and then filter out
-       # the "^N" with:
-       #
-       #  git rev-parse --not --all | grep -v N
-       #
-       # Then, using the --stdin switch to git rev-list we have effectively
-       # manufactured
-       #
-       #  git rev-list N ^O ^X
-       #
-       # This leaves a problem when someone else updates the repository
-       # while this script is running.  Their new value of the ref we're
-       # working on would be included in the "--not --all" output; and as
-       # our $newrev would be an ancestor of that commit, it would exclude
-       # all of our commits.  What we really want is to exclude the current
-       # value of $refname from the --not list, rather than N itself.  So:
-       #
-       #  git rev-parse --not --all | grep -v $(git rev-parse $refname)
-       #
-       # Get's us to something pretty safe (apart from the small time
-       # between refname being read, and git rev-parse running - for that,
-       # I give up)
-       #
-       #
-       # Next problem, consider this:
-       #   * --- B --- * --- O ($oldrev)
-       #          \
-       #           * --- X --- * --- N ($newrev)
-       #
-       # That is to say, there is no guarantee that oldrev is a strict
-       # subset of newrev (it would have required a --force, but that's
-       # allowed).  So, we can't simply say rev-list $oldrev..$newrev.
-       # Instead we find the common base of the two revs and list from
-       # there.
-       #
-       # As above, we need to take into account the presence of X; if
-       # another branch is already in the repository and points at some of
-       # the revisions that we are about to output - we don't want them.
-       # The solution is as before: git rev-parse output filtered.
-       #
-       # Finally, tags: 1 --- 2 --- O --- T --- 3 --- 4 --- N
-       #
-       # Tags pushed into the repository generate nice shortlog emails that
-       # summarise the commits between them and the previous tag.  However,
-       # those emails don't include the full commit messages that we output
-       # for a branch update.  Therefore we still want to output revisions
-       # that have been output on a tag email.
-       #
-       # Luckily, git rev-parse includes just the tool.  Instead of using
-       # "--all" we use "--branches"; this has the added benefit that
-       # "remotes/" will be ignored as well.
-
-       # List all of the revisions that were removed by this update, in a
-       # fast-forward update, this list will be empty, because rev-list O
-       # ^N is empty.  For a non-fast-forward, O ^N is the list of removed
-       # revisions
-       fast_forward=""
-       rev=""
-       for rev in $(git rev-list $newrev..$oldrev)
-       do
-               revtype=$(git cat-file -t "$rev")
-               echo "  discards  $rev ($revtype)"
-       done
-       if [ -z "$rev" ]; then
-               fast_forward=1
-       fi
-
-       # List all the revisions from baserev to newrev in a kind of
-       # "table-of-contents"; note this list can include revisions that
-       # have already had notification emails and is present to show the
-       # full detail of the change from rolling back the old revision to
-       # the base revision and then forward to the new revision
-       for rev in $(git rev-list $oldrev..$newrev)
-       do
-               revtype=$(git cat-file -t "$rev")
-               echo "       via  $rev ($revtype)"
-       done
-
-       if [ "$fast_forward" ]; then
-               echo "      from  $oldrev ($oldrev_type)"
-       else
-               #  1. Existing revisions were removed.  In this case newrev
-               #     is a subset of oldrev - this is the reverse of a
-               #     fast-forward, a rewind
-               #  2. New revisions were added on top of an old revision,
-               #     this is a rewind and addition.
-
-               # (1) certainly happened, (2) possibly.  When (2) hasn't
-               # happened, we set a flag to indicate that no log printout
-               # is required.
-
-               echo ""
-
-               # Find the common ancestor of the old and new revisions and
-               # compare it with newrev
-               baserev=$(git merge-base $oldrev $newrev)
-               rewind_only=""
-               if [ "$baserev" = "$newrev" ]; then
-                       echo "This update discarded existing revisions and left the branch pointing at"
-                       echo "a previous point in the repository history."
-                       echo ""
-                       echo " * -- * -- N ($newrev)"
-                       echo "            \\"
-                       echo "             O -- O -- O ($oldrev)"
-                       echo ""
-                       echo "The removed revisions are not necessarilly gone - if another reference"
-                       echo "still refers to them they will stay in the repository."
-                       rewind_only=1
-               else
-                       echo "This update added new revisions after undoing existing revisions.  That is"
-                       echo "to say, the old revision is not a strict subset of the new revision.  This"
-                       echo "situation occurs when you --force push a change and generate a repository"
-                       echo "containing something like this:"
-                       echo ""
-                       echo " * -- * -- B -- O -- O -- O ($oldrev)"
-                       echo "            \\"
-                       echo "             N -- N -- N ($newrev)"
-                       echo ""
-                       echo "When this happens we assume that you've already had alert emails for all"
-                       echo "of the O revisions, and so we here report only the revisions in the N"
-                       echo "branch from the common base, B."
-               fi
-       fi
-
-       echo ""
-       if [ -z "$rewind_only" ]; then
-               echo $LOGBEGIN
-               show_new_revisions
-
-               # XXX: Need a way of detecting whether git rev-list actually
-               # outputted anything, so that we can issue a "no new
-               # revisions added by this update" message
-
-               echo $LOGEND
-       else
-               echo "No new revisions were added by this update."
-       fi
-
-       # The diffstat is shown from the old revision to the new revision.
-       # This is to show the truth of what happened in this change.
-       # There's no point showing the stat from the base to the new
-       # revision because the base is effectively a random revision at this
-       # point - the user will be interested in what this revision changed
-       # - including the undoing of previous revisions in the case of
-       # non-fast-forward updates.
-       echo ""
-       echo "Summary of changes:"
-       git diff-tree -u --stat --summary --find-copies-harder $oldrev..$newrev
-}
-
-#
-# Called for the deletion of a branch
-#
-generate_delete_branch_email()
-{
-       echo "       was  $oldrev"
-       echo ""
-       echo $LOGEND
-       git show -s --pretty=oneline $oldrev
-       echo $LOGEND
-}
-
-# --------------- Annotated tags
-
-#
-# Called for the creation of an annotated tag
-#
-generate_create_atag_email()
-{
-       echo "        at  $newrev ($newrev_type)"
-
-       generate_atag_email
-}
-
-#
-# Called for the update of an annotated tag (this is probably a rare event
-# and may not even be allowed)
-#
-generate_update_atag_email()
-{
-       echo "        to  $newrev ($newrev_type)"
-       echo "      from  $oldrev (which is now obsolete)"
-
-       generate_atag_email
-}
-
-#
-# Called when an annotated tag is created or changed
-#
-generate_atag_email()
-{
-       # Use git for-each-ref to pull out the individual fields from the
-       # tag
-       eval $(git for-each-ref --shell --format='
-       tagobject=%(*objectname)
-       tagtype=%(*objecttype)
-       tagger=%(taggername)
-       tagged=%(taggerdate)' $refname
-       )
-
-       echo "   tagging  $tagobject ($tagtype)"
-       case "$tagtype" in
-       commit)
-
-               # If the tagged object is a commit, then we assume this is a
-               # release, and so we calculate which tag this tag is
-               # replacing
-               prevtag=$(git describe --abbrev=0 $newrev^ 2>/dev/null)
-
-               if [ -n "$prevtag" ]; then
-                       echo "  replaces  $prevtag"
-               fi
-               ;;
-       *)
-               echo "    length  $(git cat-file -s $tagobject) bytes"
-               ;;
-       esac
-       echo " tagged by  $tagger"
-       echo "        on  $tagged"
-
-       echo ""
-       echo $LOGBEGIN
-
-       # Show the content of the tag message; this might contain a change
-       # log or release notes so is worth displaying.
-       git cat-file tag $newrev | sed -e '1,/^$/d'
-
-       echo ""
-       case "$tagtype" in
-       commit)
-               # Only commit tags make sense to have rev-list operations
-               # performed on them
-               if [ -n "$prevtag" ]; then
-                       # Show changes since the previous release
-                       git rev-list --pretty=short "$prevtag..$newrev" | git shortlog
-               else
-                       # No previous tag, show all the changes since time
-                       # began
-                       git rev-list --pretty=short $newrev | git shortlog
-               fi
-               ;;
-       *)
-               # XXX: Is there anything useful we can do for non-commit
-               # objects?
-               ;;
-       esac
-
-       echo $LOGEND
-}
-
-#
-# Called for the deletion of an annotated tag
-#
-generate_delete_atag_email()
-{
-       echo "       was  $oldrev"
-       echo ""
-       echo $LOGEND
-       git show -s --pretty=oneline $oldrev
-       echo $LOGEND
-}
-
-# --------------- General references
-
-#
-# Called when any other type of reference is created (most likely a
-# non-annotated tag)
-#
-generate_create_general_email()
-{
-       echo "        at  $newrev ($newrev_type)"
-
-       generate_general_email
-}
-
-#
-# Called when any other type of reference is updated (most likely a
-# non-annotated tag)
-#
-generate_update_general_email()
-{
-       echo "        to  $newrev ($newrev_type)"
-       echo "      from  $oldrev"
-
-       generate_general_email
-}
-
-#
-# Called for creation or update of any other type of reference
-#
-generate_general_email()
-{
-       # Unannotated tags are more about marking a point than releasing a
-       # version; therefore we don't do the shortlog summary that we do for
-       # annotated tags above - we simply show that the point has been
-       # marked, and print the log message for the marked point for
-       # reference purposes
-       #
-       # Note this section also catches any other reference type (although
-       # there aren't any) and deals with them in the same way.
-
-       echo ""
-       if [ "$newrev_type" = "commit" ]; then
-               echo $LOGBEGIN
-               git show --no-color --root -s --pretty=medium $newrev
-               echo $LOGEND
-       else
-               # What can we do here?  The tag marks an object that is not
-               # a commit, so there is no log for us to display.  It's
-               # probably not wise to output git cat-file as it could be a
-               # binary blob.  We'll just say how big it is
-               echo "$newrev is a $newrev_type, and is $(git cat-file -s $newrev) bytes long."
-       fi
-}
-
-#
-# Called for the deletion of any other type of reference
-#
-generate_delete_general_email()
-{
-       echo "       was  $oldrev"
-       echo ""
-       echo $LOGEND
-       git show -s --pretty=oneline $oldrev
-       echo $LOGEND
-}
-
-
-# --------------- Miscellaneous utilities
-
-#
-# Show new revisions as the user would like to see them in the email.
-#
-show_new_revisions()
-{
-       # This shows all log entries that are not already covered by
-       # another ref - i.e. commits that are now accessible from this
-       # ref that were previously not accessible
-       # (see generate_update_branch_email for the explanation of this
-       # command)
-
-       # Revision range passed to rev-list differs for new vs. updated
-       # branches.
-       if [ "$change_type" = create ]
-       then
-               # Show all revisions exclusive to this (new) branch.
-               revspec=$newrev
-       else
-               # Branch update; show revisions not part of $oldrev.
-               revspec=$oldrev..$newrev
-       fi
-
-       other_branches=$(git for-each-ref --format='%(refname)' refs/heads/ |
-           grep -F -v $refname)
-       git rev-parse --not $other_branches |
-       if [ -z "$custom_showrev" ]
-       then
-               git rev-list --pretty --stdin $revspec
-       else
-               git rev-list --stdin $revspec |
-               while read onerev
-               do
-                       eval $(printf "$custom_showrev" $onerev)
-               done
-       fi
-}
-
-
-limit_lines()
-{
-       lines=0
-       skipped=0
-       while IFS="" read -r line; do
-               lines=$((lines + 1))
-               if [ $lines -gt $1 ]; then
-                       skipped=$((skipped + 1))
-               else
-                       printf "%s\n" "$line"
-               fi
-       done
-       if [ $skipped -ne 0 ]; then
-               echo "... $skipped lines suppressed ..."
-       fi
-}
-
-
-send_mail()
-{
-       if [ -n "$envelopesender" ]; then
-               /usr/sbin/sendmail -t -f "$envelopesender"
-       else
-               /usr/sbin/sendmail -t
-       fi
-}
-
-# ---------------------------- main()
-
-# --- Constants
-LOGBEGIN="-----------------------------------------------------------------------"
-LOGEND="-----------------------------------------------------------------------"
-
-# --- Config
-# Set GIT_DIR either from the working directory, or from the environment
-# variable.
-GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
-if [ -z "$GIT_DIR" ]; then
-       echo >&2 "fatal: post-receive: GIT_DIR not set"
-       exit 1
-fi
-
-projectdesc=$(sed -ne '1p' "$GIT_DIR/description" 2>/dev/null)
-# Check if the description is unchanged from it's default, and shorten it to
-# a more manageable length if it is
-if expr "$projectdesc" : "Unnamed repository.*$" >/dev/null
-then
-       projectdesc="UNNAMED PROJECT"
-fi
-
-recipients=$(git config hooks.mailinglist)
-announcerecipients=$(git config hooks.announcelist)
-envelopesender=$(git config hooks.envelopesender)
-emailprefix=$(git config hooks.emailprefix || echo '[SCM] ')
-custom_showrev=$(git config hooks.showrev)
-maxlines=$(git config hooks.emailmaxlines)
-
-# --- Main loop
-# Allow dual mode: run from the command line just like the update hook, or
-# if no arguments are given then run as a hook script
-if [ -n "$1" -a -n "$2" -a -n "$3" ]; then
-       # Output to the terminal in command line mode - if someone wanted to
-       # resend an email; they could redirect the output to sendmail
-       # themselves
-       prep_for_email $2 $3 $1 && PAGER= generate_email
-else
-       while read oldrev newrev refname
-       do
-               prep_for_email $oldrev $newrev $refname || continue
-               generate_email $maxlines | send_mail
-       done
-fi
diff --git a/crawl-ref/git-hooks/git_buildbot.py b/crawl-ref/git-hooks/git_buildbot.py
deleted file mode 100755 (executable)
index 886ee0c..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-#! /usr/bin/env python
-
-# This script expects one line for each new revision on the form
-#   <oldrev> <newrev> <refname>
-#
-# For example:
-#   aa453216d1b3e49e7f6f98441fa56946ddcd6a20
-#   68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
-#
-# Each of these changes will be passed to the buildbot server along
-# with any other change information we manage to extract from the
-# repository.
-#
-# This script is meant to be run from hooks/post-receive in the git
-# repository. It can also be run at client side with hooks/post-merge
-# after using this wrapper:
-
-#!/bin/sh
-# PRE=$(git rev-parse 'HEAD@{1}')
-# POST=$(git rev-parse HEAD)
-# SYMNAME=$(git rev-parse --symbolic-full-name HEAD)
-# echo "$PRE $POST $SYMNAME" | git_buildbot.py
-#
-# Largely based on contrib/hooks/post-receive-email from git.
-
-import commands
-import logging
-import os
-import re
-import sys
-
-from twisted.spread import pb
-from twisted.cred import credentials
-from twisted.internet import reactor
-
-from buildbot.scripts import runner
-from optparse import OptionParser
-
-# Modify this to fit your setup, or pass in --master server:host on the
-# command line
-
-master = "xerxes.uplinklabs.net:9989"
-
-# When sending the notification, send this category iff
-# it's set (via --category)
-
-category = None
-
-
-# The GIT_DIR environment variable must have been set up so that any
-# git commands that are executed will operate on the repository we're
-# installed in.
-
-changes = []
-
-
-def connectFailed(error):
-    logging.error("Could not connect to %s: %s"
-            % (master, error.getErrorMessage()))
-    return error
-
-
-def addChange(dummy, remote, changei):
-    logging.debug("addChange %s, %s" % (repr(remote), repr(changei)))
-    try:
-        c = changei.next()
-    except StopIteration:
-        remote.broker.transport.loseConnection()
-        return None
-
-    logging.info("New revision: %s" % c['revision'][:8])
-    for key, value in c.iteritems():
-        logging.debug("  %s: %s" % (key, value))
-
-    d = remote.callRemote('addChange', c)
-    d.addCallback(addChange, remote, changei)
-    return d
-
-
-def connected(remote):
-    return addChange(None, remote, changes.__iter__())
-
-
-def grab_commit_info(c, rev):
-    # Extract information about committer and files using git show
-    f = os.popen("git show --raw --pretty=full %s" % rev, 'r')
-
-    files = []
-
-    while True:
-        line = f.readline()
-        if not line:
-            break
-
-        m = re.match(r"^:.*[MAD]\s+(.+)$", line)
-        if m:
-            logging.debug("Got file: %s" % m.group(1))
-            files.append(m.group(1))
-            continue
-
-        m = re.match(r"^Author:\s+(.+)$", line)
-        if m:
-            logging.debug("Got author: %s" % m.group(1))
-            c['who'] = m.group(1)
-
-        if re.match(r"^Merge: .*$", line):
-            files.append('merge')
-
-    c['files'] = files
-    status = f.close()
-    if status:
-        logging.warning("git show exited with status %d" % status)
-
-
-def gen_changes(input, branch):
-    while True:
-        line = input.readline()
-        if not line:
-            break
-
-        logging.debug("Change: %s" % line)
-
-        m = re.match(r"^([0-9a-f]+) (.*)$", line.strip())
-        c = {'revision': m.group(1),
-             'comments': m.group(2),
-             'branch': branch,
-        }
-        if category:
-            c['category'] = category
-        grab_commit_info(c, m.group(1))
-        changes.append(c)
-
-
-def gen_create_branch_changes(newrev, refname, branch):
-    # A new branch has been created. Generate changes for everything
-    # up to `newrev' which does not exist in any branch but `refname'.
-    #
-    # Note that this may be inaccurate if two new branches are created
-    # at the same time, pointing to the same commit, or if there are
-    # commits that only exists in a common subset of the new branches.
-
-    logging.info("Branch `%s' created" % branch)
-
-    f = os.popen("git rev-parse --not --branches"
-            + "| grep -v $(git rev-parse %s)" % refname
-            + "| git rev-list --reverse --pretty=oneline --stdin %s" % newrev,
-            'r')
-
-    gen_changes(f, branch)
-
-    status = f.close()
-    if status:
-        logging.warning("git rev-list exited with status %d" % status)
-
-
-def gen_update_branch_changes(oldrev, newrev, refname, branch):
-    # A branch has been updated. If it was a fast-forward update,
-    # generate Change events for everything between oldrev and newrev.
-    #
-    # In case of a forced update, first generate a "fake" Change event
-    # rewinding the branch to the common ancestor of oldrev and
-    # newrev. Then, generate Change events for each commit between the
-    # common ancestor and newrev.
-
-    logging.info("Branch `%s' updated %s .. %s"
-            % (branch, oldrev[:8], newrev[:8]))
-
-    baserev = commands.getoutput("git merge-base %s %s" % (oldrev, newrev))
-    logging.debug("oldrev=%s newrev=%s baserev=%s" % (oldrev, newrev, baserev))
-    if baserev != oldrev:
-        c = {'revision': baserev,
-             'comments': "Rewind branch",
-             'branch': branch,
-             'who': "dummy",
-        }
-        logging.info("Branch %s was rewound to %s" % (branch, baserev[:8]))
-        files = []
-        f = os.popen("git diff --raw %s..%s" % (oldrev, baserev), 'r')
-        while True:
-            line = f.readline()
-            if not line:
-                break
-
-            file = re.match(r"^:.*[MAD]\s*(.+)$", line).group(1)
-            logging.debug("  Rewound file: %s" % file)
-            files.append(file)
-
-        status = f.close()
-        if status:
-            logging.warning("git diff exited with status %d" % status)
-
-        if category:
-            c['category'] = category
-
-        if files:
-            c['files'] = files
-            changes.append(c)
-
-    if newrev != baserev:
-        # Not a pure rewind
-        f = os.popen("git rev-list --reverse --pretty=oneline %s..%s"
-                % (baserev, newrev), 'r')
-        gen_changes(f, branch)
-
-        status = f.close()
-        if status:
-            logging.warning("git rev-list exited with status %d" % status)
-
-
-def cleanup(res):
-    reactor.stop()
-
-
-def process_changes():
-    # Read branch updates from stdin and generate Change events
-    while True:
-        line = sys.stdin.readline()
-        if not line:
-            break
-
-        [oldrev, newrev, refname] = line.split(None, 2)
-
-        # We only care about regular heads, i.e. branches
-        m = re.match(r"^refs\/heads\/(.+)$", refname)
-        if not m:
-            logging.info("Ignoring refname `%s': Not a branch" % refname)
-            continue
-
-        branch = m.group(1)
-
-        # Find out if the branch was created, deleted or updated. Branches
-        # being deleted aren't really interesting.
-        if re.match(r"^0*$", newrev):
-            logging.info("Branch `%s' deleted, ignoring" % branch)
-            continue
-        elif re.match(r"^0*$", oldrev):
-            gen_create_branch_changes(newrev, refname, branch)
-        else:
-            gen_update_branch_changes(oldrev, newrev, refname, branch)
-
-    # Submit the changes, if any
-    if not changes:
-        logging.warning("No changes found")
-        return
-
-    host, port = master.split(':')
-    port = int(port)
-
-    f = pb.PBClientFactory()
-    d = f.login(credentials.UsernamePassword("change", "changepw"))
-    reactor.connectTCP(host, port, f)
-
-    d.addErrback(connectFailed)
-    d.addCallback(connected)
-    d.addBoth(cleanup)
-
-    reactor.run()
-
-
-def parse_options():
-    parser = OptionParser()
-    parser.add_option("-l", "--logfile", action="store", type="string",
-            help="Log to the specified file")
-    parser.add_option("-v", "--verbose", action="count",
-            help="Be more verbose. Ignored if -l is not specified.")
-    master_help = ("Build master to push to. Default is %(master)s" %
-                   { 'master' : master })
-    parser.add_option("-m", "--master", action="store", type="string",
-            help=master_help)
-    parser.add_option("-c", "--category", action="store",
-                      type="string", help="Scheduler category to notify.")
-    options, args = parser.parse_args()
-    return options
-
-
-# Log errors and critical messages to stderr. Optionally log
-# information to a file as well (we'll set that up later.)
-stderr = logging.StreamHandler(sys.stderr)
-fmt = logging.Formatter("git_buildbot: %(levelname)s: %(message)s")
-stderr.setLevel(logging.ERROR)
-stderr.setFormatter(fmt)
-logging.getLogger().addHandler(stderr)
-logging.getLogger().setLevel(logging.DEBUG)
-
-try:
-    options = parse_options()
-    level = logging.WARNING
-    if options.verbose:
-        level -= 10 * options.verbose
-        if level < 0:
-            level = 0
-
-    if options.logfile:
-        logfile = logging.FileHandler(options.logfile)
-        logfile.setLevel(level)
-        fmt = logging.Formatter("%(asctime)s %(levelname)s: %(message)s")
-        logfile.setFormatter(fmt)
-        logging.getLogger().addHandler(logfile)
-
-    if options.master:
-        master=options.master
-
-    if options.category:
-        category = options.category
-
-    process_changes()
-except SystemExit:
-    pass
-except:
-    logging.exception("Unhandled exception")
-    sys.exit(1)
diff --git a/crawl-ref/git-hooks/post-receive b/crawl-ref/git-hooks/post-receive
deleted file mode 100755 (executable)
index 5a7d44d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
-if [ -z "$GIT_DIR" ]; then
-       echo >&2 "fatal: post-receive: GIT_DIR not set"
-       exit 1
-fi
-
-$GIT_DIR/hooks/crawl-ref-email "$@"
-
-# BuildBot
-#$GIT_DIR/hooks/git_buildbot.py "$@"
diff --git a/crawl-ref/git-hooks/update b/crawl-ref/git-hooks/update
deleted file mode 100755 (executable)
index 20154da..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-
-# Note that you can (and it might be actually more desirable) also use this
-# script as the GIT update hook:
-#
-
-GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
-if [ -z "$GIT_DIR" ]; then
-       echo >&2 "fatal: post-receive: GIT_DIR not set"
-       exit 1
-fi
-
-branchname=${1#refs/heads/}
-[ "$branchname" = "master" ] && branchname=
-oldhead=$2
-newhead=$3
-for merged in $(git-rev-parse --symbolic-full-name --not --branches | egrep -v "^\^$1$" | git-rev-list --stdin $oldhead..$newhead | tac); do
-  # Call your favorite announcement bot here
-  # $GIT_DIR/hooks/announce $merged $branchname
-  :
-done
index 2d3c1cb..7076acf 100644 (file)
@@ -33,9 +33,9 @@ collection at http://code.google.com/p/crawl-tiles/
                             Preamble
 
   The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
+freedom to share and change it. By contrast, the GNU General Public
 License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
+software--to make sure the software is free for all its users. This
 General Public License applies to most of the Free Software
 Foundation's software and to any other program whose authors commit to
 using it.  (Some other Free Software Foundation software is covered by
@@ -43,7 +43,7 @@ the GNU Lesser General Public License instead.)  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
+price. Our General Public Licenses are designed to make sure that you
 have the freedom to distribute copies of free software (and charge for
 this service if you wish), that you receive source code or can get it
 if you want it, that you can change the software or use pieces of it
@@ -56,8 +56,8 @@ distribute copies of the software, or if you modify it.
 
   For example, if you distribute copies of such a program, whether
 gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
 rights.
 
   We protect your rights with two steps: (1) copyright the software, and
@@ -66,15 +66,15 @@ distribute and/or modify the software.
 
   Also, for each author's protection and ours, we want to make certain
 that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
+software. If the software is modified by someone else and passed on, we
 want its recipients to know that what they have is not the original, so
 that any problems introduced by others will not reflect on the original
 authors' reputations.
 
   Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
+patents. We wish to avoid the danger that redistributors of a free
 program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
+program proprietary. To prevent this, we have made it clear that any
 patent must be licensed for everyone's free use or not licensed at all.
 
   The precise terms and conditions for copying, distribution and
@@ -85,7 +85,7 @@ modification follow.
 
   0. This License applies to any program or other work which contains
 a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
+under the terms of this General Public License. The "Program", below,
 refers to any such program or work, and a "work based on the Program"
 means either the Program or any derivative work under copyright law:
 that is to say, a work containing the Program or a portion of it,
@@ -94,7 +94,7 @@ language.  (Hereinafter, translation is included without limitation in
 the term "modification".)  Each licensee is addressed as "you".
 
 Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
+covered by this License; they are outside its scope. The act of
 running the Program is not restricted, and the output from the Program
 is covered only if its contents constitute a work based on the
 Program (independent of having been made by running the Program).
@@ -135,11 +135,11 @@ above, provided that you also meet all of these conditions:
     does not normally print such an announcement, your work based on
     the Program is not required to print an announcement.)
 
-These requirements apply to the modified work as a whole.  If
+These requirements apply to the modified work as a whole. If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
 themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
+sections when you distribute them as separate works. But when you
 distribute the same sections as part of a whole which is a work based
 on the Program, the distribution of the whole must be on the terms of
 this License, whose permissions for other licensees extend to the
@@ -177,10 +177,10 @@ Sections 1 and 2 above provided that you also do one of the following:
     an offer, in accord with Subsection b above.)
 
 The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
+making modifications to it. For an executable work, complete source
 code means all the source code for all modules it contains, plus any
 associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
+control compilation and installation of the executable. However, as a
 special exception, the source code distributed need not include
 anything that is normally distributed (in either source or binary
 form) with the major components (compiler, kernel, and so on) of the
@@ -194,7 +194,7 @@ distribution of the source code, even though third parties are not
 compelled to copy the source along with the object code.
 
   4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
+except as expressly provided under this License. Any attempt
 otherwise to copy, modify, sublicense or distribute the Program is
 void, and will automatically terminate your rights under this License.
 However, parties who have received copies, or rights, from you under
@@ -202,9 +202,9 @@ this License will not have their licenses terminated so long as such
 parties remain in full compliance.
 
   5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
 modifying or distributing the Program (or any work based on the
 Program), you indicate your acceptance of this License to do so, and
 all its terms and conditions for copying, distributing or modifying
@@ -213,7 +213,7 @@ the Program or works based on it.
   6. Each time you redistribute the Program (or any work based on the
 Program), the recipient automatically receives a license from the
 original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
+these terms and conditions. You may not impose any further
 restrictions on the recipients' exercise of the rights granted herein.
 You are not responsible for enforcing compliance by third parties to
 this License.
@@ -222,10 +222,10 @@ this License.
 infringement or for any other reason (not limited to patent issues),
 conditions are imposed on you (whether by court order, agreement or
 otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
+excuse you from the conditions of this License. If you cannot
 distribute so as to satisfy simultaneously your obligations under this
 License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
+may not distribute the Program at all. For example, if a patent
 license would not permit royalty-free redistribution of the Program by
 all those who receive copies directly or indirectly through you, then
 the only way you could satisfy both it and this License would be to
@@ -240,7 +240,7 @@ It is not the purpose of this section to induce you to infringe any
 patents or other property right claims or to contest validity of any
 such claims; this section has the sole purpose of protecting the
 integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
+implemented by public license practices. Many people have made
 generous contributions to the wide range of software distributed
 through that system in reliance on consistent application of that
 system; it is up to the author/donor to decide if he or she is willing
@@ -255,39 +255,39 @@ certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Program under this License
 may add an explicit geographical distribution limitation excluding
 those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
+countries not thus excluded. In such case, this License incorporates
 the limitation as if written in the body of this License.
 
   9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+of the General Public License from time to time. Such new versions will
 be similar in spirit to the present version, but may differ in detail to
 address new problems or concerns.
 
-Each version is given a distinguishing version number.  If the Program
+Each version is given a distinguishing version number. If the Program
 specifies a version number of this License which applies to it and "any
 later version", you have the option of following the terms and conditions
 either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
+Software Foundation. If the Program does not specify a version number of
 this License, you may choose any version ever published by the Free Software
 Foundation.
 
   10. If you wish to incorporate parts of the Program into other free
 programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
+to ask for permission. For software which is copyrighted by the Free
 Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
+make exceptions for this. Our decision will be guided by the two goals
 of preserving the free status of all derivatives of our free software and
 of promoting the sharing and reuse of software generally.
 
                             NO WARRANTY
 
   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 REPAIR OR CORRECTION.
 
@@ -309,7 +309,7 @@ POSSIBILITY OF SUCH DAMAGES.
 possible use to the public, the best way to achieve this is to make it
 free software which everyone can redistribute and change under these terms.
 
-  To do so, attach the following notices to the program.  It is safest
+  To do so, attach the following notices to the program. It is safest
 to attach them to the start of each source file to most effectively
 convey the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
@@ -324,7 +324,7 @@ the "copyright" line and a pointer to where the full notice is found.
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     GNU General Public License for more details.
 
     You should have received a copy of the GNU General Public License along
@@ -342,13 +342,13 @@ when it starts in an interactive mode:
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
+parts of the General Public License. Of course, the commands you use may
 be called something other than `show w' and `show c'; they could even be
 mouse-clicks or menu items--whatever suits your program.
 
 You should also get your employer (if you work as a programmer) or your
 school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
+necessary. Here is a sample; alter the names:
 
   Yoyodyne, Inc., hereby disclaims all copyright interest in the program
   `Gnomovision' (which makes passes at compilers) written by James Hacker.
@@ -357,7 +357,7 @@ necessary.  Here is a sample; alter the names:
   Ty Coon, President of Vice
 
 This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
+proprietary programs. If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
+library. If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
index fe78cbc..e72e192 100644 (file)
@@ -1,5 +1,5 @@
 # With Dungeon Crawl Stone Soup 0.6, there has been a new shift
-# of glyphs and colours.  Some demons have been promoted, and
+# of glyphs and colours. Some demons have been promoted, and
 # others have been demoted, while queen monsters have been
 # moved into their relevant non-queen glyph.
 
index bc0c147..09a73c5 100644 (file)
@@ -4,7 +4,7 @@
 #    options_guide.txt
 # in your /docs directory. If you can't find it, the file is also available
 # online at:
-# https://gitorious.org/crawl/crawl/source/HEAD:crawl-ref/docs/options_guide.txt
+# https://github.com/crawl/crawl/blob/master/crawl-ref/docs/options_guide.txt
 #
 # Crawl uses the first file of the following list as its option file:
 #  * init.txt in the -rcdir directory (if specified)
@@ -16,7 +16,7 @@
 #  * settings/init.txt (in the Crawl directory)
 
 ##### Some basic explanation of option syntax #######################
-# Lines beginning with '#' are comments.  The basic syntax is:
+# Lines beginning with '#' are comments. The basic syntax is:
 #
 # field = value         or      field.subfield = value
 #
index 3900d6a..214f89b 100644 (file)
 namespace std {}
 using namespace std;
 
+#ifndef SIZE_MAX
+# include <limits>
+# define SIZE_MAX (std::numeric_limits<std::size_t>::max())
+#endif
+
 // Define COMPILE_CHECK before including any of our headers, so even things
 // like externs.h can use it.  platform.h a few lines up is standalone, so
 // doesn't count.
@@ -171,7 +176,7 @@ static inline double pow(int x, double y) { return std::pow((double)x, y); }
     // #define WINMM_PLAY_SOUNDS
 
     // Use Perl-compatible regular expressions. libpcre must be available and
-    // linked in.  Required in the absence of POSIX regexes.
+    // linked in. Required in the absence of POSIX regexes.
     #ifndef REGEX_PCRE
     #define REGEX_PCRE
     #endif
@@ -320,7 +325,7 @@ static inline double pow(int x, double y) { return std::pow((double)x, y); }
     // This function might slow things down quite a bit
     // on slow machines because it's going to go through
     // every item on the level and do string comparisons
-    // against the name.  Still, it is nice to know the
+    // against the name. Still, it is nice to know the
     // turn in which "bad" items appear.
     #define DEBUG_ITEM_SCAN
     #define DEBUG_MONS_SCAN
@@ -381,7 +386,7 @@ static inline double pow(int x, double y) { return std::pow((double)x, y); }
 #define SCORE_FILE_ENTRIES      100
 #endif
 
-// Option to allow scoring of wizard characters.  Note that even if
+// Option to allow scoring of wizard characters. Note that even if
 // you define this option, wizard characters are still tagged as such
 // in the score file.
 // #define SCORE_WIZARD_CHARACTERS
@@ -449,7 +454,7 @@ static inline void UNUSED(const volatile T &)
 # define PRINTF(x, dfmt) const char *format dfmt, ...
 #endif
 
-// Most libcs support %zu, but msvcrt does not.  Assumes that a request
+// Most libcs support %zu, but msvcrt does not. Assumes that a request
 // to use MinGW's stdio implementation worked and gave us at least C99.
 #if defined(TARGET_COMPILER_VC) || defined(TARGET_COMPILER_MINGW) \
                                    && !defined(__USE_MINGW_ANSI_STDIO)
index d84b6f0..eac15e0 100644 (file)
  * Defined FILE_ATTRIBUTE_DEVICE for MSVC 6.0.
  *
  * Aug 11, 2010, Toni Ronkko
- * Added d_type and d_namlen fields to dirent structure.  The former is
+ * Added d_type and d_namlen fields to dirent structure. The former is
  * especially useful for determining whether directory entry represents a
- * file or a directory.  For more information, see
+ * file or a directory. For more information, see
  * http://www.delorie.com/gnu/docs/glibc/libc_270.html
  *
  * Aug 11, 2010, Toni Ronkko
- * Improved conformance to the standards.  For example, errno is now set
- * properly on failure and assert() is never used.  Thanks to Peter Brockam
+ * Improved conformance to the standards. For example, errno is now set
+ * properly on failure and assert() is never used. Thanks to Peter Brockam
  * for suggestions.
  *
  * Aug 11, 2010, Toni Ronkko
  *
  * Jan 18, 2008, Toni Ronkko
  * Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string
- * between multi-byte and unicode representations.  This makes the
- * code simpler and also allows the code to be compiled under MingW.  Thanks
+ * between multi-byte and unicode representations. This makes the
+ * code simpler and also allows the code to be compiled under MingW. Thanks
  * to Azriel Fasten for the suggestion.
  *
  * Mar 4, 2007, Toni Ronkko
  * Bug fix: due to the strncpy_s() function this file only compiled in
- * Visual Studio 2005.  Using the new string functions only when the
+ * Visual Studio 2005. Using the new string functions only when the
  * compiler version allows.
  *
  * Nov  2, 2006, Toni Ronkko
  * removed rewinddir() as it had a bug.
  *
  * Aug 20, 2006, Toni Ronkko
- * Removed all remarks about MSVC 1.0, which is antiqued now.  Simplified
+ * Removed all remarks about MSVC 1.0, which is antiqued now. Simplified
  * comments by removing SGML tags.
  *
  * May 14 2002, Toni Ronkko
  * Embedded the function definitions directly to the header so that no
- * source modules need to be included in the Visual Studio project.  Removed
+ * source modules need to be included in the Visual Studio project. Removed
  * all the dependencies to other projects so that this very header can be
  * used independently.
  *
 #define DTTOIF(type) (type)
 
 /*
- * File type macros.  Note that block devices, sockets and links cannot be
+ * File type macros. Note that block devices, sockets and links cannot be
  * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
- * only defined for compatibility.  These macros should always return false
+ * only defined for compatibility. These macros should always return false
  * on Windows.
  */
 #define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFFIFO)
@@ -216,7 +216,7 @@ static DIR *opendir(const char *dirname)
       int error;
 
       /*
-       * Convert relative directory name to an absolute one.  This
+       * Convert relative directory name to an absolute one. This
        * allows rewinddir() to function correctly when the current working
        * directory is changed between opendir() and rewinddir().
        */
@@ -260,7 +260,7 @@ static DIR *opendir(const char *dirname)
 
 /*****************************************************************************
  * Read a directory entry, and return a pointer to a dirent structure
- * containing the name of the entry in d_name field.  Individual directory
+ * containing the name of the entry in d_name field. Individual directory
  * entries returned by this very function include regular files,
  * sub-directories, pseudo-directories "." and "..", but also volume labels,
  * hidden files and system files may be returned.
@@ -314,7 +314,7 @@ static struct dirent *readdir(DIR *dirp)
 
 
 /*****************************************************************************
- * Close directory stream opened by opendir() function.  Close of the
+ * Close directory stream opened by opendir() function. Close of the
  * directory stream invalidates the DIR structure as well as any previously
  * read directory entry.
  */
@@ -340,9 +340,9 @@ static int closedir(DIR *dirp)
 
 /*****************************************************************************
  * Resets the position of the directory stream to which dirp refers to the
- * beginning of the directory.  It also causes the directory stream to refer
+ * beginning of the directory. It also causes the directory stream to refer
  * to the current state of the corresponding directory, as a call to opendir()
- * would have done.  If dirp does not refer to a directory stream, the effect
+ * would have done. If dirp does not refer to a directory stream, the effect
  * is undefined.
  */
 static void rewinddir(DIR* dirp)
index 3bb1da4..602564b 100644 (file)
@@ -12,7 +12,7 @@
    The GNU C Library is distributed in the hope that it will
    be useful, but WITHOUT ANY WARRANTY; without even the
    implied warranty of MERCHANTABILITY or FITNESS FOR A
-   PARTICULAR PURPOSE.  See the GNU Lesser General Public
+   PARTICULAR PURPOSE. See the GNU Lesser General Public
    License for more details.
 
    You should have received a copy of the GNU Lesser General
@@ -32,7 +32,7 @@
 /* If __GNU_LIBRARY__ is not already defined, either we are being used
    standalone, or this is the first header included in the source file.
    If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
    not de