AlternateDefault: Difference between revisions

From CLUMP
Jump to navigationJump to search
m (→‎Code: updated Default)
Tag: Reverted
m (Reverted edits by Mwadmin (talk) to last revision by Inu Teisei)
Tag: Rollback
 
Line 3: Line 3:


==Dependencies==
==Dependencies==
* [[Abbreviations.mac]], [[Dances.mac]], [[Directions.mac]], [[Funactions.mac]], [[Keys.mac]], [[Omega_zu.mac]], [[Quickchain.mac]], [[Shares.mac]], [[Readtext.mac]], [[Sunstone.mac]], [[Scanner.txt]]
* [[Abbreviations.mac]], [[Dances.mac]], [[Directions.mac]], [[Funactions.mac]], [[Keys.mac]], [[Omega_zu.mac]], [[Quickchain.mac]], [[Shares.mac]], [[Readtext.mac]], [[Sunstone.mac]], [[tc_macro.mac]]


==Usage==
==Usage==
Line 34: Line 34:
==Code==
==Code==
<pre>
<pre>
/* escape sequences:
//------------------------------------------------
\\ backslash
// default
\" double quote"
//------------------------------------------------
\r return
// This macro file is included for every character by default.
@name your character name
// Use it for general macros that you want available to all characters.
@rplayer selected player real name (with spaces) [NEW variable is @selplayer.name]
 
@splayer selected player simple name (no spaces) [NEW variable is
include "abbreviations.mac"
@selplayer.simple_name]
include "dances.mac"
checking if something is in something else
include "directions.mac"
>>> scanText.word[0] < "/"
include "funactions.mac"
@env Variables Variables with an @env prefix control how macros execute.
include "omega_zu.mac"
@env.echo (true/false) After any \r in a macro, replace the text in the input box by the text that was sent?
include "readtext.mac"
@env.debug (true/false) Give extra information on macro loading and execution?
include "shares.mac"
@env.key_interrupts (true/false)
include "sunstone.mac"
Stop executing a macro when a key is pressed?
include "tc_macro.mac"
@env.click_interrupts
include "quickchain.mac"
Stop executing a macro when you click in the game window (where clicks move your character)?
include "manticore.mac"
include "keys.mac"
include "moneycount.mac"
@my.variables
 
Variables with a @my prefix concern your character.
@login
@my.name Your character's name.
{
@my.simple_name Your character's simple name (no spaces or punctuation)
//::::::::::::::::::::::::::::::::::::::::::::::::
@my.[slot]_item The name of the item in the slot named. (Torso, Legs, Shoulder, Neck)
// Global Variables Defined
@my.right_item the name of the item in your right hand
//::::::::::::::::::::::::::::::::::::::::::::::::
@my.left_item the name of the item in your left hand
// 20071229-inu: Moved out of abbreviations.mac & tc_macro.mac
@my.forehead_item the name of the item on your forehead
setglobal  NumZuBags 2 // the number of kudzu bags you carry, for some reason that scanner is in here
@selplayer Variables Variables with a @selplayer prefix refer to the selected character.
setglobal  ThankRandom 1 // turns on thank random routine at startup for use with idle routine
@selplayer.name Selected character's name.
setglobal  scanBreak 0 // Enables scanner to run continuously.
@selplayer.simple_name Selected character's simple name (no spaces or punctuation)
setglobal  InfoExile 0 // Turns off exile info by default in AFK macro called on login, set can change it.
setglobal  MySunStone sungem // Set this to your sunstone, used in sunstone and tc_macro.
@click Variables Variables with a @click prefix refer to the character clicked on to begin a click macro.
setglobal  IdleTime 100 // Set this to the desired pause time for idle macro (every 4 = 1 second approximately)
@click.name The clicked on character's name.
setglobal  default_pie_target "DragonHawk" //Used by Pie-O-Matic in funactions.mac
@click.simple_name The clicked on character's simple name (no spaces or punctuation)
setglobal  weapon_of_choice "moonstone"  //Used by Quickchain.mac to re-equip default right hand item.
 
Miscellaneous Variables
call MoneyCount
@text The complete text in the typing box when the macro started.
call GoScan
  (minus the expression (trigger) of an expression macro)
}
  @textsel The selected text in the typing box when the macro is started.
@random (no-repeat) A number between 0 and 9999, randomly generated each time this variable is referenced. form: random…or…or…end random
//::::::::::::::::::::::::::::::::::::::::::::::::
*/
// Function key macros
//::::::::::::::::::::::::::::::::::::::::::::::::
include "armor.txt"
// This allow all key based macros to be called from here.
include "creature-list.txt"
// Makes it easier to track which keys are used for which macros.
include "DynamicShareCads"
//
include "ethereal_functions.txt"
// F1 - embedded pull
include "funactions.txt"
// F2 - embedded push
include "Karma_Idle.txt"
// F3 - to moonstone.mac
include "KudzuLord-pop.txt"
// F4 - to moonstone.mac
include "quickchain.txt"
// F5 - to quickchain.mac
include "sacko_zu.txt"
// F6 - to omega_zu.mac
include "scanner.txt"
 
include "rankcount.mac"
f1 "/pull " @splayer "\r"
include "Shares.txt"
f2 "/push " @splayer "\r"
f3 call itemswap //f3 switches between an item and your moonstone,
shift-f3 call itemswap2 //When switching to the moonstone, you get a quick burst
include "Storage.txt" //Geotzu's storage retrieval macro. works great!
control-F3 call ultcad
include "sunstone_messages.txt
control-shift-F3 call ultcad2
f4 call cadswap
include "track_it.mac"
f5 call flybychain
include "WTB.txt"
f6 call zu-stuff
include "whatClass.txt"
shift-f6 call zu-add
ctrl-f6 call zu-remove
 
//***** Global Variables *****//
// Other keys
control-click2 call click-action // Quickchain.mac -- Needs to be reviewed, problematic.
set toggle 0 // use "toggle" to toggle things on or off
click3 "/thank " @selplayer.simple_name "\r"
set Fighter[1] "Noivad"
control-click "/pull " @click.name "\r"
set Fighter[2] "Beer"
control-shift-click "/push " @click.name "\r"
set Fighter[3] "Purrfect"
control-tab setglobal mStop 1
set Healer[1] "Thoomilicious"
// wheelup call flybychain        // highly recommend against assigned anything to wheel up nor down
set Healer[2] "Asklepios"
// wheeldown call DHAwakeAFK        // unless you have a clicky wheel. Using this with a smooth
"/login" call @login
                                              // scrolling mouse is not something to try,
                                              // use as you will have multiple calls to same macro. chain break!
