| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Or after they die, etc.
Also no longer require the torpor snail to be visible, thus
preventing powerful /invis secret tech. rip :(
|
|
|
|
|
|
|
|
|
|
|
|
| |
Turning the monster into a spectre is a really cool effect and causes
some useful things automatically, like making it evil, but has interface
problems (with showing the base monster type, not just the species) and
also monster-monster consistency ones (in general, spectral things can't
cast spells).
There are minor gameplay differences, mostly in that the new monster
will not have any of the resistances/vulnerabities of being undead,
but in general it should play similarly to how it already does.
|
|
|
|
|
|
|
|
|
|
|
|
| |
To avoid certain issues with re-using durations in unexpected
ways (-swift prevented casting Swiftness & gave a bad @ desc),
and also allow the effect to straightforwardly be applied to
player allies. (Answering the question, "wait, why does this
only affect the player?)
Their hd, ac, and damage have been shifted slightly downwards,
and their xp multiplier has been shifted dramatically upward,
in an attempt to avoid making them *too* much stronger.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Lightning torrent didn't work as well as hoped, in practice. The intent
was that it be dangerous unless actively controlled by quickly hitting
the serpent, but be much less threatening if you did this. However,
between misses and low damage hits, it was quite possible to be
attacking a serpent continuously and still fail to prevent the torrent.
Even worse, if the serpent was obstructed by other monsters, there was
often no good way to keep it from unleashing the attack the moment you
killed what was in front of it. A fast monster with relatively
threatening attacks is likely already a priority target without the
need for some other specific mechanic to encourage this.
Thus, lightning torrent is removed, and the retribution discharge is
made dependant on the damage inflicted upon it rather than time from
last discharge (with starting hits triggering a larger shock). Also
raise HD (and thus AF_ELEC damage) slightly, while lowering their base
melee, to shift the damage just a touch more from physical to elemental.
This also fixes a bug where the discharge would not trigger on any
attack that actually killed the serpent.
|
|
|
|
|
|
|
|
| |
Waiting for them to choose to cast it was too slow and unreliable
for the effect, and wouldn't apply to any new creatures summoned
afterward. Now it is simply automatically applied to all appropriate
creatures immediately upon the golem's creation and each turn
thereafter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While the original version may have been conceptually interesting, it
had multiple mechanical problems. Even putting aside the bugs in the
implementation of monster static discharge, frying its allies when
injured doesn't seem like a good mechanic to me, and the way static
discharge jumps means that many messages are generated for every single
event (for similar reasons I don't think it works very well as an active
spell for them either). Also, shock's damage scaling meant it was
basically harmless on a monster of this tier - a cantrip as best.
This commit attempts to take the central concepts of the original
design and make it a more effective and workable monster. Shock
serpents now passively gather charge when in combat. After multiple
turns of building charge, they can unleash it as an unavoidable arc
of lightning aimed at their primary target (and nearby allies, in the
style of dazzling spray) which does substancial damage. However,
injuring the shock serpent discharges ALL of the sustained charge
as a (much weaker) reprisal effect. The idea is that the player will
be encouraged to suffer through the reprisal to avoid a worse attack
and that it might sometimes change target priorities in a large melee
or affect retreat tactics employed.
In addition, I have replaced shock with a stronger electrical bolt
styled after electric eels. The code duplication involved here bugs
me, but shocks if far too weak and lightning bolt too strong and the
electric eel bolt cannot just be made into a spell and given to both
of them without reducing eel fire rate significantly.
Finally, they get slight hd and melee boost, and lose the poison
resistant and poisonous corpses. So much of Snake already leaves
poison corpses and it doesn't seem to me that there's much need for
any poison association here.
Note that a great many numbers here are quite provisional, particularly
charge rate and the power of lightning torrent itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A long-acknowledged problem with sirens is that while their
mesmerisation can be powerful and relevant when supported by dangerous
allies, they are completely harmless on their own yet can still camp
out where you can't reach them and prevent you from leaving as well.
The solution I propose to these staring matches is to make lone sirens
actually dangerous and so I am giving them a powerful and thematic form
of offense: calling up the spirits of the drowned to inflict the same
fate on their captive audience.
When a siren starts to sing, it starts a counter that will (after a
short time) start to continuously call up drowned souls from nearby
deep water. These drowned souls have very short duration and die upon
hitting something, but their touch inflicts considerable AC-ignoring
drowning damage.
Since mesmerisation can already be powerful in the presence of allies,
said counter will not be incremented in the presence of more than a few
HD worth of them (and thus sirens with existing support will not call
up drowned souls). This ability is intended foremost to give threat to
the many sirens one encounters WITHOUT any backup to speak of without
making all others much more dangerous.
I think requiring deep water to perform this ability could work well with
their already-existing behavior to pull the player towards this terrain
and gives a powerful incentive to try and not let that happen.
Most of the numbers involved here are provisional, including rate of
soul calling, damage of individual souls, number of allies required to
inhibit using it, etc. The idea is that it should be quite dangerous on
its own without making situations where a siren's presence is already
dangerous far moreso, but nor should one or two harmless monsters prevent
it outright.
Let's see how it plays.
|
|
|
|
|
|
|
|
|
| |
While I still feel like the attack could create a number of interesting
tactical problems, the mostly-irresistable player relocation was fairly
unpopular, so let's try giving them something else instead.
(I'm pretty sure outright removing an AF type doesn't cause save compat
issues if it couldn't occur in a ghost_demon struct, right?)
|
|
|
|
|
|
|
|
|
| |
Intended as part of another overall nerf compared to old treants.
I wouldn't mind seeing a 3rd option for what kind of fauna might
be hiding in their foliage, but I'm not sure what a sensible choice
might be (there seem to be few options that are both thematically
plausible and mechanically reasonable).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this ability, the treant causes the network of gnarled roots running
beneath the whole of the earth to rise and shift and otherwise impede the
footing of any hostile creatures near it, turning it into a shifting and
unstable undergrowth.
In practical terms, this applies a 5 aut movement speed penalty and halves
the EV of any hostile creature standing on solid ground within sight of the
treant, while the effect is active. Creatures above lava and water (even
shallow) are unaffected. Flying creatures are also unimpeded, but the roots
have a high chance of rising up and pulling them back to the ground (though
this can be evaded).
The aim of this is to provide an alternate mechanism (following the reduction
in ally production) to prevent them being trivially kitable, while themselves
remaining slow, and also to offer a support mechanism to other nearby creatures.
The flavor messages could probably use more variety.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rather than a larger pool of slowly-replenshing durably-summoned bees
and wasps, a treant now has a fixed 50% chance of spawning with 2-4
wasps inside it. These count as normal monsters for experience purposes,
are not replenished, and will be released as a free action once the treant
is reduced below 50% hp.
Admittedly this makes them somewhat similar to normal band members, but
the presence or absense of the band is concealed until the player has
already commited to the battle (and may well be in melee range of the
'band leader'), making it harder to seperate the two of them.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In an effort to create more flavorful pond-dwellers for the branch
than electric eels and goldfish come water nymphs (who will not try
to steal anything from you, thank goodness).
They are speed 10 (move 80%) amphibious, moderately fragile creatures
with weak melee, but two tricks that interact with the water.
Firstly, they have a waterstrike spell. This is a smite-targetted
water attack, and notably stronger than airstrike, though with the
important caveat that it can only be used if the target is in/above
water at the time.
Secondly, to give them opportunity to use this (since who would
voluntarily enter the water against such a monster?), they have a
touch attack that can instantly transport both themselves and the
touched creature back to the water. If the nymph has a patrol point
(as I intend normally generated ones to have, at their own water
source) they will try to teleport to that body of water specifically,
though any nymphs that lack one will attempt to use whatever body
of water is closest.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are a stronger wolf monster for Forest, with a few quirks.
Ocassionally non-summoned wolves can howl for their pack, which
causes summoned spirit wolves to appear continously at intervals
from outside the player's LoS and track towards them, until the
effect ends. They have a very small chance of using this each turn,
rising considerably while at low health, encouraging players to
kill them quickly lest they be forced to deal with the rest of
their pack.
Additionally, the wolves' partially spiritual nature gives them
immunity to poison and negative energy, though they otherwise
count as living creatures.
As usual, I suspect the duration/frequency/number of summons will
need further adjustment once it has been seen in real games. It is
a bit tricky to preserve the feeling of a pack slowly converging
upon you without making the duration long enough to be obnoxious
or making the moment-to-moment density high enough to be overwhelming.
|
|
|
|
|
|
|
|
|
|
| |
These are eldritch tentacle-style solo tentacle monsters, swift-moving
and with damageless constriction and a mild melee attack. More
significantly, like starspawn tentacles, they will pull a constricted
enemy backwards, and in this case specifically attempt to hold them
next to any adjacent trees.
Intended for use with dryads.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are wandering confluxes of necromantic power that have no offense
of their own, but can sacrifice themselves to 'revive' allied monsters
near them at the moment they are killed.
If a non-zombified undead is killed while in LoS of an allied lost soul,
the soul will die instead and the undead will be restored to full hp (and
have its status effects reset). If a zombifiable living creature dies while
in LoS of an allied lost soul, instead the soul will assume its likeness,
turning into a spellcasting spectral of the same type with 'fake' (as with
shadow creatures) copies of the original's gear.
Lost souls move quickly and attempt to maintain range, but are otherwise
fragile. If they find themselves near foes but no allies they could aid,
they will flicker out of the living world and reappearing near some other
ally elsewhere in the level (and temporarily submerge into the air there).
Tactically, they can serve to augment singular threats and also create
situations where the player might rather choose to ignore the most
threatening creatures so as to force the lost soul to sacrifice itself
for a harmless one, or to kill the soul directly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Flayed ghosts can now inflict the anguish they experienced in life upon
the living. This is a smite-targeted ability that causes terrible sympathetic
wounds to appear upon a living foe's body, inflicting irresistable damage
that scales with max hp, though will never reduce the target to less than
~15-20 hp.
Critically, the actual injuries are illusory, the pain and weakness of them
maintained only through contact with the ghost's tortured spirit. Killing the
flayed ghost will instantly end the effect and heal all hp lost to it (and clean
up all associated blood splatters), as will spending some number of turns out of
the ghost's presence.
|
| |
|
|
|
|
|
|
|
|
| |
It was previously possible for a prison not to be vetoed if there was
a single permissible space for each pushed monster, even if some of
these push destinations were shared by more than one creature. This
sometimes resulted in monsters being left in walls when imprison was
used in highly crowded areas. Hopefully this should no longer happen.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Imprison will now push monsters adjacent to the target out of the way of
the prison if there is any room for them to go. Also, Zins' divine power
will not fail to imprison monsters standing next to such unremarkable
objects as fountains (or water, or stairs, or many other things). Instead,
the old feature will be preserved and restored when the prison expires.
(This means that doors are no longer destroyed by this ability, though
traps still are)
Things which still create obstacles for imprison are features which are
solid but not opaque (eg: statues, trees) or creatures which are immobile.
|
| |
|
|
|
|
|
|
|
|
| |
These are moderately-armoured support soldiers who can cast might
other and word of recall, which requires several turns for them to
fully recite (during which time it can be interrupted by disabling
or killing them), and after which will teleport a moderate number
of I_NORMAL or better monsters to near the convoker's location.
|
|
|
|
|
|
|
|
|
|
|
| |
Without actual monster mutations, this is not very interesting, yet at least
avoids surprising results.
One possibility is to reuse a bunch of existing effects, giving the monster
that enchantment with infinite duration. Those could be: slow, sick (no
regen), lowered mr, swift, dazed (lose 20% turns), mute (no shouting or
casting), blind; they are far more drastic than most player muts as you
wouldn't notice the effect otherwise.
|
|
|
|
|
|
| |
Whenever a starcursed mass sustains non-lethal damage, they will immediately
merge with a random adjacent starcursed mass. This gives players an option to
help supress their proliferation, so long as they do not ignore them for long.
|
|
|
|
|
|
| |
Relatively low-power abyssal monsters which inflict disease (and possible
str and dex damage) passively when near the player. Also has a mild stat-
draining melee attack.
|
|
|
|
|
| |
Only partially done, but some stuff commited now since I fear that some of
the next bits may break things.
|
| |
|
|
|
|
|
|
| |
With lots of monsters of view, ~15% of time was spent just doing this copy.
In all of those cases, it's a read-only operation, so a const pointer is just
as good.
|
|
|
|
|
|
|
| |
"File:" is shown in your editor's status bar.
"Written by:" was used only for the first person who changed a file. We got
git for that now, and pre-DCSS history is so woefully inaccurate it doesn't
really matter.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move it into its own function, and have it set the base type associated
with the color. This means that the hacks in draco_subspecies() to get
Tiamat's base type and resistances based on color are no longer
necessary, so they're removed.
As a side effect, Tiamat is now always initialized to one of her random
colors instead of always starting out as a purple draconian; if this
were not the case, her base type would be the base draconian until her
first color change, since her genus and species are both set to
MONS_DRACONIAN.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
crawl-ref/source/directn.cc
crawl-ref/source/enum.h
crawl-ref/source/main.cc
crawl-ref/source/mon-abil.cc
crawl-ref/source/mon-abil.h
crawl-ref/source/mon-act.cc
crawl-ref/source/mon-stuff.cc
crawl-ref/source/monster.cc
crawl-ref/source/spells3.cc
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
| |
Add a demonic tentacle monster, suitable for use with the malign
gateway spell. This is a tentacle with a fixed base position, and no
monster acting as the "base" in the way the main kraken body does for
kraken tentacles.
Refactor some of the tentacle code to handle broken assumptions (there
is no "head" monster in this case, so the tentacle end is what we pay
attention to for damage synch, attitude checks etc.).
|
|\ |
|
| | |
|
|/
|
|
|
|
|
|
| |
There are still some bugs with this - in some circumstance the head
will attack the tentacles (just when the player is out of sight? not
really sure).
Damage propagation/tentacle cleanup still not handled.
|
|
|
|
|
| |
Don't give experience for killing ballistomycetes, instead give
experience for killing all ballistos and giant spores on a level.
|
|
|
|
|
|
|
| |
Some classes were erroneously referred to as 'struct' in forward
declarations, and vice versa.
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
|
|
|
|
|
|
|
|
|
|
|
| |
When a spore pops or a ballistomycete is killed randomly select a
single ballisto to activate instead of activating the entire level's
worth. Along with this, only deactivate the ballisto that produced a
spore instead of deactivating the entire level.
Rationale: since inactive ballistos don't interrupt travel anymore it's
nicer from an interface perspective to keep most of the ballistos on
the level inactive.
|
|
|
|
|
| |
Drop the deactivation message, simplify and change the activation
messaging.
|
|
|
|
|
|
|
|
| |
New status: if a ballistomycete or giant spore dies any ballistos on
the level get +1 to a counter. Ballistos with a count higher than zero
get spore production on a short (~150 turn) timer. When a spore is
spawned (by a ballisto) the count of all ballistos on the level is
decreased by 1.
|
|
|
|
|
|
| |
Give giant spores a chance of creating a ballistomycete when they move
while wandering. This ability is on a timer, so they can't create more
than 1 ballisto per 20 turns. Numbers may need tweaking.
|
|
A lot of monstuff.cc was moved into mon-abil.cc (monster abilities),
mon-act.cc (the main monster loop), mon-behv.cc (monster behaviour) and
mon-cast.cc (monster spells). mstuff2.cc was completely merged into
other files.
|