CMud Spellbot

From AvatarWiki
Jump to navigation Jump to search

This is a basic spellbot script with a manually-updated "banned" list. It has options for full macros, split awen, divinity with augment levels, portals with a check to see if there are existing portals, and sanctuary. There is a trigger to keep heighten up. The script will check for a reasonable amount of mana before proceeding with a spellup.

Use the "spellban name" alias to add someone to the "banned" list. (Be sure to read the Trigger Using Policy about this.)

Important Note: I have another script that captures my current mana from my prompt and places it in @currmana . This is a very important step that I intentionally left out of here because everyone configures their prompt differently. If you use my prompt script here: CMud Prompt & Mob Cond script, it should work fine. (Thanks to Scrape for pointing this out.)


The Script

Save the following code as an .xml file, and import it into Cmud:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<cmud>
  <class name="Spellbot">
    <var name="spelltarget"/>
    <var name="spelllist"/>
    <var name="bannedlist" type="StringList"/>
    <var name="spellcount"/>
    <trigger priority="1000">
      <pattern>^(%w) tells you ~'full~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {fullspell %1}</value>
    </trigger>
    <trigger priority="1000">
      <pattern>^(%w) tells you ~'split~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {split %1}</value>
    </trigger>
    <trigger priority="11120">
      <pattern>^(%w) tells you ~'sanc~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {sanct %1}</value>
    </trigger>
    <trigger priority="11130">
      <pattern>^(%w) tells you ~'pp (*)~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {wake;#TEMP {You look at a portal here...} {c seal portal};look portal;{say Portal to %2!;c portal %2;sleep;#UNTRIGGER {You look at a portal here...}}</value>
    </trigger>
    <trigger priority="11140">
      <pattern>^You dream of (%w) telling you ~'div~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {#if (@currmana<100) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {wake;c div %1;sleep}}</value>
    </trigger>
    <trigger priority="11150">
      <pattern>^You dream of (%w) telling you ~'div(%d)~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {#if (@currmana<300) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {wake;augment %2;c div %1;augment off;sleep}}</value>
    </trigger>
    <trigger priority="11180">
      <pattern>^(%w) tells you ~'rc~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {c 'remove curse' %1}</value>
    </trigger>
    <trigger priority="11190">
      <pattern>^You dream of (%w) telling you ~'help~'</pattern>
      <value>#IF (%ismember(%1, @bannedlist)) {tell %1 "You are on the banned list. Send me a note on board 2 to appeal. Sorry."} {tell %1 "Tell me the following: full, split, pp target (for portal), div|div2|div3|div4|div5 (for divinity),rc (remove curse)."}</value>
    </trigger>
    <trigger priority="11200">
      <pattern>^Your senses return to normal</pattern>
      <value>wake
heighten
sleep</value>
    </trigger>
    <trigger priority="11210">
      <pattern>^You fail to heighten your senses.</pattern>
      <value>wake
heighten
sleep</value>
    </trigger>
    <alias name="split">
      <value>#if (@currmana<1300) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {tell @spelltarget I am now going to be giving you spells with split Awen. Sanctuary is the last spell I will cast. Check your affects at the end, I'm not perfect!;wake;c 'water breathing' @spelltarget;c 'holy sight' @spelltarget;c armor @spelltarget;c 'holy armor' @spelltarget;c 'holy aura' @spelltarget;c bless @spelltarget;c invinc @spelltarget;c barkskin @spelltarget;c 'iron skin' @spelltarget;c 'steel skeleton' @spelltarget;c foci @spelltarget;c fort @spelltarget;c sanc %1;tell @spelltarget I'm done. Be sure to cast Concentrate and Protection spells on yourself.;sleep}</value>
    </alias>
    <alias name="fullspell">
      <value>#if (@currmana<1500) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {tell @spelltarget I am now going to be giving you full spells. Awen is the last spell I will cast. Check your affects at the end, I'm not perfect!;wake;c 'water breathing' @spelltarget;c 'holy sight' @spelltarget;c invinc @spelltarget;c barkskin @spelltarget;c 'iron skin' @spelltarget;c 'steel skeleton' @spelltarget;c foci @spelltarget;c fort @spelltarget;c awen %1;tell @spelltarget Spells complete. Be sure to cast Concentrate on yourself.;sleep}</value>
    </alias>
    <alias name="sanct">
      <value>#if (@currmana<50) {tell @spelltarget I don't have enough mana right now. Please wait a moment and request again.} {wake;c sanct @spelltarget;sleep}</value>
    </alias>
    <trigger priority="11190">
      <pattern>^(%w) tells you ~'help~'</pattern>
      <value>#IF (%ismember(%1, @bannedlist)) {tell %1 "You are on the banned list. Send me a note on board 2 to appeal. Sorry."} {tell %1 "Tell me the following: full, split, pp target (for portal), div|div2|div3|div4|div5 (for divinity),rc (remove curse)."}</value>
    </trigger>
    <trigger priority="11150">
      <pattern>^(%w) tells you ~'div(%d)~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {#if (@currmana<300) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {wake;augment %2;c div %1;augment off;sleep}}</value>
    </trigger>
    <trigger priority="11140">
      <pattern>^(%w) tells you ~'div~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {#if (@currmana<100) {tell @spelltarget I don't have enough mana right now. Please wait a few minutes and request again.} {wake;c div %1;sleep}}</value>
    </trigger>
    <trigger priority="1000">
      <pattern>^You dream of (%w) telling you ~'split~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {split %1}</value>
    </trigger>
    <trigger priority="11120">
      <pattern>^You dream of (%w) telling you ~'sanc~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {sanct %1}</value>
    </trigger>
    <trigger priority="11180">
      <pattern>^You dream of (%w) telling you ~'rc~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {c 'remove curse' %1}</value>
    </trigger>
    <trigger priority="11130">
      <pattern>^You dream of (%w) telling you ~'pp (*)~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {wake;#TEMP {You look at a portal here...} {c seal portal};look portal;{say Portal to %2!;c portal %2;sleep;#UNTRIGGER {You look at a portal here...}}</value>
    </trigger>
    <trigger priority="1000">
      <pattern>^You dream of (%w) telling you ~'full~'</pattern>
      <value>#VAR spelltarget %1
#IF (%ismember(%1, @bannedlist)) {tell %1 You are on the banned list. Send me a note on board 2 to appeal. Sorry.} {fullspell %1}</value>
    </trigger>
    <alias name="spellban">
      <value>#additem bannedlist %1
#Echo -- %proper(%1) has been added to the Banned List. --

// Used to add characters to the banned list. </value>
    </alias>
  </class>
</cmud>


Notes

I created a trigger that fires on login and asks if I want to run in Spellbot mode (using #YESNO to activate the #CLASS), and another trigger that fires on logout and disables this class:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<cmud>
  <trigger priority="11370">
    <pattern>^Welcome back to the AVATAR System, ([Hero|Lord]) (%w).</pattern>
    <value>#yesno "Do you wish to run in Spellbot mode?" {#class spellbot 1} {#class spellbot 0}
        </value>
  </trigger>
</cmud>

Designer comments

Feel free to note me here or on board 2 to Shalineth with any feedback or suggestions.

Updated for CMud v3.32.