mirror of
https://github.com/brazilofmux/tinymux
synced 2026-08-13 00:23:11 -04:00
Add SGP installer basis for building SGP minimal database distributed in TinyMUX.
git-svn-id: https://tinymux.googlecode.com/svn/branches/dev_brazil@1134 d1b986fa-651c-0410-a323-35a8662cf44d
This commit is contained in:
parent
3f07094ed5
commit
747c32e03c
17 changed files with 4126 additions and 0 deletions
172
sgp/HOWTO-CHAR-SHEETS.txt
Normal file
172
sgp/HOWTO-CHAR-SHEETS.txt
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
SGP Cgen
|
||||
HOWTO-Character Sheets: 110901
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
To begin making character sheets, you first have to define how many
|
||||
different types of characters that you have and what kinds of data the
|
||||
sheet needs to display for them. There are two schools of thought as
|
||||
to how to approach this task.
|
||||
|
||||
One is to create a large command that calls all the various strings,
|
||||
stats, and list, using switches to determine what data is shown
|
||||
according to some factor like race, character class, or some other
|
||||
virtue. This is likely advantageous on systems where there are very
|
||||
few different types of characters or there isn't much difference
|
||||
between the types of sheets needed to display. ie, if your game has
|
||||
fighters, magicians, and clerics, and there isn't a lot of other
|
||||
stuff to consider about the races that might be playing those classes,
|
||||
then certainly one big command makes sense.
|
||||
|
||||
However, as the relationship between various factors involved in dis-
|
||||
playing a character sheet become more numerous or complex, it is
|
||||
often better to create different sheets for different things. A
|
||||
fighter might be a dwarf or a human. A magic user might be a vampire
|
||||
or an elf. Both situations can possibly require you to design dis-
|
||||
plays that take those variations into account.
|
||||
|
||||
((You will have to also account for these complexities and
|
||||
restrictions in the way that you build the display conditions in the
|
||||
+stats commands themselves. For instance, in some systems, a single
|
||||
factor such as race determines the look and properties of character
|
||||
sheet(WoD). Others look at something like race and then have a
|
||||
character class or faction affiliation to consider(Triniy or D&D).))
|
||||
|
||||
For the purposes of discussion, this HOWTO covers the second method.
|
||||
|
||||
The words of the day are 'simplicity' and 'readability'.
|
||||
|
||||
In general, readable code is best. It is not always true, but in
|
||||
most cases, it serves the coder and the user better at the end of the
|
||||
day. Large, clumsy, complicated switches in code are hard to debug,
|
||||
and can also hit invokation and recursion limits -very- quickly.
|
||||
Modular design is also very good for systems with multiple sheet
|
||||
display attributes. That said, you need to look at your system and
|
||||
decide what is best.
|
||||
|
||||
Now is the time that you look at the game system and play with a text
|
||||
editor to design how your sheet will look overall. Decide where you
|
||||
want the strings, stats, and lists to appear, put the in order and
|
||||
then sit back with it. Sections of the sheet should be seperated by
|
||||
headings that say what the section is. Each of the major sections of
|
||||
the sheet should be made so they live inside an @pemit statement,
|
||||
strung together into a cohesive whole with semicolons ';'. This way,
|
||||
it is harder for the code to bottom out on one of the hard limits of
|
||||
the server itself(4k/8k buffer limits, invokation, recursion, etc...).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
&CMD-STATS SGP Cgen: WoD Support Code=$+stats:@trigger
|
||||
#140/SHEET-[get(%#/string-race)]=%#,%#
|
||||
|
||||
The above is an example of a player-level sheet command. The code
|
||||
uses @trigger and the results of get(<enactor>/string-race) to choose
|
||||
appropriate &SHEET- to display. This code returns nothing if the race
|
||||
attribute is unset(and note that it isn't a particulary great command
|
||||
because it lacks adequate error checking). Joe is a mortal and the
|
||||
code finds and emits the contents of &SHEET-MORTAL back to him. This
|
||||
is but one way to deal with selecting which sheet to use and certainly
|
||||
not the only one. The staff command takes an argument, and provides
|
||||
more error checking.
|
||||
|
||||
&SHEET-MORTAL SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Birthday:STRING-BIRTHDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))]; @pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
The code @pemit to %1, not %0 or %# in this case. Through the magic
|
||||
of MUSHCode, %1 becomes %# in the command itself. Isn't that nice and
|
||||
confusing? Now, look at the section from the beginning of the first
|
||||
@pemit to the first ';'. This part of the code displays the name of
|
||||
the character, centered in the middle of a line 78 spaces long, padded
|
||||
with '='. It is then followed by invokation of FN-DISPLAY-STRINGS to
|
||||
call a list of &STRING attributes on the character object as specified.
|
||||
FN-DISPLAY-STRINGS creates a two column display as seen below. It is
|
||||
more than possible to create string manipulation functions that use as
|
||||
few as 1 and 3 or more columns of display.
|
||||
|
||||
Example:
|
||||
|
||||
==================================< Joe >===================================
|
||||
Race: Mortal Birthday: Jan 1, 2000
|
||||
Nature: Loner Demeanor: Crabby
|
||||
Concept: Computer Geek XP:
|
||||
|
||||
|
||||
The rest of the first @pemit uses two special utility functions,
|
||||
FN_ATTRIBUTES and FN_ABILITIES. FN_ATTRIBUTES creates the header line
|
||||
and then uses the more general FN_3VCOL to produce the display from a
|
||||
single list of stats. It doesn't actually pick the order of how things
|
||||
are displayed, but lets the order of the stats on the attribute decide.
|
||||
FN_ABILITIES uses FN_3LISTSCOL to produce an alphabetically sorted, 3
|
||||
column listing based on the contents of as many as 6 attributes on the
|
||||
character object.
|
||||
|
||||
Example:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Attributes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Strength 2 Charisma 2 Perception 2
|
||||
Dexterity 2 Manipulation 2 Intelligence 2
|
||||
Stamina 2 Appearance 2 Wits 4
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Abilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Acting 2 Animal ken 2 Bureaucracy 2
|
||||
Alertness 2 Drive 2 Computer 8
|
||||
Athletics 2 Etiquette 2 Finance 4
|
||||
Brawl 2 Investigation 2
|
||||
Dodge 2 Science 3
|
||||
|
||||
|
||||
Finally, the first section is completed with the making of a new
|
||||
header line and a listing of miscellaneous stats using FN_3LISTSCOL.
|
||||
|
||||
Example:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Miscellaneous ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Contacts 4 Conscience 4 Blood 10
|
||||
Fame 2 Courage 3 Willpower 7
|
||||
Resources 5
|
||||
|
||||
|
||||
The second @pemit calls the utility function, FN_COMMON-LISTS, and
|
||||
checks the character object for specialties, merits, flaws, equip-
|
||||
ment. Joe has Merits and Flaws, but no specialties or equipment that
|
||||
needs to be listed on his sheet. FN_COMMON-LISTS can be customized by
|
||||
changing the content and the order of the listtypes in the code.
|
||||
|
||||
Example:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Merits ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
stuff and stuff
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Flaws ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
stuffed
|
||||
|
||||
The last @pemit calls another utility function called FN_HEALTH, that
|
||||
lists out wounds, bloodpool and tracks if someone is blood bound to a
|
||||
vampire or not. It ends with a line of '=' 78 characters long
|
||||
|
||||
Example:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Health ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Wounds / Agg Wounds : 0 / 0 Blood: 10 / 10
|
||||
==============================================================================
|
||||
|
||||
The value of specialized utility functions can't be overstated. In
|
||||
cases where you have multiple sheets that have sections that will be
|
||||
identical, being able to display those sections in a less spammy way
|
||||
is useful, probably vital to the maintenance of both the code and your
|
||||
sanity. The other advantage of creating such specialized functions is
|
||||
that if you want to do a mass change to the way a part of the display
|
||||
looks, you can change it in one place and have it take effect for all
|
||||
your different sheet types.
|
||||
|
||||
The &SHEET is this case is very simple, and a mix of both explicit
|
||||
function calls, and more specialitize utility functions. In truth, a
|
||||
sheet the size of Joe's could be displayed in a single @pemit
|
||||
statement. However, because other sheets are much more complex, and
|
||||
have the potential to have a lot more information on them, we broke the
|
||||
data into multiple statements to avoid hitting server limits. Other
|
||||
races in this genre(WoD), have a lot more stuff on them, so they are
|
||||
broken up even further.
|
||||
|
||||
The best thing to do is to study the way the code in other libraries
|
||||
works, as well as read the cgen helpfiles on various topics.
|
||||
|
||||
|
||||
|
||||
98
sgp/HOWTO-LIST-OBJECT.txt
Normal file
98
sgp/HOWTO-LIST-OBJECT.txt
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
SGP Cgen
|
||||
HOWTO-List Objects: 110901
|
||||
|
||||
|
||||
Data organization for SGP Cgen:
|
||||
------------------------------
|
||||
|
||||
This is a short primer on compiling lists for your game's List Object.
|
||||
|
||||
SGP cgen is based on the assumption that a character sheet for an RPG is
|
||||
grouped into 3 essential categories: strings, stats, and lists.
|
||||
|
||||
String data, for our purposes is essentially the type of information found
|
||||
at the top of a character sheet. Strings may represent both arbitrary and
|
||||
specific types of imformation, such as name(arbitrary), race(arbitrary or
|
||||
specific), gender(specific), or other information that is identifying. The
|
||||
key is that any given bit of string data is generally going to be short, a
|
||||
ew words at the most. Look at the top of the character sheet in the back
|
||||
of the book you're using. Many of those character attributes are going to
|
||||
be stored on the character object as &STRING- data.
|
||||
|
||||
Stats, for our purposes, are any character attribute that carries a specific
|
||||
numerical value, such as strength or willpower. Stats are special, because
|
||||
they are compiled into a master database that is searched before a stat is
|
||||
set on the character object. They are generally the most numerous type of
|
||||
attribute on a character sheet and are stored on the character object as a
|
||||
&STATLIST- data.
|
||||
|
||||
List data is much like strings, except that lists on a character object are
|
||||
generally arbitrary and can contain a little more information. Lists are
|
||||
generally things like merits, flaws, specialties, spells, and things you
|
||||
might find as details on the bottom of a character sheet or on supplemental
|
||||
pages. They appear on a character object as &LIST- data.
|
||||
|
||||
|
||||
Compiling listings for &STATLIST-, &STRING-, and &LIST-:
|
||||
-------------------------------------------------------
|
||||
|
||||
STRINGS: The first thing to do is to list out the types of data you want to
|
||||
store on the character object using this cgen. Begin by compiling
|
||||
&LIST-STRINGS and figuring out all the types of string data that you'll have
|
||||
appearing at the top of the sheet display. These lists may be short or long,
|
||||
but all items should be seperated by a '|'.
|
||||
|
||||
Example:
|
||||
&LIST-STRINGS List Object=name|race|class|sex
|
||||
|
||||
This list of strings becomes the list that +setstring checks to see if it is
|
||||
a valid type of string data. You can also define what may appear in something
|
||||
like race by creating and attribute on the list object accordingly.
|
||||
|
||||
Example:
|
||||
&LIST-RACE List Object=elf|human|vampire|elephant
|
||||
|
||||
STATS: Begin by using the book for your game system and define a list of
|
||||
stattypes. Write those types to a '|' seperated list. The rule of thumb is
|
||||
should be that if the book gives it a name, like a 'discipline' or 'skill' or
|
||||
'attribute', then use those names in your stat list. +setstat and +settemp
|
||||
check a master database of stats based on this listing of stats.
|
||||
|
||||
Example:
|
||||
&LIST-STATS List Object=abilities|skills|secondary-skills|pools|powers|lores
|
||||
|
||||
You then take each of the listed stat types and compile a list of stats that
|
||||
fit them. After you compile the lists, which may take a while, make an attribute
|
||||
for them. BE SURE that you check for typos.
|
||||
|
||||
Example:
|
||||
&LIST-ABILITIES List Object=strength|dexterity|intelligence|charisma
|
||||
&LIST-SKILLS List Object=driving|fighting|survival
|
||||
&LIST-SECONDARY-SKILLS List Object=racing|performance|poetry|brawl|melee
|
||||
&LIST-POOLS List Object=health|willpower|psi
|
||||
&LIST-POWERS List Object=levitation|clairvoyance|telepathy
|
||||
&LIST-LORES List Object=monsters|werewolves|history|mythology
|
||||
|
||||
LISTS: As with string data, compile your list of list data on an attribute named
|
||||
&LIST-LISTS. +setlist will check this list to see if the list is valid or not.
|
||||
You can control what may or may not be set in a given list by creating a &LIST-
|
||||
attribute for that list.
|
||||
|
||||
Example:
|
||||
&LIST-LISTS List Object=merits|flaws|gear|spells|scrolls|magick items
|
||||
&LiST-SPELLS List Object=fireball|make water|call lightning|greet the sun
|
||||
|
||||
In the latter example, you can check against the specific list of spells as a
|
||||
means to prevent misspellings, or simply to prevent strange things from cropping
|
||||
up on your character sheets.
|
||||
|
||||
Once complete, you can load the object and begin the process of building the
|
||||
character sheet itself.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
242
sgp/PLACES-SGP.txt
Normal file
242
sgp/PLACES-SGP.txt
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
@@ GLOBAL PLACES AND MUTTER CODE - SGP VERSION
|
||||
@@
|
||||
@@ This package includes code for 'places', and code for 'mutter'.
|
||||
@@
|
||||
@@ 'Places' is a global system which allows for the creation of virtual
|
||||
@@ places within rooms. This allows tables, chairs, rugs, alcoves, and
|
||||
@@ similar areas to exist without the necessity of physical objects.
|
||||
@@
|
||||
@@ 'mutter' is a set of globals which allow players to mutter messages
|
||||
@@ to each other. Muttered messages are shown in part to other players
|
||||
@@ in the room, with some of the text removed.
|
||||
@@
|
||||
@@ ----
|
||||
@@
|
||||
@@ The 'places' code is based upon Gahron (Meg's) original TableCode.
|
||||
@@ This rewrite was done by Osric, with bugfixes by Meg, and a lot of
|
||||
@@ rewriting for speed by Deirdre. All three people are from AmberMUSH.
|
||||
@@
|
||||
@@ The 'mutter' code provided here was written by Deirdre. The basic
|
||||
@@ mutter code does not require that the 'places' system be globally
|
||||
@@ installed. There are, however, two switches to mutter that are
|
||||
@@ specifically for using mutter with places.
|
||||
@@
|
||||
@@ Permission is granted to freely use and copy this code, as long as
|
||||
@@ credit is given in the +help files or some similar place (if you use
|
||||
@@ the +help files provided in this distribution, credit is already given).
|
||||
@@ Bugs and suggestions should be given to Deirdre@AmberMUSH.
|
||||
@@
|
||||
@@ ----
|
||||
@@
|
||||
@@ More rewriting by Angel@Heaven.gofast.net ... replacing @dolists with
|
||||
@@ @pemit/list .... and adding the help attributes to the parent object
|
||||
@@ instead of yet another separate help object.
|
||||
@@
|
||||
@@ Additionally, I added +spy code, and a configure command to turn on
|
||||
@@ spying on a room.
|
||||
@@
|
||||
@@ The PLACES# attributes can also include a final field that is a description
|
||||
@@ of the place in it.
|
||||
@@
|
||||
@@ ----
|
||||
@@
|
||||
@@ This code is intended to be installed in the Master Room. The main global
|
||||
@@ places object must be owned by a wizard, and set Inherit. Support for
|
||||
@@ the auxiliary functions also requires setting a @startup on the God.
|
||||
@@
|
||||
@@ This code was last tested under TinyMUSH 2.2.2 #1 (2/15/96) and is usable
|
||||
@@ on both MUX and Penn platforms.
|
||||
@@
|
||||
@@ Updated to install, assuming WIZARD can use @function. (28 Jun 00)
|
||||
@@ Updated +spy commands to use either isstaff(), which sets the value to the
|
||||
@@ defaults for how your game defines 'staff' or simply check for a WIZARD
|
||||
@@ flag. This is likely -not- the final change to how +spy and CANSPY are done.
|
||||
@@ Also mended a few typos in the installer.(3 July 00)
|
||||
@@ Fixed a bug in PLACEFUNCTION with @verb that was causing problems with
|
||||
@@ JOIN and OJOIN messages in Penn and removed a } that was causing problems
|
||||
@@ with PLACENUMS.(11 July 00)
|
||||
@@ Fixed a problem with escapes that was causing tt and ttooc commands to fail
|
||||
@@ in Penn.(11 July 00)
|
||||
@@ Added SGP +version information (16 December 00)
|
||||
@@ Fixed a legacy bug in DO_SIT and DO_JOIN(13 February 01)
|
||||
@@
|
||||
@@ --- PLACES CODE ---
|
||||
@@
|
||||
|
||||
@pemit me=Creating Places Code Objects...Moment%R%R
|
||||
|
||||
@create Places_global_object
|
||||
@create Places_function_object
|
||||
@parent Places_global_object=Places_function_object
|
||||
@Desc Places_global_object=The Places Code. Tables, rugs, beds, ladders, etc.
|
||||
@fo me=&EVAL_OBJ Places_global_object=[num(Places_function_object)]
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(Places_global_object)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(Places_function_object)]
|
||||
|
||||
@wait 0=&SGP-VERSION Places_global_object=SGP-Y2K|Base|[rest(ldelete(time(),4,))]
|
||||
@wait 0=&SGP-VERSION Places_function_object=SGP-Y2K|Base|[rest(ldelete(time(),4,))]
|
||||
|
||||
&UPDATE-HISTORY Places_global_object=Y2K
|
||||
&UPDATE-HISTORY Places_function_object=Y2K
|
||||
|
||||
@@
|
||||
@@ @@ Configuring Places
|
||||
@@
|
||||
|
||||
@pemit me=Quoting Places Commands...Moment%R%R
|
||||
|
||||
&DO_CONFIGURE Places_global_object=$configure * places: @switch/first [controls(%#,%l)]:[isnum(%0)]:%0=0:*:*, {@pemit %#=You do not control [name(%l)].},*:0:*, {@pemit %#=The number of places needs to be a number!},*:*:0, {@dolist rest(lnum(add(get(%l/PLACESMAX),1)))={@unlock %l/PLACE##;&PLACE## %l};@unlock %l/PLACESCLEANUP1;@unlock %l/PLACESCLEANUP2;@unlock %l/PLACESMAX;&PLACESCLEANUP1 %l;&PLACESCLEANUP2 %l;&PLACESMAX %l;@set %l=!MONITOR;@pemit %#=Places removed from [name(%l)].},{&PLACESMAX %l=%0;@dolist rest(lnum(add(%0,1)))={@unlock %l/PLACE##;&PLACE## %l=ulocal(SETUP_FN,##,add(rand(9),1))};@unlock %l/PLACESCLEANUP1;@unlock %l/PLACESCLEANUP2;@unlock %l/PLACESMAX;@set %l=MONITOR;&PLACESCLEANUP1 %l=v(PLACESCLEANUP1);&PLACESCLEANUP2 %l=v(PLACESCLEANUP2);&PLACENUMS %l=[repeat(|,%0)];@pemit %#=Configuration for %0 places complete.}
|
||||
|
||||
&DO_CONFIGURE_SPYING Places_global_object=$configure spy* *: @switch/first [controls(%#,%l)]:[ucstr(%1)]=0:*, {@pemit %#=You do not control [name(%l)].},*:Yes, {@pemit %#=Setting this room to allow Spying. ;&SPYOK %L=Yes ;},*:No, {@pemit %#=Setting this room to disallow Spying. Please include a reason why it should not work in a note on the room. ;&SPYOK %L=No ;},{@pemit %#=The valid commands are:%r%tconfigure spying Yes%r%tconfigure spying No%rPlease use one of those.}
|
||||
|
||||
&SETUP_FN Places_global_object=Table %0|%1|[add(rand(%1),1)]||I'm sorry, there's no room to add a place there.|I'm sorry, there's on place to move there.|You sit down at|sits down at|You stand and leave|stands and leaves|At your table|A table with 4 legs and some chairs around it.
|
||||
|
||||
@@
|
||||
@@ @@ Update
|
||||
@@
|
||||
|
||||
&DO_UPDATE Places_global_object=$update */*=*: @switch/first [controls(%#,%l)]:[and(isnum(%0),lte(%0,get(%l/PLACESMAX)))]:[member(NAME MAXPLACES CURPLACES FIXED FULL EMPTY JOIN OJOIN DEPART ODEPART PREFIX DESCRIBE,ucstr(%1))]=0:*:*, {@pemit %#=Permission denied.},*:0:*, {@pemit %#=I'm sorry, but '%0' isn't a valid place number.},*:*:0, {@pemit %#=I'm sorry, but '%1' isn't a valid configuration option.},{@unlock %l/PLACE%0;&PLACE%0 %l=ulocal(UPDATEINFO,%l,%0,%1,%2);@pemit %#=The %1 for [ulocal(GETINFO,%l,%0,NAME)] is now set to:%r[space(5)][ulocal(GETINFO,%l,%0,%1)]}
|
||||
|
||||
@@
|
||||
@@ @@ Mv
|
||||
@@
|
||||
|
||||
&DO_MV Places_global_object=$mv from * to *: @switch/first 0=and(gt(%0,0),lte(%0,get(%l/PLACESMAX))), {@pemit %#='%0' is not a valid place number.},and(gt(%1,0),lte(%1,get(%l/PLACESMAX))), {@pemit %#='%1' is not a vaild place number.},not(words(ulocal(GETINFO,%l,%0,FIXED))), {@pemit %#=ulocal(GETINFO,%l,%0,FIXED)},not(words(ulocal(GETINFO,%l,%1,FIXED))), {@pemit %#=ulocal(GETINFO,%l,%1,FIXED)},sub(ulocal(GETINFO,%l,%0,CURPLACES),words(extract(get(%l/PLACENUMS),%0,1,|))), {@pemit %#=ulocal(GETINFO,%l,%0,EMPTY)},neq(ulocal(GETINFO,%l,%1,CURPLACES),ulocal(GETINFO,%l,%1,MAXPLACES)), {@pemit %#=ulocal(GETINFO,%l,%1,FULL)},{@unlock %l/PLACE%0;@unlock %l/PLACE%1;&PLACE%0 %l=ulocal(UPDATEINFO,%l,%0,CURPLACES,sub(ulocal(GETINFO,%l,%0,CURPLACES),1));&PLACE%1 %l=ulocal(UPDATEINFO,%l,%1,CURPLACES,add(ulocal(GETINFO,%l,%1,CURPLACES),1));@pemit %#=You move a place from [ulocal(GETINFO,%l,%0,NAME)] to [ulocal(GETINFO,%l,%1,NAME)].}
|
||||
|
||||
@@
|
||||
@@ @@ Places Cleanup
|
||||
@@
|
||||
|
||||
&PLACESCLEANUP1 Places_global_object=^* has left.:placescleanup(%#)
|
||||
&PLACESCLEANUP2 Places_global_object=^* has disconnected.:placescleanup(%#)
|
||||
&PLACESCLEANUPCMD Places_global_object=$placescleanup(*):@switch [setq(0, U(WHICHPLACE, %#, %0))][r(0)]=>0, {&PLACENUMS %#=[replace(get(%#/PLACENUMS), r(0), remove(extract(get(%#/PLACENUMS), r(0), 1, |), %0), |)]}
|
||||
|
||||
@@
|
||||
@@ @@ Join
|
||||
@@
|
||||
|
||||
&DO_JOIN Places_global_object=$join *: @switch/first [not(ulocal(WHICHPLACE,%l,%#))] [lcstr(%0)]=0 *, {@pemit %#=Don't you think you should 'depart' first?},1 at #*, {@trig me/PLACEFUNCTION=%l,%#,[delete(rest(%0),0,1)]},1 at *, {@trig me/PLACEFUNCTION=%l,%#,[rest(%0)]},1 #*, {@trig me/PLACEFUNCTION=%l,%#,[delete(%0,0,1)]},1 with *, {@pemit[setq(1,locate(%#,rest(%0),niPT))][setq(0,ulocal(WHICHPLACE,%l,r(1)))]%#=switch(r(0),0,There isn't anyone named '[capstr(rest(%0))]' at a special place.,You go over to join [name(r(1))].);@trig me/[switch(r(0),0,-,PLACEFUNCTION)]=%l,%#,[r(0)]},{@switch [isnum(%0)][setq(1,locate(%#,%0,niPT))][setq(0,ulocal(WHICHPLACE,%l,r(1)))]=1,{@trig me/PLACEFUNCTION=%l,%#,%0 ;},{@pemit %#=switch(r(0),0,There isn't anyone named '[capstr(rest(%0))]' at a special place.,You go over to join [name(r(1))].);@trig me/[switch(r(0),0,-,PLACEFUNCTION)]=%l,%#,[r(0)]}}
|
||||
|
||||
&DO_SIT Places_global_object=$sit *: @switch/first [not(ulocal(WHICHPLACE,%l,%#))] [lcstr(%0)]=0 *, {@pemit %#=Don't you think you should 'depart' first?},1 at #*, {@trig me/PLACEFUNCTION=%l,%#,[delete(rest(%0),0,1)]},1 at *, {@trig me/PLACEFUNCTION=%l,%#,[rest(%0)]},1 #*, {@trig me/PLACEFUNCTION=%l,%#,[delete(%0,0,1)]},1 with *, {@pemit[setq(1,locate(%#,rest(%0),niPT))][setq(0,ulocal(WHICHPLACE,%l,r(1)))]%#=switch(r(0),0,There isn't anyone named '[capstr(rest(%0))]' at a special place.,You go over to join [name(r(1))].);@trig me/[switch(r(0),0,-,PLACEFUNCTION)]=%l,%#,[r(0)]},{@switch [isnum(%0)][setq(1,locate(%#,%0,niPT))][setq(0,ulocal(WHICHPLACE,%l,r(1)))]=1,{@trig me/PLACEFUNCTION=%l,%#,%0},{@pemit %#=switch(r(0),0,There isn't anyone named '[capstr(rest(%0))]' at a special place.,You go over to join [name(r(1))].);@trig me/[switch(r(0),0,-,PLACEFUNCTION)]=%l,%#,[r(0)]}}
|
||||
|
||||
&PLACEFUNCTION Places_global_object=@switch/first 0=[lte(%2, get(%0/PLACESMAX))], @pemit %1=Invalid Place Number '%2'.,[setq(1, extract(get(%0/PLACENUMS), %2, 1, |))][gt(ulocal(GETINFO, %0, %2, CURPLACES), words(r(1)))], {@pemit %1=There aren't any free spaces there.},{@verb %1=[setq(0,ulocal(getinfo,%0,%2,NAME))]%1,eval_msg,[edit([U(GETINFO, %0, %2, JOIN)] [r(0)].,%,,%%%,)],oeval_mesg,[edit([U(GETINFO, %0, %2, OJOIN)] [r(0)].,%,,%%%,)];@pemit/list [r(1)]= [name(%1)] joins you. ;&PLACENUMS %0=[replace(get(%0/PLACENUMS), %2, [r(1)]%1%b, |)]}
|
||||
|
||||
|
||||
@@
|
||||
@@ @@ Depart
|
||||
@@
|
||||
|
||||
&DO_DEPART Places_global_object=$depart:@switch [setq(1, U(WHICHPLACE, %l, %#))][setq(0,U(GETINFO,%l,r(1),NAME))][r(1)]=0, {@pemit %#=You aren't placed anywhere.},{&PLACENUMS %l=[replace(get(%l/PLACENUMS), r(1), [remove(extract(get(%l/PLACENUMS), r(1), 1, |), %#)], |)];@pemit/list [extract(get(%l/PLACENUMS), r(1), 1, |)]=%N has departed.;@pemit %#=[edit([U(GETINFO, %l, r(1), DEPART)] [r(0)].,%,,%%%,)];@pemit/list [ldelete(lcon(%L),match(lcon(%L),%#))]=%N [edit([U(GETINFO, %l, r(1), ODEPART)] [r(0)].,%,,%%%,)]}
|
||||
|
||||
&DO_STAND Places_global_object=$stand:@switch [setq(1, U(WHICHPLACE, %l, %#))][setq(0,U(GETINFO,%l,r(1),NAME))][r(1)]=0, {@pemit %#=You aren't placed anywhere.},{&PLACENUMS %l=[replace(get(%l/PLACENUMS), r(1), [remove(extract(get(%l/PLACENUMS), r(1), 1, |), %#)], |)];@pemit/list [extract(get(%l/PLACENUMS), r(1), 1, |)]=%N has departed.;@pemit %#=[edit([U(GETINFO, %l, r(1), DEPART)] [r(0)].,%,,%%%,)];@pemit/list [ldelete(lcon(%L),match(lcon(%L),%#))]=%N [edit([U(GETINFO, %l, r(1), ODEPART)] [r(0)].,%,,%%%,)]}
|
||||
|
||||
@@
|
||||
@@ @@ Places and Place
|
||||
@@
|
||||
|
||||
&DO_PLACES Places_global_object=$places: @pemit %#=switch(get(%l/PLACESMAX),,There are no special places here.,0,There are no special places here.,map(PLACES_FN,rest(lnum(add(get(%l/PLACESMAX),1)))))
|
||||
|
||||
&DO_PLACE Places_global_object=$place *: @pemit %#=switch(get(%l/PLACESMAX),,There are no special places here.,0,There are no special places here.,map(PLACES_FN,edit(%0,#,)))
|
||||
|
||||
&PLACES_FN Places_global_object=%r[setq(0,ulocal(GETINFO,%l,%0,CURPLACES))][setq(1,extract(get(%l/PLACENUMS),%0,1,|))][capstr(ulocal(GETINFO,%l,%0,NAME))] (#%0) has [setq(2,sub(r(0),words(r(1))))][switch(r(2),0,no empty places,1,1 empty place,[r(2)] empty places)].[switch(words(r(1)),0,,1,%r%tPresent is: %b[name(edit(r(1),%b,))].,%r%tPresent are: %b[ulocal(PLACE_LOOK,r(1))])]
|
||||
|
||||
&PLACE_LOOK Places_global_object=[setq(9,words(%0))][switch(r(9),0,,1,name(%0),2, [name(first(%0))] and [name(rest(%0))],[iter(extract(%0,1,sub(r(9),1)),{name(##),})] and [name(extract(%0,r(9),1))])]
|
||||
|
||||
&DO_PLOOK Places_global_object=$plook: @pemit %#=[setq(0,edit(get(%l/PLACENUMS),|,))][fold(PLOOK_FOLD_FN,rest(lnum(add(get(%l/PLACESMAX),1))),-----)]%rNo place [space(3)] [setq(3,setdiff(setinter(lcon(%l),lwho()),r(0)))][rjust([words(r(3))] at no places,15)] [space(3)] [setq(4,sort(iter(r(3),name(##))))][ljust(mid(extract(r(4),1,1),0,14),14)] [ljust(mid(extract(r(4),2,1),0,14),14)] [ljust(mid(extract(r(4),3,1),0,14),14)][switch(gt(words(r(4)),3),1,ulocal(NAME_3COL_FN,extract(r(4),4,3999)))]%r-----
|
||||
|
||||
&PLOOK_FOLD_FN Places_global_object=%0%r[setq(1,extract(get(%l/PLACENUMS),%1,1,|))]Place #[ljust(%1,5)] [rjust([sub(ulocal(GETINFO,%l,%1,CURPLACES),words(r(1)))] empty places,15)] [space(3)] [setq(2,sort(iter(r(1),name(##))))][ljust(mid(extract(r(2),1,1),0,14),14)] [ljust(mid(extract(r(2),2,1),0,14),14)] [ljust(mid(extract(r(2),3,1),0,14),14)][switch(gt(words(r(2)),3),1,ulocal(NAME_3COL_FN,extract(r(2),4,3999)))]
|
||||
|
||||
&NAME_3COL_FN Places_global_object=[fold(NAME_3AUX_FN,rest(%0),%r[space(33)][ljust(mid(first(%0),0,14),15)])]
|
||||
|
||||
&NAME_3AUX_FN Places_global_object=%0[switch(mod(words(%0),4),0,%r[space(33)][ljust(mid(%1,0,14),15)],[ljust(mid(%1,0,14),15)])]
|
||||
&DO_PLOOK_NUMBER Places_global_object=$plook *:@pemit %#=switch(get(%l/PLACESMAX),,There are no special places here.,0,There are no special places here.,%r[capstr(ulocal(GETINFO,%l,%0,NAME))]:%r[ulocal(GETINFO,%l,edit(%0,#,),DESCRIPTION)])
|
||||
|
||||
&DO_TT Places_global_object=$tt *:@pemit/list [setq(0,ulocal(WHICHPLACE,%l,%#))][switch(r(0),0,%#[setq(1,You'll need to join a place first.)],[extract(get(%l/PLACENUMS),r(0),1,|)][setq(1,[ulocal(GETINFO,%l,r(0),PREFIX)]%, [switch(%0,:*,%N [delete(%0,0,1)],;*,%N[delete(%0,0,1)],"*,%N says "[delete(%0,0,1)]",|*,delete(%0,0,1),%N says "%0")])])]=[r(1)];@pemit/list [iter(lcon(%l),switch(strmatch([get(##/SPYING)],%l [r(0)]),1,##))]=(Overheard) [r(1)]
|
||||
|
||||
&DO_TTOOC Places_global_object=$ttooc *:@pemit/list [setq(0,ulocal(WHICHPLACE,%l,%#))][switch(r(0),0,%#[setq(1,You'll need to join a place first.)],[extract(get(%l/PLACENUMS),r(0),1,|)][setq(1,<OOC> [ulocal(GETINFO,%l,r(0),PREFIX)]%, [switch(%0,:*,%N [delete(%0,0,1)],;*,%N[delete(%0,0,1)],"*,%N says "[delete(%0,0,1)]",|*,delete(%0,0,1),%N says "%0")])])]=r(1);@pemit/list [iter(lcon(%l),switch(strmatch([get(##/SPYING)],%l [r(0)]),1,##))]=(Overheard) [r(1)]
|
||||
|
||||
&WHICHPLACE Places_global_object=[match(get(%0/PLACENUMS), *%1%b*, |)]
|
||||
|
||||
&GETINFO Places_global_object=[extract(get(%0/PLACE%1),match(NAME MAXPLACES CURPLACES FIXED FULL EMPTY JOIN OJOIN DEPART ODEPART PREFIX DESCRIPTION,%2),1,|)]
|
||||
|
||||
&UPDATEINFO Places_global_object=[replace(get(%0/PLACE%1),match(NAME MAXPLACES CURPLACES FIXED FULL EMPTY JOIN OJOIN DEPART ODEPART PREFIX DESCRIBE,%2),%3,|)]
|
||||
|
||||
&ATPLACE Places_global_object=[extract(get(%0/PLACENUMS), %1, 1, |)]
|
||||
|
||||
@Desc Places_function_object=This evaluator can be used with @verb to send literal messages with correct substitutions. To use it, go @verb [num(me)]=<actor>,eval_msg,,oeval_msg,,%{<msg>,<omsg>%}%rExtra arguments may be passed via setq(), and recovered in msg, omsg via %[r(X)%].
|
||||
|
||||
&EVAL_MSG Places_function_object=[s(%0)]
|
||||
|
||||
&OEVAL_MSG Places_function_object=[s(%1)]
|
||||
|
||||
&FUNC_ATPLACE Places_global_object=[switch(or(controls(%#,%0),match(rloc(%l,100),rloc(%0,100))),1,extract(get(%0/PLACENUMS), %1, 1, |),PERMISSION DENIED)]
|
||||
|
||||
&FUNC_PLACEINFO Places_global_object=[switch(or(controls(%#,%0),match(rloc(%l,100),rloc(%0,100))),1,extract(get(%0/PLACE%1),match(NAME MAXPLACES CURPLACES FIXED FULL EMPTY JOIN OJOIN DEPART ODEPART PREFIX,%2),1,|),PERMISSION DENIED)]
|
||||
|
||||
&FUNC_WHICHPLACE Places_global_object=[switch(or(controls(%#,%0),match(rloc(%l,100),rloc(%0,100))),1,match(get(%0/PLACENUMS), *%1%b*, |),PERMISSION DENIED)]
|
||||
@pemit me=[center(*** QUOTE OF PLACES DONE ***,78)]
|
||||
|
||||
@@
|
||||
@@
|
||||
@@ --- MUTTER CODE ---
|
||||
|
||||
@@
|
||||
@@ @@ The Commands
|
||||
@@
|
||||
|
||||
@pemit me=Adding Mutter Code...Moment%R%R
|
||||
|
||||
|
||||
&DO_MUTTER Places_global_object=$mutter *=*: @remit [setq(0,locate(%#,%0,nimP))][switch(r(0),#-1,XX,#-2,XX,%l)]={[switch(%1,:* "*"*,{%N [first(delete(%1,0,1),")]%S mutters to [setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},:*,{%N mutters to [switch(r(0),%#,%oself,name(r(0)))].},;* "*"*,{%N[first(delete(%1,0,1),")]%S mutters to [setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},;*,{%N mutters to [switch(r(0),%#,%oself,name(r(0)))].},{[setq(1,ulocal(MUTTER_FN,%1))]%N mutters to [switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})]})]};@pemit %#[setq(2,edit(edit(%1,<,),>,))]=switch(r(0),#-1,I don't see that here.,#-2,I'm not sure which %0 you mean.,ulocal(MUTTER_FROM_FN,%#,r(0),r(2)));@pemit [switch(r(0),%#,XX,r(0))]=ulocal(MUTTER_TO_FN,%#,r(0),r(2))
|
||||
|
||||
&DO_MUTTER_PLACE Places_global_object=$mutter/place *=*: @switch and(gte(%0,1),lte(%0,get(%l/PLACESMAX)))=0, {@pemit %#=There is no such place here.},{@remit %l={[switch(%1,:* "*"*,{%N [first(delete(%1,0,1),")]%S mutters to [PlaceInfo(%l,%0,NAME)][setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},:*,{%N mutters to [PlaceInfo(%l,%0,NAME)],},;* "*"*,{%N[first(delete(%1,0,1),")]%S mutters to [PlaceInfo(%l,%0,NAME)][setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},;*,{%N mutters to [PlaceInfo(%l,%0,NAME)]},{[setq(1,ulocal(MUTTER_FN,%1))]%N mutters to [PlaceInfo(%l,%0,NAME)][switch(r(1),....,.,{, "[r(1)]"})]})]};@pemit/list [setq(2,edit(edit(%1,<,),>,))][setq(3,{[PlaceInfo(%l,%0,PREFIX)], [switch(r(2),:*,%N [delete(r(2),0,1)],;*,%N[delete(r(2),0,1)],%N says "[r(2)]")]})][setunion(AtPlace(%l,%0),%#)]=r(3)}
|
||||
|
||||
&DO_MUTTER_TT Places_global_object=$mutter/tt *=*: @switch/first [setq(0,locate(%#,%0,nimP))][r(0)] [setq(9,WhichPlace(%l,%#))][switch(r(9),0,setq(9,WhichPlace(%l,r(0))))][r(9)]=#-1 *, {@pemit %#=I don't see that here.},#-2 *, {@pemit %#=I'm not sure which %0 you mean.},* 0, {@pemit %#=Neither you nor [name(r(0))] is at a special place.},{@pemit/list [setq(8,{[PlaceInfo(%l,r(9),PREFIX)], [switch(%1,:* "*"*,{%N [first(delete(%1,0,1),")]%S mutters to [setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},:*,{%N mutters to [switch(r(0),%#,%oself,name(r(0)))].},;* "*"*,{%N[first(delete(%1,0,1),")]%S mutters to [setq(1,ulocal(MUTTER_FN,extract(%1,2,1,")))][switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})] [rest(rest(%1,"),")]},;*,{%N mutters to [switch(r(0),%#,%oself,name(r(0)))].},{[setq(1,ulocal(MUTTER_FN,%1))]%N mutters to [switch(r(0),%#,%oself,name(r(0)))][switch(r(1),...,.,{, "[r(1)]"})]})]})][setunion(AtPlace(%l,r(9)),%# [r(0)])]=r(8);@pemit/list [iter(lcon(%l),switch(strmatch([get(##/SPYING)],%l [r(0)]),1,##))]=(Overheard) [r(8)]@pemit %#=[setq(2,edit(edit(%1,<,),>,))][ulocal(MUTTER_FROM_FN,%#,r(0),r(2))];@pemit r(0)=ulocal(MUTTER_TO_FN,%#,r(0),r(2))}
|
||||
|
||||
&DO_SPY Places_global_object=$+spy *:@switch/first [member(get([parent(me)]/CANSPY),%#)]:[words(get(%l/PLACESMAX))]:[and(gte(%0,0),lte(%0,get(%l/PLACESMAX)))]:[member(get(%L/SPYOK),Yes)]=0:*:*:*,{@pemit %#=You can't do that.},*:0:*:*,{@pemit %#=There aren't any special places here.},*:*:0:*,{@pemit %#=Invalid place number: '%0'.},*:*:*:0,{@pemit %#=Spying can not be used in this room.},{@switch %0=0,{@unlock %#/SPYING;&SPYING %#;@Pemit %#=You cease listening to that place.},{@unlock %#/SPYING;&SPYING %#=%L %0;@lock %#/SPYING=me;@Pemit %#=You listen in on a nearby conversation.}}
|
||||
|
||||
&SPY_WHO Places_global_object=$+spy/who:@switch isstaff(%#)=0,{@pemit %#=You're not authorized to do that.},{@pemit %#=[repeat(*,78)]%RCharacters currently possessing +spy capability:%R%R[iter(get([parent(me)]/CANSPY),switch(mod(member(get([parent(me)]/CANSPY),##),4),0,%R[ljust(name(##),15)],[ljust(name(##),15)]))]%R%R[repeat(*,78)]}
|
||||
|
||||
&SPY_ADD Places_global_object=$+spy/add *:@switch orflags(%#,W)=0,{@pemit %#=You're not authorized to do that.},{@switch member(get([parent(me)]/CANSPY),num(*%0))=0,{&CANSPY [parent(me)]=cat(get([parent(me)]/CANSPY),num(*%0));@pemit %#=[name(num(*%0))] has been cleared for spying.},{@pemit %#=That person is already cleared for spying.}}
|
||||
|
||||
&SPY_REMOVE Places_global_object=$+spy/remove *:@switch orflags(%#,W)=0,{@pemit %#=You're not authorized to do that.},{@switch member(get([parent(me)]/CANSPY),num(*%0))=0,{@pemit %#=That person is not in the Master Spy List.},{&CANSPY [parent(me)]=remove(get([parent(me)]/CANSPY),num(*%0));@pemit %#=[name(num(*%0))] is removed from the Master Spy List.}}
|
||||
|
||||
&DO_TT Places_global_object=$tt *:@pemit/list [setq(0,ulocal(WHICHPLACE,%l,%#))][switch(r(0),0,%#[setq(1,You'll need to join a place first.)],[extract(get(%l/PLACENUMS),r(0),1,|)][setq(1,\{[ulocal(GETINFO,%l,r(0),PREFIX)], [switch(%0,:*,%N [delete(%0,0,1)],;*,%N[delete(%0,0,1)],"*,%N says "[delete(%0,0,1)]",|*,delete(%0,0,1),%N says "%0")]\})])]=r(1);@pemit/list [iter(lcon(%l),switch(strmatch([get(##/SPYING)],%l [r(0)]),1,##))]=(Overheard) [r(1)]
|
||||
|
||||
&MUTTER_FN Places_function_object=[edit(ulocal(DOTS_FN,ulocal(SELECT_WORDS_FN,%0)),%b...,...)]
|
||||
|
||||
&MUTTER_TO_FN Places_function_object=[switch(%2,:*,{You sense [name(%0)] [delete(%2,0,1)]},;*,{You sense [name(%0)][delete(%2,0,1)]},{[name(%0)] whispers "%2"})]
|
||||
|
||||
&MUTTER_FROM_FN Places_function_object=[switch(%0,%1,switch(%2,:*,{You sense "[name(%0)] [delete(%2,0,1)]"},;*,{You sense "[name(%0)][delete(%2,0,1)]"},{You mutter to yourself, "%2"}),switch(%2,:*,{[name(%1)] senses "[name(%0)] [delete(%2,0,1)]"},;*,{[name(%1)] senses "[name(%0)][delete(%2,0,1)]"},{You whisper "%2" to [name(%1)].}))]
|
||||
|
||||
&DOTS_FN Places_function_object=[switch(%0,*... ...*,ulocal(DOTS_FN,edit(%0,... ...,...)),%0)]
|
||||
|
||||
&SELECT_WORDS_FN Places_function_object=[switch(%0,*<*>*,[map(KILL_WORDS_FN,before(%0,<))] [before(after(%0,<),>)] [ulocal(SELECT_WORDS_FN,after(%0,>))],map(KILL_WORDS_FN,%0))]
|
||||
|
||||
&KILL_WORDS_FN Places_function_object=[switch([rand(3)]%0,0,,1,,2,,0*,%0,...)]
|
||||
|
||||
&CANSPY Places_function_object=#1
|
||||
|
||||
@pemit me=[center(*** QUOTE OF MUTTER DONE ***,78)]
|
||||
@pemit me=[center(*** END OF QUOTE ***,78)]
|
||||
|
||||
@pemit me=[center(*** Setting Flags ***,78)]
|
||||
|
||||
|
||||
@set Places_global_object=SAFE
|
||||
@set Places_function_object=SAFE
|
||||
|
||||
@switch version()=PennMUSH*,{@Startup Places_global_object=@dolist lattr(me/FUNC_*)=@function after(##,FUNC_)=me,##},{@Startup Places_global_object=@dolist lattr(me/FUNC_*)=@function/privileged after(##,FUNC_)=me/##}
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set Places_global_object=INHERIT;@set Places_global_object=COMMANDS;@set Places_global_object=STOP;@set Places_global_object=SAFE},PennMUSH*,{@set Places_global_object=!NO_COMMAND;@set Places_global_object=WIZARD},MUX*,{@set Places_global_object=INHERIT;@set Places_global_object=!NO_COMMAND;@set Places_global_object=SAFE},RhostMUSH*,{@set Places_global_object=INHERIT;@set Places_global_object=!NOCOMMAND;@set Places_global_object=SAFE;@set Places_global_object=STOP}
|
||||
|
||||
@pemit me=[center(*** Triggering @startup ***,78)]
|
||||
|
||||
@tr Places_global_object/startup
|
||||
|
||||
|
||||
drop Places_global_object
|
||||
drop Places_function_object
|
||||
|
||||
@pemit me=Installation of PLACES complete. Make sure that you put these objects in the master room and that you install the correct version of +help for your server.
|
||||
197
sgp/SGP-+help.txt
Normal file
197
sgp/SGP-+help.txt
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
@@ ############################################################################
|
||||
@@
|
||||
@@ SGP - Help Data and +help/+wizhelp commands for Penn and Tiny 2.2.x
|
||||
@@ 1 August 00
|
||||
@@ This file creates one new SGP object for the purpose of helpfile storage.
|
||||
@@ It adds +help and +wizhelp commands to existing SGP commands objects and
|
||||
@@ sets reference attributes for use by this code.
|
||||
@@
|
||||
@@ This +help system is very basic, but functional. Certainly, there are
|
||||
@@ better systems around. Look for one, if this code doesn't suit your needs.
|
||||
@@
|
||||
@@ Coded by BEM and Audumla@Sandbox
|
||||
@@
|
||||
@@ Updated 4 Jan 01 to add +version and correct a problem with &LIST_COMMANDS
|
||||
@@ on servers with native multipaging.
|
||||
@@
|
||||
@@ Updated 28 Jun 00 to fix a bug in DO_COL that rendered +help and +wizhelp
|
||||
@@ non-functional. Patch by Raevnos@M*U*S*H
|
||||
@@
|
||||
@@ Updated 17 July 00 to add a file for the +motd code.
|
||||
@@
|
||||
@@ Updated 25 April 01 to update a file for the +motd code.
|
||||
@@
|
||||
@@ ############################################################################
|
||||
|
||||
@pemit me=Setting +help and +wizhelp commands in the main globals.... Moment.
|
||||
|
||||
&CMD-PLUS-HELP SGP - Main Globals=$+help*:@pemit %#=setq(0,help_[edit(trim(%0),%b,_)])[switch(setq(1,match(lattr(v(help-db)),%q0))%q1,0,{Sorry, no +help available on that topic},u(v(help-db)/[index(lattr(v(help-db)),,%q1,1)]))]
|
||||
|
||||
&CMD-PLUS-WIZHELP SGP - Staff Globals=$+wizhelp*:@pemit %#=setq(0,wizhelp_[edit(trim(%0),%b,_)])[switch(setq(1,match(lattr(v(help-db)),%q0))%q1,0,{Sorry, no +wizhelp available on that topic},u(v(help-db)/[index(lattr(v(help-db)),,%q1,1)]))]
|
||||
|
||||
@pemit me=Creating SGP - Help Data.... Moment.
|
||||
|
||||
@create SGP - Help Data
|
||||
|
||||
@wait 0=&HELP-DB SGP - Main Globals=num(SGP - Help Data)
|
||||
@wait 0=&HELP-DB SGP - Wizard Globals=num(SGP - Help Data)
|
||||
@wait 0=&HELP-DB SGP - Staff Globals=num(SGP - Help Data)
|
||||
|
||||
@pemit me=Now setting functional code for +help code.... Moment.
|
||||
|
||||
&DO_COL SGP - Help Data=[setq(0,fold(max_length,%0,0,%1))][setq(1,div(76,add(%q0,1)))][setq(2,sub(div(76,%q1),1))][setq(3,add(1,div(sub(words(%0,%1),1),%q1)))][setq(4,0)][iter(lnum(%q3),%r%b%b[iter(lnum(%q1),ljust(index(%0,%1,setq(4,add(1,%q4))%q4,1),%q2))])]
|
||||
|
||||
&DO_LIST SGP - Help Data=[u(do_col,edit(edit(sort(edit(%0,HELP_,)),%b,|),_,%b),|)]
|
||||
|
||||
&DO_WIZLIST SGP - Help Data=[u(do_col,edit(edit(sort(edit(%0,WIZHELP_,)),%b,|),_,%b),|)]
|
||||
|
||||
&HELP_ SGP - Help Data=[repeat(-,78)]%RHelp on the following topics is avaliable by typing: +help <topic>%R[u(do_col,sort(v(list_commands),a,|),|)]%R[repeat(-,78)]
|
||||
|
||||
&HELP_ALL SGP - Help Data=[repeat(-,78)]%RThe following is a list of ALL the topics available using +help:%R[u(do_list,lattr(me/help_*))]%R[repeat(-,78)]
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{&LIST_COMMANDS SGP - Help Data=ALL|BACKGROUNDS|+beginner|+cnotes|+finger|+finger-setup|+glance|+ic|+info|+info-setup|+knock|+3who*|+lwho|+shout|+staff|+staff-all|+timestamp|+timestop|+uptime|+view|+view-setup|+warn|+where|+who|@register|CREDITS|mutter|OOC|PLACES|places-config|places-options|plook|mp},{&LIST_COMMANDS SGP - Help Data=ALL|BACKGROUNDS|+beginner|+cnotes|+finger|+finger-setup|+glance|+ic|+info|+info-setup|+knock|+3who*|+lwho|+shout|+staff|+staff-all|+timestamp|+timestop|+uptime|+view|+view-setup|+warn|+where|+who|@register|CREDITS|mutter|OOC|PLACES|places-config|places-options|plook}
|
||||
|
||||
&MAX_LENGTH SGP - Help Data=max(%0,strlen(%1))
|
||||
|
||||
&WIZHELP_ SGP - Help Data=[repeat(-,78)]%RHelp on the following topics is avaliable by typing: +wizhelp <topic>%R[u(do_col,sort(v(wizlist_commands),a,|),|)]%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_ALL SGP - Help Data=The following is a list of ALL the topics available using +wizhelp:%R[u(do_wizlist,lattr(me/wizhelp_*))]
|
||||
|
||||
&WIZLIST_COMMANDS SGP - Help Data=ALL|+accept|BACKGROUNDS|+cnotes|+commands|+contents|+duty|+join|+motd|+register|+rjoin|+rsummon|+stnotes|+summon|+timestamp|CONFIGURE|DEFAULTS|FUNCTIONS|PROJECT|+staff|+version
|
||||
|
||||
|
||||
@pemit me=Now setting +HELP attributes.... Moment.
|
||||
|
||||
|
||||
&HELP_BACKGROUNDS Help Data=[repeat(-,78)]%RCommands for Setting your Background:[space(21)]%R%R[space(2)]SYNTAX:[space(2)]+bg <#>[space(17)]- Read a background section.%R[space(11)]+bglist[space(17)]- List out sections that have been created%R[space(11)]+bgadd <#>=<text>[space(7)]- Add to a background section.%R[space(11)]+bgrem <#>=<text>[space(7)]- Removes text from a background section.%R[space(11)]+bgrep <#>=<old>/<new>[space(2)]- Replaces text in a background section.%R[space(11)]+bgclear <#>[space(12)]- Clears a background section.%R[space(11)]+bglock <#>[space(13)]- Locks a background section when finished.%R%R[space(2)]The '<#>' sign in the BG help stands for the number of the section you are%R[space(2)]working on. The BG commands allows for multiple sections so that your %R[space(2)]background can be broken up into reasonably sized pieces of text.%R[repeat(-,78)]
|
||||
|
||||
&HELP_CREDITS SGP - Help Data=[repeat(-,78)]%RCredits%R%R[space(2)]SGP is a broad, cross platform coding effort with numerous contributors.[space(2)]%R[space(2)]Current contributors of code and assistance in testing, writing helpfiles, %R[space(2)]and pithy comments are as follows:%R%R[space(4)]Audumla@Everywhere[space(3)]--A little bit of everything, +staff and +staff/all, %R[space(27)]+beginner, +version, and installer files.%R[space(4)]BEM@Granite[space(10)]--Much of the base code including +who, joining %R[space(27)]and summon commands, debugging. %R[space(4)]Miateila@Granite[space(5)]--+finger and LOTS of pithy commentary%R[space(4)]Hilikiradi@Sandbox[space(3)]--Debugging, Penn platform tests, +cnotes, %R[space(27)]+lwho, PLACES upgrades, and installer files. %R[space(4)]Brazil@Everywhere[space(4)]--MUX 2.0 issues%R[space(4)]Talek, Javelin, Raevnos, David,%R[space(4)]Vexon@M*U*S*H[space(8)]--Penn Issues%R[space(4)]Ashen-Shugar[space(9)]--RhostMUSH Issues%R[space(4)]Lilith@Sandbox[space(7)]--Debugging, @register %R[space(4)]Hunger@Pacifica[space(6)]--Debugging, Aesthetics%R[space(4)]Jeff@TSC[space(13)]--+version %R[repeat(-,78)]
|
||||
|
||||
|
||||
&HELP_+BEGINNER SGP - Help Data=[repeat(-,78)]%R+beginner%R%R[space(2)]MUSH is new to some of you and probably a little daunting. To ease your %R[space(2)]feelings of panic, we offer a very basic list of commands that will get you %R[space(2)]looking around and using the various features of the game.%R%R[space(4)]"<message>[space(16)]You say <message>.%R[space(4)]Say <message>[space(13)]See above.%R[space(4)]ooc <message>[space(13)]Makes an OOC statement or pose.%R[space(4)]page <person>=<message>[space(3)]Pages <person> with <message>.%R[space(4)]look[space(22)]Shows you the room you are standing in.%R[space(4)]look <object or person>[space(3)]Shows the desc for that object or person.%R[space(4)]pose <message>[space(12)]You pose <message> EX: pose grins.->John Doe %R[space(30)]grins.%R[space(4)]:<message>[space(16)]See 'pose" above%R[space(4)]WHO[space(23)]Shows a list of who is connected to the MUSH.%R[space(4)]+staff[space(20)]Shows connected Staff.%R[space(4)]+staff/all[space(16)]Shows the staff roster.%R%R[space(2)]NOTE: MUSH commands may be case sensitive. You can always page a staffer %R[space(2)]for help.%R%R[space(2)]'+beginner' also recalls this file%R[repeat(-,78)]
|
||||
|
||||
&HELP_+CNOTES SGP - Help Data=[repeat(-,78)]%R+cnotes%R%R[space(2)]SYNTAX: +cnotelist[space(13)]- Gives you a list of all cnotes on your %R[space(35)]character object.%R[space(10)]+cnoteview <notename>[space(2)]- Shows you the contents of the named cnote.%R[space(10)]+cnote <notename>=text - Sets &cnote<notename> on the player to the %R[space(35)]value of the text with person and time %R[space(35)]added.%R[space(24)]%R[space(2)]To set notes on rooms, exits, and other objects that you own, set an %R[space(2)]attribute: &CNOTE_<notename> <object>=<text>%R%R[space(2)]Please note that some cnotes require staff approval before they can go into %R[space(2)]effect ICly.[space(2)]Consult a member of staff for assistance.[space(2)]%R[repeat(-,78)]
|
||||
|
||||
&HELP_+FINGER SGP - Help Data=[repeat(-,78)]%R+finger %R%R[space(2)]SYNTAX: +finger <name>%R[space(11)]%R%R[space(2)]This command shows you various bits of information about and will also %R[space(2)]accept "me" as an argument.[space(2)]+finger is generally a command that notes OOC %R[space(2)]information and should not be considered IC unless game policy %R[space(2)]specifically says otherwise.%R%R[space(2)]See Also '+finger-setup' for configuration options.[space(2)]%R[repeat(-,78)]
|
||||
|
||||
&HELP_+FINGER-SETUP SGP - Help Data=[repeat(-,78)]%RFinger Setup%R[space(2)]%R[space(2)]Attributes read by this command:%R[space(8)]%R[space(2)]E-MAIL:[space(14)]Your email address (optional)[space(3)]%R[space(2)]POSITION:[space(12)]Your Position%R[space(2)]SHORT-DESC:[space(10)]A short description of yourself[space(2)]%R[space(2)]FULLNAME:[space(12)]Your character's full name.%R[space(2)]AGE:[space(17)]Your real age%R[space(2)]FAME:[space(16)]What you are known for.%R[space(2)]APP_AGE:[space(13)]Your apparent age%R[space(2)]PLAN:[space(16)]Any plans your character may have%R[space(2)]RP-PREFS:[space(12)]Any RP Prefs that you may have as a person%R[space(2)]ALTS:[space(16)]Alternate characters you may be known as%R[space(2)]THEMESONG:[space(11)]Your Theme Song%R[space(2)]QUOTE:[space(15)]A typical quote from your character%R[space(2)]OFF-HOURS:[space(11)]When you are usually online.%R[space(2)]TEMPERMENT:[space(10)]Should explain itself, really.%R[space(2)]VACATION:[space(12)]The dates you expect to be gone.%R[space(2)]URL:[space(17)]Your homepage, if any.%R[space(2)]&FINGER-<whatever>:[space(2)]Let's you add other fields.%R%R[space(2)]AFINGER:[space(5)]Similar to @adesc, gets triggered when someone +fingers %R[space(15)]you.%%%%0 is the name of the person who +fingered you, %R[space(15)]%%%%1 is their dbref.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+GLANCE SGP - Help Data=[repeat(-,78)]%R+glance%R%R[space(2)]SYNTAX: +glance %R%R[space(2)]Displays displays the &SHORT-DESC attributes of objects and connected %R[space(2)]players in your present location.[space(2)]Idle times of players are shown.[space(2)]%R[space(2)]&SHORT-DESC information is truncated to 50 characters. %R[repeat(-,78)]
|
||||
|
||||
&HELP_+IC SGP - Help Data=[repeat(-,78)]%R+ic %R%R[space(2)]SYNTAX: +ic%R%R[space(2)]Lets a player go to a set beginning IC location.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+INFO SGP - Help Data=[repeat(-,78)]%R+info%R%R[space(2)]SYNTAX: +info[space(11)]Show you the info that you have set on yourself.%R[space(10)]+info <player>[space(2)]Shows you info set on other characters.%R%R[space(2)]+info allows you to set information on yourself that would be useful to %R[space(2)]other players without them having them page you for it. This is an %R[space(2)]/excellent/ way to tell other players about pertinent merits, flaws, or %R[space(2)]other things that /would/ affect the way that they might interact with you, %R[space(2)]yet would not be appropriate to place in your @desc.%R%R[space(2)]Players should make a brief mention like "+info set" at the end of their %R[space(2)]@desc, so that others may know to look.%R%R[space(2)]See Also: +info-setup%R[repeat(-,78)]%R
|
||||
|
||||
&HELP_+INFO-SETUP SGP - Help Data=[repeat(-,78)]%R+info setup%R%R[space(2)]To set info on yourself, set it as an attribute &INFO-<category>.[space(2)]General %R[space(2)]info can be seen by anyone. More specific info is set in the same way, %R[space(2)]except you use who should be able to see it instead of 'general'. Possible %R[space(2)]things to use are: race, factions, clans, tribes, and traditions.:%R%R[space(2)]&info-general me=A wandering bum, usually seen in the dirtier parts of %Rthe streets.%R[space(2)]&info-camarilla me=This is the Gangrel Primogen, and as such, is a very %Rnoted member of the Camarilla...%R[space(2)]&info-garou me=This character has a Pure Breed 4.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+KNOCK SGP - Help Data=[repeat(-,78)]%R+knock%R%R[space(2)]SYNTAX: +knock <exit name or alias>%R%R[space(2)]This command will allow you to 'knock' on any door in the MUSH. The players %R[space(2)]on the other side of the door will get an emit telling them that someone is %R[space(2)]knocking on the door. %R%R[space(2)]NOTE: Using this command on the street grid on exits like South <S> is very %R[space(2)]silly and people will think that you are dumb if you do.%R[repeat(-,78)]
|
||||
|
||||
&HELP_MP Help Data=[repeat(-,78)]%Rmp - multipaging:%R%R[space(2)]SYNTAX:[space(2)]mp <names>=<message> - Allows multipaging to a list of players%R[space(11)]mp <message>[space(9)]- Allows multipaging to the last group of %R[space(34)]players multipaged.%R[repeat(-,78)]
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{},{&HELP_MP Help Data}
|
||||
|
||||
&HELP_MUTTER SGP - Help Data=[repeat(-,78)]%Rmutter%R[space(2)]%R[space(2)]SYNTAX: mutter <target>=<string>%R[space(10)]mutter/tt <target>=<string>%R[space(10)]mutter/place <place number>=<string>%R%R[space(2)]The first form of this command behaves identically to "whisper", except %R[space(2)]that the other players in the room will see that you have said something. %R[space(2)]A regular message, or part of a pose enclosed in "quotes", will have some %R[space(2)]of its words or groups of words replaced by "..." If you enclose a phrase %R[space(2)]with <angle brackets>, it will not be replaced. Poses without "quotes" %R[space(2)]will simply show that you have muttered something. <target> can be any %R[space(2)]player in the same room as you.%R%R[space(2)]The second form of this command behaves like the first, except that instead %R[space(2)]of the entire room hearing the mutter, only people at a place will do so. %R[space(2)]If you are at a place, those at your place will hear the mutter;if you are %R[space(2)]not, and the target is, those at that place will hear the mutter. If %R[space(2)]neither of you are at a place, an error message will be generated.%R%R[space(2)]The final version of this command allows everyone at a place to hear the %R[space(2)]message in full, while the rest of the room hears the mutter.%R%R[space(2)]This code was written by Deirdre@AmberMUSH.%R%R[space(2)]See Also: 'mutter2'%R[repeat(-,78)]
|
||||
|
||||
&HELP_MUTTER2 SGP - Help Data=[repeat(-,78)]%Rmutter examples:%R%R[space(5)]mutter Finndo=Can you loan me thirty Pence? I'm broke!%R[space(5)]Meg mutters to Finndo, "Can... loan... thirty... broke!"%R%R[space(5)]mutter Bleys=:frowns. "What a <cheapskate> he is!" She shrugs.%R[space(5)]Meg frowns. She mutters to Bleys, "What... cheapskate..." She shrugs.%R%R[space(5)]mutter/place 1=:chuckles. "Thank you very much."%R[space(5)]Meg chuckles. She mutters to the long, mahogany bar, "Thank you..."%R%R[space(5)]mutter/tt Deirdre=Where did you hide those Trumps?%R[space(5)]At the bar, Meg mutters to Deirdre, "Where... Trumps?"%R[repeat(-,78)]
|
||||
|
||||
&HELP_OOC Help Data=[repeat(-,78)]%ROut of Character speech:%R%R[space(2)]SYNTAX:[space(2)]ooc <message>%R[space(11)]' <message>%R[space(2)]%R[space(2)]Allows a player to speak or pose OOCly or out of character.%R[space(9)]%R[repeat(-,78)]
|
||||
|
||||
&HELP_PLACES SGP - Help Data=[repeat(-,78)]%RPLACES%R%R[space(2)]SYNTAX:[space(2)]Mv from <#> to <#>[space(10)]Moves a vacancy from one place to%R[space(39)]another.%R[space(11)]Join <place name>[space(11)]Puts you at <place name>%R[space(11)]Join at #<num>[space(14)]Puts you at place #<num>.%R[space(11)]Join with <name>[space(12)]Puts you at the place with <name>.%R[space(11)]sit * [space(23)]Alias for Join.%R[space(11)]Depart[space(22)]Removes you from your place.%R[space(11)]Stand[space(23)]Alias for Depart.%R[space(11)]Places[space(22)]Lists who's present at all places.%R[space(11)]Place <num>[space(17)]Lists who's present at place <num>.%R[space(11)]Plook[space(23)]Lists in column format everyone around%R[space(39)]the room.%R[space(11)]Plook <num>[space(17)]Lists name of <num> and virtual desc.%R[space(11)]tt <message>[space(16)](Tete a tete) Relays a message to all%R[space(39)]those at your place. This command takes%R[space(39)]the usual say/pose tokens, and%R[space(39)]TT |<message> will emit.%R[space(11)]ttooc <message>[space(13)](Tete a tete) Relays an OOC message%R[space(11)]Update <#>/<Option>=<text>[space(2)]See '+help places-options'%R%R[space(2)]PLACES are virtual places to sit, stand or occupy. You remain in the same%R[space(2)]room, but join a group of people within that room who may or may not be%R[space(2)]having a quiet conversation only with others placed with them.%R%R[space(2)]For installation help, type '+help places-config'.%R%R[space(2)]This code originally provided courtesy of Deirdre, Meg, and Osric of %R[space(2)]AmberMUSH. It has since been editted by Angel@Heaven%R[repeat(-,78)]
|
||||
|
||||
&HELP_PLACES-CONFIG Help Data=[repeat(-,78)]%RPLACES configuration:%R[space(2)]%R[space(2)]SYNTAX: Configure <num> places%R[space(10)]Unconfigure places%R%R[space(2)]Notes: A null fixed message means vacancies can be moved freely to and from %R[space(2)]the place.[space(2)]This does not make sense for things like couches and rugs.[space(2)]Set %R[space(2)]it to something like "That makes no sense." if you are using such a place.%R%R[space(2)](O)Join and (O)depart messages take like this: %%%%N. All Join and Depart %R[space(2)]messages are appended with the place name.%R%R[space(2)]Functions:[space(2)]WHICHPLACE(<loc num>,<dbnum>) gives the number of a place where %R[space(14)]<dbnum> is.%R[space(14)]ATPLACE(<loc num>,<place num>) gives you a list of things at a %R[space(14)]place.%R[space(14)]PLACEINFO(<loc num>,<place num>,<option>) gives the value of %R[space(14)]<option> at place.%R[repeat(-,78)]
|
||||
|
||||
&HELP_PLACES-OPTIONS SGP - Help Data=[repeat(-,78)]%RPLACES configuration:%R%R[space(2)]SYNTAX: Update <Place #>/<Option>=<Configuration Text>%R%R[space(2)]Option Description[space(4)]<Option>[space(8)]Default Configuration Text%R[space(2)]------------------[space(4)]--------[space(8)]--------------------------%R[space(2)]Place Name[space(12)]NAME[space(12)]Table x%R[space(2)]Maximum # of places[space(3)]MAXPLACES[space(7)]Random%R[space(2)]Current # of places[space(3)]CURPLACES[space(7)]Random (1 >= # >= MAXPLACES)%R[space(2)]Fixed fail message[space(4)]FIXED[space(11)]<NULL>%R[space(2)]Full fail message[space(5)]FULL[space(12)]That table has no more room.%R[space(2)]Join message[space(10)]JOIN[space(12)]You sit down at <place>.%R[space(2)]Ojoin message[space(9)]OJOIN[space(11)]sits down at <place>.%R[space(2)]Depart message[space(8)]DEPART[space(10)]You stand and leave <place>.%R[space(2)]Odepart message[space(7)]ODEPART[space(9)]stands and leaves <place>.%R[space(2)]Say prefix[space(12)]PREFIX[space(10)]At your table%R[space(2)]Description[space(11)]DESCRIBE[space(8)]A table with 4 legs and some chairs %R[repeat(-,78)]
|
||||
|
||||
&HELP_PLOOK SGP - Help Data=[repeat(-,78)]%Rplook%R%R[space(2)]SYNTAX: plook%R[space(10)]plook <target>%R%R[space(2)]The first form gives you a list of places, in a three column format.%R%R[space(2)]The second form takes the number of the place as an argument, and gives the %R[space(2)]name and description of the virtual place. Descriptions are in the final %R[space(2)]field of the PLACE# attribute on the room, after the | in the list of %R[space(2)]information.%R[repeat(-,78)]
|
||||
|
||||
&HELP_@REGISTER SGP - Help Data=[repeat(-,78)]%R@register%R%R[space(2)]SYNTAX: @register <RL Name>=<email>=<alts>%R%R[space(2)]All players must be registered and read and accept the conditions found in %R[space(2)]'news AUP' before they are allowed out of the Registration room. %R[space(2)]Unregistered character objects become subject to nuking at any time.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+SELFBOOT SGP - Help Data=[repeat(-,78)]%R+selfboot%R%R[space(2)]SYNTAX: +selfboot%R%R[space(2)]This command allows you to boot 'ghost' connections that are usually caused %R[space(2)]by dropped connections to your ISP.[space(2)]%R[repeat(-,78)]
|
||||
|
||||
&HELP_+SHOUT SGP - Help Data=[repeat(-,78)]%R+shout%R%R[space(2)]SYNTAX: +shout <message>%R%R[space(2)]This command will allow you to shout a message so that is is heard in %R[space(2)]adjacent rooms. Codewise, it propogates a given message through all non-%R[space(2)]audible exits leading from the room of the enactor.%R%R[space(2)]NOTE: People in adjacent rooms will not know who is shouting, but will be %R[space(2)]told that 'A man', 'A woman', or 'Someone" is shouting.%R%R[space(2)]Overuse of this command can be very annoying to others.%R%R[space(2)]If you want to 'sound proof' an exit, to prevent a shout from being heard %R[space(2)]through a particular exit, add &NO_SHOUT <exit name>=1.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+STAFF SGP - Help Data=[repeat(-,78)]%R+staff%R%R[space(2)]SYNTAX: +staff%R%R[space(2)]This command shows all connected staff who are not set DARK, along with %R[space(2)]their alias, staff position, duty status, and how long they have been idle.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+STAFF-ALL SGP - Help Data=[repeat(-,78)]%R+staff/all%R%R[space(2)]SYNTAX: +staff/all%R%R[space(2)]This command shows all staff along with their alias, staff position, and if %R[space(2)]they are connected or not.[space(2)]For offline or DARK staff, it displays when they %R[space(2)]were last connected.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+UPTIME SGP - Help Data=[repeat(-,78)]%R+uptime%R%R[space(2)]SYNTAX: +uptime%R%R[space(2)]This command displays basic runtime statistics for the game.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+VIEW SGP - Help Data=[repeat(-,78)]%R+view%R%R[space(2)]SYNTAX:[space(2)]+view[space(18)]List all objects in the room with views set.%R[space(11)]+view here[space(13)]Lists all viewable items in the room.%R[space(11)]+view <object>[space(9)]Lists all views on a particular object.%R[space(11)]+view <object>/<view>[space(2)]Reads a view.%R%R[space(2)]Setting viewable objects using this code allows for greater detail to be %R[space(2)]coded into a room without requiring huge, spammy descriptions. +view may %R[space(2)]also be set on characters.%R%R[space(2)]Be sure to add "+view items" to your @descs so people know to look at them.%R%R[space(2)]See Also: '+help +view-setup'%R[repeat(-,78)]
|
||||
|
||||
&HELP_+VIEW-SETUP SGP - Help Data=[repeat(-,78)]%RSetting views:%R%R[space(2)]Set an attribute on the object thus:%R%R[space(15)]&view-<name of view> <object>=<text>%R%RAn example:[space(2)]&view-painting here=You see a painting hanging on the walls, %Rthat seems to be done in an Impressionist tone...%R%R[space(8)]To erase a view, simply leave the <text> area blank.%R%RYou may also set messages to be displayed to other players when a view is %Rlooked at. This is just like setting a view, but the attribute is called %R&oview.%R%RAn example.[space(2)]&oview-painting here=takes a look at the painting hanging on %Rthe wall.%R%RMary and Fred are in a room and Mary does a "+view here/painting" %RFred would see 'Mary takes a look at the painting hanging on the wall.'%R[repeat(-,78)]
|
||||
|
||||
&HELP_+TIMESTAMP SGP - Help Data=[repeat(-,78)]%R+timestamp%R%R[space(2)]SYNTAX: +timestamp[space(6)]%R[space(2)]%R[space(2)]Allows a player to read their current timestamps.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+TIMESTOP Help Data=[repeat(-,78)]%R+timestop%R%R[space(2)]SYNTAX:[space(2)]+timestop[space(5)]%R[space(11)]+resume%R[space(11)]%R[space(11)]%R[space(2)]+timestop create a timestop object and drops it in the room where the %R[space(2)]timestop was requested.[space(2)]Staff is notified.[space(2)]The object itself will appear %R[space(2)]in the location as:[space(2)]TIMESTOP: <player> <timestamp> <location>%R%R[space(2)]+resume removes _all_ timestops from the room in which it is used.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+WARN Help Data=[repeat(-,78)]%R+warn%R%R[space(2)]SYNTAX:[space(3)]+warn <player>[space(9)]%R[space(2)]%R[space(2)]Issues an anonymous OOC warning of impending danger to the named player.%R%R[space(2)]This is only a generic warning -- players are encouraged to page or @pemit %R[space(2)]more specific messages, but this will suffice in a pinch. Do not use this %R[space(2)]command flippantly. Give players ample time to make up their minds. This is %R[space(2)]to be used BEFORE a timestop occurs. The command DOES display a message to %R[space(2)]staff when used.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+3WHO SGP - Help Data=[repeat(-,78)]%R+3who%R%R[space(2)]SYNTAX: +3who%R%R[space(2)]Displays +who in a 3 column format.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+LWHO SGP - Help Data=[repeat(-,78)]%R+lwho%R%R[space(2)]SYNTAX: +lwho %R%R[space(2)]This commands information as that displayed by +who, but only shows the %R[space(2)]players in the same room. %R[repeat(-,78)]
|
||||
|
||||
&HELP_+WHO SGP - Help Data=[repeat(-,78)]%R+who%R%R[space(2)]SYNTAX: +who%R[space(10)]+who <string>%R%R[space(2)]This command displays Player, Gender, Alias, Idletime, Location, dbref of %R[space(2)]location if findable and set JUMP_OK, and if the player is also staff.%R%R[space(2)]The second version of this command accepts an argument and allow you to see%R[space(2)]only connected players who match the argument given, such as looking for all%R[space(2)]players whose names start with an 'm'.%R%R[space(2)]The staff version of this code shows DARK staff, location, and dbref of %R[space(2)]locations.%R[repeat(-,78)]
|
||||
|
||||
&HELP_+WHERE SGP - Help Data=[repeat(-,78)]%R+where%R%R[space(2)]SYNTAX: +where%R%R[space(2)]Shows the location of all findable players on the mush.[space(2)]It sorts the list %R[space(2)]by location and does not show DARK, UNFINDABLE, or those in UNFINDABLE %R[space(2)]locations.%R[repeat(-,78)]
|
||||
|
||||
@pemit me=Now setting +WIZHELP attributes...Moment.
|
||||
|
||||
&WIZHELP_+ACCEPT SGP - Help Data=[repeat(-,78)]%R+accept%R%R[space(2)]SYNTAX: +accept%R%R[space(2)]This command sets an acceptance attribute on the player to show that they %R[space(2)]have read and accepted the terms of your game's AUP.[space(2)]It sets a simple %R[space(2)]timestamp on the character object and sends the player an emit that the %R[space(2)]command has worked.[space(2)]%R%R[space(2)]This command is adaptable to other applications where you may need players %R[space(2)]to acknowledge that they have read and accepted rules associated with the %R[space(2)]game.[space(2)]Imbedding the command in the text of the material you want to be read %R[space(2)]is the best way to document it for players.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_BACKGROUNDS Help Data=[repeat(-,78)]%RStaff Background Commands:[space(32)]%R%R[space(2)]+bgview <name>[space(7)]- Shows the number of sections for player.%R[space(2)]+bgcheck <name>/<#>[space(2)]- Locks a background section when finished.%R%R[space(2)]The '<#>' sign in the BG help stands for the number of the section you are%R[space(2)]working on. The BG commands allows for multiple sections so that your %R[space(2)]background can be broken up into reasonably sized pieces of text.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_CONFIGURE SGP - Help Data=[repeat(-,78)]%RConfiguring SGP:%R%R[space(2)]There will be several things that you need to configure in this package in %R[space(2)]order to make use of all the features therein.[space(2)]One of the first will be to %R[space(2)]edit the parameters that define who passes isstaff() and ostaff().[space(2)]Both %R[space(2)]functions are found on the Global Functions object.[space(2)]%R%R[space(2)]isstaff() is defined specifically by flag.[space(2)]ostaff() checks against the list %R[space(2)]stored in &STAFF-LIST on the Global Parent Object.[space(2)]Truthfully, most %R[space(2)]functions in the game will use isstaff(), where ostaff() is used for code %R[space(2)]where you want the regular game staff to show, such as +who.%R%R[space(2)]&STAFF-LIST is a space seperated list of dbrefs.[space(2)]It displays on +staff and %R[space(2)]+staff/all in the same order that they are entered on the list.%R%R[space(2)]See Also: CONFIGURE2%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_CONFIGURE2 SGP - Help Data=[repeat(-,78)]%RConfiguring SGP:%R%R[space(2)]Headers and Footers maybe changed through the code by editting the code.[space(2)]%R[space(2)]This code is specifically set up to use &HEADER and &FOOTER attributes on %R[space(2)]the Global Parent Object.[space(2)]You can edit the existing default headers and %R[space(2)]simply add them in the place of the old.[space(2)]The footers can be substituted by %R[space(2)]editting them to match.[space(2)]Examine the global parent object for a pregenerated %R[space(2)]set of footers.%R%R[space(2)]All globals are coded to 78 spaces wide.[space(2)]78 is divisable by 78, 39, 26, 13, %R[space(2)]6, 3, 2, and 1.[space(2)]When you design your own ASCII for this package, you can %R[space(2)]use repeat() to generate certain unique elements.[space(2)]There is nothing to %R[space(2)]prevent ascii headers and other elements from being several lines high, %R[space(2)]though it is adviseable to keep an eye to how many extra lines the code %R[space(2)]generates.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_CONFIGURE3 Help Data=[repeat(-,78)]%RConfiguring SGP +finger:%R%R[space(2)]+finger can be customized in the by changing appropriate references in the %R[space(2)]softcode to headers and footers to attributes that you desire.[space(2)]%R%R[space(2)]Adjusting the types of attributes that the code will read by default %R[space(2)]requires making changes to &FINGER_LIST and &FINGER_LIST_LONG on the parent %R[space(2)]object.[space(2)]These two attributes control the finger attributes that the code %R[space(2)]looks for, and the actual output to the display itself.[space(2)]These two %R[space(2)]attributes are in a specific order and are directly related to each other.[space(2)]%R[space(2)]If you add, remove, or modify items in the list, you must make sure that the %R[space(2)]order is preserved in both lists.[space(2)]You have been warned. %R[space(2)]%R[space(2)]As with all such undertakings, make sure you have a backup of anything you %R[space(2)]had prior to making modifications.[space(2)]You'll hate yourself if you've made %R[space(2)]extensive modifications and then mess up.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_DEFAULTS Help Data=[repeat(-,78)]%RDefault SGP-MUSH %R%R[space(2)]SGP comes with a given list of commands and helpfiles.[space(2)]The default %R[space(2)]configuration of the code is found in the SGP Installer.[space(2)]This configuration %R[space(2)]accounts for base globals and doesn't include those commands that would be %R[space(2)]only useful in a roleplaying environment.[space(2)]To add the RP specific code, %R[space(2)]quote the RPPack file in the same that you did the installer.[space(2)]It will write %R[space(2)]them directly to the required objects.%R[space(2)]%R[space(2)]Helpfiles for Penn and Tiny are set up as MUSHCode attributes, readable from %R[space(2)]objects in the database and files.[space(2)]&WIZHELP_<topic> denotes a file readable %R[space(2)]by staff/wizards only and &HELP_<topic> is for general help topics.[space(2)]To add %R[space(2)]topics, you add the appropriate wizhelp or help attrubute to the SGP Help %R[space(2)]Data object and edit to the &WIZLIST_COMMANDS and &HELP_COMMANDS on the same %R[space(2)]object.[space(2)]You must add both the files and the reference to them or the +help %R[space(2)]system wont pick them up.%R[space(2)]%R[space(2)]This code does not include a bulletin board system.[space(2)]If you choose to use %R[space(2)]Myrrdin's BBS system, you may simply add the softcode version of +help to %R[space(2)]the SGP Help Data object, and add the pertinent topics to[space(2)]Other BBS systems %R[space(2)]may or may not have helpfiles that are MUSH-ready. %R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+CNOTES SGP - Help Data=[repeat(-,78)]%R+cnotes%R%R[space(2)]SYNTAX: +cnotelist <name>[space(15)]- Gives you a list of all cnotes on %R[space(44)]a character object.%R[space(10)]+cnoteview <name> <notename>[space(4)]- Gives you the contents of the %R[space(44)]<notename> note on named player %R[space(44)]or dbref for objects.%R[space(10)]+cnote/<notename> <name>=<text> - Sets a cnote on a player or %R[space(44)]object(use dbref) to the value of %R[space(44)]the text with person and time %R[space(44)]added. (WIZ ONLY)%R[space(10)]+cnoteapp <pcname> <notename>[space(3)]- Approves and timestamps a player-%R[space(44)]set cnotes, sets the attribute %R[space(44)]wizard so the player can't change %R[space(44)]it.[space(2)]Approved notes bear the line:[space(5)]%R[space(44)]"Approved by XXX on date YYY"%R[space(10)]+cnotedel <pcname> <notename>[space(3)]- Deletes a given note from a %R[space(44)]character.%R[space(2)]%R[space(2)]Players may set notes on objects other than themselves by setting an %R[space(2)]attribute &CNOTE_<notename> <object>=<text>.[space(2)]Staff approved notes will %R[space(2)]bear "Approved by XXX on date YYY" to show that staff has seen and approved %R[space(2)]the information for IC purposes.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+COMMANDS SGP - Help Data=[repeat(-,78)]%R+commands%R%R[space(2)]SYNTAX: +commands <thing>%R%R[space(2)]This command shows the $-commands for a given object, room, or player.[space(2)]This %R[space(2)]is useful for many reasons, including looking for conflicting commands.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+CONTENTS SGP - Help Data=[repeat(-,78)]%R+contents%R%R[space(2)]SYNTAX: +contents <thing>%R%R[space(2)]This commands shows the contents of a given object, room, or player.[space(2)]It %R[space(2)]shows DARK objects.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+DUTY SGP - Help Data=[repeat(-,78)]%R+duty%R%R[space(2)]SYNTAX: +duty%R%R[space(2)]This sets a staff member as being either On or Off duty.[space(2)]%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_FUNCTIONS SGP - Help Data=[repeat(-,78)]%RSoftcoded Functions:%R%R[space(2)]Functions: isstaff(<dbref>)[space(3)]%R%R[space(4)]Returns 1 or 0 when player matches the flags defined as 'staff'%R[space(4)]%R[space(13)]ostaff(<dbref>)[space(4)]%R[space(4)]%R[space(4)]Softcoded function that checks to see if <dbref> against the official %R[space(4)]staff list as listed on the Global Parent.%R[space(4)]%R[space(13)]andlist(<string>,<delimiter>) %R%R[space(4)]Returns a string as a comma separated list with 'and' between second to %R[space(4)]last and last elements.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+JOIN SGP - Help Data=[repeat(-,78)]%R+join%R%R[space(2)]SYNTAX: +join <name>%R%R[space(2)]Allows a staff member to join a player where they are on the game.%R[space(2)]Please note that it is considered polite to page the player in advance to %R[space(2)]inform them of the pending visit.%R%R[space(2)]See Also: +summon%R[repeat(-,78)]%R
|
||||
|
||||
&WIZHELP_+MOTD Help Data=[repeat(-,78)]%R+motd%R%R[space(2)]SYNTAX: +motd/list%R[space(10)]+motd/set <type>=<message>%R[space(10)]+motd/del <type>=<MOTD #>%R[space(10)]+motd/clear <type>%R[space(10)]+motd/reset[space(3)]%R%R[space(2)]This code allows for easier manipulation of the @motd command and the use of %R[space(2)]softcoded MOTD to create semi-permanent MOTD.[space(2)]%R[space(2)]%R[space(2)]The first command lists the stored MOTD messages in order from oldest to %R[space(2)]newest, by MOTD type.[space(2)]The types listed are: general, wizard, down, and %R[space(2)]full.[space(2)]%R[space(2)]%R[space(2)]The second command sets an MOTD attribute to the global parent.[space(2)]You select %R[space(2)]the type from the above list and set the message of your choosing.[space(2)]%R[space(2)]%t%R[space(2)]> +motd/set general=This is an MOTD.%R%R[space(2)]The third command removes a selected MOTD # from a given MOTD listing.[space(2)]In %R[space(2)]the above example, the message number is 1 in the general list. %R%R[space(2)]> +motd/del general=1 %R%R[space(2)]The fourth command clears all the MOTD of a given type.%R%R[space(2)]> +motd/clear general %R[space(2)]%R[space(2)]The last command resets the +motd system so that the game will read the %R[space(2)]MOTDs appropriately.[space(2)]This code is called as part of the @startup for the %R[space(2)]object.%R[repeat(-,78)]
|
||||
|
||||
|
||||
&WIZHELP_PROJECT SGP - Help Data=[repeat(-,78)]%RProject Status Tracker Help[space(29)]%R[space(8)]%R[space(2)]SYNTAX:[space(2)]+setproject <project name>/<coder name>/<status>%R[space(11)]+viewprojects%R[space(11)]+editproject <project name>/who=<coder name>%R[space(11)]+editproject <project name>/status=<status>%R[space(11)]+deleteproject <project name>%R[space(11)]+trackerhelp -- Gets this screen.%R%R[space(2)]This code assists in the management of game-related projects.[space(2)]The project %R[space(2)]name, and the other fields, can have spaces in them.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+REGISTER SGP - Help Data=[repeat(-,78)]%R+register%R%R[space(2)]SYNTAX: +register <character>=<RL name>=<email>=<alts>%R%R[space(2)]The RL name must be their FULL name, first and last. Alts can be none.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+RJOIN SGP - Help Data=[repeat(-,78)]%R+rjoin%R%R[space(2)]SYNTAX: +rjoin%R%R[space(2)]Sends a staff member back to where they had been previously.[space(2)]Use this %R[space(2)]command when you want to go somewhere other than your home.%R[space(2)]%R[space(2)]See Also: +join%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+RSUMMON SGP - Help Data=[repeat(-,78)]%R+rsummon%R%R[space(2)]SYNTAX: +rsummon <player> %R%R[space(2)]Allows a staff member to send a player back to the location they were when %R[space(2)]they were originally summoned.%R[space(2)]%R[space(2)]See Also: +summon%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+STAFF SGP - Help Data=[repeat(-,78)]%RNotes on +staff:%R %R[space(2)]SYNTAX: +staff/add <player>%R[space(10)]+staff/remove <player>%R %R[space(2)]These two commands modify the contents of &STAFF-LIST on the global parent %R[space(2)]and affect whether or not a given person appears on the +staff and %R[space(2)]+staff/all listings.[space(2)]Where isstaff() checks against flags, STAFF-LIST and %R[space(2)]ostaff() are explicitly set and checked by code.%R[space(3)]%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+STNOTES SGP - Help Data=[repeat(-,78)]%RSTNOTES%R%R[space(2)]SYNTAX: +stnotes%R[space(10)]+stnotes <object>%R[space(10)]+setnote <object>/<note>=<text> (Wiz Only)%R[space(10)]+setnote/vis <object>/<note>=<text> (Wiz Only)%R%R[space(2)]The first form searches the current local and lists out any players, %R[space(2)]objects, or exits that have STnotes set on them (the room is checked as %R[space(2)]well). The second form displays all the STnotes set on a player or object. %R[space(2)]The third form is used to set an STnote on an object or person. To clear an %R[space(2)]existing note, use the third form of the command with no text. Normally the %R[space(2)]judge note created is not visible to the owner of the object. %R%R[space(2)]If you want to set a note that is also visible to the object owner, use the %R[space(2)]/vis switch on the +setnote command.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+SUMMON SGP - Help Data=[repeat(-,78)]%R+summon%R%R[space(2)]SYNTAX: +summon <player>%R%R[space(2)]Allows a staff member to summon a player object to their current location.[space(2)]%R[space(2)]Please note that it is considered polite to page the player in advance to %R[space(2)]inform them of the pending summons.%R[space(2)]%R[space(2)]See Also: +rsummon, +join%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+TIMESTAMP SGP - Help Data=[repeat(-,78)]%R+timestamp%R%R[space(2)]SYNTAX:[space(2)]+timestamp <name>/<topic>=<note>[space(2)]- Sets a timestamp on a given %R[space(47)]player for a given topic and %R[space(47)]reason.%R[space(11)]+timestamp/read <name>[space(12)]- Lets staff read all timestamps %R[space(47)]on a given player.%R[space(11)]+timestamp/rem <name>/<topic>[space(5)]- Removes a given timestamp %R[space(47)]attribute from a player.%R[space(11)]+timestamp/showall[space(16)]- Shows all currently set %R[space(47)]timestamps.[space(2)]Can be spammy.%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+VERSION SGP - Help Data=[repeat(-,78)]%R+version%R%R[space(2)]SYNTAX:[space(2)]+version[space(3)]%R[space(11)]+version <dbref>%R%R[space(2)]This code is in place to aid the user in the tracking of version history of%R[space(2)]SGP objects.[space(2)]The first form of this command returns a list of all SGP and %R[space(2)]additional tracked objects, their version numbers, dbrefs, most recent %R[space(2)]applied patches, and the date the last upgrade was done.[space(2)]SGP installers %R[space(2)]update this information automatically.%R[space(2)]%R[space(2)]The second form of this command looks up a specific tracked object and %R[space(2)]returns information on what was applied to the object when.%R[space(2)]%R[space(2)]See Also: +version2[space(2)]%R[repeat(-,78)]
|
||||
|
||||
&WIZHELP_+VERSION2 SGP - Help Data=[repeat(-,78)]%R+version (continued)%R%R[space(2)]SYNTAX:[space(2)]+version/add <dbref>[space(3)]%R[space(11)]+version/remove <dbref>%R[space(11)]+version/update <dbref>/<field>=<data>%R[space(11)]%R[space(2)]The first form of this command adds new objects to the +version listing.[space(2)]%R[space(2)]The second form removes an object from +version. The third form edits %R[space(2)]various parts of the +version display. Fields include 'version', %R[space(2)]'patchlevel' and 'history'.[space(2)]The 'Last Update' field is updated by the first %R[space(2)]two uses of this command.%R[space(2)]%R[space(2)]Updating the 'history' field adds detailed information to the object's %R[space(2)]UPDATE-HISTORY attribute and includes a date with every entry. %R[repeat(-,78)]
|
||||
|
||||
+version/add [num(SGP - Help Data)]
|
||||
+version/update [num(SGP - Main Globals)]/patchlevel=+help
|
||||
+version/update [num(SGP - Staff Globals)]/patchlevel=+help
|
||||
+version/update [num(SGP - Main Globals)]/history=+help system added
|
||||
+version/update [num(SGP - Staff Globals)]/history=+help system added
|
||||
|
||||
|
||||
@pemit me=Finished Quote of Helpfiles. Make sure that the object is stored carefully.
|
||||
|
||||
drop SGP - Help Data
|
||||
|
||||
|
||||
133
sgp/SGP-@crontab.txt
Normal file
133
sgp/SGP-@crontab.txt
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
@@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@
|
||||
@@ SGP @crontab installer - 17 February 2001 BETA
|
||||
@@
|
||||
@@ Code courtesy of Jeff Hulsey. <jeff@slackbastard.net>
|
||||
@@
|
||||
@@ This is a quotable installer file that installs code designed to simulate
|
||||
@@ the functionality of a crontab. It allows you to schedule the triggering
|
||||
@@ of code without putting @waits in the queue for each action.
|
||||
@@
|
||||
@@ @crontab can serve as a replacement for Myrddin's MUSHCron and is designed
|
||||
@@ to be much less queue intensive.
|
||||
@@
|
||||
@@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@
|
||||
@@ This file installs the Crontab Command Object for the adding and removing of
|
||||
@@ jobs from the @crontab and Mush Cron Object for data storage.
|
||||
@@
|
||||
@@ This file also includes the necessary +help attributes and code to install
|
||||
@@ them into the SGP softcoded +help system. Any +help system that accepts
|
||||
@@ &HELP_ attribute syntax will be able to used the data attributes, with
|
||||
@@ appropriate modifications of the object name. MUX users should use the
|
||||
@@ staffhelp.txt update found on the SGP website.
|
||||
@@
|
||||
@@ Installer assumes that your SGP installation includes +version commands for
|
||||
@@ including this object in your local +version listing. Install +version
|
||||
@@ before installing this code.
|
||||
@@
|
||||
@@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@
|
||||
@@ Using this file:
|
||||
@@
|
||||
@@ This code is in BETA form. This means that we believe that we have debugged
|
||||
@@ it sufficiently for it to run in your application, but that there may be bugs
|
||||
@@ we failed to anticipate. Make sure you run a test of the code
|
||||
@@ and report any problems to the SGP bug page(http://sgp.erisian.net/). There
|
||||
@@ may be a design or feature issue that we need to reconsider before the full
|
||||
@@ release of the code.
|
||||
@@
|
||||
@@ ALL code in this file is uncommented and will quote to the game with your
|
||||
@@ MUSH client's uploading commands. The command object should reside in the
|
||||
@@ master room and the data object is stored, by default, inside it.
|
||||
@@
|
||||
@@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@pemit me=Creating @crontab objects. Moment....
|
||||
|
||||
@create SGP - @crontab=10
|
||||
|
||||
@create SGP - @crontab DB=10
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - @crontab)]
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - @crontab DB)]
|
||||
|
||||
@wait 0=&SGP-VERSION SGP - @crontab=1.0|Base|[elements(time(),2 3 5)]
|
||||
@wait 0=&SGP-VERSION SGP - @crontab DB=1.0|Base|[elements(time(),2 3 5)]
|
||||
|
||||
&UPDATE-HISTORY SGP - @crontab=Base Install [elements(time(),2 3 5)]
|
||||
&UPDATE-HISTORY SGP - @crontab DB=Base Install [elements(time(),2 3 5)]
|
||||
|
||||
@pemit me=Quoting @crontab commands. Moment....
|
||||
|
||||
@lock SGP - @crontab=SGP - @crontab
|
||||
|
||||
@wait 0=&DB SGP - @crontab=num(SGP - @crontab DB)
|
||||
|
||||
&CMD.CRONADD SGP - @crontab=$@cron/add *=*/*:@switch/first 0[setq(1,strlen(get(v(db)/CRON_TIME_[setr(0,u(v(db)/fn.strip,%0))])))]=andflags(%#,W),{@pemit %#=get(v(db)/HUH)},not(strlen(setr(9,setdiff(first(lcstr(%1),|),jan feb mar apr may jun jul aug sep oct nov dec)))),{@pemit %#=Invalid month: %q9},not(strlen(setr(9,setdiff(extract(lcstr(%1),3,1,|),sun mon tue wed thu fri sat)))),{@pemit %#=Invalid day of week: %q9},eq(5,words(%1,|)),{@pemit %#=Incomplete crontab entry},isdbref(setr(9,first(%2,|))),{@pemit %#=Invalid dbref: %q9},{&CRON_TIME_%q0 [v(db)]=%1;&CRON_JOB_%q0 [v(db)]=%2;@pemit %#=Cron job [ucstr(%q0)] [switch(0,%q1,add,edit)]ed.}
|
||||
|
||||
&CMD.CRONDEL SGP - @crontab=$@cron/del *:@switch 0=andflags(%#,W),{@pemit %#=get(v(db)/HUH)},strlen(get(v(db)/CRON_TIME_[setr(0,u(v(db)/fn.strip,%0))])),{@pemit %#=No such job: [ucstr(%q0)]},{&CRON_TIME_%q0 [v(db)];&CRON_JOB_%q0 [v(db)];@pemit %#=Cron job [ucstr(%q0)] deleted.}
|
||||
|
||||
&CMD.CRONHELP SGP - @crontab=$@cron/add:@switch 0=andflags(%#,W),{@pemit %#=get(v(db)/HUH)},{@pemit %#=Usage: @cron/add <job name>=<time>/<object>|<attribute>%r%b%b<time format>: [get(v(db)/format)]%r%b%b<object>'s <attribute> will be @triggered when a match occurs}
|
||||
|
||||
&CMD.CRONTAB SGP - @crontab=$@crontab:@switch 0=andflags(%#,W),{@pemit %#=get(v(db)/HUH)},{@dolist HEADER [lattr(v(db)/CRON_TIME_*)]={@switch ##=HEADER,{@pemit %#=Crontab Listing%r[repeat(-,15)]},{@pemit %#=setr(0,after(##,CRON_TIME_)): [get(v(db)/##)] -- [get(v(db)/CRON_JOB_%q0)]}}}
|
||||
|
||||
&CREDIT SGP - @crontab=Donated to SGP by Jeff Hulsey <jeff@slackbastard.net>, Copyright 2001
|
||||
|
||||
@pemit me=Setting flags on @crontab object. Moment....
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - @crontab=INHERIT;@set SGP - @crontab=COMMANDS;@set SGP - @crontab=STOP;@set SGP - @crontab=SAFE},PennMUSH*,{@set SGP - @crontab=!NO_COMMAND;@set SGP - @crontab=WIZARD},MUX*,{@set SGP - @crontab=INHERIT;@set SGP - @crontab=!NO_COMMAND;@set SGP - @crontab=SAFE},RhostMUSH*,{@set SGP - @crontab=INHERIT;@set SGP - @crontab=!NOCOMMAND;@set SGP - @crontab=SAFE;@set SGP - @crontab=STOP}
|
||||
|
||||
@pemit me=Quoting @crontab data object. Moment....
|
||||
|
||||
@lock SGP - @crontab DB=SGP - @crontab
|
||||
|
||||
@Startup SGP - @crontab DB=@trigger me/CRON
|
||||
|
||||
&CRON SGP - @crontab DB=@trigger me/TRG.CRON;@wait 60={@trigger me/CRON}
|
||||
|
||||
&FORMAT SGP - @crontab DB=[month]|[date]|[day of week]|[hour]|[minute]
|
||||
|
||||
&FN.STRIP SGP - @crontab DB=edit(squish(trim(secure(foreach(me/fn.bad,%0)))),%b,_)
|
||||
|
||||
&HUH SGP - @crontab DB=Huh? (Type "help" for help.)
|
||||
|
||||
&FN.BAD SGP - @crontab DB=switch(member(v(list.bad),%0),0,%0,%b)
|
||||
|
||||
&LIST.BAD SGP - @crontab DB=~ ! @ # ^ & * + ` = | : " ' < > ? , . /
|
||||
|
||||
&TRG.CRON SGP - @crontab DB=@dolist u(FN.CRON,lattr(me/CRON_TIME_*))={@trigger [first(setr(8,v(CRON_JOB_[after(##,CRON_TIME_)])),|)]/[last(%q8,|)]}
|
||||
|
||||
&FN.CRON SGP - @crontab DB=[setq(1,extract(setr(0,lcstr(time())),2,1))][setq(2,extract(%q0,3,1))][setq(3,extract(%q0,1,1))][setq(4,last(extract(%q0,1,1,:)))][setq(5,extract(%q0,2,1,:))][filter(FLT.CRON,lattr(me/CRON_TIME_*))]
|
||||
|
||||
&FLT.CRON SGP - @crontab DB=and(or(member(setr(7,extract(setr(6,lcstr(v(%0))),1,1,|)),%q1),not(strlen(%q7))),or(member(setr(7,extract(%q6,2,1,|)),%q2),not(strlen(%q7))),or(member(setr(7,extract(%q6,3,1,|)),%q3),not(strlen(%q7))),or(member(setr(7,extract(%q6,4,1,|)),%q4),not(strlen(%q7))),or(member(setr(7,extract(%q6,5,1,|)),%q5),not(strlen(%q7))))
|
||||
|
||||
&CREDIT SGP - @crontab DB=Donated to SGP by Jeff Hulsey <jeff@slackbastard.net>, Copyright 2001
|
||||
|
||||
@pemit me=Setting flag on @crontab data object. Moment....
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - @crontab DB=INHERIT;@set SGP - @crontab DB=SAFE},PennMUSH*,{@set SGP - @crontab DB=WIZARD},MUX*,{@set SGP - @crontab DB=INHERIT;@set SGP - @crontab DB=SAFE},RhostMUSH*,{@set SGP - @crontab DB=INHERIT;@set SGP - @crontab DB=SAFE}
|
||||
|
||||
@pemit me=Triggering the startup on the data object. Moment....
|
||||
|
||||
@trigger SGP - @crontab DB/startup
|
||||
|
||||
@pemit me=Editting &WIZLIST on the SGP - Help Data object and adding +wizhelp for @crontab. If this is a MUX, you will see an error message. Moment....
|
||||
|
||||
@switch version()=MUX*,{},{@edit SGP - Help Data/WIZLIST_COMMANDS=$,|@crontab}
|
||||
|
||||
&WIZHELP_@CRONTAB SGP - Help Data=[repeat(-,78)]%R@crontab:%R %R[space(2)]SYNTAX: @crontab%R[space(10)]@cron/add%R[space(10)]@cron/add <job name>=<time>/<object>|<attribute>%R[space(10)]@cron/del <job name>%R%R[space(2)]Wizard Only%R %R[space(2)]<time> is in the format: \[month\]|\[date\]|\[day of week\]|\[hour\]|\[minute\]%R[space(2)]<object> must be a dbref%R[space(2)]\[month\] and \[day of week\] are alpha entries (Jan, Mar, Tue, Sat, etc), not %R[space(2)]numeric entries. Case is unimportant (code lcstr's everything before running %R[space(2)]it through).%R[space(2)]%R[space(2)]Multiple entries inside any crontab category are space separated. (BE VERY %R[space(2)]CAREFUL WHEN LEAVING THE LAST 2 ENTRIES BLANK! - ANY BLANK MATCHES %R[space(2)]EVERYTHING!)%R%R[space(2)]@cron/add includes error checking and will not allow invalid month or day of %R[space(2)]week entries, or invalid dbrefs (including non-dbrefs like *jeff).%R[space(3)]%R[space(2)]Examples:%R[space(4)]|13|Fri|12|00[space(20)]- Every Friday the 13th, at noon.%R[space(4)]Jan|1||00|00[space(21)]- At the beginning of any year (midnight, %R[space(39)]Jan 1).%R[space(4)]||||00[space(27)]- At the beginning of every hour.%R[space(4)]||||00 10 20 30 40 50[space(12)]- Every 10 minutes.%R[space(4)]Jan Mar May Jul Aug Oct Dec|1||| - Every minute of the 1st day of any %R[space(39)]month listed. %R[space(43)]%R[repeat(-,78)]
|
||||
|
||||
@pemit me=Using +version to add entries for @crontab and updating the history of the SGP - Help Data object. If you don't have +version installed here, you will see error messages. Moment....
|
||||
|
||||
@switch version()=MUX*,{},{+version/update [num(SGP - Help Data)]/history=@crontab added}
|
||||
|
||||
|
||||
drop SGP - @crontab
|
||||
@tel SGP - @crontab DB=SGP - @crontab
|
||||
|
||||
|
||||
@pemit me=Quote of @crontab code complete.%R%RIf this is a MUX, you will need to edit staffhelp.txt to include the helpfile information found in 'crontab.txt' on the SGP website and be double sure to update the staffhelp index entry to include '@crontab'. consult the SGP website for guidance.
|
||||
|
||||
|
||||
398
sgp/SGP-Installer.txt
Normal file
398
sgp/SGP-Installer.txt
Normal file
|
|
@ -0,0 +1,398 @@
|
|||
@@ SGP V1.0 - 1 August 2000 (updated 042501)
|
||||
@@
|
||||
@@ ---- SGP - Main Object Installer ----
|
||||
@@
|
||||
@@ NOTE 1: Due to the way that MUSH and MUX operate, you need to have
|
||||
@@ #1 @admin player_queue_limit=1000 and then @restart the MUSH after
|
||||
@@ so that the file quotes cleanly. It is recommended that if using
|
||||
@@ TinyFugue, that you /quote with a 1 second delay between commands,
|
||||
@@ so that the queue has time to catch up before it becomes overloaded.
|
||||
@@
|
||||
@@ NOTE 2: Make sure that you either allow wizards to use @function or
|
||||
@@ be prepared to set up a long @startup on #1.
|
||||
@@
|
||||
@@ NOTE 3: Either quote these objects in the master room or @tel them
|
||||
@@ to that location after they are quoted.
|
||||
@@
|
||||
@@ NOTE 4: This code is compatible with PennMUSH, TinyMUSH 2.2.x,
|
||||
@@ MUX 2.0, and RhostMUSH. There are no known changes required
|
||||
@@
|
||||
@@
|
||||
@@ This file current as of 25 April 2001 and includes version
|
||||
@@ monitoring code, and replaces the previous +motd implementation with
|
||||
@@ new code provided by Ashen-Shugar.
|
||||
@@
|
||||
|
||||
@pemit me=Creating the SGP data and commands objects and setting up version history. Moment....
|
||||
|
||||
@@ Creating SGP objects.
|
||||
|
||||
@create SGP - Global Parent Object
|
||||
@create SGP - Global Functions
|
||||
@create SGP - Main Globals
|
||||
@create SGP - Wizard Globals
|
||||
@create SGP - Staff Globals
|
||||
|
||||
@@ Writing &DB to the command objects.
|
||||
|
||||
@wait 0=&DB SGP - Main Globals=num(SGP - Global Parent Object)
|
||||
@wait 0=&DB SGP - Wizard Globals=num(SGP - Global Parent Object)
|
||||
@wait 0=&DB SGP - Staff Globals=num(SGP - Global Parent Object)
|
||||
|
||||
@@ Writing &SGP-OBJECTS to the SGP objects.
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[num(SGP - Global Parent Object)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - Staff Globals)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - Main Globals)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - Wizard Globals)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP - Global Functions)]
|
||||
|
||||
|
||||
@@ Writing &SGP-VERSION to the SGP objects.
|
||||
|
||||
@wait 0=&SGP-VERSION SGP - Global Parent Object=1.0|Base 042501|[elements(time(),2 3 5)]
|
||||
@wait 0=&SGP-VERSION SGP - Staff Globals=1.0|Base 121600|[elements(time(),2 3 5)]
|
||||
@wait 0=&SGP-VERSION SGP - Main Globals=1.0|Base 121600|[elements(time(),2 3 5)]
|
||||
@wait 0=&SGP-VERSION SGP - Wizard Globals=1.0|Base 042501|[elements(time(),2 3 5)]
|
||||
@wait 0=&SGP-VERSION SGP - Global Functions=1.0|Base 121600|[elements(time(),2 3 5)]
|
||||
|
||||
@@ Writing &UPDATE-HISTORY to the SGP objects.
|
||||
|
||||
&UPDATE-HISTORY SGP - Main Globals=Base Install 121600 [elements(time(),2 3 5)]
|
||||
&UPDATE-HISTORY SGP - Staff Globals=Base Install 121600 [elements(time(),2 3 5)]
|
||||
&UPDATE-HISTORY SGP - Wizard Globals=Base Install 042501 [elements(time(),2 3 5)]
|
||||
&UPDATE-HISTORY SGP - Global Functions=Base Install 121600 [elements(time(),2 3 5)]
|
||||
&UPDATE-HISTORY SGP - Global Parent Object=Base Install 042501 [elements(time(),2 3 5)]
|
||||
|
||||
@@
|
||||
@@ Global Parent Object. This is the home of all the non-command attributes.
|
||||
@@ This object can collect the non-command attributes that will slow down
|
||||
@@ the MUSH.
|
||||
@@
|
||||
|
||||
@pemit me=Writing to SGP - Global Parent Object.... Moment.
|
||||
|
||||
@desc SGP - Global Parent Object=This is the global data object for SGP. All the main global objects read data and write from this object and their code will -not- work without it. Non-command attributes for globals that you add to any of the globals objects should be placed here.%R%R[iter(setdiff(lattr(me),Desc),ljust(##,18))]
|
||||
|
||||
&BAR SGP - Global Parent Object=[repeat(^,78)]
|
||||
|
||||
&CANSEE SGP - Global Parent Object=[switch(type(%0),P*,[sign(conn(%0))],[andflags(%0,!D)])]
|
||||
|
||||
&CANFIND SGP - Global Parent Object=[and(not(hasflag(%0,unfindable)),not(hasflag(%0,dark)),not(hasflag(loc(%0),unfindable)))]
|
||||
|
||||
&COLDISP_FN SGP - Global Parent Object=[fold(%!/COLDISP_FLD, %0, %r%b%b, %1)]
|
||||
|
||||
&COLDISP_FLD SGP - Global Parent Object=%0[switch(1, gt(setq(1, sub(mul(setq(2, add(div(strlen(%1), 18), 1))%q2, 18), 1))%q1, sub(76, mul(%q0, 18))), %r%b%b%b[ljust(edit(%1, _, %b), %q1)][setq(0, %q2)], %b[ljust(edit(%1, _, %b), %q1)][setq(0, add(%q2, %q0))])]
|
||||
|
||||
@@
|
||||
@@ Credits...veddy important
|
||||
@@
|
||||
|
||||
&CREDITS-CNOTES SGP - Global Parent Object=Angel@Heaven.Gofast.Net
|
||||
&CREDITS-LWHO SGP - Global Parent Object=Angel@Heaven.Gofast.Net
|
||||
&CREDITS-+where SGP - Global Parent Object=Audumla@Granite
|
||||
&CREDITS-+UPTIME SGP - Global Parent Object=Orion@Granite
|
||||
&CREDITS-+finger SGP - Global Parent Object=Miateila@Granite
|
||||
&CREDITS-REGISTER SGP - Global Parent Object=Cheetara@Granite
|
||||
&CREDITS-+timestamp SGP - Global Parent Object=BEM@Granite
|
||||
&CREDITS-+3who SGP - Global Parent Object=Ian@BrazilMUX
|
||||
&CREDITS-+MOTD SGP - Global Parent Object=Created from scratch by Ashen-Shugar (c) 2001, All rights reserved. This code, with permission, belongs to the SGP code development. All issues with credibility, ownership, or code herein should be brought to the distributors of SGP. This code is original and is not based (other than syntax and attribute compatability) off any other code.
|
||||
&CREDITS-OOC SGP - Global Parent Object=Audumla@Granite
|
||||
&CREDITS-BACKGROUNDS SGP - Global Parent Object=BEM@Granite
|
||||
&CREDITS-+BEGINNER SGP - Global Parent Object=Audumla@Granite
|
||||
|
||||
&DARKEX SGP - Global Parent Object=[orflags(%0,!D)]
|
||||
|
||||
&FIL-LWHO SGP - Global Parent Object=[match(loc(%0),%l)]
|
||||
|
||||
&FINGER_LIST_LONG SGP - Global Parent Object=Full Name|Age|Fame|Position|Apparent Age|Plan|RP-Prefs|Alts|Theme Song|Quote|Office-hours|Temperment|Vacation|Homepage
|
||||
|
||||
&FINGER_LIST SGP - Global Parent Object=fullname|age|fame|position|app-age|plan|rp-prefs|alts|themesong|quote|off-hours|temperment|vacation|url
|
||||
|
||||
@@
|
||||
@@ Sample footers to pick from for select for general globals.
|
||||
@@
|
||||
|
||||
&footer SGP - Global Parent Object=[repeat(==,39)]
|
||||
&footer-dash SGP - Global Parent Object=[repeat(--,39)]
|
||||
&footer-eq-o SGP - Global Parent Object=[repeat(=o,39)]
|
||||
&footer-dash-percent-1 SGP - Global Parent Object=[repeat(-%%-!,15)]
|
||||
&footer-dash-percent-2 SGP - Global Parent Object=[repeat(-%%,26)]
|
||||
&footer-dash-percent-3 SGP - Global Parent Object=[repeat(%%-!-,15)]
|
||||
&footer-o-eq SGP - Global Parent Object=[repeat(o-o=o ,15)-o]
|
||||
&footer-ozz SGP - Global Parent Object=[repeat(ozz,26)]
|
||||
&footer-oz SGP - Global Parent Object=[repeat(oz,39)]
|
||||
&footer-xcomplex SGP - Global Parent Object=x[repeat(x-==-,15)]xx
|
||||
&footer-ocomplex SGP - Global Parent Object=[repeat(o-==-o,15)]
|
||||
&footer-complex SGP - Global Parent Object=--oo[repeat(%B-==-%B,12)]oo--
|
||||
|
||||
&FN_SCANOBJ SGP - Global Parent Object=[setq(6,%0)][iter(filter(FIL_IS$,lattr(%q6)),##)]
|
||||
|
||||
&FN_SCAN SGP - Global Parent Object=%r[name(%0)]%(%0[flags(%0)]%)[iter(u(FN_SCANOBJ,%0),%r[space(4)][ljust(##,40)]%[[mid(get(%0/##),1,sub(pos(:,get(%0/##)),2))]%])]
|
||||
|
||||
@@
|
||||
@@ Headers section:
|
||||
@@ This is where you need to makes some choices, my children!
|
||||
@@
|
||||
|
||||
&HEADER SGP - Global Parent Object=[center(>%B%B[mudname()]%B%B<,78,=)]%R
|
||||
&HEADER-STAFF SGP - Global Parent Object=[center(>%B%B[mudname()] Staff%B%B<,78,=)]
|
||||
&HEADER-STAFFCON SGP - Global Parent Object=[center(>%B%B[mudname()] Connected Staff%B%B<,78,=)]
|
||||
|
||||
@@
|
||||
@@ Softcoded helpfiles for the U1/Old style TinyMUSH variants
|
||||
@@ MUX has a textfile. Please check server documentation for how to
|
||||
@@ use it.
|
||||
@@
|
||||
|
||||
&IDLETIME SGP - Global Parent Object=switch(1,lt(%0,60),%0s,lt(%0,3600),div(%0,60)m,lt(%0,86400),div(%0,3600)h,div(%0,86400)d)
|
||||
|
||||
&LASTCONN SGP - Global Parent Object=[setq(9,sub(convtime(%1),convtime(%0)))][ulocal(secs2hrs,%q9)]
|
||||
|
||||
&LIST-SAMPLE SGP - Global Parent Object=Sample|Audumla|Done and Installed on Global
|
||||
|
||||
&LOCSORT SGP - Global Parent Object=[comp(name(loc(%0)),name(loc(%1)))]
|
||||
|
||||
&NAMESORT SGP - Global Parent Object=[comp(name(%0),name(%1))]
|
||||
|
||||
&SORTLOC SGP - Global Parent Object=[comp(loc(%0),loc(%1))]
|
||||
|
||||
&SECS2HRS SGP - Global Parent Object=[switch(1,lte(%0,60),%0s,lte(%0,3600),{[div(%0,60)]m},lte(%0,86400),{[div(%0,3600)]h [rjust(div(mod(%0,3600),60),2)]m},{[div(%0,86400)]d [rjust(div(mod(%0,86400),3600),2)]h})]
|
||||
|
||||
&STAFF-LIST SGP - Global Parent Object=#0
|
||||
|
||||
&STARTING_IC_LOC SGP - Global Parent Object=#0
|
||||
|
||||
&TWODIGCONN SGP - Global Parent Object=switch(1,lt(%0,60),rjust(%0s,7),lt(%0,3600),rjust(div(%0,60)m,3)[rjust(mod(%0,60)m,4)],lt(%0,86400),rjust(div(%0,3600)h,3)[rjust(div(mod(%0,3600),60)m,4)],rjust(div(%0,86400)d,3)[rjust(div(mod(%0,3600),3600)h,4)])
|
||||
|
||||
@pemit me=Setting Flags on SGP - Global Parent Object.... Moment.
|
||||
|
||||
@set SGP - Global Parent Object=SAFE
|
||||
|
||||
@switch version()=RhostMUSH*,{@set SGP - Global Parent Object=INHERIT},{}
|
||||
|
||||
@@
|
||||
@@ Global Functions Object. Place this in a storage location.
|
||||
@@
|
||||
|
||||
@pemit me=Writing to SGP - Global Functions.... Moment.
|
||||
|
||||
@desc SGP - Global Functions=This is the global function object for SGP. The startup on this object must be triggered at every startup of the server. As such, the #1 startup on #1 must include the appropriate trigger or the server must be configured so that wizards can use @function. This decision is a matter of preference.%R%R[iter(setdiff(lattr(me),Desc),ljust(##,18))]
|
||||
|
||||
&FN_OSTAFF SGP - Global Functions=[gt(member(get(v(DB)/staff-list),%0),0)]
|
||||
|
||||
@pemit me=Setting @startup on SGP - Global Functions.... Moment.
|
||||
|
||||
@switch version()=PennMUSH*,{@Startup SGP - Global Functions=@dolist lattr(me/fn_*)=@function after(##,FN_)=me,##\;@dolist lattr(me/fnp_*)=@function after(##,FNP_)=me,##},{@Startup SGP - Global Functions=@dolist lattr(me/fn_*)=@function after(##,FN_)=me/##\;@dolist lattr(me/fnp_*)=@function after(##,FNP_)=me/##}
|
||||
|
||||
@switch version()=MUX*,{},{&COLUMNS2 SGP - Global Functions=%[setq(0,div(75,%%1))%]%[setq(1,switch(mod(words(%%0,%%2),%%q0),0,div(words(%%0,%%2),%%q0),add(div(words(%%0,%%2),%%q0),1)))%]%[iter(lnum(%%q1),%%r%[u(COLUMNS3,extract(%%0,add(mul(##,%%q0),1),%%q0,%%2),%%1,%%2)%])%]}
|
||||
|
||||
@switch version()=MUX*,{},{&COLUMNS3 SGP - Global Functions=%[iter(%%0,ljust(##,%%1),%%2)%]}
|
||||
|
||||
&FIL_IS$ SGP - Global Functions=[not(comp(mid(get(%q6/%0),0,1),$))]
|
||||
|
||||
&FN_ANDLIST SGP - Global Functions=iter(ldelete(%0,words(%0,%1),%1),##%,,%1) and [last(%0,%1)]
|
||||
|
||||
@switch version()=MUX*,{},RhostMUSH,{},{&FN_COLUMNS SGP - Global Functions=%[ulocal(SGP - Global Functions/COLUMNS2,%%0,%%1,%%2)%]}
|
||||
|
||||
&FN_DASH SGP - Global Functions=edit(%0,%B,-)
|
||||
|
||||
&FN_DICE SGP - Global Functions=[switch(1,gt(%0,24),#-1,lt(%0,1),#-1,iter(lnum(%0),add(1,rand(10))))]
|
||||
|
||||
&FN_FINDPC SGP - Global Functions=[setq(6,locate(%0,%1,aimnpP))][switch(r(6),#-*,locate(%0,*%1,p),r(6))]
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{&FN_ISSTAFF SGP - Global Functions=orflags%(%%0,Wi%)},MUX*,{&FN_ISSTAFF SGP - Global Functions=orflags%(%%0,WZw%)},PennMUSH*,{&FN_ISSTAFF SGP - Global Functions=orflags%(%%0,Wr%)},{&FN_ISSTAFF SGP - Global Functions=orflags%(%%0,iWaBg%)}
|
||||
|
||||
&FN_MMM-DD-YYYY SGP - Global Functions=[elements(time(),2 3 5)]
|
||||
|
||||
&FN_ROLL SGP - Global Functions=[switch(1,gt(%0,24),#-1,lt(%0,1),#-1,[setq(0,dice(%0))][setq(1,words(iter(%q0,switch(1,gte(##,%1),##))))][setq(2,words(iter(%q0,switch(##,1,##))))][sub(%q1,%q2)])]
|
||||
|
||||
&FN_SCANOBJ SGP - Global Functions=[setq(6,%0)][iter(filter(FIL_IS$,lattr(%q6)),##)]
|
||||
|
||||
&FN_SCAN SGP - Global Functions=%r[name(%0)]%(%0[flags(%0)]%)[iter(u(FN_SCANOBJ,%0),%r[space(4)][ljust(##,40)]%[[mid(get(%0/##),1,sub(pos(:,get(%0/##)),2))]%])]
|
||||
|
||||
@pemit me=Setting flags on SGP - Global Functions.... Moment.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - Global Functions=INHERIT;@set SGP - Global Functions=SAFE},PennMUSH*,{@set SGP - Global Functions=WIZARD},MUX*,{@set SGP - Global Functions=INHERIT;@set SGP - Global Functions=SAFE},RhostMUSH*,{@set SGP - Global Functions=INHERIT;@set SGP - Global Functions=SAFE}
|
||||
|
||||
@@
|
||||
@@ The Main Globals Command object. Place this in the master room.
|
||||
@@
|
||||
|
||||
@pemit me=Writing to SGP - Main Globals.... Moment.
|
||||
|
||||
@Desc SGP - Main Globals=This is the main globals object for SGP. These are global commands that every player will have access to and use.%R%R[iter(setdiff(lattr(me),Desc),ljust(##,18))]
|
||||
|
||||
&CMD-ACCEPT SGP - Main Globals=$+accept:&accept-conditions %#=time(); @pemit %#=You have acknowledged the Acceptable Use Policy as of [get(%#/accept-conditions)].
|
||||
|
||||
&CMD-BEGINNER SGP - Main Globals=$+beginner:@pemit %#=[center(Commands for Beginning MUSHers,78, )]%R%RMUSH is new to some of you and probably a little daunting. To ease your feelings of panic, we offer a very basic list of commands that will get you looking around and using the various features of the game.%R%R"<message>[space(16)]You say <message>%RSay <message> [space(12)]See above.%Rooc <message>[space(13)]Makes an OOC statement or pose.%Rpage <person>=<message>[space(3)]Pages <person> with <message>%Rlook[space(22)]Shows you the room you are standing in.%Rlook <object or person>[space(3)]Shows the desc for that object or person%Rpose <message>[space(12)]You pose <message> EX: pose grins.->John Doe grins.%R:<message>[space(16)]See 'pose" above%RWHO[space(23)]Shows a list of who is connected to the MUSH%R+who[space(22)]Shows a modified WHO.%R+help[space(21)]The global +help system.%R+staff[space(20)]Shows connected Staff%R+staff/all[space(16)]Shows the staff roster.%R%RNOTE: MUSH commands may be case sensitive. You can always page a staffer for help.%R%r"+beginner" recalls this file%R
|
||||
|
||||
&CMD-FINGER SGP - Main Globals=$+finger *:[setq(0,switch([type(num(%0))],PLAYER,[num(*%0)],[switch([type(num(*%0))],PLAYER,[Num(*%0)],[locate(%#,%0,mp)])]))][setq(9,and(not(and(hasflag(%q0,Dark),not(IsStaff(%#)))),switch(member(lwho(),%q0),0,0,1)))][setq(8,idle(%q0))]; @switch %q0= #-1,@pemit %#=That is not a player.,#-2,@pemit %#=There is more than one %0.,{@pemit %#=[center(---<@%B%B[name(%q0)[switch(isstaff(%#),0,,(%q0) [flags(%q0)])]]%B%B@>---,78,=)]%r[ljust(Alias:%B%B[switch(hasattr(%q0,alias),1,[u(%q0/Alias)],)]%B[switch(hasflag(%q0,Wizard),0,switch(hasflag(%q0,Immortal),0,switch(hasflag(%q0,Builder),0,,(Builder)),(Immortal)),(Wizard))],39)]|[ljust([switch(%q9,0,Last on: [get(%q0/last)],1,On for: [u(v(db)/secs2hrs,conn(%q0))][space(10)]Idle: [u(v(db)/secs2hrs,%q8)])],38)]%R[ljust(Sex: %B%B%B[switch(strlen(get(%q0/sex)),0,None Set,get(%q0/sex))],39)]|[ljust(Mail:%B%B[extract(mail(%q0),2,1)] unread / [extract(mail(%q0),1,1)] total.,38)]%R[ljust([switch(hasattr(%q0,email),1,E-Mail:%B[get(%q0/email)],E-Mail:%B(unlisted))],39)]|[ljust(,38)]%R[u(v(db)/footer)]%R[switch(findable(%#,%q0),1,Location:[space(7)][name(loc(%q0))],[switch(isstaff(%#),1,Location:[space(7)][name(loc(%q0))] (unfindable),Location:[space(7)](unfindable))])][setq(7,[u(v(db)/finger_list)])][iter(%q7,{[switch(1,hasattr(%q0,##),{%r[ljust([index([u(v(db)/finger_list_long)],|,[member(%q7,##,|)],1)]:,16)][u(%q0/##)]})]},|)][iter(lattr(%q0/finger*),%r[ljust(capstr(lcstr(edit(edit(##,FINGER_,),FINGER-,))):,15)]%t[u(%q0/##)])]; @pemit %#=[switch(hasflag(%#,wizard),0,,[repeat(-,78)]%RRegistration:%t%t[get(%q0/registration)]%rLast online from:%t[get(%q0/lastsite)]%r[switch(%q9,0,,Currently online from:%t[get(%q0/lastsite)]%r)])][u(v(db)/footer)];@switch hasflag(%#,DARK)=1,{},{@verb %q0=%#,,,,,afinger,}}
|
||||
|
||||
@@
|
||||
@@ If you are running an older TinyMUSH with Fluff's Mailer, then use the code below
|
||||
@@
|
||||
|
||||
@@ &CMD-FINGER-AMBY SGP - Main Globals=$+finger *:[setq(0,switch([type(num(%0))],PLAYER,[num(*%0)],[switch([type(num(*%0))],PLAYER,[Num(*%0)],[locate(%#,%0,mp)])]))][setq(9,and(not(and(hasflag(%q0,Dark),not(IsStaff(%#)))),switch(member(lwho(),%q0),0,0,1)))][setq(8,idle(%q0))];@pemit %#=[switch(%q0,#-1,That is not a player.,#-2,There is more than one %0.,[center(---<@%B%B[name(%q0)[switch(isstaff(%#),0,,(%q0) [flags(%q0)])]]%B%B@>---,78,=)]%r[ljust(Alias:%B%B[switch(hasattr(%q0,alias),1,[u(%q0/Alias)],)]%B[switch(hasflag(%q0,Wizard),0,switch(hasflag(%q0,Immortal),0,switch(hasflag(%q0,Builder),0,,(Builder)),(Immortal)),(Wizard))],39)]|[ljust([switch(%q9,0,Last on: [get(%q0/last)],1,On for: [u(v(db)/secs2hrs,conn(%q0))][space(10)]Idle: [u(v(db)/secs2hrs,%q8)])],38)]%R[ljust(Sex: %B%B%B[switch(strlen(get(%q0/sex)),0,None Set,get(%q0/sex))],39)]|[setq(1,get(%q0/mbox))][ljust(Mail:%B%B[switch(hasattr(%q0,mbox),1,{[words(get(%q1/NEW_LIST))] unread / [words(get(%q1/RECV_LIST))] total.},{0 unread / 0 total.})],38)]%R[ljust([switch(hasattr(%q0,email),1,E-Mail:%B[get(%q0/email)],E-Mail:%B(unlisted))],39)]|[ljust(,38)]%R[u(v(db)/footer)]%R[switch(findable(%#,%q0),1,Location:[space(7)][name(loc(%q0))],[switch(isstaff(%#),1,Location:[space(7)][name(loc(%q0))] (unfindable),Location:[space(7)](unfindable))])][setq(7,[get(v(db)/finger_list)])][iter(%q7,{[switch(1,hasattr(%q0,##),{%r[ljust([index([get(v(db)/finger_list_long)],|,[member(%q7,##,|)],1)]:,16)][u(%q0/##)]})]},|)][iter(lattr(%q0/finger*),%r[ljust(capstr(lcstr(edit(edit(##,FINGER_,),FINGER-,))):,15)]%t[u(%q0/##)])])];; @pemit %#=[switch(hasflag(%#,wizard),0,,[repeat(-,78)]%RRegistration:%t%t[get(%q0/registration)]%rLast online from:%t[get(%q0/lastsite)]%r[switch(%q9,0,,Currently online from:%t[get(%q0/lastsite)]%r)])][u(v(db)/footer)];@verb %q0=%#,,,,,afinger,
|
||||
|
||||
&CMD-GLANCE SGP - Main Globals=$+glance:@pemit %#=[center(%B%BAt a glance around [name(%l)%B%B],78,-)][iter(filter(v(DB)/cansee, lcon(%l)), %r[ljust(mid(name(##),0,20),21)]%B[switch(type(##),player,{rjust(elements(u(v(DB)/secs2hrs,idle(##)),1),3)})] %b[mid(get(##/short-desc),0,50)])]%r[u(v(db)/footer)]
|
||||
|
||||
&CMD-IC SGP - Main Globals=$+ic:@switch get(%#/approved)=,{@pemit %#=You must have your stats approved before you can join the IC play.},{@tel %#=switch(get(%#/last_ic),,v(starting_ic_loc),get(%#/last_ic));@pemit %#=You are now on the IC grid.;&last_ic %#}
|
||||
|
||||
&CMD-INFO SGP - Main Globals=$+info:@pemit %#=[center(%bYour Info%b,78,=)]%rGeneral: [switch(hasattr(%#,info-general),0,Unset. Type '&info-general me=Text' to set it.,get(%#/info-general))][iter(edit(lattr(%#/info-*),INFO-GENERAL,),%r[capstr(lcstr(after(##,INFO-)))]: [get(%#/##)])]%r[u(v(db)/footer)]
|
||||
|
||||
&CMD-INFO-SEE SGP - Main Globals=$+info *:@pemit %#=[switch(num(*%0),#-1,That is not a player.,{[center(%b[capstr(%0)]'s Info%b,78,=)]%rGeneral: [switch(hasattr(*%0,info-general),0,Unset.,get(*%0/info-general))][iter(edit(lattr(*%0/info-*),INFO-GENERAL,),[switch(or(match(squish(edit([string(%#,race)] [string(%#,tradition)] [string(%#,tribe)] [string(%#,clan)] [string(%#,faction)],NOT SET,)),after(##,INFO-)),isstaff(%#)),0,,%r[capstr(lcstr(edit(##,INFO-,)))]: [get(*%0/##)])])]%r[repeat(=,78)]})]
|
||||
|
||||
&CMD-KNOCK SGP - Main Globals=$+knock *:@switch setq(0,locate(%#,%0,e))%q0=#-1, {@pemit %#=I don't see %0 here.}, #-2, {@pemit %#=Which %0?}, {@pemit/contents [loc(%q0)]=There is a knocking upon the door, coming from the direction of [name(loc(%#))].; @pemit/contents [loc(%#)]=%N knocks on the door marked '[name(%q0)]'.}
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@pemit me=Since this is TinyMUSH 2.2, I will add multipaging code for you.},{}
|
||||
|
||||
&CMD-MULTIPAGE SGP - Main Globals=$mp *=*:@pemit %#={[setq(2,iter(%0,num(*##)))][setq(2,setunion(%q2,%q2))][setq(4,iter(%q2,switch(type(*##),PLAYER,space(0),##)))][setq(5,iter(%q2,switch(hasflag(*##,connected),1,space(0),##)))][setq(2,setdiff(%q2,%q4))][setq(2,setdiff(%q2,%q5))][setq(2,iter(%q2,switch(elock(##/page,%#),0,,##)))][setq(3,iter(%q2,name(##)))]You page ([%q3]) with: [switch(mid(%1,0,1),:,%N [mid(%1,1,sub(strlen(%1),1))],;,%N[mid(%1,1,sub(strlen(%1),1))],%1)]};&lastpaged %#=[%q3];@pemit %#=[switch(words(%q5),0,,Could not reach: [iter(%q5,name(*##))])];[setq(9,iter(%q2,switch(words(get(##/idle)),0,,Idle from [name(##)]: [get(##/idle)]%r)))];@switch words(%q9)=0,,@pemit %#=%q9;@pemit/list [%q2]={%N multipages (%q3): [switch(mid(%1,0,1),:,%N [mid(%1,1,sub(strlen(%1),1))],;,%N[mid(%1,1,sub(strlen(%1),1))],%1)]}
|
||||
|
||||
&CMD-MULTIPAGE2 SGP - Main Globals=$mp *:@switch %0={*=*},{},{@pemit %#={[setq(2,iter([get(%#/lastpaged)],num(*##)))][setq(2,setunion(%q2,%q2))][setq(4,iter(%q2,switch(type(*##),PLAYER,space(0),##)))][setq(5,iter(%q2,switch(hasflag(*##,connected),1,space(0),##)))][setq(2,setdiff(%q2,%q4))][setq(2,setdiff(%q2,%q5))][setq(2,iter(%q2,switch(elock(##/page,%#),0,,##)))][setq(3,iter(%q2,name(##)))]You page ([%q3]) with: [switch(mid(%0,0,1),:,%N [mid(%0,1,sub(strlen(%0),1))],;,%N[mid(%0,1,sub(strlen(%0),1))],%0)]};&lastpaged %#=[%q3];@pemit %#=[switch(words(%q5),0,,Could not reach: [iter(%q5,name(*##))])];[setq(9,iter(%q2,switch(words(get(##/idle)),0,,Idle from [name(##)]: [get(##/idle)]%r)))];@switch words(%q9)=0,,@pemit %#=%q9;@pemit/list [%q2]={%N multipages (%q3): [switch(mid(%0,0,1),:,%N [mid(%0,1,sub(strlen(%0),1))],;,%N[mid(%0,1,sub(strlen(%0),1))],%0)]}}
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{},{@pemit me=Since this server has native multipaging, I won't add it.;&CMD-MULTIPAGE SGP - Main Globals;&CMD-MULTIPAGE2 SGP - Main Globals}
|
||||
|
||||
&CMD-ALT-OOC_EMIT SGP - Main Globals=$'*: @pemit/contents %l=<OOC> %N[switch(mid(%0,0,1),:,%b[delete(%0,0,1)],;,[delete(%0,0,1)],%bsays\, "%0")]
|
||||
|
||||
&CMD-OOC_EMIT SGP - Main Globals=$ooc *: @pemit/contents %l=<OOC> %N[switch(mid(%0,0,1),:,%b[delete(%0,0,1)],;,[delete(%0,0,1)],%bsays\, "%0")]
|
||||
|
||||
&CMD-PLUS-3WHO SGP - Main Globals=$+3who:@pemit %#=setq(0,v(db))[setq(7,0)][u(v(db)/header)]%B[repeat(|NAME[space(9)]On for Idle,3)]|%r%b|----------- ------- ----|----------- ------- ----|----------- ------- ----[setq(1,0)][setq(8,iter(lwho(),switch(hasflag(##,dark),1,,setq(9,%q9[setq(1,add(%q1,1))][switch(mod(%q1,3),1,|%r%b)]|[ljust(mid(name(##),0,12),12)][u(%q0/twodigconn,conn(##))][rjust(mid(u(%q0/idletime,idle(##)),0,5),5)]))[setq(7,add(%q7,1))]))]%q9%r%b|[repeat(-,74)]|%r%b%b%q7 players connected.%R[u(v(db)/footer)]
|
||||
|
||||
&CMD-PLUS-LWHO SGP - Main Globals=$+lwho: @pemit %#=setq(0,0)[u(v(db)/header)][ljust(Player,15,)] [ljust(Sex,3)] [ljust(Alias,5)][rjust(Idle,6)] [ljust(mid(Location,0,28),28,)] [ljust(dbref,6)]%R[u(v(db)/footer)][iter(filter(v(db)/fil-LWHO,lwho()),switch(and(hasflag(##,dark),not(isstaff(%#))),1,,%R[ljust(name(##),15,.)] [ljust(mid(u(##/sex),0,1),3)] [ljust(mid(u(##/alias),0,5),5)][rjust(mid(u(v(db)/secs2hrs,idle(##)),0,6),6)] [ljust(switch(and(or(hasflag(##,unfindable),hasflag(loc(##),unfindable)),not(or(hasflag(%#,wizard),hasflag(%#,immortal)))),1,,mid(name(room(##)),0,28)),28,.)] [ljust(switch(or(isstaff(%#),and(hasflag(loc(##),JUMP_OK),not(hasflag(##,UNFINDABLE)),not(hasflag(loc(##),UNFINDABLE)))),0,,mid(room(##),0,5)),6,.)][ljust(switch(1,ostaff(##),Staff),6)])[setq(0,add(%q0,not(hasflag(##,dark))))])]%r[u(v(db)/footer)]%RThere are %q0 players connected in location [name(%L)]%R[u(v(db)/footer)]
|
||||
|
||||
&CMD-PLUS-WHERE SGP - Main Globals=$+where: @pemit %#=setq(0,0)[u(v(db)/header)][ljust(mid(Location,0,28),28,)][ljust(Player,15,)][rjust(Idle,6)] %R[u(v(db)/footer)][iter(setq(9,sortby(v(db)/locsort,filter(v(db)/canfind,lwho())))%q9,%r[ljust(mid(name(loc(##)),0,27),27,.)]%b[ljust(name(##),16)] [rjust(mid(u(v(db)/secs2hrs,idle(##)),0,6),6)])]%r[u(v(db)/footer)]%RThere are [words(%q9)] findable players connected.%R[u(v(db)/footer)]
|
||||
|
||||
&CMD-PLUS-WHO SGP - Main Globals=$+who: @pemit %#=[u(v(db)/header)][ljust(Player,15,)] [ljust(Sex,3)] [ljust(Alias,5)][rjust(Idle,6)] [ljust(mid(Location,0,28),28,)] [ljust(dbref,6)]%R[u(v(db)/footer)][iter(lwho(),switch(and(hasflag(##,dark),not(isstaff(%#))),1,,%R[ljust(name(##),15,.)] [ljust(mid(u(##/sex),0,1),3)] [ljust(mid(u(##/alias),0,5),5)][rjust(mid(u(v(db)/secs2hrs,idle(##)),0,6),6)] [ljust(switch(and(or(hasflag(##,unfindable),hasflag(loc(##),unfindable)),not(or(hasflag(%#,wizard),hasflag(%#,immortal)))),1,,mid(name(room(##)),0,28)),28,.)] [ljust(switch(or(isstaff(%#),and(hasflag(loc(##),JUMP_OK),not(hasflag(##,UNFINDABLE)),not(hasflag(loc(##),UNFINDABLE)))),0,,mid(room(##),0,5)),6,.)][ljust(switch(1,ostaff(##),Staff),6)]))]%r[u(v(db)/footer)]%RThere are [words(sortby(v(db)/cansee,lwho()))] players connected%R[u(v(db)/footer)]
|
||||
|
||||
&CMD-PLUS-WHO-SORTED SGP - Main Globals=$+who *: @pemit %#=[u(v(db)/header)][ljust(Player,15,)] [ljust(Sex,3)] [ljust(Alias,5)][rjust(Idle,6)] [ljust(mid(Location,0,28),28,)] [ljust(dbref,6)]%R[u(v(db)/footer)][setq(1, iter(lwho(),switch(strmatch(name(##),%0*),0,,##)))][iter(sortby(v(db)/namesort,%q1),switch(and(hasflag(##,dark),not(isstaff(%#))),1,,%R[ljust(name(##),15,.)] [ljust(mid(u(##/sex),0,1),3)] [ljust(mid(u(##/alias),0,5),5)][rjust(mid(u(v(db)/secs2hrs,idle(##)),0,6),6)] [ljust(switch(and(or(hasflag(##,unfindable),hasflag(loc(##),unfindable)),not(or(hasflag(%#,wizard),hasflag(%#,immortal)))),1,,mid(name(room(##)),0,28)),28,.)] [ljust(switch(or(isstaff(%#),and(hasflag(loc(##),JUMP_OK),not(hasflag(##,UNFINDABLE)),not(hasflag(loc(##),UNFINDABLE)))),0,,mid(room(##),0,5)),6,.)][ljust(switch(1,ostaff(##),Staff),6)]))]%r[u(v(db)/footer)]%RThere are [words(sortby(v(db)/cansee,lwho()))] players connected%R[u(v(db)/footer)]
|
||||
|
||||
&CMD-REGISTER SGP - Main Globals=$@register *=*=*:@swi/f [hasattr(%#,registration)]/[match(Player,type(%#))]/[gte(words(%0),2)]/[match(%1,*@*.*)]/[gte(words(%2),1)]=1/*/*/*/*,{@pemit %#=You may not re-register once you have set your registration. If you have made an error, please contact Staff to correct it.},0/0/*/*/*,{@pemit %#=Only Players may use this command.},0/1/1/1/1,{®ISTRATION %#=%0|%1|%2|[time()]|@register;@pemit %#=You have completed registration.},0/1/*/*/*,{@pemit %#=You must provide a full RL name, both first and last, a valid email address, and at least one alt character or None to complete registration. Please see 'news registration', '+help @register' or a member of staff for further assistance.}
|
||||
|
||||
&CMD-REGISTER-HELP SGP - Main Globals=$@register: @pemit %#=%R%R@register <RL Name>=<email>=<alts>%r%r%tAll players must be registered and read and accept the conditions found in 'news AUP' before they are allowed out of the Registration room. Unregistered character objects become subject to nuking at any time.%R%R
|
||||
|
||||
&CMD_SCAN SGP - Main Globals=$+scan *:@pemit %#=[setq(9,locate(%#,%0,*))][switch(1,strmatch(%q9,#-1),{I don't see that here.},strmatch(%q9,#-2),{I don't know which one you mean!},not(or(controls(%#,%q9),hasflag(%q9,VISUAL))),{[name(%q9)] is owned by [name(owner(%q9))]},{[u(v(db)/FN_SCAN,%q9)]})]
|
||||
|
||||
&CMD-SELFBOOT SGP - Main Globals=$+selfboot:@dol rest(ports(%N))=@boot/port ##;@pemit %#=You booted your frozen connections.
|
||||
|
||||
&CMD-SHOUT SGP - Main Globals=$+shout *:@dol lexits(%l)={@select 0=[comp(%l,loc(##))],,[neq(get(##/no_shout),1)],,[not(and(hasflag(%l,AUDIBLE),hasflag(##,AUDIBLE)))],, {@remit [loc(##)]=[switch(get(%#/sex),m*,A man,f*,A woman,w*,A woman,Someone)] shouts from nearby, "%0"}}; @remit %l=%N shouts, "%0"
|
||||
|
||||
&CMD-STAFF SGP - Main Globals=$+staff:@pemit %#=[setq(0,setinter(lwho(),u(v(db)/staff-list)))][u(v(db)/header-staffcon)]%r[ljust(Name,14)][ljust(Alias,6,)][ljust(Position,35,)][ljust(Status,10,)][rjust(Idle,6,)]%r[u(v(db)/footer)][iter(get(v(DB)/staff-list),switch( and(hasflag(##,connected),not(hasflag(##,dark))),1,%r[setq(1,match(%q0,##))][ljust(name(##),14)][ljust(get(##/alias),6)][ljust(get(##/position),35)][ljust(switch(hasflag(##,transparent),1,off-duty,ON-DUTY),10)][rjust(u(v(db)/secs2hrs,idle(##)),6)]))]%r[u(v(db)/footer)]
|
||||
|
||||
&CMD-STAFF-ALL SGP - Main Globals=$+staff/all:@pemit %#=[setq(0,setinter(lwho(),u(v(db)/staff-list)))][u(v(db)/header-staff)]%r[ljust(Name,12)]%B[ljust(Alias,7,)][ljust(Position,34,)][ljust(Last,20)]%r[u(v(db)/footer)][iter(u(v(db)/staff-list),%r[setq(1,match(%q0,##))][ljust(name(##),12)]%B[ljust(get(##/alias),6)]%B[ljust(get(##/position),34)][ljust(switch(and(hasflag(##,connected),not(hasflag(##,dark))),1,Connected,get(##/last)),20)])]%r[u(v(db)/footer)]
|
||||
|
||||
&CMD-TIMESTAMP-READ-PLAYER SGP - Main Globals=$+timestamp:@switch [words(lattr(%#/timestamp-*))]=0,{@pemit %#=You don't have any timestamps set on you.},{@pemit %#=Timestamps on you:%R[iter(lattr(%#/timestamp-*),%R##%B-%B[get(%#/##)])]}
|
||||
|
||||
&CMD-UPTIME SGP - Main Globals=$+uptime:@pemit %#=[mudname()] runtime stats:%r%tMUSH boot time.......: [starttime()]%r%tCurrent time.........: [time()]%r%tIn operation for.....: [div(sub(convtime(time()),convtime(starttime())),86400)] days, [div(mod(sub(convtime(time()),convtime(starttime())),86400),3600)] hours, [div(mod(sub(convtime(time()),convtime(starttime())),3600),60)] minutes, [mod(sub(convtime(time()),convtime(starttime())),60)] seconds.
|
||||
|
||||
&CMD-VIEW SGP - Main Globals=$+view:@pemit %#=[switch(words(lattr(loc(%#)/view-*)),0,There are no views set on your location.,The following views are set on your location:%R[iter(lattr(loc(%#)/view-*),%b%b[edit(lcstr(after(##,VIEW-)),~,%b)])])][setq(0,iter(lcon(loc(%#)),switch([gte(words(lattr(##/view-*)),1)]:[strmatch(type(##),PLAYER)][not(hasflag(##,connected))],1:10,##,1:0?,##)))][switch(words(%q0),0,,%RThe following objects have views set on them:%R[iter(%q0,%b%b[name(##)])])]
|
||||
|
||||
&CMD-VIEW-ITEM SGP - Main Globals=$+view *:@swi/first [pos(/,%0)]:[setq(0,locate(%#,before(%0,/),*))]%q0=#-1:#-?,{@pemit %#=I can't find that here!},#-1:*,{@pemit %#=[switch(words(lattr(%q0/view-*)),0,There are no views set on that item.,The following views are set on that item:%R[iter(lattr(%q0/view-*),%b%b[edit(lcstr(after(##,VIEW-)),~,%b)])])]},{@verb %q0=%#,view-[setq(1,edit(after(%0,/),%b,~))]%q1,There is no such view on that item,oview-%q1,,aview-%q1}
|
||||
|
||||
@pemit me=Setting flags on SGP - Main Globals.... Moment.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - Main Globals=INHERIT;@set SGP - Main Globals=COMMANDS;@set SGP - Main Globals=STOP;@set SGP - Main Globals=SAFE},PennMUSH*,{@set SGP - Main Globals=!NO_COMMAND;@set SGP - Main Globals=WIZARD},MUX*,{@set SGP - Main Globals=INHERIT;@set SGP - Main Globals=!NO_COMMAND;@set SGP - Main Globals=SAFE},RhostMUSH*,{@set SGP - Main Globals=INHERIT;@set SGP - Main Globals=!NOCOMMAND;@set SGP - Main Globals=SAFE;@set SGP - Staff Globals=STOP}
|
||||
|
||||
@@ Wiz-only commands. The lock on this object can be set to ISSTAFF/1 for games
|
||||
@@ where more access than just wizards is desired.
|
||||
|
||||
@Desc SGP - Wizard Globals=This is the wizard globals object for SGP. These are global commands that only wizards will have access to.%R%R[iter(setdiff(lattr(me),Desc),ljust(##,18))]
|
||||
|
||||
&ISWIZARD SGP - WIZARD Globals=[hasflag(%#,WIZARD)]
|
||||
|
||||
@lock/use SGP - WIZARD Globals=ISWIZARD/1
|
||||
|
||||
&CMD-MOTD_SET SGP - Wizard Globals=$+motd/set *=*:@pemit %#=[setq(0,[match(general wizard full down,%0)][setq(9,isstaff(%#))][r(9)])][setq(6,mid(r(0),0,1))][switch(r(0),?0,Permission denied.,0?,+Motd: ERROR - '[secure(%0)]' not a valid MOTD type.,1?,+Motd: General MOTD set.,2?,+Motd: Wizard MOTD set.,3?,+Motd: Full MOTD set.,4?,+Motd: Down MOTD set.)];&MOTD-[setq(1,extract(GEN_LIST WIZ_LIST FULL DOWN,r(6),1))][r(1)] [switch([r(9)][setq(3,gt(r(6),0))][r(3)],11,v(DB),#-1)]=[setunion(get([v(DB)]/MOTD-[r(1)]),secs())];&MOTD-[switch([setq(4,lt(r(6),3))][r(4)],1,[secs()],extract(X X FULL DOWN,r(6),1))] [switch([r(3)][r(9)],11,v(DB),#-1)]=[secure(%1)];@swi [r(0)]=11,{@motd [iter(get([v(DB)]/MOTD-GEN_LIST),%r[get([v(DB)]/MOTD-##)]%r)];@pemit/list lwho()=+Motd: [name(%#)] has set a new general MOTD.},21,{@motd/wizard [iter(get([v(DB)]/MOTD-WIZ_LIST),%r[get([v(DB)]/MOTD-##)]%r)]},31,{@motd/full %1},41,{@motd/down %1}
|
||||
|
||||
&CMD-MOTD_DEL SGP - Wizard Globals=$+motd/del *=*:@pemit %#=[setq(0,[match(general wizard full down,%0)][setq(9,isstaff(%#))][r(9)])][setq(6,mid(r(0),0,1))][switch(r(0),?0,Permission denied.,0?,+Motd: ERROR - '[secure(%0)]' not a valid MOTD type.,1?,+Motd: [setq(8,and(lte(%1,words(get([v(DB)]/motd-gen_list))),gt(%1,0)))][switch(r(8),0,Invalid general MOTD number,You remove MOTD #[add(0,%1)] from general)],2?,+Motd: [setq(8,and(lte(%1,words(get([v(DB)]/motd-wiz_list))),gt(%1,0)))][switch(r(8),0,Invalid wizard MOTD number,You remove MOTD #[add(0,%1)] from wizard)],3?,+Motd: You remove the full MOTD,4?,+Motd: You remove the down MOTD)];&MOTD-[setq(1,extract(GEN_LIST WIZ_LIST FULL DOWN,r(6),1))][r(1)] [switch([r(9)][setq(3,gt(r(6),0))][r(3)],11,v(DB),#-1)]=[setdiff(get([v(DB)]/MOTD-[r(1)]),[setq(7,extract(get([v(DB)]/MOTD-[r(1)]),%1,1))][r(7)])];&MOTD-[switch([setq(4,lt(r(6),3))][r(4)],1,[r(7)],extract(X X FULL DOWN,r(6),1))] [switch([r(3)][r(9)],11,v(DB),#-1)];@swi [r(0)]=11,{@motd [iter(get([v(DB)]/motd-gen_list),%r[get([v(DB)]/MOTD-##)]%r)]},21,{@motd/wizard [iter(get([v(DB)]/motd-wiz_list),%r[get([v(DB)]/MOTD-##)]%r)]},31,{@motd/full;@wipe [v(DB)]/MOTD-FULL},41,{@motd/down;@wipe [v(DB)]/MOTD-DOWN}
|
||||
|
||||
&CMD-MOTD_LIST SGP - Wizard Globals=$+motd/list:@pemit %#=[center(Currently Set MOTD,78,=)]%rGeneral:[iter(get([v(DB)]/motd-gen_list),%r[member(get([v(DB)]/motd-gen_list),##)]> [get([v(DB)]/motd-##)]%r)]%rWizard:[iter(get([v(DB)]/motd-wiz_list),%r[member(get([v(DB)]/motd-wiz_list),##)]> [get([v(DB)]/motd-##)]%r)]%rFull:%r[get([v(DB)]/motd-full)]%r%rDown:%r[get([v(DB)]/motd-down)]%r[u(v(db)/footer)]
|
||||
|
||||
&CMD-MOTD_RESET SGP - Wizard Globals=$+motd/reset:@motd [iter(get([v(DB)]/motd-gen_list),%r[get([v(DB)]/MOTD-##)]%r)];@motd/wizard [iter(get([v(DB)]/motd-wiz_list),%r[get([v(DB)]/MOTD-##)]%r)];@motd/down [get([v(DB)]/motd-down)];@motd/full [get([v(DB)]/motd-full)]
|
||||
|
||||
&CMD-MOTD_CLEAR SGP - Wizard Globals=$+motd/clear *:@swi/first [match(general wizard full down all,%0)][isstaff(%#)]=?0,{@pemit %#=Permission denied.},0?,{@pemit %#=+Motd: ERROR - Invalid MOTD type},1?,{@pemit %#=+Motd: You have cleared the general MOTD;@dolist [get([v(DB)]/motd-gen_list)]=@wipe [v(DB)]/MOTD-##;@wipe [v(DB)]/motd-gen_list;@motd},2?,{@pemit %#=+Motd: You have cleared the wizard MOTD;@dolist [get([v(DB)]/motd-wiz_list)]=@wipe [v(DB)]/MOTD-##;@wipe [v(DB)]/motd-wiz_list;@motd/wizard},3?,{@pemit %#=+Motd: You have cleared the full MOTD;@wipe [v(DB)]/motd-full;@motd/full},4?,{@pemit %#=+Motd: You have cleared the down MOTD;@wipe [v(DB)]/motd-down;@motd/down},5?,{@pemit %#=+Motd: You have cleared ALL of the MOTD's.;@motd;@motd/full;@motd/down;@motd/wizard}
|
||||
|
||||
&CMD-STAFF-ADD SGP - Wizard Globals=$+staff/add *:[setq(0,switch(isdbref(%0),1,%0,num(*%0)))];@switch/first 1=not(strmatch(type(%q0),PLAYER)),{@pemit %#=%0 is not a player!},match(get(v(db)/STAFF-LIST),%q0),{@pemit %#=That player is already listed in +staff.},{@wait 0=&STAFF-LIST [v(db)]=[get(v(db)/STAFF-LIST)]%B%q0;@pemit %#=You have added [name(%q0)] to the +staff listing.}
|
||||
|
||||
&CMD-STAFF-REMOVE SGP - Wizard Globals=$+staff/remove *:[setq(0,switch(isdbref(%0),1,%0,num(*%0)))];@switch/first 1=not(strmatch(type(%q0),PLAYER)),{@pemit %#=%0 is not a player!},not(match(get(v(db)/STAFF-LIST),%q0)),{@pemit %#=That player is not listed in +staff.},{&STAFF-LIST [v(db)]=remove(get(v(db)/STAFF-LIST),%q0);@pemit %#=You have removed [name(%q0)] from the +staff listing.}
|
||||
|
||||
&CMD-TIMESTAMP-SET SGP - Wizard Globals=$+timestamp */*=*:;@switch hasflag(%#,wizard)[isdbref(num(*%0))]=0*,{@pemit %#=Huh?%B%B(Type "help" for help.)},10,{@pemit %#=You can only set timestamps on players.},{×tamp-%1 *%0=Set by [name(%#)] on [time()]. %2;@lock *%0/timestamp-%1;@pemit %#=You have set the following timestamp on [name(*%0)]:%B%B[get(*%0/timestamp-%1)]}
|
||||
|
||||
&CMD-TIMESTAMP-READ-STAFF SGP - Wizard Globals=$+timestamp/read *:@switch isstaff(%#)[isdbref(num(*%0))][words(lattr(*%0/timestamp*))]=0*,{@pemit %#=Huh?%B%B(Type "help" for help.)},10*,{@pemit %#=That is not a player.},110,{@pemit %#=[name(*%0)] has no timestamps.},{@pemit %#=center(name(*%0),78,=)[iter(lattr(*%0/timestamp-*),%R##%B-%B[get(*%0/##)])]}
|
||||
|
||||
&CMD-TIMESTAMP-REMOVE SGP - Wizard Globals=$+timestamp/rem */*:;@switch hasflag(%#,wizard)[isdbref(num(*%0))]=0*,{@pemit %#=Huh?%B%B(Type "help" for help.)},10,{@pemit %#=You can only set timestamps on players.},{@unlock *%0/timestamp-%1;@pemit %#=You have removed the following timestamp on [name(*%0)]:%B%B[get(*%0/timestamp-%1)];×tamp-%1 *%0}
|
||||
|
||||
&CMD-TIMESTAMP-SHOWALL SGP - Wizard Globals=$+timestamp/showall:@dolist search(type=players)=@switch gt(words(lattr(##/timestamp*)),0)=1,@force %#=+timestamp/read [name(##)]
|
||||
|
||||
&CMD-VERSION SGP - Wizard Globals=$+version:@pemit %#=[ljust(===< Version Status for SGP >===,78,=)]%RObject[space(22)]Version[space(3)]dbref%BPatch[space(9)]Last Update%R[repeat(-,78)][iter(get(v(db)/SGP-OBJECTS),%R[mid(ljust(name(##),28),0,29)][mid(ljust(extract(get(##/SGP-VERSION),1,1,|),10),0,11)][ljust(##,6)][mid(ljust(extract(get(##/SGP-VERSION),2,1,|),14),0,15)][ljust(extract(get(##/SGP-VERSION),3,1,|),20)],|)%R][repeat(=,78)]
|
||||
|
||||
&CMD-VERSION-HISTORY SGP - Wizard Globals=$+version *:@switch match(get(v(db)/SGP-OBJECTS),%0,|)=0,{@pemit %#=That is not an object tracked by +version.},{@pemit %#=[ljust(===< Version Status for SGP >===,78,=)]%RObject[space(22)]Version[space(3)]dbref%BPatch[space(9)]Last Update%R[repeat(-,78)]%R[mid(ljust(name(%0),28),0,29)][mid(ljust(extract(get(%0/SGP-VERSION),1,1,|),10),0,11)][ljust(%0,6)][mid(ljust(extract(get(%0/SGP-VERSION),2,1,|),14),0,15)][ljust(extract(get(%0/SGP-VERSION),3,1,|),20)]%R[ljust(---< Object History >---,78,-)]%R[get(%0/UPDATE-HISTORY)]%R[repeat(=,78)]}
|
||||
|
||||
&CMD-VERSION-ADD SGP - Wizard Globals=$+version/add *:@switch match(get(v(db)/SGP-OBJECTS),%0,|)=1,{@pemit %#=That object is already listed in +version.},{@edit v(db)/SGP-OBJECTS=$,|%0;&SGP-VERSION %0=1.0|Base|[elements(time(),2 3 5)];&UPDATE-HISTORY %0=Base [elements(time(),2 3 5)];@pemit %#=You have added [name(%0)] to the +version listing.}
|
||||
|
||||
&CMD-VERSION-REMOVE SGP - Wizard Globals=$+version/remove *:@switch match(get(v(db)/SGP-OBJECTS),%0,|)=0,{@pemit %#=That object is not listed in +version.},{&SGP-OBJECTS [v(db)]=remove(get(v(db)/SGP-OBJECTS),%0,|);&SGP-VERSION %0;&UPDATE-HISTORY %0;@pemit %#=You have removed [name(%0)] from the +version listing.}
|
||||
|
||||
&CMD-VERSION-UPDATE SGP - Wizard Globals=$+version/update */*=*:@switch/first 0=match(get(v(db)/SGP-OBJECTS),%0,|),{@pemit %#=That object is not listed in +version.},setr(0,match(version patchlevel history,%1)),{@pemit %#=Invalid field. Valid entries are version, patchlevel history.},{&SGP-VERSION %0=setr(1,replace(extract(get(%0/SGP-VERSION),1,2,|),%q0,edit(%2,|,),|)|[extract(time(),2,2)] [last(time())]);&UPDATE-HISTORY %0=get(%0/UPDATE-HISTORY)|[edit(extract(%q1,3,1,|),|,%b)] [switch(%q0,3,edit(%2,|,))];@pemit %#=You have updated [name(%0)]'s [extract(version patchlevel history,%q0,1)] field to '%2'.}
|
||||
|
||||
|
||||
@pemit me=Setting @startup on SGP - Wizard Globals.... Moment.
|
||||
|
||||
@startup SGP - Wizard Globals=+motd/reset
|
||||
|
||||
@pemit me=Setting flags on SGP - Wizard Globals.... Moment.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - Wizard Globals=INHERIT;@set SGP - Wizard Globals=COMMANDS;@set SGP - Wizard Globals=STOP;@set SGP - Wizard Globals=SAFE},PennMUSH*,{@set SGP - Wizard Globals=!NO_COMMAND;@set SGP - Wizard Globals=WIZARD},MUX*,{@set SGP - Wizard Globals=INHERIT;@set SGP - Wizard Globals=!NO_COMMAND;@set SGP - Wizard Globals=SAFE},RhostMUSH*,{@set SGP - Wizard Globals=INHERIT;@set SGP - Wizard Globals=!NOCOMMAND;@set SGP - Wizard Globals=SAFE;@set SGP - Staff Globals=STOP}
|
||||
|
||||
@@ Staff Globals.
|
||||
|
||||
@pemit me=Writing to SGP - Staff Globals.... Moment.
|
||||
|
||||
@Desc SGP - Staff Globals=This is the staff globals object for SGP. These are global commands that only staff, as defined in the isstaff() on the global functions object, will have access to. You may substitute ostaff() for isstaff() in the lock setting.%R%R[iter(setdiff(lattr(me),Desc),ljust(##,18))]
|
||||
|
||||
&CAN_USE SGP - Staff Globals=[isstaff(%#)]
|
||||
|
||||
&CMD-COMMANDS SGP - Staff Globals=$+commands *:@pemit %#=switch(setq(0,locate(%#,%0,*))%q0,#-*,Cant find that object.,name(%q0) (%q0) has the following command attributes:[iter(lattr(%q0), switch(strmatch(setq(1,get(%q0/##))%q1,$*),1,%r%t##: [mid(%q1,1,sub(pos(:,%q1),2))]))])
|
||||
|
||||
&CMD-CONTENTS SGP - Staff Globals=$+contents *:@pemit %#=switch(setq(0,locate(%#,%0,*))%q0,#-*,Cant find that.,switch(words(lcon(%q0)),0,name(%q0) (%q0) contains nothing,name(%q0) (%q0) contains:[iter(lcon(%q0),%r%t[name(##)] (##))]))
|
||||
|
||||
&CMD-DUTY SGP - Staff Globals=$+duty:@switch [hasflag(%#,transparent)]=1,{@set %#=!transparent;@pemit %#=Done. You are now on duty.},{@set %#=transparent;@pemit %#=Done. You are now off duty.}
|
||||
|
||||
&CMD-JOIN SGP - Staff Globals=$+join *:@switch locate(me,*%0,p)=#-*,{@pemit %#=Sorry, %0 is not a valid player name.},{&join-from %#=loc(%#); @tel %#=loc(*%0)}
|
||||
|
||||
&CMD-PROJECT-DELETE SGP - Staff Globals=$+deleteproject *: @switch hasattr(v(db),setq(0,list-[edit(%0,%B,_)])%q0)=0, @pemit %#=No project '%0' listed., {&%q0 [v(db)]; @pemit %#=Project '%0' deleted.}
|
||||
|
||||
&CMD-PROJECT-EDIT SGP - Staff Globals=$+editproject */*=*: @switch hasattr(v(db),setq(0,list-[edit(%0,%B,_)])%q0)=0, @pemit %#=No project '%0' listed., {@switch %1=who, {&%q0 [v(db)]=replace(get(v(db)/%q0),2,%2,|); @pemit %#=Who set to '%2'.},status, {&%q0 [v(db)]=replace(get(v(db)/%q0),3,%2,|); @pemit %#=Status set to '%2'.},@pemit %#=Field should be /who or /status.}
|
||||
|
||||
&CMD-PROJECT-SET SGP - Staff Globals=$+setproject */*/*:@switch hasattr(v(db),setq(0,list-[edit(secure(%0),%B,_)])%q0)=1, @pemit %#=Project '%0' already exists., {&%q0 [v(db)]=secure(%0)|%1|%2; @pemit %#=Entry for '%0' created.}
|
||||
|
||||
&CMD-PROJECTS-VIEW SGP - Staff Globals=$+viewprojects: @pemit %#=repeat(=,78)%R[ljust(Project,25)] [ljust(Coder,20)] [ljust(STATUS,26)]%R[repeat(=,78)]; @dolist lattr(v(db)/list-*)=@pemit %#=ljust(extract(get(v(db)/##),1,1,|),25) [ljust(extract(get(v(db)/##),2,1,|),20)] [ljust(extract(get(v(db)/##),3,1,|),26)];@wait 1=@pemit %#=repeat(=,78)%r
|
||||
|
||||
&CMD-TRACKER-HELP SGP - Staff Globals=$+trackerhelp:@pemit %#=[repeat(=,78)]%R[center(Project Tracker Help,78, )]%R%T+setproject <project name>/<coder name>/<status>%R%T+viewprojects%R%T+editproject <project name>/who=<coder name>%R%T+editproject <project name>/status=<status>%R%T+deleteproject <project name>%R%T+trackerhelp -- Gets this screen.%R%RThe project name, and the other fields, can have spaces in them.%R%Rby BEM@Granite%R[repeat(=,78)]
|
||||
|
||||
&CMD-REGISTER-STAFF SGP - Staff Globals=$+register *=*=*=*:@switch/first [setq(0,findpc(%#,%0))][r(0)]/[hasattr(%q0,REGISTRATION)]=#-1/*,{@pemit %#=Cannot find %0.},#-2/*,{@pemit %#=Which %0?},*/0,{®ISTRATION %q0=%1|%2|%3|[time()]|%#;@pemit %#=You have registered [name(%q0)]: Character [name(%q0)] played by [extract(get(%q0/REGISTRATION),1,1,|)] with email address [extract(get(%q0/REGISTRATION),2,1,|)] and alts [extract(get(%q0/REGISTRATION),3,1,|)] as registered on [extract(get(%q0/REGISTRATION),4,1,|)] by [extract(get(%q0/REGISTRATION),5,1,|)].},*/1,{@pemit %#=[name(%q0)] has already been registered: Character [name(%q0)] played by [extract(get(%q0/REGISTRATION),1,1,|)] with email address [extract(get(%q0/REGISTRATION),2,1,|)] and alts [extract(get(%q0/REGISTRATION),3,1,|)] was registered on [extract(get(%q0/REGISTRATION),4,1,|)] by [extract(get(%q0/REGISTRATION),5,1,|)].%r%rIf there is an error with the registration, please +mail Staff for correction.}
|
||||
|
||||
&CMD-REGISTER-SHELP SGP - Staff Globals=$+register: @pemit %#=%R%R+register <character>=<RL name>=<email>=<alts>%r%rThe RL name must be their FULL name, first and last. Alts can be none.%R%R
|
||||
|
||||
&CMD-RJOIN SGP - Staff Globals=$+rjoin:@switch setq(0,get(%#/join-from))%q0=,{@pemit %#=Sorry, you don't have a return destination.},{@tel %#=%q0; &join-from %#}
|
||||
|
||||
&CMD-RSUMMON SGP - Staff Globals=$+rsummon *:@switch locate(me,*%0,p)=#-*,{@pemit %#=Sorry, %0 is not a valid player name.},{@switch setq(0,get(*%0/summon))%q0=,@pemit %#=name(%0) doesn't have a return location,{@oemit *%0=JUDGE: %N sends [name(*%0)] back to [poss(*%0)] former location.;@pemit *%0=JUDGE: %N sends you back to your former location.;@tel *%0=%q0;&summon *%0;@oemit *%0=JUDGE: %N returns [name(*%0)].;&summon *%0.}}
|
||||
|
||||
&CMD-SUMMON SGP - Staff Globals=$+summon *:@switch locate(me,*%0,p)=#-*,{@pemit %#=Sorry, %0 is not a valid player name.},{&summon *%0=loc(*%0);@oemit *%0=JUDGE: %N summons [name(*%0)] away.;@pemit *%0=JUDGE: %N summons you away.;@remit %#=%N summons [name(*%0)].;@tel *%0=loc(%#)}
|
||||
|
||||
@lock/use SGP - Staff Globals=CAN_USE/1
|
||||
|
||||
@pemit me=Setting flags on SGP - Staff Globals.... Moment.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP - Staff Globals=INHERIT;@set SGP - Staff Globals=COMMANDS;@set SGP - Staff Globals=STOP;@set SGP - Staff Globals=SAFE},PennMUSH*,{@set SGP - Staff Globals=!NO_COMMAND;@set SGP - Staff Globals=WIZARD},MUX*,{@set SGP - Staff Globals=INHERIT;@set SGP - Staff Globals=!NO_COMMAND;@set SGP - Staff Globals=SAFE},RhostMUSH*,{@set SGP - Staff Globals=INHERIT;@set SGP - Staff Globals=!NOCOMMAND;@set SGP - Staff Globals=SAFE;@set SGP - Staff Globals=STOP}
|
||||
|
||||
@pemit me=Triggering @startup on SGP - Global Functions....Moment
|
||||
|
||||
@tri SGP - Global Functions/startup
|
||||
|
||||
drop SGP - Global Parent Object
|
||||
drop SGP - Global Functions
|
||||
drop SGP - Main Globals
|
||||
drop SGP - Wizard Globals
|
||||
drop SGP - Staff Globals
|
||||
|
||||
@pemit me=SGP Base Globals installation complete. Make sure all command objects are placed in the master room. If not futher installations are needed, you may want to put the parent object and function object in either a library room, or store them inside one of the SGP globals objects.%R%RIf you run PennMUSH, TinyMUSH 2.2.x, or RhostMUSH server, then you will want to get the file "SGP-+help.txt" and quote in the +helpfiles for the system. Otherwise, download SGP-plushelp.txt and SGP-staffhelp.txt, place them in game/text/ and @readcache from within MUX.
|
||||
277
sgp/SGP-README.txt
Normal file
277
sgp/SGP-README.txt
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
README file - Sandbox Global Project
|
||||
V 1.0 - August 1 2000
|
||||
|
||||
**********************************************************************
|
||||
|
||||
The SGP is a project concieved to fill the need for a quickly ported
|
||||
and ready to use globals system for MUSH-type server platforms.
|
||||
It is meant as a basis for the building of a relatively clean and
|
||||
efficient Master Room. The system is meant to provide a group of
|
||||
organized code systems and objects upon which to build a Master Room,
|
||||
not provide a complete game out of the box. It is the beginning of
|
||||
the softcode system for your MUSH that will save your coder a lot of
|
||||
work. It provides you with the basics, to which you can add your own
|
||||
code.
|
||||
|
||||
This code is released as is. What this means is that the
|
||||
code has been tested to the best of our ability and may still have a
|
||||
few small problems. The maintainers make no warranty as to its
|
||||
function beyond the environments where we have personally tested it.
|
||||
Expect updates. Make the project better -- report
|
||||
bugs.
|
||||
|
||||
This code is the work of many people, whom we have made every effort
|
||||
to properly credit. Distribution is permissible so long as credit is
|
||||
given to both SGP and the original authors. Distribution of SGP may
|
||||
be done as long as the credits remain in tact.
|
||||
|
||||
**********************************************************************
|
||||
A note about Installing this code on your game:
|
||||
----------------------------------------------
|
||||
|
||||
SGP 1.0 is released 'as-is'. You should not be required to edit the
|
||||
installer files before quoting SGP on target platforms. If you have made
|
||||
substantive changes to your server, then you may experience problems.
|
||||
|
||||
There may be some undiscovered bugs in the code. We tried very hard
|
||||
to ferret them out before release, but may simply have overlooked
|
||||
something. For our purposes, a bug is a problem with either the
|
||||
vanilla installer or the code itself that prevents its function on
|
||||
your game. If your coder or someone else made alterations to the code,
|
||||
then we probably cannot help you.
|
||||
|
||||
Report problems and make suggestions and feature requests at:
|
||||
|
||||
http://sandbox.erisian.net/sgp/SGPbugs.html.
|
||||
|
||||
SGP 1.0 has been installed on and run normally under the following
|
||||
platforms:
|
||||
|
||||
TinyMUSH 2.2.2 or later
|
||||
TinyMUSH 2.2.4U1
|
||||
TinyMUX 1.4 or later
|
||||
PennMUSH 1.7 or later (1.7.2p26 for the places installations)
|
||||
TinyMUX 2.0
|
||||
RhostMUSH
|
||||
|
||||
Due to changes in the TinyMUSH 3.0 platform that break key function-
|
||||
ality, SGP is not being tested on that platform.
|
||||
|
||||
If you have success on other platforms with the current release of
|
||||
SGP, please email <keaeris@erisian.net> with the version, patchlevel,
|
||||
and any mods to the server code.
|
||||
|
||||
**********************************************************************
|
||||
System Requirements:
|
||||
-------------------
|
||||
|
||||
-You must have a compiled and running MUSH server to use this code.
|
||||
-You must have wizard permissions on the game.
|
||||
-You must set the following configuration parameters in your .conf
|
||||
file in the master account:
|
||||
|
||||
master_room
|
||||
access @function wizard
|
||||
access @function/priviledged wizard
|
||||
|
||||
-Have a MUSH client that allows for the uploading of files.
|
||||
-For TinyMUSH and MUX, use @admin to set the player_queue_limit to
|
||||
1000. PennMUSH does not require this.
|
||||
|
||||
**********************************************************************
|
||||
Installation:
|
||||
------------
|
||||
|
||||
Each of the target platforms has slightly different requirements. To
|
||||
assure that the system works as is on Penn, TM 2.2, and MUX, the
|
||||
installer checks for the version of the server before making certain
|
||||
decisions. SGP will work as a totally softcoded system on all target
|
||||
platforms, given appropriate changes to the server configuration. MUX
|
||||
users wishing to use the softcode only will need to consult their
|
||||
server documentation for instructions on how to disable +help and
|
||||
+shelp.
|
||||
|
||||
The files required on vanilla implementations of the target servers
|
||||
are listed below.
|
||||
|
||||
Files required for installation of SGP Base Globals on TinyMUSH 2.2.x
|
||||
servers:
|
||||
|
||||
-SGP-README.txt - Read before installing the softcode.
|
||||
SGP-Installer.txt
|
||||
SGP-+help.txt
|
||||
SGP-RPpack.txt (optional)
|
||||
PLACES-SGP.txt (optional, but +help is included in base install)
|
||||
|
||||
Files required for installation of SGP Base Globals on PennMUSH 1.7.2
|
||||
and later servers:
|
||||
|
||||
-SGP-README.txt - Read before installing the softcode.
|
||||
SGP-Installer.txt
|
||||
SGP-+help.txt
|
||||
SGP-RPpack.txt (optional)
|
||||
PLACES-SGP.txt (optional, but +help is included in base install)
|
||||
|
||||
Files required for installation of SGP Base Globals on MUX 2.0.x
|
||||
servers:
|
||||
|
||||
-SGP-README.txt - Read before installing the softcode.
|
||||
SGP-Installer.txt
|
||||
SGP-plushelp.txt
|
||||
SGP-staffhelp.txt
|
||||
SGP-RPpack.txt (optional)
|
||||
PLACES-SGP.txt (optional, but +help is included in base install)
|
||||
|
||||
Files required for installation of SGP Base Globals on RhostMUSH
|
||||
and later servers:
|
||||
|
||||
-SGP-README.txt - Read before installing the softcode.
|
||||
SGP-Installer.txt
|
||||
SGP-+help.txt
|
||||
SGP-RPpack.txt (optional)
|
||||
PLACES-SGP.txt (optional, but +help is included in base install)
|
||||
|
||||
Make sure that you quote the file while you are in the master room of
|
||||
the game, since the installer drops the objects and it will save you
|
||||
having to teleport them later.
|
||||
|
||||
Note that all code should be installed, file by file, in the order
|
||||
listed. In Penn and TinyMUSH 2.2, installing the globals files out of
|
||||
order will result in incorrectly installed helpfiles.
|
||||
|
||||
**********************************************************************
|
||||
Customization:
|
||||
-------------
|
||||
|
||||
While this softcode package doesn't require customization to run on
|
||||
your game, it is well worth your time to consider how you can best use
|
||||
ascii and other touches to give SGP the unique look and feel that you
|
||||
want your game to have. Even if you don't choose to alter the
|
||||
existing package, you will need to make sure that the 'mudname'
|
||||
variable in your configuration files is set to the name you want
|
||||
displayed in any code that calls mudname().
|
||||
|
||||
We have included placeholder-style headers and footers that will can
|
||||
be changes to suit your needs. As well, there are a number of pre-
|
||||
generated header and footer attributes on the Global Parent Object.
|
||||
More complex ascii art can be created and converted to MUSHCode at
|
||||
various places on the internet. There may be a Perl filter available
|
||||
for this kind of work in the future. Watch the SGP homepage for
|
||||
details.
|
||||
|
||||
NOTE: Keep track of the attributes you customize in a safe place.
|
||||
Some bug fixes will require you to hand edit heavily customized code
|
||||
and as such, you will need to comment out new code in the installers.
|
||||
|
||||
**********************************************************************
|
||||
Credits:
|
||||
-------
|
||||
|
||||
Audumla@Sandbox - Scope and Design. RPT code.
|
||||
BEM@Granite - Many many many of the base globals.
|
||||
Project Status Tracker
|
||||
WoD Dice Code
|
||||
+help system
|
||||
Angel - PLACES upgrades, CNOTES, and meticulous recoding of
|
||||
certain commands.
|
||||
David@Sandbox - +motd system
|
||||
Megiddo - Coding and recoding certain commands.
|
||||
Lilith@Detroit - Registration code.
|
||||
Ian@BrazilMUX - +3who
|
||||
|
||||
Ashen-Shugar, Brazil, Talek, Javelin have contributed heavily in terms
|
||||
of help and advice on how to best get SGP working seamlessly on their
|
||||
servers.
|
||||
|
||||
Paul@M*U*S*H, Corum, Vexon@M*U*S*H, Trispis@M*U*S*H, Raevnos@M*U*S*H
|
||||
all contributed bug reports and fixes to the fray.
|
||||
|
||||
**********************************************************************
|
||||
Softcoded Mailers:
|
||||
-----------------
|
||||
|
||||
For all games using a softcoded mailer, you will need to patch the
|
||||
+finger code so that the mail attributes are read properly. There
|
||||
will be a mail() function added for TinyMUSH games using either
|
||||
Fluff's Mailer or Brandy Mail. Watch the website for details.
|
||||
|
||||
**********************************************************************
|
||||
CHANGES
|
||||
-------
|
||||
|
||||
as of: 16 Jun 00
|
||||
-- Major tweaks in the installer. SGP now installs and runs cleanly on
|
||||
Tiny 2.2.X, MUX 2.0, and Penn There are no reported bugs in existing
|
||||
commands.
|
||||
-- Helpfiles are updated for MUX.
|
||||
-- Helpfiles and +help code to be added for Penn and Tiny 2.2.X
|
||||
-- Added the following commands:
|
||||
ooc and ' - <OOC> emits
|
||||
@register - Command for registration games.
|
||||
+register - Staff version of the registration command.
|
||||
+where - A simple +where command
|
||||
+3who - A 3 column +who
|
||||
+shout - Emits a shout to nearby rooms.
|
||||
+stnotes - Sets judgenotes. Differs from +cnote in that it is staff-
|
||||
only.(RPPack)
|
||||
+timestamp - Sets generic timestamps on player objects.
|
||||
|
||||
as of: 26 Jun 00
|
||||
|
||||
-- Added the following commands:
|
||||
+help - Added for Penn and TinyMUSH.(+help system)
|
||||
+timestop - Creates a timestop object.(RPPack)
|
||||
+resume - Destroys timestop object.(RPPack)
|
||||
+warn - Issues a generic warning for RP purposes.(RPPack)
|
||||
-- Fixed a problem with reading mail attributes in MUX and Penn.
|
||||
Provided a version for TinyMUSH that uses Fluff's Mailer. Waiting on
|
||||
a BrandyMail version.
|
||||
-- Cleaned up PLACES installer, added status emits.
|
||||
-- Separated RPPack code from the main installer in prep for release.
|
||||
-- Cleaned up erratic bits of code.
|
||||
|
||||
as of: 28 Jun 00
|
||||
-- Amended installer code for compatability with RHostMUSH.
|
||||
-- SGP needs to be reinstalled for games using a version before 28 Jun 00.
|
||||
-- Fixed a problem with DO_COL that caused +help and +wizhelp to not
|
||||
work on Penn. Thanks to Raevnos@M*U*S*H.
|
||||
-- Fixed a problem with the PLACES installer in the @switch that
|
||||
controlled flags and the @startup.
|
||||
-- Fixed a problem with +resume in Penn that prevented the nuking of
|
||||
timestop objects. Thanks to Trispis@M*U*S*H.
|
||||
-- Posted a workaround for +where problem in Rhost at the bugtracking
|
||||
page. Amended the installer to make the parent object INHERIT for
|
||||
Rhost installs.
|
||||
-- Fixed an object type problem that prevented the use of the
|
||||
+timestamp code in Penn. Thanks to Raevnos@M*U*S*H.
|
||||
|
||||
as of: 3 July 00
|
||||
-- Fixed several typos and amended a few lines of code in the that
|
||||
coded checked for flags explicitly. +who, +lwho, +spy(PLACES) and a
|
||||
few other commands were affected. Thanks to Ashen-Shugar for the
|
||||
reports.
|
||||
-- Fixed a legacy bug in mutter.(PLACES) Thanks to Ashen-Shugar for the
|
||||
report and fix.
|
||||
|
||||
as of: 11 July 00
|
||||
-- Fixed a bug with @verb in PLACEFUNCTION(PLACES) that was causing
|
||||
JOIN and OJOIN messages to not work properly in Penn. Thanks to
|
||||
Vexon@M*U*S*H for the report and Corum for the fix.
|
||||
-- Removed an unneeded } from PLACEFUNCTION(PLACES) that was wreaking
|
||||
havoc with the code.
|
||||
-- Fixed a problem with escapes in DO_TT and DO_TTOOC(PLACES) that was
|
||||
causing the commands to not work in Penn. Thanks to Vexon@M*U*S*H for
|
||||
the report and Corum for the fix.
|
||||
|
||||
as of: 20 July 00
|
||||
-- Added +motd code.
|
||||
-- Finally fixed the problem with +3who. Thanks to Ian@BrazilMUX for
|
||||
the fix.
|
||||
-- Added +who *.
|
||||
-- Fixed a typo in FN_ANDLIST.
|
||||
|
||||
as of: 1 August 00
|
||||
-- Removed the beta markings and cleaned up a couple typos.
|
||||
**********************************************************************
|
||||
|
||||
|
||||
106
sgp/SGP-RPpack.txt
Normal file
106
sgp/SGP-RPpack.txt
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
@@ ######################################################################
|
||||
@@
|
||||
@@ SGP - RP Pack
|
||||
@@
|
||||
@@ This file current as of 1 August 00 and includes bugfixes through
|
||||
@@ 11 June 01.
|
||||
@@
|
||||
@@ This is a collection of utility code for roleplaying MUSHes. It has
|
||||
@@ been set up to quote to existing SGP objects in the master room of
|
||||
@@ the game.
|
||||
@@
|
||||
@@ This file contains CNOTES code from Angel@heaven.gofast.net, STNOTES
|
||||
@@ and background setting code by BEM@Granite, along with +warn,
|
||||
@@ +timestop, and +resume code for judging purposes.
|
||||
@@
|
||||
@@ Updated to fix problems with +resume in Penn. Thanks to
|
||||
@@ Trispis@M*U*S*H for the patch
|
||||
@@
|
||||
@@ 11 Jun 01 Updated +warn to notify staff when the command has
|
||||
@@ been used. Thanks to Raevnos for the fix.
|
||||
@@
|
||||
@@ ######################################################################
|
||||
|
||||
@pemit me=Adding new code to the Global Parent Object...moment.
|
||||
|
||||
&U_DBREFCHECK SGP - Global Parent Object=[switch(1,match(%0,me),setq(0,%#),isdbref(%0),setq(0,%0),isdbref(num(%0)),setq(0,num(%0)),isdbref(num(*%0)),setq(0,num(*%0)),setq(0,#-1))][%q0]
|
||||
|
||||
@pemit me=Adding Background code to SGP - Main Globals...moment.
|
||||
|
||||
&CMD-BG_ADD SGP - Main Globals=$+bgadd *=*:@switch isnum(%0)=0,@pemit %#=Invalid section number.,{@switch hasattr(%#,BACKGROUND_%0)=1,{&BACKGROUND_%0 %#=get(%#/BACKGROUND_%0) %1;@pemit %#=get(%#/BACKGROUND_%0)},{&BACKGROUND_%0 %#=%1;@pemit %#=get(%#/BACKGROUND_%0)}}
|
||||
|
||||
&CMD-BG_CLEAR SGP - Main Globals=$+bgclear *:@switch and(isnum(%0),hasattr(%#,BACKGROUND_%0))=0,@pemit %#=Invalid section number.,{&BACKGROUND_%0 %#;@pemit %#=Background section %0 cleared.}
|
||||
|
||||
&CMD-BG_HELP SGP - Main Globals=$+bghelp:@pemit %#=[center(Commands for Setting your Background,78, )]%R%R+bg <#>[space(23)]- Read a background section.%R+bglist[space(23)]- List out sections that have been created%R+bgadd <#>=<text>[space(13)]- Add to a background section.%R+bgrem <#>=<text>[space(13)]- Removes text from a background section.%R+bgrep <#>=<old>/<new>[space(8)]- Replaces text in a background section.%R+bgclear <#>[space(18)]- Clears a background section.%R+bglock <#>[space(19)]- Locks a background section when finished.%R%R[center(Staff Commands,78, )]%R%R+bgview <name>[space(19)]- Shows the number of sections for player.%R+bgcheck <name>/<#>[space(14)]- Locks a background section when finished.%R%RThe '<#>' sign in the BG help stands for the number of the section you are%Rworking on. The BG commands allows for multiple sections so that your background can be broken up into reasonably sized pieces of text.%R
|
||||
|
||||
&CMD-BG_LIST SGP - Main Globals=$+bglist:@pemit %#=You have the following background sections: [iter(lattr(%#/BACKGROUND_*),after(##,BACKGROUND_))]
|
||||
|
||||
&CMD-BG_LOCK SGP - Main Globals=$+bglock *:@switch and(isnum(%0),hasattr(%#,BACKGROUND_%0))=0,@pemit %#=Invalid section number.,{@lock %#/BACKGROUND_%0;@pemit %#=Background section %0 locked.}
|
||||
|
||||
&CMD-BG_READ SGP - Main Globals=$+bg *:@switch and(isnum(%0),hasattr(%#,BACKGROUND_%0))=0,@pemit %#=Invalid section number.,{@pemit %#=[repeat(-=,39)]%R%BThis is section %0 of [words(lattr(%#/BACKGROUND_*))] sections.%R[repeat(=-,39)]%R[get_eval(%#/BACKGROUND_%0)]%R[repeat(-=,39)]}
|
||||
|
||||
&CMD-BG_REMOVE SGP - Main Globals=$+bgrem *=*:@switch and(isnum(%0),hasattr(%#,BACKGROUND_%0))=0,@pemit %#=Invalid section number.,{@edit %#/BACKGROUND_%0={%1},{}; @pemit %#=get(%#/BACKGROUND_%0)}
|
||||
|
||||
&CMD-BG_REPLACE SGP - Main Globals=$+bgrep *=*/*:@switch and(isnum(%0),hasattr(%#,BACKGROUND_%0))=0,@pemit %#=Invalid section number.,{@edit %#/BACKGROUND_%0={%1},{%2}; @pemit %#=get(%#/BACKGROUND_%0)}
|
||||
|
||||
@pemit me=Adding Background commands to SGP - Staff Globals...moment.
|
||||
|
||||
&CMD-BG_CHECK SGP - Staff Globals=$+bgcheck */*:@switch 0=isstaff(%#),{@pemit %#=Only staff can use this command},{@switch setq(0,num(*%0))%q0=#-1,@pemit %#=Cant find player named %0,{@switch and(isnum(%1),hasattr(%q0,BACKGROUND_%1))=0,@pemit %#=Invalid section number.,{@pemit %#=[repeat(-=,39)]%R%BThis is section %1 of [words(lattr(*%0/BACKGROUND_*))] sections for [name(*%0)].%R[repeat(=-,39)]%R[get_eval(%q0/BACKGROUND_%1)]%R[repeat(-=,39)]}}}
|
||||
|
||||
&CMD-BG_VIEW SGP - Staff Globals=$+bgview *:@switch 0=isstaff(%#),{@pemit %#=Only staff can use this command},{@switch setq(0,num(*%0))%q0=#-1,@pemit %#=Cant find player named %0,@pemit %#=name(%q0) has the following background sections: [iter(lattr(%q0/BACKGROUND_*),after(##,BACKGROUND_))]}
|
||||
|
||||
@pemit me=Adding CNOTES to SGP - Main Globals...moment.
|
||||
|
||||
&CMD-CNOTE SGP - Main Globals=$+cnote *=*:&cnote-%0 %#=Set by %N on date [time()]:%r%1
|
||||
|
||||
&CMD_CNOTE-LIST SGP - Main Globals=$+cnotelist:@pemit %#=[name(%#)] contains the following cnotes:%r[u(v(db)/footer)]%r[edit(lattr(%#/cnote-*),CNOTE-,%b)]%r[u(v(db)/footer)]%rTo view each cnote, type +cnoteview <cnoteofchoice>
|
||||
|
||||
&CMD_CNOTE-VIEW SGP - Main Globals=$+cnoteview *:@switch [hasattr(%#,CNOTE-%0)]=0,{@pemit %#=[Name(%#)] has no such cnote. +cnotelist [name(%#)] to view their cnotes.},1,{@pemit %#=[name(%#)]'s '%0' reads:%r[u(v(db)/footer)]%r[u(num(%#)/CNOTE-%0)]%r[u(v(db)/footer)]%r}
|
||||
|
||||
|
||||
@pemit me=Adding CNOTES to SGP - Wizard Globals...moment.
|
||||
|
||||
|
||||
&CMD-+CNOTE SGP - Wizard Globals=$+cnote/* *=*:@switch 1=[setq(0,u(v(db)/u_dbrefcheck,%1))][isdbref(%q0)],{&cnote-%0 %q0=Set by %N on date [time()]:%r%2 ; @set %q0/cnote-%0=wizard ; @chown %q0/cnote-%0=%# ; @pemit %#=Setting %1/CNOTE-%0 to %2},{@pemit %#=Sorry, I can't find %1 as a DB object.}
|
||||
|
||||
&CMD_CNOTEAPPROVE SGP - Wizard Globals=$+cnoteapp* * *:@switch [setq(0,u(v(db)/u_dbrefcheck,%1))][hasattr(%q0,CNOTE-%2)]=0,{@pemit %#=[Name(%q0)] has no such cnote. +cnotelist [name(%q0)] to view their cnotes.},1,{@chown %q0/CNOTE-%2=%# ; @set %q0/CNOTE-%2=wizard ; @set %q0=CNOTE-%2:Approved by [name(%#)] on date [time()]%r[get(%q0/CNOTE-%2)] ; @pemit %#=[name(%q0)]'s '%2' now reads:%r[u(v(db)/footer)]%r[u(num(%q0)/CNOTE-%2)]%r[u(v(db)/footer))]%r}
|
||||
|
||||
&CMD_CNOTEDELETE SGP - Wizard Globals=$+cnotedel* * *:@switch [setq(0,u(v(db)/u_dbrefcheck,%1))][hasattr(%q0,CNOTE-%2)]=0,{@pemit %#=[Name(%q0)] has no such cnote. +cnotelist [name(%q0)] to view their cnotes.},1,{@pemit %#=[name(%q0)]'s '%2' reads:%r[u(v(db)/footer)]%r[u([num(%q0)]/CNOTE-%2)]%r[u(v(db)/footer)]%r ; @wipe %q0/CNOTE-%2 ; @pemit %#=[name(%q0)]'s '%2' now wiped.}
|
||||
|
||||
|
||||
@pemit me=Adding CNOTES to SGP - Staff Globals...moment.
|
||||
|
||||
|
||||
&CMD_CNOTELIST SGP - Staff Globals=$+cnotelist *:@switch 1=[setq(0,u(v(db)/u_dbrefcheck,%0))][isdbref(%q0)],{@pemit %#=[name(%q0)] contains the following cnotes:%r[u(v(db)/footer)]%r[edit(lattr(%q0/cnote-*),CNOTE-,%b)]%r[u(v(db)/footer)]%rTo view each cnote, type +cnoteview %0 <cnoteofchoice>},{@pemit %#=I can't find %0 as a player or object.}
|
||||
|
||||
&CMD_CNOTEVIEW SGP - Staff Globals=$+cnoteview * *:@switch [setq(0,u(v(db)/u_dbrefcheck,%0))][hasattr(%q0,CNOTE-%1)]=0,{@pemit %#=[Name(%q0)] has no such cnote. +cnotelist [name(%q0)] to view their cnotes.},1,{@pemit %#=[name(%q0)]'s '%1' reads:%r[u(v(db)/footer)]%r[u([num(%q0)]/CNOTE-%1)]%r[u(v(db)/footer)]%r}
|
||||
|
||||
@pemit me=Adding STNOTES to SGP - Staff Globals...moment.
|
||||
|
||||
&CMD-STNOTE-AREA SGP - Staff Globals=$+stnotes:@dolist lcon(loc(%#)) [lexits(loc(%#))] [loc(%#)]=@switch words(setq(0,u(notes,##))%q0)=0,,@pemit %#=name(##) has ST notes: [edit(%q0,STNOTE-,)]
|
||||
|
||||
&CMD-STNOTE-OBJECT SGP - Staff Globals=$+stnotes *:@switch setq(0,locate(%#,%0,*))%q0=#-*,{@pemit %#=I can't find %0.},{@switch words(setq(1,u(notes,%q0))%q1)=0,{@pemit %#=name(%q0) doesn't have any valid ST notes.},{@pemit %#=name(%q0) has the following ST notes:[iter(%q1,%R%T[after(##,STNOTE-)]---[get(%q0/##)])]}}
|
||||
|
||||
&CMD-STNOTE-SET SGP - Staff Globals=$+setnote */*=*:@switch 1=strmatch(setq(0,locate(%#,%0,*))%q0,#-*),{@pemit %#=Cannot locate %0},neq(1,words(%1)),{@pemit %#=%1 is not a valid ST note tag.},{@unlock %q0/STNOTE-%1;&STNOTE-%1 %q0=%2;@set %q0/STNOTE-%1=hidden;@set %q0/STNOTE-%1=no_command;@lock %q0/STNOTE-%1}
|
||||
|
||||
&CMD-STNOTE-SET-VIS SGP - Staff Globals=$+setnote/vis */*=*:@switch 1=strmatch(setq(0,locate(%#,%0,*))%q0,#-*),{@pemit %#=Cannot locate %0},neq(1,words(%1)),{@pemit %#=%1 is not a valid ST note tag.},{@unlock %q0/STNOTE-%1;&STNOTE-%1 %q0=%2;@set %q0/STNOTE-%1=no_command;@set %q0/STNOTE-%1=!hidden;@lock %q0/STNOTE-%1}
|
||||
|
||||
&CMD-RESUME SGP - Main Globals=$+resume:@dolist lcon(loc(%#))=@switch/first and(strmatch(first(name(##)),TIMESTOP:*),isdbref(get(##/SGP-CREATOR)))=1,{@set [get(##/SGP-CREATOR)]=SGP-HASTIMESTOP:;@destroy/override ##;@destroy/override ##}
|
||||
|
||||
&CMD-TIMESTOP SGP - Main Globals=$+timestop:@switch 0=and(isdbref(get(owner(%#)/SGP-HASTIMESTOP)),andflags(owner(owner(%#)/SGP-HASTIMESTOP),W)),{@remit [loc(%#)]=JUDGE : %N calls a Timestop![setq(0,TIMESTOP: Created by %N [time()] at [name(loc(%#))]<[loc(%#)]>)];@create %q0;@lock [setq(1,locate(me,%q0,iT))]%q1=#0;@set %q1=enter_ok;@set %q1=!opaque;@set %q1=commands;@set %q1=unfindable;&SGP-CREATOR %q1=[owner(%#)];&SGP-HASTIMESTOP [owner(%#)]=%q1;@set %#/SGP-HASTIMESTOP=wizard;@set %#/SGP-HASTIMESTOP=hidden;@tel %q1=[loc(%#)];@dolist lwho()=@switch isstaff(##)=1,@pemit ##=>> %q0 <<},{@pemit %#=You may only have one timestop in play at a time.}
|
||||
|
||||
&CMD-WARN SGP - Main Globals=$+warn *:@switch [loc(*%0)]=#-1,{@pemit %#=[capstr(%0)] is not a valid player name or alias.},[loc(%#)],{@pemit %#=You issue an OOC warning to [name(*%0)].;@pemit *%0=[u(line)]OOC WARNING : You are in a potentially dangerous situation. Willfully initiating or entering combat or continuing with this RP could result in either injury, some other harm, or death for your character. By continuing this situation you accept the consequences of your IC actions.%r[u(line)]; @pemit/list get(v(db)/staff-list)=ALERT: %N has just used +warn on [name(*%0)] to alert [obj(*%0)] about a potentially dangerous IC situation.},{@pemit %#=That person is not in the same location as you are.}
|
||||
|
||||
@pemit me=Updating +version info. Moment....
|
||||
|
||||
+version/update [num(SGP - Main Globals)]/patchlevel=RPPack
|
||||
+version/update [num(SGP - Staff Globals)]/patchlevel=RPPack
|
||||
+version/update [num(SGP - Wizard Globals)]/patchlevel=RPPack
|
||||
+version/update [num(SGP - Global Parent Object)]/patchlevel=RPPack
|
||||
+version/update [num(SGP - Main Globals)]/history=RPPack added
|
||||
+version/update [num(SGP - Staff Globals)]/history=RPPack added
|
||||
+version/update [num(SGP - Wizard Globals)]/history=RPPack added
|
||||
+version/update [num(SGP - Global Parent Object)]/history=RPPack added
|
||||
|
||||
@pemit me=Quote of RPpack code completed. Commands were added to existing objects, so nothing further is required.
|
||||
|
||||
568
sgp/SGP-plushelp.txt
Normal file
568
sgp/SGP-plushelp.txt
Normal file
|
|
@ -0,0 +1,568 @@
|
|||
& help
|
||||
------------------------------------------------------------------------------
|
||||
Index
|
||||
|
||||
Index of helpfiles, V1.0 (1 AUG 00)
|
||||
|
||||
+beginner +cnotes +finger +finger-setup +glance
|
||||
+ic +info +info-setup +knock +3who*
|
||||
+lwho +shout +staff +staff/all +timestamp
|
||||
+timestop +uptime +view +view-setup +warn
|
||||
+where +who @register BACKGROUNDS CREDITS
|
||||
mutter OOC PLACES places-config places-options
|
||||
plook
|
||||
|
||||
To get help on any of the listed topics, type '+help <topic>'
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& backgrounds
|
||||
------------------------------------------------------------------------------
|
||||
Commands for Setting your Background:
|
||||
|
||||
SYNTAX: +bg <#> - Read a background section.
|
||||
+bglist - List out sections that have been created
|
||||
+bgadd <#>=<text> - Add to a background section.
|
||||
+bgrem <#>=<text> - Removes text from a background section.
|
||||
+bgrep <#>=<old>/<new> - Replaces text in a background section.
|
||||
+bgclear <#> - Clears a background section.
|
||||
+bglock <#> - Locks a background section when finished.
|
||||
|
||||
The '<#>' sign in the BG help stands for the number of the section you are
|
||||
working on. The BG commands allows for multiple sections so that your
|
||||
background can be broken up into reasonably sized pieces of text.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +beginner
|
||||
------------------------------------------------------------------------------
|
||||
+beginner
|
||||
|
||||
MUSH is new to some of you and probably a little daunting. To ease your
|
||||
feelings of panic, we offer a very basic list of commands that will get you
|
||||
looking around and using the various features of the game.
|
||||
|
||||
"<message> You say <message>.
|
||||
Say <message> See above.
|
||||
ooc <message> Makes an OOC statement or pose.
|
||||
page <person>=<message> Pages <person> with <message>.
|
||||
look Shows you the room you are standing in.
|
||||
look <object or person> Shows the desc for that object or person.
|
||||
pose <message> You pose <message> EX: pose grins.->John Doe
|
||||
grins.
|
||||
:<message> See 'pose" above
|
||||
WHO Shows a list of who is connected to the MUSH.
|
||||
+staff Shows connected Staff.
|
||||
+staff/all Shows the staff roster.
|
||||
|
||||
NOTE: MUSH commands may be case sensitive. You can always page a staffer
|
||||
for help.
|
||||
|
||||
'+beginner' also recalls this file
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +cnotes
|
||||
------------------------------------------------------------------------------
|
||||
+cnotes
|
||||
|
||||
SYNTAX: +cnotelist - Gives you a list of all cnotes on your
|
||||
character object.
|
||||
+cnoteview <notename> - Shows you the contents of the named cnote.
|
||||
+cnote <notename>=text - Sets &cnote<notename> on the player to the
|
||||
value of the text with person and time
|
||||
added.
|
||||
|
||||
To set notes on rooms, exits, and other objects that you own, set an
|
||||
attribute: &CNOTE_<notename> <object>=<text>
|
||||
|
||||
Please note that some cnotes require staff approval before they can go into
|
||||
effect ICly. Consult a member of staff for assistance.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& CREDITS
|
||||
------------------------------------------------------------------------------
|
||||
Credits
|
||||
|
||||
SGP is a broad, cross platform coding effort with numerous contributors.
|
||||
Current contributors of code and assistance in testing, writing helpfiles,
|
||||
and pithy comments are as follows:
|
||||
|
||||
Audumla@Everywhere --A little bit of everything, +staff and +staff/all,
|
||||
+beginner, +version, and installer files.
|
||||
BEM@Granite --Much of the base code including +who, joining
|
||||
and summon commands, debugging.
|
||||
Miateila@Granite --+finger and LOTS of pithy commentary
|
||||
Hilikiradi@Sandbox --Debugging, Penn platform tests, +cnotes,
|
||||
+lwho, PLACES upgrades, and installer files.
|
||||
Brazil@Everywhere --MUX 2.0 issues
|
||||
Talek, Javelin, Raevnos, David,
|
||||
Vexon@M*U*S*H --Penn Issues
|
||||
Ashen-Shugar --RhostMUSH Issues, +motd
|
||||
Lilith@Sandbox --Debugging, @register
|
||||
Hunger@Pacifica --Debugging, Aesthetics
|
||||
Jeff@TSC --+version, @crontab
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +finger
|
||||
------------------------------------------------------------------------------
|
||||
+finger
|
||||
|
||||
SYNTAX: +finger <name>
|
||||
|
||||
|
||||
This command shows you various bits of information about and will also
|
||||
accept "me" as an argument. +finger is generally a command that notes OOC
|
||||
information and should not be considered IC unless game policy
|
||||
specifically says otherwise.
|
||||
|
||||
See Also '+finger-setup' for configuration options.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +finger-setup
|
||||
------------------------------------------------------------------------------
|
||||
Finger Setup
|
||||
|
||||
Attributes read by this command:
|
||||
|
||||
E-MAIL: Your email address (optional)
|
||||
POSITION: Your Position
|
||||
SHORT-DESC: A short description of yourself
|
||||
FULLNAME: Your character's full name.
|
||||
AGE: Your real age
|
||||
FAME: What you are known for.
|
||||
APP_AGE: Your apparent age
|
||||
PLAN: Any plans your character may have
|
||||
RP-PREFS: Any RP Prefs that you may have as a person
|
||||
ALTS: Alternate characters you may be known as
|
||||
THEMESONG: Your Theme Song
|
||||
QUOTE: A typical quote from your character
|
||||
OFF-HOURS: When you are usually online.
|
||||
TEMPERMENT: Should explain itself, really.
|
||||
VACATION: The dates you expect to be gone.
|
||||
URL: Your homepage, if any.
|
||||
&FINGER-<whatever>: Let's you add other fields.
|
||||
|
||||
AFINGER: Similar to @adesc, gets triggered when someone +fingers
|
||||
you.%%0 is the name of the person who +fingered you,
|
||||
%%1 is their dbref.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +glance
|
||||
------------------------------------------------------------------------------
|
||||
+glance
|
||||
|
||||
SYNTAX: +glance
|
||||
|
||||
Displays displays the &SHORT-DESC attributes of objects and connected
|
||||
players in your present location. Idle times of players are shown.
|
||||
&SHORT-DESC information is truncated to 50 characters.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +ic
|
||||
------------------------------------------------------------------------------
|
||||
+ic
|
||||
|
||||
SYNTAX: +ic
|
||||
|
||||
Lets a player go to a set beginning IC location.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +info
|
||||
------------------------------------------------------------------------------
|
||||
+info
|
||||
|
||||
SYNTAX: +info Show you the info that you have set on yourself.
|
||||
+info <player> Shows you info set on other characters.
|
||||
|
||||
+info allows you to set information on yourself that would be useful to
|
||||
other players without them having them page you for it. This is an
|
||||
/excellent/ way to tell other players about pertinent merits, flaws, or
|
||||
other things that /would/ affect the way that they might interact with you,
|
||||
yet would not be appropriate to place in your @desc.
|
||||
|
||||
Players should make a brief mention like "+info set" at the end of their
|
||||
@desc, so that others may know to look.
|
||||
|
||||
See Also: +info-setup
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +info-setup
|
||||
------------------------------------------------------------------------------
|
||||
+info setup
|
||||
|
||||
To set info on yourself, set it as an attribute &INFO-<category>. General
|
||||
info can be seen by anyone. More specific info is set in the same way,
|
||||
except you use who should be able to see it instead of 'general'. Possible
|
||||
things to use are: race, factions, clans, tribes, and traditions.:
|
||||
|
||||
&info-general me=A wandering bum, usually seen in the dirtier parts of
|
||||
the streets.
|
||||
&info-camarilla me=This is the Gangrel Primogen, and as such, is a very
|
||||
noted member of the Camarilla...
|
||||
&info-garou me=This character has a Pure Breed 4.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +knock
|
||||
------------------------------------------------------------------------------
|
||||
+knock
|
||||
|
||||
SYNTAX: +knock <exit name or alias>
|
||||
|
||||
This command will allow you to 'knock' on any door in the MUSH. The players
|
||||
on the other side of the door will get an emit telling them that someone is
|
||||
knocking on the door.
|
||||
|
||||
NOTE: Using this command on the street grid on exits like South <S> is very
|
||||
silly and people will think that you are dumb if you do.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& mp
|
||||
------------------------------------------------------------------------------
|
||||
mp - multipaging:
|
||||
|
||||
SYNTAX: mp <names>=<message> - Allows multipaging to a list of players
|
||||
mp <message> - Allows multipaging to the last group of
|
||||
players multipaged.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& mutter
|
||||
------------------------------------------------------------------------------
|
||||
mutter
|
||||
|
||||
SYNTAX: mutter <target>=<string>
|
||||
mutter/tt <target>=<string>
|
||||
mutter/place <place number>=<string>
|
||||
|
||||
The first form of this command behaves identically to "whisper", except
|
||||
that the other players in the room will see that you have said something.
|
||||
A regular message, or part of a pose enclosed in "quotes", will have some
|
||||
of its words or groups of words replaced by "..." If you enclose a phrase
|
||||
with <angle brackets>, it will not be replaced. Poses without "quotes"
|
||||
will simply show that you have muttered something. <target> can be any
|
||||
player in the same room as you.
|
||||
|
||||
The second form of this command behaves like the first, except that instead
|
||||
of the entire room hearing the mutter, only people at a place will do so.
|
||||
If you are at a place, those at your place will hear the mutter;if you are
|
||||
not, and the target is, those at that place will hear the mutter. If
|
||||
neither of you are at a place, an error message will be generated.
|
||||
|
||||
The final version of this command allows everyone at a place to hear the
|
||||
message in full, while the rest of the room hears the mutter.
|
||||
|
||||
This code was written by Deirdre@AmberMUSH.
|
||||
|
||||
See Also: 'mutter2'
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& mutter2
|
||||
------------------------------------------------------------------------------
|
||||
mutter examples:
|
||||
|
||||
mutter Finndo=Can you loan me thirty Pence? I'm broke!
|
||||
Meg mutters to Finndo, "Can... loan... thirty... broke!"
|
||||
|
||||
mutter Bleys=:frowns. "What a <cheapskate> he is!" She shrugs.
|
||||
Meg frowns. She mutters to Bleys, "What... cheapskate..." She shrugs.
|
||||
|
||||
mutter/place 1=:chuckles. "Thank you very much."
|
||||
Meg chuckles. She mutters to the long, mahogany bar, "Thank you..."
|
||||
|
||||
mutter/tt Deirdre=Where did you hide those Trumps?
|
||||
At the bar, Meg mutters to Deirdre, "Where... Trumps?"
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& OOC
|
||||
------------------------------------------------------------------------------
|
||||
Out of Character speech:
|
||||
|
||||
SYNTAX: ooc <message>
|
||||
' <message>
|
||||
|
||||
Allows a player to speak or pose OOCly or out of character.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& places
|
||||
------------------------------------------------------------------------------
|
||||
PLACES
|
||||
|
||||
SYNTAX: Mv from <#> to <#> Moves a vacancy from one place to another.
|
||||
Join <place name> Puts you at <place name>
|
||||
Join at #<num> Puts you at place #<num>.
|
||||
Join with <name> Puts you at the place with <name>.
|
||||
Depart Removes you from your place.
|
||||
sit * Alias for Join.
|
||||
Depart Removes you from your place.
|
||||
Places Lists who's present at all places.
|
||||
Place <num> Lists who's present at place <num>.
|
||||
Plook Lists in column format everyone around the
|
||||
room.
|
||||
Plook <num> Lists name of <num> and virtual desc.
|
||||
tt <message> (Tete a tete) Relays a message to all those at
|
||||
your place. This command takes the usual
|
||||
say/pose tokens, and TT |<message> will emit.
|
||||
ttooc <message> (Tete a tete) Relays an OOC message
|
||||
Update <#>/<Option>=<text> See '+help places-options'
|
||||
|
||||
PLACES are virtual places to sit, stand or occupy. You remain in the same
|
||||
room, but join a group of people within that room who may or may not be
|
||||
having a quiet conversation only with others placed with them.
|
||||
|
||||
For installation help, type '+help places-config'.
|
||||
|
||||
This code originally provided courtesy of Deirdre, Meg, and Osric of
|
||||
AmberMUSH. It has since been editted by Angel@Heaven
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& places-config
|
||||
------------------------------------------------------------------------------
|
||||
PLACES configuration:
|
||||
|
||||
SYNTAX: Configure <num> places
|
||||
Unconfigure places
|
||||
|
||||
Notes: A null fixed message means vacancies can be moved freely to and from
|
||||
the place. This does not make sense for things like couches and rugs. Set
|
||||
it to something like "That makes no sense." if you are using such a place.
|
||||
|
||||
(O)Join and (O)depart messages take like this: %%N. All Join and Depart
|
||||
messages are appended with the place name.
|
||||
|
||||
Functions: WHICHPLACE(<loc num>,<dbnum>) gives the number of a place where
|
||||
<dbnum> is.
|
||||
ATPLACE(<loc num>,<place num>) gives you a list of things at a
|
||||
place.
|
||||
PLACEINFO(<loc num>,<place num>,<option>) gives the value of
|
||||
<option> at place.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& places-options
|
||||
------------------------------------------------------------------------------
|
||||
PLACES configuration:
|
||||
|
||||
SYNTAX: Update <Place #>/<Option>=<Configuration Text>
|
||||
|
||||
Option Description <Option> Default Configuration Text
|
||||
------------------ -------- --------------------------
|
||||
Place Name NAME Table x
|
||||
Maximum # of places MAXPLACES Random
|
||||
Current # of places CURPLACES Random (1 >= # >= MAXPLACES)
|
||||
Fixed fail message FIXED <NULL>
|
||||
Full fail message FULL That table has no more room.
|
||||
Join message JOIN You sit down at <place>.
|
||||
Ojoin message OJOIN sits down at <place>.
|
||||
Depart message DEPART You stand and leave <place>.
|
||||
Odepart message ODEPART stands and leaves <place>.
|
||||
Say prefix PREFIX At your table
|
||||
Description DESCRIBE A table with 4 legs and some chairs
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& plook
|
||||
------------------------------------------------------------------------------
|
||||
plook
|
||||
|
||||
SYNTAX: plook
|
||||
plook <target>
|
||||
|
||||
The first form gives you a list of places, in a three column format.
|
||||
|
||||
The second form takes the number of the place as an argument, and gives the
|
||||
name and description of the virtual place. Descriptions are in the final
|
||||
field of the PLACE# attribute on the room, after the | in the list of
|
||||
information.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& @register
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
SYNTAX: @register <RL Name>=<email>=<alts>
|
||||
|
||||
All players must be registered and read and accept the conditions found in
|
||||
'news AUP' before they are allowed out of the Registration room.
|
||||
Unregistered character objects become subject to nuking at any time.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +selfboot
|
||||
------------------------------------------------------------------------------
|
||||
+selfboot
|
||||
|
||||
SYNTAX: +selfboot
|
||||
|
||||
This command allows you to boot 'ghost' connections that are usually caused
|
||||
by dropped connections to your ISP.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +shout
|
||||
------------------------------------------------------------------------------
|
||||
+shout
|
||||
|
||||
SYNTAX: +shout <message>
|
||||
|
||||
This command will allow you to shout a message so that is is heard in
|
||||
adjacent rooms. Codewise, it propogates a given message through all non-
|
||||
audible exits leading from the room of the enactor.
|
||||
|
||||
NOTE: People in adjacent rooms will not know who is shouting, but will be
|
||||
told that 'A man', 'A woman', or 'Someone" is shouting.
|
||||
|
||||
Overuse of this command can be very annoying to others.
|
||||
|
||||
If you want to 'sound proof' an exit, to prevent a shout from being heard
|
||||
through a particular exit, add &NO_SHOUT <exit name>=1.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +staff
|
||||
------------------------------------------------------------------------------
|
||||
+staff
|
||||
|
||||
SYNTAX: +staff
|
||||
|
||||
This command shows all connected staff who are not set DARK, along with
|
||||
their alias, staff position, duty status, and how long they have been idle.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +staff/all
|
||||
------------------------------------------------------------------------------
|
||||
+staff/all
|
||||
|
||||
SYNTAX: +staff/all
|
||||
|
||||
This command shows all staff along with their alias, staff position, and if
|
||||
they are connected or not. For offline or DARK staff, it displays when they
|
||||
were last connected.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +timestamp
|
||||
------------------------------------------------------------------------------
|
||||
+timestamp
|
||||
|
||||
SYNTAX: +timestamp
|
||||
|
||||
Allows a player to read their current timestamps.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +timestop
|
||||
------------------------------------------------------------------------------
|
||||
+timestop
|
||||
|
||||
SYNTAX: +timestop
|
||||
+resume
|
||||
|
||||
|
||||
+timestop create a timestop object and drops it in the room where the
|
||||
timestop was requested. Staff is notified. The object itself will appear
|
||||
in the location as: TIMESTOP: <player> <timestamp> <location>
|
||||
|
||||
+resume removes _all_ timestops from the room in which it is used.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +uptime
|
||||
------------------------------------------------------------------------------
|
||||
+uptime
|
||||
|
||||
SYNTAX: +uptime
|
||||
|
||||
This command displays basic runtime statistics for the game.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +view
|
||||
------------------------------------------------------------------------------
|
||||
SYNTAX: +view List all objects in the room with views set.
|
||||
+view here Lists all viewable items in the room.
|
||||
+view <object> Lists all views on a particular object.
|
||||
+view <object>/<view> Reads a view.
|
||||
|
||||
Setting viewable objects using this code allows for greater detail to be
|
||||
coded into a room without requiring huge, spammy descriptions. +view may
|
||||
also be set on characters.
|
||||
|
||||
Be sure to add "+view items" to your @descs so people know to look at them.
|
||||
|
||||
See Also: '+help +view-setup'
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +view-setup
|
||||
------------------------------------------------------------------------------
|
||||
Setting views:
|
||||
|
||||
Set an attribute on the object thus:
|
||||
|
||||
&view-<name of view> <object>=<text>
|
||||
|
||||
An example: &view-painting here=You see a painting hanging on the walls,
|
||||
that seems to be done in an Impressionist tone...
|
||||
|
||||
To erase a view, simply leave the <text> area blank.
|
||||
|
||||
You may also set messages to be displayed to other players when a view is
|
||||
looked at. This is just like setting a view, but the attribute is called
|
||||
&oview.
|
||||
|
||||
An example. &oview-painting here=takes a look at the painting hanging on
|
||||
the wall.
|
||||
|
||||
Mary and Fred are in a room and Mary does a "+view here/painting"
|
||||
Fred would see 'Mary takes a look at the painting hanging on the wall.'
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +warn
|
||||
------------------------------------------------------------------------------
|
||||
+warn
|
||||
|
||||
SYNTAX: +warn <player>
|
||||
|
||||
Issues an anonymous OOC warning of impending danger to the named player.
|
||||
|
||||
This is only a generic warning -- players are encouraged to page or @pemit
|
||||
more specific messages, but this will suffice in a pinch. Do not use this
|
||||
command flippantly. Give players ample time to make up their minds. This is
|
||||
to be used BEFORE a timestop occurs. The command DOES display a message to
|
||||
staff when used.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +3who
|
||||
------------------------------------------------------------------------------
|
||||
+3who
|
||||
|
||||
SYNTAX: +3who
|
||||
|
||||
Displays +who in a 3 column format.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +lwho
|
||||
------------------------------------------------------------------------------
|
||||
+lwho
|
||||
|
||||
SYNTAX: +lwho
|
||||
|
||||
This commands information as that displayed by +who, but only shows the
|
||||
players in the same room.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +who
|
||||
------------------------------------------------------------------------------
|
||||
+who
|
||||
|
||||
SYNTAX: +who
|
||||
+who <string>
|
||||
|
||||
This command displays Player, Gender, Alias, Idletime, Location, dbref of
|
||||
location if findable and set JUMP_OK, and if the player is also staff.
|
||||
|
||||
The second version of this command accepts an argument and allow you to see
|
||||
only connected players who match the argument given, such as looking for all
|
||||
players whose names start with an 'm'.
|
||||
|
||||
The staff version of this code shows DARK staff, location, and dbref of
|
||||
locations.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +where
|
||||
------------------------------------------------------------------------------
|
||||
+where
|
||||
|
||||
SYNTAX: +where
|
||||
|
||||
Shows the location of all findable players on the mush. It sorts the list
|
||||
by location and does not show DARK, UNFINDABLE, or those in UNFINDABLE
|
||||
locations.
|
||||
-----------------------------------------------------------------------------
|
||||
413
sgp/SGP-staffhelp.txt
Normal file
413
sgp/SGP-staffhelp.txt
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
& help
|
||||
------------------------------------------------------------------------------
|
||||
Index
|
||||
|
||||
This is the index of staff helpfiles, V1.0b(17JUL00)
|
||||
|
||||
+accept +cnotes +commands +contents +duty
|
||||
+join +motd +register +rjoin +rsummon
|
||||
+stnotes +summon +timestamp +version BACKGROUNDS
|
||||
CONFIGURE DEFAULTS FUNCTIONS PROJECT
|
||||
|
||||
To get help on any of the listed topics, type '+shelp <topic>'
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +accept
|
||||
------------------------------------------------------------------------------
|
||||
+accept
|
||||
|
||||
SYNTAX: +accept
|
||||
|
||||
This command sets an acceptance attribute on the player to show that they
|
||||
have read and accepted the terms of your game's AUP. It sets a simple
|
||||
timestamp on the character object and sends the player an emit that the
|
||||
command has worked.
|
||||
|
||||
This command is adaptable to other applications where you may need players
|
||||
to acknowledge that they have read and accepted rules associated with the
|
||||
game. Imbedding the command in the text of the material you want to be read
|
||||
is the best way to document it for players.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& backgrounds
|
||||
------------------------------------------------------------------------------
|
||||
Staff Background Commands:
|
||||
|
||||
+bgview <name> - Shows the number of sections for player.
|
||||
+bgcheck <name>/<#> - Locks a background section when finished.
|
||||
|
||||
The '<#>' sign in the BG help stands for the number of the section you are
|
||||
working on. The BG commands allows for multiple sections so that your
|
||||
background can be broken up into reasonably sized pieces of text.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& CONFIGURE
|
||||
------------------------------------------------------------------------------
|
||||
Configuring SGP:
|
||||
|
||||
There will be several things that you need to configure in this package in
|
||||
order to make use of all the features therein. One of the first will be to
|
||||
edit the parameters that define who passes isstaff() and ostaff(). Both
|
||||
functions are found on the Global Functions object.
|
||||
|
||||
isstaff() is defined specifically by flag. ostaff() checks against the list
|
||||
stored in &STAFF-LIST on the Global Parent Object. Truthfully, most
|
||||
functions in the game will use isstaff(), where ostaff() is used for code
|
||||
where you want the regular game staff to show, such as +who.
|
||||
|
||||
&STAFF-LIST is a space seperated list of dbrefs. It displays on +staff and
|
||||
+staff/all in the same order that they are entered on the list.
|
||||
|
||||
See Also: CONFIGURE2
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& CONFIGURE2
|
||||
------------------------------------------------------------------------------
|
||||
Configuring SGP:
|
||||
|
||||
Headers and Footers maybe changed through the code by editting the code.
|
||||
This code is specifically set up to use &HEADER and &FOOTER attributes on
|
||||
the Global Parent Object. You can edit the existing default headers and
|
||||
simply add them in the place of the old. The footers can be substituted by
|
||||
editting them to match. Examine the global parent object for a pregenerated
|
||||
set of footers.
|
||||
|
||||
ANSI color is optional not used in this code, since different servers enable
|
||||
and handle color differently. ASCII character art used as header and footer
|
||||
attributes on the main code will not require a major hacking effort.
|
||||
Complex ASCII art has been incorporated into at least one game and simply
|
||||
requires someone with the patience to hack it in.
|
||||
|
||||
All globals are coded to 78 spaces wide. 78 is divisable by 78, 39, 26, 13,
|
||||
6, 3, 2, and 1. When you design your own ASCII for this package, you can
|
||||
use repeat() to generate certain unique elements. There is nothing to
|
||||
prevent ascii headers and other elements from being several lines high,
|
||||
though it is adviseable to keep an eye to how many extra lines the code
|
||||
generates.
|
||||
|
||||
See Also: CONFIGURE3
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& CONFIGURE3
|
||||
------------------------------------------------------------------------------
|
||||
Configuring SGP +finger:
|
||||
|
||||
+finger can be customized in the by changing appropriate references in the
|
||||
softcode to headers and footers to attributes that you desire.
|
||||
|
||||
Adjusting the types of attributes that the code will read by default
|
||||
requires making changes to &FINGER_LIST and &FINGER_LIST_LONG on the parent
|
||||
object. These two attributes control the finger attributes that the code
|
||||
looks for, and the actual output to the display itself. These two
|
||||
attributes are in a specific order and are directly related to each other.
|
||||
If you add, remove, or modify items in the list, you must make sure that the
|
||||
order is preserved in both lists. You have been warned.
|
||||
|
||||
As with all such undertakings, make sure you have a backup of anything you
|
||||
had prior to making modifications. You'll hate yourself if you've made
|
||||
extensive modifications and then mess up.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +cnotes
|
||||
------------------------------------------------------------------------------
|
||||
+cnotes
|
||||
|
||||
SYNTAX: +cnotelist <name> - Gives you a list of all cnotes on
|
||||
a character object.
|
||||
+cnoteview <name> <notename> - Gives you the contents of the
|
||||
<notename> note on named player
|
||||
or dbref for objects.
|
||||
+cnote/<notename> <name>=<text> - Sets a cnote on a player or
|
||||
object(use dbref) to the value of
|
||||
the text with person and time
|
||||
added. (WIZ ONLY)
|
||||
+cnoteapp <pcname> <notename> - Approves and timestamps a player-
|
||||
set cnotes, sets the attribute
|
||||
wizard so the player can't change
|
||||
it. Approved notes bear the line:
|
||||
"Approved by XXX on date YYY"
|
||||
+cnotedel <pcname> <notename> - Deletes a given note from a
|
||||
character.
|
||||
|
||||
Players may set notes on objects other than themselves by setting an
|
||||
attribute &CNOTE_<notename> <object>=<text>. Staff approved notes will
|
||||
bear "Approved by XXX on date YYY" to show that staff has seen and approved
|
||||
the information for IC purposes.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +commands
|
||||
------------------------------------------------------------------------------
|
||||
+commands
|
||||
|
||||
SYNTAX: +commands <thing>
|
||||
|
||||
This command shows the $-commands for a given object, room, or player. This
|
||||
is useful for many reasons, including looking for conflicting commands.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +contents
|
||||
------------------------------------------------------------------------------
|
||||
+contents
|
||||
|
||||
SYNTAX: +contents <thing>
|
||||
|
||||
This commands shows the contents of a given object, room, or player. It
|
||||
shows DARK objects.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& DEFAULTS
|
||||
------------------------------------------------------------------------------
|
||||
Default SGP
|
||||
|
||||
SGP comes with a given list of commands and helpfiles. The default
|
||||
configuration of the code is found in the SGP Installer. This configuration
|
||||
accounts for base globals and doesn't include those commands that would be
|
||||
only useful in a roleplaying environment. To add the RP specific code,
|
||||
quote the RPPack file in the same that you did the installer. It will write
|
||||
them directly to the required objects.
|
||||
|
||||
This code does not include a bulletin board system. If you choose to use
|
||||
Myrrdin's BBS system, you may simply add the text version of +help to the
|
||||
file and add the specific topics to the listing in the index at the top of
|
||||
this file. Other BBS systems may or may not have helpfiles that are
|
||||
MUX-ready.
|
||||
|
||||
Helpfiles for MUX are set up as .txt files and are placed in the game/text/
|
||||
directory of your master account as 'staffhelp.txt' and 'plushelp.txt'.
|
||||
Use mkindx and then @readcache within the MUX to bring changes into the
|
||||
files read by the game. These files may be used by Penn and TinyMUSH 2.2
|
||||
games with hardcoded +help commands, though there will be additions required
|
||||
for Tiny that are not needed for Penn.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +duty
|
||||
------------------------------------------------------------------------------
|
||||
+duty
|
||||
|
||||
SYNTAX: +duty
|
||||
|
||||
This sets a staff member as being either On or Off duty.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& FUNCTIONS
|
||||
------------------------------------------------------------------------------
|
||||
Softcoded Functions:
|
||||
|
||||
Functions: isstaff(<dbref>)
|
||||
|
||||
Returns 1 or 0 when player matches the flags defined as 'staff'
|
||||
|
||||
ostaff(<dbref>)
|
||||
|
||||
Softcoded function that checks to see if <dbref> against the official
|
||||
staff list as listed on the Global Parent.
|
||||
|
||||
andlist(<string>,<delimiter>)
|
||||
|
||||
Returns a string as a comma separated list with 'and' between second to
|
||||
last and last elements.
|
||||
|
||||
mmm-dd-yyyy()
|
||||
|
||||
Returns time() output in terms of MMM DD YYYY.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +motd
|
||||
------------------------------------------------------------------------------
|
||||
+motd
|
||||
|
||||
SYNTAX: +motd/list
|
||||
+motd/set <type>=<message>
|
||||
+motd/del <type>=<MOTD #>
|
||||
+motd/clear <type>
|
||||
+motd/reset
|
||||
|
||||
This code allows for easier manipulation of the @motd command and the use of
|
||||
softcoded MOTD to create semi-permanent MOTD.
|
||||
|
||||
The first command lists the stored MOTD messages in order from oldest to
|
||||
newest, by MOTD type. The types listed are: general, wizard, down, and
|
||||
full.
|
||||
|
||||
The second command sets an MOTD attribute to the global parent. You select
|
||||
the type from the above list and set the message of your choosing.
|
||||
|
||||
> +motd/set general=This is an MOTD.
|
||||
|
||||
The third command removes a selected MOTD # from a given MOTD listing. In
|
||||
the above example, the message number is 1 in the general list.
|
||||
|
||||
> +motd/del general=1
|
||||
|
||||
The fourth command clears all the MOTD of a given type.
|
||||
|
||||
> +motd/clear general
|
||||
|
||||
The last command resets the +motd system so that the game will read the
|
||||
MOTDs appropriately. This code is called as part of the @startup for the
|
||||
object.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +join
|
||||
------------------------------------------------------------------------------
|
||||
+join
|
||||
|
||||
SYNTAX: +join <name>
|
||||
|
||||
Allows a staff member to join a player where they are on the game.
|
||||
Please note that it is considered polite to page the player in advance to
|
||||
inform them of the pending visit.
|
||||
|
||||
See Also: +summon
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& PROJECT
|
||||
------------------------------------------------------------------------------
|
||||
Project Status Tracker Help
|
||||
|
||||
SYNTAX: +setproject <project name>/<coder name>/<status>
|
||||
+viewprojects
|
||||
+editproject <project name>/who=<coder name>
|
||||
+editproject <project name>/status=<status>
|
||||
+deleteproject <project name>
|
||||
+trackerhelp -- Gets this screen.
|
||||
|
||||
This code assists in the management of game-related projects. The project
|
||||
name, and the other fields, can have spaces in them.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +register
|
||||
------------------------------------------------------------------------------
|
||||
+register
|
||||
|
||||
SYNTAX: +register <character>=<RL name>=<email>=<alts>
|
||||
|
||||
The RL name must be their FULL name, first and last. Alts can be none.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +rjoin
|
||||
------------------------------------------------------------------------------
|
||||
+rjoin
|
||||
|
||||
SYNTAX: +rjoin
|
||||
|
||||
Sends a staff member back to where they had been previously. Use this
|
||||
command when you want to go somewhere other than your home.
|
||||
|
||||
See Also: +join
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +rsummon
|
||||
------------------------------------------------------------------------------
|
||||
+rsummon
|
||||
|
||||
SYNTAX: +rsummon <player>
|
||||
|
||||
Allows a staff member to send a player back to the location they were when
|
||||
they were originally summoned.
|
||||
|
||||
See Also: +summon
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +staff
|
||||
------------------------------------------------------------------------------
|
||||
Notes on +staff:
|
||||
|
||||
SYNTAX: +staff/add <player>
|
||||
+staff/remove <player>
|
||||
|
||||
These two commands modify the contents of &STAFF-LIST on the global parent
|
||||
and affect whether or not a given person appears on the +staff and
|
||||
+staff/all listings. Where isstaff() checks against flags, STAFF-LIST and
|
||||
ostaff() are explicitly set and checked by code.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
& +stnotes
|
||||
------------------------------------------------------------------------------
|
||||
STNOTES
|
||||
|
||||
SYNTAX: +stnotes
|
||||
+stnotes <object>
|
||||
+setnote <object>/<note>=<text> (Wiz Only)
|
||||
+setnote/vis <object>/<note>=<text> (Wiz Only)
|
||||
|
||||
The first form searches the current local and lists out any players,
|
||||
objects, or exits that have STnotes set on them (the room is checked as
|
||||
well). The second form displays all the STnotes set on a player or object.
|
||||
The third form is used to set an STnote on an object or person. To clear an
|
||||
existing note, use the third form of the command with no text. Normally the
|
||||
judge note created is not visible to the owner of the object.
|
||||
|
||||
If you want to set a note that is also visible to the object owner, use the
|
||||
/vis switch on the +setnote command.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +summon
|
||||
------------------------------------------------------------------------------
|
||||
+summon
|
||||
|
||||
SYNTAX: +summon <player>
|
||||
|
||||
Allows a staff member to summon a player object to their current location.
|
||||
Please note that it is considered polite to page the player in advance to
|
||||
inform them of the pending summons.
|
||||
|
||||
See Also: +rsummon, +join
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +timestamp
|
||||
------------------------------------------------------------------------------
|
||||
+timestamp
|
||||
|
||||
SYNTAX: +timestamp <name>/<topic>=<note> - Sets a timestamp on a given
|
||||
player for a given topic and
|
||||
reason.
|
||||
+timestamp/read <name> - Lets staff read all timestamps
|
||||
on a given player.
|
||||
+timestamp/rem <name>/<topic> - Removes a given timestamp
|
||||
attribute from a player.
|
||||
+timestamp/showall - Shows all currently set
|
||||
timestamps. Can be spammy.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
& +version
|
||||
------------------------------------------------------------------------------
|
||||
+version
|
||||
|
||||
SYNTAX: +version
|
||||
+version <dbref>
|
||||
|
||||
This code is in place to aid the user in the tracking of version history of
|
||||
SGP objects. The first form of this command returns a list of all SGP and
|
||||
additional tracked objects, their version numbers, dbrefs, most recent
|
||||
applied patches, and the date the last upgrade was done. SGP installers
|
||||
update this information automatically.
|
||||
|
||||
The second form of this command looks up a specific tracked object and
|
||||
returns information on what was applied to the object when.
|
||||
|
||||
See Also: +version2
|
||||
------------------------------------------------------------------------------
|
||||
&
|
||||
|
||||
& +version2
|
||||
------------------------------------------------------------------------------
|
||||
+version (continued)
|
||||
|
||||
SYNTAX: +version/add <dbref>
|
||||
+version/remove <dbref>
|
||||
+version/update <dbref>/<field>=<data>
|
||||
|
||||
The first form of this command adds new objects to the +version listing.
|
||||
The second form removes an object from +version. The third form edits
|
||||
various parts of the +version display. Fields include 'version',
|
||||
'patchlevel' and 'history'. The 'Last Update' field is updated by the first
|
||||
two uses of this command.
|
||||
|
||||
Updating the 'history' field adds detailed information to the object's
|
||||
UPDATE-HISTORY attribute and includes a date with every entry.
|
||||
------------------------------------------------------------------------------
|
||||
&
|
||||
|
||||
383
sgp/SGPCgen-help.txt
Normal file
383
sgp/SGPCgen-help.txt
Normal file
|
|
@ -0,0 +1,383 @@
|
|||
## SGP CGEN V0.? VERY BETA - 24 November 2001
|
||||
##
|
||||
## ---- SGP - Cgen helpfiles ----
|
||||
##
|
||||
## This listing of helpfiles for SGP Cgen is woefully incomplete. It also
|
||||
## needs to be converted to softcode for non-MUX servers. All of the current
|
||||
## commands are listed. These are all staff commands.
|
||||
##
|
||||
## TO DO:
|
||||
## - Document +setstring and +setlist. (done 111001)
|
||||
## - Document global functions. (done 111001)
|
||||
## - Document sheet display functions. (done 111001)
|
||||
## - Document genre-specific sheet display functions.
|
||||
## - Document List Object creation and organization.
|
||||
## (done 111001 HOWTO-CHAR-SHEETS.txt)
|
||||
##
|
||||
|
||||
& CGEN
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Statting commands:
|
||||
|
||||
+setstat +settemp +removestat +stattype +setstring +setlist
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
DB commands:
|
||||
|
||||
+create-db +stathide +statlist +match +matchfirst +matches
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Cgen and Database functions:
|
||||
|
||||
STAT() SGPSQUISH() SGPTRIM() TEMPSTAT() STRING() STATLIST()
|
||||
STATTYPE()
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
General Sheet Functions:
|
||||
|
||||
FN-DISPLAY-LIST FN-DISPLAY-LISTS FN-DISPLAY-STRINGS FN_FORMAT
|
||||
FN-HASLIST FN_3LISTSCOL FN_3VCOL
|
||||
|
||||
World of Darkness Specific:
|
||||
|
||||
FN_ABILITIES FN_ARCANOI FN_ARTS FN_ATTRIBUTES
|
||||
FN_COMMON-LISTS FN_DISCIPLINES FN_FORMAT FN_HEALTH
|
||||
FN_NUMINA FN_SPHERES-REALMS
|
||||
|
||||
In Nomine Specific:
|
||||
|
||||
D&D 3E Specific:
|
||||
|
||||
Trinity Specific:
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
& +setstat
|
||||
+setstat
|
||||
|
||||
COMMAND: +setstat <player>/<stat>=<value>
|
||||
|
||||
This command sets or modifies the permanent value of <stat> on <player>. If
|
||||
<value> is a simple number, the permanent and temporary value of the stat is
|
||||
set to that value. If <value> starts with a '+' or '-' character, the
|
||||
permanent value is incremented or decremented by <value>. The temporary
|
||||
value is set to match the new permanent value.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +settemp
|
||||
+settemp
|
||||
|
||||
COMMAND: +settemp <player>/<stat>=<value>
|
||||
|
||||
This command sets or modifies the temporary value of <stat> on <player>. If
|
||||
<value> is a simple number, the temporary value of the stat is set to that
|
||||
value. If <value> starts with a '+' or '-' character, the temporary value
|
||||
is incremented or decremented by <value>. The permanent value of the stat
|
||||
remains unchanged.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +removestat
|
||||
+removestat
|
||||
|
||||
COMMAND: +removestat <player>/<stat>
|
||||
|
||||
This command completely removes the named <stat> from the <player>.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +stattype
|
||||
+stattype
|
||||
|
||||
COMMAND: +stattype <stat>
|
||||
|
||||
This command looks up the named <stat> in the stat database and tells you
|
||||
which stat list it belongs to.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +match
|
||||
+match
|
||||
|
||||
COMMAND: +match <stat>
|
||||
|
||||
This command exercises the FN-MATCHSTAT function on the Stat Parent object.
|
||||
This accepts a partially typed <stat> name and returns the stat that matches.
|
||||
If no stat matches <stat> the command returns #NO MATCH#. If there are
|
||||
multiple stats that match <stat> the command returns #MULTIPLE MATCH#.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +matchfirst
|
||||
+matchfirst
|
||||
|
||||
COMMAND: +matchfirst <stat>
|
||||
|
||||
This command exercises the FN-MATCH-FIRST function on the Stat Parent
|
||||
object. This accepts a partially typed <stat> name and returns the first
|
||||
stat in the database that matches. The stats are ordered alphabetically, so
|
||||
'str' would match 'streetwise' in preference to 'strength'.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +matches
|
||||
+matches
|
||||
|
||||
COMMAND: +matches <stat>
|
||||
|
||||
This command finds all stats in the database that match <stat>.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +setstring
|
||||
+setstring
|
||||
|
||||
COMMAND: +setstring <player>/<string>=<value>
|
||||
|
||||
Writes <value> to a given &STRING attribute on a character. Checks
|
||||
against &LIST-STRINGS for the existence of a given string.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +setlist
|
||||
+setlist
|
||||
|
||||
COMMAND: +setlist <player>/<list>=<value>
|
||||
COMMAND: +setlist <player>/<list>=+<value>
|
||||
COMMAND: +setlist <player>/<list>=-<value>
|
||||
|
||||
Writes <value> to a given &LIST attribute on a character, adding a '|'
|
||||
between entries. Checks against &LIST-LISTS for the existence of a given
|
||||
list. The first command overwrites the entry for a given &LIST, while adding
|
||||
a + or - adds and removes items from a list, respectively.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& DB Commands
|
||||
DB Commands
|
||||
|
||||
The DB Commands object contains commands that are used to maintain the stat
|
||||
data objects. The default lock on this object is set so that only Wizards
|
||||
can use the commands. If you want to limit the group of people who can alter
|
||||
your stats database, then you need to change the &CAN_USE attribute accord
|
||||
-ingly. The lock can be changed by altering the condition in the CAN_USE
|
||||
attribute to either a space seperated list of authorized users, or by
|
||||
creating a softcoded function similar to OSTAFF().
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +create-db
|
||||
+create-db
|
||||
|
||||
COMMAND: +create-db
|
||||
Updates the stat database stored on the Stat DB object using the stat lists
|
||||
stored on the List Object. This command needs to be run anytime the stat
|
||||
lists on the List Object are modified, either manually, or by using one of
|
||||
the following +statlist commands.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +stathide
|
||||
+stathide
|
||||
|
||||
COMMAND: +stathide
|
||||
|
||||
This is an administrative command that calls @attribute/access to set all
|
||||
the STATLIST-, STRING-, and LIST- attributes to be wizard hidden, so that
|
||||
the players cannot directly see or modify their stats. For this command to
|
||||
work properly @attribute/access needs to be runnable by a Wizard. By
|
||||
default, @attribute/access is usually set so that only God can use it.
|
||||
|
||||
Related Topics:
|
||||
|
||||
& +statlist
|
||||
+statlist
|
||||
|
||||
COMMAND: +statlist/<switch> [[<statlist>]/[<stat>]]
|
||||
|
||||
/showlists - This command lists out all the stat lists
|
||||
on the List Object. These are the stat lists
|
||||
that will be incorporated into the stat
|
||||
database when +create-db is run.
|
||||
/addlist <statlist> - This command adds <statlist> to the list
|
||||
of stat lists used by the database.
|
||||
<statlist> should be a single word with no
|
||||
spaces in it.
|
||||
/showstats <statlist> - This command lists out the stats
|
||||
belonging to the stat list <statlist>.
|
||||
/addstat <statlist>/<stat> - This command adds the stat <stat> to the
|
||||
stat list <statlist>. <stat> may include
|
||||
any characters (including blanks) except
|
||||
for ":" and "|".
|
||||
/deletestat <statlist>/<stat>- This command deletes the stat <stat> from
|
||||
the stat list <statlist>. <stat> must, of
|
||||
course, be a stat on the named stat list.
|
||||
|
||||
IMPORTANT NOTES:
|
||||
The stat lists can be manually edited by altering the LIST-<statlist>
|
||||
attribute on the List Object.
|
||||
All alterations to the List Object, whether manually done, or done by
|
||||
code, MUST be followed by use of the +create-db command for the changes to
|
||||
take effect. +stathide has to be used following the use of the /addlist
|
||||
switch.
|
||||
|
||||
Related Topics: +create-db, DB COMMANDS, LIST OBJECT, +stathide
|
||||
|
||||
|
||||
& STAT()
|
||||
STAT()
|
||||
|
||||
GLOBAL FUNCTION: stat(<player>,<stat>)
|
||||
|
||||
Returns the numeric value of the stat for a given player. Returns 0 if the
|
||||
stat doesn't exist on the character or that stat is set to 0.
|
||||
|
||||
& SGPSQUISH()
|
||||
SGPSQUISH()
|
||||
|
||||
GLOBAL FUNCTION: sgpsquish(<string>[,<character>])
|
||||
|
||||
This function will trim multiple occurrences of <character> (or a space, if
|
||||
<character> is not specified) down to a single occurrence of <character>.
|
||||
This is useful for getting rid of big internal spaces, and the like.
|
||||
|
||||
Using ~ as part of the second argument will cause an error.
|
||||
|
||||
Provides a second argument for squish on MUX. This is a compatibility
|
||||
function that is only installed on MUXen where a 1 argument squish() is
|
||||
present. Upgrade your server to the most current version of MUX as soon as
|
||||
possible.
|
||||
|
||||
& SGPTRIM()
|
||||
SGPTRIM()
|
||||
|
||||
GLOBAL FUNCTION: sgptrim(<string> [,<trim style> [,<trim character>]])
|
||||
|
||||
Checks for a Penn-style trim() and reverses the last 2 arguments. This is a
|
||||
compatibility function.
|
||||
|
||||
& TEMPSTAT()
|
||||
TEMPSTAT()
|
||||
|
||||
GLOBAL FUNCTION: tempstat(<player>,<statname>)
|
||||
|
||||
Returns the numeric value of the stat for a given player. Returns 0 if the
|
||||
stat doesn't exist on the character or that stat is set to 0.
|
||||
|
||||
& STRING()
|
||||
STRING()
|
||||
|
||||
GLOBAL FUNCTION: string(*<player>,<stringname>)
|
||||
|
||||
Returns the value of &STRING-<stringname> on a player object.
|
||||
|
||||
& STATLIST()
|
||||
STATLIST()
|
||||
|
||||
GLOBAL FUNCTION: statlist(<statlist>)
|
||||
|
||||
Returns the contents of a given &LIST and nothing if the LIST does not exist
|
||||
on the list object.
|
||||
|
||||
& STATTYPE()
|
||||
STATTYPE()
|
||||
|
||||
GLOBAL FUNCTION: stattype(<stat>)
|
||||
|
||||
Returns the type of a given stat. If the string is not a stat, then it
|
||||
returns "NOT A STAT".
|
||||
|
||||
& FN-DISPLAY-LIST
|
||||
FN-DISPLAY-LIST
|
||||
|
||||
SHEET FUNCTION: FN-DISPLAY-LIST
|
||||
|
||||
Given &LIST-FOO, creates a 78 column wide heading with 'Foo' centered and
|
||||
displays the appropriate list per FN-DISPLAY-LISTS.
|
||||
|
||||
& FN-DISPLAY-LISTS
|
||||
FN-DISPLAY-LISTS
|
||||
|
||||
SHEET FUNCTION: FN-DISPLAY-LISTS
|
||||
|
||||
Given a '|' seperated &LIST from the character object, displays the
|
||||
elements of the &LIST in a 2 column format. To change the number of
|
||||
columns, vary the 2nd argument of table().
|
||||
|
||||
|
||||
& FN-DISPLAY-STRINGS
|
||||
FN-DISPLAY-STRINGS
|
||||
|
||||
SHEET FUNCTION: FN-DISPLAY-STRINGS
|
||||
|
||||
Given [u(fn-display-strings,%0,<name>:STRING-<name>|<name 2>:STRING-<name2>)],
|
||||
creates a 2 column display of $STRING from the character object. Vary the
|
||||
number of columns displayed by changing the value of the second argument in
|
||||
table().
|
||||
|
||||
& FN_FORMAT
|
||||
FN_FORMAT
|
||||
|
||||
SHEET FUNCTION: FN_FORMAT
|
||||
|
||||
This function takes an individual stat:#:# in a &STATLIST and displays it in
|
||||
a 24 character wide field, stat on the left and the temporary and permanent
|
||||
values for that stat. Temporary values for a stat are in (). This is an
|
||||
internal function to all numerical stat displays. To change the width in
|
||||
order to vary the number of columns, you change the value inside the
|
||||
strlen().
|
||||
|
||||
Example:
|
||||
Willpower (6) 7
|
||||
|
||||
|
||||
& FN-HASLIST
|
||||
FN-HASLIST
|
||||
|
||||
SHEET FUNCTION: FN-HASLIST
|
||||
|
||||
This function checks for the presence of a given &LIST on a player and
|
||||
feeds the result back to FN-DISPLAY-LISTS.
|
||||
|
||||
& FN_3LISTSCOL
|
||||
FN_3LISTSCOL
|
||||
|
||||
SHEET FUNCTION: [u(<dbref>/fn_3listscol,get(%0/<statlist>))]
|
||||
|
||||
<dbref> is the dbref of the object where fn_3vcol is stored. <statlist> is
|
||||
the STATLIST-<stattype> to be displayed. This function displays a '|'
|
||||
seperated list of stats in 3, roughly equal vertical columns, divided into
|
||||
a 78 column display. It displays the stats in the order that the stats
|
||||
appear in the attribute.
|
||||
|
||||
Example:
|
||||
>&STATLIST-FOO Bar=apple|orange|mango|pear
|
||||
>&STATLIST-BAR Bar=cat|dog|canary
|
||||
>&STATLIST-FOOBAR Bar=tree|flower|shrub
|
||||
>say [u(<dbref>/FN_3LISTSCOL,get(*%0/STATLIST-FOO), get(*%0/STATLIST-BAR), get(*%0/STATLIST-FOOBAR))]
|
||||
>apple cat tree
|
||||
orange dog flower
|
||||
mango canary shrub
|
||||
pear
|
||||
|
||||
|
||||
& FN_3VCOL
|
||||
FN_3VCOL
|
||||
|
||||
SHEET FUNCTION: [u(<dbref>/fn_3vcol,get(%0/<statlist>))]
|
||||
|
||||
<dbref> is the dbref of the object where fn_3vcol is stored. <statlist> is
|
||||
the STATLIST-<stattype> to be displayed. This function displays a '|'
|
||||
seperated list of stats in 3, roughly equal columns, divided into a 78
|
||||
column display. It displays the stats in the order that the stats appear in
|
||||
the attribute.
|
||||
|
||||
Example:
|
||||
>&STATLIST-FOO Bar=1|2|3|4|5|6|7|8|9
|
||||
>say [u(<dbref>/fn_3vcol,get(%0/STATLIST-FOO))]
|
||||
>1 4 7
|
||||
2 5 8
|
||||
3 6 9
|
||||
|
||||
310
sgp/SGPVBCgenCode.txt
Normal file
310
sgp/SGPVBCgenCode.txt
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
@@ SGP CGEN V0.? VERY BETA - 24 November 2001 BUILD
|
||||
@@
|
||||
@@ ---- SGP - The So Very Beta Cgen Installer ----
|
||||
@@
|
||||
@@ NOTE 1: Due to the way that MUSH and MUX operate, you need to have
|
||||
@@ #1 @admin player_queue_limit=1000 and then @restart the MUSH after
|
||||
@@ so that the file quotes cleanly. It is recommended that if using
|
||||
@@ TinyFugue, that you /quote with a 1 second delay between commands,
|
||||
@@ so that the queue has time to catch up before it becomes overloaded.
|
||||
@@ NOTE 2: Make sure that you either allow wizards to use @function
|
||||
@@ and @attribute or be prepared to set up a long @startup on #1.
|
||||
@@ NOTE 3: Either quote these objects in the master room or @tel them
|
||||
@@ to that location after they are loaded into your game.
|
||||
@@ NOTE 4: This code is compatible with TinyMUSH 2.2.4U1 and RhostMUSH,
|
||||
@@ with the addition of a softcoded table() as found in Penn. It worked
|
||||
@@ on MUX and passed basic tests on PennMUSH. There may be other problems
|
||||
@@ problems on PennMUSH, so report bugs as you find them. TM3? Hell if I
|
||||
@@ know.
|
||||
@@ NOTE 5: This is file quotes the engine -only-. Functions to generate
|
||||
@@ sheet code are part of the game system library. Walkthrough rooms are
|
||||
@@ not within the scope of this file.
|
||||
@@ NOTE 6: If you are using this system to replace an existing one, you
|
||||
@@ will need to find a competent coder and bribe them to go through the
|
||||
@@ process of converting all of your old stats. This is hard work, so
|
||||
@@ don't treat them badly for their trouble. We DO suggest that you take
|
||||
@@ a backup of the DB before you try this part. MAKE SURE THAT SAID CODER
|
||||
@@ IS EMOTIONALLY STABLE AND COMPETENT, OR YOUR CONVERSION MAY END BADLY.
|
||||
@@ Audumla's Axiom reads "Psychocoder == psychopath. Get it?"
|
||||
@@ NOTE 7: It does have +help. It may need updates.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ Bugs:
|
||||
@@
|
||||
@@ The SGP team has gone to some trouble to knock the bugs out of this
|
||||
@@ puppy. INVARIABLY, there are probably one or two still left, so
|
||||
@@ report them and offer patches if you fix them before we get to them.
|
||||
@@ Makes everything better for everyone. :)
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ CREDITS:
|
||||
@@
|
||||
@@ BEM@Sandbox/Granite, copyright 2001. He worked hard on it for Granite:
|
||||
@@ NH by Night MUSH. He made it and then just gave it away, so keep the
|
||||
@@ credits on the code when you use it. The folks at Bloody Roses helped
|
||||
@@ a lot with final debugging, as did Jeff@Sandbox. Thanks go out to the
|
||||
@@ remaining members of the SGP Battlegroup* for putting up with the
|
||||
@@ pre-release neurosis. ;)
|
||||
@@
|
||||
@@ * (The SGP Battlegroup: BEM, Audumla, Jeff, Hilikiradi, Brazil, Talek,
|
||||
@@ Raevnos, Ronan, and Ashen-Shugar, in a reprise of his role as 'The Dark
|
||||
@@ One'. Javelin@M*U*S*H returned for a cameo as 'The Angel of Light and
|
||||
@@ Goodness'.)
|
||||
@@
|
||||
@@
|
||||
@@ This installer creates 5 objects as of this posting. 2 of them are
|
||||
@@ intentionally blank. ALL of them are needed. Utility functions for
|
||||
@@ creating sheet code will be forthcoming.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ Recent Changes:
|
||||
@@
|
||||
@@ - Added SGPTRIM() as a global function to deal with the syntax difference
|
||||
@@ between PennMUSH and the rest in trim(). Changed code to use SGPTRIM().
|
||||
@@ - Added SGPSQUISH() as a global function, because MUX only had a single
|
||||
@@ argument SQUISH(). Changed code to use SGPTRIM(). (24NOV01)
|
||||
@@ - Corrected problems with +setstat, +settemp, and +stats that were causing
|
||||
@@ problems with PennMUSH.
|
||||
@@ - +setstring and +setlist were broken. All better now. (24NOV01)
|
||||
@@ - WROTE THE HELPFILES! (9NOV01)
|
||||
@@ - UPDATED THE HELPFILES! (24NOV01)
|
||||
@@ - Tweaked the Installer file so that flags are being set correctly on all
|
||||
@@ platforms. (9NOV01)
|
||||
@@ - Removed the testing library and support code so that the engine is ready
|
||||
@@ for the creation and use of other libraries. (9NOV01)
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To do List:
|
||||
@@ - +create-db should set an update time attribute, so user can tell when the
|
||||
@@ db was last updated
|
||||
@@ - have list manipulation code set a dirty flag so that user knows if there
|
||||
@@ have been any additions to the list object affecting the db
|
||||
@@ - change +setstring so that value checking is optional, check content
|
||||
@@ against list, if there is a list. **DONE
|
||||
@@ - add access control to command objects
|
||||
@@ - add generic +showstats, +showstrings, and +showlists commands (example
|
||||
@@ code for +stats command)
|
||||
@@ - change command locks to be more particular about inherited powers
|
||||
@@ - add code to the installer to handle the @edits for the support code
|
||||
@@ where explicit dbrefs are required. **DONE
|
||||
@@ - change explicit parenting to use v(db) references in the code for better
|
||||
@@ efficiency in Penn.
|
||||
@@ - seperate the engine proper from the libraries as much as humanly possible.
|
||||
@@ i.e, put support code for sheet generation with the engine and the sheet
|
||||
@@ attributes and system-specific code with the library. **DONE
|
||||
@@ - combine support code with other objects where it is sensible and won't
|
||||
@@ interfere with function.
|
||||
@@ - make sure that the global functions are being triggered properly. **DONE
|
||||
@@ - move SGPTRIM to the SGP global functions object. **DONE
|
||||
@@ - have db creation and altering commands look for a list of authorized
|
||||
@@ users, whether an attribute or isstaff(), ostaff(), or cgenstaff().
|
||||
@@ - fix the uselock problem in Penn.
|
||||
@@ - add +version information. **DONE
|
||||
@@ - add +setspecialty command. **Should be a local hack.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To install this code:
|
||||
@@
|
||||
@@ 1. Make sure that @function and @attribute are both usable by WIZARD.
|
||||
@@ 2. From a WIZARD or equivalent level character, quote the file into
|
||||
@@ the game. You need to know how your client works for this part.
|
||||
@@ 3. Install the preferred library for your game system.
|
||||
@@ 4. @edit the Support Code, replacing all occurances of #140 with the
|
||||
@@ dbref of the object itself. The installation will be useless otherwise.
|
||||
@@ 4. Run +create-db
|
||||
@@ 5. Stat a test character and see what happens.
|
||||
@@
|
||||
|
||||
@pemit me=Creating the Cgen objects....
|
||||
|
||||
@create SGP Cgen: Stat Commands
|
||||
@create SGP Cgen: Stat Parent
|
||||
@create SGP Cgen: DB Commands
|
||||
@create SGP Cgen: List Object
|
||||
@create SGP Cgen: Stat DB
|
||||
@create SGP Cgen: Support Code
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Adding SGPTRIM and SGPSQUISH to the Global Functions object. You MUST have these functions in order for the code to work. Moment....
|
||||
|
||||
&FN_SGPTRIM SGP - Global Functions=[trim(%0,switch(trim(--xx,b,-),--xx,%2,%1),switch(trim(--xx,b,-),--xx,%1,%2))]
|
||||
|
||||
&FN_SGPSQUISH SGP - Global Functions=[edit(edit(squish(edit(edit(%0,%b,~),%1,%b)),%b,%1),~,%b)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Loading the statting commands code. Moment....
|
||||
|
||||
&CMD-MATCH SGP Cgen: Stat Commands=$+match *:@pemit %#=%T[u(v(parent)/fn-matchstat,%0)]
|
||||
|
||||
&CMD-MATCH-FIRST SGP Cgen: Stat Commands=$+matchfirst *:@pemit %#=%T[u(v(parent)/fn-match-first,%0)]
|
||||
|
||||
&CMD-MATCHES SGP Cgen: Stat Commands=$+matches *:@pemit %#=Matches: [iter(get(v(db-object)/STAT-[mid(%0,0,1)]),switch(strmatch(##,%0*),1,%R%T[before(##,/)]),|)]
|
||||
|
||||
&CMD-STATTYPE SGP Cgen: Stat Commands=$+stattype *:@pemit %#=u(v(parent)/fn-stattype,%0)
|
||||
|
||||
&CMD-SETTEMP SGP Cgen: Stat Commands=$+settemp */*=*:@switch/first 0=and(eq(%2,trunc(%2)),isnum(edit(%2,+,-))),{@pemit %#=That is not a good number.},isdbref(num(*%0)),{@pemit %#=That is not a player!},not(strmatch(NOT A STAT,[setq(1,u(v(parent)/fn-stattype,[setq(2,lcstr(%1))]%q2))]%q1)),{@pemit %#=That is not a proper stat.},{&[setq(3,match(get(*%0/statlist-%q1),%q2*,|))][setq(5,switch(%q3,0,%q2:0:0,extract(get(*%0/statlist-%q1),%q3,1,|)))][setq(4,extract(%q5,3,1,:))][setq(4,switch(sgptrim(%2),-*,add(%2,%q4),+*,add(%2,%q4),%2))][setq(5,replace(%q5,3,%q4,:))]statlist-%q1 *%0=switch(%q3,0,sgptrim(get(*%0/statlist-%q1)|%q5,b,|),replace(get(*%0/statlist-%q1),%q3,%q5,|)); @pemit %#=Done. Temporary %q2 [switch(sgptrim(%2),+*,raised to,-*,lowered to,set to)] %q4.}
|
||||
|
||||
&CMD-SETSTAT SGP Cgen: Stat Commands=$+setstat */*=*:@switch/first 0=and(eq(%2,trunc(%2)),isnum(edit(%2,+,-))),{@pemit %#=That is not a good number.},isdbref(num(*%0)),{@pemit %#=That is not a player!},not(strmatch(NOT A STAT,[setq(1,u(v(parent)/fn-stattype,[setq(2,lcstr(%1))]%q2))]%q1)),{@pemit %#=That is not a proper stat.},{&[setq(3,match(get(*%0/statlist-%q1),%q2*,|))][setq(4,switch(%q3,0,0,extract(extract(get(*%0/statlist-%q1),%q3,1,|),2,1,:)))][setq(4,switch(sgptrim(%2),-*,add(%2,%q4),+*,add(%2,%q4),%2))][setq(5,%q2:%q4:%q4)]statlist-%q1 *%0=switch(%q3,0,sgptrim(get(*%0/statlist-%q1)|%q5,b,|),replace(get(*%0/statlist-%q1),%q3,%q5,|)); @pemit %#=Done. Permanent %q2 [switch(sgptrim(%2),+*,raised to,-*,lowered to,set to)] %q4.}
|
||||
|
||||
&CMD-SETSTRING SGP Cgen: Stat Commands=$+setstring */*=*:@switch/first 1=and(hasattr(v(LIST-OBJECT),LIST-%1),not(match(get(v(LIST-OBJECT)/LIST-%1),%2,|))), {@pemit %#=That is not a string element.}, [not(match(get(v(LIST-OBJECT)/LIST-STRINGS),%1,|))], {@pemit %#=That is not a string.}, match(num(*%0),#-1), {@pemit %#=That is not a player.},{&string-%1 *%0=%2; @pemit %#=Done. [capstr(%0)]'s %1 is [switch(hasattr(*%0,string-%1),0,removed.,set to %2.)]}
|
||||
|
||||
&CMD-REMOVESTAT SGP Cgen: Stat Commands=$+removestat */*:@switch [setq(1,switch(1,match(num(*%0),#-1),NOPLAYER,edit(u(v(parent)/fn-stattype,%1),sec,)))]%q1=NOPLAYER,@pemit %#=That is not a player.,NOT A STAT,@pemit %#=That is not a stat.,{&statlist-%q1 *%0=remove(get(*%0/statlist-%q1),extract(get(*%0/statlist-%q1),match(get(*%0/statlist-%q1),%1:*,|),1,|),|);@pemit %#=Done. [capstr(%1)] removed from [capstr(%0)].}
|
||||
|
||||
&CMD-SETLIST SGP Cgen: Stat Commands=$+setlist */*=*:@switch/first [setq(2,switch(mid(%2,0,1),+,delete(%2,0,1),-,delete(%2,0,1),%2))][setq(1,switch(1,match(num(*%0),#-1),NOPLAYER,not(match(get(v(LIST-OBJECT)/LIST-LISTS),%1,|)),NOT A LIST,%1))]%q1=*NOT A LIST*,@pemit %#=That is not a list.,*NOPLAYER*,@pemit %#=That is not a player.,{&list-%1 *%0=[switch(mid(%2,0,1),+,sgpsquish(sgptrim([get(*%0/list-%1)]|%q2,,|),|),-,sgpsquish(sgptrim(edit(get(*%0/list-%1),%q2,),,|),|),%q2)];@pemit %#=Done. '[capstr(%q2)]' has been [switch(mid(%2,0,1),+,added to,-,removed from,set to)] [capstr(%0)]'s %1.}
|
||||
|
||||
&CREDITS SGP Cgen: Stat Commands=BEM@Granite
|
||||
|
||||
&CAN_USE SGP Cgen: Stat Commands=[isstaff(owner(%#))]
|
||||
|
||||
@lock/use SGP Cgen: Stat Commands=CAN_USE/1
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP Cgen: Stat Commands=INHERIT;@set SGP Cgen: Stat Commands=COMMANDS;@set SGP Cgen: Stat Commands=STOP;@set SGP Cgen: Stat Commands=SAFE},PennMUSH*,{@set SGP Cgen: Stat Commands=!NO_COMMAND;@set SGP Cgen: Stat Commands=WIZARD},MUX*,{@set SGP Cgen: Stat Commands=INHERIT;@set SGP Cgen: Stat Commands=!NO_COMMAND;@set SGP Cgen: Stat Commands=SAFE},RhostMUSH*,{@set SGP Cgen: Stat Commands=INHERIT;@set SGP Cgen: Stat Commands=!NOCOMMAND;@set SGP Cgen: Stat Commands=SAFE;@set SGP Cgen: Stat Commands=STOP}
|
||||
|
||||
@pemit me=Loading the parent object code. Moment....
|
||||
|
||||
&FN-MATCHSTAT SGP Cgen: Stat Parent=switch(words(matchall(get(v(db-object)/STAT-[mid(%0,0,1)]),%0*,|)),0,#NO MATCH#,1,before(extract(get(v(db-object)/STAT-[mid(%0,0,1)]),match(get(v(db-object)/STAT-[mid(%0,0,1)]),%0*,|),1,|),/),#MULTIPLE MATCH#)
|
||||
|
||||
&FN-MATCH-FIRST SGP Cgen: Stat Parent=switch(words(match(get(v(db-object)/STAT-[mid(%0,0,1)]),%0*,|)),0,#NO MATCH#,before(extract(get(v(db-object)/STAT-[mid(%0,0,1)]),match(get(v(db-object)/STAT-[mid(%0,0,1)]),%0*,|),1,|),/))
|
||||
|
||||
&ADD-STAT SGP Cgen: Stat Parent=@dolist/delim | [get(u(LIST-OBJECT)/LIST-%0)]=&STAT-[setq(0,mid(##,0,1))]%q0 [u(db-object)]=[sort(sgptrim(get(u(db-object)/STAT-%q0)|##/%0,b,|),a,|)]
|
||||
|
||||
@@ $0 is list of stat lists, %1 is the player that executed the command
|
||||
|
||||
&ADD-STATS SGP Cgen: Stat Parent=@trigger me/add-stat=first(%0,|); @pemit %1= Processing [first(%0,|)]; @switch words(rest(%0,|))=0, {@pemit %1=Stat database creation is complete}, {@trigger me/add-stats=rest(%0,|), %1}
|
||||
|
||||
&FN-STATTYPE-LOCAL SGP Cgen: Stat Parent=setq(0,grab(get(v(db-object)/STAT-[mid(%0,0,1)]),%0/*,|))[switch(words(%q0),0,NOT A STAT,after(%q0,/))]
|
||||
|
||||
&FN-STATTYPE SGP Cgen: Stat Parent=ulocal(#STAT-PARENT/FN-STATTYPE-LOCAL,%0)
|
||||
|
||||
&FN-STAT-LOCAL SGP Cgen: Stat Parent=setq(9,get(*%0/STATLIST-[stattype(%1)]))[setq(9,extract(%q9,match(%q9, %1:*,|),1,|))][switch(%q9,,0,extract(%q9,2,1,:))]
|
||||
|
||||
&FN-STAT SGP Cgen: Stat Parent=ulocal(#STAT-PARENT/FN-STAT-LOCAL,%0,%1)
|
||||
|
||||
&FN-TEMPSTAT-LOCAL SGP Cgen: Stat Parent=setq(0,get(*%0/STATLIST-[stattype(%1)]))[setq(0,extract(%q0,match(%q0, %1:*,|),1,|))][switch(%q0,,0,extract(%q0,3,1,:))]
|
||||
|
||||
&FN-TEMPSTAT SGP Cgen: Stat Parent=ulocal(#STAT-PARENT/FN-TEMPSTAT-LOCAL,%0,%1)
|
||||
|
||||
&FN-STATLIST SGP Cgen: Stat Parent=get(get(#STAT-PARENT/list-object)/LIST-%0)
|
||||
|
||||
&FN-STRING SGP Cgen: Stat Parent=get(%0/STRING-%1)
|
||||
|
||||
@@ %0=list, %1=list delimiter
|
||||
|
||||
&FN-AUTO-COL SGP Cgen: Stat Parent=[setq(0,fold(max_length,%0,0,%1))][setq(1,div(76,add(%q0,1)))][setq(2,sub(div(76,%q1),1))][setq(3,add(1,div(sub(words(%0,%1),1),%q1)))][iter(lnum(%q3),%r%b%b[iter(lnum(%q1),ljust(index(%0,%1,setq(4,add(1,%q4))%q4,1),%q2))])]
|
||||
|
||||
&MAX_LENGTH SGP Cgen: Stat Parent=max(%0,strlen(%1))
|
||||
|
||||
&GLOBAL-FUNCTIONS SGP Cgen: Stat Parent=STAT TEMPSTAT STATTYPE STATLIST STRING
|
||||
|
||||
&CREDITS SGP Cgen: Stat Parent=BEM@Granite
|
||||
|
||||
@switch version()=PennMUSH*,{@STARTUP SGP Cgen: Stat Parent=@dolist v(GLOBAL-FUNCTIONS)=@function ##=me,FN-##},{@Startup SGP Cgen: Stat Parent=@dolist v(GLOBAL-FUNCTIONS)=@function ##=me/FN-##}
|
||||
|
||||
@switch version()=PennMUSH*,{@set SGP Cgen: Stat Parent=WIZARD},{@set SGP Cgen: Stat Parent=INHERIT}
|
||||
|
||||
@pemit me=Adding database management commands. Moment....
|
||||
|
||||
@@ Update the database object based on current list object
|
||||
@@ - set a data attribute so admins can see how recently the db was updated
|
||||
|
||||
&CMD-CREATE-DB SGP Cgen: DB Commands=$+create-db:@wipe [v(db-object)]/STAT-*; @trigger v(parent)/add-stats=get(v(LIST-OBJECT)/LIST-STATS), %#
|
||||
|
||||
@@ +statlist/addstat <list>/<stat>
|
||||
@@ check for conflicts in DB
|
||||
|
||||
&CMD-STATLIST-ADDSTAT SGP Cgen: DB Commands=$+statlist/addstat */*: @switch/first 0= match(get(v(LIST-OBJECT)/LIST-STATS),%0,|),{@pemit %#=Sorry, the list '%0' does not exist},strmatch(setq(0,u(v(parent)/fn-stattype,%1))%q0,NOT A STAT),{@pemit %#=Sorry, '%1' already exists in the '%q0' stat list},{&LIST-%0 [v(list-object)]=sort(sgptrim(lcstr(%1)|[get(v(list-object)/LIST-%0)],|),a,|); @pemit %#= The stat '%1' has been added to the '%0' stat list.}
|
||||
|
||||
@@ +statlist/deletestat <list>/<stat> @@ remove stat from list if it exists, error message if it doesn't
|
||||
|
||||
&CMD-STATLIST-DELETESTAT SGP Cgen: DB Commands=$+statlist/deletestat */*: @switch/first 0= match(get(v(LIST-OBJECT)/LIST-STATS),%0,|),{@pemit %#=Sorry, the list '%0' does not exist},setq(0,match(get(v(LIST-OBJECT)/LIST-%0),%1,|))%q0, {@pemit %#=Sorry, the stat '%1' does not exist in list '%0'.},{&LIST-%0 [v(LIST-OBJECT)]=remove(get(v(LIST-OBJECT)/LIST-%0),%1,|); @pemit %#='%1' has been removed from list '%0'}
|
||||
|
||||
@@ +statlist/addlist <list>
|
||||
@@ check for conflicts in statlist and list object attribute name
|
||||
@@ list name should be a single word
|
||||
|
||||
&CMD-STATLIST-ADDLIST SGP Cgen: DB Commands=$+statlist/addlist *: @switch/first 0=eq(1,words(%0)), {@pemit %#=List name has to be a single word.}, not(match(get(v(LIST-OBJECT)/LIST-STATS),%0,|)), {@pemit %#=The list '%0' already exists.}, not(hasattr(v(list-object),LIST-%0)), {@pemit %#=The name '%0' is already in use on the list object.}, gt(32,add(strlen(%0),strlen(LIST-))), {@pemit %#=The list name '%0' is too long.}, {&LIST-STATS [v(LIST-OBJECT)]=sort(sgptrim(get(v(LIST-OBJECT)/LIST-STATS)|[lcstr(%0)],b,|),a,|); @pemit %#='%0' has been added to the list of stat lists.}
|
||||
|
||||
@@ +statlist/showlists
|
||||
@@ display the names of stat lists
|
||||
|
||||
&CMD-STATLIST-SHOWLISTS SGP Cgen: DB Commands=$+statlist/showlists: @pemit %#=Stat lists: [u(v(parent)/FN-AUTO-COL,iter(get(v(LIST-OBJECT)/LIST-STATS), ##,|),%B)]
|
||||
|
||||
@@ +statlist/showstats <list>
|
||||
@@ list all the stats that belong to <list>
|
||||
|
||||
&CMD-STATLIST-SHOWSTATS SGP Cgen: DB Commands=$+statlist/showstats *: @switch/first 0=match(get(v(LIST-OBJECT)/LIST-STATS), %0,|), @pemit %#='%0' is not a valid stat list, @pemit %#=Stats in %0: [u(v(parent)/FN-AUTO-COL,get(v(LIST-OBJECT)/LIST-%0),|)]
|
||||
|
||||
@@ +stathide
|
||||
@@ set all statlist attributes to wizard hidden
|
||||
|
||||
&CMD-STATHIDE SGP Cgen: DB Commands=$+stathide: @dolist setq(0,[iter(get(v(LIST-OBJECT)/LIST-STATS),STATLIST-[ucstr(edit(##,%B,_))],|)] [iter(get(v(LIST-OBJECT)/LIST-STRINGS),STRING-[ucstr(edit(##,%B,_))],|)] [iter(get(v(LIST-OBJECT)/LIST-LISTS),LIST-[ucstr(edit(##,%B,_))],|)])%q0=@attribute/access STATLIST-##=wizard hidden; @pemit %#=Ok. The following attributes have been set wizard hidden:%R%T%q0
|
||||
|
||||
&CAN_USE SGP Cgen: DB Commands=[hasflag(owner(%#),WIZARD)]
|
||||
|
||||
&CREDITS SGP Cgen: DB Commands=BEM@Granite
|
||||
|
||||
@lock/use SGP Cgen: Stat Commands=CAN_USE/1
|
||||
|
||||
@pemit me=Setting the flags. Gods help us all....
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP Cgen: DB Commands=INHERIT;@set SGP Cgen: DB Commands=COMMANDS;@set SGP Cgen: DB Commands=STOP;@set SGP Cgen: DB Commands=SAFE},PennMUSH*,{@set SGP Cgen: DB Commands=!NO_COMMAND;@set SGP Cgen: DB Commands=WIZARD},MUX*,{@set SGP Cgen: DB Commands=INHERIT;@set SGP Cgen: DB Commands=!NO_COMMAND;@set SGP Cgen: DB Commands=SAFE},RhostMUSH*,{@set SGP Cgen: DB Commands=INHERIT;@set SGP Cgen: DB Commands=!NOCOMMAND;@set SGP Cgen: DB Commands=SAFE;@set SGP Cgen: DB Commands=STOP}
|
||||
|
||||
@pemit me=Setting reference variables between objects. Moment....
|
||||
|
||||
@force me=&PARENT SGP Cgen: Stat Commands=[num(SGP Cgen: Stat Parent)]
|
||||
@force me=&DB-OBJECT SGP Cgen: Stat Commands=[num(Stat DB)]
|
||||
@force me=&LIST-OBJECT SGP Cgen: Stat Commands=[num(List Object)]
|
||||
|
||||
@force me=&PARENT SGP Cgen: DB Commands=[num(SGP Cgen: Stat Parent)]
|
||||
@force me=&DB-OBJECT SGP Cgen: DB Commands=[num(Stat DB)]
|
||||
@force me=&LIST-OBJECT SGP Cgen: DB Commands=[num(List Object)]
|
||||
|
||||
@force me=&DB-OBJECT SGP Cgen: Stat Parent=[num(Stat DB)]
|
||||
@force me=&LIST-OBJECT SGP Cgen: Stat Parent=[num(List Object)]
|
||||
|
||||
@force me=&PARENT SGP Cgen: DB Commands=[num(SGP Cgen: Stat Parent)]
|
||||
@force me=&DB-OBJECT SGP Cgen: DB Commands=[num(Stat DB)]
|
||||
@force me=&LIST-OBJECT SGP Cgen: DB Commands=[num(List Object)]
|
||||
|
||||
@pemit me=Setting explicit references to self to the correct value. Moment....
|
||||
|
||||
@force me=@edit SGP Cgen: Stat Parent/*=#STAT-PARENT,[num(SGP Cgen: Stat Parent)]
|
||||
|
||||
@pemit me=Triggering the creation of the global functions. Moment....
|
||||
|
||||
@trigger SGP Cgen: Stat Parent/startup
|
||||
|
||||
@pemit me=NOTE: You have to have the stats set on the list object for any of this to mean anything. Since the helpfiles for this aren't anything like done, you'll have to ask. Better, you can volunteer to write them and post a webpage explaining how you go there.%R%ROh, and you have to write code to display sheet info for your game system.%R%RWe told you this was very beta, right? :)
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: Stat Commands)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: Stat Parent)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: DB Commands)]
|
||||
|
||||
|
||||
+version/update [num(SGP Cgen: Stat Commands)]/version=BETA
|
||||
+version/update [num(SGP Cgen: Stat Commands)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: Stat Commands)]/History=Base
|
||||
|
||||
+version/update [num(SGP Cgen: Stat Parent)]/version=BETA
|
||||
+version/update [num(SGP Cgen: Stat Parent)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: Stat Parent)]/History=Base
|
||||
|
||||
+version/update [num(SGP Cgen: DB Commands)]/version=BETA
|
||||
+version/update [num(SGP Cgen: DB Commands)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: DB Commands)]/History=Base
|
||||
|
||||
|
||||
drop SGP Cgen: Stat Commands
|
||||
drop SGP Cgen: Stat Parent
|
||||
drop SGP Cgen: DB Commands
|
||||
drop SGP Cgen: List Object
|
||||
drop SGP Cgen: Stat DB
|
||||
drop SGP Cgen: Support Code
|
||||
|
||||
247
sgp/Trinity-lib.txt
Normal file
247
sgp/Trinity-lib.txt
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
@@ SGP CGEN V1.0 BETA - 27 November 2001 BUILD
|
||||
@@
|
||||
@@ ---- SGP - Trinity/Aeon Library Object and Sheet Code ----
|
||||
@@
|
||||
@@ NOTE 1: Due to the way that MUSH and MUX operate, you need to have
|
||||
@@ #1 @admin player_queue_limit=1000 and then @restart the MUSH after
|
||||
@@ so that the file quotes cleanly. It is recommended that if using
|
||||
@@ TinyFugue, that you /quote with a 1 second delay between commands,
|
||||
@@ so that the queue has time to catch up before it becomes overloaded.
|
||||
@@
|
||||
@@ NOTE 2: Make sure that you either allow wizards to use @function
|
||||
@@ and @attribute or be prepared to set up a long @startup on #1.
|
||||
@@
|
||||
@@ NOTE 3: Either quote these objects in the master room or @tel them
|
||||
@@ to that location after they are loaded into your game.
|
||||
@@
|
||||
@@ NOTE 4: This code is compatible with TinyMUSH 2.2.4U1 and RhostMUSH,
|
||||
@@ with the addition of a softcoded table() as found in Penn. It worked
|
||||
@@ on MUX and passed basic tests on PennMUSH. There may be other problems
|
||||
@@ problems on PennMUSH, so report bugs as you find them. TM3? Hell if I
|
||||
@@ know.
|
||||
@@
|
||||
@@ NOTE 5: This is file quotes the genre library code -only-. Functions
|
||||
@@ to generate sheet code are part of it, but the cgen engine needs to be
|
||||
@@ installed FIRST. Walkthrough rooms are not within the scope of this file.
|
||||
@@
|
||||
@@ NOTE 6: If you are using this system to replace an existing one, or you
|
||||
@@ are working on a new library from scratch, then you will need to find a
|
||||
@@ competent coder and bribe them to do the work for you. This is hard
|
||||
@@ work, so don't treat them badly for their trouble. We DO suggest that
|
||||
@@ you take a backup of the DB before you try any of it. MAKE SURE THAT
|
||||
@@ SAID CODER IS EMOTIONALLY STABLE AND COMPETENT, OR YOUR EXPERIENCE MAY
|
||||
@@ END BADLY.
|
||||
@@
|
||||
@@ NOTE 7: Audumla's Axiom reads "Psychocoder == psychopath. Get it?"
|
||||
@@
|
||||
@@ NOTE 8: This code is best installed at the same time as the rest of
|
||||
@@ the SGP globals packages. Successful installation requires that global
|
||||
@@ functions and global parent objects are in the same place as the wizard
|
||||
@@ installing the code. Otherwise, You will need to update several pieces
|
||||
@@ of information in the system and do a manual trigger of the startup on
|
||||
@@ the global functions object(note that this is something that you need
|
||||
@@ some patience and skill to accomplish without pulling your hair out).
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ Bugs:
|
||||
@@
|
||||
@@ The SGP team has gone to some trouble to knock the bugs out of this
|
||||
@@ puppy. INVARIABLY, there are probably one or two still left, so
|
||||
@@ report them and offer patches if you fix them before we get to them.
|
||||
@@ Makes everything better for everyone. :)
|
||||
@@
|
||||
@@ Check for typos and omissions.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ CREDITS:
|
||||
@@
|
||||
@@ List Object data compiled and donated by Taurus@Karroo. He made
|
||||
@@ it and gave it away, so say 'thank you' by keeping the credits on the
|
||||
@@ code. If you don't like the way it's done, then do one yourself. No
|
||||
@@ one will stop you.
|
||||
@@
|
||||
@@ General and Trinity-specific sheet code by Audumla and BEM@Granite,
|
||||
@@ copyright 2000-2001. They made it and then just gave it away, so keep the
|
||||
@@ credits on the code when you use it. The folks at Bloody Roses helped
|
||||
@@ a lot with final debugging, as did Jeff@Sandbox. Thanks go out to the
|
||||
@@ remaining members of the SGP Battlegroup** for putting up with the
|
||||
@@ pre-release neurosis. ;)
|
||||
@@
|
||||
@@ * Trinity and terms from the game are copyrighted by White Wolf Games.
|
||||
@@ Nothing done here is meant to infringe on White Wolf IP and hopefully
|
||||
@@ will generate from interest in the game by new folks.
|
||||
@@
|
||||
@@ ** (The SGP Battlegroup: BEM, Audumla, Jeff, Hilikiradi, Brazil, Talek,
|
||||
@@ Raevnos, Ronan, and Ashen-Shugar, in a reprise of his role as 'The Dark
|
||||
@@ One'. Javelin@M*U*S*H returned for a cameo as 'The Angel of Light and
|
||||
@@ Goodness'.)
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ This installer writes code to 5 objects and requires that startups be
|
||||
@@ triggered at the end of the process. It does lots of things by itself,
|
||||
@@ but you need to use +stathide to run @attribute. People using PennMUSH
|
||||
@@ have to use it everytime.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To do List:
|
||||
@@ - Check for omissions and typos.
|
||||
@@ - Add sheets for qin, chromatics and abberants.
|
||||
@@ - see about local hacks for test games.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To install this code:
|
||||
@@
|
||||
@@ 1. Install and make appropriate edits to the main cgen installer.
|
||||
@@ Without it, this library is meaningless.
|
||||
@@ 2. From a WIZARD or equivalent level character, quote the file into
|
||||
@@ the game. You need to know how your client works for this part.
|
||||
@@ 3. @edit the Support Code object, replacing all occurances of #140
|
||||
@@ with the dbref of the object itself. The installation will be useless
|
||||
@@ otherwise.
|
||||
@@ 4. Run +create-db
|
||||
@@ 5. Stat a test character and see what happens.
|
||||
@@
|
||||
|
||||
|
||||
@pemit me=Renaming the List Object and Support Code Objects to reflect the genre. Moment....
|
||||
|
||||
@name SGP Cgen: List Object=SGP Cgen: Trinity List Object
|
||||
@name SGP Cgen: Support Code=SGP Cgen: Trinity Support Code
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
|
||||
@pemit me=Quoting the Trinity List Object to the existing object. Moment....
|
||||
|
||||
&CREDITS SGP Cgen: Trinity List Object=Taurus@Karroo
|
||||
|
||||
&LIST-APPEARANCE-ABILS SGP Cgen: Trinity List Object=intimidation|style
|
||||
|
||||
&LIST-APTITUDES SGP Cgen: Trinity List Object=biokinesis|clairsentience|electrokinesis|psychokinesis|telepathy|vitakinesis
|
||||
|
||||
&LIST-ATTRIBUTES SGP Cgen: Trinity List Object=appearance|charisma|dexterity|intelligence|manipulation|perception|stamina|strength|wits
|
||||
|
||||
&LIST-BACKGROUNDS SGP Cgen: Trinity List Object=allies|cipher|citizenship|contacts|devices|followers|influence|resources
|
||||
|
||||
&LIST-CHARISMA-ABILS SGP Cgen: Trinity List Object=etiquette|perform|savvy
|
||||
|
||||
&LIST-DEMEANOR SGP Cgen: Trinity List Object=autist|bravo|caregiver|child|competitor|confidant|conformist|conniver|curmudgeon|deviant|director|fanatic|gallant|jester|judge|loner|maker|martyr|masochist|penitent|rebel|reveler|show-off|survivor|traditionalist|visionary
|
||||
|
||||
&LIST-DEXTERITY-ABILS SGP Cgen: Trinity List Object=athletics|drive|firearms|legerdemain|martial_arts|melee|pilot|stealth
|
||||
|
||||
&LIST-FACTION SGP Cgen: Trinity List Object=aesculapian|isra|the legions|the ministry|norca|orgotek|aeon trinity|qin|chromatics|abberants
|
||||
|
||||
&LIST-INTELLIGENCE-ABILS SGP Cgen: Trinity List Object=academics|bureaucracy|engineering|intrusion|linguistics|medicine|science|survival
|
||||
|
||||
&LIST-LISTS SGP Cgen: Trinity List Object=flaws|merits|gear
|
||||
|
||||
&LIST-MANIPULATION-ABILS SGP Cgen: Trinity List Object=command|interrogation|subterfuge
|
||||
|
||||
&LIST-NATURE SGP Cgen: Trinity List Object=autist|bravo|caregiver|child|competitor|confidant|conformist|conniver|curmudgeon|deviant|director|fanatic|gallant|jester|judge|loner|maker|martyr|masochist|penitent|rebel|reveler|show-off|survivor|traditionalist|visionary
|
||||
|
||||
&LIST-PERCEPTION-ABILS SGP Cgen: Trinity List Object=awareness|investigation
|
||||
|
||||
&LIST-POOLS SGP Cgen: Trinity List Object=psi|willpower|xp|initiative
|
||||
|
||||
&LIST-POWERS SGP Cgen: Trinity List Object=adaptation|psychomorphing|transmogrify|psychometry|psyconavigation|telesthesia|electromanipulation|photokinesis|technokinesis|cryokinesis|pyrokinesis|telekinesis|empathy|mindshare|psychbending|iatrosis|mentatis|algesis
|
||||
|
||||
&LIST-RACE SGP Cgen: Trinity List Object=psion|normal|qin|abberant|chromatic
|
||||
|
||||
&LIST-STAMINA-ABILS SGP Cgen: Trinity List Object=endurance|resistance
|
||||
|
||||
&LIST-STATS SGP Cgen: Trinity List Object=ATTRIBUTES|STRENGTH-ABILS|DEXTERITY-ABILS|STAMINA-ABILS|PERCEPTION-ABILS|INTELLIGENCE-ABILS|WITS-ABILS|APPEARANCE-ABILS|MANIPULATION-ABILS|CHARISMA-ABILS|POOLS|BACKGROUNDS|APTITUDES|POWERS
|
||||
|
||||
&LIST-STRENGTH-ABILS SGP Cgen: Trinity List Object=brawl|might
|
||||
|
||||
&LIST-STRINGS SGP Cgen: Trinity List Object=fullname|origin|aptitude|birthday|changeday|concept|demeanor|allegiance|nature|race
|
||||
|
||||
&LIST-WITS-ABILS SGP Cgen: Trinity List Object=arts|meditation|rapport
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting +stats commands on main and staff globals objects. If they need to be somewhere else, you need to move them yourself. If they don't set properly, you need to add and edit them manually. Moment......
|
||||
|
||||
&CMD-STATS SGP - Main Globals=$+stats:@switch [or(hasattr(%#,string-race),member(statlist(race),get(%#/string-race),|))]=0,{@pemit %#=You need to have someone set your race to something.},{@trigger #140/SHEET-[get(%#/string-race)]=%#,%#}
|
||||
|
||||
&CMD-STAT-STAFF SGP - Staff Globals=$+stats *:@switch setq(0,num(*%0))%q0:[or(hasattr(%q0,string-race),member(statlist(race),get(%q0/string-race),|))]=#-1*,@pemit %#=Are you sure that's a player?,#-2*,@pemit %#=There seems to be more than one. I don't know which one you mean!,*:0,{@pemit %#=[name(%q0)] does not appear to have stats. It may be that %p STRING-RACE is unset, or invalid.},{@trigger #140/SHEET-[get(*%0/string-race)]=%q0,%#}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting generic sheet support code. Moment......
|
||||
|
||||
&CREDITS SGP Cgen: Trinity Support Code=Audumla and BEM@Granite
|
||||
|
||||
&FN-DISPLAY-LIST SGP Cgen: Trinity Support Code=%R[center(>%B[capstr(%0)]%B<,78,-)]%R[table(get(%1/list-%0),38,78,|,%b)]
|
||||
|
||||
&FN-DISPLAY-LISTS SGP Cgen: Trinity Support Code=iter(filter(fn-haslist,%1[setq(9,%0)]), [u(fn-display-list,##,%0)])
|
||||
|
||||
&FN-DISPLAY-STRINGS SGP Cgen: Trinity Support Code=table(iter(%1,before(##,:):%B%B[capstr(get(%0/[after(##,:)]))],|,|),38,78,|,)
|
||||
|
||||
&FN-HASLIST SGP Cgen: Trinity Support Code=hasattr(%q9,list-%0)
|
||||
|
||||
&FN_3LISTSCOL SGP Cgen: Trinity Support Code=table(iter(lnum(max(words(%0,|),words(%1,|),words(%2,|)))[setq(0,sort(%0,a,|))][setq(1,sort(%1,a,|))][setq(2,sort(%2,a,|))],u(me/fn_format,extract(%q0,#@,1,|))|[u(me/fn_format,extract(%q1,#@,1,|))]|[u(me/fn_format,extract(%q2,#@,1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN_3VCOL SGP Cgen: Trinity Support Code=table(iter(lnum(setq(8,add(1,div(sub(words(%0,|),1),3)))%q8),u(me/fn_format,extract(%0,#@,1,|))|[u(me/fn_format,extract(%0,add(#@,%q8),1,|))]|[u(me/fn_format,extract(%0,add(#@,%q8,%q8),1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN_COMMON-LISTS SGP Cgen: Trinity Support Code=[u(fn-display-lists, %0,specialties merits flaws equipment)]
|
||||
|
||||
&FN_FORMAT SGP Cgen: Trinity Support Code=setq(9,switch(strmatch(extract(%0,2,1,:),extract(%0,3,1,:)),1,extract(%0,3,1,:),([extract(%0,3,1,:)])%B[extract(%0,2,1,:)]))[ljust(capstr(extract(%0,1,1,:)),sub(24,strlen(%q9)))]%q9
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Now we will set functions that are Trinity specific.
|
||||
|
||||
&FN_ABILITIES1 SGP Cgen: Trinity Support Code=%r[u(#140/FN_3LISTSCOL,sgptrim(get(%0/statlist-STRENGTH-ABILS)|[get(%0/statlist-SEC-STRENGTH-ABILS)],b,|),sgptrim(get(%0/statlist-CHARISMA-ABILS)|[get(%0/statlist-SEC-CHARISMA-ABILS)],b,|),sgptrim(get(%0/statlist-PERCEPTION-ABILS)|[get(%0/statlist-SEC-PERCEPTION-ABILS)],b,|))]
|
||||
|
||||
&FN_ABILITIES2 SGP Cgen: Trinity Support Code=%r[u(#140/FN_3LISTSCOL,sgptrim(get(%0/statlist-DEXTERITY-ABILS)|[get(%0/statlist-SEC-DEXTERITY-ABILS)],b,|),sgptrim(get(%0/statlist-MANIPULATION-ABILS)|[get(%0/statlist-SEC-MANIPULATION-ABILS)],b,|),sgptrim(get(%0/statlist-INTELLIGENCE-ABILS)|[get(%0/statlist-SEC-INTELLIGENCE-ABILS)],b,|))]
|
||||
|
||||
&FN_ABILITIES3 SGP Cgen: Trinity Support Code=%r[u(#140/FN_3LISTSCOL,sgptrim(get(%0/statlist-STAMINA-ABILS)|[get(%0/statlist-SEC-STAMINA-ABILS)],b,|),sgptrim(get(%0/statlist-APPEARANCE-ABILS)|[get(%0/statlist-SEC-APPEARANCE-ABILS)],b,|),sgptrim(get(%0/statlist-WITS-ABILS)|[get(%0/statlist-SEC-WITS-ABILS)],b,|))]
|
||||
|
||||
&FN_HEALTH SGP Cgen: Trinity Support Code=[center(>%bHealth%b<,78,=)]%r[center(Bashing Wounds: [stat(name(*%0),bashing)]%B%B Lethal Wounds: [stat(name(*%0),lethal)]%B%BAggravated Wounds : [stat(name(*%0),agg_wounds)],78)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Now we'll set the sheet attributes themselves. If you want qin, abberants or chromatics, you need to build them for your game.
|
||||
|
||||
&SHEET-NORMAL SGP Cgen: Trinity Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(#140/fn-display-strings,%0,Full Name:FULLNAME|Race:STRING-RACE|Allegiance:STRING-ALLEGIANCE|Occupation:STRING-OCCUPATION|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Date of Birth:STRING-BIRTHDAY|Origin:STRING-ORIGIN|Concept:STRING-CONCEPT|XP:XP)]%R[center(>%bAttributes and Abilities%b<,78,=)]%r[u(#140/fn_3vcol,iter(strength charisma perception,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities1,*%0)]%R[repeat(-,78)]%R[u(#140/fn_3vcol,iter(dexterity manipulation intelligence,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities2,*%0)]%R[repeat(-,78)]%R[u(#140/fn_3vcol,iter(stamina appearance wits,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities3,*%0)]%R[center(>%bMiscellaneous%b<,78,=)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),,get(*%0/statlist-pools))];@pemit %1=[u(#140/fn_common-lists,*%0)]%R[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-PSION SGP Cgen: Trinity Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(#140/fn-display-strings,%0,Full Name:FULLNAME|Race:STRING-RACE|Allegiance:STRING-ALLEGIANCE|Occupation:STRING-OCCUPATION|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Date of Birth:STRING-BIRTHDAY|Origin:STRING-ORIGIN|Concept:STRING-CONCEPT|XP:XP)]%R[center(>%bAttributes and Abilities%b<,78,=)]%r[u(#140/fn_3vcol,iter(strength charisma perception,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities1,*%0)]%R[repeat(-,78)]%R[u(#140/fn_3vcol,iter(dexterity manipulation intelligence,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities2,*%0)]%R[repeat(-,78)]%R[u(#140/fn_3vcol,iter(stamina appearance wits,grab(get(%0/statlist-attributes),##:*,|),,|))]%R[repeat(-,78)][u(#140/fn_abilities3,*%0)]%R[center(>%bMiscellaneous%b<,78,=)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-powers),get(*%0/statlist-pools))];@pemit %1=[u(#140/fn_common-lists,*%0)]%R[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
@pemit me=Done!
|
||||
@pemit me=Setting the flags.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP Cgen: Trinity Support Code=INHERIT;@set SGP Cgen: Trinity Support Code=COMMANDS;@set SGP Cgen: Trinity Support Code=STOP;@set SGP Cgen: Trinity Support Code=SAFE},PennMUSH*,{@set SGP Cgen: Trinity Support Code=!NO_COMMAND;@set SGP Cgen: Trinity Support Code=WIZARD},MUX*,{@set SGP Cgen: Trinity Support Code=INHERIT;@set SGP Cgen: Trinity Support Code=!NO_COMMAND;@set SGP Cgen: Trinity Support Code=SAFE},RhostMUSH*,{@set SGP Cgen: Trinity Support Code=INHERIT;@set SGP Cgen: Trinity Support Code=!NOCOMMAND;@set SGP Cgen: Trinity Support Code=SAFE;@set SGP Cgen: Trinity Support Code=STOP}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Now we set the explicit references to the correct value. If you and the various code objects aren't all in the same place, you will get errors. Moment....
|
||||
|
||||
@force me=@edit SGP Cgen: Trinity Support Code/*=#140,[num(SGP Cgen: Trinity Support Code)]
|
||||
@force me=@edit SGP - Main Globals/CMD-STATS=#140,[num(SGP Cgen: Trinity Support Code)]
|
||||
@force me=@edit SGP - Staff Globals/CMD-STAT-STAFF=#140,[num(SGP Cgen: Trinity Support Code)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting up +version on the objects. If you and the objects aren't in the same place, then you will get a bunch of errors. Moment....
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: Trinity List Object)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: Trinity Support Code)]
|
||||
|
||||
+version/update [num(SGP Cgen: Trinity List Object)]/version=BETA
|
||||
+version/update [num(SGP Cgen: Trinity List Object)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: Trinity List Object)]/History=Base
|
||||
|
||||
+version/update [num(SGP Cgen: Trinity Support Code)]/version=BETA
|
||||
+version/update [num(SGP Cgen: Trinity Support Code)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: Trinity Support Code)]/History=Base
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Creating the stats db. This takes about a minute.
|
||||
|
||||
+create-db
|
||||
69
sgp/WODTestMortalScript.txt
Normal file
69
sgp/WODTestMortalScript.txt
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
@@ This is a sample of an /quotable file for statting characters using SGP
|
||||
@@ Cgen. The main purpose of the file is to test your installation on WoD.
|
||||
|
||||
+setstat <name>/strength=2
|
||||
+setstat <name>/dexterity=2
|
||||
+setstat <name>/stamina=2
|
||||
+setstat <name>/charisma=2
|
||||
+setstat <name>/manipulation=2
|
||||
+setstat <name>/appearance=2
|
||||
+setstat <name>/perception=2
|
||||
+setstat <name>/intelligence=2
|
||||
+setstat <name>/wits=4
|
||||
|
||||
+setstat <name>/acting=2
|
||||
+setstat <name>/alertness=2
|
||||
+setstat <name>/athletics=2
|
||||
+setstat <name>/brawl=2
|
||||
+setstat <name>/dodge=2
|
||||
+setstat <name>/animal ken=2
|
||||
+setstat <name>/drive=2
|
||||
+setstat <name>/etiquette=2
|
||||
+setstat <name>/bureaucracy=2
|
||||
+setstat <name>/computer=8
|
||||
+setstat <name>/finance=4
|
||||
+setstat <name>/investigation=2
|
||||
+setstat <name>/science=3
|
||||
|
||||
+setstat <name>/drinking=3
|
||||
+setstat <name>/poetry=4
|
||||
|
||||
+setstat <name>/resources=5
|
||||
+setstat <name>/fame=2
|
||||
+setstat <name>/contacts=4
|
||||
|
||||
+setstat <name>/self_control=3
|
||||
+setstat <name>/courage=3
|
||||
+setstat <name>/conscience=4
|
||||
|
||||
+setstat <name>/humanity=8
|
||||
+setstat <name>/willpower=7
|
||||
|
||||
@@ Permanent Blood Pool Value
|
||||
|
||||
+setstat <name>/blood=10
|
||||
|
||||
@@ Banality
|
||||
|
||||
+setstat <name>/banality=7
|
||||
|
||||
@@ Check for exact format on race-names
|
||||
|
||||
+setstring <name>/race=mortal
|
||||
+setstring <name>/nature=test
|
||||
+setstring <name>/demeanor=test
|
||||
+setstring <name>/birthday=test
|
||||
+setstring <name>/concept=test
|
||||
|
||||
@@ The setting of specialties is optional and are here
|
||||
@@ for convenience in loading advanced characters.
|
||||
|
||||
+setspecialty <name>/computer=Godlike Programming Skill
|
||||
|
||||
@@ list attributes are in the form of | separated lists.
|
||||
@@
|
||||
@@ ex: &list-merits <name>=Ambidextrous|Nightclub|Catlike Balance
|
||||
|
||||
&list-merits *<name>=stuff|and stuff
|
||||
&list-flaws *<name>=stuffed
|
||||
|
||||
302
sgp/WoD-lib.txt
Normal file
302
sgp/WoD-lib.txt
Normal file
|
|
@ -0,0 +1,302 @@
|
|||
@@ SGP CGEN V1.0 BETA - 24 November 2001 BUILD
|
||||
@@
|
||||
@@ ---- SGP - World of Darkness Library Object and Sheet Code ----
|
||||
@@
|
||||
@@ NOTE 1: Due to the way that MUSH and MUX operate, you need to have
|
||||
@@ #1 @admin player_queue_limit=1000 and then @restart the MUSH after
|
||||
@@ so that the file quotes cleanly. It is recommended that if using
|
||||
@@ TinyFugue, that you /quote with a 1 second delay between commands,
|
||||
@@ so that the queue has time to catch up before it becomes overloaded.
|
||||
@@
|
||||
@@ NOTE 2: Make sure that you either allow wizards to use @function
|
||||
@@ and @attribute or be prepared to set up a long @startup on #1.
|
||||
@@
|
||||
@@ NOTE 3: Either quote these objects in the master room or @tel them
|
||||
@@ to that location after they are loaded into your game.
|
||||
@@
|
||||
@@ NOTE 4: This code is compatible with TinyMUSH 2.2.4U1 and RhostMUSH,
|
||||
@@ with the addition of a softcoded table() as found in Penn. It worked
|
||||
@@ on MUX and passed basic tests on PennMUSH. There may be other problems
|
||||
@@ problems on PennMUSH, so report bugs as you find them. TM3? Hell if I
|
||||
@@ know.
|
||||
@@
|
||||
@@ NOTE 5: This is file quotes the genre library code -only-. Functions
|
||||
@@ to generate sheet code are part of it, but the cgen engine needs to be
|
||||
@@ installed FIRST. Walkthrough rooms are not within the scope of this file.
|
||||
@@
|
||||
@@ NOTE 6: If you are using this system to replace an existing one, or you
|
||||
@@ are working on a new library from scratch, then you will need to find a
|
||||
@@ competent coder and bribe them to do the work for you. This is hard
|
||||
@@ work, so don't treat them badly for their trouble. We DO suggest that
|
||||
@@ you take a backup of the DB before you try any of it. MAKE SURE THAT
|
||||
@@ SAID CODER IS EMOTIONALLY STABLE AND COMPETENT, OR YOUR EXPERIENCE MAY
|
||||
@@ END BADLY.
|
||||
@@
|
||||
@@ NOTE 7: Audumla's Axiom reads "Psychocoder == psychopath. Get it?"
|
||||
@@
|
||||
@@ NOTE 8: This code is best installed at the same time as the rest of
|
||||
@@ the SGP globals packages. Successful installation requires that global
|
||||
@@ functions and global parent objects are in the same place as the wizard
|
||||
@@ installing the code. Otherwise, You will need to update several pieces
|
||||
@@ of information in the system and do a manual trigger of the startup on
|
||||
@@ the global functions object(note that this is something that you need
|
||||
@@ some patience and skill to accomplish without pulling your hair out).
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ Bugs:
|
||||
@@
|
||||
@@ The SGP team has gone to some trouble to knock the bugs out of this
|
||||
@@ puppy. INVARIABLY, there are probably one or two still left, so
|
||||
@@ report them and offer patches if you fix them before we get to them.
|
||||
@@ Makes everything better for everyone. :)
|
||||
@@
|
||||
@@ Check for typos and omissions.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ CREDITS:
|
||||
@@
|
||||
@@ List Object data compiled and donated by Psycho@Bloody Roses. He made
|
||||
@@ it and gave it away, so say 'thank you' by keeping the credits on the
|
||||
@@ code. If you don't like the way it's done, then do one yourself. No
|
||||
@@ one will stop you.
|
||||
@@
|
||||
@@ General and WoD-specific sheet code by Audumla and BEM@Granite, copyright
|
||||
@@ 2000-2001. They made it and then just gave it away, so keep the
|
||||
@@ credits on the code when you use it. The folks at Bloody Roses helped
|
||||
@@ a lot with final debugging, as did Jeff@Sandbox. Thanks go out to the
|
||||
@@ remaining members of the SGP Battlegroup** for putting up with the
|
||||
@@ pre-release neurosis. ;)
|
||||
@@
|
||||
@@ * WoD and World of Darkness are copyrighted by White Wolf Games.
|
||||
@@ Nothing done here is meant to infringe on White Wolf IP and hopefully
|
||||
@@ will make it easier for folks to make even more new MU*.
|
||||
@@
|
||||
@@ ** (The SGP Battlegroup: BEM, Audumla, Jeff, Hilikiradi, Brazil, Talek,
|
||||
@@ Raevnos, Ronan, and Ashen-Shugar, in a reprise of his role as 'The Dark
|
||||
@@ One'. Javelin@M*U*S*H returned for a cameo as 'The Angel of Light and
|
||||
@@ Goodness'.)
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ This installer writes code to 5 objects and requires that startups be
|
||||
@@ triggered at the end of the process. It does lots of things by itself,
|
||||
@@ but you need to use +stathide to run @attribute. People using PennMUSH
|
||||
@@ have to use it everytime.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ Recent Changes:
|
||||
@@
|
||||
@@ - Gathered the list info and sheet support code as a seperate file.
|
||||
@@ - Rolled in changes to the list object. (24NOV01)
|
||||
@@ - +stats and +stats * both do a lot more error checking. (24NOV01)
|
||||
@@ - Updates FN_ATTRIBUTES (24NOV01)
|
||||
@@ - Created 3rd Edition sheet code. @nd Edition code is available, but will
|
||||
@@ need local hacks.(24NOV01)
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To do List:
|
||||
@@ - Check for omissions and typos.
|
||||
@@ - add +version information.
|
||||
@@ - see about local hacks for test games.
|
||||
@@
|
||||
@@ ----------
|
||||
@@
|
||||
@@ To install this code:
|
||||
@@
|
||||
@@ 1. Install and make appropriate edits to the main cgen installer.
|
||||
@@ Without it, this library is meaningless.
|
||||
@@ 2. From a WIZARD or equivalent level character, quote the file into
|
||||
@@ the game. You need to know how your client works for this part.
|
||||
@@ 3. @edit the Support Code object, replacing all occurances of #140
|
||||
@@ with the dbref of the object itself. The installation will be useless
|
||||
@@ otherwise.
|
||||
@@ 4. Run +create-db
|
||||
@@ 5. Stat a test character and see what happens.
|
||||
@@
|
||||
|
||||
@pemit me=Renaming the List Object and Support Code Objects to reflect the genre. Moment....
|
||||
|
||||
@name SGP Cgen: List Object=SGP Cgen: WoD List Object
|
||||
@name SGP Cgen: Support Code=SGP Cgen: WoD Support Code
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
|
||||
@pemit me=Quoting the WoD List Object to the existing object. Moment....
|
||||
|
||||
&CREDITS SGP Cgen: WoD List Object=Psycho@Bloody Roses: Richmond by Night
|
||||
|
||||
&LIST-STATS SGP Cgen: WoD List Object=arcanoi|arts|attributes|backgrounds|disciplines|health|knowledges|lores|numinae|pools|renown|secknowledges|secskills|sectalents|skills|sorpaths|spheres-realms|talents|thaumpaths|virtues
|
||||
|
||||
&LIST-ATTRIBUTES SGP Cgen: WoD List Object=Strength|Dexterity|Stamina|Charisma|Manipulation|Appearance|Perception|Intelligence|Wits
|
||||
|
||||
&LIST-SECSKILLS SGP Cgen: WoD List Object=Acrobatics|Animal Training|Archery|Artillery|Blacksmith|Blind Fighting|Boat Handling|Brewing|Bribery|Calligraphy|Camouflage|Carpentry|Climbing|Cooking|Dancing|Debate|Demolitions|Disguise|Escapology|Falconry|Fast-Draw|Fast-Talk|Fire Dancing|First Aid|Fishing|Forgery|Gambling|Game Playing|Gunsmithing|Heavy Weapons|Helmsman|Herbalism|High Ritual|Hunting|Hypertech|Hypnotism|Jetpack|Jeweler|Journalism|Jury-Rig|Leatherworking|Lip Reading|Lockpicking|Mechanic|Meditation|Microgravity Operations|Misdirection|Networking|Origami|Parachuting|Photography|Pickpocket|Pilot|Police Procedure|Pottery|Psychoanalysis|Research|Ride|Scuba|Singing|Skiing|Sleight of Hand|Speed Reading|Storytelling|Torture|Tracking|Traps|Vamp
|
||||
|
||||
&LIST-SECTALENTS SGP Cgen: WoD List Object=Acting|Artistic Expression|Carousing|Diplomacy|Fortune-Telling|Guile|Haggling|Homiletics|Instruction|Interrogation|Intrigue|Intuition|Lucid Dreaming|Masquerade|Mimicry|Misdirection|Negotiation|Newspeak|Panhandling|Poetic Expression|Public Speaking|Scan|Scrounging|Search|Seduction|Sense Deception|Style|Swimming|Throwing|Ventriloquism
|
||||
|
||||
&LIST-SECKNOWLEDGES SGP Cgen: WoD List Object=Accounting|Alchemy|Anthropology|Archaeology|Architecture|Area Knowledge|Art History|Astrology|Astronomy|Biology|Biopsychology|Botany|Chemistry|Church History|City Secrets|Computer Hacking|Computer Programming|Conspiracy Theory|Construct Politics|Covert Culture|Criminology|Cryptography|Cryptology|Cybernetics|Economics|Electronics|Engineering|Ethnology|Fine Arts|Forensic Pathology|Forensics|Gematria|Genetics|Geology|Heraldry|Herbalism|History|Hypermathematics|Law Enforcement|Literature|Logic|Mathematics|Media|Metallurgy|Metaphysics|Meteorology|Military Science|Mythology|Naturalist|Numerology|Paleography|Paraphysics|Parapsychology|Pharmacopoeia|Philosophy|Phlogeny|Psychodynamics|Physics|Poisons|Power-Brokering|Propaganda|Psychology|RD Data|Religious Rites|Religious Scriptures|Sacred Geometry|Sacred Scriptures|Sociobiology|Subdimensions|Terrorism|Theology|Toxicology|Vice|Xenobiology
|
||||
|
||||
&LIST-TALENTS SGP Cgen: WoD List Object=Alertness|Athletics|Awareness|Brawl|Dodge|Empathy|Expression|Intimidation|Kenning|Leadership|Persuasion|Primal-Urge|Streetwise|Subterfuge
|
||||
|
||||
&LIST-SKILLS SGP Cgen: WoD List Object=Animal Ken|Biotech|Crafts|Drive|Energy Weapons|Etiquette|Firearms|Meditation|Melee|Music|Performance|Repair|Security|Stealth|Survival|Technology
|
||||
|
||||
&LIST-KNOWLEDGES SGP Cgen: WoD List Object=Academics|Bureaucracy|Computer|Cosmology|Culture|Enigmas|Finance|Gremayre|Investigation|Law|Linguistics|Medicine|Occult|Politics|Rituals|Science
|
||||
|
||||
&LIST-ARTS SGP Cgen: WoD List Object=Chicanery|Legerdemain|Primal|Soothsay|Sovereign|Wayfare|Dream-Craft|Pyretics|Chronos|Infusion|Contempt|Delusion
|
||||
|
||||
&LIST-BACKGROUNDS SGP Cgen: WoD List Object=Allies|Rank|Contacts|Fame|Resources|Mentor|Chimera|Chimerical Breed|Familiar Companion|Dreamers|Holdings|Remembrance|Retinue|Title|Treasures|Prestige|Political Connections|Patron|Trod|Golem|Dross Force|Age|Equipment|Life|Totem|Rites|Fetish|Kinfolk|Library|Guide|Relic|Sancuary|Status|Cloaking|Companion|Construct|Destiny|Device|Genius|Hypercram|Laboratory|Node|Backup|Enhancement|Patron|Requistions|Secret Pure Spirit|Contacts|Allies|Rank|Resources|Mentor|Fame|Influence|Arcane|Wonder|Past Weapons|Spies|Generation|Herd|Retainers|Eidolon|Haunt|Artifact|Legacy|Memoriam|Notoriety|Batsu|Clan|Go-en|Sempai|Avatar|Dream|Treasure|Remembrance|Title|Military|Pure Breed|Jamak|Umbral Glade|Past Life|Elder Status|Clan Prestige|Mana|Husk|Regard|Fae Blood
|
||||
|
||||
&LIST-DISCIPLINES SGP Cgen: WoD List Object=Auspex|Animalism|Celerity|Chimerstry|Dementation|Dominate|Fortitude|Necromancy|Obfuscate|Obtenebration|Potence|Presence|Quietus|Serpentis|Thaumaturgy|Vicissitude|Illumination|Protean|Mytherceria|Assamitic Sorcery
|
||||
|
||||
&LIST-NUMINAE SGP Cgen: WoD List Object=Animal-Psychics|Anti-Psychic|Astral-Projection|Biocontrol|Channeling|Clairvoyance|Cyberkinesis|Cyberpathy|Ectoplasmic-Generation|Empathic-Healing|Psychic-Hypnosis|Mind-Shields|Precognition|Psychic-Healing|Psychic-Invisibility|Psychic-Vampirism|Psychokinesis|Psychometry|Psychoportation|Pyrokinesis|Soulstealing|Synergy|Telepathic-Sensing|Telepathic-Projection|Telepathic-Control|Via-Medicamenti|Via-Ignis|Via-Geniorum|Via-Necromantiae|Via-Oraculi
|
||||
|
||||
&LIST-POOLS SGP Cgen: WoD List Object=Blood|Willpower|Paradox|Quint|Gnosis|Rage|Glamour|Enlightenment|Gullibility|Banality|Humanity
|
||||
|
||||
&LIST-RENOWN SGP Cgen: WoD List Object=Glory|Honor|Wisdom|Infamy|Obligation|Cunning|Ferocity|Virtue|Obedience|Chie|Toku|Kagayaki|Succor|Humor|Valor|Harmony|Innovation
|
||||
|
||||
&LIST-SORPATHS SGP Cgen: WoD List Object=Sorcerous Alchemy|Conjuration|Conveyance|Divination|Enchantment|Fascination|Fortune|Healing|Hellfire-Earthquake|Hellfire-Lightning|Hellfire-Decay|Hellfire-Dust Storm|Hellfire-Sleet|Hellfire-Smoke|Hellfire-Basic|Hellfire-Tanglewood|Hellfire-Drowning Tide|Mana Manipulation|Oneiromancy|Shadowcasting|Shapeshifting|S/B/W-Material|S/B/W-Daimonic|S/B/W-Ephemera|S/B/W-Necromantic|S/B/W-Technomantic|Weather Control
|
||||
|
||||
&LIST-THAUMPATHS SGP Cgen: WoD List Object=Thaumaturgical Alchemy|Biothaumaturgy|Green Path|Faux Path|Focused Mind|Hands of Destruction|Hearth Path|Lure of Flames|Mastery of the Mortal Shell|Movement of the Mind|Neptune's Might|Oneiromancy|Path of Blood|Path of Conjuring|Path of Corruption|Path of Curses|Path of Levinbolt|Path of Mars|Path of Shadowcrafting|Path of the Blood's Curse|Path of the Father's Vengeance|Path of Technomancy|Path of Transmutation|Spirit Manipulation|Thaumaturgical Countermagic|Thaumaturgical Forensics|Thauamaturgical Weather Control|Vine of Dionysus|Way of Earth|Way of Fire|Way of the Spirit|Way of Sorrow|Way of Water|Way of Wind|Path of the Dry Nile|The Snake Inside|Awakening of the Steel|Echo of Nirvana|Elemental Mastery|Path of the Ailing Jackal|The Hunter's Winds|Fires of the Inferno|Path of Pain|Path of Pestilence|Path of Phobos|Path of Pleasure|Path of the Defiler|Path of the Unspoken|Taking of the Spirt|Ash Path|Bone Path|Cenotaph Path|Mortuus Path|Sepulchre Path|Vitreous Path
|
||||
|
||||
&LIST-SPHERES-REALMS SGP Cgen: WoD List Object=Life|Spirit|Dimensional Science|Prime|Entropy|Forces|Time|Matter|Mind|Correspondence|Actor|Fae|Nature|Prop|Scene|Time|Air|Earth|Fire|Water|Spirit
|
||||
|
||||
&LIST-VIRTUES SGP Cgen: WoD List Object=Instincts|Cunning|Wisdom|Self-Control|Conscience|Courage|Conviction|Beauty
|
||||
|
||||
&LIST-ARCANOI SGP Cgen: WoD List Object=Argos|Castigate|Embody|Fatalism|Inhabit|Kenning|Lifeweb|Moliate|Outrage|Pademonium|Phantasm|Puppetry|Usury
|
||||
|
||||
&LIST-RACE SGP Cgen: WoD List Object=fae|mage|mortal|mortal+|shifter|vampire|wraith
|
||||
|
||||
&LIST-LISTS SGP Cgen: WoD List Object=battlescars|dark passions|equipment|fetters|flaws|gifts|merits|passions|rites|rituals|specialties|thorns
|
||||
|
||||
&LIST-STRINGS SGP Cgen: WoD List Object=auspice|birthday|breed|cabal|changeday|chrysalisday|clan|concept|court|deathday|demeanor|embraceday|essence|faction|form|house|kith|legacy|nature|occupation|pack totem|path|position|race|rank|sect|seeming|shadow archetype|shadow name|sire|specialty|tradition|tribe|type|unlegacy
|
||||
|
||||
&LIST-CLAN SGP Cgen: WoD List Object=Brujah|Gangrel|Malkavian|Nosferatu|Toreador|Tremere|Ventrue|Lasombra|Tzimisce|Assamite|Followers of Set|Giovanni|Ravnos|Kiasyd|Baali|Nagaraja|True Brujah|Caitiff|Gargoyle|Lasombra Antitribu|Assamite Antitribu|Blood Brothers|Brujah Antitribu|Gangrel Antitribu|Harbingers of Skulls|Malkavian Antitribu|Nosferatu Antitribu|Panders|Ravnos Antitribu|Salubri|Salubri Antitribu|Serpents of Light|Toreador Antitribu|Ventrue Antitribu
|
||||
|
||||
&LIST-MARSUPIALS SGP Cgen: WoD List Object=Kangaroo|Oppossum|Panda|Koala|Tasmanian Devil|Numbats
|
||||
|
||||
&LIST-HEALTH SGP Cgen: WoD List Object=Bashing|Lethal|Aggravated|Blood
|
||||
|
||||
&LIST-NATURE SGP Cgen: WoD List Object=Architect|Autist|Autocrat|Bon Vivant|Bravo|Capitalist|Caregiver|Cavalier|Celebrant|Chameleon|Child|Competitor|Conformist|Conniver|Creep Show|Curmudgeon|Dabbler|Deviant|Director|Enigma|Eye of the Storm|Fanatic|Gallant|Guru|Idealist|Judge|Loner|Martyr|Masochist|Monster|Pedagogue|Penitent|Perfectionist|Rebel|Rogue|Sadist|Scientist|Sociopath|Soldier|Survivor|Thrill Seeker|Traditionalist|Trickster|Visionary
|
||||
|
||||
&LIST-DEMEANOR SGP Cgen: WoD List Object=Architect|Autist|Autocrat|Bon Vivant|Bravo|Capitalist|Caregiver|Cavalier|Celebrant|Chameleon|Child|Competitor|Conformist|Conniver|Creep Show|Curmudgeon|Dabbler|Deviant|Director|Enigma|Eye of the Storm|Fanatic|Gallant|Guru|Idealist|Judge|Loner|Martyr|Masochist|Monster|Pedagogue|Penitent|Perfectionist|Rebel|Rogue|Sadist|Scientist|Sociopath|Soldier|Survivor|Thrill Seeker|Traditionalist|Trickster|Visionary
|
||||
|
||||
&LIST-PATH SGP Cgen: WoD List Object=Path of Humanity|Path of Caine|Path of Cathari|Path of Death and the Soul|Path of Evil Revelations|Path of Feral Heart|Path of Honorable Accord|Path of Lilith|Path of Power and the Inner Voice
|
||||
|
||||
&LIST-SECT SGP Cgen: WoD List Object=Camarilla|Sabbat|Black Hand|Anarch|Independent
|
||||
|
||||
&LIST-LORES SGP Cgen: WoD List Object=Arcanum Lore|Black Hand Lore|Camarilla Lore|Church Lore|Clan Lore|Faerie Lore|Familiar Lore|Hearth Wisdom|Inquisition Lore|Kindred Lore|Lupine Lore|Mage Lore|Sabbat Lore|Sewer Lore|Shifter Lore|Spirit Lore|Stone Lore|Supernatural Lore|Underworld Lore|Wyrm Lore
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting +stats commands on main and staff globals objects. If they need to be somewhere else, you need to move them yourself. If they don't set properly, you need to add and edit them manually. Moment......
|
||||
|
||||
&CMD-STATS SGP - Main Globals=$+stats:@switch [or(hasattr(%#,string-race),member(statlist(race),get(%#/string-race),|))]=0,{@pemit %#=You need to have someone set your race to something.},{@trigger #140/SHEET-[get(%#/string-race)]=%#,%#}
|
||||
|
||||
&CMD-STAT-STAFF SGP - Staff Globals=$+stats *:@switch setq(0,num(*%0))%q0:[or(hasattr(%q0,string-race),member(statlist(race),get(%q0/string-race),|))]=#-1*,@pemit %#=Are you sure that's a player?,#-2*,@pemit %#=There seems to be more than one. I don't know which one you mean!,*:0,{@pemit %#=[name(%q0)] does not appear to have stats. It may be that %p STRING-RACE is unset, or invalid.},{@trigger #140/SHEET-[get(*%0/string-race)]=%q0,%#}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting generic sheet support code. Moment......
|
||||
|
||||
&CREDITS SGP Cgen: WoD Support Code=Audumla and BEM@Granite
|
||||
|
||||
&FN_FORMAT SGP Cgen: WoD Support Code=setq(9,switch(strmatch(extract(%0,2,1,:),extract(%0,3,1,:)),1,extract(%0,3,1,:),([extract(%0,3,1,:)])%B[extract(%0,2,1,:)]))[ljust(capstr(extract(%0,1,1,:)),sub(24,strlen(%q9)))]%q9
|
||||
|
||||
&FN_3LISTSCOL SGP Cgen: WoD Support Code=table(iter(lnum(max(words(%0,|),words(%1,|),words(%2,|)))[setq(0,sort(%0,a,|))][setq(1,sort(%1,a,|))][setq(2,sort(%2,a,|))],u(me/fn_format,extract(%q0,#@,1,|))|[u(me/fn_format,extract(%q1,#@,1,|))]|[u(me/fn_format,extract(%q2,#@,1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN_3VCOL SGP Cgen: WoD Support Code=table(iter(lnum(setq(8,add(1,div(sub(words(%0,|),1),3)))%q8),u(me/fn_format,extract(%0,#@,1,|))|[u(me/fn_format,extract(%0,add(#@,%q8),1,|))]|[u(me/fn_format,extract(%0,add(#@,%q8,%q8),1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN-DISPLAY-LIST SGP Cgen: WoD Support Code=%R[center(>%B[capstr(%0)]%B<,78,~)]%R[table(get(%1/list-%0),38,78,|,%b)]
|
||||
|
||||
&FN-DISPLAY-LISTS SGP Cgen: WoD Support Code=iter(filter(fn-haslist,%1[setq(9,%0)]), [u(fn-display-list,##,%0)])
|
||||
|
||||
&FN-HASLIST SGP Cgen: WoD Support Code=hasattr(%q9,list-%0)
|
||||
|
||||
&FN-DISPLAY-STRINGS SGP Cgen: WoD Support Code=table(iter(%1,before(##,:):%B%B[capstr(get(%0/[after(##,:)]))],|,|),38,78,|,)
|
||||
|
||||
&FN_COMMON-LISTS SGP Cgen: WoD Support Code=[u(fn-display-lists, %0,specialties merits flaws equipment)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Now we will set functions that are WoD specific.
|
||||
|
||||
&FN_ATTRIBUTES SGP Cgen: WoD Support Code=[center(%bAttributes%b,78,~)]%r[u(#140/fn_3vcol,iter(strength dexterity stamina charisma manipulation appearance perception intelligence wits,grab(get(%0/statlist-attributes),##:*,|),,|))]
|
||||
|
||||
&FN_ABILITIES SGP Cgen: WoD Support Code=[center(%bAbilities%b,78,~)]%r[u(#140/FN_3LISTSCOL,sgptrim(get(%0/statlist-talents)|[get(%0/statlist-sectalents)],b,|),sgptrim(get(%0/statlist-skills)|[get(%0/statlist-secskills)],b,|),sgptrim(get(%0/statlist-knowledges)|[get(%0/statlist-secknowledges)],b,|))]
|
||||
|
||||
&FN_HEALTH SGP Cgen: WoD Support Code=[center(%bHealth%b,78,~)]%r[setq(1,Bashing: [stat(name(*%0),bashing)]%B%B Lethal: [stat(name(*%0),lethal)]%B%BAgg Wounds : [stat(name(*%0),agg_wounds)])] %q1[space(sub(32,strlen(%q1)))]%B%BBlood: [tempstat(name(*%0),blood)] / [stat(name(*%0),blood)][space(2)][switch(hasattr(*%0,REGNANT),1,{Blood bound to: [switch(isdbref(get(*%0/regnant)),1,[name(get(*%0/regnant))],0,[get(*%0/regnant)])]},0,)]
|
||||
|
||||
&FN_DISCIPLINES SGP Cgen: WoD Support Code=%R[center(%bDisciplines%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-disciplines),a,|))]
|
||||
|
||||
&FN_THAUMPATHS SGP Cgen: WoD Support Code=%R[center(%bDThaumaturgy Paths%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-thaumpaths),a,|))]
|
||||
|
||||
&FN_SPHERES-REALMS SGP Cgen: WoD Support Code=[u(#140/fn_3vcol,sort(get(%0/statlist-spheres-realms),a,|))]
|
||||
|
||||
&FN_ARCANOI SGP Cgen: WoD Support Code=%R[center(%bArcanoi%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-arcanoi),a,|))]
|
||||
|
||||
&FN_ARTS SGP Cgen: WoD Support Code=%R[center(%bArts%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-arts),a,|))]
|
||||
|
||||
&FN_NUMINA SGP Cgen: WoD Support Code=%R[center(%bNumina%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-numinae),a,|))]
|
||||
|
||||
&FN_SORPATHS SGP Cgen: WoD Support Code=%R[center(%bSorceror Paths%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-sorpaths),a,|))]
|
||||
|
||||
@@ &FN_IMMPOWERS SGP Cgen: WoD Support Code=%R[center(%bImmortal Powers%b,78,~)]%R[u(#140/fn_3vcol,sort(get(%0/statlist-immpowers),a,|))]
|
||||
|
||||
@pemit me=Setting basic sheet support code for a WoD cgen. Moment......
|
||||
|
||||
&SHEET-MORTAL SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Date of Birth:STRING-BIRTHDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|Occupation:STRING-OCCUPATION|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))]; @pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-VAMPIRE SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Clan:STRING-CLAN|Faction:STRING-FACTION|Birthday:STRING-BIRTHDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|Sire:STRING-SIRE|Path:STRING-PATH|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)]%R[u(#140/FN_DISCIPLINES,*%0)][switch(hasattr(*%0,statlist-thaumpaths),1,%R[center(%bThaumaturgy Paths%b,78,~)]%R[u(#140/fn_3vcol,sort(get(*%0/statlist-thaumpaths),a,|))])]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))];@pemit %1=[switch(hasattr(*%0,list-rituals),1,[u(fn-display-lists, %0,rituals)])];@pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-SHIFTER SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Type:STRING-TYPE|Breed:STRING-BREED|Tribe:STRING-TRIBE|Auspice:STRING-AUSPICE|Form:STRING-FORM|Date of Birth:STRING-BIRTHDAY|First Change:STRING-CHANGEDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|Rank:STRING-RANK|Pack Totem:STRING-PACK TOTEM|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-renown),get(*%0/statlist-pools))]; @pemit %1=[u(fn-display-lists, %0,gifts rites)];@pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-MAGE SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Tradition:STRING-TRADITION|Date of Birth:STRING-BIRTHDAY|Faction:STRING-FACTION|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|Essence:STRING-ESSENCE|Specialty:STRING-SPECIALTY|Cabal:STRING-CABAL|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)]%R[center(%bSpheres%b,78,~)]%R[u(#140/fn_spheres-realms,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))];@pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-WRAITH SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Type:STRING-TYPE|Faction:STRING-FACTION|Birthday:STRING-BIRTHDAY|Death Date:STRING-CHANGEDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)][u(#140/fn_arcanoi,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-shadowpools),get(*%0/statlist-pools))]; @pemit %1=[u(fn-display-lists, %0,passions fetters dark_passions thorns)];@pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-FAE SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Kith:STRING-KITH|Seeming:STRING-SEEMING|House:STRING-HOUSE|Date of Birth:STRING-BIRTHDAY|Date of Chrysalis:STRING-CHRYSALISDAY|Threshold:STRING-THRESHOLD|Concept:STRING-CONCEPT|Legacy:STRING-LEGACY|Unlegacy:STRING-UNLEGACY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)][u(#140/fn_arts,*%0)]%R[center(%bRealms%b,78,~)]%R[u(#140/fn_spheres-realms,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))]; @pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
&SHEET-MORTAL+ SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Type:STRING-TYPE|Occupation:STRING-OCCUPATION|Birthday:STRING-BIRTHDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|Concept:STRING-CONCEPT|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)][switch(hasattr(*%0,statlist-numinae),1,[u(#140/fn_numina,*%0)])][switch(hasattr(*%0,statlist-sorpaths),1,[u(#140/fn_sorpaths,*%0)])] [switch(hasattr(*%0,statlist-disciplines),1,%R[center(%bDisciplines%b,78,~)]%R[u(#140/fn_3vcol,sort(get(*%0/statlist-disciplines),a,|))])]%R[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))]; @pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=%r[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
@@ &SHEET-IMMORTAL SGP Cgen: WoD Support Code=@pemit %1=[center(<%b%b[name(%0)]%b%b>,78,=)]%R[u(fn-display-strings,%0,Race:STRING-RACE|Concept:STRING-CONCEPT|Date of Birth:STRING-BIRTHDAY|Date of Death:STRING-DEATHDAY|Nature:STRING-NATURE|Demeanor:STRING-DEMEANOR|XP:XP)]%r[u(#140/fn_attributes,*%0)]%r[u(#140/fn_abilities,*%0)]%R[u(#140/FN_LORES,*%0)]%R[u(#140/FN_IMMPOWERS,*%0)]%r[center(%bMiscellaneous%b,78,~)]%r[u(#140/FN_3LISTSCOL,get(*%0/statlist-backgrounds),get(*%0/statlist-virtues),get(*%0/statlist-pools))]; @pemit %1=[u(#140/fn_common-lists,*%0)];@pemit %1=[u(#140/FN_HEALTH,%0)]%R[repeat(=,78)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting flags. Moment....
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP Cgen: WoD Support Code=INHERIT;@set SGP Cgen: WoD Support Code=COMMANDS;@set SGP Cgen: WoD Support Code=STOP;@set SGP Cgen: WoD Support Code=SAFE},PennMUSH*,{@set SGP Cgen: WoD Support Code=!NO_COMMAND;@set SGP Cgen: WoD Support Code=WIZARD},MUX*,{@set SGP Cgen: WoD Support Code=INHERIT;@set SGP Cgen: WoD Support Code=!NO_COMMAND;@set SGP Cgen: WoD Support Code=SAFE},RhostMUSH*,{@set SGP Cgen: WoD Support Code=INHERIT;@set SGP Cgen: WoD Support Code=!NOCOMMAND;@set SGP Cgen: WoD Support Code=SAFE;@set SGP Cgen: WoD Support Code=STOP}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Now we set the explicit references to the correct value. If you and the various code objects aren't all in the same place, you will get errors. Moment....
|
||||
|
||||
@force me=@edit SGP Cgen: WoD Support/*=#140,[num(SGP Cgen: WoD Support)]
|
||||
@force me=@edit SGP - Main Globals/CMD-STATS=#140,[num(SGP Cgen: WoD Support)]
|
||||
@force me=@edit SGP - Staff Globals/CMD-STAT-STAFF=#140,[num(SGP Cgen: WoD Support)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Setting up +version on the objects. If you and the objects aren't in the same place, then you will get a bunch of errors. Moment....
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: WoD List Object)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: WoD Support Code)]
|
||||
|
||||
+version/update [num(SGP Cgen: WoD List Object)]/version=BETA
|
||||
+version/update [num(SGP Cgen: WoD List Object)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: WoD List Object)]/History=Base
|
||||
|
||||
+version/update [num(SGP Cgen: WoD Support Code)]/version=BETA
|
||||
+version/update [num(SGP Cgen: WoD Support Code)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: WoD Support Code)]/History=Base
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Creating the stats db. This takes about a minute.
|
||||
|
||||
+create-db
|
||||
|
||||
|
||||
35
sgp/crontab.txt
Normal file
35
sgp/crontab.txt
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
& @crontab
|
||||
------------------------------------------------------------------------------
|
||||
@crontab:
|
||||
|
||||
SYNTAX: @crontab
|
||||
@cron/add
|
||||
@cron/add <job name>=<time>/<object>|<attribute>
|
||||
@cron/del <job name>
|
||||
|
||||
Wizard Only
|
||||
|
||||
<time> is in the format: [month]|[date]|[day of week]|[hour]|[minute]
|
||||
<object> must be a dbref
|
||||
[month] and [day of week] are alpha entries (Jan, Mar, Tue, Sat, etc), not
|
||||
numeric entries. Case is unimportant (code lcstr's everything before running
|
||||
it through).
|
||||
|
||||
Multiple entries inside any crontab category are space separated. (BE VERY
|
||||
CAREFUL WHEN LEAVING THE LAST 2 ENTRIES BLANK! - ANY BLANK MATCHES
|
||||
EVERYTHING!)
|
||||
|
||||
@cron/add includes error checking and will not allow invalid month or day of
|
||||
week entries, or invalid dbrefs (including non-dbrefs like *jeff).
|
||||
|
||||
Examples:
|
||||
|13|Fri|12|00 - Every Friday the 13th, at noon.
|
||||
Jan|1||00|00 - At the beginning of any year (midnight,
|
||||
Jan 1).
|
||||
||||00 - At the beginning of every hour.
|
||||
||||00 10 20 30 40 50 - Every 10 minutes.
|
||||
Jan Mar May Jul Aug Oct Dec|1||| - Every minute of the 1st day of any
|
||||
month listed.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
176
sgp/installer-blank.txt
Normal file
176
sgp/installer-blank.txt
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
@@
|
||||
@@ File Header fun....
|
||||
@@
|
||||
@@ This file is pretty much the stripped out version of the file I
|
||||
@@ used when I build and installer. It is provided to help those
|
||||
@@ interested in compiling libraries for SGP cgen to do so more
|
||||
@@ easily.
|
||||
@@
|
||||
@@ This has a bunch of @pemits in it to let you know what is being set
|
||||
@@ when and where, as well as giving you a way to see that things might
|
||||
@@ have failed during installation.
|
||||
@@
|
||||
@@ Make sure that you include any notes that people should be mindful
|
||||
@@ of as they proceed with the installation of the object and also put
|
||||
@@ in notes in comments within the installer itself for anything that
|
||||
@@ needs to be worked on by either yourself or the SGP team when we
|
||||
@@ get the file ready to post to the website. You can look at existing
|
||||
@@ libraries for ideas. Since this stuff is usually ignored, make sure
|
||||
@@ you reward people who actually read them with something at least not
|
||||
@@ turgid and dull.
|
||||
@@
|
||||
@@ You should list any known issues or bugs.
|
||||
@@
|
||||
@@ You should add the list of people who should be credited for
|
||||
@@ various parts of the code you give us. Giving credit to people
|
||||
@@ for their work is important to SGP.
|
||||
@@
|
||||
@@ A little about the text itself:
|
||||
@@
|
||||
@@ Anything <> should be globally replaced with a single word genre
|
||||
@@ name. The objects get renamed straight out, so it is important
|
||||
@@ to do this step.
|
||||
@@
|
||||
@@ If you make substantive changes to anything in this code, make
|
||||
@@ sure that you add the details to the file, so we can be sure that
|
||||
@@ they are noted.
|
||||
@@
|
||||
@@ Please test the file by quoting it to a game and seeing if it works.
|
||||
@@
|
||||
@@ When you are done, please email the file to sandbox@erisian.net so
|
||||
@@ that we can include it in the release.
|
||||
@@
|
||||
@@ Thank you for supporting SGP!
|
||||
@@ Audumla, coordinator.
|
||||
@@
|
||||
|
||||
@pemit me=Renaming the List Object and Support Code Objects to reflect the genre. Moment....
|
||||
|
||||
@name SGP Cgen: List Object=SGP Cgen: <> List Object
|
||||
@name SGP Cgen: Support Code=SGP Cgen: <> Support Code
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
|
||||
@pemit me=Quoting the <> List Object to the existing object. Moment....
|
||||
|
||||
&CREDITS SGP Cgen: <> List Object=
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ This section assumes that you are using a single condition switch
|
||||
@@ for your sheet model. This may not be the best route to the
|
||||
@@ solution for your instance.
|
||||
@@
|
||||
|
||||
@pemit me=Setting +stats commands on main and staff globals objects. If they need to be somewhere else, you need to move them yourself. If they don't set properly, you need to add and edit them manually. Moment......
|
||||
|
||||
&CMD-STATS SGP - Main Globals=$+stats:@switch [or(hasattr(%#,string-race),member(statlist(race),get(%#/string-race),|))]=0,{@pemit %#=You need to have someone set your race to something.},{@trigger #140/SHEET-[get(%#/string-race)]=%#,%#}
|
||||
|
||||
&CMD-STAT-STAFF SGP - Staff Globals=$+stats *:@switch setq(0,num(*%0))%q0:[or(hasattr(%q0,string-race),member(statlist(race),get(%q0/string-race),|))]=#-1*,@pemit %#=Are you sure that's a player?,#-2*,@pemit %#=There seems to be more than one. I don't know which one you mean!,*:0,{@pemit %#=[name(%q0)] does not appear to have stats. It may be that %p STRING-RACE is unset, or invalid.},{@trigger #140/SHEET-[get(*%0/string-race)]=%q0,%#}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ These functions are the common functions to all sheet code done
|
||||
@@ thus far. Meaning, we know that they work everywhere SGP does.
|
||||
@@ If you need to change the number of columns or the spacing, go
|
||||
@@ ahead. Anything that is generically useful and works everywhere
|
||||
@@ will be accepted for inclusion in the system.
|
||||
@@
|
||||
|
||||
@pemit me=Setting generic sheet support code. Moment......
|
||||
|
||||
&CREDITS SGP Cgen: <> Support Code=Audumla and BEM@Granite
|
||||
|
||||
&FN-DISPLAY-LIST SGP Cgen: <> Support Code=%R[center(>%B[capstr(%0)]%B<,78,-)]%R[table(get(%1/list-%0),38,78,|,%b)]
|
||||
|
||||
&FN-DISPLAY-LISTS SGP Cgen: <> Support Code=iter(filter(fn-haslist,%1[setq(9,%0)]), [u(fn-display-list,##,%0)])
|
||||
|
||||
&FN-DISPLAY-STRINGS SGP Cgen: <> Support Code=table(iter(%1,before(##,:):%B%B[capstr(get(%0/[after(##,:)]))],|,|),38,78,|,)
|
||||
|
||||
&FN-HASLIST SGP Cgen: <> Support Code=hasattr(%q9,list-%0)
|
||||
|
||||
&FN_3LISTSCOL SGP Cgen: <> Support Code=table(iter(lnum(max(words(%0,|),words(%1,|),words(%2,|)))[setq(0,sort(%0,a,|))][setq(1,sort(%1,a,|))][setq(2,sort(%2,a,|))],u(me/fn_format,extract(%q0,#@,1,|))|[u(me/fn_format,extract(%q1,#@,1,|))]|[u(me/fn_format,extract(%q2,#@,1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN_3VCOL SGP Cgen: <> Support Code=table(iter(lnum(setq(8,add(1,div(sub(words(%0,|),1),3)))%q8),u(me/fn_format,extract(%0,#@,1,|))|[u(me/fn_format,extract(%0,add(#@,%q8),1,|))]|[u(me/fn_format,extract(%0,add(#@,%q8,%q8),1,|))],,|),25,78,|,%b)
|
||||
|
||||
&FN_COMMON-LISTS SGP Cgen: <> Support Code=[u(fn-display-lists, %0,specialties merits flaws equipment)]
|
||||
|
||||
&FN_FORMAT SGP Cgen: <> Support Code=setq(9,switch(strmatch(extract(%0,2,1,:),extract(%0,3,1,:)),1,extract(%0,3,1,:),([extract(%0,3,1,:)])%B[extract(%0,2,1,:)]))[ljust(capstr(extract(%0,1,1,:)),sub(24,strlen(%q9)))]%q9
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ Genre-specific functions, like things that generate really special
|
||||
@@ -ized display output. Look at the other installers for clues.
|
||||
@@
|
||||
|
||||
@pemit me=Now we will set functions that are <> specific.
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ The +stats commands, as provided, switch on the contents of the
|
||||
@@ STRING-RACE attribute, so &SHEET-<race> is the format. If you
|
||||
@@ decide to use some other factor to determine which sheet is read,
|
||||
@@ then you need to modify the switched in +stats and +stats * to
|
||||
@@ handle the conditions.
|
||||
@@
|
||||
|
||||
@pemit me=Now we'll set the sheet attributes themselves.
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ No need to mess with this.
|
||||
@@
|
||||
|
||||
@pemit me=Setting the flags.
|
||||
|
||||
@switch version()=TinyMUSH version 2.2.*,{@set SGP Cgen: <> Support Code=INHERIT;@set SGP Cgen: <> Support Code=COMMANDS;@set SGP Cgen: <> Support Code=STOP;@set SGP Cgen: <> Support Code=SAFE},PennMUSH*,{@set SGP Cgen: <> Support Code=!NO_COMMAND;@set SGP Cgen: <> Support Code=WIZARD},MUX*,{@set SGP Cgen: <> Support Code=INHERIT;@set SGP Cgen: <> Support Code=!NO_COMMAND;@set SGP Cgen: <> Support Code=SAFE},RhostMUSH*,{@set SGP Cgen: <> Support Code=INHERIT;@set SGP Cgen: <> Support Code=!NOCOMMAND;@set SGP Cgen: <> Support Code=SAFE;@set SGP Cgen: <> Support Code=STOP}
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ There are functions that require explicit dbrefs to function.
|
||||
@@ This code resets those values to what they are supposed to be.
|
||||
@@ Generally, this section won't need touched, but make doubly sure
|
||||
@@ that you add anything required to get code you add set with the
|
||||
@@ proper dbrefs.
|
||||
@@
|
||||
|
||||
@pemit me=Now we set the explicit references to the correct value. If you and the various code objects aren't all in the same place, you will get errors. Moment....
|
||||
|
||||
@force me=@edit SGP Cgen: <> Support Code/*=#140,[num(SGP Cgen: <> Support Code)]
|
||||
@force me=@edit SGP - Main Globals/CMD-STATS=#140,[num(SGP Cgen: <> Support Code)]
|
||||
@force me=@edit SGP - Staff Globals/CMD-STAT-STAFF=#140,[num(SGP Cgen: <> Support Code)]
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@@
|
||||
@@ SGP code is automatically put into the +version system. You
|
||||
@@ should only need to touch this stuff if you need to change the
|
||||
@@ patchlevel or history.
|
||||
@@
|
||||
|
||||
|
||||
@pemit me=Setting up +version on the objects. If you and the objects aren't in the same place, then you will get a bunch of errors. Moment....
|
||||
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: <> List Object)]
|
||||
@wait 0=&SGP-OBJECTS SGP - Global Parent Object=[get(SGP - Global Parent Object/SGP-OBJECTS)]|[num(SGP Cgen: <> Support Code)]
|
||||
|
||||
+version/update [num(SGP Cgen: <> List Object)]/version=BETA
|
||||
+version/update [num(SGP Cgen: <> List Object)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: <> List Object)]/History=Base
|
||||
|
||||
+version/update [num(SGP Cgen: <> Support Code)]/version=BETA
|
||||
+version/update [num(SGP Cgen: <> Support Code)]/Patchlevel=112401
|
||||
+version/update [num(SGP Cgen: <> Support Code)]/History=Base
|
||||
|
||||
@pemit me=Done!
|
||||
|
||||
@pemit me=Creating the stats db. This takes about a minute.
|
||||
|
||||
+create-db
|
||||
Loading…
Add table
Add a link
Reference in a new issue