summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-ench.cc
Commit message (Collapse)AuthorAgeFilesLines
* Brace and unbrace.Neil Moore2014-08-041-0/+6
|
* fix messages when invisible monsters are charmed or uncharmed (8819)Jesse Luehrs2014-08-021-27/+48
|
* Remove stuffNicholas Feinberg2014-07-291-1/+2
| | | | | | | .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!
* Make torpor snail slow end immediately after LOS is brokenNicholas Feinberg2014-07-251-2/+14
| | | | | | | Or after they die, etc. Also no longer require the torpor snail to be visible, thus preventing powerful /invis secret tech. rip :(
* Handle another engulf ender (#7437)Neil Moore2014-07-181-0/+6
| | | | | | | | | 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.
* Clear Engulf status when forcibly separated (#7437)Neil Moore2014-07-181-6/+12
| | | | | The status still doesn't end immediately when the engulfer dies etc.: see bug #7394.
* Make draining temporary (for monsters)Nicholas Feinberg2014-07-131-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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!
* Separate 'permanent' and 'temporary' monster hit diceNicholas Feinberg2014-07-131-4/+5
| | | | As part of a wider scheme to make draining temporary.
* Let BLOOD finally have its place in the sunNicholas Feinberg2014-07-011-0/+1
| | | | | | ...by moving bloodspatter functions into their own file. Death to misc.cc! Long live the new file hierarchy!
* The great mon-stuff migration.Shmuale Mark2014-06-221-0/+3
| | | | | | | | | 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.
* Rename functions (|amethyst).Shmuale Mark2014-06-191-1/+1
|
* Try to reduce duplication in Recite code.Shmuale Mark2014-06-191-1/+1
| | | | | | | | | | | | | | 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.
* Tidy up some web/net behaviourNicholas Feinberg2014-06-131-0/+3
| | | | | | | | | | 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.
* Rename BEAM_NAPALM to BEAM_STICKY_FLAMEreaverb2014-06-111-1/+1
|
* Don't let monsters get free turns when escapingNicholas Feinberg2014-06-101-131/+1
| | | | From nets & webs.
* Time out friendly bribed monsters like neutral bribed monsters (dpeg).Steve Melenchuk2014-06-031-39/+1
| | | | | Yes, this means they don't demand payment now and again, and stop following you when the initial bribe expires.
* Adjustments to Gozag's gold distraction (dpeg).Steve Melenchuk2014-06-031-2/+8
| | | | | Monsters are now distracted for 1-5 turns on a 3% chance per pile of gold in LOS.
* Replace corrosion with a temporary effect.Shayne Halvorson2014-05-141-2/+9
| | | | | | | | | | | | | | | | | | | | 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
* Fix some more TAG_MAJOR_VERSION > 34 hiccups.Steve Melenchuk2014-05-141-4/+11
|
* Remove plague shamblers.Shmuale Mark2014-05-141-1/+0
| | | | | | | | | 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.
* Remove Shedureaverb2014-05-131-17/+0
| | | | | They never really worked as enemies - their only unique aspect, partner resurrection, was just annoying.
* Don't make bog bodies randomly rotChris Campbell2014-05-131-6/+1
| | | | It's fairly spammy and doesn't do anything interesting.
* Formatting fixes (add braces).Neil Moore2014-05-121-0/+2
| | | | This fixes all the instances caught by unbrace.
* Re-bribing a perma-bribed monsters costs at least 1 gold (MarvinPA).Steve Melenchuk2014-05-071-1/+2
|
* Handling for attacking bribed creatures.Steve Melenchuk2014-05-071-1/+1
| | | | | | 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.
* Gozag: prelimiary implementation of Bribe Branch.Steve Melenchuk2014-05-071-3/+68
| | | | | | | | | | 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.
* Remove two outdated functions from Control Winds.Shmuale Mark2014-05-051-1/+0
| | | | | | | | | | | | 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.
* Make engulf interrupt recite and word of recallChris Campbell2014-04-211-1/+3
| | | | Also move/update a recite comment.
* Remove the unused HOLY_LIGHT beam/zapChris Campbell2014-03-221-14/+2
| | | | | | | | | | | 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!).
* Tweak siren drowned soul mechanicsDracoOmega2014-03-201-1/+1
| | | | | | | | | | 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.
* Conjure Ball Lightning adjustmentsDracoOmega2014-03-151-1/+1
| | | | | | | | | | | | | | | | | | | 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).
* Remove throwing net degradation, instead mulch probabilisticallyDracoOmega2014-03-121-1/+1
| | | | | | | | | | | | | | 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.
* New monster spell: Phantom MirrorDracoOmega2014-03-111-1/+1
| | | | | | | | | | | | | | 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).
* Remove shock serpent lightning torrent, adjust discharge / statsDracoOmega2014-03-111-24/+6
| | | | | | | | | | | | | | | | | | | | | | 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.
* Remove SunrayDracoOmega2014-03-111-2/+2
| | | | | | | | | | | 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.
* Fix various issues with invisible monster indicators.gammafunk2014-03-061-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Some Summon Greater Demon adjustmentsDracoOmega2014-03-061-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Glaciate.Steve Melenchuk2014-02-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Greatly reduce CBL timeout.Steve Melenchuk2014-02-251-1/+1
| | | | | | | | | | | | | | | | 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.
* Convert alignment of a monster avatar when its summoner's alignment changes.gammafunk2014-02-191-0/+4
| | | | | | | | | | | | | | | | | | | 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.
* Properly expire siren song when off-levelDracoOmega2014-02-181-0/+1
|
* Properly expire injury bond from friendly sourcesDracoOmega2014-02-131-1/+4
| | | | | | 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.
* Monster Shroud of Golubria spell, effect and M_SHROUD.Steve Melenchuk2014-02-031-1/+1
| | | | | | | | 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.
* Rework the monster Ozocubu's Armour effect and give back to Fannar.Steve Melenchuk2014-01-311-5/+3
| | | | | | | | | | | | | 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.
* Merge branch 'demonspawn-enemies'Steve Melenchuk2014-01-281-3/+102
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Fix a typo in ENCH_AGILE expiry (ChrisOelmueller).Steve Melenchuk2014-01-221-1/+1
| |
| * Demonspawn warmonger: Sap Magic.Steve Melenchuk2014-01-211-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * Demonspawn warmongers: Grand Avatar.Steve Melenchuk2014-01-211-1/+6
| | | | | | | | | | | | | | | | | | | | 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.
| * Demonspawn black suns: Black Mark.Steve Melenchuk2014-01-211-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
| * Demonspawn blood saint: Ephemeral Infusion.Steve Melenchuk2014-01-211-1/+35
| | | | | | | | | | | | 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.