//Global Variables
click4 message ==> TESTING    // New mice have more than 3 buttons.
 
set modeVerbose 0
//::::::::::::::::::::::::::::::::::::::::::::::::
// Macros called from login are defined here
set mStop 0
//::::::::::::::::::::::::::::::::::::::::::::::::
//
set longsleep 1
//------------------------------------------------
set messageStart 0
// Torin's Exile Picker Macro
set lsaveitem @my.left_item
//------------------------------------------------
// Picks a random exile
set rsaveitem @my.right_item
// 20080129-inu: Fixed to stop picking myself.
 
  set count 0
"/pick" call ExilePicker
//
set iAmAHealer 0
ExilePicker
set startup 1
{
set numPlayers 0
set toggle 0 // use "toggle" to toggle things on or off
"/select " @last "\r"
  set ritem
set lastExile @selplayer.simple_name
set defaultritem ""
"/select " @first "\r"
set Exile[1] @selplayer.simple_name
if @selplayer.simple_name == lastExile
  set numPlayers 1
@login
  goto ranPicker
{
end if
call time_stamp_check
set exileCounter 1
pause 1
    
call whoami
label exileCountLoop
pause 5
  "/select " @next "\r"
call GoScan
  set exileCounter + 1
}
  set Exile[exileCounter] @selplayer.simple_name
  if @selplayer.simple_name == lastExile
time_stamp_check
    set numPlayers exileCounter
{
    goto ranPicker
set TextToCheck @env.textLog.word[0].letter[0]
  end if
goto exileCountLoop
//message "text to check is: " TextToCheck
 
label ranPicker
   if  TextToCheck > 0
  set ranPick @random
setglobal messageStart 2
  set ranPick % numPlayers
setglobal timestamps 1
  set ranPick + 1
message "*time stamps are On"
  set testexile Exile[ranPick]
  else
  if testexile == @my.simple_name
message "*time stamps are off"
set ranPick +1
setglobal messageStart 0
  end if
setglobal timestamps 0
  setglobal randomExileClanning Exile[ranPick]
  "/select " randomExileClanning "\r"
label endexilepicker
}
 
//------------------------------------------------
// GoScan and Scanner macros (Noivad's + ?)
//------------------------------------------------
"goscan" call GoScan
GoScan
{
set @env.key_interrupts false //when you start you want it to loop
set @env.click_interrupts false //these two lines makes sure it doesn't shut off
if messageStatus == 1
message "Scanner On:"
pause 8
end if
if @text == "?"
message "Type \"/t?\" to find the target."
pause 8
message "Type \"/ts <name> [text]\" sets the target and sends them a message if you include one."
pause 8
message "Type \"/set feedback [1|0|on|off]\" to toggle feedback on|off."
pause 8
message "Type \"noscan\" to stop GoScan and DHAwakeAFK."
end if
"/pose lie\r"
if @my.name == "Inu Teisei"
"/action naps like DH \r"
else
"/action is sleeping \r"
end if
message **Idling with anti time-out active.
call Scanner
}
 
//------------------------------------------------
// Scanner Macro (Noivad's + ?)
//------------------------------------------------
Scanner
{
  // Rev 2.0
  // RevLog:
  // 20071231-inu: Integrated DH's AwakeAFK macro with this scanner to avoid problems and auto call on login
  // 20080128-inu: Removed excessive pause in integrated DHAwakeAFK integrated counter instead.
  //       Integrated Raul's trainer message reader.
 
  set IdleCount 0
  label scanTop
pause 1
if scanBreak == 1
goto scanEnder
else
//------------------------------------------------
// BEGIN: Scan for Text Section
//------------------------------------------------
set scanText @env.textLog
if scanText.word[0] < "/"
setglobal timeStamps 3
setglobal playerName 2
setglobal me 6
else
setglobal timeStamps 1
setglobal playerName 0
setglobal me 3
end if
if scanText.word[timeStamps] == "thinks" //with timestamps[3] w/o [1]
if scanText < "thinks to you, \""
if ssTarget != scanText.word[playerName] //w/timestamps[2] w/o[0]
if scanText.word[playerName] != @my.name
setglobal ssTarget scanText.word[playerName]
setglobal feedback 1 //turn on feedback for new target
pause 4
set IdleCount + 4
end if
end if
if messageStatus == 1 //this controls overall feedback
//This if block turns off feedback when the target hasn't changed
if feedback == 1
message "/tl target: " ssTarget
setglobal feedback 0
end if
end if
end if
else if scanText < "Captain Barnac asks, \"Ah, "
set namePer @my.name
set namePer + "."
if scanText.word[me] == namePer
pause 1
set IdleCount + 1
"yes\r"
end if
else if scanText < "Paul Deckand asks, \"Ah, "
set namePer @my.name
set namePer + "."
if scanText.word[me] == namePer
pause 1
set IdleCount + 1
"yes\r"
end if
else if scanText < "Fird Lirden asks, \"Ah, "
set namePer @my.name
set namePer + "."
if scanText.word[me] == namePer
pause 1
set IdleCount + 1
"yes\r"
end if
else if scanText < "* You don't have anything like that"
if bag_number < NumZuBags
setglobal bag_number + 1
message "*bag set to " bag_number
"/equip bag of kudzu seedlings " bag_number "\r"
else if bag_number > NumZuBags
setglobal bag_number 1
"/equip bag of kudzu seedlings " bag_number "\r"
end if
pause 8
set IdleCount + 8
else if scanText < "You have no 'bag of kudzu seedlings"
setglobal bag_number 1
"/equip bag of kudzu seedlings " bag_number "\r"
else
pause 1
set IdleCount + 1
end if
//------------------------------------------------
// END: Scan for Text Section
//------------------------------------------------
// START: DHAwakeAFK integration
//------------------------------------------------
// Credits: Idle and awakeafk macros by DragonHawk
// Adding Idle macro to this one big loop to stop possible conflicts between the two
if IdleCount > IdleTime // Only execute this part one time per IdleTime period
random
message ::** ThankRandomExile **::
if ThankRandom == 1
call ExilePicker
"/karma " randomExileClanning " \r"
"/thank " randomExileClanning " **Yay! You won the thank lottery! ;p \r"
end if
"/pose stand se \r"
or
message ::** CheckMoney **::
"/money \r"
if InfoExile == 1
"/info " randomExileClanning " \r"
end if
"/pose thoughtful \r"
or
message ::** InfoRandomExile **::
"/pose stand \r"
"/pose sit "
if InfoExile == 1
"/info " randomExileClanning " \r"
end if
end random
"/karma \r"
set IdleCount 0
end if
set IdleCount + 1
//------------------------------------------------
// END: DHAwakeAFK integration
//------------------------------------------------
// START: Readtext.mac by Raul integration
//------------------------------------------------
setglobal gtrainerPhrase scanText
call rankcount
//------------------------------------------------
// END: Readtext.mac - trainer message by Raul integration
//------------------------------------------------
goto scanTop
end if  // Scanner Loop
label buggy //After time some infinite loops run away
Message "Bug Detected:" //on you. So, I place these messages
pause 2 //in to let you know if the macro
Message "**Use <CTRL>-TAB to halt***" //has jumped out of the regular loop
pause 120 //<--gives you time to escape the loop.
 
label scanEnder
if messageStatus == 1
message "Scanner Off"
end if
set @env.key_interrupts true //Kludges to try to stop a run away macro
set @env.click_interrupts true //Kludges
pause 300 //Kludges
}
 
//------------------------------------------------
// Global SET macro (Noivad's + ?)
//------------------------------------------------
"/set" //non-optimized to add: messageVariable and call InstructionMessages
{
if @text.word[0] == "verbose"
if @text.word[1] == "?"
message "* This variable sets whether or not to associate an \"/action\" or \"/narrate\" with a macro."
pause 16
message "\"1\" is on, \"0\" is off."
if modeVerbose == 0
message "*Verbose mode is off."
else
message "*Verbose mode is on."
end if
else
if @text.word[1] == 1
setglobal modeVerbose @text.word[1]
else if @text.word[1] == 0
setglobal modeVerbose @text.word[1]
else
message "Error: Verbose Mode must be set to 0 or 1."
goto end
end if
if modeVerbose == "1"
message "*Verbose mode: On."
else if modeVerbose == "0"
message "*Verbose mode: Off."
end if
end if
else if @text.word[0] == "debug"
if @text.word[1] == "?"
message "*This variable sets whether debugger messages are displayed when testing a macro."
pause 12
if debug == 0
message "*debug is off."
else
message "*debug mode is on."
end if
else if @text.word[1] == 1
setglobal debug @text.word[1]
else if @text.word[1] == 0
setglobal debug @text.word[1]
else if @text.word[1] == "on"
setglobal debug 1
else if @text.word[1] == "off"
setglobal debug 0
else
message "Error: Debug Mode must be set to 0 or 1, or off and on."
goto end
end if
message "debug is set to: " debug
else if @text.word[0] == "longsleep"
if @text.word[1] == "?"
message "*This variable is used to toggle the long sleep macro \"on\" and \"off\"."
if longsleep == 0
message "*longsleep is off."
else
message "*longsleep is on."
end if
else if @text.word[1] == "off"
setglobal longsleep 0
message "*longsleep is off."
else if @text.word[1] == "on"
setglobal longsleep 1
message "*longsleep is on."
end if
else if @text.word[0] == "bag"
if @text.word[1] == "?"
message "*This variable is used to select a bag number to use for kudzu planting."
message "the current bag is " bag_number "."
end if
if @text.word[1] > 0
setglobal bag_number @text.word[1]
"/selectitem \"bag of kudzu seedlings <#" bag_number "\"\r"
message "the current bag is " bag_number "."
end if
else if @text.word[0] == "maxbag"
if @text.word[1] == "?"
message "*This variable is used to set how many kudzu bags you have on you."
message "the number of kudzu bags is " max_bag "."
end if
if @text.word[1] > 0
setglobal max_bag @text.word[1]
message "you number of kudzu bags is set at " max_bag "."
end if
else if @text.word[0] == "loc"
if @text.word[1] == ""
setglobal FallingAt ""
setglobal FallingLocSet 0
message fallingAt set with \"set loc\" to NADA
else if @text.word[1] == "list"
message fallingAt set with \"set loc\" to FallingAt
else
setglobal FallingAt ""
setglobal FallingAt @text
setglobal FallingLocSet 1
message fallingAt set with \"set loc\" to FallingAt
end if
else if @text.word[0] == "thankrandom"
if @text.word[1] == ""
setglobal ThankRandom 0
message "ThankRandom turned off"
else if @text.word[1] == "?"
if ThankRandom == 1
message "ThankRandom is currently on"
else
message "ThankRandom is currently OFF"
end if
else if @text.word[1] == "on"
setglobal ThankRandom 1
message "ThankRandom is currently on"
else if @text.word[1] == "off"
setglobal ThankRandom 0
message "ThankRandom is currently OFF"
else
// default without params is to turn ThankRandom ON
setglobal ThankRandom 1
message "ThankRandom is currently on"
end if
else if @text.word[0] == "infoexile"
if @text.word[1] == ""
setglobal InfoExile 0
message "InfoExile turned off"
else if @text.word[1] == "?"
if InfoExile == 1
message "InfoExile is currently on"
else
message "InfoExile is currently OFF"
end if
else if @text.word[1] == "on"
setglobal InfoExile 1
message "InfoExile is currently on"
else
// default without params is to turn InfoExile OFF
setglobal InfoExile 0
message "InfoExile is currently OFF"
end if
else if @text.word[0] == "feedback"
if @text.word[1] == "?"
message "Set feedback off macros to be <on|1> or <off|0>"
                      if messageStatus == 0
                          set feedback "off"
                      else if  messageStatus == 1
                          set feedback "on"
                      end if
                      message "feedback is " feedback
                             
else if @text.word[1] == "on"
setglobal messageStatus 1
                        message "feedback is on"
else if @text.word[1] == "off"
setglobal messageStatus 0
                else if @text.word[1] == "1"
setglobal messageStatus @text.word[1]
                        message "feedback is on"
else if @text.word[1] == "0"
setglobal messageStatus @text.word[1]
end if
else if @text.word[0] == "pie"
if @text.word[1] == "?"
message "Set the default pie target used by /pie, /pom"
message "Current target is " default_pie_target
else if @text.word[1] == ""
setglobal default_pie_target @selplayer.simple_name
message "New default pie target is: " default_pie_target
else
setglobal default_pie_target @text.word[1]
message "New default pie target is: " default_pie_target
end if
else
message "*The following variables are available to set using this command:"
pause 4
message "*verbose [0|1|?], longsleep [on|off|?]"
pause 4
message "feedback [1|0|on|off]"
pause 4
message "*clock, bag [(number)], maxbag (number), wh(isper) [on|off], debug [on|1|off|0]"
pause 4
message "loc [areaname], "thankrandom [on|off|?], infoexile [off|on|?]"
pause 4
message "pie [targetname or selected in playerlist|?]"
end if
 
label end
}
 
"noscan"
{
  setglobal scanBreak 1 //This alows you to stop this macro without stopping other macros
}
 
// Wait or sleep, by Phineas
 
setglobal zzToggle 0
 
"zz"
{
  if zzToggle == 1
message "zz - zzToggle=1"
setglobal zzToggle 0
  else if zzToggle == 0
message "zz - zzToggle=0"
setglobal zzToggle 1
setglobal sleepToggle 1
   end if
   end if
  message "type '/set ?' for optional settings"
call wait_routine
  }
}
 
