Jump to content

List of bugs affecting BoA Calls

Ishad Nha

Recommended Posts

Here is a list of bug reports listed in the order in which they appear in the Wiki BoA Script Reference. All calls have been listed, even though most appear to be alright, this is in case bugs are found in the future.


I hope to follow up with companion files for bugs relating to functions found in the manual or in the BoA Editor Help file. This is a plain text condensation of a Rich Text Format original.


Miscellaneous Special Calls: in my own version I have distributed these calls among the other headings, but here I will use the standard format.


In the comments below, “I” will be the person who wrote the original post.

TSE = the Windows version of Technical Support for the Editor.

Comments with no attribution come from Kel.


Script and IO Calls 1

Campaign and Scenario Calls 2

Basic Character Calls 2

Item, Special Item and Gold Calls 4

Location and Distance Calls 4

Statistic and Damage Functions 5

Animation and SFX Functions 5

Scenario Initialization Calls 6

Boats and Horses 6

Event Calls 6

Town Calls 6

Outdoor Calls 7

The Passage of Time 7

Miscellaneous Special Calls 7

Terrain Checking and Modification 8

Dialog Calls 8

Basic Dialog Box Calls 9

Advanced Dialog Box Calls 9

Terrain Script and Creature Script Calls 9

Terrain Script Calls 10

Movement, AI Functions 10

Combat and Targeting Calls 10

Grouping Calls 11

Messaging Calls 11

Advanced Item Management Calls 11

NPCs Joining Party Calls 11

Splitting Up the Party Calls 11

Custom Item Ability Calls 11

Custom Character Ability Calls 11

Cutscene Calls 12

String Manipulation Calls 12

Debugging Procedures 12


Script and IO Calls

1 print_big_str

2 print_big_str_num

TSE: print_big_str_color ignored the color field. The text was always

black. This is fixed in the versions more recent than 10/8/04, (it is?).


3 void block_entry

4 void end

5 short get_ran

6 short get_selected_char

7 short is_combat

8 short is_outdoor

9 short is_town

10 void play_sound

11 void print_str

12 void print_str_color

13 void run_scenario_script

14 void run_town_script

15 void set_incidental_sound

16 void set_state

17 void set_state_continue


Campaign and Scenario Calls

18 void clear_quest

19 void end_scenario

20 short get_flag

21 short get_sdf

22 void inc_flag

23 void set_flag

24 void toggle_quest


Basic Character Calls

25 void alert_char

26 void award_char_xp

27 void award_party_xp

28 short can_see_char

29 void change_char_xp

30 void change_pc_skill_pts

31 void change_spell_level

TSE: change_spell_level currently gives an unfortunate text message

when used for a non-party creature. This is fixed in the versions more

recent than 10/8/04. (It is?)


32 short char_attitude_to_char

33 short char_has_trait

34 short char_ok

35 short char_on_spot

TSE: The descriptions of the calls char_on_loc and char_on_spot are

unclear (and the call names are unhelpful). char_on_spot only checks

for NPCs, so it will return -1 if one of the player's characters is on that

spot. char_on_loc checks for all characters (as does char_on_me).


36 short char_status

37 short creature_type


38 void deduct_ap

TSE: calls end_combat_turn and deduct_ap were originally designed to

only be called in creature scripts. This is highly unfortunate, because these

calls are very valuable for custom abilities, and because there is no way to

reliably get them to work on PCs. If called in a scenario script, these calls

affect PC 0 only. In later versions of Blades of Avernum (v1.0.1 Windows),

when these calls are used in a non-creature script, they will affect the

currently selected character (when not in combat) or the currently active

character (in combat).


39 void end_combat_turn

40 short enemies_nearby

41 void erase_char

42 short friends_nearby

43 short get_attitude

* As far as I can tell, the attitude of the party is 0, which should be

mentioned under the get_attitude description.


44 short get_char_skill_pts

45 short get_energy

TM: Either there is no get_max_energy(); call, or there is no

