Dungeon Crawl Stone Soup Tracker - DCSS
Viewing Issue Advanced Details
7188 Patches feature N/A 2013-06-09 07:31 2013-10-04 04:14
gammafunk Both  
neil All  
normal Both  
closed 0.13 ancient branch  
0.13-a0-1536-gedae9ec done  
none    
none 0.14 ancient branch  
0007188: Initial implementation of a jump attack ability.
I've created a page on the dev wiki for discussion that goes into the details:

https://crawl.develz.org/wiki/doku.php?id=dcss:brainstorm:combat:jump_attack [^]

Short summary:

A new ability where the player can jump or perform a jumping attack that can hit
one to a few targets.

The user can target a monster to perform a jump attack dealing additional melee
damage and secondary damage to hostiles along the jump path.

A jump with no primary attack can be performed by targeting an empty square,
although hostile monsters along the jump path will be hit by the secondary
attack Tested on tiles and ascii builds on OS X and a webtiles server on linux.

The jump evocation ability comes from an armour ego (either boots or hat).
There's also a player mutation, which Felids now start with at level one,
increasing to levels 2 and 3 at XL 6 and XL 12. It costs 2mp to cast, uses
hunger similar to a breath attack, and has a 'jump power' mechanic to limit
consecutive jumps.

There's a Dragoon class that starts with boots of jumping or a hat of jumping,
appropriate skills in evocations and 2mp.

This will need lots of tweaking for balance, and I'm open to taking the
'translocations attack' idea in other direction(s).
? file icon jump_attack_gedae9ec.patch [^] (118,683 bytes) 2013-06-09 07:31
? file icon jump_attack_updated20130609_qoala.patch [^] (117,255 bytes) 2013-06-10 02:47
? file icon hp_cost_jump.patch [^] (240,558 bytes) 2013-06-10 08:16
? file icon jump_attack_v2_92775cd1.patch [^] (92,503 bytes) 2013-06-13 03:51 [Show Content]
? file icon jump_attack_v2-correct_g92775cd1.patch [^] (89,168 bytes) 2013-06-13 04:14 [Show Content]
? file icon jump_attack_v3-g8b0bc899.patch [^] (101,121 bytes) 2013-06-14 04:50 [Show Content]
? file icon jump_attack_v4-g3e32d0a6.patch [^] (101,687 bytes) 2013-06-14 19:04 [Show Content]
? file icon jump_attack_v5-g3e32d0a6.patch [^] (102,427 bytes) 2013-06-14 19:41
? file icon jump_attack_v6-g0407d63d9.patch [^] (103,220 bytes) 2013-06-14 21:15
? file icon jump_attack_v7-g8987dc3f3.patch [^] (115,675 bytes) 2013-06-16 09:47
? file icon jump_attack_tweaks_33dbfe7a3.patch [^] (4,897 bytes) 2013-10-04 03:20 [Show Content]
Issue History
2013-06-09 07:31 gammafunk New Issue
2013-06-09 07:31 gammafunk File Added: jump_attack_gedae9ec.patch
2013-06-09 07:36 gammafunk Issue Monitored: gammafunk
2013-06-09 07:47 VengefulCarrot Note Added: 0023129
2013-06-09 10:36 Lightli Issue Monitored: Lightli
2013-06-09 19:38 evilmike Note Deleted: 0023129
2013-06-10 02:47 Lightli Note Added: 0023135
2013-06-10 02:47 qoala File Added: jump_attack_updated20130609_qoala.patch
2013-06-10 02:49 qoala Note Added: 0023137
2013-06-10 08:06 Reaver Note Added: 0023140
2013-06-10 08:16 Reaver File Added: hp_cost_jump.patch
2013-06-10 08:22 Reaver Note Edited: 0023140
2013-06-13 03:51 gammafunk File Added: jump_attack_v2_92775cd1.patch
2013-06-13 04:14 gammafunk File Added: jump_attack_v2-correct_g92775cd1.patch
2013-06-13 04:36 gammafunk Note Added: 0023170
2013-06-13 23:29 gammafunk Note Added: 0023177
2013-06-14 04:50 gammafunk File Added: jump_attack_v3-g8b0bc899.patch
2013-06-14 04:57 gammafunk Note Added: 0023181
2013-06-14 04:58 gammafunk Note Added: 0023182
2013-06-14 09:07 gammafunk Note Deleted: 0023182
2013-06-14 09:07 gammafunk Note Edited: 0023181
2013-06-14 19:04 gammafunk File Added: jump_attack_v4-g3e32d0a6.patch
2013-06-14 19:05 gammafunk Note Added: 0023188
2013-06-14 19:41 gammafunk File Added: jump_attack_v5-g3e32d0a6.patch
2013-06-14 19:42 gammafunk Note Added: 0023189
2013-06-14 21:15 gammafunk File Added: jump_attack_v6-g0407d63d9.patch
2013-06-14 21:15 gammafunk Note Added: 0023191
2013-06-16 00:34 KiloByte Note Added: 0023204
2013-06-16 01:02 gammafunk Note Added: 0023205
2013-06-16 01:17 KiloByte Note Added: 0023207
2013-06-16 09:47 gammafunk File Added: jump_attack_v7-g8987dc3f3.patch
2013-06-16 09:53 gammafunk Note Added: 0023210
2013-06-24 21:45 gammafunk Note Added: 0023287
2013-08-25 07:09 neil Note Added: 0023868
2013-09-29 18:13 neil Note Added: 0024112
2013-09-30 05:47 gammafunk Note Added: 0024118
2013-10-04 03:20 gammafunk File Added: jump_attack_tweaks_33dbfe7a3.patch
2013-10-04 03:23 gammafunk Note Added: 0024148
2013-10-04 04:14 neil Note Added: 0024149
2013-10-04 04:14 neil Status new => resolved
2013-10-04 04:14 neil Fixed in Branch => 0.14 development branch
2013-10-04 04:14 neil Resolution open => done
2013-10-04 04:14 neil Assigned To => neil
2013-10-04 04:14 neil Status resolved => closed

