Skip to content

Bugs

24 Comments on Bugs

Feel free to use the comment form below to submit your bugs, however we strongly recommend writing an issue report on the appropriate git repository issue tracker:

If you don’t know which one to choose, just submit a report on the first link. By submitting a report above, you make it a lot easier for us to track and delegate issues that needs to be fixed, thank you. Bugfixes will not as a rule be reported on the home page, unless they’re important/noteworthy/funny.

24 Comments

Repeated keys are stored and sent as subsequent keys by bash/terminal; ultimately, crashing the terminal.

Status: Still unsolved.
I have specified a fight_prompt variable that the (R)oll prompt reads into. It may alleviate but not solve this problem, since I suspect it has more to do with bash storing the repeated keys and sending them sequentially rather than anything I did wrong.

I need to wait for 1 key only, so the next thing to try here is to make a function (pseudo code):

while -z $fight_prompt ; do
busy wait
done

which will be called when the loop is waiting for input.. But that still doesn’t escape any additional stored keys. To socially maneuver this problem instead, I have changed the text during fights to read: Press the R key to (R)oll… instead of any key.

Various bugfixes pre-release:
Code purification (following BASH best practices).
I have swapped all `backticks` with $(encapsulation) and all expr calls have been substituted with echo.
Fixed bug where enemy could flee even if he has negative health..
Fixed bug where player could fight after resurrection even if enemy health was 0.
The game is ready for release!

This was initially going to be a longer and more detailed post praising the good points and detailing issues with your game. But it got lost. It seems your website’s policy is to immediately impose an IP ban if something looks like spam. “I will look at bug reports ASAP” indeed… “unless my bot doesn’t like it in which case I won’t even let you read my site”.

However, out of respect for someone who could write a fairly interesting game in pure Bash, here’s a summary:

* The unlimited healing exploit. By resting anywhere except at home you can get more than 100 HP. I see that the DISABLE_CHEATS variable can change this, but firstly, why does it work so strange (allowing up to 149 HP but then resetting to 100 if you get >150) and why is it not set to 1 by default?

* Exiting during battle. If a battle seems hopeless, you can just press Ctrl + C and exit, then reload and voila, you’re no longer in a battle.

* Game rolls for events every time you load. That doesn’t make much sense. If I’ve just loaded a game, I couldn’t have moved yet, so why does it roll for an encounter?

* If the only thing we can do during battles is press “R”, why not make them entirely automatic?

* Fleeing enemies. Just… it can run away, even though I can’t? And it halves the XP I get?..

* But I don’t even feel bad for exploiting the first two bugs because the way the game works right now, it’s but a complex Russian roulette. You don’t make any progress by earning EXP until you get 1000 at which point you get one single new ability of questionable usefulness and that’s it. The only way to make progress is to look for randomly distributed items (which you can’t even see until you get the first one), which means searching forests and mountains. Filled with orcs and other stuff that you just cannot kill. They find you – you’re dead. And even in towns and the castle you can get attacked – by even more powerful enemies.

* The code is sometimes repetitive and although clear and well-commented, making large edits may be hard, some things are hardcoded when they shouldn’t be. For example, to add a new enemy one would have to edit about 5 different places. Making a custom map is easy but making a custom map with a different starting point would require a change to the script itself and making a custom map of a different size would require an even larger change to the script.

Sorry about the trouble you had with the site, it might be a limit on comment length or something in WP, but since it is relatively new to me I am not sure. I will look into it ASAP!

I saw your comments and thank you for taking the time to write me! Just attaining that level of detail means you have spent time with it, which is more than praise enough. You will be happy to learn that I have made a lot of changes from feedback from various people, so I am very grateful for everything! Here are some of my reactions:

Unlimited HP by Resting. (Sort of FIXED)
I have had several editions of Biamin where this wasn’t implemented the way it is here, but let me explain my reasoning behind I left it as is. This is supposed to be a game you can play hop-on-hop-off AND other times at length; so I need to cater to both styles. When I play Biamin, I simply don’t care about standing there Resting to regain HP, though regaining them sometimes is a must for survival. But you are correct that this could quickly be taken as an exploit.

That’s why I added a risk of getting attacked while Resting, so that it isn’t a simple exploit, but actually costs something in the long run (house wins). I have upped the percentages of getting attacked while resting, because this would make it less of an exploit. Though the dice + race characteristics decide in the end. This mean it could be connected to the Rest-strong races (Elf and Hobbit are better sleepers). FIXED

