Peppe

[MOD Project] DG Skirmish AI .22 -- 2/08/2010

[MOD Project] DG Skirmish AI .22 -- 2/08/2010

This mod will seek to make a challenging AI to play against in single player and multiplayer.

Currently mods can only be applied to 'skirmish' games offline, so offline tournaments are out at the moment.  Multiplayer can only use mods in custom games.

I hope to have many contributors and please post ideas here.   I am no expert on this game and can use every input available.  I also welcome other developers if anyone is interested.

 

Current Features:

  • Each demigod has custom build(s) reflecting a focused skill and item plan
    • Each build supports custom favor item and item priorities to taylor item selection to each build.  
    • Where it made sense the AI skill plans hold skill points for use at a later level. 
  • The AI purchases Citadel Upgrades like a human:
    • Priests, Angels, and Cats purchased in warrank 8 (if it has the money)
    • Giants and armor upgrades purchased at a high priority in warrank 10

Under Development:

  • Refine conditions for when to use an item with an 'on use' property.
  • Improve AI macro through goal priority level manipulation.

 

Downloads:  

Installer - http://peppe-dg-mods.googlecode.com/files/Peppe_DG_skirmish_AI_setup.exe

Zip - http://peppe-dg-mods.googlecode.com/files/Skirmish_AI.zip

Newer versions available in this thread: http://forums.demigodthegame.com/400825

To add an installer to your mod follow instructions here: [MODDING-UTIL] Mod Setup Script


.22 Changes: 2/08/2010

Tweaks to new or changed items in 21.  Should avoid flags protected by towers (more often).

 

.21 Changes: 2/07/2010

Custom actions created to teleport to towers and portals under attack by enemy Demigods.

When looking for flags to capture all Demigods consider all flags.   Actions for flags nearest HQ, near to demigod, and portal flags.

Capture lock changed to only lock portals and valor flags under enemy threat.

 

.20 Changes: 2/03/2010

Rook arrow tower firing rate dropped and damage increased in attempt to improve the AI Rook retreating stutter-step issue.

 

.19 Changes: 1/25/2010

Mainly Stun/Interrupt Changes.

UB + Rook will save thier skill for interrupt or a low health target.

Sedna + Oak, will fire thier interrupt skills as long as they have mana and should stop using it once they reach low mana, but will fire if an interrupt opportunity presents itself.

Erebus,  Will use charm mostly for interrupt, but if he can stun multiple demigods will fire it off.

Demon Assassin,  Didn't test this, but should only shadow swap to interrupt may add additional conditions later.

Teleport and Large potions set back to require a safe distance from enemies to use.

 

.18 Changes: 12/15/2009

Sedna Heals earlier, @75%

QoT Casts shield earlier, @75%

Some flag cap changes.

 

.17 Changes: 12/14/2009

Sedna build changed.

Minor changes to survival goals.

Flag capture range extended.

 

.16 Changes: 12/13/2009 Mark II

Minor changes to Teleport distance check and consumable item priorities.

UB build changed to Ooze + Spit maxed by lvl 10.

Sedna Item priorities changed.

 

 

87,590 views 262 replies
Reply #51 Top

Quoting Myles', reply 50
Just wanted to point out incase it got missed - you have 'HDemonWarpArea01' twice as skill #5 and #19 in DA's skill list.

WOW nice catch Myles!

Reply #52 Top

 

.06 is up.

Demon Assassin 19-20 skill fixed before release.

 

Builds posted earlier plus all the other demigods (minus oculus).  New builds at end of this post.

 

I looked at oculus and have no idea what he should use, so he is on the default weighted random skill plan.  If you have a build for him post it or a link to it.

 

These builds are a first stab at getting a better build plan in compared to the 3-4 default ones the AI's come with.   I would like to have 2+ builds for every demigod to keep some randomness in thier skill use.  If you have suggestions for any Demigod post the build or a link to it in this thread and i'll probably enter it in.

 

Thanks all.