"zzz"
"/whoami" call whoami
{
if zzToggle == 1
whoami
message "zzz - zzToggle=1"
{
setglobal zzToggle 0
if @my.simple_name == Healer[2]
else if zzToggle == 0
setglobal iAmAHealer 2
message "zzz - zzToggle=0"
setglobal healingDevice "Asklepian"
setglobal zzToggle 1
setglobal defaultritem "moonstone"
"\pose lie\r"
setglobal myWeapon "Roguewood club"
"\sleep\r"
"/unequip @my.right_item\r"
setglobal sleepToggle 1
"/equip " defaultritem "\r"
end if
call RC_thoomi_setup
call wait_routine
message "*Default:healmode:thoomi!*"
}
else if @my.simple_name == Healer[1]
 
setglobal iAmAHealer 1
wait_routine
setglobal healingDevice "Asklepian Staff"
{
setglobal defaultritem "moonstone"
label wr_01
setglobal myWeapon "cutlas"
//message "wait routine - top"
"/unequip @my.right_item\r"
if zzToggle == 1
call RC_thoomi_setup
pause 400
message "*Default:healmode:thoomi!*"
random
"/equip " defaultritem "\r"
{
else if @my.simple_name == Fighter[1]
message "wr - random -1- karma"
setglobal iAmAHealer 0
"\karma\r"
setglobal defaultritem "gossamer"
pause 100
setglobal myWeapon "gossamer"
or
"/unequip @my.right_item\r"
message "wr - random -1- money"
if @my.right_item != myWeapon
"\money\r"
"/equip " myWeapon "\r"
pause 100
end if
or
call RC_fighter_setup
message "wr - random -1- dreaming"
//call examinearmor
"\sleep \r"
else if @my.simple_name == Fighter[2]
pause 100
setglobal iAmAHealer 0
end random
setglobal defaultritem "Axe"
}
setglobal myWeapon "Axe"
goto wr_01
"/unequip @my.right_item\r"
end if
"/equip " myWeapon "\r"
message "*zz is Off"
else if @my.simple_name == Fighter[3]
}
setglobal iAmAHealer 0
setglobal defaultritem "Bloodblade"
setglobal myWeapon "Bloodblade"
"/unequip @my.right_item\r"
"/equip " myWeapon "\r"
call RC_purr_setup
end if
message "*Default: right hand item set to a " defaultritem "."
if iAmAHealer == 1
message "*healingDevice set to " healingDevice
call "RC_thoomi_setup"
else if iAmHealer == 0
message "* Your Weapon of choice is a" myWeapon
call "RC_fighter_setup"
end if
message "welcome " @my.simple_name
}
command-f2
{
setglobal ritem @my.right_item
message "ritem is: " ritem
if ritem == "nothing"
"/equip " defaultritem "\r"
else
setglobal rsaveitem ritem
"/unequip right\r"
end if
}
"/eps"
{
setglobal ritem @my.right_item
message "ritem is: " ritem
if ritem != "EtherealPortalStone"
setglobal rsaveitem ritem
"/equip etherealportalstone \r"
if @text.word[0] == "check"
message ***EPS Ready***
goto end
end if
end if
"/use\r"
label end
}
/* ***** QuickActions ***** */
"??"    "/help "      @text "\r"
"aa"    "/action "    @text "\r"
"ex" "excuse me\r"
"gg"    "/give "      @text "\r"
"ii"    "/info "      @text "\r"
"kk"    "/karma "      @text "\r"
"m" "/money "  @text "\r"
"mm"    "/money "      @text "\r"
"nn" "/narrate " @text "\r"
"np" "no problem\r"
"pp"    "/ponder "    @text "\r"
//"sh"    "/share "      @text "\r"  //removed for Shares.txt macro version
"sl"    "/sleep "      @text "\r"
"t"      "/think "      @text "\r"
//"tt"    "/thinkto "    @text "\r" //removed for Scanner.txt version
"th"    "/thank "      @text "\r"
"uu"    "/use "        @text "\r"
"un"    "/unshare "    @text "\r"
"w"      "/who "        @text "\r"
"wh"    "/whisper "    @text "\r"
"yy"    "/yell "      @text "\r"
"hehe" call lol
lol
{
if @my.name == "Purrfect"
"/action purrs " @text "\r"
else
"/action laughs " @text "\r"
end if
}
"heh" call lol
"/grats" call Grats
Grats
{
set xNumber @random
set xNumber % 20
if xNumber < 5
set xNumber 6
end if
message "*Congratulations in " xNumber "/5 Seconds."
pause xNumber
random
"/think Excellent!, Congratulations\r"
or
"/think Congrats!\r"
or
"/think Good Job!\r"
end random
}
/* ****** Push/Pull ***** */
F2 "/push " @splayer "\r"
//control-option-click "/push " @click.name "\r"
//* ***** QuickPoses ***** */
home "/pose angry \r"
help "/pose leanleft \r"
pageup "/pose akimbo\r"
option-pageup "/pose celebrate\r"
shift-option-pageup "/pose thoughtful\r"
pagedown "/pose seated \r"
option-pagedown "/pose kneel\r"
shift-option-pagedown "/pose bow \r"
pageright "/pose leanright\r"
option-right "/pose walkright\r"
command-right "/pose leanright\r"
shift-option-right "/pose angry\r"
pageleft "/pose leanleft\r"
command-left "/pose leanleft\r"
option-left "/pose surprise\r"
shift-option-left "/pose walkleft \r"
"sel" "/select "  @text "\r"
"u" "/use " @text "\r"
"ui" "/useitem " @text "\r"
"y" "/yell " @text "\r"
"yh" "/yell here! fallen \r"
"uuu" "/use " @splayer "\r"
"uuuu" "/use " @splayer "\r"
"unsh" "/unshare " @splayer "\r"
"wave" "/action waves \r"
"yawn" "/action yawns.\r"
"yybrb" "/yell Be right back\r"
"yye" "/yell East\r"
"yyn" "/yell North\r"
"yys" "/yell South\r"
"yyw" "/yell West\r"
"yret" "/yell Retreat!\r"
"yy>" "/yell East>>>\r"
"yy<" "/yell <<<West\r"
'>>>' "East>>>"
'<<<' "<<<West"
ArmUp
{
if @my.right_item != myWeapon
setglobal rItem @my.right_item
"/equip " myWeapon "\r"
"/options icon armed\r"
end if
}
ArmDown
{
if @my.right_item == myWeapon
"/equip " rItem "\r"
"/options icon unarmed\r"
end if
}
// modeVerbose is a global variable intended to be included in macros
// that have actions attached to them. place a test reading:
// "if modeVerbose == 1" before the actions
//non-optimized to add: message Variable and call Instruction
"/set"
{
if @text.word[0] == "?"
message "***The following variables are available to set using this command:"
pause 5
message "*verbose [0|1|?], longsleep [on|off|?]"
pause 5
message "*clock, bag [(number)], maxbag (number), wh(isper) [on|off], debug [on|1|off|0]"
pause 5
message "*feedback [on|1|off|0], tgn [number],* F1-2: pull/push, F5: chain "
pause 5
message "*[ranger] tr <name>,* escape: shieldstone, F4:heartwood,F11: sky bison "
message "***End Help***"
else if @text.word[0] == "verbose"
if @text.word[1] == "?"
message "* This variable sets whether or not to associate an \"/action\" or \"/narrate\" with a macro."
pause 20
message "\"1\" is on, \"0\" is off."
if modeVerbose == 0
message "*Verbose mode is off."
else
message "*Verbose mode is on."
end if
else
if @text.word[1] == 1
setglobal modeVerbose @text.word[1]
else if @text.word[1] == 0
setglobal modeVerbose @text.word[1]
else if @text.word[1] == "on"
setglobal modeVerbose 1
else if @text.word[1] == "off"
setglobal modeVerbose 0
else
message "Error: Verbose Mode must be set to 0|off|1|on."
goto end
end if
if modeVerbose == "1"
message "*Verbose mode: On."
else if modeVerbose == "0"
message "*Verbose mode: Off."
end if
end if
else if @text.word[0] == "debug"
if @text.word[1] == "?"
message "*This variable sets whether debugger messages are displayed when testing a macro."
pause 15
if debug == 0
message "*debug is off."
else
message "*debug mode is on."
end if
else if @text.word[1] == 1
setglobal debug @text.word[1]
else if @text.word[1] == 0
setglobal debug @text.word[1]
else if @text.word[1] == "on"
setglobal debug 1
else if @text.word[1] == "off"
setglobal debug 0
else
message "Error: Debug Mode must be set to 0 or 1, or off and on."
goto end
end if
message "debug is set to: " debug
else if @text.word[0] == "longsleep"
if @text.word[1] == "?"
message "*This variable is used to toggle the long sleep macro \"on\" and \"off\"."
if longsleep == 0
message "*longsleep is off."
else
message "*longsleep is on."
end if
else if @text.word[1] == "off"
setglobal longsleep 0
message "*longsleep is off."
else if @text.word[1] == "on"
setglobal longsleep 1
message "*longsleep is on."
else if if @text.word[1] == 0
setglobal longsleep 0
message "*longsleep is off."
else if if @text.word[1] == 1
setglobal longsleep 1
message "*longsleep is on."
end if
else if @text.word[0] == "bag"
if @text.word[1] == "?"
message "*This variable is used to select a bag number to use for kudzu planting."
message "the current bag is " bag_number "."
end if
if @text.word[1] > 0
setglobal bag_number @text.word[1]
"/selectitem \"bag of kudzu seedlings <#" bag_number "\"\r"
message "the current bag is " bag_number "."
end if
else if @text.word[0] == "maxbag"
if @text.word[1] == "?"
message "*This variable is used to set how many kudzu bags you have on you."
message "the number of kudzu bags is " max_bag "."
end if
if @text.word[1] > 0
setglobal max_bag @text.word[1]
message "you number of kudzu bags is set at " max_bag "."
end if
else if @text.word[0] == "feedback"
if @text.word[1] == "?"
message "*This variable sets whether some macros give feedback as to their status."
pause 15
if feedback == 0
message "*feedback is off."
else
message "*feedback is on."
end if
else if @text.word[1] == 1
setglobal feedback @text.word[1]
else if @text.word[1] == 0
setglobal feedback @text.word[1]
else if @text.word[1] == "on"
setglobal feedback 1
else if @text.word[1] == "off"
setglobal feedback 0
else
message "Error: Debug Mode must be set to 0 or 1, or off and on."
goto end
end if
message "feedback is set to: " feedback
else if @text.word[0] == "tgn"
if @text.word[1] == ""
setglobal thankTarget 1
else
setglobal thankTarget @text.word[1]
end if
call WhoAmIThanking
else
setglobal @text.word[0] @text.word[1]
message @text.word[0] " is " @text.word[1]
end if
label end
}
include "RC2.txt"
</pre>
</pre>



