VBorg update for the Kobold Paladin

The vanilla borg was having issues with creating kobold paladins for every character.  This actually wasn’t a borg issue, but a “feature” in the birth.c file for the game.  So I made some edits to allow the normal classes to be generated as defined by the borg.txt file.


Posted in Angband (Vanillia) | Tagged , | Leave a comment

March 2017 Zborg Update

  •  Starving vamp borgs are now allowed to eat a pet.
  •  Starving Vamp who can summon a pet to eat, should do so.
  •  Starving borgs will skip the borg_defend(), since it might teleport away a meal.  At a minimum it is consuming a round of energy.
  •  Borg will disengage the munchkin mode and not stair scum if he is on a quest level.  He can’t power dive past it, and he wouldn’t remain on the level long enough to kill the quest monsters.
  •  A borg with DimDoor, and in munchkin mode, will  jump to a stair.  This saves him several game turns since he is jumping to stairs which might be out of leash range.
  •  Trump Activation (teleport) was calling on inventory slots instead of equipment slots.
  •  The game will sometimes not show the inscription on an item with a long name.  Consequently, the borg may not find the inscription and may loop trying to create one.  So the inscription will be cheated into items.
Posted in Zangband 240 | Tagged , , , , | Leave a comment

September 2016 Zborg

Update for the Zangband borg.  I’ve been running Vampire Mindcrafters and they seem very capable within the borg’s limited dynamics.  There were some fixes to how the borg handles, radius-0 ball spells

  • Borg was still (rarely) missing the target using the offset technique.  The borg will now skip the offset attacks if it yields the same damage as a direct hit.
  • The Mindcrafter Pulverise spell has a radius 0 effect at low level and should not be offset.  It had been calculated as a beam/bolt.
  • While in Munchkin Mode, the borg might find himself off the stairs by 4 or 5 grids.  If he encounters a monster so far from the stairs, he tends to stand his ground and fight instead of racing for the safety of the stairs.  Usually he is encumbered and slow while in this situation.  But if he is not encumbered, he might do better to race for the stairs, so I added an encumbrance check.  (borg_think_dungeon_munchkin())
  • Psychic Drain is a radius 0 ball effect.  Borg kept thinking it was a bolt.
Posted in Zangband 240 | Leave a comment

January 9th, 2016

  • borg_best_combo() was returning a crash from a report of the item description if the item was being pulled from the home.
  • The Amberites need to know that the level has changed when they use the Shadow Shifting ability.
  • If a borer monster was in a vault, and not able to flow to the borg, then the borg should not create a sea of runes and wait for the borer.
  • Sometimes we will see the borg fire several missiles or spells into a monter that has total cover from a wall. The game’s pathing routine is called project_path() but it also uses mmove2(). The borg used mmove2() for both needs. The two objects are not returning the same results so the borg believed that his path/aim would strike the target, but in project_path(), it would take a slightly different path and could catch a wall, thus stopping the path. I have switched the borg’s pathing to use the project_path() in the attack routines. So he should stop looping on this missed shots.
  • A crash related the use of Meteor Swarm was reported.
  • A randart with an activation might induce an inscribe loop if the item were “charging”
  • Some item inscriptions were not being recorded properly. This happened it the item had a super long name. So the borg will not inscribe an item if the item’s name is over 65 characters long.
  • Another slight rework of path guessing for bolts and beams. Fix in borg_lauch_bolt_aux().



Posted in Zangband 240 | Tagged , , | 2 Comments

Screensaver for V341 updated

There was a couple of problems getting the vanilla 341 screensaver working.  I had to make a couple of changes to the game code.

  1.  Main-win.c in WinMain() about line 5449
  2. Cmd-misc.c in do_cmd_try_borg() about line 109

I’ve tested it in my windows 7 machine and it seems to work now.  Please report any problems.


Posted in Angband (Vanillia) | Tagged , , | 1 Comment

Back to School Updates