Rook

        hammer_boulder = {
            'HRookHammerSlam01',    # 1
            'HRookArchers01',        # 2
            'SAVE',                    # 3
            'HRookHammerSlam02', 'SAVE',    # 4
            'HRookBoulderRoll01', 'HRookTowerOfLight01',    # 5
            'HRookGodStrength01',    # 6
            'HRookHammerSlam03',    # 7
            'HRookTrebuchet01',        # 8
            'SAVE',                   # 9
            'HRookHammerSlam04','HRookBoulderRoll02',    # 10
            'HRookGodStrength02',    # 11
            'HRookTower01',         # 12
            'SAVE',                   # 13
            'SAVE2',                   # 14
            'HRookDizzyingForce', 'HRookPoison','HRookBoulderRoll03',    # 15
            'HRookGodStrength03',     # 16
            'StatsBuff01',          # 17
            'StatsBuff02',             # 18
            'StatsBuff03',           # 19
            'StatsBuff04',             # 20
        },

 

TB:

         Hybrid_Fire_ICE = {
            'HEMA01RainIce01',          # 1
            'HEMA01Fireball01',         # 2
            'HEMA01FrostAura01',          # 3
            'HEMA01RainIce02',          # 4
            'HEMA01Fireball02',         # 5
            'HEMA01FireNova01',          # 6
            'HEMA01RainIce03',             # 7
            'HEMA01Fireball03',         # 8
            'HEMA01FrostAura02',          # 9
            'HEMA01Fireball04',         # 10
            'HEMA01RainIce04',          # 11
            'HEMA01FireNova02',          # 12
            'HEMA01FrostAura03',        # 13
            'HEMA01FreezeStructure01',    # 14
            'HEMA01Clarity',             # 15
            'HEMA01FreezeStructure02',    # 16
            'HEMA01FreezeStructure03',    # 17
            'HEMA01FreezeStructure04',    # 18
            'HEMA01FireandIce',            # 19
            'HEMA01FireNova03',            # 20
        },

 

Reg:

            auto_attack = {
            'HGSA01AngelicFury01',    # 1
            'HGSA01MaxRange01',        # 2
            'HGSA01Maim01',            # 3
            'HGSA01AngelicFury02',     # 4
            'HGSA01MaxRange02',        # 5
            'HGSA01Betrayer01',     # 6
            'HGSA01AngelicFury03',    # 7
            'HGSA01MaxRange03',     # 8
            'HGSA01Maim02',          # 9
            'HGSA01AngelicFury04',    # 10
            'HGSA01Betrayer02',       # 11
            'HGSA01Maim03',           # 12
            'StatsBuff01',             # 13
            'StatsBuff02',            # 14
            'HGSA01Betrayer03',        # 15
            'StatsBuff03',            # 16
            'StatsBuff04',            # 17
            'StatsBuff05',            # 18
            'StatsBuff06',             # 19
            'HGSA01ImpedanceBolt01',# 20
            },

 

UB:

            ooze_speed_stats = {
            'HEPA01Ooze01',             # 1
            'HEPA01SpeedIncrease01',    # 2
            'HEPA01DiseasedClaws01',        # 3
            'HEPA01Ooze02',             # 4
            'HEPA01FoulGrasp01',       # 5
            'HEPA01SpeedIncrease02',        # 6
            'HEPA01Ooze03',             # 7
            'HEPA01SpeedIncrease03',        # 8
            'HEPA01DiseasedClaws02',    # 9
            'HEPA01Ooze04',             # 10
            'HEPA01DiseasedClaws03',           # 11
            'StatsBuff01',        # 12
            'StatsBuff02',    # 13
            'StatsBuff03',        # 14
            'HEPA01Acclimation',        # 15
            'StatsBuff04',         # 16
            'StatsBuff05',           # 17
            'StatsBuff06',        # 18
            'HEPA01PostMortem01',        # 19
            'HEPA01Plague01',              # 20
        },

 

Sedna:

     heal_pounce = {
            'HSednaPounce01',               # 1
            'HSednaInnerGrace01',           # 2
            'HSednaHeal01',                  # 3
            'HSednaPounce02',               # 4
            'HSednaHeal02',                  # 5
            'HSednaInnerGrace02',              # 6
            'HSednaPounce03',               # 7
            'HSednaHeal03',                   # 8
            'HSednaInnerGrace03',           # 9
            'HSednaPounce04',               # 10
            'HSednaHeal04',                  # 11
            'HSednaHealingWind01',          # 12
            'HSednaHealingWind02',          # 13
            'HSednaCounterHealing01',          # 14
            'HSednaInspiringRoar',          # 15
            'HSednaLifesChild',             # 16
            'HSednaMagnificentPresence01',  # 17
            'HSednaMagnificentPresence02',    # 18
            'HSednaMagnificentPresence03',    # 19
            'HSednaSilence01',                 # 20
        },

