Start snip here---------------------------------------------------------------

Seeing we have so many discussions on long flags and such here is my solution.

Ok bit based flags i left the standard long flags and when i ran out of room 
made a flag system like this.
char aff2[some_number] // obviously the some_number needs a value i am upto 12 
each byte has 8 bits so eight flags per character or 96 bits minus 1 since 0 is 
my terminator bit.

Here is the concept.
To add bits i add one to the array. By using the NULL terminator as 0 i do not 
have to store all the bits in each place they are used. I only store those i 
want turned on. I have examples below.

here is the IS_SET2 i use to test my values

I have made a basic snippet not all the answers but most anyway.

need more help drop me another line or drop by ghost dancer and say hey. i am 
Taka head coder for the GhostMUD project.

BTW GhostMUD 3.0 is already available for public release it would save you some 
of these headaches with OLC/Color already patched and 100 new spells and skills 
and much more you may want to take a look at it.

So to use these new flags use in object at the end of the object
 * Some of the advantages of doing things this way is no changing existing areas
 * unless you want to add some new affects to items/mobiles/rooms. This is done
 * by adding at the end of the OBJECT a new type of attribute that looks like
 * this.
 * From the lines below we will make an object mage only.
 * #30036
 * sword justice~
 * Oyate Sword~
 * The Oyate Sword of Justice~
 * steel~
 * weapon I AN
 * sword 35 35 acid ABCDEGH
 * 1 10 0 P
 * X               <- This lines tells the program new effects are coming
 * 1 29 0          <- 1= mage 29= class limits flag 0= terminate line
 * To make the same weapon mage/necromancer/witch/and enchanter
 * X               <- This lines tells the program new effects are coming
 * 1 8 9 10 29 0   <- 1= mage 8= witch 9= necromancer 10= enchanter
 *                                              29= class limits flag 0= 
terminate line
 * NOTE you can have as many indicator numbers as you like in a line always
 *      close with a 0 (zero)
 *
 * mobiles are the same as objects
 * X
 * 63 150 0
 * sets the AFF_SILENT flag and the AFF_INDEX_FLAG on

that is all it takes :)

__________________________________SNIPET HERE______________________________


This snippet creates an arrary based affects.
It is not simple but it is unlimited when you
run out simply increase its size.

This will show you how i did objects the same
or simmilar can be done for character, area,
ect...

Alkso this way there are no changes to existing
areas. Many of these examples are for Ghost Dancer
only you will have to substitute your own values
where ours are.

in merc.h add this
/*******************************************************************************
 *         _               | File Name:   array.txt
 *        / \      _-'     | Description: This is allows for a array of bits
 *      _/|  \-''- _ /     |              beypnd 32. It also does not change 
 * __-' |          \       |              existing areas except where the flags
 *     /              \    |              are used.
 *     /       "o.  |o |   |              
 *     |            \ ;    |              
 *                   ',    |
 *        \_         __\   | (c) 2000-2003 TAKA 
 *          ''-_    \.//   | (c) 2000-2003 The GhostMud Project Team
 *            / '-____'    | 
 *           /             | You may use this code under GNU license 
restriction 
 *         _'  The Wolf    | 1) This header block remains in the code.          
 *       _-'   strikes!    | 2) You email me at [EMAIL PROTECTED]
 *_________________________|    letting me know you are using this code
 *                              please incluse your name, your mud name
 * All rights reserved          your mud address, your email and this file
 * GhostMud is copyrighted      name.                                         
 * by TAKA                   3) In your help files mention me where appropriate 
 *                              IE: help snippets.
 
********************************************************************************
*/

