| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Sprays clouds over a cone-shaped area in front of the caster. At low
power it gives rain, mist, or noxious fumes; mid-tier gives flames,
freezing vapour, or poison gas; high-tier gives one of three new cloud
types - acidic fog, negative energy, or storm clouds.
The targeter is from an experimental implementation of a spell called
"Scattershot", hence the name and some of the functionality it provides
which goes unused here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This spell allows the caster to continously manipulate the winds to
aid them and their allies. It is a self-enchant that will act
continuously for a decent number of turns after being cast, with the
following effects:
Firstly, it will immediately extinguish any forest fires in LoS of
the caster (both acting as a fire suppressor against the player's
actions as well as stray lightning bolts of the caster's own)
Secondly, it will blow clouds away from the caster. The path taken
by them is primarily direct repulsion from the caster, but with
three caveats:
a) A cloud will never be blown onto an ally. Alternate paths will be
used instead, where possible.
b) A cloud currently engulfing a hostile will not be moved at all.
c) If there is no possible path to move a cloud engulfing an ally,
instead greatly reduce that cloud's remaning duration.
This will allow spriggan air mages to stop starting raging forest
fires in their own home, prevent the player from doing likewise, and
generally provide protection for others against cloud spells, which
spriggans are highly vulnerable to.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
Mephitic, poison and miasma clouds from a level 2 spell just isn't
balanced at all (compare to Poisonous Cloud, a very strong spell at
level 6). Fulsome makes the first two of these completely unlimited
in practice, and miasma is absurdly strong even with decay corpses
being rarer.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All new clouds are created with an exclusion radius of -1, which means
that they will not create an exclusion. That's the default, and is what
is provided to all functions which create clouds.
Specifying any non -1 value will result in the coud not being considered
"temporary", and view.cc will create an exclusion for that cloud. By
default, the excluson radius of damaging clouds created by vaults is 1
(set by lm_fog.lua). You can specify any radius that you'd like, and
it'll use that.
For steam clouds, it will change the radius to zero if the radius is at
the default 1; otherwise, it will use whatever radius to have specified.
This might have some unwanted effects: any clouds which are loaded from
an old save file will all be considered temporary, so until they
properly decay, they won't be considered for exclusion. This will be
tempoary until the next wave of clouds is created.
Finally, this fixes cloud traps: they'll no longer create exclusions.
Hooray!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
The kill type and kill category are still needed only because we currently
lose blame data when the agent dies or moves off-level.
|
|
|
|
| |
corpse_rot now accepts an actor parameter!
|
|\ |
|
|/ |
|
|
|