Reply #53 Top

 

I have added the ability to define favor item by build. 

 

It can be a list of favor items to randomly select from (anklet, botf, teleport), or a single item.  This should be vary useful to tailor builds around favor items.

 

To accomplish this i had to rewrite the achievments selection section to read a list of favor items and select from them randomly.

 

Example for a sedna build:

     heal_pounce = {
            'HSednaPounce01',               # 1
            'HSednaInnerGrace01',           # 2
            'HSednaHeal01',                  # 3
            'HSednaPounce02',               # 4
            'HSednaHeal02',                  # 5
            'HSednaInnerGrace02',              # 6
            'HSednaPounce03',               # 7
            'HSednaHeal03',                   # 8
            'HSednaInnerGrace03',           # 9
            'HSednaPounce04',               # 10
            'HSednaHeal04',                  # 11
            'HSednaHealingWind01',          # 12
            'HSednaHealingWind02',          # 13
            'HSednaCounterHealing01',          # 14
            'HSednaInspiringRoar',          # 15
            'HSednaLifesChild',             # 16
            'HSednaMagnificentPresence01',  # 17
            'HSednaMagnificentPresence02',    # 18
            'HSednaMagnificentPresence03',    # 19
            'HSednaSilence01',                 # 20
            FavorItems = {'AchievementRunSpeed','AchievementHealth02','AchievementMinionInvis','AchievementAEHeal'},
        },

Which select from anklet of speed, blood of the fallen, cloak of night, or blood soaked wand. Entered the last two as a test to verify the randomness was working.

If a favorItems list is not set in the build i have it hard coded to amulet of teleport, but i might have it randomly select between anklet, blood,  and another strong favor item?

 

 

Reply #54 Top

 

.07

Oculus build added.

Custom favor items defined for each demigod build.  Most have just one item.  Oak minion has 2 (cloak of night and the ring of might or something).  Erebus may have 2 as well.

 

Oculus build:

SkillBuilds = {
        chain_blast = {
            'HOculusChainLightning01',    # 1
            'HOculusBlastOff01',         # 2
            'HOculusKing01',             # 3
            'HOculusChainLightning02',     # 4
            'HOculusBlastOff02',        # 5
            'HOculusKing02',            # 6
            'HOculusChainLightning03',     # 7
            'HOculusBlastOff03',        # 8
            'HOculusKing03',            # 9
            'HOculusChainLightning04',    # 10
            'HOculusBlastOff04',          # 11
            'HOculusLightningBlast01',  # 12
            'HOculusLightningBlast02',     # 13
            'HOculusLightningBlast03',    # 14
            'HOculusElectrocution',     # 15
            'GeneralStatsBuff01',       # 16
            'GeneralStatsBuff02',       # 17
            'GeneralStatsBuff03',         # 18
            'GeneralStatsBuff04',       # 19
            'GeneralStatsBuff05',        # 20
            FavorItems = {'AchievementHealth'},
        },
    },

 

So far watching the AI play, Sedna is the strongest.  She tends to have the best kill/death ratio. 

Rook AI seems the worst as he never leaves enough time to retreat.  Toward the endgame he is usaully strong and if he stays near sedna its trouble.  I am wondering if I should change his favor item to anklet of speed from blood of the fallen, and then also up movement speed items in his priority to see if he can retreat faster.  Anyone play him and have a comment?

Reply #55 Top

Peppe -- This is great work.  I'll try to do some play-testing tonight.

My input on Rook:

If it's a slam build (which it looks like you have now), give him the Anklet for better escape ability - or maybe Dark Crimson Vial, which is now a more viable favor item after 1.2.  Is the AI good at knowing when to pop health potions?  Because that's basically what the vial is.

If it's a tower build (and I don't know how well the AI does this - probably not well), then Staff of Renewal is pretty awesome.

 

 

Reply #56 Top

 

One other thing i am pondering is if it will be worth the effort to support items by build.   Item chioces are a critical aspect of the game and it seems like items by build will make the most sense.