Notes
(0023135)
Lightli   
2013-06-10 02:47   
On paper this already looks to be more balanced than stuff that actually made it into crawl. Like djinn.

Will post again on whether or not it's balanced and, more importantly, if it's fun.
(0023137)
qoala   
2013-06-10 02:49   
I uploaded a modification of this patch (generated by applying the patch, resolving conflicts and generating a new patch from the results) which should apply cleanly to current trunk.
(0023140)
Reaver   
2013-06-10 08:06   
(edited on: 2013-06-10 08:22)
I'm added a patch which switches to and HP cost for jumping, as discussed in the thread. It also deletes some weird cases where you couldn't jump.
EDIT: It appears my patch isn't working. I compiled it, but I was so caught up in the fun of jumping I forgot to check if it caused hp to drop, which it doesn't. Looking closely, I think I only modified the part which displays what the cost is, since I assumed that it also changed the actual costs.

(0023170)
gammafunk   
2013-06-13 04:36   
This is jump patch version 2, reworked based on discussions with the dev. team.
The second version of the v2 patch (-corrected) has unneeded changes removed and
whitespace fixes from checkwhite, so please use that version.

Summary of changes:

1. You can only use the ability to jump attack an enemy or invisible monster
    marker; no more standalone 'cblink' jump.

2. The landing site is randomly chosen from the valid sites near the monster
    rather than being chosen by the player; no more double-targetting. If
    something invisible turns out to be blocking the randomly chosen landing
    site chosen, the jump fails with an appropriate message and the turn is
    wasted. If the player jump-attacks an invisible monster marker and no
    monster turns out to be at the chosen landing site, the attack won't happen,
    but the player is still moved.

3. Jump attack sets exhaustion after on jump, so no more double-jumping. The
    timeout used is the same as the breath timeout for breath attack, which is
    reduced by either evocations or XL, depending on whether the jump is from
    the ego or the mutation.