/******************************************************************************
 * SETUP ARRAY bits for multi flags above 32
 * BY TAKA of GHOST DANCER
 * 
 * 8 bits per element of the character array.
 * This idea is by Azash for more efficient use of our array flagging system
 *
 * Use these flags on your mud anyway you see fit. This is how we used them on
 * ours. Increasing the size of the array makes for larger numbers able to be
 * stored. Or you can define multiple arrays for different needs. They are
 * literally unlimited.
 * 
 * This is the example of how it works.
 * 1) define a character array.
 * 2) use the IS_SET2/SET_BIT2/REMOVE_BIT2 supplied to check and set the bits
 *    inside the array.
 *    **May need to set IS_SET2 ect to IS_SETX and SET_BITX and REMOVE_BITX
 * 3) each character in the array has 8 bits.
 * 4) You understand the values listed here are for my game your mileage
 *    may vary.
 * 
 * Some of the advantages of doing things this way is no changing existing areas
 * unless you want to add some new affects to items/mobiles/rooms. This is done
 * by adding at the end of the OBJECT a new type of attribute that looks like
 * this.
 * From the lines below we will make an object mage only.
 * #30036
 * sword justice~
 * Oyate Sword~
 * The Oyate Sword of Justice~
 * steel~
 * weapon I AN
 * sword 35 35 acid ABCDEGH
 * 1 10 0 P
 * X               <- This lines tells the program new effects are coming
 * 1 29 0          <- 1= mage 29= class limits flag 0= terminate line
 * To make the same weapon mage/necromancer/witch/and enchanter
 * X               <- This lines tells the program new effects are coming
 * 1 8 9 10 29 0   <- 1= mage 8= witch 9= necromancer 10= enchanter
 *                                              29= class limits flag 0= 
terminate line
 * NOTE you can have as many indicator numbers as you like in a line always
 *      close with a 0 (zero)
 *
 * mobiles are the same as objects
 * X
 * 63 150 0
 * sets the AFF_SILENT flag and the AFF_INDEX_FLAG on
 
 * All this goes in MERC.H
 ******************************************************************************/

/*
 * new utility macros by TAKA
 * test a single character value here
 * by testing a single character in the arry and dividing the bit number by 8
 * we can tell if the test is true. Or we can set the right value as well this 
 * way.
 */
#define IS_SET2(flag, bit)  ((flag) & \
        (bit % 8 == 0 ? H : bit % 8 == 1 ? A : \
         bit % 8 == 2 ? B : bit % 8 == 3 ? C : \
         bit % 8 == 4 ? D : bit % 8 == 5 ? E : \
         bit % 8 == 6 ? F : G ))
#define SET_BIT2(var, bit) ((var) |= \
        (bit % 8 == 0 ? H : bit % 8 == 1 ? A : \
         bit % 8 == 2 ? B : bit % 8 == 3 ? C : \
         bit % 8 == 4 ? D : bit % 8 == 5 ? E : \
         bit % 8 == 6 ? F : G))
#define REMOVE_BIT2(var, bit) ((var) &= \
        ~(bit % 8 == 0 ? H : bit % 8 == 1 ? A : \
          bit % 8 == 2 ? B : bit % 8 == 3 ? C : \
          bit % 8 == 4 ? D : bit % 8 == 5 ? E : \
          bit % 8 == 6 ? F : G))

#define IS_REMORT(ch)                           ((ch)->pcdata->incarnations >= 
2)


/* Class only definitions 
 * 1-29 reserved for class only flags
 * use more if you like
 * Change all these to match your own muds needs these are the ones
 * I choose to share for illustration purposes.
 */
#define CLASS_MAGE                      1
#define CLASS_CLERIC                    2
#define CLASS_THIEF                     3
#define CLASS_WARRIOR                   4
#define CLASS_RANGER                    5
#define CLASS_ASSASSIN                  6
#define CLASS_PALADIN                   7
#define CLASS_WITCH                     8
#define CLASS_NECROMANCER               9
#define CLASS_ENCHANTER                 10
#define CLASS_BERSERKER                 11
#define CLASS_DEATH_KNIGHT              12
#define CLASS_SOLDIER                   13
#define CLASS_OPOYA                             14
#define CLASS_WICASA                    15
#define CLASS_DRUID                             16
#define CLASS_TELEPATH                  17
#define CLASS_PRIEST                    18
#define CLASS_BARD                              19
#define CLASS_SAGE                              20
#define CLASS_SORCERER                  21
#define CLASS_BISHOP                    22
#define CLASS_TEMPLAR                   23
#define CLASS_MONK                              24
#define CLASS_PSIONIST                  25


#define CLASS_ONLY                              29
/* Race only definitions 
 * 30-49 reserved for race only flags
 * use more if you like
 */
#define R_HUMAN                                 30
#define R_ELF                                   31
#define R_DRAGONKIN                             32
#define R_BARBARIAN                             33
#define R_DWARF                                 34
#define R_GOBLIN                                35
#define R_TROLL                                 36
#define R_ORC                                   37
#define R_GIANT                                 38
#define R_OYATE                                 39
#define R_HALFELF                               40
#define R_HALFORC                               41
#define R_HALFGIANT                             42
#define R_WEREWOLF                              43
#define R_VAMPIRE                               44
#define R_LICH                                  45