Built into the game there is a global item priority and a demigod item priority.  The two are summed to get the final priority for an item to be purchased by a given demigod.

Thier skill chioces have little modifiers that increase or decrease items based on thier stats, so one AI might get banded armor and another scale armor.

I have used the demigod level bonus on the oculus to have it buy minions more often than the other generals as he will get a bonus from them.   Thinking about it more though this will only be good for oculus builds that use his king of minitours skill.  

I am noticing the same is true for the auto attack regulus build i put in.  The nightmare AI stayed at max mana almost the whole game, so never had a use for the favor item blade of the serpant.  This build does not need mana items, but other reg builds will.

 

I think I will have to move the demigod level item priority bonus to be at the build level.

 

Reply #57 Top

Peppe - my appologies if you've already addressed this, but is the AI behaving any better when > 1 AI is enabled?  I don't want to retest if you haven't made any changes to address the problems since .05 (the last version I tested).  Thanks. 

Reply #58 Top

 

pacov, I believe i have made changes worth testing.  There is a lot of randomness built into the AI's goals and decisions.  I test each build nightmare AI's 4v4. I usaully watch the replay as one of the AI's and look for hinky behaviours, but it is easy to miss a buy/sell loop. 

Anyway on the not buying items it seems occassionaly one of those 8 will not buy anything at the start.   That one instead goes straight for a middle flag.  After the first engagement at that flag they usually return to base and gear up.   I have not touched the AI goals/action templates yet as they really should be in shadow folders, but i may make the same hack i did for the AI builds templates, so we can start editing those.

 

I've tried to address the selling loop, but verified it affects the unmodded game as well.   To address this in my mod i have reduced the number of potions it considers and the general competition for the consumables slots.  In the .04/.05 version i thought a sellpriority of 0 would block selling of that item and fix the issue, but 0 does not do that.  Now, I have tried to set selling priorites that will reduce the likelyhood of a sell buy sell buy loop based on my understanding of the logic/functions in that section of the code.  


Items by build is now in and replaces items by demigod.  Wasn't as bad as i thought and should allow much more build + item synchronization.  Sp for example, we can now have an OAK minion build with minion armors and a oak assassin build that avoids minion armors.

Reply #59 Top

I'll test as soon as i get a chance. 

Your efforts are karma worthy IMO.  k1   from me.  Thanks!

Reply #60 Top

probably the best way to stop the buy/sell loop is to modify the code that processes the priorities so that it won't even consider selling something it has bought in the last X minutes.  Hopefully once that is coded and it can't sell the thing it just bought, it will value the other items it owns more than that next flag-lock.

If you aren't sure how to code that, point me at the file that does the buying/selling and I'll code it for you.  Also what might be nice is if the buy/sell code used some LOG() statements to log when it was buying or selling something.  It would then be easy to look at the log after the battle and if you see a bunch of BUY/SELL from the same player all with timestamps close to each other you'd know something was still wrong.  Probably easier than trying to watch each AI in replay.

And I don't know if you can do it from the sim code, but if the AI could send out chat messages then you could just watch the chat as you play to see what the AI is up to.  Kinda tricky though to keep the AI from just spamming chat so fast you can't read it...

Reply #61 Top

Is there any way to prevent the AI when it Locks a flag for no reason?

Maybe make it so that it only locks critical flags, like the portals, and only end game.

A lot of Skirmish games i have played the AI locks our gold mine right from the start.

Any way to do this?

Reply #62 Top

@morpheas

Flag locking is going to be in: \lua\sim\AI\Heroes\Actions\UseItemsActions.lua

Only problem there is they are in HeroAIActionTemplate tables.  The core version of the file loads each of these templates and then if you have a hooked version all your version fail to be added to the table becuase the name already exists.  So template files like this should be shadowed.  Shadowing does not work yet.

For the hero AI templates I found the useful functions that called the templates and appended my custom name for the templates on the end.  Actions are used/referenced in so many places not sure if it can be narrowed down to one or two places to mod, but i could definatley use another set of eyes on this.

 

There is a similiar file in that folder to handler achievement item use, which will be good to mod in the future, but is templated the same way.

 

@bman

