Tc macro.mac

From CLUMP
Jump to navigationJump to search

Description[edit]

  • Noivad's adapted tc_macro for Alternate Default series of macros.
  • Quick think to group, think to clan and return call (ss who just ss'd you) are implmemented in this.
  • Changed from Noivad's '/tcX' invocation to use 'tg' for think to group, 'tc' for think to clan and '/tgX' invocation for group management.

Dependencies[edit]

  • Global var MySunStone and Set feedback in AlternateDefault.
  • GoScan and NoScan in AlternateDefault.

Usage[edit]

  • Save text from code section into a file called tc_macro.mac to your /clanlord/data/macros folder.

Noteworthy Techniques[edit]

  • Add shared to exiles to group - clears out current group.
  • Add/remove exiles from group via selected player in playerlist or name of exile passed.

Credits[edit]

  • Noivad.

version 3 Code[edit]

//------------------------------------------------------------------------------
// scanner.txt  version 3 (Array-fied)
//------------------------------------------------------------------------------
// Description:  (AKA "A Quick Reply")
// This macro allows you to quickly reply to anyone who thinks to you directly
// to you. It also manages think to groups and think to clan actions by default.
// The addition of arrays means additional scans can be added without writing a
// new conditional check for the phrase.
//------------------------------------Usage-------------------------------------
// "goscan" to start and "noscan" to stop.
// "goscan ?" for instructions on different commands.
// "t?" give the current target,
// "ts <name> [message]" sets the SSTarget and optionally sends a message
// "tc <message>" to think back to the SStarget
// "tt <message>" to think to selected player -- added v2.5.4
// SCROLL DOWN for Thinkgroup instructions
//------------------------------------Setup-------------------------------------
// Add "include "scanner.txt"" and "@login call GoScan" to
// your default macro file if you want it to strart automatically.
//------------------------------------Credit------------------------------------
// Reye for the Idea, X for the syntax check and suggestions,
// and everyone who direct SSed me to help debug.
// Originally Written in BBedit (over a decade ago)
//------------------------------------------------------------------------------

include "rankcount.mac"
set ssTarget "" //you must keep these variables outside of the functions and macros
set myStone "Sungem"  // set this to Suntone, Suncrystal or Sungem
set scanBreak 0		//they need to be global
set feedback 1 //Gives you feedback "tc target: @player"
set scanText ""
set timeStamps 1    // Set this to zero if you don't use timestamps** 
set playerName 0
set me 0
set keepAlive 0
set feedback 1 //useful for debug & more spam in your sidebar
set pointer 1 // pointer to current scanned phrase
set cap 12 //must equal checkText/reaction array total

set checkText[2] 	"thinks to you, "
set checkText[3] 	"Captain Barnac asks, \"Ah, "
set checkText[4] 	"Paul Deckand asks, \"Ah, "
set checkText[5] 	"Fird Lirden asks, \"Ah, "
set checkText[6] 	"No item named 'bag of kudzu seedlings"
set checkText[7]	"* Your bag of kudzu seedlings is full."
set checkText[8] 	"* You do not have room in your pack for anything else."
set checkText[9] 	"You can't take things out of your pack that quickly."
set checkText[10]	"• You return to your normal form."
set checkText[11]	"•You assume the shape of "
set checkText[12] 	"You cannot possibly use anything in your current condition."
set checkText[13]	"•You are already in your normal form."
set checkText[14]	"myThankGroup[thankTarget]"
set checkText[15]	"myThankGroup[thankTarget]"
set checkText[16]	"pesky"

set reaction[2]		"ThinkTargetSet"
set reaction[3]		"RentBoat"
set reaction[4]		"RentBoat"
set reaction[5]		"RentBoat"
set reaction[6]		"setBagOne"
set reaction[7]		"decrementBag"
set reaction[8]		"plantSeed"
set reaction[9]		"dropOrgaEye"
set reaction[10]	"notMorphed"
set reaction[11]	"isMorphed"
set reaction[12]	"notMorphed"
set reaction[13]	"morph"
set reaction[14]	"moveUp"
set reaction[15]	"placeholder"
set reaction[16]	"copyright"

"goscan" call GoScan

GoScan
{
message "scanner.txt activated"
setglobal scanBreak 0
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 @text == ""
	if feedback == 1
		message "•••Scanner On•••"
		message "for settings type \"goscan ?\"."
		pause 8
	end if
else if @text == "?"
		message "Type \"t?\" to find the target. "tc <message>\" to send to SStarget. \"tt <text>\" to send to selected player."
		pause 8
		message "Type \"ts <name> [message]\" sets the target and sends them a message if you include one."
		pause 8
		message "Type \"/feedback\" to toggle macro feedback off|on."
		pause 4
		message "OR \"/set feedback <?|1|on|0|off>"
		pause 8
		message "Type \"noscan\" to stop."
end if
call Scanner
label SCANMONITOR
if keepAlive == 1
	pause 240
	set keepAlive 0
	pause 40
	goto scanmonitor
else if keepAlive == 2
	set scanBreak 1
else
	pause 80
	setglobal scanBreak 0
	call Scanner
	message "*Scanner recalled"
	goto SCANMONITOR
end if
}

Scanner
{
label SCANtop
pause 1
if scanBreak == 1
	goto SCANEnder
else
    setglobal keepAlive 1
	setglobal 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

	label SCANloop
	if scanText < checkText[pointer]
		//message "*index [" pointer "] found"
		call reaction[pointer]
	else
		setglobal pointer + 1
		if pointer > cap
			goto SCANnext
		else
			goto SCANloop
		end if
	end if
end if
label SCANnext
setglobal pointer 1
pause 1
setglobal gtrainerPhrase scanText
call rankcount
goto SCANtop

label SCANEnder
	set keepAlive 2
if feedback == 1
	message "••Scanner Off••"
end if
setglobal keepAlive 0
}


"noscan"
{
setglobal scanBreak 1	//This alows you to stop this macro without stopping other macros
}

ThinkTargetSet
{
	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
		end if
	end if
	if feedback == 1 //this controls overall feedback
//This if block turns off feedback when the target hasn't changed
		if feedback == 1
			message "tc target: " ssTarget
			setglobal feedback 0
		end if
	end if
}

"tt"
{
if @my.forehead_item != myStone
	setglobal fitem @my.forehead_item
	"/equip " myStone "\r"
	set fromTT 1
else
    setglobal fitem @my.forehead_item
end if
"/thinkto " @selplayer.simple_name " " @text "\r"
if modeVerbose == 1
	call ThinkToAction
end if

pause 2
if fitem != @my.forehead_item
	"\equip " fitem "\r"
end if
}


"tc"
{
if @my.forehead_item != myStone
	setglobal fitem @my.forehead_item
	"/equip " myStone "\r"
	set fromTT 1
else
    setglobal fitem @my.forehead_item
end if
"/thinkto " ssTarget " " @text "\r" //such simplicity belies all the ugly stuff above
if modeVerbose == 1
	call ThinkToAction
end if

pause 2
if fitem != @my.forehead_item
	"\equip " fitem "\r"
end if
}

// ==========================Think Capture Options==========================
"t?"	// target who? = Who is the current target? Useful if you have activated
{									// silent mode, if you've been afk for a
Message " tc target: " ssTarget  	// while or if a bug in macro language
} 				 					// implementation causes the target to be wrong.

"ts"				//target select = manually change your target and send a
{					//message, much like other people's "tt" macro, but this one
setglobal ssTarget @text.word[0]			//allows you to switch to tc messaging
if feedback == 1
	message "targeting: " ssTarget
end if
if @my.forehead_item != myStone
	setglobal fitem @my.forehead_item
	"/equip " myStone "\r"
	set fromTT 1
end if
"/thinkto " @text "\r"
if modeVerbose == 1
	call ThinkToAction
end if

pause 2
if fitem != @my.forehead_item
	"\equip " fitem "\r"
end if
}

"/feedback" //This toggles the macros between silent mode and message display mode.
{			//This is in case you don't want your text log or status area spammed
if messageStaus == 1
	setglobal feedback 0
else
	setglobal feedback 1
	message "Messages On"
end if
}
"ttc"	"/thinkclan " @text "\r"

/////////////////////////Sungem Additions//////////////////////////////////
//
// "/sga <name>" will add one person to the thinkgroup. SGA= SunGem Add
// "/tga" will add the selected person ot the think group. TGA=Target Group Add
// "/sgre <name>" will remove one person from the thinkgroup. SGRE=SunGem REmove
// "/sgr" will remove the selected person from the thinkgroup.SGR=SunGem REmove
// "/sgam <name1><name> will add multiple people." SGAM= SunGem Add Multiple
// "/sgs" will clear your thinkgroup and added everyone you are currently
//        sharing with. (This sometimes fails.) SGS=SunGem Set
// "/sgc" will clear your entire thinkgroup. SGC= SunGem Clear
// "/sgi" inspects your Sungem
// "/sgwho" will tell you who is apart of your Thinkgroup.
//
//////////////////////////Thinking to Groups///////////////////////////////
//
// "tg <message>" thinks to your thinkgroup.
// "ttc <messge>" thinks to your clan
//
/////////////////////////////////////////////////////////////////////


"/tga"  "/useitem Sungem /add " @selplayer.simple_name "\r"

"/sgr"  "/useitem sungem /remove " @selplayer.simple_name "\r"

"/sga"  "/useitem Sungem /add " @text "\r"

// SunGem Add Multiple v2 20080214
"/sgam"
{
 set num_people @text.num_words
 set slot 0
 label addloop
 if slot < num_people
	"/useitem sungem /add " @text.word[slot] "\r"
	pause 1
	set slot + 1
	goto addloop
 end if
 "/useitem " myStone " /who \r"
}

"/sgre"  "/useitem sungem /remove " @text "\r"


"/sgc"   "/useitem sungem /clear \r"
"/sgi"  "/useitem sungem /inspect \r"
"/sgwho" "/useitem sungem /who \r"

"tg"
{
if @my.forehead_item != myStone
	setglobal fitem @my.forehead_item
	"/equip " myStone "\r"
end if
"/thinkgroup " @text "\r"
}


// SunGem Add Shares v2 20080214
"/sgs"
{
 "/useitem sungem /clear \r"
set shares @my.shares_out
message shares
set slot 1
set num_shares @my.shares_out.num_words

 label addloop
 if slot <= num_shares
		"/useitem Sungem /add " shares.word[slot] "\r"
		pause 1
		set slot + 1
		pause 1
		goto addloop
 end if
 "/useitem " myStone " /who \r"
label end
}

/* ** Internal Reaction Macros** */

RentBoat
{
	set namePer @my.name
		 set namePer + "."
		if scanText.word[me] == namePer
			pause 1
			"yes\r"
		end if
}

setBagOne
{
	setglobal bag_number 1
	"/equip bag of kudzu seedlings " bag_number "\r"
}

decrementBag
{
	setglobal bag_number - 1
	if bag_number < 0
		setglobal bag_number max_bag
	end if
}

plantSeed
{
	"/equip Kudzu Seedling\r"
	pause 1
	"/usei left\r"

}
dropOrgaEye
{
	"/selectitem orga eye \r"
	"/drop orga eye \r"
	pause 1
}

notMorphed
{
	setglobal morphed 0
}

isMorphed
{
	setglobal morphed 1
}

placeholder
{
message "placeholder"
}

copyright
{
"/narrate “pesky” ©1998–∞ Super Chicken"
}

version 2.5.2 Code[edit]

//------------------------------------------------
// tc_macro.mac  // Original by Noivad
//------------------------------------------------
// Version: 2.5.2 - Modified for use with AlternateDefault series of macros
// Description:  (AKA "A Quick Reply") 
// This macro allows you to quickly reply to anyone who thinks to you directly 
// to you. It also manages think to groups and think to clan actions.
// Usage:
// Use "goscan" to start and "noscan" to stop. If you type "goscan ?"
// You're receive instructions on diferent commands.
// While the macro is running, entering "tl <the message>" will
// /thinkto the last person who SSed you directly.
// New in rev2 "t?" give the current target, "ts <name> <message>" manually sets 
// the target and messages. If you just type "ts <name> it just sets the target.

// If the scanner stops after a time, just type "goscan" to start it back up.
// 
// Credit: 
// This is Noivad's original creation.
// Noivad credited: "Reye for the Idea, X for the syntax check and suggestions, 
// and everyone who direct SSed me to help debug."
//
// Revisions:
// 20070211-inu: Fixed specialized group think to section to use MySunStone variable
//               and corrected bug (note: 20080130-can't recall what I fixed there).
// 200712xx-inu: Changed call invocations for ThinkTo group from sgX series to tgX, 
//               Think to last from tc to tl, think clan from ttc to tc, think to group from sg to tg
// 20080129-inu: Modified to fit in with AlternateDefault series of macros.
// 20080130-inu: Fixed header and credits. Added equip MySunStone to all think macro calls to ensure a
//               message is sent off.

set ssTarget 		""	//you must keep these variables outside of the functions and macros
set scanBreak 		0	//they need to be global
set messageStatus 	1 	//Gives you feedback "tl target: @player"
set timeStamps 		1
set playerName 		0

set me 0

// ==========================Think Capture Options==========================
// "/t?" - Tells you who current target is for tl (thinkto last)
// "/ts <name>" - Lets you manually change the target to that passed to the macro
// "/tl" - Sends a message to the person who 'thunk' to you last.
// Use "/set feedback [on|off] to toggle between silent mode and message display mode.
/////////////////////////Sungem Additions//////////////////////////////////
//
// /tga <name> = will add one person to the thinkgroup. TGA= ThinkGroup Add
// /tga = will add the selected person ot the think group. TGAS=Think Group Add Selected
// /tgr <name> = will remove one person from the thinkgroup. TGRE=THinkGroup REmove
// /tgr = will remove the selected person from the thinkgroup.SGR=THinkGroup REmove Selected
// /tgam <name1><name> = will add multiple people." TGAM= ThinkGroup Add Multiple
// /tgs = will clear your thinkgroup and added everyone you are currently 
//        sharing with. (This sometimes fails.) TGS=ThinkGroup clear and Add Shared
// /tgc = will clear your entire thinkgroup. TGC= ThinkGroup Clear
// /tgi = inspects your MySunStone
// /tgw = will tell you who is apart of your Thinkgroup.
//
//////////////////////////Thinking to Groups/////////////////////////
//
// "tg <message>" thinks to your thinkgroup.
// "tc <message>" thinks to your clan
//
/////////////////////////////////////////////////////////////////////


"/tl"    // aka Think to last exile who SSd me directly.
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
	set fromTT 1
  else
    setglobal fitem @my.forehead_item
  end if
  "/thinkto " ssTarget " " @text "\r" //such simplicity belies all the ugly stuff in the Scanner section
  if modeVerbose == 1
	call ThinkToAction
  end if
  pause 2
  if fitem != @my.forehead_item
	"/equip " fitem "\r"
  end if
}