such call in the docs. Either way, this should be fixed.

Ishad Nha: Maximum Spell Energy is statistic 36, so “get_stat(

which_char,36);” should work here.


46 short get_health

47 short get_level

TSE: the ME paramater doesn't work with relocate_character or

get_level If you want to use these calls inside a creature script, use

the my_number call.


48 short get_max_health

49 short get_species

50 short get_spell_level

51 short get_summon_level

52 void give_recipe

53 short has_recipe

54 void kill_char

55 short my_ap

56 short my_number

57 short party_can_see_loc

58 short party_has_trait

59 short party_size

60 void print_named_str

61 short random_party_member

62 void revive_party

63 void set_attitude

64 void set_char_alert

65 short set_char_script_mode

66 void set_char_trait

67 void set_creature_memory_cell

68 void set_level

69 void set_mobility

70 void set_name

71 void set_special_ability

72 void set_summon_level

73 short species_in_party


Item, Special Item and Gold Calls


74 void change_coins

75 void change_spec_item

76 void char_give_item

* Items don't stack when given via this call_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.


77 short char_has_item

78 short char_has_item_of_class_equip

79 void char_take_item

TSE: Don't use the call char_take_item. It won't work. Use the call

take_item instead. Note that this means that you can't take items from

NPCs once they have been given.


80 short coins_amount

81 short has_item

82 short has_item_of_class

83 short has_num_of_item

84 short has_special_item

85 short item_of_class_on_spot

86 void move_item_on_spot

87 short pay_coins

88 void put_item_on_spot

89 short reward_give

90 short take_all_of_item

91 short take_all_of_item_class

92 void take_item


93 short take_item_of_class_on_spot

94 void take_num_of_item

95 void take_special_item


Location and Distance Calls

96 short char_loc_x

97 short char_loc_y

98 short char_dist_to_loc

99 short char_on_loc

TSE: The descriptions of the calls char_on_loc and char_on_spot are

unclear (and the call names are unhelpful). char_on_spot only checks

for NPCs, so it will return -1 if one of the player's characters is on that

spot. Char_on_loc checks for all characters (as does char_on_me).


100 short dist_to_waypoint

101 short group_dist_to_loc

102 short my_dist_from_start


Statistic and Damage Functions

103 void alter_stat

TSE: alter_stat can't drop the main stats Strength, Dexterity,

Intelligence, or Endurance below the default starting level for those

stats. Which is probably a good thing.


104 void change_char_energy

105 void change_char_health

106 short char_with_highest_skill

107 void damage_char

108 void damage_near_loc

109 short get_char_status

110 short get_highest_skill

111 short get_skill_total

112 short get_stat

113 short get_stat_levels_bought

114 void heal_char

115 short party_has_status

116 short party_member_has_skill

117 void restore_energy_char

118 void restore_pc

119 void set_char_status

TSE: When using set_char_status with is_forced set to 0, curse/bless

and shield/weaken are flipped. So


will give character 5 10 levels of bless instead of shield (because the

1, which should be shield, is being read as bless instead).


120 void set_party_status

121 void status_near_loc

122 void waypoint_damage_party


Animation and SFX Functions

123 void put_boom_on_char

124 void put_boom_on_space

125 void put_effect_on_char

126 void put_effect_on_space

127 void put_jagged_zap

128 void put_sparkles_on_char

129 void put_sparkles_on_space

130 void put_straight_zap

131 void run_animation

132 void run_animation_sound


Scenario Initialization Calls

Using Load Scen state to alter boats and horses in save games:

Here I will be exploring alterations to the contents of the Start Scen state, after the designer has started to play test the scenario. If you test a design and add a boat to the Start_Scen_State it won't show up in an existing save game.

What Load Scen state does is mandate the location of all the affected boats and horses, it overrides the save file. Hence a boat will vanish if its location is overridden. It is best only used for boats and horses that need to be altered.

