Forking Hengband?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • chris
    PosChengband Maintainer
    • Jan 2008
    • 702

    Forking Hengband?

    OK, I guess I would be willing to at least try to take on this project. Hengband has been getting sporadic tweaks, but a release hasn't been made in what, 7 years? Its not quite abandoned but darn near so.

    So, I need some advice. Do I need permission to fork a new variant? What is the best way to do this? Where should I host the project? (I was thinking code.google.com). Is anyone besides me interested in a fork of Hengband?

    I also need ideas. What changes would you like to see? Go crazy here, but realize that my C coding skills are not that great, and I might not be *able* to give you what you want!

    And I need a name. I was thinking of Chengband for Chris's Hengband, but that would be inappropriate if other people are going to help out. Ideas?

    Finally, I don't want to change the style of the variant too much. Hengband is a hard variant. It should continue to be so. Things like a random speed system are here to stay. In fact, my motivation for making changes is that Hengband has a couple of loopholes that make the game too easy
  • dzhang
    Scout
    • Jan 2008
    • 47

    #2
    I, unsurprising, fully support you in your quest to make a Veteran version of Hengband. (Support as in the moral sense... I'm not sure I'll have any time to actually code. Although my probability of doing any coding would improve drastically if you write up a little cheat-sheet summary about how the Hengband code is generally structured.)

    Ideas! I got tons of them, although you probably won't like most of them.

    1. Buffing the Serpent with Hunger attacks. We mentioned this already in your character dump, but repost here for completeness. Give the Serpent (and maybe a few new Uniques) a new attack/spell that reduces the player's fullness level significantly. (As in, 3 of these will take you from Full to Weak(paralyzed).) Maybe allow Saving Throw to reduce the hunger damage by a factor of 2.

    2. Incompleteness. Instead of having every listed artifact and monster appear in every play of the game, you could, at Birth, generate a list of artifacts / uniques that will never show up in this game. This would reduce laundry-list hunting for uniques before confronting the Serpent, and also make for more game variability. Inspired by the Tech system in the original Master of Orion. Up to you whether the Serpent will still be able to Summon these "absent" monsters.

    3. More classes! Obviously this will take some amount of work/balancing, but honestly, I'm getting a bit bored of the classes I like, and just will never play the classes I don't (Imitator, Sorceror).

    In particular, I want a Gish class with 4 attacks, full Mage-like spellcasting (including 0% fail and mage spell costs-- but only 1 school), and two special class abilities. Pre-cast spell, and then Deliver spell via weapon. For example, you pre-cast Mana Storm and deliver it against Combat Echizen along with your attacks when he's low on HP. Alternatively, you could imagine pre-casting Herbal Healing or Teleport Other. Maybe you could give it a fail rate if you think it's too overpowered. But I do think you should let the player choose when to trigger the pre-cast spell, rather than have it go off on the first attack like Touch of Confusion.

    4. Similarly, more schools of magic would also be good (I previously suggested Order and Wild:

    In Order, all spells have no variability, and cost 0 SP upon failure. Some spell ideas:

    Existing spells: Heroism, Stone Skin (rename as Crystal Skin?), Destroy Traps, Rune of Protection, Eye for an Eye - except with fixed duration for buffs

    Order brand - this type of weapon always does max dice damage, but never crits.

    Shield of Order - grants a 100 HP temporary buffer for 100 turns. If you take damage, you lose points from your Shield of Order first.



    In Wild, all effects have some degree of randomness, which is always a 1dN effect. Some spell ideas:

    Existing spells - Teleport (except make it distance 1d(5*clvl) or so), Wonder (not that anyone ever uses it), Alter Reality

    Mania - grants a temporary +10 speed or -10 speed for 1dN turns. (Low level spell)

    Wildstrike - direct damage spell that does 1d999 damage to 1 target.

    Wildblast - direct damage spell that does 1d666 damage with radius 1d5. However, each monster in the ball has a 1/2 chance of evading the blast (you probably need to make it an orb type spell, as in it doesn't lose damage for distance from center)

    Reforge - take 3 items of the same slot and type and create a new random item. For example, you could combine 3 Dragon Helms to get a new dragon helm with new properties. You could combine 3 Crowns of Might to get another Crown of Might with a different p-value.

    5. Rebalance existing classes. Remove the second magic school for Ranger. Give Paladin his spells a little earlier. Give Mage a little more CON (their +0 HD is bad enough).

    *****

    Regarding your current changes:

    1. Spell power should affect primary caster (Priest/Mage/High-Mage) differently than secondary casters (Ranger/Rogue/Monk/Forcetrainer). Imagine a Monk with 700 HP Herbal Healing!

    Comment

    • dzhang
      Scout
      • Jan 2008
      • 47

      #3
      Actually, now that I think about it a little more, Reforge might fit better as a Weaponsmith ability. Weaponsmiths currently get the short end of the stick anyway.

      Ooh, another idea for Weaponsmith: Restore Glory. You take Broken Daggers and Broken Swords, and make them into random weapons. Usually daggers and Longswords, but maybe very rarely you'll get a Falcon Sword (from Broken Dagger) or Diamond Edge (from Broken Sword). It should be level dependent probability, I guess.

      Also, the Daemon's Schools Bloody Curse badly needs to be fixed.

      Yet some more ideas for new classes:

      Runic Knight: Plays like a warrior (except weaker stats/fighting skills), but with 2 special passive abilities. Runic Blade, in which you gain SP from all magic attacks targeting you. All damage from magic is reduced by 25%, and you gain 25% of the cost of the magic as SP. Second, you automatically add Force-brand to any weapon you wield. Clearly, I'm stealing this from Celes in Final Fantasy III/VI.

      Time Lord: You gain +5+clvl/5 speed. You intrinsically resist Time attacks. 4 blows / rnd. You have a limited number of special abilities:
      clvl 5 - Decay Door, destroys an adjacent door.
      clvl 15 - Decay Wall, stone to mud an adjacent wall.
      clvl 20 - Slow monster, monster gets a save but no monster is immune (except Metal Babble)
      clvl 25 - Haste self, as you would expect
      clvl 30 - Mass slow monster, all monsters in LoS are potentially slowed (save but no immunity)
      clvl 35 - Rewind Time, you instantly return to town, but lose min{1 lvl, 100,000xp}
      clvl 40 - Remembrance, restore xp + stats
      clvl 45 - Speed Essentia, you gain +2 blows and +1 shots for 3 rounds.

      One last thing: I don't like how everyone (even tourist) can win the game with Wands of Rockets. Mainly, this is a failure of the AI, which tries to move towards you/attack you with the same probability regardless of whether you're meleeing or lobbing spells. I don't know how hard it is to dynamically adjust the monster's strategy so that it will tend to lob spells at you if you lob spells at it, but that's one potential approach.
      Last edited by dzhang; November 1, 2010, 18:00.

      Comment

      • Djabanete
        Knight
        • Apr 2007
        • 576

        #4
        I play Vanilla Town, so I'd like to see Angband a bit more like in Vanilla. Only two kinds of terrain: open floor and granite walls (no trees, lava, water). No random quests (option). Good and evil monsters don't fight eachother (option), and there are no friendly monsters (option). (I prefer it when every monster is trying to kill me and only me.) No townsfolk, and Maggot and Lionheart appear as hostiles at depth 5 (option).

        I would really enjoy playing your hypothetical fork, with all the cool changes and items. I prefer a "classic Vanilla" feel, but with all the extra stuff and craziness inherent to Heng.

        "Chengband" would be a good name if you do release it!

        Comment

        • chris
          PosChengband Maintainer
          • Jan 2008
          • 702

          #5
          I have a new project page here:


          Its blank at the moment, but I'm working on figuring out how to use it. For source code management, I decided to go with Mercurial rather than SVN, since I've been itching to try it out for a long time.

          For ideas, let's add new "Issues," preferably one per idea. For example, I really like the Time Lord idea (I just skimmed your ideas, Dave, and will look in more detail a bit later, but this one caught my eye). So I created a new issue for just this idea. The thought is we could have discussion over there, hammering out what we think should be the change, rather than clogging up Pav's wonderful site! Plus, if we put 20+ ideas in a single thread, it will be hard to follow.

          So, let's move ideas discussion over to code.google. I think anybody can add issues, but I'm not sure. Can you guys let me know? If not, I'll figure out some way to make you guys have access.

          Comment

          • EpicMan
            Swordsman
            • Dec 2009
            • 455

            #6
            Remove scroll of *identify* and let id scrolls fully I'd. The spells are still ok.

            Comment

            • Djabanete
              Knight
              • Apr 2007
              • 576

              #7
              I'm able to add issues, so I assume anyone can. It uses my google login.

              Comment

              • chris
                PosChengband Maintainer
                • Jan 2008
                • 702

                #8
                Originally posted by Djabanete
                I'm able to add issues, so I assume anyone can. It uses my google login.
                Sweet! Now I have work to do!! I think I can easily create new downloads, so I have no excuse to not be coding. But I'm taking time to read the Mercurial book so that I can add the source code to the project. I really don't know how long that will take

                Anyway, keep adding ideas (I like the ones I've read so far)!!

                Comment

                • dzhang
                  Scout
                  • Jan 2008
                  • 47

                  #9
                  Cool, I'm starting to transfer over some ideas. How to make an issue an "enhancement" rather than a "defect?"

                  Comment

                  • chris
                    PosChengband Maintainer
                    • Jan 2008
                    • 702

                    #10
                    Originally posted by dzhang
                    Cool, I'm starting to transfer over some ideas. How to make an issue an "enhancement" rather than a "defect?"
                    I can always change them later, but when you are adding a new issue, there is a labels field down towards the bottom. Click on the field "Type-Defect" and you get a list of choices. I know, all us Windows guys are handicapped if you don't give us a visual indicator for dropping down a combo box

                    Comment

                    • chris
                      PosChengband Maintainer
                      • Jan 2008
                      • 702

                      #11
                      Random Rant:
                      Having a new variant in the works, I decided to reset the version numbers down to 0.0.1. Imagine my surprise that this makes new savefiles unreadable! (Now remember, I am a totally clueless nascent 'band developer). Best I can tell, we were supporting savefiles from old versions of Zangband, and code was constantly checking the version in the save file (now 0.0.1) to see if it was older than when some new feature was added 10 years ago, and checking both hengband versions *and* zangband versions.

                      Well, I ripped out all the conditional loading code that attempted to nicely handle old savefiles. If you have one from before, say, 1.7.0 of Hengband, it won't load.

                      End Rant.

                      All things aside, I think Angband has done a wonderful job preserving savefile compatibility, probably at the cost of heroic coding efforts. Kudos! But if you are switching over to a new variant, I think it is a reasonable assumption that savefiles from other variants won't work Guys, finish your games in Hengband first!

                      Its interesting. At my last job we used to have tons of binary files laying around. But I became convinced that binary files are the root of all evil and converted them all to plain text formats. If you are off by 1 byte (like say, if you decide not to read a byte because of a version check) then you get weird errors in far removed regions of code. I kept getting errors like: "The Wilderness is too big" or "Unable to read inventory". Ever try to pop open a binary file and figure out the problem? Ugh ...

                      Do other variants still use binary save files?

                      Comment

                      • Nick
                        Vanilla maintainer
                        • Apr 2007
                        • 9647

                        #12
                        Originally posted by chris
                        Do other variants still use binary save files?
                        I think everyone does, and I think the original reason was to stop cheating by editing the savefile. I think anyone who chose to play this variant and then cheated would be somewhat perverse...
                        One for the Dark Lord on his dark throne
                        In the Land of Mordor where the Shadows lie.

                        Comment

                        • dzhang
                          Scout
                          • Jan 2008
                          • 47

                          #13
                          Hrm. Maybe I'm blind, because I don't see the option of setting it to be an "Enhancement." Maybe you need to add me to some list or something?

                          Here's another class idea for you, that's a bit wacky:

                          *********
                          The Duelist
                          *********

                          The duelist is the ultimate one-on-one fighter, but finds himself at a severe disadvantage when facing numerous strong foes.

                          Class features: +2 HD, Mindcrafter-like skills. Not proficient with any ranged weapon.
                          -50 AC. -15 Saving Throw.
                          Melee attacks limited to 1. +10+(X/2) bonus to damage.

                          Faces Monk-like weight penalties. If above weight limit, none of the duelist's special abilities function.

                          The Duelist's abilities are magical in nature. If the Duelist has an antimagic field about him, his abilities cease to function.

                          Class abilities:

                          Mark Target - lvl 1. Mark a target as your designated foe. Against that foe, you gain +100 AC, +30 Saving Throw, and all damage by your foe is reduced by 1/3. You can use this action to change who you mark as a foe, but you can only mark 1 foe at a time.

                          The duelist gains a certain number of passive abilities against his marked foe, depending on level. All effects apply.

                          1 - Perfect Strike. The duelist never misses against his marked foe. If the duelist is using a Poison Needle, his chance of causing a fatal blow is significantly improved (+50%?). The duelist may mark any foe that he has knowledge of (i.e. Line of Sight, or ESP)

                          5 - Stealthy approach. The duelist's Stealth is treated as 5 higher against his foe.

                          10 - Careful aim. The player's weapon is automatically treated as vorpal, even if it is blunt.

                          15 - Hamstring. The foe is slowed unless it makes a saving throw.

                          20 - Wounding Strike. Unless the foe makes a saving throw, his hit points are reduced by 20% (max 200), in addition to normal damage.

                          25 - Stunning Blow. Unless the foe makes a saving throw, he is stunned for 1 round.

                          30 - Unending Pursuit. Player always has option to follow foe if foe tries to teleport. Player has option to avoid being teleported away by foe.

                          35 - Endless Duel. Player has option to immediately mark a new foe upon killing his current foe (without spending another action).

                          40 - Greater Wounding Strike. Unless the foe makes a saving throw, his hit points are reduced by 40% (max 2000), in addition to normal damage.

                          45 - Nemesis. Player cannot be killed by his foe. If his foe does enough damage to kill the player, the damage is completed negated, but the monster is no longer considered "foe." Additionally, the player becomes Heavily Stunned.

                          Comment

                          • zaimoni
                            Knight
                            • Apr 2007
                            • 590

                            #14
                            Originally posted by Nick
                            I think everyone does, and I think the original reason was to stop cheating by editing the savefile. I think anyone who chose to play this variant and then cheated would be somewhat perverse...
                            Nothing like landing in new level with one square open, that is not a staircase, to end a cheating character's career.
                            Zaiband: end the "I shouldn't have survived that" experience. V3.0.6 fork on Hg.
                            Zaiband 3.0.10 ETA Mar. 7 2011 (Yes, schedule slipped. Latest testing indicates not enough assert() calls to allow release.)
                            Z.C++: pre-alpha C/C++ compiler system (usable preprocessor). Also on Hg. Z.C++ 0.0.10 ETA December 31 2011

                            Comment

                            • chris
                              PosChengband Maintainer
                              • Jan 2008
                              • 702

                              #15
                              Originally posted by dzhang
                              Hrm. Maybe I'm blind, because I don't see the option of setting it to be an "Enhancement." Maybe you need to add me to some list or something?
                              I added you as a contributor, so perhaps you will see additional options now? At any rate, don't sweat it, I'll just fix them up when I start working on them!

                              Comment

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