January 2014 Zborg

I received some great savefiles showing some errors and had a chance to work on them.  Here is the result:

  • Added a few more ego item types to the list of items that should be *ID*’d, since some items can have extra powers and resists.  The ones added were slay and kill dragon, might, power, & lordliness.
  • The defense maneuver of detect_invis() was missing the sorcery spell of Sense Minds in the defense activation.
  • Aesthetic fix to the layout of the ^zd Spell Dump output.
  • Improvement to how the borg was calculating the benefits of using Teleport Other on large groups of monsters which can create a lot of danger.
  • There was a ‘drop off potions’ loop.  The borg was heading to town but not dropping off the potions in the house.
  • Borg was over confident in his ability to tunnel.  There is a definition of BORG_DIG which is his digging skill.  I was moved 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.
  • Borg was incorrectly parsing the staff charges of “3 Staffs of Foo (3x 4 charges).”  He thought he only had 4 charges instead of 12.
  • The borg was over-rewarding the value of certain activations.  The error was related to the scanning of equipment in borg_power_aux3() and looping a reward.
  • The borg was ignoring ‘The Greater hell magic mushroom were-quylthulg’ when should only be ignoring ‘The greater hell-beast.’
  • Added support for GF_STUN and GF_TURN_EVIL in borg_launch_damage_one().  I made sure the GF_STUN is not considered valuable if the monster is compromised from some other effect (confused, afraid).
  • Amberites were having trouble with mutation activations.  The borg had the wrong address for his mutations (b instead of c).
  • Added better support for Amberite racial activations including a borg_recover() check for hallucination.
  • The borg needed to weigh the benefits of casting Brand Weapon.  Some are very expensive in terms of mana.  The no_melee guys won’t bother with casting it.  He also needed to make sure he didn’t cast/rest loop.
  • Some improvements and clean-ups to how the borg works with dispel spells with varying AoE radius.

 

Posted in Zangband 240 | Tagged , , , , | Leave a comment

New Years Eve

  • 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.
  • Now that the summoning spells have support, I am removing the ‘icky’ tag associated with certain spells.  Today was the Nature Realms summon.
  • The borg might loop onto an empty grid which was previously a vein grid.
  • 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.
  • Potential for the borg to loop trying to wear a cursed spell book, thinking he can decurse it.
  • Encumbered borgs will no longer unequip their gear.  They tend to crush it.
  • Skeletons will not borg_consume() food items as a means to crush or destroy them since they just fall to the floor.
  • Staffs and wands needed to have a distinction between identified and aware.  It helps with recharging at the special shop.
  • 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.
  • Borg will now increase his ‘leash’ (based on clevel) when flowing to the takes in munchkin mode.  This will allow him to chase down his arrows.
  • 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.
  • There were a couple of places where Stone to Mud from Nature Realm was missing from the spell lists.  This caused the borg to miss a few spells chances and to carry digger.
Posted in Zangband 240 | Tagged , , , | Leave a comment

Christmas Eve 2014

