This is a guide for how to create new specfuns for AFKMud.
Specfuns in Smaug require the following steps:
1. The code for the specfun itself.
2. A DECLARE_SPEC_FUN statement in special.c
3. 2 entries in the specfun tables in special.c
For AFKMud, steps 2 and 3 are not required. Step 1 needs to be done in a slightly different manner. For a specfun to work, it must be of type SPECF instead of bool.
bool some_special( CHAR_DATA *ch )
SPECF some_special( CHAR_DATA *ch )
The main difference is in the use of the SPECF macro. This was necessary in order to get g++ to accept the use of the dlsym code while also retaining compatibility with plain gcc for those who prefer that. The details aren't terribly important to know.
You will then need to add the name of the specfun to the specfuns.dat file in your system directory so the code will be able to populate the OLC tables with it. Just follow the format of the ones already in it to accomplish that.
Converting specfuns from Smaug code will need to keep these changes in mind to make those specfuns work.