=== New features Firstly, this code is NOT a huge improvement/re-write of ROM2.4 but rather a further derivative that adds more 'serious' gaming aspects, particularly for people who would like to start a role-playing type mud with a more serious feel. This file briefly outlines some of the changes and additions to stock ROM2.4b. These additions or changes are all released purely so you can use what you want and see how one coder (who isn't particularly good at it either) implemented them. If you want to use the derivative is-as but don't like some of the implementations just take them out. As with all muds you'll need to know how hack code if you want to tailor it to suit your needs. * Mobile tracking Simple mobile tracking is working. If you attack a mob and flee it will come after you at a rate of 1 room every half tick. The tracking code is very basic and inefficient memory wise, although very fast compared to the normal hash table tree seaching methods I have heard most people use. The actual search done by a mob checks only 1 room rather than the entire area and as such is very fsat as far as the tracking update is concerned. * Dual wield system You can only use two hands, and one of the options is to wield two weapons at once if you are proficient in dual wied skill. You will automatically try to slot a second weapon when you wield it, you don't need to type any new commands. Combat shows the damage type of both weapons in the delivery and damage messages so you can tell which weapon is doing what damage. You have to have a free hand when you try to wield a second weapon with a primary, if you're using a shield, light or held item you won't be able to attempt the dual. * Changeling shapeshift Just read the basic help files 'help changeling' and 'help morph' on the mud. These are basic setups for shapeshifting. You can easily add more forms by editing the get_descr_form() function in act_info.c which replaces the PERS(ch,looker) macro from merc.h in a lot of situations. * Starvation and dehydration Players who decide to go too long without food and water willl slowly start to starve and dehydrate. They begin taking a small amount of damage but this increases if they continue to starve/dehydrate. Edit update.c if you don't like this. (Only players over level 10 starve/dehydrate). * Ageing Characters other than immortals will age and eventually die of old age. Death age varies for each race and is modified by constitution and a random factor. An averge human should live around 400 hours of play time, while elvels can live around 700. A general indiction of your age shows on score command, saying young/mature/middle-aged/old etc. If you don't like the idea of ageing then edit out the age update in update.c * Constitution death If players die too much their con drops. Default is coded at 1 con per 4 deaths. At 3 con they die permenantly. * Clans Clans use an induction system where a mortal leader may induct players into his or her clan. Inducted players gain new clan specific abilities, as listed in the do_induct function in act_wiz.c. Just edit the abilities gained and dropped (on uninduction) to suit the clans you prefer. The default abilities are just example ones. * Limit loading Read the file limits.txt * Cosmetic changes A few comsemtic changes to commands, nothing big. Things like socket, stat etc. Also stuff like you can't hide/invis/earthfade while faerie fired, or quit right after trying to PK someone etc. Real basic changes that you'll have to find out yourself. * Basic banks are in Withdraw/blanace/deposit commands for banks. * Races Races gain special abilities if you want to set them on the race. You can assign existing skills to a race very esily, or just crete new ones and add them with the other abilities. Races can also be made align or ethos restricted (eg, dark elves must be evil). Default example races are: human, dwarf, elf, grey-elf, dark-elf, centaur, troll, giant, gnome, draconian, ethereal, changeling. * Stat rolling For stat rolling at creation you can adjust the maximum and minimum rolls by changing the values in pc_race_table.max_stats[] and pc_race_table.stats[] in the const.c file. See comm.c nanny() function for stat rolling procedure that was coded in and change this if you feel it doesn't roll high/low enough. * Classes Well more classes and options available. Classes can be made align or ethos restricted (eg, necromancers must be evil). Classes start with a fixed set of skills and spells rather than being able to choose anything they want from customization. Current default classes are: warrior, thief, cleric, ranger, paladin, anti-paladin, monk, assassin, necromancer, elementalist, channeler. * Hometowns Players can choose which town they will recall or are dumped at when they die. (Items in a PC corpse which decays will also go to the player's hometown pit..you'll have to make sure your hometowns have pits set). Edit comm.c nanny() function, and update.c object updates to add new towns. Only a couple of basic example ones are set on the default. * Spells/skills I also added some new spells and skills, which are of varying usefulness. Some are really bad, some are ok and some are quite good. Just log in as a level 60 an type 'practice' to see the updated skills and spells list. NB: Some people have reported that doing a prac list with an immortal results in a close_socket() due to a buffer overflow (too many things on the prac list). I haven't had this problem but if it does occur just edit do_practice and just parse the prac list into two buffers and write them seperately to the output socket. In general if you follow the Rom2.4 area making documents your areas will run on the Tartarus code. The next section contains brief infomation regarding the newer object and mobile options that may be included in areas that run under the Tartarus code. For a full idea of what is new read merc.h and the other appropriate source code files. Sorry if you wanted more infomation for builders, but I just don't have the time. === 1. New object types #define ITEM_HOUSE_ITEM 35 This sets an item to poof when a player quits or logs in. Should never be set except on a House (clan) item. #define ITEM_SKELETON 36 Skeleton, as opposed to a corpse. Can be animated using 'animate skeleton' spell for necromancers. === 2. New object extra_flags #define ITEM_BRAND (aa) yA band, like a tatoo, that can be worn as a permenant item. #define CORPSE_NO_ANIMATE (bb) Can't animate this corpse with 'animate dead' spell. #define ITEM_ANTI_LAWFUL (cc) /* Zaps players of wrong ethos */ #define ITEM_ANTI_NEUT (dd) #define ITEM_ANTI_CHAOTIC (ee) === 3. New object wear_flags #define ITEM_WEAR_BRAND (R) === 4. Object restriction flags Pretty self-explanatory. You can set class, race and house restrictions on an item, but only one of each sort (you can't have TROLL_ONLY and also ELF_ONLY, that wouldn't make sense. But you can have TROLL_ONLY and WARRIOR_ONLY so only troll warriors can use the item, etc). #define HUMAN_ONLY (A) /* Race restricts here...(Ceran) */ #define DWARF_ONLY (B) #define ELF_ONLY (C) #define GREY_ONLY (D) #define DARK_ONLY (E) #define GIANT_ONLY (F) #define CENTAUR_ONLY (G) #define TROLL_ONLY (H) #define DRACONIAN_ONLY (I) #define GNOME_ONLY (J) #define GNOME_ONLY (J) #define WARRIOR_ONLY (K) /* Class restricts here...(Ceran) */ #define THIEF_ONLY (L) #define CLERIC_ONLY (M) #define PALADIN_ONLY (N) #define ANTI_PALADIN_ONLY (O) #define RANGER_ONLY (P) #define MONK_ONLY (Q) #define CHANNELER_ONLY (R) #define NIGHTWALKER_ONLY (S) #define NECROMANCER_ONLY (T) #define ELEMENTALIST_ONLY (U) #define ANCIENT_ONLY (V) /* House restricts here...(Ceran) */ #define ARCANA_ONLY (W) #define CRUSADER_ONLY (X) #define LIFE_ONLY (Y) #define ENFORCER_ONLY (Z) #define OUTLAW_ONLY (aa) #define MAGE_ONLY (bb) /* I don't think this one works yet */ === 5. New room flags #define ROOM_CONSECRATED (V) Used with paladin spell 'consecrate'. Turns a NO_RECALL room into a recall one. #define ROOM_NO_SUMMON (W) /* Can't summon into room */ #define ROOM_NO_CONSECRATE (X) #define ROOM_NO_ALARM (Z) /* Can't set 'alarm' spell in room */ #define ROOM_LOW_ONLY (bb) /* Must be below level 10 to enter */ #define ROOM_NO_MAGIC (cc) /* No magic in room */ === 6. New extra_room flags #define ROOM_GLOBE_DARKNESS (A) Room is shrouded in darkness and you'll need a lot more light to see in it. === 7. New exit flags #define EX_NOBASH (M) Can't bash door down using giant's door bash skill. === 8. New guild flags. Setting this on a room will prevent anyone but that class entering it. Keep those guilds exclusive. To set this put a 'G' followed by the class number at the end of a room entry in the #ROOMS section. /* Class guild used in the room 'G' flags */ #define GUILD_WARRIOR 1 #define GUILD_THIEF 2 #define GUILD_CLERIC 3 #define GUILD_PALADIN 4 #define GUILD_ANTI_PALADIN 5 #define GUILD_RANGER 6 #define GUILD_MONK 7 #define GUILD_CHANNELER 8 #define GUILD_NIGHTWALKER 9 #define GUILD_NECROMANCER 10 #define GUILD_ELEMENTALIST 11 === 9. New reset flags for items #define WEAR_DUAL_WIELD 18 #define WEAR_TERTIARY_WIELD 19 #define WEAR_BRAND 20 #define MAX_WEAR 21 === 10. New OFF_FLAGS for mobiles #define OFF_TAIL (M) Mob uses it's tail to sweep victims. Can knock victims down. #define OFF_CRUSH (O) Mob attempts to crush victims. Powerful mobs automatically attempt to ground control a crushed victim. #define NO_TRACK (V) Mobile won't track players. #define STATIC_TRACKING (W) Mobile won't follow a player it is tracking but it will attack them if they walk back into it. #define SPAM_MURDER (X) Mobile effectively does a 'murder <player>' command on anyone walking into it. A nice noisy function for aggro mobs. #define OFF_INTIMIDATED (Y) Used with anti-paladin intimidate. #define OFF_UNDEAD_DRAIN (Z) Mobs with this can drain levels off players. Drained levels reduce fighting and spell casting power. They may be restored using the 'restoration' cleric spell or a healer's 'restoration' spell. This is very powerful ability. #define AFF_SHADOWSTRIKE (L) /* Don't use this one */ #define AFF_CAMOUFLAGE (ee) /* Is camoed*/ #define AFF_ACUTE_VISION (ff) /* Can see camouflaged victims */ ==== 11. New special functions Some of these need certain areas running on the mud. If you don't run those areas just copy the needed mobile/objects out of them and place them into your own area files so when the special function calls on them the mud won't crash. You should consult with your MUD coder about which functions may or may not be appropriate to include in your mud, as well as their compatability with your existing areas. DECLARE_SPEC_FUN( spec_enforcer ); The mobile will attack (wanted) players. This is just a hack of the spec_guard function. Will work on any areas. DECLARE_SPEC_FUN( spec_preserver ); A special for a magic-user House guardian. DECLARE_SPEC_FUN( spec_fallen_angel ); Fallen Angel special. Very powerful mobile spec. Used in Drannor area. DECLARE_SPEC_FUN( spec_troll ); Attempts to crush and spit acid. Used in 'Dead Forest' area but doesn't require that area to be used. DECLARE_SPEC_FUN( spec_chimera ); Nasty. Mobile bites, breathes fire and rams. Used in 'Strange Carnival' area but doesn't require that area to be used. DECLARE_SPEC_FUN( spec_bane); Extremely powerful and very bugged special. Don't use this, I think it should be taken out but I left it in if people want to use it and fix it up. You must have drannor area if you run this function on mobs. DECLARE_SPEC_FUN( spec_monk ); Nasty special that lets a mobile palm strike, throw, ground control. Used on blood brother monks in 'Strange Carnival' area. You don't need Strange Carnival area to use this function. DECLARE_SPEC_FUN( spec_darokin ); Used in Dale area. Not nice for players...mobile will try to summon back the last player that attacked it if the player flees. Also summons a mob to help it fight, etc. You only need the familiar from 'skills.are' to run this function on other areas. DECLARE_SPEC_FUN( spec_godfather ); A mobile for the outlaw House. DECLARE_SPEC_FUN( spec_rakshasa ); DECLARE_SPEC_FUN( spec_rakshasa_lich); DECLARE_SPEC_FUN( spec_rakshasa_royal); A set of rakshasa specs for use in the rakshasa domain area. Pretty dull. DECLARE_SPEC_FUN( spec_beholder ); Mean beholder special that lets a mob (beholder) cast multiple spells in a round using different eye stalks. DECLARE_SPEC_FUN( spec_deathknight); Tough undead knight special. Casts power word kill, fireball, iceball, curse, energy drain and wither sells. DECLARE_SPEC_FUN( spec_room_thow ); Don't use this. Mob can throw a victim out of the room, even through doors. This works but sometimes crashes for some reason and I haven't bothered to fix it. (What can I say, I'm lazy) DECLARE_SPEC_FUN( spec_spectre_king); Mob casts blindness, chill touch, iceball, energy drain, cone of cold, acid blast and frost breath. Used in drannor but may be used on any mob without problem. DECLARE_SPEC_FUN( spec_hydra ); Big nasty hydra function. Used in Drannor. DECLARE_SPEC_FUN( spec_bone_demon); Bone demon that rises from the ground in Drannor. Used only in drannor. DECLARE_SPEC_FUN( spec_valere_knight); Knight that is useable only with the Drannor area. DECLARE_SPEC_FUN( spec_drannor_wraith); Ditto. DECLARE_SPEC_FUN( spec_titan); Big brute titan function for Arkham legion. DECLARE_SPEC_FUN( spec_necromancer); Mean spec_mage hack. Casts blindness, curse, energy drain, cremate, acid blast, frostbolt. Can also animate any corpses that are lying in the room. DECLARE_SPEC_FUN( spec_crusader); Lets a mob put up steel nerves and battlecry. Useable on any mob. Don't overuse this, mobs that deathblow hurt. DECLARE_SPEC_FUN( spec_demonologist); Very mean spec_mage hack. Casts blindness, disease, demonfire, fireball, deathspell, power word fear, cone of cold, acid blast. Can summon a dark slayer, and tries to power word kill anyone who stands in it's room for too long. DECLARE_SPEC_FUN( spec_legionlord); Bit of a joke. Massacres players who first walk into it, then proceeds to use a mix of other specials. Don't use unless you want to really mess up players. DECLARE_SPEC_FUN( spec_gold_dragon); DECLARE_SPEC_FUN( spec_black_dragon); DECLARE_SPEC_FUN( spec_red_dragon); Some derivative dragon specials were added too. These allow dragons to wing blast, cast spells and use breath attacks. Only use on powerful dragons. === There's more stuff but you're going to have to hack the code yourself for it.