ThankGroup: Difference between revisions

From CLUMP
Jump to navigationJump to search
m (v2.1.7 fix for increment not working)
(— NEW version of Shares.txt)
Line 1: Line 1:
  /*-----------------------------------------------------------------------------
  /* -----------------------------------------------------------
          | shareMultiple Version 1.0.1 | ThankGroup Version 2.1.7 |
  | shareMultiple Version 1.1.2 | ThankGroup Version 2.5.2 |
--------------------------------- Description ---------------------------------
  --------------------- Description ---------------------------
Shares is an expansion of the default /share command to accept multiple names, to speed sharing and thanking groups of people.
  Shares is an expansion of the default /share command to accept multiple names, to ease sharing and thanking groups of people.
----------------------------------- Usage -------------------------------------
  --------------------- Usage ---------------------------------
##### type "/th?" for online help
  ##### type "/th?" for online help
just type in:
  type:
sh [name*] [name] [name] [name] [name]
  sh [name*] [name] [name] [name] [name]
to share up to you maximum number of people.
  to share up to your maximum number of people.
*You can type partial names as you can with the default share command. do not use spaces for exiles with two a first and last name. (i.e. Elenis Reyav could be "Elenis", "ElenisReyav" or even "Elen".
  *You can type partial names as you can with the default share command.
----------------------------------- Setup -------------------------------------
 
  /ths
  to build thank list of shares in and out
 
  /tn
  to thank the next person on the list
 
  /ath
  to automatically thank and set through the list
  ---------------------- Setup --------------------------------
  Add the line below to your default macro file:
  include "Shares.txt"
 
   Note: to work properly you might have to remove the line
   Note: to work properly you might have to remove the line
   "sh" "/share " @text "\r" from your default macros file.
   "sh" "/share " @text "\r" from your default macros file.
   or you can use other built in triggers:
   or you can use other built in triggers:
   "shm" & "/shm"
   "shm" & "/shm"
   //All Platforms: Add the line below to your default macro file:
   -------------------- Feedback/Info --------------------------
include "shares.mac"
  This macro makes a list of people to thank numerous ways. Then you can call the AutoThank if you want to thank a person every 4 minutes (set with "delay" global. the delay by default is just over 4 minutes, 1200 Frames).
-------------------------------- Feedback/Info --------------------------------
 
This macro makes a list of people to thank numerous ways. Then you can call the AutoThank if you want to thank a person every 5 minutes (set with "delay" global. the delay by default is just over 5 minutes, 1200 Frames).
  The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.
 
The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.
  ** Thank Options controls several options. including just a number ("/tho 3") will set the person at that position in the list (3 in this case) as the next exile to thank. With "debug" set to 0 or 1 it will allow debug messages to show up and allow you to load a default list of people to thank into the ThankGroup by activating the default share shortcut,"sh", which you can set in listA below. With the "off" option  ("/tho off") it turns off the AutoThank loop.
 
*ThankRandom will clear your thank list with "new" and append people to the random pool with "add" So "/thr new" or "/thr add" modifies the list, while just the default "/thr" thanks someone in the list without altering it.
  *The v.2.1.3 comment format is as follows:
  <<m_macroname>> (default trigger|s <required text> [optional text]) short description.
** Thank Options controls several options. including just a number ("/tho 3") will set the person at that position in the list (3 in this case) as the next exile to thank. With "debug" set to 0 or 1 it will allow debug messages to show up and allow you to load a default list of people to thank into the ThankGroup by activating the default share shortcut,"sh", which you can set in listA below. With the "off" option  ("/tho off") it turns off the AutoThank loop.
  ** the single less than some text and greater than denotes strings so when you see "/thg [message]"
  ** the vertical bar "|" is used to denote valid options (arguments) the macro accepts
*The v.2.1.3 comment format is as follows:
  ** all macros are prefixed with "m_" in the file for quick searching and avoiding false hits from "call <macro>"
<<m_macroname>> (default trigger|s <required text> [optional text]) short description.
  ** global variable have their type & [:specific function] in tech speak
** the single less than some text and greater than denotes strings so when you see "/thg [message]
  along with a short description
** the vertical bar "|" is used to denote valid options (arguments) th macro accepts
 
** all macros are prefixed with "m_" in the file for quick searching and avoiding false hits from "call <macro>"
  If you find any bugs or have suggestions, contact noivad either in game or
** global variable have their type & [:specific function] in techspeak
  at his mac dot com address. This macro is "/Thank-ware."
along with a short description
  ------------------ Version Change Notes ---------------------
  v. 2.1.2 "ThankRandom" was added by request of Rroot (REMOVED 2.5)
I wrote this macro long ago, thus it is not optimized and could be written much
  v.2.1.3 *fixed a small bug that threw an error, but didn't stop the macro
better, but it works pretty well. It was actually multiple macros that I pulled together on 12/18/2011. So initial release is shareMultiple 1.0.1 & ThankGroup 2.1.2.
  *Added <<tags>> to functions and comments
  *Added ThankHelp macro
If you find any bugs or have suggestions, contact noivad either in game or
  v.2.1.4 Added ability to remove a person from the list with /thgc <number>
at his mac dot com address. This macro is "/Thank-ware."
  *Added ThankGroup Help "/thh" or "/thgh"
----------------------------- version change notes -----------------------------
  v2.1.5 bug fixes to list behavior broken in 2.1.4 feature addition
v. 2.1.2 "ThankRandom" was added by request of Rroot
  v.2.1.6-7 bug fix for increment not working.
v.2.1.3 *fixed a small bug that threw and error, but didn't stop the macro
  v2.3 fixes moveUp bug. ThankRandom is Broken & has been
*Added <<tags>> to functions and comments
  v.2.5.x & 1.1.2 won't add people that are already on list
*Added ThankHelp macro
 
v.2.1.4 Added ability to remove a person from the list with /thgc <number>
  ----------------------------------------------------------- */
*Added ThankGroup Help "/thh" or "/thgh"
v2.1.5 bug fixes to list behavior broken in 2.1.4 feature addition
v.2.1.6-7 bug fix for increment not working.
  -----------------------------------------------------------------------------*/
  /****** Share Triggers ******/
  /****** Share Triggers ******/
  "sh" call shareMultiList //changes /share to add multiple people
  "sh" call shareMultiList //changes /share to add multiple people
Line 55: Line 62:
   
   
  /****** Thank Group Triggers ******/
  /****** Thank Group Triggers ******/
"/moveup" call moveUp //removes players who are now offline
  "/th?" call ThankHelp //Online ThankGroup command help
  "/th?" call ThankHelp //Online ThankGroup command help
  "/ath" call AutoThank //Starts an Automatic thank loop | "off" to stop
  "/ath" call AutoThank //Starts an Automatic thank loop | "off" to stop
Line 64: Line 72:
  "/thgc" call ClearThankGroup //Clears out ThankGroup
  "/thgc" call ClearThankGroup //Clears out ThankGroup
  "/thgh" call ThankHelp //Online ThankGroup command help
  "/thgh" call ThankHelp //Online ThankGroup command help