The relevant boat or horse entry should be "commented out" in the scenario script as soon as the game is next saved. Else, when the save game is next re-loaded, the boat or horse will be restored to the location specified by Load Scen state, the state always overrides the save file.

Boats and horses can also be created in the Init State of a town script. Appropriate SDFs can ensure that a boat or horse is only available if the right conditions are met.



Shops would also be covered by these comments.


133 void add_item_to_shop

134 void create_boat

135 void create_horse

136 void init_quest

137 void init_special_item

138 void set_creature_type_level


Boats and Horses

139 short in_boat

140 short in_horse

141 void set_boat_property

142 short set_boat_range_property

143 void set_horse_property

144 short set_horse_range_property


Event Calls

145 short day_event_happened

146 void set_event_happened


Town Calls

147 void activate_hidden_group

148 void change_crime_level

149 void change_outdoor_location

150 void clear_town

* Something odd and undocumented is going on with the clear_town call.

The description of the problem is here.


151 short current_town

152 short current_town_size

153 void enable_add_chars

154 short get_crime_level

155 void make_town_hostile

156 void move_to_new_town

* 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.)


157 short num_killed_in_town

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

158 void place_monster

159 void set_crime_tolerance

160 void set_items_not_property


161 void set_town_status

TSE: Problems With town_status Calls. The call town_status only works

when passed the value -1 (for the current town). So town_status(-1) will

return the status of the current town, but town_status(any other

number) won't work correctly.


162 void set_town_visibility

163 short spawn_creature

164 short teleport_party

Ishad Nha: Mode 2 does not work, fortunately modes 0,1 do work.

165 short town_status

166 void turn_off_training


Outdoor Calls

167 void create_out_spec_enc

168 short current_out_section

169 void eliminate_outdoor_enc

170 void out_move_party

171 short outdoor_enc_exists

172 void outdoor_enc_result

173 void place_out_spec_enc

174 void set_out_fight_town_loaded


The Passage of Time

175 void force_start_day

176 short get_current_tick

177 void set_ticks_forward

178 short tick_difference

179 short what_day_of_scenario

* 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.


180 short what_day_of_year

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().

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.


Miscellaneous Special Calls

181 void create_text_bubble

* 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.)


182 void drop_item

183 short get_char_who_stepped_on

184 void make_wandering_monst

185 void put_object_on_waypoint

186 short run_bash_door

187 short run_pick_lock

188 short set_ter_script_mode

189 void set_terrain_memory_cell

190 void text_bubble_on_char


Terrain Checking and Modification

191 void change_blocked

192 short get_floor

193 short get_height

194 short get_terrain

195 void flip_terrain

196 short is_blocked

197 short is_field_on_space

198 short is_object_on_space

199 short is_stain_on_space

200 void put_field_on_space

201 void put_object_on_space

202 void put_stain_on_space

* 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.


203 void set_floor

* The calls set_terrain, set_floor, and set_height only inconsistently work

outdoors. They most often do nothing.


204 void set_height

205 void set_terrain

206 void swap_floor

207 void swap_terrain


Dialog Calls

208 void add_string

209 void begin_shop_mode

210 void begin_talk_mode

211 short character_talking_to

212 void clear_strings

213 short current_personality

214 void remove_string

215 void set_char_dialogue_pic


Basic Dialog Box Calls

216 reset_dialog

217 void add_dialog_choice

* 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.


218 reset_dialog_preset_options

219 void add_dialog_str

220 void message_dialog

221 short run_dialog


Advanced Dialog Box Calls

222 void check_text_response_match

223 short get_selected_pc

224 void get_text_response

225 short got_text_match

226 void large_draw_pic_dialog

227 short run_select_a_pc

228 void small_draw_pic_dialog


Terrain Script and Creature Script Calls

229 short can_see_loc

230 void damage_nearby

231 short dist_to_char

232 short dist_to_loc

233 short dist_to_party

234 short floor_in_this_spot

235 void force_status_nearby

236 short get_memory_cell

237 short get_nearest_char

