The forums have been archived and placed into READ-ONLY mode. Some things may not work such as the search bar.
I thought it would be a good idea to start a cMUD repository. Post your cMUD scripts here. If your script can also be used with zMUD, please make a note of it.
0
Comments
Updated to work on CMUD:
Xml: https://sites.google.com/site/jlhealy/code/crit_counter.xml?attredirects=0&d=1
--------
Here's my crit counter with a NEW AND IMPROVED damage tracking and overkill uptime feature! AND COLOR!
Track how many critical hits you get. Make sure to change the trigger for adding to totalhits to match your own attack type! (here it is set to "You strike"). Also set the variable DAMAGESPEED to the balance/eq for your bashing attack (3.25, 4.0, etc). Finally, turn config mobdamage on.
SHOWCRITS to view your current crit readout
RESETCRITS to reset crit counter. Do this on first import to set everything to zero.
#CLASS {critcounter}
#ALIAS showcrits {#math normalhits (@totalhits-@crithits-@staghits-@crushhits-@muthits-@annhits)
totalpercent=100.0
critpercent= %format( 2, %eval( @crithits*100.00/@totalhits))
stagpercent=%format( 2, %eval( @staghits*100.00/@totalhits))
crushpercent=%format( 2, %eval( @crushhits*100.00/@totalhits))
mutpercent= %format( 2, %eval( @muthits*100.00/@totalhits))
annpercent= %format( 2, %eval( @annhits*100.00/@totalhits))
normalpercent= %format( 2, %eval( @normalhits*100.00/@totalhits))
#math totalcrits @totalhits-@normalhits
totalcritpercent= %format( 2, %eval( @totalcrits*100.00/@totalhits))
#var totaldamage {}
#loop 1,%numitems( @damagedone) {#add totaldamage %item( @damagedone, %i)}
#var dps {}
#math damagecalc (@totaldamage/%numitems( @damagedone))
#math dps @damagecalc/@damagespeed
overkilluptime=%format(2, %eval(@overkilled*100/@overkilltotal))
dps=%format( 2, @dps)
#say
#show %ansi( cyan).:*~~*:.%ansi( high, white)C%ansi( cyan).:*~~*:.%ansi( high, white)R%ansi( cyan).:*~~*:.%ansi( high, white)I%ansi( cyan).:*~~*:.%ansi( high, white)T%ansi( cyan).:*~~*:.%ansi( high, white)S%ansi( cyan).:*~~*:.
#show %ansi( cyan).
#show %ansi( cyan)* %ansi( cyan)Hits %ansi( cyan)............................%ansi( cyan)@totalhits @totalpercent%ansi( cyan)% *
#show %ansi( cyan). %ansi( high, white)Normal %ansi( cyan)..........................%ansi( high, white)@normalhits @normalpercent%ansi( cyan)% .
#show %ansi( cyan)* %ansi( high, red)Critical %ansi( cyan)........................%ansi( high, red)@crithits @critpercent%ansi( cyan)% *
#show %ansi( cyan). %ansi( yellow)Staggering %ansi( cyan).......................%ansi( yellow)@staghits @stagpercent%ansi( cyan)% .
#show %ansi( cyan)* %ansi( high, cyan)Crushing %ansi( cyan).........................%ansi( high, cyan)@crushhits @crushpercent%ansi( cyan)% *
#show %ansi( cyan). %ansi( high, blue)Mutilating %ansi( cyan).......................%ansi( high, blue)@muthits @mutpercent%ansi( cyan)% .
#show %ansi( cyan)* %ansi( high, green)Annihilating %ansi( cyan).....................%ansi( high, green)@annhits @annpercent%ansi( cyan)% *
#show %ansi( cyan) .
#show %ansi( cyan)* %ansi( cyan)Total hits: @totalhits
#show %ansi( cyan). %ansi( cyan)Total criticals: @totalcrits
#show %ansi( cyan)* Crit percentage: %ansi( high, white)@totalcritpercent%
#show %ansi( cyan).
#show %ansi( cyan)* %ansi( cyan)Average hit value: @damagecalc
#show %ansi( cyan). %ansi( cyan)Average of %ansi( high, white)@dps %ansi( cyan)damage per second.
#show %ansi( cyan)*
#show %ansi( cyan). %ansi( cyan)Overkills: @overkilled
#show %ansi( cyan)* %ansi( cyan)Wasted overkills: @overkillmissed
#show %ansi( cyan). %ansi( cyan)Overkill uptime: @overkilluptime~%
#show %ansi( cyan)*
#show %ansi( cyan).:*~~*:.%ansi( high, white)_%ansi( cyan).:*~~*:.%ansi( high, white)_%ansi( cyan).:*~~*:.%ansi( high, white)_%ansi( cyan).:*~~*:.%ansi( high, white)_%ansi( cyan).:*~~*:.%ansi( high, white)_%ansi( cyan).:*~~*:.}#ALIAS resetcrits {totalhits=0;normalhits=0;crithits=0;staghits=0;crushhits=0;muthits=0;annhits=0;
#var damagedone {}}
#TRIGGER {^You strike} {#add totalhits 1}
#TRIGGER {^You have scored a CRITICAL hit!} {#add crithits 1}
#TRIGGER {^You have scored a STAGGERING CRITICAL hit!} {#add staghits 1}
#TRIGGER {^You have scored a CRUSHING CRITICAL hit!} {#add crushhits 1}
#TRIGGER {^You have scored a MUTILATING CRITICAL hit!} {#add muthits 1}
#TRIGGER {^You have scored an ANNIHILATING CRITICAL hit!!!} {#add annhits 1}
#TRIGGER {^Damage done: (%d), %w.$} {lastdamage=%1;#var damagedone %additem( %1, @damagedone)}
#TRIGGER {^Damage done: (%d) ~((%d) overkill~), %w.$} {#if @bash=1 {lastdamage=%2+%1;#var damagedone;%additem( @lastdamage, @damagedone); #add overkilled 1}}
#TRIGGER {^The rush of energy fades.$} {#add overkillmissed 1}
#TRIGGER {^A rush of energy fills you as you feel ready to deliver a devastating blow upon your next target.$} {#add overkilltotal 1}
#VARIABLE {cirthits} {0}
#VARIABLE {staghits} {0}
#VARIABLE {crushhits} {0}
#VARIABLE {muthits} {0}
#VARIABLE {annhits} {0}
#VARIABLE {lastdamage} {0}
#VARIABLE {damagedone} {0}
#VARIABLE {dps} {0}
#VARIABLE {damagecalc} {0}
#VARIABLE {damagespeed} {0}
#VARIABLE {overkilltotal} {0}
#VARIABLE {overkilled} {0}
#VARIABLE {overkillmissed} {0}
#CLASS 0
Display:
.:*~*:.C.:*~*:.R.:*~*:.I.:*~*:.T.:*~*:.S.:*~*:.
.
* Hits ............................429 100% *
. Normal ..........................234 54.55% .
* Critical ........................87 20.28% *
. Staggering .......................43 10.02% .
* Crushing .........................25 5.83% *
. Mutilating .......................21 4.90% .
* Annihilating .....................19 4.43% *
.
* Total hits: 429
. Total criticals: 195
* Crit percentage: 45.45%
.
* Average hit value: 4260
. Average of 1217.14 damage per second.
*
. Overkills: 13
* Wasted overkills: 3
. Overkill uptime: 81.00%
*
.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:.
#tr {* has just left you message #(%d).} {msgshuffle}
#var {msgshuffle} {snazzy return message 1|fun return message 2|you get the picture}
Be sure to put the trigger into your disable-able options class, so it doesn't fire during stuff like behead, etc. That has totally never happened to me. Ahem.
Venom Milking Bot!
If any errors pop up, lemme know!
XML: https://sites.google.com/site/jlhealy/code/milkbot.xml?attredirects=0&d=1
Text: https://sites.google.com/site/jlhealy/code/milkbot.txt?attredirects=0&d=1
PG-13-rated add-on for Kiyo: https://sites.google.com/site/jlhealy/code/kiyomilk.TXT?attredirects=0&d=1
Syntax:
MKL <#> - how many vials of what venom you want to milk. Eg MKL 2 ACONITE. Feel free to type in a whole long list of all the things you want to do
MILKCLEAR - clears out your current milking list
MILKSHOW - shows your current milking list
MILKSTART (cask) - starts the bot. Appending cask will milk into a cask instead of vials
MILKSTOP - aborts automated milking
NOTE: You can hold whatever vials you want, but the bot will milk into empties. Pots and cups can sometimes mess this up, so just drop them if you get an error about having nothing to milk into.
#CLASS {milking}
#ALIAS milkstop {#t- milkbot;milkstatus=0}
#ALIAS mv {#t+ milkbot;milkstatus=1;milk=%2;milkvenom=%2;milks=6;milknumber=%1;milkvial=%2;secrete %2;milk venom into empty;purge}
#TRIGGER {The syntax to use is MILK} {purge;milkstop;#say MILKBOT ABORTED!}
#ALIAS milkclear {#var milklist {};#var milklistnumbers {}} "moireansettings"
#ALIAS milkshow {#say;#say *** Milking Order ***;#say ---------------------;#if @milkstatus=1 {#say @milknumber @milkvenom;#if {%numitems( @milklist)>1} {#loo 2,%numitems( @milklist) {#say %item( @milklistnumbers, %i) %item( @milklist, %i)}} {}} {#loo 1,%numitems( @milklist) {#say %item( @milklistnumbers, %i) %item( @milklist, %i)}}} "moireansettings"
#ALIAS milkstart {#t+ milkbot;milkstatus=1;milksource=%1;#var milk %item( @milklist, 1);milkvenom=%item( @milklist, 1);milks=6;milknumber=%item( @milklistnumbers, 1);milkvial=%item( @milklist, 1);secrete %item( @milklist, 1);#if @milksource=cask {milk venom into cask} {milk venom into empty};purge} "moireansettings"
#ALIAS mkl {#var milklistnumbers %additem( %1, @milklistnumbers);#var milklist %additem( %2, @milklist);milkshow}
#CLASS 0
#CLASS {milking|milkbot}
#VAR milk {}
#TRIGGER {You have recovered balance on all limbs.} {#if (@milknumber>1) {#if @milksource=cask {secrete @milk;milk venom into cask;#math milknumber @milknumber-1;purge} {secrete @milk;milk venom into empty;#math milknumber @milknumber-1;purge}} {#if (%numitems( @milklist)>0) {#delnitem milklist 1;#delnitem milklistnumbers 1;mv %item( @milklistnumbers, 1) %item( @milklist, 1);milkshow;milkstart} {#t- milkbot;#say MILKING DONE!}}}
#TRIGGER {That vial can't hold that much venom.} {purge;#math milknumber @milknumber-1;drop @milkvial;#if {@milknumber>0} {milks=5;secrete @milk;milk venom into empty;milkshow} {#if (%numitems( @milklist)>0) {#delnitem milklist 1;#delnitem milklistnumbers 1;mv %item( @milklistnumbers, 1) %item( @milklist, 1);milkshow} {#t- milkbot;#say MILKING DONE!}}}
#CLASS 0
Some shop setting stuff!
XML: https://sites.google.com/site/jlhealy/code/shopstuff.xml?attredirects=0&d=1
Compare your current stock to your patterns for restocking. Lemme know if anyone has any ideas they'd like to see added with the outfits and stuff.
STOCKHELP - quick reminder of syntax
PSTK - captures all values of a crafted item, eg PSTK SHIRT
CSTK - captures all current items for sale, eg CSTK SHIRT
RSTK - compares potential stock to current stock and echoes back what you need to restock
GOSTK - automatically creates needed items. NOTE: materials must be in hand!
CRSTK <price> <shelf#> - Sets all unstocked designs to the crafting shelf
---> Tip, you can just do PSTK (item) to pull all items of that type and then run CRSTK to stock all item of your patterns for that type in a crafting shelf, even if you have physical versions available.
STOCKSTOP - Stop the automated restocking
Example of display :
---------------------------------------------------------------------
Updating DRESS patterns you need to restock...
---------------------------------------------------------------------
NEED TO MAKE anelegantazuresilk - 14866
NEED TO MAKE asapphirevelvetdre - 15253
NEED TO MAKE anelegantivorywedd - 15265
------------------
Lazy quick item pricing.
Syntax:
PSET - captures all items of a specific type, eg II SHIRT
PRI - prices all items of that type the specified price on the designated shelf, eg PRI 250 3 for pricing the shirts at 250 gold on shelf 3.
alias {pset} {#var stocklist {};#t+ priceset;ii %1;#alarm +3 {#t- priceset}}
#class priceset
#trigger {~"(%w)(%d)~"} {#additem stocklist %1%2}
#class 0
#alias {pri} {#forall @stocklist {price %i %1 shelf %2};#var stocklist {}}
--------------
Syntax:
PSET - captures all items of a specific type, eg II SHIRT
PRI - prices all items of that type the specified price on the designated shelf, eg PRI 250 3. Sends price single item# price# shelf# for all items of that type.
#alias {pset} {#var stocklist {};#t+ priceset;ii %1;#alarm +3 {#t- priceset}}
#class priceset
#trigger {~"(%w)(%d)~"} {#additem stocklist %1%2}
#class 0
#alias {pri} {#forall @stocklist {price single %i %1 shelf %2};#var stocklist {}}
----------
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."
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."
Though my creation is a bit different. Dear god I have enough Windows as it is. DASK HOW DO YOU HAVE ROOM FOR MORE.
Anyway, because I've been wanting in-game PHELP (like ghelp, but personal help) and got tired of waiting. I coded my own.
Enjoy.
https://docs.google.com/file/d/0B6cFzUF23FxweDVVRHJHSWVKZXc/edit?usp=sharing
PHELP is both the base command, and the help file.
Colorcheck is in a different part of my system...soo.. Here's that.
(Just make an alias for it, I call mine colorcheck...I'm terribly clever.)
[spoiler]
#echo %cr
#echo %ansi( 1)a 1
#echo %ansi( 2)a 2
#echo %ansi( 3)a 3
#echo %ansi( 4)a 4
#echo %ansi( 5)a 5
#echo %ansi( 6)a 6
#echo %ansi( 7)a 7
#echo %ansi( 8)a 8
#echo %ansi( 9)a 9
#echo %ansi( 10)a 10
#echo %ansi( 11)a 11
#echo %ansi( 12)a 12
#echo %ansi( 13)a 13
#echo %ansi( 14)a 14
#echo %ansi( 15)a 15
#echo %ansi( 16)a 16
#echo %ansi( 17)a 17
#echo %ansi( 18)a 18
#echo %ansi( 19)a 19
#echo %ansi( 20)a 20
#echo %ansi( 21)a 21
#echo %ansi( 22)a 22
#echo %ansi( 23)a 23
#echo %ansi( 24)a 24
#echo %ansi( 25)a 25
#echo %ansi( 26)a 26
#echo %ansi( 27)a 27
#echo %ansi( 28)a 28
#echo %ansi( 29)a 29
#echo %ansi( 30)a 30
#echo %ansi( 31)a 31
#echo %ansi( 32)a 32
#echo %ansi( 33)a 33
#echo %ansi( 34)a 34
#echo %ansi( 35)a 35
#echo %ansi( 36)a 36
#echo %ansi( 37)a 37
#echo %ansi( 38)a 38
#echo %ansi( 39)a 39
#echo %ansi( 40)a 40
[/spoiler]
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."
PNOUNCEMENTS! (Personal announcements)
Currently setup to change dependent on character name. Obviously you can change this variable to whatever you use, use gmcp if you so wish (I'm iffy on gmcp for name)
Currently setup to display 3 announcements at a time, but it's easy enough to edit to add more.
https://docs.google.com/file/d/0B6cFzUF23FxwTWprZTh4UHduUEU/edit?usp=sharing
I recommend adding the alias 'pnounce' to the trigger 'Your last login was from:' line that you get when you get in the game, though considering how my own system goes through a -ton- of crap initially when I log in, I have a wait of 3.5 seconds before it fires.
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."