Definatley need another pair of eyes on this.  Not sure what is the best solution as you want the AI to upgrade items.  Maybe it shouldn't upgrade an item unless its past a threshold of priority say 5.  Then i could put all the consumables in at a level where they will get purchased ~10, and the permanant consumables (wands/orbs) could get a priority of 15 so they could replace a potion if its out of slots, but not be replaced by one.  If all the potions/scrolls are ranked 10 it won't sell/buy loop them as they arn't +5 higher.

If you do a timer i fear it may end up selling something more valueable as the lowest item may be the most recently purchased one.  Like it may have banded armor (priority 10) and nimoth plate (20) and full inventory of higher priority items.  What cuases the cycling is it may have another priority 10 item that it thinks will be more useful, so it decides to sell banded.  The priorities all go through a weighting function based on thier stats, so i think after selling and completing the buy it evaluates again and sees the banded stats will be better and cycles the items again until its out of cash.   This is not too hard to manage with items as each build may only need to pick from 5-7 normal items, where banded and scaled helm get replaced by item 6-7.  

With consumables it is a nightmare becuase it should be allowed to pick from 1 health, 1 mana, 1 rejuv, TP, lock, wand of speed, sigil, universal gadget, artifacts, and more?.  Thats at least 8 good items for 3 slots.   I think your timer function would be good here.  I remember following the functions for a while and saw it will not sell items if it has more than one of them.  I thought about just blocking all selling of the consumable slots.  If it frees one up through play it can fill it with a permanant on use item.

Right now i have tried to fix it through priority values of items, as it makes a ranked list of items to sell based on thier priority, or if a sell priority is defined that is used in its place.   I did see it cycle items one time when it had a lot of cash, so i have again reduced overlap at priority levels and reduced items it selects from (most potions out). 

There are logging functions and I have uncommented them and found in some files it works in others the comments mention a command line /fullai needs to be enabled for it to output that.   I tried adding that to the game shortcut, but it didn't get it to log the event.

All the selling is handled in: \lua\sim\AI\AIShopUtilities.lua

Starts at line 50: # Set up the sell routine.  There are 4 functions there, but they call functions that jump around that file and may jump to friendlyasset.lua in \AI\strategic\assets.

My only mods to aishoputil file so far have been in the citadel purchasing functions to allow a custom priority function similiar to the custom priority function item buying has.  The citadel section passed almost everything to friendlyasset.

Reply #63 Top

I had 2 UB AIs on my team with this mod. When walking to the flag at the beginning they both went to oppisite sides on cataract, but along the way they would go crazy at the same time. They kept stopping and walking back a little bit or something.

Reply #64 Top

 

@bman

found this in aishoputil.  I am going to switch from a percentage to a fixed amount and see if it helps.  line 628

            # Make sure the new item is better than the old item
            if sellItemData[itemData.ItemTable.InventoryType] then
                if sellItemData[itemData.ItemTable.InventoryType].SellItemPriority * 1.1 >= itemData.Priority then
                    continue
                end
            end

 

@shade

I never watched the regular AI closely to see if they did this, but i don't think i have modded anything to affect thier goals/pathing etc, so they should be just as bad or good as the base AI on that front for now.

Reply #65 Top

 

Initial game with this change looked very good.   AI went to the shop with a ton of cash filled up its consumable slot and went back to the fight.   Tweaking now to get TP and sigil priority, and allow the third spot to be somewhat random.

Reply #66 Top

Quoting Peppe, reply 65
 

Initial game with this change looked very good.   AI went to the shop with a ton of cash filled up its consumable slot and went back to the fight.   Tweaking now to get TP and sigil priority, and allow the third spot to be somewhat random.

Glad to hear it!  Also glad to read that bman is willing to help out as needed.  Good stuff!

Reply #67 Top

 

.08 is up.  updating first thread now.

Consumable item sell/buy cycling fixed *crosses fingers

Every build given a custom item set 7-8 items deep.   If a game ever goes very deep they should expand on these with a common set of artifacts.  Some have priorities on artifacts to lean toward certain items.

 

Assassins vs generals (4v4) was a dominant win by the assassins.

Reply #68 Top

im really looking forward to play this mod tonight  :D

Reply #69 Top

Peppe,

