EmberMUD-0.9.44/
EmberMUD-0.9.44/clan/
EmberMUD-0.9.44/classes/
EmberMUD-0.9.44/gods/
EmberMUD-0.9.44/log/
EmberMUD-0.9.44/player/
EmberMUD-0.9.44/player/temp/
EmberMUD-0.9.44/src/MSVC/
EmberMUD-0.9.44/src/Sleep/
EmberMUD-0.9.44/src/StartMUD/
EmberMUD-0.9.44/src/Win32Common/
EmberMUD Changelog



v0.9.44 [ 7/18/00 ]

--------------------------------------------------------------------------



Bugfix: There was a major crash bug in poofin/poofout.  The problem was
        that both commands were using strcat() to add to a string that
        had been allocated with str_dup() (from SSM).  That is BAD BAD
        BAD!  Stop that! :)  Once you str_dup() a string, the only way
        to change it is to call free_string() then set the pointer to
        a new str_dup()'d string.
        -Zane 7/18/00

Bugfix: Two functions were using strcat() on their char * parameters.
        In this case, you don't know how much memory has been allocated
        to that string (unless the size is passed as another parameter 
        which isn't done much in this code).  A good rule of thumb is
        to not directly modify a string passed in as a parameter unless
        you have a good way of knowing EXACTLY what the size of that
        string is (so you don't overflow).
        -Zane 7/18/00

Bugfix: When wielding a non-weapon, wear_progs weren't being triggered.

        -Zak 7/18/00



Bugfix: Fixed show_line_numbers to recognize \r\n as well as \n\r. \r\n is

        the proper order for DOS files while \n\r is the common mud usage.

        When loading files (such as mudprogs) that have been saved with 

        \r\n show_line_numbers was screwing up on the display.

        -Zane 7/17/00



New:    faction() proc for MudProgs.  Use it in an ifcheck to see if a 

        char's faction standing is above/below/equal a certain value.

        For example:



          if ( faction( $n, 2 ) < -500 )

            yell Die $n, you filthy scum!

            kill $n

            break

          endif



        This prog would aggro on anyone with faction #2 below -500.

        -Zak 7/17/00



Bugfix: rlist was crashing.  I just changed it to not use strcat() cause

        I'm lazy.  It works now, so who cares. <grin>

        -Zak 7/16/00



Bugfix: Oops.  Fixed a bug related to wizgrant/wizrevoke where a switched

        mob would crash the MUD when trying to do a wiz command.

        -Zak 7/16/00



New:    Added an mprog command:  mpchangefaction.  Use it to adjust a 

        player's faction by a given amount in mudprogs.

        -Zak 7/16/00



Bugfix: Removed a compile-time warning in ssm.c related to the new hashing

        code.

        -Zak 7/16/00



New:    Added two new imm commands:  wizgrant and wizrevoke.  Use these

        to grant and revoke access to individual imm commands to anyone

        on the MUD (regardless of level).

        -Zak 7/15/00



Bugfix: str_len() wasn't counting `0 as a valid color code - it is now.

        -Zak 7/15/00



Change: Commands in the cmd_table are no longer restricted in any way

        by a player's level.  Any "restricted" commands can be marked

        as imm-only and access can be granted or revoked via the new

        wizgrant and wizrevoke commands.

        -Zak 7/15/00



Bugfix: For some reason, the calls to write_to_descriptor in the hotboot

        code were passing 0 as the string length, thereby causing the

        "earth splits in two" and "earth remolds" messages to not be

        printed during hotboot.

        -Zak & Lancelight 7/15/00



Bugfix: do_trust() was alowing you to "demote" people that were trusted

        at a higher level than yourself.  You will get a "Nice try"

        message now.

        -Zak 7/15/00



Bugfix: How long has THIS bug been there?  'purge <obj>' was crashing the

        MUD.  Fixed.

        -Zak 7/15/00



Change: The door to the jail in midgaard's reset wasn't set to closed by

        default (people could walk in the jail but couldn't get out).

        -Zak 7/15/00



Change: ssm.c now uses the ElfHash hash-key generation routine.  I also 

        upped the MAY_KEY_HASH to 65413 in config.h since our total 

        number of strings is about 45,000.  With Hash Tables it's always 

        better (speed wise) to have about twice as many slots as you do 

        strings.  Increasing that value took our load time from ~5 seconds 

        to ~3 seconds.  Changing the hash function didn't appear to have 

        much effect one way or the other.  Also, with this change, the 

        entire string is evaluated instead of just the first 32 

        characters. This is probably overkill but ELF doesn't do it and 

        it's fast and so far I haven't noticed any slowdown in the load 

        (and loading is the most string-intensive operation in the MUD).

        -Zane 7/11/00



Bugfix: Fixed a bug in do_jail() where jailing and unjailing a mob would

        crash the MUD.

        -Zak & Lancelight 7/11/00



Change: Fidos in Midgaard are now level 3, not level 20.

        -Zak 7/11/00



Change: Deleted the extra Hassan reset in the donation room.

        -Zak 7/11/00



Change: free_string now requires you to pass in the address of the string

        pointer you want freed so that free_string can set that pointer

        to NULL when it has been freed.  This now makes it impossible to

        free the same string twice.  All calls to free_string should now

        look like this:



          free_string( &thing->some_string );



        -Zane 7/11/00



Change: free_mem now works just like the new free_string.  So, instead of

        calling free_mem(ptr) you now call free_mem(&ptr).  Unfortunately,

        this is not as enforceable as free_string because of all the

        typecasting that goes on.  BE CAREFUL when using free_mem!  If

        you pass it an invalid value, it will still attempt to free that

        memory (with unpredictable results).



        -Zane 7/11/00



Change: Removed the size parameter from free_mem as it hasn't been used

        for quite some time and was only left in to support older calls.

        I went through and fixed all of the old calls, so no reason to

        keep the unused parameter anymore.



        -Zane 7/11/00



Bugfix: Strings were randomly being overwritten with Object Progs (and 

        probably Room Progs as well). Turns out we were trying to free 

        the same string twice and free_string was screwing up memory. 

        We only free the string once now and I'm working on free_string 

        to handle errors properly. 

        -Zane 7/10/00



Change: Shopkeepers now take factions into account when pricing items.

        The discounts and mark-ups are configured in config.h

        -Zak 7/10/00



Change: Shopkeepers will now refuse to list, sell to, or buy from players

        whose factions with them are worse than a specific percentage

        (set in config.h).  The shopkeeper will actually boot the player

        out of the store if there is an exit to boot them out of (thanks

        for the idea, Zane).

        -Zak 7/10/00



Change: Factions now affect everyone in the group, regardless of who

        landed the killing blow.

        -Zak 7/10/00



Bugfix: Fixed a bug in do_mset() that allowed someone with a lower level 

        to use the set command on a player of a higher level.

        -Zak 7/10/00



Change: Changed the SHOW_DAMAGE_TO_CHARS damage messages to actually 

        verbalize the damage rather than just tacking it on as a number 

        at the end (Thanks Erd!).

        -Zak 7/10/00



Bugfix: Fixed a minor bug in do_mstat() where the Parts for a mob were 

        being stated incorrectly.

        -Erd 7/10/00



New:   Faction changes can now be applied to mobs via OLC (no more editing

       area files <smlie>).  When editing a mob, use this syntax:



        faction add <vnum> <change>

         OR

        faction delete <vnum>



       -Zak 7/7/00



New:   Added factions to the output of the "stat" wizcommand.  For mobs,

       it shows the factions they affect.  For players, it shows their 

       current faction standings.

       -Zak 7/7/00



New:   Added factions to the vnum command.  The syntax is:



        vnum faction <name>



       -Zak 7/7/00



New:    Factions.  A document describing how to implement them, the new

        commands, etc. will be forthcoming...  Currently, the following

        specific features have been coded:



        * Factions OLC - Create and edit factions online via OLC.

        * Factions in 'consider' - When considering a mob, their 

          feelings towards you will be displayed.

        * Killing a mob affects players' faction standings.

        * 'factions' command to allow players to view their current

          faction standings.

        * 'set char <name> faction' command - allows imps to set

          individual faction standings on a player.



        -Zak 7/6/00



Bugfix: Fixed a typo in the stock MudProgs where clerics were attempting

        to cast 'disple magic' instead of 'dispel magic'.

        -Zane 7/5/00



Change: Set up MudProgs to use a first and last type of list.  With this

        type of list, it keeps the list of progs in memory in the same

        order as they are in the file.

        -Zane 7/5/00



v0.9.43 [ 6/28/00 ]

--------------------------------------------------------------------------



Bugfix: Fixed the "computed value not used" warning in mud_progs.c

        -Zak 6/28/00



Bugfix: There was a "comment within a comment" warning in db.c under 

        Linux.

        -Zak 6/28/00



Bugfix: 8 Hassans were being spawned in the donation room.

        -Zane 6/27/00



Bugfix: put all.<object> <container> was broken.

        -Zane 6/27/00



Bugfix: Typing something at the "Press RETURN to continue" prompt was

        causing the MUD to crash.

        -Zane 6/27/00



Bugfix: Players could not delete themselves.  Typing delete twice would

        log the character off, but not delete their pfile.

        -Zane 6/27/00



Bugfix: The color code wasn't properly formatting double `s.  `` was

        coming out as `.

        -Zane 6/27/00



Bugfix: When switched into a mob, you couldn't attack players.  You'd get

        a message that you're not a player killer (even if you were).

        Any mob can now attack any player, switched or not.

        -Zane 6/27/00



Change: Also removed some 2 and 3 level deep nested if statements. 

        -Zane 6/27/00



Change: Well basically ignore most everything in the last changes entry 

        for resets. Here's how they work now: 



        The max assigned to each mob reset is now a per reset max.  So, 

        if you have 3 entries for 3 citiguards in the same room with a 

        max of 3 for each, then you'll end up with 9 total citiguards 

        (eventually).  The way the max works is every repop if the 

        current number of mobs assigned to a reset is less than the 

        max allowable number of mobs for a reset, then one more mob is 

        spawned and the total for that reset is incremented by one.  So,

        if you want 10 rabbits to spawn slowly over time then put one 

        reset entry with a max of 10. If you want 10 to spawn all at 

        once (and no more) then you create 10 seperate resets. If you 

        set the max to -1 it will continually spawn mobs every repop 

        (up to 999, should've put that in config.h) but I'd advise 

        against doing that unless it's a REALLY popular area. :) 



        All of the area files have been updated to support this new 

        method.  Unfortunately, due to bad area creation, some areas 

        may have more or less mobs since I couldn't tell what the hell 

        the author was trying to do. :)  Also, the mob/reset/max limit 

        is not affected by the total number of that mob in the world 

        anymore, just the total number of that mob assigned to that reset.



        Area files with mob reset max set to 1 now are converted to 0 when 

        saved.  0 and 1 both spawn one mob but 0 is easier on the eyes when 

        scanning area files.  Since I just redid the reset section of every 

        damn area file I feel qualified to make that decision. :)  As usual,

        all complaints/suggestions/bugs submissions/compliments should go 

        to algore@whitehouse.gov

        -Zane 6/26/00



Bugfix: Got rid of the fread_char: no match.  When saving characters the 

        new marry code was saving a number with a ~ after it so after the 

        number was read in instead of getting a new property name from 

        the next line you'd get the ~.  Existing players will cause this 

        error once when they log in but next time they log out or save 

        the file will be fixed.

        -Zane 6/19/00



Change: Resets now work differently.  There is no global max for a 

        particular mob.  Each reset has a max associated with it now.  If 

        you set the max to 4 then next repop 4 of that mob will spawn.

        The equipment allocated for that group is loaded to all 4 at once.

        If you want 4 of the same mob with 4 different sets of equipment

        then you need to add each of them seperately with a max of 1 

        followed by their equipment list (just like before except the 

        max has a different meaning).  This should make things easier in 

        the long run.  Previously if you wanted to add another cityguard 

        you'd have to go to every cityguard reset and up the max by one

        or more. 

        -Zane 6/19/00



Bugfix: Fixed another door bug in the Mudschool area (door from Mudschool

        entrance south to the arena was locked and pickproof).

        -Zane 6/16/00



Bugfix: When you created a one-way exit in OLC, the area changed flag was

        not being set.

        -Zane 6/16/00



New:    I added some configurability to the way PK Deaths are handled. You

        can now define how the mud will handle PK_Corpses in config.h. The

        new items are LOOTING_CHANCE and LOOTING_ALLOWED. Looting_chance

        will let you determine how much of a chance the killer has of getting

        some items off of the player he just killed (10 = 1 in 10 chance per

        item). The Looting_allowed define has 3 settings, 0,1,2) 0 = no looting

        at all, 1 = use the random system, 2 = the imp is a real bastid and

        says that players can loot it ALL muhahaha.

        -Lancelight 6/16/00



Bugfix: The 'show all', 'show active', and 'show inactive' clan commands

        had some bugs in them (didn't show clans in 'creating' status, etc).

        -Zane 6/15/00



Bugfix: The exit from room 3053 to 3503 in the stock areas has been fixed.

        -Zane 6/15/00



Bugfix: Fixed the door and diploma beast problems in the stock Mudschool

        area.

        -Zane 6/15/00



Bugfix: It seems I left out some if's in the marriage code. You could marry

        people to themselves and divorce people from themself. This is fixed,

        so I now cant marry myself :(

        -Lancelight 6/13/00



New:    Forgot to mention that I had added a command called disable for imms.

        This IMM Command allows an imm to disable single word mud commands or

        skills such as goto or kick. Basically anything that passes through

        interp.c can be disabled. Currently it does not disable spells, but

        I'll find a way to do that somehow.

        -Lancelight 6/13/00



Bugfix: When someone was pk'd, they kept all of their items on them and

        nothing was being left in the corpse. This has been fixed.

        -Lancelight 6/13/00



Bugfix: Bonehead me left and extra prompt in the note editor causing it to

        display two prompts when word wrap was used. I patched it up.

        -Lancelight 6/13/00



Change: Changed the 80 character limit in the note editor to 255

        characters.

        -Lancelight 6/10/00



New:    Added word wrapping and string replacement options to the note

        editor.

        -Lancelight 6/10/00



New:    Added custom marriage code.  This includes a new spouse channel,

        a new field in the whois data, a flag in the who list, and a

        new player command 'consent' (consent is basically engagement).

        Once players have consented, an imm uses the new 'marry' command

        on them.  There is also a 'divorce' command.

        -Lancelight 6/10/00



New:    Added an elementary banking system for gold.  The vnums for the

        banks (one for normal characters and one for the thief class - what

        bank would do business with a known thief??) are defined in 

        config.h.  The new commands are 'account', 'deposit', and

        'withdraw'.

        -Lancelight 6/10/00



New:    Two new commands - 'pload' and 'punload'.  Pload pulls a character

        into the MUD as though they were linkdead - allowing you to play

        with them as though they were really online.  You can force them

        to do things, give them things, set flags, etc.  Punload can be

        used to unload the character (same as forcing them to quit - their

        pfile WILL be saved).

        -Lancelight 6/10/00



New:    A 'permit' command has been added to allow a player to log in from

        sites that are on the 'ban site permit' list.  If you ban a domain

        and want to allow a certain player from that domain to still log

        in, pload the player, permit them, and punload them.

        -Lanelight 6/10/00



New:    How about a command that lets you set the level that a skill

        becomes available to a given class without having to edit any code

        or reboot the MUD?  The new 'askill' command does just that.

        Along with this new command comes a new directory called 'classes'.

        If you want to add a new class, be SURE to place a new file in 

        this directory or the MUD will not load correctly.  Be sure to read

        comments in const.c regarding this change.

        -Lancelight 6/10/00



Bugfix: Whenever a player had a pet and the mud was hotbooted, the

        hotboot would seem to be ok. Then whenever a player that had a

        pet before the hotboot recalled, the mud would crash. This was

        fixed by simply adding a load for pets in the copyover_recover

        function.

        -Lancelight 6/7/00



Bugfix: If a player was PK'd or commited a PK, the PK counter 

        would seem fine until they logged out. The second they logged

        out, their PKDeaths and kills were reset to whatever the pk 

        deaths were. Someone goofed and had 2 pk_deaths in save.c in the

        fwrite_char function in the cases.

        -Lancelight 6/7/00



Bugfix: If an immortal typed 'alias x goto 3001' and then tried to

        use x (x can be any string), it would say no location. A

        small if statement in act_info.c in the substitute_alias

        function fixed this problem.

        -Lancelight 6/7/00



New:    Reycle.c has been added for calls made by ban.c.  This will also

        make porting ROM 2.4 code/snippets into ember easier because it

        includes the ROM 2.4-style buffer features.

        -Lancelight 6/7/00



New:    I ripped out the old ban structures because they werent

        quite up to par, and they did not allow for perm banning,

        newbie banning or permitting. So I took it upon myself to 

        rip Russ Taylors ban code out of rom 2.4b and port it over to 

        ember. In the process, the ban.c file and recycle.c/recycle.h 

        files were added along with structures in merc.h and 1

        function in save.c to support the port. I hope I commented 

        everyting well enough in the code incase someone wants to 

        clean it up a bit.

        -Lancelight 6/7/00



New:    There seemed to be a big request for auto-auction on my

        mud, so I ripped out the auction channel and ported the

        snippet put out by Brian Babey for rom 2.4.  Not a whole lot 

        had to be added for it, but quite a bit had to be modified to 

        work with the ember way of doing things. I left the Auction.c 

        file laying around because I was to lazy to stick it in an 

        existing.c file.

        -Lancelight 6/7/00



New:    We were lacking some sort of jailing system, so I whipped

        one up using the PLR_ACT bits. There is 1 thing that needs to

        be set, and that is in act_wiz.c in the do_jail function. The 

        jail room is currently set to 3011. You will want to change 

        this to a room that you make for jailing people. Most of the 

        IF statements can be found in act_obj.c and a couple others 

        are scattered about the source.  The room vnum for the jail

        is #DEFINE'd in act_wiz.c (will move it to config.h later).

        Currently, players released from jail are sent to their

        recall room.  NPCs released from jail are sent to the room

        they were in before they were sent to jail.

        -Lancelight 6/7/00



Bugfix: Fixed a bug related to the new player_list.  Sometimes, players

        were not being properly removed from the list which would cause a

        MUD crash when they tried to log back in.

        -Zak 4/25/00



Bugfix: Fixed a minor bug in the 'purge' wiz command.  When an argument

        was provided, the command would first search the current room

        for an object matching the argument and then would search the

        WORLD for a matching character.  The command now only searches 

        the current room for a matching character.

        -Zak 5/1/00



Change: Also in the 'purge' command, if a player was being purged and was

        only level 1, his pfile was not being saved before he was booted.

        This harkens back to the day when level 1 players weren't allowed

        to save AT ALL.  Anyhow, 'purge' now saves ANY player that is

        targetted.

        -Zak 5/1/00



v0.9.42 [4/23/2000]

--------------------------------------------------------------------------

Bugfix: Pfiles will now save. <smile>

        -Zak 4/20/00



Bugfix: The startup script that shipped with 0.9.41 would change dirs to

        the area dir before starting the MUD (which would then fail

        becuase ember.cfg is located in the src dir).  So, I commented

        out the dir change in the startup script for this version.

        -Zak 4/20/00



Change: Converted the Borland C++ Builder project from version 3.0 to

        version 4.0 (and now I hear that 5.0 is out, so I'll have to get

        that too! <grin>).

        -Zak 4/20/00



Bugfix: Oops, add2last_imm() was crashing when MAX_LAST_LENGTH was reached

        due to a stray ; in the source.  This should keep the imm channel

        from crashing after several messages...

        -Zak 4/21/00



New:    I got tired of having requests for it, so there's now what people

        refer to as a "clear" color code available.  It's `0 (that's a

        zero).

        -Zak 4/22/00



Bugfix: Zane's check for a player's xp overflowing MAX_EXP was backwards

        and was therefore setting a player's xp to MAX_EXP anytime they

        WEREN'T going to overflow.  It's fixed now...  No more level 51

        newbies! <grin>

        -Zak 4/22/00



Bugfix: The MUD was saving clans.are in the src directory instead of the

        area directory.

        -Zak 4/22/00



Bugfix: Fixed the bug where slaying an NPC would cause them to teleport

        to the altar after leaving a corpse (instead of actually dying).

        -Zak 4/23/00



Bugfix: Another startup script problem...  Since shutdown.txt is being

        written to the area directory, the startup script needs to look

        for it there.

        -Zak 4/23/00



v0.9.41 [3/6/2000]

--------------------------------------------------------------------------

Bugfix: Got rid of a "used un-initialized" warning when compiling under

        Linux.

        -Zak 2/9/00



Bugfix: Fixed a crash bug in 'edit mprog create'.

        -Zak 2/9/00



Bugfix: The mpclean command was calling do_mpdefault instead of 

        do_mpclean.

        -Zane 2/9/00



Bugfix: do_mpdefault was calling itself mpforce in a bug() call.

        -Zane 2/9/00



Change: Added a syntax printout to the 'clan' command if no arguments

        are used.  Also added the bank command to the syntax printout:

        'clan <clan #> bank <deposit/withdraw> <amount>'.

        -Zak 2/9/00



Change: Made considerable changes to the way the 'clan' command works.

        Take a look at the new syntax before attempting to use it.  

        These commands just make more sense to me...

        -Zak 2/9/00



Change: mpclean now accepts a cost argument.  Anything worth less than 

        the specified cost is considered trash and will be picked up.

        If no argument is specified, the default cost is 10.

        -Zane 2/9/00



Change: Changed fightroom_prog to fightgroup_prog because fightgroup 

        is more intuitive.

        -Zane 2/9/00



New:    Added ! to MUDProg if statements.  ! currently only reverses 

        the return values of function calls, so 'if !level($n) == 33'

        is different from 'if level($n) != 33' (the first returns the

        opposite of the level() call.  Since all levels are >1 then 

        !level() will always return False).  This was mainly put in 

        so that I could easily do things like:



        if isimmort($n)

        and !isawake($n)

        etc..



        -Zane 2/10/00



Bugfix: Fixed the bug where anything done by an object was done at

        level 70 (default supermob level for some reason).  Now 

        supermob's level is set to obj->level in set_supermob() 

        and set back to HERO in release_supermob().

        -Zane 2/10/00



New:    Added /,*,+,- to the valid operators list. The following 

        should be valid:



        if level($n) >= 2 * level($i)

          do something

        endif



        At this time you MUST have a space between operators and 

        parameters ('2+2' would be invalid while '2 + 2' is fine).

        -Zane 2/10/00



Change: NPC's can now steal from both PC's and other NPC's.  When

        stealing from a PC, their chance of success is 

        (target->level - npc->level) * 20%.  So, if a level 13 NPC

        attempts to steal from a level 15 PC, the NPC has a 60%

        chance of success.  After 5 levels of difference, the

        chance is 0% (unless the PC is asleep, in which case the

        chance is 10%).  After 6 levels of difference, the chance

        is ALWAYS 0%.

        -Zane 2/10/00



Change: There's now only one thing left in special.c (spec_puff).

        -Zane 2/10/00



Change: Upgraded our string management code to SSM v1.4.  SSM is

        the "Shared String Manager" written by Fusion (Melvin

        Smith).  We expect that this will need some major testing.

        -Zane 2/10/00



Bugfix: Fixed a crash bug in the add2tell command related to the

        queue exceeding the MAX_LAST_LENGTH.  Maybe this is the

        last bug in tell queues? <smile>

        -Zak 2/11/00



New:    Added an 'asave clans' command to save the clans file.

        -Zak 2/11/00



Change: In the clan editor, all of the commands used to require the

        character have a security == 9.  Now, the only restriction

        is that the character have trust >= MAX_LEVEL - 1.

        -Zak 2/11/00



Change: 'edit clan create' and the commands inside of the clan editor

        no longer auto-save the clans file.  You will need to use the

        new 'asave clans' command to save clans from now on.  Note:

        the clans file IS still auto-saved when members are added or

        removed, when the MUD is shutdown or rebooted, and when you

        do an 'asave world' or 'asave changed'.

        -Zak 2/11/00



Change: Re-added several exits from Midgaard to other areas in the

        MUD.  Don't know when these were lost...

        -Zak 2/12/00



New:    New 'aexits' and 'aentrances' wiz-commands.  These commands will

        show all exits from and entrances to a given area.

        -Zak 2/13/00



Change: Re-added the rest of the exits from Midgaard to other areas.

        (I used ROM 2.4's Midgaard as a model).

        -Zak 2/13/00



Change: Upgraded our string management code to SSM v2.2 and added Erwin's

        hashing improvements.

        -Zane 2/15/00



Change: The parser for MUDProgs has been completely rewritten.

        Notes:



          if statements are now formed like this:



             if (expression)

             elseif (expression)

             endif



          Nested ifs are now allowed (woohoo!) and expressions can be

          nearly any C expression.



          '(' ')' '==' '!=' '<=' '>=' '<' '>' '&&' '||' and '!' are all

          valid operators inside an expression now.



          Any MUDProc can now be called inside of an expression.  For

          instance, this if statement works now:



             if (level($n)-5 <= level($i))

               say 'you suck'

             endif



          ALL MUDProgs MUST end with 'break' now and all if expressions

          must be surrounded by parenthesis ( '(' and ')' ).



          Any command in a MUDProg may have an expression nested inside

          of it if the expression is surrounded by #'s.  For instance:



             if (level($i) > 10)

               say Woohoo!  I'm level #level($i)#!

             endif



        -Zane 2/15/00



New:    Added a hasmemory() function to MUDProgs to see if a mob is

        currently remembering someone.

        -Zane 2/15/00



Change: Changed the memory($*) MUDProc so that calling it with no

        parameter no longer works.  If you need to find out if the mob

        is remembering someone, use the new hasmemory() function.

        -Zane 2/15/00



Change: Changed the return value for the hitpercent() MUDProg function.

        Previously, it would return hit/max_hit which was a fraction

        which was then cast to int so it became either 1 or 0.  Now,

        it returns (hit/max_hit) * 100.  So 50% hp will return a value

        of 50 (makes a bit more sense this way).

        -Zane 2/15/00



Change: Renamed some MUDProg functions:  inroom() is now roomvnum(),

        goldamt() is now goldamount(), and number() is now mobvnum().

        -Zane 2/15/00



Change: Removed the name() MUDProg function.

        -Zane 2/15/00



Change: Changed gain_exp() in update.c so that it protects against xp

        wrapping even if exp is unsigned.

        -Zane 2/15/00



New:    Added a MAX_CHUNKS define in config.h for SSM 2.2 - used to 

        calculate MAX_STRING_LENGTH.

        -Zane 2/15/00



Change: Removed the isaffected() MUDProg function because it didn't

        work.  Let us know if you need it and we'll write a new one.

        -Zane 2/15/00



Change: Modified fread_string_eol() in ssm.c for a minor speed increase.

        -Zane 2/15/00



New:    Added the 'repeat' wiz-command.  'repeat <x> <command>' will

        repeat the specified command <x> number of times.  This is

        very dangerous and is limited to MAX_LEVEL characters.  There

        is NO WAY to break out of this command in-game.  (this command

        is useful for testing things like loading 500 mobs into a room).

        -Zane 2/15/00



Bugfix: Previously write_to_buffer would try and close a socket if the

        buffer size was greater than MAX_OUTPUT_BUFFER.  I made it so

        that instead of closing the socket, it just returns without

        adding to the output buffer.  This basically truncates very long

        output (current setting is anything over 32000 bytes).  I also

        set it to check size + 2048 > MAX_OUTPUT_BUFFER because 2048 is

        the blocksize used to grow the output buffer.  End result - no

        more buffer overflow crashes on extremely long MUD output.

        -Zane 2/15/00



Change: write_to_descriptor and do_color were using MAX_STRING_LENGTH*2

        buffers.  These have been changed to MAX_OUTPUT_BUFFER*2 and the

        buffer in write_to_descriptor is now static (and, it's wiped

        every call).

        -Zane 2/15/00



Change: Optimized do_color and write_to_descriptor to use less memory and

        run at least twice as fast.  Also fixed a potential buffer

        overflow.

        -Zane 2/16/00



Bugfix: Fixed a memory leak in mprog_command_trigger where strdup() was 

        being called without freeing the memory later.  This was 

        especially bad considering every time a command was entered 

        memory was allocated and not freed.  I'm gonna blame this on 

        Zak cuz I think he wrote it and it's easy to blame him for 

        stuff. :)

        -Zane 2/16/00



Bugfix: Fixed a memory leak in do_quit (was calling strdup() to copy the

        char name and not calling free()).

        -Zane 2/16/00



Bugfix: Fixed a memory leak in do_prompt where it was calling strdup()

        instead of str_dup().

        -Zane 2/16/00



Bugfix: Fixed at least 8 memory leaks in the do_award function where

        strdup() was being called, but not free().  There are several

        other bugs in this function, if someone wants to volunteer to

        fix them...

        -Zane 2/16/00



Bugfix: Fixed a bug in the new MUDProgs parser where if statements 

        with multiple elseif's weren't working quite right.

        -Zane 2/16/00



Change: specials.c is GONE.  All references to spec_progs everywhere have

        been removed.  All the mobs that once had spec_progs now have

        MUDProgs instead.

        -Zane 2/16/00



Bugfix: Fixed a bug in evaluate() - passing it !<number> was always failing.

        -Zane 2/16/00



Bugfix: Fixed an infinite loop bug in MUDProgs.  Oops!

        -Zane 2/16/00



New:    Added 'mprandomsocial'.  Allows a MUDProg to execute a random

        social.

        -Zane 2/16/00



New:    Added MUDProg functions called sgetrand(<number>) and sreset().

        sgetrand() works just like getrand() except that the result is 

        static within each prog.  So the first call to sgetrand() in a 

        prog will get a random value and each additional call within 

        that prog will return the same value (if the number parameter 

        changes then the values will also change -- calling sgetrand(33) 

        then sgetrand(40) will return two different values).  sreset()

        makes sgetrand() think this is a new prog and therefore generate

        a new random value.

        -Zane 2/16/00



Change: Changed a couple of procedures that were calling str_prefix 

        backwards.  The result was usually the same but calling it

        backwards is a bit slower than calling it the right way if

        they pass a real prefix and not the full string.

        -Zane 2/18/00



Change: Optimized str_prefix() a bit by making it correctly handle 

        having astr be longer than bstr.  Previously it was only 

        checking astr's length which is a potential buffer overflow 

        (but only on very long astr's with shorter bstr's).  The

        profiler pointed to str_prefix as being one of the biggest 

        resource hogs.  It's now about 3% faster. :)

        -Zane 2/18/00



Change: Performed some speed optimizations in interpret() (sped up 

        by about 15%).

        -Zane 2/18/00



New:    Added a new global list player_list.  This is a list of all 

        PC's and is MUCH better than looping through char_list and 

        checking to see if they're NPC's or PC's.  There are thousands 

        of mobs loaded and usually a small fraction of that number are

        players.  Using player_list is SOOO much faster.

        -Zane 2/18/00



Change: Optimized aggr_udpate() - It now loops through the player_list

        instead of char_list.  The speed increase on this should be 

        huge since we're only looking through a list of players 

        instead of a list of all mobs.

        -Zane 2/18/00



Bugfix: Fixed a problem where in the aggr function they were trying to

        pick a random player in the room but the way they were doing 

        it would always pick the first player in the list.

        -Zane 2/18/00



Bugfix: In mobile_update(), rand_progs would only trigger on mobiles in

        areas that had people in them.  rand_prog now triggers on mobs 

        who have ACT_ALWAYS_UPDATE wether or not the area is empty.

        -Zane 2/18/00



Change: Minor speed improvements made to check_social.c (about 7%).

        -Zane 2/18/00



Change: Slight speedup in char_update().  Using player_list instead of

        char_list for the auto-save and auto-quit portion.

        -Zane 2/18/00



Change: Slight speedup in check_reconnect() - using player_list instead

        of char_list now.

        -Zane 2/18/00



New:    Put a configfile in.  Right now it checks in the current dir

        for CONFIG_FILE (defined as ember.cfg right now).  This file 

        is in ini file format (don't bitch).  Eventually most important

        #define's will be moved into this file.

        -Zane 2/22/00



New:    Added ClansFile to ember.cfg.  The MUD now uses the value of

        ClansFile (located in the AreaDir directory) to load and save

        clans.

        -Zak 2/24/00



Bugfix: Fixed a crash bug that Zane left in clan_log() when he converted

        it to use the new AreaDir setting in ember.cfg.

        -Zak 2/24/00



Bugfix: Fixed a bug in str_prefix() that was causing the 'quit', 'reboot',

        'shutdown', 'delete', etc commands to fail.

        -Zane 2/28/00





v0.9.40 [2/9/2000]

--------------------------------------------------------------------------

Bugfix: 'edit mprog assign' and 'unassign' now mark the area that the 

        obj/mob/room is in as changed.

        -Zane



Bugfix: When editing exits in the room editor, typing a direction followed

        by something that doesn't make sense now generates an error 

        message instructing the user to type "help exit".

        -Zak



Change: The 'vnum mprog' command now indicates if a prog is a Room,

        Object, or Mob prog.

        -Zane



Change: Changed the mprog editor command 'progtype' to use str_prefix

        instead of str_cmp for it's type arguments (mobprog, objprog, 

        roomprog).  Now you can just type 'progtype obj' for instance.

        -Zane



Change: Removed the MOBProgs, OBJProgs, and ROOMProgs directories inside

        the area directory (they are no longer used by the MUDProg code).

        -Zak



Change: MAJOR changes to the way MUDProgs work.  A lot of this is "under

        the covers", but MUDProg OLC has also been improved.  New

        documentation is planned, but for the moment, let's start with

        this:  edit mprog create, edit mprog delete, and edit mprog 

        assign.  Inside the editors, type commands for a list of commands.

        -Zane



Change: Removed most of the spec_procs from special.c and replaced them

        with MUDProgs.  Only spec_thief and spec_puff remain.

        -Zane



New:    Added mpeatcorpse MUDProg command.  This one is a simple command

        that any mob can use to eat a corpse and drop it's objects on 

        the ground.

        -Zane



New:    Added mpfollowpath MUDProg command.  Basically this was needed 

        so that you could provide a character string movement path for 

        a mob and it will follow it, doing certain things.  Mainly 

        this was added to get Midgaard's Mayor's mudprog to work but 

        it can be used with other mobs in the future.

        -Zane



New:    Added alignment($*) to mudprogs.  Returns the target's alignment.

        -Zane



New:    Added fightinroom() to mudprogs.  Returns true if anyone in the 

        room is fighting, returns false if not.

        -Zane



New:    Added crimethief($*) to mudprogs.  Basically returns wether or 

        not the target has their crime set to THIEF.

        -Zane



New:    Added hour() to mudprogs.  Just returns the current mud hour.

        -Zane



New:    New command: 'edit mprog unassign'.  Removes a prog or prog group

        from an obj/mob/room.

        -Zane



New:    Added AND to the if statements.  So now the following statement 

        is valid in a mudprog:



        if getrand(50) <= level($i)

        and level($i) <= 10

          do stuff

        endif



        The only limitation right now is there is no good way to mix 

        and match and and ors.  There is no () equivilant in Mudprog 

        so x == 1 || ( x == 2 && y == 1) could not be done.  

        Basically it evaulates in the order you place them in the 

        script. So to the above you'd have to do:



        if x == 2

        and y == 1

        or x == 1



        -Zane



New:    Added a new MUDProg trigger "HIT_PROG" for objects.  This one

        is triggered when a weapon hits an enemy and takes a percentage

        as an argument (like rand_prog, fight_prog, etc).  If you're

        writing code that uses the damage() or new_damage() functions,

        they both now require an argument of a pointer to the weapon

        that did the damage (or NULL) so that its objprog(s) can be

        triggered.

        -Zane



New:    Added a new MUDProg trigger "FIGHTROOM_PROG" for mobiles.  This

        one accepts a percentage argument and basically rolls a die for

        each player fighting the mob every round.  For instance, if the

        argument is 25 and there are 4 people fighting the mob, then

        it is likely that one of the four will be a target.  Once one

        target is found, it'll break using that player/NPC as a target.

        -Zane



New:    mpsilentcast MUDProg.  Allows a mob/obj/room to cast a spell on

        someone without the usual "utters the words, 'yucandusbarr'"

        stuff.

        -Zane



New:    New ifcheck for MUDProgs -- immune().  Use it in ObjProgs to

        see if the target is immune to the type of damage that the

        object does (assuming that it's a weapon).  For instance, a

        dagger does pierce damage - if the target is immune to pierce

        damage, you may not want your program to trigger on that target.



        Example:



        hit_prog 1

        if immune($t) == 0

          mpsilentcast 'poison' $t

          mpechoat $t You have been poisoned by $n's weapon!

          mpechoat $n Your weapon has poisoned your enemy!

        endif



        -Zane





v0.9.40 Pre5 [2/2/2000]

--------------------------------------------------------------------------

Bugfix: Fixed several crash bugs where MUDProgs were doing an 

        "if ( ch->in_room->something)" without checking to see that

        ch->in_room wasn't NULL.

        -Zane



Bugfix: Fixed a bug in mprog_veval where it was trying to do a >= when it

        should have been doing a <=.

        -Zane



Bugfix: In the clan editor, typing members <some large number> no longer 

        sets members to 0.  Also, members <1 is no longer allowed.

        -Zane



Bugfix: In the clan editor, when NO_PK or REQ_PK is toggled it turns off 

        its opposite (ie: NO_PK is on and you toggle REQ_PK then NO_PK 

        is turned off and vice-versa).  I mean, if your clan is both NO_PK

        and REQ_PK, you can't have ANY members, right?

        -Zane



Bugfix: Fixed do_score() to properly format for creation points >= 100.

        Still think you should just be shot if you have that many creation 

        points.

        -Zane



Bugfix: Not really a bug, but...  There were no limits on the lengths of

        many of the clan strings (name, whoname, rank titles, etc).

        -Zak



Bugfix: Fixed another crash bug with saving files in save_area(), 

        save_area_list(), write_mobprog(), write_roomprog() and 

        write_objprog().  Basically if there was a problem opening 

        a file it would bug() it then go ahead and try to write to 

        it anyway.  Now it'll bug() it then exit the function letting it

        try to save other areas.

        -Zane



Bugfix: Fixed a bug in save_char_obj() where if the player directory did 

        not exist it would try to close a non-existant file and crash.

        Now it just bugs() the error and moves on with life.

        -Zane



Bugfix: When a player with max HP and wearing +HP equipment removed the 

        equipment, his current HP would remain at the old maximum until

        he was injured or healed or something.  This made it possible for

        people to run around with more HP than their max (even if it was

        only temporary).  When removing eq, if HP/mana/move > max, it is

        now set to max.

        -Zane



Bugfix: Scan will no longer show you characters in surrounding rooms if

        either those rooms are dark or your current room is dark.

        -Zane



Bugfix: The poofin and poofout wiz-commands no longer require your name

        to be included in the string.

        -Zane



Bugfix: Fixed a bug in clan.c where specifying a leader or sponsor that

        was not a character on the MUD (no pfile in player dir) would

        crash the MUD (fclose(fp) was being called on a NULL fp).

        -Zak



Bugfix: Fixed a bug in read_from_descriptor where long input lines would 

        just disconnect a character without providing a reason.  We now

        inform the character that the line was too long and was ignored 

        and leave the character connected.

        -Zane



Bugfix: Y2K fix to get_date.  On some systems (maybe all - haven't tested),

        the structure returned from localtime() gives the year as

        year minus 1900 (so year 2000 was 100).  get_date now uses

        year mod 100 (so 2000 is 00 and 3000 is 00, etc).

        -Zane



Bugfix: Fixed a bug in mpstat obj (do_objstat) where the wrong buffer was

        being output to the player (and therefore, mpstat obj was never

        showing programs for objects.

        -Zane



Bugfix: whoprefix and whorace weren't free'ing the string when deleted.

        -Zane



Bugfix: Added smash_tilde calls to set whoprefix and set whorace commands.

        -Zane



Bugfix: Fixed a buffer overflow in do_email.

        -Zane



Bugfix: do_oset and do_mset were not using str_prefix consistently.

        -Zane



Bugfix: Fixed a bug in do_who where it was using if (string == "string")

        instead of using str_cmp.

        -Zane



Bugfix: Fixed do_whois and do_finger to format for 2 digit levels.

        -Zane



Bugfix: Fixed bug in how clan information was being formatted in whois.

        -Zane



Bugfix: Fixed a crash bug in lookup_class where it was using == instead

        of str_cmp.

        -Zane



Bugfix: Fixed a minor bug in str_prefix where it would report an error as

        being from strn_cmp instead of str_prefix.

        -Zane



Bugfix: Fixed a potential infinite loop problem in whois.

        -Zane



Bugfix: Fixed last and lastimm (the right way).  Removed the global count

        variables and just did if (!last_list) instead of 

        if (last_count == 0).  last_list is the pointer to the most recent

        message in the last queue and starts out NULL untill the first

        message comes through.

        -Zane



Bugfix: Asave was broke (how many hundreds of people reported this that

        we didn't believe?).  It appears to have been related to some of

        the changes that Kyle made awhile back (clans).  In any case, 

        "asave all" should now work fine.

        -Zane



Bugfix: "fread_char: no match" fixed - The two clan parameters (clan 

        number and rank)were not put into the char read side.

        -Zane



Bugfix: Fixed several warnings when compiling under Visual C++.

        -Zane



Bugfix: Fixed whorace - it was padding spaces onto the end of the race to

        make it 10 characters.  Now the race will be centered in a field

        of 10 spaces.

        -Zane



Bugfix: Corrected the help for the set wiz-command.  Now displays 

        set char <blah blah blah> as an option.

        -Zane



Bugfix: Changed references to Ember.exe to EmberGUI.exe in the GUI

        version (this allows reboots to work in the GUI).

        -Zane



Bugfix: Fixed mpstat (changes to do_mpstat, do_mobstat, do_objstat,

        and do_roomstat).  mpstat obj <name> now works.

        -Zane



Bugfix: Fixed stat to use get_obj_world and get_mob_world to find mobs

        and objects.

        -Zane



Change: Changed bamfin and bamfout (poofin, poofout) to use str_str 

        instead of strstr to check to see if your name is in the 

        string.  Just means you don't have to use the same exact 

        case as your character name in the pfile.

        -Zane



Change: Increased MAX_STRING in db.c to allow for more areas.

        -Zak



Change: We're now including a full set of ROM-ish areas with the

        EmberMUD distribution.  Yeah, I know that back in v0.17 I

        said that we'd create our own set of balanced areas, but

        that's not likely to happen <sigh>.  There are bound to

        be bugs in these areas (I've been told there are some

        doors that are supposed to be locked that aren't, etc).

        If you find a bug, I'd appreciate it if you'd let us

        know about it!

        -Zak



Change: Modified the BCB3 version of the MUD to create its .OBJ files

        in an obj sub-directory under the BCB3 directory rather than

        in the main src directory.

        -Zak



Change: Changed do_email and do_comment to give an error message when

        the argument was longer than allowed (previously, the string

        was just truncated).

        -Zane



Change: Changed several buf[2*MAX_STRING_LENGTH] to buf[MAX_STRING_LENGTH]

        and made sure that str_len was being used to avoid buffer overflows.

        -Zane



Change: Changed log_string and logf_string to log to stdout instead of 

        stderr under Win32 so it can be re-directed in DOS.

        -Zane



Change: Removed the BCB1 project files -- surely no one is still using

        C++ Builder 1.0...

        -Zane



Change: Moved a lot of #define's from merc.h to config.h.

        -Zane



Change: Changed MAX_LEVEL back to 60.  This makes sense because nobody is

        ever going to adjust the skills/spells/etc to work with 100 levels.

        Also replaced ALL hard-coded references to 100 levels with MAX_LEVEL.

        You should only have to change MAX_LEVEL in config.h if you want to

        switch back.

        -Zane



Change: Who now only uses two digits for player's level (this goes hand

        in hand with the MAX_LEVEL change).

        -Zane



Change: Changed the gain_exp function so that it stops deleting players

        trying to exploit the lose xp to wrap around to max xp bug.  Now

        if your exp would be set to something less than 0 it's set to 0

        and if it would be set greater than MAX_EXP it's set to MAX_EXP.

        So if you're at or near 0 xp and flee or die you won't go negative.

        -Zane



Change: Replaced startup.bat for Win32 systems with startmud.exe.  It does

        the same thing startup.bat was supposed to do, except it works.

        -Zak



Change: Added the -lcrypt to the Makefile so it'll compile under glibc 

        Linux properly.

        -Zane



Change: Made a change to aggr_update() so that a redudant check and loop 

        is removed in some cases

        -Zane



Change: Unlocked a door that had no key in haon.are.

        -Zak



Change: Room affects are gone.  Use a RAND_PROG on a room and setup a 

        program to do damage in there.  Of course with room progs you 

        can do much more than damage every pulse, you could have a nice

        healing room or a room that blessed or something similar.  If 

        you're upgrading from an old version of Ember and moving area 

        files over you'll have to go through each one and remove the 

        #RAFFECTS section.

        -Zane



Change: Removed olc.hlp and ember.are from the area list (and deleted 

        the files) and made it so that olc_save doesn't re-add these 

        to the area list.  All helps MUST be in help.are

        -Zane



New:    Added code to give an error if #HELPS section is found in 

        any file other than HELP_FILE.

        -Zane



New:    Added code in load_area to ensure that the vnum range is 

        unique when loading the area.  If the range is not unique, 

        we bug() it and terminate the mud.

        -Zane



New:    ? clanflags in the clan editor actually lists the clan 

        flags now.

        -Zane



New:    Added a do_rfind() function and modified vnum to find rooms 

        also. (Also shows what area the room is in).

        -Zane



New:    Added snprintf for MSVC.  Basically it just wraps around 

        _snprintf() so we can use snprintf freely without worrying 

        about compatibility.  Stole the wrapping code from Kyle's 

        clan code.

        -Zane



New:    Added a MAX_EXP define to limit the maximum amout of experience

        any player can have.

        -Zane



New:    Added an EXP_MODIFIER to config.h.  This is a modifier that is

        applied to all experience players gain (allows you to tune how

        easy or hard it is to level overall).  This modifier is only

        applied to xp gains, not xp loss due to penalties (fleeing,

        dying, etc).

        -Zane



New:    Added the lore and identify commands.  Use them if you have the

        lore skill.

        -Zane



New:    Added code for the lore skill.  It can be used to "identify" 

        items (similarly to how the identify spell works).  Depending

        on the level of the item and the level of the player, different

        detail will be available (unlike identify which always gives

        the same results).

        -Zane



New:    Added a function called str_str that checks to see if a string 

        exists within another string just like strstr but is 

        case-insensitive.

        -Zane



New:    Added a str_upr function that uppercases the string passed to it

        (functions just like MSVC's _strupr() function).  Used because 

        not all OS's  support have strupr().

        -Zane



New:    Added owhere command.  Works just like mwhere except it lists 

        the room or obj or char the object is contained in instead of

        just the room.   Displays R:, O: or M: based on what the 

        object is in (Room, Object or Mob).  Players have no vnum so

        instead of a vnum is says [Player] if the  object is in a 

        players inventory (or worn).  If an object is inside another 

        object inside a mob or player it'll still show up as inside 

        an object.

        -Zane



New:    Added some functionality to MUDProgs.  Basically if statements 

        now allow functions on both sides of the operator so both of 

        these are valid:



        if level($i) >= 5

        if level($i) >= level($n)



        The first checks to see if the mob's level is greater than 5 

        and the second checks to see if the mob's level is greater than 

        the level of the PC or NPC that triggered the mobprog.

        -Zane



New:    Added a new mobprog function called getrand().  This function 

        returns a number between 1 and the number you pass it.  

        getrand(50) will return some number between 1 and 50.

        -Zane



v0.9.34 pre 1 [9-22-98]

--------------------------------------------------------------------------

Bugfix: Doing whois on an offline player could crash the mud.  Was a bug

        in get_word calling malloc(sizeof(char*)) which only allocates

        4 bytes instead of malloc(MAX_STRING_LENGTH) like it should have.

        -Zane



Bugfix: Create Clan now works.  Was a small mistake in olc.c that was

        expecting "cedit" instead of "clan".

        -Zane



Bugfix: The BCB3 Ember GUI should now be functional.  Also BCB3 and BCB1

        files were given their own directories under src to clean things

        up a bit.  The executable was also renamed to EmberGUI.exe to

        make way for the console version of Ember called Ember.exe.

        When you make a new executable you'll need to copy it back down

        to the src directory before running it.

        -Zane



New:    The Microsoft Visual C++ console port is in and under the MSVC

        directory.  The console executable was also included in the src

        directory (Ember.exe).  You'll need to use startup.bat to run it,

        just like the UNIX version.

        -Zane



New:    A small Unix sleep clone was included in the src dir and the source

        is in the Sleep directory under src.  Be amazed at the complexity.

        :)

        -Zane



To Do:   I'm working on getting hotboot to work under Win32 but Winsock is

        not playing nice.

        -Zane



v0.9.33 [8-25-98]

--------------------------------------------------------------------------

Bugfix: If a PC was charmed, they could type nofollow to become uncharmed.

        -Kyle



Bugfix: Console class can no longer be chosen during new character

        creation.

        -Kyle



Bugfix: New do_title function...  Allows longer titles and doesn't count

        color codes anymore.

        -Kyle



Bugfix: Link break / reconnect code fixed (again).

        -Kyle



New:    Clans.  No documentation is available yet, but Kyle has promised

        it is forthcoming (everyone bombard boyd1@proaxis.com with stuff 

        like "Where's the docs for clans?" and "Quit playing TA for 

        awhile!" <grin>  Seriously...  This is a HUGE accomplishment!

        Kyle is THE MAN.  I can't wait to see what people do with this.

        -Kyle



New:    Whois now displays number of PK deaths if the player is PK.

        -Kyle



New:    New commands setedit and setprog to allow/deny players access to

        OLC and the Mudprog editor respectively.

        -Kyle



New:    Whorace and whoprefix wiz commands.  Allows wizards to set the

        who text for a player's race and prefix their name with some

        text.

        -Kyle



New:    Objcheck command.  In Kyle's words:  "This cycles through a

        given set of vnums and identifies problems in the objects.

        Useful for quickly debugging objects in new areas.

        -Kyle



New:    STARTING_PRACTICES, STARTING_TRAINS, and STARTING_TITLE #define's

        added to config.h.

        -Kyle



New:    More config.h options.  Check Kyle's comments in config.h for

        details.

        -Kyle



New:    New object flags anti-cleric, anti-thief, anti-warrior, and

        anti-mage.

        -Kyle



New:    Morgue.  Toggle it on/off and set the vnum in config.h.

        -Kyle



Change: The music channel is now the OOC (Out of character) channel.

        -Kyle



Change: Players with trust or level >= MAX_LEVEL automatically have access

        to OLC (no security check).

        -Kyle



Change: Material_type table filled in.  Still not implemented, though.

        -Kyle



v0.9.32 [Release date not recorded]

--------------------------------------------------------------------------

Zane

----

 Distribution now includes both Unix and Win32 code as well as the Win32

 executable.



 Win32 port via Borland C++ Builder.  If you don't own a copy of BCB then

 you should go buy it right now.



 Features of Win32 port include:



	Administrative GUI Console

	Log window, autosaves every night at midnight.

	Users tab, lists all online users and allows you to kick, freeze,

	ban, restore users from the GUI.  You can also send messages to

	users via tell.  All these options are available by right-clicking

	on a user in the user list.

	Statistics tab that updates once a second.  Basically just uses

	the output from the mem commmand.

	Channels tab, lists all output from Channels, Echo, Info and allows

	the console to send messages to any channel (including echo and 

	sinfo).  The name used will be the Console Name on the Options tab.

	Options tab, you can set the Port number form here as well as the

	console name (used when sending channel messages).

	When minized it hides from the taskbar and becomes an icon on

	the system tray.

	You can shutdown and reboot from within the GUI.

	GUI has crash protection code, if the mud hangs for five seconds

	then the GUI will restart it.  This timeout is configurable.



 The GUI code will not affect compiling under Unix.



 Ticks are no longer logged unless you compile with -DDEBUG.



 To do:



	Add user editing to the Online Users tab.



Zak

---

 Yes, there's been a version numbering change.  0.32 is now 0.9.32 in

 preparation for v1.0.0 by July 1998 if everything goes well.



 Please check out README-0.9.32 and http://members.tripod.com/~Zak0/

 for important information about this release.



 Documentation for room affects, finally.  Check the doc directory.



 While looking at the raffect code, I realized that although when they

 were deleted, the used memory was being kept in a free list, the free list

 wasn't being recycled in new_raffect().  That's fixed now.



 New output format for do_mobstat, do_roomstat, and do_objstat functions.



 Changed ch->buffer code from Thanatos' mudprogs into standard sprintf(), 

 strcat(), and strlen() checks.  This code (or something very similar) 

 will probably end up in an official EmberMUD release in time, however...



 Don't forget to copy the supermob (mob vnum #4 in limbo.are) and his room

 (room vnum #4 in limbo.are) into your area files, or your MUD won't boot.



 Don't forget to make OBJProgs, ROOMProgs, and MOBProgs subdirectories under

 your base area directory, or you won't be able to use any of those features.

 

 Removed olc_ed_vnum function from olc.c.  It's not being used for anything...

 Anyone know why it was even there?



 Fixed a bug in new_mprog() related to using recycled memory.



 New function check_level().  Pass it an argument (like you would pass to

 interp()) and it will return the level required to execute that command.

 

 Added check_level() call to mpsilentforce() to restrict which commands

 mudprogs can silentforce (only commands of level < MAX_LEVEL-9).



 Added check for silentmode being true in update.c (should never ever

 happen, though).



 Ooooh Yessss...  I've got command_prog working for mobs.  This still needs

 testing before it's expanded to objects and rooms, but it looks really

 good so far. (It's funny to have Hassan tell me I suck every time I type

 north (or no or n) in the room with him).



Kyle

----

 mpdefault?

 

 command_progs expanded to work with objects and rooms.

 

 act_prog_data struct?

 

 Default new mudprog changed from in_file_prog to rand_prog.

 

 Added line numbers, line replace, line delete, and other changes to the

 line-based online text editor.  Oh, and fixed ~ on a blank line not working

 bug.

 

 Fixed Obj->next == object_list bug.



 New mudprogs - mpsilentforce and mpdosilent.

 

 mpsilentforce allows a mob, obj, or room force someone to do something

 without any output being generated.  Like, the mob makes you drop something

 and then echos at you that the item flew from your hands at his command

 or something.

 

 mpdosilent allows a mob to do something silently.  For instance, a mob could

 open a door silently and then echo at you that the door opened when he said

 "Open sesame" or something.



Tyrluk & Thanatos

-----------------

 logf_string() and new bug() function that work like printf() to eliminate

 the need for buffers in a few places.



 bug_trace() function???



 mpversion command inside the MUD now reports the base version of EmberMUD

 this mud is running on.



 New function: remove_color() which could have many uses, I suppose.



 printf_to_char() function that works like it sounds... send_to_char with

 printf() like options.



 Added some reset validation code to OLC to prevent bad resets from crashing

 the MUD.



 MUD Programs.  That means not only mobprogs, but roomprogs and objprogs

 as well.  This is a port of the SMAUG MUD progs code.



 Online mudprog editing.  'Nuff said.



 Changed a bunch of MAX_STRING_LENGTH to MAX_INPUT_LENGTH.



 Cleaned up OLC some.



 In edit mob, when you set the level of a mob, his stats are automatically

 set to reasonable defaults.



v0.31 [11-23-97]

--------------------------------------------------------------------------

Zak

---

 Again, check out the README.031 file for important notes on EmberMUD.



Kyle

----

 The Playtester's Arena area has been included in the area directory.

 This serves several purposes...  1) It gives the beginning admin a

 chance to add in an area (just put it in area.lst and go put an exit

 from Market Square down to room 400).  2) It gives playtesters or

 builders somewhere to go to do something other than killing fidos

 or mud school mobs.  3) It provides eq for up to level 10 newbies,

 since previously there was none.



 Change in act_move.c to keep xp from being taken away from mobs when

 they recall.  This caused the mud to crash when you recalled with a pet.

 

 Change in comm.c to prevent new players entering a large number while

 stat rolling and getting strange stats. (ie: -102 str, 4941 dex, etc)

 

 Random object loading code is in.  This only applies to objects that may

 load on a particular instance of a particular mob.  Basically, it works

 like this:  In OLC for a mob, you set a percentage chance of random objects

 loading.  You also must set a number of objects to load and a type of

 objects.  Currently, if the number of objects is greater than one, there

 is an even chance of that number of that type of objects being loaded.

 What that means is, if the number is 2, there's a 50% chance of 1 object

 loading, and a 50% chance of 2 objects.  If the number is 4, there's a

 25% of 1, 25% of 2, 25% of 3, and 25% of 4.  You get the idea...

 Objects of type ring, magic-weapon, and magic-armor are currently generated

 with one random affect attached to them.  The higher level the mob is,

 the better material the random object will be made of.  This is determined

 as a percentage of MAX_LEVEL.

 

 Documentation for the random object code is in the doc directory

 (random.doc).

 

 Fixed another missing smash_tilde in do_buy (when you buy a pet, you can

 name it, and that name is saved in the pfile, so if you know anything

 about smash_tilde bugs, you already know how to take advantage of this

 one).  Another bug that was fixed in ROM 2.4, but we only just now caught

 it.



v0.30 [9-21-97]

--------------------------------------------------------------------------

Zak

---

 Please check out the README.030 file in this directory for release notes

 regarding this version of EmberMUD.

 

 Added config.h file for defining various constants for use in the game.

 (things like colors for the various channels, connect and quit messages,

 etc).  I expect to change some of these things from constants to variables

 that can be changed on-line while the game is running (no hotboot required!)

 Definately take a look at config.h if you're a new EmberMUD admin!



 Fixed a bug pointed out by Rindar: All of the healing, curing, etc spells

 were using hit_xp_compute() to figure xp for casting the spell.  This has

 been replaced with a new function cast_xp_compute() that no longer modifies

 the caster's alignment.  While messing around in this code, I noticed that

 a lot of spells are not giving the caster any xp at all.  Someone (me?) 

 should go through and put some cast_xp_compute() calls in those spells as

 well, probably.



 Fixed a small bug in do_finger (x!=71 changed to x<71).  If a player's

 title was especially long, x could already be more than 71 before the loop

 was entered...  Therefore the loop would never end!



Raven & Rindar

--------------

 Modified the add2last function.  This should fix a number of errors when 

 accompanied with the send fix.



 Modified do_sendinfo so that it would work with add2last.  This should

 fix a number of errors when accompanied with the new add2last fix.  These

 errors include crashes due to gossips, being AFK, and using the LAST 

 command.



 Fixed the bug in do_quit which would often crash the game when someone

 quit.



 Did two quick fixes in fight.c to the functions do_bash and do_dirt. They 

 had probably been there since MERC.



 Added the "heal" command and healer to EmberMUD.  This feature can be

 found in a number of MUDs, and allows NPC's to sell healing spells to

 rich adventurers.  Use the act HEALER flag to enable this.

 

 [ Zak: If you look back in Zane's 0.21 changes, this was removed before.

        I'm going to allow it to stay for the meantime, but I do still intend

        to remove it permanently and replace it with a mobprog someday ]



 Activated the shield_block skill.  It works in a way similar to parry.

 This is not meant to be a brand new feature; it is simply a way to 

 justify keeping the shield block skill in the character roller and 

 to keep players of the backs of Admins.



 Activated the special weapon code for some of the weapons (technically,

 Russ Taylor activated the code.. we just ported it over).



 Changed the way the game loads when booting.  The new order allows 

 objects or MOBs from an area to be used as resets in ANY other area. 



 Fixed the memory leak in add2last that was causing the MUD to crash 

 after too many gossips were executed.



 Fixed the bug with the WHO list that showed the "Visible immortals:"

 message even when all imms were WizInvis.



 Fixed the bug in which too long of titles crashed the game when a 

 SCORE was done.



 Fixed the bug in which too long of tells would crash the game.



 Fixed the MAJOR bug that allowed charmed NPC's to execute MOBPROGS

 when ordered.  This bug could give anyone with the charm spell IMP

 powers.



 Fixed the MAJOR bug that allowed the master to force a charmed PC to

 DELETE themselves or change their password.



 Fixed the possible "roll-over experience" bug that allowed players to

 easily get to the lowest IMM level.



 Fixed the buy bug that crashed the game when too many items were 

 purchased. Also fixed the bug that allowed characters to gain skill 

 in haggle even if they didn't buy anything.



 Fixed the bug in polearms that was setting them as whips.



 Fixed the bug in the bodypart list that would set MOB bodyparts 

 incorrectly.



 Three new manuals have been added to the DOC folder: ADDRACE.TXT, 

 ADDCOMM.TXT and CRLFFIX.TXT.  The first instructs the reader in how

 to add new races, the second in how to add new commands, and the 

 third in how to remove unwanted CR's.



 The unofficial EmberMUD homepage is now up at:

  http://www.concentric.net/~Clogar/

 The site contains various code snippets, bug fixes, rumors, and links.

  

v0.29 [11-25-96]

--------------------------------------------------------------------------

 New beep command to toggle beeps on/off.

 

 When you have beeps on, you will hear a beep when someone tells to you.

 

 When someone tells to you while you're AFK, you will still see the tell

 (and hear a beep if beeps are on), as well as the tell being recorded

 in your messages.



 Reconnect code has been reactivated and eq clone bug has been fixed the

 RIGHT way.



 Bug stomped...  When you ordererd a pet or charmee to wake up, the mud

 would crash.  FIXED.



 I'm pretty confidant the whois related crashes will stop now.

 

 add2last_imm was occasionally trying to free an empty tmp->sender string

 somehow...  There's an if check in there now to prevent that, but I'm not

 sure why it was doing it in the first place. <shrug>



 Ordering a mob to wake or stand would crash the mud.  FIXED.



v0.28 [11-23-95]

--------------------------------------------------------------------------

 Fixed crash bug where ordering a charmed mob to advance would crash the

 mud.

 

 Fixed bug in xp per hit system where you could get xp for damaging yourself.

 (ie: poison, casting magic missile on self, etc).

 

 Small code cleanup in act_wiz to prevent compile-time warnings.

 

 Fixed security bug in do_prompt (no smash_tilde(argument)).

 

 _OLD_ bug introduced when OLC was installed fixed.  In do_mstat, there

 was a reference to ch->pcdata->security that should have been

 victim->pcdata->security.  <shrug> Dunno how that happened.  This caused

 crashes every once in awhile (for instance if you were switched and got

 statted, the !IS_NPC(victim) would pass, but victim->pcdata would be NULL

 (since you really ARE an NPC), and the above reference would cause a

 segfault.

 

 There are still some switch related bugs in do_mstat.  Nothing that

 seems to crash the MUD, but stuff that produces some strange information...

 Hey, don't stat someone while they're switched, and you won't have a prob!

 

 Crash bug fix.  If Zak switched into Hassan, then someone told to Hassan, 

 the mud would crash.  Problem was that add2tell wasn't checking for a NULL

 victim->pcdata.

 

 Bug in the maximum damage check fixed.  If a mob did more than 1000 points

 damage, the mud would crash.

 

 _ALL_ references to the control port have been removed.  I don't have the

 time to work on this piece of code right now, and it's still causing people

 problems, so it's gone.  It was a good idea, though. 8-)

 

 

v0.27 [10-19-97]

--------------------------------------------------------------------------

Zak

---

 I think this falls in the DUH category.  Last was being added to once for

 each player online.  All calls to add2last need to be moved outside of the

 descriptor_list loops.  Sorry about that guys <blush>.



 You can now name rooms with OLC to include the word dark.

 

 Added a cls(descriptor) macro to clear screen.  Used it in show_string to

 clear screen before each screenfull of text.

 

 I think the hotboot bug may be fixed.  It seems to be working okay on my

 home system, at least.  After hotboot, I can telnet back into the control

 port w/o a problem, as well as the main mud.  I get no errors in my logfile,

 and it doesn't seem to be eating memory like crazy anymore.  I still need

 someone to test it out on a heavy-use system, though.

 

 Added a last command for the imm channel.  Use lastimm to view the last

 MAX_LAST_LENGTH messages from the imm channel.

 

 Added a last command for all private messages (tells, gtells, replies...)

 Type tq to show your last MAX_LAST_LENGTH private messages.



 Wizi imms should now show up as someone in last if they were wizi above

 your level when they gossiped (or whatever).



v0.26 [10-6-96]

--------------------------------------------------------------------------

Zak

---

 Made the last_list global instead of being attached to each individual.

 This saves a lot of memory, plus allows players just logging on to view

 the last MAX_LAST_LENGTH messages from before they logged in.  Also, dunno

 if this is a plus or a minus, but if you're "tuned out" of a certain channel,

 you can still see what's been said on it lately by typing last.



 _ALL_ clan code has been commented out.  Eventually it will be removed

 completely.  I'm going to redo all of the clan code from the beginning.

 You need to remove clans.are from your area directory, and from the area.lst

 file.

 

 whois crash bug fixed (trying to free_string something that shouldn't have

 been being freed).



v0.25 [9-10-96]

--------------------------------------------------------------------------

Zak

---

 Started changes to support control client connections on the port the

 mud is running on plus one.

 

Zane

----

 Re-enabled xp/alignment code.  It works like this:  When you're of good

 alignment and kill a good mob, you get less xp than if you kill a bad mob.

 If you're of bad alignment and kill a good mob, you get more xp than if

 you killed a bad mob.  Get it?

 

 Fleeing now costs 5% of level.  This should help prevent bs-flee-bs-flee...

 

 Recall during a fight now costs 10% of level.

 

 If you do more than 1000 hp of damage in one hit, your weapon will be taken

 away, and your name will be logged.

 

 You now get 15% more xp while in a group.  ( Zak - Is this the right way to

 encourage grouping?? )

 

 Damage messages are now based on the % of HP damage you do to your enemy

 instead of flat numbers of HP.

 

 You no longer recieve xp for killing a mob.  You now recieve xp on a per

 hit basis.  You will recieve a message telling you the total xp you earned

 after the fight has ended (whether through flee, recall, kill, whatever).

 

 You now recieve xp for casting healing spells on anyone besides yourself.

 Also, you recieve xp for casting any remove spell.  The amount is based on

 the amount of HP healed, and the level of the caster.



v0.24 [9-2-96]

--------------------------------------------------------------------------

Zane

----

 Note boards are in.  New command board to list/change current board.

 Note command changed as follows:

 

  note list  - now lists all notes on the current board.

  note read  - now reads a note on the current board.

  note write - starts writing a new note.  You are automatically

               set AFK until done, and any tells to you are queued

	       until you're done.

  note       - note without an argument reads the next new note on

              the current board.  If there are no new notes left,

	      the current board is changed to the next board.

 

 Autolevel is out (type advance when you are notified that you are ready 

 to level).  This will allow you to go wear leveling eq first, or save your

 xp up to spend later (at a meta shop perhaps)?

 

 Message queues are in.  Tells to you are saved in a queue while you 

 are AFK, asleep, in quiet mode, or posting a note to a note board.  When

 you awake, come back from AFK, turn of quieit mode, or finish posting,

 you will be notified of how many messages have been recorded.  Type 

 messages to see tells recorded in the queue.

 

 When you're AFK, you can now still do stuff, but you will be constantly

 reminded that you are still AFK.



 Also, when you wake from being asleep, you automatically do a look now.



 Memory leak in alias code fixed.  Memory leak in prompt code fixed.

 

 New command, last.  Repeats last MAX_LAST_LENGTH things you would have

 heard (tells, gossips, infos, etc).

 

 PK corpses could be looted by players if the kill was by a mob.  Fixed.

 

 Last mob or player to kill a player stored in pcdata (and shown in whois).

 

 Number of pk kills and number of times killed by pk players stored in pcdata

 (and shown in whois).

 

 email and comment commands added.  email <text> and comment <text>.

 Both variables are displayed in whois text.

 

 track.c integrated into act_move.c

 alias.c integrated into act_info.c

 

 Crash bug in AFK code fixed (has to do with switched immortals).

 

v0.23 [8-29-96]

--------------------------------------------------------------------------

Zane

----

 Added hotboot wiz command.  Thanks to reszor@intrcom.com for his TAOD

 code so we could grab this bit of code.  It's really nice.  It reboots

 the MUD (for code changes, loading new area files, or whatever) without

 kicking all of the players offline.



Zak

---

 Memory leak in do_finger fixed.



v0.22 [8-12-96]

--------------------------------------------------------------------------

Zak

---

 Got rid of the global buf and arg except in olc_act.c.



 Don't know who added it or when (probably Alander), but there's a

 nice little undocumented feature a lot of people may be interested in.

 You can gzip all of the pfiles in the player directory, and when

 someone logs in, their file will auto-ungzip.  Use this once a month.

 Whatever .gz files are left at the end of the month are players that

 haven't logged on in a month and can be deleted.  Cooley, eh?



 CON_GET_ANSI connected state added.  Players prompted "Use ANSI?" in

 new_descriptor(). d->ansi set accordingly.  Color command remains for 

 online toggling.



 Just hitting ENTER at the "Use ANSI?" prompt defaults to Y.

 

 help item ANSIGREET is displayed instead of GREETING for new connections

 answering Y to "Use ANSI?" prompt.



 smash_tilde() added to do_alias function to fix security bug.  That

 alias code came directly from ROM 2.4, I think...  Hrm...

 

 Fixed lots of buf[] and arg[] crash bugs.  I'm beginning to think maybe

 we should change them ALL back...

 

 New whois (maybe other stuff?) doesn't use the reserved file descriptor.

 That could probably pose a problem...  Someone else do it -- PLEASE! <G>

 

v0.21 [not released]

--------------------------------------------------------------------------

Zak

---

 Couple of extra spaces in whois output for players not currently online

 removed.



 Track command added.  This should probably be a skill or not be available

 to players at all or something.  Usage: track <someone> will tell you the

 first step to take in the direction of <someone> as long as they are in

 the same area as you.  <somone> may be a mob or a player either one.

 (I would like this to be worldwide, but not until it's made into a skill).

 

 Lots of little touches.  Small fix in score display, changed "Note 

 protected" string to "Note unprotected" when unprotecting a note, etc...



 New MOBProg command, mpremember.  Syntax is: mpremember <name>.  MOB will

 remember <name> until name logs off.  



 New MOBProg command, mpforget.  Clears calling mob's memory.

 

 New MOBProg variable, $b.  References name of mob or player in memory.



 New MOBProg ifcheck, memory.  Used as follows:

  if memory( )               : Returns TRUE if memory is not empty.

  if memory( ) == $*         : Returns result of evaluation of opr and $*.

                               opr may be any of ==,!=,/,or !/.  $* may be

			       any of $n, $t, and $r.

  if memory( ) == <name>     : Returns result of evaluation of opr and <name>.

                               opr may be any of ==,!=,/,or !/.  <name> may

			       be any string not beginning with $.

 

 Following is an example of how to use the new MOB memory stuff:

 

 >speech_prog die~

 mpremember $n

 say I shall remember thee, $n!

 tell $n YOU, my friend, are the one that shall die!

 ~

 >speech_prog forget~

 if memory( )

  shout Oops, I forgot all about $b!

  mpforget

 endif

 ~

 >rand_prog 5~

 if memory( )

  shout $b shall die!

 endif

 ~

 |

 

Zane

----

 All buf[MAX_STRING_LENGTH] and arg[MAX_STRING_LENGTH] should be using

 the global versions instead of function specific versions.  This means

 it is possible that some buf's and arg's are being overwritten by a new

 function before the old one gets used.  If a command is acting strangely

 or not working, this is most likely the cause.  PLEASE LET US KNOW!

 

 Mobs now load with all comm flags turned on.  This means MOBProgs can now

 yell, shout, gossip, etc...

 

 Removal of healer.c (specific vnum coding must DIE!).



 New MOBProg for healer to replace healer.c stuff.



 db.c and db2.c cleaned up and combined.



 Old areafile conversion routines nuked as part of db.c cleanup.



 New make diff option added to Makefile.  src/original directory must

 exist and have copies of the *.h, *.c, and Makefile you are diffing

 against.



v0.20 [6-20-96]  DELETE YOUR notes.txt FILE!!!!!!!!

--------------------------------------------------------------------------

Zak

---

 New str_len() function to return the length of a string w/o counting any

 color codes inside it.  Allows me to put your title into score and

 whois output.



 New whois output.  Title in score.



 Added protected bit for notes and auto-delete for old non-protected notes.

 note_cleanup() is called at bootup, and anytime someone posts a new note.

 Auto-delete timer is one week currently.  It is set inside note_cleanup().

 

 note protect imp command added to make a note permanent.



 If a note is protected from auto-deletion, it will have a red P next to 

 it's number in note list.  Also, the N in note list for unread notes is now

 also red.

 

 If a note is protected from auto-deletion, when you read it, the word

 Permanent will appear in the note's header.

 

 Players are now reminded to note post upon entering the note editor.

 

 note protect imp command added to make a note permanent.



 do_count() function removed.  Yeah, I could have fixed it, but I think

 I'd rather just rewrite it from scratch later instead.

 

 I added some more color here and there.

 

 Default white color of gecho changed to grey (as it should always have

 been).



 Added get_curdate() and get_curtime() functions.



 Fixed memory leak in current time in configurable prompt.



 Fixed that extra space in do_score() for three digit levels.



v0.19 [6-16-96 I think it was]

--------------------------------------------------------------------------

Zak

---

 Startup script changed to work under bash, since that's my shell of choice.

 Old startup script renamed to startup.csh.

 

 Removed the extra space after player's name (before title) in whois output.

 

v0.18 [not released]

--------------------------------------------------------------------------

The original v0.18 Changelog was lost when we lost our old site.  The

following is what I can remember has changed since v0.17.



Thexder

-------

 %T in prompt for current time (according to the MUD's host's system clock).



 raffect command added to manipulate room affects.



 clan command added.



 who display changed.  (PK) instead of (KILLER), and player's clan name in

 front of their name.



 whois command added.



 rlist changed to work outside of OLC editors.



Thex & Zak

----------

 Room affects added.



 show command added.  show clans lists all clans.  show clan <name> shows

 some information about clan name <name>.



v0.17 [1-19-96]

--------------------------------------------------------------------------

Zak

---

 Makefile and startup script changed.  The MUD now compiles to an executable

 named ember instead of merc.



 A new distribution of the MUD has been built now.  It includes only the 

 area files neccesary to get you started.  Since we upped the level limit

 to 100, the old area files were unbalanced.  When we have our own standard

 distribution of balanced areas ready, we will probably distribute them as

 well.  Until then, thank the gods for OLC! <grin>



v0.16 [not released]

--------------------------------------------------------------------------

Thexder

-------

 MAJOR bug fix.  When Allowing mobs to cast for MOBProgs, all mobs could cast

 even pets, with unlimited mana and no level restricts on spells.  Now charmed

 mobs cannot cast spells.  This should fix any abuse of this bug.

  (Zak - I don't like this...  I wanna figure something else out, like maybe a

  higher level charm that allows charmed mobs to cast with some kinda limited

  mana or something.  Maybe Thex has something else in mind??)



 Fix for rest or sit while affected by sleep spell (would allow you to

 awake).



 Code added to do_who to show a player's clan (if clan!=0).



 Level 101 and 102 players now show up in who, but they show up as only

 level 100.  Useful for implementers who wish to snoop on other level

 100 players.



 Added function new_damage, same as damage function, with the addition of 

 a boolean argument of whether to show the damage message.



 Fix for pk and wands. You could zap anyone with wand, this is fixed.

 (Hopefully we have taken care of all "attack" instances and pk problems)



 Now while AFK no commands are accepted except "afk". Small fix in do_afk 

 needed to work with this code.  



 Upon entering game if char is afk, do_afk is called, seeing as how if

 they are there to enter the game, they aren't too afk. :)



 Simplified is_safe code by creating ACT_NO_KILL for mobs.  These are the 

 only mobs now unattackable by chars.



 Added brew and scribe skills.  Char must be holding an empty vial or blank

 parchment before the skill can be used.  



 Fix for some characters not being able to get on with Illegal name warnings.

 is_name was parsing their name to a mob name. (Need a better fix for this 

 later)



 Autosave disabled during CHAOS. Log reports skipped autosaves.



 cwho fixed(I think).



 Added another placeholder in who level.



 Check for NPC in wizi portion of show_char_to_char, otherwise setting

 a mob to ACT_UNDEAD made them look (Wizi).



 Minor color fix for 'web' string.



 Aliases, alias <word> <string>, unalias <word>.  Current MAX_ALIAS = 8.



 Shutdown and reboot disabled while in CHAOS mode.



Zak

---

 Who now takes a name argument.  "who i" for a list of immorts online changed 

 to "who imm" (because the way "who i" was checked made usernames starting

 with I not work when the name argument was provided.



 Added a function to save clans(in olc_save.c) called using 'asave world'

 'asave changed' or 'asave clans'.



 Clans are now saved in area/clans.are, any existing clans need to be moved

 this file.



 Work on edit clan commands begun.



 set char <name> clan <clan name> now works, but does not save new

 member to the clan's member list (yet).



 find_clan function added to code for use in set char clan and

 for other future uses.





v0.15 12/18/95

--------------------------------------------------------------------------

Thexder

-------

 Save command disabled while in CHAOS mode, to reduce chance of cloning.

 Also, there is now an info message when chaos is toggled.  



 Changed str_cmp to str_prefix in is_name function in handler.c

 Allows for things like 'tell thex Hi' and 'kill has' 



 Title no longer changes when advancing a level.



 Wizinvis players who went AFK or returned from AFK were still being reported

 via the INFO channel.  Fixed.



Zak

---

 Level for asave, alist, edit, and resets commands changed from HERO to

 level 90.  If you want to make a non-god builder, advance or trust them to

 level 90.  There are still security checks in the code that keep level 90s

 that shouldn't be messing with those commands from doing anything.



 Upon reboot and shutdown, the mud will now sinfo a message like 

 INFO: Reboot by Zak! unless Zak is wizinvis.  The echo call is still there,

 in case someone has their info channel turned off.



 All references to Mota in the code changed to "the gods".



 Changed code so that only ACT_GAIN mobs and ACT_HEALER mobs are immune

 to being attacked by players.  You still can't actually HIT those

 guildmasters and shopkeeprs, but you can get your butt kicked _BY_ them

 now. <grin>



 New damage messages added:



  if dam <=44 points, PULVERIZES (replaces DISEMBOWELS).

  if dam <=165 points, <><><> BUTCHERS <><><>.

  if dam <=185 points, <><><> DISEMBOWELS <><><>.



 Beta testing raise in max level on mud to 100.  Maximum mortal level is now

 level 90.  Several things are being affected by these changes, so if

 something seems broke, it's being worked on.



v0.14 [12/14/95]

--------------------------------------------------------------------------

Thexder

-------

 worth command fixed.



 CHAOS code has been started and is functional.

 Chaos has the following effects:

 1. Once chaos is toggled using the 'chaos' command the game is wizlocked

 2. Regen is at half rate for hit points and mana.

 3. Where command is disabled for levels below HERO

 4. Teleport, summon, gate, and vision spells are disabled

 5. When a character dies, they are disconnected. Characters eq is moved

    to the room. ie. They drop everything on death.

 NOTE: pfiles are not saved!



 chaos.txt file for logging chaos deaths and finishing scores. (Need 

 something better when I figure it out)



 'cwho' command added to show chaos scores of attached players.



 Imms can now set a player's recall room with the set command.



 asave no longer wipes out mobprogs (could use some work).



 Pet-recall crash bug fixed.



 Regeneration code back in place.



 Combat prompt, "prompt combat" for the two line "coolprompt"



 Fix in check_assist, will not assist pk char if attacking another player.

 If you want to attack a pk player, you must do it explicitly.



 Added ROOM_NOTELEPORT room flag, teleport skips these rooms when finding 

 random room.  



 Fix for EX_HIDDEN, looking in a direction no longer reveals a hidden door. 



 Fix for PK - pk players may now cast offensive spells on each other.



Zak

---

 'mpstat' moved to a level 53 command.

 'beacon' moved to a level 53 command.



v0.13 [12/1/95]

--------------------------------------------------------------------------

Thexder

-------

 Info channel was not reporting deaths properly.  FIXED.



 recall_room added to pcdata for setting a player's recall room.



 Beacon command added for imps to set recall room. Sample command.



 New config prompt codes %x and %X for current xp and xp to level.



 New config prompt codes %A for act bit on player AFK, WIZI, KILLER, THIEF.

 Wizi also shows the level of wizinvis.



 Pour command added.  Pour <container> out to empty <container> and

 pour <container> <container2> to pour from <container> into <container2>.



 Mobprogs in beta testing mode!!!



 Hidden Door flag added.  Moving in the direction of a hidden door doesn't

 reveal that there is a door there.



 Sample search command for hidden doors.



 Fix for autoassist and pk leaders.



 Revised junk command.  Junk now does a sac from inventory only.  Also 

 does not check for splitting gold recieved.



 Revised purge command.  You can now purge a specific item(obj).  Must be in 

 current room.



 Fix for loss of racial benefits after death.



 Fix for stat generation, was possible to enter number higher than column,

 resulting in very strange stats.



 Regen code back in place, hopefully for good this time.



 Added a default prompt.  Use prompt default to return to default prompt.



v0.12 [Nodist]

--------------------------------------------------------------------------

Thexder

-------

 AC for mobs in OLC editor fixed.



 New spell code in place, but spells not made available to mortals yet.



 New scan (thanks Thex).  Shows current room and some other changes.  No

 longer sees through closed doors.



 New prompt code %#.  Shows current room vnum.



 New addaffect for objects.  Affect alignment.



 New door flag added (passproof).  Can't pass with 'pass door'. 



v0.11 [11/15/95]

--------------------------------------------------------------------------

Thexder

-------

 fight.c patched so that other aggresive attacks between non-pk players

 are NOT allowed.  Thanks Thexder!



Zane

----

 AFK command added (Away From Keyboard).



 Added INFO channel to report player deaths, players becoming pk, players

 leveling, and players that are AFK.



 Added sinfo command for level 59+ players to talk on INFO channel.



 Beginnings of clan code are in.  Not activated yet, but they're in. <G>



v0.10 [11/1/95]

--------------------------------------------------------------------------

Zane

----

 OLC is back in and appears to be working without crashes for the most part. 

 There are a few things causing crashes, but no more random crashes appear to

 be related to OLC (ie: all crashes can be traced to "do this, cause crash").



 All crash bugs are being worked on.



 Player Killing has been added!  Type pk twice to toggle the flag for

 yourself.  Keep in mind that it is NOT REVERSABLE! 



Zak

---

 Major bug fixed with xp needed to level for level 40+ players.



 New features will begin to be added again now that random crashes seem to 

 have been eliminated.



v0.09 [10/24/95]

--------------------------------------------------------------------------

Zane

----

 Many modifications made in both the color and config prompt code to

 hopefully avoid future crashes relating to said code.



v0.08 [9/24/95]

--------------------------------------------------------------------------

Zane

----

 OLC is in.  Still testing it to see how it works...



 AFK command added.



 who output format modified.



v0.07 [9/23/95]

--------------------------------------------------------------------------

Zak & Thexder

-------------

 Group bug fixed.  Anytime you were grouped, you would recieve ZERO xp.

 A new formula for figuring xp in group situations has been implemented

 as follows.  YourXP = YourLevel * TotalXP / TotalLevelsinGroup.



Zane

----

 Note crash bug fixed (I hope).



 Cloning bug fixed. (aka reconnect bug)



 Scan no longer sees invisible mobs and players, but still sees through

 closed doors.



 Dual wield no longer works if you are wearing a shield or holding an item.



v0.06 [9/10/95]

--------------------------------------------------------------------------

Zane

----

 New NPC races added - Sheriff, Sailor, and Thain.



 Working on new consider command.



 Working on new player races.



 Working on dual wield skill for players.

 

v0.05 [9/3/95]

--------------------------------------------------------------------------

Zane

----

 SCAN command now in place.



 Added rem all command.  



 Donation room and donate command are in.  Go east from recall/temple.



v0.04 [9/3/95]

--------------------------------------------------------------------------

Zane

----

 EFFECTS command is in to show current spell effects, etc, upon

 a player (replaces effects part of old SCORE command). 



 Levels command added to display needed XP per level (after creation 

 points modifier is applied).



 Configurable prompts are in. Help code for prompts added. (help prompt) 

  

 More work done on creation points affecting xp needed to level.



Zak & Zane

----------

 New score command, shows how your creation points are affecting your

 ability to level in addition to all the other stats.  Looks much prettier

 now too, don't you think?



v0.03 [9/2/95]

--------------------------------------------------------------------------

Zane

----

 XP requirements per level are now SET.  The only thing that will

 modify the number of XP you will need to get from one level to 

 the next is the number of creation points you spend when you 

 create a player.



 Taking out XP for killing mobs being based on your alignment and the

 mob's alignment.  



 Removing code that made a low level character get more xp from a kill

 than a high level character would.  The xp value of a mob should be

 dependant on how hard the mob is in general.  Working towards returning

 to old more xp required to level per level way of doing things.  The

 log-in configuration where you spend creation points will still have

 an effect on your xp required to level each level, however.



 Wiped out the code whereby the longer you took to level, the more xp 

 you would get per kill.



 Still adding color here and there around the mud.

  

 "Hurt and Suspicious" no backstab thing removed.  Possibly will be

 replaced in the future with a more sensible no backstab rule.



v0.02 [9/1/95]

--------------------------------------------------------------------------

Zane

----

 Added color command to turn colors on and off.



 Added ` codes to change colors ANYWHERE and EVERYWHERE in the mud, 

 including in says, tells, shouts, etc.  



v0.01 [8/30/95]

--------------------------------------------------------------------------

Zak

---

 Small changes to the Makefile and the original ROM 2.3 source to get

 it compiling on our Linux system.



==================== The EmberMUD development team =======================

Zaknafein        - Kevin Williams  - zak@supernova.org

Zane             - Ej Wilburn      - zane@supernova.org

==========================================================================



Please contact one of us if you have any coding ideas, etc.