Latest revision as of 13:54, 21 October 2024

Description[edit]

  • An alternate default which incorporates global variables so main items are set in this area vice being set in individual macro files - e.g. Sunstone.

Dependencies[edit]

Usage[edit]

  • Save code section into file called Default in your clanlord/data/macros folder.

Noteworthy techniques[edit]

  • Usage of SET function to set variables, on the fly while clanning without having to reload macros.
  • Usage of Global Variables to allow define once, use everywhere.
    • Avoids the hassle of editing macros to change an item to it's upgraded variant everywhere that item is referrred to.
  • All key/mouse actions defined centrally.
    • Requires called macro be defined in an included file.
    • Requires that no key/mouse actions be defined in any other file.
    • Makes it simple to figure out which keys you have not assigned yet.
  • Single scan/loop - to prevent conflicting never ending loops.
    • NOW INCLUDES: Raul's readtext trainer messages to prevent overlap.
  • Automatic idle startup.
    • Some things will still kill it, so to restart, reload macros (CTRL+R).
  • Moved all but global procedures out of default into dedicated files to clean up default and avoid the feeling that you are swimming through an encyclopedia.

Credits[edit]

  • DragonHawk - AwakeAFK
  • Gorvin - Shares
  • Inu - Random thank, single instance definitions, integration of various other macros into this Alternate Default, moving stuff not required for scanner/set global into their own dedicated file.
  • Kiriel D'Sol - Directions
  • Noivad - Moneycount, Omega_Zu, Quickchain, Sunstone, tc_macro,
  • Phineas - idle
  • Raul - Readtext (trainer messages)
  • Torin - Exilepicker

