Angband Borg -- Mods
This page describes archived changes in the
Table of Contents
The Borg no longer attempts to attack the upper left corner of
the dungeon. This was caused by some mis-typed attack functions.
The Borg now tries not to guess that a monster is multi-hued unless
absolutely necessary, and notices when a monster "flickers", using
this information to convert it into a multi-hued monster.
The Borg now only fears a depth if he "flees" that depth, and as
soon as he completes a depth, he removes any fear of any level up
to and including the next depth.
The Borg now pretends that multiplying monsters move more quickly
than they normally move, to increase the effective "danger" of such
monsters, to avoid wandering into a nasty death trap.
The Borg starts ignoring "multiplier" monsters after spending 5000
turns on a level, this helps prevent excessive farming.
The Borg now allows the use of missiles against monsters which are
standing in unknown grids, or grids which once contained walls, but
only sometimes, just in case the monster can pass through walls.
The Borg now throws certain inexpensive, non-wearable, damage causing
objects (including "extra" flasks of oil) at monsters, and will even
purchase extra flasks of oil to use as "missiles" if the shops run out
of normal (cheap) ammo. This should help low level mages.
The Borg will correctly process the new "special lighting effects",
but note that use of the "view_torch_grids" option without the use
of the "view_special_lite" option will cause problems.
The Borg now keeps track of how often he has been forced to "flee"
or "leave" a given depth, and uses this information to determine if
he is "prepared" for that depth. When the Borg "completes" a given
level, the count is cleared for the next deepest level. The effect
is to force the Borg to prove he is ready for a level before he can
attempt a level which recently scared him. The Borg is allowed to
"recall" to a depth which scares him, if the level above is less
scary, and when he arrives, he will "power-dive" upwards until he
is no longer worried.
The Borg now uses "phase door" instead of "teleport" if it seems
that "phase door" will be useful, and stockpiles phase door scrolls
in his inventory and home.
The Borg now uses special code when all the "standard" goals fail,
which first attempts to recall, and then, at several different values,
first "boosts" the "bravery" level, and then attempts to perform several
tasks, such as running away, or attacking monsters, using the boosted
bravery. The Borg should only "twitch" when stuck on destroyed levels.
The "avoidance" level now matches the current hit-points, except when
attempting to do something with "boosted" bravery.
The Borg now bases the "fear" of invisible monsters on the action of
the monster, either physical attack (fear based on dungeon level), or
spell attack (fear based on type of spell). Note that when the Borg
is "blind", most monsters appear to be "invisible", so being "blind"
is normally very scary.
The Borg now uses a special function to determine what monster is
responsible for each "message" involving a monster, and processes
these messages in several passes. Any message that does not have
a matching monster is assumed to refer to an invisible monster, and
induces general fear of the surrounding sectors.
The "retreat" code now chooses the "closest" destination.
The Borg now uses a "local" random number generator and will not
affect the random properties of the game itself.
The Borg now reduces the "regional danger" induced by invisible
monsters over time.
The Borg now attemps to "retreat" from danger towards corridors and
pillars, and when this is not possible, attempts to back away from
danger anyway, giving preference in town to grids near stairs.
The "method" of using each spell/prayer, and the "usefulness" of
each spell/prayer, is now encoded in a table. The spells/prayers
are now learned in order of useful-ness, and all non-dangerous ones
are "tested" in the town for the experience.
The Borg now attempts to recharge empty wands/staffs.
The Borg now uses a fairly large number of spells and prayers.
The Borg has been optimized again. The "borg_update_lite()" and
"borg_update_view()" routines were rewritten based on the newly
optimized code in "cave.c". The "crush" routines only run once
each after the inventory changes. The "borg_attack()" function
is bypassed if there are no monsters within line of sight on the
The Borg now destroys items in three passes, "borg_crush_junk()"
(worthless items), "borg_crush_hole()" (to get a free inventory
slot), and "borg_crush_slow()" (to reduce weight when slow). The
first two steps consider an entire pile at a time. The third is
never used in town.
The Borg now keeps track of which grids have "currently displayed
features", which grids are "probably perma-lit", and which grids
are "probably not perma-lit", and uses this information to "call
lite" in when standing in the center of any "3x3" region of grids
in which the "center" grid is "dark" and the "diagonal" grids are
floors, which will allow "checkerboard" rooms to be lit, plus all
normal rooms, and only lite up occasional sections of corridor,
and never more than once.
The Borg now assumes that all veins are magma, but notices that
a quartz vein is a quartz vein when he attempts to tunnel into
it, and will only tunnel veins which he has a decent chance of
digging into with the current weapon.
The Borg now assumes that all closed door are not jammed, but
notices that jammed doors are jammed when he attempts to open
them, and will bash or destroy jammed doors as appropriate.
The Borg now checks for interesting grids first in the set of
torch lit grids, then in the set of viewable grids, then in the
current panel, and finally in the entire dungeon. This should
be rather efficient, even though some computation is repeated.
The most expensive step seems to be checking in the set of
viewable grids, and this is primarily due to computing flows.
The Borg now treats "traps" and "doors" and "rubble" and "embedded
treasure" in the same way he treates "unexplored grids". The result
is a faster algorithm, and a more intelligent exploration method.
The Borg now uses a much cleaner "keypress stealer", using a new
function hook in "z-util.c", which should not only be faster, but
should produce much more meaningful "profile" results.
The Borg now works with the special "lighting" effects, and does
not disable them by default. In general, you should turn off the
lighting effects, the output refresh flags, and the savefile
compression flag, by hand.
The Borg can now use physical attacks, missile attacks, spell
bolts (magic missile, electric bolt, frost bolt, acid bolt,
fire bolt), spell beams (light), spell balls (stinking cloud,
cold ball, acid ball, fire ball), spell storms (cloud kill,
ice storm, meteor storm, mana storm), prayer balls (orb of
draining), rod bolts (electric bolt, cold bolt, acid bolt,
fire bolt), rod beams (light), rod balls (electric ball,
cold ball, acid ball, fire ball), wand bolts (magic missile,
elec bolt, cold bolt, acid bolt, fire bolt), wand beams (light),
wand balls (stinking cloud, electric ball, cold ball, acid ball,
fire ball, dragon cold, dragon fire).
The Borg has new code which allows him to analyze his possible
physical attacks, missile attacks, spell attacks, etc, taking
into account total inflicted damage, and required expense, and
to choose the "best" attack available. The total inflicted
damage calculations take into account the semantics of ball
attacks and bolt attacks, the possibility of missing when using
physical attacks or missile attacks, the possibility of failing
spell attacks and item usage, monster resistances, etc.
The Borg now keeps track of what terrain features are at what
grids, more or less, and uses a special temporary array to help
track monsters and objects, so now the attr/char codes at each
location are no longer memorized. New flags mark grids as on
the current panel, seen visually this turn, and seen visually
at some point. The Borg assumes that monsters/objects can not
appear in walls or doors, which is normally correct, but which
may cause bizarre behavior when "ghosts" are encountered, but
now we use a special "floor" code for such situations, so it
should be okay now.
The Borg now takes account of infravision and telepathy when
attempting to "track" monsters.
The Borg now attempts to "follow" monsters which flee into dark
hallways, or step around corners, by "guessing" at a new possible
location for the monster, instead of simply deleting the monster.
Currently, the code is very restrictive, to prevent infinite loops
involving running in circles looking for a monster which disappeared.
The Borg no longer attacks "sleeping" monsters in town, unless
they are "wimpy", or are "easy" and "in the way".
The Borg no longer considers "dangerous" destination grids.
The Borg no longer flees instantly when he encounters an invisible
monster or a monster with a resistable distance attack, but instead
waits until the danger has actually become significant.
The Borg now calculates danger from monsters in a more realistic
manner, taking into account resistances and relative speed.
The Borg now notices "invisible" and "offscreen" and "bizarre"
monsters, and attributes general "danger" to every grid in the
11x11 "region" in which the monster was noticed, as well as every
grid in the surrounding regions. The amount of danger is relative
to the type of encounter, and to the current dungeon level.
The Borg now prefers "bows" to "crossbows" if playing a mage or ranger,
but will still use a "crossbow" if it is very powerful, such as Cubragol.
The Borg now searches for secret doors in a more intelligent manner,
and does not search in "detected" sectors unless he is bored.
The Borg now tracks which 11x33 "sectors" have been affected by
various detection spells, and uses this information to attempt to
detect traps, doors, walls, etc, on each sector as soon as possible,
and in the most efficient way.
The Borg now uses his Home to "stockpile" items, dropping items in the
Home which he may need later, taking items from the Home which he needs
and cannot get them in a store, buying items from stores to place in the
Home for later usage, and removing items from the Home which are no
longer needed and selling them to a store or destroying them.
The Borg now attempts (in stores) to calculate the "optimal" set of
equipment and to take the appropriate steps to instantiate that set
of equipment, and to always keep his "best" ring on his "tight" finger,
and to remove any "worthless" equipment to be sold or destroyed.
The Borg now rests to recover hitpoints and spellpoints, and to wait
for various unpleasant conditions to wear off, but only if the danger
of the current grid is minimal.
The Borg now checks the "danger" of each grid while he is building
a potential "path", and refuses to consider paths which enter grids
which appear "dangerous". This allows him to walk around floating
eyes and sleeping monsters, and to avoid rooms containing monsters
with nasty distance attacks, etc.
The Borg can now calculate the "danger" of a grid, based on various
factors, primarily related to the amount of "damage" and "annoyance"
that monsters near that grid could do to the Borg if he were in that
grid. Unfortunately, there are no standard "units" for comparing
"damage" to "annoyance", so the "annoyance" values are converted
into "damage" values, more or less arbitrarily.
The Borg now "tracks" objects and monsters, and maintains information
about them such as location, when last seen, kind or race, and other
information for monsters such as whether the monster is asleep, and
how "fast" the monster appears to be moving.
The Borg now calculates the "value" of "possible worlds", instead of
trying, for example, to evaluate the "power" of a potential equipment
item relative to the current world. This allows him to notice that
wearing, say, a shield of resist fire, while already wearing a shield
of resistance, would be worthless. It also allows him to correctly
evaluate the number of blows which he would get with a given weapon,
taking into account all bonuses from the resulting equipment set.
And the same calculations are used to determine if the Borg has
enough "abilities", such as "satisfying hunger" and "refueling".
The Borg now maintains information about store inventory, and uses
this information to determine what items he should sell to stores,
and what items he should buy from stores.
The Borg now maintains information about his inventory and equipment,
and uses this information to determine what actions are possible.
The Borg now maintains a "map" of the world to help him "flow" from
place to place.
Go back to the
Angband Borg Home Page
See also Ben Harrison's Home Page /
Ben Harrison /