Jump to content

Feature Suggestions, Bug Reports, and so on


Celtic Minstrel

Recommended Posts

All node types could be given the ability to display small messages. Currently 53 out of the 149 standard types cannot do so.

Nine node types can display six strings of dialog: 55, 56, 57, 58, 59, 60, 188, 189, 190. But they must display consecutive strings. This limitation would be harder to remove, you would need to rewrite the special node data structure to make provision for recording the strings used.

Link to comment
Share on other sites

Ishad, I have already altered the special node structure a little in the Mac version, such that it might be possible to specify both the first and the last string in a dialog, so that space is not wasted due to dialogs with less than 6 strings. (Or the first and the total number.)

 

Also, a few of the nodes use all their fields, so it may be little difficult to give them the ability to display messages (not small messages). I'm thinking of the rectangle nodes here. However, with the extra fields in the special node structure, it could probably be arranged.

 

Cryolemon, that is actually a good idea.

Link to comment
Share on other sites

Small messages are a matter of "char edit_spec_mess_mess[256] = {…}"

The 53 nodes that don't have any provision for small messages are the ones that a value of 0 for this. So all you need to do is replace the 0s with 1s. Here values of 2,4,5 mean a six paragraph dialog box. While 3 is outdoor store, you could activate the m2 here.

 

Hotkeys for menu items: you didn't like my A,B,C,D approach, so I am working on something more like the Word, Excel approach:

C "Create New Town", 101

S "Scenario Details", 103

O "Scenario Intro Text", 104

L "Set Starting Location: Town", 105

L "Set Starting Location: Outdoors", 106

N " Edit Special Nodes", 109

T " Edit Scenario Text", 110

I " Import Town", 111

R " Edit Saved Item Rectangles", 112

H " Edit Horses", 113

B " Edit Boats", 114

V " Set Variable Town Entry", 115

E " Set Scenario Event Timers", 116

P " Edit Item Placement Shortcuts", 117

D " Delete Last Town", 118

 

Reports are trickier:

" Write Data To Text File", 119

" Do Full Text Dump", 120

" Scenario Shopping Text Dump", 121

" Scenario Monster Dump", 122

" Scenario Specials Dump", 123

" Scenario Object Data Dump", 124

 

Link to comment
Share on other sites

If these are alt-shortcuts, that's fine. If they're ctrl-shortcuts, it's not.

 

Originally Posted By: Ishad Nha
Small messages are a matter of "char edit_spec_mess_mess[256] = {…}"

The 53 nodes that don't have any provision for small messages are the ones that a value of 0 for this. So all you need to do is replace the 0s with 1s. Here values of 2,4,5 mean a six paragraph dialog box. While 3 is outdoor store, you could activate the m2 here.

...clarify, please? I suspect it would not be that simple...
Link to comment
Share on other sites

Emphatically they are Alt + (Char) shortcuts. They could not be Ctrl + (Char) shortcuts, all the major Ctrl + (Char) shortcut letters have been used here.

The six reports are proving hard to find convincing and memorable letter assignments for, I will have to scrape up something.

 

My understanding of the Windows code:

every node has been assigned a value in the array char edit_spec_mess_mess[256] = {}, this is found in Keydlgs.cpp. Statistically the breakdown is as follows: 53 nodes have a value of 0, 86 have a value of 1, 3 have a value of 2, only 1 has a value of 3, 3 have a value of 4 and 3 have a value of 5.

If a node has a value of 0 then it has no provision for a message, type 4: Secret Passage had a value of 0 hence it can't display a message but type 6: Flip Flag has a value of 1 so you can add a message to it.

Explanation of types 2,4,5 is best given by naming them:

2 188 Lever

2 189 Portal

2 190 Stairway

4 55 Display Dialog (Dialog pic)

4 56 Display Dialog (Terrain pic)

4 57 Display Dialog (Monster pic)

5 58 Give Item (Dialog pic)

5 59 Give Item (Terrain pic)

5 60 Give Item (Monster pic)

 

There is only one node with a value of 3:

3 229 Outdoor Store

 

Edit:

I just changed all the "0," in the array to "1,". Now any node seems able to accept the ability to display messages.

Link to comment
Share on other sites

But some nodes use the "message" fields for other purposes.

 

As for the alt-shortcuts, if you can't think of a memorable shortcut, don't worry – the menu has to be open to use the shortcut anyway, right? So people will be able to see the underlined letter.

Link to comment
Share on other sites

I am fairly good at understanding this, I had to learn it to ensure the node printouts, for the Editor reports, all worked properly.

Nodes with value 0 use the two message slots for nothing, see the Windows Keydlgs.cpp file around line 617:

CDSN(822,4,store_spec_node.m1);

CDSN(822,5,store_spec_node.m2);

switch (edit_spec_mess_mess[store_spec_node.type]) {

 

We might be able to give most node types the option to have either two messages or more. Variable m1 lists the first message string and m2 says how many consecutive strings there are. It is possible for m2 to have a second function, scenario.special_items serves two purposes for instance.

Link to comment
Share on other sites

Originally Posted By: Ishad Nha
We might be able to give most node types the option to have either two messages or more. Variable m1 lists the first message string and m2 says how many consecutive strings there are.
Not gonna happen, sorry. If this is desired, one can simply add in a dedicated dialog node to display the strings. There's no point in including it as part of every single node. I probably will add the ability for the small message dialogs to specify a title, though.
Link to comment
Share on other sites

But it's redundant. It's not like nodes will be precious things that are easily used up – there'll be a total of 131,070 nodes available at any given time, 65,535 local and 65,535 global. In fact, the limits may even be higher than that. The other thing is that the message dialogs only support up to three strings (two long ones and a short title string).

Link to comment
Share on other sites

You could choose to have the two-string standard dialog or the six-string deluxe version used by a node of any type. Currently only a few node types have the six string variety, they are the ones with the values 2,4,5: see my post #185800 - Oct 25, 2009 1:14 AM.

This will require double use of m2.

Link to comment
Share on other sites

Statistical breakdown is as follows:

53 nodes have a value of 0,

86 have a value of 1,

3 have a value of 2,

1 has a value of 3,

3 have a value of 4 and

3 have a value of 5.

If a node has a value of 0,1,2 there is no problem. That means there is no problem with 142 out of 149.

There is a problem with need for double use of m2 when value is 4, this is a very simple fix. Only 4 out of 149 are in any way complex.

Link to comment
Share on other sites

Dialog box hot keys, the nominations are:

Abilities, Accept *, Advanced, Advantages, Affect PCs, Alchemy, Animated, Answer *, Approach *, Ask *, Attack *,

Bash Door, Burn *, Buy *, Buy *, Buy x10,

Cancel *, Cast *, Choose, Clear Special, Climb *, Close *, Create, Create, Create New, Create/Edit,

Delete, Delete, Destroy *, Done *, Drink *,

Edit Abilities, Enter *,

Flee *, Free *,

General, General Abil., Get *, Give *, Go Back, Graphic, Graphic,

Heal Party,

If-Thens, Insert *, Invisible!, Items ,

Just Quit,

Keep *,

Land *, Leave *, Leave *,

Mage Spells, Missiles,

Name , New Game, Next Tip, No *, NonSpell Use,

OK *, One Shots, Onward *, Open *, Other Spells, Out Specs,

Pay *, Pick Lock, Pick Picture, Pray *, Priest Spells, Pull *, Push *,

Quit *,

Race , Race/Special, Read *, Reagents, Record, Refuse *, Remove *, Rest *, Restart, Restore,

Save *, Save First, Select Icon, Sell , Sit *, Skill , Spell Usable, Spells , Stand *, Steal *, Step In *,

Take *, Touch *, Town Specs, Train ,

Under *,

Wait *, Weapon Abil,

Yes *,

As the keys are assigned by an array you can use letters and characters not occurring in the button label.

An asterisk means that the label is one of the 53 allowed in choosing buttons for nodes like types 55 thru 60.

My suggestions include:

Bash Door

Enter *,

Flee

Heal Party,

Just Quit,

Keep *,

Land *, Leave *, Leave *,

No *

Open

Pick Lock

Quit *,

Record, Restart, Restore,

Save *, Save First

Under *,

Wait *Yes *,

Link to comment
Share on other sites

GAH! Could you stop posting long lists in this thread? Or at least enclose the list in spoiler tags.

 

Anyway...

 

Originally Posted By: Ishad Nha
There is a problem with need for double use of m2 when value is 4, this is a very simple fix. Only 4 out of 149 are in any way complex.
Maybe, but I do not want to do it. It's redundant.

 

Originally Posted By: Ishad Nha
As the keys are assigned by an array you can use letters and characters not occurring in the button label.

An asterisk means that the label is one of the 53 allowed in choosing buttons for nodes like types 55 thru 60.

I'd say don't bother, as your work will not make it into the final version (well, assuming the new dialog engine works out). The XML format I'm using allows any name at all to be used for a button, and does not support default hotkeys for a given button name (all hotkeys are explicitly specified in the format). I do agree that more hotkeys might be nice, though.
Link to comment
Share on other sites

I'd like to point out that one of the benefits of the current Display Message node style messages (where you enter two string numbers) is that you can reuse one message and change the other, without having to copy-paste as you would if you were forced to use consecutive strings a la Display Dialogue node.

Link to comment
Share on other sites

Originally Posted By: The Almighty Doer of Stuff
I'd like to point out that one of the benefits of the current Display Message node style messages (where you enter two string numbers) is that you can reuse one message and change the other, without having to copy-paste as you would if you were forced to use consecutive strings a la Display Dialogue node.


Hm... it would be nice if that flexibility could be added to the regular Display Dialog nodes as well... but even with my proposed expansion of the special node record I don't think it would fit.
Link to comment
Share on other sites

Originally Posted By: Ishad Nha
Individual choice of each of the 6 paragraphs in Display Dialog: you would need one variable for each paragraph, thus you would need five extra variables in the special_node_type structure.
You could probably make do with four extra variables... not sure though.

Originally Posted By: Ishad Nha
Is the new version of BoE Windows or cross-platform? How long before it reaches beta stage?
Hopefully cross-platform, and at the current rate of development, quite awhile.

I expect there will be spurts of development over summer and Christmas holidays, but at the moment I'm not doing anything at all on it.
Link to comment
Share on other sites

  • 2 weeks later...

BoE HLPM scenarios do exist already. One alternative to them: the training screen can have provision for writing in the new stats, not just clicking them up one at a time. This is already done for gold, food, XP and day in the Character Editor. Level can be set by entering in the new XP total, or vice versa. This could be added to the Character Editor or to the game or both.

Link to comment
Share on other sites

The reason this is not already the case is that version of the dialog engine compiled into the the character editor and the game did not support more than one editable text field per dialog. The new engine should support that, since it'll be used in all three programs, and so your suggestion (which is a very good one) will be possible. We'll also be able to merge the Set SDF dialogs in the game into a single dialog, and other convenient things.

Link to comment
Share on other sites

  • 2 weeks later...

Hmmm...would there be a way ot taking the xy co-ordinates of specific creatures at various times, so you could cause things to happen where they were, even if they were moving around?

 

Say, if someone had been killed, you could create an undead creature on the spot where they were...if you wanted to be really tricky, you could have that only happen if they were killed by certain things, but that'd likely be too much mucking about.

Link to comment
Share on other sites

I think the plan was to make that possible, but only in a special called when the creature dies. But I can't remember.

 

The idea could certainly be expanded like you suggest, though.

 

 

It would be implemented using pointers, in case you were wondering. So, when a creature dies, two "special pointers" would be set to its x and y coordinates. (These special pointers would be set in other cases too, to the x and y coordinates of the space the special was triggered on.) To support the more general method you suggest, it would be as simple as adding a node to get two normal pointers to refer to a creature's location. (An interesting side-effect is that these pointers would auto-update as the creature moves.) Alternatively, adding a node to copy the location to a pair of stuff done flags. (This would not have the aforementioned side-effect.)

Link to comment
Share on other sites

  • 3 months later...

I don't know the ins and outs of the material or how possible what I hope for is. Nevertheless, here's my wish.

 

I wish that opponents could have better AI and better range of spells to use to defend/augment themselves and allies or harm/hinder their enemies. And when I mean spells I mean the same spells that the PCs have access to.

 

An enemy priest at his last spell points uses symbiosis to cure his powerful warrior friend's wounds at his own life's expense. A powerful priest blocks the PCs in with a blade wall, or casts a protective circle so he can regenerate HP/MP after all his comrades have died. A mage decides to switch from kill to ice bolt, or ice bolt to flame upon realizing they don't have enough MP left to cast the better spell. An enemy mage using arrow spells (flame, venom, death) when it seems appropriate, or using dispel fields to clear a path through magical flames.

 

That sort of stuff.

 

Probably impossible given the game's age, but still that's the sort of thing I wish for.

Link to comment
Share on other sites

It's not impossible, but it would require a good deal of work. To do it, one would first have to pick apart the existing AI code, which from what I recall of glancing at it is rather. . . monolithic. The next step would then be to try to implement improvements. The main thing that would be difficult about that would be to break down methods for making good combat choices into steps simple enough to be coded without having the complexity get so out of control that it's impractical to write the code or that it's overly slow for the game to run.

 

Honestly, the first step is what's most likely to prevent anyone from making a serious start on such a thing (because it's boring), even though the second has most of the real challenge. Even if you don't yourself want to dive into the code, but you want to try to contribute to better AI, you could work on more rigorously defining rules that could actually be coded. That is to say, answering questions like (based on your suggestions above):