"/t?"	// target who? = Who is the current target? Useful if you have activated 
{	// silent mode, if you've been afk for a 
  Message " tc target: " ssTarget  // while or if a bug in macro language 
} 				 // implementation causes the target to be wrong.

"/ts"	//target select = manually change your target and send a 
{	//message, much like other people's "tt" macro, but this one
  setglobal ssTarget @text.word[0]	//allows you to switch to tl messaging
  if messagestatus == 1
	message "targeting: " ssTarget
  end if
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
	set fromTT 1
  end if
  "/thinkto " @text "\r"
  if modeVerbose == 1
	call ThinkToAction
  end if
  pause 2
  if fitem != @my.forehead_item
	"/equip " fitem "\r"
  end if
}

"tc"   //ThinkTo Clan
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  "/thinkclan " @text "\r"
}

"/tga"   //Add passed in or selected exile to ThinkTo group
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  if @text == ""
	 "/useitem " MySunStone " /add " @selplayer.simple_name "\r"
  else
	"/useitem " MySunStone " /add " @text "\r"
  end if
}

"/tgr"   //Remove passed in or selected exile to ThinkTo group
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  if @text == ""
	"/useitem " MySunStone " /remove " @text "\r"
  else
	"/useitem " MySunStone " /remove " @selplayer.simple_name "\r"
  end if
}

