{"id":382,"date":"2013-05-03T20:34:34","date_gmt":"2013-05-04T03:34:34","guid":{"rendered":"http:\/\/www.innovapain.com\/borg\/?p=382"},"modified":"2013-05-03T20:34:34","modified_gmt":"2013-05-04T03:34:34","slug":"april-updates-for-zborg","status":"publish","type":"post","link":"http:\/\/www.innovapain.com\/borg\/2013\/05\/03\/april-updates-for-zborg\/","title":{"rendered":"April Updates for Zborg"},"content":{"rendered":"<p>More improvements for Life Realm and PASS_WALLing borg.<\/p>\n<ul>\n<li>In borg_think(), the borg needed to do his borg_notice() before borg_update() because some of his my_stat_ind[] were not being loaded on time.\u00a0 This would have him believe that he had no spells available as well as other problems with his attributes.\u00a0 This was only a problem on his very first pass through borg_think() and only showed up if there was a monster on-screen.\u00a0 Imagine a screen-saver initiating with a monster on-screen.\u00a0 The borg would not have proper knowledge of his attributes that first round.<\/li>\n<li>I needed to add the borg_notice() and borg_hidden() to the begining of borg_think() as well as at the end because some of the variables looked at during borg_think() were not populated yet.\u00a0 In particular, borg_cheat_spell() uses some of the borg_skill[], but those are empty when borg_cheat_spell() is called.<\/li>\n<li>I added a structure member called &#8216;avoid&#8217; to the structure borg_kills[]. This will tell the borg to avoid flowing to this monster.\u00a0 It is a hard to kill monster (borg lacks strong attacks against it) and he should not pick a fight with this guy.\u00a0 I also added &#8216;cautious&#8217; which means the monster is hard to kill and it will take at least 7 rounds to kill it.<\/li>\n<li>Borg_flow_kill_corridor_2() needed a fix.\u00a0 It was looking at the wrong monster.\u00a0 It was using monster &#8216;i&#8217; instead of &#8216;borg_kills_summoner&#8217;.\u00a0 ooops.<\/li>\n<li>I needed to add a monster flow version of borg_data_hard in order to help the borg understand monster flow patterns better.\u00a0 He was believing the monsters could not flow on a grid unless the grid was a known grid.<\/li>\n<li>borg_flow_spread_m() needed a rework.\u00a0 Additionally it had some variable naming problems, like &#8216;i&#8217; being used in a loop, when it was previously assigned to be the monster id#.\u00a0 Some monsters can move through doors.<\/li>\n<li>borg_flow_commit_m() needed a correction. It was looking at cost of flowing to the wrong grid and needed to look at the 0 vs 255 cost differently.<\/li>\n<li>Reduced the danger from bolts to zero when the borg has Reflection flag.<\/li>\n<li>Reduced the amount of time the borg would rest on a grid waiting for a monster to approach.\u00a0 He would wait for up to 350 turns, that was dropped to 75.<\/li>\n<li>Passwalling borgs might try to cast Glyph while in the walls.<\/li>\n<li>The flow for anti-summon corridors (type 2) was using goal type GOAL_KILL when GOAL_DIGGING is a better fit.\u00a0 There is better handling of GOAL_DIGGING in borg_play_step().<\/li>\n<li>The type 2 anti-summon corridor will be used only on never_move monsters.<br \/>\nA passwalling borg might get twitchy if he was dark-exploring and was parked on a closed stair.<\/li>\n<li>The game message &#8220;You tunnel into the granite wall&#8221; was causing the tunneling borg to reset his goals.\u00a0 This is not a good idea since he was tunneling to begin with.\u00a0 The message is helpful to keep the borg from looping.\u00a0 But I added a check to not reset the goal if goal == GOAL_DIGGING.\u00a0 The negative effect of this bug was that the borg was not completing his anti-summon corridors.<\/li>\n<li>The &#8216;sneak&#8217; used in borg_flow_committ() should not look at the borgs own grid; he is leaving that grid.<\/li>\n<li>Updated borg_flow_old() so that he is penalized for trying to flow through a monster.<br \/>\nBorg_play_step() needed a bounds check on the section that deals with orbing the loot on the floor.<\/li>\n<li>Borg_defend_aux_rest() was improved by incorporating the improved borg_flow code.<br \/>\nI taught the borg to flow to an &#8216;unreachable&#8217; grid.\u00a0 The borg will select a grid which is safe from melee combat but also affords the borg a good ranged attack position.\u00a0 For example, he will flow to deep water, to keep land-lubbers from attacking him.<\/li>\n<li>The borg needed to know the extra terrains could not hold a glyph of warding.<\/li>\n<li>The borg will now be allowed to shoot spells into walls to attack PASS_WALL guys.\u00a0 Previously, all ranged attacks were forbidden if the PASS_WALL was sitting in the wall.\u00a0 The game will allow a spell to hit the monster but not a thrown\/fired ammo.<\/li>\n<li>Borg should not attempt to flee a battle in order to flow to a recovery grid.\u00a0 There is a check in place now to make sure there are no adjacent monsters.<\/li>\n<li>Borg was bouncing on grids trying to get to a take.\u00a0 He thought his pet was on the take and he could not flow through his pet. Pets had been exempted from the I-haven&#8217;t-seen-you-in-a-while expiration.\u00a0 But they will be added back in.<\/li>\n<li>Also in borg_flow_old() the borg will be allowed to flow through his pets\/friendlies.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>More improvements for Life Realm and PASS_WALLing borg. In borg_think(), the borg needed to do his borg_notice() before borg_update() because some of his my_stat_ind[] were not being loaded on time.\u00a0 This would have him believe that he had no spells &hellip; <a href=\"http:\/\/www.innovapain.com\/borg\/2013\/05\/03\/april-updates-for-zborg\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[19,11,16,20,10,21],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-zborg","tag-bug-fix","tag-combat","tag-flow","tag-healing","tag-loops","tag-race_spectre"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/comments?post=382"}],"version-history":[{"count":1,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/posts\/382\/revisions"}],"predecessor-version":[{"id":383,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/posts\/382\/revisions\/383"}],"wp:attachment":[{"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/media?parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/categories?post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.innovapain.com\/borg\/wp-json\/wp\/v2\/tags?post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}