Code[edit]

//------------------------------------------------
// default
//------------------------------------------------
// This macro file is included for every character by default.
// Use it for general macros that you want available to all characters.
  
include "abbreviations.mac"
include "dances.mac"
include "directions.mac"
include "funactions.mac"
include "omega_zu.mac"
include "readtext.mac" 
include "shares.mac"
include "sunstone.mac"
include "tc_macro.mac"
include "quickchain.mac"
include "manticore.mac"
include "keys.mac"
include "moneycount.mac"
  
@login 
{
	//::::::::::::::::::::::::::::::::::::::::::::::::
	// Global Variables Defined
	//::::::::::::::::::::::::::::::::::::::::::::::::
	// 20071229-inu: Moved out of abbreviations.mac & tc_macro.mac
	setglobal   NumZuBags	2	// the number of kudzu bags you carry, for some reason that scanner is in here
	setglobal   ThankRandom 1	// turns on thank random routine at startup for use with idle routine
	setglobal   scanBreak 	0 	// Enables scanner to run continuously.
	setglobal   InfoExile 	0	// Turns off exile info by default in AFK macro called on login, set can change it.
	setglobal   MySunStone  sungem	// Set this to your sunstone, used in sunstone and tc_macro.
	setglobal   IdleTime 	100	// Set this to the desired pause time for idle macro (every 4 = 1 second approximately)
	setglobal   default_pie_target	"DragonHawk"  //Used by Pie-O-Matic in funactions.mac
	setglobal   weapon_of_choice	"moonstone"   //Used by Quickchain.mac to re-equip default right hand item.
  
	call MoneyCount
	call GoScan
}
	