4. The damage increase is greatly reduced, from 200% to 20%. I kept in a
    damage increase despite some resistance to this in discussion. Since we set
    exhaustion and because the damage increase is so minor, any player who took
    the turns to 'kite' a slower enemy by jump attacking, running away to wait
    out exhaustion, and then jump attacking again would get far better use out
    of those turns by simply doing ordinary melee after the first jump. I think
    the damage increase is a nice incentive to use the ability at the beginning
    of a significant fight, but of course I'm open to tweaking or removing this.

5. Starting attack range increased from 2 to 3, up to a max of 5 instead of 4.
    The movement range is still one less than the attack range, so the player
    can move nore more than 4 spaces away at the highest jump ability level
    (which is 3). Jump attack at range 2 was pretty bad at start since it gave
    very little in the way of any positional advantage. The max movement of 4
    may be two high; we could remove the third jump level or tweak it in other ways.

6. I've removed the MP cose for the player mutation and kept the 2mp cost for
    the evocation ability. An HP cost has been suggested, but even a 2HP cost
    is almost 30% of a felid's starting HP.

7. Species that can't wear boots are restricted from Dragoon, get an
    unbranded helmet/cap if they still choose the class.

8. No more landing cursor or alternate landing site tiles, since we don't need them.
(0023177)
gammafunk   
2013-06-13 23:29   
Some problems that I need to fix in the current patch:

1. Attacking friendly and certain other warnings happen after the player has been moved to landing site, allowing the player to see the chosen landing site while the warning prompt is active. Will make the warnings occur before the player is moved to the chosen landing site

2. Attacking with elec should give a warning whenever a possible landing site puts the the player in water and there's susceptibility to self-electrocution.
(0023181)
gammafunk   
2013-06-14 04:57   
(edited on: 2013-06-14 09:07)
Updated patch to latest version: jump_attack_v3-g8b0bc899

Player movement warnings should work correctly now. This should be a complete,
and version of the more balanced jump attack suggested by discussion with the
dev. team, and further feedback/testing is welcome.

* Removed jump restrictions for player flight and stasis. Chei still allows
  jump, since there's not a consensus on this.

* The bug where the player was moved to the chosen landing site before attack
  warnings occurred has been fixed. The warning messages work as expected, and
  I've tested electrocution, attacking friendlies, and sanctuary.

* If any possible landing site would cause player electrocution or violate a
  sanctuary, the player is prompted correctly. There's code from
  melee_attack::handle_phase_attempted() that's somewhat duplicated in
  fight_jump() to handle this, but it's not too many lines

(0023188)
gammafunk   
2013-06-14 19:05   
Updated patch to jump_attack_v4-g3e32d0a6.patch

* Make +Jump get added to randartes with same frequency as +Fly/Blink/Rage
* Whitespace and description cleanups
(0023189)
gammafunk   
2013-06-14 19:42   
Updated patch to jump_attack_v5-g3e32d0a6.patch

* Make boots of jumping get generated amongst random items
(0023191)
gammafunk   
2013-06-14 21:15   
Updated patch to jump_attack_v6-g0407d63d9.patch

* Appropriate jump-attack message in event log
(0023204)
KiloByte   
2013-06-16 00:34   
I don't think I like hats of jumping (eh...), or the Dragoon class. You don't have a class that starts with boots of running, discs of storms, etc.
(0023205)
gammafunk   
2013-06-16 01:02   
Hats of jumping are already gone; you have to use the boots or get the property on an artefact in the current version.

Dragoon class is certainly next on the chopping block. There's some talk about maybe giving Ar boots of jumping, since the jump ability is a fairly mild one, but mumra is still working on Ar. I think I'll just remove Dragoon for now and use wizmode to test.

To help with merges and future work, I'm going to make a clone of trunk on gitorious with a jump_attack branch and push future changes there. That branch will a commit for the base ability, followed by commits for probably each of: the evocations abilility, the artefact property, the player mutation, and giving the mutation to felids.

Then it'll be easier for the dev. team to pick the functional parts they want as well as any individual commits I make in the future.
(0023207)
KiloByte   
2013-06-16 01:17   
That would be great, having a large feature come as a stack of separate commits rather than a monolitic patch makes them far easier to review, both now and in the future.
(0023210)
gammafunk   
2013-06-16 09:53   
Ok, I've made my own clone repo with a jump_attack branch:

