Borg 3.4.1 updated

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • APWhite
    Adept
    • Jul 2007
    • 244

    Borg 3.4.1 updated

    It has been a bit over a year since I updated the vanilla borg. I have been making weekly updates to the zangband borg but it was time for a V update.

    There was an extensive upgrade to the V borg, so it would be nice if a few of you could test drive it and point out any problems. I compiled it as a 'release' instead of the usual 'debug' so I hope the dll's work.

    I will try to get 341 to a really stable position then port it into a working copy of 351. Right now, I cannot get 351 to compile with VS2012. But I will keep trying.

    The Z-borg is working really well and I can leave it for a few months while I help get the 351 borg up to speed.

    You can find the V-borg at the borg's site. http://www.innovapain.com/borg/angband-341/

    Here is a list of the recent V-341 upgrades:
    • Minor fix for resting as an attack mode.
    • Current knowledge requirement for attacking lifted if it is a never_move monster
    • Added support for all the branded arrows.
    • Sanctuary spell not used if clevel > 15 and in town.
    • Correction for how the borg calculate the as_position. The for-next loop was going to <=24 when it was supposed to be < 24.
    • Kill->summoner added in order to clean the code a bit.
    • borg_fighting_questor added to the list of other borg_fighting_<special type>. This allows the borg to select special equipment.
    • kill->questor flag is independent of kill->unique. This will allow for future game support for level-specific quest monsters like Z.
    • Replaced the borg_fighting_unique + 10 = questor with with borg_fighting_unique && borg_fighting_questor
    • unique_on_level == <hard coded number> were replaced with IDX_<MonsterName>. Just cleaning up hard-code numbers.
    • borg_wear_swap() created. It will consider a swap item in order to increase damage while fighting a particular type of monster.
    • Added the borg_position & (position_sea | position_summ | position_bore) bits.
    • Added the borg_depth & (DEPTH_BORER, etc) bits.
    • Added a borg_count_summoners which will keep count of the number of summoners on a level. If the level becomes overrun with summoners then the borg will leave that level.
    • Added borg_skill[BI_NSRANGED] which will count the number of non-spell ranged attacks. It is used in calculating the best time to use the teleport away spell.
    • Converted the old RACE_MORGOTH to IDX_MORGOTH
    • Mages will not be given points for carrying a swap weapon which gives a bonus to melee attacks. Previously, only mindcrafters did this.
    • The borg will not be allowed to crush his rod of recall to make space for an item he wants to pickup.
    • The use of the Shoot’N'Scoot will be limited if the borg is in a anti-summon corridor.
    • The borg was crushing scrolls of Acquirement (if he was at full inventory).
    • Reduced the tremendous bonus for spell casters reaching 0% fail rate. It was too high.
    • Added a couple more cases which will limit the borg’s intereptation of the monster’s expected flow pattern. RF1_FRIENDS like to ambush in rooms, etc.
    • Made sure that the borg was not going to swap out his inventory for non-id’d stuff that clearly wont improve his station. If he has a known unique, he should not trade out for a {good},{excellent}, or {terrible} item.
    • Removed the fear_regional[][] from borg_danger() if the borg is deeper than depth 70 (it had been 80).
    • Don’t sell wands of stone to mud if one does not have this spell. This will help with anti-summoning corridors.
    • NO_MELEE guys will no longer consider the damage of a weapon when calculating the benefits of a swap item or storing weapons in the home.
    • The NO_MELEE borgs were not calculating their damage correctly when fighting barehanded.
    • I added a ‘borg_fighting_tele_to’ flag for monsters who can teleport the player. It is mainly kept in the munchkin code. We don’t want the borg to be teleported off of the stairs.
    • Speed up the borg by adding a kill->dist so the borg does not have to keep calculating distance(c_y, c_x, kill->y, kill->x)
    • The borg learned some extra qualities to certain curing potions (removing confusion and blindness). Doing so enables him to be rewarded for carrying those items for that specific property.
    • The borg will have reduced fear of confusion and blindness attacks if he has at least two items which can cure him. Previously, he needed to have resistance to blindness or confusion to avoid the fear.
    • The borg might bounce on a few munchkin levels for several thousand turns waiting for a restock() item to show up (depth 5 & 6). I tied the climbing to the borg_leave_level() flag of goal rising, that way he is inclined to complete a journey.
    • I taught the borg to use Create Stairs while he is in munchkin mode.
    • To save computation time on the expensive borg_prepared(). I switched to using a borg_prepared[127] which stores the prep info.
    • Still tracking down some of the 'Illegal choice' tags.
    • borg_defend_lightbeam() was not considering 3-way intersections as a possibility.
    • borg will use Teleport Level to escape a level 1 danger if on a depth with >= 10 summoners.
    • I created a borg_surround_breeder() and an escape for when the borg is surrounded by breeders. He will use Teleport to get away from breeders.
    • The borg needed to lighten the requirement for RPois to include the resistance offered through reliable spells. This allows him to free up that equipment slot requirement.
    • Slight change to how the borg will ‘grab’ things:
    • Borg wont grab spell books from the shops to store in the house. He will still store extra books, but won’t by the books.
    • Borg won’t grab weapons from the shops to store in the home. He has plenty of those in the dungeon.
    • Borg won’t grab non-potion/scroll things after reaching clevel 50.
    • Borg wont set explosive runes/runes of protection when fighting a guy who can use Teleport-to. These guys can bampf the borg off the rune.
    • when considering which items to crush (slow/hole/junk), the borg will skip items which contain a high resist which the borg is currently lacking.
    • In an effort to dive deeper and play at his maximal safe-depth, he will use the munchkin mode and scum the stairs more.
    • Borg_crush_slow() will now not crush Rods of Teleport Other. The other two borg_crush_xxx() already saved these rods. Similarly, the borg will not sell a Rod of Teleport Other to the shop unless he has more than 5 of them.
    • A borg with no light and no cash could become twitchy in town. He will be allowed to sell some items (which he would not normally like to sell) in order to raise cash to buy torches/oil.
    • Reworked the ego ammo a bit to clean up the code.
    • Solved a Twitchy issue by adding a prep_check flag to the borg_flow_stair_more(). If false, it will ignore the basic preparation checks before taking a down stair.
    • Borg was looping a bit while flowing to a take. He would retreat one step then re-attempt the flow path. The retreat function from borg_caution wont be used if the goal == GOAL_TAKE
    • Slight change to the munchkin mode to help him dive better without being subject to the restock() restrictions.
    • Borg needed to not remove an empty lantern from the equipment. It interfered with him buying fuel. Additionally, he needed some support for buying fuel for the empty lantern. His inclination was to buy a new lantern. Since fuel is cheaper, its better for him to buy fuel for the empty lantern.
    • The borg will now quaff a potion while junking junk, if the potion wont harm him. He can gain any bonus effect or nourishment (albeit small on both accounts). A check was applied in borg_quaff_potion() to make sure he doesn’t drink something nasty.
    • Encumbered borgs will no longer unequip their gear. They tend to crush it.
    • Borg wont use the Recharge spell on rods while in munchkin mode. The rods tend to recharge faster than the mana spent on the spell.
    • Added a cascade reward for using the rods as weapons. He used to carry up to 10 rods, sometimes even up to 9 Rod of Light. Really, he doesn’t need more than 5 of them. So he will limit the number of rod quantities in order to make more efficient use of inventory space.
    • Borg was over confident in his ability to tunnel. There is a definition of BORG_DIG which is his digging skill. I moved it from 20 to 40 to make sure the borg didn’t waste too much time trying to dig improbable tunnels. Granite has a dig factor of skill_dig > 40 +rnd(1600). So even with a BORG_DIG of 40, and no digger, he is still likely to dig. This value might be adjusted higher (to 60)
    • The borg found a really nice artifact broken dagger. The bonuses of the randart attributes out-weighed the penalty of wielding one. So i boosted the penalties for melee type characters. The non-melee characters can still wield these items with the old penalty.
    • Borg_flow_vault() was missing a borg_flow_clear() object. This lack caused the borg to think that he could dig tunnels all day long.
    • Added a kill->cautious but it is not yet implemented. It will be used when flowing to certain monsters
    • Converted borg_ddy_ddd[24] to a [48]
    • Borg was slighting miscalculating the projected path of a monsters bolt attack with respect to the bolt passing through other monsters.
    • Borg needed to be able to crush_junk() which is now dropping it on the floor, while in muchkin mode. He tries to avoid dropping items onto non-floor grids since they fall near the borg. He will just pick them up again. But since he is in munchkin_mode, and will be leaving the level via stairs then its no problem to litter the floor with junk. But doing so requires that all floor grids be labeled at junk.
    • Slight easing of some cure requirements for level preparation. Since the cure potions now do a percent heal, the borg can use some substitution techniques to satisfy the requirements.


    APWhite
    St George Chiropractor
    Angband Borg Homepage
  • hjklyubn
    Rookie
    • Jan 2014
    • 19

    #2
    Glad to see the Borg is still "alive" (so to speak)!

    I've been giving it a try and I'm encountering one situation where the Borg gets stuck, or actually, just exits back to the main game loop on its own for some reason. I'm not entirely sure what triggers it, but every time it's happened, the player had just ended its move on a pile (square with more than one item, & symbol on the map). If I then restart the borg with ctrl-z z, it continues normally. Have you ever observed this?

    Other than that I've had no problems with the Borg so far, though I noticed that it likes to carry a truly huge amount of stuff on some of its early dungeon trips, slowing it down to Slow (-7) or so. That doesn't seem to affect its ability to clear 50' at character level 10 though

    Comment

    • MattB
      Veteran
      • Mar 2013
      • 1214

      #3
      I've been trying to install the borg screensaver and I've followed the instructions in the README, but I keep on being told that libpng12.dll is missing every time it tries to start. Anyone else find this?

      (Win7 btw)

      Comment

      • thapper
        Adept
        • Aug 2008
        • 168

        #4
        Originally posted by MattB
        I've been trying to install the borg screensaver and I've followed the instructions in the README, but I keep on being told that libpng12.dll is missing every time it tries to start. Anyone else find this?

        (Win7 btw)
        Yes, I remember getting this (already a year, or more, ago), and I think I solved it by googling and downloading the dll from somewhere. I'm not sure that's the safest approach but it worked...

        Comment

        • MattB
          Veteran
          • Mar 2013
          • 1214

          #5
          Thanks Thapper - I'll give it a go.
          Where did you stick it?

          Comment

          • Carnivean
            Knight
            • Sep 2013
            • 527

            #6
            Originally posted by MattB
            Thanks Thapper - I'll give it a go.
            Where did you stick it?
            Chuck it in /windows/system32.

            Comment

            • Nick
              Vanilla maintainer
              • Apr 2007
              • 9633

              #7
              Originally posted by thapper
              Yes, I remember getting this (already a year, or more, ago), and I think I solved it by googling and downloading the dll from somewhere. I'm not sure that's the safest approach but it worked...
              I believe you don't need to download it - it should be already in the angband folder, and I think the problem is just that the system can't see it there.
              One for the Dark Lord on his dark throne
              In the Land of Mordor where the Shadows lie.

              Comment

              • APWhite
                Adept
                • Jul 2007
                • 244

                #8
                Originally posted by Nick
                I believe you don't need to download it - it should be already in the angband folder, and I think the problem is just that the system can't see it there.

                I put mine in the game root directory. But just in case some people don't have it. I have included it in the archive and updated the borg's webpage.
                St George Chiropractor
                Angband Borg Homepage

                Comment

                • MattB
                  Veteran
                  • Mar 2013
                  • 1214

                  #9
                  Thanks for your help everyone!

                  I did in fact copy the first missing dll from the Angband folder into System32. That went well enough that it then asked for another dll, which was also in the angband folder. No problem - copied that into System32 too.
                  This led it to ask for another dll (something like MSVCR110.dll) which wasn't in the Angband folder or, in fact, anywhere else on my PC.
                  So I downloaded that dll from Microsoft's website, stuffed it in System32 and...hallelujah...that enabled the screensaver to launch and promptly crash!

                  It's just the usual "Angband.scr has stopped working" error message and I can't get round this. This happens if the PC tries to launch the screensaver itself or if I click directly onto Angband.scr.

                  Any ideas? Maybe I'm just being daft and missing something obvious?

                  Comment

                  • APWhite
                    Adept
                    • Jul 2007
                    • 244

                    #10
                    Originally posted by MattB
                    ...that enabled the screensaver to launch and promptly crash!

                    It's just the usual "Angband.scr has stopped working" error message and I can't get round this. This happens if the PC tries to launch the screensaver itself or if I click directly onto Angband.scr.

                    Any ideas? Maybe I'm just being daft and missing something obvious?
                    Can you tell me where in the Angband loading process it crashed? What game info was on the screen? Did the scr get to the splash screen? did it load or create the character? The the borg take a few steps? Any information would be helpful.

                    Additionally, did you make the necessary changes to your angband.ini file? You will need to point to your savefile name. It might look something like this:
                    Code:
                    [Angband]
                    AngbandPath="c:\games\angband-3.0.9\"
                    SaverFile="Saver"
                    Check your save subdirectory and see if a savefile was created.

                    You can email me for a faster response as well.

                    Andrew
                    St George Chiropractor
                    Angband Borg Homepage

                    Comment

                    • MattB
                      Veteran
                      • Mar 2013
                      • 1214

                      #11
                      Originally posted by APWhite
                      Can you tell me where in the Angband loading process it crashed? What game info was on the screen? Did the scr get to the splash screen? did it load or create the character? The the borg take a few steps? Any information would be helpful.
                      Nothing happens really - the screen goes black, and then the error message comes up.

                      Additionally, did you make the necessary changes to your angband.ini file? You will need to point to your savefile name. It might look something like this:
                      Code:
                      [Angband]
                      AngbandPath="c:\games\angband-3.0.9\"
                      SaverFile="Saver"
                      Here's my INI file:

                      Code:
                      [Angband]
                      AngbandPath="C:\Games\borg\"
                      SaverFile="Borgmatic"
                      Graphics=0
                      Graphics_Nice=1
                      TileWidth=1
                      TileHeight=1
                      [Term-0]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=12
                      NumCols=80
                      NumRows=24
                      PositionX=0
                      PositionY=0
                      Maximized=0
                      [Term-1]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=80
                      NumRows=26
                      PositionX=-2
                      PositionY=350
                      Maximized=0
                      [Term-2]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=64
                      NumRows=25
                      PositionX=681
                      PositionY=456
                      Maximized=0
                      [Term-3]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=86
                      NumRows=25
                      PositionX=659
                      PositionY=2
                      Maximized=0
                      [Term-4]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=86
                      NumRows=15
                      PositionX=655
                      PositionY=349
                      Maximized=0
                      [Term-5]
                      Visible=1
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=86
                      NumRows=13
                      PositionX=646
                      PositionY=554
                      Maximized=0
                      [Term-6]
                      Visible=0
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=44
                      NumRows=12
                      PositionX=48
                      PositionY=96
                      Maximized=0
                      [Term-7]
                      Visible=0
                      Font=8X12X.FON
                      Bizarre=1
                      TileWid=8
                      TileHgt=13
                      NumCols=44
                      NumRows=12
                      PositionX=56
                      PositionY=112
                      Maximized=0
                      Check your save subdirectory and see if a savefile was created.
                      Nope, nothing there.

                      You can email me for a faster response as well.
                      I'm not in a hurry and this way anyone else having the same problem (if there's anyone else as useless as me) will be able to see this. And thanks for such speedy responses anyway!

                      Comment

                      • APWhite
                        Adept
                        • Jul 2007
                        • 244

                        #12
                        I was able to reproduce the error today on a windows 7 machine. I will work on a solution and post a fix and update the borg webpage.

                        Andrew
                        St George Chiropractor
                        Angband Borg Homepage

                        Comment

                        • MattB
                          Veteran
                          • Mar 2013
                          • 1214

                          #13
                          Originally posted by APWhite
                          I was able to reproduce the error today on a windows 7 machine. I will work on a solution and post a fix and update the borg webpage.

                          Andrew
                          Thanks Andrew!

                          Work is backing up a bit at the moment so I was thinking I needed to get someone to do my various tax returns so that I can get some more banding in.
                          Then I had a brainwave - why not get someone to play my Angband for me so I can get the VAT returns in!

                          Comment

                          • APWhite
                            Adept
                            • Jul 2007
                            • 244

                            #14
                            I finished working on the screen saver update. I had to make some changes to the game code.
                            1. Main-win.c in WinMain() about line 5449:
                            Code:
                            	
                            /* Prepare the windows */
                            	init_windows();
                            
                            	/* Activate hooks */
                            	plog_aux = hook_plog;
                            	quit_aux = hook_quit;
                            
                            	/* Set the system suffix */
                            	ANGBAND_SYS = "win";
                            
                            #ifdef USE_SAVER
                            /* APW */
                            	if (screensaver)
                            	{
                            [B]		/* Set command hook */
                            		cmd_get_hook = win_get_cmd;
                            
                            		/* Set up the display handlers and things. */
                            		init_display();
                            
                            		initialized = TRUE;
                            [/B]
                            		/* Start the screensaver */
                            		start_screensaver();
                            
                            		/* Paranoia */
                            		quit(NULL);
                            	}
                            #endif /* USE_SAVER */
                            
                            #ifdef USE_SOUND
                            
                            	/* Set the sound hook */
                            	sound_hook = Term_xtra_win_sound;
                            
                            #endif /* USE_SOUND */
                            And the prompts have a flush after them so skip the prompts.

                            2. cmd-misc.c in do_cmd_try_borg() about line 109:
                            Code:
                            void do_cmd_try_borg(void)
                            {
                            	/* Ask first time (APW) */
                            	if (!(p_ptr->noscore & NOSCORE_BORG) [B]&& !screensaver[/B])
                            	{
                            		/* Mention effects */
                            		msg("You are about to use the dangerous, unsupported, borg commands!");
                            		msg("Your machine may crash, and your savefile may become corrupted!");
                            		message_flush();
                            Again, this is for Vanilla 341 screensaver. I haven't messed with the new game versions so someone should implement/test these in the new game versions.

                            Borg webpage updated.

                            Andrew.
                            St George Chiropractor
                            Angband Borg Homepage

                            Comment

                            • konijn_
                              Hellband maintainer
                              • Jul 2007
                              • 367

                              #15
                              I know, replying to a 2 year old thread

                              I am working on making the borg work with Hellband, working off the Zangband 240 borg.

                              I think the semi colon after the if statement completely breaks the unencumbered check:

                              Code:
                              		/* Unencumbered Monks become faster every 10 levels */
                              		if (monk_arm_wgt < (100 + (borg_skill[BI_CLEVEL] * 4)));
                              		{
                              			borg_skill[BI_SPEED] += (borg_skill[BI_CLEVEL]) / 10;
                              
                              			/* Free action if unencumbered at level 25 */
                              			if  (borg_skill[BI_CLEVEL] > 24) borg_skill[BI_FRACT] = TRUE;
                              
                              			if (!(borg_items[INVEN_BODY].iqty))
                              			{
                              				borg_skill[BI_ARMOR] += (borg_skill[BI_CLEVEL] * 3) / 2;
                              			}
                              			if (!(borg_items[INVEN_OUTER].iqty) && (borg_skill[BI_CLEVEL] > 15))
                              			{
                              				borg_skill[BI_ARMOR] += ((borg_skill[BI_CLEVEL] - 13) / 3);
                              			}
                              If you were to host the Zangband Borg on say Github, then I could create a pull request for you.
                              * Are you ready for something else ? Hellband 0.8.8 is out! *

                              Comment

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