#define RACE_ONLY                               59
/* Immortal only definitions 
 * 50-59 used for IMMORTAL/REMORT only flag
 */
#define R_IMMORTAL                              60
#define REMORT_ONLY                             61

/* Affects data 
 * 61-150 for affects flags
 * use more if you like
 */
#define AFF_OFFENSIVE_SHIELD    71
#define AFF_FEAR                                72
#define AFF_SILENCE             73

#define AFF_INDEX_FLAG                  150

/* other ideas for flags
 * 151-170 immune flags
 * 171-190 resist flags
 * 191-210 vulnerable flags
 * 210-240 room affects flags
 */
#define ROOM_HEAL                               210
#define ROOM_RACE                               211
#define ROOM_CLASS                              212
#define ROOM_CLAN                               213
#define ROOM_NOCAST                             214


#define ROOM_INDEX                              240


/* End of array define setups */

/*
 * define size of arrary here to make it so we can dynamically
 * control its size. I have tested it up to 299 arrary elements
 * 
 * MAX_NEWAFF is how you add to your bits. Each +1 is 8 new bits.
 *
 * RACE and CLASS indexs used to dynamically define and use
 * for race/class testing see the do_wear procedure in act_obj.c
 */

#define MAX_NEWAFF                              30
#define RACE_INDEX                              29
#define CLASS_INDEX                             1

/* 
 * Anywhere you need more bits insert something like this
 * i will show you an example for objects including object
 * loads below.
 */
char newaff[MAX_NEWAFF];

/******************************************************************************
 * SETUP ARRAY for multi flag above 32
 ******************************************************************************/

in obj_index_data at the end add
        /* TAKA new affect bit */
        char            newaff[MAX_NEWAFF];
        
in the declarations for handler.c add at the end
/* TAKA new affect bit */
char *  affect_bit_name2        args( ( OBJ_DATA *obj, CHAR_DATA *ch ) );


/*****************************************************************************
 * above i have only given you the example of using array based bits for
 * objects. However i use them for rooms, object, characters. I have also
 * in many cases reused bits so ROOM_IMMORTAL_ONLY = bit 100 for rooms and
 * for objects it could be OBJECT_SPIKES = bit 100.
 * the room affect makes a room immortal only where the object affect could
 * be on a shield and cuases a little extra damage each time it is struck
 * due to the fact it has some defensive spikes.
 *****************************************************************************/

in db2.c load_objects after the else if (letter == 'E') add this
                        
        /*
         * new affects arrary by TAKA
         * By using the 0 terminator i can add to my array anytime and
         * also not worry about taking too much space in the files.
         * Look back at my example above to see this in action, I only
         * use the values i want to be on.
         */
        else if ( letter == 'X' )
        {
                int x = 0, y;
                /* make sure to clear before use */
                for(y = 0; y >= (MAX_NEWAFF * 30); y++)
                        REMOVE_BIT2(pObjIndex->newaff[(y / 8)], (y));
                /*
                 * allow loop for as many affects as you wish to add
                 * until 0 is encountered.
                 */
                for(;;)
                {
                        x             = fread_number( fp );
                        if(x != 0)
                                SET_BIT2(pObjIndex->newaff[(x / 8)], (x));
                        else
                                break;
                }
        }

in act_wiz.c in do_ostat add somewhere
        /* TAKA new affects bit */
                sprintf(buf, "{GAlso affected by {W%s{x\n\r",
                        affect_bit_name2( obj, ch ) );;
                send_to_char(buf,ch);


in handler.c add something like this
/*
 * Return ascii name of an affect bit 2.
 * You will need to maintain this for yourself
 * include anything you want returned to stat views
 */
char *affect_bit_name2( OBJ_DATA *obj, CHAR_DATA *ch )
{
        static char buf[512];
        int i = 0;

    buf[0] = '\0';
        
        /* 
         * by testing the bit IE number/8 tells me the character array
         * then the flag i can tell if the bit is on or off
         * necromancer = 9 9/8 = 1 that is the char to test char 1
         * since all arrays start with value 0 i want 0-7 to be equal
         * to char[0]
         * necromancer = char[1]
         */

    if IS_SET2( obj->pIndexData->newoaff[CLASS_MAGE / 8], (CLASS_MAGE))
                strcat( buf, " mage"                    );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_CLERIC / 8], (CLASS_CLERIC))
                strcat( buf, " cleric"                  );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_THIEF / 8], (CLASS_THIEF))
                strcat( buf, " thief"                   );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_WARRIOR / 8], (CLASS_WARRIOR))
                strcat( buf, " warrior"                 );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_RANGER / 8], (CLASS_RANGER))
                strcat( buf, " ranger"                  );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_ASSASSIN / 8], (CLASS_ASSASSIN))
                strcat( buf, " assassin"                );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_PALADIN / 8], (CLASS_PALADIN))
                strcat( buf, " paladin"                 );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_WITCH / 8], (CLASS_WITCH))
                strcat( buf, " witch"                   );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_NECROMANCER / 8], 