Summer break is over and it’s time to update the borg.

  • The wrong routine was being called when the borg looked for an item with the earthquake activation. He should look to see if he equipped an item. Instead, he was actually activating the item.
  • the borg was resting on a shop door waiting for recall to engage. I fixed most of these calls last time, but at least one more instance remained. This one was related to a ‘,’ call in borg_think_dungeon().
  • Borg was still thinking about buying a TV_SWORD for the house.
  • The mutation attack of BF_MUT1_SHRIEK had a distance of 10, it should have been 8.
  • Borg was being surrounded by 4 guys, one of which was Bluecoat with an AC of 98. The borg had a to_hit chance of 95 but was not inclinded to attack Bluecoat. I had to fix the formula by removing the 95% cap and allow the swing attempt for summoners/quest/uniques.
  • Added a borg_defend() maneuver for branding of the weapon. The borg already did some weapon branding, but not as a specific defence maneuver.
  • Borg needed to cheat his inventory prior to checking the borg_flow_special_shops. He needed to redefine some of his variables after considering all the permutations of the equipment.
  • Added code for the FEAT_BLDG_HEAD features.
  • Try not to use ShootN’Scoot if fighting a summoner. Scooting just gives them another round with which to summon more guys.
  • Adjusted the danger() calculations so that his % Saves will reduce his fear of certain spells. The Harm spell does 10d15 damage. But if the borg has 75% saves, he should not fear the spell 150 points. At best it ought to be about 50 fear points.
  • The borg was incorrectly adding additional danger points if a monster was faster than him and had spells. Essentially, the spell danger was being added again.
  • Dont use the Bless defense spell if fighting a summoner. We want to use the turn to deliver damage and deny the monster the chance to summon more.
  • Monster Haste spell should not create too much danger().
  • Monsters which can teleport-to do pose some risk to the borg since they can follow him through his teleport. But the fear was at 800, which was way too high. I set the fear equal to the monsters HP.
  • Now he will not teleport-away wimpy mages with only 50 hp.
Posted in Zangband 240 | Tagged , , | Leave a comment

Small Vanilla 341 update

  • I added the enchant scrolls to the list of consumable items. So instead of junking scrolls, he will at least attempt to enchant an item in the inventory/equipment.
  • in borg_lure_position() and borg_flow_kill_1(), which are both related to allowing the borg to move into an anti-summoning corridor, the needed to make sure that two particular grids were not both open floor grids.
  • Added a take->crap to better track the items that need to be dropped onto the floor since k’rush doesn’t work right. Also, crap items will not clear the flow goal.
  • Since flasks of oil are heavy and the borg is much better an scumming stairs, he will not be required to carry so many of them. He will carry from 1-5 flasks, instead of up to 10.
  • Borg_flow_old() needed to very slightly penalize digging so as to prefer walking on floor grids.
  • Improved the calculations for anti-summon spots.
  • Borg had to learn if his level was a Labrynth level and then treat that level in a special way (no shoot-n-scoot maneuver)
  • Tiny clean up for the borg’s unhook and recognizing if a keypress was made.


Posted in Uncategorized | Leave a comment

Vanilla 341 Update

I wanted to get an update for the vanilla borg.  I have not been able to get the latest (351) to compile but at least the 341 will be working a little better.

  • 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.
Posted in Angband (Vanillia) | Tagged , | Leave a comment

