Jump to content
  • Announcements

    • How to eat sound

      Logging in   05/10/2017

      If you had an account and can't log in as of 5/9/17, this may be because of a change in logins with new forum software. You can log in using your publicly displayed name (not your username) or your email address and the password you used before.   If you have problems with this, please ask any of the mods or admins. 
Sign in to follow this  
Kelandon

BoA BUGS v6.0

Recommended Posts

Kelandon   

The topic lives, despite flames and spamming on the previous incarnation ! For anyone unfamiliar with the concept, here are the ground rules:

 

1. Bugs should be real bugs. That means you should be able to give precise instructions about how to reproduce them. They are not features that you wish were included but aren't. They must be things that don't work as described (or really ought to be described differently).

 

2. They should not already be listed either in this post or on Spidweb\'s bugs page . We want new bugs, if they exist.

 

3. If you have any further information about a bug (it's been fixed, for example), post and say so. I have notes in parentheses after many bugs.

 

Known undocumented bugs/problems in Mac-BoA v1.1.2 or Win-BoA v1.0.3:

Scripting problems

* Items don't stack when given via char_give_item (so if you give three potions of the same kind, the character ends up with three different potions). This doesn't happen with reward_give or other item management calls as far as I know.

* Sometimes searchable terrain breaks. For certain terrain with the searchable and container attribute, they are only searchable if there is something inside the container. This means that the call te_can_look_at doesn't do a lot. Additionally, sometimes terrain becomes searchable for reasons that are obscure to me (custom hills, for instance). I can provide a scenario demonstrating this if needed.

* The call put_stain_on_space sometimes does nothing when attempting to remove a stain. This is a bit unpredictable, but most of the time that I've tried it, it does nothing. It also works fine putting a stain down, just not removing it.

* As described here , in a dialog box, choosing the second dialog choice always returns the number 2, even if the dialog choice was added as the third option.

* Custom scripts for joined NPCs don't do much. Everything except the DEAD_STATE is ignored. (Is this still true? Do any other states work?)

* The call num_killed_in_town always returns 0. (I have not verified this.)

* The call create_text_bubble cannot be called from a terrain script, even though the docs say that it can. (I have not verified this.)

* Something odd and undocumented is going on with the clear_town call. The description of the problem is here .

* The calls set_terrain, set_floor, and set_height only inconsistently work outdoors. They most often do nothing.

 

Corescendata and default graphic errors

* In corescendata, Augmented Giant (creature 135) ought to have the line "cr_which_sheet_upper = 1618;"

* The default rakshasa image needs realignment -- it has a black line on it.

* The slith avatar, in order to match Avernum 1, should not have the graphic of a gorgon, which is what it has now. Two calls need to be added: cr_which_sheet = 1532 and cr_icon_adjust = 2, as Bahssikava does.

* In corescendata2.txt Terrains #172 and #173 (fences) have an incorrect name. The line te_name = "Fence"; needs to be added to them.

* In corescendata2.txt Terrain #331 and #332 (underground hillside cave entrances) import the incorrect terrain. This causes problems with the automatic hills functionality of the editor. It will also cause the party to be drawn incorrectly when upon these terrains.

* In corescendata2.txt Terrain #367 (ruined statue) is missing the upper half. The lines te_second_icon = 1; and te_second_icon_offset_y = -55; need to be added to correct this.

* Graphics sheet 680, icon 52, is incorrectly drawn. It needs to be flipped horizontally to be correct.

* Graphics sheet 768, icon 8, has 3 off-white pixels.

* The efreet (creature 174) has cr_natural_armor defined twice, the first time as 15 and the second time as 50.

* The default Eyebeast graphic (1552) has its icons in the wrong order. This means that the creature will appear to be facing south when it's actually facing north in the editor, east when west, west when south, and north when east.

* As far as I can tell, aranea (and elder aranea) default to carrying pots. I'm assuming that item 373 was aranea fangs, once upon a time.

* Floors 85 and 86 have fl_ed_which_icon reversed. Floor 85 should have icon 7, and floor 86 should have icon 6.

* The default Asp graphic (1551) has its icons in the wrong order. North and west are reversed.

* Graphic 1654 in Blades of Avernum Art (the swarthy gal with a green shirt and brown armor) has no sword-with-shield-and-armor graphic. The graphic of her armored with sword-and-shield is missing the shield.

 

Documentation problems

* The call move_to_new_town can't be called from an INIT_STATE, a START_STATE, a creature script, or a terrain script, even if you distance the call from the state with set_state_continue, run_town_script, or run_scenario_script. (I put this under documentation because apparently this would be hard to change.)

* The call it_bonus may be described inaccurately. It does not provide any protection for rings, necklaces, and bracelets, and instead of preventing the given amount of damage, it prevents a random amount of damage up to the given amount. (I have not verified this.)

* The call get_unlock_spell_strength is undocumented.

* The constants BASE_TRAP_XP (which is 50) and NUM_CHARS (which is 120) are not documented. In fact, it'd be nice to have a list of constants somewhere like the one that Khoth posted . Also, the other reserved variable names (like the Spidweb-bug-page-listed "shop") should be listed somewhere.

* As far as I can tell, the attitude of the party is 0, which should be mentioned under the get_attitude description.

* Arguably not a documentation problem, using force_start_day(-1) makes what_day_of_year always return 0, but what_day_of_scenario still works fine. This should at least be mentioned somewhere. Also, what_day_of_scenario starts at 0, despite the fact that the games in-game calendar starts at 1, which should at least be mentioned.

 

Miscellaneous engine issues

* Outdoors signs don't work sometimes. (Does this still not work? Jeff claims that he fixed it for v1.1.2.)

* If cursed items are placed on ground/in a container in the editor, they lose their cursed ability.

* Enter-combat-end-combat bug: you can get placed in totally nonsensical locations when ending combat. If you enter and then end combat immediately, you get placed one space forward. This allows you to skip special rectangles extremely easily unless specifically prevented from doing so by a designer.

* Beam projectors malfunction wildly in close quarters, next to walls, in varying heights, etc. I have a small utility scenario to demonstrate a number of ways in which this can occur.

* When a regular PC is next to a spot and you look at that spot, you search the spot. If only a joined NPC (and not a regular NPC) is next to a spot, however, you don't search the spot. (It just seemed odd to me. Not sure it's a "bug" bug, though.)