(CLASS_NECROMANCER))
                strcat( buf, " necromancer"             );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_ENCHANTER / 8], 
(CLASS_ENCHANTER))
                strcat( buf, " enchanter"               );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_BERSERKER / 8], 
(CLASS_BERSERKER))
                strcat( buf, " berserker"               );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_DEATH_KNIGHT / 8], 
(CLASS_DEATH_KNIGHT))
                strcat( buf, " death knight"    );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_SOLDIER / 8], (CLASS_SOLDIER))
                strcat( buf, " soldier"                 );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_OPOYA / 8], (CLASS_OPOYA))
                strcat( buf, " opoya"                   );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_WICASA / 8], (CLASS_WICASA))
                strcat( buf, " wicasa"                  );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_DRUID / 8], (CLASS_DRUID))
                strcat( buf, " druid"                   );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_TELEPATH / 8], (CLASS_TELEPATH))
                strcat( buf, " telepath"                        );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_BARD / 8], (CLASS_BARD))
                strcat( buf, " bard"                    );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_SAGE / 8], (CLASS_SAGE))
                strcat( buf, " sage"                    );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_SORCERER / 8], (CLASS_SORCERER))
                strcat( buf, " sorcerer"                        );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_BISHOP / 8], (CLASS_BISHOP))
                strcat( buf, " bishop"                  );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_TEMPLAR / 8], (CLASS_TEMPLAR))
                strcat( buf, " templar"                 );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_MONK / 8], (CLASS_MONK))
                strcat( buf, " monk"                    );
    if IS_SET2( obj->pIndexData->newoaff[CLASS_PSIONIST /8], (CLASS_PSIONIST))
                strcat( buf, " psionist"                        );


    if IS_SET2( obj->pIndexData->newoaff[R_HUMAN / 8], (R_HUMAN))
                strcat( buf, " human"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_ELF /8], (R_ELF))
                strcat( buf, " elf"                             );
    if IS_SET2( obj->pIndexData->newoaff[R_DRAGONKIN / 8], (R_DRAGONKIN))
                strcat( buf, " dragonkin"               );
    if IS_SET2( obj->pIndexData->newoaff[R_BARBARIAN / 8], (R_BARBARIAN))
                strcat( buf, " barbarian"               );
    if IS_SET2( obj->pIndexData->newoaff[R_DWARF / 8], (R_DWARF))
                strcat( buf, " dwarf"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_GOBLIN / 8], (R_GOBLIN))
                strcat( buf, " goblin"                  );
    if IS_SET2( obj->pIndexData->newoaff[R_TROLL / 8], (R_TROLL))
                strcat( buf, " troll"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_ORC / 8], (R_ORC))
                strcat( buf, " orc"                             );
    if IS_SET2( obj->pIndexData->newoaff[R_GIANT / 8], (R_GIANT))
                strcat( buf, " giant"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_OYATE / 8], (R_OYATE))
                strcat( buf, " oyate"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_ARCHON / 8], (R_ARCHON))
                strcat( buf, " archon"                  );
    if IS_SET2( obj->pIndexData->newoaff[R_SYLVAN / 8], (R_SYLVAN))
                strcat( buf, " sylvan"                  );
    if IS_SET2( obj->pIndexData->newoaff[R_DAERGAR / 8], (R_DAERGAR))
                strcat( buf, " daergar"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_DROW / 8], (R_DROW))
                strcat( buf, " drow"                    );
    if IS_SET2( obj->pIndexData->newoaff[R_DRACON / 8], (R_DRACON))
                strcat( buf, " dracon"                  );
    if IS_SET2( obj->pIndexData->newoaff[R_GNOME / 8], (R_GNOME))
                strcat( buf, " gnome"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_KYRIE / 8], (R_KYRIE))
                strcat( buf, " kyrie"                   );
    if IS_SET2( obj->pIndexData->newoaff[R_SAURIAL / 8], (R_SAURIAL))
                strcat( buf, " saurial"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_VAMPIRE / 8], (R_VAMPIRE))
                strcat( buf, " vampire"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_TIGRIAT / 8], (R_TIGRIAT))
                strcat( buf, " tigriat"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_HALFELF / 8], (R_HALFELF))
                strcat( buf, " halfelf"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_HALFORC / 8], (R_HALFORC))
                strcat( buf, " halforc"                 );
    if IS_SET2( obj->pIndexData->newoaff[R_HALFGIANT / 8], (R_HALFGIANT))
                strcat( buf, " halfgiant"                       );
    if IS_SET2( obj->pIndexData->newoaff[R_WEREWOLF / 8], (R_WEREWOLF))
                strcat( buf, " werewolf"                        );
    if IS_SET2( obj->pIndexData->newoaff[R_LICH / 8], (R_LICH))
                strcat( buf, " lich"                    );

    if IS_SET2( obj->pIndexData->newoaff[R_IMMORTAL / 8], (R_IMMORTAL))
                strcat( buf, " immortal"                );
    if IS_SET2( obj->pIndexData->newoaff[REMORT_ONLY / 8], (REMORT_ONLY))
                strcat( buf, " remort"                  );

