Sack O Zu

From CLUMP
Jump to navigationJump to search
/* -----------------------Sack O Zu vS4.2-------------------------

This macro not only plants seeds, loads seeds into sacks and removes seeds
from bags, but you never have to manually equip a sack again.
When you run out of seeds in a sack, it automagically changes
to the next sack number in your inventory.
When it reaches your last sack and you run out of seeds, it switches to the
first sack, all without using an error prone scanner. There is no planting
delay either. This is the end of all kudzu macros. (Until I make it
load one if the current sack is full without using a scanner.)

Here's a quick start for you:
by default:
f6:		plants a seed from your sack
shift-f6:	loads a seed into your sack
option-f6:	removes a seed from your sack
type: "/setzu ?" for the following instructions:
type: "/setzu sack {number}" to set which sack you want to start pulling seeds from
type: "/setzu sack ?" to see which sack is to be selected
type: "/setzu maxbag {number}" to change the number of kudzu bags you're carrying
type: "/setzu maxbag ?" to see what your maximum number of kudzu bags is set to.
*/

set slot 0
set zuinitTextLog ""
set bag_number 1
set max_bag    1
set zuInProgress 0
set zlBusy 0
set seedC 0
set seedCOld 1
set packFull 0
set max_pass max_bag 	// max_pass and pass control how many times
set pass 1
set thisBag "sack of kudzu seedlings 1"

//Kudzu Macros. see "/set" command for more info
F6 call zp

zp //Checks to make sure you have your sack equipped.
{
if zuInProgress == 2
	goto ENDER
else
	setglobal zuInProgress 2
	set myBag "sack of kudzu seedlings "
	set myBag + bag_number
	setglobal seedCOld @my.left_item.word[5].letter[0]
	if @my.left_item != myBag
		if debug > 0
			message @my.left_item " != " myBag " changing bags."
		end if
		"/equip " thisBag " " bag_number "\r"
		pause 1
		label SUB1
		"/useitem left\r"
		setglobal seedC @my.left_item.word[5].letter[0]
		call FullPackCheck
		if debug > 1
			message "SUB1"
		end if

		if packFull == 1
			goto ENDER
		end if
	else
		label SUB2
		"/useitem left\r"
		setglobal seedC @my.left_item.word[5].letter[0]
		call FullPackCheck
		if debug > 0
			message "SUB2"
		end if
		if packFull == 1
			goto ENDER
		end if
	end if
	if seedCOld == 0
	 message "**seedCOld = 0**"
		if bag_number == max_bag
			setglobal bag_number  1
		else
			setglobal bag_number + 1
		end if
		"/equip " thisBag " " bag_number "\r"
		pause 1
		label SUB3
		"/useitem left\r"
		call FullPackCheck
		if debug > 0
			message "SUB3"
		end if
		if packFull == 1
			goto ENDER
		end if
	else if seedC == seedCOld //checks ifa seed was planted
		"/equip kudzu seedling\r"
		call FullPackCheck
		if packFull == 1
			goto ENDER
		end if
		pause 1
		label SUB4
		"/useitem left\r"
		call FullPackCheck
		if debug > 0
			message "SUB4"
		end if
		if packFull == 1
			goto ENDER
		end if
	else if seedC == 0
		if bag_number == max_bag
			setglobal bag_number  1
		else
			setglobal bag_number + 1
		end if
		"/equip " thisBag " " bag_number "\r"
	else
		goto ENDER
	end if
	setglobal zuInProgress 0
end if
label ENDER
message theMessage
setglobal zuInProgress 0
}


shift-f6 call zl
zl
{
@env.key_interrupts true
if zlBusy == 1
	goto TerminateSilent   // ensures only one Zu Loader works at a time.
end if
setglobal max_pass max_bag 		// max_pass and pass control how many times
setglobal pass 1          	   //  the bags will swap looking for empty bags.
setglobal zlBusy 1
setglobal thisBag "sack of kudzu seedlings "
setglobal thisBag + bag_number
set ll 0
set grace_period 0
message "*zu loader started"

label LOADLOOP
call bag_check 		//Check if the sack is full,
if seedC == 50			//
	call bag_shuffle 	// if it is swap sack.
end if

if @my.left_item != thisBag
	"/equip " thisBag "\r"
	pause 1
end if

"/selectitem kudzu seedling\r"
set seedling @my.selected_item
set feedback @env.textLog

if seedling == ""
	goto ENDER
else if seedling != ""
	"/useitem left /add\r"
else
	goto ENDER
end if

if feedback < " * You don't have any kudzu seedlings." //if no seedlings
	set grace_period + 1
	if grace_period > 4
		goto ENDER
	else				//period 3 times.
		message "pass " grace_period "of 3."
	end if
else if feedback < "you sack is full"
	call bag_shuffle
end if
pause 60
set ll + 1
if ll < 3
	goto LOADLOOP
else
   message "*zu loader stopped"
   goto TerminateSilent
end if

label ENDER
message "*zu loader stopped"

label TerminateSilent
setglobal zlBusy 0
}


