One of the great joys of MUSH (to me, anyway) is that I was able to learn to program without having a programming background. When I began writing MUSH code, I was a young housewife, with a great deal of free time on my hands. I learned through a very long process of trial and error. The programming I do is called "softcoding", and refers to creating objects on the fly within the MUSH database structure. "Hardcoding" refers to writing scripts in 'real' programming languages (or modifying the TinyMUSH server) and requires more real-world programming training to accomplish. I'm no longer a housewife. In fact, I'm now an IT professional of sorts -- I'm in school to get a degree in CISCO networking and have a job as a computer operator until that schooling is completed. I can honestly say that I would have never been on this career path if I hadn't been interested in MUSHing. Because I wanted to learn to code I "had" to learn how to set up server software (which meant running my own Linux box -- this was before Windows ports). It all grew from there.
I switch between PennMUSH, TinyMUSH, and TinyMUX coding, the servers are almost identical on a softcode level. Some functions or flags carry different names, while some new ones exist in one server or the other. However, it takes a minimal amount of brainpower to switch from one to the other (after you know at least one!)
If you take *any* code from this site, all that I ask is that you send me the fixes, updates, or changes you may need to make in order to get the code functional elsewhere. There's no single source out there on "how" to softcode. Each of us has to learn from the scattered notes found online, and by deconstructing and reconstructing other peoples' code creations. Please respect that I am trying to provide a service to the MUSH community by providing this archive.
As of 12/8/01 I hearby declare it official. I've been told by several completely unrelated people on unrelated games during a span of several months seperation that my node code is "famous" in World of Darkness circles. I guess that makes it famous :). So, find the "famous" GwenNode code on this site!
First, my own softcode contributions. For me, half the fun of coding is writing good descs (either clever/teasing, or, simply well-written). I hope you agree :).
(added 2/17/00) 'SCA-tender' code - Based on the idea of a vender/bartender, only, for SCA events. The basic model is really of a Renn-Faire worker, with SCA-based emits. Makes more sense of you have an idea about SCA/Renn-faire culture.
(added 2/17/00) Snippets Code - Several useful bits and pieces of code, meant to built vtime, tide, and season functions in a game. They're designed as patches over Keran's Weather and Time code, however, they stand alone as-is (without extra fancy emits like Keran's system).
(added 2/28/00) Hotel Vender Code version II - the original vendor with some examples of extra features -- book a room for one person, or suite for two; special door locks; recover and @dest the room after a certain amount of time (db bloat reduction).
(updated 7/26/02) XP tracker - this is one of those "Gain XP for being logged in and getting +votes" systems. It has recently been overhauled by Xellos@ChaosMUX, but, the base code is still mine :). I have plans to improve this "improved" version. It awards .1 XP per 10 hours logged in, .1 XP per vote, and .5 XP per staff vote. It allows players 10 votes per 10 hours logged in. Compatible with SGP and MIAM, and my version of Didi's Chargen is being updated to be fully compatible.
(added 9/23/01) GwenNode V3 - this is my Node code, version 3. Has functioning "Avatar refresh" and "The Rush" effects built in. Requires the "stat and rolls" function object found low down in the archive. This node object is here for historical reasons. The newest and most improved code can be found in the World of Darkness list as Gwen Mage's Global.
(added 3/19/02) Simple Shiftchanging Puppet - One of my bleeding-heart liberal tendencies was to be bothered by the idea of in-game puppet bartenders (and other 'employees') never getting any "time off". I wrote the simple shiftchanging puppet (whose related to the SCA worker above) to provide one puppet with multiple "identities".
(added 4/6/03) Random Global Object - a small object with a varied list of commands. +taxi (transportation), +freezer (character storage), +nuke/list (list 'inactive' characters for possible idle-desting), and a +bg/approve (addition to the SGP Background code). While it was originally meant for WoD games, it could probably be used anywhere with minimal configuration changes. Half these commands were written by me, the other half were modified from other sources (all properly credited).
(added 4/6/03) Changing Places Code Snippets - this isn't really a code object. Instead, it's samples of what you can do with the Places code that floats around the MUSH community (SGP's version is a fine start). Shows how to vary the main desc of a room by place, and how to link +views and place.
These are individual objects and small packages that I did not originally write, but, that I customized or cleaned up in some way. Unfortunately, while I had many random bits of code given to me in the past, it was not always set with CREDITS information!
(added 2/17/00) Stripper Code - Again, this was written for the World of Darkness, but, could be used anywhere. A stripper that reconfigures appearance and costume for every dance, and the catwalk she dances from. This code includes MUX ansi commands, which must be edited out for a MUSH.
(added 6/10/00) Three cellular phones are included in this one file, depending on what features you would like. One version has settings for either an external cell-phone, or, a cyber-punkish implanted phone. These versions all float through the Free Code Rooms of WoD games.
(updated 3/18/02) Modal space - this is a cute little set of code given to me years ago by one of the wizzes on Crystal MUSH. It allows you to create elaborate changing room descs based on what 'mode' area your character has been placed in. I have reduced it down and cleaned it up, and one of my friends did some minor fixes. There's pretty good documentation for this code, including a sample room and an example of a nifty lock.
(added 6/21/00) Alternate Time Functions - my husband and I built this as a joint effort (he combined his general programming expertise with my understanding of MUSH code syntax). This is the Time Functions object from Keran's Weather and Time code package rebuilt using an adjustment of the built-in system time, rather than the configurable calender designed by Keran. This is NOT meant as a slight to Keran, but, her time code doesn't properly represent our 'uneven' Gregorian system. If you want all her wonderful coded additions, and still have 'proper' modern Earth time, this object should work for you. If you have problems with it, please be sure to let me know.
(added 7/10/02) MUX Mail to BrandMail. This is a handy little object that allows those used to BrandyMail to alias the commands on the MUX @mail system. I don't recall exactly where I found this, but, it may have been part of the Mux-in-a-Minute distribution.
In the works...chargen and globals code for the World of Darkness/White Wolf MUSHes. If you take any of this code, again, *all* that I ask is that you send me copies of the fixes, so that I can update the code for everyone. In the meantime, I'll provide a link to some globals from the now-defunct Full Circle MUX. A skilled coder might be able to go through them and make something of them. I don't support the Full Circle code. Other individual code will be added as I finish cleaning it up.
(added 9/22/01) MC World of Darkness Chargen, what I call the "Mountain Cauldron" style, because, it originated at MC. Rooms for each "phase" of statting, rather than the 3-room format of Didi's version. Includes a Merits/Flaws room (which is in *desperate* need of expansion). This is the "old" Mountain Cauldron chargen, from the mid-late 90's. MC updated their chargen sometime before or around Y2k and it was supposed to be a beautiful rebuild. However, I have not been able to find a copy of that code, and MC went defunct. This *should* be pretty much plug and play, but, I'm still not supporting it! This is archived here for historical reasons.
(added 10/27/01) Didi's Improved Chargen: Mark II - I didn't write Didi's Chargen, that was written by someone named...you guessed it...DIDI. However, I have significantly re-written it over time. This means it is more and more "my" code effort as it goes through various versions. This is the most improved version to date, with the Womb, 2 chargen rooms, function holder etc. There's also a separate object for character sheet formatting. Mark II includes working secondary abilities code in chargen and some function fixes. Except for one minor problem with the character sheet code, this chargen should be fully functional for *basic mortal* characters. It's still missing merit and flaw code. Expect *no* support or hand-holding. Should work on TinyMUSH 3x and TinyMUX as-is, TinyMUSH 2.2.x's will want to remove the ANSI hilighting.
(added 3/17/02) Gwen Aura V1 - This is a significant-enough rewrite of what was originally Full Circle aura code, that I'm giving it "my" name and a generation number. Will probably be updated even further in the near future, but, works as-is.
(added 6/21/02) Gwen's Mage Globals Object V1 -- this is a new revision of my version 3 node code (moved from individual node objects to a central global object), and some other mage-useful commands. Somewhat documented.
(updated 4/0/03) Gwen's Vampire Globals Object. This is a revision of standard vampire code that floats around the WoD communities. Includes +pump, +vshift, +relax, and +feed. Other commands are due to be added in the future. A Hunting Room and Automatic Blood Drain code were added on 4/6/03.
(added 7/20/02) Gwen's Changeling Globals object. This is a revison of standard changeling code. Includes +flook, +fdesc, +fpose, +fpooc, +enchant, and +freehold. Some code written completely by me, other code simply updated. Other commands due to be added later on.
(added 4/12/03) Gwen's Sabbat Viniculum Global Object . -- This is a fusion of two systems written by other people. V 1.1. I have plans to continue to update this.
Next, I will provide links to a few softcode scripts that are my particular favorites, or that I think shouldn't be "lost", that other people wrote:
(added ?) Dynamic Space version 2.8 (MUSH) - this is a complex script that is surprisingly easy to configure (if you know a moderate amount of softcoding already). If you want to generate vast landscapes in a small amount of quota space, this is the set of objects to use. Seems to break down quickly in the most recent versions of MUSH/MUX after the 2.2 tree of TinyMUSH. This will require an unformatter before you upload.
(added ?) Dynamic Mapping Modual 1.2 (MUSH) - this is an add-on to Dynamic Space (and doesn't run without the basic Space being configured). This speeds up regional design, by allowing you to set up vast areas using a map object.
(added ?) MUX in a Minute is a collection of World Of Darkness-based MUX globals (complete with Chargen!). This system has coding holes you could drive a truck through. The author of the Tinymux 32-bit port (Stephen Dennis) has this to say about 'Mux in a Minute': "There are lots of caveats with it's use. It is the best currently available, but it is not sufficient for the task. There are some disturbing seams, and while Pedersen is a kind soul with softcode talent to spare, a scrubbed-down, solid version of MiaM probably is not going to happen any time soon. Therefore, you will need to begin re-writing parts of it as soon as you install it. If your DB goes over 6000 objects, the idle-nuker will start blowing random things away that begin with a 6 (things, exits, non-idle players). +unsummon has a tendency to @teleport the staff object out of the master room. My point is that it is available here (note: his site) because it's used so often, however, know what you are getting yourself into. These issues are part of MiaM lore, but there is no process in place currently for fixing these issues in the original MiaM distribution."
This is mostly archived for historical purposes, although, if anyone fixes the major problems and sends the fixes to me, I'll be glad to post them.
(added ?) Keran's Weather and Time Code 4.0 (MUX) - Keran coded a fantastic and very elaborate package of weather, season, and time code. I archived this because Keran retired from coding, and, I don't want this code to disappear entirely.
(added ?) Keran's Weather and Time Code 4.0 (MUSH) - I archived this version also because Keran retired from coding, and, I don't want this code to disappear entirely.
(added ?) Keran's Weather and Time Code TinyMUSH 3.0 bugfix - TinyMUSH 3.0 doesn't accept the longer attribute names used in the MUX and MUSH packages. Keran recommends TinyMUSH 3.0 users install the MUX version of her code (which is the stable code base), and then add the bug fixes over that.
(added 10/18/01)Fixes for Keran's weather and time, written by the helpful folks over at Due Rewards. There's no documentation to this code, so, you shouldn't install it unless you have access to a fairly adept coder.
(updated 6/21/02) +watch global, this is a global that allows players to watch other players log in and out. It handles players who don't want to be watched, and staff. I didn't update this. Instead, a friend of mine who code-staffed at Denver before me did the cleanup work on "public" code. The credits are still intact. Chaos MUX staffers sent me an updated version of the +watch code that they refined, with detailed comments.
(added 9/23/01) Stat and Roll functions, these functions are needed for some of the globals and individual objects I have coded. This makes WoD globals easier than including all the rolling code by hand for every object. Credited to Creator@VenusMUSH. Works with pool stats (willpower, rage, glamour, gnosis, etc.)
(added 7/19/02) The Anomoly Multi-Descer. This is a revised version of the so-called "tidy multidescer" I used to archive on this site, and that appears in my tf macro file. This version is suitable for using as a global (the other had security holes).
These are other sites which store MUSH or MUX code that may be downloaded and installed (or changed to better fit a purpose). No one provides any guarantees that any code works!
Kynn's MUSHcode Index is a huge collection collection that tracks by platform (MUSH/MUX), author, and other searchable options.
Sandbox Globals Project - a site dedicated to creating a set of portable globals that can be used in any game.
Joel's MUSHcode Index is another small site that holds World of Darkness "Aura" code, as well as a universal channel/communication system.
Jonathan's Home Page (Kamikaze) - includes a link to his MUSH code directory. No index file to assist in downloading, but, the code is fairly useful (WARNING: It's PennMUSH code, so, you'll have to know enough about the differences between Penn and Tiny to port over!)
TinyMU* Code Archive - a small archive that includes a nice places modification, language code, and an xp system with voting.
Wordsmyth Games Code Archive - another small archive, with good general MUSH resources on the site. PennMUSH code.
Marvin Pederson's Site was supposedly lost in the mists, but, there's still a Wayback archive of it. Softcode multi-descer, hardcode patches, and some Tinyfugue client macros.
Softcode by Trispis is a softcode site of PennMUSH code. Includes a handy softcode object that translates PennMUSH @mail commands into Brandymail-type commands.
MUSHcode Link site - not properly an archive, instead this is a link site to other peoples' archives. Still useful to track down code examples.
The uber-super MU*code Web Ring Listing - This ring alternates between being well-maintained, and listing lots of dead sites, but should have some useful links.
Many of these sites use special formatting for text storage. Here is web form that will 'unformat' for you: Unformat 1.1
Sometimes it's best to configure or change the server in some way, rather than installing softcode. Here's my small archive of server changes:
MUX @mail to Brandymail. This is a series of aliases that allows users to type BrandyMailer commands and still work with the @mail system. This is much cleaner and more efficient than using a separate code object.
A common question people have is "how do I learn to softcode"? I was sort of thrown into it -- I started playing on a game where I was told to build a project in order to advance in my particular faction. I asked around until I found people willing to help. For several years, I was mostly a builder, and learned to code to improve my areas. The interest grew from there.
I have characters on different MU*s from time to time. However, the one MUSH I'm completely loyal to is CrystalMUSH. I've been there since 1994 (class 2010 was going through adaption when I first began playing), and I have no plans of leaving :).