| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
They will now be able to mature into whatever drac type they can
(i.e. white scorchers will still be disallowed) upon reaching the
appropriate HD. The goal is mostly to make draconian mercenaries
more attractive, since if they can survive they can become rather
strong.
|
| |
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
After the first failure, it kept calling find_newmons_square_near() (and
that in turn radius_iterator) with an invalid starting spot which would
then always fail.
Passing the monster that's to be checked for clouds to inside functions
removes the need to make many random tries.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The routine which finds free space to place these monsters now uses
monster_habitable_grid directly instead of its own logic (which ignored
flying entirely).
Spells which can summon both fliers and non-fliers (ie: call imp,
summon greater demon, etc.) will make no attempt to respect the surrounding
terrain when choosing a monster type (and so will sometimes attempt to
summon a monster that cannot be placed at that terrain, and fail as
previously), though it is arguably better if players cannot influence what
things they summon by where they are standing. In either case, this is
certainly much better than Haunt and Battlesphere failing when over deep
water for no clear reason.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It now uses regular mon_pick instead of an extremely quirky loop that spins
around with a low chance of success, relaxing requirements slowly. If there
are no zombifiables for the given branch, monsters from parallel branches
get allowed too.
Note that there are two code paths for zombie selection, the other one
being requesting a zombie via mapdef.
REAL CHANGE: depth is actually obeyed now, rather than merely kind of.
This gets rid of all those rat and kobold zombies later on, at the cost of
severely reducing variety in some cases. The base depth is current level+4,
like before.
|
|
|
|
|
| |
Probably would be good to handle skeletons/simulacra/spectrals here as well,
instead of relying on zombies.
|
| |
|
|
|
|
|
| |
Especially, don't encode two distinct types in mspec.type, use enums like
draconians do.
|
| |
|
| |
|
|
|
|
|
| |
When we had separate power/monster_level and place, the code redundantly
applied OOD logic to both, making them be in sync.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Omitted:
* mspec.type (uses a lot of magic values in the negatives)
* item_def.orig_monnum (todo, +1 trick)
A few minor problems are fixed here:
* renamed gas spores passed mindex for monster_type
* demon summoning would break on addition/deletion of demon types
* vaults spawning zombified uniques would fail to mark them as used
|
| |
|
| |
|
|
|
|
|
|
|
| |
Since Fedhas protects plants against such clouds anyway, not allowing
toadstools there meant you had to wait until clouds go away, especially
tedious for Ignite Blood demonspawn who will have blood there most of
the time.
|
|
|
|
|
|
|
|
|
|
| |
monster::upgrade_type() wasn't adjusting their HP, AC or EV properly,
and it really shouldn't have been used anyway, since zombie -> skeleton
is a downgrade.
The new function downgrade_zombie_to_skeleton() handles this now.
mon-place.cc may not be the best place for it, but keeping it there
means that all the zombified stat adjustment functions are in one place.
|
|
|
|
|
|
|
|
| |
I'm not sure whether deep dwarf unborns should count, but since all other
corporeal undead do, let's go for simplicity, at least until someone tells
us what the hell unborns are.
Also, adjust messages for other gods. Trog gives no "aura", for example.
|
| |
|
|
|
|
|
|
|
| |
"File:" is shown in your editor's status bar.
"Written by:" was used only for the first person who changed a file. We got
git for that now, and pre-DCSS history is so woefully inaccurate it doesn't
really matter.
|
| |
|
|
|
|
|
|
| |
I did review it manually to find places where they made sense (like some
tables), but for a massive sed job like this there might be places that
I missed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Corpse-type items now save HD in another hash table property, a la the
number of hydra heads. Note that monsters with zero HD due to draining
can currently still be zombified, with their hit dice reset to 1.
(Adding a more common unanimatable corpse type besides hydra heads could
be annoying for anyone trying to animate the dead en masse, enslave
souls under Yred, etc.)
HD preservation is done for all created zombified types except for those
placed in e.g. the Crypt (newly created, so no HD change is possible),
those made by Nergalle's Summon Spectral Orcs spell (same), and those
created by the Simulacrum spell (hash table properties aren't
transferred from corpse-type items to chunks; the same applies to the
number of hydra heads, which has been the case for awhile).
|
|
|
|
|
|
|
|
|
|
|
| |
The use of the original monster type for the stats and the base type is
now the default, so the parameter is removed. Additionally, the
original monster type is now properly passed in to the original
mgen_data() calls where applicable, so define_zombie() no longer needs
to effectively be called twice for spells and abilities that create
zombified types. (Yred's Enslave Soul still needs to call it, since it
bypasses the monster placement code entirely when it recreates the
monster.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
define_zombie() is no longer static, and is now used when creating all
zombified monsters. This removes redundancy and inconsistency with
regard to monster flag setting (e.g. the dual-wielding flag no longer
needs to be set in multiple places, and zombified krakens created with
Animate Dead now retain their spellcasting flag and, hence, their
tentacles "spell").
This also fixes inconsistencies with regard to stats, as undead created
with define_zombie() are made by creating the original monster and
applying zombie downgrades. Now that other places in the code use it,
they no longer create the zombified type and apply zombie downgrades to
it. The stat retention is accomplished by adding a flag to
define_zombie() to make it use the original monster type.
One potentially controversial bit: this flag also makes define_zombie()
use the original type as the base type (except for uniques, to avoid
things like "Nergalle the spectral Nergalle"). The flag is used for all
spells and abilities that create undead*, but not in the code to place
them randomly (in e.g. the Crypt) or from card effects. This may be an
issue, as players or monsters can now raise "orc warrior zombies" from
orc corpses that were orc warriors in life, but since orc warrior
zombies are now stronger than plain orc zombies, there should be an easy
way to tell the difference. The Summon Spectral Orcs spell did this
before anyway.
Issues: The monster's original HD is not preserved yet; the monster
class' original HD is always used. Also, I don't know at the moment if
the base damage is preserved.
* Animate Dead (spell and Yred power), Simulacrum, Death Channel,
Enslave Soul, Summon Spectral Orcs (Nergalle spell)
|
|
|
|
| |
Fixes issues #1789, #2400.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add item property CORPSE_NO_DECAY to disallow decay on
corpses/skeletons/chunks.
Wizmode &% now creates an item using the .des file item name parser; &o remains
the old wizmode item-gen command.
Corpse decay for corpses placed by maps can be controlled using
dgn.delayed_decay.
|
|
|
|
| |
from all monsters sleeping in water far from land (rob).
|
|
|
|
|
| |
_define_zombie and pick_local_zombifiable_monster_type had almost
the same code...
|
| |
|
|
|
|
|
| |
OOD monsters can only be generated in bands after 1.4k turns spent on D:1, or
1.4k - 117 * depth turns spent on any level.
|
|
|
|
|
|
| |
When cloning the player, Mara will now create MONS_PLAYER_ILLUSION instead of MONS_PLAYER_GHOST. Illusions are identical to ghosts, but will get the correct breath weapon (for draconian players) and the correct holiness (i.e. undead only if the player is undead).
Clones also inherit appropriate enchantments from their original, so if the player/other target is berserk, the clone will also be berserk.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Both values override the default class values. Placing "rat hd:20" will
generate a rat with a hit dice of 20, while placing "rat hp:20" will set
its hp to 20.
|
|
|
|
|
|
| |
This removes a couple of unnecessary includes from header files.
I may have missed adding some tiles includes.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Monsters now know who summoned them. This will be important later.
Probably breaks something; saves are not one of them.
|
| |
|