Yep, the Vborg has some updates. I thought I would work on it since it has been so long. I did not make any progress on the 340 or 330 borgs so I worked on the 320 borg. There is a long list of improvements for this month. Many improvements are around the endgame. I watched him closely and tweaked his algorithms a bit. That borg even won the game.
- Rogues will not crush their Phase Door scrolls (same as warriors)
- The weight of the swap items is considered in its valuation. Heavy ones are penalized.
- The minimal threshold for quality of the swap was boosted to 5000 points.
- Only spell casters with at least 50 mana will be concerned with holding Restore Mana potions in the inventory.
- The reward for using carrying the deep dungeon spellbooks will now consider the clevel and mana requirements. It is not a good idea for a rogue to carry Raal’s around when the mana requirements are so far over the rogue mana level.
- +5 speed requirement for depth 46 is met is the borg has +speed effect.
- Warriors will not crush Wand of Stone to Mud since they can be handy when fighting summoners.
- Added improved monster flow routines. Instead of borrowing the borg’s flow (and rule set), the monsters have their own.
- Added demons and dragons to a list of special types of monsters for which the borg will track the swap-weapon damage. If the damage is higher and the danger is close to the same, then the borg will swap in the weapon in order to do higher damage.
- Borg will have decreased fear of sleeping monsters when higher level.
- Removed the AC-based reduction in the danger of RBE_SHATTER, the monster attack method which causes earthquakes.
- If super rich, items have a decreased value and he won’t chase down certain takes.
- Before leaving the stairs to chase down an item in munchkin mode, he will rest to regain any lost HP/SP
- If the borg needs to power climb due to a restock issue, and he does not have recall, he will use the munchkin mode to climb up.
- If in munchkin mode and off the stair, the borg might try to fight his way back to the stair. He needed to do a check on the neighboring grids to make sure he was not surrounded by monsters. Fighting one monster is OK, but 2 or 3 is not a good idea if he is in munchkin mode.
- Borgs in munchkin mode will be a lot more careful about leaving the stair to chase down loot if monsters are detected on the level. Too many monsters are waking up and attacking the borg when he leaves the stairs. The borg will add up the danger of the known monsters, and flee the level if their total danger is greater then his HP.
- Recharge scrolls will be carried by munchkin starters if they carry a wand of MM or Stinking Cloud.
- Wands won’t be used to attack town monsters until clevel 15.
- Recharge function did not recharge wands. Now, it will do certain wands. It will also recharge items with are unID’d and “{empty}”. Doing so helps low level borgs survive because they need wands of MM.
- Borg will not be allowed to sell his last wand of MM (even if it is empty), until clevel 20 or so.
- Munchkin Mode will be allowed to use borg_crush_hole(). This will allow him to upgrade the items he is selling. We would not want the borg to pass up a wand of MM lying on the floor because he failed to crush a Slime Mold.
- When determining the value loss of a crushed item, the borg was not figuring the value of a whole stack. When he crushes an item, he crushes the whole stack so the value needed to consider the total value of the stack.
- The borg will now estimate which items were dropped from a unique or questor monster. He has not yet learned how to apply that to his inventory. So for now, he just knows that an item on the ground might be better than average.
- In munchkin mode, the borg will wait until he returns to the stairs before doing certain mid-level functions, like resting to recover, ID’ing, crushing, etc.
- In munchking mode, the borg will only pick up items which are found on depths with are at least maxclevel – 10. This will keep him from filling up with leather gloves from depth 1 when he is clevel 15.
- The borg will be rewarded slightly higher if he uses a sleep attack or a slow attack on monsters if the borg is in a hallway. This will allow him to setup a strategic retreat.
- I started the first stage of doing more accurate monster flow patterns. This can be helpful in planning escapes and knowning if a monster can actually get to the borg. Think of a line of orcs in a hallway and the closest one is asleep. The orcs stacked up behind are not a threat to the borg.
- Borgs can recharge wands while in munchkin mode.
- Borg_projectable_pure() was not returning the proper danger on some bolt damage calculations. The bolts were believed to stop at the monster casting the bolt. It should have been ‘stop at another monster.’ This is a bug fix. It was never a problem until the borg began to estimate damage of bolts cast from other monsters.
- Borgs in munchkin mode have had a ratio of depth to value, meaning they won’t pick up items in the shallow depths, if they like to bounce at deeper depths. This keeps them from filling up on lame gear at depth 1. But is also means that the borg will not pick up torches/lanterns/food– even if needed. I added a check to have him pick up these items if he is low on them regardless of the item depth.
- Borgs will not crush items of any value if in town or in munchkin mode.
- The borg might not flow to an object correctly if the goal_less was set and he was standing on a stair. If he happened to set his goal_less flag and crossed over a stair, on the way some place, he would take the stairs. The was very evident in the borg in munchkin-mode. He would only leave the stair to fetch items if he was standing on a down-stair.
- The borg will be minimally penalized for choosing to flow through walls. This will allow him to flow through the walls if he needs to, but will also encourage him to select the floor grids when the distance is about the same.
- The borg was not enchanting his gear or swap if it had an extreme native negative to_hit or to_dam. (like Calris)
- He might also crush enchant scrolls when he ought to keep them. He only enchants items in town, so he tended to crush the scrolls before he got to town.
- The penalty of being cursed with aggravation was reduced to only 8000. Which can help the borg with certain ‘lie in wait’ routines.
- Borg will buy enchant scrolls for his swap item.
- Borg needed an update to the money_scum shopping. He was missing some of the purchases and calling an early end to his shopping trip.
- In borg_caution() the borg will make strategic retreats. But he was retreating when the danger was only 2% improvement, not worth the effort. I added a 20% danger improvement threshold.
- The borg will grant his current weapon a special tag so that he does not dump it after swapping in the backup.
- Slight rework on how the borg will use his healing. He has been calculating his percent HP loss since the new spells heal a percent of the HP. He will also now consider the HP loss as part of that equation.
- The priest spell of Banish Evil was not being called if the danger was < 90% of the borgs HP. That level is too high. Lowered it to about 70%. This will make him more likely to use the spell. But there are still some checks to make sure he does not use it on wounded uniques.
- It was possible for the borg to not look in the #8 or #9 keyboard direction for a monster when swapping his gear.
- Warriors and Paladins will be giving a 20% boost to the meleee damage score. This will enccourage them to conserve their spells for ranged attacks and healing.
- The spell Orb of Draining had been given a boost in damage for uniques, but it needed to be evil uniques.
- When the borg considers using Banishment against uniques, he is not rewarded for uniques that are injured. But sometimes he would use the spell anyways because there was some benefit. I added a penalty if an injured unique was booted.
- The borg might engage his munchkin mode when deep in the dungeon in order to safely power climb to a comfortable depth. There was a chance that he might forego his borg_caution() routine which would leave him vulnerable. I had the borg leave the munchkin mode if there are any monsters near by. This will allow him to act normally, and safely while looking for stairs.
- The borg will try to hold on to artifact items while in the dungeon. He will just hold on to them for a few extra rounds. It will give him a better chance to evaluate them and see if they should be swapped into his equipment.
- Borg will hold onto a couple of Rods of Light in order to use them later in the game.
- Borg will attempt to illuminate wall grids which have possibly been excavated by tunneling monsters. This will allow him to fire on the monsters sooner.
- Began scaling back all the borg_equips_xxx() routines and moving to a single borg_has_effect(). This will clean the code up and make it easier on inventory management.
- Added the use of monster flow checks into the function borg_check_rest(). Previously, he would check for distance between himself and a dangerous monster. If that distance was less than 4 grids, the borg would get worried. But the situation might present as a borg and monster on opposite sides of a long wall. In which case, the monster could not get to the borg. So he will now check how many steps it takes for the monster to reach him. The result of this will allow him to rest to recharge his SP/HP more intelligently.
- Borg will collect more Rods of Healing (he used to stop at 3).
- In borg_heal(), the borg likes to conserve his potions from depth 98 onward. We will allow him to stay in the fight if he has lots of rods of healing.
- The borg must have a speed of +15 to dive deeper than depth 80. But sometimes at depth 99, after he has collected his hoard of potions, he might be overweight. Then he will not want to dive to 99 to fight Sauron. So the +15 speed requirement is lifted if the borg’s max depth is >=99.
- A long time ago, I added some equipment checks to make sure the borg would not swap out a +STR item if he was encumbered. Doing this helped to reduce some equipment swaps. But in doing so, it also reduced the borg’s ability to trade out a +STR ring for Rings of Speed. I corrected that so he will be allowed to trade in a Ring of Speed.
- In trying to reduce the weight and encumbrance issues, the borg will not carry more than 2 copies of spell books. He has some escape checks if one copy gets burned.
- Borg has not crushed items due to being encumbered unless his speed was under 110. That is great for shallow depths. But deeper, that speed should be increased. I added a speed 130 check for depths >= 85.
- White Dragonscale Armor was being over-valued as a swap item because it’s activation is cold_ball100, same as Ringil. The borg is given a bonus for Ringil, so I made sure that no artifact activation bonus is given to tv_drag_amour.
- Changes to how the borg handles the borg_morgoth_position. Since it is no longer advantageous to cast a full sea of runes, he needed to perform a lie-in-wait check with a smaller radius (8 vs 24 grids)
- The check for borg_fighting_<type of monster> needed to have a pass_wall and kill_wall check.
- Modified the way the borg is calculating damage from a blast radius in borg_launch_bolt_aux(). He will use a borg_offset_projectable() which will assume that all unknown grids are floors. This will encourage him to use the offset attacks.
- In borg_attack(), there was a check to make sure the borg was not shooting through walls at a creature. This check interfered with the borg doing any offset-ball attacks if the monster was behind a known wall and adjacent to an unknown grid (which could be targeted).
- in borg_launch_bolt(), the borg was not allowed to target an unknown grid when using offset attacks. He should he allowed to do so. The projection path routines will take care of any wall grids in the pathway.
- Slight rework on the healing during questor combat. I wanted to focus on using the rods and appropriate spells based on hp loss before getting gorged on drinking too many potions.
- Increased the number or Restore Mana potions the borg will need for the endgame battle.
- The borg might crush good equipment if his inventory is full. I watched him crush a ring of speed +11 instead of replacing his +8. I told the borg not to crush_junk() RoS which have a pval >= 0.
- The borg has two Tport Other defence routines. One is used just for normal functions and that one needed to be modified during questor combat. We don’t want him using it if he has a chance to use an offset ball attack on Morgoth.
- Leave a level if Morgoth and a vault appear together. Morgoth might get stuck in a vault and it causes the borg to consume potion resources excessively. Morgoth might be teleported into the vault where he can rest and heal while the borg waits for him. Meantime, the borg consumed lots of potions and resources trying to kill Morgoth.
- Slight rework on how the borg will restore his mana while fighting Morgoth. We don’t want him drinking them too quickly so I have him wait until his mana is under 40 points. The old number was closer to 70.
- To conserve mana during the endfight, the borg will not use offset attacks on creatures while in the borg_morgoth_postion. He will just end up using Teleport Other on them as soon as they become LOS. So casting offset ball attacks is a total waste of mana.