Got a quick chance to test your mod. Haven't been able to look at the whole replay, but it was a dominating win by generals(4v4 on Zikurat), with LE tearing shit up(12 kills compared to hext highest of 5). But to start all of the AI's got teleport scrolls and sigils rather then items. The generals still got bishops, but none of them got helms or armor.

Reply #71 Top

I put a health min back on sigil, so it should be out of most early game purchases at most difficulty levels. I think nightmare could get to 4000 health at level 1, so some AI's may buy it.

 

I did a series of test games and if they are not rushing a flag most start banded armor + TP 1-2 + 0-1 potion.  Normal AI with 1000 cash start.

Reply #72 Top

I had another thought on the selling loop. 

 

The default values on some potions around 1-5 depending on how many the AI has:

    # Robust Health Potion
    # Use: Heal 3000 health.
    Item_Large_Health_Potion = {
        MaxPurchase = 1,
        SellPriority = 3,
        PriorityFunction = function(unit, itemCount)
            if unit:GetMaxHealth() < 3000 then
                return 0
            end
           
            if itemCount == 0 then
                return 4.5
            elseif itemCount == 1 then
                return 3
            else
                return 1
            end
        end,
    },

 

The sell threshold by default was 10% of the current priority.  For most consumables the default setting dropped the priority more than 10% if it had one of the item.  

With one slot open if it chose between two different potions both at 4.5 priority when it has zero.  It buys one and the one it bought drops to priority 3.  Now to replace it with another potion the new potion just has to be 3*1.1 = 3.3 or higher priority.  Since the other potion is also 4.5 it sells the old potion and buys the new.  It would then flip flop until it is out of money.

 

.08 version might sell the normal potion for a robust version, as the normal potion has 0 priority once it has one.  The normal potion also becomes 0 priority once the hero goes over 3000 max health (it switches to robusts from then on).

In general the .08 fix looks good.  The new item has to be 5 priority higher than the current item and all consumables that are useful were set to 10-11 priority and other than normal potions the priority was not reduced when it has 1 of them.  The AI should keep all its consumables until it uses them or decides it wants a wand or artifact.

 

+1 Loading…
Reply #73 Top

Skirmish mod version:  .08
Map:  cataract
Players:  Human(pacov) v 2 AI (oak + qot)
AI settings:  nightmare difficulty, high hp, normal gold
Game settings: fast

Observations:

Oak AI - chose penitence 1 as level 1 skill.  Ai has 4400 gold on nightmare.  AI chose not to buy any items.  Ai chose ring of divine might for favor.  Oak has some major issues and did not purchase item or citadel upgrades at all.  The rest of this analysis will focus on QoT.

QoT AI - chose bramble shield 1 as level 1 skill.  qot bought bishops + banded armor + scaled helm + 1 TP scroll (started with about 4400 gold due to nightmare).  Chose cloak of night as favor item.  At level 2, AI chose ground spikes 1 as skill.  At level 3, AI saved the skill point.  At level 3, AI died.  Was back to base for 1400 gold.  Sold TP scroll and bought nimoth (smart move imo).  BUT, then AI waited at the shop until it could buy another tp scroll and a mana potion (not so smart).  AI hit level 4 and chose bramble shield 2 + ground spikes 2 (this is a decent human build, but probably crap for the ai as it requires changing forms back and forth to maximize it).  At level 5, ai buys spike wave.  I kill QoT again.  Qot respawns at 4:55 seconds.  QoT buys tower regen (ai is now at warscore 2).  I kill qot again.  Qot respawns, starts getting carried away with consumables.  Doesn't do the buy/sell thing, but bought 3 tp scrolls and 3 sigils instead of any more armor, etc.  Qot saves skill point at level 6.  At level 7, qot upgrades branble shield 3 and ground spikes 3.  Qot did purchase currency 1 at level 3 when it went back to base.

Another thought about the build you chose to go with for QoT.  I watched the ai.  The ai NEVER changed forms, so it never was able to use bramble shield a single time.  If that is the AI's behavior, the build should be changed to not purchase ANY skills that only work in closed form. 

All in all, great improvements.  You obviously can load in custom AI ability builds.  Both AI's builds appeared to work correctly regarding saving an ability point when required.  In all of my testing, 1 AI has always appeared to "work" mostly right, while the other goes HORRIBLY wrong.  In this test, the oak didn't buy any items or citadel upgrades ever making him considerably weaker than me.   

