This code allows you to set the advance command at a lower level for your lower level immortals.
If the immortal uses 'advance' on a mortal, it will flag them on who. You could also have
cheated characters and be able to distinguish them easily on who. Use it as you wish, but
I made this as a security check.

Files needed:

mud.h
act_info.c
act_wiz.c

================================================[ MUD.H ]================================================

You'll need to add a new flag for EXTRA_CHEATER, or modify your current
flags to work with this.

Search for:

/* Act2 Flags */
#define ACT_BOUND                BV00
#define ACT_GAGGED               BV01


#define EXTRA_CHEATER            BV13

================================================[ ACT_INFO.C ]================================================

Under do_who, with the other defines add:

char cheater[MAX_STRING_LENGTH];

Search for this still inside do_who:

         default:
            break;
         case 200:
            race = "The Ghost in the Machine";
            break;
         case MAX_LEVEL - 0:
            race = "Owner";
            break;
         case MAX_LEVEL - 1:
            race = "Co-Owner";
            break;
         case MAX_LEVEL - 2:
            race = "Executive";
            break;
         case MAX_LEVEL - 3:
            race = "Technician";
            break;
         case MAX_LEVEL - 4:
            race = "Technician";
            break;
         case MAX_LEVEL - 5:
            race = "Builder";
            break;
         case MAX_LEVEL - 6:
            race = "Builder";
            break;
         case MAX_LEVEL - 7:
            race = "Watcher";
            break;
         case MAX_LEVEL - 8:
            race = "Enforcer";
            break;
         case MAX_LEVEL - 9:
            race = "ANOTHER LEVEL HOLDER";
            break;
      }


Add this right under it:

      if( IS_SET( wch->act2, EXTRA_CHEATER ) )
         sprintf( cheater, "&R[&zCHEATER&Y -&r RP IS VOID&R]&W " );
      else
         strcpy( cheater, "" );

Search for this:

if( IS_SET( wch->act, PLR_WIZINVIS ) )
         sprintf( invis_str, "&b(&O%d&b)&W ", wch->pcdata->wizinvis );
      else
         invis_str[0] = '\0';

      sprintf( buf, "&B[&W%-16s&B] &G%c&W %s%s%s%s%s %s%s\n\r",
               const_color_align( race, 16, ALIGN_LEFT ),
               invis_str, IS_SET( wch->act, PLR_AFK ) ? "&b[&GAFK&b]&W " : "", char_name, wch->pcdata->title, cheater );

You'll need to add a %s in the 'sprintf buf, ' part and you'll need to add 'cheater' in the variables string where you want it to appear. This will appear only when the victim is set with the EXTRA_CHEATER flag and it will appear on WHO.

================================================[ ACT_WIZ.C ]================================================

Add this code:

------------------------------------------------------[ BEGIN CODE ]-------------------------------------------------------

/*
 * Do_Cheater and all corresponding cheat code by
 * Banner of SW:GI. If you are to use this code, this
 * comment and all other comments are to remain intact.
 * If they are removed, I cannot and will not
 * help you if you cannot install this code.
 * - Banner 2005, SW:GI
 */

void do_cheater( CHAR_DATA * ch, char *argument )
{
   CHAR_DATA *victim;
   char arg[MAX_INPUT_LENGTH];

   argument = one_argument( argument, arg );
   if( !*arg )
   {
      send_to_char( "Flag whom as a cheater?\n\r", ch );
      return;
   }
   if( !( victim = get_char_world( ch, arg ) ) || IS_NPC( victim ) )
   {
      send_to_char( "They aren't here.\n\r", ch );
      return;
   }
   
   /* Remember, if you changed the placement of the flags in mud.h,
      you'll need to modify it here and above in the do_who section.
      - Banner 2005 */

   if( !IS_SET( victim->act2, EXTRA_CHEATER ) )
   {
      SET_BIT( victim->act2, EXTRA_CHEATER );
      send_to_char( "Done.\n\r", ch );
      ch_printf( victim, "%s has declared you a cheater. Flag set.\n\r", ch->name );
      ch_printf( victim, "As a cheater, you are not allowed to participate in RP.\n\r", );
      save_char_obj( victim )
   }
   else
   {
      REMOVE_BIT( victim->act2, EXTRA_CHEATER );
      send_to_char( "Done.\n\r", ch );
      ch_printf( victim, "%s has declared you not cheated any longer.\n\r", ch->name );
      ch_printf( victim, "You are now allowed to partake in roleplay.\n\r", );
      save_char_obj( victim );
   }
   return;
}





------------------------------------------------------[ END OF CODE ]-------------------------------------------------------
Update tables.c and mud.h to include entries for do_cheater.

make clean
make

In the mud:

saveall
copyover now
cedit cheater create
cedit cheater level 210
cedit cheater log 1
cedit save

----------------------------------------------------------------------------------------------------------------------------
If there are any problems with this installation, feel free to email your
question to Shoie13@yahoo.com or contact me via aim (SystmFrz).

This code has been installed and tested on SWR 1.0 FUSS, which is a bugfixed
and cleaned up version of the base SWR 1.0.

No guarantees are made that this code will be compatible with your codebase and any
modifications you may have made to it. No warranty of any kind is expressed or implied
by the use of this code, and I am not responsible for any damages which may result
from the application of this snippet to your codebase.

Banner
Star Wars: Galactic Insights
Frostmud.com:8060
------------------------------------------------------------------------------------------------------------