"/thgm" call ThankMessage //sets the message given with karma
"/thm" call ThankMessage
  "/thh" call ThankHelp //Online ThankGroup command help
  "/thh" call ThankHelp //Online ThankGroup command help
  "/thn" call ThankNext // Thanks next person in the list
  "/thn" call ThankNext // Thanks next person in the list
  "/tho" call ThankOptions // see ** Above or {{m_ThankOptions}} below
  "/tho" call ThankOptions // see ** Above or {{m_ThankOptions}} below
  "/thr" call ThankRandom // See * Above
  //"/thr" call ThankRandom // BROKEN: See * Above
  "/ths" call ThankSharers //loads shares into thank list
  "/ths" call ThankSharers //loads shares into thank list
  "/tn" call ThankNext //Thanks the next person on list
  "/tn" call ThankNext //Thanks the next person on list
   
   
/*Edit this list with to up to 5 exiles you like to share with automatically. Do Not include spaces. Note will only work with debug = 1 set with ThankOptions "/tho debug 1" */
  set debug 0 //<<debug>> (bool:toggle) turns on and off debugging
  set debug 0 //<<debug>> (bool:toggle) turns on and off debugging
  set modeverbose 1 //first trigger will remind people how to use. set to 0 to turn off
  set modeverbose 1 //first trigger will remind people how to use. set to 0 to turn off
  set theMessage " Thank you " //<<EditMe>> your default message
  set theMessage " Thank you " //<<EditMe>> your default message
  set myThankGroup[0] "" //<<EditMe>> to initialize <myTG>
  set myThankGroup[0] "" //in case thankTarget is set to 0
   
   
  /* -------- Do not Edit below this line if not Familiar with Macros -------- */
  /* - Do not Edit below this line if not Familiar with Macros - */
   
   
  set slotG 1 //<<slotG>> (int:index) is the pointer for the list
  set slotG 1 //<<slotG>> (int:index) is the pointer for the list
Line 83: Line 92:
  set thankTarget 1 //internal current index
  set thankTarget 1 //internal current index
  set thankTotal 0 //<<thankTotal>> (int:sum) <<!=DO_NOT_EDIT>> {?}Number in list
  set thankTotal 0 //<<thankTotal>> (int:sum) <<!=DO_NOT_EDIT>> {?}Number in list
//myThankGroup <<myTG>> (arr) list of exiles to thank
  set ATH 0 //<<ATH>> (bool:toggle) controls automatic thanking
  set ATH 0 //<<ATH>> (bool:toggle) controls automatic thanking
  set delay 1201 //<<delay>> (int:timer) controls pause between  {{m_AutoThank}}
  set delay 1201 //<<delay>> (int:timer) controls pause between  {{m_AutoThank}}
Line 89: Line 97:
  set ent 0
  set ent 0
  set initSwitch 0
  set initSwitch 0
  set debug 1 //for troubleshooting
  set listA "Talin Silky Klur Natas Shadowfire" //EDIT to your friends
  /* ************************** shareMultiple v1.0.1 ************************** */
  /* *************** shareMultiple v1.1.2 ******************* */
   
   
  //<<m_shareMultiList>> (sh|/shm|shm <name> [name]) shares & adds to list
  //<<m_shareMultiList>> (sh|/shm|shm <name> [name]) shares & adds to list
  shareMultiList
  shareMultiList
  {
  {
  setglobal ht[sh] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list (i.e. 'sh Creed ElenisReyav Var Talin Lorikeet')"
  setglobal ht[sh] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
  setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list (i.e. 'sh Creed ElenisReyav Var Talin Lorikeet')"
  setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
  if slotG < 1
  if slotG < 1
   setglobal slotG 1
   setglobal slotG 1
  end if
if initSwitch == 1
goto END
  end if
  end if
  setglobal count 0
   
if debug == 1
  if @text != ""
pause 2
  set count 0
message "Loading Friend Online"
  label LOOP
call BuildDefault
  if count <= @text.num_words
  else if @text == ""
  "/select " @text.word[count] " \r"
  "/share\r"
if @selplayer.simple_name == ""
else
set count + 1
  label LOOPB
goto LOOP
  if count < @text.num_words
  end if
  "/share "   @text.word[count] "\r"
"/share "  @selplayer.simple_name " \r"
  setglobal myThankGroup[slotG] @text.word[count]
  if debug == 1
  if debug == 1
  pause 1
  message "*attempted share with " @text.word[count] " in LOOP"
  message "*" myThankGroup[slotG] " added to thankgroup."
end if
pause 1
if "No player named " < @env.textLog
set count + 1
goto LOOP
end if
set i 1
LABEL COMPARELOOP
//ADDED 20220625 EXPERIMENTAL
if myThankGroup != ""
  //message "myThankGroup:" myThankGroup
if myThankGroup < @selplayer.simple_name
message @selplayer.simple_name "in myThankGroup"
end if
  end if
  end if
  set count + 1
  //ABOVE ADDED
setglobal slotG + 1
setglobal thankTotal + 1
if myThankGroup[i] ==  @selplayer.simple_name
pause 20
message "* "  @selplayer.name " already in list SKIPPING"
goto LOOPB
  set count + 1
  goto LOOP
  else
  if i < thankTotal
  set i + 1
  goto COMPARELOOP
  end if
  setglobal myThankGroup[slotG] @selplayer.simple_name
  pause 1
  if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group."
end if
  setglobal slotG + 1
  setglobal thankTotal + 1
  if count < @text.num_words
  set count + 1
  end if
  pause 25
  goto LOOP
  end if
  end if
  end if
else
"/share\r"
  end if
  end if
  label END
  label END
  }
  }
   
   
  /***************************** Thank Group v2.1.7 *****************************/
  /******************* Thank Group v2.5.2 *******************/
   
   
  //<<m_ThankGroup>> (/thg [message]) Thanks exile|s in list (activates AutoThank)
  //<<m_ThankGroup>> (/thg [message]) Thanks exile|s in list (activates AutoThank)
Line 136: Line 176:
  setglobal ht[thg] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
  setglobal ht[thg] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
  setglobal ht[2] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
  setglobal ht[2] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
if initSwitch == 1
goto END
end if
   
   
  if @text == "reset"
  if @text == "reset"
Line 148: Line 185:
  else if @text == ?
  else if @text == ?
   message thga
   message thga
  message theMessage
  else
  else
  if @text != ""
  if @text != ""
Line 160: Line 198:
   
   
  //<<m_AddToThankGroup>> (/thga <name> [name]) adds exile|s to list
  //<<m_AddToThankGroup>> (/thga <name> [name]) adds exile|s to list
