| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
To refactor out the several calls to find_agent() in cloud.cc.
|
| |
|
|
|
|
| |
And expand the documentation for pos and link in particular.
|
|
|
|
|
|
|
|
|
|
|
| |
Item inventory weights (based on item mass) generally don't lead to
meaningful decisions that justify the inventory juggling and interface
problems that come from having burden states. The 52-slot limit is a
better system for limiting inventory and providing inventory-related
decisions because it's not so fine-grained and doesn't require the
player to examine weights for each slot. Work is ongoing to improve
the slot system by consolidating food types and handling strategic
consumables in a different way.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In particular, the potion and shop lists don't need to be generated in
advance of using the ability altogether; they only last as long as the
ability menu is present (thus they're still stored, as if you get a HUP
in the middle of it we want to present the same choices).
Since shop prices no longer depend on the generated shops, item
generation for the shops is left to the shops. (If we want to preserve
their item quality, we'll need a level_number paramter in shop specs,
but I doubt players will notice the difference at all.)
RIP item_def::to_spec; you will not be missed.
|
|
|
|
|
|
|
|
|
| |
Pay half the value of items in one of three randomly generated shops to
generate that shop on a level that can generate shops that you haven't
visited yet. This shop appears on the Overview screen with a darkened
level name so you know exactly where it appeared, and is announced (and
its location marked) when you arrive on the level so long as you are
still following Gozag at the time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously this ability tried to throw victims into a "hard" dungeon
feature for 50% increased damage. This was mostly an excuse add extra
damage, it was almost always applied (hard dungeon features are
abundant), and being next to a single hard feature doesn't have very
much relevance to player strategy. The new version scores each landing
site based on 1) all monsters adjacent to the site scored by the
square of their difficulty and 2) how many adjacent open squares there
are to the site. The end result is that hostile crushers will prefer
to throw the player some place more dangerous. For non-player victims,
the crusher (whether friendly or hostile) considers only distance from
the player as the score, preferring to throw as far from the player as
possible. The final landing site is a random weighted choice (using
distance) on along the throw path from the victim to the site with the
best score, with a random best site chosen if there's a tie in the
scores.
The minimum throw distance has been reduced to 2 squares from the
player, and the damage die size is 4 * monster HD now that the hard
feature check is no longer used.
|
| |
|
|
|
|
|
| |
Sometimes, they're there to emphasize a break between two sections of code,
which is good. In a majority of cases, though, they're just inconsistent.
|
| |
|
| |
|
|
|
|
|
| |
Seriously, even preparing this commit gave me a pain in the triangle between
the thumb and index finger's bases and the wrist.
|
|
|
|
| |
This introduces a new pseudo-agent, akin to ANON_FRIENDLY_MONSTER.
|
|
|
|
| |
(I wonder if this saves even one kilobyte?)
|
|
|
|
|
|
|
|
| |
It triggers three times over 30 aut, just as the current implementation
does, only the player can otherwise act during that time.
Reading a scroll or casting a spell interrupts the recitation - you
can't pronounce two things at once, after all.
|
|
|
|
|
|
|
| |
By setting this, the player can explore the level without losing is slower
allies. This should make it much nicer to use zombies without recall.
The setting should probably be saved, but I wanted to get some feedback on it
before changing minor version.
|
|
|
|
|
| |
These don't do anything that the defaults wouldn't do except
disqualify level_id from being trivially copyable.
|
| |
|
|
|
|
|
| |
It doesn't check for depths exceeding the range, though, as that can change
between game modes.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's not 100% ready, but should be functional enough, and 0.12 coming soon,
let's test it at least a bit. The numbers are probably totally out of
whack, but that's what trunk players are for. At least the code should be
sound.
This does include the jelly form that I'm strongly inclined to remove, yet
it's easy to axe without affecting save compat (as no player can be in that
form currently). All the code can be found by grepping for TRAN_JELLY,
except for one commit that's not bad to have (some refactoring of eating).
Generally, the jelly suffers from being abusable for nutrition, would need
some code for item [non-]use, and would make the player screwed as it can
neither take/deal damage (tree), avoid it (wisp) or run away (wisp, pig,
bat, porcupine).
|
| |
| |
| |
| | |
It may be good to rename the file to represent what it does.
|
|/
|
|
|
|
|
| |
This does not include trunk versions older than some time after 0.11
branching, although you can upgrade such saves in two steps, by loading in
0.11 and then in current trunk. I doubt this will lead to any troubles
as 0.10 saves are not compatible anyway.
|
| |
|
|
|
|
| |
No need to compile that code for every file.
|
|
|
|
|
|
|
|
|
|
| |
For most header files, this only saves on having to recompile a
small number of source files, but there are also a few headers
where small changes would now take significantly less time.
This is most obvious for the Tiles build for which the dependencies
have been greatly reduced, so that the only additional includes
when compared to console are strictly library or tile related.
|
|
|
|
| |
It's a duplicate of cglyph_t with an additional field that's only used once.
|
|
|
|
| |
Hard to come up with something less greppable...
|
| |
|
|
|
|
|
|
|
|
|
| |
We now support "listopt =" to clear the list, and support "-=" with many
more options. We also warn when "listopt = foo" is interpreted to mean
"append", because that is likely to change in 0.12.
These changes are intended to go into 0.11, but we'll need to update the
options guide first.
|
| |
|
|
|
|
|
|
|
|
|
| |
This is mostly to avoid the bit-packing of the previous commit.
Admittedly, it's a bit overkill for that.
This could probably use some cleanup: currently we store attacker,
defender, and position in the base class, even though not all subclasses
have those.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I had to rename distance() (in coord.h) to distance2() because it conflicts
with the STL function to compare 2 iterators. Not a bad change given how it
returns the square of the distance anyway.
I also had to rename the message global variable (in message.cc) to buffer.
I tried to fix and improve the coding style has much as I could, but I
probably missed a few given how huge and tedious it is.
I also didn't touch crawl-gdb.py, and the stuff in prebuilt, rltiles/tool
and util/levcomp.*, because I have no clue about those.
|
| |
|
|
|
|
| |
sacrificable and sacrificiable are also accepted.
|
|
|
|
| |
Only the ones which make autoexplore greedy.
|
|
|
|
|
|
|
|
|
| |
This avoids unnecessary non-inlined copies.
Also, we had a few large functions that had no reason for inlining, let's
have them be regular ones.
I also made "static inline" always use the same order, for easier grepping.
|
|
|
|
|
|
| |
This might be not the only use of item_def::is_valid() that became broken
with introduction of NUM_FOO meaning "unidentified", but since a vast majority
of calls refer to real items, this can't be done by default.
|
| |
|
| |
|
|
|
|
| |
For way too paranoid and underinclusive values of "simple".
|
|
|
|
|
|
|
|
|
|
|
|
| |
actor::constricting is now a pointer to a map from mids to durations;
if the actor is not constricting anything, we use a NULL pointer rather
than an empty map to save memory.
Save compatibility: Because constrictees might be loaded after
constrictors (and vice versa), we cannot convert the old constriction
arrays (which use mindex) until all the monsters have been loaded.
Instead, save the constriction data temporarily, and create the maps
at the end of tag_read_level_monsters().
|
| |
|
|\
| |
| |
| |
| | |
This includes fixes for 64834896234968 places in master that add new uses of
LEVEL_FOO and so on.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Omitted:
* mspec.type (uses a lot of magic values in the negatives)
* item_def.orig_monnum (todo, +1 trick)
A few minor problems are fixed here:
* renamed gas spores passed mindex for monster_type
* demon summoning would break on addition/deletion of demon types
* vaults spawning zombified uniques would fail to mark them as used
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
An imperial buttload of places assumes these to be 8 bits, which makes it
impossible to add support for 256 (or more!) colours. This commit tries
to allow expanding it in the future; sadly, it is badly incomplete. At
least, new code can use the new type.
Also, beware of "branded" colours which use bits above 8 for inverse,
underline, etc.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Objects, even const ones, should not be defined in header files, or
there will be one copy for each source file that included that header.
Move the offending definitions into source files, and replace them
with extern declarations in the headers.
Also, make the opc_* instances const and not static.
|
|\| |
|