Driver 6
--------
File Structure
--------------
/area - area files (RW)
area.lst - main include
help.are - online help
limbo.are - ROM base area (vnums 1-65)
system.are - CthulhuMud base area (vnums 20000-20099)
/config - persistent configuration files (R)
skills.txt - skill definitions
profs.txt - profession definitions
profile.txt - runtime parameters
society.txt - society definitions
socrace.txt - racial society definitions
social.txt - 'social action' definitions
spells.txt - spell definitions (added by driver 7)
races.txt - race definitions
/data - runtime generated data files (RW)
disable.dat - disabled commands
time.dat - current mud time
banks.dat - bank accounts and balances
socmemb.dat - society membership information
/player - player files (RW)
/gods - god logs (W)
/log - other log files (W)
sdown.txt - shutdown records
bugs.txt - bugs
typo.txt - typos
/msgbase - messages on notice boards (RW)
/clan - old clan database (RW)
/README - copyright and license info
/docs - some (old) documentation
/drv6 - code source and executables (X)
Profile
-------
The profile file (config/profile.txt) contains paramters which the mud
loads at boot time and affect how it runs. See the comments at the
top of the sample for details. Supported paramerters are:
mud name - for Who and Time
port - for listening on
wizlock - boot in wizlock mode
newlock - boot in newlock mode
start - room new players start in
recall - default recall room
respawn - default respawn room
morgue - default morgue room
You can also define zones.
Zones
-----
Zones are defined in the profile.
Zone represet discrete parts of the mud, and each is made up of many
areas. Transportation, especially magical transportation, between
zones is impossible. This affects Gate, Teleport, Summon, Portal and
recall. If it possible to walk between zones and to use permanent
portals to move between them.
Zones can specify recall, respawn and morgue rooms. If specified (non
zero) they are checked after the areas rooms are checked.
The command zlist shows which zones are defined in the profile. There
is a limit of 32 zones (numbered 0 thru 31). Zone 0 should always be
defined.
The alist command has be refurbished and takes an optional parameter
of a zone id. This restricts it to showing just the areas in that zone.
See also ainfo for immortals.
Eventually there may be zone attributes, affect magic and maybe some
other things.
Objects can have a list of zones associated with them. If an object is
removed from those zones it will 'evaporate' (but should return when
the player returns to a zone in its list). By default objects exist in
all zones. When an object is loaded its zone attributes will be reset
to those of its proptype, unless is has been made univeral.
Commands zcopy and zclear have been added to provide global manipulation
of zone data. zcopy will copy object settngs for one zone onto another.
This is useful when you add a zone that should be similer to an already
existing zone. zclear removes a zone from all object. Both commands
change all areas in memory and should be followed by an asave world.
Added a new spell:
Universality
------------
Component: yusefs dust
Effect: The targetted object is changed so that it can exist in all
zones of the mud, instead of the set it is normally limited
to.
Recall, Respawn, Morgue and Dream
---------------------------------
Recall is where you go when you recall (or Word of Recall)
Respawn is where you are put when you die
Morgue is where your body is put when you die
Dream is where you go when you dream
All values can be set:
Muddally - in the profile
Zoneally - in the profile under the zone definition
Areally - through AEDIT
Roomally - through REDIT
Checking sequence is always room/area/zone/mud
Gods should use caution when changing these values. Consider the following
rules:
Recall should always be somewhere safe, with food and water. Consider
recall a sort of 'reset' for the player within the zone/area.
Respawn should also be somewhere safe, maybe with a healer or a
fastheal room.
Morgue should be either 0 (your corpse is left where you died) or
somewhere that can be easily reached from the respawn room. Some
sort of directions in the respawn room might be nice.
Dream should be an entry point into either a dreamlands area or a
waking world area.
Changing these values allows th creations of areas that players stay in
when they die. For example a player on a ship cannot get off it simply
by dieing or recalling. Generally the rooms should be within the same
zone as the one with the setting.
Dreaming
--------
Added a new command - dream. Only usable when you are asleep.
Dream
Issues a random dreaming message
Dream ?
Display help for the command
Dream walk
Enter the world of dreams corresponding to your location. A skill
check is required.
Dream awaken
Return to the real world. A skill check is required.
Dream resume
Attempt to return to a previous dream. Can only be attempted once.
A skill check is required.
Dream [of person] say/whisper/shout/yell/scream <message>
Sends a message to one or more other dreamers. A skill check is
required to deliver a private dream message.
Dream [of person] emote
Sends an emote action to one or more other dreamers. Again, a skill
check is required to deliver a private emote.
Dream [of person] cast
Sends an echo (text with no indication of its source) to one or more
dreamers. Sending one requires a skill check, making it private
requires another.
Added a new skill - dreaming. Everybody starts with 1%, used for the
dream command and some dream releated spells. May be the basis for
Dream Magic at some point. Currently the dream skill boosts all of
your other skills when you are dreming.
Added four new spells:
True Dreaming
-------------
Component: dream catcher
Effect: This makes someone who is only present in dream, present in
reality. This means that they cannot awaken and get back
to the real world. They are now a permanent part of the
dream world.
Rude Awakening
--------------
Component: silver bell
Effect: This hurls a dreamer out of the world of dreams and returns
them to the room they entered the world of dreams from.
Recurring Dream
---------------
Component: brass pendent
Effect: This returns the victim to the world of dreams, resuming
thier previous dream. This uses the casters dreaming skill
rather than the victims.
Enchanted Sleep
---------------
Component: silver sand
Effect: The victim goes to sleep and, if there is a dream location
associated witht he current room, enters the world of dreams.
This spell uses the casters dreaming skill, not the victims.
If a character dies while dreaming, they get to make a dreaming check.
Success means they get respawned in the world of dreams (and their body
goes to the world of dreams morgue). Failure means they (and their corpse)
are put in the room the entered the dream world from.
Area Edit Lock
--------------
When set it prevents all OLC activity in the area. It can be set and
unset through the edit area dialog. When set, the area can only be
saved by an asave area from inside the area or an asave force.
It is designed to be used to freeze an area while changes are made
to it offline.
Area Manipulation
-----------------
A few commands to make it easier to rearrange areas. Currently only
available to implementors. You should probably do an 'asave world'
after using any of them. Take a backup before hand and check a few of
the changes manually before saving. If these commands go wrong they
can screw up your ALL of your area files.
asplit area_vnum split_vnum
This chops the area into two areas, the latter being a copy of the
first except for the file name.
amerge low_area_vnum high_area_vnum
This takes two contiguous areas and merges them into a single area.
For this to work the areas must be next to each other, so that the
low vnum of the high area is one more than the high vnum of the
low area. The low area will be expanded to contain the high area,
the high area will be emptied.
revnum new_vnum
This works from inside OLC for rooms, mobs and objects. It changes
the rooms, mobs or objects vnum. It can be used to shift things
between areas.
When used the following adjustments are made automatically:
rooms All exits pointing to the room
All condition destinations pointing to the room
All portals pointing to the room
objects All resets in all rooms
All paired portals
Keys on all room exits
Keys on all containers and key rings
mobiles All resets in all rooms
Note that there is no automatic updating of scripts and triggers.
Additionally the changes only update the master objects, not the play
ones, so it will be necessary to reboot the mud to pick up such changes.
If an object is renumbered, any instances of it in player save files
or lockers will be destroyed. This will also happen with pets and
charmed monsters.
arebase area_vnum new_low_vnum
This uses repeated calls to the revnum routines to move a complete
area to another range of vnums. It takes a little while. Note the
above problems with changing object vnums.
asuck area_vnum
This steps through all of the rooms in an area and each of their
resets. If it finds a reset for a mob or an object that is from
another area, it will rebase it into the area. Useful for a post
split tidy up where the objects and mobs were not aligned with the
rooms.
Newbies
-------
Newbies enter play at level 3 - Avg 50 hits, 11 practices.
This gives them a fairly good change of killing 1st and 2nd level mobs
They remain newbies until they reach level 8.
Magical Areas
-------------
Areas and zones may be flagged as more or less magical than usual.
No Magic Spells cannot be cast
Low Magic Mana costs doubled, level reduced, difficulty doubled
Normal Mana cost standard, level same as casters
High Magic Mana cost reduced 20%, level increased, difficulty/2
Super Maigc Mana cost halved, level increased a lot, difficult/3
Note that effects are cumulative, so a super magic area in a super
magic zone is very, very magical - quarter mana costs, big level boosts.
If either area or zone is marked non magical, spells will not work.
Master Spell Components
-----------------------
These can be placed anywhere in the mud:
20020 - Silver dollar Summon Familier
20021 - Dream catcher True Dreaming
20022 - Silver bell Rude Awakening
20023 - Brass pendent Recurring Dream
20024 - Silver sand Enchanted Sleep
20025 - Yusefs dust Universality
20026 - Poison Poison
20027 - Alabaster Sanctuary
20028 - Obsidian Gate
20029 - Dried frog Water breathing
20030 - Weasel skull Gnawing hunger
20031 - Rock salt Burning thirst
20032 - Shot of rum Free grog
20033 - Hair of dog Ghastly soberity
20034 - Whale fat Burden of blubber
20035 - yellow leech Slender lines
20036 - silver needle Dispel evil
20037 - brass gong Earthquake
20038 - quartz crystal Call lightning
Table retired - see spells.txt
Chat
----
Mobs can now have chat matrixies defined. Each matrix row represents
a 'state' in the mobs behaviour, and the cells indicate the script
the mob should execute (0 for no script) and the new state it should
have after having execute the cell. The chance of a chat happening
is specified for each row, and the chat that happens will be randomly
selected from the 8 possible script/state pairs in the row.
All mobs start in chat state 0. If a mob is in chat state 0 and it
enters combat, it is put into state 1. If it is in state 1 at the
end of combat it is put into state 0.
Normally the @ax variables are available for substitution, but when the
mob is fighting, the @vx variables are also available. If you want a
non fighting mob to pick on a pc, you need to use the MPSELECT command
from the triggers script and react to the selection event.
Chat is checked once every 3 seconds if the mob is active.
For example, the combat chat for a pyromancer might be:
Script 1 - 10 0 0 cast 'fireball' @vt
Script 2 - 10 0 0 cast 'burning hands' @vt
Script 3 - 10 0 0 cast 'curse' @vt
Script 4 - 10 0 0 cast 'giant stength' self
Script 5 - 10 0 0 cast 'faerie fire' @vt
Chat 1 120 1 1 2 1 1 1 2 1 3 1 4 1 5 1 2 1
This gives him a high chance of doing something (120 in 128). When he
does something, he will attack thus:
37% burning hands
25% fireball
12% curse
12% giant strength (on himself)
12% faerie fire
It is of course possible to build more complex combat chat sequences,
which use one state for casting defensive spells and another one or
two for offensive spells. The caster could also react to injury messages
to switch into a defensive/healing/evasive mode.
A sequence of chats like this:
Chat 1 120 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2
Chat 2 120 3 2 3 3 3 2 3 3 5 3 5 2 5 3 5 2
Chat 3 120 1 3 1 3 1 3 1 2 2 3 2 3 2 3 2 2
Would cause him first to cast 'giant strength' upon himself and then
to alternate between trying to cast 'curse' and 'faerie fire' upon
you and using 'burning hands' and 'fireball' to fry you. After trying
one of the non burning spells he would have a 50% chance of switching
to full offense, but only a 25% chance of going back to the hampering
spells.
Note also that ther is no logic to make him retry a spell that fails or
to prevent him recasting spells that will have no effect (because you
are already affected by them).
MPCHAT
------
A mob command for manipulating chat states.
Without any parms it causes the mob to undergo a normal chat check.
With a parameter, a single number, it directly updates the mobs chat
state.
Hunger and Thirst
-----------------
Players are able to survive without water for 2 days and without food for
5 days before they start suffering bad effects. The effects are cumulative
and will, eventually, kill them (or, more likely, make them weak enough
for something else to kill them).
Food and drink consumption is higher in dry and/or hostile environments
than in civilized environments.
Added some food related spells:
Gnawing Hunger
--------------
Component: weasel skull
Effect: This consumes the victims food resources, possably inducuing
starvation effects.
Burning Thirst
--------------
Component: rock salt
Effect: This consumes the victims drink resources, possably inducuing
dehydration effects.
Free Grog
---------
Component: shot of rum
Effect: This create alcohol directly within the victim blood. Used
enough and the victim will become drunk.
Ghastly Sobriety
----------------
Component: hair of dog
Effect: This removes all alcohol from the victims body, probably
leaving them with a hangover.
Burden of Blubbler
------------------
Component: whale fat
Effect: This causes the victim to become fatter, inducing obesoty
effects.
Slender Lines
-------------
Component: yellow leech
Effect: This removes fat, and thus obesity effects, from the victim.
Books
-----
v0 - language skill
v1 - Skill rating
v2 - skill
v3 - skill
v4 - skill
Books can be read and studied.
Reading (or examining or looking)
Show book description
Show book language
Show if book contains studyable skills
Switch on language skill * books condition
< 10 : You can't read it
< 50 : Show extra_desc for "read_poor"
< 100 : Show extra_descr for "read"
Studying
Calculate effective rating - language * condition * rating
< 10 : You can't study it
For each skill,
If less than effective rating,
gain 2d6 points
Else
have a chance of improving it
Costs 1 practice session
Extra Descriptions
------------------
Extended to use conditions.
Allows different text depending upon the reader.
Ed now has list, show and cond options.
Works by index number, not keyword.
Rooms
Literal "room" when looking at the room.
Objects
Uses the objects name when examining it.
Extra Senses
------------
Commands smell and listen implemented.
Use extra descriptions with 'smell' and 'listen' as keywords.
For rooms, 'room' keyword is also used - smell room.
Conditions
----------
Each condition has a subject. Possible subjects are:
actor
- The mob who is taking the action
victim
- The mob that is being acted upon
observer
- The mob the condition is being evaluated for
- Can be the same as actor or victim
random
- A random character in the same room.
- Never the observer
lactor
lvictim
lobserver
lrandom
- The leader f the indicated characters group, or the character
if they do not have a leader.
Not all subjects are valid in all contexts. If a subject is not
valid, all conditions upon it are unsatisfied.
The following types of condition are available...
World Conditions:
moon low high
Check on the phase of the moon, from 0 New to 4 Full
The moon follows a standard 28 day cycle.
random low high
Checks on a random number in the range 0..1023
hour_of_day low high
Check against time of day (0..23)
1 hour gametime is 30 seconds real time.
hour_of_day_mod div low high
Check against hour of day modulus div (0..(div-1))
Good divs: 2, 3, 4, 6, 8, 12
day_of_month low high
Checks against the day of the month (0..32)
1 Month gametime is 6 hours, 24 minutes realtime.
day_of_month_mod div low high
Checks against day of month modulus div (0..(div-1))
Good divs: 2, 4, 8, 16
day_of_year low high
Checks against the day of the year (0..383)
1 Year gametime is 3 days, 4 hours and 48 minutes.
day_of_year_mod div low high
Checks against day of year modulus div (0..(div-1))
Good divs: 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192
week_of_year low high
Checks against the week of the year (0..47)
1 week gametime is 1 hour, 36 minutes
week_of_year_mod div low high
Checks against week of year modulus div (0..(div-1))
Good divs: 2, 3, 4, 6, 8, 12, 16, 24
month_of_year low high
Checks against the month of the year (0..11)
1 month gametime is 6 hours, 24 minutes
month_of_year_mod div low high
Checks against month of the year modulus div (0..(div-1))
Good divs: 2, 3, 4, 6
mob_in_room room low high
Checks a mob with a vnum in the range is in the room
player_in_room
Checks to see if any players are in the room
room_empty_mob
Checks there are no mobiles or players in the room
obj_in_room
Checks if an object with a vnum in the range is in the room
room_empty_obj
Checks there are no objects in the room
Mob/Character conditions:
skill 'skill' low high
Checks the mobs skill (0..200)
race 'race'
Checks the mobs race
All characters are currently human.
level low high
Checks the mobs level (1..100)
sanity low high
Checks the mobs level (1..100)
casting level low high
Checks the mobs current spell casting level (1..100)
align low high
Checks the mobs alignment (-1000..1000)
prof 'profession' low high
Checks the characters profession and profession levels
hits low high
Checks the characters current hit point total
mana low high
Checks the mobs current mana point total
move low high
Checks the mobs current move point total
hits_percent
Checks the percentage of max hits the mob is on
mana_percent
Checks the percentage of max mana the mob is on
move_percent
Checks the percentage of max move the mob is on
gender sex1 sex2
Checks the mobs gender
soc_rank template
Checks rank within a socielty accoring to a bit template.
1) invited 2) member 4) council 8) leader
soc_level low high
Checks level within a society
soc_auth template
Checks authority within a society using a bit template.
See society.h for the SOC_AUTH_xxx values.
conv conv_id subj_id state
Checks for a particular state in a conversation
carrying vnum1 vnum2
Checks if an object with either vnum1 or vnum2 is carried or worn
wearing vnum1 vnum2
Checks if an object with either vnum1 or vnum2 is worn
vnum low high
Checks if the mobs vnum falls within the range given
Does not work on characters
in_room low high
Checks if the mob is in a room with a vnum within the range given
in_subarea low high
Checks if the mob is in a room with a subarea within the range given
deed deed_id flag
Checks if the deed has been done (1) or has not been done (0)
quest quest_id low high
Checks if the state of the quest is within the given range.
Generally 0 for starting through to 9999 for completed.
memory memory_slot_number
Checks if there is something rmembered in the specified slot.
memory_value memory_slot_number low high
Checks if the value of the string in the slot is within the
specified range.
affected affect
Checks is the mob is affected with a particular spell effect.
This uses the affect list, not the affect bits which can be
checked through an 'is' condition. How the character acquires
the affect can alter how you have to check for it.
is state
Checks if the mob is in the specified state
is_not state
Checks if the mob is not in the specified state
The states is and is_not can detect are:
hungry thirsy drunk
full refreshed sober
standing fighting sitting resting awake
sleeping stunned dieing dead
blind invisible seeing_evil seeing_invisible seeing_magic
seeing_hidden mind_melded sanctuary faerie_fire seeing_infrared
cursed scared poisoned protected_from_good protected_from_evil
sneaking charmed flying pass_door hasted calmed plauge_ridden
weakened seeing_in_darkness berserk swimming regenerating
polymorphed absorbing_magic fleeing dreaming
Object conditions:
level low high
Checks if the objects level is within this range
type low high
Checks if the objects 'item type' is within this range
vnum low high
Checks if the objects vnum is within this range
value number low high
Checks the object v0..v4 flags
contains
Checks object contents, depends on object type
Container, Locker, Keyring
contains vnum vnum
Satisfied if an object with either vnum is present
Scroll, Potion or Pill
contains spell_num spell_num
Satisfied is both spells are contained. High may be -1.
Light
contains hours
Satisfied if light hours left are >= value.
Wand, Staff
contains spell_num charges
Satisfied is at least 1 charge of spell_num remains
Fountain
contains liquid
Satisfied is the fountain contains the specified liquid.
Drink ontainer
contains liquid drinks
Satisfied if the container hold that many or more drinks of
the liquid
Event conditions:
type low high
Checks if the events type is within this range
subtype low high
Checks if the events subtype is within this range
number low high
Checks if the number on the event is within this range
number_mod mod low high
Checks if the number on the event is within this range subject
to modulo arithmetic.
am_actor
Checks if the observer is the same as the actor.
This is often true when the event is not being evaluated by a mob.
This is also true if it is the mob doing something.
am_victim
Checks if the oberser is the victim.
This is true if something is being done to the mob.
local
Checks if the event originated in the oberserves room.
actor_grouped
Checks if the actor is in the same group as the observer.
victim_grouped
Checks if the victim is in the same group as the observer.
actor_remembered slot
Checks if the actor (true name or player name) is remebered in the
indicated memory slots on the observer.
victim_remembered slot
Checks if the victim (true name or player name) is remebered in the
indicated memory slots on the observer.
actor_friend
Checks if the actor is a friend of the observer.
actor_foe
Checks if the actor is a foe of the observer.
victim_foe
Checks if the victim is a foe of the observer.
actor_visible
Checks if the actor is a visible to the observer.
victim_visible
Checks if the victim is a visible to the observer.
Multiple conditions are combined with AND logic
Used for:
Extra descriptions - rooms and objects (obs = act)
Skill prerequisits (obs = act)
Profession prerequisits (obs = act)
Door visability (obs = act)
Door destinations (obs = act)
Conversations (obs, act)
Triggers (obs, act, vict)
Scripts
-------
Built onto mobs.
Each script has a unique id.
Scripts are made of lines.
Each line has:
- sequence number
- delay from start of script
- identifier for schedulded commands
- A command to be scheduled
When a script is run, all of its commands are scheduled against the
executing mob at their indicated time. Paramerter substitution
occurs when the script is schedulded.
MPSCRIPT command added to allow one script to either schedule another
script or to cancel commands schedulded by another sript.
MPSCRIPT RUN script_id
MPSCRIPT RUN script_id mobile
MPSCRIPT CANCEL cmd_id
MPSCRIPT CANCEL cmd_id mobile
Example:
Script 1
10 0 0 smile
20 0 0 emote takes @p2
30 1 0 smile @a1
40 2 0 emote tries to eat @p2
50 4 0 frown
60 5 0 drop @p1
70 5 0 emote throws @p2 away in disgust!
Rewards
-------
MPREWARD command added to let mobs give players xps directly (hopefully
in response to the player having done something helpful to the mob).
MPREWARD pc ammount
Mainly for use in quests.
Rewards given to group members are automatically split between all members
of the group that are present.
Causing Damage
--------------
MPHURT can be used by mobs to cause damage to players without initiating
a combat sequence. Syntax is:
MPHURT player d_hit s_hits d_mana s_mana d_move s_move
This specifies the name of the player and the number and type of dice to
be rolled for damage to hits, mana and move. This interface lets mobs
drain mana and movement points as well as causing physical damage.
Players have no protection against any of the damage, although only physical
damage taking them below 0 hit points will kill them.
You should normally output the message telling the player about the
damage before the MPHURT command. Beware of large physical damage values
as it is very easy to kill players. Movement loss in a hostile environment
can also be fatal.
Example:
This script might be triggered in a conversation, where the player has
agreed to undertake a quest for the wizard.
10 0 0 say So! That is good.
20 0 0 smile
30 1 0 say I shall send you to Smarkand!
40 1 0 emote starts making some mystical passes.
50 2 0 MPECHO A whirling vortex surrounds @a2!
60 2 0 MPHURT @a1 0 0 0 0 20 20
70 3 0 MPTRANSFER @a1 7835
This should transfer the player to the far end at the cost over 20d20
move points (averaging around 210).
Conversations
-------------
Conversations are a group of discussion subjects. Within each subject
of a conversation there is a state. This means that the conversation
does not have to follow a linear path.
Each mob can have a conversation, some subjects and some state
transformations within those subjects coded. Conversations can be
coded over multiple mobs.
State machine for subjects run from the conversations initial state
through whatever other states the author wants to use.
Example:
Conv 2000, subject: weather
In 0 Out 1: say It's cold today.
In 1 Out 0: say It's going to snow later.
Conversations tie to the converse command (aliases of ask and talk).
Example:
>talk tourist weather
Tourist says 'It's cold today.'
>talk tourist weather
Tourist says 'It's going to snow later.'
Mobs are able to set conversational status directly with the MPCONV command:
MPCONV pc conv_id subject_id new_state
This can be used to make new areas of a conversation available to the
player once some subject has been broached or an act has been performed.
Deeds
-----
Deeds are a simple mechanism for recording that a character has done
something. It can be something good or something bad and can be public
knowledge or unknown even to the character.
Each deed has an id (this should be a vnum within the areas range).
Each deed also has a type:
Private, neurtal : 0
Secret : +1
Publc : +2
Good : +4
Bad : +8
Deeds also have titles.
Deeds can be awared to characters when they do certain, significant things
and can be used for control flow through a deed condition check. Thus a
deed can influence how people view the world and how mobs react to someone.
Example deeds might be:
Slayer of the Hobarth Vampire (Public, Good)
Visitor to Formault (Private, Neutral)
Killer of Mrs. Whistlewaiths puddy tat (Secret, Bad)
Mobs can give (and remove) deeds through the MPDEED command:
MPDEED player add id type title
MPDEED player remove id
These add and remove deeds from a players records. It is recomended that
good and neutral deeds are rarely, if ever, removed, while bad deeds can
be removed upon the making of appropriate recompense.
Deeds can be used to implement mini-quests and should be used to restrict
rewards that are not given as a part of a quest (ie set a deed when you
give the reward and check that the deed hasn't been done before you give
it).
Calandar
--------
A lot of the conditions now support modulo arithmetic upon the calander.
This lets you set up cycles of things repeating at regular intervals.
To accomodate this the calandar is a little different:
12 Months each of 4 weeks of 8 days.
This gives a year with 384 days and 48 weeks.
The following repeat cycles are good as they fit completely:
Hour of day: 2, 3, 4, 6, 8, 12
Days of month: 2, 4, 8, 16
Days of year: 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192
Weeks of year: 2, 3, 4, 6, 8, 12, 16, 24
Months of year: 2, 3, 4, 6
This would, for instance let you schedule a ship thus:
Week of year Mod 4: 0 - Arkham port
1 - Sailing Arkham to Cairo
2 - Cairo port
3 - Sailing Cairo to Arkham
This is a real time journey of about 96 minutes each way (so they
probably need something to do on the ship and we should probably
have two ships running the line, so there's an access window every
3 hours or so real time). Alternatively a shorter 16 day of year cycle
might be better (if somewhat unrealistic - the fastest transatlantic
journey in the real world is 5 days - and that's just to Liverpool, so
even cutting the journey to Cairo to 8 days is pushing it).
For trains you could probably use a four hour cycle, with 2 trains. This
would leave the character on the train for 30 seconds and give them 30
seconds to hop on and off at each end.
Real Time
---------
4 pulses per second, 120 pulses make 1 game hour.
So:
1 game minute = 1/2 second
1 game hour = 30 seconds
1 game day = 12 minutes
1 game week = 96 minutes
= 1 hour, 36 minutes
1 game month = 384 minutes
= 6 hours, 24 minutes
1 game year = 4608 minutes
= 76 hours, 48 minutes
= 3 days, 4 hours, 48 minutes
WARNING: UPDATE IN DRIVER 7
Invisible Doors and Multiple Exits
----------------------------------
Visability conditions
- Control when a door will be visible
- Cannot be used (or even found) when it is invisible
- Created with target location as usual
- used for trains, boats, planes, occasional doors, mazes
[direction] vis condition
Multiple Destination
- Chain of destination/condition pairs
- Sorted and evaluated in sequence
- Lets you change where doors go when you walk through them
- Door should be set up normally with the default location
- Not considered for door visability
- used for quests, day/night, magical doorways, teleporters, mazes
[direction] listcd
[direction] addcd seq dest_vnum name
[direction] setcdcond seq condition
[direction] removecd seq
Events
------
Used for internal programming.
Input for triggers.
Context.
Descriptive codes.
Messages for actor, victim and observers
Distributed by rooms.
Message substitutions: @xn
x Meaning
- ----------------
a actor
v victim
o observer
p primary object
s secondary object
t text
n number
r room
c random character
m text from observers memory slot n
n Character Object Text/Number Room
- ----------- ------------- ----------- -------
0 a/an a/an text/number vnum
1 name name garbled text name
2 short desc short desc
3 his/her/its
4 him/her/it
5 he/she/it
6 man/woman/thing
7 Sir/Lady/Thing
8 Lad/Lass/Thingy
9 Sir/Madam/Thing
r vnum of room
t true name
l level level
Use @@ for a single @.
Use the 'EVENTS' command to look up details online.
True Names
----------
A true name is a unique text string that identifies a mob.
Currently its only use is to locate a character in a room.
It is intended to be used by mobs, as locating characters by name is
inaccurate if there are similarly named mobs in the room.
True names are dynamically allocated with a mob or player is created
and are not saved. The format of the true name is:
@t0xpointer
t is the type of mob - m for mobs, p for players.
pointer is the address of the mobs char_data structure.
This is guarenteed to be unique and to remain unique as long as the
mob is instantiated within the mud.
Driver 7 - the true name for players is extended with the players name.
This is to avoid problems with players logging off and soemone
else logging on and getting the same char_data. If a mob had
the char_data memorized it could end up harassing the new
player, instead of the old one.
Fountains
---------
Completed liquid implementation.
Fountains can be of any of the defined liquids.
Fountains can also be poisoned.
Filling a poisoned container gives a poisoned drink and may poison
the fountain.
Filling an unpoisoned contained in a poisoned fountain may unpoison
the fountain.
Gadgets
-------
Gadgets are pseudo-objects, permanently attached to a room. They
can be manuiplated in a limited fashion and act like multi-state
switches.
Each gadget has a state and for each action/state combination you
can speify what it's new state should be. You can also attach
conditions to the state changes, allowing the construction of puzzels
where multiple gadgets must be correctly aligned before anything
happens.
Gadget manipulation commands are: push, pull, turn, turnback, twist
move, lift and press.
Gadgets can be edited through OLC:
gadget list
gadget show [id]
gadget add [id] [names]
gadget addt [id] [seq] [action] [in] [out] message
gadget addtc [id] [seq] [condition]
gadget delete [id]
gadget deletet [id] [seq]
gadget renum [id]
Mob Nature
----------
Hitdice, Damdice, manadice and AC no longer set directly.
All are calculated from the mobs level using default formula.
Stats are also generated more realisticly.
Nature field introduced to modify stats and combat values:
strong/feeble STR, CON
smart/dumb INT, WIS
agile/lumbering DEX, STR/INT
sly/gullible WIS, INT
robust/sickly CON, STR
sturdy/fragile Hit points
magical/mundain Mana points, AC Exotic
viscious/harmless Damage
armoured/exposed AC
monsterous STR, CON, DEX, Hits, Mana, Damage, AC
Triggers
--------
Triggers drive scripts in response to events.
OLC command 'triggers' to add and remove triggers.
Event types and subtypes for trigger are:
Type Subtypes
------------ --------------
give gold
item
get gold
item
put item
drop gold
item
poison food
weapon
fountain
fill fountain
drink fountain_ok
fountain_bad
item_ok
item_bad
eat food_ok
food_bad
pill
sacrifice pc_corpse
corpse
trash
treasure
item
gadget gadget_ok
gadget_bad
search item
room
find_item
find_mob
find_door
find_hound
depart walk
sneak
fly
swim
sail
portal
magic
current
fleeing
arrive walk
sneak
fly
swim
sail
portal
magic
current
fleeing
pulse 1_sec
3_sec
4_sec
5_sec
10_sec
30_sec
area
time hour
day
sunrise
sunset
dawn
dusk
control login
logout
to_void
from_void
mob stop
select
echo
death slain
attack kill
kick
trip
bash
dirt
backstab
disarm
circle
rotate
murder
combat miss
hit
block
parry
dodge
absorb
immune
damage injured
hurt
dirt
trip
bash
env
oocc beep
gossip
music
immtalk
question
answer
tell
gtell
icc tell
say
shout
scream
yell
mtell
social emote
fsoul
nsoul
hsoul
idol hold
pray
object
gold
lock d_open
i_open
d_close
i_close
d_lock
i_lock
d_unlock
i_unlock
d_pick
i_pick
society invite
join
advance
resign
expel
demote
test
foe
pardon
dream walk
awaken
say
psay
emote
pemote
cast
pcast
There are two types of triggers - challange and reaction.
Challange Triggers
When an action is about to be taken, a challange form of many
events will be issued. Challange triggers are used to react
to this challange event (ie to someone attempting to do something).
If a challange trigger is satisfied the action does not occur and
the mob should provide information about why it did not happen.
The MPSTOP command is designed to be used here.
Reaction Triggers
These are invoked for an event after that event has happened.
They enable to mob to react to completed actions that others have
taken.
There is a chain of triggers for each event type, sorted by sequence. The
triggers for each even are compared in the order of the sequence and the
first one that matches will be used.
Text Triggers
-------------
Any trigger may have a text condition specified upon it. Generally this
only makes sense for a reaction trigger, as mobs don't know what the
character is going to say until they have said it.
Text triggers should be used selectively. Very selectively. They are
considerably more expensive to evaluate than conditional triggers.
Text triggers are specified as:
string1.1&string1.1|string2.1&string2.2&string2.3|string3.1
This translates as:
(string1.1 & string1.2) | (string2.1 & string 2.2 & string 2.3) | string 3.1
This is the only format that is supported. The strings may contain imbedded
spaces and quotes, but may not contain '&','|' or '~' characters.
Each string is checked for as a substring of the string being tested. There
is no consideration given to sequence:
give&money matches 'give me your money'
and 'I have some money to give you'
Spaces are significant and all comparisons are in lower case.
Text comparisons are made AFTER a successful conditional comparison (which
can act to reduce the number of evaluations). You may have multiple
triggers with the same text pattern but different conditions. These will
be checked in the order of the triggers sequence numbers.
Trapping 'flee' events
----------------------
When a character moves because they are fleeing, the subtype depends upon
their movement mode. Only the walk subtype is replaced with the fleeing
subtype. The is fleeing condition will be true for characters at this point
in time though, regardless of how they are moving.
Time Events
-----------
Pulses - 1, 3, 4, 5, 10, 30, AREA
Times - hour, day, dawn, sunrise, dusk, sunset
OLC command 'timesub' to select event flows
Stopping Actions
----------------
The MPSTOP command is added to simplify the issuing of error message.
Syntax: MPSTOP player_name action_description
An example, of a script and a trigger to stop someone going north unless
they are wearing an id badge (vnum 5600).
script 1
10 0 0 MPSTOP @a1 going north.
20 1 0 say You can't go in there. You don't have a badge.
trigger depart
10 none 1
actor->not->carrying 5600 -1
event->number 0
The first condition is true if they are not carrying the badge.
The second checks if they are trying to move north (by any means).
Given a player called 'Howard' and a Mob called 'a security guard' the
output would be:
>look
Mansion Gates (city)
You stand before the gates of the mansion.
[Exits: north west]
A security guard is standing here.
>north
A security guard stops you from going north.
>
A security guard says 'You can't go in there. You don't have a badge.'
>look
Mansion Gates (city)
You stand before the gates of the mansion.
[Exits: north west]
A security guard is standing here.
>
Diagonal Exits
--------------
Exit directions are now:
0 North
1 East
2 South
3 West
4 Up
5 Down
6 Northeast
7 Southeast
8 Southwest
9 Northeast
10 Here (*)
11 Other (*)
* Not valid for room exits.
Resets
------
Reset mechanisms have been reworked a little to make them more predictable.
Resets are:
MRESET mob_vnum count
M 0 mob_vnum count room_vnum
This puts the listed number of mobs into the current room.
Count is a world limit and if the mobs wander off they will not be
replaced until they are killed.
ORESET obj_vnum count
O 0 obj_vnum count room_vnum
This puts count instances of the object into the current room.
Count is room specific and if some objects are removed they will
be replaced.
ORESET obj_vnum count cont_name
P 0 obj_vnum count
This puts count instances of the object into the each of the objects.
This should be a container or a keyring.
Count is container specific and objects will be replenished if removed.
ORESET obj_vnum count mob_name none
G 0 obj_vnum count
This puts count instances of the object into each of the mobs instances.
For ship keepers, a count of -1 should be specified for their inventory
items. They will be able to sell unlimited quantities of them.
ORESET obj_vnum 1 mob_name wear_loc
E 0 obj_vnum 1 wear_loc
This puts 1 instance of the object into each of the mobs inventories
and then makes then wear it in the specified location.
If count is specified as a value other than one, this will be ignore.
Reset Examples:
A mob (1000) with a sword (2000) and a shield (2001)
MRESET 1000 1
ORESET 2000 1 knight wielded
ORESET 2001 1 knight lwrist
A shopkeeper (3000) with two potions (4000, 4001) to sell
MRESET 3000 1
ORESET 4000 -1 keeper none
ORESET 4001 -1 keeper none
A box (5000) containing two gems (5001) and a map (5002)
ORESET 5000 1
ORESET 5001 2 box
ORESET 5002 1 box
Note that you cannot, yet, put objects into objects carried by mobs.
The RESET command can be used to review the resets that are established (it
uses the M, O, P, G, E notation) and to delete resets. It should not be
used to add new resets.
Currents
--------
Currents are flows which can capture players and force them to take a
particular exit from a room. Examples might be river currents, gravity
and strong gusts of wind. Each current can have conditions specified to
restrict to whom it applies.
Example
current add 10 2 'a gust of wind' 'blows' 'down the street'
current cond 10 actor is flying
>> A gust of wind blows Herman down the street!
This creates a current which will force any flying character (or mob)
to leave through the rooms southern (direction 2) exit.
Example
current add 10 5 'gravity' 'pulls' 'down onto the rocks'
current cond 10 actor not is flying
>> Gravity pulls Herman down onto the rocks!
This creates a current which simulates gravity and causes any non-flying
character (or mob) to move downwards (dir 5).
Example
current add 10 1 'the river' 'sweeps' 'along'
current cond 10 actor skill swim 0 50
current cond 10 actor not is flying
>> The river sweeps Herman along!
This creates a river current which will push anyone with a swimming skill
of less than 51 who isn't flying to the east (dir 1). The assumption
here is that those who are flying won't be in the river.
Notes
Currents cannot cause damage (although they can push you into rooms with
hostile environments or mobs).
Gods can avoid currents by using GOTO to enter a room.
All currents run at the same speed, which is very fast. Mortals may,
on occasion, be able to move fast enough to avoid them.
Currents and conditional exits can also be combined to make portal like
affairs. Set the vis condition for exit to the same as the current
condition, then anyone matching the condition gets swept through the exit.
No one else is aware that the exit exists.
Useful for trapdoors.
current add 10 5 'a gaping hole in the floor' 'swallows' 'up'
current cond 10 actor not is flying
>> A gaping hole in the floor swallow Herman up!
Languages
---------
The code and the skill file are enabled for the following languages:
english spanish french german
gaelic polish italien chinese
japanese hebrew arabic greek
latin heiroglyphics old english romany
stygian atlantean cthonic
Others can be added fairly easily.
All out of character communication is in english.
In character communication (say, tell, shout, yell, scream) uses a language
set be the character using the speak command. You must have a skill of 10
or better to attempt to speak a language.
If either the listener of the speaker have skills of less than 50 in the
language, then it will be put through a garbling routine before presentation
to the listner. The ammount of garble is related to the ammount of language
skill. Language skills higher than 50 are usful for reading obscure
documents and may be required by some societies.
Some of the In Character (IC) communication commands are changed:
tell Whispered if in the same room, ooc if not
say Heard by all in the room
shout Heard by all in the room and all potentially adjacent rooms
yell Heard by all in the same subarea
scream Heard by all in the same subarea and all potentially
adjacent rooms
Potentially adjacenty means there is either an exit going there, or there
is a conditional destination on an exit going there.
Out Of Character (OOC) communication costs a little mana everytime it is
used. The loulder forms of IC communication use a few movement points.
SubAreas
--------
Subareas are a simple, numerical, mechanism for dividng an area into smaller
areas. Typically a subarea would be used to represet a building or a
closely connected set of locations.
If can be used in conditions and provides a scope for the yell and scream
communication commands. These provide a fairly good guide for defining the
subarea. Yells can be heard through out, as can screams which can also be
heard in adjacent rooms. If a subarea is the inside of a warehouse, yells
can be heard inside, while screams can be heard standing outside the front
door.
Subareas are set with the REDIT subarea command.
An additional ACT flag - stay-subarea - has been added. Its effect is to
stop wandering mobs from leaving thier subarea. This can be used to
restrict mobs to a particular part of an area.
Societies
---------
A society is a like minded group of individuals with a common purpose.
Societies as implemented in driver 6.4.1 as a replacement for the older
Clan function, but without many of the limitations.
Membership - invited, member, council, leader
A society members must invit a new member to join. They then choose to
join the socity, becoming a member. Members can be promoted to the
council and then to leadersip or demoted. Unruly members can be expelled,
while unhappy members may resign.
The leaders determine who can do what by authorizing aother members.
Higher ranks do not confer authority, it must be granted.
Society Authorizations:
invite - invite someone to joint he society
expel - force someone out of the society
bank - access the societies bank account
auth - authorize other society members to do things
promote - raise someones rank within the society
demote - reduce someones rank within the society
test - see how a member measures up against the societies goals
foe - declare someone an enemy of the society
pardon - undo a previous foeing
Societies use normal bank functions, and receive interest on their funds.
Additionally a profession can be linked to a society, with criteria set
to advance 'levels' within it. A member can be tested by another member,
and this may result in them advancing to a higher level within this
profession. Alternatively it may result is a reduction to a lower level
or even expulsion from the whole society.
Foes
A society may declare someone to be a foe. At the moment this will just
notify their members when they examine him, but it will eventually permit
more actions (such as PKill).
Society Tell
This sends a message to all other members of the society who are currently
logged on. It costs 5 move points to use it.
Spell: Summon Familier
----------------------
This conjours a magical familier who is a few levels lower than the caster.
The creature behaves as a normal pet.
The type of creature the character receives is dependent upon their
alignment.
Matrial Component: Silver Dollar
Flee, Wimpy and Wander
----------------------
Wander is added as an alias for Flee, and both commands work when you are
not fighting, but only flee works when you are fighting. There is no
penalty for fleeing or wandering when you are not fighting.
Flee (and wander) now takes a parameter which is the preferred direction to
run in. If this direction isn't available, one will be picked at random.
Wimpy now accepts a second parameter which is a direction. This is the
default direction that you will try to flee in. Setting it to an invalid
direction means you flee in a random direction. If the direction isn't
available, it will pick one at random.
Flee will pick a direction you appear to be able to move in (visible exit,
valid destination, if there's a door, it must be open). It is possible that
a challange trigger on the movement could prevent the move from happening
(ie trying to run through a passage that a mob is guarding).
Idols
-----
Idols are objects that can be prayed to and to which offerings can be made.
The commands to do so are:
pray 'idol' prayer
offer 'idol' 'object'
offer 'idol' nnn 'gold'
They both result in an 'idol event' being sent to each of the rooms lists
in the idols values. The gods are expected to be a mob within one of those
rooms who may react to the event. If an item is offered it moves into the
room who's vnum is in the idols v0 slot. Offered gold is simply destroyed.
Note: If there are multiple idols in the same room, then idol events
will be sent to all of them, but the primary object will indicate the idol
that the event was generated for.
If an idol is being held (worn), it will generate en event once every 60
seconds telling its gods who has it. The gods may react as they wish.
Idols are expected to be big immoble cunks of stone (altars) or small,
hand held figurines. Inventive players may well add other types.
Corpse Values
-------------
For those who want to offer corpses to idols, some details about the
corpses previous existance are now stored in its value slots.
v0 - vnum or 0
v1 - alignment
v2 - level
v3 - gender
v4 - 1 Senitent, 2 Undead, 3 Sentient Undead
These can be used for, say, punishing mortals who sacrifice the corpses
of evil creatures to evil gods, or intelligent creatures to good gods.
MPSELECT
--------
This command can be used to let mobs pick randomly selected characters
and objects from a particular room.
Syntax:
MPSELECT mob_sel mob_sel obj_sel obj_sel number text
mob_sel - a mob selector.
mob_none No mob is selected.
mob_me The mob issuing the MPSELECT is selected.
mob_any Any mob in the room is selected.
mob_npc Any non player mob in the room is selected.
mob_pc Any player mob in the room is selected.
mob_pc_mortal Any player mob who is not an immortal in the room
is selected.
name The mob with this name is selected, as long as
it is neither the selecting mob nor the actor.
The first selector is for the actor, the second is for the victim.
The mob driving the MPSELECT can only be selected through the mob_me
selector.
The same mob will not be selected as both actor and victim.
mob_sel may be prefixed with a selection modifier:
highest. Finds the highest level mob that matches
lowest. Finds the lowest level mob that matches
The default selection is 'random.', which finds any mob.
For exaple:
highest.mob_pc_mortal
will find the highest level non-immortal player controlled mob in the
room.
obj_sel - an object selector
obj_none No object selected.
obj_any Any object in the room can be selected.
obj_any_actor Any object the actor is carrying/wearing.
obj_any_victim Any object the victim is carrying/wearing.
obj_any_mine Any object the mob is carrying/wearing.
The first selector is for the primary object, the second for the
secondary object.
The same object will not be selected as both primary and secondary.
number - a number, taken as is.
text - taken as is.
Once the various bits have been selected an event (mob, select) is generated
and passed to the mob that issued the MPSELECT command. That is the only
mob that gets to see the event.
Echos
-----
Echos are a mechanism for implementing 'open spaces' within the mud.
Echos allow players in one room to see and/or hear what is occuring in
a neighbouring room. There needs to be an exit between the rooms, but
the exit does not have to be visible to the players doing the listening.
Echoed events are prefixed with the direction that they came from.
To create an exit you need:
Two rooms connected with a bidirectional exit. Echos are sent to
rooms linked through conditional destinations, but the base exit
in the conditional room must point back to the echoing room.
The exit needs flagging as echo_all, echo_sound or echo_vision. This
actually enables echoes to flow in both directions.
In rooms whose messages are to be echoed the rooms echo flag should be
set. For bidirectional echos, the echo flags in both rooms must be
set.
Echos would typically be used for:
Open spaces such as public squares or large rooms which have been
subdivided into multiple rooms.
Rooms with multiple locations such as balconies and windows.
Spy holes and secret rooms from where a public area can be observed.
This normally uses a mono-directional echo.
Cut scenes which are to be remotely viewed, but which 'vanish' when the
player enters them. This requires a link between the two rooms and
a conditional destination that transports the player to the 'player
enters scene' room.
MPALIGN
-------
This is designed for use with idols and deeds, so as to cause a mobs
alignment to change in response to its actions.
Syntax: MPALIGN mob target_alignment
It effect to to calculate the difference between the mobs current alignment
and the target alignment and then to change the mobs alignment by 10% of
this ammount.
When using the command, use 1000 for good, 0 for neutral and -1000 for evil.
MPECHO
------
Sends an unattributed text message to one or more rooms.
Syntax: MPECHO <scope> message
The default, if scope is not recognised, is to send it to the mobs current
room.
Valid scopes are:
_room The mobs current room
_room_plus The mobs current room and all adjacent ones
_subarea All rooms in the mobs current subarea
_subarea_plus All rooms in the mobs current subarea and all adjacent
rooms.
_area All rooms in the mobs current area
_area_plus All rooms in the mobs current area and all adjacent
rooms.
_zone All rooms in the mobs current zone
_universe All rooms in the mud
_group All rooms containing one or more members of the mobs
group.
Note that echoing is done on a room by room basis, regardless of who or what
is in those rooms. Scopes larger than _room_plus or _subarea_plus with
previously defined subareas should be used with caution as they can incur
significant CPU overheads.
Echos sent to _group may be useful for coordinating mobs in different rooms,
but be aware that the messages will be visible to players in those rooms as
well.
MPRELEV
-------
This mob command allows a mobile to change its level.
Syntax: MPRELEV base_level delta
Base and delta are added together to work out the level the mob changes to.
This enables mobs to change their challange factor in response to both
players and actions.
Examples
In reaction to an EAT FOOD event, where the mob is the actor:
MPRELEV @al 1
This will cause the mobs level to increase by 1 whenever it eats soemthing.
(But watch out for the random level variation).
In reaction to a player entering a room:
MPSELECT highest.mob_pc_mortal mob_none obj_none obj_none 1
...and in reaction to the SELECT event...
MPRELEV @al -1
This will cause the mob to change its level to be one lower than the
level of the highest level player in the room. This can be useful for
adaptive areas which change with the players level.
The mob should be created at the lowest level it is likely to want to
achieve, as that is the level its equipment will be created at.
Random level variation still occurs. This modifies the resultant level by
up to 1 level for every 10 levels that the mob has. The code fragment is:
if (mob->level >= 10) {
mob->level += dice(1, mob->level/10);
mob->level -= dice(1, mob->level/10);
}
This means a mob that is meant to be 53rd level, could end up anywhere
from 49th to 57th level, but will average around 53rd.
49 1 in 25 4% 1,5
50 2 in 25 8% 1,4 2,5
51 3 in 25 12% 1,3 2,4 3,5
52 4 in 25 16% 1,2 2,3 3,4 4,5
53 5 in 25 20% 1,1 2,2 3,3 4,4 5,5
54 4 in 25 16% 2,1 3,2 4,3 5,4
55 3 in 25 12% 3,1 4,2 5,3
56 2 in 25 8% 4,1 5,2
57 1 in 25 4% 5,1
The primary aim of level variation is to make areas somewhat less
predictable. What a player can kill one day they may not be able to kill
the next.
Changing a mobs level altes its hit points, mana points, movement points
and armor class. Damage ratios are preserved, however, so if a 20th level
mob with 400 maximum hits and 300 current hits is changed to 10th level
where it rolls 160 maximum hits, its current hits will be reduced to 120.
Recall, Respawn and Morgue
--------------------------
You are now able to set these values for each area. Thier roll is:
Recall - Where the character goes when they recall
Respawn - Where the character goes when they die
Morgue - Where their corpse goes when they die (default is to leave it
in the room they die in).
This lets gods construct 'sealed' areas and prevents the player from
getting 'sucked' back to the main area when the recall or die. Gods
should ensure that they do not create inescapable areas, especially for
low level newbies with any special skills.
Miscellaneous
-------------
Fix bug in exp calculations - wasn't using effective level.
Change score to show % of xps for next level.
Remove DB boot checking for asymetrical doors.
Fix bug with using exotic weapons.
Fix bug with Advance.
Another attempt at fixing the reconnect problems.
Fix bug with keys.
Fix bug with mob skills ??.
Score armor reworked to make it a little more compact.
Examining weapons shows the skill needed to use them.
Examining armor and clothing shows how it may be worn.
GOTO brings pets and followers along.
6.3.4
-----
Added Idols, pray and offer
Added corpse details
Fixed messages for environmental damage
6.3.5
-----
Fixed closed corpse problem
Fixed room visability problem with scan
It was showing rooms you were not allowed to go into
Fixed problem inserting a script line infront of the first one
Hopefully this fixed a problem with deleteing a line looping
Events for locks and doors/containers (WEV_LOCK)
Known problem with fags on multi-destination doors
6.3.6
-----
Fix stray debug messages
Fix memory leak from opening doors
Convert socials to use WEVs
6.3.7
-----
Fix bug with asave reintroducing social.are
Fix loop in script line delete
Add MPSELECT command
6.3.8
-----
Fix misspelling of random in score
Change highlighting for wimpy and direction
Enforce minimum skill of 51% in English for all
Add MPSELECT targets obj_any_actor, obj_any_victim, obj_any_mine
Allow MPSELECT to take a name as an argument
Add source for events - OOC for OOC communications.
Reenable reply
Add echos
Add MPALIGN
Add extra routing options to MPECHO
Bank interest changed to 1% per month, max 36 months.
6.3.9
-----
Fix abend when a mob kills a player
Fix loop when a first level mob tries to flee (or otherwise loses xps)
Fix problem with max level for Advance
Fix problems with Remove_Curse (hopefully)
6.3.10
------
Add true names to fix problems with mobs getting the wrong target
Fix score so it works for NPCs
Try to fix switch/return - permitted for lesser gods.
Fix problems with equipment display for eyes
Fix problem with subarea scopes
Fix problem with door saves (mainly echos)
Restrict clone (because it don't work)
Fix for PCs not getting kicked off when linkdead
6.4.1
-----
Completed phase 1 of the society implementation
Add @xl for mob/object level access
Remove MPSTAT
Add MPRELEV
Add selection modifiers for MPSELECT
Who and Examine show memberships based on new socities
6.4.2
-----
Add parns for Tundaras new compiler
Fix problem with flying over water
Give NPCs swim skill
Fix problem in spell lookup for affects
Remove clan from score
Fix recall so it brings pets along
Fix who so secret societies are always red
Add recall, respawn and morgue values for areas
Added society tell
Fix society members for immortals
Add ACT_STAY_SUBAREA
Fix telepop for subareas
Make unused displays a bit more compact
Tidy up group display for those with lots of hits
6.5.1
-----
Restructure directories and rebuild after system reinstall
Fix telepop (broken by 6.4.2)
Add copyright string for area files
Add profile file
Make alist use page_to_char, not send_to_char
Fix problem with newlock and wizlock being uninitialized
Impose zone restrictions for gate, portal, summon, teleport, recall
Fix alist to display zones
Rework alist completely
Add zone definitions and zlist
Add Start, Recall, Respawn and Morgue into the profile.
Complete zone implementation with zcopy, zclear and spell universality
Added dreaming -
dream command
dreaming skill
spells: true dreaming, rude awakening, enchanted sleep,
recurring dream
Added sector types Jungle, Path, Road and Plain
6.5.2
-----
Added new world econds for probing rooms
Added low and strong magic zones
Added ainfo command for vnum/file information
Added area manipulation commands
Added revnum commands
Fix problems with base buffer size in used and unused
Fixed really silly abend in redit_mshow and redit_oshow
Fixed bug that hid bad resets
Fixed problems with pShop->keeper
6.5.3
-----
Added hunger and thirst
Fixed problem with affects making you drop things when you lost the
strength to wield them
Fixed problem with spell casting in low magic areas
Added asuck command to pull objects into an area
Fix alarm clock so it only triggers if physically injured
Added mob multi-state chatter
Various other minor fixes
6.5.4
-----
Fix zone recall problem with recall and word of recall
Stop shutdown and reboot from deleting all notify settings
Reenable recall for characters over 10th level
Adjust food and drink warnings
Make it easier to lose weight
Added a few food and drink spells
6.5.5
-----
Fix rather nasty bug in update changes from zone support.
When a timed object expired, it messed your inventory up.