/*To do: add gorvin's scanned for if a person is already on the list to the macro. (Gorvin gave permission on 20120325 during Crypt hunt: Thanks G!)*/
  AddToThankGroup
  AddToThankGroup
  {
  {
  setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
  setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
  setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
  setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
  if initSwitch == 1
  set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
goto END
set slot 0 //must start one less than total to add
end if
  set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
  setglobal slot 0 //must start one less than total to add
   if debug == 1
   if debug == 1
   message "slotG=" slotG
   message "slotG=" slotG
   end if
   end if
   if @text == ?
   if @text == ?
  message ht[thga]
  message ht[thga]
   end if
   end if
   label addloop
   label ADDLOOP
   if slot < num_people
   if slot <= num_people
setglobal myThankGroup[slotG] @text.word[slot]
  "/select " @text.word[slot] "\r"
if debug == 1
  if debug == 1
message "*myThankGroup[" slotG "]=" myThankGroup[slotG]
  message  "@selplayer.simple_name: " @selplayer.simple_name
  end if
  pause 1
  if @env.textLog < "No player named "
  if debug == 1
message  "* " @text.word[slot] " NOT FOUND"
end if
  set slot + 1
  goto ADDLOOP
  else if @selplayer.simple_name == ""
  if debug == 1
  message "* " @text.word[slot] " EMPTY"
  end if
  set slot + 1
  goto ADDLOOP
  else
  set i 0
  LABEL COMPARELOOP
  if myThankGroup[i] ==  @selplayer.simple_name
  message "* "  @selplayer.name " already in list SKIPPING"
  set slot + 1
  goto ADDLOOP
  else
  if i < thankTotal
  set i + 1
  goto COMPARELOOP
  end if
  setglobal myThankGroup[slotG] @selplayer.simple_name
  if debug == 1
message "*myThankGroup[" slotG "]= " myThankGroup[slotG]
end if
pause 1
set slot + 1
setglobal slotG + 1
setglobal thankTotal + 1
if debug == 1
message "thank total: " thankTotal
end if
goto ADDLOOP
end if
  end if
  end if
pause 1
setglobal slot + 1
setglobal thankTotal + 1
setglobal slotG + 1
goto addloop
   end if
   end if
   if modeverbose == 1
   if modeverbose == 1
Line 199: Line 267:
  setglobal ht[thgc] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
  setglobal ht[thgc] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
  setglobal ht[4] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
  setglobal ht[4] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
  if initSwitch == 1
   
goto END
end if
  if @text == ""
  if @text == ""
  message "Clearing thank group"
  message "Clearing thank group"
  setglobal thankTarget 1
  setglobal thankTarget 1
  setglobal counted 0
  setglobal counted 1 //NEW2021 was 0
  setglobal thankTotal 1
  setglobal thankTotal 1
  setglobal myThankGroup ""
  setglobal myThankGroup ""
Line 240: Line 306:
  else if thankTarget > thankTotal
  else if thankTarget > thankTotal
  setglobal thankTarget 1
  setglobal thankTarget 1
  end if
  end if
"/select " myThankGroup[thankTarget] "\r"
  if @text == ""
  if @text == ""
call ThankMessage
  "/thank " myThankGroup[thankTarget] " " theMessage " " myThankGroup[thankTarget] " :)\r"
  "/thank " myThankGroup[thankTarget] " " theMessage " " myThankGroup[thankTarget] " :)\r"
  else
  else
  "/thank " myThankGroup[thankTarget] " " @text "\r"
  "/thank " myThankGroup[thankTarget] " " @text "\r"
  end if
  end if
pause 1
   
   
pause 1
  set tocheck  @env.TextLog
  set tocheck  @env.TextLog
  message tocheck
  //message tocheck
   
   
  //checks log for failure
  //checks log for failure
  if tocheck < "You have no karma to give."
  if tocheck < "You have no karma to give."
  if debug == 1
  if debug == 1
  message "**m_ThankNext:Unable to give karma to " myThankGroup[thankTarget] " holding place."
  message "**m_ThankNext:Unable to give karma to " myThankGroup[thankTarget] " holding place."
  end if
  end if
  else if tocheck < "' is not in the lands."
  else if tocheck < "is not in the lands."
  if debug == 1
  if debug == 1
  message "*m_ThankNext:Unable to give karma (No Target):Advancing"
  message "*m_ThankNext:Unable to give karma (No Target):Advancing"
set thankTarget + 1
  end if
  end if
setglobal missingTarget 1
call moveUp
  if debug == 1
  if debug == 1
  message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
  message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
  end if
  end if
else if tocheck < "You have given this character as much good karma as is allowed. Wait for it to decay." //20220704 EDIT and below
  if debug == 1
message  "* " @text.word[slot] " MAX GK"
end if
setglobal missingTarget 1
call moveUp //20220704 EDIT
  else if thankTarget < thankTotal
  else if thankTarget < thankTotal
  call thankFeedback
  call thankFeedback //20220625 EDIT switched order
  setglobal thankTarget + 1
  setglobal thankTarget + 1 //20220625 EDIT switched order
  else if thankTarget == thankTotal
  else if thankTarget >= thankTotal
  call thankFeedback
  call thankFeedback //20220625 EDIT switched order
  setglobal thankTarget 1
  setglobal thankTarget 1 //20220625 EDIT switched order
  end if
  end if
   
   
  label END
  label END
Line 280: Line 353:
  {
  {
  if debug == 1
  if debug == 1
pause 4
message "The next person to be thanked is " myThankGroup[thankTarget]
else if modeverbose == 1
  message "*thanking " myThankGroup[thankTarget] "/thh for help"
  message "*thanking " myThankGroup[thankTarget] "/thh for help"
  setglobal modeverbose 0
  setglobal modeverbose 0
Line 301: Line 371:
  call ClearThankGroup
  call ClearThankGroup
  end if
  end if
  if thankTotal == 1
  if thankTotal < 1
  message "**The thank group is empty. Try /ths or /thga <name> [name] to add people"
  message "**The thank group is empty. Try /ths or /thga <name> [name] to add people"
  goto END
  goto END
  else
  else
  message "•My thank group is currently: "
  message "*My thank group is currently: "
  setglobal counted 1 //must be 1 for start of array
  setglobal counted 1 //must be 1 for start of array 20220621
setglobal thankTotalAdjustment thankTotal
setglobal thankTotalAdjustment + 1 //to get the last element
  label LOOPSTART
  label LOOPSTART
  if counted < thankTotalAdjustment
  if counted <= thankTotal
  if counted == thankTarget
  if counted == thankTarget
  message "[" counted "]*" myThankGroup[counted]
  message "[" counted "]*" myThankGroup[counted]
Line 323: Line 392:
  }
  }
   
   
/****** SHARERS *******/
// <<m_ThankSharers>>
  ThankSharers // (/ths) adds all people sharing you to the list
  ThankSharers // (/ths) adds all people sharing you to the list
  {
  {
  if initSwitch == 1
  if initSwitch == 1
setglobal ht[ths] "'/ths' adds all people sharing you to the list"
setglobal ht[ths] "'/ths' adds all people sharing you to the list"
goto END
goto END
  end if
  end if
  set count 0
  set count 0
set countB 0
set i 0
set j 0
  if debug == 1
  if debug == 1
message "ThankShares In: " @my.shares_in.num_words
  message "Shares in are " @my.shares_in
  message "Shares in are " @my.shares_in
  message "Thank Share In Number =" @my.shares_in.num_words
  message "ThankShares Out:" @my.shares_out.num_words
message "Shares out are " @my.shares_out
message "thankTotal: " thankTotal
message "myThankGroup:" myThankGroup
  end if
  end if
   
   
  label LOOP0
  label LOOP0
  if count == @my.shares_in.num_words
  if count <= @my.shares_in.num_words
  goto END
  "/select " @my.shares_in.word[count] " \r"
else
if @selplayer.simple_name == ""
if @my.shares_in.word[count] < "[" //avoids adding bracketed
else
setglobal myThankGroup[slotG] @my.shares_in.word[count]
setglobal slotG + 1
  set count + 1
  set count + 1
  setglobal thankTotal + 1
  goto LOOP0
else if debug == 1
message "(L0)Start: select exile" @selplayer.simple_name
  end if
  end if
  goto LOOP0
  pause 1
end if
   
   
  label END
set i 1
  if debug == 1
LABEL COMPARELOOP
  call WhoAmIThanking
if debug == 1
//message "(L0C1) ThankGroup[" i "]" myThankGroup[i]
end if
if myThankGroup[i] == @selplayer.simple_name
message "*" @selplayer.name "in list (L0) SKIPPING"
set count + 1
goto LOOP0
else if i < thankTotal
set i + 1
//message "i:" i
goto COMPARELOOP
end if
setglobal myThankGroup[slotG] @selplayer.simple_name
pause 1
if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L0)"
end if
setglobal slotG + 1
setglobal thankTotal + 1
if count < @my.shares_in.num_words
set count + 1
goto LOOP0
end if
  pause 25
  end if
  end if
label END
}
   
   
  //<<m_ThankRandom>> (/thr)["restore"|clears("new")|("add")] myTG & thanks a random person sharing
  label LOOP2
ThankRandom
  if countB <= @my.shares_out.num_words
{
"/select " @my.shares_out.word[countB] " \r"
  if initSwitch == 1
if @selplayer.simple_name == ""
setglobal ht[thr] "'/thr [restore|new|add]' thanks a random person sharing you. optionally clears the list and builds a new one"
  set countB + 1
goto END
  goto LOOP2
end if
  else
if @text == "new"
  if debug == 1
  setglobal thankSave thankTarget //saves the index
  message "(L2)Start: select exile" @selplayer.simple_name
setglobal listA myThankGroup //saves the current list
setglobal listSave 1 //allows the list to be restored
  call ClearThankGroup
call ThankSharers
else if @text == "add"
call ThankSharers
  else if @text == "restore"
  if listSave == 1
setglobal myThankGroup listA
else
  message "*There is not list to restore"
call BuildDefault
  end if
  end if
  end if
  end if
pause 1
set j 1
LABEL COMPARELOOP2
if debug == 1
//message "(L2C2) ThankGroup[" j "]" myThankGroup[j]
end if
if myThankGroup[j] ==  @selplayer.simple_name
message "*"  @selplayer.name "in list (L2) SKIPPING"
set countB + 1
goto LOOP2
else if j < thankTotal
set j + 1
//message "j:" j
goto COMPARELOOP2
end if
setglobal myThankGroup[slotG] @selplayer.simple_name
pause 1
if debug == 1
message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L2)"
end if
setglobal slotG + 1
setglobal thankTotal + 1
if countB < @my.shares_out.num_words
set countB + 1
goto LOOP2
end if
pause 25
end if
   
   
set randomNum @random
setglobal thankTarget randomNum % thankTotal
call ThankNext
setglobal thankTarget thankSave //resets the thank index
  label END
  label END
if debug == 1
call WhoAmIThanking
end if
  }
  }
   
   
