A printable text version of this page can be viewed here.
This doc is for SMAUG release 1.4a and higher. When later releases come out
if there is a change to how something is done it will be noted like this:
***Version 1.4b update***
This document is an ongoing process so if you see anything you would like
added, more clarification on a subject or I messed up something email me at the above
address.
Index
So you need to get started do you? Will the first question is do you have a
Windows box or a Unix box? Go to the appropriate section that applies to you.
First thing you need to do is untar the distribution, this can be done in
one of two ways depending on the tar version you are using. If you have GNU's version of
tar it can be done like this:
tar -zxvf smaug.tar.gz (Where smaug.tar.gz is the name of the distribution)
or if you don't have that version (Doesn't like the -z flag) you can do it
in two steps like this:
gunzip smaug.tar.gz
tar -xvf smaug.tar (Notice it removes the .gz ending
So now you should have several directories under a main dist directory.
Next you need to go to the source directory to get there from the directory you untarred
the distributions type:
cd dist/src
Here you need to make the directory. This is done through the make command.
Simply type:
make all
If you have errors it could be a couple of reasons. First you may not have
crypt linked in. Edit the makefile with your favorite editor, if you don't know how to use
one, read the man pages on pico, joe, vi, emacs and I am sure there are more out there. To
use man type:
man <subject> --- Example: man vi
Then uncomment the line specified in the Makefile. Anyline with a # at the
beginning is a comment remove the # to uncomment a line. Another error you might get is
about sockets, if you are on a solaris box, then there are also lines you need to
uncomment in the makefile for it to work. If you still have problems porting to a new
architecture contact the smaug mailing list: smaug@game.org
or myself london@cs.utk.edu for some help.
Now all you need to do is startup the mud, startup on the ports you need to by specifing
it on the command line, or it defaults to port 4000 but it will also bind to that port +1,
+10 and +20. So with the case of 4000 it will setup on port 4000, 4001, 4010, and 4020. To
start it up in the src directory, type:
./startup 4000 &
If your mud stops when you logout try running it this way:
nohup ./startup 4000 &
The first time you login you should change waitforauth so you can log in.
To do this type the following:
cd ../system (Will be in dist/system)
vi sysdata.dat (Switch vi for your favorite editor)
Change the 1 beside Waitforauth to 0
Then you can logon by telneting to the port you set it up on:
telnet localhost 4000
Make your char, save and quit out. Then you will need to edit your pfile.
You will need to change your level to 65 by the following:
cd ../player
Then you will need to go to the directory with your name which is the
lowercase first letter of your name. So for example Shaddai would be:
cd s
Then edit the pfile:
vi Shaddai
Change the 2 beside Level to 65 save it.
Now your ready to go. ENJOY.
First you must setup the new race this is done online via: setrace The
syntax to use is * setrace <new race name> create So for example to create a
half-coder race you would type: setrace half-coder create This simply sets up the data and
name to be set, it does not save the race. To do that you must use setrace save this will
also write out the list of races to load at boot time. Once this is done you can start
custimizing the race there are several options that you can set. But remember after you
set your options you need to save them with the following command: setrace <race
name> save
- strplus, dexplus, wisplus, intplus, conplus, chaplus, lckplus are the
bonuses or penalties players of that recieve. For example if I set the race to:
setrace half-coder conplus 2
setrace half-coder lckplus -2
If a player would have had a 16 Con, and a 10 Lck then it would be 18 Con and 8 Lck if
they choose the half-coder race.
- affected, resist, suscept and immunities - These are natural affects/ris
that the race has, they will always have these even if they dispel magic. For Example:
setrace half-coder affected fireshield
setrace half-coder immune cold *Not in 1.4a forgot to add, sorry
setrace half-coder suscept blunt
setrace half-coder resist pierce
- name - This is what the race is called.
Example: setrace half-coder name coder
This would change a race from half-coder to coder. Remember to save after this and it will
leave the half-coder file intact but that won't get loaded at reboot. So if you really
want to get rid of the file you will need to delete it from the shell.
- hit, mana - This is the extra hps and mana a char gets for choosing this
class. It is a one time bonus and you only get it on new players. Example: setrace
half-coders hit 20 This would give half-coders 20 extra hitpoints when starting off.
- language - The languages a race knows from the start. While you setup races
here, the setup will not create a new language for the newly created race. To do that go
to Section 5 which is about how to setup new languages. setrace half-coder language common
- attack, defense
- alignment -- This is what alignment a NEW character starts at. Set this to
be between the min and maxaligns for the classes that are allowed to be this race.
Example: setrace half-coder alignment -1000 This would start a half-coder out at a -1000
alignment.
- minalign, maxalign -- This is the Minimum and maximum alignment that a char
is allowed to be. If you don't want a minimum or maximum set the minimum to -1000 and the
maximum to 1000. Right now this doesn't affect a char except that it sends a message to
the person. Examples: setrace half-coder minalign -1000 setrace half-coder maxalign 1000
This sets it up so they can be any alignment.
- height, weight -- This sets up the height and weight a race will be + or -
10%. Height is done in inches, weight is done in pounds. Example: setrace half-coder
height 72 setrace half-coder weight 200 This would make it where a half-coder race could
be between 5 foot 4 inches to 6 foot 6 inches and weight from 180 to 220 pounds.
- hungermod, thirstmod -- As of version 1.4a these are unsupported and do
nothing.
- expmultiplier -- This is the extra experience or less experience you get
from being this race. So for example 96 is 96% of the exp you normally would get. 102 is
2% more exp than you would normally get. Example: setrace half-coder expmultiplier 99 This
would give a half-coder 99% of the exp recieved normally.
- saving_poison_death, saving_wand, saving_para_petri, saving_breath, and
saving_spell_staff these adjust someones saving throws to various skills/spells. This is
the base saving throw that things will be adjusted on. For example: setrace half-coder
saving_wand 10 setrace half-coder saving_poison_death -10 This will give the person a 10
base saving throw in wands and -10 in poison and death. Keep in mind negative is good.
- race_recall -- This is where that race recalls too. This is how recall is
setup: If they are in a clan they go to that recall, if they are deadly they go to the
deadly recall. If none of the above then they goto race recall, if there isn't a race
recall they go to the temple (Harakiem). Example: setrace half-coder race_recall 1200 Then
non-pkill - non order/guilded/clanned players will recall to room 1200.
- mana_regen, hp_regen -- As of 1.4a these two are not supported so do
nothing.
First you must setup the new class. This is done online via: setclass The
syntax to use is * setclass <new class name> create * So for example to create a
coder class you would type:
setclass coder create
This simply sets up the data and name to be set, it does not save the
class. To do that you muse use * setclass save * this will also write out the list of
classes to be loaded at boot time. *NOTE* If you don't want anyone to use this class yet,
which you probably don't..... Use ban, to ban the class and this will prevent it from
being choosen. Once this has been done you can start custimizing the class. There are
several options that you can set, but remember to save your changes after you make them
with the following command:
setclass <class name> save
- name -- This will rename the class. For example to rename mage to
wizard, you would use: setclass mage name Wizard
- mtitle/ftitle -- This gives the default title to a character when
they advance to a new level. mtitle is for Males, ftitle is for females. For example to
set a level 2 male mage title to the Apprentice. You would use:
setclass mage mtitle 2 the Apprentice.
- prime -- This is the prime attribute that the class has and allows
that attribute to get to 25, instead of the maximum of 20.
- second -- This is a secondary attribute and allows that class to
get that attribute to 22, instead of the maximum of 20.
- deficient -- This is a deficient attribute that prohibits the class
from getting a 20 in that attribute and restricts them to a max of 16.
To set these, use: * setclass <class name>
<prime/second/deficient> <attribute>
The valid attributes are: <none, strength, dexterity, intelligence, wisdon,
constitution, luck>
For example I could setup a mage like this:
setclass mage prime intelligence
setclass mage deficient strength
Then the mage would have a max of 25 in intelligence and a max of 16 in
strength
- resist/suscept -- This makes a class naturally resistant or suscept
to certain things.
To set these, use * setclass <class name> <resist/suscept> <resist flag>
The valid resist flags are:
<fire, cold, electricity, energy, blunt, pierce, slash, acid, poison,
drain, sleep, charm, hold, nonmagic, magic, paralysis>
So for example to set mages resistant to charm and magic, the command would
be:
setclass mage resist charm magic
To turn a resist off simply reset it for example:
setclass mage resist charm magic
Would set the mage class to not be resistant to those two again.
- affected -- This makes a class affected by a certain affect. To set
these, use * setclass <class name>affected flag [flag] The valid affect flags are:
<blind, invisible, detect_evil, detect_invis, detect_magic, detect_hidden, hold,
sanctuary, infared, protect, sneak, hide, flying, pass_door, floating, truesight,
detect_traps, scrying, fireshield, shockshield, iceshield, aqua_breath>
So for example to set mages affected by truesight and scrying you would use:
setclass mage affected truesight scrying
Once again to turn a affect off you just reset it by setting that affect
again and it will toggle it off.
- expbase -- This sets up how much experience is needed to go up a
level. The basic formula is this: base*lvl*lvl*lvl
So for example if you set the base to 1000, then 2nd level would need 2*2*2*1000 or 6,000
exp would be needed for second level. To set a mage to this level you would use:
setclass mage expbase 1000
- hpmin/hpmax -- This sets the minimum and maximum hitpoints a class
can gain when the advance a level. So for example to set a mage to a minimum of 3 hps and
a max of 6 hps per level you would use the following:
setclass mage hpmin 3
setclass mage hpmax 6
- mana -- This sets if a class gets mana or not the flags available
are either Y or N. If set to yes the class will gain mana each levelup, otherwise they
won't. For example to set vampires so they don't gain mana:
setclass vampire mana N
- thac0/thac32 -- This affects the to hitroll versus a 0 armor class
for a particular class. This is a fairly complex formula but Thac0 should be a higher
number than Thac32, and to give you an idea on strengths. Warriors are Thac0=18 and
Thac32=6, while mages are Thac0=18 and Thac32=10 An example of setting a warrior to the
above Thac would be:
setclass warrior thac0 18
setclass warrior thac32 6
- weapon -- **Don't use it is outdated** This use to be the weapon
vnum that a class started out with in the game but the code is now commented out so this
does nothing now.
- guild -- **Don't use it is outdated** This use to be the vnum that
was the entrance to a guild was, and when a character moved it checked to see if it was
that class, and if they weren't wouldn't let them move there. Since mob progs have been
put in to take care of that the code that this worked on has been removed so this does
nothing right now.
The first thing you need to do to create a new skill/herb or ability is
create a new one with the sset command.
sset create herb 'new herb'
sset create skill 'new skill'
sset create ability 'new ability'
If these give you a error message about MAX_HERB or MAX_SKILL needing to be
upped you need to open up mud.h, up the appropriate variable a few places, make clean and
then make. The difference between a skill and an ability is that an ability gets set to
type SKILL_RACIAL. Which means only certain races can use that ability. Right now this is
unsupported however. So to set up a new herb called sunflower and a new skill called
coding, you would issue the following commands:
sset create herb 'sunflower'
sset create skill 'coding'
Once you do that you will be able to set various fields on each:
- name -- This is what the skill or herb is called in the above cases
they would be set to sunflower and coding.
Example: sset 107 name sunflower
- code -- This is the code executed when the skill/spell is called or
the herb is used.
Example: sset 107 code spell_smaug
- target -- This sets what type of spell it is or what it would
affect. The options are ignore, offensive, defensive, self, objinv. Things like area
attack/affect spells would use target ignore as well as the new missile type spells which
must be target ignore, range>0, and use code type spell_smaug for it to be a ranged
spell attack. Offensive would be used for damage/curse type spells, when cast on someone
these will initiate a fight, for example the fireball spell. Defensive is used for things
that should not initiate a fight when cast on another mob/pc, like sanctuary. Finally
objinv is used for any spells cast on an object in your inventory, like enchant weapon.
Example: sset 107 target offensive
- minpos -- This is the minimum position you have to be in to use
this spell/skill. This is done using numbers to represent the positions. This is defined
in mud.h and as of smaug 1.4a Starts with 0 (being position dead) and increases by one for
each position. With the positions being: dead, mortal, incapicitated, stunned, sleeping,
berserk, resting, aggressive, sitting, fighting, defensive, evasive, standing, mounted,
shove, drag. Drag is number 15. berserk, aggressive, fighting, defensive, and evasive
correspond to the different fighting styles with fighting be the standard style.
Example: sset 107 minpos 10
- slot -- This sets up which slot the spell/skill will use.
For Example: sset 107 slot 1000
- mana -- This is the amount of mana required to use the spell.
For Example: sset 107 mana 100
- beats -- This is how long the spell/skill will lag you when it is
used. This is done in beats with around 12 beats being about one round.
Example: sset 107 beats 12
- dammsg -- This is a word to describe the damage of the spell. For
example if you set it to fireball and cast the spell you might see:
Your fireball brushes Shaddai.
Example: sset 107 dammsg fireball
- wearoff -- For spells this is the message that is given when the
spell wears off.
Example: sset 107 wearoff The torrents of cascading energy suddenly fade
away.
- guild -- This wasn't quite ever implemented, but it basically
allows pkill clans to have their own skills/spells to get it to work you have to set this
to the class number of the class you want to get the skill and you have to set the class
variable in setclan to the same class.
For example: sset 107 guild 1
- minlevel -- This only works in herbs, this will set the MAXIMUM
level that spell will be cast at. For example if you set it at 25, and the player was
level 50, it would be cast as a level 25, if the character was level 20 it would be cast
at level 20.
For example: sset 107 minlevel 25
- type -- This sets the type of the skill. Currently there are 6
types. Race, Spell, Skill, Weapon, Tongue, Herb. The Race sets it to a racial skill this
is currently not supported. Spell sets it up so you have to cast it, like a protection
spell. Skill sets it up so you use this skill by typing its name, for example kick or
punch. A weapon is used for things like pugilism, pierce, etc.. The tongue is setup for
the language. See Section 5 -- Setting up new languages and channels for more info on
that. And finally an herb is
Example: sset 107 type spell
- damtype -- This is the type of damage the spell causes. The
possibilities are none, fire, cold, electricity, energy, acid, poison, drain. This affects
which resistances help again this spell.
Example: sset 107 damtype fire
- acttype -- This is the action type a spell uses, this in
conjunction with classtype, and power type have a great control over what happens with the
spell. More on this after powertype. The possibilities are none, create, destroy, resist,
suscept, divinate, obscure, change.
- classtype -- This along with powertype will determine what a smaug
spell will do. See online documentation for more information.
For example: sset 107 classtype death
- powertype -- This along with classtup will determine what a smaug
spell will do. See online documentation for more information. For example:
sset 107 powertype none
- seffect -- This changes the save_negates and save_half_dam flags.
The new options are, none, negate, halfdam, quarterdam, eighthdam, 3qtrdam, absorb,
reflect. Absorb will absorb any damage and add that many hitpoints, for example if it did
8 points of damamge and you saved you would gain 8 exp. Reflect will cast the spell back
on that caster.
For example: sset 107 seffect absorb
- flag -- This can change several things, for example if it can be
scribed, brewed see spellflags online for what is available.
For example: sset 107 flag noscribe
- dice -- A diceformula used for rolling things like damage. For more
info on this see diceformulas online.
For example: sset 107 dice l/3 + 3
- value -- This is a reserved slot for storing things like vnums of
objects created in spells.
For example: sset 107 value 1000
- difficulty -- This sets how difficult the spell/skill is to learn.
The basic formula for this is a number_percent() + difficulty*5 and if that number is
higher than the learned number the PC has then you lose your concentration and can't cast
spell.
For example: sset 107 difficulty 5
- affect -- This will apply an affect when the skill or spell is
used, for more information see affecttypes online.
For example: sset 107 affect luck 4
- rmaffect -- This will remove an affect you have set for example to
remove the above you could use one of two things (Assuming the above was the only affect)
For example: sset 107 rmaffect 1
- level -- This sets the level a class gets the spell, for example
say coder class is class #2, and you want them to get it at level 20.
You would use: sset 107 level 2 20
- adept -- This sets a class's adept level. For example say you want
a coder class to adept the spell at 80%.
You would use: sset 107 adept 2 80
- components -- These are the components necessary to cast a spell.
This field currently only affects spells but should also affect skills as well soon. clear
will clear out the components. Then the syntax gets a bit more complex. The basic setup is
done using:
T### this checks for item of type ###
V##### this checks for item of vnum ####
Kword check for item with keyword 'word'
G#### check if player has ##### amount of gold
H#### check if player has #### amount of hitpoints
There are several operators that can be used....
! spells fails if player has this,
+ dont' consume this component,
@ decrease component's value[0], and extract it if it reaches 0
# decrease component's value[0], and extract it if it reaches 0
$ decrease component's value[2], and extract it if it reaches 0
% decrease component's value[3], and extract it if it reaches 0
^ decrease component's value[4], and extract it if it reaches 0
& decrease component's value[5], and extract it if it reaches 0
Here are a couple examples:
sset 107 components V@43 need item with vnum 43 to cast this spell,
decrease it value[0] by one and use it up if it reaches 0.
sset 107 components T+01 would look for itemtype 01 to cast the spell but don't use it up.
- racelevel -- This is the level a certain race gets a spell. For
example to set it so that humans get it at level 50 you would use:
sset 107 racelevel human 50
- raceadept -- This is the adept that a certain race can get in a
spell. For example to set it so that humans adept the spell at 70% use:
sset 107 raceadept human 70
To create a new language you need to find the lang_array in act_comm.c
which in smaug 1.4a is around line 2970.
Here add LANG_(Your Lang Name) before LANG_UNKNOWN.
Then go to the lang_names which is just below lang_array and right before
"" (and right after "gith", in SMAUG 1.4a)
Add "(your lang name)",
Example: Last line of lang_array would look like this:
LANG_CLAN, LANG_GITH, LANG_CODER, LANG_UNKNOWN };
Last line of lang_name would look like this:
"halfling", "clan", "gith",
"coder", "" };
Then you need to open up mud.h
Then search for LANG_ after the last BV language add in the in yours.
For Example: #define LANG_GITH BV19 #define LANG_CODER BV20
<--------Added this line
Then in the VALID_LANGS add your language into that:
For Example:
| LANG_HALFLING | LANG_GITH )
becomes
| LANG_HALFLING | LANG_GITH | LANG_CODER )
Then make clean and recompile.
Then online you have to make that language......
sset create skill (language)
sset (lang) type tongue
sset (lang) guild -1
sset (lang) code spell_null
sset save skill table
Then you need to edit the levels at which the classes get that language by
editing the class files or by sset level (classnum) (level)
Then sset adept (classnum (adept%)
You can also set it up as innate race ability for example:
setrace coder language (language)
Example:
sset create skill coder
sset coder type tongue
sset coder guild -1
sset coder code spell_null
Then to set it up by classes add:
sset coder level 0 1
sset coder adept 0 99
Or to make it an inate race ability:
setrace coder language order
sset save skill table
That should about do it for languages now on to channels.......
First create a file in the clan directory with the name of the clan. For
example dslay.clan and setup a very basic clan file like:
#CLAN
Name Dragonslayer~
Filename dslay.clan~
End
#END
Then add that to the name in the clan.lst For example in this case we would
add the following:
dslay.clan
Then reboot the mud and you will be ready to start setting up the clan
online with the setclan command. You can use the following options:
- deity -- This will set the immortal to be a deity of the clan. For
example say Shaddai was supposed to be the leader you would use
setclan dragonslayer deity Shaddai
- leader -- This will set the leader of the clan. For example say you
want Nivek to be the leader of the clan you would use:
setclan dragonslayer leader Nivek
- number1 -- This will set number1 of the clan set just like the
leader.
- number2 -- This will set number2 of the clan set just like the
leader.
- members -- This is the number of the clan members and shouldn't
ever be set unless occasionally you use a grub to find the correct number of members (IE
ones missed through autodeletings, etc....)
setclan dragonslayer members 200
- board -- This lists their boards vnum usually the same object vnum
and room vnum but it doesn't actually do anything, other than keeping track of the
numbers.
setclan dragonslayer board 1200
- recall -- This is the vnum that clan members will recall too.
setclan dragonslayer recall 1200
- storage -- This is the clans storage room. When you set this and
someone puts an item in a container in this room it will be saved in the clan.vault. You
also need to set the clanstoreroom flag on the room.
setclan dragonslayer storage 1200
- guard1 -- This lists the first clan guardian vnum but doesn't
actually do anything so you really don't have to do anything with this variable.
setclan dragonslayer guard1 1200
- guard2 -- This lists the second clan guardian vnum and like above
doesn't really do anything.
setclan dragonslayer guard2 1201
- align -- This is no longer used.
- memlimit -- This will limit the number of members a clan have. For
example if you set it to 50 the clan would be limited to 50 members and if a leader
inducted 50 people and tried to induct another person it wouldn't let them until their
membership went under 50.
setclan dragonslayer memlimit 50
- leadrank -- This will be what the leaders "rank" is shown
as or in the same column that Avatar shows in the who command. For example to set the
leaders rank to loser you would do:
setclan dragonslayer leadrank Loser
- onerank -- This is what the number ones "rank" is shown
as, set it the same as you would the leaders rank.
- tworank -- This is what the number twos "rank" is shown
as, set it the same as you would the leaders rank.
- obj[1-5] -- These are the objects the clan leader can make, obj1 is
set to level 40, obj2 is set to level 45, obj3 is set to level 50, obj4 is set to level
35, object5 is set to level 1. For example to set one of the objects the leader can make
to an object with vnum 1200. And have that object set to level 40 you would use:
setclan dragonslayer obj1 40
- name -- This changes the name of the clan, for example to change
Dragonslayers to Manslayers you would use: setclan dragonslayer name Manslayer
- filename -- This changes the filename the clan is kept in and also
updates the clan.lst To change the filename to manslayer.clan you would use:
setclan dragonslayer filename manslayer.clan
- motto -- This gives the clans motto when using the
clans/orders/guilds commands
For example:
setclan brujah motto Die in your boots, not on your knees.
This would show up something like this when using clans brujah Brujah, 'Die in your boots,
not on your knees.'
- desc -- This is a description of the clan you get when using the
clans/orders/ guilds command. To use this just do: setclan dragonslayer desc This will
drop you into an editor and you can edit the description just like you would a note.
- favour -- This isn't currently used.
- strikes -- This isn't currently used.
- type -- This is the type of the clan it is, for example guild,
order, clan. The valid types are guild, order or the # of the type. So for example to set
the type to pkill you would do:
setclan dragonslayer type 0
- class -- This works in conjunction with guilds for the class
allowed as well as the special skills clans could get. The argument is the class number of
what you want for example say the coder class is # 2. You would use:
setclan dragonslayer class 2
- pkill[1-7] -- This keeps track of pkills in the ranges of 1-9,
10-14, 15-19, 20-29, 30-39, 40-49 and 50. This means you killed someone of this level, and
these should never be changed unless you want to reset the pkills a clan has for example:
setclan dragonslayer pkill1 0
- pdeath[1-7] This keeps tracks of the pdeaths in the same ranges as
above, This is the level of the clanie that died. This also shouldn't need to be changed
unless you want to reset the pdeaths a clan has, for example:
setclan dragonslayer pdeath2 0
The first thing you need to do is:
makeboard <filename>
For example makeboard myboard.brd
This will create a new board file and setup defaults. The next thing you need to do is
setup a board object, to do this create an object and setup the object just like you would
do for any object and remember its vnum. Then you need to set up the defaults on the board
using bset.
The arguments that can be used with bset are as follows:
- ovnum -- This is the board that you setup in the previous step. Set
this to the objects vnum.
Example: bset myboard.brd 1000
- read -- This is the minimum level you have to be to read the board.
For example to set it to 51, so only immortals can read it you would use:
bset myboard.brd read 51
- post -- This is the minimum level you need to be to post on the
board. So for example say the board above is a complaint board and you want mortals to be
able to use it, you could set it to level 1 like this:
bset myboard.brd post 1
- remove want -- This is the minimum level you need to be able to
remove a note on the board. So say you only high level immortals to remove the notes on
the above board you could set it to level like this: 58
bset myboard.brd remove 58
- maxpost -- This sets the maximum number of posts allowed on one
board, this should be set to a fairly low number, 200 is a good place to start. This
prevents some known crash bugs, with the number of posts on a board. To set a board to 200
use:
bset myboard.brd maxpost 200
- filename -- This renames the file to a new filename for example say
you have been using myboard.brd and don't need it, and have a new council code council
that needs a board. You can rename the file so it reflects that (Though it isn't
necessary)
bset myboard.brd filename codecouncil.brd
- type -- This is what commands can be used on the board. For example
if it is a mail board or a note board. To set it to a note board:
bset myboard.brd type 0
For a mail board it would be:
bset myboard.brd type 1
- read_group -- This allows a group of people to read a board, even
if they aren't high enough level. This is good for things like newbie councils that you
don't want mortals to read it outside of the newbie council, but you don't want to keep
updating the extra_readers. The groups can be a clan/order/guild or council. So for
example if your council was 'Newbie Council' You would set it like this:
bset myboard.brd read_group Newbie Council
- post_group -- This allows a group of people to post to a board and
works just like above. So to let the Newbie Council post on a board use:
bset myboard.brd post_group Newbie Council
- extra_readers -- This allows player[s] to read a board that isn't
in their level range. When you add a name it automatically gets added to the list, to
remove a name you need to clear it like:
bset myboard.brd extra_readers none
And then reset the ones you want as readers. For example to add Nivek and
Shaddai as extra readers you would use:
bset myboard.brd extra_readers Nivek Shaddai
- extra_removers -- This is just like above but this lets a player
remove from a board that their level normally wouldn't let them. It works just like above
so to add Nivek and Shaddai as extra removers you would do:
bset myboard.brd extra_removers Nivek Shaddai
- oremove -- This is the message other people see when someone
removes a note. So for example if you want it to say Shaddai clears up some clutter. When
Shaddai removes a note it would be:
bset myboard.brd oremove $n clears up some clutter.
- otake -- This is the message other people see when someone takes a
note. So for example if you want it to say Shaddai takes a bounty note. When Shaddai takes
a note from this board it would be:
bset myboard.brd otake $n takes a bounty note.
- olist -- This is the message other people see when a person does a
note list. So for example if you want it to say Shaddai reads over the bounties. When
Shaddai does a note list it would be:
bset myboard.brd olist $n reads over the bounties.
- ocopy -- This is the message other people see when a person does a
note copy. For example:
bset myboard.brd ocopy $n makes a note of a bounty.
- opost -- This is the message other people see when a person posts a
note. For example:
bset myboard.brd opost $n puts up a new bounty.
- postmesg -- This is what you see when you post a note. For example:
bset myboard.brd postmesg
You post a new bounty.
Then just make sure you add the board object into resets and you have a new
board :)
The first thing you need to do is create the deity file. This is done using
the makedeity command. So for example if you wanted a deity called Shaddai:
makedeity Shaddai
This creates the file and sets up some defaults and writes it to the list
of deities to load during bootup. Then you use setdeity to setup the deity the way you
would like it.
- filename -- This will change the filename of the deity file and
will also update the list of deities to loadup at bootup. To change a deity file for the
deity Shaddai you would use:
setdeity shaddai filename Shaddai.dty
- name -- This will change the name of the deity that everyone uses
to devote too, etc... For example to change the deity Shaddai to Nivek you would use:
setdeity shaddai name Nivek
- description -- This is the Description that is given when a mortal
uses the deities <deity name> command. It can be changed by using the command:
setdeity shaddai description
This will drop you into an editor and then you can work on it just like you
would a note or a room description.
- alignment -- This is the alignment of the deity, it affects several
things, first if a mortal supplicates a avatar, then the avatar is the same alignment as
the deity. Also if your alignment is too far off what your deities is, then you will start
lossing favor. To set a neutral deity for example would be:
setdeity shaddai alignment 0
- worshippers -- This is how many people currently worship (are
devoted) to the deity. This number really doesn't need to be changed.
- npcfoe -- This is the # of the race that the deity
"dislikes" so you get more favour of killing a mob of this race. For example to
set this deities npcfoe to coder which lets say is race #4, you could do either:
setdeity shaddai npcfoe 4 OR setdeity shaddai npcfoe coder
- susceptnum -- This sets the amount of favour needed otherwise, you
get set to any suscepts the deity has. For example if it was set to 500 and your favour
was 400, you would be susceptible to whatever this deities suscepts are.
setdeity shaddai susceptnum 500
- race -- If this is set then this deity only accepts worshippers of
a certain race. This too can be set by the name of the race or by the number. So for
example if you wanted the deity so only humans can devote to it you would do:
setdeity shaddai race human
To clear this value set it to -1, like this:
setdeity shaddai race -1
- race2 -- If this is set 2 races can devote to this deity, but it
will only be checked if race is set as well. So if you wanted Shaddai deity to have
worshippers of humans AND dwarfs, you would do this:
setdeity shaddai race2 dwarf
Just like above to clear this flag set it to -1.
- npcrace -- This is similar to npcfoe, but you get a little less
favour from killing these than a npcfoe.
setdeity shaddai npcrace human
- class
- element
- sex
- affected
- suscept
- elementnum
- affectednum
- flee
- flee_npcrace
- kill
- kill_npcrace
- kill_magic
- die
- die_npcrace
- dig_corpse
- bury_corpse
- spell_aid
- steal
- backstab
- aid
- aid_spell
- sac
- kill_npcfoe
- die_npcfoe
- flee_npcfoe
- scorpse
- savatar
- sdeityobj
- srecall
- objstat
First you need to create the morph you do that with the morphcreate
command. There are two different ways to use it, first if you just want to create a new
morph, you use:
morphcreate <name>
For example: morphcreate 'Dire Wolf'
or if you want to copy a morph that already exists you would use:
morphcreate <vnum> copy
This will setup a new morph with a different vnum but with all the defaults
setup for you.
Once you have a morph created, it is time to start changing it to how you
would like it to be. This is done through setmorph. Remember also that when you change the
morph you need to save it by:
setmorph <vnum/name> save
When you set it up there are several other commands to help you with your
morphs, first there is morphstat that will take the name or vnum of the morph as an
argument. And if you use:
morphstat <vnum/name> help
It will list the descriptions, shorts, etc......
Then there is immmorph and immunmorph which allows an immortal to
morph/unmorph into anything themselves OR morph/unmorph any player into anything.
morphdestroy deletes a morph, this is safe to use even if a player is
already morphed into that and even if they have logged off and log back in morphed as
that.
The spell polymorph will allow players to morph into whatever they can
according to what has been setup.
And finally mpmorph and mpunmorph for mob/room/obj progs to allow you to
setup morphs that players can't morph into with a spell and/or morphs that don't have a
timer so they have to find a "healer" or something to unmorph.
To use in conjuction with the mpmorph and mpunmorph there are a couple new
ifchecks that progs can use:
- ismorphed -- Returns true if a player is morphed, false if they
aren't
- morph -- Returns true if a particular morph is set by vnum. For
example:
if morph($n) == 1000
setmorph is very complicated and has several things you can set:
- ac -- This will affect the players ac when they morph into it, for
example if it is set to -50, the player would gain 50 ac improvement.
morphset 1000 ac -50
- affected -- This will add affects to a player when they morph, for
example to add sanctuary as an affect you would use:
morphset 1000 affected sanctuary
- blood -- This is how much blood you lose/gain when you morph, this
is interperted at morph time and uses the dice formulas. So for example you could do:
morphset 1000 blood l/2 Also note that this adds to the persons blood
level.
- bloodused -- This is the amount of blood used to morph, kind of
like when a vampire casts a spell. If that amount of blood isn't available the morph
fails.
morphset 1000 bloodused 20
- cha -- This is the amount of charisma you gain/lose when you morph.
This is an integer and is not interperted as dice.
morphset 1000 cha 1
- class -- If anything is set on here, then only classes with the bit
set can morph into this particular morph. For example if you want only vampires to morph
into this particular morph you would do:
morphset 1000 class vampire
To disallow a class after you have set it, just set it again and it will
untoggle the class.
- con -- This is the amount of constitution that the player will
gain/lose whenever they morph, for example to make them lose a con point:
morphset 1000 con -1
- damroll -- This is the amount of damroll the player gains/loses
whenever they morph, this uses dice formulas as well, so for example to make a player lose
half their level in damroll you would do:
morphset 1000 damroll -l/2
- dayfrom -- This prevents someone morphing into a morph if it
doesn't fall during the dayfrom - dayto period. Setting this value to -1 sets it to not
check this time period. Valid numbers are 1-31
morphset 1000 dayfrom 2
- deity -- This makes it so only people devoted to a certain deity
can morph For example to let only people devoted to the deity Shaddai morph you would use:
morphset 1000 deity Shaddai
- description -- This is the description of the morph, that is when
someone looks at you what they see (A furry bat, whatever.) To use this, you do:
morphset 1000 desc
This will drop you into a note editor and then you can edit the description
just like you would with a note.
- defpos -- If you are in the default position set here then when
someone looks they see whatever was set on the long description of the morph.
morphset 1000 defpos 6
- dex -- This is how much dexterity the player will gain/lose when
they morph.
morphset 1000 dex 2
- dodge -- This is how much more dodge they gain or lose when they
morph from a range of -100 to 100. For example to give them 20% more change to dodge:
morphset 1000 dodge 20
- favourused -- This is how much favour it takes the player to morph.
If they don't have enough they can't morph, if they have enough they lose that amount of
favour to morph. For example:
morphset 1000 favourused 500
- gloryused -- This is how much glory is used to morph, if the player
doesn't have enough then they can't morph, if they have enough then they lose that amount
of glory to morph. For example:
morphset 1000 gloryused 100
- help -- This is what the player see's when they look at the morph
files for a particular morph. You use the following command which will drop you into a
editor and you can then edit it just like a note.
morphset 1000 help
- hitroll -- This is how much hitroll a player gains/loses when they
morph. This can be a dice formula so for example to have them gain 1/2 their level in
hitroll you would use:
morphset 1000 hitroll l/2
- hp -- This is how much hitpoints a player gains/loses when they
morph. This can be a dice formula so for example to have them gain 1/2 their level in
hitpoints you would use:
morphset 1000 hp l/2
- hpused -- This is how many hitpoints are lost when they morph, if
they don't have enough hitpoints to keep them alive, the morph fails. This can be
considered the "pain" of morphing into this particular morph. For example if you
wanted them to lose 100 hitpoints you would use:
morphset 1000 hpused 100
- immune -- These are immunities the player gains whenever they
morph. To remove an immunity you set it again to un-toggle that immunity. For example to
add an immunity to magic you would use:
morphset 1000 immune magic
- int -- This is how much intelligence the player gains/loses when
they morph. For example to make the player lose 3 intelligence points when they morph you
would use:
morphset 1000 int -3
- str -- This is how much strength the player gains/loses when they
morph. For example to make the player gain 3 strength points when they morph you would
use:
morphset 1000 str 3
- keyword -- This is the keyword needed to hit the player now. For
example if they morphed into a bat, and you wanted people to be able to use murder bat,
then you would do:
morphset 1000 keyword bat
- lck -- This is how much luck a player gains/loses when they morph.
For example to make the player lose 3 luck points when they morph you would use:
morphset 1000 lck -3
- level -- This is the level the player needs to be before they can
use this morph. For example to make it so only level 25+ can use a particular morph you
would use:
morphset 1000 level 25
- long -- This is what other players see when the morphed player is
in the default position. For example:
- morphset 1000 long A large dire wolf is resting here.
- mana -- This is the amount of mana a player gains/loses whenever
they morph. This is a dice formula so for example you could do:
morphset 1000 mana l/2
- manaused -- This is the amount of mana used to morph into a
particular morph. For example to make it cost 50 mana you would do:
morphset 1000 manaused 50
- morphother -- This is what other people see whenever you morph. For
example:
morphset 1000 $n shrinks down into the form of a cute puppy.
- morphself -- This is what the player sees when they morph. For
example:
morphset 1000 You shrink down into the form of a cute puppy.
- move -- This is the amount of move that a player gains/loses
whenever they morph. For example:
morphset 1000 move -100
- moveused -- This is the amount of move that is used up whenever a
player morphs. If there is not enough move the morph fails.
morphset 1000 moveused 100
- name -- This is the name of the morph or what other players see
whenever the player says or does something. For example;
morphset 1000 name puppy
- noaffected -- This PREVENTS a player from ever being affected by
certain affects. So for example if you set sanctuary they will never be affected by
sanctuary no matter if it they have an item that grants it or have the spell cast on them.
Setting the same affect twice removes it.
morphset 1000 noaffected sanctuary
- nocast -- This means that a player can't cast polymorph to morph
into this particular morph. It must be done by an item, a mob (being bit by a vampire for
example) or some other way. The values are 1 and 0. 1 means that they can't cast to morph,
0 means they can cast.
morphset 1000 nocast 1
- noimmune -- This means that a player can't be immune to certain
immunities just like noaffected.
morphset 1000 noimmune magic
- noresistant -- This means that a player can't be resistant to
certain resistants, just like noaffected and noimmune.
morphset 1000 noresistant magic
- noskills -- This means that a player can't use certain skills
whenever they are morphed. Like bash or whatever..... morphset 1000 noskills bash To
remove the skills from being prevented do:
morphset 1000 noskills bash
- nosusceptible -- This means a player can't be susceptible to
certain things just like noaffected, noimmune and noresistant.
morphset 1000 nosusceptible magic
- obj[1-3] -- This can in conjunction with objuse[1-3] or by itself.
It prevents morphing unless you have the objects specified by obj[1-3]. This is done by
vnum.
morphset 1000 obj1 1200
- objuse[1-3] -- This is like above prevents morphing unless you have
the objects specified by objuse[1-3] but in this case it also "uses" up the
object.
morphset 1000 objuse1 1201
- parry -- This is the percentage that a player gains/loses to parry.
morphset 1000 parry -50
- pkill -- This sets who can actually use this morph, the agruments
are either pkill, peace or none. pkill only allows pkillers to use the morph, peace only
allows peaceful's to use the morph and none lets either use the morph.
morphset 1000 pkill pkill
- race -- These are the races that are NOT allowed to use the morph.
For example to disallow pixies to not use the morph:
morphset 1000 race pixie
Also to remove that race, simply reset it to toggle it off.
- resistant -- These are the resistances that a player gains whenever
they morph. For example:
morphset 1000 resistant fire
To remove the resistant just set it again to toggle it off.
- sav[1-5] -- This is the amount of saving throw a player gains/loses
whenever they morph. Valid values are -30 to 30. (Remember - is good + is bad)
morphset 1000 sav1 -10