Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Move vs. Turn

1 view
Skip to first unread message

Maniac

unread,
Sep 26, 2006, 9:58:01 PM9/26/06
to
In a side discussion with Rast, he pointed out that jumping boots take
a full turn per jump (not a move per jump). I didn't find a spoiler
that mentions this. A trial in wiz mode confirms that but I can't seem
to figure out where in the code that is implemented. For the source
divers, I have the following questions:

[1] What actions take a move & which actions take a turn?

[2] Where in the code is that implemented?

Thanks.
--Mark

Haakon Studebaker

unread,
Sep 27, 2006, 12:30:20 AM9/27/06
to
"Maniac" <mhjo...@gmail.com> wrote in news:1159322281.147898.215510
@m7g2000cwm.googlegroups.com:

Have you ever played a character class with intrinsic speed?
Ever notice that when you are wearing speed boots that you can hit a
monster once or twice but the turn counter doesn't increment?
Understanding this is essential for dealing with various adversaries like
Master Kaen.
Reckon that should get you started. I know nothing about code.

Topi Linkala

unread,
Sep 27, 2006, 1:29:10 AM9/27/06
to
Maniac wrote:

> In a side discussion with Rast, he pointed out that jumping boots take
> a full turn per jump (not a move per jump). I didn't find a spoiler
> that mentions this. A trial in wiz mode confirms that but I can't seem
> to figure out where in the code that is implemented. For the source
> divers, I have the following questions:
>
> [1] What actions take a move & which actions take a turn?

I assume that by move you mean an action initiated by the user that
consumes time in the heros point of view and by turn you mean how
outside of hero events are timed (game tick).

All actions are counted in moves.

First of all there are actions that don't consume time in heros point of
view: inventory checking, one free use of stethoscope etc.

Secondly there are actions that take more than one move: praying, eating
(not all food), engraving etc.

Depending on the heros speed and encumberance levels the ratio
moves/turns is different:

Each monster type has it's own speed: very slow=3, slow=9, normal=12,
fast=15, very fast=24.

Every time hero moves 12 is substracted from his movement allotment and
if the allotment still is over 12 the hero can move again.
Every turn an amount is added to the allotment. This allotment is
calculated like this:

Unless one is riding the amount is heros base speed, normally 12 but
polymorphing affects this. This is then adjusted by heros extra speed:
if very fast 6 (2/3) or 12 (1/3) (average 8) is added or
if fast 0 (1/3) or 6 (2/3) (average 4) is added.

If the hero is riding the amount is the steeds speed.

Then the heros encumberment is accounted:
Not encumberd: no effect.
Slight: one fourth is substracted.
Moderate: half is substracted.
Heavy: three fourths is substracted.
Extreme: seven eights is substracted.

So on low end extremly encumbered very slow polymorphed hero gets 1
added so it takes 12 turns to get one move and high end not encumbered
very fast polymorphed hero that has speed boots get's on average 32
added which means 2.66 moves per turn.

If we take non-polymorphed non-encumbered hero then normal speed is 12
which is 1 move/turn, fast is 16 on average which is 1.33 moves/turn and
very fast is 20 on average which is 1.67 moves/turn.

> [2] Where in the code is that implemented?

Moveloop() is in allmain.c. The non-terminating loop starts on line 62.

Topi
--
"The whole problem with the world is that fools and fanatics are
always so certain of themselves, but wiser people so full of doubts."
- Bertrand Russell
"How come he didn't put 'I think' at the end of it?" - Anonymous

David Damerell

unread,
Sep 27, 2006, 5:49:18 AM9/27/06
to
Quoting Topi Linkala <n...@iki.fi>:
>Maniac wrote:
>>In a side discussion with Rast, he pointed out that jumping boots take
>>a full turn per jump (not a move per jump).
>>[1] What actions take a move & which actions take a turn?
>All actions are counted in moves.

Are you _sure_?
--
OPTIONS=name:Kirsty,menustyle:C,female,lit_corridor,standout,time,showexp,hilit
e_pet,catname:Akane,dogname:Ryoga,fruit:okonomiyaki,pickup_types:"!$?=/,scores:
5 top/2 around,color,boulder:0,autoquiver,autodig,disclose:yiyayvygyc,pickup_bu
rden:burdened,!cmdassist,msg_window:reversed,!sparkle,horsename:Rumiko,showrace

Beolach

unread,
Sep 27, 2006, 6:53:52 AM9/27/06
to
In <news:efd28f$uu9$1...@nyytiset.pp.htv.fi>, Topi Linkala <n...@iki.fi>
wrote:

> Maniac wrote:
>
>> In a side discussion with Rast, he pointed out that jumping boots take
>> a full turn per jump (not a move per jump). I didn't find a spoiler
>> that mentions this. A trial in wiz mode confirms that but I can't seem
>> to figure out where in the code that is implemented. For the source
>> divers, I have the following questions:
>>
>> [1] What actions take a move & which actions take a turn?
>
> I assume that by move you mean an action initiated by the user that
> consumes time in the heros point of view and by turn you mean how
> outside of hero events are timed (game tick).
>
> All actions are counted in moves.
>
> First of all there are actions that don't consume time in heros point of
> view: inventory checking, one free use of stethoscope etc.
>
> Secondly there are actions that take more than one move: praying, eating
> (not all food), engraving etc.
>
> Depending on the heros speed and encumberance levels the ratio
> moves/turns is different:
>
> Each monster type has it's own speed: very slow=3, slow=9, normal=12,
> fast=15, very fast=24.
>

Minor correction: in vanilla nethack 3.4.3, permonst.h does define those
speeds, but they're actually not used anywhere. In monst.c the base speed
of each type of monster is specified as a number, not using the
definitions from permonst.h, and there are monsters that have other speeds
(like the quivering blob w/ speed 1, steam & fire vortexes w/ speed 22, &c).

> Every time hero moves 12 is substracted from his movement allotment and
> if the allotment still is over 12 the hero can move again.
> Every turn an amount is added to the allotment. This allotment is
> calculated like this:
>
> Unless one is riding the amount is heros base speed, normally 12 but
> polymorphing affects this. This is then adjusted by heros extra speed:
> if very fast 6 (2/3) or 12 (1/3) (average 8) is added or
> if fast 0 (1/3) or 6 (2/3) (average 4) is added.
>
> If the hero is riding the amount is the steeds speed.
>

Another minor correction: the steed's speed is only used if the player
changed position: if the player is doing some other action that doesn't
change position, then the hero's speed is used. So even if you're riding,
speed boots may still be worthwhile, despite not affecting your steed's
speed.

> Then the heros encumberment is accounted:
> Not encumberd: no effect.
> Slight: one fourth is substracted.
> Moderate: half is substracted.
> Heavy: three fourths is substracted.
> Extreme: seven eights is substracted.
>
> So on low end extremly encumbered very slow polymorphed hero gets 1
> added so it takes 12 turns to get one move and high end not encumbered
> very fast polymorphed hero that has speed boots get's on average 32
> added which means 2.66 moves per turn.
>

Even higher end: moving while riding a galloping warhorse w/ speed monster
gives an average of 48 movement points, or 4 moves per turn.

> If we take non-polymorphed non-encumbered hero then normal speed is 12
> which is 1 move/turn, fast is 16 on average which is 1.33 moves/turn and
> very fast is 20 on average which is 1.67 moves/turn.
>
>> [2] Where in the code is that implemented?
>
> Moveloop() is in allmain.c. The non-terminating loop starts on line 62.
>
> Topi


I've been researching how speed & game time works, as I was wondering how
riding worked. I've started writing up a new version of the riding
spoiler, and I've been considering splitting it into two spoilers, one on
riding and one on speed. But RL has been throwing up distractions, so I
haven't done much writing on it recently. If/when I do get around to it,
it'll probably be very much like what Topi wrote.


Beolach

Beolach

unread,
Sep 27, 2006, 7:51:46 AM9/27/06
to
In <news:I8v*hj...@news.chiark.greenend.org.uk>, David Damerell
<dame...@chiark.greenend.org.uk> wrote:

> Quoting Topi Linkala <n...@iki.fi>:
>>Maniac wrote:
>>>In a side discussion with Rast, he pointed out that jumping boots take
>>>a full turn per jump (not a move per jump).
>>>[1] What actions take a move & which actions take a turn?
>>All actions are counted in moves.
>
> Are you _sure_?

The only thing Topi didn't mention is that some commands (like donning or
doffing armor) may have a delay, as well as consuming movement points.
This delay is in turns, and is done by calling the nomul function with a
negative value: this seems to be the reason jumping takes a full turn,
regardless of your speed. The jump function calls nomul(-1), which causes
a delay of 1 turn.


Beolach

David Damerell

unread,
Sep 27, 2006, 8:22:40 AM9/27/06
to
Quoting Beolach <beo...@gmail.com>:
><dame...@chiark.greenend.org.uk> wrote:
>>Quoting Topi Linkala <n...@iki.fi>:
>>>Maniac wrote:
>>>>In a side discussion with Rast, he pointed out that jumping boots take
>>>>a full turn per jump (not a move per jump).
>>>>[1] What actions take a move & which actions take a turn?
>>>All actions are counted in moves.
>>Are you _sure_?
>The only thing Topi didn't mention is that some commands (like donning or
>doffing armor) may have a delay, as well as consuming movement points.