* Putting a town border right next to the edge of the town causes weird behavior: you can't exit the town, the town doesn't match the edge, etc.

* When a creature can't get to a location that it's trying to get to, the game slows to a crawl. For example, when a creature gets lured out of a building through an open door, the door gets closed, and then the creature tries to return_to_start, the game slows. (This has been reported on Windows, and I have not verified it personally.)

* Unlike the traditional Orb of Thralni, items with it_ability_1 = 213 can give the party extra rounds of flight while the party is still in the air.

* When a statistic gets very large (perhaps over 100 or 200), the game will eventually give a message saying, "Error: File corruption caused too-high skill. Skill being reset to 0. Can correct it manually with editor." This is a problem for very high-level parties, which should naturally have Health at these levels.

 

Unhandled Exceptions

Various things cause Unhandled Exception errors on Windows that cause BoA to quit entirely without giving a proper error message. These are extremely hard to debug for Mac designers, since they do not reproduce in the same way on a Mac, except for a few that are noted. Among them:

* Using a terrain or floor graphic that doesn't exist. This is a problem with wallsets that are not complete, for example: if you place a wall with a door from a wallset that doesn't include a door (ie, cave wall), this causes an unhandled exception.

* Setting a creature facing a direction greater than 7 -- ie, set_character_facing(6,8).

* Running the death animation of a creature with cr_small_or_large_template set wrong -- that is, if the creature's graphic is small but cr_small_or_large_template = 1 in the scenario's custom objects script, then BoA crashes without an error message and quits. This happens on Mac, too.

* Over-running the string limit. I got an unhandled exception in Vasskolis when I tried to display a message from the text buffer that was longer than 256 characters. I'm not sure if over-running the text buffer itself was the problem or if trying to display it was the problem, but either way, the over-long string didn't give the over-long string error like it does on a Mac.