//::::::::::::::::::::::::::::::::::::::::::::::::
// Function key macros
//::::::::::::::::::::::::::::::::::::::::::::::::
// This allow all key based macros to be called from here. 
// Makes it easier to track which keys are used for which macros.
//
// F1 - embedded pull
// F2 - embedded push
// F3 - to moonstone.mac
// F4 - to moonstone.mac
// F5 - to quickchain.mac
// F6 - to omega_zu.mac
  
f1			"/pull " @splayer "\r"
f2			"/push " @splayer "\r"
f3 			call itemswap		//f3 switches between an item and your moonstone,
shift-f3 		call itemswap2		//When switching to the moonstone, you get a quick burst
control-F3 		call ultcad
control-shift-F3 	call ultcad2
f4 			call cadswap
f5 			call flybychain
f6			call zu-stuff
shift-f6		call zu-add
ctrl-f6			call zu-remove

// Other keys
control-click2		call click-action 	// Quickchain.mac -- Needs to be reviewed, problematic.
click3 			"/thank " @selplayer.simple_name  "\r"
control-click		"/pull " @click.name "\r"
control-shift-click	"/push " @click.name "\r"
control-tab		setglobal mStop 1
// wheelup 		call flybychain        // highly recommend against assigned anything to wheel up nor down
// wheeldown		call DHAwakeAFK        // unless you have a clicky wheel.  Using this with a smooth 
                                               // scrolling mouse is not something to try, 
                                               // use as you will have multiple calls to same macro. chain break!
click4			message ==> TESTING    // New mice have more than 3 buttons.

//::::::::::::::::::::::::::::::::::::::::::::::::
// Macros called from login are defined here
//::::::::::::::::::::::::::::::::::::::::::::::::
//
//------------------------------------------------
// Torin's Exile Picker Macro
//------------------------------------------------
// Picks a random exile
// 20080129-inu: Fixed to stop picking myself.

"/pick" call ExilePicker
//
ExilePicker
{
	set numPlayers 0
	"/select " @last "\r"
	set lastExile @selplayer.simple_name
	"/select " @first "\r"
	set Exile[1] @selplayer.simple_name
	if @selplayer.simple_name == lastExile
	  set numPlayers 1
	  goto ranPicker
	end if
	set exileCounter 1
  
	label exileCountLoop
	  "/select " @next "\r"
	  set exileCounter + 1
	  set Exile[exileCounter] @selplayer.simple_name
	  if @selplayer.simple_name == lastExile
	    set numPlayers exileCounter
	    goto ranPicker
	  end if
	goto exileCountLoop
  
	label ranPicker
	  set ranPick @random
	  set ranPick % numPlayers
	  set ranPick + 1
	  set testexile Exile[ranPick]
	  if testexile == @my.simple_name
		set ranPick +1
	  end if
	  setglobal randomExileClanning Exile[ranPick]
	  "/select " randomExileClanning "\r"
	label endexilepicker
}
  
//------------------------------------------------
// GoScan and Scanner macros (Noivad's + ?)
//------------------------------------------------
"goscan" call GoScan
GoScan
{
	set @env.key_interrupts false //when you start you want it to loop
	set @env.click_interrupts false //these two lines makes sure it doesn't shut off
	if messageStatus == 1
		message "Scanner On:"
		pause 8
	end if
	if @text == "?"
		message "Type \"/t?\" to find the target."
		pause 8
		message "Type \"/ts <name> [text]\" sets the target and sends them a message if you include one."
		pause 8
		message "Type \"/set feedback [1|0|on|off]\" to toggle feedback on|off."
		pause 8
		message "Type \"noscan\" to stop GoScan and DHAwakeAFK."
	end if
		"/pose lie\r"
		if @my.name == "Inu Teisei"
			"/action naps like DH \r"
		else
			"/action is sleeping \r"
		end if
		message **Idling with anti time-out active.
	call Scanner
}
  