What Topi did, to be blunt, was to completely ignore the question and the
information in it.

Topi Linkala

unread,
Sep 27, 2006, 8:27:16 AM9/27/06
to

No it doesn't. It causes delay of one move. So if the heros movement
allotment is is over 36 then jumping doesn't consume a turn as it takes
two moves which substract 24 from the movement allotment and still
leaves it over 12 which allows the hero to take another move before the
turn counter is incremented.

Topi Linkala

unread,
Sep 27, 2006, 8:31:05 AM9/27/06
to
Beolach wrote:

Point taken. I confess that I didn't look what mcalcmove(u.usteed)
returns and I thought that monst.c would use those values defined in
permonst.h.

Anyway the main point is that heros actions are not turn based but move
based.

Topi Linkala

unread,
Sep 27, 2006, 8:47:39 AM9/27/06
to
David Damerell wrote:

> Quoting Beolach <beo...@gmail.com>:
>
>><dame...@chiark.greenend.org.uk> wrote:
>>
>>>Quoting Topi Linkala <n...@iki.fi>:
>>>
>>>>Maniac wrote:
>>>>
>>>>>In a side discussion with Rast, he pointed out that jumping boots take
>>>>>a full turn per jump (not a move per jump).
>>>>>[1] What actions take a move & which actions take a turn?
>>>>
>>>>All actions are counted in moves.
>>>
>>>Are you _sure_?
>>
>>The only thing Topi didn't mention is that some commands (like donning or
>>doffing armor) may have a delay, as well as consuming movement points.
>
>
> What Topi did, to be blunt, was to completely ignore the question and the
> information in it.

You say that this is ignoring (a quote from my original message):

"Secondly there are actions that take more than one move: praying,
eating (not all food), engraving etc."

multi is checked once for every move (-12 to movement allotment) so all
actions that take more than one move are counted in moves not in turns.

A turn has ended when no monster can move and the heros movement
allotment is less than zero.

As long as the movement allotment of hero is greater than zero the hero
can perform a move. If he is in multi eg. the action takes more than one
move the occupation function is called unless the occupation was
aborted. If the occupation was aborted or a monster is nearby the
occupation is stopped.

Topi Linkala

unread,
Sep 27, 2006, 8:55:02 AM9/27/06
to
David Damerell wrote:

> Quoting Topi Linkala <n...@iki.fi>:
>
>>Maniac wrote:
>>
>>>In a side discussion with Rast, he pointed out that jumping boots take
>>>a full turn per jump (not a move per jump).
>>>[1] What actions take a move & which actions take a turn?
>>
>>All actions are counted in moves.
>
>
> Are you _sure_?

Yes. Turns may be longer than moves and vice versa but hero actions are
counted in moves (-12 to heros move allotment).

So every move takes 12 allotment points. Every turn more allotment
points are given. This can be as low as 1 point or as high as 48.

So low end is 1 move in 12 turns and high end is 4 moves in a turn.

Kent Paul Dolan

unread,
Sep 27, 2006, 11:18:44 AM9/27/06
to
Topi Linkala wrote:

> As long as the movement allotment of hero is
> greater than zero the hero can perform a move.

Which is it? One place you tell us the hero can move
if the hero's move allotment is at least twelve,
here you tell us the hero's move allotment merely
has to be greater than zero.

xanthian.

David Damerell

unread,
Sep 27, 2006, 11:29:02 AM9/27/06
to
Quoting Topi Linkala <n...@iki.fi>:

>David Damerell wrote:
>>What Topi did, to be blunt, was to completely ignore the question and the
>>information in it.
>You say that this is ignoring (a quote from my original message):
>"Secondly there are actions that take more than one move: praying,
>eating (not all food), engraving etc."

Yes; that's saying things can take multiple moves. What it's not
addressing - at all - is the question of whether some things take turns,
not moves.

>multi is checked once for every move (-12 to movement allotment) so all
>actions that take more than one move are counted in moves not in turns.

_Now_ you're addressing the question. So what do you make of;

/* when immobile, count is in turns */

in allmain.c?

Rast

unread,
Sep 27, 2006, 11:57:11 AM9/27/06
to
In article <efdscg$5un$1...@nyytiset.pp.htv.fi>, n...@iki.fi says...

> Yes. Turns may be longer than moves and vice versa but hero actions are
> counted in moves (-12 to heros move allotment).

But that doesn't explain jumping.