I totally agree the DISABLE_CHEATS is a random half-measure, but that was very ad hoc and last minute. The current version checks for 150 and anything above is set to 150. This means that cheating is still possible, but I want it to be possible.

Exiting during battle (FIXED)
So I can’t break the function of CTRL+C but instead I have added a PENALTY for CTRL+Chickening out during battle: -20 HP -20 EXP. If your character then has 0 or negative health you cannot load him/her again.

Rolling after loading (FIXED)
Changed so you don’t roll if it is starting a new or saved game. Thx!

Entirely automating the fighting would detract from its value, methinks.
Perhaps more actions (R) or (F) for flee would be a compromise? (TODO)

Enemy flee
The current version has an enemy flee threshold, which means that they can only _roll_ for flee IF their health is less than yours AND below a threshold specific to the enemy (bandits will flee more easily than orcs).

The 1000 EXP “prize” was not well planned.
I have thought about adding a quest mode, or random dungeons (with dungeon maps), but this is further down the road. Any ideas are appreciated!!

CODE comments
I have had many good suggestions on the code, and I’ve started by making it as POSIX compliant as possible. In the beginning, I hadn’t thought of anyone else than BASH users playing, but if people on OSX can play it, that would be cool too. This is somewhat limited by my lack in coding skills.. :)

I have begun work on a sequel, which is a similar game, but really takes advantages of thrown variables to functions (which I didn’t even know about when I did this code). I will not re-write the code or “mechanics” for this game, but I will release a better, more modular code for the sequel. If that works out, I can “port” Biamin to that engine.

The starting place feedback is interesting. I have added a TODO in the code for adding a custom starting position. This can be done by either adding a line in the information stored in the charsheets for new heroes and simply use C2 as the default if the user doesn’t enter anything else OR by simply adding an optional CL argument. This is actually not such a bad idea to enable the user to do what s/he wants without even looking at the code..! (TODO)

The reason you cannot use a different size is that the math I used here is all hardcoded, correct. The reason is because it was the first times I really used some of this functionality, and I simply _needed_ it to be as easy as possible to picture in my head:) Simple soul.

Thank you VERY much for your insightful comments, I really appreciate it! And thanks for playing:D

I discovered that version 1.3 has a bug on some system where the color configuration setup just loops.

To work-around this until a higher version is announced, please just create a file in $GAMEDIR called color with a single line containing either ENABLE or DISABLE. Cheers!


DOWNLOAD a tarball using wget
wget https://gitorious.org/back-in-a-minute/code/archive/cd4d3709cbaeec6fdf90f328c137a3c43b7f5715.tar.gz
tar xvf 1424e4e9302603515807104af95f169640c98211.tar.gz -> mistake here
cd back-in-a-minute-code
chmod +x biamin.sh
./biamin.sh

Just a little nothing…
Thanks

Thanks for picking that up!

I’m going to fix it right away and rewrite it asap:)
We have an “archive” folder which doesn’t change URL so often.

You’re welcome!

I had test the game a little bit and i’m enjoying it !
I’m now reading at the code source as I like bash coding.
Who knows? I might give a little help or at least some suggestions.

What i was wondering is why do you use an unique file ?
Having a special “sourceable”gfx file may be an idea.

Thanks for your work and sharing!

Hi!
Did you mean use
. gfx-file
or something else?
#kstn

You mean for the “graphical sprites” ?

That’s perhaps something worth considering. In the beginning I wanted to keep it all in 1 file. Then I created a charsheet, then I created a highschore and a config file. Then custom maps.. There’s no real reason to keep it in now with the flurry of files.

On the other hand, there is no real reason to pull it out of the main script either. Or perhaps you have some good arguments ready? :)

In batles, Acurrancy has a bug.
I’m fighting with a bear, but he nevers attack.

I’m see rolling, and i found, that:
1 < 1
Bear misses

Cheers, the fightloop currently has a lot of these type of bugs.
It probably has to do with the double-functioned Roll_Dice() functions.

I’m referring people to 1.4 Legacy until version 2.0, because I’m playtesting whenever I have a chance, trying to eliminate bugs :)
Unfortunately, I’m swamped in other stuff atm.. But we’ll get there!

Leave a Reply

Your email address will not be published. Required fields are marked *