//------------------------------------------------
// Scanner Macro (Noivad's + ?)
//------------------------------------------------
Scanner
{
  // Rev 2.0
  // RevLog: 
  // 	20071231-inu: Integrated DH's AwakeAFK macro with this scanner to avoid problems and auto call on login
  //	20080128-inu: Removed excessive pause in integrated DHAwakeAFK integrated counter instead. 
  //		      Integrated Raul's trainer message reader.

  set IdleCount 0
  label scanTop
	pause 1
	if scanBreak == 1
		goto scanEnder
	else
		//------------------------------------------------
		// BEGIN: Scan for Text Section
		//------------------------------------------------
		set scanText @env.textLog
		if scanText.word[0] < "/"
			setglobal timeStamps 3
			setglobal playerName 2
			setglobal me 6
		else
			setglobal timeStamps 1
			setglobal playerName 0
			setglobal me 3
		end if
		if scanText.word[timeStamps] == "thinks" //with timestamps[3] w/o [1]
			if scanText < "thinks to you, \""
				if ssTarget != scanText.word[playerName] //w/timestamps[2] w/o[0]
					if scanText.word[playerName] != @my.name		
						setglobal ssTarget scanText.word[playerName]
					setglobal feedback 1 //turn on feedback for new target
					pause 4
					set IdleCount + 4
					end if
				end if
				if messageStatus == 1 //this controls overall feedback
					//This if block turns off feedback when the target hasn't changed
					if feedback == 1					
						message "/tl target: " ssTarget 
						setglobal feedback 0 	
					end if
				end if	
			end if
		else if scanText < "Captain Barnac asks, \"Ah, "
			set namePer @my.name 
			set namePer + "."
			if scanText.word[me] == namePer
				pause 1
				set IdleCount + 1
				"yes\r"
			end if
		else if scanText < "Paul Deckand asks, \"Ah, "
			set namePer @my.name 
			set namePer + "."
			if scanText.word[me] == namePer
				pause 1
				set IdleCount + 1
				"yes\r"
			end if
		else if scanText < "Fird Lirden asks, \"Ah, "
			set namePer @my.name 
			set namePer + "."
			if scanText.word[me] == namePer
				pause 1
				set IdleCount + 1
				"yes\r"
			end if
		else if scanText < "* You don't have anything like that"
			if bag_number < NumZuBags 
				setglobal bag_number + 1
				message "*bag set to " bag_number
				"/equip bag of kudzu seedlings " bag_number "\r"
			else if bag_number > NumZuBags
				setglobal bag_number 1
				"/equip bag of kudzu seedlings " bag_number "\r"
			end if
			pause 8
			set IdleCount + 8
		else if scanText < "You have no 'bag of kudzu seedlings"
			setglobal bag_number 1
			"/equip bag of kudzu seedlings " bag_number "\r"
		else 
			pause 1
			set IdleCount + 1
		end if	
		//------------------------------------------------
		// END: Scan for Text Section
		//------------------------------------------------
		// START: DHAwakeAFK integration
		//------------------------------------------------
		// Credits: Idle and awakeafk macros by DragonHawk
		// Adding Idle macro to this one big loop to stop possible conflicts between the two
		if IdleCount > IdleTime		// Only execute this part one time per IdleTime period
			random
				message ::** ThankRandomExile **::
				if ThankRandom == 1
					call ExilePicker
					"/karma " randomExileClanning " \r"
					"/thank " randomExileClanning " **Yay! You won the thank lottery! ;p \r"
				end if
				"/pose stand se \r"
			or
				message ::** CheckMoney **::
				"/money \r"
				if InfoExile == 1
					"/info " randomExileClanning " \r"
				end if
				"/pose thoughtful \r"
			or
				message ::** InfoRandomExile **::
				"/pose stand \r"
				"/pose sit "
				if InfoExile == 1
					"/info " randomExileClanning " \r"
				end if
			end random
			"/karma \r"
			set IdleCount 0
		end if
		set IdleCount + 1
		//------------------------------------------------
		// END: DHAwakeAFK integration
		//------------------------------------------------
		// START: Readtext.mac by Raul integration
		//------------------------------------------------
			setglobal gtrainerPhrase scanText
			call rankcount
		//------------------------------------------------
		// END: Readtext.mac - trainer message by Raul integration
		//------------------------------------------------
		goto scanTop
	end if  // Scanner Loop
	label buggy			//After time some infinite loops run away
	Message "Bug Detected:"		//on you. So, I place these messages
	pause 2				//in to let you know if the macro
	Message "**Use <CTRL>-TAB to halt***"		//has jumped out of the regular loop
	pause 120			//<--gives you time to escape the loop. 
  
	label scanEnder
	if messageStatus == 1
		message "Scanner Off"
	end if
	set @env.key_interrupts true	//Kludges to try to stop a run away macro
	set @env.click_interrupts true	//Kludges
	pause 300			//Kludges
}
  