bag_check //checks to see if your sack is full
{
setglobal seedC @my.left_item.word[5].letter[0]
if @my.left_item.word[5].letter[1] != ">"		//tests for a full bag
	setglobal seedC 10
end if
}

"/shuffle" call bag_shuffle

bag_shuffle
{
if pass >= max_pass			//if we've been through all bags
	goto ENDER			// don't execute.
	else if bag_number != max_bag
		setglobal bag_number + 1
	else
		setglobal bag_number 1
	end if
	set pass + 1
label ENDER
setglobal thisBag "sack of kudzu seedlings "
setglobal thisBag  + bag_number
if debug == 1
	message "thisBag is " thisBag
end if
}


"/zutest"
{
set loop 0
label start
if loop != 8
	"/move east walk\r"
	pause 3
	call zp
	set loop + 1
	goto start
end if
}

command-f6 call zuinit

zuinit
{
set myBag "sack of Kudzu Seedlings "
set myBag + bag_number
"/selectitem " myBag "\r"
pause 1
label EXAMINEBAG
"/examine\r"
pause 1
setglobal zuinitTextLog @env.textLog
if debug == 1
	if  @env.textLog.word[8] > 0
		setglobal seedC @env.textLog.word[8]
		if seedC == 0
			call bag_increment
		end if
	else if @env.textLog.word[8] == 0
		call bag_increment
	else
		goto EXAMINEBAG
	end if
else
/*	setglobal slot 0
label WORDCHECK
	if slot > zuinitTextLog.num_words
		goto end
	else
		message zuinitTextLog[slot]
		setglobal slot + 1
		goto WORDCHECK
	end if
*/
end if
label end
}

bag_increment
{
if bag_number == max_bag
	setglobal bag_number  1
else
	setglobal bag_number + 1
end if
}

option-f6
{
set myBag thisBag
set myBag + bag_number
if @my.left_item != myBag
	"/equip " thisBag " " bag_number "\r"
else
	message "ĽKudzu Ready"
end if
	"/useitem left /remove \r"
}

//'/setzu' is used to set the sack and maximum number of bags you have on the fly.
"/setzu" //non-optimized to add: messageVariable and call InstructionMessages
{
if @text.word[0] == "?"
	message "*The following variables are available to set using this command:"
	pause 5
	message "sack [?|(number)], maxbag ?|(number)"
else if @text.word[0] == "bag"
	if @text.word[1] == "?"
		message "*This variable is used to select a sack number to use for kudzu planting."
		message "the current sack is " bag_number "."
	end if
	if @text.word[1] > 0
	  setglobal bag_number @text.word[1]
	  "/selectitem " thisBag " " bag_number "\"\r"
	  message "the current sack 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
end if

label ENDER
}

"/zuwall"
{
setglobal thisBag "sack of kudzu seedlings "
set thisBag + bag_number
if @text > 0
	set zu_number @text
else
	set zu_number 10
end if
label ZuPlantStart
if @my.left_item != thisBag
	"/equip " thisBag "\r"
end if
}

"/gets" call GetSeedCount
GetSeedCount
{
set myBag thisBag
set myBag + bag_number
message "myBag=" myBag
if @my.left_item != myBag
	"/equip " myBag "\r"
	message "equiping: " myBag
end if
pause 5
set seedC @my.left_item.letter[28]
if @my.left_item.letter[29] == 0
	set seedC 10
end if
message "seed count is " seedC

}

FullPackCheck
{
set checkFullPack @env.textLog
if debug == 1
	message "**"  checkFullPack "**"
end if
if checkFullPack < " * You do not have room in your pack for anything else."
	setglobal packFull 1
	setglobal theMessage "***Your Pack is full! Drop something to plant!***"
else if checkFullPack < "You have no 'Kudzu Seedling' to equip."
	setglobal packFull 1
	setglobal theMessage "***Your Pack might be full! No Seed able to be planted.***"
else if checkFullPack < "* You don't have anything like that in your sack of kudzu seedlings."
	setglobal packFull 1
	setglobal theMessage "** You are out of Kudzu! **"
else
	setglobal packFull 0
	setglobal theMessage ""
end if
}