BoA Editor Suggestions
Pages
Author | Topic: BoA Editor Suggestions |
---|---|
The Establishment
Member # 6
|
written Sunday, August 1 2004 07:56
Profile
Okay, BoA is out and we are still in a phase where we can have updates. We should talk about things we want to be incorporated. So, reply with any suggestions you may have. A few notes: 1) Any suggestions should not modify the engine, i.e. no custom races, spells, etc. 2) Calls can only be added and not modified. 3) Keep suggestions practical. Consider any changes that would have to be made to the call list. List of Suggestions: * add_dialog_pic(which_pic), makes a call that puts a dialog picture in the upper-left corner of the dialog. * change_lighting(which_type), allows us to make the dungeon totally dark, fully lit, etc. * add_light(what_amount), gives ability to change the light level. Can be negative. * set_day(which_day), changes the day to which_day. * set_year(which_year), changes the year of the scenario to year which_year. * put_missile_animation(short source_x,short source_y,short dest_x,short dest_y,short which_sfx), missile animations. * group_member(short which_group,short which_member), Returns the creature number that is in the which_member slot of which_group. So if which_member was 1 and which_group was 2, the call would return the first creature in group 2. * short shop_item_quantity(short which_shop,short which_item) - Returns the quantity of which_item still left in the shop that can be bought with enough gold, 0 if the item is not there. * add_item_to_shop() -- Allow negative values for modifying shops. * short get_creature_memory_cell(short which_char,short which_cell) - Returns the value of memory cell which_cell of creature which_char. * short get_terrain_memory_cell(short which_script,short which_cell) - Returns the value of memory cell which_cell of terrain script which_script. * void change_shop_money(short which_shop,short how_much) - Changes (as in increment and decrement) the amount of money a shop can have for buying the players items. Similar to Geneforge. I'm not exactly sure how the 'unlimited money' switch should work, so here is just a simple suggestion. If the shop ends up having equal to or greater than 30000, the shop has unlimited money, but it can only be given that much with this call. Shops default to having unlimited money. * short shop_money(short which_shop) - Returns how much money which_shop has to buy the player's items. Returns 30000 if the shop has unlimited money. * void shop_selling_options(short which_shop,short selective_sell_category,short cant_sell_this_category,short can_resell) A call to change whether or not a shop will purchase certain kinds of goods, like in Exile. selective_sell_category is the variety of the item that is affected. The varieties are exactly the same as they are in the custom item scripts (like 1-handed,pants,ring,etc...). If cant_sell_this_category is 0, a shop may purchase items of the defined variety from the player. If 1, not. If can_resell is 0, the shop won't list the bought item back on its inventory for sale. This means that a shop can buy an item, but not resell it. All of the varieties default to being sellable by the player when possible, and can be resold by the merchant. * short item_loc_x(short which_item) - Returns the x of the location of item which_item. which_item refers to the items ID in the scenario editor. If the item has either been picked up or non-existent, call returns -1. * short item_loc_y(short which_item) - Returns the y of the location of item which_item. which_item refers to the items ID in the scenario editor. If the item has either been picked up or non-existent, call returns -1. * void calculate_ticks_forward(short num_ticks) - Makes the game calculate num_ticks forward, and of course will act upon these calculations. * void set_char_presence_status(short which_char,short which_status) To serve as a way to set the status checked in char_status (whether the character is dead, not present, etc), as opposed to the status checked in get_char_status (whether the character is blessed, hasted, etc) which is already settable. One could do neat things with splitting up the party this way * void set_up_lights(), Has the game refresh the lighting of a dungeon. * identify_item(int item_type) - Identifies all items of item_type currently in the party's possession. * identify_item_with_class(int item_special_class) - Identifies all items with item_special_class in the party's possession. * identify_item(short which_char_or_group,short which_slot) - Identifies the item on which_slot of which_char. which_slot of -1 implies all items on that specific character or group becomes identified. Should probably only be used on party members. * void put_party_outdoors(short what_section_x,short what_section_y,short loc_in_sector_x, short loc_in_sector_y) It can only be used in a town script. [ Wednesday, August 04, 2004 16:55: Message edited by: *i ] -------------------- Your flower power is no match for my glower power! Posts: 3726 | Registered: Tuesday, September 18 2001 07:00 |
Warrior
Member # 4202
|
written Sunday, August 1 2004 08:11
Profile
Homepage
void put_projectile(short source_x,short source_y,short dest_x,short dest_y,short which_sfx) -------------------- Creator of the 3D Blades of Avernum Editor for Mac. Get it at Ingenious Isaac's Illusion, my web page. Better yet, get Battle for Wesnoth, a wonderful free TBS game. Posts: 192 | Registered: Sunday, April 4 2004 08:00 |
Agent
Member # 2820
|
written Sunday, August 1 2004 09:51
Profile
short group_member(short which_group,short which_member) - Returns the creature number that is in the which_member slot of which_group. So if which_member was 1 and which_group was 2, the call would return the first creature in group 2. -------------------- Thuryl: I mean, most of us don't go around consuming our own bodily fluids, no matter how delicious they are. ==== Alorael: War and violence would end if we all had each other's babies! ==== Drakefyre: Those are hideous mangos. Posts: 1415 | Registered: Thursday, March 27 2003 08:00 |
Warrior
Member # 2838
|
written Sunday, August 1 2004 13:43
Profile
short party_size() - Returns the number of characters in the party. Also a leading_char would be good, but that can be implemented with script, I'm just lazy. :P [ Sunday, August 01, 2004 13:44: Message edited by: magoicochea ] -------------------- …../|,-‘`¯¯`\(o)_\,----,,,_……… …( `\(o),,_/` ¯ : o : :: o`-, … I'm under your bed. Posts: 118 | Registered: Wednesday, April 2 2003 08:00 |
The Establishment
Member # 6
|
written Sunday, August 1 2004 15:33
Profile
Ummm...there already is a call party_size(). I should post my lead_char routine to the Codex. -------------------- Your flower power is no match for my glower power! Posts: 3726 | Registered: Tuesday, September 18 2001 07:00 |
Off With Their Heads
Member # 4045
|
written Sunday, August 1 2004 17:04
Profile
Homepage
I have some pretty thorough methods for checking party composition in the HLPM. Check them out if you're interested. The code is all commented, so it should be relatively easy to follow. From my older versions of this topic, item descriptions. They would probably have to go in the custom objects script and look like: it_description = "This is a flibbity-jibbity. It is much like a doohickey except that its thingamajig is connected to its whatsit rather than its whosit."; Also, they might be able to go in the scenario script beside other initializing things, like quests. -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |
Agent
Member # 2820
|
written Sunday, August 1 2004 19:03
Profile
The thing with the custom item descriptions is that strings take up so much more space than integer characteristics. The items also have to be able to be carried between scenarios. It's just a save file size thing, I think. Definitely something I would like is a bunch of new calls for shops. Check the things in stock, prevent stores from reselling items, refresh inventories, selective buying (from the player), and gold amounts (like in Geneforge, but definitely optional). Just off the top of my head... shop_item_quantity(short which_shop,short which_item) change_item_quantity_in_shop(short which_shop,short which_item,short amount_to_adjust) shop_options(short which_shop,short resell,short gold_amount,short selective_buy_category,short selective_buy_category_status) I may add descriptions later. -------------------- Thuryl: I mean, most of us don't go around consuming our own bodily fluids, no matter how delicious they are. ==== Alorael: War and violence would end if we all had each other's babies! ==== Drakefyre: Those are hideous mangos. Posts: 1415 | Registered: Thursday, March 27 2003 08:00 |
Apprentice
Member # 3857
|
written Sunday, August 1 2004 19:31
Profile
Some things that i'd like to see changed: 1) NPCs initialize after towns. So NPCs can't use SDF values defined in town scripts in their own initialization. 2) There's no call to move NEAR a blocked spot (like approach_ter_script). 3) There is no way to send a message to a NPC before it is spawned (so the message can be used in the initialization of the NPC) 4) There is no way to access NPC cells from other scripts. 5) run_town_script apparently doesn't work before town initialization (so no workaround to #1) 6) There is no way to run a NPC state from other script. Now, the solution to most of the above is messaging, except when you need to set up a lot of things in the one turn that the party enters a town. 7) A couple calls to manipulate the tick counter would be great too. 8) Having more than 8 waypoints per town would make them much more useful. I noticed all of the above while experimenting with a NPC with a complex, 'realistic' daily routine. They are not important (I found the way to do what I wanted to) but force you to use awkward solutions to problems that would otherwise be simple :) Posts: 21 | Registered: Sunday, January 4 2004 08:00 |
The Establishment
Member # 6
|
written Sunday, August 1 2004 20:22
Profile
Keep: shop_item_quantity(short which_shop,short which_item) The add_item_to_shop() call does this already. change_item_quantity_in_shop(short which_shop,short which_item,short amount_to_adjust) Sounds good, how about change_shop_quantity()? shop_options(short which_shop,short resell,short gold_amount,short selective_buy_category,short selective_buy_category_status) I think I get the general idea. Void: Most of your things change the engine. That is NOT going to happen. I understand Jeff is reluctant to put in new calls as it would require people to redownload the game, but perhaps we can reach a specific threshold on that. I doubt engine modifications will ever happen though. -------------------- Your flower power is no match for my glower power! Posts: 3726 | Registered: Tuesday, September 18 2001 07:00 |
Warrior
Member # 1016
|
written Sunday, August 1 2004 21:03
Profile
What about a call to move or destroy boats and horses? Can the create_boat and the create_horse calls be used more then once on the same boat or horse? If not then some sort of move_boat and move_horse calls would be nice. Posts: 141 | Registered: Saturday, April 20 2002 07:00 |
Off With Their Heads
Member # 4045
|
written Sunday, August 1 2004 22:23
Profile
Homepage
change_item_quantity_in_shop(short which_shop,short which_item,short amount_to_adjust) This can already be done. The normal add_item_to_shop will do this. If you do... then shop 10 will have 6 of Scroll - Bolt of Fire in it: 2 from the first call, and 4 from the second. You can use these calls anywhere, even though the docs say to use them in the START_SCEN_STATE. (I use them in state 10 in the scenario script in the HLPM, because I'm using the state as a function, not as a One-Shot.) If you want to reduce the number of an item, you can use add_item_to_shop also -- just reset the shop to zero using how_many as zero. Of course, you may have to keep track of how many items are in the store, but you can do this using SDFs. The one downside to all of this is that the item will move to the top of the store's list, which is really annoying. Originally the shops in the HLPM incremented, rather than setting up each level specifically (ie going from level 20 to 25 I would add two more Iron Longswords or something like that), but the lists got too disorganized. But still, if you need to do this, it can be done. EDIT: And the other one of Keep's suggestions sounds an awful lot like what's already done with begin_shop_mode. I don't quite get the difference. And void*, if you don't like ugly workarounds, you shouldn't be programming for Blades. That's the nature of the game around here. If it's already possible, don't worry about how you're doing it, just do it. I suppose item descriptions are probably not tremendously practical, come to think of it. Oh well. If we get the top five currently on Stareye's list right now, I'll be satisfied. I'd really like some sort of is_beam_on_space kind of call or some way to define other reactions to a reaction to a beam than just crumbling when hit by one -- for instance, sources turning off when they aren't being powered. However, I seriously doubt we'll get anything like this, so meh. [ Sunday, August 01, 2004 22:37: Message edited by: Kelandon ] -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |
Infiltrator
Member # 148
|
written Sunday, August 1 2004 22:39
Profile
I want a way to suppress the player from seeing the day count. Something along the lines of set_day(day_number) 0 = No show 1+ = That day -------------------- My ego is bigger than yours. Posts: 480 | Registered: Thursday, October 11 2001 07:00 |
Off With Their Heads
Member # 4045
|
written Sunday, August 1 2004 23:01
Profile
Homepage
If we got set_year, then we could shift over the effect of force_start_day(-1) to set_year(-1), and then force_start_day(-1) could take out dates altogether instead of just taking out the year. Given that that no scenario would use force_start_day more than once, I don't think it would be that big of a deal even if it weren't backwards-compatible. [ Monday, August 02, 2004 09:51: Message edited by: Kelandon ] -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |
Warrior
Member # 4202
|
written Monday, August 2 2004 00:36
Profile
Homepage
quote::o I didn't know you could do that! But you still can't check what the party's sold to the shop, unless you disable that entirely (in which case you still can't, but it won't confuse you). EDIT: I tried that in my testing scenario and I couldn't get it to work! [ Monday, August 02, 2004 00:45: Message edited by: Isaac ] -------------------- Creator of the 3D Blades of Avernum Editor for Mac. Get it at Ingenious Isaac's Illusion, my web page. Better yet, get Battle for Wesnoth, a wonderful free TBS game. Posts: 192 | Registered: Sunday, April 4 2004 08:00 |
BoE Posse
Member # 112
|
written Monday, August 2 2004 02:45
Profile
Stareye's pretty well covered everything I'd like added. Except maybe a call to force party members to equip items. [ Monday, August 02, 2004 02:46: Message edited by: The Creator ] -------------------- Rate my scenarios! Areni Revenge To Live in Fear Deadly Goblins Ugantan Nightmare Isle of Boredom Posts: 1423 | Registered: Sunday, October 7 2001 07:00 |
Agent
Member # 2820
|
written Monday, August 2 2004 04:42
Profile
shop_item_quantity(short which_shop,short which_item) was supposed to be a function that returns the NUMBER of which_item in which_shop. I'm aware that the add item to shop call exists, but it doesn't work relatively, and since there is no way to check the inventory, the only good way to increment or decrement shop items is to use a new call to specifically change them. The way I would like shops to work is extrememly complicated, so I think it is best that those few calls are all that are necessary. -------------------- Thuryl: I mean, most of us don't go around consuming our own bodily fluids, no matter how delicious they are. ==== Alorael: War and violence would end if we all had each other's babies! ==== Drakefyre: Those are hideous mangos. Posts: 1415 | Registered: Thursday, March 27 2003 08:00 |
...b10010b...
Member # 869
|
written Monday, August 2 2004 05:03
Profile
Homepage
I'm not sure exactly what you want to do with these features you're requesting, but if what you want is for a few specific items to be sold in limited quantities that are replenished at certain points throughout the scenario, the best way to do it might not be through a shop. -------------------- The Empire Always Loses: This Time For Sure! Posts: 9973 | Registered: Saturday, March 30 2002 08:00 |
The Establishment
Member # 6
|
written Monday, August 2 2004 06:47
Profile
Keep: Post some discriptions and I'll add them to the list. -------------------- Your flower power is no match for my glower power! Posts: 3726 | Registered: Tuesday, September 18 2001 07:00 |
Off With Their Heads
Member # 4045
|
written Monday, August 2 2004 09:51
Profile
Homepage
In reference to add_item_to_shop again, it appears that one feature is broken. From the docs: "Note that, in all cases, you will want to put a number above 0 for how_many. If you don't, the item will disappear from the store." I never tested this, but when Isaac said it didn't work, I did, and I second this: it doesn't work. This is a bug. quote:I'm not quite sure what you're saying here. The call add_item_to_shop ONLY works relatively, which is to say that it increments rather than sets, to use SDF terminology. As a correction to my post above: when you increment the amount of a particular item the shops sells, the item goes in the BOTTOM of the shop's inventory, not the top, I think. It still can mess up the shop's order, though. -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |
Agent
Member # 2820
|
written Monday, August 2 2004 13:12
Profile
OK, here are all of my current suggestions (with descriptions): short group_member(short which_group,short which_member) - Returns the creature number that is in the which_member slot of which_group. So if which_member was 1 and which_group was 2, the call would return the first creature in group 2. short shop_item_quantity(short which_shop,short which_item) - Returns the quantity of which_item still left in the shop that can be bought with enough gold, 0 if the item is not there. I KNOW that you said that we couldn't modify existing calls, but add_item_to_shop() doesn't accept negative values in the last parameter (how_much). Changing this would not interfere with the function of scripts already made, since this has no impact on positive values already there, and no one has used negative values yet because they don't work. short get_creature_memory_cell(short which_char,short which_cell) - Returns the value of memory cell which_cell of creature which_char. short get_terrain_memory_cell(short which_script,short which_cell) - Returns the value of memory cell which_cell of terrain script which_script. void change_shop_money(short which_shop,short how_much) - Changes (as in increment and decrement) the amount of money a shop can have for buying the players items. Similar to Geneforge. I'm not exactly sure how the 'unlimited money' switch should work, so here is just a simple suggestion. If the shop ends up having equal to or greater than 30000, the shop has unlimited money, but it can only be given that much with this call. Shops default to having unlimited money. short shop_money(short which_shop) - Returns how much money which_shop has to buy the player's items. Returns 30000 if the shop has unlimited money. void shop_selling_options(short which_shop,short selective_sell_category,short cant_sell_this_category,short can_resell) A call to change whether or not a shop will purchase certain kinds of goods, like in Exile. selective_sell_category is the variety of the item that is affected. The varieties are exactly the same as they are in the custom item scripts (like 1-handed,pants,ring,etc...). If cant_sell_this_category is 0, a shop may purchase items of the defined variety from the player. If 1, not. If can_resell is 0, the shop won't list the bought item back on its inventory for sale. This means that a shop can buy an item, but not resell it. All of the varieties default to being sellable by the player when possible, and can be resold by the merchant. Obviously, all this just ADDS to the shop system. Nothing pre-existing is changed, but I am kind of asking for all the shop features from all the other games. short item_loc_x(short which_item) - Returns the x of the location of item which_item. which_item refers to the items ID in the scenario editor. short item_loc_y(short which_item) - Returns the y of the location of item which_item. which_item refers to the items ID in the scenario editor. void redo_lights() - Automatically recalculates the lighting in the level, especially useful graphically when regarding how much light is being given off by terrain because the lighting isn't refreshed even when you redraw the terrain and the light source is removed. void calculate_ticks_forward(short num_ticks) - Makes the game calculate num_ticks forward, and of course will act upon these calculations. To my understanding, set_ticks_forward() only makes the scenario time increase, but setting the ticks forward 20 times won't make the NPCs move 20 times, nor will it immediately trigger timed events. This would be very useful for opening and closing doors and such, because these actions do not currently take up ANY 'time'. You could open a door and see a bunch of monsters, then you could close it and they wouldn't have seen you. EDIT: Sorry for not noticing those many nuances of the shopping calls. I always thought shops were somewhat impermeable. Also fixed tons of minor typos and terrible oversights in the suggestions. Now, as I understand it, you all want force_start_day(-1) to completely remove dates (years, months, and calendar days), and set_year(-1) to remove years and months only. [ Monday, August 02, 2004 14:21: Message edited by: Keep ] -------------------- Thuryl: I mean, most of us don't go around consuming our own bodily fluids, no matter how delicious they are. ==== Alorael: War and violence would end if we all had each other's babies! ==== Drakefyre: Those are hideous mangos. Posts: 1415 | Registered: Thursday, March 27 2003 08:00 |
Off With Their Heads
Member # 4045
|
written Monday, August 2 2004 13:50
Profile
Homepage
Keep's suggestions, spelled out in this way, sound good to me. The call add_shop_mode has to be changed one way or another (because it has a bug right now anyway), so making it able to handle negative numbers and giving us a way of checking values seems better than just fixing the bug so that it works as described in the docs. One more that I just remembered: void set_char_presence_status(short which_char,short which_status) To serve as a way to set the status checked in char_status (whether the character is dead, not present, etc), as opposed to the status checked in get_char_status (whether the character is blessed, hasted, etc) which is already settable. One could do neat things with splitting up the party this way. EDIT: Calculating ticks forward would be nice, but that's an engine change, and it seems unlikely. What I meant with set_year and force_start_day is that force_start_day(-1) right now removes the months and years from the game, but the days still show up. If we got set_year, we could make set_year do what force_start_day(-1) does right now and make force_start_day(-1) take out displaying even the days themselves. That would be much more extreme, I imagine, because the player wouldn't know when special abilities regenerated, but the designer could figure something out, I'm sure. Or we could not. It doesn't really matter that much. The set_year call would be cool, though. [ Monday, August 02, 2004 13:54: Message edited by: Kelandon ] -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |
Warrior
Member # 4202
|
written Tuesday, August 3 2004 00:30
Profile
Homepage
quote:I think that is a badly written part of the docs. What it means is, if a shop has 0 of an item, it doesn't have that item. (Although it would still be good if it did what you thought it did.) quote:These would have possibly very strange effects. What happens when a player picks up the item? And if the player puts the item down again? Carries it out of town and back in, or into another town? And what if various calls are used on the item? Someone who was carrying it killed? I doubt the engine would be able to handle what you want it to here. -------------------- Creator of the 3D Blades of Avernum Editor for Mac. Get it at Ingenious Isaac's Illusion, my web page. Better yet, get Battle for Wesnoth, a wonderful free TBS game. Posts: 192 | Registered: Sunday, April 4 2004 08:00 |
Law Bringer
Member # 2984
|
written Tuesday, August 3 2004 02:03
Profile
Homepage
I don't know what the correct syntax for such a call would be, but couldn't there be one for recalculating the light radii in a town? So when you delete a torch with a special, you can also make its light radius go away? -------------------- Encyclopaedia • Archives • Members • RSS [Topic / Forum] • Blog • Polaris • NaNoWriMo Look on my works, ye mighty, and despair. I have a love of woodwind instruments. Posts: 8752 | Registered: Wednesday, May 14 2003 07:00 |
Warrior
Member # 4202
|
written Tuesday, August 3 2004 10:47
Profile
Homepage
quote:void set_up_lights() (I actually copied that from the Blades of Avernum Editor source code) -------------------- Creator of the 3D Blades of Avernum Editor for Mac. Get it at Ingenious Isaac's Illusion, my web page. Better yet, get Battle for Wesnoth, a wonderful free TBS game. Posts: 192 | Registered: Sunday, April 4 2004 08:00 |
Off With Their Heads
Member # 4045
|
written Tuesday, August 3 2004 11:32
Profile
Homepage
For the item_loc_x and item_loc_y calls, I think the point is exactly what you're describing Isaac, that the item could move around. BoA would have to recognize two things: an item on the ground and an item being carried. If it's on the ground, it returns its coordinates. If it's being carried, it returns the coordinates of the character who's carrying it. If it's not in the town, it returns -1. I think this would be possible without changing the engine, although it would probably be difficult to program. -------------------- Arancaytar: Every time you ask people to compare TM and Kel, you endanger the poor, fluffy kittens. Smoo: Get ready to face the walls! Ephesos: In conclusion, yarr. Kelandon's Pink and Pretty Page!!: the authorized location for all things by me The Archive of all released BoE scenarios ever Posts: 7968 | Registered: Saturday, February 28 2004 08:00 |