-How should a priest determine when it's worthwhile to sacrifice itself to heal an ally. In particular, how would you identify an ally deserving of this?

-When exactly is it to be considered advantageous to try to 'block the PCs in'? (This requires keeping in mind that the game doesn't view groups of characters as shapes the way the human brain does, all it has is a list of coordinates, from which it would need to determine whether the groups of allies and enemies are well enough separated that a wall could divide them.)

-When exactly is one attack spell more preferable than another, given the relative costs of the spells and the target's resistances or immunities?

Link to comment
Share on other sites

Could there be an easier way of doing this? Say, choose which spells each monster has access to, and make some preferred over others. Then, in each scenario, the creator places monsters that like certain spells in the most logical places for them to be used.

 

Not exactly what was being asked for, and not as powerful, but probably alot easier and still useful.

Link to comment
Share on other sites

Eventually there may be a facility to create your own AI, as in BoA, but since that doesn't fit especially well in the node system I wouldn't give it priority.

 

But giving the designer some options to tweak is something that can be considered.

Link to comment
Share on other sites

There's no plan for music specifically, but a facility for custom sounds will be added, and I've already implemented a convenient way to do background sounds in the Mac version. So you could do music, if you wanted to. Once the relevant version is available, naturally.

Link to comment
Share on other sites

Regarding AI, I have a much simpler suggestion... Currently enemy mages like to spam summons, which prolongs battles but makes them rather boring. I say they should instead favor attack and slow/curse spells, trying to kill the party as quickly as possible.

 

If assigning a statistical weight to various types of spells isn't feasible, a good way to do this might be to simply remove most of the summoning spells from those available to monsters. IMO "Demon" and "Guardian" should stay, as they summon fairly nasty opponents; but the others just clog the battlefield.

Link to comment
Share on other sites

  • 2 weeks later...

Scenario Editor: When opening a new town it would be nice if the input field was already selected.

 

Game: I navigate by holding down the arrow keys, so I tend to bump into a lot of walls. There should be a feature to disable repeat 'Blocked' messages, so the event box isn't filled with hundreds of "Blocked: South" messages.

Link to comment
Share on other sites

Ah yes, the annoying Blocked: South messages. (Doesn't it also print a message for every step you take?) Adding a preference to disable those would be nice.

 

(By the way, you should also submit feature requests and bug reports to the Google code site, where they will be less likely to be missed. This applies to anyone submitting feature requests or bug reports.)

Link to comment
Share on other sites

I'm running the latest CBoE binaries across the board, and I'll be using trunk as soon as I can get Dev-Cpp to compile correctly. (any help with that would be nice, but this prolly isn't the best topic to bring it up in).

 

It only prints error messages when you're walking into tge wall, if that's what you mean. So having your pc repeatedly bash it's face in on tge same chunk of wall will get those annoying messages. (maybe it could be replaced by a message like 'Blocked: South (x27)', just incrimenting the number in parenthesis each time).

Link to comment
Share on other sites

Originally Posted By: Taslim
as soon as I can get Dev-Cpp to compile correctly. (any help with that would be nice, but this prolly isn't the best topic to bring it up in).

Quick answer : CBoE compiles correctly on Dev-Cpp, but the compiler throws a general error (your code is messed up etc) because too many warnings occurs while linking (the executable is produced anyway).
The problem lies in the way Dev-Cpp handle windows ressources compiling/linking : it fuses all availaible .rc into one big ressource file and windres/link using it.
Other IDE (Code::Blocks for citing only one) don't do such a thing, thus to be able to compile, ressources files have to be interwened (using mutual inclusions). The problem is that, with those inclusions, when Dev-Cpp fuse the differents .rc into the big file, there's multiple redefinitions of every ressources (because of the inclusions) making the compiler spits lots of warning finally making Dev-Cpp throws a general error.

To make the general error go away, just delete the following block on each .rc file :
#ifndef _INCLUDED_RC
...
#endif


Hope it helps,
Chokboyz

Edit :
Originally Posted By: Taslim
Scenario Editor: When opening a new town it would be nice if the input field was already selected.

By the way, are you speaking of the "Load Another Town" option ? If so, the focus is on the input field already in my version ...
Link to comment
Share on other sites

  • 1 month later...

I believe that is on the to-do list.

 

 

Dintiradan, Student of Trinity, and one or two others recently mentioned an idea that might be nice to implement in BoE: a system to provide alternatives in dialogue text depending on the size of your party (ie to switch from singular with single-player parties to plural with larger parties).

 

If we use Boost.Regex, such a change would, I think, be fairly simple.

Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

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

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