This topic is just a place for me to keep track of the changes I make from one version to another, in this case from 2.42.1 to 2.42.2. It is not the complete list of stuff in the next drop, just the stuff I have completed to date. I will edit this post as I complete changes and start a new topic for each new release.
1) Body, Venom, Shell and Slime now displayed in bot properties dialog. (Yes, you can get these through the console, but having them in the dialog is more convienent and as these are already calculated, there is no computation cost and it only takes about 4 lines of code to display them, so it's easy to do.)
2) General cosmetic cleanup of bot properties dialog (grouping fields into logical groups, some field alignment.)
3) The tool tip text of a label in a graph now displays the last graph datapoint for that series. Simply hover the mouse over the label to display the value.
4) Overflow protection in ManageBody() . Added the following line:
If .BODY < -32000 Then .BODY = -32000 'Ericl 4/6/2006 Overflow protection.
Not certain how it happened, maybe something to do with altzheimers, but I caught a crash and traced it back to here where .BODY was < -2^15 so I added this protection. Does not address whatever the underlying issue is, but prevents the crash.
5) Added similar protections against large magnitude negative sysvar values in VoluntaryForces which limits the magnitude of the resulting calculated acceleration vector to 40 and limits the energy cost to be between -100 and +100.
6) Added a COND flow statement counter in ExceuteDNA() so that rob(n).condnum now actually gets updated. There was no code to keep track of this before, which is why the "number of cond statements" graph never worked. It works now.
7) ExecuteDNA now updates rob(n).genenum correctly for the robot with the focus. This means that "number of genes" now displays correctly in the robot properties dialog.
The "Bot Insertion" dropdown was not getting populated after loading a sim. The work around was to open the Options dialog then hit the Change or Start New button. Added code in simload() to populate it directly from the loaded sim info so that this is no longer necessary.
9) Moved the initialization of SimOpts.TotRunCycle from StartSimul() to OptionsForm.Startnew_Click() so that changing the settings for a sim no longer zeros out the cycles counter in the status bar. Only starting a new simulation will zero the counter. This is a personal preference thing. It did not make sense to me to reset the cycles counter when small changes are made to a sim such as tweaking the number of veggies. Let me know if anyone has strong feelings the other way.
10) Cleaned up graph titles
11) Age graph now in displayed in hundred's of cycles. Previously, since max graph value is 32000, any bots older than 32000 cycles would just be topped out. Now displays ages up to 3,200,000 cycles.
12) 'Reset All Graphs' in the graph dropdown now resets the graphs immediatly instead of waiting until the next update interval.
13) Memory shots now respect the value in Shot Formation on the costs dialog. Memory shots were free before.
14) Removed an entire loop in the core routine UpdateBots() which simply checked for value overflows (.nrg > 3200) by combining it with the loop above. Shoudl not have any impact on logic, but should have a small (positive) improvement on perfromance.
See #20 Below
16) Addressed crashing bug where Mutations button was pressed on Species tab of options dialog without first selecting a species in the listbox. Now a msgbox is presented which requests that the user select a species.
17) Fixed another overflow bug where a bot fully loaded with venom takes a high magnitude venom shot FROM A CONSPEC. The venom shot got added to the bot's own and tucked into the mem array without a check for overflow. I've now added a check, venom will now get clipped at 32000 in such cases. It should be noted that in the case of conspec venom shots, shell is not factorred in. That is, a bot's shell has no impact on conspec venom shots currently.
18) Added initialization code for the DecayType control in DispSettings() so that its value gets displayed correctly when the options dialog is opened. DecayType was getting saved and loaded from settings and sim files correctly, but the value of the radio button array on the dialog was not getting initialized correctly when the dialog was opened.
19) Changed the event which saved the value of DecayText and FrequencyText into the TmpOpts structure from lostfocus to change. Not sure why these guys were hooked to the lostfocus event, but this is why the values of these controls only got saved into the TmpOpts structure (and thus saved into settings and/or sim files or persisted across dialog invocations) when you clicked away BEFORE hitting Start New or Change.
20) Added three new costs related to aging available on the Advanced Costs dialog. The first, Age Cost (const AGECOST in the code) allows the user to specify a cost per cycle in nrg to charge the bot. The second cost (const AGECOSTSTART) in the code is less of a cost and more of a trigger value which determines at what age in cycles to begin charging the Age Cost. The third (AGECOSTMAKELOG in the code) is a checkbox which specifies whether to increase the Age Cost over time by multiplying it by the log of the bots age. These age costs replace the per cycle cost of being alive in #15 above.
21) Fixed a crashing integer overflow bug in VShoot() where a large value in mem(VshootSys) was being multipiled by 20. This one took a long time to finially catch in VB!
22) Fixed total cycles count bug where TmpOpts.TotRunCycle was not getting initialized correctly from SimOpts.TotRunCycle when the options dialog was opened. This meant whatever value was in TmpOpts.TotRunCycle got saved back into the SimOpts structure when Change or Start New was clicked, which reset the cycles counter back to the last time the options were changed or a saved sim file loaded.
23) Added logic to check for older versions of settings files and special logic for lastexit.set and default.set. Program will now refuse to load older settings files and will display an appropriate warning message.
24) Removed the limits keeping rob(n).age capped at 32000. It was already defined as Long in the robot structure. Now it can rise above 32000. The sysvar robage will still top out at 32000 in the mem array as it is Integer valued, but the actual age of the is now accuratly tracked by the system. I think this may also have addressed a problem with bots older than 32000 cycles not mutating.
25) The robot age in cycles is now displayed in the robot properties dialog (not the age in 100's of cycles) and it can rise aboce 32000.