* If you try to use a string variable while nothing's in it (i.e., you forgot the get_buffer_text call), BoA dies. On Mac-BoA v1.1.2, it crashes, gives no error message, and quits. I got this with a message_dialog call, but I imagine a print_str or text bubble would give the same response. Also, using a dialog string with nothing in it causes the same error.

Share this post


Link to post
Share on other sites
Kelandon   

New bug, causing the need to revive the topic: as far as I can tell, the attitude of the party is 0. One might expect it to be 3 (party-friendly), but I don't think that it is. I don't think that the docs mention this (although I may have missed it), and they should.

 

Also, I've pared down the list very slightly, getting rid of the more ridiculous bugs ("sometimes I see crashes").

 

EDIT: When a statistic gets very large (typically over 100 for normal stats, 200 for Useful Skills, although I can't say for sure that it's consistent), the game will eventually (when the stat gets checked, perhaps?) give a message saying, "Error: File corruption caused too-high skill. Skill being reset to 0. Can correct it manually with editor." This is a problem for very high-level parties (say, 50 or above), which should naturally have Health above 500. This doesn't seem to have any in-game effect (except a weird 0 on the stat sheet), but it's annoying to get these error messages.

Share this post


Link to post
Share on other sites
Fort   

I believe that if a secondary skill other than health is set to 0, it really is treated as 0. However, I have only seen this happen with god parties so I do not think it is a terrible problem. Personally, I think that if debug mode were expanded upon so that, for instance, one could change stats in game or enter some invincible god mode, there would not be a need for god parties for scenario testing.

Share this post


Link to post
Share on other sites

Another constant to watch out for is "shop". I don't know if this has a VALUE or not, but if you use it as a variable, your script will crash.

Share this post


Link to post
Share on other sites
Lilith   

Yes, there really does need to be full documentation of the reserved variable names somewhere. "shop" is already mentioned in SW's tech support page, but there are definitely others.

Share this post


Link to post
Share on other sites
Lancer   

It is worth noting that what_day_of_year() always returns a value of 0 if used with force_start_day(). In other words, the value for what_day_of_year fails to increment with each passing day.

 

The way around it is by using the what_day_of_scenario() call which works correctly in conjunction with force_start_day().

Share this post


Link to post
Share on other sites
Kelandon   

Three small additions in light of recent posts: additional reserved variable names, the mixed time calls issue, and verification of the cursed item bug.

Share this post


Link to post
Share on other sites
Thralni   

I didn't see that this was mentioned somewhere, so I thought to just say it:

 

The documentation says that the calls set_terrain, set_floor and set-height can be used outdoors. However, every time when I tried it, nothing happened to the outdoor terrian.

Share this post


Link to post
Share on other sites

I've gotten set_terrain to work in an outdoor script as part of a special encounter with dialog box choices, but it won't work in any of the other states.

