This version supports DCSS 0.32-a0.
- Coglin won with CoGl.
- Support for Coglins and dual wielding.
- Use 96 MB as the default clua memory limit.
- Improved debug message channels:
- The "plans" channel only shows the last executed plan. The "plans-all" channel can be enabled to show all plan results.
- New "kite", "kite-all", and "move-all" debug channels.
dsay()can print Monster and clua item tables.
- Plan for movement towards and to pick up runes. These can handle moving through clouds and picking up the rune. They also handle cases where the rune is blocked by firewood.
- Evaluation of equipment sets:
- We evaluate all possible sets of equipment, choosing the set with the best total value.
- An item is removed from the chosen set if it contributes negative value.
- Support for use of one-handed ranged weapons and shields.
- We consider both two-handed and one-handed weapons, including a possible shield. The weapon set used is the one that's part of our best equipment set.
- When using ranged, we always carry the best possible shield, in case we want to switch to a one-handed weapon.
- Better logic for MP using gods with amulet of gSpirit and Mad Mage's Maulers.
- Throwing usage rework:
- Throwing damage can be properly assessed.
- A throwing attack using the most damaging available missile is considered for use against scary monsters and compared to other available attacks.
- At moderate threat levels, try to use a throwing attack with the missile that has the most ammo available.
- A kiting algorithm for situations where we would use a ranged attack and have a speed advantage over nearby monsters.
- If damaging clouds would dissipate, we wait for this before making any movement to those locations.
- A tactical step to put out sticky fire.
- Retreating is re-integrated into tactical steps so that it can work better with other step types.
- Unarmed attack damage and delay is properly considered in terms of attack selection when in bad forms.
- Fleeing under extreme threat allows up to two monsters to opportunity attack us as we flee.
- The "outnumbered" tactical step is disabled for ranged weapon users.
- More accurate information and calculation for monsters with respect to move speed, search, and distance.
This version supports DCSS 0.31.
- Retreating tactics for characters using launchers.
- Greatly improved threat assessment.
- Attack comparison that lets qw use throwing or wands for nasty monsters.
- Demigod won with DgHu
- Djinni won with DjHu
- Other combos won: GrHs, MiHu, NaHu
- Support for Djinni and using HP as MP.
- Scripts to run qw locally:
- The util/run-qw.sh script runs qw for a given number of iterations, optionally keeping track of completed games.
- This script will back up the save and c_persist files if it sees that a crawl run did not remove its save file.
- The util/batch-qw.sh script runs instances of run-qw.sh in parallel via tmux, passing through command-line arguments as necessary.
- A
Savegoal for testing that saves and quits. Upon resumption of the game, qw considers this goal complete. - A
Quitgoal that can be used for testing.
toggle_single_step()enables/disables automatic mode.toggle_delay()enables/disables the delay between actions.get_qw()becomesget_vars(), which now returns both theqwandconsttables.
- Take alternative stairs when threat levels are high at a destination
staircase:
- Track the total threat levels last seen in LOS for all staircases.
- If at least one destination staircase has high threat level, take whichever other staircase has the lowest threat level instead.
- Unvisited stairs are considered to have high threat.
- Assume very high threat levels for unvisited arrival stairs on Vaults:5.
- If a destination staircase has very high threat levels, take a down-hatch to the level instead when one is available.
- If no hatch is available when all destination staircases have very high threat levels, read teleport before taking one of the stairs.
- Exploration for and movement to the Abyssal rune is greatly improved:
- Move towards a reachable position that's both adjacent to unexplored areas and as close as possible to the runelight/rune.
- Always move towards positions related to the Abyssal rune goal if we're at least 75% HP.
- A plan for distance-mapped movement towards runes to cover cases when those are blocked by plants, clouds, or traps.
- Traps are considered traversable, but we try to avoid moving onto them when possible.
- Use of the following wands for individual high threat monsters: acid, iceblast, light, mindburst, paralysis, and quicksilver.
- Use of might and haste potions based on threat.
- Use Fragile equipment. qw gives Fragile items the lowest min rating, but doesn't penalize current or max rating. It will unequip/destroy Fragile items when an upgrade is found, but never temporarily swap Fragile weapons.
- Evaluate Okawaru's capstone gifts similar to how we evaluate acquirement items. For armour, pick the item giving the biggest increase in utility compared to what's currently in the slot.
- Increase valuation of the penetration launcher ego (based on results seen with Stormbow).
- Evaluation for the Dreamshard Necklace.
- Pick up gems we happen to find.
- Retreating for characters using launchers. Evaluate nearby retreat squares based on how many monsters could melee qw at that position compared to our current position. Retreat distance and number of non-reaching ranged monsters are also weighed when considering a potential retreat position.
- Improved threat assessment.
- Monsters are evaluated based on threat level, with usage of buffs such as Finesse, Heroism, Berserk, Might, and Haste being based on the cumulative threat in los and on individual monsters having high threat.
- Attempt to flee to upstairs if threat levels are extremely high and we can't find a retreat position where two of fewer monsters can melee us. If we can't flee in this situation, read teleport.
- Treat certain monsters such as moths of wrath, glass eyes, and hellions as threats that should receive targeting priority over the default considerations like distance and threat level.
- Attempt to flee or teleport when in bad forms when no potions of cancellation are available.
- Track item identification and try to emergency quaff unided potions/read unided scrolls when we need to heal wounds or teleport and those items aren't identified yet.
- Add enemy monsters crawl currently considers as "safe" to the enemy list so we can attack them from safety.
This version supports DCSS 0.30.
- Support for ranged combat with launchers.
- Greatly improved within-level pathing.
- Use of exclusions for unreachable monsters.
- The default 15-rune route now attempts Slime before converting to TSO.
- The
Orbgoal now only has qw seek and pick up the Orb of Zot. This can be used with subsequent non-winning goals to do challenges like Orb run Tomb. - A new
Escapegoal that has qw exit on D:1 (regardless of having the Orb). - A new
Wingoal that executes theOrbgoal followed byEscape. This goal is always selected when the end of the goal list is reached. - qw assumes 32MB of max memory available to lua and will halt execution if 90%
of this limit is reached. Crawl has a new
-lua-max-memoryargument that should be used to increase the memory available to clua to at least 32MB. - A
COROUTINE_THROTTLEvariable to enable or disable use of yielding to break up cpu-intensive calculations. - Crawl should be run with the
-no-throttleargument for WebTiles or dgamelaunch servers, since we can't guarantee that qw won't trigger crawl's lua throttle even if qw's coroutine throttle is enabled. - Gameplans are now referred to as goals in both documentation and code.
- New functions
reset_coroutine()andresume_qw()to aid in debugging when qw halts due to an error. - An
override_goal()function to set which has qw attempt the specified goal. - New functions
print_traversal_map(),print_unexcluded_map(),print_distance_maps(), andprint_distance_map()to display sections of map data in the message log.
- Use of distance mapping to navigate many previously unsolveable pathing
situations:
- Unreachable monsters without
los_no_transthat still prevent resting or autoexplore. - Unreachable monsters with
los_no_transthat we can't move to and that can't move to us. - Unreachable travel destinations due to firewood monsters blocking the path.
- Moving towards unexplored areas to satisfy exploration goals when autoexplore is unable to reach these areas.
- Unreachable monsters without
- Use of exclusions for unreachable monsters:
- Unreachable monsters we can't attack with ranged.
- Unreachable monsters that get us to low HP while we try to use ranged attacks.
- Consider whether we have digging and want to dig out a currently unreachable monster instead of excluding it.
- Move past excluded monsters to the next feature we need to take for travel purposes.
- Mark excluded stairs in exclusions as unsafe. Don't stairdance up a staircase if its destination staircase is unsafe.
- Move towards the abyssal runelights to help find the abyssal rune.
- Move towards the abyssal rune even with hostiles around if HP is not low.
- The Orb run and Abyss are handled in what is now the single move plan list. This allows attempting non-Win goals after the Orb has been obtained, e.g. Orbrun Tomb.
- Waypoints are used on every level, allowing execution of plans that use distance mapping in the Abyss, Pan, and in portals.
- Monster pathing checks now considers each monster's specific traversal abilities.
- qw can recover from missing
c_persistdata and will visit any levels as necessary to re-record data.
- Assessment and use of launcher weapons for characters that start with one.
- Dex and Str from items are valued according to which stat qw's weapon uses.
- On weapons, value the spectral brand twice as much and the electrocution brand half as much. The new heavy brand is valued 33% more than flaming/freezing.
- More accurately keep currently unfavorable items based on future goals:
- Items that won't be disliked by future gods.
- Items that don't remove availability of MP required for future gods.
- Correct evaluation of future god MP requirements for items.
- Evaluation of Str and Dex based on which stat our weapon uses.
- Targeting for throwing and launchers that chooses the best enemy based on relevant criteria like distance, threat, damage level, etc.
- A new tatical step that tries to move away from slimy walls.
- The water movement tactical step can activate if we have a ranged target even if we have no adjacent enemies.
This is the first tagged release of qw. Each future release will coincide with a new version of DCSS that qw supports; this release supports DCSS 0.29. The 0.1.0 changelog covers the major changes to qw since DCSS 0.28.
- Configurable game planning that handles all in-game goals.
- Greatly improved travel and exploration.
- Support for Gauntlet and WizLabs.
- Support for Ignis and Cinder Acolytes.
- Cinder Acolyte support.
- Zealots don't need to specify their starting god in their god list. They never attempt to change gods unless the gameplan list explicitly requests it.
- Chaos Knights abandon Xom according to the new
CK_ABANDONS_XOMvariable, which defaults to true. - Ghouls now prefer axes, and Ogres no longer prefer maces.
- Support for Gauntlet and WizLab portals. These and the Desolation portal are now done by default.
- Improved tactics for Tomb that use potions of hasting, attraction, and magic for Tomb:2 and Tomb:3 ambushes.
- Use potions of might and haste and scrolls of teleport when facing many dangerous monsters in Hell branches.
- Handle the case when permanent teleport/dispersal traps block both paths deeper into the Zot:5 vault. Conditionally enable attempting to walk into these traps until we're able to continue autoexplore.
- Portal tracking that allows transitioning into and out of the plan to enter a portal based on level messages and time passed.
- Collect and use ziggurat figurines when the gameplan list requests visiting a Zig.
- Support for a game planning syntax:
- Each gameplan specifies a branch, level range, rune, god conversion, shopping, or getting the Orb.
- Gameplans are grouped into lists defined in the new
GAMEPLANSrcfile variable, with theDEFAULT_GAMEPLANvariable specifying the active list. The gameplans of the active list be achieved in sequence.
- The
COMBO_CYCLE_LISTsyntax allows specifying a gameplan list on a per-combo basis. - The set of allowed portals is specified in the new
ALLOWED_PORTALSrcfile variable. - qw's version and basic configuration are noted in the note log at game start.
- Travel and exploration systems rewritten:
- Travel between levels and branches proceeds directly to the desired destination instead of first requiring travel to the end of any parent branch.
- Stair finding and exploration is explicitly tracked, with a level being considered explored only when any generated up and down stone stairs have been seen and are reachable.
- A stair exploration process allows qw to try unexplored stairs in order to find any missing stairs.
- Due to precise tracking of autoexplore and stair exploration state, qw is far more capable of continuing exploration instead of getting stuck in disconnected areas.
- Transporter usage in portals, Pan, and the Abyss.
- Ignis support:
- Use fiery armour based on current HP and scary/nasty monster presence.
- The normal plan converts to a god in our god list when piety drops below 1*.
- Use Ru's apocalypse more aggressively.
- Prefer Ru sacrifices by how much piety they're worth.
- Use TSO's cleansing flame ability aggressively.
- Revised "scary" and "nasty" monster lists used for god abilities that incorporates new monsters and adjusts existing monsters based on observed qw death counts.
- Added assessment for more weapon and armour egos and amulet types and such that all assessments apply to both mundane and artefact items.
- Use throwing at the default throwing target based on availability of non-dart projectiles. Train Throwing skill with appropriate utility based on available ammo.
- Shield skill utility calculations updated for the current shield penalty system.
- Collect potions of cancellation and use them when in danger and polymorphed into a bad form.
- Use might and haste for Cerebov.