[Initial commit, copied over from my old repo ais523 **20090203214427] [Change to new directory structure ais523 **20090203215038] [Add TMEs, they were left out of the repo by mistake ais523 **20090203215123] [Changes to allow for changes in mainline TAEB ais523 **20090204002032] [Try to avoid massive performance hit and AI malfunction when we see an I ais523 **20090204002246] [Try once not twice to do something impossible or abandoned ais523 **20090204002304 Trying only once means we're hit once not twice by a surprise monster that we're oscillating next to. This saves on precious hitpoints. Of course, a monster tracker would handle this better. ] [Don't try to open locked doors ais523 **20090204002454] [Tweak to the impossibility tracker parameters ais523 **20090204002631] [Change door_resists message to match the mainline ais523 **20090204003622] [Fallback plans ais523 **20090204194927 I'm recording this due to all the time I spent implementing it; it's better to have things in the repo so I can check them, than deleted. However, I'll probably revert much of this (whilst leaving things like PrayForHealth); this isn't the right way to do fallbacks, I think (instead, resource conversion for healing and partial depends for exploration seem more appropriate). ] [Fix bug that made threat-amelioration plans disappear ais523 **20090204195331] [Extricating ourself from traps ais523 **20090204195422] [Part of the proper way to do fallback: explore under objects ais523 **20090204195440] [Don't kick down doors in the Mines ais523 **20090204195455] [Door stuff, particularly DiagonalDoor ais523 **20090205002346] [Fix some tactical risk bugs ais523 **20090205010049 The bugs were making DiagonalDoor look much less risky than it was, and it was running too often. There still seems to be at least one bug in tactical risk, though, because DiagonalDoor is /still/ running too often. ] [Some comment-inable debug code for debugging tactical risk ais523 **20090205010226] [Handle peacefuls. PardonMe seems not to work yet, though. ais523 **20090207021746] [Yay, interlevel pathing. Not complete, but partially working. ais523 **20090212030652] [Two more files ais523 **20090212031226] ["personality" has changed to "ai" in the framework ais523 **20090212031415] [Loop invariant code motion (go profiling!) ais523 **20090212032042] [Don't check the current tile for walkability in ImproveConnectivity ais523 **20090212032951] [Better (but not perfect) handling of invisible monsters ais523 **20090212035556] [NetHack::Item nowadays, not TAEB::World::Item ais523 **20090213163003] [temporary fix for unknown monsters ais523 **20090213175715] [explicit is=>'rw' ais523 **20090218180453] [comma fixes ais523 **20090218181157] [more incompatible API changes from upstream... ais523 **20090218181621] [yet more incompatible API changes ais523 **20090218182223] [even more incompatible API changes ais523 **20090218183200] [item->food, again... ais523 **20090218184317] [Don't try to force anything into TAEB-style paths ais523 **20090221200050] [Rename PathBased -> Strategic ais523 **20090221211958] [All plans are now tactical, strategic, or strategic metaplans ais523 **20090221213028] [Correct the costing on ScareMonster ais523 **20090221214336] [We don't know the nutrition of tins ais523 **20090221214845] [Handle passive-attack creatures ais523 **20090221235011] [Don't crash if there's a boulder at the edge of the map ais523 **20090221235033] [Handle gas spores too ais523 **20090221235407] [A log of what's making Planar lose ais523 **20090222160806] [Don't be quite so anxious to discard search possibilities during fallback ais523 **20090222191240] [more death reasons ais523 **20090225150603] [Finally, invisible monster handling that starts to work ais523 **20090225150613] [More death reasons ais523 **20090305104757] [Eating API changes ais523 **20090305104808] [Monster farlooking is now in the framework ais523 **20090407201312] [Switch to (indirectly) use the new NetHack::Monster::Spoiler ais523 **20090407201337] [Fix the isa from T::S::M to N::M::S ais523 **20090409193935] [Suppress a warning due to interface change ais523 **20090409193954] [Fix getting corpse spoilers in Investigate ais523 **20090410183703] [Handle peaceful/tame/passive correctly ais523 **20090411225511] [Update FloorFood for N::M::S interface changes ais523 **20090411225646] [Monsters can't walk past other monsters ais523 **20090411234324] [So that's what was wrong with PardonMe ais523 **20090411234340] [is_walkable's meaning changed ais523 **20090411234404] [Monsters don't block their own movement ais523 **20090411234651] [Pathing through traps ais523 **20090412022131] [Fix things in PardonMe incorrectly copied from ScareMonster ais523 **20090412022150] [Don't assume we have hands ais523 **20090412022222] [Remove stray return statement in ScareMonster ais523 **20090412023034] [Overhaul of item-handling code: value, drawbacks, buying ais523 **20090415203803] [Slightly more knowledge about how doors work ais523 **20090603090314 Ignore-this: 9dcc42b906a33f15ca575801f779d48b ] [Kill fallback code, do fallbacks properly instead ais523 **20090603203906 Ignore-this: e9bc36634d6bf4158405a437e1025732 ] [Steal Behavioral's search algorithm ais523 **20090603210523 Ignore-this: bb07755090d0a3bb98743a88dc8e39d0 ] [More verbose commented-out debug code ais523 **20090604061613 Ignore-this: 2200c2d4d1f2a373725d674d17050ab1 ] [Validity fixes; these hopefully finally kill the floorfood bug ais523 **20090604061701 Ignore-this: 2ec01e4891615185c45c96da69b0907 ] [We've fixed fallback, now fix retry ais523 **20090604061819 Ignore-this: b7146c727565833fe485bb453e316d02 ] [Don't farlook known always-hostiles ais523 **20090604061900 Ignore-this: b716faecb4db91b1625bd3d40ba6553f ] [Floorfood sanity checks ais523 **20090604061916 Ignore-this: f80e9b33295c867ef432e3964534630a ] [Don't crash on secret doors in Minetown ais523 **20090604061930 Ignore-this: f1410ce1f6efa80612c7137c27c3b8fd ] [Fix cost of PardonMe ais523 **20090604061956 Ignore-this: d89d42910d82d721f483ec196f2398b8 ] [Ask the price of items before trying to buy them ais523 **20090604062054 Ignore-this: 3bd2a58f7810c45ba6652d60111776cc ] [Search algorithm fixes ais523 **20090604062121 Ignore-this: 5d73d5fe43530c47744a64f44bbd8b0f ] [Change default plan to SolveSokoban ais523 **20090604163927 Ignore-this: 62efe6785c70fd0967e14cf8b1471f51 ] [A slight fix in PickupItem ais523 **20090604163947 Ignore-this: 9e212d3a0282b708e948d89f38f16567 ] [A bunch of new plans ais523 **20090604164056 Ignore-this: a3afcd35ee28d038215bb3ce7470b53f ] [Dependency tracking for better debug info ais523 **20090606203850 Ignore-this: 4e1af234c40c406528c8bfb37de126fc ] [If we've searched out a level, descend in GotoDungeons even if we don't know where we are ais523 **20090606203929 Ignore-this: db49592ded50b9b26d5bd0ec53ed1f6e ] [Intelligent boulder pushing ais523 **20090606204048 Ignore-this: 200809b279b343259268437b3a3257c2 ] [New resources (Delta, Ammo, Impossibility), and some resource fixes ais523 **20090607012200 Ignore-this: 922511cd464e8b5f7a46341f31c6aa6e ] [Improve comments and core Planar debug info ais523 **20090607012443 Ignore-this: 1dab4215e818ea9f91ee047933b009e5 ] [Extra caution against enemies ais523 **20090607012609 Ignore-this: 5058b8940bb3befb18bdc086ecaacd00 ] [Fix fallbacks for low-desirability plans ais523 **20090607012634 Ignore-this: 812e2400eab88150c4c4c05e1931f5a0 ] [As a final fallback, write Elbereth ais523 **20090607012709 Ignore-this: 6280c7b204640b3af7cf35bc0f525139 ] [Improve oscillation detection for PardonMe and ScareMonster; Eliminate sessile monsters that are in the way ais523 **20090607012743 Ignore-this: 17131f91cb35a148a0796ac9072d30ee ] [Generalised stop_early for strategic plans ais523 **20090607012908 Ignore-this: f7a58f61185aaf00f966aea9dd0bdfd4 ] [Projectile handling ais523 **20090607012936 Ignore-this: 1bb78993474331333488f872c0a74b55 ] [Exploring underneath boulders ais523 **20090607013003 Ignore-this: ba00f35ca299ddfb512cea43690a827f ] [A second anti-oscillation protection ais523 **20090607063350 Ignore-this: 8cd95b38f00b9038eed93e16be9c3b41 ] [Fix reversal in peacefulness detection ais523 **20090607063422 Ignore-this: 36020116a0626ce4040d712ea1a1cde6 ] [Investigate potential ammo ais523 **20090607063435 Ignore-this: cbd2f4560ed52ae8d4fb01329b792a0e ] [Yet more PardonMe/ScareMonster fixes ais523 **20090607063501 Ignore-this: c53fc9dd5d53815ed0d1aca0c7790636 ] [Split out price-checking from picking up items ais523 **20090607063604 Ignore-this: bdc5cf4314ae64fbcd8105bfba134329 ] [Cure lycanthropy, and a general framework for similar plans ais523 **20090607104854 Ignore-this: bf05aae4197a2ab4b47ab9fe5c38df97 ] [Sokoban fixes ais523 **20090615213825 Ignore-this: ef46c290f233352ab5b055c8390c6a87 ] [We already allow correctly for this case, disallow an attempt to allow for it incorrectly ais523 **20090615223812 Ignore-this: 61c8e8dd842268e2d93574ddce1035a5 ] [Don't throw projectiles if we don't have any ais523 **20090616083019 Ignore-this: 73ad7e9b2fb0e4d4b5e732213b12c1c ] [Fix typo ($self vs. shift) ais523 **20090616083222 Ignore-this: 497c19ca3e9b7b1d844ffb162e8b918c ] [CombatFallback shouldn't be called from Eliminate ais523 **20090616085412 Ignore-this: f94051fb5fa2a1665c0bb80caf46903 ] [Split Mitigate out of Eliminate Stefan O'Rear **20090617215357 Ignore-this: 32cec73843c65af9f06df52c1c304014 ] [Make Planar freezable ais523 **20090619110244 Ignore-this: 47d3771336593732d0ed6ca40628a81d ] [Don't farlook invisible monsters ais523 **20090619125428 Ignore-this: 3a3e6486455cdfd829da0be48639851a ] [Escaping from engulfers ais523 **20090619125509 Ignore-this: 50236e1548b6f5d630f79129f569f167 ] [Add the DontFreeze trait ais523 **20090619125524 Ignore-this: c70c75c7f2d91790475bda2fb59558f4 ] [Comment out Freezable stuff; it doesn't work properly yet, nor does the relevant part of the framework ais523 **20090619202254 Ignore-this: 77562ed02dc1d153cf4b4622d72e707d ] [Eliminate Is in ImproveConnectivity ais523 **20090619202326 Ignore-this: 58c9ec746fdf2397bcb221cba072aa56 ] [PickupItem should self-invalidate ais523 **20090619202346 Ignore-this: 740c7f9d6392de84decc96815f0a80ff ] [Fix reverse dependency handling ais523 **20090619214329 Ignore-this: 6d791f69fc1638c160e7a71f3d063caf ] [Debug colors showing the tactical map ais523 **20090620221806 Ignore-this: 4965789b6179569f07ae1143fe00a99 ] [We can move boulders exactly 1 square, in addition to 0 or more ais523 **20090620221825 Ignore-this: 670f0872624c10842bc3460cea1cd2cb ] [Use Module::Pluggable for resources ais523 **20090620234138 Ignore-this: 71b50238fbf6ca01778ed6ff17cfe57b ] [Don't ask for prices unless we can see a shk ais523 **20090621022327 Ignore-this: 102dc258e2f49b147e51342d3c58900a ] [A start on converting Planar to announcements ais523 **20090621222020 Ignore-this: f8c704a9706c01c34f2694e9ecd45a75 ] [A new metaplan, SlowDescent, which acts like T::A::B::P::E ais523 **20090623235044 Ignore-this: 5e6dcc8b7c81e77456c1b9fc040fc276 ] [Try to get retry properly working ais523 **20090623235136 Ignore-this: 57136c5536f246a939b4577188b02478 ] [Better monster routing when there are boulders ais523 **20090623235209 Ignore-this: ec398d7177f5c4760c64b69979cba6f8 ] [Tactical debug colouring also shows where we decided to route to ais523 **20090623235224 Ignore-this: fb112e59bdfa934338c143982acadf45 ] [Knowing how encumbered we are ais523 **20090623235343 Ignore-this: da13af0fd656cd5551e76043ca12c43d ] [Fix bug in buying things (AskForPrice had a test reversed) ais523 **20090623235414 Ignore-this: e3ec435011efa6434a9115ad2c889768 ] [Don't try to go up from the top level of Sokoban ais523 **20090623235444 Ignore-this: 9345919a33cb77af8fdec288f9f4180e ] [Rebalance debug colouring during combat ais523 **20090624000333 Ignore-this: 39865426529e41bf82ffa9f03073f840 ] [Don't melee floating eyes ais523 **20090624004612 Ignore-this: 328a6021863ce30bbe6afabc969360d5 ] [Interlevel pathing for Sokoban ais523 **20090624004622 Ignore-this: 8eac2eade9f7d961480f3b06903ae831 ] [Don't attack peacefuls in SlowDescent ais523 **20090624010430 Ignore-this: 774825ee93aba05943e2ddc2d19e55a ] [Allow exploration of levels other than the current one ais523 **20090624013706 Ignore-this: e77be363250711f0ceb7cd27a5d7dc ] [Check debt if we don't know it, to be able to pay it off ais523 **20090624013749 Ignore-this: e4635817404794628d59f64a676fb443 ] [Plans for looking at stairs ais523 **20090624022620 Ignore-this: 3852648e037c88378451c715a21c331c ] [Interlevel pathing in Explore and SlowDescent ais523 **20090624022653 Ignore-this: ec21efca6d6a7c61efdcfd98f833d545 ] [Yet more color balancing for the debug view ais523 **20090624022932 Ignore-this: a60682b45085f536b49da33bbdc1687b ] [An overhaul of resources as they apply to routing ais523 **20090624033728 Ignore-this: 93f403e87168d6aaf9d2919b95fda208 This fixes the bug whereby routing sometimes made no sense. It turns out that there was a bug in the resource values which made TAEB really really scared of walking diagonally, unless it could also do the same thing via walking orthogonally (which was usually the case, which was why the bug was hard to find). Risk data is now added to plans to help catch similar trouble in the future (the spending plan and its numerical value are given so that they can be compared for sanity reasons). ] [Handling explore fallback better ais523 **20090624035659 Ignore-this: 1994e5361c36b5900a25b97bf28c40af ] [Ah, that's why PushBoulderRisky wasn't seen as a problem ais523 **20090624035946 Ignore-this: bfe4d1e52778a3f80c116b775daf9652 ] [Try to reconnect a disconnected dungeon graph ais523 **20090624040614 Ignore-this: 2d5ba1f87b1c163fa0a4b33b78cd32da ] [Be more anxious to investigate unseen ammo ais523 **20090624041106 Ignore-this: c8e66fce1a8cb56995359ac6f88a854c ] [Invalidate interlevel TME cache when changing level ais523 **20090624042413 Ignore-this: 1ee5ff6aab301517c1b816728d238b75 ] [Don't look under things if we looked under them earlier ais523 **20090624050039 Ignore-this: a8d3ce9e468dc23d891a650f65f17e4e ] [We can throw things in corridors too ais523 **20090624050337 Ignore-this: 91ce4821214cbf9a7a89cef1a41c868d ] [Avoid the Mines in SlowDescent; for now, I'd like to work on dungeon diving + Sokoban ais523 **20090624050741 Ignore-this: 7cec7ce817ea16ab51ce7ed26b9a770d ] [Don't feel inclined to kill everything in a shop ais523 **20090624224611 Ignore-this: bab7f9ad4da816e0dcc3994418b5e8d8 ] [Refactor tactical routing and add sanity checks ais523 **20090625021806 Ignore-this: 93ad76eec0a2c3b1ec48ba53cef889e1 This fixes an obscure bug where TMEs were not getting correctly reset. I think that's what was causing the Walk to non-adjacent tile bug (which would happen if trying to route to a non-routable tile on a different level, which would explain why it hardly ever came up), but I'm not sure. ] [Stop anti-oscillation crashing when tactics are invalidated ais523 **20090625061728 Ignore-this: d9559326bcec63a04b482e0da451aa3b ] [Yay, working persistency ais523 **20090627160606 Ignore-this: 897b4bf43b43d5884be215903b2f83a0 ] [Item values for weapons and armour ais523 **20090627181231 Ignore-this: 8a22e88f6634a2001f1a4480ee45de43 ] [Doing things with weapons and armour ais523 **20090627181327 Ignore-this: 9ac2510b467825453bcb9057548c8b51 ] [Don't go up from the top dungeon level in Shallower ais523 **20090627181355 Ignore-this: de44c433949ff9ced577e182b149d938 ] [Resource fixes ais523 **20090628002601 Ignore-this: b6d4018fe66e586767990ed64af4aaa8 ] [BCUing things ais523 **20090628002806 Ignore-this: d788edfded807a8ff4d58dd8245ba7cd ] [Things can be free in shops ais523 **20090628002830 Ignore-this: 58063898c03ceb15683dcd949f787220 ] [Don't pick up redundant weapons or armour ais523 **20090628012506 Ignore-this: a582e67e24a07e6fbce4584e6aff6f0e ] [Don't fallback-search the Mines ais523 **20090628012522 Ignore-this: 99145fff8b7b4c9301c63908fba1b3a ] [Make sure that we subscribe even when reloading state ais523 **20090628040814 Ignore-this: 18f75db9b118f709ee4a94fa802d2f79 ] [Remove redundant invalidate on Equip ais523 **20090628040920 Ignore-this: c2bab9703dcc9f54440534f7fb56215e ] [Correct arguments to BCU ais523 **20090628041117 Ignore-this: 8286e19fb85dbab4619e3b2b0af6d0cc ] [Don't handle freebies in shops until framework can ais523 **20090628052052 Ignore-this: 50532d6777e179bc3dc1422cb4e3df1c ] [I'm not sure what this code is meant to do, and it's clearly wrong wrt dropping items ais523 **20090628060003 Ignore-this: a6c83b990379ec7e4baedf7221f9774e ] [Suppress warning when an item is dropped ais523 **20090628060034 Ignore-this: cd68a43b369eeaa2842b8bf5c8aa22b1 ] [Fix T::A::P::P::BCU ais523 **20090628060055 Ignore-this: 7234b90e2da5053d44b2f4a145adec3d ] [Rudimentary (and optional) use of travel ais523 **20090628065153 Ignore-this: 2cf4206e0e913816b31bca4170487428 ] [Don't crash if we see an unroutable altar in BCU ais523 **20090628065231 Ignore-this: fc9ef34aa5ca173b8a9ad74ee8b20f43 ] [If travelling messes up, try without ais523 **20090628081551 Ignore-this: 89629f3f6791e16c21efa9f9c1c5db19 ] [Don't travel if we saw a monster recently ais523 **20090701003722 Ignore-this: 96e48c8c2c7e64a6b9421c9ac29177d0 ] [Better handling of I beyond a boulder ais523 **20090701010244 Ignore-this: f899b05b6a0eb8b1b7535b3cdac8c882 ] [True interlevel pathing ais523 **20090701012441 Ignore-this: ff3c99a4befcb00fe2cd4a92bb940d2b This hopefully will truly end the pathing TME chain bug; I've now actually implemented interlevel pathing (it's surprising how well it was working without being implemented), and it'll notice a broken chain whilst recalculating risk. The error happened when we wanted to route to a different level but the stairs weren't reachable; hopefully, that won't happen any more. ] [A correct and non-hacky way to update the routing map from one turn to the next ais523 **20090701015254 Ignore-this: d90a7b98fe2eea0a8a2243bbb029f39f Instead of using the global TAEB object and some our variables, this remembers the circumstances under which tactical routing was last done, so as to better calculate what the tactical map means. ] [Split out LookAt from Explore ais523 **20090701043154 Ignore-this: 9dc3aba9290e192998cf6c8d7a4bec1d Doing it this way allows invalidity checking to work correctly; Explore becomes invalid for explored tiles, LookAt doesn't. ] [Fix impossibility tracking for AskForPrice ais523 **20090701050846 Ignore-this: d7b93e95540d323d8fabd87f6ae743a9 ] [Better routing near shopkeepers ais523 **20090701050903 Ignore-this: eb4232b10fb5adef156b0aeeb9266352 ] [We may as well throw shuriken too if we find them ais523 **20090701050915 Ignore-this: b1d6b25ef987c6fc90a742833f72840e ] [Dipping for Excalibur ais523 **20090701230355 Ignore-this: 3e37571861301181ab21d3bee595c2d7 ] [Fixing pickup/drop to avoid oscillations ais523 **20090701230428 Ignore-this: cdc07d4483fc7a9aa1735c044817dad4 ] [Don't use eggs as permafood ais523 **20090701230505 Ignore-this: be8de98f16c718b07133b87828e1f981 ] [Updating deaths-and-crashes ais523 **20090701230838 Ignore-this: 134481a0e9146f82e7eb8355d8099081 ] [Another new debug colouring ais523 **20090702010428 Ignore-this: 61096dd576c0b7158fa602680768d978 ] [More deaths/crashes ais523 **20090702060443 Ignore-this: f070b157039145e063282566a84a0418 ] [Praying for nutrition ais523 **20090702062946 Ignore-this: 420a5e1d49329d62106170c3362205fb ] [Don't travel when blind ais523 **20090702064607 Ignore-this: e86fbd07a05b3f2866542b40c17dc624 ] [Fix reversed test in SlowDescent's Sokoban solver ais523 **20090702092251 Ignore-this: ed54840f65e24dae0d551ae2686fb821 ] [Remove some code that ended up in Excalibur by mistake ais523 **20090702092308 Ignore-this: 1d6cc1d54b3afe501c1cb1c05f02d3da ] [Don't travel in Sokoban ais523 **20090702093726 Ignore-this: d022b3e31691c9f5d36b20d8aded904 ] [Overhaul of plan abandonment ais523 **20090702115654 Ignore-this: 3d9b5625a1f20b74da5e529e9e6be15f ] [Better Sokoban handling in SlowDescent ais523 **20090702115735 Ignore-this: a9562742d641e18a130042e5faf4d4ab ] [SolveSokoban must ascend itself, not delegate to Ascend, or it makes a mess of impossibility tracking ais523 **20090702115750 Ignore-this: cffbeb16762b8afa22d37b1f3c9becec ] [Sanity check for negative risk in T::A::P::P::T ais523 **20090713091420 Ignore-this: 25a8b4d8140603624507073a71ec3aec ] [Some debug code for dumping strategy Stefan O'Rear **20090717033627 Ignore-this: 691d50b5244d68a1150f070e5d75314b ] [Make the overall_plan configurable from the command line and config.yml Stefan O'Rear **20090717051641 Ignore-this: 650eb0bcf1aedb008c409c7db8c49fe2 ] [GotoMines Stefan O'Rear **20090717070734 Ignore-this: 5cbf017a78b3179104073203217fd42 ] [GotoMinesEnd Stefan O'Rear **20090717071536 Ignore-this: 1ed3c9a70df66bf6a3c08e3a31af8e2d ] [We care about armor now too Stefan O'Rear **20090717095716 Ignore-this: badd9ae41f44ef39f0264aab1e5a5d7 ] [Fix precedence bug Stefan O'Rear **20090717194654 Ignore-this: 6f10aebb1ba7cb59a477224b7c85d44b ] [Count fountains, rather than just assuming oracle Stefan O'Rear **20090717200501 Ignore-this: da0dedd21513de3c6eafe074edf8528e ] [gain_resource_conversion_desire should be a mutator Stefan O'Rear **20090717200720 Ignore-this: bc56dc6a5f54e3725e63aebd25c964f0 ] [don't excal dip in minetown Stefan O'Rear **20090717201044 Ignore-this: 88b82b5b3745b3354bce83369f8e785b ] [Use refaddrs for the first level of the tactics map, fixing the infamous crash Stefan O'Rear **20090718043335 Ignore-this: 7aeeba14bbdf553fec72711e01404b5f ] [New shortsightedness Stefan O'Rear **20090718062818 Ignore-this: daf90430873a1f0b981bf5688f12c360 It's now called analysis_window and runtime variable. Essentially, it represents how much of a "neat freak" TAEB should be; it is increased in easy times and decreased greatly in [Retry] states. High values of analysis_window make us more likely to clean up threats, by multiplying the cost of plans that don't fix them, and make us think more about the future by increasing the value of long-term resources. ] [Remove some Behavioralisms from Search and simplify Stefan O'Rear **20090718063733 Ignore-this: b7840175deff70009c44f7e8413d308c ] [in_make_safer needs to be recursive Stefan O'Rear **20090718070740 Ignore-this: 8559c7eb23c5f84c7993c46471afaefe ] [Chasing unicorns is fruitless Stefan O'Rear **20090718074905 Ignore-this: a6939838be67fddac16f6ddcbf1b6308 ] [Ooops, this needs to be Num Stefan O'Rear **20090719023519 Ignore-this: e673d352a48040247b575ad4abf931d9 ] [Killing for loot Stefan O'Rear **20090719023620 Ignore-this: 1e8078c2038e26ba077350d2169b1c64 Kill (make a monster actually dead) has been split out of Eliminate, and is capable of generating resource conversion desire (currently, for nutrition of all corporeal monsters, and items, though the item list is very incomplete and only covers dwarves, hobbits, and goblins). Also added MonsterMeta so that we will think about killing monsters even if they aren't threats. ] [Don't attack shks etc Stefan O'Rear **20090719103116 Ignore-this: 6ba3ab38a3a151edeb4983073b17d2e2 ] [Work around a framework bug I don't understand Stefan O'Rear **20090719103135 Ignore-this: baaca6400de6f90b0c654143ddcb1e6c ] [Add Rest action Stefan O'Rear **20090719103208 Ignore-this: d0f034ffd79a9168be90521e6e40ee9e ] [Getting the luckstone, take 2 Stefan O'Rear **20090719103219 Ignore-this: 1718b673165648b5e3412e649130545b ] [Priorities for ammo Stefan O'Rear **20090719103352 Ignore-this: 41fe6bca04bcbf87b8adde2d3037ebc6 ] [Make impossibility actually somewhat matter Stefan O'Rear **20090719105022 Ignore-this: 4f7ae18a3ee7c4703caaea0a60f7b94d ] [Ignore two-handers until we figure out what to do with overlapping slots Stefan O'Rear **20090719190110 Ignore-this: ac45187c5c8ae17b40f20d9b4a1a0b32 ] [New impossibility is wrecking interlevel pathing, rollback Stefan O'Rear **20090719210217 Ignore-this: efd41a16d2ec27a861b97b49e5a7a587 ] [Make planar properly afraid of nymphs and lights Stefan O'Rear **20090720000020 Ignore-this: 73c8e453f54059b5e67e9265e0e14c4b ] [We can't squeeze through cracks when loaded Stefan O'Rear **20090720000036 Ignore-this: 57c511716d806a958b51e2c2495c17e ] [Be really keen to check out corpses, they often have loot Stefan O'Rear **20090720083417 Ignore-this: 575796c5288cf0049789b7c40a107abc ] [Kill the Investigate|FloorFood path, it seems broken and we have enough reasons to investigate % Stefan O'Rear **20090720083444 Ignore-this: 84fbc41cce68671698981e14b18667ab ] [Fix CarryCapacity scarcity Stefan O'Rear **20090720083510 Ignore-this: 629f9dd6b02d03f7560b0955744fb047 ] [More debug statements Stefan O'Rear **20090721080232 Ignore-this: 96a273b203844c0d387e6ea060cc4548 ] [Fix the ever-popular diagonal oscillation bug Stefan O'Rear **20090721080241 Ignore-this: b501e6e97152052b32fc4b32d8151c77 ] [Unicorns only threat adjacent squares Stefan O'Rear **20090721081250 Ignore-this: 8f5c7880113582c63d4f35f0d4915006 ] [Use cost and anticost correctly in Drop Stefan O'Rear **20090722041549 Ignore-this: 33bb71bacccb07969e5ae571c2b8e4b4 ] [Risk by number is obsolete ais523 **20090724234411 Ignore-this: 256a710dc6d5a51527a8094fe2857e5e ] [Tweaks to tactical abandonment, including another impossibility rebalancing ais523 **20090725001125 Ignore-this: aa922cd8bd0b625d0642943b04d367b8 ] [Resource balancing: food ais523 **20090725001134 Ignore-this: 7729ad22cd92c8f6dfeaa24c34c61c94 ] [Some fixes for the Zorkmids resource ais523 **20090725001323 Ignore-this: fa98814aa23af57145c058f639435ce4 ] [More gold fixes ais523 **20090725012356 Ignore-this: c0db3a2c5e40a10c0b8394c22ac83c9e ] [Comment out debug code ais523 **20090725012433 Ignore-this: a9cf729b62ad5a14a0aeebe5172ca2bd ] [Drop things we can't afford ais523 **20090725025004 Ignore-this: 91cb8d59f39c00ecdd3070717474c19a ] [Be more inclined to investigate gold ais523 **20090725025014 Ignore-this: 109fc9b7b73dbfa1796743059eea7cc3 ] [Don't kill monsters for the sake of it, always have a reason ais523 **20090725025024 Ignore-this: e6fcf14ba3bd51743539b576090481bb ] [Hoard picks Stefan O'Rear **20090724041205 Ignore-this: 596588382fdec3d71bd058749f328dad ] [Optionalize an accidally-committed debugging change Stefan O'Rear **20090724041340 Ignore-this: 13774e41123cc8103d17b3443d260de6 ] [Implement tunnelling Stefan O'Rear **20090724072304 Ignore-this: cf3846a7341b1c577876d8bfd88d9b61 ] [Hack - don't explore inside walls Stefan O'Rear **20090724080643 Ignore-this: deddf2f5ed7d3a6277ca0e449724869b ] [Oops, we need to treat walking risk too (it thought digging was safer than walking...) Stefan O'Rear **20090724080720 Ignore-this: 254ace9c02f0d9e3fddb8f5acf71b079 ] [Be much more aggressive at above 80% HP Stefan O'Rear **20090724090827 Ignore-this: 2fb18d1e5f8a105cd4ff5d6c42a091eb ] [Oops, item_value needs real TAEB::World::Items now Stefan O'Rear **20090724093305 Ignore-this: 41c0e036f6412a793dd4a767e324c1cb ] [First draftings of coutnermeasure system Stefan O'Rear **20090724193024 Ignore-this: 732c0bcc7cd9263a2a1851ddedb44c62 ] [Devalue non-dagger projectiles, so we carry and train daggers more Stefan O'Rear **20090724193913 Ignore-this: fb95e43837c89ea95ac74e79d43d936a ] [Debreak projectile Stefan O'Rear **20090724225258 Ignore-this: 8f0eebae03a434edba34e7c468c958cf ] [Decay do_not_travel, after 50 turns Stefan O'Rear **20090724230203 Ignore-this: 475fa1144c2b1eb3a86f73cb8ba29409 Suppose we're operating far below an altar; if we run into a monster, we should start using travel again after a while. ] [Fix cost/anticost in multidrop Stefan O'Rear **20090725000131 Ignore-this: de7cb7244e0559249f86b9aff41b994 ] [Don't dig the undiggable Stefan O'Rear **20090726062235 Ignore-this: 61c45012b72369247f8905022651ec12 ] [Fix conflict (removing a line vs. optionalising it) ais523 **20090729205819 Ignore-this: a1bb40bb098db97bb3d007a383beb2f7 ] [Remove undef warning when killing something of no value to us ais523 **20090804013144 Ignore-this: 88b9dc43563a784ca4efcc5f82c87008 ] [Stairs fixes ais523 **20090804015933 Ignore-this: 9faa64b45f6bf0c1b67ab72c08a01dfe ] [Don't try failed travels forever ais523 **20090804024631 Ignore-this: 83f18a26d538f9f40fcb8a34bf309cd4 The issue with a fixed backoff upon failing to travel is that in the case of a routing failure in NetHack's _ command, on some large maps we simply get stuck doing the same thing again and again. In case we end up changing our mind, I've added a rather large backoff to travel timeout; it's possible that a smaller one might work, but I like to err on the safe but slow side. ] [Reorder code for efficiency ais523 **20090804031910 Ignore-this: 78bff5ee0d483163b74531d103cfa0c7 ] [Breaking the shop item oscillation ais523 **20090804050338 Ignore-this: 381578adf76e5fa4bf303dd5ed08bcee This was due to a bug in AskForPrice, which thought itself able to request the prices of things even when they were already known. ] [Fix Tunnel to work without greatest_erosion existing ais523 **20090804054645 Ignore-this: b4675642eddf2cd9c996fe2b97ab3008 ] [Make nutrition more valuable ais523 **20090804054701 Ignore-this: 5db56ae7d0b683a2a87406bba90f4e49 ] [More fixes for Sokoban: aim for the first level we can reach, not the first we think we haven't solved ais523 **20090804060211 Ignore-this: a13e9f038cd362c2e99b2d4b01e53f61 This fixes SolveSokoban to work if it's completed a level and hasn't realised; it also makes it go upstairs when appropriate to continue solving, via OtherSide (which is more reliable than Ascend for this purpose). ] [Fix crash bug due to typo in the deoscillator ais523 **20090804084247 Ignore-this: 898af7caac4a223b8a2bb7553080c4bb ] [Be much more aggressive in ignoring substandard items ais523 **20090804084316 Ignore-this: c49c0db1efcb5a6af5c72d0b3ad08ccd ] [Fix reversed test in AskForPrice ais523 **20090804084416 Ignore-this: 6f245c37b1feb69f2ce756e52e958fad ] [Make SolveSokoban more aware of monsters ais523 **20090804084425 Ignore-this: a24e237beea88a9757622c451c005f25 ] [A different travel backoff algorithm, suggested by casmith_789 ais523 **20090805135246 Ignore-this: bf413a5858e6c5dab52b564a38200d4e ] [Remove bogus dependency that costs us 4 seconds per step when blind ais523 **20090805135900 Ignore-this: 9149460ed3574fac4bdd7a745388a665 ] [Fix interaction between blindness and exploration ais523 **20090805142454 Ignore-this: 26da57149d5fd56ec1f8eaff73740c2b ] [Don't push boulders diagonally ais523 **20090805142557 Ignore-this: 822e31608d7528b3825eec1c72c6dd9b ] [Fix typo that meant we never smashed boulders in MoveTo ais523 **20090805142611 Ignore-this: 15d353567a2604c19c36073b1d85fa3d ] [Efficiency patch for exploration ais523 **20090805154635 Ignore-this: b873cf464fb4636cacd458df17e3410 Although no semantic changes to exploration are made here, this precalculates and caches an exploration graph, meaning that instead of calculating where to explore every turn, we only calculate the difference between this turn's and last turn's exploration graphs. This saves about 3 and a half seconds per step compared to the code before this patch. ] [Don't mark impossibility on a plan unless we tried and failed ais523 **20090805162210 Ignore-this: d3da698a1d031d5b72f106592945c40f ] [Tweak exploration algorithm to allow for unexplored next to corridor/obscured ais523 **20090805162232 Ignore-this: 8144dcdf6d874ea6fc98a414045c2570 ] [Debug view for the exploration cache ais523 **20090805162254 Ignore-this: bbd9c7b5c29498ac181dc09ca3f56eb7 ] [Add missing postable to Shallower ais523 **20090805184702 Ignore-this: 18d37dd2e346e45595d161f720febf3e ] [Don't throw projectiles through the unknown if we're seeing the monster other than via sight or infravision ais523 **20090805184718 Ignore-this: 6ac5468942851231b4f0d6f50f4f460c ] [Cache item subtypes as Nethack::Item takes far too long to calculate them ais523 **20090805190000 Ignore-this: fe87f5a681e4dfb5b180c6921b83693e ] [Use the optimized form of is_walkable whenever we can ais523 **20090805190009 Ignore-this: a39632d8e1f8726346c128f0b8f88ac ] [Cache is_walkable on tiles ais523 **20090805211233 Ignore-this: 820de15308d70e5a361da6c75430a9b0 ] [Make the item_subtype fix actually work ais523 **20090805211452 Ignore-this: 310467bc2c648f04e98bdae53ae5f461 ] [A slightly smarter and even faster ExploreLevel ais523 **20090805211512 Ignore-this: 9d7132fe588d09d7c8464c29e8b4e5bc ] [Don't bother to BCU ammo (unless BCUing other stuff at the same time) ais523 **20090805212004 Ignore-this: 43fa0fa4e1b88197a177edffb73f8fc8 ] [Remove hardcoded cost numbers ais523 **20090806002223 Ignore-this: bbb98652f592f68e39861c523dd7a84d ] [Don't abandon plans on the dependency path ais523 **20090806012225 Ignore-this: e5777b95740ff40a24aac0709464f872 ] [Better fallback in Extricate ais523 **20090806012242 Ignore-this: 7c3111ea0c68e1054b1a8db7dd1fd5e9 ] [Show genuine and fake boulders in debug view ais523 **20090806030331 Ignore-this: f300c04f72940a8a82176b1428726ce3 ] [Better mimic handling in Sokoban ais523 **20090806030408 Ignore-this: b5eeab6d597cdb2909b0915bdb94c662 ] [Better handling of monsters behind boulders in Sokoban ais523 **20090806032542 Ignore-this: b49fad21ad48f0da292c7b4dc1e7a622 ] [Travel is safe in solved Sokoban levels ais523 **20090806032658 Ignore-this: f9fe88247e79cd273ec3484b4b92d091 ] [Only show boulder colouring in Sokoban ais523 **20090806035708 Ignore-this: 8ab32604cf314718b451128c967faa01 ] [No point farlooking when hallucinating ais523 **20090806231133 Ignore-this: beae29fb0c22a62e258d6482ecaa6647 ] [Don't search out Sokoban ais523 **20090806231145 Ignore-this: 5fe16676d3e29661c841b09c5978018b ] [Retravel once ordinary moves start working for a while ais523 **20090806231158 Ignore-this: b81934ff0304b7222154a59d558ae159 ] [Use rocks as ammo if we can bear the weight; make ammo more valuable when scarec ais523 **20090806231216 Ignore-this: cb0803ff76836bcd69f4ea191e86b45 ] [Efficiency while hallucinating (get rid of warning spam = faster running) ais523 **20090806231555 Ignore-this: c2259837537cc37bfb9554f90afc11ed ] [Update deaths-and-crashes ais523 **20090806233204 Ignore-this: 4f921309ce041753c459d47708740f31 ] [A more robust Shallower, that avoids an oscillation on sokobranch ais523 **20090807003218 Ignore-this: 257d12228dd556986a6295427ccf404 ] [More empirical determination of if we're in a trap ais523 **20090808210927 Ignore-this: 6bc3ef60e741432f4e045f5c5acab8c2 ] [More deaths and crashes ais523 **20090808210941 Ignore-this: 2b0de62be43fcd1c3105b73ba4de3257 ] [A precondition on Extricate ais523 **20090808211656 Ignore-this: 613e370a71dfc4f93a5f0eb3f3f3ee71 ] [Don't crash if stairs get unstaired when we try to traverse them ais523 **20090808220849 Ignore-this: 8b4fd0e14f5f92e5a81ed8d122a3370a ] [Fix item use_benefit tiebreaks ais523 **20090808224128 Ignore-this: 50067cff7da21f147665251a7ecca0d7 ] [Update tactical map colour bands ais523 **20090808224936 Ignore-this: 952845eaa1a5318128eed0a32575c9e4 ] [We can't spend our last hitpoint ais523 **20090808225846 Ignore-this: cb1cf7fc5845de9c9622059d2e47f37b ] [Allow plans to prevent specific other plans interrupting them ais523 **20090808235021 Ignore-this: 56d57720d6d5326195dd3f5aa85f119c ] [Unwield two-handed weapons so we can wield shields ais523 **20090808235055 Ignore-this: ceb0013c8e798c66bf0ccf5a954b81df ] [Digging with mattocks when we're wearing a shield ais523 **20090808235117 Ignore-this: 89d54ae6e9c9480936a57aae9e07bb5 ] [Better timing for digging ais523 **20090808235553 Ignore-this: ccf3ba2b6d1fb8a914b66d8c58bd180b ] [We don't mind wielding less powerful weapons if we're currently wielding a two-hander ais523 **20090809000102 Ignore-this: d5ea1bdfca418a244909db1d9de1b985 ] [Fix PermaFood so it works correctly with stacks of rations ais523 **20090809000625 Ignore-this: 9a779796df960df0ce7c4f6e22570607 ] [Complete an unfinished comment in T::A::P::P::BCU ais523 **20090809001739 Ignore-this: 311ac9cef6981754a9f049aae6615236 ] [Efficiency in Tunnel (thanks NYTProf!) ais523 **20090809005858 Ignore-this: 48e4b6ded8dd5d641c2b96917b4f2960 ] [Add a Luck resource Stefan O'Rear **20090726065209 Ignore-this: 7a3d4465166fea778f6332635f11c656 ] [Luckstones give us luck Stefan O'Rear **20090726065609 Ignore-this: 72e24b39cd46e8891b5120cafb717640 ] [Fix inconsistency in debugging (also, it crashed. huh?) Stefan O'Rear **20090726093125 Ignore-this: 921df2ce2525ce91beb4bbbb46df6cdf ] [Get the luckstone! Stefan O'Rear **20090726112439 Ignore-this: 2b2fe31ef46e6af031917c99806c90e1 ] [Debug print Stefan O'Rear **20090726112530 Ignore-this: ae12d2125937efaeafbd4c6619e36d77 ] [Be noisier when MSPs die, they should never do that Stefan O'Rear **20090726112543 Ignore-this: 702cd530ec2a63cd7ddd2104892a86c ] [Explanatory comment Stefan O'Rear **20090726112605 Ignore-this: abd1154c369336134087d77a1d072e0b ] [Be a bit more consistant about ignoring interlevel threats Stefan O'Rear **20090726113712 Ignore-this: dcaa526fee2fd03c1f04d89c64261244 This fixes a very subtle bug, where if Planar changes level with a monster in sight, it will bake references to the wrong make_safer_plan into the interlevel routing cache; then attempts to route will not see the right monster and no killing desire is generated. Also, we were never using make_safer_plans for interlevel routing for monsters seen after entering. ] [Care even less about HP when unhurt Stefan O'Rear **20090726114509 Ignore-this: bfdedcb0023e3654433ff19e42785dcd ] [Fix conflict (same code twice with different indentation) ais523 **20090822051839 Ignore-this: 3c0518a77ea63cb813a9f157bed963df ] [Framework sometimes gets confused as to whether we're in a trap ais523 **20090823221359 Ignore-this: 531fe8feb62c2b07425af6ec6708fb08 ] [Set adjacent-only flag on threat check for invisibles ais523 **20090823235058 Ignore-this: 684786c92ae23591e37319464df1352b ] [Optimise Ascend/Descend ais523 **20090824021320 Ignore-this: 4e0ef1ff2db19ab465b93af9fb445733 ] [Handle a solved Sokoban correctly in SlowDescent ais523 **20090824021328 Ignore-this: b3f737b32aa2cd908e2105d81df56dfb ] [Levitation handling (provisional) ais523 **20090824042428 Ignore-this: 47f860690bab47d968ebed583f613cee ] [Fix crash if the framework doesn't know our speed ais523 **20090824042437 Ignore-this: 4a34b1feb34de206c6b4555f66db3430 ] [Fix crash if we aren't wielding a weapon ais523 **20090824042449 Ignore-this: 4809e939e7a2a62aeda6e6bbaae6e770 ] [Debug colours that take advantage of memoization in core ais523 **20090825060055 Ignore-this: 22a02cfde4d89eb845002a706fd9d637 ] [It's safe to push boulders at squares where adjacent-only monsters live ais523 **20090825060918 Ignore-this: f7b65991714c20e81dceb6d7c6cd3d15 ] [Add MeleeHidden, but don't use it yet ais523 **20090825071653 Ignore-this: 3af9a94b914511f8bbd5437af3d8f918 ] [Robustness under error conditions ais523 **20090825091750 Ignore-this: 308962ed6ed1ebfff4d7c7828ec20e9c ] [Fix typos ais523 **20090825092025 Ignore-this: c70210de6d554b26d0ef06419617443d ] [A boulder on 'rock' is not really rock ais523 **20090825103936 Ignore-this: abc887613b5ee52960789165763a4731 ] [Handle framework desyncing the equipment and inventory (with a large complaint) ais523 **20090825113433 Ignore-this: 371bea942705ed7c860eddeeef813890 ] [Don't let Eliminate and Mitigate plans invalidate themselves when referring to actual monsters ais523 **20090825113903 Ignore-this: ca5154918832621e2e20fd900336d474 ] [We can squeeze between boulders even when burdened, except in Sokoban ais523 **20090825114931 Ignore-this: ad27d99517ef47295672802f830a42c9 ] [Fix in_make_safer_on_step for make_safer loops ais523 **20090825122723 Ignore-this: 12b541793d63a261a7345d4b43bc1a9e This patch handles the case where a plan is found to be a make_safer_plan after its risk has already been calculated, e.g. when two plans are make_safer_plans for each other, by recalculating its risk. ] [It's possible to throw things over a boulder even if the boulder won't move ais523 **20090825124022 Ignore-this: e7a90c886cec68741146770e89f2e816 ] [Engraving tends to fail when blind ais523 **20090825124033 Ignore-this: 434ef05ca3d806acdceabbce568dd457 ] [Picking up items is affected by equipment, so don't let it interrupt Tunnel ais523 **20090828114442 Ignore-this: fd91b5a478059861c2273c08866e6ca5 ] [Fix crash bug when thinking about wielding corpses ais523 **20090828114507 Ignore-this: 9865a138c2b2a1a8c6c0ad30bb89e60 ] [Another fallback plan, for when we're trapped due to teleportitis ais523 **20090831162759 Ignore-this: dedd92be97748572f9ed6c6ec400ef9a ] [CSE on TAEB->ai->aistep ais523 **20091023224436 Ignore-this: 8881f688c963137b388f787d2be53392 ] [Better risk validity checks ais523 **20091023224521 Ignore-this: c93672d762706ab2956b034e529b32da ] [Avoid crashes when attack_monster_risk is undef ais523 **20091023224535 Ignore-this: e8e279072a5c78afe9d45ca22f017b95 ] [Actually mark impossible tactics as impossible, don't just comment saying you are ais523 **20091023235340 Ignore-this: 682f20c960fc80d6c22398430375c56b ] [Remove deprecated Moosishness ais523 **20091023235429 Ignore-this: 32e212a6a0f3d8c605f09a6326e1308b ] [Fix threat check for multiturn actions ais523 **20091023235440 Ignore-this: 8b057e6b7ffc1c58c957daec2342671c The effects of this bug meant that TAEB would consider, for instance, digging into a wall to escape, on the assumption that while it was digging it would be inside the wall and thus immune to monster attack! This may have been causing other bugs too; it would be nice if it's causing the back-of-the- pack ScareMonster bug, although I'm not certain that's the same bug. ] [Fixing the back-of-the-pack routing bug ais523 **20091024152508 Ignore-this: d34681deff82824992d619bae1503c01 A bug that's been plaguing me for months, luckily with a trivial fix. Although it's true that monsters can't route through other monsters, monsters can move out of the way; so a square can be vulnerable to attacks by monsters (in the future) even if there isn't a monster standing on it (now). As a result, it's a very bad idea to attempt to move onto the square a monster's on in order to get immunity from enemy attacks, which is what Planar was trying to do before this fix. ] [Prevent Sokoban oscillation if no level is partially solved and we aren't at the top one yet ais523 **20091025173718 Ignore-this: 320aec273dec749001a27df94eb4e234 ] [Don't tunnel near monsters or shops ais523 **20091025173744 Ignore-this: 257be18b98b3a3bff9cf75185555eafa ] [Prioritise easily-killed monsters, don't attack things that will kill us first ais523 **20091026194849 Ignore-this: 3cbbc04468230a24b28da2b064a0138a ] [Better Elbereth handling ais523 **20091026210658 Ignore-this: 2e797998d691fb0ec5f118d4031788f9 ] [Fix the pickup antioscillator for shopping ais523 **20091026210819 Ignore-this: e8af39a91b6d8bdb76df15cbaa5d1cb4 ] [We need a full tactical recalculation if a tactical plan has no associated action (in case it's a vertical one) ais523 **20091026211842 Ignore-this: 9f272890a7a2c20facd7d1dac4c94c86 ] [Some rudimentary plans for the /dev/null tournament ais523 **20091026212848 Ignore-this: 50aa05f2f2d53d4f5478661bd879b227 ] [Hit the right monster when throwing projectiles ais523 **20091026223857 Ignore-this: 9eb10dcf4c8d0408e9ab48bbb32a06e ] [Don't DiagonalDoor near shops ais523 **20091026230036 Ignore-this: 8495668b7e0f43d138e29d0bc899211b ] [Elbereth-ignorers can walk where there isn't an Elbereth, too ais523 **20091027092512 Ignore-this: 9f108ae4907010d9343c12503a9051ba ] [A second final fallback, EmergencyMelee ais523 **20091027160835 Ignore-this: 63aee2b6c7d9856c175c6d7ac251ecbf ] [Elbereths can actually erode, and framework doesn't autocheck this any more ais523 **20091027170334 Ignore-this: e4badecf483a329b81384e9ece721b22 ] [Optimisation, and some anti-spam, on Elbereths ais523 **20091027235155 Ignore-this: ad94faf84be6b761ad4991806ad2b082 ] [Elbereth on arbitrary plans ais523 **20091028000023 Ignore-this: 8bea0636e7c1ae8b92998bc718900f6c ] [Don't spew warnings on a generic check ais523 **20091028181126 Ignore-this: 23113894b56eaed4fcbc2345404e5deb ] [It takes at least one turn to kill even weak monsters ais523 **20091028181200 Ignore-this: 7783248d578756d4dc97d4773da05e05 ] [Fixes for auto-Elbereth ais523 **20091028181247 Ignore-this: d6935638e8ccae733551154fc2f7b9a9 ] [Riskier play when in little danger and healthy ais523 **20091028181723 Ignore-this: df0980e77b93c0a4a5dcfe98629f8eed ] [More intelligent final fallbacks ais523 **20091028215604 Ignore-this: f294d8c10678757dc88a2c02260ea6af ] [Try to make searching make more sense, by adding a huge penalty ais523 **20091028215623 Ignore-this: 9db71c3733fb383dfb7dea8556d1acad ] [Elbereths prevent monsters attacking us ais523 **20091028231429 Ignore-this: 916a624354dccfabd0eb182188e61d79 ] [Miscellaneous Elbereth fixes ais523 **20091028231500 Ignore-this: a789bd17b9143c8a8b1b31030c980428 ] [Allow for unknown types of traps ais523 **20091028231513 Ignore-this: 68da2498ae21024a9102b5c4b8f2b816 ] [Combat prioritisation at range as well as in melee ais523 **20091028233411 Ignore-this: daae14e054982056d061f2d9f6579f6f ] [Discourage attacking mimics at range outside Sokoban ais523 **20091028234048 Ignore-this: 6375049bed170cf84b4d2f4f2eeb12f6 ] [Try to make the fallbacks comprehensive ais523 **20091029093633 Ignore-this: c2db014e9e67f916660de76392c00358 ] [Taking defensive Elbereths one turn at a time ais523 **20091029101102 Ignore-this: ff0e4c3d044111aa5a0a30c34dfeb82f ] [Periodic tactical recalculations, just in case ais523 **20091029144112 Ignore-this: f6b3ffa5995fc03ff8f403910608a270 ] [Don't wield ammo ais523 **20091029144137 Ignore-this: 98b1478dd9e64ec506e10602cf94a0c4 ] [Wipe out engravings that contain no instances of 'Elbereth' ais523 **20091029144143 Ignore-this: 7d52e58848e6d6533aaf26835682b583 ] [Fix crash typo in Projectile ais523 **20091029144205 Ignore-this: 948734b7cc84c0340833235467a1ef5d ] [A rather hacky workaround for the symptoms of a bug ais523 **20091029145355 Ignore-this: ffb077cf8992acdd1ebac83a91c9685c If anyone finds the actual bug, please let me know; this is mostly just a hack to give a chance at devnull. Ideally, fixing a bug is better than fixing its symptoms. ] [Fix crash typo in FallbackExplore ais523 **20091029151232 Ignore-this: 238d4f43390309cf0bbfd1157948b97b ] [Refix crash typo in FallbackExplore ais523 **20091029153040 Ignore-this: e187528998319f20d5743d7e80b4c03f ] [Proper shop door detection in KickDownDoor ais523 **20091029170317 Ignore-this: 7a62dd7caec2ac86ef390093f6d55d21 ] [React correctly to a failed sanity check in FloorFood ais523 **20091030153601 Ignore-this: 4d3dd5d9cf32ebf23e89f0d54789a4e3 ] [Tiles need items on for Elbereths to block routing ais523 **20091030170432 Ignore-this: 195b361ea85c928f5a6549025e8ece6 ] [Fix fallback Melee->DefensiveElbereth ais523 **20091030170519 Ignore-this: fa176f0a06b158de08e0cde90995bced ] [Use the correct pathability check for Sokoban ais523 **20091030170636 Ignore-this: 84f0709fdf9e4dead4dff7fdcfd96663 ] [Invisible monsters shouldn't provoke a corridor-of-E response ais523 **20091030170647 Ignore-this: c62435ce7a11f0f3b8d2708cd99a75e ] [get_plan doesn't work on tactical plans ais523 **20091030174205 Ignore-this: df47fa533fb42874b173bc1d76f102c3 ] [Mitigate is of course strategic (duh me!); the problem was not constraining by level ais523 **20091030175918 Ignore-this: c23d39ba2dab3b3451e1561e9b56711e ] [I doesn't have a spoiler ais523 **20091030180323 Ignore-this: b31d8aab3c3b9890abb80b87f787f89b ] [Fix full recalcs ais523 **20091031160550 Ignore-this: 4a3c7e550d02d596dbde938cf8ee491a ] [Assume the worst in EmergencyMelee when disposition is unknown ais523 **20091031160605 Ignore-this: b2f9f6ac19969720005c64dd7e8d4a2a ] [Assuming Is are scary tends to lead to fatal indecision ais523 **20091031161130 Ignore-this: 4e8bd753924bb5be1505764447de8f33 ] [Reduce tactical recalc interval ais523 **20091031183542 Ignore-this: d2ce5ef2faf3de430d5155a702a45d99 ] [aim_tile_turns might make extra threats relevant, allow for those too if necessary ais523 **20091031203224 Ignore-this: 8763cde2c337e0288d4abeba1c34ebfa ] [Fix desire of DefensiveElbereth ais523 **20091101030315 Ignore-this: d04aa69c76caa27606b68d50ac851d86 ] [Fix undef warning ais523 **20091101034459 Ignore-this: 8afe9e9e0c909fe5b9e3daf994a5a8c8 ] [Comment out debug line that takes too much realtime ais523 **20091101053854 Ignore-this: c387e9086607664ecae779f60e0865e8 ] [Attempt to add conducts; starting with pacifism Stefan O'Rear **20091101051904 Ignore-this: 423cbd4485bbff7aea619c2faa00a0d0 ] [Don't use framework hostility guesses Stefan O'Rear **20091101053639 Ignore-this: 428e3db4eedffa673e0135259ee9148d ] [Typo fix Stefan O'Rear **20091101054308 Ignore-this: 391e1fb090489668db6e0302eb23cd22 ] [Oops, actually commit conduct code Stefan O'Rear **20091101054854 Ignore-this: 339027f40a0d9214a579f8cf2e823a80 ] [Add a hack to inflate the values of devnull items Stefan O'Rear **20091101072134 Ignore-this: 8377d1c133f6303277dcbb961327bfec ] [A quick and dirty luckstone metaplan Stefan O'Rear **20091101090127 Ignore-this: d4df188d18b6c021762780f85264fd6a ] [Disable ekiM for now Stefan O'Rear **20091101200938 Ignore-this: 9bee6578546e4d887d4b4e06503cc8d2 ] [Debug code for ScareMonster/PardonMe Stefan O'Rear **20091101223838 Ignore-this: 1d7e94f813d0f1b7caf7171b1563ebf7 ] [Oops, fix hallu Stefan O'Rear **20091102004710 Ignore-this: 1c2178f44f63132ba26c2ef17e5b92d0 ] [Fix SlowDescent so it connects levels before exhaustively searching them Stefan O'Rear **20091102062237 Ignore-this: 33fedeb725c1784344b84b7327d192ea ] [Don't persist itemhack *oops* Stefan O'Rear **20091102070941 Ignore-this: 8dfde72ecf3827d1c9260c569ec9e4bc ] [Simply and fix cache logic Stefan O'Rear **20091106232526 Ignore-this: d72ea1b97285b4ce61b1a58b13cfb0ad ] [Change Planar to use Set::Object::Weak for caches Stefan O'Rear **20091107011944 Ignore-this: 7c2cb1bcc30f1c70a6e4dfec97769bb5 ] [Consider the possibility that new armor could be better than what we have Stefan O'Rear **20091107065112 Ignore-this: 1ca3dffad9d26aef09bab6e43b863bda ] [Fix FallbackExplore Stefan O'Rear **20091107065226 Ignore-this: d80c5c4786ae103d3364a3ab647486c5 ] [Allow trying on 0-base items Stefan O'Rear **20091107070840 Ignore-this: e275978c6d9c7883249f7b619073289c ] [Don't drop items we are wearing Stefan O'Rear **20091107083607 Ignore-this: 10e8ddba04c6b9b02f668bcb5fe9103a ] [Don't let Equip plans interrupt each other Stefan O'Rear **20091107084003 Ignore-this: efd12e534f7fb99d8f3830406116c346 ] [Implement wielding two-handed weapons Stefan O'Rear **20091112052123 Ignore-this: bdc932053f9d1fdea41d5a4c8438bd88 ] [Generalize Ammo into FightDamage Stefan O'Rear **20091117204256 Ignore-this: a4fabc2fb93e36a10f790ffc7841a3d0 ] [It's possible to cast attack spells at monsters Stefan O'Rear **20091118014129 Ignore-this: e1e89aee2ddabd301eded97685bc4fb1 ] [minor fixes Stefan O'Rear **20091118020236 Ignore-this: f1f3eb78f1a09387c91425064b76cf5c ] [Adjust to new is_advisable pattern Stefan O'Rear **20091121063705 Ignore-this: f572d4302afb0c545271b3ead9f19fb5 ] [Metal armor hurts our magic Stefan O'Rear **20091121095435 Ignore-this: 324f32957f93e64cca14904c2ae5ec07 ] [Properly treat loss of damage from metal armor as long term Stefan O'Rear **20091121095953 Ignore-this: a3ac667dd6129040aeaa729d5f6ec47d ] [Bump value of ammo Stefan O'Rear **20091121100359 Ignore-this: 929e1f9d4c1bd46a67774ee9520857fe ] [Method name spelling changed in framework ais523 **20091122155808 Ignore-this: 82ef05e7d72c498222aad0d84ebf6bfc ] [Require actions to be possible before passing them to framework ais523 **20091122183712 Ignore-this: 1469d72f24a0ff9ef9fd955538ea623a ] [Add chokepoint handling ais523 **20091220204401 Ignore-this: 3e6e95845c5991f6f6bf336e6e2c058e This isn't actually used for anything yet (apart from pretty debug views), but eventually it'll be used to optimise tactical routing. Some of the calculations here are repeated in searching; when I get around to rewriting the search code, I'll try to use the chokepoint map rather than recalculating everything. ] [Generalise and speed up calculate_tme_chain; note breaking change to its API ais523 **20091220204722 Ignore-this: ce6b98f138529f83c78249f25fe968cf ] [Optimisation: ignore strategic plans that are obviously suboptimal ais523 **20091220204921 Ignore-this: 1893853c435613878a60f8a362aa1bb5 ] [ExploreLevel optimisation, part 1 ais523 **20091220205103 Ignore-this: b5772fa738882cf066116fdf5b467fc8 ] [Pluggable routing algorithms, and a start of the new 'chokepoint' algorithm ais523 **20091221181728 Ignore-this: dc83df6782c09080a20b77b321a7bdb1 The way this works is far too long to fit into a version control comment; I may make a blog post about it at some point. This adds the possibility for user-selectable routing algorithms; there are now three, 'world' (ftr), 'level' (the non-ftr algorithm used beforehand), and 'chokepoint' (new). Each falls back to the previous one in situations where it doesn't apply (e.g. 'level' falls back to 'world' after changing level, 'chokepoint' falls back to 'level' if there are threats on the map). The 'chokepoint' algorithm is very slow in this patch, as I haven't optimised it yet; the idea is that it can cache parts of routes between turns, even in the face of a changing map, and hopefully speed up tactical routing massively in the future. ] [Optimising the chokepoint algorithm ais523 **20091221192646 Ignore-this: 9070d35af25591c6941b35a258b5066f ] [Fix segfault (!) ais523 **20091221193213 Ignore-this: 807a4f6d1ac8195dc0f785edaf1e9482 ] [All tme access must now go via tme_from_tile (in case the tme doesn't exist) ais523 **20091221193226 Ignore-this: 883fd896dfe7c155fa20f0012f4eca4a ] [Stop using Set::Object::Weak for anything but plan hashes ais523 **20091221211839 Ignore-this: b5cee1c89f9ffbb497d6b2b7c72cbc5e Set::Object::Weak seems to be really buggy. I'm not entirely sure how, but it seems to manage to decrease the refcount of tiles (particularly chokepoints) beyond where it should be. Then the tiles get deallocated and all hell breaks loose. ] [Tweaks to debug info ais523 **20091221212053 Ignore-this: e1990b2996f653278e2e7ceadb593ca1 ] [Fix interlevel routing to work with lazy routing algorithms ais523 **20091221212119 Ignore-this: 661b45e5123af779b7e28a73cbe0c5db ] [No need to do chokepoint routing during world routing, as it's done the turn after anyway ais523 **20091221214541 Ignore-this: 8157a88b10d5f4823b7f6dd06be3fdec ] [Update only the bits of the chokepoint map we actually need ais523 **20091221231737 Ignore-this: 684ec0cec880e58e95c2777147c25b7 ] [Improve chokepoint finding ais523 **20091221231918 Ignore-this: e814d77e5531e97885d9452fdc643889 ] [Debug view for tactical algorithm selection ais523 **20091221231932 Ignore-this: 363756842cb749bd6b1c95aaf552b3de ] [ExploreLevel optimisation ais523 **20091222015130 Ignore-this: c1c7d3c8c7de198cf028ae1b9ae67075 ] [Turn sanity checking in TME chain calculation back on ais523 **20091222015255 Ignore-this: 78d27db5cdaa78885c1fbc6c639658e6 ] [Optimise TerrainMeta ais523 **20091222044556 Ignore-this: 639515b26eb482235622c09445982ac8 ] [Optimise planspawn ais523 **20091222044620 Ignore-this: ab4fe5a6dcd61be714ca8b51d0c11d57 ] [Prevent the Search costing hack sucking up CPU time as well as not working ais523 **20091222044634 Ignore-this: 863dc5eb9b04fb56e555b4caf0449b26 ] [Fix chokepoint routing for sessile/slow nonthreatening monsters ais523 **20091222050351 Ignore-this: bf61bfa3a0d5c2c159e3fdbf37399f7d The major assumption behind chokepoint routing is that tiles won't change routing properties unless they change type. Sessiles screw that assumption up, just as threats do; so chokepoint routing is turned off when they're in view. A similar fix will be needed for tactical impossibility at some point; that's broken for interlevels at the moment anyway, so the likely fix will be by redoing tactical impossibility. ] [Fix chokepoint routing for dead ends ais523 **20091222051719 Ignore-this: 226c41dbe42a9562e1a4e0c69967f27d The problem this time was that if the player changed direction on a chokepoint that had never been routed before (say, it was a dead end and we'd just explored it), that chokepoint wouldn't get its tactical map regenerated, leading to bad routes being generated near it (occasionally even a TME loop, but mostly just unroutable regions). ] [Tactic toxicity ais523 **20091222202054 Ignore-this: 249d0c21c50b47642762a3ebf1899ea5 Tactical abandonment was causing loads of trouble before; it turns out to be pretty trivial just to rewrite that code to work in a saner manner, so here it is. To avoid oscillations, a tactic is marked toxic; it still participates in routing, but plans that route via it are rejected in favour of ones that don't continue the oscillation. ] [Handle disappearance of chokepoints ais523 **20091222204154 Ignore-this: 6d7eb3ebae8a9414c917b87b0a37fad3 ] [Handle boulder movement ais523 **20091222204206 Ignore-this: 8e44ccf664dc5e09808871d714f5b2ad ] [Handle seeing a monster while standing on a chokepoint ais523 **20091222205354 Ignore-this: 99df783a25ce88bbdee1b4e3fd76748e Beforehand, it was only checking to see if we were standing on a chokepoint last turn, which is not good enough; we might use a different routing algorithm in between. Now, it checks to see if we were standing on a chokepoint at the last chokepoint routing. ] [Don't taint at the current tile, that makes no sense ais523 **20091222211239 Ignore-this: c04d9666c67ed0638e916da05c0054cf ] [Make things more configurable ais523 **20091223113515 Ignore-this: 469222fb13d3c1e945f2f4c7f48a6135 ] [Routing past mimics in Sokoban ais523 **20091228061107 Ignore-this: e1cd77b2c0a1497827b09b9024181683 ] [Fix SokobanPrize to actually go look for the items ais523 **20091228061135 Ignore-this: d1d5c06469f12ff6a28634c7dc97ea8b ] [Avoid oscillating upon getting the Sokoban prize ais523 **20091228063156 Ignore-this: 3b7b308ec1e3bf1e11c7448ade423d11 ] [Don't crash trying to locate Sokoban prize items on other levels ais523 **20091228063207 Ignore-this: 13f34445022dba2a08bf9f3d869ce376 ] [When tunneling is possible, level routing is faster than chokepoint routing ais523 **20091228063830 Ignore-this: 916a9e40f3f482c3f5af37a57f1f7094 ]