| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
A good deal of functions move to the two new files, mon-poly and
mon-message. Of the others, some go to where they are used, some to
mon-util, and a few are made member methods of monster.
This probably breaks Xcode compilation, and I'm not able to test
the changes I made to MSVC that will (hopefully) keep it working.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is_chaotic() and is_unclean() have been changed to return an int
roughly equal to what would have been returned before by the Zin
recite function. Some bool flags were added to the function to make
it still work right for the other uses (e.g. silver).
Prince Ribbit is no longer specially vulnerable to Recite, and insane/
sluggish uniques are unclean rather than chaotic, which seems more
consistent with the other uses of the terms.
The special case for nonliving and plant monsters to be unrecitable
is removed.
|
|
|
|
| |
Don't bother detecting it.
|
|
|
|
|
| |
Yes, this means they don't demand payment now and again, and stop
following you when the initial bribe expires.
|
|
|
|
|
|
|
|
|
| |
It was moving the wrong item to the top of the cell - I wanted
item_def::index(), not item_def::link.
Also, if the gold was the second item on the cell, it would get missed, and
if more than one identical item was being generated on the same tile before
and after the gold, it could also get missed.
|
|
|
|
| |
Should catch the crash in #8584.
|
| |
|
|
|
|
| |
Whoops.
|
|
|
|
|
|
|
|
| |
Most players intuitively expect it to behave this way and are surprised
when it isn't.
You obviously can't bribe monsters in your LOS or that are chasing you,
so Bribe Branch retains its strategic nature.
|
|
|
|
|
| |
Fix other item being detected in place of gold (#8499); don't show the
message for it (elliptic).
|
|
|
|
| |
You passively detect gold on entering a level.
|
|
|
|
|
| |
Prevents abuses like clearing out the Orc:$ end entirely offscreen; also
gives the opportunity for some nice dialogue.
|
|
|
|
|
|
| |
This needs to be communicated somehow, but only if the player has
actually used the ability; this might happen pending some changes to
track Gozag ability use.
|
|
|
|
|
|
|
|
|
|
| |
Spend 3000 gold for a chance of temporarily turning some of the
inhabitants of a branch good neutral, or possibly even friendly. Bribes
are only effective against newly generated monsters (i.e. on level
creation or monsters that spawn afterwards); the fund times out over
time and more quickly with the number of enemies affected, upon which
neutral enemies turn hostile again; friendly followers will continue to
follow the player subject to occasional follow-up payments.
|
|
|
|
|
| |
Fighting near the gold piles of recently-defeated enemies boosts your
skills.
|
| |
|
|
|
|
|
| |
The enchantment list was being preserved, but not the cache of which ones
were active. Reloading the game would succesfully reset the cache.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's almost never relevant (with Mennas being possibly the only edge
case), and has a number of negative effects: dungeon generation depending
on the player's god in Pan, strange interactions with getting additional
chances to convert on piety breakpoints, and generally a lot of code for
a pretty questionable gain. Flavour-wise it seems perfectly reasonable
that the holies in the dungeon just all see you as insufficiently pious,
or some kind of a heretic (as is the case for non-holy religious
monsters).
Kept some of the holy speech for the case where an Elyvilon worshipper
pacifies a holy.
|
|
|
|
|
|
|
| |
Touches a lot of files since their #includes have to be edited.
(Pushing now since it shouldn't break anything and keeping it updated
is nasty.)
|
|
|
|
|
| |
They're on every list of problematic Forest monsters, and neither of Forest
proposals has a place for them. Plus, even worse, they're summoners.
|
|
|
|
|
| |
I left them only where the contents is not indented, like in a namespace
or a template.
|
| |
|
|
|
|
|
| |
It degenerated to a simple loop over menv, hardly worth any syntactic sugar.
I kept it for now, though.
|
|
|
|
|
| |
Guys, actually trying to compile after a pull --rebase would be nice;
there's 16 commits in a row which don't even build.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Normally, monsters are stored in a list (env.mons or menv for short).
There is a grid (env.mgrid or mgrd for short) which maps the position (x,
y) of the monster to its index in the list. Transiting monsters, however,
exist outside both the monster list and the monster grid. They are stored
separately, and they do not really have positions.
The deporkalation code inside dactions.cc was not transiting-monster
aware. It would call monster::move_to_pos on transiting hogs, just as on
non-transiting hogs. When it did so, it would write their index inside the
monster list into the monster grid. Of course, since these hogs were not
in the monster list in the first place, this "index" was bogus.
Within a few turns one of several unrelated parts Crawl would try to
investigate the monster grid and trip over the bogus entry, triggering this
assertion in monster_at inside mon-util.cc:
ASSERT(mindex <= MAX_MONSTERS);
Changes:
1. Make the deporkalation code transiting-monster aware. Do not call
monster::move_to_pos on transiting monsters. (Fixes the crash.)
2. Add some informative comments.
3. Make an implicit type conversion from monster to follower explicit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While the very low per-turn chance of the wolves using their spirit howl
was intended to mean that a majority of packs would not use it at all
before being killed, in practice the randomness involved meant that
sometimes a player could be afflicted by the status several encounters in
a row. Worse, for a player with good defenses, the wolf attacks presented
little danger, but still took a very long time to stop. In general, this
could lead to them being an irritating encounter that nonetheless presented
little danger. This commit is aimed at trying to address this.
Spirit howl now lasts less time, but the spawning of packs within it happens
somewhat more rapidly. Spirit wolves themselves hit noticably harder and are
a little more accurate.
The wolves attracted by spirit howl no longer count as summons, but are
finite in number across all uses of spirit howl (ie: they represent the
rest of the spirit pack, attracted from outside the waking world). This has
a couple ramifications: there is now some reward for actually fighting them
instead of running away until they time out (yet one that cannot be farmed)
and (significantly) there is an upper limit on how many times the player has
to deal with this effect, instead of potentially having to deal with it over
and over and over again as one clears Forest.
Wolves within sight of the player no longer disappear when the howl ends,
though those out of view do (and are thus eligable to be called again by a
subsequent spirit howl), providing another tangible strategic advantage to
killing them instead of running away until they stop showing up.
Finally, there is also a lengthly cooldown after the effect ends before any
wolf can use it again (so there is no longer any chance for one to howl the
moment the first one expires)
Overall, the aim is that spirit howl occur less times in total, take up less
of the player's overall time, be a little less annoying in some ways, and also
provide more actual threat when it occurs.
This commit also fixes multiple bugs with the original implementation:
non-hostile wolves will no longer howl, placement will more properly respect
LoS instead of sometimes spawning them immediately in view, and some
pathfinding bugs that could cause wolves to not properly pursue the player
have been fixed.
|
| |
|
|
|
|
|
| |
The perl regexp to do so is:
s&ASSERT\(([^\n]+) >= ([^\n]+)\);\s*ASSERT\(\1 < ([^\n]+)\);&ASSERT_RANGE($1, $2, $3);&sg;
|
| |
|
|
|
|
|
|
|
| |
Convert conjunctive assertions into separate assertions. This ought to be correctness preserving. I ran the stress tests and didn't notice anything unusual. While I have confidence in it, if you are the slightest bit suspicious of this, please roll it back.
Found instances with `ASSERT(\([^(|]*\) && \([^)|]*\))`
Manually inspected each instance.
|
| |
|
|
|
|
|
| |
Via externs.h -> bitary.h, it was effectively included by everything anyway,
and this way simplifies include chains.
|
| |
|
|
|
|
| |
Kirke's porkalator could create hell hogs and holy swine, but these monsters weren't checked for on reversion.
|
|
|
|
| |
Uses dactions as per Pikel's slave band.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Dactions which affect monsters (such as abandoning or joining certain
gods, enslaving new souls, killing Pikel) now apply not only to
monsters currently on a level, but monsters that have yet to transit
to a level (eg: fell down a shaft or were banished, but the player
has not yet visited their destination).
Previously, it was possible to visit the Abyss and find (say)
still-friendly undead slaves there after abandoning Yred in the
meantime. This also fixes the unfortunate case of shafted Pikel slave
not getting the news about their cruel slavemaster's death.
|
|
|
|
| |
reconversion).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
For way too paranoid and underinclusive values of "simple".
|
| |
|
|
|
|
|
| |
At least, they finally fixed glaring errors in their handling of printf(),
so warning-less clang builds are now a reasonable possibility.
|
|
|
|
|
|
|
|
|
| |
I did not reintroduce dynamic branch flags, but used a daction instead
to clear the flag on remaining levels.
Old games that have Tomb:3 already generated but didn't pick up the rune yet
will still get an error message when picking it up, but it's otherwise
harmless.
|
|
|
|
|
| |
This also reveals how bad the beam blaming code is, need to rewrite that soon
-- mostly because of problems with reflection.
|
|
|
|
|
|
|
|
| |
You could burn all piety on Receive Cadavers right before abandoning her,
switch to a god who accepts corpses and instantly get ~140 piety.
The corpses don't disappear but become thoroughly rotten, unfit for any
abuse.
|