Merry Christmas!  I have a nice Zborg update with lots of improvements.

  • Slight correction to the stair scum use.  The borg was leaving the munchkin mode if he were 1 step away from the stair.
  • Borg needed to know that activating cursed items is 3x harder than non-cursed ones.
  • The Death spell of Invoke Spirits needed to be listed as icky, and not attempted since it has random results (some of which require targeting)
  • The defense maneuver 0 (calling speed) had the potential to stall the borg if the allow_fail was altered.
  • 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.
  • The borg could possibly hang while considering the casting of Divine Intervention.
  • Divine Intervention Life Realm had a bad spell address from the defense call.
  • Reworked the ego ammo a bit to clean up the code.
  • Questor monsters were added to the uniques with respect to adding damage in damage_one().  This will influence the borg to select Questor monsters for combat.
  • The borg was at the Paladin Guild trying to enchant his swap ring.
  • 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.
  • Added an anti-‘cast Detection/rest’ loop by adding a mana check.
  • Nature’s Awareness was being cast multiple times in a row.  Once for each type of detection.
  • 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
  • Some cursed artifacts were not being junked in the dungeon because they had some nice high resists which the borg was lacking. But having that resistance was not worth carrying the item.  He is allowed to check the value of junk items before junking them.
  • Slight change to the munchkin mode to help him dive better without being subject to the restock() restrictions.
  • Monks were trying to dig unarmed.  So I added special considerations for the monks to carry diggers.  But that required special handling of the borg_wear_stuff() to allow him to remove the digger and return to being an unarmed monk.
  • Borgs in vanilla_town mode were not storing items in their home correctly.  Vanilla town is town_num 1, which is also the Outpost in the Zangband wilderness.  And the borg does not shop or store items the same way in the Outpost.  The borg will move to the town north of the Outpost at about clevel 12.  So items don’t get stored in the Outpost Home.
  • The Arcane spell of Elemental Ball had the wrong spell address in the attack routine.
  • Zangband provides skill bonuses to players for using weapons of certain mass.  These are in xtra1.c.  These bonuses were taught to the borg.  So he can consider them when choosing his weapons.
  • The borg was not calculating his ‘member discount’ correctly at the temple.  Restoration can cost either $100 or $500.  Rather than have the borg do the calculating, I just told him to have the $500.
  • The arcane spell of See Invis had the wrong address in borg4.c
  • The defense maneuver of See Invis needed better handling and ordering the duration spells before the snap-shot spells.
  • The Nature realm spell of Whirlpool was added to the list of nice offset-ball attacks in the borg_defend_aux_rest() object.
  • The borg_prep requirement for See_Inv or ESP for depth 9 is lifted if the borg clevel >= 30.

 

 

Posted in Zangband 240 | Tagged , , , , , , , | Leave a comment

December 2014

 

  • 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.

 

  • Added Lord of Change and Shoggoth to a list of Nasties.  If too many of them are on a level, then the borg will flee the level.  Added a new teleport level check in borg_escape() to flee in just this case.

 

  • Monsters with teleport spell can follow the player through his own phase or teleport.  That’s very dangerous to the borg.  He will consider these guys dangerous if they are 3 (or fewer) grids away in distance.

 

  • 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.

 

  • There was a bug in the the defence maneuvers involving Teleport Other and the rods/wands.  The object being called was only looking at equipment (and skipping inventory) for a rod.  Obviously, no rods/wands are present in the equipment list.

 

  • Some repairs to how the borg respawns while in Vanilla Town mode.  It had been crashing.

 

Posted in Zangband 240 | Tagged , | Leave a comment

November 2014 Updates

  • 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.
  • Borg will not cast CLW or CSW if his HP are down more than what the spell can cure, and there is some danger.  We don’t want him casting low levels cures while adjacent monsters beat on him.
  • 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.

‘Grabbing’ is when the borg will see an item in the shop and determine that it will make a nice addition to his house inventory.

 

Posted in Zangband 240 | Tagged , , | Leave a comment

June 2014 Updates

  • The borg needed another check in the munchkin mode with using Create Stair spell. He was missing some opportunities when trying to get back down deep.
  • The Summon Friendly Monster spells needed to check for a free grid adjacent to the borg; one on which a monster could be placed.
  • Added a couple of items to the ‘do-not-eat’ list for Eat Magic.
  • borg will use Teleport Level to escape a level 1 danger if on a depth with >= 10 summoners.
  • I modified the game code to incorporate the following: If a non-smart monster is being attacked by a pet/friendly and that attacker is closer to the monster than the borg, then the monster will attack that pet/friendly.
  • The borg will reduce his fear of an area if he has pets/friendlies near by.
  • Added a quantity note to the borg’s buying report. He will tell of how many of the ‘xx items’ he wants from the store.
  • He will only do the ring swap (with nasty and tight rings) once per level.
  • Added one more check to avoid buying and selling loops to the home.
