diff options
Diffstat (limited to 'crawl-ref/docs/changes.400')
-rw-r--r-- | crawl-ref/docs/changes.400 | 3278 |
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 |