| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
These weren't caught by util/unbrace because they weren't at the
beginning of the line.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Spectral Weapon damage now scales with weapon skill similarly to how
player and player ghost damage does. However, the effective skill is
reduced by spell power.
At 0 power, weapon skill is 1/3 as effective.
At max (100) power, weapon skill is fully as effective as on the player.
In between, the effect on skill scales linearly with power.
There's a table in the comments of the code, showing some values.
The numbers might need tweaking, since getting comparable damage at max
power is likely desirable. However, encouraging players to train more
charms is a good thing.
|
|
|
|
|
|
|
|
|
| |
By initialising the weapon's stats using a ghost, more properties can be
easily set. Also vault/wiz-mode placed spectral weapons now get
appropriate stats, as if the spell had been cast at max power and max
weapon skill.
Spectral weapons still shouldn't be placed directly in normal games.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This spell summons 1-3 snaplasher vines at spots adjacent to trees
within the LoS of both the caster and their target.
A single caster can animate no more than 3 vines in total at once.
No vine can be placed such that connectivity is blocked, nor within
several squares of any existing vine. Moreover, no one will cast the
spell if several vines are already in LoS, even if those vines do not
belong to them. Additionally, the vines will die on their own when
the caster leaves LoS of them (or dies).
Ideally, this means that the vines will attack the player from multiple
angles at once, without ever completely blocking off routes or flooding
the screen when multiple casters are present.
|
|
|
|
|
|
|
|
|
|
| |
This enables a MONS spec to just be "chimera" and three depth-
appropriate monsters will be used. This can produce bizarre
results but might be useful. It should also allows things
like "place:Zot:5 chimera vs place:Pan chimera" in Arena.
The filters could be refined further to allow random chimera
to not be completely ridiculous.
|
|
|
|
|
|
|
|
| |
Currently the syntax as implemented is
chimera:foo,bar,baz
But this will most likely change.
|
|\
| |
| |
| | |
Sorry for merge commits, but rerere is pretty limited.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The word "familiar" suggests a summon rather than a magical construct; this
spell is much more like Conjure Ball Lightning than Call Canine Familiar.
Since the suggestion "battlesphere" has met with great approval (or at
least nobody has come up with better), let's use that.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a level 4 conjurations/charms spell which conjures an arcane familiar that
follows the caster around and fires blasts of energy at its creator's target whenever
they cast any projectile-based conjuration.
Like orbs of destruction, they cannot be directly commanded, but should generally
do their job with minimal fuss on the player's part. Unlike orbs of destruction,
they can be targetted and destroyed by enemies.
The familiar is created with a small number of charges. Each time it fires, a charge
is consumed, and the familiar will expire when all these charges are expended
(or after a moderate length of time, if they are not). Only one familiar can be
active at a time, but recasting the spell while one exists will give the familiar
additional charges (up to a limit) and also recall it if out of sight.
If it does not have a clear shot at the chosen target, it will attempt to reposition
itself so that it does; if it can reach a valid spot before the next player turn, it
will fire its own volley, otherwise no shot will be made (though it will hopefully
be better positioned so that it can mirror your spell on the following turn).
|
|\| |
|
| | |
|
|\|
| |
| |
| |
| | |
Merge commits instead of rerere suck, but not being able to comfortably use
the test rig sucks even more.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| | |
There's still a lot of use of monster_level inside monster selection, but
at least the external interface should be free of it.
ZotDef is handled by a hack, might be wrong -- beware.
|
|/
|
|
|
| |
It is absdepth for all other uses; there's no connection between the two
except an extremely ill-thought name.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
Like Death Channel spectral things and snakes from Sticks to Snakes,
they're temporary but not actually summoned and shouldn't be abjurable.
|
|
|
|
|
|
|
|
| |
It's a bit difficult to get a shapeshifter as an unseen horror without
trial and error, so I added this in to allow you to place "shapeshifter
shifter:unseen_horror" to get an unseen horror-flavoured shapeshifter!
It's possible code for this already exists but I couldn't find any.
|
|
|
|
|
| |
They're temporary allies, but not summons, and so shouldn't be
abjurable.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces a new transitory state of monsterness: fake abjuration.
It takes the same values as normal abjuration, but these monsters are
otherwise described as "short lived". They are not abjurable, do not
give EXP, do not leave corpses, and "wither and die" when their timer
runs out.
This will be extended upon for homunculi! Hooray!
I might've missed something, but I think I've gotten everything.
|
|
|
|
|
| |
Bitfields need to have their width documented, even if all architectures
we support define "unsigned" as same as uint32_t.
|
| |
|
|
|
|
|
| |
Instead of monflags for 32-bit MG_ flags and mflags for 64-bit MF_
flags, which are rather confusable, they're now genflags and extflags.
|
|
|
|
|
| |
The flags parameter in mgen_data::mgen_data() is unsigned int, but the
monflags parameter that initializes it in the constructor was uint64_t.
|
|
|
|
|
|
|
| |
This reverts commit 4f45919f3dedc18a2aed6a22d152ceac6d1f6b85.
There's actually no mismatch (oops); monflags holds MG_-type flags, so
it's only 32-bit.
|
|
|
|
|
|
| |
The monflags parameter in mgen_data::mgen_data() is uint64_t, but the
monflags parameter in mgen_data::hostile_at(), which it passed to
mgen_data::mgen_data(), was still unsigned int.
|
|
|
|
|
|
|
|
| |
This seems to be a bit cleaner, and allows fixing issue #2597
(incorrect "comes into view" message when Xom animates your
weapon during a delay).
The message order is still wrong, but that's a different issue.
|
| |
|
|
|
|
| |
Signed-off-by: Robert Vollmert <rvollmert@gmx.net>
|
|
|
|
|
|
|
|
|
|
| |
This removes Khufu-specific code, and allows the spell (or something
much like it) to be reused for e.g. Zin's eventual Imprison ability.
Note that the regeneration rate in the duration is based on HD instead
of actual regeneration rate, in order to avoid the randomness of the
latter. In Khufu's case, it seems to be long enough to fully heal him,
as before. It's a bit hackish, but it's easy enough to change if there
turns out to be a better way.
|
|
|
|
| |
from all monsters sleeping in water far from land (rob).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Rebranded monsters (ie, "kobold name:Durwent name_replace") who are
created with Lua and dgn.create_monster while the player is resting will
generate a "XYZ comes into view" warning message.
However, as this message is triggered by handle_seen_interrupt, which is
triggered before the additional flags are applied, it will disregard
MF_NAME_SUFFIX, MF_NAME_REPLACE, MF_NAME_ADJECTIVE, etc. Applying these
flags earlier fixes this.
|
|
|