(It's very annoying too..)

Share this post


Link to post
Share on other sites

I have found an issue:

 

When importing any of the wallset terrains into a later spot, the walls no longer draw correctly on the automap in the game under certain circumstances.

 

For example: I imported the four doors from the first wallset into spots 404, 405, 406 & 407 in order to remove their default scripts.

 

However, they no longer draw on the automap when the party is viewing them from beyond their blocked side.

 

In terms of the logic of the automap coding, you can see why this might be the case, but nevertheless it should be noted and (perhaps?) dealt with.

 

EDIT: I have just found a way around the problem cited in the example. To delete a terrain script from a terrain space which has one by default, just use the "Delete Object" tool. However, the issue remains. It may no longer be relevent, though.

Share this post


Link to post
Share on other sites

Graphic 1654 in Blades of Avernum Art (the swarthy gal with a green shirt and brown armor) has no sword-with-shield-and-armor graphic. The graphic of her armored with sword-and-shield is missing the shield.

Share this post


Link to post
Share on other sites
Kelandon   

Adding the what_day_of_scenario starting at day 0 thing under documentation issues.

 

Quote:
Originally written by Nicholas Bellerophon:

I have just found a way around the problem cited in the example. To delete a terrain script from a terrain space which has one by default, just use the "Delete Object" tool. However, the issue remains. It may no longer be relevent, though.

Does anyone know to what problem he is referring? The "example"?

 

I'm going to look closer at a couple of other problems before adding them.

Share this post


Link to post
Share on other sites
Thralni   

the call what_day_of_scenario() appears to always return the number of days - 1. This appears to be normal...

 

So, if its day 3, what_day_of_scenario will return 2.

Share this post


Link to post
Share on other sites
Lilith   
Quote:
Originally written by Kelandon:
Quote:
Originally written by Nicholas Bellerophon:
I have just found a way around the problem cited in the example. To delete a terrain script from a terrain space which has one by default, just use the "Delete Object" tool. However, the issue remains. It may no longer be relevent, though.
Does anyone know to what problem he is referring? The "example"?
The problem he had was that he created a duplicate of the door terrain which didn't have a default terrain script, but the door terrain he created didn't appear as a door on the automap.

Share this post


Link to post
Share on other sites

A person could also just change to terrain script to something other than door.txt by first clicking on the door, and then clicking on the word "script" as it displays under the map.

Share this post


Link to post
Share on other sites
Kelandon   

As far as I can tell, terrains 172 and 173 (in addition to being mis-named) default to not showing up on the automap. I tried to add the line

 

te_draw_on_automap = 1;

 

but this did not seem to help. Their graphics are properly set. Can anyone figure out what the problem with these terrains is?

Share this post


Link to post
Share on other sites

It may well be that since the graphics are so overwhelmingly white that when the graphic is truncated, none of the actual pixels appear since there's not enough of them.

Share this post


Link to post
Share on other sites
Ephesos   

So, this is really more of a perennial bump than anything... I'll go ahead and put this in the forum header as well.

Share this post


Link to post
Share on other sites
Lazarus.   

New bug: This one drove me nuts for two days when I was working on FB.

 

It is known that joined NPC's don't run their default scripts properly, and that only their dead state is ever called. What isn't known (or at least what I didn't know) is that they don't run ANY script until they exit and reenter town. This means that if you add an NPC in town 0 with a unique dead state, he better not die while still in town 0 or nothing will happen. Suggestion: accompany any joined NPCs with a move_to_new_town() call, even if it's just re-entering the same town you're already in. Otherwise you might get burned.

Share this post


Link to post
Share on other sites

It's been a while since I discovered this, but the maximum string limit is 254 characters, not 255 characters (at least with string literals; don't know about the buffer).

 

--------------------

Roy: So you, a complete stranger, are telling me that I need to venture into dangerous territory and bring back some of this "starmetal" for you, and then you can fix my sword?

Dwarven Smith: Aye.

Roy: I hate sidequests.

