| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
| |
.cc, moving its contents into the new stepdown.cc and strings.cc.
(The latter also got many donations from libutil.h.)
Down with stuff! Up the new flesh!
|
|
|
|
|
|
|
| |
Or after they die, etc.
Also no longer require the torpor snail to be visible, thus
preventing powerful /invis secret tech. rip :(
|
|
|
|
|
|
|
|
|
| |
This time when your engulfer is trampled away. We don't handle the case
where a monster's engulfer is trampled away, sorry: if we want to do
that, we should generalise the constriction code and remove the engulf
enchantment/duration.
Make clear_far_engulf() public to support this change.
|
|
|
|
|
| |
The status still doesn't end immediately when the engulfer dies etc.:
see bug #7394.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The hit dice-reduction effect of draining has historically had
several problems. It reduced monsters' maximum hp, which made it
look like they were getting *less* injured, since they had a
higher proportion of hp remaining. It lowered monster XP & piety
gains, which was irrelevant but misled new players who somehow
learned about it. It occasionally led to "degenerate" hit-and-run
tactics.
And most damningly of all, it hardly ever mattered - it
triggered on ~13% of hits, which meant that on low HD monsters
the extra damage would kill them before the effect was
noticeable, and against high HD monsters, the effect would only
ever be noticeable at all with the aforementioned hit-and-run
tactics.
So, to fix those problems, draining now gives a "drained" status,
that reduces monster HD for most combat-related purposes
(spellcasting, accuracy, damage, etc.), but not max hp, xp, or
piety. This is temporary, but will last 20-30 turns, and
refreshes every time the drain triggers - essentially, it should
last until you kill the monster, unless you run away.
The temp-status is now applied to the monster every time they get
drained; the chance of the drain brand activating has been reduced
to 1/2, from 2/3. This should focus the effects of the brand more
on the unique part of it, the draining/weakening effect.
As a bonus, this also means that players can no longer have their
followers permanently weakened by draining effects. Beogh buff!
|
|
|
|
| |
As part of a wider scheme to make draining temporary.
|
|
|
|
|
|
| |
...by moving bloodspatter functions into their own file.
Death to misc.cc! Long live the new file hierarchy!
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
Monsters should now try to escape from Arachne's
ensnare immediately (on whatever incredibly rare
occasions that is relevant), and shouldn't try to
break out of net traps on the turn they get netted.
This technically breaks save compat with the old
newly_webbed prop, but in a harmless way.
|
| |
|
|
|
|
| |
From nets & webs.
|
|
|
|
|
| |
Yes, this means they don't demand payment now and again, and stop
following you when the initial bribe expires.
|
|
|
|
|
| |
Monsters are now distracted for 1-5 turns on a 3% chance per pile of
gold in LOS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If your equipment would have been corroded under the old system, you now
get a temporary (but stacking) -5 AC and -3 weapon damage. Corrosion
against armour-wearing monsters instead halves their AC.
Committer's notes:
Fixed whitespace and fit to Trunk
Added Corrosion entry to hiscores.cc
The original patch showed the slaying malus on the weapon, which may
be preferable to a status light.
gammafunk noted that ouch.cc iterates over equipment when deciding
when to corrode, this might make less sense under the new system.
-reaverb
|
| |
|
|
|
|
|
|
|
|
|
| |
The idea behind the miasma death explosion is interesting, but in
general miasma can be extremely annoying and the cloud rather easy
to avoid. This is especially true in the layout of Crypt, which is
the only place they show up outside of vaults. The retching attack
gave a rare special case that very rarely mattered and didn't help
to distinguish them all that much.
|
|
|
|
|
| |
They never really worked as enemies - their only unique aspect, partner
resurrection, was just annoying.
|
|
|
|
| |
It's fairly spammy and doesn't do anything interesting.
|
|
|
|
| |
This fixes all the instances caught by unbrace.
|
| |
|
|
|
|
|
|
| |
They become un-bribed, and other bribed creatures that can see them also
become un-bribed; a permabribe increment for the creature is deducted
against the branch bribe score for this action.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
It previously put out forest fires, which made sense in Forest but
is mostly a rare special case now. It also gave friendlies ENCH_WIND
_AIDED, which was supposed to increase their ranged accuracy. Since
spriggan air mages aren't around fauns and satyrs anymore, there's
no need for it.
I didn't actually remove the code for the effects of ENCH_WIND_AIDED,
since I couldn't find them. Either it was never actually implemented
or I was missing something obvious.
|
|
|
|
| |
Also move/update a recite comment.
|
|
|
|
|
|
|
|
|
|
|
| |
Confusingly it's not used by silver star's SPELL_HOLY_LIGHT. In theory it
seems to be used by Zin's silver corona recite effect, but since nothing
resists or is vulnerable to it it actually does nothing. Silver corona
still just does sticky flame-levels of damage to all chaotic targets, as
it claims to in the comment. ZAP_HOLY_LIGHT apparently existed just to
make things even more confusing (if a player somehow managed to cast
SPELL_HOLY_LIGHT they would get a completely different effect to the
monster version!).
|
|
|
|
|
|
|
|
|
|
| |
With sirens much easier to access in general now, I think the ramp-up
time on their drowned soul call is both overly generous and needless
complexity. Now the rate of drowned souls is independant of time and
can start immediately under the circumstances that allow it.
Also provide a message if other allies show up to interrupt the call,
which might make this interaction a bit clearer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The reduced CBL duration was so low that the ball lightning would
frequently explode before even being able to reach targets in your
LoS (or before you could step away, even if you did so immediately
on open ground). This commit restores the old duration and makes
a few other changes to reduce power level instead:
Ball lightning conjured with less spellpower explode for less damage
(and their explosion is less likely to be radius 3), the number of
ball lightning conjured per cast has been reduced (and the variance
decreased somewhat), and ball lightning which leave the player's
line of sight immediately dissipate without exploding (so that it
is no longer possible to aim them at things you cannot see and cannot
harm you). The aim is that this will make it impractical against
monsters out of sight, while being less awkward against those IN
sight (and less likely to immediately engulf the caster before being
able to reach anything else).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of throwing nets accumulating persistent damage as monsters
struggled against them (and then becoming impossible to stack in
your inventory afterward), they are either outright destroyed by
the struggle or remain in normal condition. This should make them
a little less cumbersome to use.
This commit doesn't actually touch any of the escape formulas (which
are an impressive snarl that could definitely use tending to), since
probably they would need rewriting from scratch and I didn't want to
undertake that so close to 0.14, with various other things still in
the air.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This spell clones a selected allied creature, randomly swapping the
clone and original to disguise which is real and which is fake (and
also not displaying the summon as 'summoned', for the same reason).
The mirrored creature does have the full offensive capabilities of
the original, but only half the hp (all of them are dispelled upon
killing the creator, as you would expect).
This is intended as part of a rakshasa revamp, and will eventually
replace the existing uses of MONS_RAKSHASA_FAKE and associated code.
(And can probably do similar for Mara as well, with a few tweaks,
tidying the various uses of duplication under a simpler codebase).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
Sunray had a number of quirks that were rather non-transparent if
uninformed about them, and not usually very interesting from a
tactical perspective (namely: it ignored repel missiles, did bonus
damage to vampires and shadows, and couldn't hurt things that were
invisible). There seemed a general agreement that it probably ought
to simply be removed.
Stone arrow replaces it in the spriggan druid spellbook.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently if a monster enters LOS and goes invisible on the same turn,
it can disappear from the screen before the player has a proper
indication of where it was. This commit makes the following changes:
1. Fixes invisible monster indicators so that they can reliably be set
in the monster map knowledge update code at locations that of the
current monster being processed in this loop. The previous code tried
to set this indicator, but due to how the old loop cleared all flags
other than MAP_SEEN_FLAG and did tiles cell draws in the same pass as
map knowledge updates, these wouldn't work. This commit adds a
MAP_INVISIBLE_UPDATE flag to help retain MAP_INVISIBLE_MONSTER when
necessary, as well as a second loop in show_init that loops over a
vector of the updated cells found in the radius_iterator loop. This
second loop should be fast enough that it doesn't significantly affect
performance.
2. Add 'bool went_unseen_this_turn' and 'coord_def unseen_pos' to the
monster class (with the necessary save compat code) to allow monsters
that go invisible in LOS to always get an invisible indicator. The
code prefers to use indicators arising from the monster failing
stealth checks if those occur; they are based on the monster's true
position and hence are usually more accurate.
3. Somewhat simplify the stealth check code for invis indicators, and
only ever allow one invis indicator per monster. The stealth check
logic perhaps could be simplified further (there are multiple checks),
but I've preserved the existing checks for now. Also turned a
coinflip() in one of the secondary checks into a seeded/hashed
coinflip so it won't change over screen updates.
This commit lets players with antennae always see the location of an
invisible monster through an invis indicator, and sets the invis
indicator on the monster's last position whenever a monster becomes
unseen (e.g. going invis or already being invis but the player removes
sinv). If the monster fails a stealth check, that potentially more
accurate information is favored over the unseen position.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Greater Demon was hit especially hard by the overall summoning
nerfs for reasons that aren't immediately obvious. Given that the
strongest demons are guaranteed to eventually turn hostile, it was
a fairly common tactic to keep your distance from them while they
fought (lest you be tormented or hellfired without warning), but
now not only do you need to stay closer to them for them to continue
fighting, but it is difficult to actually leave them behind if you
try! Even if you tell the demon to wait, if it attempts to engage
a hostile (as it will if any are around) and then loses LoS to you,
it will dutifully run right back after you, even if what you WANTED
was to lose LoS to it. (Also, a small cap means fewer friendly demons
to quickly dispatch any that turn hostile before they can harm you).
The charm duration was extremely low compared to the full summon
duration of the demons, frequently making 1s that were friendly for
only 10 turns and then hostile for 90 turns afterward. Combined with
the noticeable chance of all demons being outright hostile from the
start, I feel that the risk/reward ration of this spell was just not
equitable anymore.
This commit makes three changes aimed at keeping the intent of the
spell while making it more useable under the new summoning conditions:
1) Summoned 1s remain charmed for longer (duration somewhat influenced
by spellpower)
2) Overall duration of summons is reduced (which should make it easier
to abjure any hostile demons you end up with, whether they are
hostile immediately or later)
3) 1s breaking free of charm lose their first action afterward, so that
they can no longer torment/hellfire the player as the very first
indication of their becoming hostile.
Ideally this keeps the spell's identity as one with powerful upsides,
but also risks, while tilting the balance more in the player's favor
and making the risks more manageable when forced to maintain proximity
with temperamental fiends.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Level 9 Conjuration/Ice; generates a cone-shaped great blast of ice
around a specified target. The minimum range of the cone is 3, and the
maximum is LOS at maximum spellpower; damage within a minimum-range cone
is equivalent to Ice Storm, and falls off with the square of the distance
for larger cones.
Leaves freezing clouds over the affected area, like Ice Storm; they
dissipate really quickly over large areas, though.
Targets hit with Glaciate are flash-frozen; they are subject to slow
movement for three turns.
Targets killed with Glaciate have a 3/5 chance of becoming a block of
ice (similar to a pillar of salt).
Also contains a monster-castable version of the spell.
Replaces Ice Storm; most of Ice Storm's code disappears (ZAP_ICE_STORM is
TAG_MAJOR_VERSION == 34'd out). Go fight Lom Lobon to see the monster
version.
Large chunks of this either originate from a patch from Keanan Smith
(Siegurt), seen at https://crawl.develz.org/mantis/view.php?id=7760, or
from the following discussion on Tavern:
https://crawl.develz.org/tavern/viewtopic.php?f=8&t=9854
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the new spore-esque CBL behaviour, it was common to see players
simply conjure up some ball lightnings if they thought enemies were near
and wait an absurdly long time for the balls to wander over to their
targets without necessarily ever seeing them (especially notable in wide
open spaces).
This cuts the timeout to a third of what it once was - you're now
reasonably likely to see them explode even if you're walking in the
opposite direction from their path. Thus, you're more likely to get
caught up in your own blasts if you're not careful.
Hopefully this will bring the spell back from "overwhelmingly powerful"
to just "quite powerful". Time will tell.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the alignment of the summoner of a spectral weapon, battlesphere,
or grand avatar changes, previously these avatars were not changing
alignment along with the summoner. This adds monster::align_avatars()
which is called appropriately in mons_att_changed() and in
monster::add_ench() for the case of ENCH_CHARM. When summoners go to
any form of ATT_*NEUTRAL, we remove all their avatars. For grand
avatars, I've added an end_grand_avatar() function to help with this.
Monsters with ENCH_GRAND_AVATAR that change attitude but who are not the
summoner also lose that enchantment. This also adds
monster::remove_avatars() which is called by ::align_avatars() when
necessary as well as when a monster's soul is enslaved.
There is also a bugfix in setting of ENCH_GRAND_AVATAR upon casting
where it would skip setting enchantment on the summoner if summoner was
charmed. Always set the enchant on the owner, and never set the enchant
on any kind of avatar to avoid having an avatar of an avatar.
|
| |
|
|
|
|
|
|
| |
Previously, injury bonds would remain on friendly monsters after the
golem's death, and even continue to cut incoming damage in half,
despite there being no source for the damage to be redirected to.
|
|
|
|
|
|
|
|
| |
The spell is infinite duration for monsters; M_SHROUD starts the monster
with one.
The ability to cast the spell is only really intended for monsters that
start with the spell so that they can renew it.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Primarily, this introduces an M_OZOCUBUS_ARMOUR that pre-generates
tagged monsters with the enchantment already in effect and that does not
time out. The spell still exists, and also gives armour that doesn't
time out; this would be most likely to be used a monster that has
M_OZOCUBUS_ARMOUR.
Since the original implementation was for Fannar, it makes sense that
he's the first to get it back. I haven't touched his current spell set
because he's probably still going to die quickly enough that he won't
waste a turn casting it again.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With the forest dispersal work done, and with everything working up to
the original designer's standards, this is ready for trunk.
Conflicts:
crawl-ref/source/beam.cc
crawl-ref/source/dat/des/branches/pan.des
crawl-ref/source/enum.h
crawl-ref/source/hiscores.cc
crawl-ref/source/melee_attack.cc
crawl-ref/source/mgen_enum.h
crawl-ref/source/mon-cast.cc
crawl-ref/source/mon-data.h
crawl-ref/source/mon-ench.cc
crawl-ref/source/mon-info.cc
crawl-ref/source/mon-info.h
crawl-ref/source/mon-place.cc
crawl-ref/source/mon-spll.h
crawl-ref/source/mon-stuff.cc
crawl-ref/source/mon-util.cc
crawl-ref/source/mutation.cc
crawl-ref/source/output.cc
crawl-ref/source/player.cc
crawl-ref/source/spl-data.h
crawl-ref/source/status.cc
crawl-ref/source/wiz-you.cc
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Based on Punishment of Excess from the proposal.
Casting spells while afflicted by this hex progressively hinders your
spellcasting success (or adds antimagic enchantment levels if you are a
monster).
Technically this could be extended to have an effect specific to
individual spell schools, but that would result in a lot of duplication
of durations and the like.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Listed in the proposal as Icon of Greatness.
A grand avatar behaves similarly to both a spectral weapon and a
battlesphere in that it attacks targets the caster and its nearby allies
either attack in melee or by battlesphere-triggered conjurations; it
is only guaranteed to attack if the triggerer does at least 15 damage,
though it may trigger randomly below that threshold.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Originally Black Hole in the proposal, but with a Singularity spell
in the works that's too misleading a name.
This spell empowers the caster and its allies to randomly drain speed,
skills, abilities, or magic on successful damaging melee attacks,
healing the ally making the attack.
This commit also gives black suns a (temporary?) spell set loosely based
in the proposal; they also get Malign Offering, which I see as fitting
both the necromancy theme and the ability of the caster to heal their
allies (through Black Mark).
|
| |
| |
| |
| |
| |
| | |
Heals allies in LOS temporarily for an average of (2 * HD) hit points,
lasting an average of (HD * 10) aut; expiry never kills the
beneficiaries.
|