/* 
 * all your tests should look like these above 
 * IS_SETX(array[bit number/8], bit number)
 * this will make the proper test.
 *
 * SET_BITX(is the same) and REMOVE_BITX(same format as well)
 */

    return ( buf[0] != '\0' ) ? buf+1 : " none";
}

** you will need to include also this routine in the 
spell identify but i will not give you all the answers.
Also it is not for OLC YET. If you wish to assist me in 
writting the OLC piece i will be happy to credit your work.
But at this time i do not use OLC so i do not care about
OLC. This document was ment as a guideline as much an
explaination on ways to get unlimited bits for your mud
it works well for me.
\


These are some of your answers drop me a line if you still need help.
-Taka Head coder of GhostMUD
[EMAIL PROTECTED]
209.83.132.85 port 3333
ghost dancer mud
bb12.betterbox.net:3333
For my snippets
http://ghostmud.betterbox.net



GhostMUD 3.0 is publically available!
GhostMUD is a ROM derivative and is bound by all licenses of ROM/MERC/DIKU as
well as GhostMUDs own license.

Thanks Taka

Here are some of the changes i have made so far to arrive at version 3.0
unremort/remort code (multi level remort) 
long vnums 
hp/mana/move expanded 
training of moves 
mortskill/mortspell 
comm stat 
consolidated open channel code 
help stores any unfound results in a file 
an immortal says - fixed as not to be confused with someone says 
add battle prompts including improved battle prompt accurate to 5% 
add current hp/mana/move seen in percentage form 
** remort was the snippet but has been modified to allow multi level remort 
and to allow unremort code 
cleaned up all but 13 compile warnings also :) 
force tick 
banking system v2.0 (no bank card or atm support yet) 
color login 100% 
wizi entry for imms including wizi level selection 
greet people entering the mud 
bid fairwell as they leave 
colored spells/skills 
score command formated 
affects command colored 
rename 
knock 
version file support (command included) 
mud time added 
flexable wear location code added 
wear locations made same as amarons and added tail, ankle_l, ankle_r, 
cup/underwear, stomach ** all new 
ac updates to include all wear locations new and rings for ac 
format_obj_tochar colorized and formated to be less spammy 
show_char_to_char colorized and formated to be less spammy 
autolist 
autoconsume 
consume command 
added stock prompt 
stock wiznet 
mud auto gratz players for a level 
mud autorestores players for a level 
dual wield added (not tested yet - command second not added yet) 
who list race name fixed
elf was a race and was not??? now is fixed..
new races
dragonkin, barbarian,orc,troll,oyate
halfelf,halforc,halfgiant,werewolf,lich
commands organized for reforated wizhelp
reformated wizhelp added
act_comm.c ------ coloring
emote colored
pmote colored
do_qui colored
do_quit colored
do_save colored
do_rent colored
do_follow colored
add_follower colored
nuke_pet colored
stop_follower colored
do_order colored
do_group colored
do_split colored
do_gtell colored
new affect bit for objects any way (array based affects bit)
added 21 new classes
added scan command (3) rooms in each direction.
remort bonus is in
  2x prac/train
  hp/mana/move exp gain = (hp + ((hp * # times remorted) / 10)
  move and mana same bonus.
banking code version 2.0 implemented
        added atm support (flagable to allow/disallow it)
        added silver deposit/withdrawal/conversion support
        atm has daily limits
        colored banking code
set added 
        train, bank gold, bank silver, shares 1-4, and incarnations
        - added hours to set mob command and color
        - upped train/prac to max of 250/999
        - corlorized the set command
stat added
        trian, bank gold/silver, shares 1-4 and incarnations
        -recolored stat also
act_comm
        tell/reply colored
        delete colored
        channels colored
        deaf/quiet/replay colored
        fixed open channel color problems
        clann/immortal channels colored
        say/yell colored
        quit fixed coloring
act_enter
        enter colored
act_info
        char > char 1 colored
        char > char colored
        scroll command colored
        auto
                assist/consume/exit/damage
                gold/loot/sac/split/all
                brief-compact-show-combine
                ------colored
        prompt colored
        noloot/nofolow/nosummon colored
        look colored            -do_read
        examine colored
        exit colored
        worth colored
        time colored
        weather colored
        help colored
        whois colored
        inventory colored
        count colored
        compare colored
        where colored
        consider colored
        description colored
        report colored
        practice colored-added all spells together, all skills together and a 
line break between them as well as titles
        whimpy colored
        password colored and completion message improved
        title colored and completion message improved
long vnums in/tested/working
added fread_long_number routine for vnum handles
fixed bank update on restart of the mud
added new class ninja
added circle skill
added butcher skill
balanced skills between 26 classes.
fixed mob calculation to make hp/mana/move above 32k not go negative!
fixed wear off message
        giant strength
mslay - slay mobs
gslay - global slay with punishment message and force read rules
        - pyrox idea (not limited to a room)
where shows credits (area name)
capital P on poke and peer removed.
slay has been changed slay name ! slays anywhere in the world
healer can now heal cancel
search skill added
hide changed to allow hiding items
log bad password attempts
        -inform char if they are playing
force remove and sieze equipment
world peace
arealist all area list with vnums
        - for mortals it lists areas with levels
added signal handling
memory perm increase checking WIZ_NET function
        - fixed minor error on display perms
seperated olc from wizhelp
moved wield and wizlist up in the commands list
fixed omni to display levels in order and not show imms in mortal list portion
slay has been reset only max level imps can slay global
reset password
getpw
erwin S andersons disable command snippet added
area now lists by level
lore fixed
lpfile, ulpfile load/unload player file
area also sorted :)
clone x*
get x*
give x*
put x*
drop x*
whowas (basic for now)
home recall (selectable configurable by imp)
do_areas fixed so you can specify a level and colored and sorted.
level 2 backstab being added assassinate
changed char_to_char_0 to color output to make room/character different
added spells
sate, quench, adrenaline, stone meld, screen, acid rain, ice rain, fire rain
acid storm, ice strom, fire storm, damage, hit
SKIN: mud, moss, bark, steel, emerald, ruby, diamond
Failure messages:
        blindness, calm
imms nolonger can destroy a weapon/armor with enchant spells
fixed whowas time for >= level
history added
whowas now shows history.
some log fixes to better assist tracking of errors
        apply errors and new character errors
reset colors on look for obj, mob and room title
changed lightning bolt to lightning strike
added do_purg to stop accidental purging by high level imms
<>added spells------------------------------------------------------------------
ego whip, mind flail, psychic thrust, psychic crush,
mystic armor, mind bolt, bloddy tears, fighting trance,
ice bolt, lightning bolt, fire bolt, acid bolt, holy bolt,  gas bolt,
fireblast, iceblast, electricblast, gasblast, lightningblast, 
holyblast
<>groups added------------------------------------------------------------------
blood, rain, nature, bererker spells, skins, mental ofensive,
opoya only, bolt spells
<>skills added------------------------------------------------------------------
mpill, brew
<>Color act_wiz.c
skipping guild for now
outfit, nochannel, smote, poofin, poofout,deny,
disconnect, pardon, echo, pecho, zecho, recho,
transfer, at, goto, violate, stat
act_info.c
        colored
        description, report, wimpy, practice, password
        jail, search
Fixed second
Fixed AUTODAMAGE now shows damage sustained.



end snip from Taka------------------------------------------------------------
there guys from Taka
thanks
Joe


Reply via email to