GreedMud Release 0.88a9 (NON PUBLIC INTERNAL RELEASE) Wednesday, 25th February 1998 Zen vasc@camoes.rnl.ist.utl.pt :::: Internal subversion 9 === What's new in this patch Release 0.88a9 Zen: TheIsles style area format. This one's actually readable :-) It is marginally slower to load though. Added NEWS for deaths and levelings. Changed do_give() so mobs don't receive items from people they're hating; if they're affraid (paranoid); if it's a pill (to stop player cheating). Removed checks for player cheating in use_magical_item() for a new more subtle one. 'mclone' and 'oclone' imm commands. Fixed gizmo do_slay() options. Cleaned up Hunt, Hate & Fear code a wee bit. Added info for ITEM_RANGED_WEAPON & value[4] field to identify spell. Added loads of spells based on SMAUG: Blazeward, Blazebane, InnerWarmth, WinterMist, EtherealFunnel, AntimagicShell, ShadowForm, EldritchSphere, SwordBait, Demonskin, RazorBait, DragonSkin, DragonWit, Sagacity, Slink, TrollishVigor. Now skills have class dependent max % like SMAUG. Made code for Poses, Titles a bit safer. New binary search method for skill_lookup() like in SMAUG. New look for do_practice(). Cleaned up comm.c in loads of places. Replaced WIN32 for _WIN32. Added room specials. Added ASSHOLE.LST ala SillyMUD. MOBPrograms load from area files again. Also made a nicer new format and cleaner load/save routines. Teachers code is on. Added new affect bitvector format and new area bitvector look. Added Note field in #AREADATA so builders can insert comments. Removed all useless calls to spec_mob_lookup(). Thanks to that i found a bug in Envy 2.2: spec_breath_cold doesn't exist. Radically improved OLC help. -- STILL IN PROGRESS -- Changed do_dirt() and do_whirlwind() as per Sektor's suggestion. Started language support. Dictionaries and transliteration routines are now done. Added 'dot' log loading style. Added do_speak(), know_language() and language info to score. New 'verbose logs' mudconfig flag. Changed the look of the mud. Removed clookup immskll. New immsklls: cslist, cinfo, cpose, ctitle. Cleaned up list_update(). Changed update_handler(), room_update(). ------ Changed MAX_LEVEL to 60. Changed EXP_PER_LEVEL to 2000. Players are leveling too fast.. Added some info to skill_table and cleaned up caracter generation. Added IDENT protocol support. Uses getpeername and getsockname. Changed do_users to use IDENT info and be more readable. Removed small niggle in mclone, now act isn't copied on PC's. Scrapped ROM like character generation. Added MUD_AUTOPARDON flag. Added SECT_DUNNO 11 type because it seems like there are rooms on the bog standard areas in Envy2.2 with this type number! Added vzero(), vcopy() functions for bitvectors. Added fread_vect(), fread_flag() because non-settable flags wheren't being read by the server sorry... Added vect_strings() and flag_strings(). Changed type of bitvector arrays to 'unsigned char' i was having problems with signed vs unsigned aritmetic. Changed MAX_VECTOR to have bitvectors >= 64 bits. Changed alloc_mem(), free_mem() to ROM like MAGIC stuff to find a weird bug. I forgot a free_mem() in free_char() from an older code version which was attempting to free non existant memory, causing weird crashes along the way. Thanx ROM code! Changed area file format to be even more readable. Changed pfile format a bit also. Changed look of character generation. Changed look of do_score(). Multiclassing is in. Limited to 2 classes for now, but is easy to add more. Classes are now stored in a single linked list instead of in an array. Eliminated pose_table[], title_table[]. That data is now stored in the CLASS_TYPE structures. Moved all class related data from skill_table[] to the CLASS_TYPE structures. Eliminated all MAX_CLASS related stuff. Tweaked xp_compute() so ch now gets "xp /= number_classes". New Punch skill. New Unravel Defense spell. Changed scan skill. Changed Chameleon Power and Shadow Form. Changed move_char() for mountable mobs only. Changed mount skill. Added learn() so players only need to practice one time, and then they can learn for themselves. Players can still waste practices to learn more like in Envy. Added missing titles for all classes. Added Ranger class. === What's new in patch Release 0.87k ---0.87a--- Zen: Fixed bug in Envy 2.2 which caused descriptions of objects in player files to have the corrupt string on DEC Alpha. Added CHECK_RES(), CHECK_IMM(), CHECK_SUS() macros. ---0.87b--- Fixed a couple of mistakes i made on 0.87a. Scrolls, potions & pills v4's use finally is as described in area.txt. Rakot: Chars damaged by daylight even if they aren't Vampires bug (fixed) Satan: Weird value[3] in weapons crashes the mud bug (fixed) ---0.87c--- Fixed bug in mprog_translate() which i thought had been completely fixed way back in version 0.85. I hope it's dead. To give you "insufficient security to edit area" messages less often, you aren't allowed to enter the editor unless you have enough security. ---0.87d--- Zen: You can use the OLC editors without security to see stats. Added a couple of more checks in fread_char(). OLC aedit without arguments edits the player's area. OLC oedit modified to edit new object affect format. OLC oedit bad value settings bug fixed. ---0.87f--- Zen: Removed several ugly bugs from clan code. Removed yet another OLC bug in oedit addaffect. It seems UltraEnvy crashed with some old Envy2.2 player files and/or areas because i changed the name of "protection" I'm actually glad this happened because it allowed me to fix one Envy2.2 bug and one memory leak! (fixed) ---0.87g--- Zen: If you ordered a charmed mob to suicide himself he would attack you, this one comes from Envy2.2 (fixed) No more easy going for players who give offensive pills & stuff to a mob to make it hurt himself. No more easy going for players who give scrolls of heal to a mob to make it heal them. Added a couple of small enhancements to clan code. Changed obj_update() a bit; i think it doesn't quite do what was supposed to but heck! The mud didn't crash yet... Added checks for fpReserve in a lot of places; is this really necessary? Cleaned up code. I hope i didn't introduce any new bug... I had forgot to add the security check for the "sober" imm cmd. Rset now understands strings besides numbers. Oset now understands strings besides numbers. In comm.c getpeername and getsockname aren't used anymore so there is no need to have OS-dependent declarations for them. In comm.c bzero isn't called anywhere so i scrapped all related declarations. Renamed mob_commands.c to mob_comm.c. Added new object_update() loop to introduce object specials. Added object specials. Added new room_update() loop to make falling things faster. "who" command now should have less weird results. ---0.87h--- Zen: Solved small bug in saving of object resets. Changed "#if defined( linux )" to "#if defined( __linux__ )". Although the former is defined, it is not POSIX compliant. Changed OLC and do_astat to work with Sektor's new #AREADATA format. Changed load_area() to convert well behaved Envy2.2 area names to Sektor's #AREADATA format. Reconverted most areas back from Envy2.2 again. Fixed up some forgotten resets also. Satan: Shopkeeper's ITEM_FURNITURE objects get level 0 (fixed) Sektor: Suggested new directory structure. 'invis', 'mass invis' and 'polymorph other' didn't have realms. New area loading routines: new_load_area(), fread_area(). ---0.87j--- Zen: Removed ridable mobs bug. Scraped old aliases for Sektor's code. MUCH better. Made noticeable changes to alias code including I/O routines. Sektor: Much improved alias code. ---0.87k--- Zen: Removed loading alias bug. 'Speedwalk' with ';' thingie. Support for '^' thingie. Pose tables are read from the class files. Fixed small problem with title loading from class files. Changed alias code quite a bit. === What's new in patch Release 0.87 Zen: Now HomeCooked should be compatible with old Envy2.2 player files. However, it's now incompatible with previous HomeCooked version's player files... Updated help files so you now have helps for all <= v0.85 features... Added Erwin's printf_to_char(), bugf() and logf() functions. Implemented NiMUD hit types. Including hit FUN's. Removed mobs sleepwalking bug. Added ranged weapons support. NiMUD style. Still primitive. Changed startupSH a bit. Only tested on bash. Changed color scheme, unfortunately it is now partially incompatible with the previous version. However, now it also allows you to change the background color of text. Changed score command to have a new SMAUG based look. Added Mythran's WIZNET code. Changed process_output() slightly to show the user the percent of lines displayed so far. Changed restore so that restore with no arguments will restore the whole room (Mythran style). Implemented NiMUD weather system improvements. Including: temperature, windspeed, snowing. Added SMAUG's BVXX defines. Cleaned up code a bit. Plague spell for Clerics and Mages (Mythran) Cure disease spell for Clerics (Mythran) Flower social (Mythran) Added WIZNET WIZ_DEBUG info. Changed tracking algorithms: SMAUG's tracking module was actually graph.c with a couple more things (or so it seems). I replaced it for the SillyMUD hunt.c algorithm since it seems it's faster (at least this was mentioned on the merc mailing-list). Mythran uses this also. The code is almost twice the size of SMAUG's tracking module. But if it's faster this is no problem. Does anyone know the speeds for sure? One funny thing: hunt.c source is bigger but the object file size is 10k smaller compared to track.c (at least on Linux) Changed verbose area saving a bit to look nicer. Full #GAMES support added. Upper Lower Triple dice game (coded by Thelonius) Seven dice game (coded by Maniac) High dice game (coded by Maniac) Added Mythran's casino area. It was very empty so i had to do 50% of the work to make it usable. Also made helps for the dice games. Some were already in gamehelp.are. Added damages types ex: DAM_FIRE, DAM_COLD, etc. Also: Resistances, Immunities and Susceptibilities (RIS). The system is mostly based on ROM's IRV system (as i call it). Also took some ideas for the system from SMAUG. The problem i have is on some code in fight.c and magic.c (i can't make my mind to what damage types to use). Also i'm not sure which RIS to put on each race. Look at const.c and see for yourself. Testing of immunity was done on mob Captain Vader - Undead. Vader and the other Undeads are now immune to gas breath :-) (gas breath is DAM_POISON and Undeads can't be poisoned). Weapon proficiencies, NiMUD/SMAUG/ROM style (mean hybrid :-) ) (see attack_table in const.c) Changed password and retire, they now use a longwinded routine in comm.c nanny() to do their stuff; done by yours truly :-) Minimum level for OLC commands is now L_SEN. Removed aedit, redit and replaced them for NiMUD style versions. All that source with command tables, OLC_FUN's and stuff was making code harder to read, it was spread all over the place. The inconvenience is that "commands" no longer works for OLC. Changed player "description" command to use sedit. Changed look of sedit's string_append() & string_add(). Ridable mobs (got most code from NiMUD) Several code changes in update.c and MobProgs in attempt to improve performance (not much impact though). Removed a couple of bugs. Added command history, finally no more need for endless typing! Enhanced spell system: now spells have mana types, and you can use special mana charged gems to boost your inner mana. Inner mana is automagically convertible into any of the mana types. Got idea from NiMUD but most code was changed to allow spell casting without gems. Nearly finished on new clan code. Now it only needs testing and steady refinement. Solved bug in MobProgs; act_prog wasn't working... Fixed warnings of 'cast from pointer to integer of different size' on Alpha machines from Envy22. Caused a segmentation fault. Added name prefixes. Example: kill fido & kill fi both work. Fixed a LOT of bugs introduced from all the code changes i made. Thanks to the staff and players of DragonMud which found countless bugs which i promptly fixed. Fixed bug in old HC versions which caused descriptions of objects in player files to become corrupt. Changed new tracking module to compile cleanly on DEC Alpha and replaced bzero(), bcopy() for memset(), memmove(). It seems Envy2.2's mana cost of remove alignment was right all along... Changed it back to 10. Sorry. Following Erwin's letter to the Merc mailing list regarding int vs char and EOF handling i changed a lot of chars to ints. Changed source so it would compile without warnings on Visual C++ 4.0. Also removed a couple of type casts here and there. Changed startupWNT.cmd and startupW95.bat a bit. Changed select() calls in comm.c to not trap ERRINTR as per Erwin's suggestion in a letter to the Merc mailing list so i could profile code. Included more accurate string hashing function by Erwin S.A. Removed a lot of wasteful calls to race_lookup() in fight.c like: -> if ( ch->race == race_lookup( "Snake" ) ) for: -> if ( !str_cmp( race_table[ch->race].name, "Snake" ) ) Satan: Bug in comm.c act() sometimes made a segmentation fault. originated from Envy2.2 (fixed) === What's new in patch Release 0.85 Zen: It seems like i forgot to update load_helps() in db.c. Added SMAUG's track code. Smarter mobs. Track skill for Thieves (SMAUG code) Whirlwind skill for Warriors. Removed olc_envy20's ROOM_TEMP_CONE_OF_SILENCE and replaced it with a new field orig_room_flags in room_index_data. This field is saved by OLC instead of room_flags. Added more detailed boot log ala SMAUG. Object affects, now you can have a One Ring which renders you invisible with AFF_INVIS, or sanctuary with AFF_SANCTUARY, etc... Renamed spell 'Scry' to 'Wizard Eye'. Updated help.are just a little Changed layout of aedit_show(), medit_show(). Added preliminary parts support, like the one in ROM. Cleaned up send_to_char (color version) Now redit_show uses do_rstat for all output. It seems that when loading files from stdin, if AREA.LST had "-limbo.are" for example; when saving, it was saved it with the name "-limbo.are" instead of "limbo.are"... Added new "editinfo" mode. Added medit_copy. Added oedit_copy. Envy2.2 didn't have Irix defined in the top Makefile... Changed Flee code a bit to make mobs look smarter and slightly more aggressive. Fixed bug in mprog_translate. Cleaned up some code. Improved look and feel of OLC. Renamed clookup to clist, and showclass do clookup. Now immortals may pass all doors. Fixed security loophole in mob_commands. Fixed bug in mptransfer(). Stimpy: WhirlWind skill for Warriors. SMAUG team: Most Hunt/Track code - 95% i think :-) Track skill for Thieves. Mobile memory. ROM2.4 mobs have better memory but i don't want a mob with a huge linked memory list... ROM 2.4: Parts support idea, SMAUG also features this. === What's new in patch Release 0.84 Zen: Quick fix, i think nobody even got 0.83 since i only left it on ftp.game.org for 2 days. Alias code was using bzero and it seems not all platforms have this... Oops! === What's new in patch Release 0.83 Zen: Fixed bug in "imtlset" when using the '-' option with only one immskill. Sometimes it made a segmentation fault... Now you can see the OLC prompt options while switched. Removed several other minor bugs. Added a couple of new text attributes to colorconv(). Updated all Makefiles. Added Slash's "falling" code. All class info in a text file. Socials table is now in a text file also... Now the immortal command "delete" merely moves player files to the backup directory instead of erasing them. Fixed bug in OLC when using redit_mlist() "all". It would list many mobs not in the area, but in the area's vnum range! It would overflow the buffer for output and cause a segmentation fault. Fixed much the same bug in OLC's redit_olist() "all". It now simply checks if the object belongs in the area or not. Changed alias code a little... Changed "sset" so immortals may "sset all" other immortals to ALL spells/skills, even those not of their class. === What's new in patch Release 0.82 Zen: Converted skills from src/Contributions. ANSI color support using ColoUr_V1.2. Scry spell for all caster classes Mass Vortex Lift spell for Clerics Vortex Lift spell for Mages and Psionicists Meteor Swarm (Drool Co design) spell for Mages Meditate skill for all caster classes Added Arena Code using ROOM_ARENA flag, could be better. Swim skill for all classes Steal bug fixed. Retire command. new Director command "Delete" NUKES player on the fly! Increased mana cost of remove alignment to 100 as in Envy2.0 Primitive CLANS code support. do_remove now allows things as: "remove #.ring" do_sacrifice now allows things as: "sacrifice #.something" where # is the word "all" or a number. Added MOBPrograms 2.1. Brew skill (creates potions). Scribe skill (creates scrolls). All ch's >= LEVEL_IMMORTAL may enter in any guild room. Added "show" bit to cmd_type. Killing charmed mob without master bug fixed. Chain Lightning (Drool Co design) spell for Mages Detect Good spell for Clerics Dispel Good spell for Clerics Dirt Kicking skill for Warriors and Thieves Added several new liquid types Added ITEM_PORTAL, ITEM_WARP_STONE Added do_enter, so you can enter a portal and teleport. Added Online Editing using ILAB OLC Beta 1.1. Changed object format slightly. Will still load old Envy areas. Added alias, and unalias commands. Added CHANNEL_GRATS and "grats" command. Added CHANNEL_CLANTALK and "clantalk" command. Protection Good spell for Clerics. Fixed colorconv() bug when player was switched. Fixed bug in OLC when switched. Joguel: race Fish should breathe in SECT_WATER/SECT_WATER_NOSWIM === What can i do to help? Please make suggestions, contribute with code or whatever. Whatever i do i will try to make it available to everyone. And pass it to the EnvyMud staff. PLEASE do not make code which requests who uses it to put your name on the title screen as i have seen some code (like quest.c in ftp.solace.mh.se) i hate this! If everyone were like this soon we would have pages and pages of names in the title screen... If you want put your name in the help of the skill or whatever. To fight this i will include NO code which requests the author's name in the title screen unless it's a MAJOR code change. I have included some ROM/SMAUG/NiMud code and i put a reference to ROM/SMAUG/NiMud in the code as well as in here. Btw i'm in need of help sections for most of the new skills/spells as i hack code but usually forget to make the relevant help or it's very outdated... I would apreciate very much if some kind soul did this for me. - Zen