Posted in Zangband 240 | Tagged , , | Leave a comment

March 2014 Updates

I am still running a half-ogre Life/Nature borg.  He is playing cautiously at dlevel 37 and clevel 42

  • Added support for the rest of the randart activations (charm and summons).  Charms are attacks and summons are defense maneuvers.
  • Fixed an error in the game code that kept eat_magic() from working on rods.
  • Extended the CHARM_XP code to include the other two forms of control.
  • Summon a pet as a defense maneuver when surrounded by guys.
  • Added the Trump realm summons to the defense check on summoning a pet.
  • Added the Half-Ogre race activation to glyph formation.
  • 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)
  • When crushing junks, borg should look at eat_magic to regain mana before dumping the item.
  • I needed to replace some hard-coded K_IDX numbers.
  • 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.
  • Player ghosts were being assumed when it should have been a friendly or pet.
  • In an effort to dive deeper and play at his maximal safe-depth, he will use the munchkin mode and scum the stairs more.
  • Defense was calling Nature spell of Stair Building instead of Resist Corrosion.
  • 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.
  • The borg would use the Eat Magic mutation in borg_heal().  I moved it to borg_recover().
  • borg_cave_floor_bold() need to have FEAT_OPEN added to the list.
  • borg_defend_lightbeam() was not considering 3-way intersections as a possibility.
  • I had to smooth out the AC reward for no_melee guys with AC near 75.  It was inducing a shop-wear-sell-loop.
  • Nature Realm added to the list of characters who can have more than 3 pets.  Dismissing pets is a defence maneuver and it is called if too many pets are found.
Posted in Zangband 240 | Tagged , , , , | Leave a comment

Zborg Updates February 2014

A couple of people indicated that the zip files seemed corrupted. I switched to using a 7-zip command-line tool. Hopefully this will improve the quality of the zipfile. I’m not going to lie; I had been using pkzip from 1996 and had to upgrade when I switched to Windows8.

  • Non-melee borgs will not get points for carrying swap armour which gives a bonus to melee attacks.
  • High mages will not be given points for carrying a swap weapon which gives a bonus to melee attacks. Previously, only mindcrafters did this.
  • Items labeled as ‘Quest’ will be added to the list of items for special consideration in the swap routines.
  • Don’t sell wands of stone to mud if one does not have this spell. This will help with anti-summoning corridors.
  • Mindcrafters will not value scrolls of enchant to_hit or to_dam. This will clean up the inventory.
  • Added a borg_skill[BI_NO_MELEE] flag for CLASS_MINDCRAFTER, CLASS_MAGE, and CLASS_HIGH_MAGE. It is used unstead of having to repeat all the checks in the code.
  • Slight &&/|| hierarchy correction in borg_escape() level 4.1
    Increased the number of Rods of Healing carried from 6 to 20 and created a variable defined in borg1.h.
  • Improvements to recharging. Borg will use Thingol more in recharging rods, and Stone to Mud wands will be rechaged.
  • NO_MELEE guys were being giving power points just like bare-handed monks.
  • 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.
  • Some quest items were not being junked, or ID’d (amulet of destruction)
  • Some randarts get activations. I added support for those items (and there were lots!). The ones not coded were the charm monster and summon monster varieties.  They will be added soon. He will get reward points for carrying certain types of utility activations.
  • Recharging items at the Sorcery Shop used to be limited to only certain types of wands/staff. Now, the borg will recharge any wand/staff/rod that happens to be in the inventory. By the time the borg flows to this shop, he has already determined that the item is worth holding on to; any junk item would have been sold.
  • Added two new defense routines: Banish Good, and Wraithform.
    Improvement to how the mindcrafters use Telewave
  • The NO_MELEE borgs were not calculating their damage correctly when fighting barehanded.
  • Slight improvement for how low level borgs use speed potions.
    Improved the way the borg can use Confusion spells/wands.
  • The borg was trying to pick up a flask of oil (and other critical items) when his inventory was full.
  • 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.
  • Started working on Nature Realm spells. Most spells were already being used.
    Added Animal Taming.
  • Added better support and a bonus check for charming and taming monsters (including Mindcrafter Dominion). Since the tamed monster will fight for us, a bonus will be given if it is adjacent to another (non-friendly) monster.
  • The borg_consume() needed to add more scroll types.
  • The borg_crush_() needed to remove the confirmation ‘y’ keypress.
  • Added support for the SV_SCROLL_ARTIFACT