Wizmode, very fast, unburdened, riding a speedy galloping warhorse. Each
jump takes one game turn. It's actually faster to move normally than to
jump (three moves per turn).


--
"It's only possible to betray where loyalty is due," said Sandy.
"Well, wasn't it due to Miss Brodie?"
"Only up to a point," said Sandy.
- Muriel Spark

Ugly Newt

unread,
Sep 27, 2006, 3:07:34 PM9/27/06
to
I was hanging out with the cool kids in rec.games.roguelike.nethack when
Rast got out a spraycan and scrawled the following:

> In article <efdscg$5un$1...@nyytiset.pp.htv.fi>, n...@iki.fi says...
> > Yes. Turns may be longer than moves and vice versa but hero actions are
> > counted in moves (-12 to heros move allotment).
>
> But that doesn't explain jumping.
>
> Wizmode, very fast, unburdened, riding a speedy galloping warhorse. Each
> jump takes one game turn. It's actually faster to move normally than to
> jump (three moves per turn).

Wow. I've just had the mental image of the hero waving the Amulet
victoriously while tearing out of Gehennom on horseback, with an irate
Rodney in his tracks, cursing into the still-settling dust. (Such a
shame that Rodney doesn't have to run to catch up.)

--
It's easy in your righteous quest to forget the golden rule
Your malice and your discontent will never see you through
Choose your battles carefully - is the fire all you can see?
Heal yourself before looking for enemies.

Grunt

unread,
Sep 27, 2006, 3:07:55 PM9/27/06
to
On Wed, 27 Sep 2006 11:57:11 -0400, Rast <ra...@hotmail.com> wrote:
> In article <efdscg$5un$1...@nyytiset.pp.htv.fi>, n...@iki.fi says...
>> Yes. Turns may be longer than moves and vice versa but hero actions are
>> counted in moves (-12 to heros move allotment).
>
> But that doesn't explain jumping.
>
> Wizmode, very fast, unburdened, riding a speedy galloping warhorse. Each
> jump takes one game turn. It's actually faster to move normally than to
> jump (three moves per turn).


According to allmain.c:282-283, being immobile (i.e. in any place where
nomul() is called with a negative numbe) is counted in turns, not in
moves - the magnitude of the number defines the number of turns that
pass. Therefore "nomul(-1);" would cause one turn to pass, consistent
with the observations andwith the code.

Maniac

unread,
Sep 27, 2006, 11:31:23 PM9/27/06
to
Topi Linkala wrote:
> Beolach wrote:
> > In <news:I8v*hj...@news.chiark.greenend.org.uk>, David Damerell
> > <dame...@chiark.greenend.org.uk> wrote:
> >
> >
> >>Quoting Topi Linkala <n...@iki.fi>:
> >>
> >>>Maniac wrote:
> >>>
> >>>>In a side discussion with Rast, he pointed out that jumping boots take
> >>>>a full turn per jump (not a move per jump).
> >>>>[1] What actions take a move & which actions take a turn?
> >>>
> >>>All actions are counted in moves.
> >>
> >>Are you _sure_?
> >
> >
> > The only thing Topi didn't mention is that some commands (like donning or
> > doffing armor) may have a delay, as well as consuming movement points.
> > This delay is in turns, and is done by calling the nomul function with a
> > negative value: this seems to be the reason jumping takes a full turn,
> > regardless of your speed. The jump function calls nomul(-1), which causes
> > a delay of 1 turn.
>
> No it doesn't. It causes delay of one move. So if the heros movement
> allotment is is over 36 then jumping doesn't consume a turn as it takes
> two moves which substract 24 from the movement allotment and still
> leaves it over 12 which allows the hero to take another move before the
> turn counter is incremented.

Hmm. The sequence of responses makes it apparent this is a lot more
complicated than I expected.

Let me see if I understand the variables / code that makes this work.

First, we have "multi", defined at decl.h:29, which appears after some
searching to indicate how long an action is supposed to take (in terms
of the 12 unit movement allotment?). What I can't quite tell is how
multi values are used (positive, negative, zero).
- zero appears to be set when you get interrupted in some action
Does positive mean that you can be interrupted in the action [such as a
repeat code set in cmd.c:2320 (parse function)] & negative means it
can't? [example - potion.c:315, you got a ghost from a potion & are
frozen three (-3) moves]

nomul(), defined at hack.c:2067 checks multi & returns immediately if
the passed value is greater than multi. If not, multi is updated & a
set of flags are reset (related to movement?).

However, the code David referred to at allmain.c:282 does mention the
units of delay is turns (not moves). My testing still seems to indicate
that's true - at least for jumping.

