summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-damage.h
Commit message (Collapse)AuthorAgeFilesLines
* Rename nuke_wall() destroy_wall()reaverb2014-06-051-1/+1
| | | | and also change a temporary variable name to avoid overshadowing
* Fix various tracer issues with the Rod of DestructionDracoOmega2014-03-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Tracer attack prompts were being printed for the actual beam the rod produced, rather than the range of beams the rod COULD produce. For example, if you tried to fire it at a friendly iron golem, you would get a warning prompt only for quicksilver bolt (which would then let you abort without spending time or mp, allowing you to reroll a new beam type from the rod). This was similarly true with bouncing beams prompting for self-harm in confined spaces and letting you cancel to make sure you got something else. Now the tracer should consider the beam both irresistable and bouncing (since it can be either), independant of whether the type you actually roll ends up being so (and thus no more free beam rerolls). The method to do this feels slightly involved, but I'm not sure a simpler way, given that no existing damage type both bounces and is irresistable. (It will also still technically prompt you for harming rF+++ rC+++ rElec+++ allies you could hit only if the bolt bounced, which is a situation that can never occur, but this seems a far less important problem than the one being fixed here - and rather hard to resolve).
* Allow ghost casting of dazzling spray (Grunt).gammafunk2014-03-061-2/+1
| | | | | | | | | Player ghosts can now have dazzling spray, which sets confusion based on an XL check that's the same as used when blinding monsters. This commit is mostly based on Grunt's commit 0d12a004 in the glaciate-testing branch and cleaned up some for trunk, with some aspects reorganized.
* Glaciate.Steve Melenchuk2014-02-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge branch 'demonspawn-enemies'Steve Melenchuk2014-01-281-1/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Demonspawn chaos champions: Chain of Chaos.Steve Melenchuk2014-01-211-1/+2
| | | | | | | | | | | | | | This blatantly hijacks the chain lightning code for its own purposes, but it works somehow. Xom roars with laughter!
* | A single-target variant of Ignite Poison for monstersDracoOmega2014-01-281-0/+2
| | | | | | | | | | | | | | | | | | | | This is basically what it says on the tin: Ignite Poison delivered to a single location via a (non-resistable) enchantment beam. The damage inflicted is greater at the same power compared to normal Ignite Poison, but making it non-smite-targeted is a considerable limitation in the player's favor, of course. Intended for Salamander Mystics.
* | Make Ignite Poison properly useable by monsters, overhaul effect on playersDracoOmega2014-01-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This finishes some of the generalization made previously to this code to make it less player-centric and adds tracer-like checks to allow monsters to guess when it's worth casting (ie: will do more to their enemies than their allies). A lot of the player damage code left over from when it could hurt the caster wasn't really suitable for a monster effect and so has been removed or changed. It can no longer destroy items in your inventory (including 100% of all poison ammo carried!) nor create flame clouds based on this. Damage for higher levels of poisoning has been greatly stepped down and poisoning no longer stacks with naturally poisonous physiology (ie: being a naga or kobold) in terms of damage inflicted on players. I don't actually have a home in mind for this code directly, but I plan to use it as the base for a single-targeted version of this effect, and maybe it would be okay on player ghosts?
* | Revamp shock serpentsDracoOmega2014-01-281-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Let monsters cast Static Discharge; support for arbitrary start points.Steve Melenchuk2014-01-281-0/+1
| | | | | | | | | | | | Right now it's just ghosts that will cast it, but I have at least two seemingly viable ideas for this functionality - one involving a new enemy and one involving an unrand.
* | Revert "Revive a monster Ignite Poison implementation for FoVM enemies."Steve Melenchuk2014-01-271-5/+0
| | | | | | | | | | | | | | Apparently someone else is going to do something similar in the immediate future. This reverts commit 65f686f80ba4bcb81cbe48947271143fe96d4b20.
* | Revive a monster Ignite Poison implementation for FoVM enemies.Steve Melenchuk2014-01-271-0/+5
|/ | | | | | | | | | | | | | | The relevant old commit is ab7eb6992d0672e1189193d82656b790ddd6dc9a; this is cleaned up and modernised a lot from its original implementation (mainly it has a tracer whereas the original implementation did not). The new FoVM spell set is Venom Bolt, Poisonous Cloud, and Ignite Poison. This might benefit from some more adjustment - it's a spell set that can potentially generate a lot of collateral damage if you get too big of a swarm of nearby poisonous enemies; some other ideas I've had including replacing one of the two damage spells with Poison Arrow (one shot, one target) or Mephitic Cloud (low area of effect, can still be ignited semi-reliably).
* Don't allow cancelling the refrigeration effect from ?vorpaliseMarvinPA2013-08-141-1/+1
| | | | | | None of the other explosions are cancellable in this way, and they can all now be avoided if allies are nearby by cancelling the scroll when asked to select a weapon, anyway.
* New player spell: Searing RayDracoOmega2013-07-151-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a level 2 pure conjurations spell, intended to replace Force Lance in the conjurer starting book. While Force Lance had a decent concept, its role in the book was sort of awkward. Its effect was unreliable, usable only at extreme close range, and cost twice as much as magic dart at a time where mp is at a premium, yet didn't actually hurt twice as much (and could miss). For many characters, by the time you would have enough mp and spellpower to make good use of it, you had already outgrown it for better spells. This spell is aimed to better fill a transitional niche between magic dart and the stronger conjurations, without rendering the former obsolete, either. Searing Ray is a close range spell (though not quite AS close range) which fires a continuous ray of energy that starts out weak, but grows in power over time as it is channelled. Mechanically, the caster gains a 'Ray' status once they fire it, and each subsequent turn that they perform no other action, the searing ray refires along the original beam path. It will do this 3 times, each more powerful than the last, and at the most powerful stage, the ray becomes a penetrating beam. 1 mp is charged for each turn the ray is maintained (and it will end prematurely if you run out), and the player is offered a warning prompt and chance to cancel if the beam path becomes unsafe (ie: an ally wandered into it) but it cannot be reaimed without starting the channeling from the beginning. The final stage is quite powerful for a level 2 spell, but it also requires remaining stationary at a close range to your target for 4 turns, and for them not to move out of the beam path during this (and also costs 5 mp in total). The initial stages, in contrast, are weaker than other level 2 conjurations like throw frost or flame. Numbers probably need more adjusting, but I think the basic concept fills the level 2 slot in the Book of Conjurations better than Force Lance did.
* Revamp Olgreb's Toxic RadianceDracoOmega2013-07-151-0/+4
| | | | | | | | | | | | | | | | | | | | | OTR was a very lackluster spell, even in the venom mage starting book, where it had a relatively captive audience. This is aimed to improve that situation without directly turning it into 'refridge, except poison'. OTR now causes the caster to radiate a toxic aura over the course of several turns after casting (extendable by recasting), and inflicts a small amount of impact damage in addition to a (weaker) lingering poison. The damage done decreases with distance from the caster, doing around 35% damage at the very edge of LoS. While it inflicts no impact damage upon a player casting it, the poison status thus inflicted now bypasses rPois. This makes it somewhat more hazardous to some people's health (perhaps commensurate with its increased power) but also synergizes more nicely with cure poison. Finally, OTR no longer has the curious property of being unable to hit invisible creatures, even when you can see them.
* Round two of duplicate code pruning for LOS attack spells.Steve Melenchuk2013-05-061-3/+3
| | | | | | | | | | | | | | | | | | As a reminder for those of you that don't remember b4b189b, this merges handling for player and monster casting of Drain Life, Ozocubu's Refrigeration, and Olgreb's Toxic Radiance so as to prune a lot of duplicate handling between the three spells/abilities; it was reverted because the previous version of this cleanup exhibited problems when several of the same type of monster were in sight (#6566). The new version of the code splits player-as-target and monster-as-target code into their own functions (another concern raised with the original version of this code). Probably this can be cleaned up more, but it's better than either the original version or the first version of the pruned code! This reverts commit bd9d7a8fecc46bef40d884854d0cc567ce64d912.
* Add Dazzling Spray spellDracoOmega2013-01-281-0/+4
| | | | | | | | This is a level 3 conjuration/hexes spell which fires a fan of up to three projectiles that have an HD-based chance of temporarily blinding any creature they hit which is neither undead nor nonliving. The central spray uses stardard beam targeting, while the other two will aim at the closest visible hostiles within a small angle of the primary target.
* Refactor fireball to use standard zap routineDracoOmega2013-01-281-1/+0
| | | | | The code in the fireball() function was essentially identical to this already, and it is unclear why it was specifically seperated.
* Revert "Prune duplicate code for LOS attack spells."Steve Melenchuk2013-01-241-3/+3
| | | | | | | | | | | | | The new version of the code isn't particularly well written (though, apparently, better off than the code it replaces), exhibits problematic behaviour (#6566), and the original motivation for doing so (having monsters cast OTR) isn't as pressing due to the lack of monster designs that use it (there's still the rod of venom, but that can wait for someone to give this issue the attention it deserves). Fixes #6566. This reverts commit b4b189bfd0645a11f2c25c6fb702732516f5bb33.
* Prune duplicate code for LOS attack spells.Steve Melenchuk2013-01-201-3/+3
| | | | | | | | | | | | | | This commit merges the handling for Drain Life, Ozocubu's Refrigeration, and Olgreb's Toxic Radiance, which shared a lot of duplicate code, into one code path. This includes the player and monster implementations of these spells. Yes, this means monsters can now cast OTR (watch out for rods of venom!); the tweaks to allow ghosts to do this are in place as well. This changes the signature of the dlua function spells.toxic_radiance; as far as I am aware this function is not currently used anywhere. (Now, who wants to start work on Olgreb's Toxic Radiator?)
* Remove unnecessary includes from header files.Jay3.14152012-10-231-1/+0
| | | | | | | | | | 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.
* Make shatter functions static again.Adam Borowski2012-08-291-4/+0
|
* Use std namespace.Raphael Langella2012-08-261-2/+2
| | | | | | | | | | | | | 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.
* Have deaths by monster Shatter indicate that Shatter was used.Steve Melenchuk2012-08-201-1/+1
| | | | This also preserves the old behaviour for monsters wielding Devastator.
* Implement a monster tracer for Shatter.Adam Borowski2012-08-201-0/+1
| | | | | | | | | As usually, they'll cast it when damage to foes is bigger than damage to friends, taking susceptibility to Shatter into account. This means, in a horde of ghostlies, you won't be spared. Also, this commit fixes damage and range being nearly none for monsters who cast it as a non-arcane spell. Monster's don't have skills...
* Monster Shatter, by Grunt.Adam Borowski2012-08-191-0/+4
|
* Improve player LRD targetting.Steve Melenchuk2012-07-061-1/+8
| | | | | | | | | | This borrows some code from the monster implementation of LRD, particularly the split of LRD beam setup from the actual casting of the spell. It shows the expected area of effect of the spell (a la the cloud or storm spells), and warns the player against inadvisable (e.g. friendly or unaware) targets.
* Rod of lightning.Adam Borowski2012-06-221-0/+2
| | | | | | | | | | [Unfinished: no actual damage yet.] A single zap uses only two mana, evoking it in subsequent turns will take 5 (or less if the rod is spent), spreading the damage upon the whole arc between, with a boost if you're not aiming at the same place. Releasing the trigger (ie, doing any action other than evoking the rod) will stop the discharge.
* Make Olgreb's Toxic Radiance depend on power for levels of poison inflictedChris Campbell2011-11-111-1/+1
|
* A shillelagh.Adam Borowski2011-09-131-0/+1
| | | | | | | Does shatter-type damage to everyone in radius 1 around the person hit. TODO: warnings about hitting allies. Pushing this to let you take a look so we can discuss the details.
* Don't miscast when the spell can still be aborted (#4281).Raphael Langella2011-07-211-16/+18
| | | | | | | | | | | | | | | | This is a significant refactoring. All the spells now return a spret_type and take a boolean which tells if the spell has actually failed. Also some code clean up in _do_cast(). All spells have their own function now. Also fix the following bugs: * Properly abort fire storm if forced casting on a wall with '!'. Also put a message for forced out of range casting (like cloud spells). * Casting summon elemental on an invisible monster aborted with no cost. * if a summoning spell aborts because create_monster fails, you don't lose a turn. You still get a chance of miscast in this rare case. * s2s, tukima and branding spells abort properly instead of consuming turn and MP when player is not wielding appropriate object. * s2s abort message when wielding a non-snakable.
* Fix teleportation moving Tornado with you.Adam Borowski2011-07-181-1/+2
| | | | | | | | It's hard to explain how the winds could follow you, especially as they don't do so between levels. Translocating within the radius doesn't cause an immediate abort, but there is a penalty steep enough that for practical purpose it does. Long distance teleports let you get out of cooldown, short ones don't.
* Singing Sword damage.Adam Borowski2011-07-081-0/+1
| | | | Needs to be tweaked, pushing so dpeg can edit the messages.
* cppcheck: pass const strings by reference. Alloc + copy less.Adam Borowski2011-07-051-1/+1
|
* Don't lose a turn when cancelling an airstrike or striking an immune target.Adam Borowski2011-07-021-3/+1
| | | | The latter applies only to those you can see, of course.
* Move some monster spell code around.Adam Borowski2011-06-041-0/+4
|
* Don't let the vorpalise weapon effect destroy potions or scrolls.Johanna Ploog2011-03-141-1/+2
| | | | | | | We've specifically added code to avoid the hassle of having to drop scrolls before reading, and there's no sense to reintroduce it through the back door, in particular since ?VW is a scroll you read out of combat, making preparation trivial yet cumbersome.
* Code cleanup: burn_freeze -> cast_freeze.Eino Keskitalo2011-03-031-1/+1
| | | | Removed functionality for using the same function for several beam flavours. That stuff hasn't been used in ages.
* A monster ench perm_tornado which does what it says on the tin.Adam Borowski2011-01-041-1/+1
|
* Thin spellbooks somewhat.Adam Borowski2010-12-101-1/+0
| | | | | | | | * Bone Shards: 0 use both in 0.4 and 0.7 winner stats. Requires tedious messing with components. * Tame Beasts: 0 use, gives very weak pets for its level, with lots of preparation can be abused ("Rupert farming"). * Portal: very little use, convoluted mechanics.
* Abort Tornado when taking stairs.Adam Borowski2010-11-221-0/+1
|
* The Tornado spell, first stab.Adam Borowski2010-11-121-0/+2
| | | | | | | | There's no separate cloud type yet (I want greyish but not blocking LOS ones), and moving monsters/items is not implemented yet. Pushing so people can suggest an improvement to visual effects which suck currently.
* Make large rocks do extra damage with sandblast.Robert Vollmert2010-09-141-1/+1
| | | | | They do up to 3d20 instead of 2d20 for stones. Can only be used by trolls and ogres.
* Rename class "monsters" to "monster".Robert Vollmert2010-09-051-2/+2
|
* Rename variables named "monster" to "mons" or similar.Robert Vollmert2010-09-051-2/+2
|
* Move the remaining damage spells into spl-damage.cc.Johanna Ploog2010-08-221-0/+32
This leaves mostly enchantments in spells1-4, with only weapon branding spells in spells2.cc, in particular.