| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Make Tukima's Dance weapons (almost) only attack their
original owner. Removes the last reason to do fiddly weapon-swapping.
|
|
|
|
|
|
|
|
| |
(Committer's note: The old Tukima's Dance was fiddly and
not well-liked. Changing it into something hexier seemed
like a popular & reasonable idea.
I refactored the spell code & fixed a few small issues.)
|
|
|
|
|
|
|
| |
Because it's very common that corpses will be hidden by items above
them, especially now that that's guaranteed if there are any items
above them, the 'z' behaviour it made was too restrictive.
This reverts commit f040398a199a9f2bda755c0802287558edecba2e.
|
|
|
|
|
|
|
|
|
|
| |
If there's a visible corpse nearby, the behaviour is the same. If
there are no items, 'z' should not waste time/MP, while you can
still force a cast with 'Z', so that you can animate corpses that
are below other items and you can't see with ^X.
Sadly, this doesn't really work for Yred since there's no way to
force a use of an ability the way there is with a spell.
|
|
|
|
|
|
|
|
| |
It was fairly fiddly and unclear in its mechanics, and elemental
summoning is now covered by the elemental evokers (and possibly the storm
god at some point in the future too)ยท Moved Summon Forest from the book
of the Warp to replace it in the book of Summonings, and added Dispersal
to replace it in the book of Wizardry.
|
|
|
|
| |
Less boring, at least.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the aim of creating summons that have more differentiated uses
from each other, this spell summons something that can provide good
anti-caster support while being less directly mighty than other
higher level summons, particularly against enemies where its antimagic
bite contributes little.
It is a level 6 summoning/hexes spell which summons a mana viper (with
a cap of 2) whose antimagic effect scales noticably with spellpower,
but its hp and damage do not. The general idea is that it is less
good at killing many things on its own (and spellpower alone cannot
turn it into something very tanky) but an investment in the relevant
skills can provide a very strong augment against vulnerable enemies.
(It IS still pretty strong even against non-casters, I admit, but also
a level 6 dual-school spell with a less common secondary school, so
maybe is fine as-is).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the spirit of adding more dynamic options to summon play besides
'make more creatures to throw at things', Forceful Dismissal is a
level 6 summonings spell which violently unsummons all of your nearby
summoned creatures, causing magical explosions around where each of
them were.
The explosion damage is based both on spellpower as well as the HD of
the creature being unsummoned (so imps make much less effective 'bombs'
than a hell sentinel would).
Damage numbers are even more provisional than usual, since it's
somewhat hard to know how this will play outside a real game. The aim
is not to make immediately detonating summons in melee range the
generally optimal thing to do, as the full damage over a summon's
lifetime ought to exceed it in many cases, but rather something you
might use in cases where burst damage was especially important, or
your defensive line looked about to crumble anyway, and so on.
I considered adding a drawback that casting it would temporarily
prevent RE-summoning anything for several turns, making it more
desireable to get further value out of the living summon before
exploding it, but I'm not certain that's necessary, and would like to
see how this version plays out first.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the idea of introducing more summoning spells that a bit
unique in some way, this is a level 7 Summoning/Conjurations spell
which summons a single golem-like being that possesses a subset of
the caster's own conjurations.
The spell list is assembled deterministically, somewhat similar to
player ghosts (though different in a number of regards). The first
3 spell slots draw from a 'primary' list containing direct
conjurations like bolt of cold or poison arrow, while the next 2
are from a 'secondary' list which tends to contain AoE effects and
cloud spells, as well as things like airstrike. Spells are selected
roughly in order of level and power, with the player's higher spell
skills having a small effect. In practice, I think the servitor
will fairly transparently possess a selection of the player's better
spells, without anyone needing to think much on how it arrived at
this list.
Many of the highest level spells (like fire storm and shatter) are
excluded not only for power reasons, but also because a servitor
using these could be downright dangerous to its caster. The main
exception I made here was CBL, which is allowed (being both
lower-level and often similarly dangerous when the player uses it,
though I open to changing this).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summon Ugly Thing was never a particularly impressive spell and the
summon cap changes have left it even more underwhelming these days.
Still, there is a need for a solid midrange summon available to good
god worshipers, and this is a shot at assembling one that might be
more interesting than the ubiquitous ugly things.
The spell can summon either a manticore, lindwurm, harpy (multiples
at higher power), or a sphinx (much rarer except at high power), which
I feel are solid midrange creatures with a shared mythological theme
and some relatively unobtrusive gimmicks (and more of an emphasis
on ranged combat than its immediate 'upgrade' in Summon Hydra).
Somewhat similarly to Shadow Creatures, multiple harpies count as a
single creature for the purposes of the spell's cap, and the creatures
also receive a modest HD boost based on high spellpower (I'm still
somewhat divided on this, unlike with Ice Beast, but it does help the
spell scale more strongly with spellpower that it otherwise would;
perhaps there is some higher-tier creature accessible with high power
that could help bridge this gap on its own?)
As a natural consequence of Summon Ugly Thing being replaced, Kirke
also acquires this spell. This is effectively a buff for her, but as
one of the least dangerous midgame uniques, I am sure she can handle it,
and a selection of Greek mythological beasts are surely at least as
suitable things for her to summon as... whatever ugly things are.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mass Abjuration was never an especially popular spell at level 6,
but the recent changes which cause summons to be automatically
abjured upon their caster's death renders its usefulness considerably
lower. This experimental change is aimed at making the spell more
appealing given how readily available this faux-mass-abjuration
already is to everyone.
Aura of Abjuration causes the caster to continuously perform a
lower power version of Mass Abjuration each turn for a reasonably
long duration, sending new summons away shortly after they arrive
(given sufficient power). This version could even be a useful
pre-cast option for battles with summon-focused enemies and provides
tactical options which old Mass Abjuration did not, and might give
the spell some play in the current environment.
|
|
|
|
|
|
|
|
| |
This was neither a popular nor powerful nor especially interesting
spell, which was basically 'Call Imp, except a lot more of them'.
Making the demons more individually powerful only further steps on
the toes of the many other demon summoning spells that already
exist, so I think it is fine to simply trim it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summon Dragon was hit extremely hard by the summon cap, as the effective
strength of a summoned monster is superlinear with their quantity, and
2 dragons simply does not provide even remote offensive or defensive
parity with equal level spells in other schools, such as tornado or
shatter (since killing groups of monsters quickly is a pretty good form
of defense). It is true that it could be used in consort with other
summon spells to increase its impact, but the same is equally true of
pairing tornado with other conjurations.
A level 9 spell is a huge investment and its impact should be equally
huge, which does not seem at all the case at present. When testing it
against other equal-level spells in a range of realistic combat
scenarios, Summon Dragon takes more time to defeat even modest encounters
than its peers (often much more), while generally exposing the player
to more danger in the process (both due to its delay in killing ranged
threats and also that you can no longer form an effective screen of
dragons with only 2 of them lasting more than a couple turns). In many
cases, the difference is extreme. And the fact that the dragons last
forever is of limited practical advantage (except in resisting monster
abjuration).
Raising its summon cap might address this somewhat, but rather than
simply making it more spammable in the old sense, I have decided to give
it behavior which further distinguishes it from common summon spells while
making it suitably impactful for its spell level and the investment that
represents.
Summon Dragon is replaced by Dragon's Call, which gives the player a
temporary status that will continuously summon in dragons adjacent to
and attacking random hostiles within the player's LoS. These dragons have
an individually short duration and will appear only while hostiles are
present (so you cannot build up an army while outside of battle, nor
carry your previous army from battle to battle unless they occur with
only short delay between them). The delay between summoning each new
dragon is proportional to how many you already have, meaning that they
will arrive more quickly when you have none, and much more slowly while
several are already active. Each new dragon summoned costs the caster a
small amount of mp, and the effect will end if you run out. Also, it
generates a continuous amount of noise while the status lasts. Finally,
there is a somewhat lengthly cooldown between times the effect can be
activated.
The effect is definitely strong, as befits a level 9 spell, but
interestingly it also excells at slightly different situations than
other level 9 spells do. It is distinctly less powerful against massed
groups of foes, but potentially stronger against a series of moderate
to small encounters back-to-back due to its duration. And it definitely
(to me, anyway) feels splashy in a way that a level 9 spell ought to.
Of course, numbers are still provisional, as always.
(For now I have retained the original Summon Dragon as a monster spell,
as much of the additional complexity of Dragon's Call does not add much
to a monster version over just summoning a couple more dragons in the
usual manner)
|
|
|
|
|
| |
Weaves shadow creatures roughly from D:<evocations power> (including
out-of-depth D depths).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
crawl-ref/source/enum.h
crawl-ref/source/spl-data.h
crawl-ref/source/spl-summoning.cc
|
| |
| |
| |
| |
| |
| |
| | |
For beams, you get Shadow Bolt; for non-beams, you get Shadow Shard.
There are a couple of weird cases with this that should go away with the
next commit.
|
| |
| |
| |
| |
| |
| |
| | |
It's already been replaced in the Summoner starting book, and is one of
the summon spells that mostly just relies on spamming large numbers of
monsters. Alistair's Intoxication is shuffled around in a couple of books
to replace it in Envenomations.
|
| |
| |
| |
| |
| |
| | |
The guardian golem is an ally with little attack power, but it can cast
injury bond to protect its allies. When below half health it can overheat,
causing it to explode on death.
|
| |
| |
| |
| | |
Replaces Summon Scorpions in the Book of Callings.
|
|/
|
|
| |
It temporarily changes nearby terrain to trees and water and summons a dryad.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| | |
Also contains some merging of duplicate code.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
| |
Not only is doing so generally a complete waste of time, it's often
directly counterproductive to the summoner, as it will erase monsters
that have moved to engage the player and replace them with ones around
the summoner (who is often further away, especially if the summons
are fast).
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
This has most noticeably been an issue with, say, Ilsuiw's water
elementals (or old-and-then-new-again elemental wellsprings) and
Sojobo's air elementals; it tended to get extremely spammy and tedious.
There are some monster spells for which I've set the cap fairly high -
perhaps unnecessarily so; these can be tinkered with as necessary.
|
| |
|
|
|
|
|
|
|
| |
Also, make giant leeches slither.
Giant amoebae can't be zombified currently, but if that changes they
should probably crawl rather than walk.
|
|
|
|
|
| |
This allows easier understanding of what code uses the properties,
reduces chances of conflicts, and helps catch mispellings.
|
|
|
|
|
|
|
|
|
|
| |
If the Spectral Weapon hasn't attacked by the player's next turn, it
gets reset. This occurs either right before the next order is given to
the weapon, or (if the player did something else) after the player's
turn.
Unlike 04540f5, this reset mechanism doesn't prevent the spectral weapon
from ever attacking.
|
|
|
|
|
|
|
| |
It was preventing them from attacking at all. qoala is working on a
better solution to the original problem ("saving up" a SW attack).
This reverts commit 04540f58001281626c71620fdd56ef4cf216de79.
|
|
|
|
|
|
| |
This parallels how battlesphere already resets if it couldn't carry out
the order. Now a trapped spectral weapon won't still have an attack
order if it is later freed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For each summoning spell there is a limit of how
many summons can be created. Going over this limit
means that the older ones will time out in a turn
or two.
Currently this is applied only to non-necromantic
non-permanent player summons.
This summonsdata[] array can be modified to change
the cap and timeout (i.e. how long old summons last
when they are replaced by new ones) per spell type.
To support a new spell, a called to summoned_monster
is required after the monster has been created, and
the spell needs to be listed in summonsdata[].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Numerous tweaks and code review:
* Fix errors and save compat issues introduced by the merge
* Formatting fixes
* Some text and capitalisation tweaks
* Clean up some leftover comments / code
* Change some debugging messages to dprf
* Move some bits of code to match enum positions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The spectral weapon no longer attacks immediately following its owner's
attack. On its own turn, it attempts to path towards the target and
attacks exactly once when first able. (Internally, its owner attacking
triggers a "ready" flag, which is consumed on attack.)
This should better mirror battlesphere, and fixes a number of issues
with non-player spectral weapon (not) attacking when it wasn't supposed
to.
It seems to work properly for:
* player SW attacking monster
* allied non-player SW attacking monster
* monster SW attacking player
There are issues (see below) with:
* monster SW attacking (or at least signaled to attack) allied monster
Known issues:
* Sometimes an enemy spectral weapon that is told to target an ally will
path towards the player instead.
* Spectral weapon still attributes all its kills and damage to the player.
* Spectral weapon doesn't listen to charm/end charm on its owner.
* Spectral weapon needs to be reset at an appropriate time.
* Allied spectral weapon with an invisible target might leak information
in summon_can_attack?
|
|
|
|
|
|
|
|
|
|
|
| |
Now the SW dissipates with its owner, and doesn't crash if orphaned.
The SW follows its owner (mostly), instead of the player.
Unified monster and player code for triggering SW to attack, and
disabled triggering if running an fsim.
Fixed crash on attacking own spectral weapon.
|
|
|
|
|
|
|
|
|
|
|
| |
There's no way for a monster to cast it, even if it were on its spell
list, but the spectral weapon code largely is aware of its owner now.
Known issues:
- The spectral weapon doesn't fade following the defeat of its owner.
- Enemy monster spectral weapon attacks freely.
- Allied monster spectral weapon never attacks.
- Spectral weapon doesn't follow charming/uncharming of its owner.
|
|
|
|
|
|
|
|
| |
Finding the spectral weapon now has its own function, which is reused in
a number of places.
Ending the spectral weapon is handled similar to battlesphere, and now
clears the player property pertaining to the spectral weapon.
|
|
|
|
|
|
| |
new spells: infusion, song of slaying, spectral weapon, spirit shield
new book: book of battle
new mons: MONS_SPECTRAL_WEAPON
|
|
|
|
|
| |
And make it only ever summon one monster per cast. As a level one spell
it doesn't really need to suddenly double in efficiency at max power.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The behaviour should be preserved exactly or almost exactly, only the code
changes from totally, utterly unreadable to merely hard to read.
Actual differences:
* strong OODs in shallow branches would degenerate into picking a monster
randomly from the whole branch, now they pick from the bottom level (or
so-called OOD cap of Elf:7, Tomb:5, D:31 and Vaults:15).
* Zot no longer replaces requests for Zot:5 by Zot:4, and proper hells,
$(HELL):4-7 by $(HELL):3.
* this means hell monster sets need fixing!
* zombie size doesn't affect their spawning
* zombie selection obeys the depth passed
* which makes zombie sets pretty limited -- needs review/redesign?
The new format is:
{ 9, 19, 826, SEMI, MONS_YAK },
which means: yaks can spawn on D:9-19, with _linear_ rarity 826 in the
middle of the range. A "SEMI" distribution means that at the edges,
D:9 and D:19, the effective rarity is half that, 413.
Distributions:
FLAT 100% 100% 100%
SEMI 50% 100% 50%
PEAK 0% 100% 0%
UP 0% 50% 100%
DOWN 100% 50% 0%
That "0%" doesn't mean the monster won't spawn on the top/bottom level
(D:9 and D:19 for yaks), the range is fudged so D:8 receives 0% chance,
D:9 16.6%, linearly up to 100% on D:14.
Yes, this sounds and is complex, but at least the complexity is not strewn
around obscure code anymore, and a number of limitations have been lifted.
ZotDef still uses the old code via an emulation layer.
|
| | |
|
|/
|
|
|
|
|
|
|
| |
The small abomination created by scrolls of unholy creation was effectively
useless past the very early game, and often not even worth the trouble of
having it around. Instead, scrolls of summoning now summon 2d2 shadow
creatures (with slightly increased duration compared to the spell). This
should hopefully make them a consumable worth actually using, commensurate
with their rarity.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now, the extent of this is player ghosts, but it should make
fighting conjurer ghosts just a shade more interesting.
Currently battlespheres cast by monsters don't time out by elapsed time
(they still disappear due to expending charge). This could probably be
done in a few ways if necessary (a monster enchantment similar to the
player's duration setting, or using something to ENCH_SHORT_LIVED or
ENCH_SLOWLY_DYING on the battlesphere itself). This may not be necessary
(xref: monster IOOD not dissipating except in specific cases), besides
which it would be good to have any decay consistent between the monster
and player cases.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
If you aim an explosion like fireball next to a monster (but not on top of
it), instead of the familiar firing at the empty square in the middle of
the explosion, it will now attempt to fire at some monster engulfed by
the explosion.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a level 5 conjuration/hexes spell that places a fulminant
prism at a smite-targeted location. The prism gathers charge over
the course of 20 aut, at which point it will detonate with a radius
2 explosion. The prism is very fragile and any monsters killing it
prematurely will result in either no detonation (less than 10 aut
from being conjured) or a weaker radius 1 explosion (10-19 aut).
Both explosion damage and prism durability scale with spellpower
(though the latter is always quite low, so its utility as a conjured
obstacle should hopefully be marginal).
|