Line 452: Line 566:
  end if
  end if
  setglobal ATH 1
  setglobal ATH 1
if thankTotalAdjustment == ""
setglobal thankTotalAdjustment thankTotal
setglobal thankTotalAdjustment + 1
end if
   
   
  label LOOPA
  label LOOPA
  if ATH == 1
  if ATH == 1
  pause delay
  pause delay
  if thankTarget < thankTotalAdjustment
  if thankTarget <= thankTotal
  call ThankNext
  call ThankNext
  goto LOOPA
  goto LOOPA
Line 479: Line 588:
  {
  {
  if initSwitch == 1
  if initSwitch == 1
  setglobal ht[thb] "'/thb' builds the thank list using the the default in Friends"
  setglobal ht[thb] "'/thb' builds the thank list using the default in Friends"
  goto END
  goto END
  end if
  end if
Line 497: Line 606:
  label END
  label END
  }
  }
 
  // *m_moveUp* Reorganizes the thankgroup List triggered by ClearThankGroup '/thgc 0'
  // *m_moveUp* Reorganizes the thankgroup List triggered by ClearThankGroup '/thgc 0'
  moveUp
  moveUp
  {
  {
  if thankTotal > 0
  if thankTotal > 0
  message "**moving up"
setglobal currentIndex thankTarget
  message "*thankTotal is:" thankTotal "*"
message "currentIndex:" currentIndex "exile to thank " myThankGroup[currentIndex]
  label DECLOOP
message "**moving up**thankTotal:" thankTotal "*"
  setglobal cIndexPlus currentIndex
  setglobal cIndexPlus + 1
label DECLOOP
  if cIndexPlus > thankTotal
setglobal cIndexPlus currentIndex
  message "*m_moveUp*currentIndex Exceeds thankTotal"
setglobal cIndexPlus + 1 //CRITICAL: moves to next exile on list
  message "*Thanklist reorganized* type /thg? to see it (or '/set debug 1'"
  setglobal thankTotal - 1
if cIndexPlus > thankTotal
  if slotG > 0
message "*m_moveUp*cIndexPlus Exceeds thankTotal"
  setglobal slotG - 1
setglobal myThankGroup[cIndexPlus] "" //20220619 edit from currentIndex
  end if
if debug == 1
message "*Thanklist reorganized* '/thg?' to see it (or '/set debug 1'"
end if
setglobal cIndexPlus thankTotal
else if currentIndex == thankTotal //20220625 ADDED
if myThankGroup[cIndexPlus] != ""
setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
setglobal currentIndex + 1
goto DECLOOP
end if
if thankTarget == currentIndex
message "  [" currentIndex "]* " myThankGroup[currentIndex]
else
message "  [" currentIndex "] " myThankGroup[currentIndex]
end if
else //overwrites current exile
if myThankGroup[cIndexPlus] != ""
setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
end if
if myThankGroup[currentIndex] ==  myThankGroup[cIndexPlus]
if thankTarget == currentIndex
message "  [" currentIndex "]* " myThankGroup[currentIndex]
else
message "  [" currentIndex "] " myThankGroup[currentIndex]
end if
end if
setglobal currentIndex + 1
goto DECLOOP
end if
setglobal thankTotal - 1
setglobal slotG - 1
end if
if thankTotal < currentIndex
setglobal currentIndex 1
end if
}
   
   
  else
//<<m_ThankMessage>> (/thm|/thgm) Sets and|or shows the message
  setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
ThankMessage
  if myThankGroup[currentIndex] ==  myThankGroup[cIndexPlus]
{
  message myThankGroup[currentIndex] " is now in position " currentIndex
if @text == "/m"
  end if
message theMessage
  setglobal currentIndex + 1
  else if @text == "/message"
  goto DECLOOP
message theMessage
  end if
  else if @text == "?"
message theMessage
else if @text == ""
random
setglobal theMessage " because why not? "
or
setglobal theMessage " Thanks "
or
setglobal theMessage " Why? Because I like you "
or
setglobal theMessage " not that it really matters, but here's some good karma "
or
setglobal theMessage " Woo! Woo! "
or
setglobal theMessage " got Karma? "
or
setglobal theMessage "  "
end random
message theMessage
  end if
  end if
  }
  }
 
  //<<m_ThankHelp>>  {/thgh|/?th|/thh }Lists how to control macro
  //<<m_ThankHelp>>  {/thgh|/?th|/thh }Lists how to control macro
  ThankHelp
  ThankHelp
