Forum:Speed: turns versus actions

From NetHackWiki
Jump to: navigation, search

Some things are affected by speed, others not. Very little documentation on this topic is available here or elsewhere on the internet. (This is especially relevant to speed runners.) I'd like to improve that gradually.

  • Let's fix the language. How about turns == turn counter (moves, monstermoves), actions == movement points / 12?
  • Since speed and its implications is a rather advanced subject, should it get its own subsection or at least paragraph, instead of integration into the main text of each article?

Opinions, anybody? Pointers to existing spoilers? --Tjr 23:01, 9 July 2011 (UTC)

Not seen a detailed spoiler, though the documentation for the nethack TAS has a nice summary of the subject, see the section headed "Maximising movement speed"
I think the distinction between 'action' and 'turn' is a useful one. 'move' should be reserved for describing motion in the cardinal directions so as not to be ambiguous (the speed article is currently guilty of this). The subject probably warrants a separate section, also it would be useful to compile a list of what actions take 0 movement points (turn lists some of these) or more than 12 movement points (prayer, long engravings, etc.). --Nht 08:22, 11 July 2011 (UTC)

IRC conversation about the behind-the-scenes

Starter for an article speed system

[19:03] TjrWiz: nomul(0) -- so you waste all your movement points if you have speed?
[19:04] ais523: nomul(0) doesn't waste all your movement points, that's nomul(-1) you're thinking of
[19:04] rawrmage: question: what the hell is actually nomul
[19:04] ais523: nomul(0) just turns off run and command repeat
[19:04] ais523: rawrmage: err, you probably don't want to ask that
[19:04] ais523: but in short, there's a variable called multi
[19:04] ais523: which controls about four different things
[19:05] ais523: positive multi means command repeat (e.g. multi is set to 19 if you type #20s, which means "repeat the command 19 more times" except when it doesn't)
[19:05] ais523: while multi is positive, it reduces by one every action, except some things set it to 0 arbitrarily (things like multishot and pickup because leading numbers mean something else, that's its second meaning, things like engraving because they're coded badly)
[19:06] ais523: negative multi causes helplessness; it increases by 1 every turn, and prevents you taking actions until it hits 0
[19:06] ais523: also, a function gets called when it changes from -1 to 0
[19:06] ais523: which is also stored in a global variable, obviously
[19:06] ais523: now, multiturn actions are sometimes programmed by setting multi to a positive number, in which case they can be interrupted
[19:06] rawrmage: why is there inconsistency between You("") and pline("You")
[19:06] ais523: and sometimes by setting it to a negative number, in which case they can't
[19:07] TjrWiz: but they differ between n actions and -n turns, right?
[19:07] ais523: e.g. engraving Elbereth with a gem does nomul(-7)
[19:07] ais523: TjrWiz: that too
[19:07] ais523: except, for multiturn actions with a positive multi, often they just set it to something really high, then set it back to 0 when the action's finished
[19:07] ais523: like shift-move
[19:07] TjrWiz: so you're actually faster with -n if you're burdened, right?
[19:07] rawrmage: whaaaaat
[19:07] ais523: TjrWiz: indeed
[19:07] ais523: what nomul does, is put a cap on multi
[19:07] ais523: it reduces multi to the value given, except if it's already below that value
[19:08] ais523: so nomul(0) means "stop multiturn action", whereas nomul(-5) means "cause 5 turns of helplessness"
[19:08] ais523: to add to the fun, there are some cases where multi is set by hand; lifesaving sets it to -1 if it's currently 0 or lower, or 0 if it's currently 1 or higher
[19:10] ais523: TjrWiz: I'll write that article someday, hopefully someday soon
[19:10] ais523: "speed system" is a good name for it