summaryrefslogtreecommitdiffstats
path: root/crawl-ref/docs/changes.400
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/docs/changes.400')
-rw-r--r--crawl-ref/docs/changes.4003278
1 files changed, 3278 insertions, 0 deletions
diff --git a/crawl-ref/docs/changes.400 b/crawl-ref/docs/changes.400
new file mode 100644
index 0000000000..e5d853b1f0
--- /dev/null
+++ b/crawl-ref/docs/changes.400
@@ -0,0 +1,3278 @@
+9 August 2001, Michal Valvoda
+ * Gordon's destroy_item() fix included
+ * Complete clean-up of dungeon.cc::give_item() + few changes
+ for example
+ - Until now was a lot of items colored twice (by give_item()
+ and by item_colour()) and sometimes differently
+ - every item goes to right MSLOT-no more MISCELLANY in MSLOT_POTION
+ - magical items (wands, scrolls, potions) distribution
+ * repel undead is working again (in turn_undead() was missing call for
+ behavior_event())
+ * added messages for rotting chunks/corpses in player's inventory
+ * message when Corona wears out + few other new messages
+ * fixed some (I hope that all) problems with "polymorph other".
+ As side effect of some solutions
+ - MONS_HUMAN and MONS_ELF are now valid and fully functional
+ polymorph targets
+ - useless MONS_ANOTHER_LAVA_THING was changed to
+ MONS_SALAMANDER (in case of problem switch it off in dungeon.cc,
+ yes, there because water and lava monsters are generated differently)
+ * Renamed MSLOT_UNASIGNED_I to MSLOT_MISCELLANY, added NUM_MISCELLANY
+ * rewrote misc. object generation to use NUM_MISCELLANY.
+ Not important for now but I have many new misc. objects I want to include
+ after release and it will help later. Also new code is much more readable
+ and easier to modificate.
+ * inteligent monsters now pick up gold
+ * added some new unrand artifacts
+ (ring of Shadows is getting a bit tired :)
+ * added underground rivers and lakes,
+ improved water generation
+ * 3 new compile options
+ #define USE_NEW_UNRANDS - switches new unrands on
+ #define USE_RIVERS - switches new underground rivers and lakes on
+ #define MISSILE_TRAILS_OFF - turns misile trails off.
+ - not optimal, but works well on
+ many computers
+ - defaultly unset
+ * other minor fixes and updates
+ * changes.400 updated
+
+ Notes:
+ ! generation of water and lava monsters isn't very nice, an it would be
+ fine to change it one day
+ ! spells in WIZARD mode probably should be cast with some power
+
+
+
+
+
+
+
+BUGLIST:
+
+
+LEGEND
+** outstanding bug; reproduced or definitely needs fixing
+xx outstanding bug report; unreproducable, currently unfixable,
+ or not a candidate for 4.0.0 release
+== fixed and released in some form (alpha, beta, etc - see version.h)
+-- fixed bug, not yet released
+
+
+
+
+** Various XXX and FIXME comments throughout code from Brent.
+
+== 1. Casting "Corona" at self shows message "The 0 hits you !" and
+hurts you (same for Hibernation, maybe also other spells.)
+
+>> fixed Corona and Hibernation. Possible that other spells still
+>> allow this goofy behavior.
+
+== 2. Dwarven hunters starts with CYAN leather armor (maybe also
+others). It should be BROWN.
+
+== 3. Missing space in message "You feel verybuoyant !" (same problem
+with "You feel morebuoyant !")
+
+== 4. No message when you quaff potion of restore abilities and nothing
+happens.
+
+> fixed by Brent?
+
+== 5. Maybe there should be some message when you cast "Static
+Discharge" and no monster around.
+
+== 6. Inscription on "Innate abilities, Weirdness & Mutations" screen
+should be centered (my fault).
+
+== 7. Polymorph and unpolymorph messages are really odd -
+e.g. I polymorphed kobold and I got message
+ "The stone giantThe kobold evaporates and reforms as a stone giant."
+
+== 8. Empty ebony casket should be DARKGREY and not BLACK.
+
+== 9. Rare weapons (quick blade, double/triple sword etc.) aren't as
+rare as they should be.
+
+> line 2006 in dungeon.cc should be 1+random(10) <= rarity
+
+== 11. Missing space in "Elyvilondemands penance!". Of course, same
+problem with other gods.
+
+== 12. 2 messages when wearing crystal armor about that it's too
+cumbersome
+
+== 13. map under DOS is working bad - each next line is shifted by one
+character
+LRH - At line 1810 of view.cc, in the map function, there is a
+for loop involved in printing the map. At present it's
+for (i = 0; i < 79; i ++);. To work under DOS, the 79 should
+be 80, otherwise the map is skewed to the left and looks
+very ugly.
+
+== 14. stoneskin isn't working - if you look at cast_stoneskin() zou
+will see it does nothing with AC
+
+> I have a fix for this - basically remove the 'else' before the
+> transformation-AC-adjustment switch in player.cc::{player}_AC().
+
+> There's another "bug" there, too, which is that the corresponding
+> 'if' ought to include '|| you.attr[ATTR_TRANSFORMATION] =
+TRAN_BLADE_HANDS'.
+
+== 15. Saw "a buggy helmet"
+ "a buggy orange potion"
+ "a buggy red potion"
+
+== 16. Buggy targeting - can't hit monsters in LOS. Could fix.. both
+ for throwing and beaming?
+
+== 17. A hill Orc Chaos Knight (Zom) started with 14/15 hit points. !?
+
+== 20.One more thing that needs cleaning: the new invisible monster code.
+ You don't get a message when your missile hits a monster, but you
+ *do* get a message when your missile *misses* an invisible monster.
+ IMO if we do make invisible monsters harder to detect than they
+ were, we ought to make these (absent) messages exactly opposite:
+ no message for miss, yes message for hit.
+
+
+xx 21. wearing Troll Hide, read unknown scroll, ASSERT(index < SIZE) in
+ FixVec fails, abortion, core.
+
+== 22. Amulet of Rage isn't auto-identified when put on, but ability is
+ visible in 'A' menu.
+
+== 23. torment_monsters in spells4.cc asserts like crazy. It should have a line
+like:
+ if (mon != NON_MONSTER) {
+
+> fixed again; player wasn't getting hit. Not adding magic resist.
+
+
+== 24. In dungeon.cc there's a huge function called builder() with some code at
+ the bottom that looks like this:
+
+ if ( you.where_are_you == BRANCH_HALL_OF_BLADES )
+ {
+ for (bi = 1; bi < GXM; bj++)
+ for (bj = 1; bj < GYM; bi++)
+ if ( grd[bi][bj] >= DNGN_STONE_STAIRS_DOWN_I && grd[bi][bj]
+<= DNGN_ROCK_STAIRS_UP )
+ grd[bi][bj] = DNGN_FLOOR;
+ }
+
+ The increment in the for loops should be swapped.
+
+== 25. A backtrace does indeed reveal the problem. From line 2432 of
+ monstuff.cc:
+
+ for (count_x = 0; count_x < 3; count_x++)
+ for (count_y = 0; count_y < 3; count_y++)
+ {
+ good_move[count_x][count_y] = true;
+
+...
+
+ if ( grd[monster->x + count_x - 1][monster->y + count_y - 1] < okmove )
+ {
+ good_move[count_x][count_y] = false;
+ continue;
+ }
+
+ There's a monster at (39, 69), the above loop references (38,70).
+
+== 26. This line
+
+ unsigned char grik = grd[monster->x + mmov_x][monster->y + mmov_y];
+
+ from monstuff.cc around line 2730 is also causing an ASSERT failure.
+
+ GDL: in fact, there are a bunch of places in monstuff.cc where fleeing
+ or confused monsters can try to "run off the map", apart from the
+ 'good move' checking in bug 25 above.
+
+
+== 27. monsters equipped with missile weapons
+ commonly associated with launchers who
+ insist on tossing the missiles by hand.
+
+== 28.About line 909 of monstuff.cc is
+
+ if ( show[monster->x - you.x_pos + 6][monster->y - you.y_pos + 6] )
+
+ The electric eel is at (48,36), I'm at (55,32), so we're indexing (-1,10).
+ The array show is 19x19, and I'm thinking the +6 should be +9.
+
+ There's a similar construct for lava snakes a little further up.
+
+== 29. An indexing error in item_use.cc, line 3092 or so, after reading a scroll
+ of enchant armour while not wearing body armour.
+
+ you.inv_type[you.equip[EQ_BODY_ARMOUR]] is inspected even though
+ you.equip[EQ_BODY_ARMOUR] is -1.
+
+
+ do
+ {
+ affected = 1 + random2(6);
+ }
+ while ( you.equip[affected] == -1 );
+
+ // NOTE: It is assumed that armour which changes in this way
+ // does not change
+ // into a form of armour with a different evasion modifier.
+
+ if ( you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_DRAGON_HIDE
+ || you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_ICE_DRAGON_HIDE
+ .
+ .
+ .
+ )
+
+== 31. I just disarmed a blade trap, and the game seemed to hang.
+
+Since TRAP_BLADE are of type DNGN_TRAP_MECHANICAL, this code in misc.cc,
+line 1492 or so, tries to make a stack of trap items:
+
+ if ( trap_category(env.trap_type[i]) == DNGN_TRAP_MECHANICAL )
+ {
+ for (j = 0; j < 20; j++)
+ {
+ itrap(&beam[0], i); // places items (eg darts), which will automatically stack
+
+ if ( j > 10 && one_chance_in(3) )
+ break;
+ }
+ }
+
+But misc::itrap() doesn't create these blades, and instead:
+
+ default:
+ getch();
+ break;
+
+waits for input. It seems like a very strange default. Ultimately,
+you can wait it out by moving back and forth. Then you find a few
+questionable item where the trap was.
+
+== 32. Banishing self to Abyss when you are at Abyss does really
+ strange effects
+ ("The 0 hits you !" - I really don't understand why)
+ Propably it's connected with 0-beams problem -
+ some spells shows message "The 0 hits you !" when cast at player
+ I suggest some kind of check whenever is 0-beam casted (e.g. if
+ its targeted at player then shows message "It's not good idea."
+ or so)
+
+== 33. I don't know how it happened but I've found 2 off-screen corridors.
+ (Btw. I hopped it was fixed)
+- Finally, what you've all been waiting for: a fix for the
+infamous "corridor off the screen bug" (or at least one of its
+aspects). In dungeon.cc in vault_grid(...), add the line
+(vgrid == '\0') ? DNGN_ROCK_WALL :
+amongst all of the other ones. The problem was that the
+vault code was null-terminating some of the lines of the map,
+causing the default of DNGN_FLOOR to be put in place of all
+the '\0's.
+
+== 34. Potions, scrolls & wands are not updated when wielded and used.
+
+== 35. I've already reported this one but I remind that -
+ When zapping some bolt towards the top of the screen and
+ gaining level during it the rest of the bolt is drawn at the
+ bottom of the screen (at message lines)
+
+== 36. Missing space in message "<Servant>is recalled."
+ e.g. "Mummyis recalled."
+
+== 37. Redundant space in message "You are diseased."
+
+== 38. Why is "demon whip of flaming" white ? I've found such one.
+>> demon weapons are always given random colours.
+>> MV: Should not be fixed now.
+
+== 39. "Summon Daeva" spell summons Angel.
+ Why ? "Daeva" exists and it's possible
+ to summon it during summon_ice_beast_etc()
+
+== 40. At fight.cc::monster_die() is line
+ ( you.religion == GOD_VEHUMET
+ && (!player_under_penance()
+ && random2(you.piety) >= 20) )
+ There should be 30 and not 20, because piety equal to 30 is limit
+ for this ability (see religion.cc).
+
+== 41. It was mentioned already but -
+ Descriptive messages like
+ "It's lightly enchanted to do more damage."
+ can never appear because of badly placed brackets - {}
+ in describe.cc::describe_weapon()
+ Program gets on line
+ if ( item_dam >= NWPN_SINGING_SWORD )
+ and if this fails the programs continues on the line
+ int spec_ench = item_dam % 30;
+ and it means it can't get to messages about enchantment.
+
+ Or am I missing something ?
+
+== 42.In monstuff.cc::mons_speaks() is few times used sprintf() insteed
+ of strcat(), e.g.
+
+ sprintf(info, " %s \"Help!\"",
+ coinflip() ? "yells" : "wails");
+
+ Problem is that in the begining _info_ contains name of the monster
+ but sprintf() deletes it. It means that output is
+ e.g. " yells "Help!"" instead of "Sigmund yells "Help!""
+
+== 43. Which compile time options will be made standard? What are the the
+ appropriate defaults for the config file (set in initfile.cc)? These
+ have to be laid out before the release.
+
+SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES I vote no on this one. Could be made into an initfile or command
+ line option if people really want it, but there just aren't enough
+ subspecies to justify it.
+ALLOW_DRACONIAN_TYPE_SELECTION This one is typically considered "cheating". Part of the fun of
+ being draconian is finding out what you actually are.
+USE_ELVISH_GLAMOUR_ABILITY Haven't really tried out glamour. The grey elf or two I've played
+ that has had it has never really successfully used it.
+USE_BETTER_MINOR_MAGIC_BOOKS These should be okay now.
+USE_NEW_CLOUD_CODE This code is pretty cool, I sometimes wonder about potential
+ twinkiness at high levels with this in a corridor (where it
+ could fill quite a stretch reaching more than a half dozen
+ squares from the center of the effect in a single turn).
+ Maybe a safeguard should be added to keep the effect within
+ a certain radius from the target?
+USE_SILENCE_CODE I've never been overly fond of silence. I don't like the
+ way it cancels enemy priests and spellcasters.
+USE_HARDER_AC_RULES Things are more sane with is option, unless scaled demonspawn
+ transformers turn into scaly spiders.
+USE_NEW_ALTAR_CODE I liked things a bit more random. I once had orcish mines with
+ three Ely altars (which I thought was pretty interesting).
+ Modifying this code so there's at least a chance of an outside
+ altar would be nice.
+USE_NEW_MINIVAULTS These are probably okay.
+
+USE_GOD_COLOURS We do much worse than this right now with all the channels on.
+// > USE_GOD_COLOURS
+// Yes. Actually, this option should probably be either removed or replaced with
+a USE_MESSAGE_CHANNEL_COLOURS option or some such (gods are just part of
+this system now). Brings back to mind the possibility of specifying
+non-colour-based highlighting options like "stars", "capitalized",
+"indented", and such. Would have to switch from an enum to a bitfield,
+and the initfile parser would have to be adjusted, but other than that
+it would be simple to do.
+
+USE_OPTIONAL_WIZARD_DEATH Test option, don't need this.
+USE_LIGHTER_MAGIC_ITEMS These are reasonable.
+USE_NEW_TORMENT_CODE This is good.
+USE_SEMI_CONTROLLED_BLINK It's powerful, but as long as it needs the blink spell and
+ a separate form of teleport control it's probably okay.
+ As an all in one spell it's over powered (but that's only
+ in the code for wizard mode testing right now).
+USE_NEW_COMBAT_STATS Not sure these really have much of an effect on anyone's
+ game. Could be left out.
+USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES Not sure about the wanderers. The ranger and spellcaster templates
+ might just be encouraging people to try and re-roll for twinkiness.
+ Might be best with just the basic warrior wander type.
+USE_SKILL_POOL_DRAIN This one is pretty silly. There's no real reason to punish people
+ who get a large pool (mostly from killing a large monster or two).
+ To increase the cost because of that doesn't make much sense, and
+ the skill cost doesn't need to be made any tighter (it might even
+ be due for a bit of loosening).
+USE_NEW_RANDOM Should be default, the suggestion to reverse it into USE_OLD_RANDOM
+ is probably good.
+
+From Michal:
+> SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES
+No.
+> ALLOW_DRACONIAN_TYPE_SELECTION
+No.
+> USE_ELVISH_GLAMOUR_ABILITY
+Yes. Works fine.
+> USE_BETTER_MINOR_MAGIC_BOOKS
+Yes.
+> USE_NEW_CLOUD_CODE
+Yes.
+> USE_SILENCE_CODE
+> I've never been overly fond of silence. I don't like the
+> way it cancels enemy priests and spellcasters.
+I don't think so.I vote for this.
+
+> USE_HARDER_AC_RULES
+Yes.
+> USE_NEW_ALTAR_CODE
+> I liked things a bit more random. I once had orcish mines with
+> three Ely altars (which I thought was pretty interesting).
+> Modifying this code so there's at least a chance of an outside
+> altar would be nice.
+Agree
+> USE_NEW_MINIVAULTS
+Yes.
+> USE_GOD_COLOURS
+Yes.
+> USE_OPTIONAL_WIZARD_DEATH
+> Test option, don't need this.
+Of course no.
+> USE_LIGHTER_MAGIC_ITEMS
+Yes.
+> USE_NEW_TORMENT_CODE
+Yes.
+> USE_SEMI_CONTROLLED_BLINK
+Yes.
+> USE_NEW_COMBAT_STATS
+> Not sure these really have much of an effect on anyone's
+> game. Could be left out.
+I think this one is OK, I vote for.
+
+> USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES
+Yes.
+> USE_SKILL_POOL_DRAIN
+No.
+
+xx 44. might want to branch off a version of the source for the next release,
+ with the unused spells and code cut out (along with some of the
+ unimporant comments). The full code would naturally still be used
+ as the development code.
+
+** 45. documentation (crawl.txt, crawl.6 will probably need some changes)
+
+== 46. bow messages on skill screen might take up too much real estate
+ (things are already tight for people on 24 line terminals once they
+ get all the skills)
+
+== 47. very noisy gcc --Wall compile (it was bad before, I'm afraid I've
+ made it worse, it's hard to tell I get a lot of warnings from
+ curses that have to do with some unimportant system conflicts).
+
+Oh, in makefile.sol... one of the $(INCLUDES) is spelled INCLUDE
+
+== 48. giant spores sometimes seg fault when exploding (I added a simple check
+ for NULL, but that's probably not the problem)
+
+ ugly, ugly, ugly, ugly. But fixed. the problem was that spores
+ were kind of cleaned up before exploding (so that the death message
+ wouldn't come twice), but then they fell through to the "handle
+ special ability" case the next time through the "monster action" loop
+ and all hell broke loose.
+
+== 50. look into why you.equip[EQ_WEAPON] (aka weapon) is used in
+ fight.cc::monster_fight() and monster_attack() (ie. when the
+ player isn't even involved!)
+
+ > no effect in monster_attack()
+ > bizarre use in monster_fight() - the
+ attacking monster gets several attributes of the player's
+ weapon!!! This is clearly wrong.
+ > MSLOT_WEAPON was also used in a couple places where hand_use
+ was required.
+
+== 51. BUG: no "scores" file == segfault.
+
+> some pretty nasty bugs in the score file stuff. Cleaned up segfault
+> and some ranking bugs. Scores file is now proper text; Crawl can
+> still read old scores files. Scores of 0 no longer printed. No more
+> segfault on non-existent file.
+
+xx 52. 'X' (view map) causes core dumps on terminals larger than 64 lines?
+
+> could not repro on Win32. Tried 65 line terminal, 'X' look no problem.
+
+== 53. Anyway, up on onelist.com (or egroups.com, whatever)
+is an updated mon-spll.h file including the enums for
+MST_foo and a couple MS_foo that Brent had missed
+in the file ... note that the comments before these lines
+in mon-util.cc:
+
+static unsigned char mspell_list[][7] = {
+#include "mon-spll.h"
+};
+
+are duplicitous of those in mon-spll.h, and can probably
+be struck (or vice versa?) ... I had also thought that there
+was a MS_foo matching value 100 (the beastly equivalent
+of SPELL_NO_SPELL) ... maybe Gordon can add it in?
+clear application to mon-spll.h and monstuff::handle_spell().
+
+
+of course, one could go whole hog and add enum constants
+for the "slots" in the template (actually the position *less one*
+would be enummed, see handle_spell() and mons_spell_list()
+for details) ...
+
+
+these lines in monstuff::handle_spell() can be enummed
+with the appropriate MST_foo enum constants:
+
+int msecc = ((monster->type == MONS_HELLION) ? 30 :
+ (monster->type == MONS_PANDEMONIUM_DEMON) ? 119
+ : monster->number);
+
+[[ 30 == MST_BURNING_DEVIL, 119 == MST_GHOST ]]
+
+that 119 value also turns up in mon-until::mons_spell_list() ... but
+this gets into "overlap land" because these values are stored in the
+sec field of the monster struct, which stores a number of values
+unrelated to spell-casting (though I guess applying the template
+enum throughout the codebase is one way of sifting out when sec
+values are used for one purpose instead of another ...) *ANYWAY*
+
+== 54.In enum.h --
+
+/* these are for the player spell struct, we'll see what's what later
+*/
+
+#define SPELL_FOOD(x) (x)
+#define SPELL_MANA(x) (x)
+#define SPELL_LEVEL(x) (x)
+
+
+All of the above can be killed, as the macros are no longer used.
+
+The SPELL_EXCLUSION enumeration (right below the macro
+definitions) can also be killed, as I never implemented it, and in
+hindsight, if it is ever to be stuck back into the player spell
+data structures, there is a much better way of doing it. So, please
+yank these out, before someone gets hurt :P
+
+So, this bit in spl-util.cc can also be axed:
+
+/* //jmf: commented out; add field `restriction' to spell struct if desired
+ // (and if anyone finds a use for such a thing)
+ int spell_restriction( int which_spell, int which_restriction )
+ {
+ int this_restriction = (int) seekspell(which_spell)->restriction;
+ return ( this_restriction == which_restriction );
+ } // end spell_restriction()
+
+ */
+
+
+== 55. Minor typo:
+
+MST_RAKSHAKA
+
+should be
+
+MST_RAKSHASA
+
+so that it matches up with the monster's actual
+name throughout the codebase. Nothing major,
+but it will require fixing (present in enum.h and
+the enummed mon-spll.h I just uploaded).
+
+== 56. "* * * LOW HITPOINT WARNING * * *
+ You die..."
+
+ At that point, it's really too late. The warning perhaps
+ ought to occur at the beginning of the player's turn as
+ opposed to when the character takes damage.
+
+ I've also seen two warnings in one combat turn ... can't
+ remember if death accounted for one of them.
+
+> The problem is that the check is you.hp... it should be (you.hp > 0)...
+> I quick-fixed that one while I was trying to get the code out the
+> door and missed.
+
+== 57. Hunger messages don't seem to appear, even if their color is set.
+
+> Gave general cleanup of food.cc; merged hunger_warning and food_change.
+> removed unnecessary modification of hunger status from level save/load,
+> fixed up some logic problems.
+
+
+== 59. Lot's of the enums in enum.h have trailing commas, eg
+ enum CONFIRM_LEVEL
+ {
+ CONFIRM_NONE_EASY,
+ CONFIRM_SAFE_EASY,
+ CONFIRM_ALL_EASY,
+ };
+I don't think this is legal in ANSI C.
+
+> Borland C++ didn't complain with Wall, so it's not a problem.
+
+== 61. In libmac.cc there's a function called FlashButton. The line that calls
+HiliteControl should look like this:
+ HiliteControl(control, kControlEntireControl);
+
+== 62. In message.cc mpr's definition includes default arguments. This isn't
+legal C++ (only the declaration can have default arguments). The same
+applies to random_near_space and simple_monster_message in monstuff.cc,
+apply_random_around_player in spells4.cc, and yesno in stuff.cc.
+
+== 63. monspeak.cc needs to include monspeak.h at the top of the file, not
+monstuff.h.
+
+== 64. overmap.cc includes curses.h, this should be wrapped in #if !macintosh.
+
+> Acutally it should be wrapped if USE_CURSES is not defined. Which it is now.
+
+== 65. spl-util.cc should include the standard limits.h instead of the
+non-standard values.h and should use INT_MAX instead of MAXINT.
+
+== 66. The MacStuff directory should be deleted.
+
+== 67. Very Old Buglet:
+ Spider Form spell turns one into a black 's', which corresponds
+ in monsterland to a scorpion, while giving one all the features
+ of the noble wolf spider, represented by a brown 's'.
+
+== 68. It's really not that bad. Worse is the fact that I noticed that
+breathe fire gives a bonus if the player is transformed (doesn't
+matter what: Ice Beast, Blade Hands, or Dragon)... that's a bug.
+
+== 69. player.cc - If you look at line 2312 you'll see that
+ redraw_screen () is called. But it's problem under
+ DOS because redraw_screen() is defined only under
+ PLAIN_TERM.
+ See stuff.cc - there is
+ #ifdef PLAIN_TERM
+ void redraw_screen( void );
+
+> got rid of all of the plain_term() wrappers around redraw_screen.
+> instead, redraw_screen() becomes a no-op for non-plain term systems.
+> I hate seeing #defines all over (supposedly) non-system dependent code!!!
+
+== 70. view.cc - at two place there is
+
+ #ifdef DOS_TERM
+ puttext(2, 1, 34, 17, buffy);
+ #endif
+
+ Probably it's possible to compile that with some compilers
+ but not all and corretly it should be
+
+ #ifdef DOS_TERM
+ puttext(2, 1, 34, 17, buffy.buffer());
+ #endif
+
+== 71. When you cast "Twist" spell and choose direction you'll always get
+message
+"There is no monster there!"
+even if it's not true. If you want to hit monster you have to target
+monster by using "*" or "+". At least this spell shouldn't ask for
+direction but for target.
+
+xx 72. After battle with guardian naga character is told he is not carrying anything.
+
+> don't see how this could happen.. g. nagas can't affect player inventory.
+> must have hit a key that tried to use an inv type you didn't have, or num_inv_items
+> got out of whack.
+
+xx 73. Some initial prompts not prompt colour. I'll have to document which.
+
+== 74. Throwing anything left seems to cause a segfault and core file ... hmmm ...
+ item_use.cc, line 1294: DUMB BAD CODE! Throwing anything while weilding
+ nothing results in a crash. Clearly someone plays neither Transmuters nor
+ Monks. Clearly we need some function to safely get the current weapon.
+
+== 75. Throwing stuff while weak: I'm of the opinion that things thrown ought
+ to land at least next to the player, while currently, large things end
+ up at the player's feet. This annoys me - "I didn't say (d)rop, I said
+ (t)hrow!".
+
+> it's a playability issue, especially with large amounts of items and
+> autopickup. All thrown objects will go at least 1 square - we'll
+> consider a 'throw' of a very heavy object equivalent to 'shove' it. :)
+
+== 77. line 234 of mon-util.cc ought to be:
+ "if (mc == MONS_PLAYER_GHOST || mc == MONS_PANDEMONIUM_DEMON)"
+ but instead it's:
+ ""
+
+ This will fix the elemental damage problem I was complaining about --
+ clearly Linux does not automagically give clean pages.
+
+== 78. Remove trailing commas in enum.h
+
+== 79. Stores are still trying to sell me gold pieces, and at extortionary rates.
+
+== 81. + spells4.cc::418 assert failed: ASSERT( targs[i].x != 0 && targs[i].y != 0 );
+ should this be ( targs[i].x || targs[i].y ) ? (YES)
+
+== 82. if (mons_flag(monster->type, M_SPEAKS) && one_chance_in(21)
+ && !silenced(monster->x, monster->y))
+{
+ mons_speaks(monster); // mv: removed silence check
+}
+
+That check for silence shouldn't be there, because mons_speaks()
+handles silence by itself - see monspeak.cc (Btw. I've already removed
+this check when I wrote mons_speak(), but somebody have returned
+it back *grin* ).
+
+== 83. However, in a couple places in acr.cc, there is code like this:
+
+ if (grd[you.x_pos][you.y_pos] == DNGN_LAVA
+ || grd[you.x_pos][you.y_pos] == DNGN_DEEP_WATER)
+ {
+ if (you.species == SP_MERFOLK)
+ {
+ mpr("You dive into the water and return to your normal form.");
+ merfolk_start_swimming();
+ }
+
+ fall_into_a_pool(true, grd[you.x_pos][you.y_pos]);
+ }
+
+== 84. // From: Daniel Ligon <makmorn@qis.net>
+[easy_butcher]
+// When I see it happen, I have no weapon in hand and no weapon in the
+// "a" slot. After hitting "D" to Dissect, I am prompted for a weapon.
+// I can choose a cursed weapon of either known or unknown status and will
+// receive a message that the weapon sticks to my hand. In both cases,
+// I return to unarmed after butchering - and the weapon is now identified
+// as being cursed.
+
+Okay, then the problem isn't with the original check... all that
+needs to be done is make sure that is the target weapon (after the
+call to wield_weapon which does all the validating and prompting)
+isn't removed if it's cursed. Should be a fairly simple check,
+although it has to validate if a weapon is wield first (of course).
+
+== 85. This seems to be a new bug (can't see an obvious cause)...
+ Brain Worms seem to have a sticky flame attack now.
+
+> SOMETHING was(is?) setting mon->number to be equal to mon_type. This
+> was setting butterflies (MONS_BUTTERFLY == 66) to have a colour
+> of 66, and brain worms (MONS_BRAIN_WORM == 69) to have the
+> spell type of MST_MOTTLED_DRAGON (69). Why?? I don't know yet.
+
+>> turned out to be define_zombie. Random zombies were not getting
+>> zombified due to some parameters getting passed incorrectly from mons_place().
+>> all quasi-zombies were getting correct mons->number set but then mon->type
+>> was not being set.
+
+== 86. This appears in player.cc::player_hunger_rate()
+
+ // jmf: hunger isn't fair while you can't eat
+ // Actually, it is since you can detransform any time you like - bwr
+ if (you.attribute[ATTR_TRANSFORMATION] == TRAN_AIR)
+ return 0;
+
+Some testing reveals that in fact one cannot untransform ("You're too
+hungry.") nor even turn visible. If hunger was not meant to preclude
+these reversions, there's a bug in the ability code.
+
+ - Josh
+I would guess that there is a bug in the ability code wrt
+untransform - I have not looked at the code for this in a
+while, but the "untransform" ability is likely lumped with
+all other abilities in terms of forcing a check of one's
+current hunger level before proceeding further into checks
+and then (finally) triggering the ability.
+
+Trivial fix, that is where the bug is: the ability code (98%
+certain) - it does not make sense to attach a hunger cost
+to detransformation, unless you wanted to curse players
+first learning how to transform with costs on both ends
+(it takes effort to change shape, effort to change back).
+
+The latter model of double-ended costs associated with
+transformations make sense, but I do not believe this was
+the intended model in Crawl.
+
+xx 87. PS: I was looking through player.cc because a white imp "chilled" my
+ mummy assassin. Still looking for how that could happen.
+
+> everything seems to be WAD:
+> could have been wearing two rings of fire, or dragon armour, or had a
+> randart with cold susceptability. Mummy only gives resist, not immune.
+
+== 88. PPS: White imps seem to pick up darts & stuff, while red imps don't.
+ IMHO that's exactly backwards. White imps are have a much better
+ range attack than darts provide, while a dart-throwing red imp
+ would be a major pain.
+
+> actually the issue is gmon_use (the last parameter in mon-data.h)
+> - red imps have 1 (opens doors) while white imps have 3 (doors,
+> weapons & armour). sorry not explicit enough.
+
+>> No, make white_imp.gmon_res=1; red_imp.gmon_res=3. Current values
+>> but reversed.
+
+== 89. PPPS: Noticed punctuation creep: "You can't weild a two handed weapon
+ *AND* a shield at the same time." Patriots should conserve stars.
+
+== 90. The eat chunks on the ground prompt is uncoloured.
+Following prompts are coloured.
+
+== 91. Prompt & crashes: try doing an x-look while you
+can't see any monsters, then press '+'. You will
+get a nice, shiny new core file in your directory.
+
+The x-look prompt also claims to allow you to go
+to the current target using 'p', but does not. 'P'
+does nothing.
+
+== 92. Elves in their Halls seem to wear a lot of Orcish armour.
+
+== 93. > And finally to end on a good note...
+> I've love what has been done with the coloring, the autopickup and
+> the automatic door opening. This is *very* useful and as a user I
+> truly do appreciate the effort here. (It would still be nice to be
+> able to pick up gold when your slots are full but I'm not going to
+> complain.)
+
+Argh. I haven't checked the latest dev source (but I will
+this weekend), but is this still the case? If so, can Gordon
+please put it in the bug queue as something to fix for the
+upcoming release of 3.*cough* ???
+
+== 94.
+> I was descending through the Elven Halls, and reached level 6. On this
+> level were three stairwells down to level 7, and an entrance to the
+> Labyrinth.
+>
+> It is my habit to descend/ascend each stairwell as I find them, since
+> the dungeon areas of crawl are sometimes disconnected. So I believe
+> the three stairwells on this level actually did lead to level 7.
+>
+> After filling my gut on fresh elven meat, I descended in the Labyrinth,
+> spiraled in to the Minotaur, slew it, grabbed its stash, and ascended
+> back to the Elven Halls, appearing at one of the stairwells down.
+>
+> But now all three of the down stairwells on this level lead to the
+> Labyrinth rather than level 7, and the Labyrinth is being mapped.
+
+I can verify that I had visited Elven Halls level 7 (I had saved a
+copy of my player files before entering the Labyrinth). As it happens,
+level 7 was the bottom of the Elven Halls with the Vault.
+
+I cleaned out the Vault, then returned to the Labyrinth. Once again
+returning from the Labyrinth caused all the stairwells on level 6 to
+lead to a mappable Labyrinth.
+
+>> Fixed. up_stairs() was not correctly setting was_a_labyrinth in
+>> the call to load(), and so the labyrinth level would get saved
+>> _over_ the n+1 th 'real' level. REALLY BAD. Yuck. Bleah!
+
+== 95. Auto-butcher + Staff of Power + dagger in off slot.
+Every time a corpse is butchered max SP is reduced...
+
+This probably has to do with the fact that staves of power are one of
+the few things that are toggled on wield/unwield (a lot of the other
+properties are calculated as required).
+
+== 97. The routine mon-util::seekmonster() needs to check that
+>
+> mon_entry[(*p_monsterid)]
+>
+> is not -1 before returning
+>
+> &mondata[mon_entry[(*p_monsterid)]]
+>
+
+== 98. In my current game, I found an entrance to the Hall of Blades on
+> level 4 of the Vaults. I entered, killed a few weapons, and returned.
+> Upon returning, the game crashed. When I restarted, I was on level 1
+> of the Crypt. I exited the Crypt was back at the entrance I had found
+> on level 3 of the Vaults.
+>
+
+- Fix for the Hall of Blades staircase bug... Although the
+staircases leading out of the HoB are called staircases "back
+to the crypt", and although the enum for them describes them
+as returning to the crypt, and although climbing one of them
+sends you to the crypt, they are in fact supposed to lead back
+to the vaults, and the level range of the HoB has been set
+accordingly. To fix:
+ - Change the name of the enum DNGN_RETURN_CRYPT_II to
+ DNGN_RETURN_VAULTS_II (may need to be _II or _III)
+ - Change in direct.cc, in look_around(...), "A staircase
+ leading back to the crypt" to "A staircase leading back to
+ the vaults"
+ - Do the same in item.cc in item_check(), where it tells you
+ what you're standing on
+ - And, finally, in up_stairs() in misc.cc, the case for
+ DNGN_RETURN_VAULTS_II (or whatever it's changed to) needs to set
+ you.where_are_you to BRANCH_VAULTS.
+
+>> this code needs a complete overhaul to be more comprehensible,
+>> but I don't know if I'm up to it at the moment. :\
+
+== 99. There was lava in the Crypt. I don't object to it, but it seems a
+> little out of character, much like Josh's observation that elves wear
+> a lot of orcish armour.
+
+== 100. Characters who might go berserk while fighting, say from the mutation
+> or wielding a randart, can have go_berserk() called on them while they're
+> already berserk.
+
+>> which is fine. Fixed up berserk messages for all possible situations -
+>> no more double messages, or inappropriate ones.
+
+== 101. I've run across a couple Borises in my current game. It must be a
+> popular name among Liches.
+
+>> fixed. Bad range check in dungeon.cc.
+
+== 102. If a monster tries to mutate you and fails due to your resistance
+> to such, you get a message from mutate() - "You feel rather odd for a
+> moment." and from direct_effect() - "You feel very weird for a moment."
+
+>> fixed all manner of mutation messages.
+
+== 103. Removing a ring of strength causes these messages:
+>
+> You are being crushed by all of your possessions.
+> You possessions no longer seem quite so burdensome.
+>
+> since this happens in item_use::remove_ring():
+>
+> case RING_STRENGTH:
+> decrease_stats(STAT_STRENGTH, (you.inv_plus[ring_wear_2] % 100), true);
+> increase_stats(STAT_STRENGTH, 50, true);
+> break;
+>
+> The suppress_msg flag of decrease_stats and increase_stats does not get
+> passed to player::burden_change(), which has no arguments.
+>
+> It is interesting to compare that code with similar code to remove the
+> strength one gets from a randart ring. From it_use2::unuse_randart():
+>
+> const int str_plus = inv_randart_wpn_properties( unw, 0, RAP_STRENGTH );
+> if (str_plus != 0)
+> {
+> you.strength -= str_plus;
+> you.max_strength -= str_plus;
+> you.redraw_strength = 1;
+> }
+>
+
+== 104. There is a monster named "another lava thing". Not a bad name, but
+> it leads to "You kill the another lava thing!" messages. Perhaps a name
+> change to "mother of all lava things" or "lava thing's cousin".
+
+> "another lava thing" has no stats in mon-data.h, so it was
+> obviously a dummy placeholder and has been removed from possible
+> generation lists.
+
+== 105. Assorted typos:
+>
+> You possessions no longer seem quite so burdensome.
+> You heara loud "Zot"!
+>
+> File name: Minh.txt
+> File name: Minh.txted successfully.
+
+== 106. Something causes misformatting of the descriptions for
+> SPELL_APPORTATION and RING_TELEPORT_CONTROL;
+
+== 107. After I picked something up, I could drop one thing, but nothing after
+// that. I think we ought to have periodic checks that num_inv_items is
+// correct - recounting once per turn is not a significant calculation.
+
+Ah! There's the problem... that variable was deprecated a while back
+and replaced with explicit code in the standard places (because it
+was impossible to keep it up to date). If someone is actually making
+use of it again then of course the entire system is going to break
+down.
+
+>> really deprecated this time.
+
+== 108. Fixed apply_area_within_radius(). Makes far fewer unnecessary calculations
+ now.
+
+== 109. Fixed rendering slowdown on windows console.
+
+== 110. Scorefile reading doesn't pick up special characters like a-umlaut or e-ague
+
+== 111. I was in the Tomb, slaying mummies with style and grace, so naturally
+a fair amount of cursing of my stuff took place.
+
+The Ring of Shadows now has an inv_plus of 100, I assume since
+monstuff::curse_an_item() adds 100 to inv_plus. I can't remove it,
+since inv_plus > 80. It is not labeled as cursed and scrolls of remove
+curse are ineffective since inv_plus < 130. I suggest that, for now,
+curse_an_item() should leave randarts alone.
+
+As an aside, is "artefact" a valid variant spelling of "artifact"?
+
+
+== 112. Another result of the great Mummy slaying was that my flesh would
+rot away. I think display_char_status() should list this.
+
+
+xx 113. I came a across a butterfly which had color 66. I could not
+determine why (N.B. 66 is MONS_BUTTERFLY.. what's going on?!)
+
+> me neither. All calls to create butterflies should go through
+> define_monster(), which sets m->number to 0..15. See #85.
+
+== 114. in view.cc, inside the #ifdef DOS_TERM things there are some
+bad things happening to the puttext calls. buffer.buffer()
+should be replaced with buffer, and buffer2.buffer() (or is it
+buffer.buffer2()? I forget) should be replaced with buffer2.
+Otherwise it refuses to compile (this may be an incompatibility
+between borland C++ and djgpp, Gordon)
+
+MV: Buffer.buffer() should be only buffer. Problem is with _buffy_ which
+needs to be _buffy.buffer()_.
+
+== 115. Also in view.cc in noisy() at 1304 the distance function is
+being used wrongly. Change if (dist <= distance(... to
+if (dist >= distance(.... This problem caused most monsters on
+a level to wake up as soon as a noise was made, and was why
+characters were getting mobbed.
+
+== 116. the init file is broken, at least under DOS. It is reading
+in the player's name okay and is finding the other options,
+but when read_bool() tries to work out whether an option is
+followed by "true"/"1" or "false"/"0" it fails to detect
+anything and just goes with the default. I don't know how any
+of the weird code in initfile.cc works (what was wrong with
+the stdlib string functions?) but, at a guess, this might
+have to do with the way DOS writes End Of Line in its text
+files - if a line is concluded by something other than
+'\0' the string code might fail. But that's just a guess.
+
+>> made a couple changes and it seems to work fine on win32..
+>> but this is highly dependent on the compiler's implementation
+>> of the standard string template (grrr!)
+
+== 117. A blank/empty scorefile will not be updated; scores of 0 not kept.
+
+> both fixed.
+
+== 118. If you aren't carrying anything except money, you can't drop it (money)
+
+> can now specify quantity of money to drop. Accepts any value.
+
+== 119. My character entered the Tomb, arriving in the upper left hand corner,
+at position (9,7). I tried to target, and failed the ASSERT for the
+mgrd array. This took place around line 1227 of direct.cc in the
+mons_find() routine. const int targ_x = you.x_pos + temp_xps - 17;
+ const int targ_y = you.y_pos + temp_yps - 9;
+ const int targ_mon = mgrd[ targ_x ][ targ_y ];
+
+In this case, you.y_pos is 7, temp_yps is 1, and so targ_y is -1.
+
+== 120. The Amulet of Cekugob does not stop one from teleporting when one
+ has the teleport mutation.
+
+== 121. I entered Hell from level 22. When I exited Hell I was placed on
+ dungeon level 27.
+
+BWR:I believe this was the better alternative of earlier problems dealing
+with returning to the main dungeon... used to be you could end up on
+level zero, or on a semi-random level inside solid rock. After those
+problems were fixed the portals seemed to work as above.
+
+== 122. When I returned to Hell, I was placed on one of the down stairwells.
+
+== 123. Remove which piece of jewellery?
+ That isn't a piece of jewellry.
+
+Webster has jewelry, jeweled. Changed all occurances.
+
+
+== 124. Oops, that ring feels deathly cold.
+ B - a cursed amulet of the gourmand (around neck)
+
+xx 126. I hit a giant spore with a bolt of poison flame, and the critter
+> didn't explode. It just disappeared.
+
+LRH writes:
+Not sure exactly, but I'm pretty sure that if you do enough
+damage to a spore with a single attack it will fail to explode.
+The relevant code should be in monster_die().
+
+== 127. A fire giant hit my Spriggan (AC: 5, EV: 13) with several fire balls
+> over a few turns, but none hurt much. I didn't get any messages about
+> resisting the effects. Is this the odd fire resistance problem?
+
+>> monster fireball damage wasn't being set correctly.
+
+== 128. The Spriggan has strength 10 and dexterity 21. When he wields a bow
+> or crossbow, I get the message:
+>
+> Your relatively low strength is limiting your use of this weapon.
+>
+> I don't think strength has any effect with crossbow, and probably doesn't
+> effect bows.
+
+BWR: As a side note, is the low Throwing skill message still on the skills
+screen? Has anybody tested it with all the skills yet (there is a
+lack of room, and the screen should fit in 24 lines). Maybe that
+message would be better as a message when wielding the bow itself,
+although I'm not sure how much the mechanic is required (I typically
+upped Throwing skill along with Bows because it's a cheaper and faster
+way to up accuracy and damage than raising Bows alone).
+
+== 129. The file makefile.obj seems to be missing... this is a problem
+ for most of the other makefiles which include it.
+
+== 130. The APPNAME in makefile.sol should probably be changed back to crawl.
+
+== 132. In spells0.cc should be also included stdio.h under DOS
+because sprintf() is used.
+
+xx 133. > Are you going to do the player-ghost/demonlord "structure" as well?
+//
+ Um, dare I ask, why? I've never looked at this part of the code.
+BWR:
+It's currently an array of chars. It would probably be easier to
+understand as a struct with fields for AC, max HP, spells, resistances
+and such.
+
+== 134. When I cast Static Discharge, I get occasional fails of the ASSERT
+on line 419 of spells4.cc: for (int i = 0; i < targs_found; i++)
+ {
+ ASSERT( targs[i].x && targs[i].y );
+ func( targs[i].x, targs[i].y, divided_power, 0 );
+ }
+
+> Fixed. Brent's algorithm is sound, but his coding wasn't. :P
+
+== 135. When I use the Sif Muna granted ability of Selective Amnesia, I hit
+an array bounds assert in seekspell() - which is exactly:
+
+return &spelldata[plyrspell_list[spell]];
+
+The value of spell is 210 (SPELL_NO_SPELL), and so plyrspell_list[]
+goes out of bounds (it is not protected by the Fix[Ary|Vec] stuff)
+which then triggers spelldata[] going out of bounds.
+
+>> plyrspell_list[xx] being set to SPELL_NO_SPELL _before_ call
+>> to spell_power. stupid logic error.
+
+== 136. I swung my Staff of Air:
+
+You miss the imp.
+You miss the imp.the imp is jolted.
+You are wielding a staff of air.
+
+== 137. I'm wearing an amulet of the gourmand, but I never seem to get labelled
+as being Full (or Engorged).
+
+>> is this a problem? Gourmand allows you to eat rotten/contaminated flesh,
+>> how could this be related?
+
+== 138. Trolls can eat huge amount of chunks of flesh without becoming full
+
+> oops. Nobody could ever get full. Stupid logic error.
+
+== 139. Name in INI file causes crash unless all caps.
+
+xx 140. Non-Beams displayed one cell at a time (thanks to Michal)
+
+== 141. M_SPELLCASTER removed from ball lightning.
+
+== 142. All beams/missiles leave a visible trail now (at least until window
+ redraw). Was too hard to get right w.r.t. killed creatures and cloud
+ trails, and most liked it the other way anyways.
+
+== 143. Some enchantment beam behavior fixed.
+
+== 144. Update & examine command-line switches & options
+
+// - update & verify behavior of command line switches & options
+Monochrome isn't connected to anything. The "no colour" option could
+be handled by imposing a set of colour macros (if they were made widely
+available)... most monochrome systems can do bold/standout, although
+that typically ends up backwards or ugly (if it's done via reverse).
+Could possibly just be removed rather than bother with it.
+The "-nb" (no black) option is obsolete with colour macroing.
+Basic options to consider:
+- list scores (param for top X)
+- select race/class
+- character name (for loading and starting new character)
+- pointer to game directory (ala crawl_dir option)
+- pointer to initfile (ala CRAWL_RC environment variable)
+Later things can get fancy, but we should at least have those.
+
+xx 145. I'm playing the latest win32 binary pre-release (January 11).
+The first problem is that I can't get to the religion screen. To produce
+'^' with my keyboard I have to press <Shift> + <the button with ^>
+followed by a space. However, in Crawl this doesn't work (it used to work
+with earlier versions before this series of win32 binary pre-releases).
+All I get is 'Unknown command'.
+
+== 146. When zapping a wand of Draining at a line of Kobolds and Big Kobolds,
+: the game froze if something was killed. The game was recoverable, and
+: the bug repeated itself. Killing these by hand caused no problems.
+: Using this wand on other creatures caused no problems.
+
+>> probably related to double-whammy monsters were suffering from poison/
+>> draining. Hit dice might have gone below zero, etc.
+
+== 147. Any ranged attack that hits you has a chance of destroying
+: your scrolls, not just fire-based ones, and they all give the message
+: that your scroll has burst into flames. Confused the heck outta me
+: the first time it happened. "The puff of frost hits you! One of your
+: scrolls bursts into flames!"
+
+== 148.
+: 1 other thing I just thought of. When targetting in version 3.43
+: you could use the dot on the keypad to select the target. Now, to
+: use that dot, I have to use the shift button with it.
+
+xx 149. Also it seems like mummies have lost some of their cold resistance... I
+had trouble with an ice dragon that should probably have been real easy...
+on the other hand fire damage does not seem to be all that nasty to them
+anymore (I dunno about the mummy monster but this seems to be the case for
+mummy player chars, none of my equipment provided fire resistance).
+
+== 150. Fixed new description() problem. Oops.
+
+== 151. Changed some messages for burning and chilling monster attacks.
+ note that mummies _could_ be chilled by melee attacks - "chilled" in fact
+ means that the player resists cold. New messages are tied to actual
+ extra damage from fire/cold.
+
+== 152. Fixed "always poison/drain" on beams/bolts that didn't actually
+ hit (problem with side effects in check_mons_resists() ->
+ mons_adjust_flavoured())
+
+xx 153. The level files for my characters don't seem to get deleted, even after
+the character dies. I'm assuming that they're meant to be deleted, as
+they used to be... or is there some reason that the game now keeps them?
+
+> can't repro - works fine on 2000.
+
+== 154. I found one of those checkerboard-like rooms with alternating wall and
+floor squares (you know what I mean? The ones where you can only move
+diagonally, sort of like the Hive, but occuring in the regular
+dungeon?)... it was made of metal walls, and had a small open area in the
+middle. There were some items which seem like they should have been
+placed inside the open area, but were inside the walls instead, and
+therefore inaccessible. I can't figure out how to get Crawl to dump a
+screenshot, but I'll recreate it here, using X to represent a wall.
+.X.XXXX
+X.X.[.X
+.X.X@)X
+X.XX!.X
+.X..XXX
+X...X.X
+.X.X'X.
+All three of the items around my character are inside walls; examining
+them says:
+You see a [item name] here.
+A metal wall.
+You can't move on to them or anything. Note that if you shifted them all
+three squares down and two to the left, they'd fit nicely in that little
+open area, which leads me to suspect that possibly that's where they were
+meant to be.
+
+>> several places in dungeon.cc where this could happen. Think I've squished
+>> them.
+
+== 155. I'd suggest killing /unused, but only after moving oldmaps.txt
+into /misc. Within /misc, scoretab.cc should probably be updated
+to the new scorefile format (or killed) and untab.pl should be
+killed, as it is an unreliable detab script - rh.bat seems
+near useless.
+
+In /Docs (why is this uppercase?), NEW.txt is empty, buglist.txt
+should be updated to the current status (about which, Gordon only
+knows), I need to migrate messlog into changes.340, changes.340
+needs to be renamed changes.400, the remaining files need to be
+updated.
+
+The old LOS code can die, I think I lost my fascination with it.
+I don't believe anyone else was defending its existence.
+
+== 156. On this topic, I get tons of warnings about FixVec.h and FixAry.h
+not having a final newline.   Could you add one to these?
+
+== 157. The compiler also noted a problem in dungeon.cc:
+ if (you.where_are_you == BRANCH_CRYPT || you.where_are_you == BRANCH_TOMB)
+ {
+ if (type_floor == DNGN_LAVA)
+ type_floor = DNGN_SHALLOW_WATER;
+ if (type_2 == DNGN_LAVA)
+ type_2 == DNGN_SHALLOW_WATER;
+ }
+The last statement should probably be an assignment.
+
+== 158. Finally, I can't compile dungeon.cc at all:
+dungeon.cc: In function `void link_items ()':
+dungeon.cc:6395: warning: comparison between signed and unsigned integer expressions
+FixVec.h: In method `FixedVector<TYPE, SIZE>::FixedVector (TYPE, TYPE, ...)
+[with TYPE = char, int SIZE = 7]':
+dungeon.cc:7998:   instantiated from here FixVec.h:125: `char' is promoted to `int'
+when passed through `...' FixVec.h:125: (so you should pass `int' not `char' to `va_arg')
+
+This also affects spells4.cc (instantiated from line 729).
+
+== 159. Problems with print_description() under DOS?
+Stupid, stupid, stupid.. good god. used .data() instead of .c_str()
+
+== 160. Make Boris back into a non-Unique and give him appropriate mons_speak()
+
+== 161. More portable savefile format.
+
+== 162. Well, played with the new pre release, speed is the same (drat) and the
+ghoul food bug still exists... the one where they have to eat a meat
+ration to cure the 'hungry' status. Haven't hit on any other bugs yet but
+I've only run 3 characters who all had very short lives.
+
+== 164. Direct-effect monster castings (smiting, etc) would crash the
+game (forgot to set beam_source for non-beam type attacks).
+
+== 165. The warning messages given for wielding objects should also be given
+at the start of the game (if applicable).
+
+== 166. Anyways, I'm starting to
+think that the margin should be a little smaller, the 79 colomn one is
+just too wide to read comfortably... a 70 column one should be fine.
+
+== 167.
+// > All staves work like this - the special power can activate even if
+// > you miss your foe by a mile.
+// >
+// > Is this desired behavior?
+//
+// I would think not.
+
+** 168. Enable loading of 3.30/1.x chars & level files.
+
+== 169. When casting Corona and hitting somebody I'm allways getting
+additional message "Nothing appears to happen.".
+eg. The goblin is outlined in light.
+ Nothing appears to happen.
+
+ (silly logic problem)
+
+== 170. In ouch.cc is under DOS missing #include <file.h>
+
+== 171. There is still small problem with new print_description().
+ Description window for DOS is (25,1,80,25) - see for example
+ describe_spell(). It means that lineWidth in print_description()
+ can't be 70 under DOS_TERM and should be 54 or so (of course
+ those windows can be changed but it's much more work).
+ DOS term and shoul be 54.
+
+== 172. I started a grey elf wizard and it begins play with an orcish robe, not an
+elven one. (flimsy coding)
+
+== 173.
+"You miss the ice beast.
+The ice beast hits you!
+The ice beastchills you.
+Ouch! That really hurt!"
+
+== 174. tag.h and monstuff.cc need final newlines
+
+== 175. tags.cc and files.cc include mem.h, but gcc doesn't come with one.
+ The routine memcpy is declared in string.h, which is already included
+ in these files, so commenting out worked for me.
+
+== 176. spells3.cc has the same problem with FixVec.h that dungeon.cc had
+ in pr6.
+
+I guess around line 729 or so. :) g++ -Wall -DLINUX -g -DDEBUG -c spells3.cc
+FixVec.h: In method `FixedVector<TYPE, SIZE>::FixedVector (TYPE, TYPE, ...)
+[with TYPE = unsigned char, int SIZE = 7]':
+spells3.cc:729: instantiated from here
+FixVec.h:125: `unsigned char' is promoted to `int' when passed through `...'
+FixVec.h:125: (so you should pass `int' not `unsigned char' to `va_arg')
+
+== 177. Was just looking at that code, and noticed the comment about the
+"other five gods" (the one's the player cannot start the game
+worshipping). Anyways, that comment was added there before the
+always_greet option, which does meet the requirement for filling
+in the extra gods (since the real purpose of always_greet is to
+remind the player of some non-obvious details about their character
+in case they haven't been playing in a while (ie. race, class, deity,
+weapon penalty).
+
+== 178. Could you please put the string "-O2 -fno-strength-reduce" in your makefiles
+dealing with GCC? It'll speed up the game by a *huge* amount. (The
+-fno-strength-reduce is to get around a bug in many versions of GCC.)
+Because of the exceeding slowness in the released versions, I compiled my own
+version, which leads to point
+
+== 179. Why in the name of Cthulu did you remove "#include <files.h>" from ouch.cc?
+To misquote Rufus Wainwright, "Cause all I get is instant errors/Instant errors
+Instant errors".
+
+== 180. Update scorefile format to a delimited ACSII numeric representation.
+ (hmmm - will take some thought)
+
+xx 181. I am not sure if its a bug or not, but using pr7 on NT4, every now and
+again when I die, Crawl causes a general protection fault (or whatever its
+called in NT) and the game crashes. The good side to this is I don't lose
+my character and can go back to my last save and keep playing.
+
+> When I'm having a good character going ("good" being
+> 1000+ points or so), the game tends to crash when the character dies.
+
+== 182. I just got the mutation "you can exhale a cloud of poison" but I recieved
+no special ability to activate it. At the time of the mutation, I was
+wearing a ring of shadows that gave me the ability to turn invisible.
+Perhaps the ring interfered with it? Hope this helps.
+
+> data error in mutation.cc. Fixed. Nagas now get breathe poison
+> sometimes if they _would_ have got the spit poison mutation.
+
+jmf> That mutation ought only occur for Nagas. A non-Naga getting
+jmf> the mutation is a bug.
+
+xx 183. Move rand(), random(), srand(), srandom() to libxxx
+
+> behavior is too complicated..
+
+
+
+== 184. Files are not cleaned up in DOS - see end_game() in ouch.cc
+
+== 185. Fixed more monster spell crashing-if-kills-player problems.
+
+== 186. Quokkas have no mass, hence they never leave corpses.
+
+> That was there original stat, should probably be set to 200.
+
+== 187. I found lots of bug while using 'recall undead slave' skill.
+
+I noticed this bug as well. Seems the recall spell places your servants in
+spaces next to you, regardless if there is already something there or not.
+In effect, monsters which are stacked seem unable to move, including
+hostile monsters. When the top monster leaves the space the game places a
+"floor" tile there.
+
+> really, really dumb logic error - corrupted mgrd as a side effect!!
+
+== 188. Several piles of gold on the same spot should merge
+
+>> so should other things. Fixed item_place() and drop_gold() appropriately.
+
+== 189. Merfolk hunters not available, NEWGAME.CC suggests they should
+
+== 190. Weld potion drank should dissappear from the screen
+
+== 191. First the bug: While in the Abyss, I came across an orange 8. Hit x and positioned
+the cursor over it to see what it was (thinking it was probably a type
+of golem I'd never seen or something) and it said:
+
+>> There was a tiny bit of overlap between the area which got nuked and
+>> the area that got transferred. Probably left pointers to invalid
+>> items lying around, which would produce exactly this:
+
+!questionable item (c100, +0, p50, p(2)50, d0:q0)
+
+== 192. Now the complaint: Because you can use the letter keys to move around,
+the numeric pad
+has obviously been modified so that the numbers map on to the letter
+keys... but there is a problem with this, namely that 7 maps on to y,
+and can therefore be used to answer in the affirmative to a question.
+I now realize why easy_confirm exists, since some people no doubt use
+the letter keys to move and may accidentally say yes to something they
+didn't intend to... but for those of us who use the numeric pad, the
+option doesn't seem to make much sense, since your finger doesn't come
+near the 'y' key all that often, so I just had it set to all. Then I
+was in a situation with one of my best characters ever where there was
+lava directly north of me and I wanted to move northwest, but my
+finger hit directly between the two keys, basically hitting 8 then 7
+in rapid succession, plunging me into the lava and killing me. I
+suggest one of two things; either make the numeric pad work the same
+way as the letters ONLY for movement, since the only time other than
+movement when you're going to receive input from the numeric pad is
+when it's accidental, or at least put a warning in the init.txt where
+it talks about easy_confirm saying something like "WARNING TO KEYPAD
+USERS: The number 7 is mapped on to the letter 'y,' which can result
+in accidentally answering yes to questions; it is suggested that you
+leave easy_confirm off."
+
+== 193. > An orc priest who hellfired him.
+
+>> fixed in general non-tracer spell cleanup. Oops.
+
+== 194. Scrolls of immolation don't do anything. The big fireball
+: appears on the screen, centred on you, but it doesn't damage you or
+: any of the creatures surrounding you, and doesn't have any other
+: effects. I'm assuming that this is a bug.
+
+> Good catch. Direct explosions were being treated as tracers. :P
+
+== 195. A more minor bug: if you read a scroll of teleportation, then
+: start butchering a corpse, you'll continue to butcher the corpse even
+: after you've teleported, successfully chopping it to pieces, even
+: though it hasn't come with you.
+
+== 196. Well, the title says it all, but, when I reach level 27 of the dungeon the game
+crashes (not a windows page fault, a 'dos page fault'). The character has not
+retrieved any of the runes of zot yet, so I figure I'll try again after getting
+one (or if that don't cure it 3 just in case). I'm on a windows 98 computer
+running the DOS compilation of pre release 7. I also had a few times on level
+26 where I couldn't move (alt tabbing out and forcing the game closed worked
+but I was set back a ways... so I made it a point to level level 26 hehe). One
+other thing I noticed was the dungeon clean up never happened (on level 25 but
+I had no problems on that level even after the floor was full). New monsters
+seemed to get weapons and armor but no more corpses once the floor was full.
+
+Something else I've always wondered about was the slime pits, are you supposed
+to get a rune of zot out of there or does the royal jelly 'eat' it or
+something, I've never gotten anything from there but it seems like it's the
+kind of place that would have one (specially with a monster that is no where
+else in the game sitting in a pre-fab dungeon).
+
+ ...and then this follow-up on Feb 9th...
+ I mention the runes because it was level 27 I was trying to enter when it
+crashed on me, I wasn't actually entering zot, just the level with all the
+gateways to zot. Was just trying to go down there to get a little more exp
+before I went to get the runes necessary to get into zot (the advantage of
+being a mummy... you can go do things in squirly order according to whim hehe
+
+mannix writes:
+
+Just confirmed it, lvl 27 is definitely a gaurenteed crash, even with 3
+(well, 4... got two in pandemonium... should that have been possible?) I
+still crashed when I tried to enter lvl 27. On the other hand I've found
+some fairly nifty places to explore for exp :). Another problem I found
+was that in a lot of areas the dungeon clean up is not nearly aggressive
+enough, I'd go so far as to say that when it happens all non-quest items
+should probably be removed, in some areas after spending a bit of time
+repeatedly killing random monsters (the joys of playing a mummy hehe) item
+drops would show up something like 'item 923589237 has dropped' (and
+that's a sure sign of impending doom, or at least a lock up on exit). I
+worked around the problem on one level by using my own clean up method...
+summoning imps/demons... some of them will pick up weapons (and in places
+like hall of blades that's all you'll normally see) and when they
+dissappear those items are gone for good.
+
+== 197. : Using a spell staff of smiting in melee combat reveals the following message:
+: You're wielding some sort of staff I've never heard of. (fight.cc)
+
+== 198. Trying to cast Apportation on a pile of gold crashes the game
+ (division by zero)
+
+== 199. Draconian Hunters start with a club instead of a bow.
+
+> It's a little bit worse than that... The bow is clobbered into being
+> a club instead of the leather armour being turned into a robe (draconians
+> shouldn't being wearing leather armour since it doesn't fit).
+
+== 200. Need more aggressive item cleanup.
+
+>> perhaps trigger this on item creation, if a spot can't be found.. go
+>> through the item list destroying less valuable items or small piles of
+>> gold.
+
+== 201. Teleporting a fish (by hitting it with weapon of distortion) might
+cause misc. problems - e.g. fish is teleported again and again
+(because it lands on the floor)
+
+> won't happen; checked & rewrote bits of monster_teleport() to be
+> more readable, but the code was fine.
+
+== 202. I was getting mutations after wielding/unwielding weapon of
+distortion
+
+> yes, it's in the code. Nice eh?
+
+== 203.Darts of bugginess found in shop
+
+> dumb logic in dungeon.cc::items()
+
+xx 204. Electric eels sometimes shoots lightning to strange (probably
+random) places and not at player.
+
+> don't see how.
+
+== 205. Put in a fix for scorefile lines longer than 80 chars (will break)
+
+== 206. a new score at the bottom of the list would not be added.
+
+== 207. Misc documentation changes from Don
+
+== 208. Won't get "Sorry, you can't target what you can't see." when you're
+just looking around.(with 'x')
+
+== 209. Improved 'C' command (gives XP left to go)
+
+== 210. Far strike & twist could not target with direction keys (they are
+pseudo-direct effects, which screwed stuff up. Argh!). Changed mode
+for those spells to DIR_TARGET, which means hitting a direction key will
+take player into targetting mode. No doubt will be hearing gripes about
+this too.
+
+== 211. Patched up multiuser compile.
+
+== 212. Quokkas don't generate corpses now. Someone else wants to revamp
+the corpse system, go for it.
+
+== 213. Easy butcher defaults to false now.
+
+== 214. Options for Race & Class added to init file
+
+== 215. Replace mutate() calls for miscast effects with addition to mutagenic
+radiation; perhaps all miscasts (may) add to this, and high level miscasts
+changed to give_bad_mutation?
+
+>> done. all spell miscasts give small mutagens; high level spell miscasts
+>> can get pretty nasty too, but still only small chances of mutation unless
+>> you're also invisible/hasted/wielding nasty artifact.
+>> missing a couple high level spells badly in quick succession can be really
+>> nasty. I'll leave it as an easter egg. :)
+
+== 216. Monsters won't throw stuff if they can melee.
+
+== 218. Misc stylistic & code fixes from Jesse
+
+== 219. Charmed monsters will no longer be described as 'friendly'.
+
+== 220. Brave attempt made to use correct pronouns (introduced mons_pronoun)
+
+== 221. Shop names more visible when looking around & moving
+
+== 222. Can now pickup auto-combine items even with full pack
+
+== 223. scrolls of fear won't auto-identify if nobody is scared by them.
+
+== 224. "Killed by giant ant" when smitten from afar by Orc priest?
+
+> very subtle. Death_source can be zero, since it is an index into
+> the monster array. But I didn't think it could be - if killed by
+> monster#0, scores like this would be generated:
+:4:0:89:Methea:0:6:3::3:14:3:0:0:0::2:0:0:0:0:
+> which would be translated to "killed by a giant ant"
+
+== 225. Don't generate monsters in LOS?
+
+== 226. Get name after race & class (pretty easy now)
+
+== 227. Fixed up some job titles.
+
+xx 228. Game crash on character death; after equip list, but before hiscore list
+
+== 229. Massive speedup on win95/98. Fixed all cursor dance and buffering
+problems. Fullscreen is still pokey on most machines, but it's finally
+playable.
+
+== 230. No staircases to Zot on level 27 (dlevel == 26). It looks like a
+ piece of code in dungeon.cc::builder() may be changing stairways to Zot
+ to dungeon floors, regardless of level (occurs after place_branch_
+ entrances())
+
+== 231. crawl -plain now actually uses non-gfx character set
+
+== 232. All female uniques are now properly gendered (missing break statement)
+
+== 233. Divine resistance messaged a bit better (w.r.t. Xom, Makhleb)
+
+== 234. messaging for vampiric attacks fixed up.
+
+== 235. Monsters generated on teleport traps will have unobtainable loot!
+ > shouldn't generate them on tport traps any more.
+
+== 236. Fixed DOS include of <files.h>
+
+== 237. Fixed overly long string in '?' screen
+
+== 238. More multiuser fixups. Changed default makefile to linux.
+
+== 239. Moved god favor messages more in line with prayer messages (too confusing
+ otherwise). Fixed a couple grammatical errors.
+
+== 240. Can't hit some monsters in LOS (rounding problem?)
+ Need to rewrite for integer math. :P
+
+== 241. Crash on long player names (duh!)
+
+== 242. Miscellaneous spelling/grammatical errors
+
+== 243. Do something about this: probably remove from compile options. But leave
+ bow/throwing warning in, as it is a _very_ important penalty.
+
+ : One odd thing, though. I chose a Human Fighter with a short sword and when
+ : I began the game I get "Your relatively low dexterity is limiting your use
+ : of your weapon." Other than the three occurrences of "your" in this
+ : sentence, I find it odd that 10 dexterity is too low to wield a short
+ : sword. Or is this a bug?
+
+ "Your relatively low <foo> is limiting use of your <weapon name>."
+
+ Would be a slight alteration to kill one "your" and actually
+ designate the weapon being affected (I know it is pretty clear
+ that the only weapon affected is the one wielded, but I like
+ some things spelled out).
+
+ To avoid those excessively long weapon names with all the plusses
+ and things, the weapon name string should probably be just the base
+ weapon type (e.g., "short sword" instead of "+1, +2 short sword of
+ orc-slaying and back-scratching"). As the str/dex modifiers are
+ based on the base type and not all that other goodness, this seems
+ an ok thing to do.
+
+ Anyway ... I still think that this check ought to be performed
+ prior to weapon selection by a player at start-up, so that he
+ or she knows his/her character will be handicapped by the choice
+ of one weapon type or another. I think that thread was raised
+ briefly last week or so.
+
+== 244. The game crashes when I start a monk.
+
+ In skills2::wield_warning(), these two statements need to be swapped:
+
+ int wepType = you.inv_type[you.equip[EQ_WEAPON]];
+
+ // early out - no weapon
+ if (you.equip[EQ_WEAPON] == -1)
+ return;
+
+
+== 246. Rewrote monster behavior routines.
+
+== 247. Cleaned up some function prototypes in dungeon.cc
+
+== 249. Put gendering into monspeak.cc
+
+>> couldn't find anything.. wonder what Michal meant?
+
+== 250. More typos
+
+== 251. remove caps from filenames
+
+== 252. Summoned critter problems:
+From: "Ben Goetter" <goetter@m...>
+Sent: Thursday, March 15, 2001 9:45 PM
+Subject: Crawl 4.0pr10z 13 Mar report Bug report: summoned creatures are
+appearing in the same space as the
+caster. (Cast spell, summoned creature not visible; move one space,
+creature appears in space vacated by caster.)
+<FIXED>
+Date: Fri, 16 Mar 2001 09:00:41 PST
+From: tgord <clubs-mail@y...>
+Subject: Re: Crawl 4.00 pr10zf [Yahoo! Clubs: Linley's Dungeon Crawl]
+I've noticed that summoned monsters sometimes appear on the other sides of
+walls now. ^^^^^^^^^^^
+<FIXED, for player summons>
+
+== 253. Change messages for weidling awkward weps to show up only at
+ values <= -4 (for real problems) and change message to "not taking
+ full advantage of the weapon" or somesuch. More flavour, too..
+ maybe messages like "you're too clumsy" for dex<10; others for
+ high (but unbalanced) stats: "You'd be (a lot) better with
+ that weapon if you were (stronger/more dextrous)"
+
+xx 254. Give Earth Elementalists a few stones (say 10-15) to help them
+ get started?
+
+>> addressed with the new, 'easier to run away from' monster AI?
+
+== 255. I thought someone had added the MST_* enum usage to mon-data.h,
+
+== 256. Would be nice if the wizard patch I put up in the files directory
+ made it into the code.
+
+== 257.PS Oh, using crawl -scores leaves the terminal in a bad mode...
+ stty sane is required to sort things out (either curses shouldn't be brought
+ up with this option, or it should be shut down properly).
+
+Just change the exit() call to a stuff::end() call.
+// check for highscore list - must be done BEFORE libw32c init
+ if (Options.sc_entries > 0)
+ {
+ cprintf(" Best Crawlers -"EOL);
+ hiscores_print_list();
+ end(0);
+ } The argument to end() is the exit value. That should probably be 0,
+rather than 1, since there's no error here.
+
+== 258. This bug ( if it is a bug ) has been around for a while... it seems
+: that sometimes when you poison a monster and it dies from the poison,
+: it gives you exp, and other times it doesn't. Is there some logic
+: behind this? A low level character of mine just barely managed to
+: kill an OOD hippogriff using poison, and got gypped of the exp. =(
+
+>> Very old problem in beam code; poison_monster was being called
+>> incorrectly.
+
+xx 259. I once got a corpse from a summoned snake - I hadn't been
+able to reproduce it, but it's corroboration.
+
+== 260. Give monsters large bonus while target is MHITYOU and behavior is
+ BEH_WANDER, during player stealth checks - monsters will still be on
+ the lookout for the player.
+
+ Give a small chance each clock tick of deleting the MHITYOU; i.e. monster
+ 'forgets' about the player. Stupid monsters forget faster..
+
+== 261.
+I was playing a transmuter, and noted that I was getting "You
+punch the <foo>" messages while fighting in spider form. I'm not
+getting the unarmed punch attack, so I think the verb comes from
+fight::weapon_type_modify(), which doesn't take transformations into
+account:
+
+static int weapon_type_modify(int weapnum, char *noise, char *noise2,
+ int damage)
+{
+ int weap_type = WPN_UNKNOWN; if (damage >= HIT_WEAK)
+ {
+ if (weapnum == -1)
+ weap_type = WPN_UNARMED;
+ else
+ {
+ if (you.inv_class[weapnum] == OBJ_STAVES)
+ weap_type = WPN_QUARTERSTAFF;
+ else if (you.inv_class[weapnum] == OBJ_WEAPONS)
+ weap_type = you.inv_type[weapnum];
+ }
+ } strcpy(noise2, ""); switch (weap_type)
+ { ... case WPN_UNARMED:
+ if (you.species == SP_TROLL || you.mutation[MUT_CLAWS])
+ {
+ if (damage < HIT_MED)
+ strcpy(noise, "claw");
+ else if (damage < HIT_STRONG)
+ strcpy(noise, "mangle");
+ else
+ strcpy(noise, "eviscerate");
+ }
+ else
+ {
+ if (damage < HIT_MED)
+ strcpy(noise, "punch");
+ else
+ strcpy(noise, "pummel");
+ }
+ return damage; ... }
+}
+
+xx 262.
+
+from Win32 precompiled pr10 on Windows 2000:
+
+You see here a white potion.
+B - a white potion
+Drink which item? (I choose B)
+You feel much better.
+Eat which item?
+That banana was delicious!
+B - a white potion
+You finish eating.
+
+>> Must have had autopickup off, but I cannot reproduce.. think it
+>> might have been fixed by fixes to message.cc
+
+== 263. When i name a character 'con' or 'Con' it freezes the game.
+
+== 264. Generate wandering monsters on/near stairs about 10% of the time,
+ regardless of player position, but disallow banding and generate a
+ message ("A %d enters from above/below!") if player is around.
+
+== 265. Has anyone else noticed that after a draconian dies, every high-score on the
+ screen is listed as having been a draconian? When a non-draconian dies, the
+ draconian is listed as having come from race "Yr".
+
+== 266. Cleaned up monster blinking.
+
+== 267. Monsters following up the stairs if they are "not aware" of the player (odd!)
+
+== 268. Some problems with monsters not following player position correctly, or
+ just plain waggling back and forth when they should be beating on the player.
+ Sigh.. gotta look closer at those movement routines. :P Not ready for
+ prime time yet.
+
+== 269. Simple fix to handle_behavior()
+
+== 270. After a while, crawl again went of bounds, this time with this
+ backtrace:
+
+ #6 0x80e9119 in seekmonster (p_monsterid=0xbffff1e0) at mon-util.cc:816
+ #7 0x80e91bc in mons_intel (mc=-1) at mon-util.cc:837
+ #8 0x80db2a7 in behavior_event (mon=0x8247e90, event=1, param=0)
+ at monstuff.cc:394
+ #9 0x81339c7 in noisy (loudness=8 '\b', nois_x=45 '-', nois_y=34 '"')
+ at view.cc:1249
+ #10 0x8132927 in monster_grid (do_updates=true) at view.cc:941
+ #11 0x8131bca in viewwindow2 (draw_it=0 '\000', do_updates=true) at view.cc:574
+ #12 0x8052f76 in input () at acr.cc:2020
+
+ The bad thing here is that line #7 has mc=-1, and seekmonster() will use
+ that as an index.
+
+== 271. Could we tie this to smartitude? Killer Bees and other insects can
+ forget that I exist when they can't see me while Liches ought to
+ cast 'detect exact player loaction' and Dig or teleport their way
+ to me, for a LOOOOOOOONG time after I damage one.
+
+== 272. Cleaned up abyss generation; there was a monster leak and some very strange
+ code.
+
+== 273. Fixed minor screen redraw problem (screen should have updated before monsters'
+ turn, but it wasn't. Caused some odd SFX artifacts, like beams/missiles going
+ through walls)
+
+== 274. Fixed nasty bug with cornered monsters which had them looping from flee->
+ cornered->seek->flee->...
+
+== 275. Fixed small logic error with perma-mutations
+
+== 276. I was invisible and an orc spotted me, shouted, and then came at me.
+
+== 277. gotta clean up monster target aquisition and release. Make more 'sensible'
+>> Add 'persist' variable; which is # of turns a monster will go towards their
+>> CURRENT target even if it is not in LOS anymore.
+
+== 278. Fixed type usage problem with quadrant_blink()
+
+== 279. Made monsters move a little more unpredictably along oblique paths
+
+== 280. Fixed up all cases I could find of friendly monsters frying players
+ (NOTE: they might still do so as part of calculated plans to help the player
+ out - some collateral damage is acceptable!)
+
+== 281. "The your cursed +1 robe is stuck to your body."
+ "You are a elf wizard."
+
+== 282. Can't pick a target with Apportation spell.
+
+>> works fine for me. Added a helpful message.
+
+== 283. It seems that sometimes monsters are not interested at you even if
+ you shout ("!") at them. Or is it feature ?
+
+>> nope, bug. Any noise coming from the player's position should alert
+>> hostiles within range depending on the volume of the noise.
+
+== 284. Sometimes monsters (rats, bats and probably others) attacks you,
+ but they are still described as "not interested".
+
+>> fixed in direct.cc.
+
+== 285. I have also
+ made some changes to the file attributes when it is compiled with MULTIUSER
+ option turned on, since I think the player's save and level files should NOT
+ be group writeable :), but the score file should be.
+
+>> .sav and level files are private (600). Ghost and score files are not (664)
+
+== 286. There seems to be a more serious bug with summoning monsters in Crawl pr11:
+: I`ve found that summoned creatures aren`t giving any experience to your
+: character when they kill things any more, which makes summoners a bit crap.
+:
+: Also, when my Chaos Knight summoned a demon ( yquxy whatsit) it kept trying
+: to eat my intelligence and mutate me, which has never happened before.
+: Demons killing monsters didn`t give me any message from Makhleb either.
+
+Both fixed. #1 is logic problem, #2 is generic friendly fire problem.
+
+== 287.
+ I'm playing pr11, DOS version. My merfolk healer was in a situation like
+ this:
+
+ ................. (water squares...
+ ..;;.............
+ .................
+ .................
+ .................
+ .................
+ .................
+ ......;.......... water squares end)
+ ......@.......... this is solid ground
+
+ The placing of the symbols is not accurate.
+ Now none of the eels could hit me with their blasts. The eel right next to
+ my character kept shooting straight upwards and the two eels farther away
+ kept missing me by my right side. At least one of them also hit the eel
+ right next to me. I killed the nearest eel, after which the other two just
+ kept missing me. My character was not invisible.
+
+: Also, it's not just electric eels. Storm dragons also tend to shoot in
+: the exact opposite direction to the character. Looks to me like it might
+: be a sign problem...
+
+>> ugh. bad side effect from tracer explosions. Fixed.
+
+== 288. Fixed whopper of a bug with generation of fast monsters which often hung
+ the game (especially in areas with lots of fast monsters, like the hive).
+
+== 289. Brent's balance patches
+
+>> applied all, reduced missile damages by 1 to compensate. Gave daggers
+>> and spears better chances to hit.
+
+== 290. The "temporarily insulated" message is weak... it's kind of
+ confuing and looks a bit like a bug. Better would be a "god
+ protected you" message after the explosion... that would tell
+ both the source and the reason for the insulation.
+
+>> agreed. Changed to post-divine blast message.
+
+== 291. Hate to follow up to myself, but a small thing was brought to
+ my attention. Now that the dice for damage are one based, this
+ means that Magic Dart is now really the best first level spell,
+ this being because it uses the 3dX notation (ie dam > 100), so
+ it does a minimum of three damage (which isn't bad) and always
+ hits (which makes this too good for a spell which is very common).
+
+ So I'm suggesting that the damage for Magic Dart be converted to:
+
+ damage = 1 + (power / 2) (this is in it_use2.cc).
+
+>> changed to 1+pow/4.
+
+== 292. The third ability gained by followers of Zin is pestilence. This summons
+ a variety of bugs that hopefully will helpfully kill off whatever happens
+ to be bugging you.
+
+ Trouble is, every time my character uses it at least one my little
+ chitinous friends gets killed. Zin doesn't like that, so my character
+ feels guilty.
+
+ The same thing happens with the fifth ability, Summon Guardian, but
+ it's not so bad there. The summoned Angel (or Daeva, for fans of the
+ TSO) can generally take care of itself, although I did lose a Daeva to
+ a dragon once. Luckily it left behind a long sword of holy wrath to
+ assuage my guilt.
+
+>> add a flag to god-summoned critters so that their death doesn't cause
+>> piety loss. Summoned friendlies will still give piety loss; the 'good'
+>> gods don't appreciate you summoning beings as cannon fodder!
+
+>> tried to apply the god_gift flag wherever it made sense; Zin Pestilence
+>> was the only place I could find.
+
+== 293. Finally found and fixed 'critters summoned out of LOS' bug.
+
+== 294. Fixed logic problem in quadrant_blink()
+
+== 295. Fixed buffer overflow in acr.cc during char dumps.
+
+== 296. Fixed minor display problem in backlight_monsters()
+
+== 297. Added Guus' -plain and doc patches
+
+== 298. CHMOD_PUBLIC now uses 664 instead of 666.
+
+xx 299. Actually, there was at least the comment from the newsgroup
+about elven conjurors starting with the Ice/Air book (because
+they're better at Air than Earth and equal in Fire and Ice).
+The actual spells tend to lean a bit more to the Fire/Ice
+side so I really don't see why they shouldn't have the choice
+(or rather why anyone should have this auto-picked). Adding a
+selection screen and an initfile option wouldn't be that hard.
+
+== 300. Change magic dart damage to 2+power/4
+
+== 301.
+>I'm wearing a ring of Shadows. When I try to take it off, it says
+: >that it's stuck to me. When I 'v'iew it, it says that it has a curse
+: >placed upon it. But it doesn't show up as cursed in my inventory
+: >list, and scrolls of remove curse don't work.
+:
+: Oh... and if it helps at all: I killed a mummy at a certain point,
+: with no apparent curse effect. This may be how the ring got cursed
+
+>> the check for randart rings was looking for 200, but the actual
+>> inv_dam value for randart rings is 201. "Pluses2" of 100 is not
+>> well defined in the code... :(
+
+== 302. Abyss go to shits after abyss_teleport()
+>> wasn't setting terrain to DNGN_UNSEEN. Was using old (stupid)
+>> value of 30 (white triangle!)
+
+== 303. In fact, they seem able to sneak right up to alert monsters and still
+deliver the first blow. I think that such a blow should sometimes count
+as a stabbing attack, just as blows delivered to fleeing or confused
+monsters currently are. Currently such attacks have a
+
+random2(200) <= you.skills[SK_STABBING] + you.dex
+
+chance of being stabs.
+
+>>Gave chance if monster isn't paying attention to you (foe != MHITYOU), but
+>>stab bonus is much lower (3) than stabbing a sleeping/fleeing monster.
+
+== 304. Not sure if you saw my big report on roguelike.misc, since it hasn't
+: been fixed and doesn't seem to appear on the 'to do' list. The spell
+: 'Lee's Rapid Deconstruction' doesn't do any damage at present. It
+: occasionally destroys the wall which is targetted, but I detonated 20
+: walls next to a rat and didn't scratch it. This leaves Earth Mages
+: without an area-effect damage spell, which is rather detrimental to
+: their health :(.
+
+>> Fixed. Needed subtle wrinkle in explosion map, as well as some
+>> fixes to the spell itself.
+
+== 305. Currently, if you skip the first naming screen but use the second
+you can overwrite a previous game. Although this is unusual
+behaviour, it's not very desirable, it should at least warn
+about this and potentially give an option to load the old game.
+
+>> fixed. good catch.
+
+== 306. Wielding a bunch of stones and trying to throw one of them,
+results in all of the stones being thrown (and potentially disappearing
+as well).
+
+>> Very, very subtle bug in beam.cc inherited from original codebase.
+>> Fixed.
+
+== 307. monster_move(monster);
+ // reevaluate behavior, since the monster's
+ // surroundings have changed (it moved)
+ handle_behavior(monster);
+
+ Some monsters are getting killed on their move, and then the
+ code in handle_behavior() will fail an ASSERT since monster->type
+ will be -1.
+
+== 308. After one hit with a poison dart, "the goblin looks rather
+more sickly". The non-"...more..." message is (repeatably)
+never shown. - Josh PS: Could we consolidate the poison-effect-namespace to either
+"ill" + "rather more ill" or "sickly" + "rather more sickly"?
+I favor the former.
+
+>> oops. simple messaging problem. Similar prob. in sticky flame.
+
+== 309. Only one bug found - in newgame.cc (line 2222) should be used
+strnicmp() instead of strncmpi(), because the second one isn't
+existing function :)
+
+From BWR:
+>Actually, we should probably avoid both, I don't think they're
+>very stardard (BSDish systems will use "case" over "i").
+>strncmp() is POSIX (among others) so it's okay, but the case
+>insensitive compare almost always causes problems (if we're going
+>to use it, we should probably have it defined somewhere, so it
+>can be adjusted or handled by autoconf (should we go that route)).
+
+>> correct - neither are POSIX. However it is being used in a DOS/win32
+>> section only, and strnicmp() is the proper call as Michael pointed out.
+
+== 310. I've looked at monster pronouns and IMO (supported by dictionary)
+ Erica and Frances should be female and Francis should be male.
+
+ Probably also description of uniques could be slightly changed
+according their gender, for example
+Jessica - "An evil apprentice sorceress."
+
+>> done.
+
+== 311.
+In either event, to get crawl to compile, the str<foo>cmp(x,y) == NULL
+in initfile.cc needs to be changed to "...== 0". The line is near 520.
+
+== 312. Change shops back to old [0][5+i] item location. Leave items
+ carried (ie not on grid) at 0,0. Make sure to modify link_items();
+ keep compatibility with old saved games.
+
+== 313. I think giving Ogre and Troll Fighters Dodging 2 is probably in order.
+
+== 314. Fleeing monsters were not taking advantage of the flexible movement
+ code (Guus)
+
+== 315. Gave monsters a little better chance of sniffing out foes (stealthy
+ players will fare better). After arriving at target x,y, will do a check
+ for continuing on via ESP/noise/whatever.
+
+== 316. Removed ability of monsters to see through walls. :)
+
+== 317. : Just tried casting Tukima's dance while wielding an artifact weapon.
+ : I get the message "You hear a popping sound." and although my artifact
+ : stays in my hand, something that looks like a Shadow appears. Its
+ : name: 36317738 iron wands. If you 'x' it and hit '?' it says "A
+ : dancing weapon floating in the air." just as if the spell had worked
+ : right. The thing even moves and attacks like a summoned monster, and
+ : seems to have combat stats of some sort, since it can kill things.
+ : When the spell expires, it says "The weapon drops from the air." as
+ : normal, but the monster just ceases to exist; it doesn't leave a copy
+ : of the weapon behind or anything. You can even summon several of
+ : these "36317738 iron wands."
+
+>> ugh, two separate logic problems in dancing_weapon(). Fixed.
+
+xx 318. I could be wrong, but I think that the Orcish Mines had no scrolls,
+ potions, wands, rings, or amulets. Very odd. But since Gordon just
+ rewrote dungeon.cc, we should wait for reports about pr13.
+
+>> this is working exactly as designed, if I read the original code correctly.
+
+== 319. But I failed in my casting too often, and the
+ buildup of mutagenic energy had some unfortunate effects. Even after I
+ gained some levels in Divination, and my Success chance was up to Fair,
+ I failed to successfully cast the spell sufficiently often that I mutated.
+ So be wary of casting even second level spells.
+
+ from BWR:
+ We've have people getting mutations here from level one spells.
+ I'm thinking that at the very least we need to lower the baseline
+ for noticing that you're accumulating radiation... and possibly
+ put in some warning messages so people know that they're getting
+ a bit "hot" and that they need to take it easy for a while.
+
+>> messaging much better. toned down nastiness from low level spell failure.
+>> made my easter egg much less abusable.
+
+== 321. I do wonder that Zin wasn't upset when I zapped the Angel initially.
+
+>> Zin is stupid and can't differentiate between a hurtful and helpful
+>> spell. Perhaps a small subset could be classed as obviously harmful,
+>> so that if you e.g. healed or hasted the daeve it wouldn't get pissed.
+>> have to be done in beam.cc, I think... any non-enchantment would be
+>> classified as harmful, I think. (?) Other enchantments would have to
+>> go in a big if/switch.
+
+>> this will also help to NOT piss monsters off if you're trying to help
+>> them.
+
+== 322. 2) Item clean-up in the dungeon seems far more
+ aggressive than before. I've dropped items,
+ popped down a staircase and right back up,
+ only to find everything I dropped gone, gone,
+ gone! This would be on "cleared" levels where
+ the likelihood of item overload is almost nil.
+ Is this a change in gameplay that I missed? In
+ pr13, I am finding myself holding onto *everything*
+ because I *know* that if I drop it and leave the
+ level it will simply disappear ... a PITA situation
+ for low-strength characters wanting to stash some
+ extra stuff for later.
+
+>> oops. Somehow broke item save/reload for any item dropped by player
+>> or monster. Took closer look, cleaned up horrible hacky code. :P
+
+== 324. Make random zombie generation reflect the actual level; it is currently
+ random.
+
+>> no more horribly OOD zombies.
+
+== 325. Monsters with OFFENSIVE spells in mspell[2] will still use them
+ on the player (sigh..)
+
+>> fixed all cases in mon-spell.h
+
+== 326. Accidentally doubled the number of monsters created w/ level.
+
+== 327. : Scrolls of fear appear to be bugged. Read one, got messages saying
+ : that the monsters were frightened (ie, not "The blah resists."), but
+ : they kept moving towards me and attacking me.
+
+== 328. In pr12, my Troll could see an unseen horror. He was not wearing any
+ devices that could lend him see invisible, and orcish wizards were
+ turning invisible earlier in the game.
+
+>> oops. logic problem in mons_del_ench()
+
+== 329. Sigmund and other uniques appearing multiple times
+
+>> logic error in dungeon.cc
+
+== 330. Magical staves are described using the old style (speed)
+
+== 332. Monsters walk into clouds, except for intelligent ones?? Check code:
+mannix writes:
+Now here's an idea to which I can warm: stupid animals
+ thinking "where there's smoke, there's fire", and more
+ intelligent critters in possession of the ability to
+ discern betwen the two.
+
+== 333. Monster Placement: is there a place where, if you can't find a sensible
+ location for a monster in a group, you just put that one anywyere?
+ I think that's part of what makes monsters appear in LOS ... I just
+ got a gnoll and two orcs.
+
+>> stupid error in monplace.cc. Forgot that distance() function returns squared
+>> values.
+
+== 334. Shapeshifters: one turned into a Swamp Worm. This ought not happen,
+ as those are water-only monsters, despite their worm designation.
+
+>> fixed. Won't let monster poly into water-based monster on land.
+
+== 335. dungeon.cc::pick_an_altar(): needs to have a case added, near line 5988:
+ case BRANCH_SLIME_PITS:
+ case BRANCH_ECUMENICAL_TEMPLE: //jmf: ADD THIS LINE
+ altar_type = DNGN_FLOOR;
+ break;
+
+ ... to prevent "bonus" altars in the Temple. This was probably the
+ original author's bug (i.e.: mine).
+
+== 336. So the city-like dungeon code has some sort of an off-by-one error.
+ The "buildings" (squares with doors) once were separated by at least
+ one space of floor; no longer! Furthermore, they once didn't overlap.
+
+ The changes provide much more interesting cities, however the door
+ generation hasn't quite caught up. I've seen things like:
+
+ #########
+ ####+...#
+ #####...#
+ #####...#
+ #########
+
+ ... where it's fairly obvious what went wrong. (I discovered these
+ types of things when playing a gnome.)
+
+ The quick fix would be to restore the 'air' around buildings, but
+ IMHO that would be a loss. The new cities are so much cooler.
+
+ A more complex fix would be in two steps:
+
+ 1) make sure there's a passageway around the border of the level.
+ A single sweep setting all those squares to floor would be fine.
+
+>> tightened up door placement in box_room(); since both city_level()
+>> and plan_4() use it, stuff works better now.
+
+== 337.
+ Sticky Flame puts monsters in the player's thrall
+
+ This last one is really bizarre, because it doesn't happen
+ in the wizard mode compile (although I can take that character
+ over to the normal version and have it happen there).
+
+ It's intestesting to note that these monsters end up with
+ enchantment number 30, which is one less than the sticky
+ flame enchantments... in the wizard mode they seem to get
+ enchantment number 60 (which is one less than the other
+ set of monster sticky flame enchantments... also known
+ as POISON_IV). I'm wondering if anyone else can verify
+ this.
+
+ I suspect that there's some problems in the enchantment system, which
+ could be responsible for both of these. Looking at sticky flame today
+ it seems that my sticky flame ends up as ENCH_POISON_III or _IV
+ (59 or 60) regardless of playing crawl or wizcrawl. The in-thrall
+ thing seems to not be happening right now. It occurs to me that I
+ never actually got "burn" messages in pr12 when I was using napalm
+ (I hit an Ice Dragon about six times with it and it never seemed
+ to take any damage after the initial hit)... looking at the code now,
+ I'm pretty sure I should have been (and that any appearance of working
+ in the recent past might have in fact been delayed poisoning).
+
+>> Fixed. sticky_flame_monster() was badly broken. gawd I bunged that up.
+
+== 338. As a side note, I now backstab bats quick often (I take it that
+this is a side effect of the new backstabing situtation). I'm
+not really sure I should be able to do that (or more to the point,
+does this mean I can expect regular backstabbing of ball lightning
+and spatial vortices which might be a bigger problem).
+
+== 339. In Win32 pr13, if you set class = C in init.txt, your character will be a
+priest ('c') instead of a wanderer ('C'). This happens regardless of if
+your race allows wanderers.
+
+>> bug in initfile.cc
+
+== 340. Basically, nowdays if you turn a bat into an undead slave,
+it suddenly comes to it's senses and becomes an inadvertant
+killing machine (well against monsters that can't easily kill
+it in one hit), as it walks straight up to them and hits them
+3 or 4 times a round. Undead bats should still flutter around
+(that's what keeps them in check considering their amazing speed).
+
+== 341. I've run into some surprisingly powerful ghosts in pr13.
+They are only overly powerful in non-wizard compiles; the
+two times I switched to a wizard-compile they acted normal. One
+was casting MS_ENERGY_BOLT instead of either magic
+dart or throw flame (the two spells that character knew).
+
+>> very bad indexing bug in ghost loading. Who knows what else
+>> this was screwing up.. :P
+
+== 342. Some attempts to animate a skeleton result in a puff of smoke in addition
+(I think) to a new slave.
+
+== 343. We've had several reports here about necromancers zombies and skeletons
+actually getting poisoned from time to time by monsters. As far as
+I can tell this really shouldn't be happening.
+
+>> probably a side-effect of messed up enchantment code.
+
+xx 344. If you start a game with -plain, Save, then continue the game without -plain,
+then the displayed map for remembered locations uses the -plain characters.
+
+If you start a game without -plain, Save, then continue the game with -plain,
+then the displayed map for remembered locations uses the extended characters.
+
+== 345. I haven't heard this one mentioned, but when wielding an ego item you
+typically get this:
+
+d - an elven short sword (weapon in hand)
+Wielding this short sword is a little awkward.
+It softly glows with a divine radiance!
+
+The elven short sword should be id'd as "holy wrath" in the first line...
+it was unid'd when I did this, so it looks like a simple case of moving
+the identify code to a place before the printing.
+
+xx 346. Breathing fire via the mutation prints this unnecessary line:
+" .\n"
+
+xx 347. I got a segfault when entering the abyss; wasn't playing under
+gdb, for some reason, so didn't get a stackdump. Sorry.
+
+== 348. Brent's XP patches
+
+== 349. Josh's sludge elf, etc patches
+
+== 350. In mon_util.c::define_monsters(), there are some mystical values
+ assigned to m2_sec, some of which can be made more apparent by
+ using the appropriate MST_* values.
+
+== 351. Actually, a thought just occured to me that the new stabbing
+ code that gives occasional backstabs against flutterers, is
+ probably very annoying to Paladins. We might need at least an
+ additional check to prevent some of the excusable backstabs from
+ being naughty... perhaps it's just as simple as only making
+ attacks on fleeing, sleeping, and confused monsters call naughty
+ (in which case, it might be reasonable to remove the random
+ chance for TSO applying penance).
+
+ One of the problems with confusion based stabbing is that some
+ monsters are created with it, and most of those probably shouldn't
+ be backstabable (various voritices, ball lightning, vapours). So
+ maybe we might need some way of distinguishing if the stab is
+ appropriate (or if not that, we should probably leave them off the
+ above list for naughtiness).
+
+>> new code to void backstabbing against flutterers (solely because
+>> they are flutterers) and perma-confused critters (solely because
+>> of confusion).
+
+== 352. in check_mons_magres(), the return value for the special "< 6"
+ bonus is backwards. I'm probably to blame for not noticing that
+ the function is logically backwards, I probably got confused by
+ one of the cases in spells4.cc which use this function backwards
+ (a few of which are my own).
+
+== 353. I added a "gotoxy( 18, 9 )" to the top of our direction function,
+ which nicely solved the porblem where the cursor was left at the
+ end of a prompt (ie for conjure flame).
+
+xx 354. We've had a report of skeletons picking up skeletons.
+
+xx 355. I've had several people reporting some oddness when returning
+ to a level via a straight up and down... things like monsters
+ completely disappearing and traps being created.
+
+== 356. pets seem to try and track the target monster even when they're
+ on the wrong level. Basically, if you go down stairs and tell
+ your pets to attack something and the go upstairs to try and
+ bring more pets down, the upstairs pets will be running around
+ wildly... going downstairs and killing the target made the
+ upstairs pets return to the master homing behaviour.
+
+>> simple fix. Set pet_target to MHITNOT on level change.
+
+== 357. The lastest in the bizarre happenings around here was a friendly
+ player ghost... wonderful entertainment as it would should out
+ things like "Run, I'll cover you" and such.
+
+>> always a possible problem; some fields were left uninitialized from
+>> monster_cleanup(), and never initialized in the ghost code!!
+
+== 358. Removed digging ability from Disrupt()
+
+== 359. Added 'random' beam that affects each cell as one of { fire,
+ cold, magic, electricity, poison, negative energy, acid }. Only
+ used in my easter egg so far.
+
+== 360. Maybe we should instead be considering shifting the greater
+vaults down to level 10+, and the lesser vaults to 7+ (there
+are many more mini-vaults (and better quality these days, and
+this does have the advantage removing dlev 4 guardian naga
+encounters... we've had several).
+
+== 361. Okay, compiled it up and the only problem was that link_items() is
+declared both static and extern (removed the static prototype).
+
+== 362. One other little problem: The magic resistance check for monsters
+is now correct, but there are some inappropriate calls to it over
+in spells4.cc (in particular Twist is currently unusable).
+
+>> reversed the logic.. this was just too non-intuitive and backwards.
+
+== 363. Move the Crawl.mcp file out of the source folder.
+
+== 364. Add "#define ESCAPE 0x1B" to defines.h
+
+== 365. In eat_food() in food.cc add some code before the "You don't have
+ any such object." case:
+ if (keyin == ESCAPE)
+ return;
+
+== 366. lava_spaces and water_spaces in builder_monsters() in dungeon.cc
+aren't inited. (This looks like a nasty bug).
+6) In quadrant_blink() in spells4.cc there's a line that reads "while
+(!done && random2(100) < pow--);". Please move the semi-colon to its
+own line.
+
+== 367. Snakes now flutter like bats did. They also display the "not interested
+in you" message when e'x'amined.
+
+ Josh:
+ I've had a batty frog and batty snake. Both had the old
+ 'not interested in you' inspection message. Most frogs
+ and snakes were not batty.
+
+>> oops. Monster->flags was not being set to 0 at monster creation.
+
+== 368. in monstuff.cc::handle_spell(), the CONFUSION && !vapour
+ should probably be changed to use M_CONFUSION to be generic.
+
+== 369. the contamination messages should probably be in the warning channel
+
+== 370. wizard's hats say they give AC, but they don't
+
+xx 371.Fireballs are rather larger than I remember.
+Mana explosions from magic accumulation are the same size (very big).
+I'm pretty sure the former is unintentional; is the latter?
+
+== 372. There's an illiterate "it's" in the description of Silence. The word
+ought to be "its". (This is a peeve of mine. "We hate's them, ye's
+presciou's!")
+
+beam.cc::2753
+- hearMsg = "You hear a gentle \'poof\'";
++ hearMsg = "You hear a gentle \'poof\'.";
+
+== 373. I haven't seen any miscast effects except for the irradiation one.
+I think this is due to a loop in spell.cc which tries to figure out
+which school of miscast-effects applies to a given spell. The loop is
+a bit past line 300 and seems to ignore the new 'bitmap' representation
+of spell-schools. I know that miscast_effects is getting bogus sptyps.
+
+Full, real fix:
+unsigned int sptype = 0;
+do {
+ sptype = 1 << (random2(SPTYP_LAST_EXPONENT+1));
+} while (!spell_typematch(spc2, sptype));
+
+== 374.
+newgame.cc::3410 + if (you.species == SP_HILL_DWARF ||
++ you.species == SP_MOUNTAIN_DWARF)
++ you.skills[SK_MACES_FLAILS] = 1;
++ else
+ you.skills[SK_SHORT_BLADES] = 1;
+
+== 375. Later in newgame.cc: Now that Sludge Elves suck at enchantments
+and conjurations, we could remove the options for them to be Conjurers,
+Reavers, Enchanters and Crusaders.
+
+** 376. Something is still deleting the ABJ_xx enchantment for summoned
+monsters. Don't know what though.
+
+== 377. Fixed magic resistance of normal & small snakes.
+
+== 378. case CLOUD_POISON:
+ case CLOUD_POISON_MON:
+ if (mons_res_poison(monster->type) > 0)
+ continue;
+ if (monster->hit_points >= random2avg(37, 4))
+ continue;
+ break;
+
+THIS IS WRONG VVV
+
+ // dumb monsters can be fooled by smoke
+ if (mons_intel(monster->type) > I_ANIMAL || coinflip())
+ continue;
+
+ // this isn't harmful, but dumb critters might think so.
+ case CLOUD_GREY_SMOKE:
+ case CLOUD_GREY_SMOKE_MON:
+ if (mons_res_fire(monster->type) > 0
+ || (monster->inv[MSLOT_ARMOUR] != NON_ITEM
+ && mitm.special[monster->inv[MSLOT_ARMOUR]] % 30
+ == SPARM_FIRE_RESISTANCE))
+ {
+ continue;
+ }
+
+== 379. Brent's 'friend-brand' patch
+
+== 380. Undead should *not* have morale failures, nor should the dumber ones avoid
+ flaming clouds of death (brown & white 'z's & 'Z's). Skeletal warriors
+ might avoid FCoD since they do make one other intelligent decision (wrt/
+ casting their spell), but they ought never run away.
+
+>> who says running away is due to morale failure?
+>> REALLY dumb (I_PLANT) creatures will now walk through harmful clouds.
+>> this includes most of the shambling (mindless) undead
+
+== 381. quadrant_blink() from Brent
+Brent Ross <bwross@c...>
+
+ In this method, what we're going to try for is the best match, and
+ allow the number of choices to be based on power. The basic hope
+ is that while even high power characters have to put up with some
+ randomness, the diameter of the cone decreases making it more
+ reliable.
+
+ let line = line segment extending out from player in the chosen dir
+ let best = NO_SQUARE
+
+ for i = 1 to f(power)
+ targ = random nearby square
+ if (dist( targ, line ) < dist( best, line)) then
+ best = targ
+ else if (dist( targ, line ) == dist( best, line )) then
+ // Not really sure we want this part, maybe we should throw in
+ // a random to keep the distance sane.
+ if (dist( targ, player ) > dist( best, player )) then
+ best = targ
+ endif
+ endif
+ endfor
+
+ if (best == NO_SQUARE)
+ mpr( "teleport control screwed up" )
+ random_blink
+ else
+ player = best
+ endif
+
+== 382. De-twink wanderers
+
+>> undefined USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES until we have
+>> "hedge" magic.
+
+== 383. Check that all spell books are listed for generation.. at least war chants
+ is missing.
+
+== 384. Add "Blowgun" (launcher) and "needle" (ammo)
+: basically, go through all code looking for BOW, add blowgun
+: go through all code looking for ARROW, add needle
+: assassins now start w/ blowgun & needles
+ except for deep elves; they get hand xbows since they tend to
+ suck at HTH and will rely more on ranged damage.
+: some chance for needles of Foo? (dungeon.cc) just poisoned
+: some chance for blowguns of Foo? (dungeon.cc) of venom
+: must remember to add in to item generation tables. :)
+: change throw_it() so that blowguns and thrown darts are
+ very quiet; all others make a noise - check fight.cc for
+ a good noise value. Note that alert() is simply not called.
+: give a couple monsters blowguns & needles to start
+: needles get damaged far less often (but make them rarer;
+ maybe only carried by assassinish-monsters.
+: Needle trap at higher levels; could be a source of needles?
+
+TODO: dungeon.cc::give_item() . which monsters have bguns/needles?
+other files not searched for WPN_BOW and MI_ARROW (our template for
+this stuff):
+
+== 385. fixed logic problem in cast_sandblast()
+
+== 386. If I cast a fire spell at something in the water, it leaves a trail of
+steam behind it. A fireball should have the same effect (but of course
+over a larger area)
+
+== 387. Josh' new diff (mostly Xom acts)
+
+== 388. A Skeletal Warrior just drank a potion of healing. This strikes me as
+wrong, from both pseudo-physiological and gameplay perspectives.
+
+== 389. I saw hellwing which polymorphed jackal to lava fish. Probably
+this is not bug but we should consider this.
+
+== 390. We've had
+someone complain here about his Ogre not being able to wear one.
+I thought we had decided that caps and wizard hats were wearable
+by all characters, regardless of headsize or horns.
+Anyone remember?
+
+>> there's a comment in item_use about caps & wiz hats being
+>> wearable by anyone "unless their head is too big (ogres, etc)"
+
+== 391. I've found a number of eggplants in pr15, err, 4.1.15
+ (these were supposed to be MI_NEEDLE.. what happened!?)
+
+== 392.
+I made it to the Abyss... Now I'm stuck in this loop in
+dungeon::define_zombie(): while(true)
+ {
+ // this limit can be updated if mons->number goes >8 bits..
+ test = random2(182); // not guaranteed to be valid, so..
+ cls = mons_charclass(test);
+ if (cls == MONS_PROGRAM_BUG || mons_rarity(cls) == 0)
+ continue;
+
+>> VERY tricky to fix correctly.. no wonder it was never done.
+
+(which monsters to allow as zombies in the abyss?)
+
+BWR:
+Or perhaps just picks with the base level set as high as
+possible... which will allow for Zombie Titans (which are high
+enough level that they're never "naturally" generated, I believ
+
+Well simulacrums are out right away. They don't appear naturally
+anywhere, due to the fact they sublimate away. On a similar note,
+ball lightning shouldn't be generated anywhere, but I believe I
+accidentally put them in the Realm of Zot... short lived creatures
+should have to be summoned in. As for zombie/skeletons or even spectres (which I don't believe
+are generated anywhere.... Spectral Warriors are generated,
+but they're like Skeletal Dragons in that they're completely
+different... don't think I've ever seen a Spectral "Thing"
+in any dungeon, at least not one I didn't create myself) are
+probably okay in the abyss... there are things like abominations,
+necrophages, skeletal dragons/warriors there already. Spectres
+might also be interesting in the Realm of Zot.
+
+== 393. Oh, dear. I think I might have left in a debugging bit that changes _all_
+generated traps to needle traps - they're supposed to be fairly rare, and only
+seen below level 3!
+
+== 394. It looks like the logic in poison_monster() needs adjusting, too, if you're
+getting credit for monsters done in by the poison from needle traps. Ah well.
+
+== 395. // * fixed: magical staves now described with new speed
+
+Actually, there's still one problem here. The '%' needs to be doubled,
+since the description string will eventually be fired through cprintf()...
+it currently gets dropped in both cases (weapon and stave).
+
+xx 396. An eloquent method of handling this would be to 'queue' shouting messages
+between character actions and conflating multiple shouts into a single
+message ("Several <foo>s shout" or whatever), possibly conflating by
+monster type ("Several <foo>s shout out! A <bar> yelps!") so that the
+player can be alerted to unique shouts and/or get the *flavor* of all
+the various bellowing beasties.
+
+== 397. Make zombie monsters appear a few levels (3-4?) earlier than their non-zombie
+counterparts
+
+== 398.
+> I was blowing needles at an orc wizard, and he very politely gathered
+> all the needles up for me. I appreciated him doing that rather than
+> casting those nasty spells at me. :)
+
+Now, I thought that logic had been fixed (at least, in the case
+of darts) such that monsters with potent HTH or spell attacks would
+not lower themselves to gather scattered items for characters :P
+
+>> fixed better. Monsters won't pick up if there's not much there, they're
+>> not wandering, and they already have ammo. Fleeing monsters never stop
+>> to pick up ammo.
+
+== 399. Needle traps will poison the player even if he or she resists poison.
+
+xx 400. Some first level spells won't allow the player to target him- or herself.
+This means that a player can't use those spells to see if he or she
+resists their damage type. Knowing if one resists a damage type is useful
+when trying on mysterious rings.
+
+>> need some restructuring to do this; burn_freeze() isn't set up to
+>> actually affect the player. :P
+
+== 401. Personally,
+I think Ijyb should probably get an XP modifier of 5 (and even
+then is still worth 40 xp)
+
+== 403.
+I think some kind of notice should be given, when body wich is carried
+becomes rottens. And ghouls should definetly be able to see when
+chunks of meat become rotten. As should everyone else, I think.
+
+>>mv: added appropriate messages
+
+
+== 404. My Draconian monk (not so difficult as you might think) got mangled
+by a goblin with seemingly limitless ammount of scrolls of summoning.
+He summoned like 5-7 abdominations before my monk got killed. And
+this was at level 2. Extremely bad luck or bug?
+
+== 405. Crash in pr14
+This occurred in the Realm of Zot, while attacking an Orb of Fire, which had
+just exploded.
+
+>> very nasty. Fleeing monsters with "emergency" spells requiring tracers
+>> would crash the game.
+
+xx 406.
+When using Stone Skin with Dragonian it says "Your skin feels harder"
+and "Your skin feels tender" instead of "Your scales feel harder" and
+"You scales feel softer".
+
+>> These guys still have skin underneath all those scales..
+
+== 407. Fix quadrant blink again:
+Which gives us the one-step formula:
+
+ dist = abs( (y - you.y_pos) * (tx - you.x_pos)
+ - (x - you.x_pos) * (ty - you.y_pos) ) / s
+
+ where (x,y) is the player's targeted square/vector,
+ (tx,ty) is the spell's targeted square,
+ (you.x_pos, you.y_pos) is the player's position,
+
+ and s is the distance between (x,y) and (you.x_pos, you.y_pos).
+
+
+ The important thing to notice here is that s is constant for all
+ of the trials (one or root-2), and since we don't care about
+ an accurate measurement (only a relative one between trials),
+ we can reduce it to one
+
+== 408. Although, 'f' does fire needles correctly, the ')' command doesn't
+ actually show that this is the case (see command.cc::list_weapons()).
+
+== 409. Poisoned needle gives messages in bad order. Patch from Guus.
+
+== 410. > I just noticed that my character has a Dex of 63. I've chosen every
+ > ability increase to be in dex, and he occasionally wields an artefact
+ > dagger that is +3 to dex. I don't think it relates to save files,
+ > as I haven't saved the game in three days.
+
+ The stat growth is caused by autobutchering when the butchering weapon
+ has a stat bonus. I get the stat bonus when I wield the weapon, but do
+ not relinquish the bonus when I unwield it.
+
+>> ewww. this was ugly.
+
+xx 411. I was playing a Spriggan Transmuter when i entered the mines. I was
+ overwhelmed by +10 Orcs so i went back up. One orc followed me. I
+ then started running away until i was several spaces away, turned and
+ cast disrupt killing the orc. As the orc died the stairs to the
+ mines disappeared.
+
+>> can't reproduce.
+
+== 412. I've been trying out Chaos Knights and the critters that Xom summons
+ for you have this annoying habit of polymorphing the bad guys to
+ *way* OOD monsters. For example, my last knight was level 3 and is
+ listed at -19/28 HPs in the morgue file. This was one spell and he
+ was at full health when it happened. Although this was before the
+ latest patch so perhaps it's related to the other OOD problems.
+
+== 413. >I've seen that disorder message a few times too. The first time the
+ >game hung when I tried to go back up to that level. After that I
+ >avoided loading those levels again. :-) There really needs to be
+ >better sanity checking here. It's not right that a bad level can be
+ >generated and only found when the player stumbles across a bad pile
+ >of items.
+
+ From what I can remember, this kind of thing is almost
+ certainly the result of bugs in either the monster inventory
+ code or the code responsible for placing monster corpses on
+ death. The behaviour where the player picks up an item and
+ it doesn't get listed in the inventory tended to be caused
+ by the existence of a link to an item with a quantity of 0
+ (this also causes "a scrolls labelled SDFKLSFD" - when the
+ quantity is zero it puts an 's' on 'scroll' but leaves the 'a'
+ in front).
+
+== 414. Characters cannot exercise fighting, weapon, or unarmed combat skills
+ against plants/fungi, so perhaps they shouldn't exercise stabbing.
+ And plants/fungi should probably always appear disinterested.
+
+ This assassin has also been paralyzing monsters, but can't seem to stab
+ one afterwards.
+
+== 415. My assassin carefully approached his victim:
+
+ Move the cursor around to observe a square.
+ Press '?' for a monster description.
+ A plant.
+ It doesn't appear to be interested in you.
+ Floor.
+
+>> obviously need some kind of data-driven thingie here for stabbing / paying
+>> attention.
+
+== 416. I fire a "Disrupt" at a worm just off screen (as I'm running away):
+
+ You kill the worm!
+ Nothing appears to happen.
+
+== 417. He was standing on a down stairwell. He had full view of each of the
+ adjacent squares, but not all of distance 2 squares. He was at a little
+ over half his hp, and I hit '5' to rest and recover.
+
+ Suddenly there was a bellow, and a hydra was beside him. The hydra
+ proceeded to lay the smack down, slaying the poor assassin. I guess
+ it's poetic justice, since the assassin slew quite a few monsters
+ by suddenly appearing beside them, fiery blade in hand.
+
+>> almost definitely a result of the new 'near stairs' code. Needs some
+>> refinement, I suppose. (evil grin)
+
+
+== 418. Elyvilon got upset when a needle trap killed a monster just after
+ I had prayed. :)
+
+
+== 419. Over the course of the game I obtained around a dozen blowguns and only
+ one crossbow, so they may be too numerous.
+
+ (most blowguns came from the ground)
+
+== 420. Two minor quibbles on spell descriptions.
+
+ a) Unlike the other brand weapon spell dscriptionss, the Poison Weapon
+ spell description does not mention that the spell won't work on
+ branded weapons.
+
+ b) The description of the Disrupt spell says that the spell "disrupts the
+ matter of another creature's body", but the spell also affects
+ creatures with non-material bodies.
+
+== 421. Fixed formatting problem with randart descriptions
+
+== 422. Changed slaying to be a little less powerful.
+
+== 423. Butchering with bare hands and a short blade in slot a doesn't
+switch back to bare hands. (Naturally, I'm using the experimental
+auto switch when butchering -setting.)
+
+== 424. mons_speed() should be extern, remove static declaration from mon-util.
+
+** 425. I have a ring of Baldness that somehow got cursed and now I am
+stuck with it. Scrolls of remove curse have no effect.
+Its not bad ring, but the increased metabolism isn't nice.
+
+== 426. More inventory problems:
+while playing 4.0.0b16 I found two bugs:
+1) when picking up items from the floor, after picking them up - it says "no
+more items" (but it picks up the item). This bug is strange it happens only
+at the very beginning of the game. For some reason after descending to Level
+2 it has stopped from happening.
+
+2) picking up items from the same type: when you have say 2-chokos and there
+is on the floor another one then when you stand on top of it - it says
+3-chokos(it takes into account the ones you have in your inventory). Or the
+other solution is that when you pickit up from the floor it replaces your
+previous chokos with the last amount of that type picked up. (Because I had
+2 chokos and after picking 3 chokos = I got 3, so it could be either
+problem...dunno)
+
+== 427. Fix descrip. for rings of slaying.
+
+== 428. I met monsters with infinite potions. I hope it's also fixed.
+
+== 429.
+ in monstuff.cc::handle_nearby_ability() should be also handled
+ monsters behaviour - BEH_WANDER and BEH_SEEK, beacuse monsters speak
+ even if they don't know about player. Also it looks that Giant
+ eyeball can stare at player even if he isn't noticed (or if he is
+ invisible, but it's probably feature)
+
+== 430. Michal's patch (new unrands?)
+ >> mv: now included - not only unrands but mainly clean-ups and minor upgrades
+
+== 431. In view.cc:viewwindow2() was buffy changed from unsigned char to
+ unsigned short (I'm talking about
+ FixedVector <unsigned char, BUFFER_SIZE> buffy).
+ But at least with my compiler it doesn't work and viewwindow2()
+ doesn't show anything (only black screen). When I changed buffy back
+ to unsigned char it started to work again.
+
+== 432. Giant eyeballs no longer stare at friends.
+
+== 433. You throw a dart.
+ You throw a dart.
+ You throw a poisoned orcish dart.
+ You shoot a poisoned needle.
+ You shoot a poisoned needle.
+ You hear a grinding noise.
+
+ ... with a dex 18 / darts 7 / throwing 4 player!
+ This is repeatable, and at times, I managed to
+ clear a rock wall with just two needles!!! Couple
+ this with the durability of needles, and players
+ have a poor-man's dig spell at their disposal.
+
+== 434.
+I think I will change this condition so that a
+ monster with no ammo won't bother picking any up,
+ unless their melee attack really sucks.
+
+== 435.
+ You destroy the shapeshifter zombie!
+
+ I sneak up on a defenseless cockroach and crush it with
+ my quarterstaff, only to be messaged that my character's
+ stabbing skill has increased. Is is just me, or does the
+ idea of stabbing with a quarterstaff seem a bit off? I
+ weakly suggest changing the name of the skill to something
+ less tied to impaling weapon types. "Ambush" skill or
+ "Bushwhack" skill or something similar.
+
+>> no more shapeshifter zombies. Improved messaging for stabbing.
+
+** 436.
+
+
+ Hi,
+
+ Could you add a description of the / and * keys to the help screen? Keypad is
+ not always useable, especially not with ctrl and shift keys, this might help
+ some people. Patch attached.
+
+
+== 437.
+ Note the extra space before the period:
+
+ Methea's ghost stares at you . You feel cold.
+
+
+ This is a common construction used (I presume)
+ in mon_speak() [or whatever]. There should be
+ a comma placed after the verb ['begs' in this
+ case] for grammar's sake:
+
+ Methea's ghost begs "Please don't hurt me!"
+
+== 439.
+ Package: crawl
+ Version: 1:4.0.0beta16-1
+ Severity: minor
+
+ Another small upstream gameplay issue. In the context of a rat I had
+ summoned attacking a kobold which was wielding a poisoned dagger:
+
+ The rat hits the kobold.
+ The rat hits the kobold!
+ The kobold hits the rat with a runed dagger!
+ The rat looks ill.
+ You kill the rat!
+ That felt strangely unrewarding.
+ The rat's corpse disappears in a puff of smoke!
+
+ The rat was killed by the kobold (via poison), not by me, but the messages
+ seem to indicate I killed it.
+
+ This may be very tricky to reproduce, unfortunately :(
+
+== 440.
+> * removed: no more spellcasting wanderers, until such time as we
+> have some reasonable "hedge magic", which I will not add before
+> release.
+
+ A healthy percentage of my wanderers still start out with magic
+ skills.
+
+ >> but not spells.
+
+
+== 442. Repel undead doesn't seem to actually repel the undead.
+
+ >> mv: fixed
+
+== 443. The enslaved stay enslaved even when you attack them.
+
+== 444. Change 'points' to 'point' if points needed == 1 in 'C' message
+
+== 445.
+This is me and a summoned zombie vs. a goblin:
+
+ You miss the goblin.
+ The goblin hits you with a club!
+ The giant cockroach zombie misses the goblin.
+ The goblin fails to defend itself.
+ You kill the goblin!
+
+>> very possible. Goblin was concentrating on the cockroach (lucky
+you!)
+
+== 446. Add ???'s patch for FreeBSD support
+
+== 447. Zombie generation hangs in the various hells, the crypt, and probably
+ slime pits, ecu. temple, and others.
+
+ >> think I got all cases of levels with no zombifiable native life.
+
+== 448. Monster polymorph can hang in HoB:
+ >> only valid monster for poly in HoB is Dancing weapon, which is EXPLICITLY
+ NOT a valid poly target. So it hangs. Duh!
+
+== 449. Shapeshifters no longer gain the extra abilities (spells, specials)
+ of their forms (they used to - I considered this a bug).
+
+== 450. Incredibly, monster enchantments were not being reset when a new level
+ was generated. This is an absolute showstopper and has probably corrupted all
+ games in progess. Most notable with permanent enchantments like shapeshifter -
+ this is what caused the "shapeshifter" dancing weapons that Josh (indirectly)
+ reported.
+
+** 451. As you read the scroll, it crumbles to dust.
+Your club glows black for a moment.
+Drop which item?
+You drop a +0 dwarven hand axe.
+You are empty-handed.
+
+-- 452.
+I hit an assert failure after reading a scroll of curse armour. From the
+traceback, we see an immediate problem at the call to itemname::in_name()
+at line 3358 of item_use.cc. The object to be named is -1.
+#6 0x80b1797 in in_name (inn=-1, des=4 '\004',
+ str_pass=0x825b9a0 "a +1,+0 elven long sword") at itemname.cc:69
+#7 0x80b125b in read_scroll () at item_use.cc:3358
+#8 0x8050e2d in input () at acr.cc:880
+
+Doing a quick compare between the pr16 & pr17 code, I think this line:
+ ok_to_curse[i] == (you.equip[i] != -1
+ && you.inv_plus[you.equip[i]] < 130);
+
+should be:
+ ok_to_curse[i] = (you.equip[i] != -1
+ && you.inv_plus[you.equip[i]] <= 130);
+
+** 453.
+DOS, 486sx
+4.1.16 Floating above a (dart) trap discovers it but gives no message.
+
+ I'd like to see a message when Coronas wear out.
+
+ >> mv: added
+
+4.1.17 Loading the game; Okawaru says: Welcome, disciple.
+
+A monster called "a human" was displayed as a darker (non-visible)
+ floor tile.
+
+ >> mv: fixed
+
+
+** 454 .Goblins and orcs still get infinite potions of healing??
+
+** 455. I'm playing Crawl pr17 (I double-checked this time) under Solaris, and I just
+got the "Too many items" bug with a minotaur monk. It had to do with a
+cursed runed leather armor that I was carrying. I had a bunch of stuff in
+my inventory, and read a scroll of detect curse (this is how I discovered
+that the armor was cursed). So I dropped the armor and moved to another
+spot. There I dropped some weapons that I wasn't interested in. I stepped
+back to this spot later, there's a cursed runed leather armor. There's also
+a cursed runed leather armor on the spot where I actually dropped it. I
+picked one up and dropped in on the other, looked, and "Too many items." The
+game hung when I tried to save. :^/
+
+** 456. I was playing the same minotaur monk (I was able to salvage the game) when I
+saw what I thought was a statue (an '8'). When I looked at it, I saw:
+
+You see 26 !questionable item (c100,t0,p0,p(2)0,d0:q26)s here.
+
+** 457.
+I was wandering along when I met a hobgoblin. I kill him and decide to pick
+up his weapon to see if it's good. I then get "do you want to pick up
+hobgoblin corpse (y/n/a/q)"(or something like that). I type no. "do you
+want to pick up hobgoblin corpse" No. "do you want... " no ad nauseum. I
+give up and press q the game crashes. I restart and load the autosave.
+Same thing happens. I this time press a and get
+x - a hobgoblin corpse
+x - a hobgoblin corpse
+x - a hobgoblin corpse etc
+It won't stop doing that
+
+Yours
+
+William Hull
+
+Another one:
+at another time there was this situation:
+
+###
+@g! the potion is yellow
+###
+
+###
+@!! after killing the goblin,a second yellow potion appeared
+###
+
+but walking over both just gave me the msg "m - a yellow potion" twice.
+afterwards i had just one yellow potion in my pack.
+
+(more)
+
+The item bug (duplicate items and potential lockup) seems to happen whenever
+a monster picks something up off the floor. The most recent incident is
+typical (at least in my games).
+
+
+ #'####
+ #!
+ # ###
+ #K#
+ #
+ <@ ###
+
+Near the door is an emulsified red potion. After I kill the kobold (who had
+previously been wandering around, i.e. he wasn't asleep), I find that he was
+carrying an emulsifed red potion. Coincidence? I think not. In this
+instance, I left the potion where it was sitting and checked out the potion
+near the door. Underneath the potion is a kobold corpse. I go up the stairs
+to the previous level, then return; the corpse and potion near the door are
+gone. From previous experience, I know that picking up both potions/corpses
+would have left me with just one potion/corpse in my inventory (assuming I
+didn't have any before), and picking up one potion/corpse and dropping it
+on top of the other potion/corpse will create the "Too many items" bug, and
+cause the game to hang when saving the level.
+
+(more)
+
+Sorry to follow up on my own post, but I was browsing through the sources and
+I noticed that in pickup() in items.cc, relink_cells() is called after the
+player successfully picks up an item off of the floor. No such function is
+called in handle_pickup() in monstuff.cc. Perhaps handle_pickup() should
+call relink_cells() (which we know works) instead of trying to update the
+igrd array itself.
+
+
+-- 458. My char with some stabbing skill stabbed a mimic wich was nerly dead
+after many rounds of battle. I know there is bonus when attacking a
+fleeing moster, but mimics cannot flee.
+
+>> fixed. Immobile monsters cannot flee.
+
+** 459. An artifact weapon of holy wrath does allow a demonspawn to wield it, wich
+is bug or maybe not.
+
+** 460. ..to Sif Muna, so I went back to the Temple and converted. Little did I know
+that Vehumet would hold a grudge. I survived a blue demon, an abomination,
+and several magical blasts, but Vehumet eventually blasted me when I was low
+on HP and did me in. *sigh*
+
+Anyway, here's the buglet: the high score list claims that my character was
+killed by bad targeting.
+
+-- 461. There is another one in monstuff.cc in handle_scroll when checking for
+negative numbers of scrolls...
+And yes it would be cool if they removed all the warnings (or at least
+most of them). Removing unused variables would be a first step.
+
+>>
+
+** 462. In the dos binary of Crawl 17, when running the game with "crawl -plain"
+option, the game screen is totally black. I still get the player statistics
+and messages, but the map display that you normally see is blacked out.
+
+This is bad because the normal crawl display (without -plain) is a bit buggy
+for me. (no cursor under the character). I also kinda prefer the #
+character for walls (got used to ADOM) :)
+
+xx 463. Beam tracers: tweak to take into account what might happen if they _miss_.
+
+** 464. Level draining can cause -1/-1 -magic when used against ogre (or maybe
+troll) character.
+
+== 465. Automatic weapon change when dissectiong gives a litle funny messages when
+berserk:
+Switching to your swap slot weapon.
+You are too berserk!
+Maybe you should try using a sharper implement.
+Switching back to a - the uncursed great mace "Res".
+
+ >> mv: fixed
+
+xx 466. My deep elf summoner cast summon demon from a staff of summoning (A
+great item for a starting summoner.), and received an orange demon,
+which proceded to attack me. None of the other demons had attacked. Is
+this a bug, or is there some way to make demons hostile?
+
+>> 1 in 4 chance of hostile demon.
+
+-- 467. Ettins have no description. I just met an elf and I think those should only
+appear as corpses. It had description "A monster whose description has yet
+to be written.".
+
+
+== 468. Invalid polymorph targets (this has been reported several times).
+ There are several generic monster types which are _not_ valid poly.
+ targets: 'human' and 'elf' being two of the more common results when
+ polymorphing stuff. And yet, 'human' should probably be given some
+ generic statistics and then allowed as a target (it makes sense, after
+ all).
+
+>> mv: fixed now