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 "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 [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 + 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::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 == 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::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 " 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 == 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 is limiting use of your ." 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" 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.) Date: Fri, 16 Mar 2001 09:00:41 PST From: tgord 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. ^^^^^^^^^^^ == 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 " 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 strcmp(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 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 s shout" or whatever), possibly conflating by monster type ("Several s shout out! A 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 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