The Icemark was indeed a changed place

An interesting thing came from fixing the battle code in Doomdark’s Revenge, it highlighted a bug that is in the original code, that I can’t tell if ever caused an outward problem.

It is all to do with loyalty.

Loyalty in DDR is about race. Which race are you loyal to: Giants, Dwarves, Hearstealer, Moonprince… etc. When a lord recruits another lord, they become their liege and the new vassal becomes loyal to the same loyalty race.

When a AI lord moves in to a location, they check the loyalty of any lords present and if there is a difference in loyalty, they may attempt to recruit.

The problem is – if a lord who has vassals is recruited the loyalty of the vassals does not change, but the loyalty of the lord does. The liege of the vassals does not change either. So these lords have a liege of a lord who is not loyal to the same race as them. And they will potentially attempt to follow them or follow the same instructions. Even though they are technically the enemy.

Should the vassals ever find themselves in the same location as their liege, they are no longer the same loyalty so they will attempt to recruit them. In this instance the, the vassals becomes the liege of their liege, but their own liege does not change. Confused yet?

What we have here, is circular lieges.

Example:

Glormeon the Giant’s liege is Imagrorn the Giant, and Imagrorn’s liege is Varagrim. But let’s say Imagrorn is recruited by Carormand the Barbarian, then Imagorn’s liege is now Carormand, and his loyalty is to the Barbarians. But Glormeon’s liege is still Imagrorn, however his loyalty is still to the Giants.

The first problem here is that these two lords now see themselves as enemies or potential recruits. So they could fight or recruit. But also Glormeon will follow orders of Imagrorn even though they are enemies. Which may be tracking him down or following his enemies, or liege… and should Glormeon enter a location with Imagrorn he may attempt to recruit them. If this is successful then Glormeon’s liege would be Imagrorn and Imagrorn’s liege would be Glormeon.

In the original this situation would occur. Which I think really just messes with the AI. But in the remake, I traverse the liege tree to work out who is the overall lord in charge, and if we have a circular liege then the game crashes!

So the question is – how to fix.

So I remove the liege traversal and allow the original messy AI or do I break the liege link as soon as recruitment happens… ie: When Imagrorn is recruited and his liege changes to Carormand, then Glormeon’s new liege becomes Varagrim. Or should Glormeon remain loyal to Imagrorn and change his race loyalty to the Barbarians?

As a bug fix the first seems the quickest and keeps the gameplay the same. The other two options the potentially becomes gameplay rules.

This also doesn’t take in to account that the human player, ultimately The Moonprince, may be the loyalty race of some of these lords.

I am tracking the bug here on the GitHub repos for anyone interested.

11 thoughts on “The Icemark was indeed a changed place

  1. Ha ha, this is great 🙂 IMO you should implement the ‘bug’ (feature?) so as not to change gameplay.

    There were a number of these issues though. As both liege and foe move up the chain when there are deaths, it wasn’t unusual to see characters with liege and foe THE SAME! Happens easily with Kahudrarg the Barbarian, who would be both liege and foe to Luxor if you recruit Imgorad who is then killed.

    Sometimes, for a laugh, I would stay and quickly recruit a handful of senior lords (say, Imorthorn, Imgorad, Thigrak), them get them killed, then stuff Luxor, Tarithel, Rorthron into tunnels for maybe 30 turns, and then emerge to see what had happened. Among the wreckage of huge battles above the tunnel, there would usually be weird cases, eg X the Dwarf who is loyal to the fey, whose liege is Tarithel and foe is Luxor!

    • I think the safest thing is to fix my crash bug – removing the liege traversal. The other options now become possible options for gameplay rules.

  2. Is there as scope for a faction leaders? So for example if Glormeon is recruited then Imagron switches to the faction leader? The leader could be ‘mobile’ by rank so it could switch down per character if they get picked up by another leader? For exmaple the Barbarians could have:

    Imgord
    Caramond
    Loranglaron (sp)

    In the leader list, but could go all the way down to Torinarg if all the high ranking lords are picked up?

    Sounds like a bit of messy code with a “huh, works anyway” shrug of the shoulders 😀

  3. I must have 10,000 hours playing DDR but I’m totally lost with this.

  4. This was a big part of strategic gameplay for me in the original, at its most basic when it came to derailing the Icelord invasion – try and recruit a couple of senior Icelords then have them run away, half their vassals would peel off the main invasion force and follow the liege to where they could be ambushed and dealt with piecemeal. It does cause glitches though, I do remember coming across two dwarfs who were each other’s lieges and seemed to be frozen in one location incapable of making any decision 🙂

    IMO the Barbarian and Fey Civil Wars in the early game are generally the most tense and exciting part of the DDR campaign so I’d be wary of doing anything that might dramatically alter that gameplay

    • I think the safest thing is to fix my crash bug – removing the liege traversal. The other options now become possible options for gameplay rules.

  5. I don’t remember this happening with the remakes, but when I played on the C-64 it happened in almost every save. After around 30 days, there would be pairs of Lords roaming around, each the liege of the other, and basically impossible to split. Imgorad/Firak was one annoying pair, as was Varangrim/Carangrane.

  6. If you change the loyalty, does this not risk a massive gameplay change? Recruit Imorthorn, won’t all the Fey then switch loyalty to the Moonprince? Breaking the liege link seems more sensible, rerouting the vassal to the next liege up the chain.

    As another option, can you simply make vassals recruiting their liege an automatic failure? This will change gameplay, but hopefully only in a very small way.

    • I think the safest thing is to fix my crash bug – removing the liege traversal. The other options now become possible options for gameplay rules.

Comments are closed.