Line 533: Line 696:
  call InitThG
  call InitThG
  if @text == "overview"
  if @text == "overview"
  message "*ThankGroup builds a list of exiles to thank."
  message "*Shares.txt::ThankGroup builds a list of exiles to thank."
  message "*/type '/th? quickstart' for a basic command list"
  message "*/type '/th? quickstart' for a basic command list"
  message "*The <commands> are: sh, ath, thb, thg, thga, thgc, thgwho, tho, thr, ths, tn and are preceded with a slash '/'"
  message "*The <commands> are: sh, ath, thb, thg, thga, thgc, thgwho, tho, thr, ths, tn and are preceded with a slash '/'"
Line 547: Line 710:
  else if @text != ""
  else if @text != ""
  if @text == "sh"
  if @text == "sh"
  message ht[1]
  message " " ht[1]
  else if @text == "thg"
  else if @text == "thg"
  message ht[2]
  message " " ht[2]
  else if @text == "thgc"
  else if @text == "thgc"
  message ht[4]
  message " " ht[4]
  else if @text == "th?"
  else if @text == "th?"
  message "*************************"
  message "*************************"
Line 557: Line 720:
  message "*************************"
  message "*************************"
  message "*10..."
  message "*10..."
  pause 2
  pause 3
  message "*Now you're done it!*"
  message "*Now you've done it!*"
  pause 2
  pause 2
  message "*9..."
  message "*9..."
  pause 4
  pause 5
  message "*8..."
  message "*8..."
  pause 4
  pause 5
  message "*7..."
  message "*7..."
  pause 4
  pause 5
  message "*6..."
  message "*6..."
  pause 4
  pause 5
  message "*5..."
  message "*5..."
  pause 4
  pause 5
  message "*4..."
  message "*4..."
  pause 4
  pause 5
  message "*3..."
  message "*3..."
  pause 4
  pause 5
  message "*2..."
  message "*2..."
  pause 4
  pause 5
  message "*1..."
  message "*1..."
  pause 4
  pause 5
  message "*0"
  message "*0"
  message "*BOOM!*"
  message "*BOOM!*"
Line 586: Line 749:
  else
  else
  message "*type '/th? overview' or 'th? quickstart' for instuctions"
  message "*type '/th? overview' or 'th? quickstart' for instuctions"
  message "*more information is available in the macro file 'Shares.mac'"
  message "*more information is available in the macro file 'Shares.txt'"
  message "*thanks for trying this macro. Feedback is welcome"
  //message "*thanks for trying this macro. Feedback is welcome"
  end if
  end if
  label END
  label END
Line 603: Line 766:
  call ThankNext
  call ThankNext
  call ThankOptions
  call ThankOptions
call ThankRandom
// call ThankRandom
  call ThankSharers
  call ThankSharers
  end if
  end if
  setglobal initSwitch 0
  setglobal initSwitch 0
  }
  }

Revision as of 08:32, 7 July 2022

/* -----------------------------------------------------------
 | shareMultiple Version 1.1.2 | ThankGroup Version 2.5.2 |
 --------------------- Description ---------------------------
 Shares is an expansion of the default /share command to accept multiple  names, to ease sharing and thanking groups of people.
 --------------------- Usage ---------------------------------
 ##### type "/th?" for online help
 type:
 sh [name*] [name] [name] [name] [name]
 	to share up to your maximum number of people.
 	*You can type partial names as you can with the default share command.
 
  /ths
  to build thank list of shares in and out
 
  /tn
  to thank the next person on the list
 
 /ath
 to automatically thank and set through the list
 ---------------------- Setup --------------------------------
 Add the line below to your default macro file:
 include "Shares.txt"
 
 Note: to work properly you might have to remove the line
 "sh" "/share " @text "\r" from your default macros file.
 or you can use other built in triggers:
 "shm" & "/shm"
 -------------------- Feedback/Info --------------------------
 This macro makes a list of people to thank numerous ways. Then you can call the AutoThank if you want to thank a person every 4 minutes (set with "delay" global. the delay by default is just over 4 minutes, 1200 Frames).
 
 The Default Triggers are listed below, feel free to edit them. A short description is listed next to each trigger.
 
 ** Thank Options controls several options. including just a number ("/tho 3") will set the person at that position in the list (3 in this case) as the next exile to thank. With "debug" set to 0 or 1 it will allow debug messages to show up and allow you to load a default list of people to thank into the ThankGroup by activating the default share shortcut,"sh", which you can set in listA below. With the "off" option  ("/tho off") it turns off the AutoThank loop.
 
 *The v.2.1.3 comment format is as follows:
 <<m_macroname>> (default trigger|s <required text> [optional text]) short description.
 ** the single less than some text and greater than denotes strings so when you see "/thg [message]"
 ** the vertical bar "|" is used to denote valid options (arguments) the macro accepts
 ** all macros are prefixed with "m_" in the file for quick searching and avoiding false hits from "call <macro>"
 ** global variable have their type & [:specific function] in tech speak
 along with a short description
 
 If you find any bugs or have suggestions, contact noivad either in game or
 at his mac dot com address. This macro is "/Thank-ware."
 ------------------ Version Change Notes ---------------------
 v. 2.1.2 "ThankRandom" was added by request of Rroot (REMOVED 2.5)
 v.2.1.3 *fixed a small bug that threw an error, but didn't stop the macro
 	*Added <<tags>> to functions and comments
 	*Added ThankHelp macro
 v.2.1.4 Added ability to remove a person from the list with /thgc <number>
 	*Added ThankGroup Help "/thh" or "/thgh"
 v2.1.5 bug fixes to list behavior broken in 2.1.4 feature addition
 v.2.1.6-7 bug fix for increment not working.
 v2.3 fixes moveUp bug. ThankRandom is Broken & has been
 v.2.5.x & 1.1.2 won't add people that are already on list
 
----------------------------------------------------------- */
/****** Share Triggers ******/
"sh"		call shareMultiList //changes /share to add multiple people
"/shm"		call shareMultiList // also adds to myTG
"shm"		call shareMultiList //Template:M shareMultiList