April 22, 2015 updates

  • Potential crash from Meteor Swarm calculation fixed.
  •  Adjusted the damage on certain death spells and corrected the mana cost penalty.
  • For some reason, I was thinking the beastman race got a discount at the cure-mutation guy. Evidently not. The borg was getting stuck in a shop loop because he had less that $5k and was trying to fix some mutations.
  • There was a slight keypress hang-up with using Midas Touch. Plus I added a minimum value of 5 to an item since we only get 1/3 back in gold. The money should be worth the mana investment.
  • Borg was missing a mutation activation failure notification. They being with “you’ve failed” but all the spell failure messages begin with “you failed.” Catching these notifications is important in order to flush the keypress queue.
  • Melee-centric guys should avoid casting a bolt on adjacent monsters. (except the incapacitation ones or vamp.)
  • An equipment inscription loop could happen on randarts that the borg tried to crush.
  • Major fix to the way the borg calculates the fail-rate on spells. He was mistakenly thinking that all spells used INT to calculate fail rates. This only became evident when a WIS using spell caster with really low INT tried to cast a spell. The borg believed that he could not do it. That bug has been in place for about 14 years. Wow.
  • Borg got lost in the wilderness when trying to move from town 1 to town 3. He needed help learning how to get back on path.
  • Improvements to how the borg calculates damage and to-hit chances with arrows.
  • Borg will be more likely to enchant his arrows. He used to wait until he was clevel 35.
  • Made Remove Fear a higher priority for the non-NO_MELEE guys.
  • Added the Death spell of Berserk to the list of items granting Remove Fear.
  • I had to add the store doors to the list of ‘dont rest on these grids.’ When he rested on them, he would enter the shop.
  • The specialty shop doors had to be added to the list of special doors in borg_update_map(). FEAT_SHOP_HEAD, FEAT_BLDG_HEAD.
  • borg_target_unknown_wall() needed some help placing ‘wall’ grids on the unknown grid.
  • The borg_position & POSITION_SUMM needed a tiny correction for an outside position floor grid being visable.
  • The ‘recently_worn’ flag was not being reset in the borg_best_stuff_aux(). So the next item in the check was inheriting the flag from the previous item.
  • Increased the offset-attack scan from -1..1 to -2..2 This will help with bolt attacks.
  • Needed to alter borg_danger() so that it considers the fear which one monster imposes on another. Not always fear the monster imposes on the borg. There are times the borg wants to know how much fear/damage will be dealt to him if he steps on a grid, but sometimes, he is curious about how much fear/damage a pet/friendly imposes onto monsters. But the current borg_danger() considers the players attributes and skill set.
Posted in Zangband 240 | Tagged , , | Leave a comment

Trump Tower and depth > 85

  • Add support for the Inn. The borg will buy food if he finds himself there. But the borg does not purposely flow there (yet).
  • Added more shops to the list of ‘mistakenly entered shop’ routine.
  • Borg needed a borg_notice() added before the borg_power() in borg_remove_stuff(). He was missing a few of his borg_skill[] flags because of it lack and it induced some odd equipment changes.
  • Borg might remove his known good bow for a random xbow if he happens to find bolts on the ground and he is out of arrows. Fixed that.
  • Added support for the borg to be able to deliberately flow to the Inn if he is hungry in town.
  • Fixed unhook issue defense maneuver of genocide_nasties.
  • Fixed an infinite loop with trying to remove a cursed ring when trying to wear a new ring.
  • Fixed a loop with the borg trying to flow to a recover grid in town.
  • Fixed a potential loop with the borg trying to flow to a recover grid when a spell caster (like a rogue) had 0 max mana.
  • Retreating into a wall for safety while passwalling needed an adjustment.
  • Borg_surrounded() needed some help with borgs who can use Passwall.
  • Improvement to missing path calculation/estimation in borg_launch_bolt() and borg_launch_bolt_aux()
  • Borg will be more likely to use the Teleport Other spell if he is waiting for recall to engage.
  • The Death spell of Malediction and the MC power of Neural Blast are radius 0 ball effects, not bolts. So sometimes the borg would offset-target the monster knowing that the bolt would hit. But actually, these two spells would miss since they are not bolts. The borg needed to know that for these two spells, no offset-targeting is allowed.
  • Minor fix for some non-eating borgs who got stuck in the Inn.
  • Certain low level borgs with low strength would loop on wielding a weapon.
  • Taught the borg how to use the Trump Tower for recalling and jumping to certain levels.
Posted in Zangband 240 | Tagged , , , , | 2 Comments