cMUD Script Repository



  • MoireanMoirean Chairmander Portland
    Ok uploaded updated version. Check your notes before you upload as it'll pop in a new clear variable.

  • MoireanMoirean Chairmander Portland
    Lazy guard movement:

     Guardpath <mudbot vnum> - capture the path
     Guardgo - walk the guard there
     Guard=### - just set the individual guard id via the command lin (hey, I said it was lazy!)


    Lazy automatic refining with a dominion crystal.

     Refstart - Start it up

    Make sure to replace your own crystal number with the one in there in the REF alias.

    Uhh and don't use this on a MC. I don't have access to one, so for all I know, this might eat all the facets or something.

    By default, it just cycles through all of the crystal types. Tweak the variable crystalcache to adjust which ones to do.
  • MoireanMoirean Chairmander Portland
    Workaround for mudbot hating mxp.

    Just right click on your screen over the text to interact with to get a menu of options. Feel free to change the menu names. To change the order options appear, adjust the PRIORITY field in the menus.

    - "Quest Dialogue" is for using say responses
    - "Path find" is for mapping out the path find coordinates (eg like after asking a guard for directions)
    - "Path go" is to go. 
    - CHELP and GHELP let you use the new orghelp mxp stuff. Click blank space and select either to pull up the index, click a single word to read that orghelp and then SELECT multiple words and right click to read a multi-word orghelp.
    - "Quests" brings up your quest menu. Clicking on an individual quest name and selecting quests shows that quest's details.

    Not as nice as using mxp, but for those of us stuck with mudbot hating it, it's a workaround!
  • edited October 2013
    I've removed the script because of the customization required. However, it's for managing libraries. If anyone is interested drop me a message in Aetolia.
  • MoireanMoirean Chairmander Portland
    Automatically capture the map to a separate little window. Automatically checks every 10 seconds if you've moved rooms and updates the map if so. Feel free to adjust that timing.

    XML: click

  • MoireanMoirean Chairmander Portland
    edited October 2013
    Fun little script that lets you track points for people, since I know a lot of cities and guilds like doing this.

    EDIT: Updated this to allow for automated updating from IG projects. Have fun!

    Link: click

     First a little picture, then I'll break down how it all works:


    GIVEPOINT <name> <#> <reason> - Add a point to someone for tracking. Eg, GIVEPOINT MOIREAN 5 SHE ROCKS. To give negative points (like for redemptions), simply use a negative sign, eg GIVEPOINT MOIREAN -5 GO AWAY

    SHOWPOINTS <optional name filter> - Displays all the tracked points. Appending a name will show only that person. Eg, SHOWPOINTS SEVERN only shows Severn's points.

    WRITEPOINTS - Writes the points tracking to a .txt file in your cmud/aetolia directory. This is fairly minimally formatted (see example below), making it ideal for just copy/pasting into a project.

    File output:
    Person: Exayne
      Lesser: 5
      Tracking lessers for me: 3
      Being fabulous: 2
    Total points: 10

    Person: Moirean
      Being short: 5
      Being TOO short: -1
    Total points: 4

    Person: Severn
      Because wow: 9000
    Total points: 9000

    DELPOINT: Removes a person from the tracking. Good if you derped up the syntax somehow. 

    CLEARPOINTS: Clears all the points and lets you start over.

    ALLPOINTS: Alternative syntax to display all point tallies.

    GRABPOINTS <project #>: Provided the project is written in the format listed above (the text file output), you can simply type GRABPOINTS to update any changes made to the project into your own system, letting you work with other people who have the same script. GRABPOINTS 1234 to get the points from project 1234. Values which have not changed are untouched, and only points added/subtracted, new lines of points or new people added to the tracking are updated.


    NOW some notes:
    1. This uses a cmud text file. You only get 5 of them, and I've picked #2 as the one to use. Modify that in the settings if you want to tweak it.

    2. People get titled <name>_points in the variable setup. If you are going to use this for like a guild and a city, you'll want to make 2 versions that have unique variable titles. I named the variables broadly enough that it should be easy to just change the parts that are appended after the core word. If you need help changing this, just reply here.
  • MoireanMoirean Chairmander Portland
    Oh, a note about the above setup - you'll want to adjust this code if you have a name for your default class. I just use the package itself, but if you have a separate class you put stuff like variables made via var=value, or #temp triggers or whatever, add this to the GIVEPOINT alias and to the PERSON: trigger: #class {default_name} for wherever you want your DEFAULT settings.
  • MoireanMoirean Chairmander Portland
    Basic lesser management.

    - Tracks time since last lesser
    ---> People can have you report this by saying LAST LESSER in clan/web.
    - Gives an alert when a lesser is due to pop up (~ 2 hours, 45 mins since last lesser)
    - Calls out when a lesser is tapped
    - If you are the one tapping, tells people where you are.

    Note, you will have to change the clans you tell to. It's set for command/research clan, so tweak that manually in the following settings: 
    - Alias: lastlesser
    - Trigger: "A palpitating tremor" blah blah
    - Trigger: Research/command * says, "Last lesser."

    You can type LASTLESSER to spam all your clans/web with the time if you want to MAKE SURE PEOPLE KNOW OMG.

    If anything is borked or odd, lemme know!
  • MoireanMoirean Chairmander Portland
    From a request from Kiyotan, I smashed my esteem tracker and note tracker together and they birthed a person-note tracker.

    PNOTE <person> <stuff> - leaves a note on a person
    PNOTELIST - shows your overall notes/names
    PNOTES - shows all your names/notes
    PNOTES ON <name> - shows your notes for a specific person
    PNOTECLEAR - reset it all


  • OleisOleis Producer Emeritus Administrator, Immortal
    We have a god version of that but it uses hashtags. You need hashtags.
    You say to Slyphe, "You're so freaking smart."
    "^," Slyphe agrees with you.
  • DaingeanDaingean Xanhaal, probably.
    edited December 2013
    This is a nifty little automagical tattoo inking script I just wrote.

    It's slightly better than the other tattoo script offered in this topic, imo. Works on you or a target.



    Will find an empty slot, outc relevant inks and tattoo into the first empty spot available. If you're picky about which tattoo goes where, don't have more than one spot empty at a time. Slightly spammy for those inking multiple tattoos at once, because it checks tattoos for every inking to find a spot.

    Since I wrote this script into my system, it does include two of my internal aliases - G_Info which is my echo alias, and G_Alert which is my echo alias in red. You will want to find both of those and change them to straight up echoes or your own pretty echo alias.

    Put it up on my dropbox because I can't be bothered to write out the command line #trigger etc you'd need to add it in manually. Download and import!

    Edit - link is the same as it was, but the file has been modified very slightly. There was a minor issue with the script, in that it wasn't able to get the tattoo slot info and ink at the same time - forcing you to use the alias twice, once to get the slot info and once to actually use it. That's dumb, so, I added a small wait to the inking alias (you shouldn't even notice that it's there, it literally fires the minute the inks pop out of my cache) that lets the variable populate before it tries to ink the tattoo, so it will no longer cause you to try and INK MOON ON  OF ME rather than INK MOON ON HEAD OF ME.

    Because it uses a wait, if you lag a lot, it -might- still cause the issue, but fret not - if you use the alias to ink a tattoo, and get the error (You can't ink a tattoo on that!) the variable will have populated, so using the alias again will work as intended. This is less efficient than it could be, I guess, but.. I don't lag that much, so nyeh.
    Proudly fighting against Greytolia since the [approximately] 3/1/2010 at 18:00.
  • MoireanMoirean Chairmander Portland
    Oleis said:
    We have a god version of that but it uses hashtags. You need hashtags.
    What are hashtags?
  • OleisOleis Producer Emeritus Administrator, Immortal
    You say to Slyphe, "You're so freaking smart."
    "^," Slyphe agrees with you.
  • MoireanMoirean Chairmander Portland
    Oh the twitter things. I have no idea why everyone uses those.
  • DaskalosDaskalos Credit Whore Extraordinare Rolling amongst piles of credits.
    edited December 2013

    #BehindTheTimes #YouWantIt #Aetolia #cMUD #hashtag.




    Message #17059 Sent By: Oleis           Received On: 1/03/2014/17:24
    "If it makes you feel better, just checking your artifact list threatens to crash my mudlet."

  • MacavityMacavity Chicago, Il
    @moirean hashtags are a means to group topics together.  you can search for #(item) and see who has added them to link what they said about that item.  They have gotten a bit out of hand and people use them like crazy, for example the youtube from @Daskalos, which is HILARIOUS!!  

    #hashtag #funnyashell #willthiseverdie
    “Unless someone like you cares a whole awful lot,
    Nothing is going to get better. It's not.” 
    ― Dr. Seuss, The Lorax

    Veritas says, "Sorry for breaking your system Macavity."
    Veritas says, "My boss fights crash Macavity's computer now."
  • MoireanMoirean Chairmander Portland
    Ah. So you could do like #annoying or #creditwhore as a note for certain players and then search for all the players with that category? That sounds like a pretty cool functionality (can we get it for libraries?), but it'd be a bit of a headache to achieve via cmud I think.
  • DaskalosDaskalos Credit Whore Extraordinare Rolling amongst piles of credits.

    Yep. #CreditProud #NotBothered #TryAgain



    Message #17059 Sent By: Oleis           Received On: 1/03/2014/17:24
    "If it makes you feel better, just checking your artifact list threatens to crash my mudlet."

  • MoireanMoirean Chairmander Portland
    Some little list scripts. Basically, a super easy concept of grabbing a bunch of items, tossing them into a string list and doing various things with that list, such as executing a simple command or comparing lists. You can use this concept for a lot of stuff!

    Attire - link
    Basic use of the list concept - just dunking items into a list and then executing a single command for the list.

    Super easy little script to easily conceal stuff. Currently it picks up rings and amulets and will set the attire to conceal on all of them. You can obviously add/remove items for this.

    ATTCHECK picks up all rings and amulets you are wearing
    ATTI sets em to conceal.

    Enchanted Items - link
    Bit more complex - comparing one list against another!

    Easy way to get rid of unenchanted items.

    ENCAP - grab what items are enchanted
    RINGCAP <type> - grab all items of a type (eg, RINGCAP RING or RINGCAP EARRING).
    DROPSHIT - drop the unenchanted ones like they're hot. Or not hot, I guess.

    Inventory - link
    This one compares a new list against an old list and then writes the information to a file.

    Wrote this for another game where a bug kept making my stuff vanish. Maybe you really like tracking your gear.

    INVCHECK - does II and pro pack (feel free to add in any other spots you want to capture item numbers), compares it to your old list, shouts what you've gain/lost and then writes it all to a file for posterity.
  • I had a prettified elixlist thing on zmud that Xon made way back in the day... does anyone have a cmud version?
  • MoireanMoirean Chairmander Portland
    ELIXLIST FULL tends to be pretty useful. I've never bothered writing anything.
  • MoireanMoirean Chairmander Portland
    I got in a mood to make stuff, so I made a little dissection-bot.

    Easy to use! Just click the button drop down menu to set whatever priorities you want, hit GO to start and NO to stop (or type DISSON and DISSOFF).

  • DaskalosDaskalos Credit Whore Extraordinare Rolling amongst piles of credits.

    Below is a download link for a zip file with various scripts I've written and\or acquired over the years to make life in cMUD easier. They are:

    ChannelWindow -- Captures Tells and Channels and puts them in a floating window that you can then dock.

    CityFinances - Tweakable for your city, this literally does the Treasurer's job for them. Also features WDRAW, a city leader command to easily withdraw money from the city.

    Concoctions - Type 'refills' to bring up a dialogue box asking you want you want to refill. Want to refill a cask? Refillsc. Important note: This -will- let you inpot more than you can do with the 500 item limit, so be warned (and be careful).

    Enemy_Status_Tracker -- Alright, this script might need a little bit of help as there are undoubtedly things that reference my system  specifically in here, however, this is the first step towards building an affliction offense -- being able to track what you do. Currently works for Templar, Luminary, (theoretically) limb based classes. Just put in your attacks following the pattern of others in here. It'll keep up with the cures.

    Tattoos -- Simply type INK <tattoo> on <bodypary> of <target> and it will outc the proper inks for you and begin the tattoo.

    Starchart -- Subs all the starchart messages with what they actually do.

    WhoGroups -- Type 'whog' to see who's grouped up together around the realm.

    VitalWindow -- Creates a window (populated mostly by GMCP, but you may need to SCORE and STAT to get it exactly right) that tells you vital statistics about yourself. Of note, this will lag you slightly in combat, so you can do 'vitalwin' to toggle updating the window.



    Message #17059 Sent By: Oleis           Received On: 1/03/2014/17:24
    "If it makes you feel better, just checking your artifact list threatens to crash my mudlet."

  • MoireanMoirean Chairmander Portland
    edited April 2014
    Some little snippets. I find myself learning code a lot by peeking at what other people have made and playing with those ideas, so sharing a few things that I kinda find cool or useful.

    #var wielded {%subregex(%gmcp.char.vitals.wield_left,"\d+","")}
    Emulate this concept to easily strip out numbers (or \w for words) from a string. Ideal for parsing gmcp input and you can easily use it for nice displays (eg have a status bar display @wielded) or list comparison, etc.

    #say %ansi(cyan)%format("&30s",-----------------------------)</div><div>#say %ansi(white)%format("&26s",City Revenue Summary)</div><div>#say %ansi(cyan)%format("&30s",-----------------------------)</div></div></div><div>#say %ansi(brown)%format("&30s",Trade: @rev_sum(@trade))<br>
    %format + %ansi makes readouts look really clean and polished. Really intuitive to use once you start making readouts using it, play around a bit and see how much nicer your tables and displays look.

    #echo Oh god halp
    Sometimes this command is unknown, so just tossing it in - instead of displaying text to the window it's happening it, this will have the system message go to the currently active window. Great if you multiplay - it'll ping you in your other cmud screen if someone is talking to you/attacking you/etc. You can also use it to run scripts or tracking or whatnot in side windows and only ping out the key stuff to the current session window.

    $current_design=%1</div><div>#sub {~<send 'gocraft %1|newd %1|addstock %1' 'Make it|Examine it|Craft shelf it'> Design_%1 ~</send>}
    Just a snippet from my lazy crafting code, but you can basically turn most anything you want into mxp. I sub out my crafting design numbers for interactive click menu functionality. Right click pulls up a menu of various aliases/commands you can do with the variable.

    #if {config returnmessage %item( @msgshuffle, %random( 1, %numitems( @msgshuffle)))}<br>
    Since people always seem to get a kick out of that. Probably like the third thing I coded here in Aet. Randomly selects a value from the stringlist msgshuffle. That combo of functions I've used tons of other times in other places - %numitems is a very useful and easy cmud way to create a varying limit for things like loops, manipulate lists or to check the current status of a list. Some more examples:

    #loo 1,%numitems(@var)<br>#var hypnolist %additem(%pop(@hypnostring), @hypnolist);#say Hypnos left: &nbsp;%numitems(@hypnostring); #say (@hypnostring)<br>#if %numitems(@current_disturbs)=3 {elicit unravel @targ}
  • Now I didn't make this, someone in the Sciomancers did when I commented how I wanted an easier way to track how many I was drawing with crystals. It is nifty ish.

    #ALIAS {#var refineamount %1;#var refineshape %2;#var refinecount 0;refine 10 %2}
    #TRIGGER {^You have recovered balance on all limbs.$} {#IF (@refineamount&gt;@refinecount) {refine 10 @refineshape}}
    #TRIGGER {^You lay your hands on a (*), and draw %2 %3 %4 from it.$} {#add refinecount %2}
    #VARIABLE {refineamount} {0}
    #VARIABLE {refinecount} {0}
    #VARIABLE {refineshape} {}

    Basically you ref # crystal
    It only works with increments of 10 but it made it a little easier then counting each time I drew manually.
  • MoireanMoirean Chairmander Portland
    edited July 2014
    @Daskalos asked for something like this to be done a while back, and I got distracted. Finally remembered:

    $ $http="http://" $map_var=%replace($map_var, " ", "&") $map_var=%concat($http,$map_var) #window sitemap {<image '$map_var' type="png" W="100%" H="100%">}

    This is the meat of a command you can execute to get the gmcp map link to display in a window. You can adjust the size (currently I have height/width at 100%, so it'll stretch bigger/smaller to fit into the window size), you can use this on a tick timer to automatically update, etc, up to you.

    A warning about this - cmud is doing a temporary download of the image in order to display it. It's not quick and inbuilt like the mudlet mapper is, so there may be some delay. I don't advise using it every time you move rooms.
  • MoireanMoirean Chairmander Portland
    edited July 2014
    Really simple script to mimic PATH FIND with the mudbot mapper. Just type MP [area], eg MP JARU.

    #say $map_area
    map path %dbkey(@area_list,%isvalue(@area_list,$map_area))
    #if @walk=1 {go} {gog}

    This is predicated on you having a database variable formatted like so:

    10977: Raim
    4691: Jaru
    889: Mostyn

    A variable like this is a clean and easy way to serve as the basis for a leyline tracker, troop marcher, etc, so worth making, in my opinion!
  • MoireanMoirean Chairmander Portland
    For @Aryanne (and whoever else), some basic bash-and-move settings. These are NOT super fancy, they might be kinda spammy, and they aren't perfectly optimal. For that, you'll want to use GMCP, or IH, and have a database of priority mobs, etc etc etc. This is just quick and dirty stuff, with an emphasis on some basics so people can take the concepts and apply them themselves.

    Method 1: Move randomly and hit stuff
    TRIGGER: You can find no such target as 'wight'
    #alarm "wightbasher" {+.1} {wightbash}

    ALIAS: wightbash
    #untrigger {wightbasher}
    #var exits {n|ne|e|se|s|sw|w|nw|u|d|in|out}
    %item( @exits, %random( 1, %numitems( @exits)))
    [your bash attack alias here]

    Method 1a: Move (a bit more cleanly) randomly and hit stuff
    TRIGGER: You see a single exit leading (%w).
    #var exits %1

    TRIGGER: You see exits leading (%w) and (%w).
    #var exits {}
    #additem exits %1
    #additem exits %2

    etc etc etc, up until you have 12 triggers

    TRIGGER: You can find no such target as 'wight'
    #alarm "wightbasher" {+.1} {wightbash}

    ALIAS: wightbash
    #untrigger {wightbasher}
    %item( @exits, %random( 1, %numitems( @exits)))
    [your bash attack alias here]

    Method two: Use mudbot mapper to cycle through a zone
    ALIAS: NALON (or whatever you want to call it)
    #t+ naljin
    bashon (or whatever your bash alias is)
    [your bash attack] spinelash eel ray (if you need help writing a bash alias that'll read in multiple targets, post in a reply asking how!)
    area search @mount (I use my mount since it'll always be in the room. Feel free to search for something else)

    #t- naljin
    area search stop

    CLASS: naljin (or whatever you want to call it)

    TRIGGER: You can see the following *
    COMMAND: [bashattack]

    TRIGGER: You can find no such target as 'ray'.
    #if (%gmcp.char.vitals.equilibrium=1 and %gmcp.char.vitals.balance=1) {area search continue}

    Method three: Follow a preset path
    This takes a bit more setup, but it's perfect for creating a basher to run through a place like Xaanhal.

    First, you'll want to capture a path.

    #MARK starts capturing the path. Every direction you walk will then be recorded.

    #PATH [name] will save the path you walked.

    You can use this trigger to automatically covert it to a string variable. Note that it's set to fire off my prompt setup...mine ends with lr] - you'll want to change the final character if your prompt doesn't end with ]

    TRIGGER: ~](*) assigned to (%w)
    #var @pathname $expanded_path
    #say Path converted into a variable named path_%2!

    You can also type #PATH to see all the paths you've got saved and manually create the string variable:

    #var @pathname $expanded_path

    Just type PATHCONVERT [paste path here] [variable name you want]

    Now, for the basher part...

    Simply set your current path to the path you made earlier:


    And when it's time to move, simply grab the top number off that path:

    #if (%numitems(@bashpath)&gt;0) {%pop(@bashpath)}

    I'm not really going to write the rest out in detail, because that's getting into heavier coding, but if someone is writing their own, feel free to use this thread ( to ask questions!

  • EleanorEleanor FOR SCIENCE
    It should be noted that making a thing that moves you around while bashing is a huuuuge no-no, so if you're going to run one you'd better be sure you're at your keyboard and paying attention! If the admins try to check if you're AFK and you don't respond, you gon' get leafy.

  • MoireanMoirean Chairmander Portland
    Eleanor said:

    It should be noted that making a thing that moves you around while bashing is a huuuuge no-no

    No it's not. Auto movement is allowed, as long as you are at your computer and responsive.


    Triggers and automation are allowed in Aetolia provided that you are present at your computer terminal at all times. FULLY automating quests and hunting - with movement and all actions included in the triggers - are allowed so long as one is present at the computer, as well as gambling automation.
Sign In or Register to comment.