//------------------------------------------------
// Global SET macro (Noivad's + ?)
//------------------------------------------------
"/set" //non-optimized to add: messageVariable and call InstructionMessages
{
	if @text.word[0] == "verbose"
		if @text.word[1] == "?"
			message "* This variable sets whether or not to associate an \"/action\" or \"/narrate\" with a macro."
			pause 16
			message "\"1\" is on, \"0\" is off."
			if modeVerbose == 0
				message "*Verbose mode is off."
			else
				message "*Verbose mode is on."
			end if
		else 
			if @text.word[1] == 1
				setglobal modeVerbose @text.word[1]
			else if @text.word[1] == 0
				setglobal modeVerbose @text.word[1]
			else
				message "Error: Verbose Mode must be set to 0 or 1."
				goto end
			end if
			if modeVerbose == "1"
				message "*Verbose mode: On."
			else if modeVerbose == "0"
				message "*Verbose mode: Off."
			end if
		end if
	else if @text.word[0] == "debug"
		if @text.word[1] == "?"
			message "*This variable sets whether debugger messages are displayed when testing a macro."
			pause 12
			if debug == 0
				message "*debug is off."
			else
				message "*debug mode is on."
			end if
		else if @text.word[1] == 1
				setglobal debug @text.word[1]
		else if @text.word[1] == 0
				setglobal debug @text.word[1]
		else if @text.word[1] == "on"
				setglobal debug 1
		else if @text.word[1] == "off"
				setglobal debug 0
		else
				message "Error: Debug Mode must be set to 0 or 1, or off and on."
				goto end
		end if
		message "debug is set to: " debug
	else if @text.word[0] == "longsleep"
		if @text.word[1] == "?"
			message "*This variable is used to toggle the long sleep macro \"on\" and \"off\"."
			if longsleep == 0
				message "*longsleep is off."
			else
				message "*longsleep is on."
			end if
		else if @text.word[1] == "off"
			setglobal longsleep 0
			message "*longsleep is off."
		else if @text.word[1] == "on"
			setglobal longsleep 1
			message "*longsleep is on."
		end if
	else if @text.word[0] == "bag"
		if @text.word[1] == "?"
			message "*This variable is used to select a bag number to use for kudzu planting."
			message "the current bag is " bag_number "."
		end if
		if @text.word[1] > 0
		setglobal bag_number @text.word[1]
		"/selectitem \"bag of kudzu seedlings <#" bag_number "\"\r" 
		message "the current bag is " bag_number "."
		end if
	else if @text.word[0] == "maxbag"
		if @text.word[1] == "?"
			message "*This variable is used to set how many kudzu bags you have on you."
			message "the number of kudzu bags is " max_bag "."
		end if
		if @text.word[1] > 0
			setglobal max_bag @text.word[1]
			message "you number of kudzu bags is set at " max_bag "."
		end if
	else if @text.word[0] == "loc"
		if @text.word[1] == ""
			setglobal FallingAt ""
			setglobal FallingLocSet 0
			message fallingAt set with \"set loc\" to NADA
		else if @text.word[1] == "list"
			message fallingAt set with \"set loc\" to FallingAt 
		else
			setglobal FallingAt ""
			setglobal FallingAt @text
			setglobal FallingLocSet 1
			message fallingAt set with \"set loc\" to FallingAt
		end if
	else if @text.word[0] == "thankrandom"
		if @text.word[1] == ""
			setglobal ThankRandom 0
			message "ThankRandom turned off"
		else if @text.word[1] == "?"
			if ThankRandom == 1
				message "ThankRandom is currently on"
			else
				message "ThankRandom is currently OFF"
			end if
		else if @text.word[1] == "on"
			setglobal ThankRandom 1
			message "ThankRandom is currently on"
		else if @text.word[1] == "off"	
			setglobal ThankRandom 0
			message "ThankRandom is currently OFF"
		else
			// default without params is to turn ThankRandom ON
			setglobal ThankRandom 1
			message "ThankRandom is currently on"
		end if
	else if @text.word[0] == "infoexile"
		if @text.word[1] == ""
			setglobal InfoExile 0
			message "InfoExile turned off"
		else if @text.word[1] == "?"
			if InfoExile == 1
				message "InfoExile is currently on"
			else
				message "InfoExile is currently OFF"
			end if
		else if @text.word[1] == "on"
			setglobal InfoExile 1
			message "InfoExile is currently on"
		else
			// default without params is to turn InfoExile OFF
			setglobal InfoExile 0
			message "InfoExile is currently OFF"
		end if
	else if @text.word[0] == "feedback"
		if @text.word[1] == "?"
			message "Set feedback off macros to be <on|1> or <off|0>"
                       if messageStatus == 0
                           set feedback "off"
                       else if  messageStatus == 1
                           set feedback "on"
                       end if 
                       message "feedback is " feedback
                               
		else if @text.word[1] == "on"
			setglobal messageStatus 1 
                        message "feedback is on"
		else if @text.word[1] == "off"
			setglobal messageStatus 0 
                else if @text.word[1] == "1"
 			setglobal messageStatus @text.word[1] 
                        message "feedback is on"
		else if @text.word[1] == "0"
			setglobal messageStatus @text.word[1] 
		end if		
	else if @text.word[0] == "pie"
		if @text.word[1] == "?"
			message "Set the default pie target used by /pie, /pom"
			message "Current target is " default_pie_target
		else if @text.word[1] == ""
			setglobal default_pie_target @selplayer.simple_name
			message "New default pie target is: " default_pie_target
		else
			setglobal default_pie_target @text.word[1]
			message "New default pie target is: " default_pie_target
		end if
	else
		message "*The following variables are available to set using this command:"
		pause 4
		message "*verbose [0|1|?], longsleep [on|off|?]"
		pause 4
		message "feedback [1|0|on|off]"
		pause 4
		message "*clock, bag [(number)], maxbag (number), wh(isper) [on|off], debug [on|1|off|0]"
		pause 4
		message "loc [areaname], "thankrandom [on|off|?], infoexile [off|on|?]"
		pause 4
		message "pie [targetname or selected in playerlist|?]"
	end if
  
	label end
}
  
"noscan"
{
  setglobal scanBreak 1	//This alows you to stop this macro without stopping other macros
}
  
// Wait or sleep, by Phineas
  
setglobal zzToggle 0
  
"zz"
{
  if zzToggle == 1
	message "zz - zzToggle=1"
	setglobal zzToggle 0
  else if zzToggle == 0
	message "zz - zzToggle=0"
	setglobal zzToggle 1
	setglobal sleepToggle 1
  end if
	call wait_routine	
}
  
"zzz"
{
	if zzToggle == 1
		message "zzz - zzToggle=1"
		setglobal zzToggle 0
	else if zzToggle == 0
		message "zzz - zzToggle=0"
		setglobal zzToggle 1
		"\pose lie\r"
		"\sleep\r"
		setglobal sleepToggle 1
	end if
	call wait_routine
}
  
wait_routine
{
	label wr_01
	//message "wait routine - top"
	if zzToggle == 1
		pause 400
		random
		{
			message "wr - random -1- karma"
			"\karma\r"
			pause 100
			or
			message "wr - random -1- money"
			"\money\r"
			pause 100
			or
			message "wr - random -1- dreaming"
			"\sleep \r"
			pause 100
		end random
		}
		goto wr_01
	end if
	message "*zz is Off"
}

Revisions[edit]

  • v1.0 2008012x-inu: posted.
  • v1.1 20080128-inu: Fixed errors
  • v2.0 20080128-inu: Revamped to remove excessive idle pause and integrate Raul's Trainer messages. Also by removing excessive pause in integrated DHAwakeAFK part of scanner, eliminated one way fogginess (where everything keeps moving except you).
  • v2.1 20080129-inu: Added recommended movement of Raul's readtext.mac back to separate file while still integrating into the main scanner loop via a call as recommended by ?.
  • v2.1.1 20080129-inu: Added pie-o-matic global default pie target variable. Fixed ExilePicker to exclude currently clanning character.

Links[edit]