/****** Thank Group Triggers ******/
"/moveup"	call moveUp			//removes players who are now offline
"/th?"		call ThankHelp		//Online ThankGroup command help
"/ath"		call AutoThank 		//Starts an Automatic thank loop | "off" to stop
"/thb"		call BuildDefault	//Builds the default or saved list
"/thg"		call ThankGroup 	//Thanks the next person on the list
"/thga"		call AddToThankGroup // Adds a person  to ThankGroup list
"/thgwho" 	call WhoAmIThanking	// Shows the ThankGroup list
"/thg?"		call WhoAmIThanking //
"/thgc"		call ClearThankGroup //Clears out ThankGroup
"/thgh"		call ThankHelp	 //Online ThankGroup command help
"/thgm"		call ThankMessage //sets the message given with karma
"/thm"		call ThankMessage
"/thh"		call ThankHelp	 //Online ThankGroup command help
"/thn"		call ThankNext		// Thanks next person in the list
"/tho"		call ThankOptions	// see ** Above or Template:M ThankOptions below
//"/thr"		call ThankRandom 	// BROKEN: See * Above
"/ths"		call ThankSharers	//loads shares into thank list
"/tn"		call ThankNext		//Thanks the next person on list

set debug 0 //<<debug>> (bool:toggle) turns on and off debugging
set modeverbose 1 //first trigger will remind people how to use. set to 0 to turn off
set theMessage " Thank you " //<<EditMe>> your default message
set myThankGroup[0] "" //in case thankTarget is set to 0

/* - Do not Edit below this line if not Familiar with Macros - */

set slotG 1 //<<slotG>> (int:index) is the pointer for the list
set currentIndex 1 //which slot is current
set thankTarget 1 //internal current index
set thankTotal 0 //<<thankTotal>> (int:sum) <<!=DO_NOT_EDIT>> {?}Number in list
set ATH 0	//<<ATH>> (bool:toggle) controls automatic thanking
set delay 1201 //<<delay>> (int:timer) controls pause between  Template:M AutoThank
set ht[0] "There is no entry here"
set ent 0
set initSwitch 0
set listA "Talin Silky Klur Natas Shadowfire" //EDIT to your friends
/* *************** shareMultiple v1.1.2 ******************* */

//<<m_shareMultiList>> (sh|/shm|shm <name> [name]) shares & adds to list
shareMultiList
{
setglobal ht[sh] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
setglobal ht[1] "*'sh|/shm|shm <name> [name]' shares & adds exiles to list"
if slotG < 1
 	setglobal slotG 1
end if

if @text != ""
	set count 0
	label LOOP
	if count <= @text.num_words
		"/select " @text.word[count] " \r"
		 if @selplayer.simple_name == ""
			set count + 1
			goto LOOP
		end if
		"/share "   @selplayer.simple_name " \r"
		if debug == 1
			message "*attempted share with " @text.word[count] " in LOOP"
		end if
		pause 1
		if "No player named " < @env.textLog
			set count + 1
			goto LOOP
		end if

		set i 1
		LABEL COMPARELOOP

		//ADDED 20220625 EXPERIMENTAL
		if myThankGroup != ""
			//message "myThankGroup:" myThankGroup
			if myThankGroup < @selplayer.simple_name
				message @selplayer.simple_name "in myThankGroup"
			end if
		end if
		//ABOVE ADDED

		if myThankGroup[i] ==  @selplayer.simple_name
			message "* "  @selplayer.name " already in list SKIPPING"
  			set count + 1
  			goto LOOP
  		else
  			if i < thankTotal
  				set i + 1
  				goto COMPARELOOP
  			end if
 			setglobal myThankGroup[slotG] @selplayer.simple_name
 			pause 1
 			if debug == 1
				message "* [" slotG "]" myThankGroup[slotG] " added to thank group."
			end if
 			setglobal slotG + 1
 			setglobal thankTotal + 1
 			if count < @text.num_words
 				set count + 1
 			end if
 			pause 25
 			goto LOOP
 		end if
	end if
else
	"/share\r"
end if
label END
}

/******************* Thank Group v2.5.2 *******************/

//<<m_ThankGroup>> (/thg [message]) Thanks exile|s in list (activates AutoThank)
ThankGroup
{
setglobal ht[thg] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."
setglobal ht[2] "'/thg [message]' Sets the default message & activates AutoThank (i.e '/thg thanks for the hunt!'). '/thg /reset' clears the list."

if @text == "reset"
	call ClearThankGroup
	 goto END
else if @text == "/reset"
	call ClearThankGroup
	goto END
else if @text == ?
 	message thga
 	message theMessage
else
	if @text != ""
		setglobal theMessage @text
	end if
end if
pause 1
call AutoThank
message ending thanks
label END
}

//<<m_AddToThankGroup>> (/thga <name> [name]) adds exile|s to list
AddToThankGroup
{
setglobal ht[thga] "'/thga <name> [name]' adds exile|s to list"
setglobal ht[3] "'/thga <name> [name]' adds exile|s to list"
set num_people @text.num_words //gets the number of names to add (only use one word names for accuracy)
set slot 0 //must start one less than total to add
 if debug == 1
 	message "slotG=" slotG
 end if
 if @text == ?
 	message ht[thga]
 end if
 label ADDLOOP
 if slot <= num_people
 	"/select " @text.word[slot] "\r"
 	if debug == 1
 		message  "@selplayer.simple_name: " @selplayer.simple_name
 	end if
 	pause 1
 	if @env.textLog < "No player named "
  		if debug == 1
			message  "* " @text.word[slot] " NOT FOUND"
		end if
 		set slot + 1
 		goto ADDLOOP
 	else if @selplayer.simple_name == ""
 		if debug == 1
 			message "* " @text.word[slot] " EMPTY"
 		end if
 		set slot + 1
 		goto ADDLOOP
 	else
 		set i 0
 		LABEL COMPARELOOP
 		if myThankGroup[i] ==  @selplayer.simple_name
 			message "* "  @selplayer.name " already in list SKIPPING"
  			set slot + 1
  			goto ADDLOOP
  		else
  		 	if i < thankTotal
  				set i + 1
  				goto COMPARELOOP
  			end if
  			setglobal myThankGroup[slotG] @selplayer.simple_name
  			if debug == 1
				message "*myThankGroup[" slotG "]= " myThankGroup[slotG]
			end if
			pause 1
			set slot + 1
			setglobal slotG + 1
			setglobal thankTotal + 1
			if debug == 1
				message "thank total: " thankTotal
			end if
			goto ADDLOOP
		end if
	end if
 end if
 if modeverbose == 1
	call WhoAmIThanking
 end if
label END
}

