Pages:<< prev 1 next >>
#1 Jan 14, 2025 3:20 pm
Black Hand
GroupAdministrators
Posts3,722
JoinedJan 1, 2002
AFKMud 2.5.0 has been released.
This is a major update introducing new material and heavily upgrading existing functionality in addition to fixing bugs.
For details, check the AFKMud repository on GitHub. The commits ought to be detailed enough.
Changes for AFKMud 2.5.0
New Material
A new backtrace function was added that uses the C++23 standard library calls to generate traces for the bug() function. Fallback support is available for systems where GCC 13 and up are not yet available.
Changes
Massive overhaul of the Overland support. The system is no longer bound to a static set of hardcoded maps. Instead they are now loaded during boot from regular data files in the Maps folder.
Please note: Your existing entrances, landmarks, and landing sites will need to be manually updated to fit the new system. See the provided files in the codebase for how to handle that.
Sorry, but there was no way to automatically convert the old data into the new system because it was stupidly reliant on the hardcoded tables.
You can now create, edit, and destroy map files on demand while online without any need for code support. Including generating the png file for a map on the fly as needed.
Includes support for "maps" that have no overland view. These are treated as "planes" of separation for regular areas, such as the Astral Plane or the Immortal zone (void.are).
skyship.h has been removed. Its contents are now part of overland.h. Make sure you move any addition you've made in this file into overland.h.
Moved the check_area_conflicts functions over to build.cpp since they're more relevant there than with area file conversions.
Capitalized some playable races and NPC classes which were being displayed as lowercase.
Added a guard for the Astral Walk spell if the astral.are file is not present in the game.
Player config values have been trimmed. Several useless values existed, and for some asinine reason the room number a player saved in was stored with them. Room number is now stored separately. SAVEVERSION has been raised to 24 to correct older pfiles.
The level for the donate command has been reduced from 10 to 5.
Valgrind stuff has been removed given that GCC has native memory sanitization now.
Bug Fixes
Fixed a memory leak when loading password hashes from players. https://smaugmuds.afkmods.com/topic/pwd-memory-leak-5002/
Fixed the "&d" being visible when "Cleaning up Memory" is displayed. This is the last thing a logged in immortal will see before the connection closes and it wasn't resetting color as expected.
do_vassign doesn't need to do double calls to assign_area.
Fixed some instances where do_ commands were being called with a NULL argument. C++23 doesn't like that.
Similarly, fixed some instances where returning a NULL string is no longer allowed.
Corrected a few places where the wrong numerical type was used to load a number from a file.
The social table did not have its default memory allocation done during boot.
The return value for distance calculations in the environment code had no reason to be downcast to int.
During player saves, the mob file version was being written, but never read during reload.
Loading shell commands during boot will no longer trigger an erroneous EOF error.
Reset chances on the commands that have a random chance value were not correcting for 0%. It is invalid to have a reset with a 0% chance of happening. These will now be corrected to 1% at boot.
Fixed a crash in the overland code when the player is at or near max level and check_random_mobs tries to spawn something.
Fixed the setexit command not working properly to set an overland exit to go to a normal room.
This is a major update introducing new material and heavily upgrading existing functionality in addition to fixing bugs.
For details, check the AFKMud repository on GitHub. The commits ought to be detailed enough.
Changes for AFKMud 2.5.0
New Material
A new backtrace function was added that uses the C++23 standard library calls to generate traces for the bug() function. Fallback support is available for systems where GCC 13 and up are not yet available.
Changes
Massive overhaul of the Overland support. The system is no longer bound to a static set of hardcoded maps. Instead they are now loaded during boot from regular data files in the Maps folder.
Please note: Your existing entrances, landmarks, and landing sites will need to be manually updated to fit the new system. See the provided files in the codebase for how to handle that.
Sorry, but there was no way to automatically convert the old data into the new system because it was stupidly reliant on the hardcoded tables.
You can now create, edit, and destroy map files on demand while online without any need for code support. Including generating the png file for a map on the fly as needed.
Includes support for "maps" that have no overland view. These are treated as "planes" of separation for regular areas, such as the Astral Plane or the Immortal zone (void.are).
skyship.h has been removed. Its contents are now part of overland.h. Make sure you move any addition you've made in this file into overland.h.
Moved the check_area_conflicts functions over to build.cpp since they're more relevant there than with area file conversions.
Capitalized some playable races and NPC classes which were being displayed as lowercase.
Added a guard for the Astral Walk spell if the astral.are file is not present in the game.
Player config values have been trimmed. Several useless values existed, and for some asinine reason the room number a player saved in was stored with them. Room number is now stored separately. SAVEVERSION has been raised to 24 to correct older pfiles.
The level for the donate command has been reduced from 10 to 5.
Valgrind stuff has been removed given that GCC has native memory sanitization now.
Bug Fixes
Fixed a memory leak when loading password hashes from players. https://smaugmuds.afkmods.com/topic/pwd-memory-leak-5002/
Fixed the "&d" being visible when "Cleaning up Memory" is displayed. This is the last thing a logged in immortal will see before the connection closes and it wasn't resetting color as expected.
do_vassign doesn't need to do double calls to assign_area.
Fixed some instances where do_ commands were being called with a NULL argument. C++23 doesn't like that.
Similarly, fixed some instances where returning a NULL string is no longer allowed.
Corrected a few places where the wrong numerical type was used to load a number from a file.
The social table did not have its default memory allocation done during boot.
The return value for distance calculations in the environment code had no reason to be downcast to int.
During player saves, the mob file version was being written, but never read during reload.
Loading shell commands during boot will no longer trigger an erroneous EOF error.
Reset chances on the commands that have a random chance value were not correcting for 0%. It is invalid to have a reset with a 0% chance of happening. These will now be corrected to 1% at boot.
Fixed a crash in the overland code when the player is at or near max level and check_random_mobs tries to spawn something.
Fixed the setexit command not working properly to set an overland exit to go to a normal room.
#2 Jan 14, 2025 3:27 pm
Black Hand
GroupAdministrators
Posts3,722
JoinedJan 1, 2002
When updating continent data to support the new system, some things need to be accounted for.
First - when porting your entrance data over from the entrances.dat file, the "OnMap" field needs to be left out. You will have to determine which maps belong to which numbers, because the old code foolishly just assumed the hardcoded table would be sufficient. So a block that looks like this:
Should look like this instead when being added to the proper *.cont file:
Second - When porting a #LANDMARK entry from the old landmkars.dat file, the first number value in the coordinates line must be dropped as this was the old hardcoded map value. So a block that looks like this:
Should end up looking like this in the *.cont file it needs to go to:
And finally - When porting a #LANDING_SITE entry from the old landing_sites.dat file, the first value in the Coordinates line needs to be dropped for the same reasons. So a block that looked like this:
Should end up looking like this in the appropriate *.cont file:
The new data files supplied with the codebase update should provide sufficient examples of how the data should be arranged in the new *.cont files.
First - when porting your entrance data over from the entrances.dat file, the "OnMap" field needs to be left out. You will have to determine which maps belong to which numbers, because the old code foolishly just assumed the hardcoded table would be sufficient. So a block that looks like this:
#ENTRANCE ToMap -1 OnMap 0 Here 500 500 There -1 -1 Vnum 50499 End
Should look like this instead when being added to the proper *.cont file:
#ENTRANCE ToMap -1 Here 500 500 There -1 -1 Vnum 50499 End
Second - When porting a #LANDMARK entry from the old landmkars.dat file, the first number value in the coordinates line must be dropped as this was the old hardcoded map value. So a block that looks like this:
#LANDMARK Coordinates 0 911 927 15 Description a white marble tower stands on top of the mountain range Isdesc 0 End
Should end up looking like this in the *.cont file it needs to go to:
#LANDMARK Coordinates 911 927 15 Description a white marble tower stands on top of the mountain range Isdesc 0 End
And finally - When porting a #LANDING_SITE entry from the old landing_sites.dat file, the first value in the Coordinates line needs to be dropped for the same reasons. So a block that looked like this:
#LANDING_SITE Coordinates 0 476 392 Area Bywater Cost 50000 End
Should end up looking like this in the appropriate *.cont file:
#LANDING_SITE Coordinates 476 392 Area Bywater Cost 50000 End
The new data files supplied with the codebase update should provide sufficient examples of how the data should be arranged in the new *.cont files.
Pages:<< prev 1 next >>