pgplus/bin/
pgplus/help_files/
pgplus/port_redirector/
pgplus/src/configure/makefiles/
 Information for programmers
 ---------------------------

This text file details some of the maor changes to the code.


 The pager
 ---------

The pager is now only called with two functions.

  pager(<player>,"<file>");

The original code had an additional flag which meant that you could force
the pager to be used even if the resident has asked for it not to. This
was pointless.

If you ever see any code like this:

  if (p->custom_flags & NO_PAGER)
    tell_player(p, oldstack);
  else
    pager(p, oldstack, 1);

then replace with just:

  pager(p, oldstack);

and it will do the same job.


 Backups
 -------

The original code (and all EW2 talkers) used the signal SIGUSR2 to trigger
backups from outside the talker via the use of crontabs.

This has been removed simply becuase there is no need to use crontabs
since the code automatically starts backups itself.


 Builder
 -------

The builder priv has been changed to the residency struct and replaces
SPARE15 (1<<25). This means that to check to see if someone is a builder
then you now use:

  if (p->residency & BUILDER)

This means that builder commands are not available to non-builders. All
pfiles using the old format are automatically converted to the new format
upon login.


 Minister
 --------

The minister priv has been changed to the residency struct and replaces
SPARE10 (1<<19). This means that to check to see if someone is a minister
then you now use:

  if (p->residency & MINISTER)

This means that minister commands are not available to non-ministers. All
pfiles using the old format are automatically converted to the new format
upon login.


 Anti-swear code
 ---------------

  This has been added for novelty value only really since the best way to
make sure people don't swear is to nicely grill it into them. However it
does stop people getting offended by the odd outburst and means that the
resident will soon realise that any careless language will just get
blanked. Also its a bit of fun :o)

  In clist.h there are two flags, M_SWEARc and F_SWEARc. All commands that
you will to have swear filtering on simply add to the end of the line (not
forgetting the |).

  F_SWEARc will cut out all swearing irrespective of where you are. This
           is ideal for commands that broadcast messages to more than one
           room (ie. "shout" and channels)

  M_SWEARc will cut out swearing if the player is in one of the main
           rooms. This is ideal for commands where you wouldn't want to
           prevent people swearing in their own rooms (ie. "say", "think"
           etc).

  Be careful swear filtering private commands like "tell" and "remote"
since many people will get annoying if they can't swear in a private
conversation.

  Currently, the major communication channels are censored excluding the
SU and Admin channels. What you filter, is up to you.

  Finally it is worth nothing that ALL words are filtered even if they are
part of another word. Consider Scunthorpe (a place in the UK), this will
be filtered to "S<snip>horpe" since the word "cunt" is in the filtered
database. If however we made it so that only full words are filtered then
words like "crappy", "shittiest" and more would not get filtered. Since
there are a lot less real words with rude words in them, the first
option is preferable IMO but you may want to change it.


 Spodlist code
 -------------

Playground Plus now incorporates dynamic spodlist code which means there
is no "ssort.c" file or additional scripts. This means that all positions
are calculated on the fly and can be displayed anywhere within functions.

Should use wish to display the position of a resident you should call the
funtion:

  calc_spodlist();

beforehand otherwise the details that you get will omly be accurate to the
last time it was updated (which could a fair amount of time ago).