//<<m_ClearThankGroup>> (/thgc) clears and resets list
ClearThankGroup
{
setglobal ht[thgc] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"
setglobal ht[4] "'/thgc [num]' clears and resets list, with a number it removes that entry in the list"

if @text == ""
	message "Clearing thank group"
	setglobal thankTarget 1
	setglobal counted 1 //NEW2021 was 0
	setglobal thankTotal 1
	setglobal myThankGroup ""
	setglobal slotG 1
	message thankTarget "*" counted "*thanktotal:" thankTotal "*" myThankGroup "*slotG:" slotG "*"
else if @text == 0
	setglobal currentIndex @text
	call moveUp
else if @text > 0
	if @text <= thankTotal
		setglobal currentIndex @text
		call moveUp
	end if
end if
label END
}

//<<m_ThankNext>> (/tn [message]) actually does the thanking
ThankNext
{
if initSwitch == 1
	setglobal ht[tn] "/tn [message]' manually thanks the next person and sets the message"
	goto END
end if

if thankTotal < 1
	message "*ThankNext*no one in thank list, adding shares in (/ths)**"
	call ThankSharers
	setglobal modeverbose 1
end if

if thankTarget < 1 //protects against out of bounds array calls
	setglobal thankTarget 1
else if thankTarget > thankTotal
	setglobal thankTarget 1
end if
"/select " myThankGroup[thankTarget] "\r"
if @text == ""
	call ThankMessage
	"/thank " myThankGroup[thankTarget] " " theMessage " " myThankGroup[thankTarget] " :)\r"
else
	"/thank " myThankGroup[thankTarget] " " @text "\r"
end if
pause 1

set tocheck  @env.TextLog
//message tocheck

//checks log for failure
if tocheck < "You have no karma to give."
	if debug == 1
		message "**m_ThankNext:Unable to give karma to " myThankGroup[thankTarget] " holding place."
	end if
else if tocheck < "is not in the lands."
	if debug == 1
		message "*m_ThankNext:Unable to give karma (No Target):Advancing"
	end if
	setglobal missingTarget 1
	call moveUp
	if debug == 1
		message "tht/tot:" thankTarget ":ThankTotal:" thankTotal
	end if
else if tocheck < "You have given this character as much good karma as is allowed. Wait for it to decay." //20220704 EDIT and below
 		if debug == 1
			message  "* " @text.word[slot] " MAX GK"
		end if
		setglobal missingTarget 1
		call moveUp //20220704 EDIT
else if thankTarget < thankTotal
	call thankFeedback //20220625 EDIT switched order
	setglobal thankTarget + 1 //20220625 EDIT switched order
else if thankTarget >= thankTotal
	call thankFeedback	//20220625 EDIT switched order
	setglobal thankTarget 1 //20220625 EDIT switched order
end if

label END
}

thankFeedback
{
if debug == 1
	message "*thanking " myThankGroup[thankTarget] "/thh for help"
	setglobal modeverbose 0
end if
}



WhoAmIThanking //<<m_WhoAmIThanking>> (/thgwho)|(/thg?) outputs the myTG
{
if initSwitch == 1
setglobal ht[thgwho] "'/thgwho|/thg? [reset|/reset]' shows the list or optionally resets it"
goto END
end if
if @text == "reset"
	call ClearThankGroup
else if @text == "/reset"
	call ClearThankGroup
end if
if thankTotal < 1
	message "**The thank group is empty. Try /ths or /thga <name> [name] to add people"
	goto END
else
	message "*My thank group is currently: "
	setglobal counted 1 //must be 1 for start of array 20220621

	label LOOPSTART
	if counted <= thankTotal
		 if counted == thankTarget
			message "[" counted "]*" myThankGroup[counted]
		 else
			message "[" counted "]" myThankGroup[counted]
		 end if
		 setglobal counted + 1
		 goto LOOPSTART
	end if
end if
label END
}

/****** SHARERS *******/
// <<m_ThankSharers>>
ThankSharers // (/ths) adds all people sharing you to the list
{
if initSwitch == 1
	setglobal ht[ths] "'/ths' adds all people sharing you to the list"
	goto END
end if

set count 0
set countB 0
set i 0
set j 0

if debug == 1
	message "ThankShares In: " @my.shares_in.num_words
	message "Shares in are " @my.shares_in
	message "ThankShares Out:" @my.shares_out.num_words
	message "Shares out are " @my.shares_out
	message "thankTotal: " thankTotal
	message "myThankGroup:" myThankGroup
end if

label LOOP0
if count <=  @my.shares_in.num_words
	"/select " @my.shares_in.word[count] " \r"
	 if @selplayer.simple_name == ""
		set count + 1
		goto LOOP0
	else if debug == 1
		message "(L0)Start: select exile" @selplayer.simple_name
	end if
	pause 1

	set i 1
	LABEL COMPARELOOP
	if debug == 1
		//message "(L0C1) ThankGroup[" i "]" myThankGroup[i]
	end if
	if myThankGroup[i] ==  @selplayer.simple_name
		message "*"  @selplayer.name "in list (L0) SKIPPING"
		set count + 1
		goto LOOP0
	else if i < thankTotal
			set i + 1
			//message "i:" i
			goto COMPARELOOP
	end if
	setglobal myThankGroup[slotG] @selplayer.simple_name
	pause 1
	if debug == 1
		message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L0)"
	end if
	setglobal slotG + 1
	setglobal thankTotal + 1
	if count < @my.shares_in.num_words
		set count + 1
	 	goto LOOP0
	end if
	pause 25
end if

label LOOP2
if countB <= @my.shares_out.num_words
	"/select " @my.shares_out.word[countB] " \r"
	 if @selplayer.simple_name == ""
		set countB + 1
		goto LOOP2
	else
		if debug == 1
			message "(L2)Start: select exile" @selplayer.simple_name
		end if
	end if
	pause 1

	set j 1
	LABEL COMPARELOOP2
	if debug == 1
		//message "(L2C2) ThankGroup[" j "]" myThankGroup[j]
	end if
	if myThankGroup[j] ==  @selplayer.simple_name
		message "*"  @selplayer.name "in list (L2) SKIPPING"
		set countB + 1
		goto LOOP2
	else if j < thankTotal
		set j + 1
		//message "j:" j
		goto COMPARELOOP2
	end if
	setglobal myThankGroup[slotG] @selplayer.simple_name
	pause 1
	if debug == 1
		message "* [" slotG "]" myThankGroup[slotG] " added to thank group. (L2)"
	end if
	setglobal slotG + 1
	setglobal thankTotal + 1
	if countB < @my.shares_out.num_words
		set countB + 1
		goto LOOP2
	end if
	pause 25
end if

label END
if debug == 1
	call WhoAmIThanking
end if
}

