The Banner Saga

The Banner Saga

View Stats:
 This topic has been pinned, so it's probably important
Whiskey Jan 12, 2014 @ 9:03pm
The official BUG THREAD for The Banner Saga
Post here if you have a bug for the devs.

The Banner Saga is a fairly large and complex game with lots of branching variables. We tested as much as humanly possible for a small team, but inevitably there may be bugs. We don't expect tons, but if you run across something and would like to notify us, please post any issues you find here so we can easily keep track of them in a single thread, and we'll address them in the next patch.

If you run across an uncommon problem that is hard to reproduce, please include the steps you took before the bug occurred. Thank you very much and may your experience be bug-free!
< >
Showing 871-885 of 1,227 comments
Nafeij Dec 19, 2016 @ 1:57am 
As of the last patch, Nid got her rank increased to 2, but didn't get +2 to stat points
Giopeppe Dec 19, 2016 @ 5:42am 
Originally posted by Nafeij:
As of the last patch, Nid got her rank increased to 2, but didn't get +2 to stat points

Now i know what was that strange feeling about, after she showed up!
Gestaltzerfall Dec 20, 2016 @ 5:13pm 
Originally posted by Gestaltzerfall:
I've digged a litte bit into this bug...
Meadhouse battle seems ideal to reproduce this, cause there are lot of raiders.

It seems there are some prerequesites to cause this bug(shieldwall bonuses from line-up phase does not count):
1. your active raider(raider1) has atleast one adjacent raider(raider2)
2. the adjacent raider(raider2) was moved next to your active raider(raider1) since your last turn
3. move your active raider(raider1) next to a raider(raider3) who is not adjacent to you

Under normal circumstances raider1 should loose 2 armor from raider2 and gain two armor from raider3. But he looses only one armor.
It could also happen that raider2 looses only 1 armor, if he does a similar action on his turn.
It's also possible that raider1 gains more armor, when a second or third raider is adjacent to him at the beginning of his turn.

It seems that shieldwall bonus is not replaced correctly.
There is no clear hint if it's abl_shieldwall_bonus_self or abl_shieldwall_bonus.
If I had to guess... I think abl_shieldwall_bonus works not correctly when its applied more than one time a turn by the same unit.


I've stepped further into this bug.
Just editing abilities/effects in config files seemed not to lead to a solution...
So the bug must be in business logic.

I've decompiled 'app.game-saga1.air.swf' and I think the bug can be found in class 'engine.battle.ability.effect.op.model.Op_Aura'.

In function 'checkOther(param1:IBattleEntity) : void'
the stat bonus of an self attached ability(_loc4_) is not removed by guarantee.
Unfornately the game threw errors if tried to change other classes like 'engine.battle.ability.model.BattleAbility', 'engine.battle.ability.effect.model.Effect' or 'engine.stat.model.Stat'.
I'm not that handy with Flash and ActionScript, so i only could test a workarround...
If the armor bonus of shieldwall_self ability was not removed, i removed the StatType.ARMOR by 1.

I played arround 70 turns in Meadhouse and it looked quite fine.
Will test more tomorrow...

Hope this information help to find the cause of the bug and can lead into a hotfix.

Edit: Can also occur on stat bonus from other units(_loc3_). Lowering StatType.ARMOR by 1, if not applied by removing the effect looks fine.


Edit2: This just refers to armor gained shieldwall_bonus.
The bug that your armor breaking attacks will make no more armor damage, even if the target has enough armor, is unaffected.
Last edited by Gestaltzerfall; Dec 20, 2016 @ 6:26pm
Aleonymous Dec 21, 2016 @ 12:27am 
Wow, great progress there, Gestalt! I am sure the devs know exactly where to look for this bug :steammocking: Did you use JPEXS? I was always intrigued by peeking into the "hard coded" battle-engine files (as opposed to the JSON data files), but I also stumbled about the problem of not being able to appropriately "re-compile" them, so I kinda quit. My quest at the time was trying to force a "regular" turn-order...
Giopeppe Dec 21, 2016 @ 11:19am 
Good catch! Opened that file myself but didn't noticed it. Have you compared it with the 2.32.school branch, pre balance update that seemed unaffected by the bug? It could give more than an hint!
Gestaltzerfall Dec 21, 2016 @ 11:22am 
Originally posted by Aleonymous:
Wow, great progress there, Gestalt! I am sure the devs know exactly where to look for this bug :steammocking: Did you use JPEXS? I was always intrigued by peeking into the "hard coded" battle-engine files (as opposed to the JSON data files), but I also stumbled about the problem of not being able to appropriately "re-compile" them, so I kinda quit. My quest at the time was trying to force a "regular" turn-order...

Yeah, thats the tool I use.

The bug also occurs when killing an enemy. The stat bonus from 'abl_shieldwall_bonus' given by the killed enemy is not removed by guarantee.
Technically the same behaviour as mentioned above.
My current workarround is to check all units active effects and remove all effects given by the actual killed enemy. But thats quite ugly and i really want to shower when I think on it.

I guess the problem has something to do with incorrect processing of EffectPhases and EventListeners.
Gestaltzerfall Dec 21, 2016 @ 11:25am 
Originally posted by Giopeppe:
Good catch! Opened that file myself but didn't noticed it. Have you compared it with the 2.32.school branch, pre balance update that seemed unaffected by the bug? It could give more than an hint!