gitorious.org:~gammafunk/crawl/crawl-gammafunk.git

The jump_attack branch has 7 commits, based from g8987dc3f3.

1. jump attack ability; this is by far the largest
2. Add jump armor ego
3. Add boots of jumping
4. Add jump artefact property
5. Add the player mutation
6. Give felids the jump mutation at start (increasing with level-up)
7. Fix a bug where the movement range wasn't properly checked

Dragoons are gone from this branch; you have to find the boots, get it on an artefact, or play as a felid to get the ability.


I've also uploaded the 7 commits as git patch file jump_attack_v7-g8987dc3f3.patch. From now on I'll just make commits to my repos.
(0023287)
gammafunk   
2013-06-24 21:45   
I've updated the jump_attack branch on my repo, and wanted to point out one
problem with the current version. If any landing site is dangerous (as
determined by check_moveto()), yet habitable, we don't properly warn the player.
In the current version, a monster won't be chosen as a default target if they
have only dangerous landing sites, but there's nothing done if only some sites
are dangerous.

We have proper warnings for self-electrocution, attacking friendlies, and
conduct violations. There are probably some double-warnings that need fixing if
there are violations due to both target and landing sites, but the player is
warned at least. I should probably be using/adapting the promping mechanics of
check_moveto(), ideally in direction_chooser so that a cancel returns the player
directly to targetting. The problem is that one could have different types of
danger in one set of landing sites for a target. For instance if the player had
temporary flight that's expiring, and some sites were in a freezing cloud, some
in deep water. There can even be a mix of different types of clouds over the
set of landing sites. I'm not sure if we'd want to try making a generic message
or try making multiple prompts.

Repo (branch jump_attack):
git://gitorious.org/~gammafunk/crawl/crawl-gammafunk.git [^]

Changes:
* Merged recent master branch
* Don't choose a monster as default target if its landing sites are all
   dangerous, yet habitable; The player can still target this monster manually.
* Fix a bug where the default_place variable in direction_chooser was being ignored.
* Cleanups and source documentation in targetter_jump
(0023868)
neil   
2013-08-25 07:09   
This is now an experimental branch on CSZO: select (T)runk -> (X)perimental -> (J)ump attack.
(0024112)
neil   
2013-09-29 18:13   
Zermako got a crash when jump attacking; it looks like there were no monsters in sight?

http://dobrazupa.org/morgue/Zermako/crash-Zermako-20130929-160940.txt [^]
(0024118)
gammafunk   
2013-09-30 05:47   
I've updated the jump_attack branch to fix the last remaining issues with jump, for the current design. I'm not sure if the crash is addressed by any of these fixes. I can spend some time later trying to track it down on the old version.

If there are no major objections to the jump design, it might be best to test this in trunk rather than in a dedicated branch. We'd want to remove the 'give boots of jumping to all players that can wear them' commit. Also the icons are stolen from the flight ego/ability. I can remove these if it's better to have missing tiles.

Changes:

* You can jump-attack an empty space, but if it turns out there's no monster present, the jump fails, wasting the turn. This allows the player to try to jump-attack invis enemies. It's certainly possible to keep the restriction to visible enemies, if that's deemed better

* Proper warnings are generated if your jump attack might land you in dangerous clouds, traps, above dangerous terrain with expiring flight/transformation, or in an exclusion.

* There should be no double-prompting for conduct warnings. All checks such as these occur in fight_jump() instead of the melee_attack class so as to avoid double-prompting. It would be nice to move the logic fully into melee_attack, but it would require passing more junk to that class, which is used an awful lot.
(0024148)
gammafunk   
2013-10-04 03:23   
I've uploaded jump_attack_tweaks_33dbfe7a3.patch with 4 commits, two of which are cleanups, and two which tweak the jump-attack behavior in light of the jump-attack range reduction to 3.
(0024149)
neil   
2013-10-04 04:14   
All of this is trunk as of 0.14-a0-147-gbdb8dd0, with some fixes up to and including 0.14-a0-151-gd5000a5. Thanks!