(OotS #134)

Share this post


Link to post
Share on other sites
Callie   

When creating dialogue you're supposed to use underscores for quotation marks, since using quotations marks will end the text. However, if you put underscores in the script for a shop description, they show up as underscores instead of quotation marks.

 

A question asked that I shall answer

Quote:
Outdoors signs don't work sometimes. (Does this still not work? Jeff claims that he fixed it for v1.1.2.)
I've never seen outdoor signs malfunction, so I think Jeff fixed that.

 

Edit: Version 6.0? That's strange.

Share this post


Link to post
Share on other sites
Ephesos   

I remember when my outdoor signs in DoK stopped working, then sometimes just clearing their content every so often... that was annoying.

 

As for the quotation marks, you can just use an apostrophe... another workaround. Yay.

Share this post


Link to post
Share on other sites
Kelandon   
Quote:
Originally written by Excalibur:
Edit: Version 6.0? That's strange.
There have been five of these threads prior to this one.

Share this post


Link to post
Share on other sites

From what I can see, item ability 65: Affect Rune Reading skill, does nothing in actual practice. Ditto when it is rephrased as item ability 43: “Affects the statistic equal to this value, minus one”. (Rune Reading is statistic number 42.)

 

You can increase Arcane Lore via an item ability, but this increase does not affect Rune Reading, unlike increases to Arcane Lore coming from skill points. I think Rune Reading is redundant, there is no need for both it and Arcane Lore.

Share this post


Link to post
Share on other sites
Lilith   
Quote:
Originally written by Ishad Nha:
I think Rune Reading is redundant, there is no need for both it and Arcane Lore.
It's not completely redundant, but the main practical effect of having two separate skills is that parties with a lot of priests don't need to buy much Arcane Lore, which may or may not be good for game balance.

Share this post


Link to post
Share on other sites

short teleport_party(short new_loc_x,short new_loc_y,short fade_type)

mode -

0 full teleport flash

1 no teleport flash

2 only fade flash // this does not work in practice.

 

The first two modes work, while the third does not, it only produces a flash.

Share this post


Link to post
Share on other sites

You mean it produces the flash but doesn't teleport? If that's what you mean there'd be an easy workaround - just call the function again with mode 1.

Share this post


Link to post
Share on other sites
Ephesos   

Yeah, what do you think it's supposed to do? The description is vague enough that I'm honestly not sure...

 

If you really just need the flash, then just use put_boom_on_char(1000,2,0);

Share this post


Link to post
Share on other sites

Time: Manual correction

I drew up this table of time versus day/night cycles in BoA by using the following two calls:

s = get_current_tick() % 5000;

print_big_str("The time is now ",s," minutes.");

 

3,750 = start of dusk

4,000 = it gets darker

4,250 = darker still

4,500 = (midnight)

4,750 = brighter

5,000 = brighter still

(A new calendar day starts now.)

250 = daylight

 

Teleportation

Yes, I wanted the party to be teleported not surrounded by pretty lights, that is why I chose “teleport party” not an SFX call. Fortunately the modes 0 and 1 both work.

 

While I am at it, we really need a bugs page that lists the bugs in some definite order. For instance, bugs affecting calls could be listed in the order in which the calls are described in the Wiki guide.

Share this post


Link to post
Share on other sites
Ephesos   
Quote:
Originally written by Ishad Nha:
While I am at it, we really need a bugs page that lists the bugs in some definite order. For instance, bugs affecting calls could be listed in the order in which the calls are described in the Wiki guide.
If you'd like to spearhead that, then go ahead. Otherwise, I see nothing wrong with the current setup... designers really should familiarize themselves with the entire list.

Though come to think of it, I could modify the original post to keep things updated, since Kel doesn't seem to pop in all that much. Yay being a mod!

Share this post


Link to post
Share on other sites
Kelandon   

I do still check this site from time to time. I'll probably be around a little more in a month or two, but this semester has really killed me with work and stuff.

 

But if anyone would like to organize the bugs list or create a new post that covers more, there's nothing stopping you. The only reason my post is the definitive one right now is that it's the only effort anyone has made to be comprehensive.

Share this post


Link to post
Share on other sites

There's a bug with item graphics. If you give an item an inventory graphic that is not in the first row of the sheet, it will be displayed correctly in the Get window, but once it is in the inventory the graphic at the top of the same column will be shown instead (ie, if it was slot 11 or 21, then the graphic in slot 1 will be displayed). Floor graphics in the second row work perfectly fine.

Share this post


Link to post
Share on other sites

(Sorry about double post!)

 

I found another odd bug. I altered the cave floors to add an icon adjust value, and for some reason the adjust value was carried over to the surface floors as well - even though I had not added it. I added to specifically cancel the adjust on the surface floors for it to work properly.

 

Edit: Thought I should be more specific. I modified them by importing them into 254 then reimporting that (implicitly) back into the original slot, rather than completely redefining them.

Share this post


Link to post
Share on other sites
Lazarus.   

I'm inclined to say that the problem is with your data script and is probably caused by not using the 'clear' function properly, or possibly because cave floors are imported for the grass floors (Are they? And as importantly, should this make a difference? Unless you redefine the grasses in your data script, they shouldn't be affected by your changing the floors that the corescendata imported when defining them.... I don't know what the hell I'm talking about so I doubt anybody else will.)

