File crawl_24_gbdbe590.patch of Package crawl

diff -uNr stone_soup-0.14.1/docs/changelog.txt stone_soup-0.14.1-24-gbdbe590/docs/changelog.txt
--- stone_soup-0.14.1/docs/changelog.txt	
+++ stone_soup-0.14.1-24-gbdbe590/docs/changelog.txt	
@@ -564,6 +564,8 @@
   further stat drain damages the player. The effects of a stat being at zero
   (fainting, slow actions, etc.) persist.
 * Ogre hunters and artificers now start with a club instead of a short sword.
+* Teleport control is a duration, which expires after time or use. It still
+  is disallowed on some levels.
 
 Monsters
 --------
@@ -782,6 +784,7 @@
    - The knife of accuracy and boots of the Assassin are no more.
    - The lightning scales are now +6 (was +3).
 * Hammers do not generate outside of vaults.
+* Rings of teleport control must be evoked to work.
 
 Gods
 ----
diff -uNr stone_soup-0.14.1/source/cloud.cc stone_soup-0.14.1-24-gbdbe590/source/cloud.cc
--- stone_soup-0.14.1/source/cloud.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/cloud.cc	
@@ -352,7 +352,7 @@
         if (cloud.type == CLOUD_NONE)
             continue;
 
-#if ASSERTS
+#ifdef ASSERTS
         if (cell_is_solid(cloud.pos))
         {
             die("cloud %s in %s at (%d,%d)", cloud_type_name(cloud.type).c_str(),
diff -uNr stone_soup-0.14.1/source/clua.cc stone_soup-0.14.1-24-gbdbe590/source/clua.cc
--- stone_soup-0.14.1/source/clua.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/clua.cc	
@@ -18,6 +18,12 @@
 #define BUGGY_PCALL_ERROR  "667: Malformed response to guarded pcall."
 #define BUGGY_SCRIPT_ERROR "666: Killing badly-behaved Lua script."
 
+// 64-bit luajit does not support custom allocators. Only checking
+// TARGET_CPU_X64 because luajit doesn't support other 64-bit archs.
+#if defined(USE_LUAJIT) && defined(TARGET_CPU_X64)
+#define NO_CUSTOM_ALLOCATOR
+#endif
+
 #define CL_RESETSTACK_RETURN(ls, oldtop, retval) \
     do \
     {\
@@ -31,7 +37,9 @@
 
 static int  _clua_panic(lua_State *);
 static void _clua_throttle_hook(lua_State *, lua_Debug *);
+#ifndef NO_CUSTOM_ALLOCATOR
 static void *_clua_allocator(void *ud, void *ptr, size_t osize, size_t nsize);
+#endif
 static int  _clua_guarded_pcall(lua_State *);
 static int  _clua_require(lua_State *);
 static int  _clua_dofile(lua_State *);
@@ -634,7 +642,18 @@
     if (_state)
         return;
 
+#ifdef NO_CUSTOM_ALLOCATOR
+    // If this is likely to be used as a server, warn the builder.
+    // NOTE: #warning doesn't work on MSVC, so this will be fatal there
+    // (not that webtiles or dgamelaunch are supported on Windows anyway).
+# if defined(USE_TILE_WEB) || defined(DGAMELAUNCH)
+#   warning Detected 64-bit Luajit, disabling CLua memory throttling.
+# endif
+    _state = luaL_newstate();
+#else
+    // Throttle memory usage in managed (clua) VMs
     _state = managed_vm? lua_newstate(_clua_allocator, this) : luaL_newstate();
+#endif
     if (!_state)
         end(1, false, "Unable to create Lua state.");
 
@@ -951,6 +970,7 @@
     return 0;
 }
 
+#ifndef NO_CUSTOM_ALLOCATOR
 static void *_clua_allocator(void *ud, void *ptr, size_t osize, size_t nsize)
 {
     CLua *cl = static_cast<CLua *>(ud);
@@ -970,6 +990,7 @@
     else
         return realloc(ptr, nsize);
 }
+#endif
 
 static void _clua_throttle_hook(lua_State *ls, lua_Debug *dbg)
 {
diff -uNr stone_soup-0.14.1/source/dat/database/monspeak.txt stone_soup-0.14.1-24-gbdbe590/source/dat/database/monspeak.txt
--- stone_soup-0.14.1/source/dat/database/monspeak.txt	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/database/monspeak.txt	
@@ -1806,15 +1806,13 @@
 
 @The_monster@ says, "Your corpse will decorate my castle walls." @player_only@
 
-@The_monster@ says, "In my kingdom, weaklings like you are put to the
-sword." @player_only@
+@The_monster@ says, "In my kingdom, weaklings like you are put to the sword." @player_only@
 
 @The_monster@ says, "No maze can contain me."
 
 @The_monster@ chants a prayer to Makhleb.
 
-@The_monster@ says @to_foe@, "Your valuables will do nicely in my
-coffers." @player_only@
+@The_monster@ says @to_foe@, "Your valuables will do nicely in my coffers." @player_only@
 
 %%%%
 _Asterion_rare_
diff -uNr stone_soup-0.14.1/source/dat/database/monspell.txt stone_soup-0.14.1-24-gbdbe590/source/dat/database/monspell.txt
--- stone_soup-0.14.1/source/dat/database/monspell.txt	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/database/monspell.txt	
@@ -425,6 +425,10 @@
 
 @The_monster@ calls down the wrath of @possessive_God@ upon @target@.
 %%%%
+drake cast targeted
+
+@The_monster@ breathes @beam@ @at@ @target@.
+%%%%
 dragon cast targeted
 
 @The_monster@ breathes @beam@ @at@ @target@.
diff -uNr stone_soup-0.14.1/source/dat/des/arrival/small.des stone_soup-0.14.1-24-gbdbe590/source/dat/des/arrival/small.des
--- stone_soup-0.14.1/source/dat/des/arrival/small.des	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/des/arrival/small.des	
@@ -2985,7 +2985,7 @@
 xc>zll=....=llC>cx
 xcccccc....ccccccx
  .ttttc....ctt..
-    ..crRRrct.
+  ....crRRrct.
      .........
 ENDMAP
 
diff -uNr stone_soup-0.14.1/source/dat/des/branches/abyss.des stone_soup-0.14.1-24-gbdbe590/source/dat/des/branches/abyss.des
--- stone_soup-0.14.1/source/dat/des/branches/abyss.des	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/des/branches/abyss.des	
@@ -44,7 +44,7 @@
 # 1/3 chance to appear on D:21-27, and guaranteed on D:25.
 ###############################################################################
 
-default-depth: Depths
+default-depth: Depths, D:21-
 
 # This one is the backup and the one used in encompass vaults.
 NAME: abyss_entry
diff -uNr stone_soup-0.14.1/source/dat/des/branches/hell.des stone_soup-0.14.1-24-gbdbe590/source/dat/des/branches/hell.des
--- stone_soup-0.14.1/source/dat/des/branches/hell.des	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/des/branches/hell.des	
@@ -57,6 +57,8 @@
 end
 }}
 
+default-depth: Depths, D:21-
+
 ##############################################################################
 # Vestibule entries
 ##############################################################################
@@ -66,15 +68,12 @@
 # placements.
 NAME:   hell_entry
 TAGS:   allow_dup can_overwrite replace_portal transparent fallback_enter_hell
-DEPTH:  Depths
 WEIGHT: 50
 : hell_entry_feature(_G, 'O')
 MAP
 O
 ENDMAP
 
-default-depth: Depths
-
 ##############################################################################
 # Hellmouth (Lemuel)
 NAME:   hellmouth_1
diff -uNr stone_soup-0.14.1/source/dat/des/variable/float.des stone_soup-0.14.1-24-gbdbe590/source/dat/des/variable/float.des
--- stone_soup-0.14.1/source/dat/des/variable/float.des	
+++ stone_soup-0.14.1-24-gbdbe590/source/dat/des/variable/float.des	
@@ -1816,9 +1816,9 @@
         tile:mons_deep_elf_elementalist \
         spells:iron_shot;summon_air_elementals;sticky_flame_range;\
         summon_water_elementals;haste;blink actual_spells \
-        ; robe ego:fire_resistance race:elven | \
-        robe ego:cold_resistance race:elven | \
-        robe ego:resistance race:elven . dagger ego:freezing | \
+        ; robe ego:fire_resistance | \
+        robe ego:cold_resistance | \
+        robe ego:resistance . dagger ego:freezing | \
         dagger ego:flaming | dagger ego:electrocution
 : else
 KMONS:  Z = col:flash wizard hd:15 tile:mons_master_elementalist \
diff -uNr stone_soup-0.14.1/source/dgn-proclayouts.cc stone_soup-0.14.1-24-gbdbe590/source/dgn-proclayouts.cc
--- stone_soup-0.14.1/source/dgn-proclayouts.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/dgn-proclayouts.cc	
@@ -547,7 +547,7 @@
 }
 double NoiseLayout::_optimum_range_mid(const double val, const double rstart, const double rmax1, const double rmax2, const double rend) const
 {
-    if (rmax1 <= val <= rmax2) return 1.0;
+    if (rmax1 <= val && val <= rmax2) return 1.0;
     if (val <= rstart || val >= rend) return 0.0;
     if (val < rmax1)
         return (val - rstart) / (rmax1-rstart);
diff -uNr stone_soup-0.14.1/source/directn.cc stone_soup-0.14.1-24-gbdbe590/source/directn.cc
--- stone_soup-0.14.1/source/directn.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/directn.cc	
@@ -3321,6 +3321,7 @@
                               bool base_desc)
 {
     dungeon_feature_type grid = env.map_knowledge(where).feat();
+    trap_type trap = env.map_knowledge(where).trap();
 
     string marker_desc = env.markers.property_at(where, MAT_ANY,
                                                  "feature_description");
@@ -3404,7 +3405,7 @@
     switch (grid)
     {
     case DNGN_TRAP_MECHANICAL:
-        return feature_description(grid, get_trap_type(where),
+        return feature_description(grid, trap,
                                    covering_description, dtype,
                                    add_stop, base_desc);
     case DNGN_ABANDONED_SHOP:
@@ -3428,7 +3429,7 @@
     default:
         const string featdesc = grid == grd(where)
                               ? raw_feature_description(where)
-                              : _base_feature_desc(grid, get_trap_type(where));
+                              : _base_feature_desc(grid, trap);
         return thing_do_grammar(dtype, add_stop, feat_is_trap(grid),
                                 featdesc + covering_description);
     }
diff -uNr stone_soup-0.14.1/source/effects.cc stone_soup-0.14.1-24-gbdbe590/source/effects.cc
--- stone_soup-0.14.1/source/effects.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/effects.cc	
@@ -876,7 +876,7 @@
         if (mons_class_flag(mi->type, M_STATIONARY))
             continue;
         mi->behaviour = BEH_WITHDRAW;
-        mi->target = target;
+        mi->target = clamp_in_bounds(target);
         mi->patrol_point = rally_point;
         mi->foe = MHITNOT;
 
diff -uNr stone_soup-0.14.1/source/hints.cc stone_soup-0.14.1-24-gbdbe590/source/hints.cc
--- stone_soup-0.14.1/source/hints.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/hints.cc	
@@ -3002,8 +3002,7 @@
         "You can toggle which skills to train by "
         "pressing their slot letters. A <darkgrey>grey</darkgrey> skill "
         "will not be trained and ease the training of others. "
-        "Press <w>!</w> to learn about skill training and <w>?</w> to read "
-        "your skills' descriptions.";
+        "Press <w>?</w> to read your skills' descriptions.";
     text << broken;
     text << "</" << colour_to_str(channel_to_colour(MSGCH_TUTORIAL)) << ">";
 
diff -uNr stone_soup-0.14.1/source/items.cc stone_soup-0.14.1-24-gbdbe590/source/items.cc
--- stone_soup-0.14.1/source/items.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/items.cc	
@@ -876,12 +876,17 @@
 
     string pickup_warning;
     for (int i = 0, count = selected.size(); i < count; ++i)
-        for (int j = item_link; j != NON_ITEM; j = mitm[j].link)
+    {
+        // Moving the item might destroy it, in which case we can't
+        // rely on the link.
+        short next;
+        for (int j = item_link; j != NON_ITEM; j = next)
         {
+            next = mitm[j].link;
             if (&mitm[j] == selected[i].item)
             {
                 if (j == item_link)
-                    item_link = mitm[j].link;
+                    item_link = next;
 
                 int num_to_take = selected[i].quantity;
                 const bool take_all = (num_to_take == mitm[j].quantity);
@@ -914,6 +919,7 @@
                 }
             }
         }
+    }
 
     if (!pickup_warning.empty())
     {
diff -uNr stone_soup-0.14.1/source/item_use.cc stone_soup-0.14.1-24-gbdbe590/source/item_use.cc
--- stone_soup-0.14.1/source/item_use.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/item_use.cc	
@@ -143,7 +143,7 @@
 
     // Only ogres and trolls can wield giant clubs (>= 30 aum)
     // and large rocks (60 aum).
-    if (you.body_size() < SIZE_LARGE && (item_mass(*weapon) >= 500
+    if (you.body_size(PSIZE_TORSO, true) < SIZE_LARGE && (item_mass(*weapon) >= 500
                                          || weapon->base_type == OBJ_WEAPONS
                                             && item_mass(*weapon) >= 300))
     {
@@ -1232,7 +1232,7 @@
                 if (ring->sub_type != first_ring->sub_type
                     || ring->plus  != first_ring->plus
                     || ring->plus2 != first_ring->plus2
-                    || is_artefact(*ring))
+                    || is_artefact(*ring) || is_artefact(*first_ring))
                 {
                     all_same = false;
                 }
diff -uNr stone_soup-0.14.1/source/main.cc stone_soup-0.14.1-24-gbdbe590/source/main.cc
--- stone_soup-0.14.1/source/main.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/main.cc	
@@ -2565,9 +2565,11 @@
         you.duration[DUR_TRANSFORMATION] = 1;
     }
 
-    // Vampire bat transformations are permanent (until ended).
+    // Vampire bat transformations are permanent (until ended), unless they
+    // are uncancellable (polymorph wand on a full vampire).
     if (you.species != SP_VAMPIRE || you.form != TRAN_BAT
-        || you.duration[DUR_TRANSFORMATION] <= 5 * BASELINE_DELAY)
+        || you.duration[DUR_TRANSFORMATION] <= 5 * BASELINE_DELAY
+        || you.transform_uncancellable)
     {
         if (_decrement_a_duration(DUR_TRANSFORMATION, delay, NULL, random2(3),
                                   "Your transformation is almost over."))
diff -uNr stone_soup-0.14.1/source/Makefile stone_soup-0.14.1-24-gbdbe590/source/Makefile
--- stone_soup-0.14.1/source/Makefile	
+++ stone_soup-0.14.1-24-gbdbe590/source/Makefile	
@@ -609,6 +609,10 @@
   LIBS += $(shell $(PKGCONFIG) $(LUA_PACKAGE) --libs)
 endif
 
+ifdef USE_LUAJIT
+DEFINES_L += -DUSE_LUAJIT
+endif
+
 ifndef BUILD_SQLITE
   ifeq ($(shell grep -q sqlite3_prepare $(SQLITE_INCLUDE_DIR)/sqlite3.h 2>/dev/null && echo yes),yes)
     # INCLUDES_L += -isystem $(SQLITE_INCLUDE_DIR)
diff -uNr stone_soup-0.14.1/source/mon-abil.cc stone_soup-0.14.1-24-gbdbe590/source/mon-abil.cc
--- stone_soup-0.14.1/source/mon-abil.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/mon-abil.cc	
@@ -1002,6 +1002,7 @@
 static bool _siren_movement_effect(const monster* mons)
 {
     bool do_resist = (you.attribute[ATTR_HELD]
+                      || you.duration[DUR_TIME_STEP]
                       || you.cannot_act() || you.asleep()
                       || you.clarity());
 
diff -uNr stone_soup-0.14.1/source/mon-info.cc stone_soup-0.14.1-24-gbdbe590/source/mon-info.cc
--- stone_soup-0.14.1/source/mon-info.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/mon-info.cc	
@@ -1199,7 +1199,7 @@
         return m1.number > m2.number;
 
     if (m1.type == MONS_BALLISTOMYCETE)
-        return m1.number > 0 > (m2.number > 0);
+        return m1.number > 0 && m2.number <= 0;
 
     // Shifters after real monsters of the same type.
     if (m1.is(MB_SHAPESHIFTER) != m2.is(MB_SHAPESHIFTER))
diff -uNr stone_soup-0.14.1/source/mon-util.cc stone_soup-0.14.1-24-gbdbe590/source/mon-util.cc
--- stone_soup-0.14.1/source/mon-util.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/mon-util.cc	
@@ -4959,7 +4959,7 @@
 
         int MR = md->resist_magic;
         if (MR < 0)
-            MR = md->hpdice[9] * -MR * 4 / 3;
+            MR = md->hpdice[0] * -MR * 4 / 3;
         if (md->resist_magic > 200 && md->resist_magic != MAG_IMMUNE)
             fails += make_stringf("%s has MR %d > 200\n", name, MR);
 
diff -uNr stone_soup-0.14.1/source/MSVC/crawl.vcxproj stone_soup-0.14.1-24-gbdbe590/source/MSVC/crawl.vcxproj
--- stone_soup-0.14.1/source/MSVC/crawl.vcxproj	
+++ stone_soup-0.14.1-24-gbdbe590/source/MSVC/crawl.vcxproj	
@@ -307,6 +307,7 @@
     <ClCompile Include="..\godpassive.cc" />
     <ClCompile Include="..\godprayer.cc" />
     <ClCompile Include="..\godwrath.cc" />
+    <ClCompile Include="..\hash.cc" />
     <ClCompile Include="..\hints.cc" />
     <ClCompile Include="..\hiscores.cc" />
     <ClCompile Include="..\initfile.cc" />
@@ -449,7 +450,6 @@
     <ClCompile Include="..\rltiles\tiledef-floor.cc" />
     <ClCompile Include="..\rltiles\tiledef-icons.cc" />
     <ClCompile Include="..\rltiles\tiledef-wall.cc" />
-    <ClCompile Include="..\rng.cc" />
     <ClCompile Include="..\shopping.cc" />
     <ClCompile Include="..\shout.cc" />
     <ClCompile Include="..\show.cc" />
@@ -485,7 +485,6 @@
     <ClCompile Include="..\stuff.cc" />
     <ClCompile Include="..\syscalls.cc" />
     <ClCompile Include="..\tags.cc" />
-    <ClCompile Include="..\tagstring.cc" />
     <ClCompile Include="..\target.cc" />
     <ClCompile Include="..\teleport.cc" />
     <ClCompile Include="..\terrain.cc" />
@@ -572,6 +571,7 @@
     <ClCompile Include="..\tiletex.cc" />
     <ClCompile Include="..\tileview.cc" />
     <ClCompile Include="..\tileweb.cc" />
+    <ClCompile Include="..\tileweb-text.cc" />
     <ClCompile Include="..\transform.cc" />
     <ClCompile Include="..\traps.cc" />
     <ClCompile Include="..\travel.cc" />
@@ -635,7 +635,6 @@
     <ClInclude Include="..\dactions.h" />
     <ClInclude Include="..\data-index.h" />
     <ClInclude Include="..\database.h" />
-    <ClInclude Include="..\dbg-crsh.h" />
     <ClInclude Include="..\dbg-maps.h" />
     <ClInclude Include="..\dbg-scan.h" />
     <ClInclude Include="..\dbg-util.h" />
@@ -671,10 +670,8 @@
     <ClInclude Include="..\fight.h" />
     <ClInclude Include="..\files.h" />
     <ClInclude Include="..\fineff.h" />
-    <ClInclude Include="..\fixary.h" />
     <ClInclude Include="..\fixedarray.h" />
     <ClInclude Include="..\fixedvector.h" />
-    <ClInclude Include="..\fixvec.h" />
     <ClInclude Include="..\flood_find.h" />
     <ClInclude Include="..\fontwrapper-ft.h" />
     <ClInclude Include="..\food.h" />
@@ -711,7 +708,6 @@
     <ClInclude Include="..\losglobal.h" />
     <ClInclude Include="..\l_defs.h" />
     <ClInclude Include="..\l_libs.h" />
-    <ClInclude Include="..\l_los.h" />
     <ClInclude Include="..\lev-pand.h" />
     <ClInclude Include="..\matrix.h" />
     <ClInclude Include="..\melee_attack.h" />
@@ -805,7 +801,6 @@
     <ClInclude Include="..\rltiles\tiledef-icons.h" />
     <ClInclude Include="..\rltiles\tiledef-wall.h" />
     <ClInclude Include="..\rltiles\tiledef_defines.h" />
-    <ClInclude Include="..\rng.h" />
     <ClInclude Include="..\SDLMain.h" />
     <ClInclude Include="..\shopping.h" />
     <ClInclude Include="..\shout.h" />
@@ -843,7 +838,6 @@
     <ClInclude Include="..\syscalls.h" />
     <ClInclude Include="..\tag-version.h" />
     <ClInclude Include="..\tags.h" />
-    <ClInclude Include="..\tagstring.h" />
     <ClInclude Include="..\target.h" />
     <ClInclude Include="..\teleport.h" />
     <ClInclude Include="..\terrain.h" />
@@ -887,6 +881,7 @@
     <ClInclude Include="..\tiletex.h" />
     <ClInclude Include="..\tileview.h" />
     <ClInclude Include="..\tileweb.h" />
+    <ClInclude Include="..\tileweb-text.h" />
     <ClInclude Include="..\transform.h" />
     <ClInclude Include="..\traps.h" />
     <ClInclude Include="..\trap_def.h" />
@@ -895,7 +890,6 @@
     <ClInclude Include="..\tutorial.h" />
     <ClInclude Include="..\uncancel.h" />
     <ClInclude Include="..\unicode.h" />
-    <ClInclude Include="..\unrand.h" />
     <ClInclude Include="..\unwind.h" />
     <ClInclude Include="..\version.h" />
     <ClInclude Include="..\view.h" />
@@ -904,7 +898,6 @@
     <ClInclude Include="..\viewmap.h" />
     <ClInclude Include="..\windowmanager-sdl.h" />
     <ClInclude Include="..\windowmanager.h" />
-    <ClInclude Include="..\winhdr.h" />
     <ClInclude Include="..\wiz-dgn.h" />
     <ClInclude Include="..\wiz-fsim.h" />
     <ClInclude Include="..\wiz-item.h" />
diff -uNr stone_soup-0.14.1/source/player-act.cc stone_soup-0.14.1-24-gbdbe590/source/player-act.cc
--- stone_soup-0.14.1/source/player-act.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/player-act.cc	
@@ -330,7 +330,7 @@
     if (species == SP_FELID)
         return false;
 
-    if (body_size(PSIZE_TORSO, ignore_transform) < SIZE_LARGE
+    if (body_size(PSIZE_TORSO, true) < SIZE_LARGE
             && (item_mass(item) >= 500
                 || item.base_type == OBJ_WEAPONS
                     && item_mass(item) >= 300))
diff -uNr stone_soup-0.14.1/source/prebuilt/levcomp.lex.cc stone_soup-0.14.1-24-gbdbe590/source/prebuilt/levcomp.lex.cc
--- stone_soup-0.14.1/source/prebuilt/levcomp.lex.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/prebuilt/levcomp.lex.cc	
@@ -54,6 +54,7 @@
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -84,8 +85,6 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -142,15 +141,7 @@
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -1955,7 +1946,7 @@
 
 
 
-#line 1959 "levcomp.lex.cc"
+#line 1950 "levcomp.lex.cc"
 
 #define INITIAL 0
 #define MAPDEF 1
@@ -2043,12 +2034,7 @@
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -2056,7 +2042,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -2067,7 +2053,7 @@
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		int n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -2155,7 +2141,7 @@
 #line 145 "levcomp.lpp"
 
 
-#line 2159 "levcomp.lex.cc"
+#line 2145 "levcomp.lex.cc"
 
 	if ( !(yy_init) )
 		{
@@ -2752,7 +2738,7 @@
 #line 305 "levcomp.lpp"
 ECHO;
 	YY_BREAK
-#line 2756 "levcomp.lex.cc"
+#line 2742 "levcomp.lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(MAPDEF):
 case YY_STATE_EOF(LUA):
@@ -3525,8 +3511,8 @@
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
diff -uNr stone_soup-0.14.1/source/skill_menu.cc stone_soup-0.14.1-24-gbdbe590/source/skill_menu.cc
--- stone_soup-0.14.1/source/skill_menu.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/skill_menu.cc	
@@ -1109,8 +1109,11 @@
 
     sw = new SkillMenuSwitch("Do", '|');
     m_switches[SKM_DO] = sw;
-    if (!is_set(SKMF_EXPERIENCE) && Options.skill_focus != SKM_FOCUS_ON)
+    if (!is_set(SKMF_EXPERIENCE)
+        && (is_set(SKMF_SIMPLE) || Options.skill_focus != SKM_FOCUS_ON))
+    {
         sw->add(SKM_DO_PRACTISE);
+    }
     if (!is_set(SKMF_RESKILLING) && !is_set(SKMF_SIMPLE)
         && Options.skill_focus != SKM_FOCUS_OFF)
     {
diff -uNr stone_soup-0.14.1/source/spl-book.cc stone_soup-0.14.1-24-gbdbe590/source/spl-book.cc
--- stone_soup-0.14.1/source/spl-book.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/spl-book.cc	
@@ -1403,7 +1403,7 @@
         return -1;
     }
 
-    if (check_range && spell_no_hostile_in_range(spell))
+    if (check_range && spell_no_hostile_in_range(spell, true))
     {
         // Abort if there are no hostiles within range, but flash the range
         // markers for a short while.
@@ -1412,7 +1412,7 @@
 
         if (Options.darken_beyond_range)
         {
-            targetter_smite range(&you, calc_spell_range(spell), 0, 0, true);
+            targetter_smite range(&you, calc_spell_range(spell, 0, true), 0, 0, true);
             range_view_annotator show_range(&range);
             delay(50);
         }
diff -uNr stone_soup-0.14.1/source/spl-util.cc stone_soup-0.14.1-24-gbdbe590/source/spl-util.cc
--- stone_soup-0.14.1/source/spl-util.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/spl-util.cc	
@@ -1209,13 +1209,13 @@
     return default_color;
 }
 
-bool spell_no_hostile_in_range(spell_type spell)
+bool spell_no_hostile_in_range(spell_type spell, bool rod)
 {
     int minRange = get_dist_to_nearest_monster();
     if (minRange < 0)
         return false;
 
-    const int range = calc_spell_range(spell);
+    const int range = calc_spell_range(spell, 0, rod);
     if (range < 0)
         return false;
 
diff -uNr stone_soup-0.14.1/source/spl-util.h stone_soup-0.14.1-24-gbdbe590/source/spl-util.h
--- stone_soup-0.14.1/source/spl-util.h	
+++ stone_soup-0.14.1-24-gbdbe590/source/spl-util.h	
@@ -135,6 +135,6 @@
                                 int default_color = COL_UNKNOWN,
                                 bool transient = false,
                                 bool rod_spell = false);
-bool spell_no_hostile_in_range(spell_type spell);
+bool spell_no_hostile_in_range(spell_type spell, bool rod = false);
 
 #endif
diff -uNr stone_soup-0.14.1/source/tilepick-p.cc stone_soup-0.14.1-24-gbdbe590/source/tilepick-p.cc
--- stone_soup-0.14.1/source/tilepick-p.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/tilepick-p.cc	
@@ -752,6 +752,7 @@
             break;
         case SP_NAGA:
             hair = TILEP_HAIR_PART2_RED;
+            break;
         case SP_VAMPIRE:
             hair = TILEP_HAIR_ARWEN;
             break;
diff -uNr stone_soup-0.14.1/source/tileweb-text.cc stone_soup-0.14.1-24-gbdbe590/source/tileweb-text.cc
--- stone_soup-0.14.1/source/tileweb-text.cc	
+++ stone_soup-0.14.1-24-gbdbe590/source/tileweb-text.cc	
@@ -1,6 +1,8 @@
 
 #include "AppHdr.h"
 
+#ifdef USE_TILE_WEB
+
 #include "libutil.h"
 #include "tileweb-text.h"
 #include "tileweb.h"
@@ -195,3 +197,4 @@
 void WebTextArea::on_resize()
 {
 }
+#endif
diff -uNr stone_soup-0.14.1/source/util/release_ver stone_soup-0.14.1-24-gbdbe590/source/util/release_ver
--- stone_soup-0.14.1/source/util/release_ver	
+++ stone_soup-0.14.1-24-gbdbe590/source/util/release_ver	
@@ -1 +1 @@
-0.14.1
+0.14.1-24-gbdbe590
openSUSE Build Service is sponsored by