| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Hitting 7 squares results in occasional awkwardness where attacking
empty space is the best way to target enemies, and the difference between
7 and 8 isn't a significant factor in cleaving's balance.
|
|
|
|
|
|
| |
The enum values were never checked in any code relating to chivalry,
except to see that a value wasn't 0 (ie it was a forbidden stab).
A recent bug arose from the bad naming, too.
|
|
|
|
|
|
| |
The main thing it did was cause annoying prompts when you could hit
yourself or an ally with the arc. It was rarely relevant other than that,
and just made elec brand a bit more complicated unnecessarily.
|
|
|
|
|
|
|
|
|
|
|
|
| |
It could be easily calculated, and it was usually considered extremely
important while only being mentioned in passing in the manual. Thus, all
three important delays are visible now: mindelay, current delay (by
swinging your weapon), and base delay. Like other things on the screen,
it's a base property of the weapon, so there is no reason not to show
it.
The screen had to be condensed a little to fit in 80 chars, but even the
dark maul made it.
|
|
|
|
|
|
| |
The player can target an in-range empty square for jump attack. If it turns out
that the square is empty, the jump-attack fails and the player rebounds to their
original position, losing the turn.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Player chooses a monster target within range where there's at least one valid
landing site adjacent to the target.
* There must be a monster to target to use the ability, but the monster can be
friendly or neutral.
* A random valid landing site is chosen, the player is moved to that square, and
weapon melee occurs against the target at the landing site.
* Jump attacks are melee with the wielded weapon and get a 20% damage bonus
* Valid landing sites are always habitable squares with no monster and no
thing that's dangerous to the player.
* Flying monsters or giant monsters not standing in deep water or lava can
'block' the path of a landing site by being in the ray path from the player to
the landing site.
* If a visible monster blocks the path to a landing site, it won't be considered
as a valid landing site.
* If something invisible blocks a landing site, the site will be shown as valid
and can be randomly chosen, in which case the player 'rebounds off something
unseen' and never leaves the starting square, but wastes a turn (delay 10aut).
* If the player is adjacent to the monster, sites adjacent to the player are not
valid; you have to 'jump over' the monster in this case.
* Player can't jump if exhausted or standing in water/lava/liquefied ground
* Exhaustion duration is set after jump (regardless of success) to prevent a
second jump, with a duration formula that's the same as the breath duration.
* The usual melee checks wielded weapon/friendly etc. checks are performed for
the jump melee.
* If any of the valid landing sites would cause problems with self-electrocution
or sanctuary violation, the player is warned first.
* Range is determined by evocations training; starting attack range is 3
(movement 2), and it increases by one at evocations 5 and 10.
* The cost of the jump is 2MP and a hunger cost using the same calculation as
for flame breath.
* The delay of a successful jump is the same as melee delay.
* Fail rate for the ability calculation based on evoke taken from breath fail
rate code
|
|
|
|
|
| |
As a side effect, make the one case that used /= 2 (namely,
launcher_final_speed()) use div_round_rand() like the others.
|
|
|
|
|
| |
Also, make it take a reference rather than a pointer (like
is_{,ranged_}weapon) and use it in the berserk check.
|
|
|
|
|
|
|
|
| |
This implementation breaks them down by UCAT_type, which is probably too
detailed. Ideally, I'd want just two categories: sleep/para stabs (ie,
those with no roll that deal massive damage) and the rest (a bit of extra
damage). It doesn't matter where we coalesce them, though, so it'd be
easy to combine the data at output time.
|
|
|
|
|
|
|
|
|
|
|
| |
I left intact (ie, effectively changed) bigger maces and axes (slightly
strengthier), extremes like quick blade and ogre clubs (slightly more
extremist), big polearms (glaive +1, bardiche +3). If any of you would
prefer weapon types to have identical weighting like before, a reference
list is on https://crawl.develz.org/mantis/view.php?id=5825
Note that for melee weapons, a redundant and out of sync copy was used
instead, this table was consulted only for launchers.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
It fixes a number of issues:
* You get a single stop attack prompt for all targets
* No more fumbling for each target
* Hunger cost isn't multiplied by targets
Still broken for ctrl+dir attacks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Additional targets are acquired by rotating from the main target in both
directions but no more than 3 cells. Solid features block cleaving. On
open grounds, it attacks 7 cells (all but the opposite one from the main
target).
A single wall on the side can block one or two targets since it doesn't go
all around.
* Additional attacks do 75% damage. Main target still takes full damage.
* Allies don't block cleaving and are not harmed by it unless attacker
is confused.
* Monsters wielding axes get cleaving too.
* Broad axe, battleaxe and executioner's axe base damage is reduced by 1.
More nerfing might be needed for the latter 2.
* Cleaving works when attacking empty spaces (useful against invisible
monsters)
* Monsters dual wielding axes should work.
Thanks to LexAckson for helping with this implementation
(especially rotate_adjacent).
|
| |
|
|
|
|
|
| |
Looks like get_XXX_path and the like in files.cc could use some drastic
simplification, or perhaps even a nuking and rewrite.
|
| |
|
|
|
|
|
|
|
| |
This reverts commit b78c00d44495ca2ef685d25537e4078b10598a63.
Next commit fixes the error this commit introduced with many monsters losing
their attacks... oops!
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 4cde183eca711078bdf6e2d9a0ec6ff6275875d5.
This commit breaks hydra, black mamba, and who knows how many other
forms of combat. I'll review the content (most of which is probably
desirable) and once I figure out what was breaking the combat for
these monsters, I'll re-implement and push everything else in this
commit back.
|
|
|
|
|
| |
Passing allow_unarmed around everywhere wasn't actually doing anything, and
can_do_unarmed was misleading.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
crawl-ref/source/actor.cc
crawl-ref/source/delay.cc
crawl-ref/source/directn.cc
crawl-ref/source/directn.h
crawl-ref/source/fight.cc
crawl-ref/source/files.cc
crawl-ref/source/mon-act.cc
crawl-ref/source/monster.cc
crawl-ref/source/mpr.h
crawl-ref/source/player.cc
crawl-ref/source/shopping.cc
|
| |
| |
| |
| |
| |
| |
| | |
"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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Combines various monster/player methods. Some of the merges are less optimized
than others, but they serve well as a functional merge for the time beng. Merged
methods include calc_base_unarmed_damage, calc_base_weapon_damage and the three
wrapper methods in fight.cc which were responsible for instantiating the
melee_fight object and starting the whole process.
you_attack, monster_attack, and monsters_fight are all now in fight_melee
Once completed, fight_melee will also loop, handling each of a monster(s) various
attacks.
|
| |
| |
| |
| |
| |
| | |
In addition to monster_attack (MvP) and monsters_fight (MvM), there was a
monster_attack_actor which was either (MvP OR MvM) and was only used for in
the _handle_reaching method of mons-act.cc.
|
| |
| |
| |
| |
| |
| |
| | |
Was only used in player.cc to display to_hit-related information. Wrapper
function declared an instance of melee_attack and called the actual calc_to_hit
methods that we use for combat. Why can't we do this in the player method
itself?
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Joins the two to_hit methods into a single method (fairly crudely)
simpy by checking if attacker is player, do {paste of player_to_hit}
else, do {paste of monster_to_hit}.
Adds/Removes some pending/incomplete todos as necessary, also removes
an unnecessary method used for calculating and displaying player_to_hit
deterministically.
Creates a new fight function (fight_melee) which will be the new handler
of combat once the rewrite is done.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Completes the move of the majority of the melee_attack class method definitions
from fight.cc to melee_attack.cc (the amount of content that was moved out of
fight.cc resulted in git flagging fight.cc as being renamed to melee_attack.cc
and fight.cc being recreated [with much less content]). This commit also
allows the new attack class (with melee_class inheriting from it) to compile,
it does not appear that much functionality has changed with this massive
restructuring of the code.
|
|/ |
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
monsters.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Adds six new slime-related mutations that only Jiyva can give.
Jiyva's royal jelly effect now spawns short-lived friendly slimes.
Passive jelly drops occur under penance to prevent using penance to avoid item loss
Stat altering occurs less frequently
Signed-off-by: Robert Vollmert <rvollmert@gmx.net>
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed privately. A new rewrite will come.
This reverts commit 607bea974114ffd0be153a0af52302bbb04038df.
This reverts commit 58b8890cabd409396c4eb1972fd0249d8971c5d7.
This reverts commit f8e18373932f005fecaadaab00c341f6b6958183.
This reverts commit 870de8f6f67f7b462f1eb17a5f53cb34535f4a60.
This reverts commit 279291369dd4dea4e7c1454fc00b29a7f088fab2.
This reverts part of commit 5a59108b0370ed3aa353192bbec306f7249258b1,
namely the player_aux_unarmed part.
|
|
|
|
| |
Also adds in monstrous code for DS monstrous mutation sets.
|
|
|
|
|
|
|
|
|
|
| |
Also corrects aux to-hit calculation (as far as I can tell),
though this should only affect vampires.
Whoever is responsible for the vampire aux unarmed code
might want to reevaluate. Is it really intended that a
vampire never gets auxiliary kicks and headbutts, and
a punch only in one sixth of cases?
|
|
|
|
| |
This reverts commit 5cbf957b1b2b979fdc6dc8aa3c31f3bae6eb2c5f.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The delay formulas are too complicated to analyze. It turns
out that not only is attack delay randomized in
melee_attack::player_apply_attack_delay, but even base
weapon delay in melee_attack::player_weapon_speed goes
through randomization.
This reverts commit 25ba707d26259f7a35da9367a31df9184fd89b60.
This reverts commit 59cb47231f09c696c38ef72956e962c5b9cea191.
This reverts commit cea96c26d7185e3e46af5ff9497a6a240bd1a2a0.
This reverts commit e2c10d8fc5747b45025b8a48d6c3aa7b9300d6d3.
This reverts commit 43f9de964ec341f165fe942904758e08d56364d8.
|
|
|
|
|
|
|
| |
calc_your_attack_delay gets a scale parameter, and an implementation
of R_EXPECTED which is correct except for the hand-and-a-half plus
shield case, since I'm lacking a formula for the expected value
of min(1dN+1dK, 1dN+1dK).
|
| |
|
|
|
|
|
|
| |
It currently only allows computing minimal and maximal delay (aside
an actual random value) since the distribution isn't that straight
forward.
|
|
|
|
|
| |
This means fight.h doesn't need to include artefact.h
anymore, reducing dependencies.
|
|
|
|
| |
melee attack.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I hope this is uncontroversial (allowing to stab friends, not
stabbing friends itself).
It makes a lot of sense to be able to catch them off-guard. Mostly
flavour -- I don't think the gameplay effect will be huge. Let me
know if I missed something!
Ally stabs do damage like confused stabs. The messages fit nicely:
"You catch %s completely off-guard!"
"You strike %s from behind!"
|