Share this post


Link to post
Share on other sites
nikki.   

The surface floors DO import the cavern floors (floor 0), so if you alter that, then all floors that import that will be changed. Don't forget that your custom data script takes precident over corescendata. So changing the first floor without altering the grass floor will make BoA edit the cave floor, see that you aren't changing the grass floor, and go ahead and import floor 0 - the one you changed. Hope that makes sense.

 

If I were you, I'd reassign the altered floors a different, unused number, leaving the first cave floors well alone. That way is far easier than redefining all of the grass floors again.

Share this post


Link to post
Share on other sites
Quote:
Originally written by Ballad:
Don't forget that your custom data script takes precident over corescendata.
Are you saying that the game loads the custom script before it loads corescendata? It shouldn't do that.
Quote:
Originally written by Ballad:

If I were you, I'd reassign the altered floors a different, unused number, leaving the first cave floors well alone. That way is far easier than redefining all of the grass floors again.
Maybe, but I've already done it now. smile

Share this post


Link to post
Share on other sites
Niemand   

No, what he's saying is that the game loads the custom script after corescendata, this means that definitions in the custom script override (take precedent over) those in corescendata.

Share this post


Link to post
Share on other sites

But if it loads corescendata and then the custom script, why would the grass be affected when I didn't do anything to it?

 

Unless... the game stores the fact that one was imported from another rather than actually importing the data?

 

A sample of my code:

Code:
begindefinefloor 254;	import = 0;begindefinefloor 0;	fl_icon_adjust = 656;
Then I did the same for each cave floor as well as the cave water, and the hill terrains. To fix it, I also did the same to all the grass and dry ground but this time setting it to 0. I'm not sure if it was actually needed for the dry ground though - I just assumed.

Share this post


Link to post
Share on other sites
Niemand   

Despite the fact that sliths are consistantly described as resistant to fire, the slith, slith warrior, and slith chief have significant immunities to cold rather than fire as defined in corescendata. The 'cr_immunities 1' lines for those definitions should be 'cr_immunities 0'.

Share this post


Link to post
Share on other sites

In a similar vein, the high priest and the archmage had no resistance to acid/poison even though the mage and priest did, and the archmage had resistance to magic but nothing else, and the slith avatar had no resistance to poison.

 

The way I'm seeing it is that if the basic slith is resistant to fire and poison, every type of slith should be resistant to fire and poison. This is not the case, apparently. smirk

Share this post


Link to post
Share on other sites
Lazarus.   

Good job on the data fix over at the BF, but I just noticed that you import objects into the last slot, but don't actually import it back into the original. I think the proper way to do it would be

Code:
#  begindefinecreature 255; // Slith#          import = 34;#  begindefinecreature 34;#          import = 255;#          cr_immunities 0 = 50;#          cr_immunities 1 = 0;
If you leave out the second import you're not really writing over creature 34... At least that's how I understand it. Does it work to do it your way?

Share this post


Link to post
Share on other sites
Niemand   

The second import is not needed, it is a deliberate feature that if no clear or import statement is used, values from previous definitions are retained. Examining the section of corescendata which defines items you will see this technique used often for related sets of items, for instance, the longswords.

Share this post


Link to post
Share on other sites

Back to the Sliths, in Avernum 3 the Sliths in New Formello were suffering badly from the cold as I recall. They had resistance to fire but not cold.

Share this post


Link to post
Share on other sites

This is yet another documentation error:

 

"void set_name(short which_char_or_group,char new_name)

Sets the name of the character/group to new_name. Maximum name length is 19 characters."

 

The call set_name is not limited to 19 characters. I was able to give the an innkeeper a name and a title:

"Thomas Wilner, Esquire, Innkeeper of Bobling".

 

I don't know how many characters can be in a name, I will have to research this.

 

Edit:

There is no word wrap, all characters in the name must be able to fit on the one line. Letters don't have a fixed width, they are "proportional". Thus the number of letters you can use here depends upon their width, m is wider than i&&. On average 40 or 50 can be fitted in?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×