Difference between revisions of "Forum:Speed: turns versus actions"

From NetHackWiki
Jump to navigation Jump to search
(ais523 explains nomul, pasted with permission)
(IRC conversation about the behind-the-scenes: Tried to fix line breaks.)
 
Line 16: Line 16:
 
''Starter for an article speed system''
 
''Starter for an article speed system''
  
[19:03] TjrWiz: nomul(0) -- so you waste all your movement points if you have speed?
+
[19:03] TjrWiz: nomul(0) -- so you waste all your movement points if you have speed?<br>
 
+
[19:04] ais523: nomul(0) doesn't waste all your movement points, that's nomul(-1) you're thinking of <br>
[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 <br>
[19:04] rawrmage: question: what the hell is actually nomul
+
[19:04] ais523: nomul(0) just turns off run and command repeat <br>
 
+
[19:04] ais523: rawrmage: err, you probably don't want to ask that <br>
[19:04] ais523: nomul(0) just turns off run and command repeat
+
[19:04] ais523: but in short, there's a variable called multi <br>
[19:04] ais523: rawrmage: err, you probably don't want to ask that  
+
[19:04] ais523: which controls about four different things <br>
[19:04] ais523: but in short, there's a variable called multi
+
[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) <br>
[19:04] ais523: which controls about four different things
+
[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) <br>
 
+
[19:06] ais523: negative multi causes helplessness; it increases by 1 every turn, and prevents you taking actions until it hits 0 <br>
[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:06] ais523: also, a function gets called when it changes from -1 to 0 <br>
 
+
[19:06] ais523: which is also stored in a global variable, obviously <br>
[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: now, multiturn actions are sometimes programmed by setting multi to a positive number, in which case they can be interrupted <br>
 
+
[19:06] rawrmage: why is there inconsistency between You("") and pline("You") <br>
[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: and sometimes by setting it to a negative number, in which case they can't <br>
[19:06] ais523: also, a function gets called when it changes from -1 to 0
+
[19:07] TjrWiz: but they differ between n actions and -n turns, right? <br>
[19:06] ais523: which is also stored in a global variable, obviously
+
[19:07] ais523: e.g. engraving Elbereth with a gem does nomul(-7) <br>
 
+
[19:07] ais523: TjrWiz: that too <br>
 
+
[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 <br>
[19:06] ais523: now, multiturn actions are sometimes programmed by setting multi to a positive number, in which case they can be interrupted
+
[19:07] ais523: like shift-move <br>
[19:06] rawrmage: why is there inconsistency between You("") and pline("You")
+
[19:07] TjrWiz: so you're actually faster with -n if you're burdened, right? <br>
[19:06] ais523: and sometimes by setting it to a negative number, in which case they can't
+
[19:07] rawrmage: whaaaaat <br>
 
+
[19:07] ais523: TjrWiz: indeed <br>
[19:07] TjrWiz: but they differ between n actions and -n turns, right?
+
[19:07] ais523: what nomul does, is put a cap on multi <br>
[19:07] ais523: e.g. engraving Elbereth with a gem does nomul(-7)
+
[19:07] ais523: it reduces multi to the value given, except if it's already below that value <br>
[19:07] ais523: TjrWiz: that too
+
[19:08] ais523: so nomul(0) means "stop multiturn action", whereas nomul(-5) means "cause 5 turns of helplessness" <br>
 
+
[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 <br>
[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:10] ais523: TjrWiz: I'll write that article someday, hopefully someday soon <br>
[19:07] ais523: like shift-move
+
[19:10] ais523: "speed system" is a good name for it <br>
[19:07] TjrWiz: so you're actually faster with -n if you're burdened, right?
 
[19:07] rawrmage: whaaaaatg
 
[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
 

Latest revision as of 10:41, 28 July 2011


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"
http://tasvideos.org/GameResources/DOS/Nethack.html
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