//<<m_ThankOptions>> (/tho) sets tTarget to 0|number or switches debugging on
ThankOptions
{
if initSwitch == 1
setglobal ht[tho] "'/tho [<number>||debug 0|1||off||message <message>]' sets next person thanked to 0|<number>, switches debugging on or off, turns on or off AutoThanking, or sets a new message"
goto END
end if
if @text == ""
	setglobal thankTarget 0
	call WhoAmIThanking
else if @text.word[0] == "debug"
	if @text.word[1] < 2
		setglobal debug @text.word[1]
	end if
	if debug == 1
		message "*Debugging is on"
	else if debug == 0
		message "*Debugging is off"
	end if
else if @text.word[0] == "off"
	setglobal ATH 0
else if @text.word[0] == "on"
	call AutoThank
else
	if @text.word[0] > 0
		if @text.word[0] <= thankTotal
			setglobal thankTarget @text.word[0]
		end if
	else
		message "*That number won't work. The highest number you can set it currently: " thankTarget
		pause 7
		message "*Blame Polerand! ;)"
	end if
else if @text.word[0] == "message"
	set words  @text.word[count]
	set counter 1
	label MESSAGEBUILDER
	if counter > words
		setglobal theMessage interim
		message "the message is now: " theMessage
	else
		set interim.word[counter] @text.word[counter] " "
		set counter + 1
		goto MESSAGEBUILDER
	end if
end if
label END
}

// AutoThank 1.0 "/ath"

AutoThank //<<m_AutoThank>> (/ath ["0"|"off"]) turns on*|off automatic thanks
{
if initSwitch == 1
setglobal ht[ath] "'/ath [0|off]' turns off automatic thanks. With no arguments it turns it on."
goto END
end if
if @text.word[0] == "off"
	setglobal ATH 0
	goto ENDoff
else if @text.word[0] == "0"
	setglobal ATH 0
	goto ENDoff
end if
setglobal ATH 1

label LOOPA
if ATH == 1
	pause delay
	if thankTarget <= thankTotal
		call ThankNext
		goto LOOPA
	else
		message "***You are out of people to thank.***"
		message "***To Add more type /thga <name> [name] ..."
	end if
end if

label ENDoff
message "*AutoThank is Off"
label END
}

//<<m_BuildDefault>> List Building Function
BuildDefault
{
if initSwitch == 1
setglobal ht[thb] "'/thb' builds the thank list using the default in Friends"
goto END
end if
label LOOPA
if count > listA.num_words
	setglobal myThankGroup[slotG] listA.word[count]
	if debug == 1
		pause 1
		message "*" myThankGroup[slotG] " added to thankgroup."
	end if
	set count + 1
	setglobal slotG + 1
	setglobal thankTotal + 1
	pause 20
	goto LOOPA
end if
label END
}

// *m_moveUp* Reorganizes the thankgroup List triggered by ClearThankGroup '/thgc 0'
moveUp
{
if thankTotal > 0
	setglobal currentIndex thankTarget
	message "currentIndex:" currentIndex "exile to thank " myThankGroup[currentIndex]
	message "**moving up**thankTotal:" thankTotal "*"

	label DECLOOP
	setglobal cIndexPlus currentIndex
	setglobal cIndexPlus + 1 //CRITICAL: moves to next exile on list

	if cIndexPlus > thankTotal
		message "*m_moveUp*cIndexPlus Exceeds thankTotal"
		setglobal myThankGroup[cIndexPlus] "" //20220619 edit from currentIndex
		if debug == 1
			message "*Thanklist reorganized* '/thg?' to see it (or '/set debug 1'"
		end if
		setglobal cIndexPlus thankTotal
	else if currentIndex == thankTotal //20220625 ADDED
		if myThankGroup[cIndexPlus] != ""
			setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
			setglobal currentIndex + 1
			goto DECLOOP
		end if
		if thankTarget == currentIndex
	 		message "  [" currentIndex "]* " myThankGroup[currentIndex]
	 	else
	 		message "  [" currentIndex "] " myThankGroup[currentIndex]
	 	end if
	else //overwrites current exile
		if myThankGroup[cIndexPlus] != ""
	 		setglobal myThankGroup[currentIndex] myThankGroup[cIndexPlus]
	 	end if
	 	if myThankGroup[currentIndex] ==  myThankGroup[cIndexPlus]
	 		if thankTarget == currentIndex
	 			message "  [" currentIndex "]* " myThankGroup[currentIndex]
	 		else
	 			message "  [" currentIndex "] " myThankGroup[currentIndex]
	 		end if
	 	end if
	 	setglobal currentIndex + 1
	 	goto DECLOOP
	end if
	setglobal thankTotal - 1
	setglobal slotG - 1
end if
if thankTotal < currentIndex
	setglobal currentIndex 1
end if
}

//<<m_ThankMessage>> (/thm|/thgm) Sets and|or shows the message
ThankMessage
{
if @text == "/m"
	message theMessage
else if @text == "/message"
	message theMessage
else if @text == "?"
	message theMessage
else if @text == ""
	random
		setglobal theMessage " because why not? "
	or
		setglobal theMessage " Thanks "
	or
		setglobal theMessage " Why? Because I like you "
	or
		setglobal theMessage " not that it really matters, but here's some good karma "
	or
		setglobal theMessage " Woo! Woo! "
	or
		setglobal theMessage " got Karma? "
	or
		setglobal theMessage "  "
	end random
	message theMessage
end if
}


//<<m_ThankHelp>>  {/thgh|/?th|/thh }Lists how to control macro
ThankHelp
{
setglobal hEntry 0
set initSwitch 1
call InitThG
if @text == "overview"
	message "*Shares.txt::ThankGroup builds a list of exiles to thank."
	message "*/type '/th? quickstart' for a basic command list"
	message "*The <commands> are: sh, ath, thb, thg, thga, thgc, thgwho, tho, thr, ths, tn and are preceded with a slash '/'"
	message "type '/th? <command> for more info on each command"
else if @text == "quickstart"
	message "*'/thga' and their names (with no spaces) to add people"
	message "*'/thg' followed by any message to send to the group."
	message "*'/tn' to thank the next person manually"
	message "*'/ath 0' or '/tho off' to stop the macro"
	message "*'/th? message' see what current message is"
else if @text == "message"
	message "*" theMessage
else if @text != ""
	if @text == "sh"
		message " " ht[1]
	else if @text == "thg"
		message  " " ht[2]
	else if @text == "thgc"
		message " " ht[4]
	else if @text == "th?"
		message "*************************"
		message "*Universal Self Destruct Activated*"
		message "*************************"
		message "*10..."
		pause 3
		message "*Now you've done it!*"
		pause 2
		message "*9..."
		pause 5
		message "*8..."
		pause 5
		message "*7..."
		pause 5
		message "*6..."
		pause 5
		message "*5..."
		pause 5
		message "*4..."
		pause 5
		message "*3..."
		pause 5
		message "*2..."
		pause 5
		message "*1..."
		pause 5
		message "*0"
		message "*BOOM!*"
	else
		setglobal ent @text
		message ht[ent]
	end if
else
	message "*type '/th? overview' or 'th? quickstart' for instuctions"
	message "*more information is available in the macro file 'Shares.txt'"
	//message "*thanks for trying this macro. Feedback is welcome"
end if
label END
}

InitThG
{
if initSwitch == 1
	call shareMultiList
	call AutoThank
	call ThankGroup
	call AddToThankGroup
	call WhoAmIThanking
	call ClearThankGroup
	call ThankNext
	call ThankOptions
//	call ThankRandom
	call ThankSharers
end if
setglobal initSwitch 0
}