In a previous message, you indicated a poly'd very fast monster could
jump in less than a full turn. I started a knight in wizmode & poly'd
into several different monsters (such as warhorse or unicorn - speed
24, bat - 20, titan - 18, etc.) and couldn't jump more than once per
turn. The titan could still wear boots - I tried with both speed boots
& with jumping boots - no joy. The code at allmain.c:108 seems to
indicate I should get an extra jump about 1/3rd of the time, but it
didn't work for me.

Any ideas what's going on here [or for that matter - why jumping should
take a full turn]?

--Mark

Beolach

unread,
Sep 28, 2006, 10:47:43 AM9/28/06
to
In <news:1159414283.8...@i3g2000cwc.googlegroups.com>, "Maniac"
<mhjo...@gmail.com> wrote:

> Topi Linkala wrote:
>> Beolach wrote:
>> > In <news:I8v*hj...@news.chiark.greenend.org.uk>, David Damerell
>> > <dame...@chiark.greenend.org.uk> wrote:
>> >

<snip>


>> > The only thing Topi didn't mention is that some commands (like
>> > donning or doffing armor) may have a delay, as well as consuming
>> > movement points. This delay is in turns, and is done by calling the
>> > nomul function with a negative value: this seems to be the reason
>> > jumping takes a full turn, regardless of your speed. The jump
>> > function calls nomul(-1), which causes a delay of 1 turn.
>>
>> No it doesn't. It causes delay of one move. So if the heros movement
>> allotment is is over 36 then jumping doesn't consume a turn as it takes
>> two moves which substract 24 from the movement allotment and still
>> leaves it over 12 which allows the hero to take another move before the
>> turn counter is incremented.
>
> Hmm. The sequence of responses makes it apparent this is a lot more
> complicated than I expected.
>
> Let me see if I understand the variables / code that makes this work.
>
> First, we have "multi", defined at decl.h:29, which appears after some
> searching to indicate how long an action is supposed to take (in terms
> of the 12 unit movement allotment?). What I can't quite tell is how
> multi values are used (positive, negative, zero).

I believe there's actually 2 separate uses for the multi variable: positive
values are for repeating commands with a numeric prefix: pressing "3s"
searches three times, by setting multi to positive 3 and looping the
search command & decreasing multi until multi is 0.

> - zero appears to be set when you get interrupted in some action
> Does positive mean that you can be interrupted in the action [such as a
> repeat code set in cmd.c:2320 (parse function)] & negative means it
> can't? [example - potion.c:315, you got a ghost from a potion & are
> frozen three (-3) moves]
>

If you've issued a multi command, say the "3s" above, and something
happens to interrupt your searching, then multi is immediately set to 0.

> nomul(), defined at hack.c:2067 checks multi & returns immediately if
> the passed value is greater than multi. If not, multi is updated & a
> set of flags are reset (related to movement?).
>
> However, the code David referred to at allmain.c:282 does mention the
> units of delay is turns (not moves). My testing still seems to indicate
> that's true - at least for jumping.
>

nomul() is always called with 0 or a negative number. This sets multi to
a negative value, and the player is not given the opportunity to enter
another command (the rhack() function called in allmain.c) until multi is
0 again, and a negative multi is incremented once for each run through the
"hero can't move" loop in allmain.c, which is how I would define a "turn".
So I guess either I or Topi is interpreting the code wrong, because the
way I read it, calling nomul() with a negative value always results in the
same length delay, regardless of the hero's speed.

Doug Freyburger

unread,
Sep 29, 2006, 2:58:18 PM9/29/06
to
Maniac wrote:
>
> [1] What actions take a move & which actions take a turn?

I read through the thread and tried to understand it. If I can
summarize it then I did understand it. Let's see if I got it
right:

A turn is the time it takes anyone to spend 12 movement
points. Get fast enough, player or monster, and you might
move more than once in the same turn. Get slow enough,
player or monster, and it might take several turns before
you get to move. To learn more about this have the turn
number displayon the bottom line and move around while
Strained or while very fast.

A move is when you have 12 movement points. Depending
on how slow or fast you are it could be several turns before
you reach 12 points or you could get several moves during
one turn.

The game starts with turns and move both being 12 points
so they are the same. Then other effects move them out of
exact alignment.

Since a jump takes a turn not a move, jumping is MUCH
faster than walking when you're slow, but a bit slower than
walking when you're very fast. Consider downhill skiing,
motocross racing, and other events where the players can
become airborn for why it was implemented this way.

Using turns and moves in combat - When retreating from a
monster slower than you, count moves and see how many
before you get a move and the monster doesn't. Then
count your retreat steps and swing when the monster doesn't
get a move.