How can I get access to older branches?
Giopeppe Dec 21, 2016 @ 11:43am 
I manually made a backup but don't have access to it for at least a week, damn! Anyway no change in abilities jsons, that was why I searched saga1.air.set with specs too!
I have a feeling, since I didn't remember it happening during theday survival beta/release branch, it could be something introduced with the latest saga2 localization update and then ported to saga1 too. If you look at the changelog, the main culprit could be the change to runic gale and other statmods behaviours.
Giopeppe Dec 21, 2016 @ 11:46am 
Sorry for the typos, I am writing from a tablet and the bilingual keyboard autocompletion it's a real pain in the youknowwhat.
Aleonymous Dec 21, 2016 @ 1:51pm 
I suppose the shieldwall bonus should be a "temp stat", for all units, that is updated whenever one unit takes a step (free or forced moveent).
Gestaltzerfall Dec 21, 2016 @ 3:26pm 
Okay, I think Op_Aura was just a symptom...
Op_IntStatMod got my attention. This is the op which grants the adjacentarmorbonus from shieldwall.

If function 'removed' from Op_IntStatMod is called, it tries to remove all StatModifiers from the affected Stat.
There are some encapsulated function calls in Stat/StadMod to handle this correctly, but to say it short...
Inappropiate handling of vectors (I think this is the ActionScript equivalent of an array)!

The program functions Stat.annotateMods/StatMod.annotateMod will modify the first StatModificator that suits. The problem is that shieldwall can grant two statmodfiers 'abl_shieldwall_bonus' and 'abl_shieldwall_bonus_self'.

So.. if the program wants to modify 'abl_shieldwall_bonus' but the first StatModifier in that Vector is propably be 'abl_shieldwall_bonus_self'.
Then the wrong StadModifier is processed and if later 'abl_shieldwall_bonus_self' is to be next the StatModifier is already consumed.
So there should exist some further checks to guarantee consuming the correct StadModifier.

Edit: Typos
Last edited by Gestaltzerfall; Dec 21, 2016 @ 6:53pm
Giopeppe Dec 21, 2016 @ 11:08pm 
That makes sense and of course if the bonus it's not removed, it ends up in unbreakable armor, that sums up, since only base armor is breakable.
Gestaltzerfall Dec 22, 2016 @ 5:51am 
A descriptive example. I've added these logs to see what happens internally.

The raider has two friendly neighbours and got 2 'abl_shieldwall_bonus_self' effects.
One with Id 21 and another with Id 19.
So when the effect with Id 21 should be removed, the game processes mistakenly effect with Id 19.

[INFO] 2007 45773 ( ) Op_IntStatMod.remove Op [[21 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] DefOp [INT_STAT_MOD, adjacentarmorbonus] OK [action=abl_shieldwall_bonus_self eff=adjacentarmorbonus -> npc+3+thug_raider_b]] [INFO] 2007 45773 ( ) Op_IntStatMod.remove stat [npc+3+thug_raider_b ARMOR 6 (base 3, mod 3)] [DEBUG] 2007 45773 ( ) StatMod.internalConsume: [21 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] [DEBUG] 2007 45773 ( ) #### StatMod.annotateMod[19 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] [DEBUG] 2007 45773 ( ) #### StatMod.annotateMod ability true[19 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] [DEBUG] 2007 45773 ( ) #### StatMod.annotateMod param1: -1 [DEBUG] 2007 45773 ( ) #### StatMod.annotateMod amount: 1 [DEBUG] 2007 45773 ( ) #### StatMod.annotateMod new amount: 0 [INFO] 2007 45773 ( ) Op_IntStatMod.remove after stat [npc+3+thug_raider_b ARMOR 5 (base 3, mod 2)]

Later when effect with Id 19 should be removed, nothing happens cause it was already consumed earlier...
[INFO] 2511 56442 ( ) Op_IntStatMod.remove Op [[19 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] DefOp [INT_STAT_MOD, adjacentarmorbonus] OK [action=abl_shieldwall_bonus_self eff=adjacentarmorbonus -> npc+3+thug_raider_b]] [INFO] 2511 56442 ( ) Op_IntStatMod.remove stat [npc+3+thug_raider_b ARMOR 6 (base 3, mod 3)] [DEBUG] 2511 56442 ( ) StatMod.internalConsume: [19 npc+3+thug_raider_b->{npc+3+thug_raider_b} abl_shieldwall_bonus_self/1] [INFO] 2511 56442 ( ) Op_IntStatMod.remove after stat [npc+3+thug_raider_b ARMOR 6 (base 3, mod 3)]

Because of the complex call hierarchy, I think it's not possible to fix it in class StatMod.
StatMod.annotateMod is called from Stat.annotateMods.
A integrity check should be added to the while-loop in Stat.annotateMods.
Last edited by Gestaltzerfall; Dec 22, 2016 @ 5:52am
kal-el Dec 22, 2016 @ 8:45am 
After last update, my game starts, steam says that it is running(so I cant start it again), I can see the process taking about 30% of my processor, and a few dozens of mb from ram, but game window wont show. I'm runing it on linux. Also I cant see any related error message on terminal.

Is there anyone with the same issue or that dealt with the same issue?
Last edited by kal-el; Dec 22, 2016 @ 8:46am
Giopeppe Dec 22, 2016 @ 10:21am 
Yes, try using Linux branch from beta panel.
< >
Showing 871-885 of 1,227 comments
Per page: 15 30 50