Reply #74 Top

Skirmish mod version:  .08
Map:  Zikurat
Players:  4 AI assissins(no DA) + 1 human(not active) v 4 AI Generals(No Oc)
AI settings:  nightmare difficulty
Game settings: all normal

Something must have been wrong in the replay when I first played it, because on my second time watching it all the demigod's did get armor and helms. I thought it was weird the Reg was out of money even though it only purchased 2 TP scrolls.

Also, I was playing on nightmare and put myself on the Assassin side, which results in the generals getting 4k starting gold instead of 1k the Assassins got(since I was on thier team, even though I did nothing). I think that might have led to the overwhelming win by the Generals.

Further notes:

AI's still take stolls through the enemy base and dont do much.

Oak got a flag lock right at the start for some reason.

Rook bought Journeyman's Trend's within 5 mins - thought that was interesting.

Assassin's had thier gold flag taken around 6:30 and didn't attempt to take it back until about the 10 min mark.

Sedna had Velmish, Plenor, and Hungarian at the same time about 10 mins in. Kept them the rest of the game even after getting Cloak of the Night artiface.

Demigod Replay doesn't like a lot of alt-tabbing(more of a personal note ;D)

EDIT: Confirm Pacov's observation that QoT doesn't change forms much and under utilizes Bramble Shield. She used it some, but not a lot.

EDIT2: I'm stealing Pacov's header.

Reply #75 Top

With nightmare i think teamates start with the same cash they would as enemies. 

 

Thanks both for the testing it is a very time consuming task and hard for me to code and do detailed play testing.

I havn't closely monitored how the AI uses the skill, but QoT and TB both need to change forms a lot.  The builds i picked for them use both sides of thier trees.  I've never played either, so wasn't able to tell if they switched less often than a player would. With that I can add builds for each that focus on one side of thier tree to help keep the AI focused.   If the current builds are too terrible i can scrap them as well. 

Looks like some good guides for TB fire or ICE builds, but not seeing much on QoT. 

 

Sedna does not have any artifact preferences, so she will take any I have activated (disabled a couple crappy ones) that she can afford.  I can give a minor bonus to any one artifact to try and get her to pick one.   She is a little short on her buy plan any suggestions for more items?

She has in this order:

Boots of Speed, Gauntlets of Brutality, Scaled Helm, Banded Armor, Unbreakable Boots, Nimoth Chest Armor, Plenor Battlecrown, Hungarling's Crown, and Vlemish Faceguard.

When she shops she buys the highest item in that list she can afford, so usually buys vlemish first, some consumables, and Nimoth/Plenor .  Late game when she is rich artificats have the highest priority, so will bump more off the bottom.  When all slots are full, items in the first part of the list are sold first.  The bulk of the game she should have a mix of the last 5-6 items.   I put her mana heavy figuring she could heal as needed.  Let me know if we should tweak the items a little.

 

Pacov, did your oak not buy anything ever or just at the start?  

I think oaks priorities are on minion damage items.   When i start up a nightmare game with him he almost always gets bishops and gladiator gloves and heads out.  With his items i focused on minion stuff, but if he would be more effective we can drop those for other items.

His item list is:

boots of speed, gladiator gloves, Nimoth, vlemish, gloves of fell-darkur

Artifact priorities:

heart of life, mage slayer, girdle of giants, ashkandor

Since HoL and mage slayer have the same price he should always buy mage first since it is higher in his list.

 

For the QoT nimoth shopping, it is interesting that she used item sell to afford the armor.  Sad that she waited around to buy a TP scroll, but not much i can do to that.  I think that is a goal based thing to keep shopping instead go out flag capping or killing.  For the overload of TP scrolls and Sigils I think i have a fix in for that to lower the priority slightly after each one is purchased, so for TP it goes 11, 10, 9 and sigil is now (11, 9, 8).  Most potions are 10, 10, 8.  This should result in them carrying 1-2 TP scrolls. 1 Sigil. 1-2 potions.   If they are flush with cash they may buy some of the things at 8 priority, but hopefully not much.  If needed i can cut buying a third item completely without them going into a crazy sell/buy loop.

 

On citadel upgrades.  I have seen them share upgrades within the team, but most often it is just one AI that handles it.