"/tgc"  //Clear ThinkTo Group
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  "/useitem " MySunStone " /clear \r"
}

"/tgi"   // Inspect MySunStone
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  "/useitem " MySunStone " /inspect \r"
}

"/tgw"  // List ThinkToGroup members
{
  if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
  end if	
  "/useitem " MySunStone " /group /who \r"
}

"tg"   //ThinkTo Group 
{
if @my.forehead_item != MySunStone
	setglobal fitem @my.forehead_item
	"/equip " MySunStone "\r"
end if
"/thinkgroup " @text "\r"
}

"/tgs" 	// clears current group and adds those you are sharing with
{ 
  "/useitem " MySunStone " /clear \r"
  pause 1
  if @text == ""
   "/share " @selplayer.simple_name "\r"
  else
    "/share " @text.word[0]
  end if
  pause 1

  set scanText @env.textLog
  if scanText < "You are sharing experiences with"
 	setglobal exile[1] scanText.word[7]

	if scanText.word[8] != "and"
	 setglobal exile[2] scanText.word[8]
	else 
	 set skip 2
	end if

	if scanText.word[9] != "and"
	 setglobal exile[3] scanText.word[9]
	else 
	 set skip 3
	end if

	if scanText.word[10] != "and"
	 setglobal exile[4] scanText.word[10]
	else 
	 set skip 4
	end if
	
	if scanText.word[11] != "and"
	 setglobal exile[5] scanText.word[11]
	else 
	 set skip 5
	end if
	
	if scanText.word[12] != "and"
	 setglobal exile[6] scanText.word[12]
	else 
	 set skip 6

	end if
	if scanText.word[13] != "and"
	 setglobal exile[7] scanText.word[13]
	else 
	 set skip 7
	end if
	
	if scanText.word[14] != "and"
	 setglobal exile[8] scanText.word[14]
	else 
	 set skip 8
	end if

  set counterLimit skip
  set counterLimit + 2 
  message counterLimit
  label addLoopIni
  pause 1

  set counter 1
  label addloop
    if counter < counterLimit
 	if skip == counter
		set counter + 1
	else
		"/useitem " MySunStone " /add " exile[counter] "\r"
		set counter + 1
		pause 1
	end if
	goto addloop
    else
        "/useitem " MySunStone " /who \r"
    end if
  end if
  label end
}

Revisions[edit]

  • 20070211-inu: Fixed specialized group think to section to use MySunStone variable and corrected bug (note: 20080130-can't recall what I fixed there).
  • 200712xx-inu: Changed call invocations for ThinkTo group from sgX series to tgX, Think to last from tc to tl, think clan from ttc to tc, think to group from sg to tg.
  • 20080129-inu: Posted. Modified to fit in with AlternateDefault series of macros. Consolidated /tgr & /tga to use passed text for group management. If no text is passed, then use selected exile in group management.
  • 20080130-inu: Fixed header and credits. Added equip MySunStone to all think macro calls to ensure a message is sent off.

Links[edit]