Grunt

unread,
Sep 29, 2006, 3:28:07 PM9/29/06
to
On 29 Sep 2006 11:58:18 -0700, Doug Freyburger <dfre...@yahoo.com> wrote:
> [...]

> A turn is the time it takes anyone to spend 12 movement
> points. Get fast enough, player or monster, and you might
> move more than once in the same turn. Get slow enough,
> player or monster, and it might take several turns before
> you get to move. To learn more about this have the turn
> number displayon the bottom line and move around while
> Strained or while very fast.
>
> A move is when you have 12 movement points. Depending
> on how slow or fast you are it could be several turns before
> you reach 12 points or you could get several moves during
> one turn.
>
I'm not happy with the way this is worded, even though it's largely
correct, so I'll take a stab at it:

A turn is the period of time during which the player or any monster has
the chance to spend movement points in 12 point increments, with players
and monsters getting opportunites at this in order. The turn ends once
nobody has at least 12 movement points.

A move is any action that will spend these 12 movement points.

The movement rate, or speed, of a monster is the number of movement
points it gains per turn. The player normally has speed 12, but their
average speed is increased to 16 or 20 by being fast or very fast (using
some random elements which are not of concern here) and reduced by 1/4,
1/2, 3/4, and 7/8 by being burdened, stressed, strained, and overtaxed
respectively.