Posted in Zangband 240 | Tagged , , , , | 2 Comments

Zborg Winter Updates

  • Update to borg_recover() so a vampire borg can rest to heal more frequently. There was an issue with him only resting during certain times of the day.
  • The borg needed a slight fix to the attack mode 0, which is resting on a grid waiting for a monster to approach.
  • A hungry borg in munchkin mode might want on the stairs to recoop his HP, eventually leading to a starvation death.
  • The borg will skip the jump_into_hall() maneuver if the summoner is a pass_wall or kill_wall monster. They tend to foil the purpose of the routine.
  • Vampires will not be held to the restock food requirements like other races. This includes those with the vampire mutation.
  • Borg_attack() modified so he can target grids without a BORG_VIEW flag.
  • The borg was trying to enchant his swap armour at the fighter guild, which is fine except the item was an artifact amulet. I added a control to make sure swap rings and amulets are not enchanted.
  • Borg was slighting miscalculating the projected path of a monsters bolt attack with respect to the bolt passing through other monsters.
  • Mindcrafter borgs are not given any power points for damage of their weapons.
  • Removed the random considerations from the mindcratfer spells. There was a random check in the attack routines which would cause the attack being considered to fail. It was designed to introduce a random element to the attacks.
  • Removed the fear_regional[][] from borg_danger() if the borg is deeper than depth 70 (it had been 80).
  • 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.
  • Slight boost for gaining higher speed. I had to smooth out the scale a bit.
  • Taught the borg to recharge his healing rods at the shop in town. Additionally, he will rest to recharge the Rod of Healing in town since he can pay to recharge it.
  • 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.
  • Although the mindcrafter spell of Pulverise of awesome, it does not do enough damage against the high level uniques so the borg will prefere Mindwave when fighting uniques.
  • 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).
  • Game Change: The killing of Amberites could set off a chain of curses. The result could be absolutely insane. It was easy to have the following curses: Earthquake, Mana Blast, Teleport, Summon 13 High Demons. Surprisingly, after killing Eric, I encountered each of those in one round. That is just way too over powered for killing an Amberite. If killing an Amberite carries that much risk, then they should have some incredible drops (like 100% chance to drop a randart).
  • The racial thrust attacks (vampire blood suck) will not be considered if the monster is currently invulnerable.
  • The PSI_DRAIN attacks were not being considered if the monster was invulnerable. But thankfully, the spell does absorb mana even if it doesn’t do damage. The borg now recognizes the benefit of using the spell against an invulnerable guy.
  • Mindcrafters will not be granted bonus points for the damage calculations on their swap weapon (since they don’t attack with one).
  • The will not be allowed to crush his rod of recall to make space for an item he wants to pickup.
Posted in Zangband 240 | Tagged , , , | 2 Comments

One more repair to the shopping bug.

  • I forgot to complete a change from the other day.  Borgs were still trying to sell rings to a full shop, and there was a potential issue with wands and staves.
  • A crash was reported in borg6 related to the borg losing track of an item.

I am still seeing lots of sync issues.  I have noticed that the async can be induced when a monster picks up an item (like an arrow).  It does not always happen.  But I suspect there is a keyboard flush which is causing the async.

 

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