A Guide to Object Creation -------------------------- This is intended as a set of guidelines to those who are just beginning as Builders. Nothing here is written in stone, this file is based on my experience and the online help files. (Herne the Hunter) Always remember that most important command: SAVEAREA How to Make Objects from the Ground Up -------------------------------------- Once a new Builder has proven that s/he can read and understand the help files behind room building, they move up to the next level of Building; Object Creation. Without objects, there would be no armour to protect yourself, no weapons to fight mobs with, and no consumables to cure the damage that mobs do or enhance a character's attributes. There are three very important commands when dealing with Objects; OCREATE to create new objects, OSET to modify a new object, and OSTAT to view that stats on an object. You should become familiar with these commands before creating new objects. I also find it's a good idea to make a scratch list of my object (and mob) vnumbers so that I can cross off each vnum as I use it to create a new object. The MUD won't allow you to create a new object with an existing vnum, but it solves problems if you keep a list of the numbers you've already used. Step 1. Object Creation ------------------------ OCREATE (Shortform: OCR) Syntax: ocreate <vnum> <keywords> Syntax: ocreate <vnum> [copy vnum] <item name> A prototype object will be created with the selected vnum, and set up with the plainest of default values. A material image of the magical prototype will appear before you, for you to futher modify with OSET. Once an object vnum is invoked, it cannot be destroyed or deleted, but it CAN be modified completely. EXAMPLE: ocr 1000 helmet silver kings This would create an object with the vnum 1000 and the keywords 'helmet silver kings'. Always try to use more than 1 keyword for your objects as it makes it easier to distinguish different objects when they're in your inventory. There may be 100 "helmets" in the game, and some of them may also be "silver", but it's a good chance that only a couple will be "kings" as well. It's not enough to simply name an object "helmet" or "potion" or "scroll", at least one keyword should be unique or rare. Ocreate can also be used to copy an existing object to a new vnumber. EXAMPLE: ocr 1001 1000 helmet copper kings This would take the stats of object vnum 1000 and copy them to object vnum 1001 with the new keywords of 'helmet copper kings'. This is useful if you have several similar objects that have slightly different flags or effects. Step 2: Setting the Objects Stats --------------------------------- Once you have your proto object created, you'll need to set the various values on it to make it into whatever object you intend it to be. This is accomplish with the OSET command. HELP OSET Syntax: oset <object> <field> <value> oset <object> on Field being one of: flags wear level weight cost rent timer name short long ed rmed actiondesc type value0 value1 value2 value3 value4 value5 affect rmaffect layers For weapons: For armor: weapontype condition ac condition For scrolls, potions and pills: slevel spell1 spell2 spell3 For wands and staves: slevel spell maxcharges charges For containers: For levers and switches: cflags key capacity tflags **(More Detailed Help Files Follow)** If the copy of the object you are currently modifying has the PROTOTYPE flag, your modifications will also modify the index of that object, which all other instances of the object are based on. In the future, every copy of that obj will reflect your modifications. Also be aware that modifications to the object affect list (everything that is listed after 'object values') will affect _every_ copy of that object in the game, including old copies (even if they are not online). Thus if you change a prototype-flagged copy of a sword to +4 damroll, every copy of that vnum ever made will reflect that change. If you add a 'magic' flag to that sword, however, only copies made after the change will be affected. If the copy of the object you are modifying does NOT have the PROTOTYPE flag, your modifications will affect only that copy you have in your possession. OSET ON will lock you onto a particular object. Once locked on, all commands will imply 'oset <object>'. Hitting enter while in OSET ON gives you an ostat of the object you are working on. To get out of OSET ON, simply type the word DONE. Example: oset staff on long A long gnarled staff of burnished oak lies here. type staff done See AFFECTTYPES, WEARFLAGS, OBJECTFLAGS, OBJECTTYPES, ARMORCLASS ITEMVALUES, WEAPONTYPES, VARIABLES, OMENU and LAYERING Step 3: Viewing an Item's Stats. -------------------------------- To view any item's stats, you'll need to use the OSTAT command. HELP OSTAT Syntax : ostat <object/object vnum> Examples: ostat helmet ostat 1000 OSTAT shows you statistics on an object. If a copy of the object is present in the game, you can access it using its vnum. Ostat will default first to an item on the ground, second to an item in your inventory, and third to an item in the game with the keyword you specified. Step 4: Listing the Objects you Created in Your Assigned Range. --------------------------------------------------------------- OLIST Syntax: olist : olist <first object> : olist <first object> <last object> This command will list all of the prototype objects in your area, when used with no arguments. When used with a single argument it will list all objects including and after the argument, and when used with two arguments, it will list all objects including and between the two. The Help Files in Detail for OSET Fields ---------------------------------------- OBJECTTYPES Object types listed in bit order: None Light Scroll Wand Staff Weapon Fireweapon Missile Treasure Armor Potion Worn Furniture Trash Oldtrap Container Note Drink_con Key Food Money Pen Boat Corpse_npc Corpse_pc Fountain Pill Blood Bloodstain Scraps Pipe Herb_con Herb Incense Fire Book Switch Lever Pullchain Button Dial Rune Runepouch Match Trap Map Portal Paper Tinder Lockpick Spike Disease Oil Fuel Short_bow Long_bow Crossbow Projectile Quiver Shovel Salve Not all are implemented. See OSET ITEMVALUES ARMORCLASS. WEARFLAGS These flags should be self explanitory: take finger neck body head legs feet hands arms shield about waist wrist wield hold ears eyes See OSET and RESETCMDS. OBJECTFLAGS Flags that objects can have: Flag | Affect | Flag | Affect -----------+-------------------- | -------------+---------------------- glow | n/a | hum | n/a dark | n/a | loyal | loyalty ('help loyal') evil | glow on det. evil | antievil | zap if align -350 magic | prevents enchant | | & lower. bless | +20% resist dam. | antigood | zap if align +350 & up | 2 x duration poison | antineutral | zap if align -350 to | weapon | | +350 invis | invisible | inventory | purge upon char. death nodrop | cannot drop | antithief | zap if thief noremove | cannot remove w/o | anticleric | zap if cleric | 'remove curse' | antimage | zap if mage/augurer organic | +20% suscept. dam. | antiwarrior | zap if warrior/ranger metal | +20% resist damage | antidruid | zap if druid donation | prevents get all | antivampire | zap if vampire clanobject | n/a | clancorpse | n/a prototype | n/a | nolocate | locate spell fails Additional flags: Covering: Items inside this are 'covered', use 'look under <object>' to see 'inside'. The object does not have to be a container to be a covering object. Use 'reset put' to indicate objects to be covered by this object. ITEMVALUES In these values, 'sn' is a spell number; a negative value means 'no spell'. Item Type|V0 |V1 |V2 |V3 |V4 |V5 ---------|----------|-----------|----------|----------|--------|------- armor |current AC|original AC| | | | container|capacity |flags |key vnum |condition | | drinkcon |capacity |quantity |liquid # |poison? | | food |food value|(condition)| |poison? | | herb | |charges |herb # | | | key |(lock #) | | | | | lever |leverflags|vnum/sn |vnum |vnum/value| | light | | |hours left| | | money |# of coins|coin type | | | | pill |spell lvl |sn 1 |sn 2 |sn 3 |food val| potion |spell lvl |sn 1 |sn 2 |sn 3 | | salve |spell lvl |max charge |charges |delay |sn |sn scroll |spell lvl |sn 1 |sn 2 |sn3 | | staff |spell lvl |max charges|charges |sn | | switch |leverflags|vnum/sn |vnum |vnum/value| | trap |charges |type |level |flags | | treasure |(type) |(condition)| | | | wand |level |max charges|charges |sn | | weapon |condition |num dice |size dice |weapontype| | See OBJECTTYPES, WEAPONTYPES, SLOOKUP, LIQUIDTYPES, LEVERFLAGS, OSET, ARMORCLASS, and WEAPONCONDITION. SLOOKUP (Shortform: SLO) Syntax : slookup <skill-or-spell> Syntax : slookup all Example: slookup faerie fire slookup parry SLOOKUP shows you the internal 'sn' and external 'slot' for the given skill or spell. The 'sn' is used for OSET and OSTAT. The 'slot' is used for area files. Neither 'sn' nor 'slot' is used for player files; these operate with the actual skill and spell names. SLOOKUP ALL shows this information for all skills and spells. ARMORCLASS There are two values used with armour class for objecttype Armor: Value0: Variable amount based on level of item at repop. Value1: Maximum repairable armor setting for the object. Setting Value0 has no effect. It will re-adjust itself on repop based on the repop level of the item. Setting Value1 below the expected repop value for Value0 will result in an item that cannot be repaired until Value0 drops below Value1's setting. The listing below gives you a rough approximation of the values returned for Value0 based on level: Level Invoked | Value 0 Level Invoked | Value 0 --------------+--------- --------------+-------- 1 | 1-3 30 | 8-10 10 | 3-5 40 | 11-13 20 | 6-8 50 | 13-15 The amount that Value0 is set to determines the amount the player's AC will be adjusted. Different wear locations have a different multiplying effect on AC: 0 x Value0 : Wield, Ears. 1 x Value0 : Arms, Finger, Neck, Feet, Hands, Shield, Waist, Wrist, Hold, Eyes. 2 x Value0 : Head, Legs, About. 3 x Value0 : Body. See also OSET, AFFECTTYPES, WEARFLAGS, OBJECTFLAGS, OBJECTTYPES, ITEMVALUES, WEAPONTYPES, and VARIABLES. LAYERS Layers are currently available on the following wear locations: About, Arms, Body, Feet, Hands, Legs, Waist. Layers are set with a numeric value, or combination of values. The lower the value, the lower the layer, or thinner the item of clothing or armor is. Valid numeric values are: 0, 1, 2, 4, 8, 16, 32, 64, 128. Or any combination of the above. A value of zero means no other items can be layered with this item. Items of clothing can be layered over one another as long as their layer values do not overlap. ie, if leather armor were set to a value of 56 (8, 16, and 32), it could not layer with, say, a set of heavy chain that is set to a value of 96 (32 and 64), as they overlap on the layer value of 32. See also OSET, AFFECTTYPES, WEARFLAGS, OBJECTFLAGS, OBJECTTYPES, ITEMVALUES, WEAPONTYPES, VARIABLES, ARMORCLASS, LAYERS2, and OMENU. LAYERS2 Layer Bit Vectors |1 | | |2|6|3|1 | | |8|4|2|6|8|4|2|1| Layer | Suggested Armor Type +-+-+-+-+-+-+-+-+-------+--------------------------------------------- |0 0 0 0 0 0 0 0| 0 | (Default - Nothing Layers) |0 0 0 0 0 0 0 1| 1 | silk shirt, light cloth tunic (Lowest Layer) |0 0 0 0 0 0 1 0| 2 | leather vest, heavy cloth |0 0 0 0 0 1 0 0| 4 | light chainmail, padded gambeson |0 0 0 0 0 1 1 0| 6 | padded chainmail |0 0 0 0 1 0 0 0| 8 | leather jacket, reinforced chainmail |0 0 0 0 1 1 0 0| 12 | platemail, similarly rigid armor |0 0 0 1 0 0 0 0| 16 | light cloak, loose robes |0 0 0 1 1 0 0 0| 24 | heavy fur cloak |0 0 0 1 0 0 0 0| 16 | light cloak, loose robes |0 0 0 1 1 0 0 0| 24 | heavy fur cloak |0 0 1 0 0 0 0 0| 32 | loose cloaks, surcoats |0 1 0 0 0 0 0 0| 64 | capes |1 0 0 0 0 0 0 0| 128 | magical effects (auras, clouds of dust, etc) |1 1 1 1 1 1 1 1| 255 | (Highest Layer - Nothing Layers) +-+-+-+-+-+-+-+-+-------+--------------------------------------------- * Thick or bulky items may need to occupy more than one layer. (example; padded chain covers 2 layers) * A "body" wear position will have more layers than other positions such as "arms", "hands", "legs", and "feet". (example for "hands"; silk gloves | leather gloves | chain gauntlets) See also OSET, AFFECTTYPES, WEARFLAGS, OBJECTFLAGS, OBJECTTYPES, ITEMVALUES, WEAPONTYPES, VARIABLES, ARMORCLASS, LAYERS, and OMENU. AFFECTTYPES APPLYTYPES none strength dexterity intelligence wisdom constitution sex level age height weight mana hit move gold experience armor hitroll damroll save_para save_rod save_poison save_breath save_spell charisma resistant immune susceptible affected luck **(The following are still in the testing stages - Don't use)** backstab pick track steal sneak hide detrap dodge peek scan gouge search mount disarm kick parry bash stun punch climb grip scribe brew Additionally: (The following are very powerful and should be used only rarely) weaponspell <sn>: Will cast a spell on victim with every blow of a weapon wearspell <sn>: Will cast a spell on wearer when object is worn removespell <sn>: Will cast a spell on wearer when object is removed (Not currently working) <skill> <modifier> Will modifify a player's ability in a skill See AFFECTEDBY AFFECTEDBY AFFECTED_BY The following are affect flags that can be used when osetting an item (with oset <item> affect affected <affect flag>). These flags can also be used when msetting a mobile (mset <mob name> affected <affect flag>). They may additionally be used to mset players if your level allows it. Blind Invisible Detect_evil Detect_invis Detect_magic Detect_hidden **Hold** Sanctuary Faerie_fire Infrared Curse **Flaming** Poison Protect Paralysis Sneak Hide Sleep Charm Flying Pass_door Floating Truesight Detect_traps Scrying Fireshield Shockshield Iceshield Aqua_breath Possess Note - Hold and Flaming are current not in use. See also: OSET AFFECTTYPES LIQUIDTYPES Value | Liquid Type | Affects -------------------------+-------------- 0 | water | Thirst Quench 1 | beer | Alcoholic 2 | wine | Alcoholic 3 | ale | Alcoholic 4 | dark ale | Alcoholic 5 | whiskey | Alcoholic 6 | lemonade | Thirst Quench 7 | firebreather | Alcoholic 8 | local specialty | Alcoholic 9 | slime mold juice | Poison? 10 | milk | Thirst Quench 11 | tea | Thirst Quench 12 | coffee | Thirst Quench 13 | salt water | 14 | cola | Thirst Quench Note: Liquids that are Alcoholic or Poisonous will affect a PC's mentalstate for the worse. See OSET and ITEMVALUES. WEAPONTYPES For items of type "weapon", the value3 field specifies the weapon type: Value3 | Type | Weapons | Skill Affected -------+----------+-------------+--------------- 0 | hit | general | Pugilism 1 | slice | knife/sword | Long Blades 2 | stab | dagger | Short Blades 3 | slash | sword | Long Blades 4 | whip | whip | Flexible Arms 5 | claw | claw | Talonous Arms 6 | blast | magical | Pugilism 7 | pound | club/hammer | Bludgeons 8 | crush | club/hammer | Bludgeons 9 | grep | | 10 | bite | | Pugilism 11 | pierce | dagger | Short Blades 12 | suction | | Pugilism See OSET. OBJECTCONDITION WEAPONCONDITION ARMORCONDITION Value | Condition Value | Condition ------+------------------------ ------+-------------------------- 12 | in superb condition. 5 | in great need of repair. 11 | in excellent condition. 4 | in dire need of repair. 10 | in very good condition. 3 | very badly worn. 9 | in good shape. 2 | practically worthless. 8 | showing a bit of wear. 1 | almost broken. 7 | a little run down. 0 | broken. 6 | in need of repair. See also OSET, OBJECTTYPES, WEAPONTYPES, ITEMVALUES and OMENU. WEAPONDAMAGE The damage a weapon does depends on the values you set when you make the object. Value1 refers to the number of die used, and Value2 refers to the number of sides on the die used. (Example: Val1=5, Val2=4 - generates a damage range of 5-20 (ave 13). If no values are specified, the MUD will generate the appropriate damage done by the weapon based on its level. This table is intended to use as a guideline when generating damage for weapons, it's based on the numbers the MUD generates; Level | Ave Damage Level | Ave Damage ------+---------------- ------+---------------- 1 | 1 - 6 (3) 30 | 8 - 30 (19) 5 | 2 - 10 (6) 35 | 11 - 32 (21) 10 | 5 - 13 (9) 40 | 12 - 38 (25) 15 | 5 - 17 (11) 45 | 14 - 41 (27) 20 | 6 - 22 (14) 50 | 15 - 43 (29) 25 | 10 - 24 (17) PULL PUSH LEVERS PULLCHAINS SWITCHES BUTTONS Syntax: pull <trigger> Syntax: push <trigger> Levers, switches, pullchains and buttons can do all sorts of interesting things... open or unlock doors, change exits around, teleport you to another location, cast a spell, summon a monster... you name it! LEVERFLAGS SWITCHFLAGS BUTTONFLAGS PULLCHAINFLAGS DIALFLAGS Flag Name | Bitvector | Description --------------+-----------+------------------------------------------- UP | 1 | Trigger is UP UNLOCK | 2 | Trigger unlocks something LOCK | 4 | Trigger locks something D_NORTH | 8 | Affects the north exit D_SOUTH | 16 | Affects the south exit D_EAST | 32 | Affects the east exit D_WEST | 64 | Affects the west exit D_UP | 128 | Affects the exit up D_DOWN | 256 | Affects the exit down DOOR | 512 | Affects a door CONTAINER *| 1024 | Affects a container OPEN | 2048 | Opens something CLOSE | 4096 | Closes something PASSAGE | 8192 | Creates a passage OLOAD *| 16384 | Loads up an object MLOAD *| 32768 | Loads up a mobile TELEPORT | 65536 | Teleports the puller TELEPORTALL *| 131072 | Teleports everyone in the room TELEPORTPLUS *| 262144 | Teleports everything in the room DEATH *| 524288 | Causes instant death CAST *| 1048567 | Casts a spell (sn in value1) FAKEBLADE *| 2097152 | Lever is a wax covered sword blade (OUCH) RAND4 | 4194304 | Randomizes the exits N, S, E, W RAND6 | 8388608 | Randomizes the exits N, S, E, W, U, D TRAPDOOR *| 16777216 | Opens a trap door, everthing falls down See OSET and ITEMVALUES. * = not yet implemented. A Template for Object Making (The Advanced Method) --------------------------------------------------- This is the template I use when I'm creating new objects. What I do is create a file from this template for each new object I make, delete those lines that I don't need, and then I send the file 1 line at a time using an ASCII upload. This way, I can create objects offline and then log in to the building node and create all my objects at once. -----CUT HERE----- ocr (vnum) (keywords) oset (keyword) type [See OBJECTTYPES] oset (keyword) short (short desc of object) oset (keyword) long (long desc of object) oset (keyword) wear [See WEARFLAGS] oset (keyword) flags [See OBJECTFLAGS] oset (keyword) timer 0 [Optional Decay Timer] oset (keyword) weight # oset (keyword) cost # oset (keyword) level # oset (keyword) value0 0 [See ITEMVALUES] oset (keyword) value1 0 [See ITEMVALUES] oset (keyword) value2 0 [See ITEMVALUES] oset (keyword) value3 0 [See ITEMVALUES] oset (keyword) value4 0 [See ITEMVALUES] oset (keyword) value5 0 [See ITEMVALUES] oset (keyword) actiondesc (action) [Optional for FOOD itemtypes] oset (keyword) affect (affect) [See AFFECTTYPES] oset (keyword) affect (affect) [See AFFECTTYPES] : : : : [More can be added] oset (keyword) affect (affect) [See AFFECTTYPES] oset (keyword) affect (affect) [See AFFECTTYPES] oset (keyword) ed (keywords) [More than 1 ed can be used] 01234567890123456789012345678901234567890123456789012345678901234567890 +---------+---------+---------+---------+---------+---------+---------+ (This is a guide to use when writing eds, delete it before uploading.) -----END OF TEMPLATE----- An Example of an Object Template -------------------------------- ---START FILE--- ocr 1000 wool woolen cape oset woolen type armor oset woolen short a warm woolen cape oset woolen long A heap of wool rests on the ground here. oset woolen wear take neck oset woolen flags organic oset woolen weight 5 oset woolen cost 5000 oset woolen level 13 oset woolen affect hit 5 oset woolen affect mana 10 oset woolen affect save_spell -3 oset woolen affect move -20 oset woolen ed wool woolen cape This cape should keep you warm on those cold night watches. /s ---END FILE---