AFKMud 2.2.0 has been released.
This is a combination of new features, fixed bugs, and some remaining imports from Smaug 1.8b that were missed.
For details, check the AFKMud repository on GitHub
. The commits ought to be detailed enough.
Changes for AFKMud 2.2.0
Imported Smaug 1.8b liquid puddles. These act as temporary sources of liquids to fill up waterskins etc.
Imported Smaug 1.8b player journals code. This allows players to take notes in a journal item.
Imported new Smaug 1.8b "noyell", "noquit", "nowhere", and "notrack" flags for rooms.
Imported Smaug 1.8b ECHOTAR_PK support for echo messages meant only for PK players.
Imported Smaug 1.8b "defeats" command for clans.
Imported Smaug 1.8b Shell/Husk body part for mobs.
Imported more detailed listings of mudprogs attached to mobs, objs, and rooms.
Added area wide silence flag and set up support for it in the channel code.
Added Smaug 1.8b login messages for players who have gone linkdead.
Added Smaug 1.8b permanent, deathdrop, and nofill item flags.
Added Smaug 1.8b nosteal and stopscript mob flags.
Added Smaug 1.8b cleave and grapple skills.
Added Smaug 1.8b emote, login, void, load, and greetinfight mudprogs.
Added a new print_array_string() function to print out the text names of various flags in a list. Mainly useful for OLC.
Added equipment slots for hooves and tails.
The old council system that was removed many moons ago has been brought back as "Realms".
The ban module has been reimplemented and has full support for CIDR bans included.
Switched all uses of NULL to the new C++11 nullptr definition. This change means AFKMud now requires GCC version 4.6 or higher to compile.
Backtraces from the bug() command will now display demangled function names and will no longer add bug() to the backtrace list.
Updated restore command now allows selective restoration of players based on the deity they've devoted to. [Smaug 1.8b]
Enforcement flags added to block players from setting bios and descriptions.
All enforcement actions will now force the player to save to prevent them from dodging punishment by going linkdead or causing a crash.
Auctions will no longer accept clan/guild objects for sale.
Socials can now be given a minimum position they can be used from.
The MD5 encryption module has been dropped entirely. There was little point in keeping it around anymore.
Channel history processing now uses a std::list of classes rather than an ugly mess of disjointed char* and integer values that was prone to potential crashes.
Say, Tell, and IMC based histories have been converted to use std::vectors of std::strings.
String comparison functions in editor.cpp now use OS level library calls.
The unused Search.cpp code has been removed.
The generic city guard mob was missing from void.are.
The generic map object was missing from void.are.
Fixed leading and trailing whitespace on channel messages. [Smaug 1.8b]
Some mudprog speech triggers were not checking for the player's death before testing another one after it. This could lead to crashes.
No longer possible to send tells and whispers to people you are ignoring. [Smaug 1.8b]
Some calls to the act() function were sending 0 instead of an explicit NULL.
The collect_followers() function should not have been called from anywhere outside of enter_map() and leave_map() due to the high potential for inducing crashes.
Removed a few bits of code that were specific to Alsherok and not intended to be in the release.
Fixed some missing portions of the Smaug 1.8b room weight and lighting code that were missed.
Fix in affect_modify for dealing with weapon wielding and strength modification that should cause you to drop them. [Smaug 1.8b]
Trying to follow a player who is ignoring you is now properly blocked. [Smaug 1.8b]
Fixed a crash bug where it was possible to call for a clan roster update on an NPC or a player that isn't in one.
Fix for clans being able to induct non-PK players. [Smaug 1.8b]
Fix for incorrectly setting player positions when a shove or drag command fails to process. [Smaug 1.8b]
Fix for edit buffers not terminating properly if the last edited line was at the maximum number of allowed lines. [Smaug 1.8b]
Crash bug fixed in liquids code if the vnum value was outside the array bounds of the table.
Fix to prevent the Supermob from taking damage and possibly dragging him into a fight. [Smaug 1.8b]
Several hardcoded vnums have been replaced with proper definitions in mudcfg.h.
Fix in ris_save to check for the no_ris flags before returning a result. [Smaug 1.8b]
Mentalstate will no longer be prone to wild swings when curing poison. [Smaug 1.8b]
Exit flags were not handled properly when a passage way was dug out with an EX_DIG exit. [Smaug 1.8b]
Scribing and Brewing will now impose the expected WAIT_STATE penalty when used. [Smaug 1.8b]
The mudprog variable data has now been fixed and is properly implemented.
Setting all skills to 100 on a player does not properly handle adept maximization.
Mudprog driver had strong bias in "random" pick.
Due to a botched understanding of how door randomizer resets work, it was not possible to add one in the OLC.
Weather echo messages were still being delivered to people in indoor sector types.
Mobs who have the pass door effect on them never actually attempt to use it because the flags were not being checked.
It was possible to look at the sky while in an indoor sector.
mpoload does not properly drop items to the ground that are loaded by object or room progs.
obj_data::get_real_weight was returning the wrong weight value and causing object weight calculations to be far too light.
__FUNCTION__ is apparently not a portable method for embedding a function name. All instances have been swapped with __func__ instead.
Memory leak in fread_memberlist() if the function drops out the bottom of the for loop for some reason.
Improper bounds checking for some loops involving static buffers.
Memory leak in do_renumber if r_area is valid and sanity checks prevented it from being processed.
Other minor issues pointed out by a CPPCheck analysis fixed. Not very many.
Squashed issues uncovered by the -Wextra flag.
Fixed warnings pulled up by -Wswitch-default and -Wuseless-cast.
Cleared all warnings resulting from -Wformat=2 -Wmissing-format-attribute.