strange C code in Angband (am I reading this right?)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • will_asher
    DaJAngband Maintainer
    • Apr 2007
    • 1124

    strange C code in Angband (am I reading this right?)

    This code is in the function to do polymorphing:

    Code:
    	/* Allowable range of "levels" for resulting monster */
    	lev1 = r_ptr->level - ((randint(20)/randint(9))+1);
    	lev2 = r_ptr->level + ((randint(20)/randint(9))+1);
    If I'm reading this right, then this takes a random number from 1 to 20 and divides it by a random number from 1 to 9 and then adds 1 and thats the variation how far the new polymorphed monster's level can be from the level of the original monster before it was polymorphed.

    Why would the max range of the levels of the polymorphed monsters be a random thing instead of fixed?

    This strikes me as a very strange formula and I wonder how whoever programmed this came up with it. Am I reading this right? Does this strike anyone else as odd?

    ..just something I wondered about when I was looking at the code..
    Will_Asher
    aka LibraryAdventurer

    My old variant DaJAngband:
    http://sites.google.com/site/dajangbandwebsite/home (defunct and so old it's forked from Angband 3.1.0 -I think- but it's probably playable...)
  • Nick
    Vanilla maintainer
    • Apr 2007
    • 9647

    #2
    Originally posted by will_asher
    This strikes me as a very strange formula and I wonder how whoever programmed this came up with it. Am I reading this right? Does this strike anyone else as odd?
    Yes, you are reading it right. I think the reason is that mostly there will only be a small allowable range of levels, but occasionally you'll get a big variation in one direction (when randint(20) is big and randint(9) is small). So it allows a polymorph to give a very different monster level, but not often.

    Where the exact 9 and 20 values came from I don't know - I guess someone originally calculated a good distribution to use.
    One for the Dark Lord on his dark throne
    In the Land of Mordor where the Shadows lie.

    Comment

    • will_asher
      DaJAngband Maintainer
      • Apr 2007
      • 1124

      #3
      ah. now it makes a lot more sense.
      reading the code is interesting..
      Will_Asher
      aka LibraryAdventurer

      My old variant DaJAngband:
      http://sites.google.com/site/dajangbandwebsite/home (defunct and so old it's forked from Angband 3.1.0 -I think- but it's probably playable...)

      Comment

      • Daven_26d1
        Adept
        • Jun 2007
        • 211

        #4
        Originally posted by Nick
        Where the exact 9 and 20 values came from I don't know - I guess someone originally calculated a good distribution to use.
        I figure someone started with 20 and 10 and then it got tweaked by a single point later on.

        EDIT - nice to see you haven't gotten bored with those sources yet, will_asher =)
        You sold a Broken Sword (1d2) (-2,-4) {average} (j) for 1 gold.
        The shopkeeper howls in agony!
        You say "Dude, the clue is in the name...".

        Comment

        Working...
        😀
        😂
        🥰
        😘
        🤢
        😎
        😞
        😡
        👍
        👎