Being rendered immobile (as I've termed it) causes your moves to be used
doing nothing until a specified amount of turns has elapsed; actions
such as paralysis, engraving, fainting, etc. are examples of this.
Most notably (in the context of this discussion) jumping causes a turn
of immobility, which is why it always uses exactly one turn.

Jove

unread,
Sep 29, 2006, 3:58:54 PM9/29/06
to
On 29 Sep 2006 11:58:18 -0700, Doug Freyburger wrote:

>Maniac wrote:
>>
>> [1] What actions take a move & which actions take a turn?
>
>I read through the thread and tried to understand it. If I can
>summarize it then I did understand it. Let's see if I got it
>right:
>
>A turn is the time it takes anyone to spend 12 movement
>points. Get fast enough, player or monster, and you might
>move more than once in the same turn. Get slow enough,
>player or monster, and it might take several turns before
>you get to move. To learn more about this have the turn
>number displayon the bottom line and move around while
>Strained or while very fast.

- You can't move at all unless you have at least 12 movement points.

- You accumulate movement points at the beginning(?) of each turn.

- The base gain is 12, adjusted for
- burdened state: Burdened, stressed, strained, etc.
- Being "fast", "very fast", "slow(?)"
- Speed of your mount if #riding

- There's also some randomness involved.
- The DevTeam wants you dead. I don't care what Rob Ellwood says.

- When you do move, 12 movement points are deducted from your total.
- You keep getting moves until movement points go to zero (or less).
- Presumably negative movement points are reset to zero at the
beginning of a turn, before the fresh movement points are
allocated.


>
>A move is when you have 12 movement points. Depending
>on how slow or fast you are it could be several turns before
>you reach 12 points or you could get several moves during
>one turn.
>
>The game starts with turns and move both being 12 points
>so they are the same. Then other effects move them out of
>exact alignment.
>
>Since a jump takes a turn not a move, jumping is MUCH
>faster than walking when you're slow, but a bit slower than
>walking when you're very fast.

"Very fast", as I currently mis-understand it, gives a 2/3 chance of
an extra move per turn. (That's roughly speaking. NetHack's speed
system isn't all that systematic.)

Plain jumping travels 2-3x as far per turn.
"Very fast" averages 1.67 spaces moved per turn.

Jumping still looks like a clear winner over even "very fast."
This is supported by my experience. (NB: Expert spell of jump can
travel 3-4x as far per turn. It's like being pushed by angels.)


>Consider downhill skiing,
>motocross racing, and other events where the players can
>become airborn for why it was implemented this way.
>
>Using turns and moves in combat - When retreating from a
>monster slower than you, count moves and see how many
>before you get a move and the monster doesn't. Then
>count your retreat steps and swing when the monster doesn't
>get a move.

Be aware that if you're "fast" or "very fast" you only have a
probability of an extra move per turn. I believe the odds are 1/3
chance at "fast" and 2/3 chance at "very fast."

I've seen this behavior in game, while running from a monster.
Sometimes the monster gained on my character. Sometimes my character
gained distance on the monster.

It was a strange experience. I've been leery of depending on the
speed system ever since.

--
Welcome to NetHack. | I take what I'm given.
| You exploit the game.
All the best, | He's an abusive cheater.
Jove (Joe Bednorz)

Maniac

unread,
Oct 3, 2006, 8:40:46 PM10/3/06
to
Maniac wrote:
> In a side discussion with Rast, he pointed out that jumping boots take
> a full turn per jump (not a move per jump). I didn't find a spoiler
> that mentions this. A trial in wiz mode confirms that but I can't seem
> to figure out where in the code that is implemented. For the source
> divers, I have the following questions:
First, I want to thank every one for their feedback on this question.
Here are the answers to my questions (the best I can determine).

>
> [1] What actions take a move & which actions take a turn?
>


Actions, Moves, and Turns
=========================

There are cases in the game where it is important to understand how
long an action may take. First is a description of three concepts.

o Action - something initiated by the player which may take no time,
one or more moves, or one or more turns.
o Move - the duration of time based on the speed of the player and the
encumbrance. The number of moves per turn (or turns per move) is not
fixed.
o Turn - the duration of time measured by the *Turn Counter* which can
be displayed on the bottom of the screen. Monsters get to move or fight
each turn. Monsters with speed faster than normal can perform more than
one action on their part of the turn.

At the start of the game, the duration of a move is equal to one turn.
With some exceptions, the duration of a voluntary action is measured in
moves and an involuntary action (e.g., frozen by a ghost) is measured
in turns. Also note that some of the multiple turn delays are not
unconditional (there is a chance of occurrence).

Within this framework, the duration of actions can be categorized as
follows:

*No Time* - checking your inventory (i or I), checking your attributes
(^X), enhancing your skills (#enhance), start / stop two weapon
fighting (#twoweapon), quivering items (q), examining an object (;, :,
or /), naming items or monsters (#name or C), adjusting your inventory
(#adjust) even if it merges items, setting options (O), information
about nethack (v, V, ?, #?, &), saving the game (S), redrawing the
screen (^L, ^R), recalling messages (^P), actions that fail (not
capable) or are aborted (usually triggered by ESC), and invalid
commands (e.g., space when rest on space is disabled).

*No Time or One Move* - using the stethoscope; the first use per move
takes no time, the second counts as a move. Auto pickup takes no time,
manual pickup takes a move. Involuntary teleport takes no time, manual
teleport (^t, by trap, scroll, or spell) takes a move. Involuntary item
drop takes no time, manual drop (d or D) takes a move. Automatic search
(e.g., Excalibur) takes no time, manual search (s) takes a move.

*One Move* - kicking an object or steed, apply most objects, open or
close a door (o, c), talking to another (#chat), dipping an object
(#dip), throw object (t, f), wait (.), invoke most artifacts (#invoke),
loot a container (l, #loot), use a monster move (#monster), offer at an
altar (#offer), pay a shopkeeper (p), put on or remove an item (P, R),
drink most items (q), read a scroll (r), mounting or dismounting a
monster (#ride), rub an item (#rub), sitting (#sit), attempt to untrap
(#untrap) most traps, wielding or exchanging a weapon (w, x), zap a
wand (z), or cast a spell (Z).

*One Turn* - jumping (j or #jump).

*One or More Moves* - wear or remove armor (W, T, or A), apply a pick
(dig) or axe (chop), eating (e), forcing a box (#force), or wiping
(#wipe).

*One or More Turns* - apply mirror to self (floating eye), apply cursed
bell, engrave (e) varies by length of message & how written, or apply
or invoke a crystal ball.

*More than One Move* - actions repeated by count (n## or ##),apply bear
trap or land mine, or studying a spellbook (r).

*More than One Turn* - prayer (#pray), get a ghost (from milky potion
or enter an empty temple), turn undead (#turn), or get paralyzed when
untrapping a box.

I was thinking of posting a [corrected] version of this as a new
spoiler & to add a brief statement in the updated MAG (probably the
first part with a link to the new spoiler).

Corrections or other constructive suggestions are appreciated. [such as
what to add related to the 12 movement points per move, etc.]

> [2] Where in the code is that implemented?

As noted by Topi, the code at allmain.c:62 implements the main loop
that implements these concepts (moves, turns). Dave noted in particular
the comment in allmain.c:282 which indicates that involuntary actions
are turn based (not moves). A key variable - multi was first mentioned
by myself and clarified by Beolach. Multi is declared at decl.h:29, set
as a repeat code (positive) near cmd.c:2320, and set to zero or a
negative value (turns) by nomul() near hack.c:2067.

Again, thanks for the help.
--Mark

Message has been deleted

Kent Paul Dolan

unread,
Oct 3, 2006, 9:47:51 PM10/3/06
to
Jove wrote:

> - You can't move at all unless you have at least 12 movement points.

> - When you do move, 12 movement points are deducted from your total.
> - You keep getting moves until movement points go to zero (or less).

I doubt it, and in any case, that contradicts your first line. Your
first line
says you need 12 points to move, this latter line says that 1 point
will do.

> - Presumably negative movement points are reset to zero at the
> beginning of a turn, before the fresh movement points are
> allocated.

I hope not, that would be free movement points, giving the PC almost
an extra half move per turn on average.

I just refuse to chase this stuff through the code right now, but I
don't
see anyone who's produced a version I can believe.

HTH

xanthian.

Zeitgeist

unread,
Oct 4, 2006, 2:32:14 AM10/4/06
to

Maniac wrote:
> Maniac wrote:
<SNIP>

> > [1] What actions take a move & which actions take a turn?
> >
> *No Time* - checking your inventory (i or I), checking your attributes
> (^X), enhancing your skills (#enhance), start / stop two weapon
> fighting (#twoweapon), quivering items (q), examining an object (;, :,
> or /), naming items or monsters (#name or C), adjusting your inventory
> (#adjust) even if it merges items, setting options (O), information
> about nethack (v, V, ?, #?, &), saving the game (S), redrawing the
> screen (^L, ^R), recalling messages (^P), actions that fail (not
> capable) or are aborted (usually triggered by ESC), and invalid
> commands (e.g., space when rest on space is disabled).

I believe that examining objects on the ground (:) takes 1 turn if
blind.
<MEGASNIP!>
--
Zeitgeist

Topi Linkala

unread,
Oct 4, 2006, 4:26:08 AM10/4/06
to
Maniac wrote:

> *One Turn* - jumping (j or #jump).

Isn't this one move and a turn?

Where did you put moving (hjklyubn) and it's variations? What about
fighting?

Maniac

unread,
Oct 4, 2006, 9:06:52 PM10/4/06
to
Zeitgeist wrote:
> I believe that examining objects on the ground (:) takes 1 turn if
> blind.

Hmm. Sure enough. I'll split (:) apart from the other two & move it to
the zero or one move category. If my testing did not confuse me:
- no turns when you move onto a square (an "auto" look)
- no turns if you are not blind & you look manually (:)
- one turn if you are blind & you look manually (:)

Thanks for the correction.

--Mark

Maniac

unread,
Oct 4, 2006, 9:18:47 PM10/4/06
to

Topi Linkala wrote:
> Maniac wrote:
>
> > *One Turn* - jumping (j or #jump).
>
> Isn't this one move and a turn?
>
Now that's an interesting question. Yes I am aware that dojump returns
1 which would normally indicate a turn is required & nomul is -1 which
indicates a turn is to be wasted. However, my testing after quaffing a
speed potion has the following results:
- if I jump at the start of a turn (e.g., I rested '.' and the turn
counter just changed), it always takes a full turn
- if I rest "." & the turn counter did not move, a jump still only
moves the turn counter by 1
I can't seem to find a combination where the turn counter goes up by 2
nor can I find a combination where I don't get a chance for an extra
move after a jump.

>From that result, I don't see how a move & turn is consumed. I still
don't fully understand what the code is doing in allmain to implement
this, but that's the result I've seen.

> Where did you put moving (hjklyubn) and it's variations? What about
> fighting?

Doh!

Added to the one move category.

Thanks.

--Mark

notare...@wireless.co.il

unread,
Oct 5, 2006, 6:05:54 AM10/5/06
to
Maniac wrote:
> Topi Linkala wrote:
> > Maniac wrote:
> > > *One Turn* - jumping (j or #jump).
> > Isn't this one move and a turn?
> Now that's an interesting question. Yes I am aware that dojump returns
> 1 which would normally indicate a turn is required & nomul is -1 which
> indicates a turn is to be wasted. However, my testing after quaffing a
> speed potion has the following results:
> - if I jump at the start of a turn (e.g., I rested '.' and the turn
> counter just changed), it always takes a full turn
> - if I rest "." & the turn counter did not move, a jump still only
> moves the turn counter by 1
> I can't seem to find a combination where the turn counter goes up by 2
> nor can I find a combination where I don't get a chance for an extra
> move after a jump.
>
> >From that result, I don't see how a move & turn is consumed. I still
> don't fully understand what the code is doing in allmain to implement
> this, but that's the result I've seen.

So it looks like the fastest way to travel around (without teleporting)
is the combination of intrinsic 'very fast' + riding a galloping hasted
warhorse, making expert spell jumps (can be 4 squares) on the last
'free move' of a 4-move turn, resulting in up to 7 squares of movement
per turn. Cool!

Happy Hacking

--Charlie

0 new messages