#AREA Builder~ #AUTHORS Scandum~ #VERSION 3 #RANGES 100 100 100 100 #HELPS 95 OLC~ {138} OLC {128} (A) {058}Alias List {128} (B) {058}Guidelines {128} (C) {058}Builder Agreements {128} (D) {058}Grammar {128} (E) {058}Builder Documentation {128} (-) {058}Return {a}OLCALIAS {b}OLCGUIDELINES {c}OLCTERMS {d}GRAMMAR {e}BUILDER {-}BUILDER ~ 95 OLCALIAS~ {138} Alias List {300} alias oload load obj % alias mload load mob % alias check edit area check % alias redit edit room % alias medit edit mob % alias oedit edit obj % alias hedit edit help % alias aedit edit area % alias sedit edit shop % alias rdelete edit room delete % alias mdelete edit mob delete % alias odelete edit obj delete % alias hdelete edit help delete % alias rcreate edit room create % alias mcreate edit mob create % alias ocreate edit obj create % alias hcreate edit help create % alias mprog prog mob % alias oprog prog obj % alias mstat stat mob % alias ostat stat obj % alias rstat stat room % alias owhere show owhere % alias mwhere show mwhere % alias mlist show mlist % alias olist show olist % alias rlist show rlist % ~ 95 OLCGUIDELINES~ {118}*{178}Guidelines {118}*{078}Don't walk around in other builder's areas without their permission. {118}*{078}Don't be annoying {118}*{078}Don't write programs that might harm the test mud's performance or crash it. {118}*{078}Don't use mpcommands or programs to enhance your immortal powers {118}*{078}The area's theme must fit in with the general Medieval, Fantasy, Tolkien based theme of the mud. {118}*{078}Do not make references to the real world where possible, a few minor hints or jokes in that direction are acceptable. {118}*{078}Write descriptive descriptions, where the main focus should always be to describe the room, object or mobile in question, and not any actions taking place in it, or emotions that go through the reader. Try to avoid using lines like 'A horrifying orc is here.' since that'd be a human point of view, and someone playing an undead character would in theory be unable to be scared. We suggest descriptions ranging from 3 to 5 lines of text. If you do not enjoy writing them, it's okay to keep them plain and simple, maybe somewhat boring, as long as you use proper english and grammar. {118}*{078}The area should have at least 1 good quest. If possible multiple quests. Also it's suggested to add some fun stuff, to liven things up, but don't make the mobs overly spamming. {118}*{078}The area shouldn't be a leveling machine, this means that the mobs shouldn't be lined up waiting to be butchered. You must enter some sort of element of surprise, or another obstacle in it. This includes limitting the amount of mobiles. In general it's suggested to let your level mobs walk around. {118}*{178}In order for your area to make it to the real game, the above mentioned qualities will be measured against it. ~ 95 OLCTERMS~ {138} Builder Agreements {300} {118}* {078}When creating an area for Storms of Time (SoT) you agree that SoT has {118} {078}the sole and exclusive right to use and modify the area as we see fit. {118} {078} {118}* {078}You also understand and agree that, untill the time that the game no {118} {078}longer exists, SoT is unable to give copies of area files to their {118} {078}creators. ~ 95 GRAMMAR~ {138} GRAMMAR RULES FOR THE UNENLIGHTENED; OR, HOW TO WRITE GOODLY {300} Don't use no double negatives Don't never use no triple negatives. No sentence fragments Corollary: Complete sentences: important. Stamp out and eliminate redundancy. Avoid cliches like the plague. All generalizations are bad. Corollary: All statements must be specific. Never listen to advice. Take care that your verb and subject is in agreement. A preposition is a bad thing to end a sentence with. Down with categorical imperatives. Avoid those run-on sentences that just go on, and on, and on, they never stop, they just keep rambling, and you really wish the person would just shut up, but no, they just keep going, they're worse than the Energizer Bunny, they babble incessantly, and these sentences, they just never stop, they go on forever...if you get my drift... Never contradict yourself always. You should never use the second person. When dangling, watch your participles. Never go off on tangents, which are lines that intersect a curve at only one point and were discovered by Euclid, who lived in the sixth century, which was an era dominated by the Goths, who lived in what we now know as Poland... As Ralph Waldo Emerson once said, 'I hate quotations.' Excessive use of exclamation points can be disastrous!!!!! Remember to end each sentence with a period Don't use commas, which aren't necessary. Don't use question marks inappropriately? Don't be terse. Don't obfuscate your theses with extraneous verbiage. Never use that totally cool, radically groovy out-of-date slang. Avoid tumbling off the cliff of triteness into the black abyss of overused metaphors. Keep your ear to the grindstone, your nose to the ground, take the bull by the horns of a dilemma, and stop mixing your metaphors. Avoid those abysmally horrible, outrageously repellent exaggerations. Avoid any awful anachronistic aggravating antediluvian alliterations. ~ 95 BUILDER~ {138} Builder Help File {128} (A) {058}Mobile Programs {128} (B) {058}Object Programs {128} (C) {058}Bitvectors {128} (D) {058}Blueprints {128} (E) {058}OLC {a}MPROGS000 {b}OPROGS000 {c}BITVECTORS00 BITVECTORS {d}BLUEPRINTS0 {e}OLC ~ 95 MPROGS000~ {138} Mobile Programs {300} {128} (A) {058}Triggers {128} (D) {058}Operators {128} (B) {058}Variables {128} (E) {058}If Checks {128} (C) {058}Control Flow {128} (F) {058}Mob Commands {128} (-) {058}Return {a}MPROGS100 {b}MPROGS200 {c}MPROGS300 {d}MPROGS400 {e}MPROGS500 {f}MPROGS700 MPCOMMANDS {-}BUILDER ~ 95 MPROGS100~ {138} Mobile Triggers {300} {128} (A) {058}act_prog {128} (H) {058}all_greet_prog {128} (O) {058}range_prog {128} (B) {058}speech_prog {128} (I) {058}group_greet_prog {128} (P) {058}time_prog {128} (C) {058}social_prog {128} (J) {058}entry_prog {128} (Q) {058}repop_prog {128} (D) {058}rand_prog {128} (K) {058}give_prog {128} (R) {058}delay_prog {128} (E) {058}fight_prog {128} (L) {058}bribe_prog {128} (S) {058}exit_prog {128} (F) {058}hitprcnt_prog {128} (M) {058}death_prog {128} (T) {058}trigger_prog {128} (G) {058}greet_prog {128} (N) {058}kill_prog {128} (-) {058}Return {a}MPROGS101 {b}MPROGS102 {c}MPROGS103 {d}MPROGS104 {e}MPROGS105 {f}MPROGS106 {g}MPROGS107 {h}MPROGS108 {i}MPROGS109 {j}MPROGS110 {k}MPROGS111 {l}MPROGS112 {m}MPROGS113 {n}MPROGS114 {o}MPROGS115 {p}MPROGS116 {q}MPROGS117 {r}MPROGS118 {s}MPROGS119 {-}MPROGS000 ~ 95 MPROGS101~ {138} Act Programs {168} >act_prog [p] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the act() message. Both the phrase and keywords are not case sensitive. The act_prog will trigger on every action made by a player, it ignores mobs ~ 95 MPROGS102~ {138} Speech Programs {168} >speech_prog [p] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the say message. Both the phrase and keywords are not case sensitive. The speech_prog will trigger on every say made by a player, it ignores mobs ~ 95 MPROGS103~ {138} Social Programs {168} >social_prog <argument> {300} The argument is a social listed in the social list. The social_prog will trigger on every social made by a player or mob, where the mobile with the program must be the target. ~ 95 MPROGS104~ {138} Rand Programs {168} >rand_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every second and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the rand_prog this will happen even if there is no PC in the room with the mob. Mobs can have multiple rand_progs, but only 1 can trigger each second ~ 95 MPROGS105~ {138} Fight Programs {168} >fight_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every combat round and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the fight_prog this will happen even if there is no PC in the room with the mob. Mobs can have multiple fight_progs, but only 1 can trigger each combat round ~ 95 MPROGS106~ {138} Hitprcnt Programs {168} >hitprcnt_prog <percentage> {300} The argument is a number between 1 and 100. This trigger is checked every combat round and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the hitprcnt_prog this will happen even if there is no PC in the room with the mob. Mobs can have multiple hitprcnt_progs, but only the 1th succesful one will trigger each combat round. Multiple hitprcnt_progs should be listed in increasing order of percent since a 40 will always be activated before a 20. Be aware that a fight_prog and hitprcnt_prog can both trigger in 1 round. ~ 95 MPROGS107~ {138} Greet Programs {168} >greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a PC enters the room with the mobile. The mobile must be able to see the person walking in, otherwise the greet_prog will not trigger. The greet_prog will not trigger when the mobile is fighting ~ 95 MPROGS108~ {138} All Greet Programs {168} >all_greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a PC enters the room with the mobile The all_greet_prog will not trigger when the mobile is fighting ~ 95 MPROGS109~ {138} Group Greet Programs {168} >group_greet_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a PC enters the room with the mobile and if the argument is greater than a percentage roll the trigger is activated. The mobile must be able to see the person walking in, otherwise the group_greet_prog will not trigger. If a group enters all at once, the group_greet_prog is only triggered once The group_greet_prog will not trigger when the mobile is fighting ~ 95 MPROGS110~ {138} Entry Programs {168} >entry_prog <percentage> {300} The argument is a number between 1 and 100 This trigger is checked every time a mobile walks into a room and if the argument is greater than a percentage roll the trigger is activated. If there is no $r variable in the program of the entry_prog this will happen even if there is no PC in the room with the mob. Mobs can have multiple entry_progs, but only 1 can trigger each time ~ 95 MPROGS111~ {138} Give Programs {168} >give_prog <argument> {300} The argument must be the name of an object This trigger is checked every time a mobile is given an object. The argument should always be used with the 'I' format for item vnums, except for a couple of situations, but those go beyond the scope of this help file. Example: A ball of light is vnum 21, so use: give_prog i25 $o will refer to the given object. ~ 95 MPROGS112~ {138} Bribe Programs {168} >bribe_prog <argument> {300} The argument must be a number This trigger is checked whenever money is given to the mobile. If the amount given equals or exceeds the number, the program will be executed. Only one bribe_prog can be triggered each time an amount of gold is given. After the gold has been given it will be turned into a pile of gold in the mobile's inventory. A single coin has vnum 2, an amount of coins has vnum 3. They can be refered to as : I2 and I3. Dropping the coins and picking them up will turn them into cash. ~ 95 MPROGS113~ {138} Death Programs {168} >death_prog <percentage> {300} The argument is a number between 1 and 100 This triggers when the mobile is about to die, before the corpse is made The position of the mobile is temporary set to standing ~ 95 MPROGS114~ {138} Kill Programs {168} >kill_prog <percentage> {300} The argument is a number between 1 and 100 This triggers when the mobile kills a player ~ 95 MPROGS115~ {138} Range Programs {168} >range_prog <percentage> {300} The argument is a number between 1 and 100 This triggers when a mobile is hit by a range weapon The shotfrom ifcheck can be used to see the direction the shot came from ~ 95 MPROGS116~ {138} Time Programs {168} >time_prog <hour> {300} The argument is a number between 0 and 23 This is checked every mud hour, if the given hour matches the mud hour the program will be executed. If you use the number 24, the program will be triggered every mud hour. ~ 95 MPROGS117~ {138} Repop Programs {168} >repop_prog <percentage> {300} The argument is a number between 1 and 100 This triggers when a mobile repops after dying and after a reboot ~ 95 MPROGS118~ {138} Delay Programs {168} >delay_prog <index> {300} The index is a number between -100 and 100, if the index is below 0, the delay program will be carried out even if the mobile is asleep. {168} Syntax: mpdelay <target> <seconds> <index> [argument] {300} -Seconds is the time in seconds of the delay, if the given time is equal or greater than 60, instead of being second based the delay will become mud hours based. (mud hours range from 30 to 90 seconds). -The index is the index of the delay_prog that should be triggered when the delay expires. -The argument can be any valid $* argument, or something of your own choice, or leave it blank if you don't want the mob to remember anything. You can read out this argument at anytime using $X. {300} -You can check if the target is already delayed using: if delayed ($*) ~ 95 MPROGS119~ {138} Exit Programs {168} >exit_prog <direction> {300} The argument is either one of: n e s w u d This trigger is checked every time a PC leaves the room with the mobile. The mobile must be able to see the person walking out, otherwise the exit_prog will not trigger. The exit_prog will not trigger when the mobile is fighting ~ 95 MPROGS101~ {138} Act Programs {168} >trigger_prog [p k] <argument> {300} The argument is a list of keywords separated by spaces. If the first word is the character 'p' by itself then the rest of the word list is considered to be a phrase. If the first word is the character 'k' by itself then the rest of the word list is considered to be a set of keywords which all must be matched. The trigger is activated whenever a keyword (or the phrase) is contained in the mptrigger message. Both the phrase and keywords are not case sensitive. The trigger_prog can only be triggered with the mptrigger <string> command. ~ 95 MPROGS200~ {138} Variables (1) {178} variable mob actor vict rand objif obj name $i $n $t $r $c $o short desc $I $N $T $R $C $O he/she/it $j $e $E $J -- -- him/her/it $k $m $M $K -- -- his/hers/its $l $s $S $L -- -- {128} (<) {058}Previous Page {128} (>) {058}Next Page {128} (-) {058}Return {<}MPROGS201 {>}MPROGS201 {-}MPROGS000 ~ 95 MPROGS201~ {138} Variables (2) {178} $D name of door direction $d number of door direction $x number generated by if checks $X string set to remember by mob $1 first word of trigger of speech/act program $9 ninth word of trigger of speech/act program $$ will print a single $ self a direct reference to the mob/players {128} (<) {058}Previous Page {128} (>) {058}Next Page {128} (-) {058}Return {<}MPROGS200 {>}MPROGS200 {-}MPROGS000 ~ 95 MPROGS300~ {138} Control Flow {300} The following commands are available to control the flow in a mobile program: if checks for a condition example : if level ($n) > 10 or checks for a condition example : or level ($n) < 50 else is called when the result of the if/or checks are false endif ends an if check break bails out of the entire mobile program switch checks for a condition example : switch level ($n) case checks for a specific value of the switch default checks if no case value has been found endswitch ends a switch mpquiet on all commands are executed unseen mpquiet off ends the quiet mode ~ 95 MPROGS400~ {138} Operators {300} Numeric Operators: == equals != does not equal > bigger than < smaller than >= bigger or equal than <= smaller or equal than String Operators: (not case sensative) == equals != does not equal / contains !/ does not contain ~ 95 MPROGS500~ {138} If Checks {128} (A) {058}General {128} (B) {058}Mobile {128} (C) {058}Player {128} (D) {058}Character {128} (E) {058}Object {128} (F) {058}Room {128} (-) {058}Return {-}MPROGS000 {a}MPROGS510 {b}MPROGS540 {c}MPROGS570 {d}MPROGS600 {e}MPROGS630 {f}MPROGS660 ~ 95 MPROGS510~ {138} General If Checks {128} (A) {058} rand {128} (G) {058} existsworld {128} (B) {058} number {128} (H) {058} numberrange {128} (C) {058} name {128} (I) {058} areaquest {128} (D) {058} time {128} (E) {058} existsroom {128} (F) {058} existsarea {128} (-) {058} Return {-}MPROGS500 {a}MPROGS511 {b}MPROGS512 {c}MPROGS513 {d}MPROGS514 {e}MPROGS515 {f}MPROGS516 {g}MPROGS517 {h}MPROGS518 {i}MPROGS519 ~ 95 MPROGS511~ {138} rand {168} Syntax: if rand (percentage) {300} The rand if check will generate a value between 1 and 100 and check if the that value is smaller or equal to the given percentage. $x will hold the generated percentage. ~ 95 MPROGS512~ {138} number {168} Syntax: if number ($*) == integer {300} The number if check can be used for the $n $r $t $o $c $x and $X variable. In the case of objects and mobiles it will compare the vnum of given variable. $x will hold the compared value. ~ 95 MPROGS513~ {138} name {168} Syntax: if name ($*) == string {300} The name if check can be used for the $n $r $t $o $c and $X variable. ~ 95 MPROGS514~ {138} time {168} Syntax: if time () == hour {300} The time will compare the given hour to the current mud hour. $x will hold the current mud hour. ~ 95 MPROGS515~ {138} existsroom {168} Syntax: if existsroom ($* obj mob plr string) {300} The obj, mob, and plr argument will select a random obj, mob, or player in the room. The existsroom if check can be used for the $n $r and $X variable, it can also be used by a self provided name of a mob, obj, or player you expect to be in the room, or not to be. $t will refer to the found character $c will refer to the found object ~ 95 MPROGS516~ {138} existsarea {168} Syntax: if existsarea ($* string) {300} The existsarea if check can be used for the $n $r and $X variable, it can also be used by a self provided name of a mob, obj, or player you expect to be in the area, or not to be. $t will refer to the found character $c will refer to the found object ~ 95 MPROGS517~ {138} existsarea {168} Syntax: if existsworld ($* string) {300} The existsworld if check can be used for the $n $r and $X variable, it can also be used by a self provided name of a mob, obj, or player you expect to be in wherever in the mud world, or not to be. $t will refer to the found character $c will refer to the found object ~ 95 MPROGS518~ {138} numberrange {168} Syntax: if numberrange(low,high) == integer {300} The numberrange if check can be used to generate a random number between the given range. $x will hold the generated random number. ~ 95 MPROGS519~ {138} areaquest {300} Syntax: if areaquest (startBit, numBits, $*) == integer Checks if the quest bits of area of $i $c or $o equals integer. The quest checked will be of the area the mob or obj belongs to. $x will hold the value of the checked bits ~ 95 MPROGS540~ {138} Mobile If Checks {128} (A) {058} shotfrom {128} (B) {058} delayed {128} (-) {058} Return {-}MPROGS500 {a}MPROGS541 {b}MPROGS542 ~ 95 MPROGS541~ {138} shotfrom {168} Syntax: if shotfrom ($i) == direction {300} The shotfrom ifcheck will compare given direction to the attacker's direction. $D will hold the name of the direction the mob was attacked from. ~ 95 MPROGS542~ {138} delayed {168} Syntax: if delayed ($*) {300} The delayed if check can be used for the $i $n $r and $t variable. $x will hold the total delay in either seconds or mud hours for mobiles. if the target is a player it will hold their current lag timer. ~ 95 MPROGS570~ {138} Player If Checks {128} (A) {058} iskiller {128} (G) {058} pcsinarea {128} (B) {058} isthief {128} (H) {058} pcsinroom {128} (C) {058} reinc {128} (I) {058} questr {128} (D) {058} age {128} (E) {058} class {128} (F) {058} whichgod {128} (-) {058} Return {-}MPROGS500 {a}MPROGS571 {b}MPROGS572 {c}MPROGS573 {d}MPROGS574 {e}MPROGS575 {f}MPROGS576 {g}MPROGS577 {h}MPROGS578 {i}MPROGS579 ~ 95 MPROGS571~ {138} iskiller {168} Syntax: if iskiller ($*) {300} Checks if $n $r or $t is a killer. ~ 95 MPROGS572~ {138} isthief {168} Syntax: if isthief ($*) {300} Checks if $n $r or $t is a thief. ~ 95 MPROGS573~ {138} reinc {168} Syntax: if reinc ($*) == integer {300} This compares the reinc of $n $r or $t to given value. $x will hold the compared value. ~ 95 MPROGS574~ {138} age {168} Syntax: if age ($*) == integer {300} This compared the age of $n $r or $t to given value. The age is calculated as following: 17 + (seconds played / 20000) $x will hold the compared value. ~ 95 MPROGS575~ {138} class {168} Syntax: if class ($*) == bitvector {300} This compares the class of $n $r or $t to given bitvector. $x will hold the compared value. ~ 95 MPROGS576~ {138} whichgod {168} Syntax: if whichgod ($*) == bitvector {300} This compares the god of $n $r or $t to given bitvector. $x will hold the compared value. ~ 95 MPROGS577~ {138} pcsinarea {168} Syntax: if pcsinarea (roomvnum) == integer {300} If the roomvnum is left blank it will use the current room the mob is in, you can also use $x if it holds a room vnum. This compares the amount of players in the area of given room to given value. $x will hold the compared value. ~ 95 MPROGS578~ {138} pcsinroom {168} Syntax: if pcsinroom (roomvnum) == integer {300} If the roomvnum is left blank it will use the current room the mob is in, you can also use $x if it holds a room vnum. This compares the amount of players in the room of given room to given value. $x will hold the compared value. ~ 95 MPROGS579~ {138} questr {168} Syntax: if questr (roomvnum, startBit, numBit, $*) == integer {300} This checks the questbits of $i $n $t $r for the area of the given roomvnum {128} (I) {058}More information on quest bits {128} (-) {058}Return {-}MPROGS570 {i}QUESTBITS ~ 95 MPROGS600~ {138} Character If Checks {128} (A) {058} isnpc {128} (G) {058} cancarry {128} (M) {058}race {128} (B) {058} ispc {128} (H) {058} isaffected {128} (N) {058}gold {128} (C) {058} isgood {128} (I) {058} hitprcnt {128} (O) {058}quest {128} (D) {058} isevil {128} (J) {058} sex {128} (P) {058}isfight {128} (E) {058} isneutral {128} (K) {058} postion {128} (Q) {058}isfollow {128} (F) {058} cansee {128} (L) {058} level {128} (-) {058} Return {-}MPROGS000 {a}MPROGS601 {b}MPROGS602 {c}MPROGS603 {d}MPROGS604 {e}MPROGS605 {f}MPROGS606 {g}MPROGS607 {h}MPROGS608 {i}MPROGS609 {j}MPROGS610 {k}MPROGS611 {l}MPROGS612 {m}MPROGS613 {n}MPROGS614 {o}MPROGS615 {p}MPROGS616 {q}MPROGS617 ~ 95 MPROGS601~ {138} isnpc {168} Syntax: if isnpc ($*) {300} Checks if $n $r or $t is a player ~ 95 MPROGS602~ {138} ispc {168} Syntax: if ispc ($*) {300} Checks if $n $r or $t is a mob ~ 95 MPROGS603~ {138} isgood {168} Syntax: if isgood ($*) {300} Checks if $i $n $r or $t is of good alignment ~ 95 MPROGS604~ {138} isevil {168} Syntax: if isevil ($*) {300} Checks if $i $n $r or $t is of good alignment ~ 95 MPROGS605~ {138} isneutral {168} Syntax: if isneutral ($*) {300} Checks if $i $n $r or $t is of neutral alignment ~ 95 MPROGS606~ {138} cansee {168} Syntax: if cansee ($*) {300} Checks if mobile can see $n $r or $t. ~ 95 MPROGS607~ {138} cancarry {168} Syntax: if cancarry ($*) {300} Checks if $i $n $r or $t is capable of carrying any more items. ~ 95 MPROGS608~ {138} isaffected {168} Syntax: if isaffected ($*) == bitvector {300} Checks if $i $n $r or $t is affected by given bitvector. ~ 95 MPROGS609~ {138} hitprcnt {168} Syntax: if hitprcnt ($*) == percentage {300} Checks if health of $i $n $r or $t matches given hitpoints percentage. $x will hold the target's hitpoints percentage. ~ 95 MPROGS610~ {138} sex {168} Syntax: if sex ($*) == bitvector {300} Checks if sex of $i $n $r or $t matches given bitvector. $x will hold the target's sex. ~ 95 MPROGS611~ {138} position {168} Syntax: if position ($*) == bitvector {300} Checks if position of $i $n $r or $t matches given bitvector. $x will hold the target's position. ~ 95 MPROGS612~ {138} level {168} Syntax: if level ($*) == integer {300} Checks if the level of $i $n $r or $t equals integer. $x will hold the target's level. ~ 95 MPROGS613~ {138} race {168} Syntax: if race ($*) == bitvector {300} Checks if the race of $i $n $r or $t equals integer. $x will hold the target's race. ~ 95 MPROGS614~ {138} gold {168} Syntax: if gold ($*) == integer {300} Checks if the gold of $i $n $r or $t equals integer. $x will hold the target's gold. ~ 95 MPROGS615~ {138} quest {168} Syntax: if quest (startBit, numBits, $*) == integer Checks if the quest bits of $i $n $r or $t equals integer. The quest checked will be of the area the mob belongs to. $x will hold the value of the checked bits. {128} (I) {058}More information on quest bits {128} (-) {058}Return {-}MPROGS600 {i}QUESTBITS ~ 95 MPROGS616~ {138} isfight {168} Syntax: if isfight ($*) {300} Checks if $i $n $r or $t is fighting someone. $t will refer to the oponent the target is fighting ~ 95 MPROGS617~ {138} isfollow {168} Syntax: if isfollow ($*) {300} Checks if $i $n $r or $t is following someone. $t will refer to the character the target is following ~ 95 MPROGS630~ {138} Object If Checks {128} (A) {058} objtype {128} (G) {058} hasobj {128} (B) {058} objval0 {128} (H) {058} hasobjnum {128} (C) {058} objval1 {128} (I) {058} wearsobjnum {128} (D) {058} objval2 {128} {128} (E) {058} objval3 {128} (F) {058} objquest {128} (-) {058} Return {-}MPROGS500 {a}MPROGS631 {b}MPROGS632 {c}MPROGS633 {d}MPROGS634 {e}MPROGS635 {f}MPROGS636 {g}MPROGS637 {h}MPROGS638 {i}MPROGS639 ~ 95 MPROGS631~ {138} objtype {168} Syntax: if objtype ($*) == bitvector {300} Checks if objtype of $c or $o equals given bitvector $x will hold the object's object type ~ 95 MPROGS632~ {138} objval0 {168} Syntax: if objval0 ($i) == bitvector {300} Checks if objval0 of $c or $o equals given bitvector $x will hold the object's value0 ~ 95 MPROGS633~ {138} objval1 {168} Syntax: if objval1 ($i) == bitvector {300} Checks if objval1 of $c or $o equals given bitvector $x will hold the object's value1 ~ 95 MPROGS634~ {138} objval2 {168} Syntax: if objval2 ($i) == bitvector {300} Checks if objval2 of $c or $o equals given bitvector $x will hold the object's value2 ~ 95 MPROGS635~ {138} objval3 {168} Syntax: if objval3 ($i) == bitvector {300} Checks if objval3 of $c or $o equals given bitvector $x will hold the object's value3 ~ 95 MPROGS636~ {138} objquest {168} Syntax: if objquest (startBit, numBits, $*) == integer {300} Checks if the quest bits of $c or $o equals given value. $x will hold the value of the checked bits. {128} (I) {058}More information on quest bits {128} (-) {058}Return {-}MPROGS630 {i}QUESTBITS ~ 95 MPROGS637~ {138} hasobj {168} Syntax: if hasobj ($*) == name -- always use hasobjnum if possible {300} Checks if $* has an object with given name $c will refer to the found object. ~ 95 MPROGS638~ {138} hasobjnum {168} Syntax: if hasobjnum ($*) == objvnum {300} Checks if $* has an object with given vnum. $c will refer to the found object. ~ 95 MPROGS639~ {138} wearsobjnum {168} Syntax: if wearsobjnum ($*) == objvnum {300} Checks if $* has an object with the given vnum. $c will refer to the found object. ~ 95 MPROGS660~ {138} Room If Checks {128} (A) {058} validexit {128} {128} (B) {058} findpath {128} {128} (C) {058} inroom {128} {128} (D) {058} roomsector {128} {128} (-) {058} Return {-}MPROGS500 {a}MPROGS661 {b}MPROGS662 {c}MPROGS663 {d}MPROGS664 ~ 95 MPROGS661~ {138} validexit {168} Syntax: if validexit (direction) {300} Checks if there is a valid exit in given direction the mobile is allowed to use. If no direction is given, the mob will select a random valid exit. $D will hold the found direction. $x will hold the room vnum the exit leads to. ~ 95 MPROGS662~ {138} findpath {168} Syntax: if findpath (roomvnum, maxpathlength) {300} Checks if there is a path to given room vnum. The max pathlength is a value between 1 and 100. It is suggested to keep the maxpathlength as low as possible. $D will hold the found direction leading 1 step closer toward the room. $x will hold the length of the found path. ~ 95 MPROGS663~ {138} inroom {168} Syntax: if inroom ($*) == roomvnum {300} Checks if the room vnum of $i $n $r or $t equals to give vnum ($*) == vnum {078} Is the room of $* equal to vnumber $x will hold the vnum of the mob's current room vnum. ~ 95 MPROGS664~ {138} roomsector {168} Syntax: if roomsector (vnum) == bitvector {300} Checks if the sector of given room vnum equals given bitvector. $x will hold the value of the room's sector. ~ 95 QUESTBITS~ {138} Quest Bits for Dummies {300} Every Player has 128 bits allocated for every area, at default those bits are all set to zero. The mprog code will allow you to select up to 32 bits at a time from the total of 128. It is highly suggested (so just do it) that you always select groups of 4 bits. This being 4, 8, 12, etc bits. To select a group of bits: -first select the first bit of the group of bits you want to use, this is a number between 0 and 124. The number must dividable by 4, thus being 0, 4, 8, 12, 16, etc. -second select the amount of bits, this is a number between 4 and 32, being 4, 8, 12, 16, etc. Depending on the amount of bits you select you can assign a certain value to those bits. Here is an overview for the most commonly used amounts of bits: 4 bits allows you to set a value between 0 and 15 8 bits allows you to set a value between 0 and 255 12 bits allows you to set a value between 0 and 4095 example: if quest (0,4,$n) == 6 Checks if bits 0, 1, 2, 3, equal 6 if quest (4,4,$n) == 0 Checks if bits 4, 5, 6, 7, equal 0 Setting a quest bit goes very much the same way. Example mpmset $n quest 0 4 9 Sets bits 0, 1, 2, 3, to equal 9 mpmset $n quest 8 8 69 Sets bits 8, 9, 10, 11, 12, 13, 14, 15, to equal 69 Notes: -mpmadd $n quest 0 4 1 will increase the value of the quest bits, once the value becomes 15, and you try to increase the value, the value will become 0. You can use that behavior to your advantage. -Quest bits can be set on players, mobs and objects. ~ 95 MPROGS700 MPCOMMANDS~ {138} Mob Commands {300} {128} (A) {058}mpmset {128} (H) {058}mppurge {128} (O) {058}mptransfer {128} (V) {058}maze {128} (B) {058}mpmadd {128} (I) {058}loading {128} (P) {058}mpat {128} (W) {058}rescale {128} (C) {058}mposet {128} (J) {058}mpswap {128} (Q) {058}peace {128} (X) {058}echos {128} (D) {058}mpoadd {128} (K) {058}mpkill {128} (R) {058}slay {128} (Y) {058}mpdelay {128} (E) {058}mpaset {128} (L) {058}mpforce {128} (S) {058}connect {128} (Z) {058}mptrigger {128} (F) {058}mpzset {128} (M) {058}mpgoto {128} (T) {058}doorset {128} (G) {058}mpjunk {128} (N) {058}mpgorand {128} (U) {058}mpdamage {128} (-) {058}Return {a}MPMSET {b}MPMADD {c}MPOSET {d}MPOADD {e}MPASET {f}MPZSET {g}MPJUNK MPJUNKPERSON {h}MPPURGE {i}MPOLOAD MPMLOAD {j}MPSWAP {k}MPKILL {l}MPFORCE {p}MPAT {r}SLAY {s}CONNECT {t}DOORSET {u}MPDAMAGE {v}MAZE {w}RESCALE {x}ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND {y}MPDELAY {z}MPTRIGGER {-}MPROGS000 ~ 95 MPMSET~ {168} Syntax: mpmset <victim> <field> <argument> Syntax: mpmset <victim> <string> <argument> {300}Field being one of: {078} level gold align thirst drunk full exp wait dam hp mana move {300}String being one of: {078} remember name short long title {168}Syntax: mpmset <victim> quest <firstBit> <numBits> <newValue> {168}Syntax: mpmset <victim> questr <areaVnum> <firstBit> <numBits> <newValue> {168}Syntax: mpmset <victim> randquest <firstBit> <numBits> {168}Syntax: mpmset <victim> randquestr <areaVnum> <firstBit> <numBits> ~ 95 MPMADD~ {168} Syntax: mpmadd <victim> <field> <argument> {300}Field being one of: {078} level gold align thirst drunk full exp currhp currmana currmove hp mana move {078} quest questr {168}Syntax: mpmadd <victim> quest <firstBit> <numBits> <value> {168}Syntax: mpmadd <victim> questr <areaVnum> <firstBit> <numBits> <value> ~ 95 MPOSET~ {168} Syntax: mposet <object> <field> <argument> Syntax: mposet <object> <string> <argument> {300}Field being one of: {078} value0 value1 value2 value3 extra setextra clrextra wear level weight cost {078} timer quest randquest {300}String being one of: {078} name short long ed {168}Syntax: mposet <object> quest <firstBit> <numBits> <newValue> {168}Syntax: mposet <object> randquest <firstBit> <numBits> ~ 95 MPOADD~ {168} Syntax: mpoadd <object> <field> <argument> {300}Field being one of: {078} value0 value1 value2 value3 level weight cost timer quest {168}Syntax: mpoadd <object> quest <firstBit> <numBits> <value> ~ 95 MPASET~ {168} Syntax: mpaset <object> <field> <argument> {300}Field being one of: {078} str dex int wis con mana hp move ac damroll hitroll {078} para rod petri breath spell ~ 95 MPZSET~ {168} Syntax: mpzset <field> <argument> {300}Field being one of: {078} resetmsg quest ~ 95 MPJUNK MPJUNKPERSON~ {168} Syntax: mpjunk <object|all> Syntax: mpjunkperson <target> <object|all> {300} The object must be worn or carried in inventory to be junked ~ 95 MPPURGE~ {168} Syntax: mppurge [object|mobile|all|area] {300} The object or mobile must be located in the room If the all argument is given every object and mobile in the room will be purged mppurge area, will purge the entire area except for the mob that purges the area. ~ 95 MPOLOAD MPMLOAD~ {168} Syntax: mpoload <vnum> [room] [wear] Syntax: mpmload <vnum> {300} mpoload will place an object in the inventory of the mobile, if the object doesn't have the item_wear_take flag or you use the room argument it will go to the room. The wear argument will equip the mob with loaded object. mpmload will load a mobile in the room ~ 95 MPSWAP~ {168} Syntax: mpswap <dir1> <dir2> {300} mpswap will swap the given directions. This can be used to create mazes with less limitations than the randomization reset. ~ 95 MPKILL~ {168} Syntax: mpkill <target> {300} mpkill allows a mobile to attack other mobiles and players ~ 95 MPDO~ {168} Syntax: mpdo <argument> {300} This will allow the mobile to execute non existing commands. Which in most cases will be a command stored into a mprog variable such as 'mpdo $C'. ~ 95 MPDELAY~ {168} Syntax: mpdelay <target> <time> <index> [remember] {300} After given 'time' the target's delay_prog with given 'index' will trigger. Setting a string to be remembered is optional. A mobile can only have 1 delay program pending, so use the if delayed($*) check to avoid erasing an already pending delay trigger. ~ 95 MPTRIGGER~ {168} Syntax: mptrigger <target> <string> {300} This will send the given string to the target mob much like mpechoat, if the target mob has a trigger_prog set that matches the string it will execute that prog and is able to process the keywords passed along as well. This is useful for object programs to trigger mobile programs, or mobs triggering other mobs or themself. ~ 95 MPCALCULATE~ {168} Syntax: mpcalculate <value> <operator> <value> {300} Operators Priority Function ------------------------------------------------ * 1 integer multiply {300}/ 1 integer divide % 1 integer modulo d 1 integer random dice roll + 2 integer addition - 2 integer subtraction > 4 logical greater than >= 4 logical greater than or equal < 4 logical less than <= 4 logical less than or equal == 5 logical equal (can use wildcards) {300}!= 5 logical not equal (can use wildcards) && 9 logical and ^^ 10 logical xor || 11 logical or ~ 95 MPFORCE~ {168} Syntax: mpforce <target|all|allgame> <argument> {300} mpforce <target> will force the target to do something mpforce all will force all mobiles and players in the room mpforce allgame will force all players in the game ~ 95 MPGOTO~ {168} Syntax: mpgoto <roomVnum|mobile|object> {300} mpgoto roomVnum will take the mobile to the specified room mpgoto mobile will take the mobile to the specified mobile name mpgoto object will take the mobile to the specified object name ~ 95 MPGORAND~ {168} Syntax: mpgorand <firstRoom> <lastRoom> <offset> <skipSize> {300} mpgorand will take the mobile to a random room in the specified vnum range ~ 95 MPTRANSFER~ {168} Syntax: mptransfer <target|all|pcs> <roomVnum> {300} mptransfer target will transfer target to specified room mptransfer all will transfer all mobs and players to specified room mptransfer pcs will transfer all mobs to specified room ~ 95 MPAT~ {168} Syntax: mpat <roomVnum|mobile|object> <command> {300} mpat roomVnum will execute a command at the specified room mpat mobile will execute a command at the specified mobile name mpat object will execute a command at the specified object name ~ 95 PEACE~ {168} Syntax: peace {300} peace will stop all fighting and strip all hating/hunting flags from all mobiles standing in the room ~ 95 SLAY~ {168} Syntax: slay <target> {300} slay will kill the target instantly without adding a death ~ 95 CONNECT~ {168} Syntax: connect <direction> <roomVnum> [both] {300} connect will connect the specified room in the specified direction If the 'both' argument is used a 2 way connection will be established ~ 95 DOORSET~ {168} Syntax: doorset <direction> <field> <argument> {300}Field being one of: {078} desc name flag key {300} This command will only set one side of the door. ~ 95 MPDAMAGE~ {168} Syntax: mpdamage <victim|all|pcs|foe> <dam_lo> <dam_hi> <nounce> {300} mpdamage can be used to have a mobile do specialized damage, if the damage dealt equals zero the attack will miss. all - will hit all targets mobile can attack pcs - will hit all players mobile can attack foe - will hit the person the mobile is currently fighting ~ 95 MAZE~ {168} Syntax: maze <x size> <y size> <z size> <total rooms> {300} This command will restructure the total rooms, starting count from the room the mobile stands in, into an x*y*z block. There must be enough available rooms with none of them missing. The maze will entirely exist of 2 way connections, so you will likely have to spice it up a little after the maze command has been executed, or maze up small amounts of rooms. Example: maze 4 4 4 30 will fit 30 rooms in a 4 by 4 by 4 area. ~ 95 RESCALE~ {168} Syntax: rescale <mobVnum> <target> <percentage> {300} The level, damage, and hitpoints of the mobile will be rescaled Formula: newLevel = mobLevel * targetLevel/100 * percentage/100 ~ 95 ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND~ {168} Syntax: echo <string> echo to all players Syntax: mpareaecho <string> echo to players in area Syntax: mpasound <string> echo to surrounding rooms Syntax: mpecho <string> echo to room Syntax: mpechoat <target> <string> echo to target Syntax: mpechoaround <target> <string> echo to room excluding target {300} All echos can be executed containing color codes Except for echo the targets must be awake to see the message, mpareaecho has some advanced options: mpareaecho <sleepers indoors outdoors> <string> ~ 95 OPROGS000~ {138} Object Programs {128} (A) {058}Triggers {128} (D) {058}Operators {128} (B) {058}Variables {128} (E) {058}If Checks {128} (C) {058}Control Flow {128} (F) {058}Obj Commands {128} (-) {058}Return {a}OPROGS100 {b}OPROGS200 {c}OPROGS300 {d}OPROGS400 {e}OPROGS500 {f}OPROGS600 {-}BUILDER ~ 95 OPROGS100~ {138} Object Triggers {128} (B) {058}TRIG_UNKNOWN {128} (E) {058}TRIG_DAMAGE {128} (H) {058}TRIG_VOID {128} (A) {058}TRIG_COMMAND {128} (E) {058}TRIG_DAMAGE {128} (I) {058}TRIG_SACRIFICE {128} (B) {058}TRIG_UNKNOWN {128} (F) {058}TRIG_WEAR {128} (J) {058}TRIG_ROOM_COMMAND {128} (C) {058}TRIG_TICK {128} (G) {058}TRIG_REMOVE {128} (K {058}TRIG_ROOM_UNKNOWN {128} (D) {058}TRIG_HIT {128} (H) {058}TRIG_VOID {128} (-) {058}Return {a}OPROGS101 {b}OPROGS102 {c}OPROGS103 {d}OPROGS104 {e}OPROGS105 {f}OPROGS106 {g}OPROGS107 {h}OPROGS108 {i}OPROGS109 {j}OPROGS110 {k}OPROGS111 {-}OPROGS000 ~ 95 OPROGS101~ {138} Trigger Command {168} TRIG_COMMAND <PERCENTAGE> <COMMAND> {300} The percentage must be a number between 1 and 100 The command must be listed in interp.c (skills/commands/godcommands) ~ 95 OPROGS102~ {138} Trigger Unknown {168} TRIG_UNKNOWN <PERCENTAGE> <STRING> {300} The percentage must be a number between 1 and 100 The string shouldn't be listed in interp.c (skills/commands/godcommands) ~ 95 OPROGS103~ {138} Trigger Tick {168} TRIG_TICK <PERCENTAGE> {300} The percentage must be a number between 1 and 100 Every 4 seconds the percentage will be checked ~ 95 OPROGS104~ {138} Trigger Hit {168} TRIG_HIT <PERCENTAGE> {300} The percentage must be a number between 1 and 100 Everytime the player is hit (non magical) the percentage will be checked ~ 95 OPROGS105~ {138} Trigger Damage {168} TRIG_DAMAGE <PERCENTAGE> {300} The percentage must be a number between 1 and 100 Everytime the player does damage (non magical) the percentage will be checked ~ 95 OPROGS106~ {138} Trigger Wear {168} TRIG_WEAR <PERCENTAGE> {300} The percentage must be a number between 1 and 100 Everytime the player wear the object the percentage will be checked ~ 95 OPROGS107~ {138} Trigger Remove {168} TRIG_REMOVE <PERCENTAGE> {300} The percentage must be a number between 1 and 100 Everytime the player removes the object the percentage will be checked ~ 95 OPROGS108~ {138} Trigger Void {168} TRIG_VOID {300} This indicates the trigger is called by another section of the object program ~ 95 OPROGS109~ {138} Trigger Sacrifice {168} TRIG_SACRIFICE <PERCENTAGE> {300} This triggers when the object is being sacrificed by the player. ~ 95 OPROGS110~ {138} Trigger Roomcommand {168} TRIG_ROOM_COMMAND <PERCENTAGE> <COMMAND> {300} This triggers when the command is used in the room with the object. The command must be a real command, socials don't count. The object Must be lying on the ground. ~ 95 OPROGS111~ {138} Trigger Unknowncommand {168} TRIG_ROOM_UNKNOWN <PERCENTAGE> <COMMAND> {300} This triggers when the command is used in the room with the object. The object Must be lying on the ground. The command should not be a real command, but can be a social. ~ 95 OPROGS200~ {138} Object Variables {300} $i the name of the owner of the object $I the name and title of the owner of the object $f the name of oponent owner is fighting $F the full and title of the oponent the owner is fighting $e the sex of the owner of the object h(e) $s the sex of the owner of the object hi(s) $s the sex of the owner of the object hi(m) $o the short description of the object self a direct reference to the owner of the object ~ 95 OPROGS300~ {138} Object Control Flow {300} & allows multiple commands to be forced upon the player, the commands must be either all on 1 line, or have 1 line per command, this to avoid weird execution orders. ~ 95 OPROGS400~ {138} Object Operators {300} Numeric Operators: = equals ! does not equal > bigger than < smaller than >= bigger or equal than <= smaller or equal than ~ 95 OPROGS500~ {138} Object If Checks {078} OPROG_OBJECT_QUEST_IF OPROG_IF OIF_USER_RACE {078} OPROG_PLAYER_QUEST_IF OPROG_IF OIF_USER_SEX {078} OPROG_IF_HAS_OBJECT OPROG_IF OIF_USER_AREA {078} OPROG_IF OIF_RANDOM_PERCENT OPROG_IF OIF_USER_SECTOR {078} OPROG_IF OIF_TIME_OF_DAY OPROG_IF OIF_USER_PERCENT_MOVE {078} OPROG_IF OIF_WEATHER OPROG_IF OIF_USER_PERCENT_HITPT {078} OPROG_IF OIF_WEAR_LOC OPROG_IF OIF_USER_PERCENT_MANA {078} OPROG_IF OIF_USER_PK_STATUS OPROG_IF OIF_MCLASS_WARRIOR {078} OPROG_IF OIF_USER_CLASS OPROG_IF OIF_MCLASS_GLADIATOR {078} OPROG_IF OIF_USER_POSITION OPROG_IF OIF_MCLASS_MARAUDER {078} OPROG_IF OIF_USER_GOLD OPROG_IF OIF_MCLASS_NINJA {078} OPROG_IF OIF_USER_ROOM_NUM OPROG_IF OIF_MCLASS_DRUID {078} OPROG_IF OIF_USER_WHICH_GOD OPROG_IF OIF_MCLASS_SORCERER {078} OPROG_IF OIF_USER_ALIGNMENT OPROG_IF OIF_MCLASS_SHAMAN {078} OPROG_IF OIF_USER_LEVEL OPROG_IF OIF_MCLASS_WARLOCK {078} OPROG_IF OIF_USER_FIGHTING ~ 95 OPROGS600~ {138} Obj Commands {078} OPROG_APPLY OAPPLY_HIT OPROG_ECHO {078} OPROG_APPLY OAPPLY_MOVE OPROG_GOD_COMMAND {078} OPROG_APPLY OAPPLY_MANA OPROG_GOD_ARGUMENT {078} OPROG_APPLY OAPPLY_ALIGNMENT OPROG_QUEST_SET {078} OPROG_JUNK OPROG_QUEST_ADD ~ 95 BITVECTORS00 BITVECTORS~ {138} Bitvectors {128} (A) {058}Areas {128} (D) {058}Rooms {128} (B) {058}Mobiles/Players {128} (E) {058}Resets {128} (C) {058}Objects {128} (F) {058}Players {128} (-) {058}Return {a}BITVECTORS10 {b}BITVECTORS20 {c}BITVECTORS300 {d}BITVECTORS40 {e}BITVECTORS50 {f}BITVECTORS60 {-}BUILDER ~ 95 BITVECTORS10~ {138} Area Flags {078} AFLAG_NODEBUG AFLAG_NORECALL AFLAG_NOTELEPORT AFLAG_NOCASTLE AFLAG_NOGOHOME AFLAG_NORIP ~ 95 BITVECTORS20~ {138} Mobile Bitvectors {078} {128} (A) {058}Mobile Actions {128} (B) {058}Mobile Affects {128} (C) {058}Body Parts {128} (D) {058}Mobile Races {128} (E) {058}Mobile Positions {128} (F) {058}Mobile Genders {128} (G) {058}Player Gods {128} (H) {058}Player Classes {128} (-) {058}Return {a}BITVECTORS21 {b}BITVECTORS22 {c}BITVECTORS23 {d}BITVECTORS24 {e}BITVECTORS25 {f}BITVECTORS26 {a}BITVECTORS27 {b}BITVECTORS28 {-}BITVECTORS00 BITVECTORS ~ 95 BITVECTORS21~ {138} Mobile Actions {078} ACT_SENTINEL ACT_TRAIN ACT_NO_ORDER ACT_SCAVENGER ACT_PRACTICE ACT_BODY ACT_DRUNK ACT_WEAK ACT_RACE ACT_AGGRESSIVE ACT_SMART ACT_UNDEAD ACT_WIMPY ACT_ONE_FIGHT ~ 95 BITVECTORS22~ {138} Mobile Affects {078} AFF_DETECT_HIDDEN AFF_ETHEREAL AFF_UNDERSTAND AFF_DETECT_INVIS AFF_INVISIBLE AFF_TONGUES AFF_PROTECT_EVIL AFF_STEALTH AFF_SLEEP AFF_PROTECT_GOOD AFF_SNEAK AFF_CHARM AFF_PASS_DOOR AFF_HIDE AFF_TRUESIGHT AFF_FLYING AFF_HUNT AFF_POISON AFF_SANCTUARY AFF_CLEAR AFF_STABILITY ~ 95 BITVECTORS23~ {138} Body Parts {078} BODY_HEAD BODY_LEG BODY_HORN BODY_MOUTH BODY_ARM BODY_CLAW BODY_EYE BODY_WING BODY_HAND BODY_TORSO BODY_TAIL BODY_FOOT BODY_HIP BODY_TENTICLE ~ 95 BITVECTORS24~ {138} Mobile Races {078} RACE_HUMAN RACE_SPRITE RACE_PHOENIX RACE_ELF RACE_SHADE RACE_MYRDDRAAL RACE_DARKELF RACE_ROC RACE_ARACHNID RACE_DWARF RACE_THREEKREEN RACE_TITAN RACE_GNOME RACE_WEREWOLF RACE_EAGLE RACE_ORC RACE_DEMON RACE_KRAKEN RACE_GRIFFON RACE_GARGOYLE RACE_FIREDRAGON RACE_HALFELF RACE_WRAITH RACE_DRAGON RACE_OGRE RACE_TROLL RACE_MULL RACE_VAMPIRE ~ 95 BITVECTORS25~ {138} Mobile Positions {078} POS_DEAD POS_STUNNED POS_FIGHTING POS_MORTAL POS_SLEEPING POS_STANDING POS_INCAP POS_RESTING ~ 95 BITVECTORS26~ {138} Mobile Genders {078} SEX_NEUTRAL SEX_MALE SEX_FEMALE ~ 95 BITVECTORS27~ {138} God Flags {078} GOD_NEUTRAL GOD_MANWE GOD_ULMO GOD_DEMISE GOD_HYPNOS GOD_GAIA ~ 95 BITVECTORS28~ {138} Class Flags {078} CLASS_WARRIOR CLASS_NINJA CLASS_WARLOCK CLASS_GLADIATOR CLASS_DRUID CLASS_MARAUDER CLASS_SORCERER ~ 95 BITVECTORS300~ {138} Object Bitvectors {128} (A) {058}Object Types {128} (B) {058}Object Flags {128} (C) {058}Wear Locations {128} (D) {058}Object Applies {128} (E) {058}Object Classes {128} (F) {058}Value0 {128} (G) {058}Value1 {128} (H) {058}Value2 {128} (I) {058}Value3 {128} (-) {058}Return {a}BITVECTORS310 {b}BITVECTORS320 {c}BITVECTORS330 {d}BITVECTORS340 {e}BITVECTORS350 {f}BITVECTORS360 {g}BITVECTORS370 {h}BITVECTORS380 {i}BITVECTORS390 {-}BITVECTORS00 BITVECTORS ~ 95 BITVECTORS310~ {138} Object Types {078} ITEM_TYPE_NOTHING ITEM_TYPE_ARMOR ITEM_TYPE_FOOD ITEM_TYPE_LIGHT ITEM_TYPE_POTION ITEM_TYPE_MONEY ITEM_TYPE_SCROLL ITEM_TYPE_FURNITURE ITEM_TYPE_BOAT ITEM_TYPE_WAND ITEM_TYPE_TRASH ITEM_TYPE_FOUNTAIN ITEM_TYPE_STAFF ITEM_TYPE_CONTAINER ITEM_TYPE_PILL ITEM_TYPE_WEAPON ITEM_TYPE_DRINK_CON ITEM_TYPE_AMMO ITEM_TYPE_TREASURE ITEM_TYPE_KEY ~ 95 BITVECTORS320~ {138} Object Flags {078} ITEM_FLAG_HUM ITEM_FLAG_BLESS ITEM_FLAG_INVENTORY ITEM_FLAG_EVIL ITEM_FLAG_ANTI_NEUTRAL ITEM_FLAG_LEVEL ITEM_FLAG_INVIS ITEM_FLAG_ANTI_GOOD ITEM_FLAG_AUTO_ENGRAVE ITEM_FLAG_MAGIC ITEM_FLAG_ANTI_EVIL ITEM_FLAG_GLOW ITEM_FLAG_NODROP ITEM_FLAG_NOREMOVE ~ 95 BITVECTORS330~ {138} Wear Locations {078} ITEM_WEAR_TAKE ITEM_WEAR_LEGS ITEM_WEAR_ABOUT ITEM_WEAR_FINGER ITEM_WEAR_FEET ITEM_WEAR_WAIST ITEM_WEAR_NECK ITEM_WEAR_HANDS ITEM_WEAR_WRIST ITEM_WEAR_BODY ITEM_WEAR_ARMS ITEM_WEAR_WIELD ITEM_WEAR_HEAD ITEM_WEAR_SHIELD ITEM_WEAR_HOLD ~ 95 BITVECTORS340~ {138} Object Applies {078} APPLY_STR APPLY_MANA APPLY_SAVING_PARA APPLY_DEX APPLY_HIT APPLY_SAVING_ROD APPLY_INT APPLY_MOVE APPLY_SAVING_PETRI APPLY_WIS APPLY_AC APPLY_SAVING_BREATH APPLY_CON APPLY_HITROLL APPLY_SAVING_SPELL APPLY_SEX APPLY_DAMROLL ~ 95 BITVECTORS350~ {138} Object Classes {078} FLAG_CLASS_WARRIOR FLAG_CLASS_NINJA FLAG_CLASS_SHAMAN FLAG_CLASS_GLADIATOR FLAG_CLASS_DRUID FLAG_CLASS_WARLOCK FLAG_CLASS_MARAUDER FLAG_CLASS_SORCERER ~ 95 BITVECTORS360~ {138} Value0 {078} No bitvectors available yet ~ 95 BITVECTORS370~ {138} Value1 {078} {128} (A) {058}Pills Potions Scrolls {128} (B) {058}Containers {128} (-) {058}Return {a}SPELLS0 {b}BITVECTORS371 {-}BITVECTORS300 ~ 95 BITVECTORS371~ {138} Containers {078} CONT_CLOSEABLE CONT_PICKPROOF CONT_CLOSED CONT_LOCKED ~ 95 BITVECTORS380~ {138} Value2 {078} {128} (A) {058}Pills Potions Scrolls {128} (B) {058}Drink Containers {128} (-) {058}Return {a}SPELLS0 {b}BITVECTORS381 {-}BITVECTORS300 ~ 95 BITVECTORS381~ {138} Drink Containers {078} LIQ_WATER LIQ_LEMONADE LIQ_COFFE LIQ_BEER LIQ_FIREBRT LIQ_BLOOD LIQ_WINE LIQ_LOCALSPC LIQ_SALTWATER LIQ_ALE LIQ_SLIME LIQ_COKE LIQ_DARKALE LIQ_MILK LIQ_WHISKY LIQ_TEA ~ 95 BITVECTORS390~ {138} Value3 {078} {128} (A) {058}Pills Potions Scrolls {128} (B) {058}Staves Wands {128} (C) {058}Weapons {128} (-) {058}Return {a}SPELLS0 {b}SPELLS0 {c}BITVECTORS391 {-}BITVECTORS300 ~ 95 BITVECTORS391~ {138} Weapons {078} WEAPON_SLICE WEAPON_CLAW WEAPON_GREP WEAPON_STAB WEAPON_BLAST WEAPON_BITE WEAPON_SLASH WEAPON_POUND WEAPON_PIERCE WEAPON_WHIP WEAPON_CRUSH ~ 95 BITVECTORS40~ {138} Room Bitvectors {128} (A) {058}Room Flags {128} (B) {058}Room Sectors {128} (C) {058}Exit Directions {128} (D) {058}Door Flags {128} (-) {058}Return {a}BITVECTORS41 {b}BITVECTORS42 {c}BITVECTORS43 {d}BITVECTORS44 {-}BITVECTORS00 BITVECTORS ~ 95 BITVECTORS41~ {138} Room Flags {078} ROOM_DARK ROOM_PRIVATE ROOM_NO_MOB ROOM_SMOKE ROOM_SOLITARY ROOM_NO_GOHOME ROOM_INDOORS ROOM_ALLOW_WAR ROOM_NO_RECALL ROOM_SAFE ROOM_ALLOW_GLA ROOM_NO_SAVE ROOM_BANK ROOM_ALLOW_MAR ROOM_NO_CASTLE ROOM_PET_SHOP ROOM_ALLOW_NIN ROOM_NO_RIP ROOM_MORGUE ROOM_ALLOW_DRU ROOM_ALTAR_N ROOM_ALLOW_SOR ROOM_NOTE_BOARD ROOM_ALLOW_SHA ROOM_BLOCK ROOM_ALLOW_WLC ~ 95 BITVECTORS42~ {138} Room Sectors {078} SECT_INSIDE SECT_WATER_NOSWIM SECT_ASTRAL SECT_CITY SECT_UNUSED SECT_UNDER_WATER SECT_FIELD SECT_AIR SECT_UNDER_GROUND SECT_FOREST SECT_DESERT SECT_DEEP_EARTH SECT_HILLS SECT_LAVA SECT_MOUNTAIN SECT_INN SECT_WATER_SWIM SECT_ETHEREAL ~ 95 BITVECTORS43~ {138} Exit Directions {078} DIR_NORTH DIR_EAST DIR_SOUTH DIR_WEST DIR_UP DIR_DOWN ~ 95 BITVECTORS44~ {138} Door Flags {078} EX_ISDOOR EX_HIDDEN EX_MAGIC_PROOF EX_CLOSED EX_PICKPROOF EX_LOCKED EX_BASHPROOF ~ 95 BITVECTORS50~ {138} Reset Bitvectors {128} (A) {058}Exit Directions {128} (B) {058}Reset Door Flags {128} (C) {058}Reset Wear Locations {128} (-) {058}Return {a}BITVECTORS51 {b}BITVECTORS52 {c}BITVECTORS53 {-}BITVECTORS00 BITVECTORS ~ 95 BITVECTORS51~ {138} Exit Directions {078} DIR_NORTH DIR_EAST DIR_SOUTH DIR_WEST DIR_UP DIR_DOWN ~ 95 BITVECTORS52~ {138} Door Reset Flags {078} DOOR_OPEN DOOR_CLOSED DOOR_CLOSED_LOCKED ~ 95 BITVECTORS53~ {138} Reset Wear Locations {078} WEAR_NONE WEAR_HEAD WEAR_WAIST WEAR_LIGHT WEAR_LEGS WEAR_WRIST_L WEAR_FINGER_L WEAR_FEET WEAR_WRIST_R WEAR_FINGER_R WEAR_HANDS WEAR_WIELD WEAR_NECK_A WEAR_ARMS WEAR_HOLD WEAR_NECK_B WEAR_SHIELD WEAR_BODY WEAR_ABOUT ~ 95 BITVECTORS60~ {138} Player Bitvectors {128} (A) {058}Gods {128} (B) {058}Classes {128} (-) {058}Return {a}BITVECTORS61 {b}BITVECTORS62 {-}BITVECTORS00 BITVECTORS ~ 95 BITVECTORS61~ {138} Player God Flags {078} GOD_NEUTRAL GOD_MANWE GOD_ULMO GOD_DEMISE GOD_HYPNOS GOD_GAIA ~ 95 BITVECTORS62~ {138} Player Class Flags {078} CLASS_WARRIOR CLASS_NINJA CLASS_SHAMAN CLASS_GLADIATOR CLASS_DRUID CLASS_WARLOCK CLASS_MARAUDER CLASS_SORCERER ~ 95 SPELLS0~ {138} Spells {078} {128} (A) {058}A to C {128} (B) {058}D to G {128} (C) {058}H to Q {128} (D) {058}R to Z {128} (-) {058}Return {-}BITVECTORS300 {a}SPELLS1 {b}SPELLS2 {c}SPELLS3 {d}SPELLS4 ~ 95 SPELLS1~ {138} A to C {078} SPELL_NONE {078} SPELL_ACID_BLAST {078} SPELL_ACID_BREATH {078} SPELL_ANIMATE_DEAD {078} SPELL_ANTI_MAGIC_SHELL {078} SPELL_ARMOR {078} SPELL_ASTRAL_PROJECTION {078} SPELL_BANISH {078} SPELL_BENEDICTION {078} SPELL_BLESS {078} SPELL_BLINDNESS {078} SPELL_BLOCK_AREA {078} SPELL_BREATH_WATER {078} SPELL_BREW_POTION {078} SPELL_BURNING_HANDS {078} SPELL_CALL_LIGHTNING {078} SPELL_CAUSE_CRITICAL {078} SPELL_CAUSE_LIGHT {078} SPELL_CAUSE_SERIOUS {078} SPELL_CHANGE_SEX {078} SPELL_CHARM_PERSON {078} SPELL_CHILL_TOUCH {078} SPELL_COLOUR_SPRAY {078} SPELL_CONFUSION {078} SPELL_CONTINUAL_LIGHT {078} SPELL_CONTROL_WEATHER {078} SPELL_CREATE_FOOD {078} SPELL_CREATE_SPRING {078} SPELL_CREATE_WATER {078} SPELL_CURE_BLINDNESS {078} SPELL_CURE_CRITICAL {078} SPELL_CURE_LIGHT {078} SPELL_CURE_POISON {078} SPELL_CURE_SERIOUS {078} SPELL_CURSE ~ 95 SPELLS2~ {138} D to G {078} SPELL_DEMON {078} SPELL_DETECT_EVIL {078} SPELL_DETECT_HIDDEN {078} SPELL_DETECT_INVIS {078} SPELL_DETECT_MAGIC {078} SPELL_DETECT_POISON {078} SPELL_DISPEL_EVIL {078} SPELL_DISPEL_GOOD {078} SPELL_DISPEL_MAGIC {078} SPELL_DISPEL_UNDEAD {078} SPELL_EARTHQUAKE {078} SPELL_ELEMENTAL {078} SPELL_ENCHANT_WEAPON {078} SPELL_ENERGY_DRAIN {078} SPELL_ENERGY_SHIFT {078} SPELL_ENHANCED_HEAL {078} SPELL_ENHANCED_REST {078} SPELL_ENHANCED_REVIVE {078} SPELL_ENHANCE_OBJECT {078} SPELL_ETHEREAL_TRAVEL {078} SPELL_FAERIE_FIRE {078} SPELL_FAERIE_FOG {078} SPELL_FARHEAL {078} SPELL_FEAST {078} SPELL_FIREBALL {078} SPELL_FIRESHIELD {078} SPELL_FIRE_BREATH {078} SPELL_FLAMESTRIKE {078} SPELL_FLY {078} SPELL_FROST_BREATH {078} SPELL_GATE {078} SPELL_GAS_BREATH {078} SPELL_GENERAL_PURPOSE {078} SPELL_GIANT_STRENGTH ~ 95 SPELLS3~ {138} H to Q {078} SPELL_HALLUCINATE {078} SPELL_HALLUCINATORY_TERRAIN {078} SPELL_HARM {078} SPELL_HASTE {078} SPELL_HEAL {078} SPELL_HIGH_EXPLOSIVE {078} SPELL_HOLY_WORD {078} SPELL_HOMONCULOUS {078} SPELL_IDENTIFY {078} SPELL_ILLUSION {078} SPELL_IMPROVED_INVIS {078} SPELL_INDUCTION {078} SPELL_INFRAVISION {078} SPELL_INVIGORATE {078} SPELL_INVIS {078} SPELL_KNOW_ALIGNMENT {078} SPELL_LIGHTNING_BOLT {078} SPELL_LIGHTNING_BREATH {078} SPELL_LOCATE_OBJECT {078} SPELL_MAGE_BLAST {078} SPELL_MAGE_SHIELD {078} SPELL_MAGIC_MISSILE {078} SPELL_MASS_INVIS {078} SPELL_MIRROR_IMAGE {078} SPELL_NIGHTMARE {078} SPELL_OBJECT_INVIS {078} SPELL_PASS_DOOR {078} SPELL_PHANTASM {078} SPELL_POISON {078} SPELL_POSSESS {078} SPELL_PROTECTION_EVIL {078} SPELL_PROTECTION_GOOD ~ 95 SPELLS4~ {138} R to Z {078} SPELL_RECHARGE {078} SPELL_REFRESH {078} SPELL_REMOVE_CURSE {078} SPELL_REMOVE_FEAR {078} SPELL_RESTORE {078} SPELL_RIFT {078} SPELL_RIGHTEOUS_FURY {078} SPELL_RIP {078} SPELL_SANCTIFY {078} SPELL_SANCTUARY {078} SPELL_SHADOW {078} SPELL_SHADE {078} SPELL_SHIELD {078} SPELL_SHOCKING_GRASP {078} SPELL_SLEEP {078} SPELL_SLOW {078} SPELL_SMOKE {078} SPELL_SOUTHING_TOUCH {078} SPELL_STABILITY {078} SPELL_STONE_SKIN {078} SPELL_SUMMON {078} SPELL_TELEPORT {078} SPELL_TONGUES {078} SPELL_TRANSPORT {078} SPELL_TREMOR {078} SPELL_TRUESIGHT {078} SPELL_TELEPORT {078} SPELL_TONGUES {078} SPELL_TRANSPORT {078} SPELL_TREMOR {078} SPELL_TRUESIGHT {078} SPELL_UNBARRING_WAYS {078} SPELL_UNDERSTAND {078} SPELL_UNHOLY_WORD {078} SPELL_VENTRILOQUATE {078} SPELL_VAMPIRIC_TOUCH {078} SPELL_WEAKEN {078} SPELL_WORD_OF_RECALL {078} SPELL_WRITE_SPELL ~ 95 BLUEPRINTS0~ {138} Blueprints {128} (A) {058}#AREA {128} (B) {058}#HELPS {128} (C) {058}#MOBILES {128} (D) {058}#OBJECTS {128} (E) {058}#ROOMS {128} (F) {058}#SHOPS {128} (G) {058}#RESETS {128} (-) {058}Return {a}BLUEPRINTS1 {b}BLUEPRINTS2 {c}BLUEPRINTS3 {d}BLUEPRINTS4 {e}BLUEPRINTS5 {f}BLUEPRINTS6 {g}BLUEPRINTS7 {-}BUILDER ~ 95 BLUEPRINTS1~ {300} {078}#AREA {300}<{078}area name{300}>{078} {078}#AUTHORS {300}<{078}creator{300}>{078} {078}#RESETMSG {300}<{078}string{300}>{078} {078}#RANGES {300}<{078}low_soft{300}> <{078}hi_soft{300}> <{078}low_hard{300}> <{078}hi_hard{300}> {078}#TEMPERATURE {300}<{078}winter low{300}> <{078}summer low{300}> <{078}daily change{300}> <{078}wetness{300}> {078}#FLAGS {300}<{078}area flags{300}> ~ 95 BLUEPRINTS2~ {300} {078}#HELPS {300} {300}<{078}level of help{300}> <{078}keywords{300}>{078} {078} {300}<{078}help text{300}> {300} {300}<{078}link{300}>{078} {300}<{078}keyword{300}> {078} {078} {078}0 $ ~ 95 BLUEPRINTS3~ {300} {078}#MOBILES {300} {300}<{078}#vnum{300}> {300}<{078}name list{300}>{078} {300}<{078}short description{300}>{078} {300}<{078}long description{300}>{078} {300}<{078}description{300}>{078} {300}<{078}actions{300}> {300}<{078}affects{300}> {300}<{078}alignment{300}> {078}S {300}<{078}level{300}> <{078}body part{300}> <{078}attack part{300}> <{078}hitpoints ?d?+?{300}> <{078}damage ?d?+?{300}> {300}<{078}gold{300}> <{078}race{300}> {300}<{078}loaded position{300}> <{078}default position{300}> <{078}sex{300}> {300}[{078}mob program{300}] {300} {078}#0 ~ 95 BLUEPRINTS4~ {300} {078}#OBJECTS {300} {300}<{078}#vnum{300}> {300}<{078}name list{300}>{078} {300}<{078}short description{300}>{078} {300}<{078}long description{300}>{078} {300}<{078}description{300}>{078} {300}<{078}item type{300}> {300}<{078}item flags{300}> {300}<{078}wear locations{300}> {300}<{078}value0{300}> <{078}value1{300}> <{078}value2{300}> <{078}value3{300}> {300}<{078}weight{300}> <{078}cost{300}> <{078}level{300}> {300}[{078}obj program{300}] {078}E {300}<{078}extra name list{300}>{078} {300}<{078}extra description{300}>{078} {078}A {300}<{078}apply type{300}> <{078}apply amount{300}> {078}C {300}<{078}attack message{300}>{078} {300}<{078}classes that may use weapon{300}> ~ 95 BLUEPRINTS5~ {300} {078}#ROOMS {300} {300}<{078}#vnum{300}> {300}<{078}room name{300}>{078} {300}<{078}room description{300}>{078} {300}<{078}area number{300}> <{078}room flags{300}> <{078}sector type{300}> {300} {078}F {300}<{078}vnum to fall to{300}> <{078}slope of cliff{300}> <{078}amount of feet{300}> {300} {078}E {300}<{078}extra name list{300}>{078} {300}<{078}extra description{300}>{078} {078} {078}D{300}<{078}exit direction{300}> {300}<{078}exit description{300}>{078} {300}<{078}door name{300}>{078} {300}<{078}door flags{300}> <{078}key number{300}> <{078}vnum of connect room{300}> {078} {078}S {078} {078}#0 ~ 95 BLUEPRINTS6~ {300} {078}#SHOPS {300}<{078}vnum{300}> <{078}type0{300}> <{078}type1{300}> <{078}type2{300}> <{078}type3{300}> <{078}type4{300}> <{078}buy %{300}> <{078}sell %{300}> <{078}open{300}> <{078}close{300}> {078}0 ~ 95 BLUEPRINTS7~ {300} {078}#RESETS {300} {078}M {300}<{078}if-flag{300}> <{078}mob vnum{300}> <{078}maximum{300}> <{078}room vnum{300}> {078}G {300}<{078}if-flag{300}> <{078}obj vnum{300}> <{078}maximum{300}> {078}E {300}<{078}if-flag{300}> <{078}obj vnum{300}> <{078}maximum{300}> <{078}wear location{300}> {300} {078}O {300}<{078}if-flag{300}> <{078}obj vnum{300}> <{078}maximum{300}> <{078}room vnum{300}> {078}P {300}<{078}if-flag{300}> <{078}obj vnum{300}> <{078}maximum{300}> <{078}container vnum{300}> {300} {078}D {300}<{078}if-flag{300}> <{078}room vnum{300}> <{078}exit direction{300}> <{078}door flag{300}> {300} {078}R {300}<{078}if-flag{300}> <{078}room vnum{300}> <{078}last exit to randomize{300}> {300} {078}S ~ 0 $~ #$ XXXXXXXXXX #Savearea