J


jab

Syntax:jab <victim name>

This command is very similar to the KICK command for warriors but is mainly for thieves and packs a little more punch. The success of each jab depends on how well you have the skill learned. The more you have it learned, the better your chances to hit and do more damage are. After using jab there are two rounds of delay during combat.

See also: hit | kick

Back to index.

javascript-and-auras

Auras have a special usage of "self". For auras, "self" is not the aura but rather the mobile that the aura is affecting. For example, if a player "barry" looks at "orc" who is wielding a "sword" with a "detect-invisibility" aura on it, then the JavaScript objects would have the following values:

self         the orc
actor        barry
aura         detect-invisibility aura
aura.on      the sword
If the "detect-invisibility" aura was on the "orc" directly (rather than the "sword", then the values would be:
self         the orc
actor        barry
aura         detect-invisibility aura
aura.on      the orc
Because of this, if "aura.on == self" then the aura is innate, otherwise it is from an item.

This special use of "self" allows you to place mobile behaviors on an aura and still have them work properly.

See also: auras | js-aura

Back to index.

javascript-performance-guide

(also JPG JS-PERFORMANCE-GUIDE)

While Arcane Age's JavaScript compiler is very fast (Arcane Ages runs thousands of JavaScript scripts per second), it is very important that builders try to follow performance tips as much as possible so that Arcane Age's CPU utilization is minimized. The more efficient everyone is, the more zones and players Arcane Ages can support.

The guide is broken into several chapters which each cover a topic:

1. jpg-names-and-comments
2. jpg-string-concatenation
3. jpg-cache
4. jpg-boot-event
5. jpg-self-is-implicit
6. jpg-builtins
7. jpg-act
8. jpg-please-help
See also: javascript

Back to index.

javascript-purge

(also JS-PURGE)

Generic Room, Mobile, Object Behavior

This can be used in place of the purge behavior on rooms, mobiles and objects.

A function has been added to room 78 to give more control over the purge behavior and to allow it to be easily maintained for keeping with new standards etc.

Syntax:Room.at(78).purge(args);

      Where args can be one of the following:
         'corpse' - Cause a corpse to be left behind when mobiles
                    are purged, or scraps to be left behind when
                    an item is purged.
         'msg'    - Replace the generic purge message with one of
                    your own, must be followed by the desired
                    message. Use ^2n to reference selfs name.

Eg.
Syntax:Room.at(78).purge('corpse','msg','^2n sets fire to the room.');

See also: behavior-purge

Back to index.

job-ambassador

An ambassador represents the mud's interests on other muds and in other "public" places outside of Arcane Ages such as newsgroups.

Back to index.

job-angel

An Angel's job is to seek out new immortals and teach them the ropes. Angel's also organize mortals quests to become gods. (TODO: ADD HR responsibilities)

aspirer       Artificer.  Must have done one project (whether it be a
              completed area or something else).  Must understand the ways
              of the mud.

neophyte      Can go around with higher Angels and observe.

practitioner  Preliminary Angel.  Can take on the teaching chores of a new
              immortal.  Can conduct a building interview with a high+ Angel
              present to observe.

adept         Full Angel.  Once you have taught at least 10 people and
              have interviewed at least 5 pre-imms as far as building aspect
              goes, then can attain this level.  Can now conduct building
              interview without observation if at least a Architect Adept.
              Can interview pre-imms on the "personality" side with observation.

high          Must have interviewed 10 pre-imms and must be a minimum
              Architect Adept.  Can conduct both sides of an interview.  Still
              need to send results to a sky+.

sky           Must have interviewed at least 15 pre-imms and must be a
              minimum level 5 Architect.

arch          Must have interviewed at least 30 pre-imms and must be a
              minimum level 6 Architect.

Back to index.

job-animator

Animator - a builder is one who builds areas. As one gets more and more experience as a builder, get higher and higher level. Mob builder designs and creates the monsters and creatures of the world Arcane Ages. The levels are based on folded mobs.
Initiate - First Area Level
Neonate     100 mobs
Adept       250 mobs
High        500 mobs
Sky        1000 mobs
Arch       2500 mobs
See also: jobs

Back to index.

job-architect

Architects are responsible for making sure that the mud flows smoothly. This includes ensuring that general game balance is being met, areas are cohesively tied together, and so on. The architect is in authority compared to the builder. The architect's are responsible to maintain proper rankings of creators in the job-builder. The job also requires working with existing builders and motivating them to create.

aspirer       Min Divinity Level.  Need to have lots of experience on the
              mud to be an effective architect.

neophyte      Need to start taking charge of certain situations.  Need
              to use common sense.  Must show a level of understanding
              of the 'big picture' rather than focusing on one or two narrow
              issues.  Promotion for level 3 is a subjective determination.

practitioner  Min DemiGod level.  At this point, one is at a sufficient
              level to understand the overall mud picture.  Can begin begin
              by pre-interviewing potential builders and answering their
              questions.  Note, this is not the actual interview process
              (that is done by Angels).  Instead, this is just building type
              questions and answers.  Again, a subjective determination to
              promote to adept.

adept         Adept architects are directly involved in the mud.  This
              person knows the entire mud, all its areas, what is and is not
              being built, what is and is not being coded.  Adepts must take
              part in the building interview process of prospective immortals.
              [GAIN: "rassign, massign, oassign"]

high          Min Lesser God Level.  Need more experience for high.  Must
              be a Checker Adept in all categories, and must be a Angel Adept
              (MAYBE).  This architect must take part in the interview
              prospective immortals on the "personality" side.  High
              Architects take a stronger role in the future building, coding
              and administration of the mud.

sky           Sky Architects must be minimum High Checkers.  Other
              subjective requirements are made by other Sky Architects and
              high level gods.  [GAIN: all fold commands]

arch          Arch Architect.  The requirements are very subjective.
              Basically, a master architect thinks about the mud in their
              sleep.

Back to index.

job-artificer

Artificer - a builder is one who builds areas. As one gets more and more experience as a builder, get higher and higher level. Obj Builder deals directly with objs (objects). The levels are based on folded object only.
Initiate - First Area Level
Neonate     100 objs
Adept       250 objs
High        500 objs
Sky        1000 objs
Arch       2500 objs
See also: jobs

Back to index.

job-artisan

The Artisan is someone who authors multimedia like graphics, 3D models, music, and so on.

See also: jobs

Back to index.

job-behaviorist

Behaviorists are builders who know how to use behaviors in interesting and unique ways. The more a behaviorist can utilize behaviors to solve "organic mud problems", the higher level they are. Builders should ask behaviorists for help.

aspirer       Artificer.  Need to have access to all behaviors to apply.

neophyte      Learning behaviors.

practitioner  This level behaviorist knows how to use behaviors in their
              most basic form.

adept         This level behaviorist knows how to use fairly competently
              75% of the behaviors.

high          This level behaviorist has used just about every behavior and
              combined behaviors to produce interesting results.

sky           This level behaviorist knows and understands all aspects
              of behaviors very well.  He or she has used the creation system
              to implement rich and realistic imaginative ideas.

arch          This level understands behaviors so well, you'd think he
              or she coded them.  Arch Behaviorist are virtual wizards when 
              it comes to creating and finding ways to implement complex ideas.
See also: jobs

Back to index.

job-coder

A coder is one who assists in the development of the Arcane Ages engine. Note this differs from the on-line development of areas, races, clases and proficiencies.

Initiate        One who wishes to become a coder.
 
Neophyte        A Neophyte level coder is one who is currently being trained
                by a Sky+ coder on the Arcane Ages codebase.
 
Practitioner    A Practitioner level coder is able to undertake minor alterations
                or fixes to the Arcane Ages codebase.
 
Adept           An adept coder is responsible for undertaking relatively complex
                alterations to the existing codebase for Arcane Ages.
 
High            A high coder is able to add new modules/routines to the codebase
                and is able to comprehend and sove complex coding situations and
                is able to develop viable solutions to ensure the progression of
                Arcane Ages. The use of good documentation skills particularly
                for online help is a must to attain this level.
 
Sky             Sky coders assist with the maintenance and updating of
                the Arcane Ages codebase.
 
Arch            Arch coders are responsible for the general maintenance
                of the Arcane Ages codebase

Back to index.

job-creator

Creator - a builder is one who builds areas. As one gets more and more experience as a builder, get higher and higher level. Room Builder deals directly with rooms. The levels are based on folded rooms and not private ones.

Initiate - First Area Level
Neonate     100 rooms
Adept       250 rooms
High        500 rooms
Sky        1000 rooms
Arch       2500 rooms
See also: jobs

Back to index.

job-diplomat

The job of the diplomat is to maintain positive relations between immortals and mortals. The diplomat is responsible for ensuring that any issues mortals have in general are taken to the immortal staff for discussion/resolution and should be seen at all times by mortals as a go-to person should they have any issues not directly relating to quests, reimbursements or inquisitions. The diplomat should also be responsible for passing on the immortals response to any of these issues unless the issue in question pertains to changes in rules, zones or gameplay in which case it is the job of the scribe or architect.

Aspirer        Min Artificer. Must be able to interact with mortals.
 
Neophyte       Taught the art of diplomacy by a high+ diplomat.
 
Practitioner   Min Divinity level. The role of the practitioner is to serve
               as a first point of call for mortals. The diplomat must have
               knowledge of where issues that players have need to be directed
               or where to find that information.
 
Adept          The adept diplomat should have sufficient knowledge of the
               immortal heirarchy in each area of mud administration to be able
               to effectively and efficiently deal with all issues that may
               arise.
               [GAIN: "friend"]
 
High           Min Demigod. The high diplomat should be able to efficiently
               respond to any issues that a player raises that do not fall
               under the immediate responsibility of another administration
               role. Promotion to next level is subjective upon approval by
               all sky+ diplomats.
 
Sky            Min Lesser God. Promotion to next level is subjective on
               approval by arch diplomats.
 
Arch           Min Greater God.

Back to index.

job-guide

A guide is a player level character given the task of assisting players new to the Arcane Ages world with learning how to play the game. They are responsible for showing players how to level, how to fight, where they should be going in the first instance and teaching the players what they should be looking for in equipment.

aspirer      Must be mortal to apply.

neophyte     After showing that you're capable and willing to help new
             players, you may move on to this level. Showing new players 
             where the rules can be found is an absolute must.

practicioner One may move on to this level after helping 10 new players
             learn the game and get to know the feel of how things work.

adept        Help 20 new players to move on to this level.

high         Help 30 new players to move on to this level.  Also responsible
             for teaching new guides what newbies should know.

sky          Help 50 new players to move on to this level.

arch         Help 100 new players to move on to this level.

Back to index.

job-herald

Heralds are responsible for setting up meetings and ensuring that the relevant parties are aware of the meetings. Heralds will also reschedule meetings to work around people's schedules. In addition, a scribe must be at all important meetings so that meeting minutes can be recorded. (Of course, a single person can be both a scribe and a herald.)

TODO: Heralds are responsible for finding a scribe. Think anyone should be able to call meetings ... heralds responsible for determining what is a valid reason to call a meeting.

aspirer       Immortal.  Just need to be interested.

neophyte      Need to start attending meetings and see how higher level
              heralds administer.  Meets with the administering herald after
              meetings to discuss the processes of the meetings and after the
              meetings.  Upon completion of this learning, permission is given
              by a high to be promoted to practitioner.
              [GAIN: "bellow", "broadcast"]

practitioner  Pre-Herald.  At this level the herald will be trained for the
              duties of an adept or full-herald.  The practitioner will setup 
              their first pre-arranged meeting upon notification from a high.  
              The practitioner will then post on the public boards notification 
              of the meeting and mail parties if needed.  At the meeting they 
              will make a set of minutes along with the set of minutes being 
              made by a full-herald.
              All after meeting duties will be done as asked by the high.
              [GAIN: "thunder"]

adept         Full Herald.  Once a herald has completed the first set of
              public notifications, approved set of minutes, and carried out
              their first set of duties, they may be promoted to this level 
              by permission of a high.  A Full Herald is responsible to make 
              sure everyone knows a meeting is gonna take place.  Can post
              email messages, or immortal-board messages without approval.
              The full herald is also responsible for making the set of minutes
              for the meeting and post them upon review of the meetings 
              administering herald.  This herald is responsible for ensuring all
              after meeting duties have been accomplished.
              [GAIN: "system"]

high          Once a Full Herald has done 10 the before, during and after duties
              of a meeting can attain this level upon vote of current sky 
              heralds.  A high herald can assign lower levels the task of 
              informing/making minutes.  A Level 5 must also approve these, 
              however.  The Level 5 is ultimately responsible.  
              [GAIN: "proclaim"]

sky           Once a Level 5 has taken full and complete responsibility of
              at least 3 meetings, then can apply for Level 6.  A Level
              6 gets the responsibility of actually administering
              meetings.  They are to check that ALL duties have been completed
              to ensure the productivity of the meeting.  This ensures that the
              meetings do not get out of control.  

arch          Master Herald.  Can actually call meetings.  Can ask a lower
              level herald to do the duties required, but must be
              a level 7 to actually start the process.  Also a level 7 is
              responsible for maintaining constant contact with architects
              so that architects are aware of projects that are occuring due
              to the meetings so they can be administered.

Back to index.

job-historian

The Historian is one who keeps track of all of the factions, political situations, and relationships between all of the denizens of Arcane Ages.

See also: jobs

Back to index.

job-inquisitor

Inquisitor - this administrator's job is to determine what actually happened when something goes wrong. Usually, an inquisitor determines fault in mortal-mortal situations. However, as an inquisitor gets more experienced, will deal with mortal-immortal and immortal-immortal situations.

aspirer      Artificer.  Need to be somewhat experienced.

neophyte     Learning Inquisitor.  Will go around with a high+
             Inquisitor to observe procedures.

practitioner Preliminary Inquisitor.  Can undertake initial questioning
             in matters between mortals and document details to be
             provided to a high+ inquisitor.
             [GAIN: "bring", "gag", "punish"] 

adept        Full Inquisitor.  After being involved in 10 mortal to
             mortal inquisitions, can attain adept level. Adepts are
             able to determine fault in a mortal-mortal matter and can
             give out minor punishments such as gagging or revoking
             title privileges. The adept can also sit in on situations
             between mortals and immortals. 
             [GAIN: "absolve", "petrify", "warrant"]

high         Min Demigod.  After 30 approved inquisitions/punishment
             cases, can attain this level.  Must have also sat in on
             at least 5 mortal-immortal discussions. High inquisitors
             are able to evaluate and punish the more serious mortal
             offenses and can advise a sky+ inquisitor on mortal to
             immortal matters, they can also start sitting in on
             immortal-immortal matters. [GAIN: "banish", force"]

sky          Min Lesser God.  Can get to the bottom of all mortal
             situations.  Can solve most imm problems.  Needs
             to have done at least 60 mortal situations and
             15 immortal situations to attain this level.
             [Gain: "animate", "balzur", "immlock", "log", "site",
             "snoop", "unanimate"]

arch         Min Greater God.  Master inquisitor.  Can find facts
             and adjudicate any situation.  Must have solved
             at least 150 problems, mortal or immortal.
             [Gain: "Investigate"]

Back to index.

job-investor

A rank in this job is used to recognize people who have made financial contributions to the mud. HOWEVER, this mud is completely free and Arcane Ages does NOT solicit donations.

Rank                    Has Donated
aspirer                 $0
neophyte                $0
practitioner            $50
adept                   $100
high                    $250
sky                     $500
arch                    $1000+
See also: job-levels | jobs

Back to index.

job-javascripter

JavaScripters are builders who know how to program using the JavaScript language. The JavaScripter job is considered an extension to the behaviorist role and JavaScripters should therefore be of at least the same level in the behaviorist job - or at least the next level when seeking a promotion. Javascripters should be able to assist behaviorists and other immortals with the more complex side of scripting.

aspirer       Artificer.  Need to have access to all behaviors to apply.
 
neophyte      Learning JavaScript.
 
practitioner  This level JavaScripter knows how to use JavaScript in its
              most basic form.
 
adept         This level JavaScripter is competent with JavaScript and is
              able to use it in behavior triggers and basic statements.
              [Gain: "evaluate", "#"]
 
high          This level JavaScripter has a broad knowledge of JavaScript
              and is familiar with the way it is integrated with mud behaviors.
              He or she can write functions and other basic data structures.
              [Gain: "abehavior", "aedit", "aproto"]
 
sky           This level JavaScripter has used JavaScript in a variety
              of ways with regards to creation.  He or she is aware of the
              limitations and possibilities that JavaScript entails with
              respect to the mud.
 
arch          This level JavaScripter knows almost everything about
              JavaScript and its limitations, its limitations and
              implementation with respect to the mud, and the integration of
              JavaScript with mud behaviors.  He or she has used this
              knowledge to implement very complex concepts and and in
              interesting and unique ways.  If an Arch can't do it then it
              probably cannot be done.  Must be an Arch Behaviorist.
 
See also: jobs

Back to index.

job-lawmaker

A lawmaker is responsible for determing the laws of the Arcane Ages world. They are responsible for ensuring that all laws provide fairness to all players and immortals alike and that any changes to mud rules are properly announced.

Aspirer       Has an interest in being a lawmaker.
 
Neophyte      Someone who is in training as a lawmaker.
 
Practitioner  A practitioner level lawmaker is one who assists in the law making
              process, they should have a good understanding of all laws in
              place as well as an understanding of how changes to laws will
              affect the overall player base.
 
Adept         Adept level lawmakers are permitted to make minor adjustments to
              existing mortal laws with final approval and announcment from a Sky+
              lawmaker.
 
High          High lawmakers are responsible for determining what effect law
              changes will have on the player base, they can advise Sky+
              lawmakers on law changes relating to immortal law and can make
              general changes to mortal laws with announcement by a Sky+ lawmaker.
 
Sky           Sky level lawmakers are responsible for making all law of the Arcane
              Ages world, applying both to Mortal and Immortals. They are responsible
              for ensuring that all law changes are properly announced so that all
              players are informed of any changes.
 
Arch          An arch level lawmaker is in charge of the law of the land, they are
              responsible for managing promotions within the lawmaker job and are
              responsible for making final changes to immortal law. 

Back to index.

job-levels

0.  uninvolved
1.  aspirer
2.  neophyte
3.  practitioner
4.  adept
5.  high
6.  sky
7.  arch
See also: job- | jobs | >name>

Back to index.

job-mchecker

Mcheckers are responsible for going through other builders's areas and ensuring that the mobiles of that area are up to par. Quality control, if you will. An mchecker has to ensure that spelling and grammar are correct in the monster's descriptive strings. An mchecker must make sure all behaviors, flags, and types are correct. An mchecker must make sure that the mobiles are balanced in accord to the guidelines unless there is an underlying exception to the guides. In short, an mchecker must make sure all aspects of a mobile are balanced and acceptable by mud standards.

Aspirer         Artificer Level.  Would be preferable to have some building
                experience, but not a requirement.

Neophyte        Taking the mcheck test.  Must pass test to qualify for
                next level.

Practitioner    Preliminary mchecker.  Can check mobs, but must get back
                to a sky+ mchecker to make sure what you are doing is OK.  Must
                check 25 mobs or 1 area before can go to full mchecker status.
                Must be a min level 3 behaviorist.

Adept           Full Mchecker.  Can mload other people's mobs.  Still need to 
                send final check to a sky+ mchecker for final approval.
                [GAIN: ability to load other mfiles]

High            No longer need approval of a higher mchecker.  Must have done
                a full approved mcheck of at 5 areas with a minimum of 250 mobs
                to attain this level.  Must also be a Behaviorist Adept+.

Sky             Admin Mchecker. Supervisory position; assigns, approves lower 
                level mchecks.  Must have mchecked at least 10 areas with a 
                minimum of 550 mobs to attain this level. [GAIN: "mfold"]

Arch            High Admin Mchecker. Can create mcheck tests.  Must have 
                mchecked at least 15 areas with a minimum of 1200 mobs to 
                attain this level.  Must be a min level 5 behaviorist.

Back to index.

job-ochecker

Ocheckers are responsible for going through other builder's areas and ensuring that the objects of that area are up to par. Quality control, if you will. An ochecker has to ensure that spelling and grammar are correct in the object's descriptive strings. An ochecker must make sure all behaviors, flags, and types are correct. An ochecker must make sure that the objects are balanced in accord to the guidelines unless there is an underlying exception to the guides. In short, an ochecker must make sure all aspects of an object are balanced and acceptable by mud standards.

Aspirer         Artificer Level.  Would be preferable to have some building
                experience, but not a requirement.

Neophyte        Taking the ocheck test.  Must pass test to qualify for
                next level.

Practitioner    Preliminary ochecker.  Can check objs, but must get back
                to a sky+ ochecker to make sure what you are
                doing is OK.  Must check 25 objs or one area
                before can go to full ochecker status.  Must also be
                Behaviorist.

Adept           Full Ochecker.  Can oload other people's objs.  Still
                need to send final check to a sky+ ochecker for final approval.
                [GAIN: ability to load other ofiles]

High            No longer need approval of a higher ochecker.  Must have done
                a full approved ocheck of at least 5 areas with a minimum of
                250 objs to attain this level.  
                Must also be Behaviorist Adept+.

Sky             Admin Ochecker. Supervisory position; assigns, approves of 
                lower level ochecks.  Must have ochecked at least 10 areas with
                a minimum of 550 objs to attain this level. [GAIN: "ofold"]

Arch            High Admin Ochecker. Can create ocheck tests.  Must have 
                ochecked at least 15 areas with a minimum of 1200 objs to 
                attain this level.

Back to index.

job-oracle

Oracle - The oracle is responsible for maintaining the jobs on the mud. They keep current the jobs of immortals and ensure promotions are handed out and that work is being accomplished within the jobs. The oracle is the ultimate source in job administration and his/her decision is final. The oracle decision is come to by vote from the oracle mailing list.
Neophyte        Job Training Level.  At this level the oracle is exposed
                to the many jobs on the mud and what their purpose is.  Upon
                passing a test of job knowledge and approval of mentoring
                oracle, the oracle can then move on to practitioner.

Practitioner    Oracle Training Level.  At practitioner the oracle is
                responsible for keeping up with the jobs on the mud and seeing
                where promotions are needed.  Their mentoring oracle is 
                responsible for teaching them the requirements for promotions
                on the jobs.  Upon completion of the job promotions test and
                approval from mentoring oracle the oracle can then move on to
                adept.

Adept           Oracle Level.  An adept oracle is the immortal that needs to be
                contacted for promotions.  Requests for promotion are given to
                adept's and a time is scheduled when the adept can get with the
                requesting immortal to check that they've met the requirements
                for the promotion.  Upon ensuring the req's have been met it is
                sent on to a high for approval.  After submitting 20 requests 
                the oracle can then move on to high.  [GAIN: JEDIT, limited]
                (They can jedit any immortal divinity and below in addition
		to any immortals of lower level than themselves.)
		

High            Experienced Oracle Level.  A high is the voice of experience
                on the mud for the lower oracles.  They ensure the adept's are 
                enforcing the req's properly and are responsible for mentoring.
                Another of the high' s responsiblities is to check the submitted
                promotion requests.  Upon seeing that these meet standards they 
                are passed along to a sky for the actual promo.  After checking 
                10 requests and mentoring 1 oracle up to adept level the high 
                is able to move on to sky.

Sky             Admin Level Oracle.  The sky level oracle is responsible for
                maintaining the promotion requirements and handling disputes 
                over promotions and requirements.  Also the sky oracle is the 
                oracle responsible for actually promoting the immortals.  Upon 
                at least 1 year experience as an oracle and a 2/3 vote of 
                oracle list the oracle can gain arch. [GAIN: JEDIT, ANIMATE,
                UNANIMATE]

Arch            High Admin Oracle.  Is responsible for the same duties as the
                sky oracle only the arch oracle is a member of the oracle
                heads commitee which votes on any changes to the jobs
                duties, promo requirements, guidelines, etc.

Back to index.

job-postmaster

The postmaster is responsible for responding to mail sent to the mud's Internet email account.

Back to index.

job-questmaster

Questmaster - this job is for those who like to create and run quests for mortals. Questmasters are responsible for doing restring quests, quests for special items or Christmas presents, and self-running automated quests.

Aspirer        Just apply.

Neophyte       Learning questmaster. Can run pre-approved quests or other
               quests with approval. Can submit automated quest ideas and if 
               approved put them into action. 

Practitioner   Need to have run at least 15 simple quests to attain this
               level.  Can run pre-approved quests and can implement 
               automated quests which have been approved by a High+.

Adept          After 40 approved quests, and implementing 1 automated
               quest, can attain this level. Of these 41 quests, atleast 10
               must be harder than a simple restring or pre-approved quest 
               (meaning, the questmaster must have written the quest themselves)

High           After 75 quests, and implementing 5 automated quests can 
               attain this level.  Upon achieving this level, you are responsible
               for approving quests for lower questmasters, and also mentoring
               new questmasters. 

Sky            To achieve this level, you need to have written and implemented
               atleast 25 automated quests. You must also have mentored one new 
               questmaster up to adept level. A sky is expected to be very familiar 
               in all restring and quest reward policies.

Arch           There is currently no specific requirements for this level, 
               other than lots of hard work. It is completely to the discretion      
               of the higher oracles and admin gods.

Back to index.

job-rchecker

Rchecker - an administrator whose job it is to go through other builders's areas and make sure these areas are up to par. Quality control, if you will. An rchecker has to ensure that spelling and grammar are correct. An rchecker must make sure all behaviors, exits, and room types are correct. In short, an rchecker must make sure all aspects of a room are acceptable by mud standards.

Rcheckers should conform to the guidelines detailed on object 42398. Any changes to guidelines should be updated to this object, make sure you check for newer versions prior to each check.

Aspirer         Creator Level.  Would be preferable to have some building
                experience, but not a requirement.

Neophyte        Ready to take the rcheck test.  Upon passing the test and 
                completing 4 pre-checks of 20 rooms, or 100 rooms total, one 
                can qualify for the next level.

Practitioner    Preliminary rchecker.  Can check rooms, but must get back
                to a high+ rchecker to make sure what is being checked is OK.
                To qualify for the next level must have checked another 400 
                rooms or 500 rooms total.

Adept           Full Rchecker.  Can rload other people's rooms.  Still
                need to send final check to a high+ rchecker for final 
                approval.  Must also be a Behaviorist.  
                [GAIN: ability to load other rfiles]

High            No longer need approval of a higher rchecker.  Must have
                done a full approved rcheck of a minimum of 700 rooms to attain
                this level.  Must also be a Behaviorist Adept.

Sky             Admin Rchecker. Supervisory position; assigns, approves lower 
                level rchecks.  Must have rchecked a minimum of 1250 rooms to 
                attain this level.  [GAIN: "rfold"]

Arch            High Admin Rchecker. Can create rcheck tests.  Must have 
                rchecked a minimum of 2500 rooms to attain this level.  Must 
                also be a min level 5 behaviorist.

Back to index.

job-redeemer

The redeemer is responsible for reimbursing players gold, money, experience or stats when something occurs resulting in them losing something illegitimately, eg a bug that results in a loss. Note, scrapping, DT's and rent death are not grounds for reimbursement unless determined by a sky+ inquistor to be an exceptional case.

Aspirer        Artificer.  Interested in becoming a redeemer.

Neophyte       The neophyte is learning the rules and procedures for reimbursing
               players. They can take details from mortals who have a claim and
               pass on to an adept+ redeemer for final evaluation. 

Practitioner   After evaluating 10 reimbursement claims the redeemer can attain
               practitioner level. Practitioners can do reimbursements for lower
               level players (under 100) but cannot reimburse random or tweaked
               items, cannot reimburse restrings and cannot reimburse items over
               limit. Must have reimbursement approved by a sky+ redeemer before
               proceeding.
               [GAIN: "limits", "odisplay", "oinvoke"]

Adept          Full Redeemer, can reimburse mortals of any level.  Can do
               reimbursement without approval for rent bugs.  Need approval for
               other type of reimbs. Cannot reimb over limit or tweak/random items
               without approval of a sky+ redeemer. Must have done 20 approved
               reimbursements and be Divinity+ level to attain adept redeemer
               level.

High           Must have done 40 approved reimbs to attain this level and
               must be Demigod or higher. Can do all types of reimbursements
               without approval.  Still need approval of a sky+ to reimb
               anything above limit.

Sky            Must have done at least 100 reimbs to attain this level and must be
               min lesser god level.  Can do any type of reimbursement without
               approval.

Arch           Must have done at least 250 reimbs, 35 of which must have
               been "non-standard" reimbs.  Must also be at least
               god level. Arch level redeemers are also responsible for
               determining rules relating to redemtions and must ensure
               that all redeemers are advised of any changes.

Back to index.

job-scribe

Scribes are responsible for making information available to players and/or immortals. This may include posting on the various boards, sending email or mudmail messages, or even posting on the internet newsgroups. In particular, scribes are responsible for taking meeting minutes.

aspirer      Immortal Level.  Just need to be interested.

neophyte     Taught about information by a high+.

practitioner Preliminary scribe.  Go through and mark message board
             notices for deletion.  Can go through and determine which
             help files need updating and what new content needs to be
             added. Any help file changes or messages for deletion
             should be sent to a high+ scribe. After revision of 20
             help files or addition of 10 new help files, can apply for
             next level.

adept        Full Scribe.  Can review news articles and maintain where
             needed, must have changes reviewed by a high+ scribe before
             modifying news articles and must have new news articles
             reviewed by a sky+ before posting. Must also be minimum
             Artificer level.
             [GAIN: "ncreate", "nedit"]

high         Divinity level.  Need to have some understanding of mud by
             this time. Can post "command" messages to mud boards
             without approval.  "Command" type messages are those like
             "thou shall" or "thou shall not" messages.  Basically,
             god orders which all players need to follow.  Such as,
             "you cannot charm so and so monster" or "all players with
             so and so object need to talk to a god."  Can post
             messages on internet news groups in response to mortal
             issues on approval of the sky+ scribe, can create new and
             update existing help files where needed, can post any new
             news articles and can post motd notices with approval of
             a sky+ scribe.
             [GAIN: "hcreate", "hedit", "hstat", "proclaim"]

sky          Can post messages to internet newsgroups if needed.  Must be
             min level 4 Herald and min level lesser god to achieve this
             job level. Does not need approval for any postings or updates
             to help files, news articles or motd's.

arch         Master of communications.  This level's requirements are
             subjective and will be on a case-by-case basis.

Back to index.

job-skillsmith

Skillsmith - a skillsmith is one who builds classes, skills, spells, and so on. They also take care of the general balance of the game through modifying existing classes and races.

Initiate        One who wishes to become a skillsmith.

Neophyte        A skillsmith in training, immortals who desire to assist in the
                class and race developing process will attain this level whilst
                they are being trained by a sky+ skillsmith on proper procedures
                and techniques.

Practitioner    A skillsmith who has completed their training and is assisting
                in the actual development of classes.

Adept           When ten spells or skills have been developed to completion,
                a skillsmith may be promoted to adept level.
                [GAIN: "cledit", "hcreate", "hedit", "hstat", "msgedit", "predit"]

High            After developing to completion fifty proficiencies, a skillsmith
                may be promoted to high level. Must also be a high+ javascripter
                and an Adept+ behaviorist to attain this level. 
                [GAIN: "clproto", "msgproto", "prproto"]

Sky             A skilled developer of proficiencies, the sky skillsmith can move
                on to the complete creation of classes and races. 
                [GAIN: "clcreate", "msgcreate", "prcreate"]

Arch            One who has completed full development and implementation of one
                class can attain Arch level in the skillsmith job.

Back to index.

job-testor

A testor is someone who performs tests on the code and trys to find bugs in any form of the game(code,objs,behaviors).

Aspirer      Anyone can apply.

Neophyte     After showing interest in testing and/or submitting a couple 
             bugs or typos, one may achieve this level.

Practicioner Find and report 15 bugs or typos to achieve this level. Knowing
             when to spot a bug is a absolute MUST.

Adept        Find and report 30 bugs or typos to achieve this level.

High         Find and report 50 bugs or typos to achieve this level. Also
             responsible for showing the newbie testors the ropes as far
             as bug spotting goes.

Sky          Find and report 100 bugs or typos to achieve this level.

Arch         This level is reserved for those who have found so many typos
             and/or bugs, that half of the zones in Arcane Ages had to be
             redone.  This person knows how to spot a bug and will always
             report it when they see it.

Back to index.

job-webmaster

A Webmaster is someone who is actively involved in other media related to Arcane Ages, such as the development of world wide web pages that are both interesting and helpful to current and prospective players. The webmaster should be skilled in the use of media such as HTML, Java, CGI and graphic development.

Aspirer       Has an interest in learning and wants a new challenge.
 
Neophyte      Simple skills in something that are helpful such as HTML.
 
Practitioner  Able to come up with solutions to problems and be a team member.
 
Adept         Adept level webmasters are responsible for the maintenance
              and updating of information on existing areas of the Arcane Ages
              website.
 
High          High level webmasters are responsible for the development of
              new functionality to the website.
 
Sky           Sky level webmasters are able to instigate overhauls or revamping
              of the Arcane Ages website. They should be skilled in all facets
              of web development and should have sufficient organisational
              skills to enable them to effectively manage a team in large scale
              web projects.
 
Arch          An arch level webmaster is responsible for overseeing all activity
              on the arcane ages website. An arch is responsible for evaluating
              webmasters performance and his/her approval MUST be obtained before
              a webmaster is granted Adept level or higher.
 

Back to index.

job-zchecker

Zchecker - an administrator whose job it is to go through other builders's areas and make sure that the zoning is correct. Quality control, if you will. A zchecker needs to make sure that the doors are set correctly, the mobs and objs are zoned correctly, and the limits are correct. Furthermore, a Zchecker needs to ensure that abstract things like weather, repop parameters, and cohesiveness with other areas are correctly done.

aspirer       Must be Artificer.  Would be preferable to have some building
           experience, but not a requirement.

neophyte      Taking the zcheck test.  Must pass test to qualify for
           next level.

practitioner  Preliminary zchecker.  Can check areas, but must get back
           to a sky+ zchecker to make sure what you are
           doing is OK.  Must check one full area before can go to
           full zchecker status.

adept         Full Zchecker.  Can zload other people's areas.  Still
           need to send final check to a sky+ zchecker
           for final approval.
           [GAIN: ability to load other zfiles]

high          No longer need approval of a higher zchecker.  Must have
           completed by fully approved zchecks of 5 areas before
           attaining this level.  Still need approval for "non-
           standard" zchecks.

sky           Can approve lower level zchecks.  Must have completed 10
           zchecks before attaining this level.
           [GAIN: "zcreate", "zdestroy", "zfold"]

arch          Must be Greater God.  Can create zcheck tests.  Must have
           zchecked at least 15 areas *AND* must be a sky+
           Architect to attain this level.

Back to index.

job-zonesmith

Zone Builder - a builder is one who builds areas. As one gets more and more experience as a builder, get higher and higher level. Zone Builder deals directly with zones. The levels are based on folded zones and not private ones.

Initiate - First Area Level
Neonate     100 rooms
Adept       250 rooms
High        500 rooms
Sky        1000 rooms
Arch       2500 rooms
See also: jobs

Back to index.

jobs

Syntax:jobs
jobs <job name> [showinactive]
jobs <player name>
jobs apply|resign <job>
jobs [in]active <job>

The jobs command is used to find information about what jobs are available on the mud and who is taking care of which job.

The jobs command with no options displays the different jobs on the mud.

Typically, only immortals perform jobs on behalf of the mud. However, if you have a strong desire to perform one of the jobs, specify your interest with the apply variant. The active variant will mark you as being active in the specified job while the inactive option will indicate that you are taking a break from performing that job's duties. If you would like to quit a job altogether, use the resign option.

Examples:

jobs apply builder      Apply for a building job.
jobs                    Show all of the jobs on the mud.
jobs scribe             Show all of the scribes.
jobs scribe showactive  Show all active and inactive scribes.
jobs joe                Show all of the jobs joe has.
jobs active ochecker    Become active in ochecking.
See also: job- | job-levels | >name> | who

Back to index.

jpg

See javascript-performance-guide

jpg-act

Don't use the JavaScript Character act() method if there are alternatives. For example:

say( 'hi' );
is much faster (and easier to read) than:
act( 'say hi' );
Similarly,
talk( actor, 'hello' );
is faster than:
act( 'talk', actor, 'hello' );
and so on. If you find you need to heavily use act() because no other builtins are available, please put in a request to the administrators.

act() is slower than other built-ins because it actually has to run through the command parser. act() has to look up the command, check access to it, check positions, check to see if it's been disabled, and so on. Using the built-ins like "say()" bypasses all this processing.

See also: jpg

Back to index.

jpg-boot-event

If you need to create a bunch of arrays, strings, or objects it is usually much faster to create them inside the boot event and then just reuse them from the other behaviors. For example:

rb room javascript enterroom .
actions = new Array( 'bow', 'wave', 'curtsey' );
act( actions.random(), actor );
/s
is insanely slower than (it creates a new array everytime someone enters the room! very bad!):
rb room javascript boot .
actions = new Array( 'bow', 'wave', 'curtsey' );
/s
rb room javascript enterroom .
act( actions.random(), actor );
/s
Try to do all your setup and preprocessing work in the boot event.

While working with your code, you can use the "rspawn boot" command to trigger a boot event. This allows you to test your boot code without having to wait for the mud to reboot. You can also define multiple boot events if all your code won't fit into one.

To help encourage people to do as much of their processing as possible in the boot event the mud uses a 10,000 execution limit on the boot event rather than the usual 1,000 execution limit on other events.

See also: jpg

Back to index.

jpg-builtins

There are a lot of really powerful built-in methods in JavaScript which should be used when possible instead of trying to reproduce what they do in JavaScript. Usually these builtin methods provide access to the same routines that the mud itself uses.

For example, while it would be possible to write an autoformatter entirely in JavaScript, using the "autoformat()" method on JavaScript Strings is orders of magnitude faster because the builtin autoformat() is highly optimized and written in C++.

Other examples of powerful built-in functions are "findPath()", "find()", and so on.

If you find yourself needing to something very complex and you feel that a new builtin could be added to handle it better `bplease request a new builtin to be made!`n We would much rather introduce new builtins than force builders to have to jump through a lot of hoops to manually implement a really complicated algorithm.

See also: jpg

Back to index.

jpg-cache

Don't repeatedly recompute the same information over and over again. Cache, or save, your computed values so you can reuse them. For example,

x = actor.hit / actor.maxHit * (actor.wis - subject.wis) * 100;
if ( actor.hit / actor.maxHit * (actor.wis - subject.wis) > 0.5 )
  x /= 2;
is much slower than:
y = actor.hit / actor.maxHit * (actor.wis - subject.wis);
x = y * 100;
if ( y > 0.5 )
  x /= 2;
It's also easier to read. The second version is much faster because it stores the computation in a variable rather than recomputing the value from scratch everytime it is needed. Another common thing to cache is object references. For example:
if (   actor.inRoom.sector == 'inside'
    || actor.inRoom.sector == 'underground'
    || actor.inRoom.hasFlag( 'inside' ) )
  actor.inRoom.msg( "You're out of the cold now." );
is slower than:
r = actor.inRoom;
if ( r.sector == 'inside' || r.sector == 'underground' || r.hasFlag( 'inside' ) )
  r.msg( "You're out of the cold now." );
Here the value "actor.inRoom" was used repeatedly so the value was cached.

See also: jpg

Back to index.

jpg-names-and-comments

Arcane Ages's JavaScript engine compiles JavaScript into executable bytecode. What this means is that using long variable names, writing comments, putting in blank lines, and so on, is perfectly fine and will not slow down your code at all. Also, using parentheses does not slow down performance either.

For example:

a=b+c*d/e;
is not any faster than:
transylvania =
  dracula // dracula has no disloyalty to divide out
  + ((vampireCount * vampire) / disloyalty);
`bGOOD`n Writing descriptive variable names
`bGOOD`n Writing comments for tricky ideas

See also: jpg

Back to index.

jpg-please-help

If you think you know of some other common mistakes or tips or tricks for writing better JavaScript code, please submit your ideas so that we can make this guide as instructive and useful as possible.

Also if you find portions of this guide confusing please let us know that too.

See also: jpg

Back to index.

jpg-self-is-implicit

The "self." is implicit when referring to properties and is unneeded. For example:

self.say( 'Hi!' );
is a lot slower than:
say( 'Hi!' );
`bGOOD`n Don't use "self." when you don't need to.

See also: jpg

Back to index.

jpg-string-concatenation

It is very important you minimize the number of times you use the "+" concatenation operator to create strings. It is okay to use it when you really need to, but you can almost always dramatically reduce the number of times you use it using various techniques.

`bGOOD`n Use caret-substitution instead of String concatenation

For example,

inRoom.msg( "^n looks at ^2n.", self, actor );

is MUCH faster than:

inRoom.msg( self + " looks at " + actor + "." );

`bGOOD`n Use the String format method f() instead of String concatenation

Also, using the JavaScript String format method f() is much faster than string concatenation in most cases. For example:

'HP:%d/%d'.f( actor.hit, actor.maxHit )

is much better than:

'HP:' + actor.hit + '/' + actor.maxHit

`bGOOD`n Build strings in advance and then reuse them.

If you do need to use the + concatenation operator try to do in advance and cache the value if possible. See jpg-cache.

`bGOOD`n  Use multiple arguments instead of + concatenation operator
      when possible.
Many functions, like act() allow multiple arguments to be passed to them. For example,

act( 'wave', actor );

is equivalent to (but is much faster than):

act( 'wave ' + actor );

Try to think of the string concatenation + operator as a really rich dessert. If the mud eats too much of it it'll become unhealthy. It is okay to use it in moderation.

If you find a situation where you think you need to use it heavily please see the administrators. Possibly we can add a new built-in function to make accomplishing what you're trying to easier.

Note that using the + operator to add numbers, like "5 + 3" is perfectly fine and is not a problem at all. It is only using + to add strings which is problematic.

See also: jpg | js-string-f

Back to index.

js-array

JavaScript supports two kinds of arrays. Associative and numerical arrays. Numerical arrays are represented by the JavaScript Array "class". Arcane Ages's JavaScript supports the following standard JavaScript Array properties:

length             This is the length of the array.  This value is
                   automatically updated.  This value is not just
                   read-only.  You can set it to a value to truncate
                   the size of array to be something smaller.  In
                   fact, an easy trick to empty an entire array is to
                   do:  "myArray.length = 0;"
Arcane Ages's JavaScript also supports the following standard Array methods:
concat( args )     This returns a new Array which contains of a copy
                   of this array plus all the arguments passed to this
                   method concatenated to the end of it.
clone()            This returns a new copy of this array.
join( sep )        This returns a string consisting of all of the elements
                   separated by the "sep" string.  If no "sep" string is
                   specified a value of "," will be used.
reverse( sep )     This method reverses the elements in the array.  For
                   example the array "a, b, c, d" would become
                   "d, c, b, a".
pop()              This method removes and returns the element at the end
                   of this array.  If the array was already empty, this
                   method returns undefined.
push( args )       This method adds all the arguments passed to this method
                   to the end of the array.  The new length of the array
                   is then returned by this function.
shift()            Like pop() except that this removes and returns the
                   element at the beginning of the array.
slice( b [, e ] )  This returns a subset of the array starting with
                   position b and ending at position e-1.  If e is not
                   specified then e is assumed to be equal to the array
                   length.  Both b and e can also be negative numbers,
                   indicating that they start from the end of the array
                   rather than the beginning.  For example,
                   "arr.slice( -2 )" will return the last two elements
                   of the array.
splice()           See js-array-splice for more information.
sort( sortFunc )   This method sorts the array according to the passed
                   in sort function.  See js-array-sort.
unshift( args )    Like push() except that this inserts the arguments
                   at the beginning of the array.
Arcane Ages's JavaScript also supports the following Array extensions:
clear()            This empties the array.  "arr.clear()" is equivalent to
                   "arr.length = 0;"
compact()          This compacts the array, eliminating empty slots.
                   The number of slots saved is returned.
has()              This returns true if the specified element is in the
                   array.  This method supports cardinalities -- see
                   js-cardinality.
random()           This returns a random element from the array.  The
                   array itself is not modified.
subtract( args )   All elements that equal any of the args are removed
                   from the array.  The number of slots saved is returned.
visit( f )         Applies the passed in function to all of the elements
                   in the array.  See js-visit for more information.
unique()           This works like compact() except that duplicate values
                   are also removed.
union( args )      This works like push() except that args are only added
                   if they aren't already in the array.  The number
                   of slots added is returned.

See js-array-examples for examples on how to use numerical arrays.

See also: js-array-examples | js-array-sort | js-array-splice | js-classes

Back to index.

js-array-examples

The following contains some sample usage of arrays:

var ar = new Array( 'cat', 'dog', 'horse' );
ar.slice( 1 ); // returns new [ 'dog', 'horse' ] array
ar.push( 'fish' ); // ar is now [ 'cat', 'dog', 'horse', 'fish' ]
ar.shift(); // returns 'cat', ar is now [ 'dog', 'horse', 'fish' ]
ar.unshift( 'mouse' ); // ar is now [ 'mouse', 'dog', 'horse', 'fish' ]
ar.pop(); // returns 'fish', ar is now [ 'mouse', 'dog', 'horse' ]
ar.sort(); // ar is now [ 'dog', 'horse', 'mouse' ]
ar.reverse(); // ar is now [ 'mouse', 'horse', 'dog' ]
ar[4] = 'boat'; // ar is now [ 'mouse', 'horse', null, null, 'boat' ]
delete ar[0]; // ar is now [ null, 'horse', null, null, 'boat' ]
ar.compact(); // ar is now [ 'horse', 'boat' ]
ar.has( 'horse' ); // returns true
ar.has( 'all', 'horse', 'bee' ); // returns false
ar.has( 'any', 'dog', 'bee', 'boat' ); // returns true
ar.union( 'bee', 'horse' ); // ar is now [ 'horse', 'boat', 'bee' ]
ar.subtract( 'boat', 'horse' ); // ar is now [ 'bee' ]
ar.shift( 'dog' ); // ar is now [ 'dog', 'bee' ]
ar.push( 'dog', 'bee' ); // ar is now [ 'dog', 'bee', 'dog', 'bee' ]
ar.unique(); // ar is now [ 'dog', 'bee' ];
ar.random(); // returns either 'dog' or 'bee' randomly
ar.length = 1; // ar is [ 'dog' ];
ar.length = 0; // ar is now empty
See also: js-array | js-array-sort | js-classes

Back to index.

js-array-sort

The Array.sort() method either takes an optional comparison function as an argument. The comparison function takes two values (left and right), and the sorting function should return whether or not left comes before or after right in your sort. If the comparison function returns < 0, then it means that left comes before right. If the comparison function returns > 0, then it means that right comes before left. If the comparison function returns 0, then it means left and right are the same and it doesn't matter which order they appear in.

If the sort function isn't supplied, a default sort will be done. The following room behavior code provides an example:

// first build up an array of everyone in my group
var myArray = new Array();
actor.visitGroup( myArray );

// set up how we want to display the group members
function displayHit( groupie ) {
  self.msg( actor.shortDesc + "'s group has "
    + groupie + " who has " + groupie.hit + " hitpoints." );
}

// the following sorts the people in your group alphabetically by name
myArray.sort();
myArray.visit( displayHit );

// the following sorts the people in your group according to how many
// hitpoints they have
function sortByHitPoints( left, right ) {
  return left.hit - right.hit;
}
myArray.sort( sortByHitPoints );
myArray.visit( displayHit );

See also: js-array | js-array-examples | js-array-splice | js-classes

Back to index.

js-cardinality

Many methods support a "cardinality" mode. All of these methods work similarly. They either take one argument which is the argument to match for or they take a "cardinality mode" and then a list of arguments to match on. The cardinality modes are:

any          At least one of the arguments must be present.
all          All of the arguments must be present.
one          One and only one of the arguments must be present.
none         None of the arguments must be present.
The following returns true if the actor has object #23122.
actor.has( 23122 )
This returns true if the actor has either #23122 or #23142.
actor.has( 'any', 23122, 23142 )
This returns true if the actor has #23122, #23142, AND #23144 equipped.
actor.hasEq( 'all', 23122, 23142, 23144 )
This returns true if the actor has either the Cleric or Mage class but NOT both.
actor.hasClass( 'one', 'cl', 'ma' )
This returns true if the room has neither the 'arena' or 'battlefield' flags.
self.hasFlag( 'none', 'arena', 'battlefield' )
Cardinalities also work with arrays. See js-cardinality-array for an example.

See also: js-cardinality-array | js-char | js-obj | js-room

Back to index.

js-cardinality-array

You can also pass an array to any of the methods which work with cardinalities. For example:

myVnums = new Array( 4000, 4012, 4020, 4021 );
// the following returns true if the actor has any of the four vnums
actor.has( 'any', myVnums );
// this returns true if the actor has all of the specified vnums and 4025
actor.has( 'all', myVnums, 4025 );
See also: js-cardinality

Back to index.

js-char-editor

The syntax for the Char editor method is:

<character>.editor( <instructions>, <title>, <object>, <propertyName> )
The editor method on characters allows you to invoke the Arcane Ages editor on a particular string property for a given object. The `binstructions`n is what will be displayed as the instructions when they enter the editor. The `btitle`n property is what will be displayed as the title for the editor window when using windowed clients like the Arcane Ages Java client. `bobject`n must resolve to some valid JavaScript object and `bpropertyName`n is the name of the property to use on that object. If the property doesn't already exist it will be added.

The following bit of JavaScript puts the actor into an editor to edit the subject's long description.

actor.editor(
   "Enter the Long Description for " + subject.shortDesc,
   "Editing " + subject.shortDesc + "'s Long Description",
   subject, "longDesc" );

See also: js-char

Back to index.

js-char-invoke

The syntax for the Char invoke method is:

Char.invoke( <mobile vnum>, <target>, [ <option0>, ..., <optionN> ] )
Where `boptions`n are:
`b'charm'`n           Specify that the mobile be charmed to the target
                  (the target must be a character for this to work).
`b'loyal'`n           Specify that the mobile be naturally charmed to
                  the target (i.e. charm cannot be dispelled;
                  the target must be a character for this to work).
`b'spawn'`n           Mark the mobile as being spawned and and send it
                  it a "spawned" event.
`b'pet'`n             Only summon the mobile if the target has enough
                  pet levels to take it.
`b'limit', <limit>`n  Only invokes the mobile if there are fewer than
                  `blimit`n mobiles loaded.
The invoke method on characters allows you to create a new mobile. The "target" can either be a room number or a mobile, object, or room object.

The following bit of JavaScript invokes mobile 30000 and charms it to the actor but only if there are less than 3 in the game currently.

Char.invoke( 30000, actor, 'charm', 'limit', 3 );

See also: js-char

Back to index.

js-char-mirror

The Char mirror() method is used to make a character look like another character. The character's short, medium, and long descriptions are updated to look like the target. All descriptions are saved and can be restored if mirror() is called with no target. The syntax is:

`b<char>.mirror( <target> )`n
`b<char>.mirror()`n            (returns to normal)
If the character is already mirroring and another call to mirror() is made, mirror() with no target will still restore to the original descriptions. For example:
`eself.mirror( actor );`n      (self now looks like actor)
`eself.mirror();`n             (self looks normal again)
See also: js-char

Back to index.

js-char-rescue

The Char rescue() method is used to pull attackers off of a victim and on to the character that rescue() is called on. The syntax is:

`b<rescuer>.rescue( <damsel>, <option0>, ..., <optionN> )`n
Where `brescuer`n is the character doing the rescuing, `bdamsel`n is the character to be rescued, and `boptions`n are the following:
`b'attmsg', <msg>`n   Message to attacker on successful rescue.
`b'dammsg', <msg>`n   Message to damsel on successful rescue.
`b'resmsg', <msg>`n   Message to rescuer on successful rescue.
`b'roommsg', <msg>`n  Message to room on successful rescue.
`b'odds', <odds>`n     The percent chance of success the rescue attempt
                   should have.  The success is modified by the difference
                   in power levels of the rescuer and the attacker.
`b'multiple'`n         Whether multiple attackers can be pulled off.  The
                   default is to attempt to pull off just a single attacker.
All of the rescue messages can take caret-substitution with #1 being the rescuer, #2 the damsel, and #3 the attacker.

By default rescue() uses a standard set of rescue messages if you do not specify any messages of your own. You can also specify `bnull`n for a message if you wish that message to be silent. For example the following would give self a 50% chance of pulling one attacker off of its master:

`eself.rescue( master, 'odds', 50,`n
             `e'attmsg', "^n shimmers a little and ^2n suddenly looks like ^n!",`n
             `e'roommsg', "^3n isn't sure if ^3e is fighting ^n or ^2n!" );`n
See also: js-char

Back to index.

js-char-swarm

The Char swarm() method is used to swarm mobiles after the character. The syntax is:

<victim>.swarm( [ 'zone', ] <power levels>, <percent>, <vnum1>, ..., <vnumN> );
Where victim is who should be swarmed, power levels is the number of power levels of mobiles to swarm after the victim, and percent is the percentage chance between 1 and 100 that any individually mobile will be sent swarming. If you specify the 'zone' option, only mobiles in the same zone as the victim will be swarmed after them. The list of vnums is the vnums for the mobiles which should be sent after the victim.

For example, the following will send up to 50 power levels of mobiles

Back to index.

js-mud-charges

The Mud charges methods are used to simulate items or spells or feats which can only be used periodically. For example, Reincarnation can only be used once every mud year.

There are three methods, and all take the same options:

Mud.useCharge( <object>, <prefix>, <options> ... )
Mud.showCharges( <object>, <prefix>, <options ... )
Mud.hasCharge( <object>, <prefix>, <options ... )
where options consist of the following:
'count', <count>      The item or feat can only be used `bcount`n number of
                      times.
'timer', <seconds>    The item or feat's charges are recharged every
                      `bseconds`n seconds.
Additional, the 'status charges' command will cause the `bcharges`n event to be sent to all auras and items on a character. If you implement an aura or item with a charged ability, you should handle the `bcharges`n event and report the number of charges left using Mud.showCharges().

For example, if you wanted to create an Reincarnation ability that can only be used once per mud month, you could do:

abeh reincarnation javascript charges .
actor.msg( 'Reincarnation: '
  + Mud.showCharges( actor.db, 'reincarnation', 'timer', 1071000 ) );
/s
abeh reincarnation javascript deathblow .
if ( !Mud.useCharge( actor.db, 'reincarnation', 'timer', 1071000 ) )
  return;

// perform reincarnation code here
/s
There are 1071000 seconds for every mud year. See pulse for more information on timing and intervals on the mud. Mud.useCharge() returns true and uses up a charge if there is a charge available. If there are no charges left, Mud.useCharge() will return false. In the above example, the Reincarnation code is only run if the there is a charge left.

The `bobject`n and `bprefix`n options tell the mud where to store information about what charges are left. In this example, the time left will be stored in the actor's database object under the name "reincarnationX" where "X" will be replaced with either "Timer" or "Count" depending upon what kind of charged timer you are using. You do not normally need to mess with these properties.

If you specify both a count and a timer, then the methods will allow count charges every timer interval. For example:

..., 'timer', 1800, 'count', 3
Will permit 3 charges per mud day (there are 1800 seconds in a mud day).

See also: js-mud | pulse

Back to index.

js-mud-counter

The Mud.counter() method can be used to perform a simple countdown of a variable on a player. The syntax is:

`bMud.counter( <obj>, <name>, <count> )`n
Where `bobj`n is the object to store the count on, `bname`n is the name of the variable to store the count under, and `bcount`n is the initial count to use.

This method returns the number of counts left. When it returns 0 it means the countdown as completed.

For example:

`evar left = Mud.counter( actor.db, "_beastsSlainForUzzkaal", 20 );`n
`eif ( !left )`n
`e  talk( actor, 'Congratulations!   You have slain the beasts!' );`n
`eelse`n
`e  talk( actor, 'Beasts remaining to be slain:  ' + left );`n
See also: js-mud

Back to index.

js-obj-invoke-examples

(also JS-RANDOM-ITEM-EXAMPLE)

The following bit of JavaScript invokes object 23142, equips it to the actor, and then adds a random +1d2 to a random ability score aura to it.

var obj = Obj.invoke( 23142, actor, 'equip' );
if ( !types ) types = new Array(
   'str', 'int', 'wis', 'dex', 'con', 'cha' );
obj.addAura( 'stat', types[ Mud.dice( 6 )-1 ], Mud.dice( 2 ) );
The following loads an item and equips it as long as there isn't already one in the game (including offline players inventories).
var obj = Obj.invoke( 30000, actor, 'equip', 'limit', 'saved', 1 );
The following works like the previous code except for the item is not equipped:
var obj = Obj.invoke( 30000, actor, 'limit', 'saved', 1 );
See also: js-obj | js-progressive-load | js-tweaking

Back to index.

js-performance-guide

See javascript-performance-guide

js-purge

See javascript-purge

js-random-char

The randomChar() method can be used to pick a character at random in the current room.

inRoom.randomChar()
The randomChar() method can also be used to pick a character at random who is within N rooms from the current room. For example:
inRoom.randomChar( 30 )
Would return a character picked at random from along all the chars that are no further than 30 rooms way. You can also specify a predicate function to narrow the list of characters that will be considered as a candidate:
function evilBigMobs( o ) {
  o.isNPC() && o.isEvil() && o.maxLevel() >= 100;
}
inRoom.randomChar( 20, evilBigMobs );
The previous example picks an evil, level 100 or higher NPC at random that is no further than 20 rooms away.

Do not use big predicate searches frequently as this can be very computationally expensive for the mud. Occassional long searches (like for the initiation of a random quest or for the rare spell) are fine. Short searches, like only 3-4 rooms away are also fine.

See also: js-random-room | js-room

Back to index.

js-random-item-example

See js-obj-invoke-examples

js-random-room

The randomRoom() method can be used to find a random room within n rooms from the current room. For example:

inRoom.randomRoom( 40 )
would return a room picked at random from all the rooms that are no more than 40 rooms away from the current room. Try not to big searches frequently as this can be time consuming.

See also: js-random-char | js-room

Back to index.

js-room-visit

Some of the room visit*() methods can also take a distance parameter. This specifies that not only should things in the current room be visited, but also things up to "distance" rooms away. For example:

function fly( o ) {
  o.msg( "A cool, magical breeze wafts lightly through the forest..." );
  o.addAura( 'fly', Mud.dice( 1, 8 ) );
}
function good( o ) {
  o.isGood();
}
inRoom.visitChars( 3, fly, good );
The previous example would add the fly aura to all good characters in the current room and any room that is up to 3 rooms away.

visitPlayers() works similarly but only affects players. When you only want to affect players, use visitPlayers() as it is far more efficient.

See also: js-room | js-visit

Back to index.

js-string-f

(also JS-STRING-PRINTF)

The JavaScript String f() ("f" is for "format") method adds C-style printf() formatting functionality to the String object. The f() method works similarly to the C-printf() functionality so if you are familiar with that, using this function should be straightforward.

The f() method supports the following format specifiers:

Strings: `b%[-][<field digits>][.<string digits>]s`n

Normally strings are right-justified, but specifying the `b-`n option will left-justify them. `bfield digits`n specifies how wide the displayed field should be. `bstring digits`n specifies the maximum number of characters to use from the string.

Decimals: `b%[+][-][0][<field digits>][.<radix digits>]f`n

Normally a sign is displayed before numbers only if the number is negative but if the `b+`n option is given, a plus sign will be shown in front of positive numbers as well. Normally numbers are left-justified, but specifying the `b-`n option will right-justify them. Specifying the `b0`n option will pad numbers with zeroes instead of spaces. `bfield digits`n specifies how many characters wide the entire number field should take up. If this number is larger than the number of digits in the number, the number will be padded. `bradix digits`n specifies how many digits to show to the right of the decimal point.

Integers: `b%[+][-][0][<field digits>][.<integer digits>]d`n

Normally a sign is displayed before numbers only if the number is negative but if the `b+`n option is given, a plus sign will be shown in front of positive numbers as well. Normally numbers are left-justified, but specifying the `b-`n option will right-justify them. Specifying the `b0`n option will pad numbers with zeroes instead of spaces. `bfield digits`n specifies how wide the displayed field should be. `binteger digits`n specifies how many digits long the number should be. The number will be padded with zeroes if it is shorter than `binteger digits`n.

See js-string-f-examples for examples.

See also: js-string | js-string-f-examples

Back to index.

js-string-f-examples

(also JS-STRING-PRINTF-EXAMPLES)
EXAMPLE                         OUTPUT
'Cat in the %s'.f( 'Hat' )      'Cat in the Hat'
'%s'.f( 'cat' )                 'cat'
'%5s'.f( 'cat' )                '  cat'
'%-5s'.f( 'cat' )               'cat  '
'%-5.2s'.f( 'cat' )             'ca   '
'%.2s'.f( 'cat' )               'ca'
'%.4d'.f( 3 )                   '0003'
'%6.4d'.f( 3 )                  '0003  '
'%-6.4d'.f( 3 )                 '  0003'
'%.2f'.f( 3.723 )               '3.72'
'%+.2f'.f( 3.723 )              '+3.72'
'%+.2f'.f( -3.723 )             '-3.72'
'%+7.2f'.f( 3.723 )             '+3.72  '
'%+-7.2f'.f( 3.723 )            '  +3.72'
'%2d:%2d'.f( 9, 2 )             '9 :2 '
'%-2d:%-02d'.f( 9, 2 )          ' 9:02'
'%s %d, %d!'.f( 'May', 7, 523 ) 'May 3, 523!'
See also: js-string | js-string-f

Back to index.

js-string-printf

See js-string-f

js-string-printf-examples

See js-string-f-examples

junk

(also JUNKING)

Syntax:junk <item>

Junking an item will destroy it completely, removing it from the game. To junk an item it must be in your inventory and must be dropable. Junked items cannot be reclaimed so be very careful when using this command.

Back to index.

junking

See junk