TSE: If you use this call in a creature script, it will return the number of the creature whose script is running, not the nearest other creature. This

makes the call useless for creatures (it was originally intended for use in

terrain scripts). Alignment-based calls (like get_nearest_evil_char) work

fine as long as you're looking for creatures of a different alignment.


238 short get_nearest_evil_char

239 short get_nearest_good_char

240 void heal_nearby

241 short my_loc_x

242 short my_loc_y

243 void restore_energy_nearby

244 void set_memory_cell

245 short set_script_mode

246 void status_nearby

247 short terrain_in_this_spot


Terrain Script Calls

248 short char_on_me

249 short char_who_activated_script

250 short get_mechanism_difficulty

251 short get_physical_strength


* The call get_unlock_spell_strength is undocumented.


252 void set_mechanism_difficulty

253 void set_physical_strength


Movement, AI Functions

254 short am_i_doing_action

255 short approach_char

256 void approach_ter_script

257 short approach_waypoint

258 void fidget

259 short flee_char

260 short maintain_dist_to_char

261 short move_to_loc_x_y

262 short return_to_start

* 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

hrough 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.)


263 void stop_moving


Combat and Targeting Calls

264 void do_attack

265 void do_attack_tactic

266 short get_aggression

267 short get_courage

TSE: The description of the call get_courage in the documentation is

wrong. It should read: “short get_courage(short which_char,short

dummy_value) - Returns the current courage of which_char.

Dummy_value is ignored.”


268 short get_strategy

269 short get_target

270 short select_target

271 void set_aggression

272 void set_courage

273 void set_strategy

274 void set_target

275 short target_ok

276 short who_hit_me


Grouping Calls

277 void add_char_to_group

278 void add_range_to_group

279 short char_in_group

280 void clear_all_groups

281 short first_group_member

282 short num_chars_in_group

283 short random_group_member

284 void remove_char_from_group

285 short what_group_in


Messaging Calls

286 void broadcast_char_message

287 void broadcast_message_from_x_y

288 void broadcast_terrain_message

289 void give_char_message

290 void give_ter_script_message

291 short my_current_message


Advanced Item Management Calls

TSE: Do not use the ME value for which_char for these calls. Use the

creature's actual number. Inside a creature script, you can get this

with the my_number call.


292 void destroy_char_item

293 short get_item_variety

294 short item_type_in_slot

295 void take_item_char_item


NPCs Joining Party Calls

296 short add_char_to_party

297 short character_in_party

298 short remove_char_from_party

299 short this_char_is_in_party


Splitting Up the Party Calls

300 void reunite_party

301 void split_off_one_char

302 short try_to_split_party


Custom Item Ability Calls

303 short who_is_custom_item_target

304 short who_used_custom_item


Custom Character Ability Calls

305 void change_custom_abil_uses

306 short get_custom_abil_uses

307 void init_special_abil

308 short who_used_custom_abil


Cutscene Calls

309 void erase_text_bubbles

310 void force_instant_terrain_redraw

311 void force_view_center

312 void march_party

313 void pause

314 void relocate_character

TSE: the ME paramater doesn't work with relocate_character or

get_level If you want to use these calls inside a creature script, use

the my_number call.


315 void set_character_facing

316 void set_character_pose

317 void set_total_visibility


String Manipulation Calls

318 void append_char_name

319 void append_number

320 void append_string

321 void clear_buffer

322 void get_buffer_text


Debugging Procedures

323 void print_num

TSE: The call print_num won't properly print negative numbers. If you need negative numbers, use print_nums.


324 void print_nums

325 turn_on_debug_mode


EDIT (Ephesos): Tidied it up a bit, changed The Immortal back to TM.

Link to comment
Share on other sites


* The call get_unlock_spell_strength is undocumented.
This is in fact only partially true. The call is not included in the appendix, but it is documented in "Chapter 1.7: Editing Towns", section "Magical Doors (Advanced)", on page 41.

It does fail to specify what sort of arguments the call takes (it takes none).
Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...