Onto Battle()

Week 54 is over. Last week the Unit Designer got finished, tons of supporting forms were tweaked, fixed and corrected to work with the new units, and I’ve started tackling the Battle() changes.

Unit Design Change Overview

Let’s do a recap of the relevant changes last week. Starting with the Unit Designer:

Much has been said about this already, so no need to repeat myself. Once you create templates you can craft units:

If a unit has a clear upgrade path from one design to another, it will automatically be available. So, upgrading your Un`Haadars into Un`Haadar Ka or Un`Haaduns is possible, but morphing existing burrowers back into melee is not possible.

Once you have the units, transfer them at will:

Avatar/throne/monolith display space is at premium and will show only the relevant info:

With the client changes complete, other work was focused on all the required Ticker changes; from throne unit increase on tick, over changes to spells (such as Weakling’s Bane) to a ton on minor tweaks and changes wherever the number “16” was hard-coded. The last major change that is required is the Battle() itself.


Unlike Entity.Zlo’s Combat Sim, Dominance Battle was written “organically”. For example, stuff like “Are you a burrowing unit? Then check for Berserker status.” is common. Of course, a solid refactoring is required, but hopefully it’s not too much work. Otherwise, the new additions are rather simple – longbowmen, for example, are identical to ranged with just a couple IF statements making all the difference. Ambushers are even simpler – their inherent bonuses are recorded at army load time and stay constant. Even mounted units behave similar to assassins but with altered enemy stack attack order. Despised might be a bit tricky as (again, unlike Entity.Zlo) I do not track individual stack statuses so precisely.

So, all is well, and this update is well on track. See you next week with more news!