summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-summoning.h
Commit message (Collapse)AuthorAgeFilesLines
* Hauntify Tukima's Dance.Nicholas Feinberg2014-05-271-1/+1
| | | | | Make Tukima's Dance weapons (almost) only attack their original owner. Removes the last reason to do fiddly weapon-swapping.
* Change Tukima to be a targeted spellJeekaroose2014-05-271-2/+2
| | | | | | | | (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.)
* Revert "Don't waste time casting Animate Dead, usually."Shmuale Mark2014-05-271-1/+0
| | | | | | | 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.
* Don't waste time casting Animate Dead, usually.Shmuale Mark2014-05-231-0/+1
| | | | | | | | | | 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.
* Remove the Summon Elemental spellChris Campbell2014-05-061-4/+0
| | | | | | | | 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.
* Rename Summon Menagerie to Monstrous Menagerie.Steve Melenchuk2014-03-061-1/+1
| | | | Less boring, at least.
* New spell: Summon Mana ViperDracoOmega2014-03-061-0/+1
| | | | | | | | | | | | | | | | | | 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).
* New spell: Forceful DismissalDracoOmega2014-03-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* New spell: Spellforged ServitorDracoOmega2014-03-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* Replace Summon Ugly Thing with Summon Menagerie (pending a better name)DracoOmega2014-03-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Replace Mass Abjuration with Aura of AbjurationDracoOmega2014-03-061-1/+2
| | | | | | | | | | | | | | | | | 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.
* Remove Demonic HordeDracoOmega2014-03-061-1/+0
| | | | | | | | 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.
* Overhaul Summon Dragon for playersDracoOmega2014-03-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
* Rod of demonology -> Rod of shadows.Steve Melenchuk2014-02-261-2/+4
| | | | | Weaves shadow creatures roughly from D:<evocations power> (including out-of-depth D depths).
* Convert alignment of a monster avatar when its summoner's alignment changes.gammafunk2014-02-191-0/+1
| | | | | | | | | | | | | | | | | | | 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.
* Merge branch 'master' into summon_spellsDracoOmega2014-02-131-0/+1
|\ | | | | | | | | | | | | Conflicts: crawl-ref/source/enum.h crawl-ref/source/spl-data.h crawl-ref/source/spl-summoning.cc
| * Don't directly shadow mimic conjurations; use shadow spells.Steve Melenchuk2014-02-101-0/+1
| | | | | | | | | | | | | | 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.
* | Remove Summon ScorpionsChris Campbell2014-02-101-1/+0
| | | | | | | | | | | | | | 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.
* | New spell: Summon Guardian Golem (L4 Summ/Hex)Shayne Halvorson2014-02-101-0/+1
| | | | | | | | | | | | 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.
* | New spell: Summon Lightning Spire (L4 Summ/Air)Shayne Halvorson2014-02-101-0/+1
| | | | | | | | Replaces Summon Scorpions in the Book of Callings.
* | New spell: Summon Forest (L5 Summ/Tloc)Shayne Halvorson2014-02-101-0/+1
|/ | | | It temporarily changes nearby terrain to trees and water and summons a dryad.
* Merge branch 'demonspawn-enemies'Steve Melenchuk2014-01-281-0/+8
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Trigger grand avatar on ranged attacks (tenofswords).Steve Melenchuk2014-01-221-1/+2
| | | | | | | | Also contains some merging of duplicate code.
| * Demonspawn warmongers: Grand Avatar.Steve Melenchuk2014-01-211-0/+7
| | | | | | | | | | | | | | | | | | | | 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.
* | Don't let monsters cast a summon spell if it's already at its capDracoOmega2014-01-281-0/+1
|/ | | | | | | | 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).
* Drop double newlines where they seem to serve no purpose.Adam Borowski2013-12-211-2/+0
| | | | | 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.
* Cap monster summons.Steve Melenchuk2013-11-281-1/+2
| | | | | | | | | 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.
* Inline a function.Adam Borowski2013-11-101-1/+0
|
* The dead are crawling!Neil Moore2013-11-091-0/+1
| | | | | | | Also, make giant leeches slither. Giant amoebae can't be zombified currently, but if that changes they should probably crawl rather than walk.
* Prefix spectral weapon properties with "sw_" and use #define for them.Ed Gonzalez2013-06-261-0/+7
| | | | | This allows easier understanding of what code uses the properties, reduces chances of conflicts, and helps catch mispellings.
* Make Spectral Weapon reset on player's next turn for real this time.Ed Gonzalez2013-06-261-0/+1
| | | | | | | | | | 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.
* Revert "Make Spectral Weapon reset on player's next turn if it hasn't attacked."Neil Moore2013-06-261-1/+0
| | | | | | | 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.
* Make Spectral Weapon reset on player's next turn if it hasn't attacked.Ed Gonzalez2013-06-261-0/+1
| | | | | | 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.
* Report summons limit in spell descriptionsPete Hurst2013-06-251-0/+1
|
* Limit number of summons per spell typePete Hurst2013-06-251-0/+26
| | | | | | | | | | | | | | | | | | 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[].
* Post-merge Skald cleanupPete Hurst2013-06-241-1/+1
| | | | | | | | | | | | | | | | 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
* Rework spectral weapon AI to attack on its own turn.Ed Gonzalez2013-06-131-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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?
* Fixed allied monster spectral weapon not attacking and related crashes.Ed Gonzalez2013-06-121-0/+1
| | | | | | | | | | | 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.
* Initial casing for monster spectral weapon.Ed Gonzalez2013-06-121-1/+1
| | | | | | | | | | | 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.
* Encapsulate some spectral weapon code in functions in spl-summoning.hEd Gonzalez2013-06-121-2/+4
| | | | | | | | 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.
* rough implementation of newskald spellslain2013-05-071-0/+2
| | | | | | new spells: infusion, song of slaying, spectral weapon, spirit shield new book: book of battle new mons: MONS_SPECTRAL_WEAPON
* Rename Summon Small Mammals to Summon Small MammalChris Campbell2013-05-061-1/+1
| | | | | 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.
* Tweak cast_shadow_creatures() to make better use of default values.David Lawrence Ramsey2013-03-231-1/+2
|
* Merge branch 'mon-pick'Adam Borowski2013-03-211-3/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * Remove layers upon layers of code for TSO summons.Adam Borowski2013-02-261-3/+1
| |
* | Replace scrolls of unholy creation with (revised) scrolls of summoningDracoOmega2013-03-201-1/+1
|/ | | | | | | | | 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.
* Get Battlesphere castable by monsters.Steve Melenchuk2013-02-091-4/+5
| | | | | | | | | | | | | | 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.
* Rename arcane familiar to battlesphere.elliptic2013-02-091-6/+6
| | | | | | | | 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.
* Make familiars fire at monsters hit indirectly by explosionsDracoOmega2013-01-281-1/+1
| | | | | | | 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.
* Add Fulminant Prism spellDracoOmega2013-01-281-0/+1
| | | | | | | | | | | | | 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).